Compare commits

...

838 Commits

Author SHA1 Message Date
Justin Greywolf
4693aa2749 Merge branch 'develop' into 5824-diff-between-markdown-and-strings 2024-12-02 14:45:11 -08:00
Justin Greywolf
468b6a55b6 Update cypress/integration/rendering/flowchart.spec.js
Co-authored-by: Sidharth Vinod <github@sidharth.dev>
2024-12-02 14:43:55 -08:00
Sidharth Vinod
df636c6d0a Merge pull request #6001 from michaelbaudino/patch-1
Fix a configuration example in `gantt.md`
2024-11-28 09:10:56 +05:30
Ashish Jain
64554a6c60 Merge pull request #6092 from mermaid-js/master
Merge back master to develop
2024-11-27 18:24:31 +01:00
Knut Sveidqvist
becadf0a7d Merge pull request #6091 from mermaid-js/changeset-release/master
Version Packages
2024-11-27 18:14:40 +01:00
Sidharth Vinod
54d485f173 Merge branch 'develop' into patch-1 2024-11-27 21:50:42 +05:30
Ashish Jain
b4f5b8ddaf Update CHANGELOG.md 2024-11-27 17:13:25 +01:00
github-actions[bot]
cb5c1ae367 Version Packages 2024-11-27 16:10:54 +00:00
Knut Sveidqvist
b29081d4e8 Merge pull request #6090 from mermaid-js/hotfix/elk-0.1.7
Hotfix/elk 0.1.7
2024-11-27 17:08:48 +01:00
Knut Sveidqvist
654097c438 Added changeset 2024-11-27 17:05:58 +01:00
Knut Sveidqvist
1e672868c4 #6088 Updated offset calculations 2024-11-27 17:05:58 +01:00
Knut Sveidqvist
c7880d7281 Adding changeset 2024-11-27 13:02:36 +01:00
Sidharth Vinod
bff32827b5 Merge pull request #6064 from NicolasNewman/5952/architecture-extreme-height
Fix: edge case causing extreme height in Architecture Diagrams
2024-11-27 17:18:41 +05:30
Knut Sveidqvist
f27ca07371 Adding back create label for the cases where you do not want markdown text 2024-11-27 12:38:08 +01:00
Ashish Jain
65f9b29b86 Merge back master 11.4.1 to develop 2024-11-27 12:08:28 +01:00
Knut Sveidqvist
9868f3a4c3 Merge pull request #6084 from mermaid-js/changeset-release/master
Version Packages
2024-11-27 12:01:43 +01:00
Sidharth Vinod
b4879d13b8 Merge pull request #6036 from docxml/patch-1
Typo kanban.md
2024-11-27 15:08:57 +05:30
Sidharth Vinod
95964b5487 Merge pull request #6055 from agokhale/no-dev-elk-import
Use layout-elk in example.html
2024-11-27 15:07:13 +05:30
Sidharth Vinod
4e17da0a30 fix: Add layout-elk in example.html 2024-11-27 15:05:40 +05:30
github-actions[bot]
d8bf155f0e Version Packages 2024-11-27 09:21:59 +00:00
Sidharth Vinod
0b4f85230a Merge pull request #6083 from mermaid-js/release/11.4.1
Release/11.4.1
2024-11-27 14:49:50 +05:30
Ashish Jain
0dff4ca438 chore: broken link clean up. Enable flowchart elk tests 2024-11-27 09:49:26 +01:00
Ashish Jain
cc29437ede Merge pull request #6081 from mermaid-js/6080-fix
fix: Elk rendering of Diamond shape intersections
2024-11-26 10:52:42 +01:00
Ashish Jain
dfaaf361f3 Merge pull request #6079 from aloisklink/chore/update-to-dompurify-3.2.1
fix: update dompurify to `^3.2.1` and remove `@types/dompurify`
2024-11-26 10:48:23 +01:00
Knut Sveidqvist
37538310d3 Added cypress test 2024-11-25 17:15:59 +01:00
Knut Sveidqvist
c7ae08abc3 #6080: Fix for issue with diamond intersections when using elk-layout 2024-11-25 17:15:35 +01:00
Knut Sveidqvist
69973eaa02 Merge branch 'develop' into 6080-fix 2024-11-25 17:12:29 +01:00
Knut Sveidqvist
d3b2c7ea18 Revert "#6080: Fix for issue with diamond intersections when using elk-layout"
This reverts commit 255279eb22.
2024-11-25 17:10:25 +01:00
Knut Sveidqvist
68f41f685d Added changeset 2024-11-25 16:59:04 +01:00
Knut Sveidqvist
255279eb22 #6080: Fix for issue with diamond intersections when using elk-layout 2024-11-25 16:50:16 +01:00
Alois Klink
fe3cffbb67 chore: update dompurify to ^3.2.1
As [DOMPurify 3.2.0 added TypeScript types][1], this means that we can
remove our dependency on the `@types/dompurify` package.

[DOMPurify 3.2.0 also adds the `HTML_INTEGRATION_POINTS` option][2],
which adds back support for `<foreignObject>`,
[which broke in DOMPurify 3.1.7.][3]

[1]: https://github.com/cure53/DOMPurify/releases/tag/3.2.0
[2]: e4caa67971
[3]: de2c05cd54
2024-11-25 21:00:49 +09:00
NicolasNewman
2a91849a38 chore(#5952): changeset 2024-11-16 10:03:13 -06:00
Nicolas Newman
082de76eef Merge branch 'mermaid-js:develop' into 5952/architecture-extreme-height 2024-11-16 09:55:48 -06:00
NicolasNewman
570ae78b15 cicd(#5952): added test case for diagram that instigated the issue 2024-11-15 10:28:50 -06:00
NicolasNewman
885ac6f947 fix(#5952): handled additional edge cases 2024-11-15 10:27:20 -06:00
Ashish Jain
8328f74751 Merge pull request #6059 from mermaid-js/6058-task-id-as-a-number
fix:Kanban diagrams will not render when adding a number as ticket id or assigned for a task
2024-11-14 16:32:32 +00:00
Knut Sveidqvist
01b5079562 Adding changeset 2024-11-14 15:13:07 +01:00
Knut Sveidqvist
6b23647bec #6058 Casting task-id and assigned fields to string after yaml parsing 2024-11-14 15:07:46 +01:00
agokhale
193fdb225e the ELK imports break the dev playground, drop them 2024-11-13 05:16:01 -05:00
Alois Klink
c8ce416aba Merge pull request #6038 from mermaid-js/fix-for-tilted-cylinder-intersect
Fix for intersection issue
2024-11-08 13:27:57 +00:00
Knut Sveidqvist
1388662132 Added changeset 2024-11-08 13:54:28 +01:00
Knut Sveidqvist
757627427b Fix for intersection issue 2024-11-08 13:47:39 +01:00
autofix-ci[bot]
7cbd80af33 [autofix.ci] apply automated fixes 2024-11-08 11:05:26 +00:00
docxml
16c448b89b Typo kanban.md 2024-11-08 10:59:10 +00:00
Ashish Jain
c218e365bd Merge pull request #6032 from mermaid-js/master
Merge back v4.11.0 to develop
2024-11-07 12:14:09 +00:00
Sidharth Vinod
f507dbbe00 Merge pull request #6010 from mermaid-js/update-whiteboard-tagline
TopBar: update Whiteboard tagline
2024-11-06 11:42:22 +05:30
Sidharth Vinod
9966beb99b Merge pull request #6016 from mermaid-js/update-blog
DOCS: add latest blog posts
2024-11-06 11:42:08 +05:30
Steph
f4713332c0 minor fix 2024-11-05 07:58:56 -08:00
Steph
63ff5b1d98 update utm 2024-11-05 07:57:55 -08:00
NicolasNewman
cb0a4703bd fix(#5952): initial fix for architecture diagrams with extreme heights 2024-11-03 15:53:09 -06:00
Steph
7e71b85668 update blog page 2024-11-01 06:43:26 -07:00
Steph
1dd7bcb0a6 minor update 2024-10-30 09:20:35 -07:00
Steph
bbf6ab1206 update whiteboard tagline 2024-10-30 08:58:52 -07:00
Knut Sveidqvist
56f522ec50 Merge pull request #6008 from mermaid-js/changeset-release/master
Version Packages
2024-10-30 16:42:15 +01:00
github-actions[bot]
d4e5acc530 Version Packages 2024-10-30 15:19:33 +00:00
Knut Sveidqvist
ef9cbb61e5 Merge pull request #6009 from mermaid-js/chore/fix-changeset-for-#5880
chore: update changeset for #5880
2024-10-30 16:17:20 +01:00
Alois Klink
8a0ecc1fe9 chore: update changeset for #5880
This isn't documented, but apparently changesets supports this in 91d1ef2ef7

This is needed to give @yari-dewalt credit for PR #5880
2024-10-31 00:09:10 +09:00
Ashish Jain
c6e1271ef7 Merge pull request #6007 from mermaid-js/release/11.4.0
Release v11.4.0
2024-10-30 15:19:37 +01:00
autofix-ci[bot]
b02294376a [autofix.ci] apply automated fixes 2024-10-30 14:05:05 +00:00
Ashish Jain
97c61d818c added changeset for class diagram 2024-10-30 14:11:41 +01:00
Alois Klink
1c66237fa8 test(unit): update docs unit test snapshot
This snapshot should have been modified in
c1ca3511c (Fix (tmp) for handling of config of htmlLabels ion note. MOvint class box out of flowchart docs, 2024-10-30

Fixes: c1ca3511c4
2024-10-30 21:41:38 +09:00
Knut Sveidqvist
8ef5d324fd Typescript fixes 2024-10-30 13:32:03 +01:00
Knut Sveidqvist
c1ca3511c4 Fix (tmp) for handling of config of htmlLabels ion note. MOvint class box out of flowchart docs 2024-10-30 11:54:31 +01:00
Alois Klink
953d288957 refactor(types): fix kanbanRenderer types
Add the appropriate type checks to ensure that we're only ever calling:

- `insertCluster()` with `ClusterNode`
- `insertNode()` with a `NonClusterNode`

Fixes: 7401cb8f6a
2024-10-30 19:00:35 +09:00
Alois Klink
143806b360 refactor(types): assert insertNode returns non-empty
Fixes: 7401cb8f6a
2024-10-30 19:00:35 +09:00
Alois Klink
a381ab6c41 refactor(types): separate ClusterNodes
Fixes: 7401cb8f6a
2024-10-30 19:00:34 +09:00
Ashish Jain
93e20fdaa3 Merge from develop 2024-10-30 10:38:51 +01:00
Knut Sveidqvist
ece3b254db Merge pull request #6006 from yari-dewalt/fix-note-non-html-text
Fix note non html text
2024-10-30 10:37:35 +01:00
Yari DeWalt
dd42305e8c Merge branch 'develop' into fix-note-non-html-text 2024-10-29 12:21:52 -07:00
yari-dewalt
c34fd152d5 Add handling for ' characters in non-html text so they don't get sanitized into html code values 2024-10-29 11:57:22 -07:00
yari-dewalt
8f0e0b9c39 Change useHtmlLabels to use general config's htmlLabels attribute not flowchart's 2024-10-29 11:55:34 -07:00
yari-dewalt
fe8932e906 Set node.centerLabel before using labelHelper() 2024-10-29 11:54:25 -07:00
Knut Sveidqvist
73bbde8476 Update of the background-fix 2024-10-29 16:21:56 +01:00
Knut Sveidqvist
01a41ef530 Merge branch 'release/11.4.0' of github.com:mermaid-js/mermaid into release/11.4.0 2024-10-29 14:52:25 +01:00
Knut Sveidqvist
124d2f72dd Fix for icon borders 2024-10-29 14:51:55 +01:00
Alois Klink
34e8946c58 refactor(types): fix kanbanItem circular types
Exclude the `node.shape` type from `kanbanItem()`, as otherwise it
causes a circular dependency in the types.
2024-10-29 22:18:38 +09:00
Ashish Jain
0197c08916 revert adding kanban section to shape 2024-10-29 14:04:57 +01:00
Alois Klink
ef30283fe9 refactor: fix more type errors in kanbanItem
Fixes: 7401cb8f6a
2024-10-29 21:44:34 +09:00
Ashish Jain
dffaf9fa8f fix for kanban section shape 2024-10-29 13:41:20 +01:00
Alois Klink
9168d5d1f4 refactor(types): fix some type errors in kanbanItem
Fixes: 7401cb8f6a
2024-10-29 21:14:51 +09:00
Alois Klink
f33ebfaf7a refactor: fix broken generic on insertLabel()
Fixes: 7401cb8f6a
2024-10-29 21:14:48 +09:00
Alois Klink
054f929150 refactor: remove unused param from labelHelper()
Fixes: 7401cb8f6a
2024-10-29 21:14:40 +09:00
autofix-ci[bot]
8cb1c68166 [autofix.ci] apply automated fixes 2024-10-29 13:09:54 +01:00
Michael Baudino
d752240efc Fix a configuration example in gantt.md
According to the [config schema docs](https://mermaid.js.org/config/schema-docs/config-defs-gantt-diagram-config.html#tickinterval-constraints), Gantt's `tickInterval` configuration must match the following regular expression, which does **not** allow any space:

```regexp
/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/
```
2024-10-29 13:09:54 +01:00
Knut Sveidqvist
8d0902de4c Merge pull request #6002 from aloisklink/fix/make-parse-error-on-invalid-shape
fix: make `mermaid.parse` throw an error on invalid shapes
2024-10-29 10:46:02 +01:00
Knut Sveidqvist
f6c32b6da4 Merge branch 'develop' into fix/make-parse-error-on-invalid-shape 2024-10-29 10:45:50 +01:00
Knut Sveidqvist
bdf145ffe3 Merge pull request #5880 from yari-dewalt/update-class-diagram
Update class diagram to v3 using new renderer
2024-10-29 10:44:07 +01:00
Knut Sveidqvist
75ca802b62 Merge branch 'develop' into update-class-diagram 2024-10-29 10:40:39 +01:00
Ashish Jain
3f85b6179d Merge pull request #5999 from mermaid-js/knsv/5342-kanban
Knsv/5342 kanban
2024-10-29 10:38:18 +01:00
yari-dewalt
b315d70af5 Merge branch 'develop' into update-class-diagram and fix conflicts 2024-10-28 10:32:19 -07:00
autofix-ci[bot]
848be3d129 [autofix.ci] apply automated fixes 2024-10-28 14:33:47 +00:00
Alois Klink
5fabd414fb fix: error mermaid.parse on invalid shapes
Currently, invalid shapes cause an error when rendering, but not when
parsing. This confuses the Mermaid Live Editor, e.g. by not showing the
error message.

Instead, I've added an `isValidShape()` that validates if the shape is
valid at parse time. This only checks shapes using the new extended
shapes syntax. Currenlty, using `A(-this is an ellipse node-)` is broken
(see #5976) and also causes an invalid shape error at render time, but
I've ignored it in this PR, so it will continue pass at parse-time
(we have unit tests checking ellipse parsing).

See: https://github.com/mermaid-js/mermaid/issues/5976
2024-10-28 23:17:13 +09:00
Alois Klink
17e2f9e0d4 refactor: fix addVertex type parameter
I went through
`packages/mermaid/src/diagrams/flowchart/parser/flow.jison` and found
every possible value this `type` parameter could be.
2024-10-28 23:17:13 +09:00
Alois Klink
7fa8b35bdc refactor: convert if-statements to switch..case 2024-10-28 23:17:13 +09:00
Knut Sveidqvist
e6ea4eae50 Fix for missing function 2024-10-28 14:29:06 +01:00
Knut Sveidqvist
7401cb8f6a Merge branch 'develop' into knsv/5342-kanban 2024-10-28 14:22:10 +01:00
Sidharth Vinod
e765007b21 Merge pull request #5974 from aloisklink/refactor/improving-rendering-shape-types
refactor: TypeScript improvements to `packages/mermaid/src/rendering-util/rendering-elements`
2024-10-28 18:22:23 +05:30
Sidharth Vinod
b5cd101d86 Merge branch 'develop' into refactor/improving-rendering-shape-types 2024-10-28 18:11:41 +05:30
autofix-ci[bot]
da12ace593 [autofix.ci] apply automated fixes 2024-10-28 12:08:48 +00:00
Knut Sveidqvist
2c676b6222 Moving kanbanItem out of the shapes doc 2024-10-28 13:03:18 +01:00
Knut Sveidqvist
0af08276d2 #5232 Enabling handdrawn mode 2024-10-28 12:53:03 +01:00
Knut Sveidqvist
d790e353b0 #5432 Theme based text color for labels 2024-10-28 11:51:44 +01:00
Knut Sveidqvist
e07e9b9daf Merge branch 'knsv/5342-kanban' of github.com:mermaid-js/mermaid into knsv/5342-kanban 2024-10-28 11:47:17 +01:00
Knut Sveidqvist
948ec4d1ce #5342 Handing of wide section texts 2024-10-28 11:43:56 +01:00
autofix-ci[bot]
e62d268c89 [autofix.ci] apply automated fixes 2024-10-28 09:19:37 +00:00
Knut Sveidqvist
742ad7c130 Adding changeset and kanban in the docs sidenav 2024-10-28 10:03:42 +01:00
Knut Sveidqvist
56cc3728c5 End to end tests and docs 2024-10-25 15:40:58 +02:00
Knut Sveidqvist
fb86e5c689 Merge branch 'develop' into knsv/5342-kanban 2024-10-25 14:56:46 +02:00
Alois Klink
f8746bee04 refactor: move MaybePromise type to src/types.ts
Suggested-by: https://github.com/mermaid-js/mermaid/pull/5974#discussion_r1810562136
Co-authored-by: Sidharth Vinod <sidharthv96@gmail.com>
2024-10-22 21:49:23 +09:00
Alois Klink
bb97fdbd1e refactor: use parseFontSize()
Handle `NaN` values by using `parseFontSize()`.

Suggested-by: https://github.com/mermaid-js/mermaid/pull/5974#discussion_r1810570967
2024-10-22 21:49:02 +09:00
Sidharth Vinod
e3ec6ed993 Merge pull request #5987 from mermaid-js/update-promos
Remove Product Hunt promos & Update Promo bar
2024-10-22 12:03:05 +05:30
Steph
6df1fa1a03 update taglines 2024-10-21 23:26:17 -07:00
yari-dewalt
fd6b875f87 Fix subgraph / cluster node width based off of label 2024-10-21 16:09:55 -07:00
yari-dewalt
be3da0b39d Update testing file 2024-10-21 15:37:41 -07:00
yari-dewalt
64bc7f4bd9 Add fix for flipped edge markers 2024-10-21 15:37:24 -07:00
Yari DeWalt
75e796f183 Merge branch 'develop' into update-class-diagram 2024-10-21 15:36:29 -07:00
Alois Klink
6cc0132e0a refactor(elk): add LabelData type for layout-elk
I don't know what exactly the type does or is for, but I've tried to
type it to what it seems to be.
2024-10-21 22:23:36 +09:00
Alois Klink
4bc70b7325 refactor: use more standard types
See: https://github.com/mermaid-js/mermaid/pull/5974#discussion_r1806473749
See: https://github.com/mermaid-js/mermaid/pull/5974#discussion_r1808511738

Co-authored-by: saurabhg772244 <saurabh@mermaidchart.com>
2024-10-21 22:23:36 +09:00
yari-dewalt
bfdd0f244d Fix tests to work with new cssClasses attribute 2024-10-18 16:36:06 -07:00
yari-dewalt
0e819ae050 Change cssClasses to use concatenated string instead of array to pick up css styles 2024-10-18 10:33:56 -07:00
yari-dewalt
10f11e016f Merge branch 'update-class-diagram' of github.com:yari-dewalt/mermaid into update-class-diagram 2024-10-18 10:12:48 -07:00
yari-dewalt
b7d66bb975 Add elk and handDrawn specific test files 2024-10-18 10:12:09 -07:00
yari-dewalt
74695d2e88 Fix undesired wrapping on notes 2024-10-18 10:11:36 -07:00
Steph
38eed7c988 product hunt promo material updates 2024-10-18 09:54:46 -07:00
Alois Klink
d16e46a386 Merge pull request #5972 from gabeidx/zed-mermaid
docs(ecosystem): Add Zed extension zed-mermaid
2024-10-18 08:45:30 +00:00
Alois Klink
97820a50c2 Merge pull request #5918 from vorburger/patch-2
docs: Fix inconsistency in Block Diagram doc example
2024-10-18 08:42:34 +00:00
Alois Klink
df948bcf2c Merge pull request #5968 from eitsupi/fix-ssg
docs(integrations): fix listing order
2024-10-18 08:39:31 +00:00
Alois Klink
cfd097b029 Merge pull request #5967 from yihui/patch-1
docs: bullet lists should not be code blocks
2024-10-18 08:37:12 +00:00
Alois Klink
ffc1fef599 Merge pull request #5957 from TomasHubelbauer/patch-1
Remove extraneous period
2024-10-18 08:36:31 +00:00
Alois Klink
1e8e4e4b73 Merge branch 'develop' into patch-2 2024-10-18 08:34:07 +00:00
autofix-ci[bot]
606ecf8990 [autofix.ci] apply automated fixes 2024-10-17 17:42:10 +00:00
Alois Klink
16a5fc05d6 refactor: remove some any types from render()
This let's us confirm that the types we're passing to `insertNode()` are
valid.
2024-10-18 01:51:53 +09:00
Alois Klink
62fd359c0e refactor: convert shapes/util.js to TypeScript
Convert the
`packages/mermaid/src/rendering-util/rendering-elements/shapes/util.js`
file to TypeScript at:
`packages/mermaid/src/rendering-util/rendering-elements/shapes/util.ts`.
2024-10-18 01:51:53 +09:00
Alois Klink
b0f4ace3a1 refactor: convert rendering-elements/nodes to TS
Convert the
`packages/mermaid/src/rendering-util/rendering-elements/nodes.js`
file to TypeScript at
`packages/mermaid/src/rendering-util/rendering-elements/nodes.ts`
2024-10-18 01:51:53 +09:00
autofix-ci[bot]
6f506c30eb [autofix.ci] apply automated fixes 2024-10-17 16:04:56 +00:00
yari-dewalt
cf2c7f7f8c Update tests 2024-10-17 08:58:49 -07:00
yari-dewalt
6041729ae2 Add suport for start and end labels (cardinality) in elk renderer 2024-10-17 08:58:06 -07:00
yari-dewalt
b7ef8b2b5a Refactor to make code more clear 2024-10-17 08:57:03 -07:00
yari-dewalt
bfea287b44 Register and update classBox shape 2024-10-17 08:55:42 -07:00
Alois Klink
9afb181d06 refactor: correct shapes types
All of the shapes in
`packages/mermaid/src/rendering-util/rendering-elements/shapes/` use
`D3.Selection`s as input parameters and as return parameters.

Although, for some reason, passing them to roughjs seems to work?
2024-10-17 22:29:38 +09:00
Alois Klink
cfe7cce41d refactor: improve types of shapes
Instead of being a `Record<string, ShapeHandler>`, the type now knows
every key in the variable.
2024-10-17 18:59:43 +09:00
autofix-ci[bot]
33029c8bd2 [autofix.ci] apply automated fixes 2024-10-17 08:31:48 +00:00
Gabriel Silva
e54d10c706 docs(ecosystem): Add Zed extension zed-mermaid to community integrations 2024-10-17 10:21:15 +02:00
Yari DeWalt
86c7532f46 Merge branch 'develop' into update-class-diagram 2024-10-16 09:43:58 -07:00
eitsupi
8aa87c7091 docs(integrations): fix listing order 2024-10-16 21:36:26 +09:00
autofix-ci[bot]
e1024838e8 [autofix.ci] apply automated fixes 2024-10-16 03:52:48 +00:00
Yihui Xie
4cce43f0a1 Bullet lists should not be code blocks 2024-10-15 22:45:38 -05:00
autofix-ci[bot]
c69ab34eac [autofix.ci] apply automated fixes 2024-10-11 20:27:05 +00:00
Tomáš Hübelbauer
7353be3b16 Remove extraneous period
Other cells in the table do not end with one.
2024-10-11 22:21:23 +02:00
Knut Sveidqvist
02be63ed72 Refactoring and cleanup including updated unit tests 2024-10-11 08:48:04 -07:00
Sidharth Vinod
742531a2c2 Merge pull request #5951 from gbremond/docs/5949_update-icon-name-for-database
docs(architecture): update icon name for database in exemple
2024-10-11 06:12:42 +00:00
Knut Sveidqvist
991d403d7f Typescript fixes 2024-10-10 09:47:52 -07:00
Knut Sveidqvist
290c678dc7 Adding ticket handling 2024-10-10 08:23:58 -07:00
g.bremont-ext
2c31a599af docs(architecture): use right icon for database in exemple 2024-10-10 17:00:13 +02:00
autofix-ci[bot]
2655be0bad [autofix.ci] apply automated fixes 2024-10-10 14:21:46 +00:00
g.bremont-ext
4f97c8c70e docs(architecture): update icon name for database in exemple 2024-10-10 16:15:23 +02:00
Sidharth Vinod
f85977246c Merge pull request #5945 from mermaid-js/saurabh/doc-update
Updated doc for image and icon shapes
2024-10-10 16:46:02 +05:30
saurabhg772244
a4fd42214b Use relative URL in linking docs 2024-10-10 15:17:26 +05:30
saurabhg772244
ca885027d4 Moved position for icon config and added major version in icon docs 2024-10-10 14:15:16 +05:30
saurabhg772244
9f6f1e96e5 Added new doc for registering icon pack in mermaid 2024-10-10 13:11:54 +05:30
saurabhg772244
351ce30d8a Merge branch 'develop' of https://github.com/mermaid-js/mermaid into saurabh/doc-update 2024-10-10 12:26:14 +05:30
Sidharth Vinod
2933eb5c28 fix: Build options 2024-10-09 16:44:51 +05:30
saurabhg772244
09ecf76034 Updated doc for image and icon shapes 2024-10-09 15:34:12 +05:30
Sidharth Vinod
2b86750cb3 Merge pull request #5924 from mermaid-js/sidv/autoGenerateShapeDocs
Auto generate shape docs
2024-10-09 14:11:56 +05:30
Sidharth Vinod
b45224755e Merge branch 'develop' into sidv/autoGenerateShapeDocs 2024-10-09 13:41:43 +05:30
Sidharth Vinod
14524e1b0e docs: Optimise document generation
Co-authored-by: Alois Klink <alois@aloisklink.com>
2024-10-09 13:39:06 +05:30
Sidharth Vinod
efa47e3176 fix: Docs vitepress build 2024-10-09 13:18:01 +05:30
Sidharth Vinod
1bc45405e0 chore: Generate shape doc before verification 2024-10-09 13:18:01 +05:30
Sidharth Vinod
3720e1a894 docs: Auto generate shape docs
Not keen on how it's currently run, open to suggestions on better ways.
2024-10-09 13:18:00 +05:30
Sidharth Vinod
76138cf3b9 chore: Decouple build logic 2024-10-09 13:17:59 +05:30
Alois Klink
2506c29f6b Merge pull request #5937 from mermaid-js/saurabh/icon-shape-style-fix
Fix icon shape color for colored icons.
2024-10-09 07:47:34 +00:00
Sidharth Vinod
463ba6ed6d Merge pull request #5923 from mermaid-js/sidv/refactorShapes
Refactor shapes definition
2024-10-09 13:17:06 +05:30
saurabhg772244
17b783135f Added pnpm changeset 2024-10-09 12:55:37 +05:30
saurabhg772244
8df2729bd4 Merge branch 'saurabh/icon-shape-style-fix' of https://github.com/mermaid-js/mermaid into saurabh/icon-shape-style-fix 2024-10-09 12:16:05 +05:30
saurabhg772244
a001619464 Move MIT license just before icon definition 2024-10-09 12:15:23 +05:30
Saurabh Gore
3c5a19d297 Merge branch 'develop' into saurabh/icon-shape-style-fix 2024-10-09 11:12:56 +05:30
saurabhg772244
a98290a6e2 remove doc for icon shape 2024-10-09 11:08:27 +05:30
saurabhg772244
9bac464442 Use tropical-fish icon with MIT license in e2e tests 2024-10-09 10:41:37 +05:30
autofix-ci[bot]
11fb806992 [autofix.ci] apply automated fixes 2024-10-08 15:03:03 +00:00
Yari DeWalt
d424a4473a Merge branch 'develop' into update-class-diagram 2024-10-08 07:58:15 -07:00
saurabhg772244
4062813d44 Added docs for icon-shape 2024-10-08 17:45:53 +05:30
Sidharth Vinod
29b9d3069b Merge branch 'develop' into sidv/refactorShapes 2024-10-08 16:15:34 +05:30
Sidharth Vinod
c38d9a6620 Merge pull request #5808 from mermaid-js/renovate/patch-all-patch
chore(deps): update all patch dependencies (patch)
2024-10-08 15:11:26 +05:30
Sidharth Vinod
2f65429aa4 chore: Rollback dompurify update range 2024-10-08 15:01:11 +05:30
Sidharth Vinod
c24028f2a4 chore: Separate dompurify updates 2024-10-08 15:00:57 +05:30
autofix-ci[bot]
a20c292653 [autofix.ci] apply automated fixes 2024-10-08 09:17:15 +00:00
renovate[bot]
1c6304b3fb chore(deps): update all patch dependencies 2024-10-08 09:11:33 +00:00
Sidharth Vinod
3ac93af80c Merge pull request #5936 from mermaid-js/renovate/major-eslint
chore(deps): update dependency eslint-plugin-unicorn to v56
2024-10-08 13:58:24 +05:30
renovate[bot]
ce586e1b31 chore(deps): update dependency eslint-plugin-unicorn to v56 2024-10-08 08:18:32 +00:00
Sidharth Vinod
926f97124b Merge pull request #5939 from mermaid-js/renovate/npm-express-vulnerability
chore(deps): update dependency express to v4.20.0 [security]
2024-10-08 13:39:14 +05:30
Sidharth Vinod
0f2301f2d6 Merge pull request #5938 from mermaid-js/renovate/npm-vite-vulnerability
chore(deps): update dependency vite to v5.4.6 [security]
2024-10-08 13:38:29 +05:30
Sidharth Vinod
58e8f65135 Merge pull request #5935 from mermaid-js/renovate/eslint
chore(deps): update eslint to v9.12.0 (minor)
2024-10-08 13:37:54 +05:30
Sidharth Vinod
1b51fbfcca Revert "chore: Split newshape test"
This reverts commit 1b12ac133e.
2024-10-08 13:36:16 +05:30
renovate[bot]
1296840696 chore(deps): update eslint to v9.12.0 2024-10-08 07:57:45 +00:00
Sidharth Vinod
f99e2c9366 fix: Add internalAliases
Co-authored-by: Alois Klink <alois@aloisklink.com>
2024-10-08 13:25:00 +05:30
renovate[bot]
c71b56ebe3 chore(deps): update dependency express to v4.20.0 [security] 2024-10-08 07:52:44 +00:00
renovate[bot]
9904afce64 chore(deps): update dependency vite to v5.4.6 [security] 2024-10-08 07:52:17 +00:00
Sidharth Vinod
a827fb1202 fix: Argos index numbering 2024-10-08 13:20:55 +05:30
Sidharth Vinod
51be99c9de fix: Remove duplicates, add documentation, rename legacyAlias
Co-authored-by: Alois Klink <alois@aloisklink.com>
2024-10-08 13:01:31 +05:30
Sidharth Vinod
b83b778f2a Merge pull request #5933 from remcohaszing/fix-types-dependencies
Fix TypeScript dependencies
2024-10-08 12:55:49 +05:30
Sidharth Vinod
86a91597f9 Upgrade @argos-ci 2024-10-07 19:12:23 +05:30
Sidharth Vinod
1b12ac133e chore: Split newshape test 2024-10-07 18:30:05 +05:30
Sidharth Vinod
e55880a9c4 Merge pull request #5925 from mermaid-js/sidv/parallelCypress
chore: Split cypress tests locally
2024-10-07 17:20:55 +05:30
Sidharth Vinod
9cc309b69c Apply suggestions from code review
Co-authored-by: Alois Klink <alois@aloisklink.com>
2024-10-07 17:20:38 +05:30
saurabhg772244
d3308232e8 updated test case for icon shape 2024-10-07 16:11:31 +05:30
saurabhg772244
0b8f27e1d2 Updated icon shape to use css color style instead of stroke 2024-10-07 15:52:12 +05:30
Knut Sveidqvist
93f2c241b8 5432 WIP, rendering items 2024-10-06 19:22:07 +02:00
Knut Sveidqvist
fb44e769f2 5432 WIP, rendering sections 2024-10-06 18:34:24 +02:00
Knut Sveidqvist
fabdfd9ae8 5432 WIP, parsing works 2024-10-06 16:55:57 +02:00
Remco Haszing
72d60d2633 Fix TypeScript dependencies
The Mermaid type definitions depend on `@types/d3` and
`@types/dompurify`. Without these dependencies, the Mermaid types cause
a type error for users.
2024-10-04 17:19:04 +02:00
Knut Sveidqvist
2d7686eb65 #5342 Initial commit 2024-10-04 16:03:55 +02:00
Sidharth Vinod
d9a26ff193 Merge branch 'develop' into sidv/refactorShapes 2024-10-04 14:44:31 +05:30
Sidharth Vinod
2401eea725 Merge branch 'develop' into sidv/parallelCypress 2024-10-04 14:43:49 +05:30
Sidharth Vinod
ddf18dd233 chore: Disable architecture diagram test 2024-10-04 14:25:45 +05:30
Sidharth Vinod
4b98dabc3f chore: Update test name 2024-10-04 02:56:09 +05:30
Sidharth Vinod
5a3e0ccc3d chore: rebuild 2024-10-04 02:33:45 +05:30
Sidharth Vinod
38a3ad3370 chore: Add timing update action 2024-10-04 02:29:55 +05:30
Sidharth Vinod
b777c12094 chore: Add timings file 2024-10-04 02:29:43 +05:30
Sidharth Vinod
8fc36d2684 chore: Split cypress tests locally 2024-10-04 01:54:36 +05:30
Sidharth Vinod
e2474049d8 Merge branch 'develop' into sidv/refactorShapes
* develop:
  chore: move handDrawnSeed to mermaidUrl function
2024-10-04 01:31:54 +05:30
Sidharth Vinod
6e0fe03552 chore: move handDrawnSeed to mermaidUrl function 2024-10-04 01:31:20 +05:30
Sidharth Vinod
cda48a7143 Merge branch 'develop' into sidv/refactorShapes
* develop:
  fix: Hard code handDrawnSeed
2024-10-04 00:46:01 +05:30
Sidharth Vinod
e5a28de26e fix: Hard code handDrawnSeed 2024-10-04 00:44:08 +05:30
Sidharth Vinod
0ae4f97036 test: Update nodes test 2024-10-04 00:05:38 +05:30
Sidharth Vinod
218bfe1603 chore: Update import path 2024-10-03 22:13:00 +05:30
Sidharth Vinod
339c670839 docs: Update new shape registration doc 2024-10-03 22:12:41 +05:30
Sidharth Vinod
c5a19f6e85 chore: Organize shape handling 2024-10-03 22:08:30 +05:30
Sidharth Vinod
be57484573 Merge pull request #5922 from mermaid-js/changeset-release/master
Version Packages
2024-10-03 20:12:01 +05:30
github-actions[bot]
0cb88c21dc Version Packages 2024-10-03 14:40:03 +00:00
Sidharth Vinod
0bc1f5296f Fix package name 2024-10-03 20:06:50 +05:30
Sidharth Vinod
4776f97f82 Merge pull request #5921 from mermaid-js/develop
Pre Release
2024-10-03 19:58:58 +05:30
Sidharth Vinod
460db0aea7 fix: Link checker 2024-10-03 19:36:05 +05:30
Sidharth Vinod
02cf111995 Merge pull request #5825 from mermaid-js/knsv/new-shapes
New Flowchart Shapes (with new syntax)
2024-10-03 17:03:20 +05:30
Sidharth Vinod
14d9d92112 Merge pull request #5920 from mermaid-js/update-product-hunt-badge-for-whiteboard
DOCS: update Product Hunt badge for Whiteboard
2024-10-03 15:52:17 +05:30
Steph
fce77a19b0 update product hunt badge for whiteboard and mermaid chart page 2024-10-03 02:18:00 -07:00
autofix-ci[bot]
719685b930 [autofix.ci] apply automated fixes 2024-10-03 08:54:12 +00:00
Michael Vorburger
0cbc000bfa docs: Fix inconsistency in Block Diagram doc example 2024-10-03 10:47:31 +02:00
Sidharth Vinod
ef8c0025fd Merge pull request #5801 from jbriales/patch-1
Update sequenceDiagram.md
2024-10-03 04:26:46 +00:00
Sidharth Vinod
16847ea06c Merge pull request #5802 from jbriales/patch-2
Update sequenceDiagram.md
2024-10-03 04:25:56 +00:00
Sidharth Vinod
be0bbe9950 Merge branch 'develop' into patch-1 2024-10-03 09:43:13 +05:30
Sidharth Vinod
b503c2c758 Merge branch 'develop' into patch-2 2024-10-03 09:42:47 +05:30
Sidharth Vinod
1d14f4658d Merge pull request #5909 from mermaid-js/renovate/eslint
chore(deps): update eslint (minor)
2024-10-03 03:51:19 +00:00
Sidharth Vinod
c7382af161 Merge pull request #5916 from iSparsh/docs/5836_add-horizontal-block-merging-instructions
Added documentation about merging blocks horizontally (Resolves #5836)
2024-10-03 03:51:09 +00:00
Sidharth Vinod
f6adca902f Merge pull request #5849 from ReneLombard/bug/5487-add-support-for-nested-classes
Updated the code to include nested namespaces for class diagrams
2024-10-03 03:49:33 +00:00
autofix-ci[bot]
d50a6cf75c [autofix.ci] apply automated fixes 2024-10-02 17:58:15 +00:00
Sparsh Prashant Mishra
2cebf09cf2 Updated code to show nested blocks and added it to the correct section. 2024-10-02 12:48:17 -05:00
Sparsh Prashant Mishra
46419f7bfe Added section about merging blocks horizontally. 2024-10-02 12:38:11 -05:00
Sidharth Vinod
43e8f831c0 fix: Shape aliases in docs
Co-authored-by: Alois Klink <alois@aloisklink.com>
2024-10-02 20:46:11 +05:30
Sidharth Vinod
760ea1e020 chore: Remove unused default exports 2024-10-02 20:37:59 +05:30
ReneLombard
07d7704ef4 Merge branch 'develop' into bug/5487-add-support-for-nested-classes 2024-10-02 16:57:02 +02:00
René Lombard
a4878d05f0 Merge branch 'bug/5487-add-support-for-nested-classes' of https://github.com/ReneLombard/mermaid into bug/5487-add-support-for-nested-classes 2024-10-02 16:32:33 +02:00
René Lombard
c5bcd2f22c Reworked code comments 2024-10-02 16:31:21 +02:00
Sidharth Vinod
df1fba7fc5 chore: Ignore broken types 2024-10-02 19:33:16 +05:30
Sidharth Vinod
bb521f7af8 chore: Remove unnecessary ts-ignores 2024-10-02 18:49:57 +05:30
Sidharth Vinod
f9818b8bd7 fix: Patch roughjs type 2024-10-02 18:46:50 +05:30
Sidharth Vinod
dfcb4af18b chore: Remove unused function 2024-10-02 18:41:35 +05:30
autofix-ci[bot]
5c67e42a55 [autofix.ci] apply automated fixes 2024-10-02 13:00:17 +00:00
Sidharth Vinod
7441be09b5 Update packages/mermaid/src/docs/syntax/flowchart.md 2024-10-02 18:22:33 +05:30
Sidharth Vinod
a75665c7bf chore: Rename RenderOptions interface to avoid duplication. 2024-10-02 18:20:35 +05:30
Sidharth Vinod
4cb0f87b72 Merge branch 'develop' into knsv/new-shapes 2024-10-02 17:50:41 +05:30
Ashish Jain
1e8cd63645 fix broken e2e for new & old shapes 2024-10-02 13:30:28 +02:00
Ashish Jain
3860a99951 limit the test cases for only two direction 2024-10-02 11:28:43 +02:00
renovate[bot]
226b3bfa74 chore(deps): update eslint 2024-10-01 15:36:36 +00:00
Sidharth Vinod
a5559c6588 Merge pull request #5914 from aloisklink/fix/5904-ban-dompurify-3.1.7
fix: ban version v3.1.7 of DOMPurify
2024-10-01 15:23:18 +00:00
Alois Klink
de2c05cd54 fix: ban version v3.1.7 of DOMPurify
[DOMPurify v3.1.7][1] forbids the use of `<foreignElement>` for HTML
inside of an `<svg>` element, which breaks many mermaid diagrams.

It is likely that v3.1.8 will add a new option that will allow us to
re-enable this behaviour, but v3.1.7 definitely does not work.

[1]: https://github.com/cure53/DOMPurify/releases/tag/3.1.7

See: https://github.com/cure53/DOMPurify/issues/1002
Fix: https://github.com/mermaid-js/mermaid/issues/5904
2024-10-02 00:02:52 +09:00
omkarht
6d916fb66f updated icon and image shape for htmlLabels center alignment 2024-10-01 19:38:18 +05:30
Sidharth Vinod
90b6df24a1 Merge branch 'develop' into knsv/new-shapes 2024-10-01 12:59:55 +05:30
ReneLombard
3e807e0131 Merge branch 'develop' into bug/5487-add-support-for-nested-classes 2024-09-25 14:43:03 +02:00
saurabhg772244
e2e2caa0e9 fixed icon shape for large icon size 2024-09-25 11:56:06 +05:30
Sidharth Vinod
b3dee343d1 Merge pull request #5887 from mermaid-js/renovate/patch-eslint
chore(deps): update eslint (patch)
2024-09-24 19:32:00 +00:00
renovate[bot]
608f7afa70 chore(deps): update eslint 2024-09-24 19:16:46 +00:00
Sidharth Vinod
58ef0ee174 Merge pull request #5888 from mermaid-js/renovate/eslint
chore(deps): update eslint (minor)
2024-09-24 18:57:57 +00:00
Sidharth Vinod
2a76dc6409 Merge pull request #5893 from mermaid-js/add-blog-post-new-shapes
DOCS: Add blog post for new shapes
2024-09-25 00:25:39 +05:30
yari-dewalt
91e3da1293 Update tests to take into account 'default' class 2024-09-24 10:47:26 -07:00
yari-dewalt
fa46267c14 Update documentation 2024-09-24 10:22:46 -07:00
Steph
dc7e32eb10 add blog post - new shapes 2024-09-24 09:46:05 -07:00
yari-dewalt
10679297f9 Fix conditional logic 2024-09-24 09:35:34 -07:00
yari-dewalt
3e697e2ea4 Update and fix logic for lollipop interfaces 2024-09-24 09:28:17 -07:00
omkarht
6a649d347d updated imageSquare shape 2024-09-24 18:22:15 +05:30
omkarht
fd372941c7 updated constraint property for node shape 2024-09-24 13:42:54 +05:30
saurabhg772244
1c8c95367d updated check to avoid _ in shape syntax. updated readme path 2024-09-24 13:29:12 +05:30
yari-dewalt
f031abcec2 Support lollipop interface feature 2024-09-23 12:19:22 -07:00
yari-dewalt
dd62322ae5 Add default class support 2024-09-23 10:09:05 -07:00
yari-dewalt
48e5dee963 Fix edge markers being flipped 2024-09-23 09:51:36 -07:00
omkarht
b3dfc60fff updated tiltedCylinder shape 2024-09-23 19:42:53 +05:30
omkarht
bb3b95f0bd updated lined cylinder shape 2024-09-23 16:47:17 +05:30
ReneLombard
4fc9028dc1 Merge branch 'develop' into bug/5487-add-support-for-nested-classes 2024-09-23 11:43:39 +02:00
saurabhg772244
02cadd87ff Updated shaded process 2024-09-23 15:02:01 +05:30
saurabhg772244
1c105154a6 Updated icon shape positions 2024-09-23 12:17:42 +05:30
renovate[bot]
daaeded0b5 chore(deps): update eslint 2024-09-23 02:09:00 +00:00
omkarht
ed7d41a3cb updated shapes 2024-09-21 20:19:01 +05:30
omkarht
f052a3f686 updated halfRoundedRectangle shape 2024-09-21 17:49:36 +05:30
saurabhg772244
11da07b735 Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-09-21 16:44:56 +05:30
saurabhg772244
d01e180caf Updated shapes 2024-09-21 16:44:19 +05:30
omkarht
4c400966b4 updated curved trapezoid shape 2024-09-21 15:42:50 +05:30
yari-dewalt
bd0a00d373 Update config yaml so ClassDiagramConfig can be properly updated 2024-09-20 09:56:17 -07:00
yari-dewalt
3b8bd6b979 Include classRenderer.js to fix lint error 2024-09-20 09:13:21 -07:00
autofix-ci[bot]
f849c36942 [autofix.ci] apply automated fixes 2024-09-20 10:18:15 +00:00
omkarht
c83fc753a1 implemented additional Image-node shape properties 2024-09-20 15:43:04 +05:30
saurabhg772244
eeeb5fcdd9 updated icon shape label 2024-09-20 13:34:54 +05:30
yari-dewalt
41f22864b4 Add adjustments for text and useHtmlLabels 2024-09-19 12:33:34 -07:00
yari-dewalt
6a99a1a40a Update HTML file and add rendering tests 2024-09-19 12:30:38 -07:00
yari-dewalt
1fcebab9ed Change cssDiagram parameter to 'classDiagram' 2024-09-18 13:22:21 -07:00
yari-dewalt
bed301a485 Update tests 2024-09-18 13:21:27 -07:00
yari-dewalt
31546b08ff Fix note text 2024-09-18 13:20:47 -07:00
yari-dewalt
25337dc453 Update text logic and change workaround for markdown 2024-09-18 12:54:32 -07:00
omkarht
cb85d50f61 updated imageSquare Shape 2024-09-18 21:55:12 +05:30
saurabhg772244
a52949318a updated icon shapes 2024-09-18 21:51:22 +05:30
yari-dewalt
745495c2d5 Refactor and cleanup logic for classBox shape 2024-09-18 09:12:15 -07:00
saurabhg772244
dd261a54df Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-09-18 21:41:25 +05:30
yari-dewalt
94d2a0ee89 Cleanup 2024-09-18 09:11:25 -07:00
saurabhg772244
f035db2feb fixed icon shape padding 2024-09-18 21:40:55 +05:30
yari-dewalt
b105c7b35e Add node look and fix text attribute on class 2024-09-18 09:10:35 -07:00
yari-dewalt
149f991c1d Fix typo 2024-09-18 08:53:54 -07:00
yari-dewalt
a43ee60942 Add fixes to utils 2024-09-18 08:53:54 -07:00
yari-dewalt
5f11cd417f Add classBox shape 2024-09-18 08:53:54 -07:00
yari-dewalt
3782b69744 Add support for classDef statement 2024-09-18 08:53:54 -07:00
yari-dewalt
ca93280b17 Change types 2024-09-18 08:53:54 -07:00
yari-dewalt
2ec9f0af2e Add support for new renderer 2024-09-18 08:53:54 -07:00
yari-dewalt
3eb338df04 Add default option for hideEmptyBox in config 2024-09-18 08:53:54 -07:00
yari-dewalt
b7790ba6b5 Add diagrams for testing 2024-09-18 08:53:54 -07:00
yari-dewalt
b67c931f18 Update snapshot to include new data 2024-09-18 08:53:54 -07:00
yari-dewalt
97186504b5 Add classifier test diagram 2024-09-18 08:53:54 -07:00
yari-dewalt
bd4ca9af1b Add support for classifiers in text attribute 2024-09-18 08:53:54 -07:00
yari-dewalt
9ac20a5cb8 Add styling compatibility to shape 2024-09-18 08:53:54 -07:00
yari-dewalt
20a58d6dbb Add special handling to avoid markdown to HTML issues 2024-09-18 08:53:54 -07:00
yari-dewalt
191e4217fc Adjust classNode text when label is set 2024-09-18 08:53:54 -07:00
yari-dewalt
8745daa701 Add handling for escape type 2024-09-18 08:53:54 -07:00
yari-dewalt
27f7b615cc Add more tests / samples 2024-09-18 08:53:54 -07:00
yari-dewalt
e3c426de86 Initial work on updating to new renderer 2024-09-18 08:53:54 -07:00
Knut Sveidqvist
c6410472c8 Import fix 2024-09-18 15:43:27 +02:00
Knut Sveidqvist
d807466780 Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into knsv/new-shapes 2024-09-18 15:37:40 +02:00
Knut Sveidqvist
c8b9c4cebc Adjusted styling for fork/note and stateEnd 2024-09-18 15:37:27 +02:00
Ashish Jain
741072a126 Fix new shapes tests with new syntax 2024-09-18 15:11:08 +02:00
saurabhg772244
be9123ee2b Updated renderOptions to add direction property 2024-09-18 13:10:07 +05:30
saurabhg772244
3f5afe8daf code refactor 2024-09-17 22:33:10 +05:30
Sidharth Vinod
522de3abd8 Revert "chore: Remove maps in pkg.pr.new"
This reverts commit d37d77cc1a.
2024-09-17 21:22:32 +05:30
Sidharth Vinod
d37d77cc1a chore: Remove maps in pkg.pr.new 2024-09-17 21:18:21 +05:30
Sidharth Vinod
4740be6562 Merge branch 'develop' into knsv/new-shapes
* develop:
  chore: Run release-preview on more PR events
2024-09-17 21:18:00 +05:30
Sidharth Vinod
a07f1f3337 chore: Run release-preview on more PR events 2024-09-17 21:14:16 +05:30
Sidharth Vinod
02851fd672 Merge remote-tracking branch 'upstream/develop' into knsv/new-shapes
* upstream/develop:
  [autofix.ci] apply automated fixes
  test: fix gantt.spec.js type error
  test: await on `expect().resolves/rejects`
  build(types): disable preserveSymlinks in tsconfig
2024-09-17 21:00:02 +05:30
Sidharth Vinod
233e36c988 chore: changeset 2024-09-17 20:59:42 +05:30
Sidharth Vinod
2b12a658f6 Merge pull request #5870 from aloisklink/chore/set-tsconfig-preserveSymlinks-to-false
build(types): disable `preserveSymlinks` in tsconfig
2024-09-17 14:44:37 +00:00
autofix-ci[bot]
b74842ceb3 [autofix.ci] apply automated fixes 2024-09-17 12:46:35 +00:00
Alois Klink
ca84f7d4a9 test: fix gantt.spec.js type error
The `it` was being parsed as a mocha `it`, not a vitest `it`.
2024-09-17 21:37:48 +09:00
Alois Klink
1892277273 test: await on expect().resolves/rejects 2024-09-17 21:13:55 +09:00
Alois Klink
f12df395f8 build(types): disable preserveSymlinks in tsconfig
PNPM uses symlinks by default for `node_modules`
(see the [`node-linker`][1] options), which doesn't work with
[TypeScript's `preserveSymlinks: true`][2] setting.

This meant that the `d3-transition` types were not applying properly in
our code.

[1]: https://pnpm.io/npmrc#node-linker
[2]: https://www.typescriptlang.org/tsconfig/#preserveSymlinks
2024-09-17 20:59:38 +09:00
Ashish Jain
89e82e4d97 Merge from develop 2024-09-17 09:35:19 +02:00
ReneLombard
af2340d889 Merge branch 'develop' into bug/5487-add-support-for-nested-classes 2024-09-17 09:29:30 +02:00
saurabhg772244
775a6381b4 updated type and function signature 2024-09-17 12:50:20 +05:30
saurabhg772244
38c6ad5ad6 updated readme url t use kabab case 2024-09-17 12:39:46 +05:30
Sidharth Vinod
d63dc319c7 Merge pull request #5866 from mermaid-js/changeset-release/master
Version Packages
2024-09-16 22:10:27 +05:30
github-actions[bot]
c5539e0aa0 Version Packages 2024-09-16 16:39:08 +00:00
Sidharth Vinod
14601b7871 Merge pull request #5865 from mermaid-js/develop
Pre-Release
2024-09-16 22:06:35 +05:30
Sidharth Vinod
7a86fd7b44 Merge branch 'master' into develop
* master:
  Version Packages
  add product hunt badge to homepage
2024-09-16 22:05:12 +05:30
Sidharth Vinod
0b3522894a Update firefox changeset to patch 2024-09-16 22:03:33 +05:30
saurabhg772244
aa0836aecc update type check for getTypeFromVertex 2024-09-16 13:19:41 +05:30
autofix-ci[bot]
78f9238865 [autofix.ci] apply automated fixes 2024-09-16 07:39:10 +00:00
saurabhg772244
5ca4fccbb0 fixed build error 2024-09-16 13:03:46 +05:30
saurabhg772244
7f2044024b Updated readme for renderOptions parameter and renamed to use kabab case 2024-09-16 12:59:33 +05:30
Sidharth Vinod
d2de9702c5 Merge pull request #5840 from mermaid-js/renovate/eslint
chore(deps): update eslint (minor)
2024-09-16 12:37:19 +05:30
renovate[bot]
92a8783d95 chore(deps): update eslint 2024-09-16 06:46:29 +00:00
Sidharth Vinod
4bd1e5c524 Merge pull request #5853 from jayaprabhakar/bug/5716_seq-actor-timeline-start
Sequence Diagram: Start participant timeline from the bottom of the participant
2024-09-16 05:47:51 +00:00
Sidharth Vinod
10826055f3 Merge pull request #5863 from mermaid-js/renovate/patch-eslint
chore(deps): update dependency eslint-plugin-jsdoc to v50.2.3
2024-09-16 05:46:32 +00:00
renovate[bot]
6cf050e6e5 chore(deps): update dependency eslint-plugin-jsdoc to v50.2.3 2024-09-16 01:58:46 +00:00
saurabhg772244
52e1a36ffe Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-09-13 23:23:41 +05:30
saurabhg772244
e83a95d3ed Updated icon shape for background colour and icon colour 2024-09-13 23:22:14 +05:30
Knut Sveidqvist
44561f57d3 Moving case check to parsing 2024-09-13 14:18:46 +02:00
Knut Sveidqvist
4c26fe224b Adding case check 2024-09-13 14:02:11 +02:00
Ashish Jain
61af74609a Updated shape aliases 2024-09-13 12:58:28 +02:00
saurabhg772244
9f2f3bd780 Updated type 2024-09-13 15:41:53 +05:30
Knut Sveidqvist
38bcbcdd0a Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into knsv/new-shapes 2024-09-13 11:25:05 +02:00
Knut Sveidqvist
d8c340d9c5 Throwing error for invalid shape 2024-09-13 11:23:28 +02:00
saurabhg772244
8456d7b100 Updated insertNode to pass optional config 2024-09-13 14:11:13 +05:30
Knut Sveidqvist
2fa044d484 Merge branch 'knsv-new-shapes-amp-n-at' into knsv/new-shapes 2024-09-12 16:59:49 +02:00
Knut Sveidqvist
4162a25425 Fix for amp and adjusted tests 2024-09-12 16:58:52 +02:00
René Lombard
e26a38b619 Reverted teh CONTRIBUTING.md 2024-09-12 14:12:38 +02:00
René Lombard
92aa2859a0 Removed comment from classDiagram.jison 2024-09-12 12:42:53 +02:00
René Lombard
1d8f524913 Manually updated the classchart 2024-09-12 12:40:19 +02:00
René Lombard
59991b70a1 Reverted pnpm-lock 2024-09-12 12:28:33 +02:00
René Lombard
a6b877676e Reverted pnpm-lock 2024-09-12 12:23:10 +02:00
ReneLombard
3c49c00f2b Update package.json 2024-09-12 12:19:35 +02:00
ReneLombard
c97716e780 Update CONTRIBUTING.md 2024-09-12 12:17:58 +02:00
Knut Sveidqvist
355e218837 Merge branch 'knsv/new-shapes' into knsv-new-shapes-amp-n-at 2024-09-12 12:17:42 +02:00
René Lombard
a3145a32e7 Updated the downloads.html 2024-09-12 12:17:03 +02:00
Knut Sveidqvist
8b6fb94835 WIP 2024-09-12 12:10:41 +02:00
Ashish Jain
83ea81d975 Merge from develop 2024-09-12 12:08:09 +02:00
René Lombard
aae9db92ee Merge branch 'bug/5487-add-support-for-nested-classes' of https://github.com/ReneLombard/mermaid into bug/5487-add-support-for-nested-classes 2024-09-12 11:52:00 +02:00
René Lombard
6c5b7ce9f4 Updated the changelog 2024-09-12 11:51:38 +02:00
Knut Sveidqvist
8bb70ea493 Removing the ending @ sign in the shape data 2024-09-12 11:49:21 +02:00
ReneLombard
bff9f65c88 Merge branch 'develop' into bug/5487-add-support-for-nested-classes 2024-09-12 11:46:51 +02:00
René Lombard
88607e8aa0 Merge branch 'bug/5487-add-support-for-nested-classes' of https://github.com/ReneLombard/mermaid into bug/5487-add-support-for-nested-classes 2024-09-12 11:31:21 +02:00
Ashish Jain
17c6ed6303 Merge pull request #5856 from mermaid-js/5787_firefox_label_width
#5787 Fix for issue with labels in firefox
2024-09-12 11:31:20 +02:00
Knut Sveidqvist
bfd8c63daa #5787 Fix for issue with labels in firefox 2024-09-12 11:05:32 +02:00
René Lombard
6de7f1b088 Updated the package.json files 2024-09-11 15:57:13 +02:00
omkarht
3359d87115 updated styles, testcases and fixed html labels for image shape 2024-09-11 19:00:02 +05:30
ReneLombard
e8fdc965a2 Update downloads.htm 2024-09-11 15:04:06 +02:00
Ashish Jain
67bcd3e0d6 Merge pull request #5844 from mermaid-js/saurabh/image-shape
New Image and Icon shape
2024-09-11 13:54:24 +02:00
omkarht
9421f63775 updated ImageSqaure shape 2024-09-11 17:21:38 +05:30
saurabhg772244
01bf7af360 updated styles 2024-09-11 17:12:56 +05:30
saurabhg772244
4754ed01ab updated pos changes 2024-09-11 17:04:11 +05:30
saurabhg772244
a2c262f940 fixed html labels for icon shape 2024-09-11 16:58:13 +05:30
saurabhg772244
7963ad9b20 updated test cases 2024-09-11 13:16:23 +05:30
saurabhg772244
5e34810335 Added rounded icon shape 2024-09-11 12:42:45 +05:30
Knut Sveidqvist
e44eb5258b Merge pull request #5826 from mermaid-js/add-product-hunt-badge
DOCS: add Product Hunt badge to homepage
2024-09-11 08:52:35 +02:00
jayaprabhakar
e564c395ba Sequence Diagram: Start participant timeline from the bottom of the participant 2024-09-10 13:46:35 -07:00
saurabhg772244
3d1af09090 Updated circle icon 2024-09-10 22:28:01 +05:30
omkarht
1cc2f323de updated image shape 2024-09-10 21:22:28 +05:30
saurabhg772244
194684e27b Updated labels for shapes 2024-09-10 19:34:53 +05:30
saurabhg772244
ee17e020cf updated icon square and icon 2024-09-10 17:11:12 +05:30
René Lombard
2b8ef765e7 executed 'pnpm -w run lint:fix' and checked in fixed files 2024-09-10 10:12:15 +02:00
saurabhg772244
dbe965303b Updated logic for vertex label 2024-09-10 12:10:36 +05:30
saurabhg772244
3d9e919545 Updated test cases 2024-09-09 23:00:08 +05:30
saurabhg772244
30eb02510b Merge branch 'saurabh/image-shape' of https://github.com/mermaid-js/mermaid into saurabh/image-shape 2024-09-09 22:47:21 +05:30
saurabhg772244
06aa72ec16 Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into saurabh/image-shape 2024-09-09 22:43:08 +05:30
René Lombard
cf45a35971 Updated the code to include nested namespaces for class diagrams 2024-09-09 17:20:25 +02:00
Ashish Jain
a601d3bccf Update .changeset/rude-meals-invite.md
Co-authored-by: Sidharth Vinod <github@sidharth.dev>
2024-09-09 16:58:48 +02:00
saurabhg772244
f46a135458 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-09-09 19:40:01 +05:30
saurabhg772244
82cc473801 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-09-09 19:37:59 +05:30
Sidharth Vinod
9c41708d9e Merge pull request #5848 from mermaid-js/changeset-release/master
Version Packages
2024-09-09 19:29:39 +05:30
github-actions[bot]
a51d3aa2ad Version Packages 2024-09-09 13:59:11 +00:00
Sidharth Vinod
797d72b716 Merge pull request #5847 from mermaid-js/develop
changesets
2024-09-09 19:27:04 +05:30
Sidharth Vinod
dd0304387e changesets 2024-09-09 19:26:27 +05:30
Sidharth Vinod
80903ec281 Merge pull request #5846 from mermaid-js/changeset-release/master
Version Packages
2024-09-09 18:51:04 +05:30
github-actions[bot]
1f373c8430 Version Packages 2024-09-09 13:09:57 +00:00
Sidharth Vinod
02d3bec856 Merge pull request #5845 from mermaid-js/develop
Pre-release
2024-09-09 18:37:57 +05:30
Ashish Jain
e111965411 Added more tests, updated documentation, kebab-case changes 2024-09-09 14:59:03 +02:00
Ashish Jain
41cf1262b2 Revert "Updated all shape names to use kebab-case"
This reverts commit e5532c3418.
2024-09-09 14:49:07 +02:00
Sidharth Vinod
ddb51cdcbc Merge pull request #5831 from mermaid-js/sidv/returnConfig
feat: Return parsed config from `mermaid.parse`
2024-09-09 12:17:02 +00:00
autofix-ci[bot]
d053284536 [autofix.ci] apply automated fixes 2024-09-09 12:11:29 +00:00
Sidharth Vinod
acc1e500d3 Merge branch 'develop' into sidv/returnConfig
* develop:
  [autofix.ci] apply automated fixes
  Create red-beans-cross.md
  remove tsconfig compiler option paths
  linting
  replace mermaid/dist with relative paths
  more , linting
  add test for out-of-tree tsc project
  replace  with mermaid/dist
2024-09-09 17:31:07 +05:30
Sidharth Vinod
c0187101e9 fix: Return type, make config non optional
Co-authored-by: Alois Klink <alois@aloisklink.com>
2024-09-09 17:30:22 +05:30
Sidharth Vinod
303f1f4545 Merge branch 'develop' into sidv/returnConfig
* develop:
  chore(deps): update dependency eslint-plugin-jsdoc to v50
  chore: add git command and set safe dir
  Version Packages
  Adding changeset
  Cleanup of test-file
  Updated cypress test for self-loops
  Fix for issues with self loops
  rebuild docs
  add another maybe-undefined operator elk
  pass linter
  fix import
  make rendering-util/types a real ts file
2024-09-09 17:19:28 +05:30
Sidharth Vinod
750f58d7db Merge pull request #5838 from bollwyvl/gh-5747-relative-paths
fix 5747 replace $root with relative paths
2024-09-09 11:47:58 +00:00
saurabhg772244
e5532c3418 Updated all shape names to use kebab-case 2024-09-09 16:54:54 +05:30
autofix-ci[bot]
a881d46178 [autofix.ci] apply automated fixes 2024-09-09 09:50:27 +00:00
saurabhg772244
edb99c2842 updated test for icon shape 2024-09-09 15:07:42 +05:30
saurabhg772244
4d04d1a8c3 Merge branch 'saurabh/image-shape' of https://github.com/mermaid-js/mermaid into saurabh/image-shape 2024-09-09 14:53:43 +05:30
saurabhg772244
1d1766b5c3 Adjustements to support height and width 2024-09-09 14:53:17 +05:30
Ashish Jain
0ade03c4de Merge from develop 2024-09-09 11:15:42 +02:00
omkarht
2aa5089930 created test spec file for Image Shape 2024-09-09 14:01:49 +05:30
saurabhg772244
2259a59ac6 Add support for custom height and width 2024-09-09 13:11:16 +05:30
omkarht
d8d56df272 Updated Image Shape Icon for image width and height 2024-09-09 12:08:25 +05:30
saurabhg772244
ec29f749af Merge branch 'develop' of https://github.com/mermaid-js/mermaid into saurabh/image-shape 2024-09-09 11:24:28 +05:30
autofix-ci[bot]
1951a0cdc8 [autofix.ci] apply automated fixes 2024-09-09 04:12:51 +00:00
Sidharth Vinod
cc61629a8c Merge pull request #5842 from mermaid-js/renovate/major-eslint
chore(deps): update dependency eslint-plugin-jsdoc to v50
2024-09-09 04:09:33 +00:00
Sidharth Vinod
5e75320d49 Create red-beans-cross.md 2024-09-09 09:38:02 +05:30
renovate[bot]
b830e6151b chore(deps): update dependency eslint-plugin-jsdoc to v50 2024-09-09 00:15:23 +00:00
Nicholas Bollweg
fd3c3fc022 remove tsconfig compiler option paths 2024-09-08 13:57:56 -05:00
Nicholas Bollweg
94deacb1b5 linting 2024-09-08 12:48:41 -05:00
Nicholas Bollweg
571dfda629 replace mermaid/dist with relative paths 2024-09-08 12:47:19 -05:00
Nicholas Bollweg
6a3f1d194a Merge branch 'develop' into gh-5747-no-dollar-root 2024-09-08 13:03:25 -04:00
Sidharth Vinod
e5aebf3df6 Merge pull request #5798 from bollwyvl/gh-5747-rendering-util-types
fix 5747 rendering util types
2024-09-08 14:36:38 +00:00
Sidharth Vinod
c95a0c7de4 Merge pull request #5834 from kairi003/bug/5833_add_git_for_changeset
chore: add `git` to dev image for `changeset`
2024-09-08 14:26:09 +00:00
Sidharth Vinod
bf9842000f Merge branch 'master' into develop
* master:
  Version Packages
  Adding changeset
  Cleanup of test-file
  Updated cypress test for self-loops
  Fix for issues with self loops
2024-09-08 20:01:33 +05:30
Nicholas Bollweg
35c08985ee Merge branch 'develop' into gh-5747-rendering-util-types 2024-09-08 09:25:02 -04:00
Nicholas Bollweg
ba95f394a3 Merge branch 'develop' into gh-5747-no-dollar-root 2024-09-08 09:24:53 -04:00
kairi003
2879f3775b chore: add git command and set safe dir 2024-09-08 06:04:01 +09:00
Sidharth Vinod
f7be983199 Merge branch 'develop' into sidv/returnConfig
* develop:
  chore: Fix check
  feat: Preview release
2024-09-06 23:26:10 +05:30
Sidharth Vinod
58524aceaa chore: Fix check 2024-09-06 23:25:23 +05:30
Sidharth Vinod
ab25e9ea7d Merge pull request #5832 from mermaid-js/sidv/previewRelease
feat: Preview releases
2024-09-06 23:24:41 +05:30
Sidharth Vinod
57d2d905ef feat: Preview release 2024-09-06 23:18:27 +05:30
Sidharth Vinod
64abf29ea8 feat: Return parsed config from mermaid.parse 2024-09-06 23:05:30 +05:30
Ashish Jain
73147196b1 Merge pull request #5830 from mermaid-js/changeset-release/master
Version Packages
2024-09-06 19:18:44 +02:00
github-actions[bot]
c895109497 Version Packages 2024-09-06 17:17:58 +00:00
Ashish Jain
145acd0ee4 Merge pull request #5828 from mermaid-js/hotfix/5827-self-loops
Hotfix/5827 self loops
2024-09-06 19:16:08 +02:00
Knut Sveidqvist
4c43d21196 Adding changeset 2024-09-06 18:47:39 +02:00
Knut Sveidqvist
b4941aa4ce Cleanup of test-file 2024-09-06 18:43:22 +02:00
Knut Sveidqvist
aa259e03f2 Updated cypress test for self-loops 2024-09-06 18:33:34 +02:00
Knut Sveidqvist
0d7aaae0ff Fix for issues with self loops 2024-09-06 18:33:13 +02:00
autofix-ci[bot]
9467735fab [autofix.ci] apply automated fixes 2024-09-06 15:16:50 +00:00
Ashish Jain
9e3aa705ae Add changeset 2024-09-06 17:11:47 +02:00
Steph
0f8cc48d03 add product hunt badge to homepage 2024-09-06 08:08:41 -07:00
saurabhg772244
95bd5dfdab Adjustment for icon shape 2024-09-06 20:08:27 +05:30
saurabhg772244
e6ce370cdd Merge branch 'saurabh/image-shape' of https://github.com/mermaid-js/mermaid into saurabh/image-shape 2024-09-06 19:11:51 +05:30
saurabhg772244
78346cbe84 Adjustment for icon in the radius 2024-09-06 19:11:18 +05:30
omkarht
9a953f7f80 adjusted imageSqaure for html labels 2024-09-06 18:19:17 +05:30
saurabhg772244
14bb09a3db Adjustments for icon shape 2024-09-06 17:56:13 +05:30
omkarht
89fb65913d minor adjustments in imageShape 2024-09-06 15:54:25 +05:30
saurabhg772244
41a75005c8 Added test cases for icon shape 2024-09-06 15:31:49 +05:30
saurabhg772244
54ecd7d423 updated circle icon 2024-09-06 12:50:06 +05:30
omkarht
352194c942 refactored code 2024-09-06 11:46:52 +05:30
omkarht
30e4ab99d9 Added image shape icon 2024-09-06 11:40:06 +05:30
saurabhg772244
5f0160c036 fixed icon shape edges 2024-09-06 11:19:03 +05:30
saurabhg772244
443c886050 fixed icon square edges 2024-09-06 11:01:46 +05:30
saurabhg772244
b7fd21e17a Added basic for forms 2024-09-06 10:17:24 +05:30
Knut Sveidqvist
2f24f6271a Updated cypress test for self-loops 2024-09-05 17:47:12 +02:00
Knut Sveidqvist
6507624232 Fix for issues with self loops 2024-09-05 16:40:59 +02:00
saurabhg772244
e337331122 add squre and circle icon shape 2024-09-05 19:52:45 +05:30
Knut Sveidqvist
1d5f7ce08f Additional shape key for lean_left and lean_right 2024-09-05 13:35:12 +02:00
Knut Sveidqvist
adedb5f803 Updated docs for braces 2024-09-05 11:44:12 +02:00
Knut Sveidqvist
9774c08336 name change for braces on both sides 2024-09-05 11:34:24 +02:00
saurabhg772244
525dcd4760 Updated filled circle 2024-09-05 13:59:10 +05:30
omkarht
d75661e49d updated Traingle shape 2024-09-05 13:40:22 +05:30
saurabhg772244
52d6035c23 Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-09-05 13:33:36 +05:30
saurabhg772244
5a9221680f Add aliases for shapes 2024-09-05 13:33:18 +05:30
omkarht
3a5fef3e50 adjusted padding for triangle shape 2024-09-05 13:26:39 +05:30
saurabhg772244
8883008ca1 Added basic for image shape 2024-09-05 13:21:58 +05:30
Knut Sveidqvist
0eec89255f Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into knsv/new-shapes 2024-09-04 17:50:34 +02:00
Knut Sveidqvist
3d4c5d1a41 Adding new shapes to flowchart documentation 2024-09-04 17:49:39 +02:00
Nicholas Bollweg
826faad37b Merge branch 'develop' into gh-5747-no-dollar-root 2024-09-04 10:06:44 -04:00
Nicholas Bollweg
c078840c63 Merge branch 'develop' into gh-5747-rendering-util-types 2024-09-04 10:06:35 -04:00
saurabhg772244
105b11fca2 Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-09-04 18:54:53 +05:30
saurabhg772244
a259aeba27 Added curly brace shapes 2024-09-04 18:54:35 +05:30
omkarht
8462f21c01 udated shapes 2024-09-04 18:48:25 +05:30
Knut Sveidqvist
5d3a175ed6 Fixed issue with intersection calculations for linedCylinder 2024-09-04 14:12:41 +02:00
saurabhg772244
69bec16080 update curlyBraces shape to new curlyBraceLeft shape 2024-09-04 15:42:13 +05:30
Sidharth Vinod
bfc4abeae2 Merge branch 'master' into develop
* master:
  add blog post - architecture diagrams
2024-09-03 23:59:19 +05:30
Sidharth Vinod
cd67fdf89d docs: Fix SMW link 2024-09-03 23:58:55 +05:30
Sidharth Vinod
958fb6da2b Merge pull request #5815 from mermaid-js/add-blog-posts
DOCS: add blog post - Architecture diagrams
2024-09-03 22:02:20 +05:30
Sidharth Vinod
a6dbf0a9ee Merge branch 'master' of https://github.com/mermaid-js/mermaid into add-blog-posts
* 'master' of https://github.com/mermaid-js/mermaid: (197 commits)
  chore: Update changelogs
  Version Packages
  chore: Update repo name
  Revert "Version Packages"
  chore: Update permissions
  Version Packages
  Update nice-flowers-yawn.md
  Remove icons from docs links
  test: Add second icon pack
  feat: Lazy load icons
  test: Wrap in describe block
  chore: Update cypress
  [autofix.ci] apply automated fixes
  chore: Disable mermaid in SSR
  chore: update pnpm, remove dependency
  test: External diagram rendering test
  docs: Add external icons in demos
  [autofix.ci] apply automated fixes
  docs: Add iconify docs
  docs: Add iconify docs
  ...
2024-09-03 22:01:09 +05:30
Steph
31b4ec3e10 add blog post - architecture diagrams 2024-09-03 08:05:19 -07:00
Ashish Jain
f7e4ee61c7 Updated lock file 2024-09-03 11:29:26 +02:00
Ashish Jain
8e0bb994bb Merge from develop 2024-09-03 11:15:24 +02:00
Nicholas Bollweg
b56fe796d6 more , linting 2024-09-02 16:07:28 -05:00
Nicholas Bollweg
7156cf4c71 merge upstream 2024-09-02 15:57:57 -05:00
Nicholas Bollweg
426d311faa Merge branch 'develop' into gh-5747-rendering-util-types 2024-09-02 16:41:55 -04:00
Sidharth Vinod
55aff88e9f chore: Update changelogs 2024-09-02 21:04:34 +05:30
Knut Sveidqvist
32710c1d99 Merge pull request #5812 from mermaid-js/changeset-release/master
Version Packages
2024-09-02 17:17:19 +02:00
github-actions[bot]
9bcf614a9a Version Packages 2024-09-02 15:16:23 +00:00
Sidharth Vinod
0520329fe0 chore: Update repo name 2024-09-02 20:44:29 +05:30
Sidharth Vinod
10795b1d89 Revert "Version Packages"
This reverts commit 517c47b780.
2024-09-02 20:43:32 +05:30
Sidharth Vinod
6bdeb7ac01 chore: Update permissions 2024-09-02 20:42:55 +05:30
Knut Sveidqvist
3f699ede9e Merge pull request #5811 from mermaid-js/changeset-release/master
Version Packages
2024-09-02 17:09:50 +02:00
github-actions[bot]
517c47b780 Version Packages 2024-09-02 15:05:24 +00:00
Knut Sveidqvist
e1c40bcf05 Update nice-flowers-yawn.md
Removed invalid package
2024-09-02 17:03:30 +02:00
Knut Sveidqvist
20c321076a Merge pull request #5810 from mermaid-js/develop
Release
2024-09-02 16:59:08 +02:00
Sidharth Vinod
87fa9e5289 Remove icons from docs links 2024-09-02 20:22:28 +05:30
Knut Sveidqvist
9fa9bd9e93 Merge pull request #5793 from mermaid-js/sidv/iconify
feat: Support Iconify Icons
2024-09-02 16:43:43 +02:00
Sidharth Vinod
e44cdbd79d test: Add second icon pack 2024-09-02 19:55:04 +05:30
Sidharth Vinod
0edfab1048 feat: Lazy load icons
Co-authored-by: Alois Klink <alois@aloisklink.com>
2024-09-02 19:51:14 +05:30
Sidharth Vinod
c68ae309e5 test: Wrap in describe block 2024-09-02 18:34:58 +05:30
Sidharth Vinod
815e4b5748 Merge branch 'develop' into sidv/iconify 2024-09-02 18:19:27 +05:30
Alois Klink
6acbd9789a Merge pull request #5809 from mermaid-js/sidv/updatePnpm
chore: update pnpm, remove dependency
2024-09-02 12:40:51 +00:00
Sidharth Vinod
f4decdee49 chore: Update cypress 2024-09-02 18:01:35 +05:30
autofix-ci[bot]
0b127eecd9 [autofix.ci] apply automated fixes 2024-09-02 10:46:53 +00:00
Sidharth Vinod
69c9a564f2 chore: Disable mermaid in SSR 2024-09-02 16:11:33 +05:30
Sidharth Vinod
8ef24e5a18 chore: update pnpm, remove dependency 2024-09-02 14:47:46 +05:30
Sidharth Vinod
f5cc0dcaea test: External diagram rendering test 2024-09-02 14:05:37 +05:30
Sidharth Vinod
007da4588b Merge branch 'sidv/iconify' of https://github.com/mermaid-js/mermaid into sidv/iconify
* 'sidv/iconify' of https://github.com/mermaid-js/mermaid:
  [autofix.ci] apply automated fixes
2024-09-02 14:00:09 +05:30
Sidharth Vinod
7056c20cca docs: Add external icons in demos 2024-09-02 14:00:03 +05:30
autofix-ci[bot]
7cda494bf4 [autofix.ci] apply automated fixes 2024-09-02 08:25:52 +00:00
Sidharth Vinod
2d8342261b docs: Add iconify docs 2024-09-02 13:50:50 +05:30
saurabhg772244
336c3127ed updated rough js hachureGap and shapes 2024-09-02 13:35:33 +05:30
Sidharth Vinod
ef26fc921c docs: Add iconify docs 2024-09-02 13:20:34 +05:30
Nicholas Bollweg
0b672e2636 add test for out-of-tree tsc project 2024-09-01 16:40:12 -05:00
autofix-ci[bot]
6209165b32 [autofix.ci] apply automated fixes 2024-09-01 07:38:18 +00:00
autofix-ci[bot]
f3bb5c0c26 [autofix.ci] apply automated fixes 2024-09-01 07:37:33 +00:00
Jesus Briales
9cb09f1fb4 Update sequenceDiagram.md
Add missing example with `rgba` color in `box` statement
2024-09-01 09:31:26 +02:00
Jesus Briales
cfeb794b34 Update sequenceDiagram.md
Fix missing content on notation for `rect` (currently this feels like a void in the text).
2024-09-01 09:28:11 +02:00
Nicholas Bollweg
1b7433b637 replace with mermaid/dist 2024-08-31 09:12:59 -05:00
Nicholas Bollweg
73f8d70b86 rebuild docs 2024-08-30 09:21:11 -05:00
Nicholas Bollweg
6a97f80cc3 add another maybe-undefined operator elk 2024-08-30 09:16:38 -05:00
Nicholas Bollweg
3e922c83f0 pass linter 2024-08-30 09:10:53 -05:00
Nicholas Bollweg
a45588ce7c Merge remote-tracking branch 'upstream/develop' into gh-5747-rendering-util-types 2024-08-30 08:54:05 -05:00
Nicholas Bollweg
a176d64389 fix import 2024-08-30 08:51:40 -05:00
Nicholas Bollweg
e519686f01 Merge remote-tracking branch 'upstream/master' 2024-08-30 08:38:58 -05:00
Nicholas Bollweg
59d6f04e4b make rendering-util/types a real ts file 2024-08-30 08:38:41 -05:00
omkarht
f4d4c784e4 fixed issue for without label shapes 2024-08-29 19:51:12 +05:30
omkarht
eb341bdfb6 fixes issue for withoutlabel shapes 2024-08-29 19:33:44 +05:30
omkarht
ee84ed4236 updated stateEnd Shape 2024-08-29 18:53:17 +05:30
omkarht
f27feb268a updated waveEdgedRectangle shape 2024-08-29 16:51:55 +05:30
autofix-ci[bot]
249e18314a [autofix.ci] apply automated fixes 2024-08-29 09:36:26 +00:00
Sidharth Vinod
115cb071b0 Merge pull request #5791 from robsonpiere/patch-1
Added Microsoft Loop to Integrations docs
2024-08-29 14:58:13 +05:30
Sidharth Vinod
49323aa05b Merge branch 'develop' into sidv/iconify
* develop:
  [autofix.ci] apply automated fixes
  test: Skip architecture diagram
  [autofix.ci] apply automated fixes
  fix: Update diagram keyword
2024-08-29 14:57:16 +05:30
Sidharth Vinod
d279f4e905 Merge pull request #5789 from mermaid-js/sidv/architecture
chore: Remove public APIs for icons
2024-08-29 14:56:47 +05:30
autofix-ci[bot]
eaae85c6f8 [autofix.ci] apply automated fixes 2024-08-29 08:38:25 +00:00
Sidharth Vinod
62feced97a Merge branch 'develop' into patch-1 2024-08-29 14:05:12 +05:30
Sidharth Vinod
d51ea942e1 Merge branch 'develop' into sidv/architecture
* develop:
  test: Skip architecture diagram
  [autofix.ci] apply automated fixes
  fix: Update diagram keyword
2024-08-29 14:03:20 +05:30
Sidharth Vinod
4ac7c5edbb Merge pull request #5792 from mermaid-js/sidv/fixArchitectureTest
fix: Update diagram keyword
2024-08-29 14:01:56 +05:30
Sidharth Vinod
7d8143b917 docs: Changeset 2024-08-29 14:01:26 +05:30
Sidharth Vinod
790f71bb1a feat: Move architecture icons into iconify format 2024-08-29 14:00:21 +05:30
Sidharth Vinod
a4b7e494db feat: Support - in icon names 2024-08-29 13:56:43 +05:30
Sidharth Vinod
6ecdf7be68 docs: Changeset 2024-08-29 13:56:16 +05:30
Sidharth Vinod
e0f7ea56e1 fix: Unknown icon size 2024-08-29 13:55:20 +05:30
Sidharth Vinod
0ea88df662 feat: Add iconify support 2024-08-29 13:25:45 +05:30
omkarht
56e9095619 updated labelRect shape 2024-08-29 13:09:40 +05:30
Sidharth Vinod
1b69e121dc Merge branch 'sidv/fixArchitectureTest' of https://github.com/mermaid-js/mermaid into sidv/fixArchitectureTest
* 'sidv/fixArchitectureTest' of https://github.com/mermaid-js/mermaid:
  [autofix.ci] apply automated fixes
2024-08-29 13:03:11 +05:30
Sidharth Vinod
45e2366b5b test: Skip architecture diagram 2024-08-29 13:03:02 +05:30
autofix-ci[bot]
5309d21588 [autofix.ci] apply automated fixes 2024-08-29 07:13:36 +00:00
Sidharth Vinod
c17f9be10e fix: Update diagram keyword 2024-08-29 12:38:33 +05:30
autofix-ci[bot]
a568f51024 [autofix.ci] apply automated fixes 2024-08-28 18:15:48 +00:00
Robson Piere
8af76c2608 Adding Microsoft Loop 2024-08-28 15:04:48 -03:00
Sidharth Vinod
dccd6121b1 chore: Remove aws icons from demo 2024-08-28 21:37:54 +05:30
autofix-ci[bot]
0ecdbf4374 [autofix.ci] apply automated fixes 2024-08-28 15:55:38 +00:00
Sidharth Vinod
10bdc8dde6 docs: Remove icons docs 2024-08-28 21:18:52 +05:30
Sidharth Vinod
16faef4613 docs: Changeset 2024-08-28 21:14:30 +05:30
Sidharth Vinod
bed6c5dd0c chore: Move icons to architecture
We are planning to release an icons library separately. Till we figure out the APIs for those, all external surface for icons are removed, to avoid making a breaking change when the new library comes.
2024-08-28 21:04:21 +05:30
omkarht
b3495219ae updated taggedRect Shape 2024-08-28 19:17:18 +05:30
Sidharth Vinod
08d59d3d2b chore: Align export syntax 2024-08-28 19:06:47 +05:30
omkarht
71753671e0 moved old shapes from newShapes.spec.ts file to separate file 2024-08-28 19:02:20 +05:30
omkarht
9746497673 updated oldShapes.spec.ts file 2024-08-28 18:57:43 +05:30
omkarht
882a2cc63e created spec file for old shapes 2024-08-28 18:31:16 +05:30
Ashish Jain
30d4632a0b Prettier lint fixes 2024-08-28 14:50:31 +02:00
Ashish Jain
f29f5eb207 Prettier lint fixes 2024-08-28 14:36:11 +02:00
Ashish Jain
600247df79 Merge from develop 2024-08-28 14:29:03 +02:00
Knut Sveidqvist
904410f7f7 Updated changeset for parser package from the new architecture diagram 2024-08-28 14:26:11 +02:00
Knut Sveidqvist
fda092bbe9 Fix for merge realted error in pnpm-lock and langium-config 2024-08-28 14:24:00 +02:00
Knut Sveidqvist
75e8119c6a Merge pull request #5452 from NicolasNewman/5367/architecture-diagram
New Diagram: Architecture
2024-08-28 14:18:34 +02:00
Knut Sveidqvist
80c4b24803 Merge branch 'develop' into 5367/architecture-diagram 2024-08-28 14:14:49 +02:00
Knut Sveidqvist
dd00575d57 Merge branch 'develop' of github.com:mermaid-js/mermaid into develop 2024-08-28 14:11:05 +02:00
Knut Sveidqvist
33a809f09a Change set for PR yesterday 2024-08-28 14:10:36 +02:00
Ashish Jain
28bd07fdeb added changeset for recent PR 2024-08-28 14:07:29 +02:00
omkarht
8fa1fed8b5 added padding in waveRectangle Shape 2024-08-28 17:26:07 +05:30
Sidharth Vinod
5293b63f30 Merge branch 'master' of https://github.com/mermaid-js/mermaid into develop
* 'master' of https://github.com/mermaid-js/mermaid:
  docs: Add argos in intro
  docs: Add argos in readme
2024-08-28 17:23:44 +05:30
Knut Sveidqvist
256a148bbf Adding changeset for acrhitecture diagrams 2024-08-28 13:52:51 +02:00
Knut Sveidqvist
eee1be474a Merge branch 'develop' into 5367/architecture-diagram 2024-08-28 13:50:05 +02:00
Ashish Jain
0bd00764c4 Merge pull request #5786 from mermaid-js/5782_supporting_defaultRenderer
#5782 fix: adding backwards compatability for defaultRenderer directive
2024-08-28 13:40:56 +02:00
Knut Sveidqvist
63e9194c5d Add BRANDES_KOEPF node placement strategy default value 2024-08-28 13:38:01 +02:00
Knut Sveidqvist
06310faa32 Removing default config overriding default value from schema 2024-08-28 13:29:09 +02:00
Knut Sveidqvist
011c036350 #5782 fix: adding backwards compatability for defaultRenderer directive 2024-08-28 13:07:11 +02:00
omkarht
c9c821da5c updated crossced Circle Shape 2024-08-28 15:27:10 +05:30
Sidharth Vinod
8c8ed571d5 Merge pull request #5778 from mermaid-js/renovate/all-minor
chore(deps): update all minor dependencies (minor)
2024-08-28 06:04:11 +00:00
renovate[bot]
b0f7abb3a9 chore(deps): update all minor dependencies 2024-08-28 04:56:58 +00:00
saurabhg772244
c2c65b4df2 Update filledCircle shape 2024-08-27 18:44:36 +05:30
Ashish Jain
9b7f5ed963 Lint fix 2024-08-27 13:53:23 +02:00
Ashish Jain
75f755b823 Merge from develop 2024-08-27 13:41:12 +02:00
omkarht
1cfe987fa1 updated Odd shape 2024-08-27 16:17:04 +05:30
saurabhg772244
4cf7c97b8f Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-08-27 16:01:02 +05:30
saurabhg772244
3715254a78 updated odd shape 2024-08-27 16:00:14 +05:30
omkarht
ab44053ba4 Updated newShapes spec file with previous shapes 2024-08-27 15:50:42 +05:30
omkarht
5c6f3e66a6 updated choice shape 2024-08-27 15:22:01 +05:30
omkarht
5e5265c8b0 updated fork Join Shape 2024-08-27 14:12:40 +05:30
Ashish Jain
2d481c4b73 Merge pull request #5780 from mermaid-js/knsv/elk-tweaks
Adjustments of the elk configuration
2024-08-27 08:37:56 +02:00
omkarht
13719aa694 updated Cylinder Shape 2024-08-26 20:38:53 +05:30
omkarht
9d9109a68c updated inverted trapezoid 2024-08-26 19:49:29 +05:30
autofix-ci[bot]
5744c8614a [autofix.ci] apply automated fixes 2024-08-26 14:02:56 +00:00
Knut Sveidqvist
9cf562476a Tweaking the elk config and exposing elk.layered.cycleBreaking.strategy to mermaid configuration 2024-08-26 15:34:14 +02:00
saurabhg772244
cb91c3f8a8 Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-08-26 18:45:46 +05:30
saurabhg772244
c08fad6487 updated shapes 2024-08-26 18:45:34 +05:30
Knut Sveidqvist
3b3b599c38 #4866, #5255 fix: Fixes bug for links to self for nodes inside a cluster 2024-08-26 14:39:38 +02:00
omkarht
23329f1ee9 Updated Note Shape 2024-08-26 17:39:16 +05:30
Sidharth Vinod
10e05f352e Merge pull request #5776 from mermaid-js/renovate/patch-all-patch
chore(deps): update all patch dependencies (patch)
2024-08-26 16:46:59 +05:30
Knut Sveidqvist
e842b72aaa Merge branch 'develop' into knsv/new-shapes 2024-08-26 11:59:07 +02:00
renovate[bot]
43b0e808d0 chore(deps): update all patch dependencies 2024-08-26 08:40:14 +00:00
Sidharth Vinod
286a3474d9 Merge pull request #5772 from adjerbetian/patch-1
Fix tutorials.md with url safe encoding
2024-08-26 05:12:02 +00:00
Sidharth Vinod
5aa8490e9e Merge pull request #5777 from mermaid-js/renovate/patch-eslint
chore(deps): update eslint (patch)
2024-08-26 05:09:31 +00:00
autofix-ci[bot]
49a77dda3a [autofix.ci] apply automated fixes 2024-08-26 05:00:41 +00:00
Sidharth Vinod
0049372b2e chore: Add urlsafe to cspell 2024-08-26 10:25:56 +05:30
Sidharth Vinod
293411b005 Merge pull request #5773 from mmorel-35/openssf/pinned-dependencies
chore: pin dependencies
2024-08-26 04:53:49 +00:00
renovate[bot]
efc1a0adc4 chore(deps): update eslint 2024-08-26 04:39:18 +00:00
Sidharth Vinod
e3b2a6949c Merge pull request #5711 from NicolasNewman/multi-line-er-label
feat(er): allow multi-line relationship labels
2024-08-26 04:22:49 +00:00
NicolasNewman
dbd4658028 Merge branch 'multi-line-er-label' of https://github.com/NicolasNewman/mermaid into multi-line-er-label 2024-08-25 12:53:28 -05:00
NicolasNewman
940146fadd tests(er): added test for line breaks 2024-08-25 12:52:29 -05:00
Matthieu MOREL
efcafd99db chore: pin dependencies 2024-08-25 09:01:32 +00:00
Alexandre Djerbetian
6585380a4c Fix tutorials.md with url safe encoding
See https://github.com/jihchi/mermaid.ink/issues/396 for the bug that this PR fixes.
2024-08-25 11:18:27 +03:00
Sidharth Vinod
f653510d1b Merge pull request #5767 from mermaid-js/sidv/huskyUpdate
chore: Fix husky deprecation notice
2024-08-25 04:08:48 +00:00
Sidharth Vinod
541cf251b2 Merge pull request #5770 from mermaid-js/sidv/argos
Add argos to website
2024-08-25 09:38:14 +05:30
Sidharth Vinod
755394ac9a docs: Add argos in intro 2024-08-25 09:36:50 +05:30
Matthieu MOREL
2f1cfe0a31 Merge pull request #5763 from mmorel-35/dockerfile
chore: use corepack to install pnpm
2024-08-24 21:45:04 +00:00
Sidharth Vinod
e0253b7768 Merge pull request #5769 from mermaid-js/sidv/argos
docs: Add argos in readme
2024-08-25 01:48:51 +05:30
Sidharth Vinod
5d1b50cb65 docs: Add argos in readme 2024-08-25 01:47:48 +05:30
autofix-ci[bot]
ed352debd5 [autofix.ci] apply automated fixes 2024-08-24 16:08:16 +02:00
Matthieu MOREL
221aedc5f5 chore: use corepack to install pnpm 2024-08-24 16:08:16 +02:00
Sidharth Vinod
4b195d17ed Merge branch 'master' into develop
* master:
  feat: Add verification script for MERMAID_RELEASE_VERSION
  fix: Revert accidental change of MERMAID_RELEASE_VERSION
2024-08-24 18:17:26 +05:30
Sidharth Vinod
8e640da543 docs: Add changeset 2024-08-24 18:03:45 +05:30
Sidharth Vinod
559be33ff7 docs: Fix <MERMAID_RELEASE_VERSION> 2024-08-24 18:01:34 +05:30
Sidharth Vinod
0bfb42c68f feat: Add verification script for MERMAID_RELEASE_VERSION 2024-08-24 17:57:36 +05:30
Sidharth Vinod
c95e997f8f fix: Revert accidental change of MERMAID_RELEASE_VERSION 2024-08-24 17:31:37 +05:30
Sidharth Vinod
baafaf09df Merge branch 'develop' into multi-line-er-label 2024-08-24 17:24:16 +05:30
Sidharth Vinod
db1b055c7f chore: Update husky 2024-08-24 17:21:21 +05:30
Sidharth Vinod
5ba5e30a47 Merge pull request #5766 from mermaid-js/fix/scorecard
fix: correct target branch for scorecard
2024-08-24 17:11:16 +05:30
Matthieu MOREL
7e9946eea8 fix: correct target branch for scorecard 2024-08-24 13:31:03 +02:00
Sidharth Vinod
cac60db775 Merge pull request #5764 from mmorel-35/scorecard
chore: define scorecard workflow
2024-08-24 10:24:57 +00:00
Matthieu MOREL
83ee06e9e7 chore: define scorecard workflow 2024-08-24 10:10:06 +00:00
Sidharth Vinod
534d3dd038 Merge branches 'develop' and 'develop' of https://github.com/mermaid-js/mermaid into develop
* 'develop' of https://github.com/mermaid-js/mermaid:
  chore: Merge checks into lint
  chore: Remove unnecessary workflows
  chore: Add concurrency for actions
  chore: Skip running E2E on Push to most branches

* 'develop' of https://github.com/mermaid-js/mermaid:
  chore: Merge checks into lint
  chore: Remove unnecessary workflows
  chore: Add concurrency for actions
  chore: Skip running E2E on Push to most branches
2024-08-24 15:37:27 +05:30
Sidharth Vinod
f6333b4a5e chore: Add provenance flag 2024-08-24 15:34:53 +05:30
Matthieu MOREL
ac58785f50 Merge pull request #5765 from mermaid-js/sidv/reduceDuplicateCI
chore: reduce redundant CI runs
2024-08-24 09:53:03 +00:00
Sidharth Vinod
d08ef70e0f chore: Merge checks into lint 2024-08-24 15:06:08 +05:30
Sidharth Vinod
ab4ba4cf2f chore: Remove unnecessary workflows 2024-08-24 15:05:28 +05:30
Sidharth Vinod
1a1f668745 chore: Add concurrency for actions 2024-08-24 15:04:14 +05:30
Sidharth Vinod
5c59505589 chore: Skip running E2E on Push to most branches 2024-08-24 14:51:23 +05:30
Sidharth Vinod
95274278f3 Merge pull request #5762 from mermaid-js/changeset-release/master
Version Packages
2024-08-24 12:48:56 +05:30
github-actions[bot]
1532721f09 Version Packages 2024-08-24 07:17:31 +00:00
Sidharth Vinod
5db856cfb0 Merge pull request #5761 from mermaid-js/sidv/fixElkTypes
fix: Type file path for layout-elk
2024-08-24 12:41:56 +05:30
Sidharth Vinod
b34dfe8f45 fix: Type file path for layout-elk 2024-08-24 12:41:18 +05:30
omkarht
7c26148252 fixed padding for flippedTriangle shape 2024-08-23 19:55:15 +05:30
omkarht
7d6a97e264 updated shadedProcess shape 2024-08-23 19:25:42 +05:30
omkarht
99f7d65f47 updated shadedProcess shape 2024-08-23 19:09:35 +05:30
omkarht
db1db1ab0e updated shape name in newShapes.spec file 2024-08-23 17:12:44 +05:30
omkarht
cec28464ec updated tiltedCylinder shape 2024-08-23 16:42:10 +05:30
omkarht
a2fba0284e updated tiltedCylinder shape 2024-08-23 15:43:15 +05:30
omkarht
f424a51133 updated tiltedCylinder shape 2024-08-23 13:30:51 +05:30
omkarht
46b8faddae fix for handDrawn subgraph styling 2024-08-23 13:23:32 +05:30
omkarht
19cce07ab5 updated halfRoundedRectangle shape 2024-08-22 19:34:22 +05:30
omkarht
439dcb10b2 Created README.md for new shape addition guide 2024-08-22 19:32:06 +05:30
saurabhg772244
98cb8b998e Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-08-22 19:10:26 +05:30
saurabhg772244
1654a4b01c add curlyBrace shape 2024-08-22 19:05:33 +05:30
omkarht
8e72611922 updated lined cylinder shape 2024-08-22 18:35:08 +05:30
omkarht
a857d3807f Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-08-22 18:30:48 +05:30
Ashish Jain
3dc0af3159 Merge from release 2024-08-22 14:45:47 +02:00
omkarht
abf7ecd2ca Merge branch 'develop' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-08-22 16:49:53 +05:30
omkarht
8d8b6c1c33 updated triangle shape 2024-08-22 15:39:53 +05:30
saurabhg772244
262790b22d Merge branch 'develop' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-08-22 15:33:53 +05:30
autofix-ci[bot]
792a62438f [autofix.ci] apply automated fixes 2024-08-21 15:35:41 +00:00
NicolasNewman
73e16d0857 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into 5367/architecture-diagram 2024-08-21 10:28:57 -05:00
saurabhg772244
4e8a7e0b4c updated tilted cylinder 2024-08-21 19:59:41 +05:30
Ashish Jain
121e27e850 Merge from develop 2024-08-21 16:25:58 +02:00
Ashish Jain
0152ed7027 create missing type 2024-08-21 16:21:51 +02:00
Ashish Jain
f233bfd75e Updated reference to import layout elk 2024-08-21 16:03:13 +02:00
Ashish Jain
4298a57297 Merge from develop 2024-08-21 15:19:32 +02:00
Ashish Jain
6e8ea148bc Added multi-edge test 2024-08-21 15:16:18 +02:00
saurabhg772244
777522e8d5 update change 2024-08-21 18:38:31 +05:30
saurabhg772244
a4007ffb80 update names for the shapes 2024-08-21 18:36:48 +05:30
saurabhg772244
de875c9e27 Update multiwaveEdgeRect styles 2024-08-21 13:58:56 +05:30
saurabhg772244
3cfcb2da41 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into knsv/new-shapes 2024-08-21 13:07:52 +05:30
omkarht
4c3db653f5 updated bowtie rect shape 2024-08-20 19:08:35 +05:30
saurabhg772244
90b7a3be63 Updated labels 2024-08-20 16:52:41 +05:30
saurabhg772244
0fbe5f2f10 updated multi wave edge rect 2024-08-20 15:34:01 +05:30
saurabhg772244
36f2989249 Updated test case 2024-08-20 12:48:57 +05:30
saurabhg772244
99956b4283 Updated change for label transform 2024-08-20 12:17:14 +05:30
NicolasNewman
95c483934d feat(arch): all non-generic icon packs are now lazy loaded 2024-08-19 17:40:12 -05:00
saurabhg772244
9c5a8f7ef1 fixed some label transform for htmlLabels false 2024-08-19 20:21:42 +05:30
omkarht
e2f3041aa2 added new shape: Tagged Wave Edged Rectangle 2024-08-19 19:11:11 +05:30
saurabhg772244
9926ae4e74 updated taggedRect 2024-08-19 18:09:40 +05:30
saurabhg772244
58463b5e80 fixed half rounded rect 2024-08-19 17:30:49 +05:30
saurabhg772244
7b51327b24 updated halfRoundedRect 2024-08-19 17:08:08 +05:30
omkarht
06dd350aab added new Lined Wave Edged Rectangle shape 2024-08-19 16:29:08 +05:30
saurabhg772244
4f2085765d Updated waveEdge and wave rectangle 2024-08-19 14:47:49 +05:30
saurabhg772244
eceae9b64c Updated shapes 2024-08-19 10:54:33 +05:30
omkarht
98754b9fc6 updated bowTieRect shape 2024-08-16 19:37:15 +05:30
saurabhg772244
f813870e7d Updated flippedTriangle 2024-08-16 19:26:35 +05:30
saurabhg772244
763a0c0d83 Updated taggedRect 2024-08-16 18:57:56 +05:30
saurabhg772244
d30444dae7 Updated triangle and slopedRect 2024-08-16 16:47:49 +05:30
saurabhg772244
c983c0605e Updated half rounded rect 2024-08-16 15:49:00 +05:30
saurabhg772244
2fa03ea369 Updated shapes in test 2024-08-16 12:23:52 +05:30
NicolasNewman
d36522648f fix(arch): async/await fixes for drawText changes 2024-08-14 10:32:56 -05:00
NicolasNewman
1df90b4a05 build(arch): pnpm-lock update 2024-08-14 10:11:56 -05:00
omkarht
6c1ae90972 adjusted intersection points logic for Curved Trapezoid shape 2024-08-14 20:39:21 +05:30
NicolasNewman
8f970cddf9 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into 5367/architecture-diagram 2024-08-14 10:08:30 -05:00
omkarht
a17e7d92d9 adjusted intersection points for half rounded rectangle shape 2024-08-14 19:24:49 +05:30
saurabhg772244
b3a4e3f40e Added windowPane 2024-08-14 18:48:12 +05:30
omkarht
b7acf94b41 added new Multi Wave Edged Rectangle shape 2024-08-14 15:56:59 +05:30
saurabhg772244
9e5c3ec1b5 Add shape filledCircle 2024-08-14 15:27:02 +05:30
saurabhg772244
5550753193 fixed multi rect 2024-08-13 23:39:27 +05:30
saurabhg772244
394c6aea74 Fix shapes for multirect and taggerRect 2024-08-13 19:52:24 +05:30
saurabhg772244
3febd7dfdf add lightningBolt shape 2024-08-13 19:36:20 +05:30
Ashish Jain
ef895a3d8c Merge from develop 2024-08-13 15:49:43 +02:00
Ashish Jain
8f5f7fc2a8 Added new shape testing suite 2024-08-13 15:09:04 +02:00
Knut Sveidqvist
c673cf22bd Less picky syntax, fix for multiline strings 2024-08-13 13:20:58 +02:00
Knut Sveidqvist
4d401c127d Merge branches 'knsv/new-shapes' and 'knsv/new-shapes' of github.com:mermaid-js/mermaid into knsv/new-shapes 2024-08-13 13:16:47 +02:00
omkarht
3c119e4a52 added new Wave Edged Rectangle shape 2024-08-13 14:53:56 +05:30
omkarht
303a160359 added new Lined Cylinder shape 2024-08-13 12:07:50 +05:30
NicolasNewman
731b330e40 docs(er): added min version req to multi-line labels 2024-08-12 16:00:44 -05:00
NicolasNewman
261aea3089 feat(er): allow multi-line relationship labels 2024-08-12 15:51:03 -05:00
saurabhg772244
3cd5244949 multi rect text center 2024-08-12 19:50:53 +05:30
saurabhg772244
31b8707819 add test case for shapes 2024-08-12 19:31:56 +05:30
saurabhg772244
a0893b8e6c Added multi rect 2024-08-12 19:23:16 +05:30
Ashish Jain
e1c8eb8a72 merge develop and other linting fixes 2024-08-12 15:07:53 +02:00
Knut Sveidqvist
bc546ef562 Less picky syntax 2024-08-12 13:50:47 +02:00
saurabhg772244
251b94647b Added tagged rect 2024-08-12 15:51:32 +05:30
omkarht
4aeb2ae9a2 added new Hourglass shape 2024-08-12 14:00:06 +05:30
saurabhg772244
0f635ed344 Add shape flippedTriangle 2024-08-09 19:39:01 +05:30
omkarht
efe6affe64 added new Trapezoidal Pentagon shape 2024-08-09 19:29:47 +05:30
saurabhg772244
f140d1ab45 Add test case for tiltedCylinder 2024-08-09 18:57:25 +05:30
saurabhg772244
89e4de1dd0 added tilted cylinder 2024-08-09 18:35:32 +05:30
saurabhg772244
ac48f01e25 Updated crossed circle 2024-08-09 13:28:25 +05:30
omkarht
4c48b8cc54 added cypress test file for new flowchart shapes 2024-08-08 19:36:28 +05:30
omkarht
b807e330c8 added new Wave Rectangle shape 2024-08-08 18:25:15 +05:30
saurabhg772244
04b15e7ece added crossed circle 2024-08-07 20:06:18 +05:30
omkarht
575c39e8a5 feat: added new Divided Rectangle shape 2024-08-07 15:50:25 +05:30
omkarht
933f3f391c feat: added new Bowtie Rectangle shape 2024-08-02 17:15:43 +05:30
omkarht
cfb5b88ee6 feat: added new sloped-rectangle shape 2024-08-02 15:08:59 +05:30
omkarht
9cd44eb92c feat: added new curvedTrapezoid shape 2024-08-01 19:41:49 +05:30
omkarht
d0942d4897 feat: added half Rounded Rectangle Shape 2024-08-01 16:34:10 +05:30
omkarht
3d789a0675 fix: centrally align text in cylinder shape 2024-08-01 15:21:35 +05:30
Knut Sveidqvist
1d3f214109 Merge branch '5237-unified-layout-common-renderer' into knsv/new-shapes 2024-08-01 10:17:21 +02:00
omkarht
e51077c765 fix: added triangle shape 2024-07-31 15:19:11 +05:30
Ashish Jain
809fc1ce30 fix: added triangle placeholder 2024-07-26 11:14:54 +02:00
Ashish Jain
f176b71c7c fix: temp fix for shape with comma 2024-07-26 10:02:12 +02:00
NicolasNewman
880c4d4ed6 feat(arch): updated syntax & demos/docs to reflect changes 2024-07-23 15:31:11 -05:00
NicolasNewman
2ae2686e34 chore(arch): merged with develop 2024-07-22 11:17:52 -05:00
NicolasNewman
25609d69c4 chore(arch): changed syntax keyword from architecture -> architecture-beta 2024-07-22 09:34:36 -05:00
Knut Sveidqvist
4d8e519298 Adding new-shapes and picking up node data from node data statement 2024-07-22 10:59:17 +02:00
Knut Sveidqvist
958204e831 Using the shape data 2024-07-19 18:20:39 +02:00
Knut Sveidqvist
82c247bb11 Merge branch '5237-unified-layout-common-renderer' into knsv/new-shapes 2024-07-19 16:09:47 +02:00
Knut Sveidqvist
2a56b640c0 Merge from #5237 2024-07-19 14:07:29 +02:00
Knut Sveidqvist
eae67a9696 First take on JISON and parsing of the node shape data 2024-07-19 11:16:02 +02:00
Sidharth Vinod
33da2b4057 Merge branch 'develop' into 5367/architecture-diagram 2024-07-18 15:47:30 +05:30
autofix-ci[bot]
8fe2d7c2e6 [autofix.ci] apply automated fixes 2024-07-18 10:03:35 +00:00
Sidharth Vinod
e099e7d220 Merge branch 'develop' into pr/NicolasNewman/5452
* develop:
  [autofix.ci] apply automated fixes
  [autofix.ci] apply automated fixes
  docs: Test autofix.ci
  chore: Remove update step from lint.yml
  Add autofix.ci
  fix: double space in wrapped sequence diagram messages
  chore: update browsers list
  chore(deps): update eslint
  chore: move abs below return check
  fix: Handle negative numbers in `formatBytes`
  chore: Use single quotes
  fix: emphasis => em
  fix: Handle spaces after newline
  test: Change emphasis to em
  chore: Fix emphasis type
  feat: Use marked instead of mdast-util-from-markdown
  Add Madness to integrations-community.md
2024-07-18 15:29:14 +05:30
NicolasNewman
7c1cb236a6 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into 5367/architecture-diagram 2024-07-13 22:12:52 -05:00
NicolasNewman
d9b16953f0 refactor(arch): linting/doc strings for icon related code 2024-07-09 15:59:21 -05:00
NicolasNewman
78dfffa1a7 docs(arch): icon documentation 2024-07-09 15:51:03 -05:00
NicolasNewman
ce2f834683 fix(arch): fixed broken lockfile 2024-07-06 17:36:23 -05:00
NicolasNewman
4d6b92e5bf fix(arch): correctly utilize calculated style 2024-07-06 17:32:07 -05:00
NicolasNewman
1b128cae77 fix(arch): fixed error from eslint refactor 2024-07-06 16:46:49 -05:00
NicolasNewman
a94fe811dd docs(arch): included junction nodes in docs 2024-07-06 16:34:03 -05:00
NicolasNewman
bde35b23f7 chore(arch): merge with develop 2024-07-06 16:24:08 -05:00
NicolasNewman
3f039562b9 chore(arch): merge with develop 2024-05-22 10:08:12 -05:00
NicolasNewman
a4cf503071 chore(arch): fixed typos in demo 2024-05-22 09:26:54 -05:00
NicolasNewman
2315d3c90a test(arch): added test cases for architecture diagrams 2024-05-22 09:25:50 -05:00
NicolasNewman
e9ca618780 style(arch): arenamed icon files to match convention 2024-05-20 11:17:08 -05:00
NicolasNewman
7c9e0e51da feat(arch): added github, digital ocean icons 2024-05-20 11:15:09 -05:00
NicolasNewman
769d5660f5 feat(arch): added aws icons 2024-05-16 11:26:58 -05:00
NicolasNewman
b09dc5db67 feat(arch): implemented junction nodes 2024-05-10 10:10:19 -05:00
NicolasNewman
0049127bb7 chore(arch): synced with develop 2024-05-09 14:40:57 -05:00
NicolasNewman
5b6c95cea3 feat(arch): extended parser to control how edges pass through groups 2024-05-09 14:33:44 -05:00
NicolasNewman
48e6901936 style(arch): linting 2024-05-06 10:04:17 -05:00
NicolasNewman
734bde3877 feat(arch): implemented node labels 2024-05-06 09:59:33 -05:00
NicolasNewman
cabb7b65e9 fix(arch): Y axis labels rotated to opposite side 2024-04-29 10:05:36 -05:00
NicolasNewman
b21fc9fe22 feat(arch): added theme variables for dark and default 2024-04-22 10:49:36 -05:00
NicolasNewman
634b00b379 feat(arch): changed how groups are stored in the db 2024-04-22 10:49:06 -05:00
NicolasNewman
b28f9f8136 docs(arch): started writing diagram documentation 2024-04-22 10:48:01 -05:00
NicolasNewman
ac7891c14b feat(arch): improved handling of styles 2024-04-19 12:30:55 -05:00
NicolasNewman
2dfadca14c style(arch): disabled no-console for archDB, removed jison 2024-04-18 10:05:45 -05:00
NicolasNewman
84f1d82aac feat(arch): implemented group icons 2024-04-18 10:03:20 -05:00
NicolasNewman
1d27fac4d9 feat(arch): added cloud svg icon 2024-04-17 15:12:05 -05:00
NicolasNewman
a5d3164ea4 feat(arch): edge labels implemented 2024-04-17 12:27:53 -05:00
NicolasNewman
cb302a08b8 feat(arch): converted parser from jison to langium 2024-04-15 15:42:05 -05:00
NicolasNewman
497712a3fa feat(arch): exposed createIcon function 2024-04-11 12:22:34 -05:00
NicolasNewman
073175e5f7 style(arch): resolved es-lint errors 2024-04-11 12:21:44 -05:00
NicolasNewman
6bd1da219a refactor(arch): refactored code to be consistent with other diagrams 2024-04-07 17:27:01 -05:00
NicolasNewman
0a14f2cffc fix(arch): changed how cytoscape namespace extension is handled to prevent conflicts 2024-04-06 22:50:25 -05:00
NicolasNewman
dcb1b4871f merge(arch): : Merge branch 'develop' of https://github.com/mermaid-js/mermaid into 5367/architecture-diagram 2024-04-06 22:03:46 -05:00
NicolasNewman
baa6c9e4b9 test(arch): added edge arrow demo 2024-04-06 21:55:06 -05:00
NicolasNewman
251e808a29 build(arch): expose SVG library types 2024-04-06 21:51:35 -05:00
NicolasNewman
22c0090979 refactor(arch): reorganized code and added more documentation 2024-04-06 21:46:37 -05:00
NicolasNewman
aef991bc49 feat(arch): XY edges now have a 90deg bend 2024-04-06 21:12:30 -05:00
NicolasNewman
6d5791a63a feat(arch): arrows now rendered on diagram 2024-04-04 13:47:01 -05:00
NicolasNewman
2709c2d2e1 style(arch): prettier formatting & code cleanup 2024-04-04 09:58:58 -05:00
NicolasNewman
92d819ede5 feat(arch): disconnected graph handling for positioning 2024-04-03 15:32:43 -05:00
NicolasNewman
36f52be3bf feat(arch): improved positioning system to better handle edge cases 2024-04-03 13:45:41 -05:00
NicolasNewman
f47bbee24a feat(arch): added more demos 2024-03-31 13:54:06 -05:00
NicolasNewman
361e25ba34 fix(arch): fixed compound nodes overlapping 2024-03-31 13:53:34 -05:00
NicolasNewman
46a37a6eea feat(arch): added fallback icon 2024-03-31 13:52:23 -05:00
NicolasNewman
b911bd3e42 feat(arch): improved error handling 2024-03-31 13:51:40 -05:00
NicolasNewman
10682ef31f feat(arch): added demo 2024-03-27 09:31:06 -05:00
NicolasNewman
0ab7a3d8ec feat(arch): added 4 default icons, added config field for icons 2024-03-27 09:30:44 -05:00
NicolasNewman
a493e2fbb3 feat(arch): dynamic node sizing 2024-03-25 14:17:05 -05:00
NicolasNewman
5e214877a4 style(arch): prettier formatting 2024-03-19 13:57:37 -05:00
NicolasNewman
84bd20b04b feat(arch): improved group rendering 2024-03-17 15:24:17 -05:00
NicolasNewman
6c6ce28f7d feat(arch): implemented basic rendering for diagram 2024-03-13 09:25:20 -05:00
NicolasNewman
e01acec12b feat(arch): implemented icon registration 2024-03-13 09:24:04 -05:00
NicolasNewman
cc22e13e71 feat: added architecture DB & types 2024-03-11 15:14:21 -05:00
NicolasNewman
346ae22108 feat: registered architecture diagram 2024-03-11 15:13:05 -05:00
NicolasNewman
5a4d4972e2 feat: added architecture diagram parser 2024-03-11 13:41:43 -05:00
NicolasNewman
03bbfa0b94 build: added cytoscape-fcose 2024-03-11 13:37:47 -05:00
292 changed files with 24681 additions and 4597 deletions

View File

@@ -1,3 +1,9 @@
export interface PackageOptions {
name: string;
packageName: string;
file: string;
}
/**
* Shared common options for both ESBuild and Vite
*/
@@ -27,4 +33,4 @@ export const packageOptions = {
packageName: 'mermaid-layout-elk',
file: 'layouts.ts',
},
} as const;
} as const satisfies Record<string, PackageOptions>;

View File

@@ -19,12 +19,14 @@ const MERMAID_CONFIG_DIAGRAM_KEYS = [
'xyChart',
'requirement',
'mindmap',
'kanban',
'timeline',
'gitGraph',
'c4',
'sankey',
'block',
'packet',
'architecture',
] as const;
/**

View File

@@ -0,0 +1,5 @@
---
'mermaid': patch
---
fix: architecture diagrams no longer grow to extreme heights due to conflicting alignments

View File

@@ -0,0 +1,5 @@
---
'mermaid': patch
---
fix: Proper separation between strings and markdown strings

View File

@@ -26,6 +26,7 @@ concat
controlx
controly
CSSCLASS
curv
CYLINDEREND
CYLINDERSTART
DAGA
@@ -55,6 +56,7 @@ GENERICTYPE
getBoundarys
grammr
graphtype
halign
iife
interp
introdcued
@@ -66,6 +68,7 @@ Kaufmann
keyify
LABELPOS
LABELTYPE
layoutstop
lcov
LEFTOF
Lexa
@@ -138,6 +141,7 @@ tsdoc
typeof
typestr
unshift
urlsafe
verifymethod
VERIFYMTHD
WARN_DOCSDIR_DOESNT_MATCH

View File

@@ -28,6 +28,9 @@ dictionaryDefinitions:
- name: suggestions
words:
- none
- disp
- subproc
- tria
suggestWords:
- seperator:separator
- vertice:vertex

View File

@@ -24,11 +24,13 @@ Doctave
DokuWiki
dompurify
elkjs
fcose
fontawesome
Foswiki
Gitea
graphlib
Grav
icones
iconify
Inkdrop
jiti

View File

@@ -1,15 +1,18 @@
Adamiecki
arrowend
Bendpoints
bmatrix
braintree
catmull
compositTitleSize
curv
doublecircle
elems
gantt
gitgraph
gzipped
handDrawn
kanban
knsv
Knut
marginx
@@ -23,6 +26,7 @@ multigraph
nodesep
NOTEGROUP
Pinterest
procs
rankdir
ranksep
rect

View File

@@ -4,3 +4,4 @@ handDrawn
KOEPF
neato
newbranch
validify

View File

@@ -8,7 +8,10 @@ import { defaultOptions, getBuildConfig } from './util.js';
const shouldVisualize = process.argv.includes('--visualize');
const buildPackage = async (entryName: keyof typeof packageOptions) => {
const commonOptions: MermaidBuildOptions = { ...defaultOptions, entryName } as const;
const commonOptions: MermaidBuildOptions = {
...defaultOptions,
options: packageOptions[entryName],
} as const;
const buildConfigs: MermaidBuildOptions[] = [
// package.mjs
{ ...commonOptions },
@@ -40,7 +43,7 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => {
continue;
}
const fileName = Object.keys(metafile.outputs)
.find((file) => !file.includes('chunks') && file.endsWith('js'))
.find((file) => !file.includes('chunks') && file.endsWith('js'))!
.replace('dist/', '');
// Upload metafile into https://esbuild.github.io/analyze/
await writeFile(`stats/${fileName}.meta.json`, JSON.stringify(metafile));

View File

@@ -9,13 +9,18 @@ import { generateLangium } from '../.build/generateLangium.js';
import { defaultOptions, getBuildConfig } from './util.js';
const configs = Object.values(packageOptions).map(({ packageName }) =>
getBuildConfig({ ...defaultOptions, minify: false, core: false, entryName: packageName })
getBuildConfig({
...defaultOptions,
minify: false,
core: false,
options: packageOptions[packageName],
})
);
const mermaidIIFEConfig = getBuildConfig({
...defaultOptions,
minify: false,
core: false,
entryName: 'mermaid',
options: packageOptions.mermaid,
format: 'iife',
});
configs.push(mermaidIIFEConfig);

View File

@@ -3,7 +3,7 @@ import { fileURLToPath } from 'url';
import type { BuildOptions } from 'esbuild';
import { readFileSync } from 'fs';
import jsonSchemaPlugin from './jsonSchemaPlugin.js';
import { packageOptions } from '../.build/common.js';
import type { PackageOptions } from '../.build/common.js';
import { jisonPlugin } from './jisonPlugin.js';
const __dirname = fileURLToPath(new URL('.', import.meta.url));
@@ -13,10 +13,10 @@ export interface MermaidBuildOptions extends BuildOptions {
core: boolean;
metafile: boolean;
format: 'esm' | 'iife';
entryName: keyof typeof packageOptions;
options: PackageOptions;
}
export const defaultOptions: Omit<MermaidBuildOptions, 'entryName'> = {
export const defaultOptions: Omit<MermaidBuildOptions, 'entryName' | 'options'> = {
minify: false,
metafile: false,
core: false,
@@ -52,9 +52,14 @@ const getFileName = (fileName: string, { core, format, minify }: MermaidBuildOpt
};
export const getBuildConfig = (options: MermaidBuildOptions): BuildOptions => {
const { core, entryName, metafile, format, minify } = options;
const {
core,
metafile,
format,
minify,
options: { name, file, packageName },
} = options;
const external: string[] = ['require', 'fs', 'path'];
const { name, file, packageName } = packageOptions[entryName];
const outFileName = getFileName(name, options);
const output: BuildOptions = buildOptions({
absWorkingDir: resolve(__dirname, `../packages/${packageName}`),

5
.github/lychee.toml vendored
View File

@@ -44,7 +44,10 @@ exclude = [
"https://chromewebstore.google.com",
# Drupal 403
"https://(www.)?drupal.org"
"https://(www.)?drupal.org",
# Swimm returns 404, eventhough the link is valid
"https://docs.swimm.io"
]
# Exclude all private IPs from checking.

View File

@@ -7,17 +7,19 @@ on:
permissions:
contents: read
concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
autofix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
# uses version from "packageManager" field in package.json
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
cache: pnpm
node-version-file: '.node-version'
@@ -40,4 +42,4 @@ jobs:
working-directory: ./packages/mermaid
run: pnpm run docs:build
- uses: autofix-ci/action@ff86a557419858bb967097bfc916833f5647fa8c
- uses: autofix-ci/action@ff86a557419858bb967097bfc916833f5647fa8c # main

View File

@@ -8,6 +8,8 @@ on:
pull_request:
merge_group:
concurrency: ${{ github.workflow }}-${{ github.ref }}
permissions:
contents: read
@@ -16,12 +18,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
cache: pnpm
node-version-file: '.node-version'

View File

@@ -1,49 +0,0 @@
name: Build
on:
push: {}
merge_group:
pull_request:
types:
- opened
- synchronize
- ready_for_review
permissions:
contents: read
jobs:
build-mermaid:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
# uses version from "packageManager" field in package.json
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: '.node-version'
- name: Install Packages
run: |
pnpm install --frozen-lockfile
env:
CYPRESS_CACHE_FOLDER: .cache/Cypress
- name: Run Build
run: pnpm run build
- name: Upload Mermaid Build as Artifact
uses: actions/upload-artifact@v4
with:
name: mermaid-build
path: packages/mermaid/dist
- name: Upload Mermaid Mindmap Build as Artifact
uses: actions/upload-artifact@v4
with:
name: mermaid-mindmap-build
path: packages/mermaid-mindmap/dist

View File

@@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Check for difference in README.md and docs/README.md
run: |

View File

@@ -1,26 +0,0 @@
on:
push:
merge_group:
pull_request:
types:
- opened
- synchronize
- ready_for_review
name: Static analysis on Test files
jobs:
check-tests:
runs-on: ubuntu-latest
name: check tests
if: github.repository_owner == 'mermaid-js'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: testomatio/check-tests@stable
with:
framework: cypress
tests: './cypress/e2e/**/**.spec.js'
token: ${{ secrets.GITHUB_TOKEN }}
has-tests-label: true

View File

@@ -11,6 +11,9 @@ on:
- synchronize
- ready_for_review
permissions: # added using https://github.com/step-security/secure-repo
contents: read
jobs:
analyze:
name: Analyze
@@ -29,11 +32,11 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12
with:
config-file: ./.github/codeql/codeql-config.yml
languages: ${{ matrix.language }}
@@ -45,7 +48,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3
uses: github/codeql-action/autobuild@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -59,4 +62,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12

View File

@@ -15,6 +15,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v4
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: 'Dependency Review'
uses: actions/dependency-review-action@v4
uses: actions/dependency-review-action@5a2ce3f5b92ee19cbb1541a4984c76d921601d7c # v4.3.4

View File

@@ -11,6 +11,8 @@ on:
default: master
description: 'Parent branch to use for PRs'
concurrency: ${{ github.workflow }}-${{ github.ref }}
permissions:
contents: read
@@ -30,13 +32,13 @@ jobs:
run: |
echo "::error,title=Not using Applitools::APPLITOOLS_API_KEY is empty, disabling Applitools for this run."
- uses: actions/checkout@v4
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
# uses version from "packageManager" field in package.json
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
node-version-file: '.node-version'
@@ -52,7 +54,7 @@ jobs:
APPLITOOLS_SERVER_URL: 'https://eyesapi.applitools.com'
- name: Cypress run
uses: cypress-io/github-action@v4
uses: cypress-io/github-action@d79d2d530a66e641eb4a5f227e13bc985c60b964 # v4.2.2
id: cypress
with:
start: pnpm run dev

53
.github/workflows/e2e-timings.yml vendored Normal file
View File

@@ -0,0 +1,53 @@
name: E2E - Generate Timings
on:
# run this workflow every night at 3am
schedule:
- cron: '28 3 * * *'
# or when the user triggers it from GitHub Actions page
workflow_dispatch:
concurrency: ${{ github.workflow }}-${{ github.ref }}
permissions:
contents: write
jobs:
timings:
runs-on: ubuntu-latest
container:
image: cypress/browsers:node-20.11.0-chrome-121.0.6167.85-1-ff-120.0-edge-121.0.2277.83-1
options: --user 1001
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- name: Setup Node.js
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
node-version-file: '.node-version'
- name: Install dependencies
uses: cypress-io/github-action@0da3c06ed8217b912deea9d8ee69630baed1737e # v6.7.6
with:
runTests: false
- name: Cypress run
uses: cypress-io/github-action@0da3c06ed8217b912deea9d8ee69630baed1737e # v6.7.6
id: cypress
with:
install: false
start: pnpm run dev:coverage
wait-on: 'http://localhost:9000'
browser: chrome
publish-summary: false
env:
VITEST_COVERAGE: true
CYPRESS_COMMIT: ${{ github.sha }}
SPLIT: 1
SPLIT_INDEX: 0
SPLIT_FILE: 'cypress/timings.json'
- name: Commit changes
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
with:
add: 'cypress/timings.json'
author_name: 'github-actions[bot]'
author_email: '41898282+github-actions[bot]@users.noreply.github.com'
message: 'chore: update E2E timings'

View File

@@ -2,11 +2,15 @@ name: E2E
on:
push:
branches-ignore:
- 'gh-readonly-queue/**'
branches:
- develop
- master
- release/**
pull_request:
merge_group:
concurrency: ${{ github.workflow }}-${{ github.ref }}
permissions:
contents: read
@@ -24,7 +28,6 @@ env:
) ||
github.event.before
}}
shouldRunParallel: ${{ secrets.CYPRESS_RECORD_KEY != '' && !(github.event_name == 'push' && github.ref == 'refs/heads/develop') }}
jobs:
cache:
runs-on: ubuntu-latest
@@ -32,15 +35,15 @@ jobs:
image: cypress/browsers:node-20.11.0-chrome-121.0.6167.85-1-ff-120.0-edge-121.0.2277.83-1
options: --user 1001
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
node-version-file: '.node-version'
- name: Cache snapshots
id: cache-snapshot
uses: actions/cache@v4
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
save-always: true
path: ./cypress/snapshots
@@ -49,13 +52,13 @@ jobs:
# If a snapshot for a given Hash is not found, we checkout that commit, run the tests and cache the snapshots.
- name: Switch to base branch
if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true' }}
uses: actions/checkout@v4
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
ref: ${{ env.targetHash }}
- name: Install dependencies
if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true' }}
uses: cypress-io/github-action@v6
uses: cypress-io/github-action@0da3c06ed8217b912deea9d8ee69630baed1737e # v6.7.6
with:
# just perform install
runTests: false
@@ -76,28 +79,28 @@ jobs:
strategy:
fail-fast: false
matrix:
containers: [1, 2, 3, 4]
containers: [1, 2, 3, 4, 5]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
# uses version from "packageManager" field in package.json
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
node-version-file: '.node-version'
# These cached snapshots are downloaded, providing the reference snapshots.
- name: Cache snapshots
id: cache-snapshot
uses: actions/cache/restore@v4
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ./cypress/snapshots
key: ${{ runner.os }}-snapshots-${{ env.targetHash }}
- name: Install dependencies
uses: cypress-io/github-action@v6
uses: cypress-io/github-action@0da3c06ed8217b912deea9d8ee69630baed1737e # v6.7.6
with:
runTests: false
@@ -113,11 +116,8 @@ jobs:
# Install NPM dependencies, cache them correctly
# and run all Cypress tests
- name: Cypress run
uses: cypress-io/github-action@v6
uses: cypress-io/github-action@0da3c06ed8217b912deea9d8ee69630baed1737e # v6.7.6
id: cypress
# If CYPRESS_RECORD_KEY is set, run in parallel on all containers
# Otherwise (e.g. if running from fork), we run on a single container only
if: ${{ env.shouldRunParallel == 'true' || ( matrix.containers == 1 ) }}
with:
install: false
start: pnpm run dev:coverage
@@ -125,19 +125,21 @@ jobs:
browser: chrome
# Disable recording if we don't have an API key
# e.g. if this action was run from a fork
record: ${{ env.shouldRunParallel == 'true' }}
parallel: ${{ env.shouldRunParallel == 'true' }}
record: ${{ secrets.CYPRESS_RECORD_KEY != '' }}
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
VITEST_COVERAGE: true
CYPRESS_COMMIT: ${{ github.sha }}
ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }}
ARGOS_PARALLEL: ${{ env.shouldRunParallel == 'true' }}
ARGOS_PARALLEL_TOTAL: 4
ARGOS_PARALLEL: true
ARGOS_PARALLEL_TOTAL: ${{ strategy.job-total }}
ARGOS_PARALLEL_INDEX: ${{ matrix.containers }}
SPLIT: ${{ strategy.job-total }}
SPLIT_INDEX: ${{ strategy.job-index }}
SPLIT_FILE: 'cypress/timings.json'
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
# Run step only pushes to develop and pull_requests
if: ${{ steps.cypress.conclusion == 'success' && (github.event_name == 'pull_request' || github.ref == 'refs/heads/develop')}}
with:

View File

@@ -4,11 +4,17 @@ on:
issues:
types: [opened]
permissions: # added using https://github.com/step-security/secure-repo
contents: read
jobs:
triage:
permissions:
issues: write # for andymckay/labeler to label issues
pull-requests: write # for andymckay/labeler to label PRs
runs-on: ubuntu-latest
steps:
- uses: andymckay/labeler@1.0.4
- uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90 # 1.0.4
with:
repo-token: '${{ secrets.GITHUB_TOKEN }}'
add-labels: 'Status: Triage'

View File

@@ -19,6 +19,9 @@ on:
# * is a special character in YAML so you have to quote this string
- cron: '30 8 * * *'
permissions: # added using https://github.com/step-security/secure-repo
contents: read
jobs:
link-checker:
runs-on: ubuntu-latest
@@ -26,17 +29,17 @@ jobs:
# lychee only uses the GITHUB_TOKEN to avoid rate-limiting
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Restore lychee cache
uses: actions/cache@v4
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
restore-keys: cache-lychee-
- name: Link Checker
uses: lycheeverse/lychee-action@v1.9.3
uses: lycheeverse/lychee-action@c053181aa0c3d17606addfe97a9075a32723548a # v1.9.3
with:
args: >-
--config .github/lychee.toml

View File

@@ -4,26 +4,32 @@ on:
push:
merge_group:
pull_request:
types:
- opened
- synchronize
- ready_for_review
workflow_dispatch:
concurrency: ${{ github.workflow }}-${{ github.ref }}
permissions:
contents: write
jobs:
docker-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: hadolint/hadolint-action@54c9adbab1582c2ef04b2016b760714a4bfde3cf # v3.1.0
with:
verbose: true
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
# uses version from "packageManager" field in package.json
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
cache: pnpm
node-version-file: '.node-version'
@@ -82,3 +88,10 @@ jobs:
working-directory: ./packages/mermaid
continue-on-error: ${{ github.event_name == 'push' }}
run: pnpm run docs:verify
- uses: testomatio/check-tests@0ea638fcec1820cf2e7b9854fdbdd04128a55bd4 # stable
with:
framework: cypress
tests: './cypress/e2e/**/**.spec.js'
token: ${{ secrets.GITHUB_TOKEN }}
has-tests-label: true

View File

@@ -22,7 +22,7 @@ jobs:
pull-requests: write # write permission is required to label PRs
steps:
- name: Label PR
uses: release-drafter/release-drafter@v6
uses: release-drafter/release-drafter@3f0f87098bd6b5c5b9a36d49c41d998ea58f9348 # v6.0.0
with:
config-name: pr-labeler.yml
disable-autolabeler: false

View File

@@ -23,12 +23,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
cache: pnpm
node-version-file: '.node-version'
@@ -37,13 +37,13 @@ jobs:
run: pnpm install --frozen-lockfile
- name: Setup Pages
uses: actions/configure-pages@v4
uses: actions/configure-pages@1f0c5cde4bc74cd7e1254d0cb4de8d49e9068c7d # v4.0.0
- name: Run Build
run: pnpm --filter mermaid run docs:build:vitepress
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
with:
path: packages/mermaid/src/vitepress/.vitepress/dist
@@ -56,4 +56,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5

View File

@@ -9,14 +9,14 @@ jobs:
publish-preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
cache: pnpm
node-version-file: '.node-version'
@@ -28,7 +28,7 @@ jobs:
CYPRESS_CACHE_FOLDER: .cache/Cypress
- name: Install Json
run: npm i json --global
run: npm i json@11.0.0 --global
- name: Publish
working-directory: ./packages/mermaid

43
.github/workflows/release-preview.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: Preview release
on:
pull_request:
branches: [develop]
types: [opened, synchronize, labeled, ready_for_review]
concurrency:
group: ${{ github.workflow }}-${{ github.event.number }}
cancel-in-progress: true
permissions:
contents: read
actions: write
jobs:
preview:
if: ${{ github.repository_owner == 'mermaid-js' }}
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
issues: write
pull-requests: write
name: Publish preview release
timeout-minutes: 5
steps:
- name: Checkout Repo
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- name: Setup Node.js
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
cache: pnpm
node-version-file: '.node-version'
- name: Install Packages
run: pnpm install --frozen-lockfile
- name: Publish packages
run: pnpx pkg-pr-new publish --pnpm './packages/*'

View File

@@ -1,47 +0,0 @@
name: Publish release
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: fregante/setup-git-user@v2
- uses: pnpm/action-setup@v4
# uses version from "packageManager" field in package.json
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: '.node-version'
- name: Install Packages
run: |
pnpm install --frozen-lockfile
npm i json --global
env:
CYPRESS_CACHE_FOLDER: .cache/Cypress
- name: Prepare release
run: |
VERSION=${GITHUB_REF:10}
echo "Preparing release $VERSION"
git checkout -t origin/release/$VERSION
npm version --no-git-tag-version --allow-same-version $VERSION
git add package.json
git commit -nm "Bump version $VERSION"
git checkout -t origin/master
git merge -m "Release $VERSION" --no-ff release/$VERSION
git push --no-verify
- name: Publish
run: |
npm set //registry.npmjs.org/:_authToken $NPM_TOKEN
npm publish
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@@ -7,18 +7,26 @@ on:
concurrency: ${{ github.workflow }}-${{ github.ref }}
permissions: # added using https://github.com/step-security/secure-repo
contents: read
jobs:
release:
if: github.repository == 'mermaid-js/mermaid'
permissions:
contents: write # to create release (changesets/action)
id-token: write # OpenID Connect token needed for provenance
pull-requests: write # to create pull request (changesets/action)
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v3
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
cache: pnpm
node-version-file: '.node-version'
@@ -28,10 +36,11 @@ jobs:
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
uses: changesets/action@3de3850952bec538fde60aac71731376e57b9b57 # v1.4.8
with:
version: pnpm changeset:version
publish: pnpm changeset:publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true

37
.github/workflows/scorecard.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: Scorecard supply-chain security
on:
branch_protection_rule:
push:
branches:
- develop
schedule:
- cron: 29 15 * * 0
permissions: read-all
jobs:
analysis:
name: Scorecard analysis
permissions:
id-token: write
security-events: write
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
persist-credentials: false
- name: Run analysis
uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3
with:
results_file: results.sarif
results_format: sarif
publish_results: true
- name: Upload artifact
uses: actions/upload-artifact@97a0fba1372883ab732affbe8f94b823f91727db # v3.pre.node20
with:
name: SARIF file
path: results.sarif
retention-days: 5
- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12
with:
sarif_file: results.sarif

View File

@@ -9,13 +9,13 @@ jobs:
unit-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
# uses version from "packageManager" field in package.json
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
cache: pnpm
node-version-file: '.node-version'
@@ -38,8 +38,12 @@ jobs:
run: |
pnpm exec vitest run ./packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts --coverage
- name: Verify out-of-tree build with TypeScript
run: |
pnpm test:check:tsc
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
# Run step only pushes to develop and pull_requests
if: ${{ github.event_name == 'pull_request' || github.ref == 'refs/heads/develop' }}
with:

View File

@@ -8,6 +8,6 @@ jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: Dunning-Kruger/unlock-issues@v1
- uses: Dunning-Kruger/unlock-issues@b06b7f7e5c3f2eaa1c6d5d89f40930e4d6d9699e # v1
with:
repo-token: '${{ secrets.GITHUB_TOKEN }}'

View File

@@ -8,18 +8,18 @@ jobs:
update-browser-list:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- run: npx update-browserslist-db@latest
- name: Commit changes
uses: EndBug/add-and-commit@v9
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
with:
author_name: ${{ github.actor }}
author_email: ${{ github.actor }}@users.noreply.github.com
message: 'chore: update browsers list'
push: false
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
with:
branch: update-browserslist
title: Update Browserslist

2
.hadolint.yaml Normal file
View File

@@ -0,0 +1,2 @@
ignored:
- DL3002 # TODO: Last USER should not be root

View File

@@ -1,4 +1,2 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
#!/usr/bin/env sh
NODE_OPTIONS="--max_old_space_size=8192" pnpm run pre-commit

View File

@@ -1,2 +1,13 @@
FROM node:20.12.2-alpine3.19 AS base
RUN wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.shrc" SHELL="$(which sh)" sh -
FROM node:20.12.2-alpine3.19@sha256:7a91aa397f2e2dfbfcdad2e2d72599f374e0b0172be1d86eeb73f1d33f36a4b2
USER 0:0
RUN corepack enable \
&& corepack enable pnpm
RUN apk add --no-cache git~=2.43.4 \
&& git config --add --system safe.directory /mermaid
ENV NODE_OPTIONS="--max_old_space_size=8192"
EXPOSE 9000 3333

View File

@@ -35,7 +35,8 @@ Try Live Editor previews of future releases: <a href="https://develop.git.mermai
[![NPM Downloads](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid)
[![Join our Discord!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=discord&label=discord)](https://discord.gg/AgrbSrBer3)
[![Twitter Follow](https://img.shields.io/badge/Social-mermaidjs__-blue?style=social&logo=X)](https://twitter.com/mermaidjs_)
[![Covered by Argos Visual Testing](https://argos-ci.com/badge.svg)](https://argos-ci.com)
[![Covered by Argos Visual Testing](https://argos-ci.com/badge.svg)](https://argos-ci.com?utm_source=mermaid&utm_campaign=oss)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/mermaid-js/mermaid/badge)](https://securityscorecards.dev/viewer/?uri=github.com/mermaid-js/mermaid)
<img src="./img/header.png" alt="" />
@@ -82,6 +83,10 @@ You can also use Mermaid within [GitHub](https://github.blog/2022-02-14-include-
For a more detailed introduction to Mermaid and some of its more basic uses, look to the [Beginner's Guide](https://mermaid.js.org/intro/getting-started.html), [Usage](https://mermaid.js.org/config/usage.html) and [Tutorials](https://mermaid.js.org/ecosystem/tutorials.html).
Our PR Visual Regression Testing is powered by [Argos](https://argos-ci.com/?utm_source=mermaid&utm_campaign=oss) with their generous Open Source plan. It makes the process of reviewing PRs with visual changes a breeze.
[![Covered by Argos Visual Testing](https://argos-ci.com/badge-large.svg)](https://argos-ci.com?utm_source=mermaid&utm_campaign=oss)
In our release process we rely heavily on visual regression tests using [applitools](https://applitools.com/). Applitools is a great service which has been easy to use and integrate with our tests.
<a href="https://applitools.com/">

View File

@@ -1,8 +1,9 @@
import { defineConfig } from 'cypress';
import { addMatchImageSnapshotPlugin } from 'cypress-image-snapshot/plugin';
import coverage from '@cypress/code-coverage/task';
import eyesPlugin from '@applitools/eyes-cypress';
import { registerArgosTask } from '@argos-ci/cypress/task';
import coverage from '@cypress/code-coverage/task';
import { defineConfig } from 'cypress';
import { addMatchImageSnapshotPlugin } from 'cypress-image-snapshot/plugin';
import cypressSplit from 'cypress-split';
export default eyesPlugin(
defineConfig({
@@ -13,6 +14,7 @@ export default eyesPlugin(
specPattern: 'cypress/integration/**/*.{js,ts}',
setupNodeEvents(on, config) {
coverage(on, config);
cypressSplit(on, config);
on('before:browser:launch', (browser, launchOptions) => {
if (browser.name === 'chrome' && browser.isHeadless) {
launchOptions.args.push('--window-size=1440,1024', '--force-device-scale-factor=1');

View File

@@ -29,6 +29,7 @@ export const mermaidUrl = (
options: CypressMermaidConfig,
api: boolean
): string => {
options.handDrawnSeed = 1;
const codeObject: CodeObject = {
code: graphStr,
mermaid: options,
@@ -73,7 +74,7 @@ export const imgSnapshotTest = (
export const urlSnapshotTest = (
url: string,
options: CypressMermaidConfig,
options: CypressMermaidConfig = {},
_api = false,
validation?: any
): void => {

View File

@@ -0,0 +1,233 @@
import { imgSnapshotTest, urlSnapshotTest } from '../../helpers/util.ts';
describe.skip('architecture diagram', () => {
it('should render a simple architecture diagram with groups', () => {
imgSnapshotTest(
`architecture-beta
group api(cloud)[API]
service db(database)[Database] in api
service disk1(disk)[Storage] in api
service disk2(disk)[Storage] in api
service server(server)[Server] in api
service gateway(internet)[Gateway]
db L--R server
disk1 T--B server
disk2 T--B db
server T--B gateway
`
);
});
it('should render an architecture diagram with groups within groups', () => {
imgSnapshotTest(
`architecture-beta
group api[API]
group public[Public API] in api
group private[Private API] in api
service serv1(server)[Server] in public
service serv2(server)[Server] in private
service db(database)[Database] in private
service gateway(internet)[Gateway] in api
serv1 B--T serv2
serv2 L--R db
serv1 L--R gateway
`
);
});
it('should render an architecture diagram with the fallback icon', () => {
imgSnapshotTest(
`architecture-beta
service unknown(iconnamedoesntexist)[Unknown Icon]
`
);
});
it('should render an architecture diagram with split directioning', () => {
imgSnapshotTest(
`architecture-beta
service db(database)[Database]
service s3(disk)[Storage]
service serv1(server)[Server 1]
service serv2(server)[Server 2]
service disk(disk)[Disk]
db L--R s3
serv1 L--T s3
serv2 L--B s3
serv1 T--B disk
`
);
});
it('should render an architecture diagram with directional arrows', () => {
imgSnapshotTest(
`architecture-beta
service servC(server)[Server 1]
service servL(server)[Server 2]
service servR(server)[Server 3]
service servT(server)[Server 4]
service servB(server)[Server 5]
servC (L--R) servL
servC (R--L) servR
servC (T--B) servT
servC (B--T) servB
servL (T--L) servT
servL (B--L) servB
servR (T--R) servT
servR (B--R) servB
`
);
});
it('should render an architecture diagram with group edges', () => {
imgSnapshotTest(
`architecture-beta
group left_group(cloud)[Left]
group right_group(cloud)[Right]
group top_group(cloud)[Top]
group bottom_group(cloud)[Bottom]
group center_group(cloud)[Center]
service left_disk(disk)[Disk] in left_group
service right_disk(disk)[Disk] in right_group
service top_disk(disk)[Disk] in top_group
service bottom_disk(disk)[Disk] in bottom_group
service center_disk(disk)[Disk] in center_group
left_disk{group} (R--L) center_disk{group}
right_disk{group} (L--R) center_disk{group}
top_disk{group} (B--T) center_disk{group}
bottom_disk{group} (T--B) center_disk{group}
`
);
});
it('should render an architecture diagram with edge labels', () => {
imgSnapshotTest(
`architecture-beta
service servC(server)[Server 1]
service servL(server)[Server 2]
service servR(server)[Server 3]
service servT(server)[Server 4]
service servB(server)[Server 5]
servC L-[Label]-R servL
servC R-[Label]-L servR
servC T-[Label]-B servT
servC B-[Label]-T servB
servL T-[Label]-L servT
servL B-[Label]-L servB
servR T-[Label]-R servT
servR B-[Label]-R servB
`
);
});
it('should render an architecture diagram with simple junction edges', () => {
imgSnapshotTest(
`architecture-beta
service left_disk(disk)[Disk]
service top_disk(disk)[Disk]
service bottom_disk(disk)[Disk]
service top_gateway(internet)[Gateway]
service bottom_gateway(internet)[Gateway]
junction juncC
junction juncR
left_disk R--L juncC
top_disk B--T juncC
bottom_disk T--B juncC
juncC R--L juncR
top_gateway B--T juncR
bottom_gateway T--B juncR
`
);
});
it('should render an architecture diagram with complex junction edges', () => {
imgSnapshotTest(
`architecture-beta
group left
group right
service left_disk(disk)[Disk] in left
service top_disk(disk)[Disk] in left
service bottom_disk(disk)[Disk] in left
service top_gateway(internet)[Gateway] in right
service bottom_gateway(internet)[Gateway] in right
junction juncC in left
junction juncR in right
left_disk R--L juncC
top_disk B--T juncC
bottom_disk T--B juncC
top_gateway (B--T juncR
bottom_gateway (T--B juncR
juncC{group} R--L) juncR{group}
`
);
});
it('should render an architecture diagram with a resonable height', () => {
imgSnapshotTest(
`architecture-beta
group federated(cloud)[Federated Environment]
service server1(server)[System] in federated
service edge(server)[Edge Device] in federated
server1:R -- L:edge
group on_prem(cloud)[Hub]
service firewall(server)[Firewall Device] in on_prem
service server(server)[Server] in on_prem
firewall:R -- L:server
service db1(database)[db1] in on_prem
service db2(database)[db2] in on_prem
service db3(database)[db3] in on_prem
service db4(database)[db4] in on_prem
service db5(database)[db5] in on_prem
service db6(database)[db6] in on_prem
junction mid in on_prem
server:B -- T:mid
junction 1Leftofmid in on_prem
1Leftofmid:R -- L:mid
1Leftofmid:B -- T:db1
junction 2Leftofmid in on_prem
2Leftofmid:R -- L:1Leftofmid
2Leftofmid:B -- T:db2
junction 3Leftofmid in on_prem
3Leftofmid:R -- L:2Leftofmid
3Leftofmid:B -- T:db3
junction 1RightOfMid in on_prem
mid:R -- L:1RightOfMid
1RightOfMid:B -- T:db4
junction 2RightOfMid in on_prem
1RightOfMid:R -- L:2RightOfMid
2RightOfMid:B -- T:db5
junction 3RightOfMid in on_prem
2RightOfMid:R -- L:3RightOfMid
3RightOfMid:B -- T:db6
edge:R -- L:firewall
`
);
});
});
// Skipped as the layout is not deterministic, and causes issues in E2E tests.
describe.skip('architecture - external', () => {
it('should allow adding external icons', () => {
urlSnapshotTest('http://localhost:9000/architecture-external.html');
});
});

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -581,4 +581,63 @@ class C13["With Città foreign language"]
{ logLevel: 1, flowchart: { htmlLabels: false } }
);
});
it('renders a class diagram with a generic class in a namespace', () => {
const diagramDefinition = `
classDiagram-v2
namespace Company.Project.Module {
class GenericClass~T~ {
+addItem(item: T)
+getItem() T
}
}
`;
imgSnapshotTest(diagramDefinition);
});
it('renders a class diagram with nested namespaces and relationships', () => {
const diagramDefinition = `
classDiagram-v2
namespace Company.Project.Module.SubModule {
class Report {
+generatePDF(data: List)
+generateCSV(data: List)
}
}
namespace Company.Project.Module {
class Admin {
+generateReport()
}
}
Admin --> Report : generates
`;
imgSnapshotTest(diagramDefinition);
});
it('renders a class diagram with multiple classes and relationships in a namespace', () => {
const diagramDefinition = `
classDiagram-v2
namespace Company.Project.Module {
class User {
+login(username: String, password: String)
+logout()
}
class Admin {
+addUser(user: User)
+removeUser(user: User)
+generateReport()
}
class Report {
+generatePDF(reportData: List)
+generateCSV(reportData: List)
}
}
Admin --> User : manages
Admin --> Report : generates
`;
imgSnapshotTest(diagramDefinition);
});
});

File diff suppressed because it is too large Load Diff

View File

@@ -321,4 +321,37 @@ ORDER ||--|{ LINE-ITEM : contains
{ logLevel: 1 }
);
});
it('should render relationship labels with line breaks', () => {
imgSnapshotTest(
`
erDiagram
p[Person] {
string firstName
string lastName
}
a["Customer Account"] {
string email
}
b["Customer Account Secondary"] {
string email
}
c["Customer Account Tertiary"] {
string email
}
d["Customer Account Nth"] {
string email
}
p ||--o| a : "has<br />one"
p ||--o| b : "has<br />one<br />two"
p ||--o| c : "has<br />one<br/>two<br />three"
p ||--o| d : "has<br />one<br />two<br/>three<br />...<br/>Nth"
`,
{ logLevel: 1 }
);
});
});

View File

@@ -1,6 +1,6 @@
import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts';
describe.skip('Flowchart ELK', () => {
describe('Flowchart ELK', () => {
it('1-elk: should render a simple flowchart', () => {
imgSnapshotTest(
`flowchart-elk TD
@@ -857,6 +857,196 @@ flowchart LR
D --> E
A["A"]
`,
{ flowchart: { titleTopMargin: 0 } }
);
});
it('6080: should handle diamond shape intersections', () => {
imgSnapshotTest(
`---
config:
layout: elk
---
flowchart LR
subgraph s1["Untitled subgraph"]
n1["Evaluate"]
n2["Option 1"]
n3["Option 2"]
n4["fa:fa-car Option 3"]
end
subgraph s2["Untitled subgraph"]
n5["Evaluate"]
n6["Option 1"]
n7["Option 2"]
n8["fa:fa-car Option 3"]
end
A["Start"] -- Some text --> B("Continue")
B --> C{"Evaluate"}
C -- One --> D["Option 1"]
C -- Two --> E["Option 2"]
C -- Three --> F["fa:fa-car Option 3"]
n1 -- One --> n2
n1 -- Two --> n3
n1 -- Three --> n4
n5 -- One --> n6
n5 -- Two --> n7
n5 -- Three --> n8
n1@{ shape: diam}
n2@{ shape: rect}
n3@{ shape: rect}
n4@{ shape: rect}
n5@{ shape: diam}
n6@{ shape: rect}
n7@{ shape: rect}
n8@{ shape: rect}
`,
{ flowchart: { titleTopMargin: 0 } }
);
});
it('6088-1: should handle diamond shape intersections', () => {
imgSnapshotTest(
`---
config:
layout: elk
---
flowchart LR
subgraph S2
subgraph s1["APA"]
D{"Use the editor"}
end
D -- Mermaid js --> I{"fa:fa-code Text"}
D --> I
D --> I
end
`,
{ flowchart: { titleTopMargin: 0 } }
);
});
it('6088-2: should handle diamond shape intersections', () => {
imgSnapshotTest(
`---
config:
layout: elk
---
flowchart LR
a
subgraph s0["APA"]
subgraph s8["APA"]
subgraph s1["APA"]
D{"X"}
E[Q]
end
subgraph s3["BAPA"]
F[Q]
I
end
D --> I
D --> I
D --> I
I{"X"}
end
end
`,
{ flowchart: { titleTopMargin: 0 } }
);
});
it('6088-3: should handle diamond shape intersections', () => {
imgSnapshotTest(
`---
config:
layout: elk
---
flowchart LR
a
D{"Use the editor"}
D -- Mermaid js --> I{"fa:fa-code Text"}
D-->I
D-->I
`,
{ flowchart: { titleTopMargin: 0 } }
);
});
it('6088-4: should handle diamond shape intersections', () => {
imgSnapshotTest(
`---
config:
layout: elk
---
flowchart LR
subgraph s1["Untitled subgraph"]
n1["Evaluate"]
n2["Option 1"]
n3["Option 2"]
n4["fa:fa-car Option 3"]
end
subgraph s2["Untitled subgraph"]
n5["Evaluate"]
n6["Option 1"]
n7["Option 2"]
n8["fa:fa-car Option 3"]
end
A["Start"] -- Some text --> B("Continue")
B --> C{"Evaluate"}
C -- One --> D["Option 1"]
C -- Two --> E["Option 2"]
C -- Three --> F["fa:fa-car Option 3"]
n1 -- One --> n2
n1 -- Two --> n3
n1 -- Three --> n4
n5 -- One --> n6
n5 -- Two --> n7
n5 -- Three --> n8
n1@{ shape: diam}
n2@{ shape: rect}
n3@{ shape: rect}
n4@{ shape: rect}
n5@{ shape: diam}
n6@{ shape: rect}
n7@{ shape: rect}
n8@{ shape: rect}
`,
{ flowchart: { titleTopMargin: 0 } }
);
});
it('6088-5: should handle diamond shape intersections', () => {
imgSnapshotTest(
`---
config:
layout: elk
---
flowchart LR
A{A} --> B & C
`,
{ flowchart: { titleTopMargin: 0 } }
);
});
it('6088-6: should handle diamond shape intersections', () => {
imgSnapshotTest(
`---
config:
layout: elk
---
flowchart LR
A{A} --> B & C
subgraph "subbe"
A
end
`,
{ flowchart: { titleTopMargin: 0 } }
);

View File

@@ -12,7 +12,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -30,7 +29,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: true },
fontFamily: 'courier',
}
@@ -47,7 +45,7 @@ describe('Flowchart HandDrawn', () => {
C -->|Two| E[iPhone]
C -->|Three| F[Car]
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -62,7 +60,7 @@ describe('Flowchart HandDrawn', () => {
C -->|Two| E[\\iPhone\\]
C -->|Three| F[Car]
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -78,7 +76,7 @@ describe('Flowchart HandDrawn', () => {
classDef processHead fill:#888888,color:white,font-weight:bold,stroke-width:3px,stroke:#001f3f
class 1A,1B,D,E processHead
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -107,7 +105,7 @@ describe('Flowchart HandDrawn', () => {
35(SAM.CommonFA.PopulationFME)-->39(SAM.CommonFA.ChargeDetails)
36(SAM.CommonFA.PremetricCost)-->39(SAM.CommonFA.ChargeDetails)
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -178,7 +176,7 @@ describe('Flowchart HandDrawn', () => {
9a072290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
9a072290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -187,7 +185,7 @@ describe('Flowchart HandDrawn', () => {
`
graph TB;subgraph "number as labels";1;end;
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -199,7 +197,7 @@ describe('Flowchart HandDrawn', () => {
a1-->a2
end
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -211,7 +209,7 @@ describe('Flowchart HandDrawn', () => {
a1-->a2
end
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -246,7 +244,7 @@ describe('Flowchart HandDrawn', () => {
style foo fill:#F99,stroke-width:2px,stroke:#F0F,color:darkred
style bar fill:#999,stroke-width:10px,stroke:#0F0,color:blue
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -348,7 +346,7 @@ describe('Flowchart HandDrawn', () => {
sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-4FC27B48-A6F9-460A-A675-021F5854FE22;
`,
{ look: 'handDrawn', handDrawnSeed: 1, fontFamily: 'courier' }
{ look: 'handDrawn', fontFamily: 'courier' }
);
});
@@ -364,7 +362,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
listUrl: false,
listId: 'color styling',
fontFamily: 'courier',
@@ -390,7 +387,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
listUrl: false,
listId: 'color styling',
fontFamily: 'courier',
@@ -411,7 +407,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -435,7 +430,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -457,7 +451,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -471,7 +464,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -485,7 +477,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -500,7 +491,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -527,7 +517,6 @@ describe('Flowchart HandDrawn', () => {
class A someclass;`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -544,7 +533,7 @@ describe('Flowchart HandDrawn', () => {
C -->|Two| E[iPhone]
C -->|Three| F[fa:fa-car Car]
`,
{ look: 'handDrawn', handDrawnSeed: 1, flowchart: { nodeSpacing: 50 }, fontFamily: 'courier' }
{ look: 'handDrawn', flowchart: { nodeSpacing: 50 }, fontFamily: 'courier' }
);
});
@@ -560,7 +549,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { rankSpacing: '100' },
fontFamily: 'courier',
}
@@ -578,7 +566,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -603,7 +590,7 @@ describe('Flowchart HandDrawn', () => {
click E "notes://do-your-thing/id" "other protocol test"
click F "javascript:alert('test')" "script test"
`,
{ look: 'handDrawn', handDrawnSeed: 1, securityLevel: 'loose', fontFamily: 'courier' }
{ look: 'handDrawn', securityLevel: 'loose', fontFamily: 'courier' }
);
});
@@ -623,7 +610,7 @@ describe('Flowchart HandDrawn', () => {
click B "index.html#link-clicked" "link test"
click D testClick "click test"
`,
{ look: 'handDrawn', handDrawnSeed: 1, flowchart: { htmlLabels: true } }
{ look: 'handDrawn', flowchart: { htmlLabels: true } }
);
});
@@ -645,7 +632,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -664,7 +650,7 @@ describe('Flowchart HandDrawn', () => {
class A myClass1
class D myClass2
`,
{ look: 'handDrawn', handDrawnSeed: 1, flowchart: { htmlLabels: true } }
{ look: 'handDrawn', flowchart: { htmlLabels: true } }
);
});
@@ -682,7 +668,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -711,7 +696,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -728,7 +712,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -752,7 +735,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: false },
fontFamily: 'courier',
}
@@ -769,7 +751,7 @@ describe('Flowchart HandDrawn', () => {
C -->|Two| E[iPhone]
C -->|Three| F[fa:fa-car Car]
`,
{ look: 'handDrawn', handDrawnSeed: 1, flowchart: { diagramPadding: 0 } }
{ look: 'handDrawn', flowchart: { diagramPadding: 0 } }
);
});
@@ -804,7 +786,7 @@ describe('Flowchart HandDrawn', () => {
`graph TD
a["<strong>Haiya</strong>"]-->b
`,
{ look: 'handDrawn', handDrawnSeed: 1, htmlLabels: false, flowchart: { htmlLabels: false } }
{ look: 'handDrawn', htmlLabels: false, flowchart: { htmlLabels: false } }
);
});
it('FDH37: should render non-escaped with html labels', () => {
@@ -814,7 +796,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
htmlLabels: true,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
@@ -830,7 +811,7 @@ describe('Flowchart HandDrawn', () => {
C -->|Two| E[iPhone]
C -->|Three| F[fa:fa-car Car]
`,
{ look: 'handDrawn', handDrawnSeed: 1, flowchart: { useMaxWidth: true } }
{ look: 'handDrawn', flowchart: { useMaxWidth: true } }
);
cy.get('svg').should((svg) => {
expect(svg).to.have.attr('width', '100%');
@@ -853,7 +834,7 @@ describe('Flowchart HandDrawn', () => {
C -->|Two| E[iPhone]
C -->|Three| F[fa:fa-car Car]
`,
{ look: 'handDrawn', handDrawnSeed: 1, flowchart: { useMaxWidth: false } }
{ look: 'handDrawn', flowchart: { useMaxWidth: false } }
);
cy.get('svg').should((svg) => {
// const height = parseFloat(svg.attr('height'));
@@ -874,7 +855,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
htmlLabels: true,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
@@ -904,7 +884,6 @@ describe('Flowchart HandDrawn', () => {
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
htmlLabels: true,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
@@ -919,7 +898,6 @@ graph TD
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
htmlLabels: true,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
@@ -937,7 +915,6 @@ graph TD
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
htmlLabels: true,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
@@ -977,7 +954,6 @@ graph TD
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
htmlLabels: true,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
@@ -999,7 +975,6 @@ graph TD
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
htmlLabels: true,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
@@ -1016,7 +991,6 @@ graph TD
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
htmlLabels: true,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
@@ -1032,7 +1006,6 @@ graph TD
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
htmlLabels: true,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
@@ -1051,7 +1024,6 @@ graph TD
`,
{
look: 'handDrawn',
handDrawnSeed: 1,
flowchart: { htmlLabels: true },
securityLevel: 'loose',
}

View File

@@ -0,0 +1,142 @@
import { imgSnapshotTest } from '../../helpers/util.ts';
const aliasSet1 = ['process', 'rect', 'proc', 'rectangle'] as const;
const aliasSet2 = ['event', 'rounded'] as const;
const aliasSet3 = ['stadium', 'pill', 'terminal'] as const;
const aliasSet4 = ['fr-rect', 'subproc', 'subprocess', 'framed-rectangle', 'subroutine'] as const;
const aliasSet5 = ['db', 'database', 'cylinder', 'cyl'] as const;
const aliasSet6 = ['diam', 'decision', 'diamond'] as const;
const aliasSet7 = ['hex', 'hexagon', 'prepare'] as const;
const aliasSet8 = ['lean-r', 'lean-right', 'in-out'] as const;
const aliasSet9 = ['lean-l', 'lean-left', 'out-in'] as const;
const aliasSet10 = ['trap-b', 'trapezoid-bottom', 'priority'] as const;
const aliasSet11 = ['trap-t', 'trapezoid-top', 'manual'] as const;
const aliasSet12 = ['dbl-circ', 'double-circle'] as const;
const aliasSet13 = ['notched-rectangle', 'card', 'notch-rect'] as const;
const aliasSet14 = [
'lin-rect',
'lined-rectangle',
'lin-proc',
'lined-process',
'shaded-process',
] as const;
const aliasSet15 = ['sm-circ', 'small-circle', 'start'] as const;
const aliasSet16 = ['fr-circ', 'framed-circle', 'stop'] as const;
const aliasSet17 = ['fork', 'join'] as const;
// brace-r', 'braces'
const aliasSet18 = ['comment', 'brace-l'] as const;
const aliasSet19 = ['bolt', 'com-link', 'lightning-bolt'] as const;
const aliasSet20 = ['doc', 'document'] as const;
const aliasSet21 = ['delay', 'half-rounded-rectangle'] as const;
const aliasSet22 = ['h-cyl', 'das', 'horizontal-cylinder'] as const;
const aliasSet23 = ['lin-cyl', 'disk', 'lined-cylinder'] as const;
const aliasSet24 = ['curv-trap', 'display', 'curved-trapezoid'] as const;
const aliasSet25 = ['div-rect', 'div-proc', 'divided-rectangle', 'divided-process'] as const;
const aliasSet26 = ['extract', 'tri', 'triangle'] as const;
const aliasSet27 = ['win-pane', 'internal-storage', 'window-pane'] as const;
const aliasSet28 = ['f-circ', 'junction', 'filled-circle'] as const;
const aliasSet29 = ['lin-doc', 'lined-document'] as const;
const aliasSet30 = ['notch-pent', 'loop-limit', 'notched-pentagon'] as const;
const aliasSet31 = ['flip-tri', 'manual-file', 'flipped-triangle'] as const;
const aliasSet32 = ['sl-rect', 'manual-input', 'sloped-rectangle'] as const;
const aliasSet33 = ['docs', 'documents', 'st-doc', 'stacked-document'] as const;
const aliasSet34 = ['procs', 'processes', 'st-rect', 'stacked-rectangle'] as const;
const aliasSet35 = ['flag', 'paper-tape'] as const;
const aliasSet36 = ['bow-rect', 'stored-data', 'bow-tie-rectangle'] as const;
const aliasSet37 = ['cross-circ', 'summary', 'crossed-circle'] as const;
const aliasSet38 = ['tag-doc', 'tagged-document'] as const;
const aliasSet39 = ['tag-rect', 'tag-proc', 'tagged-rectangle', 'tagged-process'] as const;
const aliasSet40 = ['collate', 'hourglass'] as const;
// Aggregate all alias sets into a single array
const aliasSets = [
aliasSet1,
aliasSet2,
aliasSet3,
aliasSet4,
aliasSet5,
aliasSet6,
aliasSet7,
aliasSet8,
aliasSet9,
aliasSet10,
aliasSet11,
aliasSet12,
aliasSet13,
aliasSet14,
aliasSet15,
aliasSet16,
aliasSet17,
aliasSet18,
aliasSet19,
aliasSet20,
aliasSet21,
aliasSet22,
aliasSet23,
aliasSet24,
aliasSet25,
aliasSet26,
aliasSet27,
aliasSet28,
aliasSet29,
aliasSet30,
aliasSet31,
aliasSet32,
aliasSet33,
aliasSet34,
aliasSet35,
aliasSet36,
aliasSet37,
aliasSet38,
aliasSet39,
] as const;
aliasSets.forEach((aliasSet) => {
describe(`Test ${aliasSet.join(',')} `, () => {
it(`All ${aliasSet.join(',')} should render same shape`, () => {
let flowchartCode = `flowchart \n`;
aliasSet.forEach((alias, index) => {
flowchartCode += ` n${index}@{ shape: ${alias}, label: "${alias}" }\n`;
});
imgSnapshotTest(flowchartCode);
});
});
});

View File

@@ -786,7 +786,7 @@ A ~~~ B
`---
title: Subgraph nodeSpacing and rankSpacing example
config:
flowchart:
flowchart:
nodeSpacing: 250
rankSpacing: 250
---
@@ -1052,5 +1052,28 @@ end
}
);
});
it('Should render self-loops', () => {
imgSnapshotTest(
`flowchart
A --> A
subgraph B
B1 --> B1
end
subgraph C
subgraph C1
C2 --> C2
subgraph D
D1 --> D1
end
D --> D
end
C1 --> C1
end
`,
{
flowchart: { subGraphTitleMargin: { top: 10, bottom: 5 } },
}
);
});
});
});

View File

@@ -895,7 +895,7 @@ graph TD
imgSnapshotTest(
`
graph TD
classDef default fill:#a34,stroke:#000,stroke-width:4px,color:#fff
classDef default fill:#a34,stroke:#000,stroke-width:4px,color:#fff
hello --> default
`,
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
@@ -917,4 +917,24 @@ graph TD
}
);
});
it('68: should be able to render string and markdown labels (#5824)', () => {
imgSnapshotTest(
`
flowchart TB
mermaid{"What is\nyourmermaid version?"} --> v10["<11"] --"\`<**1**1\`"--> fine["No bug"]
mermaid --> v11[">= v11"] -- ">= v11" --> broken["Affected by https://github.com/mermaid-js/mermaid/issues/5824"]
subgraph subgraph1["\`How to fix **fix**\`"]
broken --> B["B"]
end
githost["Github, Gitlab, BitBucket, etc."]
githost2["\`Github, Gitlab, BitBucket, etc.\`"]
a["1."]
b["- x"]
`,
{
flowchart: { htmlLabels: true },
securityLevel: 'loose',
}
);
});
});

View File

@@ -0,0 +1,143 @@
import { imgSnapshotTest } from '../../helpers/util';
const looks = ['classic', 'handDrawn'] as const;
const directions = [
'TB',
//'BT',
'LR',
// 'RL'
] as const;
const forms = [undefined, 'square', 'circle', 'rounded'] as const;
const labelPos = [undefined, 't', 'b'] as const;
looks.forEach((look) => {
directions.forEach((direction) => {
forms.forEach((form) => {
labelPos.forEach((pos) => {
describe(`Test iconShape in ${form ? `${form} form,` : ''} ${look} look and dir ${direction} with label position ${pos ? pos : 'not defined'}`, () => {
it(`without label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> nAA@{ icon: 'fa:bell'`;
if (form) {
flowchartCode += `, form: '${form}'`;
}
flowchartCode += ` }\n`;
imgSnapshotTest(flowchartCode, { look });
});
it(`with label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> nAA@{ icon: 'fa:bell', label: 'This is a label for icon shape'`;
if (form) {
flowchartCode += `, form: '${form}'`;
}
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
imgSnapshotTest(flowchartCode, { look });
});
it(`with very long label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> nAA@{ icon: 'fa:bell', label: 'This is a very very very very very long long long label for icon shape'`;
if (form) {
flowchartCode += `, form: '${form}'`;
}
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
imgSnapshotTest(flowchartCode, { look });
});
it(`with markdown htmlLabels:true`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> nAA@{ icon: 'fa:bell', label: 'This is **bold** </br>and <strong>strong</strong> for icon shape'`;
if (form) {
flowchartCode += `, form: '${form}'`;
}
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
imgSnapshotTest(flowchartCode, { look });
});
it(`with markdown htmlLabels:false`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> nAA@{ icon: 'fa:bell', label: 'This is **bold** </br>and <strong>strong</strong> for icon shape'`;
if (form) {
flowchartCode += `, form: '${form}'`;
}
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
imgSnapshotTest(flowchartCode, {
look,
htmlLabels: false,
flowchart: { htmlLabels: false },
});
});
it(`with styles`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> nAA@{ icon: 'fa:bell', label: 'new icon shape'`;
if (form) {
flowchartCode += `, form: '${form}'`;
}
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
flowchartCode += ` style nAA fill:#f9f,stroke:#333,stroke-width:4px \n`;
imgSnapshotTest(flowchartCode, { look });
});
it(`with classDef`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` classDef customClazz fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5\n`;
flowchartCode += ` nA --> nAA@{ icon: 'fa:bell', label: 'new icon shape'`;
if (form) {
flowchartCode += `, form: '${form}'`;
}
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
flowchartCode += ` nAA:::customClazz\n`;
imgSnapshotTest(flowchartCode, { look });
});
});
});
});
});
});
describe('Test iconShape with different h', () => {
it('with different h', () => {
let flowchartCode = `flowchart TB\n`;
const icon = 'fa:bell';
const iconHeight = 64;
flowchartCode += ` nA --> nAA@{ icon: '${icon}', label: 'icon with different h', h: ${iconHeight} }\n`;
imgSnapshotTest(flowchartCode);
});
});
describe('Test colored iconShape', () => {
it('with no styles', () => {
let flowchartCode = `flowchart TB\n`;
const icon = 'fluent-emoji:tropical-fish';
flowchartCode += ` nA --> nAA@{ icon: '${icon}', form: 'square', label: 'icon with color' }\n`;
imgSnapshotTest(flowchartCode);
});
it('with styles', () => {
let flowchartCode = `flowchart TB\n`;
const icon = 'fluent-emoji:tropical-fish';
flowchartCode += ` nA --> nAA@{ icon: '${icon}', form: 'square', label: 'icon with color' }\n`;
flowchartCode += ` style nAA fill:#f9f,stroke:#333,stroke-width:4px \n`;
imgSnapshotTest(flowchartCode);
});
});

View File

@@ -0,0 +1,103 @@
import { imgSnapshotTest } from '../../helpers/util';
const looks = ['classic', 'handDrawn'] as const;
const directions = [
'TB',
//'BT',
'LR',
// 'RL'
] as const;
const labelPos = [undefined, 't', 'b'] as const;
looks.forEach((look) => {
directions.forEach((direction) => {
labelPos.forEach((pos) => {
describe(`Test imageShape in ${look} look and dir ${direction} with label position ${pos ? pos : 'not defined'}`, () => {
it(`without label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> A@{ img: 'https://cdn.pixabay.com/photo/2020/02/22/18/49/paper-4871356_1280.jpg', w: '100', h: '100' }\n`;
imgSnapshotTest(flowchartCode, { look });
});
it(`with label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> A@{ img: 'https://cdn.pixabay.com/photo/2020/02/22/18/49/paper-4871356_1280.jpg', label: 'This is a label for image shape'`;
flowchartCode += `, w: '100', h: '200'`;
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
imgSnapshotTest(flowchartCode, { look });
});
it(`with very long label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> A@{ img: 'https://cdn.pixabay.com/photo/2020/02/22/18/49/paper-4871356_1280.jpg', label: 'This is a very very very very very long long long label for image shape'`;
flowchartCode += `, w: '100', h: '250'`;
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
imgSnapshotTest(flowchartCode, { look });
});
it(`with markdown htmlLabels:true`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> A@{ img: 'https://cdn.pixabay.com/photo/2020/02/22/18/49/paper-4871356_1280.jpg', label: 'This is **bold** </br>and <strong>strong</strong> for image shape'`;
flowchartCode += `, w: '550', h: '200'`;
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
imgSnapshotTest(flowchartCode, { look, htmlLabels: true });
});
it(`with markdown htmlLabels:false`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> A@{ img: 'https://cdn.pixabay.com/photo/2020/02/22/18/49/paper-4871356_1280.jpg', label: 'This is **bold** </br>and <strong>strong</strong> for image shape'`;
flowchartCode += `, w: '250', h: '200'`;
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
imgSnapshotTest(flowchartCode, {
look,
htmlLabels: false,
flowchart: { htmlLabels: false },
});
});
it(`with styles`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` nA --> A@{ img: 'https://cdn.pixabay.com/photo/2020/02/22/18/49/paper-4871356_1280.jpg', label: 'new image shape'`;
flowchartCode += `, w: '550', h: '200'`;
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
flowchartCode += ` style A fill:#f9f,stroke:#333,stroke-width:4px \n`;
imgSnapshotTest(flowchartCode, { look });
});
it(`with classDef`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` classDef customClazz fill:#bbf,stroke:#f66,stroke-width:2px,color:#000000,stroke-dasharray: 5 5\n`;
flowchartCode += ` nA --> A@{ img: 'https://cdn.pixabay.com/photo/2020/02/22/18/49/paper-4871356_1280.jpg', label: 'new image shape'`;
flowchartCode += `, w: '500', h: '550'`;
if (pos) {
flowchartCode += `, pos: '${pos}'`;
}
flowchartCode += ` }\n`;
flowchartCode += ` A:::customClazz\n`;
imgSnapshotTest(flowchartCode, { look });
});
});
});
});
});

View File

@@ -0,0 +1,136 @@
import { imgSnapshotTest } from '../../helpers/util.ts';
describe('Kanban diagram', () => {
it('1: should render a kanban with a single section', () => {
imgSnapshotTest(
`kanban
id1[Todo]
docs[Create Documentation]
docs[Create Blog about the new diagram]
`,
{}
);
});
it('2: should render a kanban with multiple sections', () => {
imgSnapshotTest(
`kanban
id1[Todo]
docs[Create Documentation]
id2
docs[Create Blog about the new diagram]
`,
{}
);
});
it('3: should render a kanban with a single wrapping node', () => {
imgSnapshotTest(
`kanban
id1[Todo]
id2[Title of diagram is more than 100 chars when user duplicates diagram with 100 char, wrapping]
`,
{}
);
});
it('4: should handle the height of a section with a wrapping node at the end', () => {
imgSnapshotTest(
`kanban
id1[Todo]
id2[One line]
id3[Title of diagram is more than 100 chars when user duplicates diagram with 100 char, wrapping]
`,
{}
);
});
it('5: should handle the height of a section with a wrapping node at the top', () => {
imgSnapshotTest(
`kanban
id1[Todo]
id2[Title of diagram is more than 100 chars when user duplicates diagram with 100 char, wrapping]
id3[One line]
`,
{}
);
});
it('6: should handle the height of a section with a wrapping node in the middle', () => {
imgSnapshotTest(
`kanban
id1[Todo]
id2[One line]
id3[Title of diagram is more than 100 chars when user duplicates diagram with 100 char, wrapping]
id4[One line]
`,
{}
);
});
it('6: should handle assigments', () => {
imgSnapshotTest(
`kanban
id1[Todo]
docs[Create Documentation]
id2[In progress]
docs[Create Blog about the new diagram]@{ assigned: 'knsv' }
`,
{}
);
});
it('7: should handle prioritization', () => {
imgSnapshotTest(
`kanban
id2[In progress]
vh[Very High]@{ priority: 'Very High' }
h[High]@{ priority: 'High' }
m[Default priority]
l[Low]@{ priority: 'Low' }
vl[Very Low]@{ priority: 'Very Low' }
`,
{}
);
});
it('7: should handle external tickets', () => {
imgSnapshotTest(
`kanban
id1[Todo]
docs[Create Documentation]
id2[In progress]
docs[Create Blog about the new diagram]@{ ticket: MC-2037 }
`,
{}
);
});
it('8: should handle assignments, prioritization and tickets ids in the same item', () => {
imgSnapshotTest(
`kanban
id2[In progress]
docs[Create Blog about the new diagram]@{ priority: 'Very Low', ticket: MC-2037, assigned: 'knsv' }
`,
{}
);
});
it('10: Full example', () => {
imgSnapshotTest(
`---
config:
kanban:
ticketBaseUrl: 'https://abc123.atlassian.net/browse/#TICKET#'
---
kanban
id1[Todo]
docs[Create Documentation]
docs[Create Blog about the new diagram]
id7[In progress]
id6[Create renderer so that it works in all cases. We also add som extra text here for testing purposes. And some more just for the extra flare.]
id8[Design grammar]@{ assigned: 'knsv' }
id9[Ready for deploy]
id10[Ready for test]
id11[Done]
id5[define getData]
id2[Title of diagram is more than 100 chars when user duplicates diagram with 100 char]@{ ticket: MC-2036, priority: 'Very High'}
id3[Update DB function]@{ ticket: MC-2037, assigned: knsv, priority: 'High' }
id4[Create parsing tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }
id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }
id12[Can't reproduce]
`,
{}
);
});
});

View File

@@ -0,0 +1,146 @@
import { imgSnapshotTest } from '../../helpers/util.ts';
const looks = ['classic', 'handDrawn'] as const;
const directions = [
'TB',
//'BT',
'LR',
//'RL'
] as const;
const newShapesSet1 = [
'triangle',
'sloped-rectangle',
'horizontal-cylinder',
'flipped-triangle',
'hourglass',
] as const;
const newShapesSet2 = [
'tagged-rectangle',
'documents',
'lightning-bolt',
'filled-circle',
'window-pane',
] as const;
const newShapesSet3 = [
'curved-trapezoid',
'bow-rect',
'tagged-document',
'divided-rectangle',
'crossed-circle',
] as const;
const newShapesSet4 = [
'document',
'notched-pentagon',
'lined-cylinder',
'stacked-document',
'half-rounded-rectangle',
] as const;
const newShapesSet5 = [
'lined-document',
'tagged-document',
'brace-l',
'comment',
'braces',
'brace-r',
] as const;
const newShapesSet6 = ['brace-r', 'braces'] as const;
// Aggregate all shape sets into a single array
const newShapesSets = [
newShapesSet1,
newShapesSet2,
newShapesSet3,
newShapesSet4,
newShapesSet5,
newShapesSet6,
];
looks.forEach((look) => {
directions.forEach((direction) => {
newShapesSets.forEach((newShapesSet) => {
describe(`Test ${newShapesSet.join(', ')} in ${look} look and dir ${direction}`, () => {
it(`without label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
newShapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape} }\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`with label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
newShapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is a label for ${newShape} shape' }\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`connect all shapes with each other`, () => {
let flowchartCode = `flowchart ${direction}\n`;
newShapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index}${index}@{ shape: ${newShape}, label: 'This is a label for ${newShape} shape' }\n`;
});
for (let i = 0; i < newShapesSet.length; i++) {
for (let j = i + 1; j < newShapesSet.length; j++) {
flowchartCode += ` n${i}${i} --> n${j}${j}\n`;
}
}
if (!(direction === 'TB' && look === 'handDrawn' && newShapesSet === newShapesSet1)) {
//skip this test, works in real. Need to look
imgSnapshotTest(flowchartCode, { look });
}
});
it(`with very long label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
newShapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is a very very very very very long long long label for ${newShape} shape' }\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`with markdown htmlLabels:true`, () => {
let flowchartCode = `flowchart ${direction}\n`;
newShapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is **bold** </br>and <strong>strong</strong> for ${newShape} shape' }\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`with markdown htmlLabels:false`, () => {
let flowchartCode = `flowchart ${direction}\n`;
newShapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is **bold** </br>and <strong>strong</strong> for ${newShape} shape' }\n`;
});
imgSnapshotTest(flowchartCode, {
look,
htmlLabels: false,
flowchart: { htmlLabels: false },
});
});
it(`with styles`, () => {
let flowchartCode = `flowchart ${direction}\n`;
newShapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'new ${newShape} shape' }\n`;
flowchartCode += ` style n${index}${index} fill:#f9f,stroke:#333,stroke-width:4px \n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`with classDef`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` classDef customClazz fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5\n`;
newShapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'new ${newShape} shape' }\n`;
flowchartCode += ` n${index}${index}:::customClazz\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
});
});
});
});

View File

@@ -0,0 +1,107 @@
import { imgSnapshotTest } from '../../helpers/util';
const looks = ['classic', 'handDrawn'] as const;
const directions = [
'TB',
//'BT',
'LR',
//'RL'
] as const;
const shapesSet1 = ['text', 'card', 'lin-rect', 'diamond', 'hexagon'] as const;
// removing labelRect, need have alias for it
const shapesSet2 = ['rounded', 'rect', 'start', 'stop'] as const;
const shapesSet3 = ['fork', 'choice', 'note', 'stadium', 'odd'] as const;
const shapesSet4 = ['subroutine', 'cylinder', 'circle', 'doublecircle', 'odd'] as const;
const shapesSet5 = ['anchor', 'lean-r', 'lean-l', 'trap-t', 'trap-b'] as const;
// Aggregate all shape sets into a single array
const shapesSets = [shapesSet1, shapesSet2, shapesSet3, shapesSet4, shapesSet5] as const;
looks.forEach((look) => {
directions.forEach((direction) => {
shapesSets.forEach((shapesSet) => {
describe(`Test ${shapesSet.join(', ')} in ${look} look and dir ${direction}`, () => {
it(`without label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
shapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape} }\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`with label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
shapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is a label for ${newShape} shape' }\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`connect all shapes with each other`, () => {
let flowchartCode = `flowchart ${direction}\n`;
shapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index}${index}@{ shape: ${newShape}, label: 'This is a label for ${newShape} shape' }\n`;
});
for (let i = 0; i < shapesSet.length; i++) {
for (let j = i + 1; j < shapesSet.length; j++) {
flowchartCode += ` n${i}${i} --> n${j}${j}\n`;
}
}
imgSnapshotTest(flowchartCode, { look });
});
it(`with very long label`, () => {
let flowchartCode = `flowchart ${direction}\n`;
shapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is a very very very very very long long long label for ${newShape} shape' }\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`with markdown htmlLabels:true`, () => {
let flowchartCode = `flowchart ${direction}\n`;
shapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is **bold** </br>and <strong>strong</strong> for ${newShape} shape' }\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`with markdown htmlLabels:false`, () => {
let flowchartCode = `flowchart ${direction}\n`;
shapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is **bold** </br>and <strong>strong</strong> for ${newShape} shape' }\n`;
});
imgSnapshotTest(flowchartCode, {
look,
htmlLabels: false,
flowchart: { htmlLabels: false },
});
});
it(`with styles`, () => {
let flowchartCode = `flowchart ${direction}\n`;
shapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'new ${newShape} shape' }\n`;
flowchartCode += ` style n${index}${index} fill:#f9f,stroke:#333,stroke-width:4px \n`;
});
imgSnapshotTest(flowchartCode, { look });
});
it(`with classDef`, () => {
let flowchartCode = `flowchart ${direction}\n`;
flowchartCode += ` classDef customClazz fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5\n`;
shapesSet.forEach((newShape, index) => {
flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'new ${newShape} shape' }\n`;
flowchartCode += ` n${index}${index}:::customClazz\n`;
});
imgSnapshotTest(flowchartCode, { look });
});
});
});
});
});

View File

@@ -0,0 +1,52 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Architecture Mermaid Test Page</title>
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
<style>
div.mermaid {
/* font-family: 'trebuchet ms', verdana, arial; */
font-family: 'Courier New', Courier, monospace !important;
}
</style>
</head>
<body>
<h2>External Icons Demo</h2>
<pre class="mermaid">
architecture-beta
service s3(logos:aws-s3)[Cloud Store]
service ec2(logos:aws-ec2)[Server]
service api(logos:aws-api-gateway)[Api Gateway]
service fa(fa:image)[Font Awesome Icon]
</pre>
<script type="module">
import mermaid from './mermaid.esm.mjs';
mermaid.initialize({
startOnLoad: false,
logLevel: 0,
});
mermaid.registerIconPacks([
{
name: 'logos',
loader: () =>
fetch('https://unpkg.com/@iconify-json/logos/icons.json').then((res) => res.json()),
},
{
name: 'fa',
loader: () =>
fetch('https://unpkg.com/@iconify-json/fa6-regular/icons.json').then((res) =>
res.json()
),
},
]);
await mermaid.run();
if (window.Cypress) {
window.rendered = true;
}
</script>
</body>
</html>

View File

@@ -10,6 +10,10 @@
href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css"
rel="stylesheet"
/>
<link
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
rel="stylesheet"
@@ -34,6 +38,7 @@
/* background: rgb(221, 208, 208); */
/* background: #333; */
font-family: 'Arial';
/* color: white; */
/* font-size: 18px !important; */
}
@@ -73,7 +78,9 @@
font-family: monospace;
font-size: 72px;
}
pre {
width: 100%;
}
/* tspan {
font-size: 6px !important;
} */
@@ -81,94 +88,302 @@
</head>
<body>
<div class="flex">
<pre id="diagram" class="mermaid">
---
title: hello2
config:
look: handDrawn
layout: elk
elk:
nodePlacementStrategy: BRANDES_KOEPF
---
flowchart LR
A[Start] --Some text--> B(Continue)
B --> C{Evaluate}
C -- One --> D[Option 1]
C -- Two --> E[Option 2]
C -- Three --> F[fa:fa-car Option 3]
</pre
>
<pre id="diagram" class="mermaid2">
<pre id="diagram4" class="mermaid">
---
config:
look: handdrawn
flowchart:
htmlLabels: true
layout: elk
---
flowchart
A[I am a long text, where do I go??? handdrawn - true]
</pre
>
</div>
<div class="flex">
<pre id="diagram" class="mermaid2">
---
config:
flowchart:
htmlLabels: false
---
flowchart
A[I am a long text, where do I go??? classic - false]
</pre
>
<pre id="diagram" class="mermaid2">
---
config:
flowchart:
htmlLabels: true
---
flowchart
A[I am a long text, where do I go??? classic - true]
</pre
>
</div>
<pre id="diagram2" class="mermaid2">
flowchart LR
id1(Start)-->id2(Stop)
style id1 fill:#f9f,stroke:#333,stroke-width:4px
style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
</pre>
<pre id="diagram3" class="mermaid2">
flowchart LR
A:::foo & B:::bar --> C:::foobar
classDef foo stroke:#f00
classDef bar stroke:#0f0
classDef ash color:red
class C ash
style C stroke:#00f, fill:black
subgraph S2
subgraph s1["APA"]
D{"Use the editor"}
end
D -- Mermaid js --> I{"fa:fa-code Text"}
D --> I
D --> I
end
</pre>
<pre id="diagram4" class="mermaid">
---
config:
layout: elk
---
flowchart LR
a
subgraph s0["APA"]
subgraph s8["APA"]
subgraph s1["APA"]
D{"X"}
E[Q]
end
subgraph s3["BAPA"]
F[Q]
I
end
D --> I
D --> I
D --> I
I{"X"}
end
end
</pre>
<pre id="diagram4" class="mermaid">
---
config:
layout: elk
---
flowchart LR
a
D{"Use the editor"}
D -- Mermaid js --> I{"fa:fa-code Text"}
D-->I
D-->I
</pre>
<pre id="diagram4" class="mermaid2">
stateDiagram
A:::foo
B:::bar --> C:::foobar
classDef foo stroke:#f00
classDef bar stroke:#0f0
style C stroke:#00f, fill:black, color:white
---
config:
layout: elk
---
flowchart LR
subgraph s1["Untitled subgraph"]
n1["Evaluate"]
n2["Option 1"]
n3["Option 2"]
n4["fa:fa-car Option 3"]
end
subgraph s2["Untitled subgraph"]
n5["Evaluate"]
n6["Option 1"]
n7["Option 2"]
n8["fa:fa-car Option 3"]
end
A["Start"] -- Some text --> B("Continue")
B --> C{"Evaluate"}
C -- One --> D["Option 1"]
C -- Two --> E["Option 2"]
C -- Three --> F["fa:fa-car Option 3"]
n1 -- One --> n2
n1 -- Two --> n3
n1 -- Three --> n4
n5 -- One --> n6
n5 -- Two --> n7
n5 -- Three --> n8
n1@{ shape: diam}
n2@{ shape: rect}
n3@{ shape: rect}
n4@{ shape: rect}
n5@{ shape: diam}
n6@{ shape: rect}
n7@{ shape: rect}
n8@{ shape: rect}
</pre>
<pre id="diagram4" class="mermaid">
---
title: https://github.com/mermaid-js/mermaid/issues/5824
---
%% 6048, 5824
flowchart TB
mermaid{"What is\nyourmermaid version?"} --> v10["<11"] --"`<**1**1`"--> fine["No bug"]
mermaid --> v11[">= v11"] -- ">= v11" --> broken["Affected by https://github.com/mermaid-js/mermaid/issues/5824"]
subgraph subgraph1["`How to fix **fix**`"]
broken --> B["B"]
end
githost["Github, Gitlab, BitBucket, etc."]
githost2["`Github, Gitlab, BitBucket, etc.`"]
a["1."]
b["- x"]
</pre>
<pre id="diagram4" class="mermaid">
---
config:
layout: elk
---
flowchart LR
A{A} --> B & C
</pre
>
<pre id="diagram4" class="mermaid">
---
config:
layout: elk
---
flowchart LR
A{A} --> B & C
subgraph "subbe"
A
end
</pre
>
<pre id="diagram4" class="mermaid">
---
config:
layout: elk
---
flowchart LR
n2@{ shape: rect}
n3@{ shape: rect}
n4@{ shape: rect}
A["Start"] -- Some text --> B("Continue")
B --> C{"Evaluate"}
C -- One --> D["Option 1"]
C -- Two --> E["Option 2"]
C -- Three --> F["fa:fa-car Option 3"]
%% C@{ shape: hexagon}
</pre>
<pre id="diagram4" class="mermaid2">
---
config:
kanban:
ticketBaseUrl: 'https://github.com/your-repo/issues/#TICKET#'
---
kanban
Backlog
task1[📝 Define project requirements]@{ ticket: a101 }
To Do
task2[🔍 Research technologies]@{ ticket: a102 }
Review
task4[🔍 Code review for login feature]@{ ticket: a104 }
Done
task5[✅ Deploy initial version]@{ ticket: a105 }
In Progress
task3[💻 Develop login feature]@{ ticket: 103 }
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Default] --> A@{ icon: 'fa:bell', form: 'rounded' }
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Style] --> A@{ icon: 'fa:bell', form: 'rounded' }
style A fill:#f9f,stroke:#333,stroke-width:4px
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Class] --> A@{ icon: 'fa:bell', form: 'rounded' }
A:::AClass
classDef AClass fill:#f9f,stroke:#333,stroke-width:4px
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Class] --> A@{ icon: 'logos:aws', form: 'rounded' }
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Default] --> A@{ icon: 'fa:bell', form: 'square' }
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Style] --> A@{ icon: 'fa:bell', form: 'square' }
style A fill:#f9f,stroke:#333,stroke-width:4px
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Class] --> A@{ icon: 'fa:bell', form: 'square' }
A:::AClass
classDef AClass fill:#f9f,stroke:#333,stroke-width:4px
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Class] --> A@{ icon: 'logos:aws', form: 'square' }
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Default] --> A@{ icon: 'fa:bell', form: 'circle' }
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Style] --> A@{ icon: 'fa:bell', form: 'circle' }
style A fill:#f9f,stroke:#333,stroke-width:4px
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Class] --> A@{ icon: 'fa:bell', form: 'circle' }
A:::AClass
classDef AClass fill:#f9f,stroke:#333,stroke-width:4px
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Class] --> A@{ icon: 'logos:aws', form: 'circle' }
A:::AClass
classDef AClass fill:#f9f,stroke:#333,stroke-width:4px
</pre>
<pre id="diagram4" class="mermaid2">
flowchart LR
nA[Style] --> A@{ icon: 'logos:aws', form: 'circle' }
style A fill:#f9f,stroke:#333,stroke-width:4px
</pre>
<pre id="diagram4" class="mermaid2">
kanban
id2[In progress]
docs[Create Blog about the new diagram]@{ priority: 'Very Low', ticket: MC-2037, assigned: 'knsv' }
</pre>
<pre id="diagram4" class="mermaid2">
---
config:
kanban:
ticketBaseUrl: 'https://mermaidchart.atlassian.net/browse/#TICKET#'
# sectionWidth: 300
---
kanban
Todo
[Create Documentation]
docs[Create Blog about the new diagram]
id7[In progress]
id6[Create renderer so that it works in all cases. We also add som extra text here for testing purposes. And some more just for the extra flare.]
id9[Ready for deploy]
id8[Design grammar]@{ assigned: 'knsv' }
id10[Ready for test]
id4[Create parsing tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }
id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }
id11[Done]
id5[define getData]
id2[Title of diagram is more than 100 chars when user duplicates diagram with 100 char]@{ ticket: MC-2036, priority: 'Very High'}
id3[Update DB function]@{ ticket: MC-2037, assigned: knsv, priority: 'High' }
id12[Can't reproduce]
id3[Weird flickering in Firefox]
</pre>
<script type="module">
import mermaid from './mermaid.esm.mjs';
import layouts from './mermaid-layout-elk.esm.mjs';
const staticBellIconPack = {
prefix: 'fa6-regular',
icons: {
bell: {
body: '<path fill="currentColor" d="M224 0c-17.7 0-32 14.3-32 32v19.2C119 66 64 130.6 64 208v25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416h400c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6c-28.3-35.5-43.8-79.6-43.8-125V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32m0 96c61.9 0 112 50.1 112 112v25.4c0 47.9 13.9 94.6 39.7 134.6H72.3c25.8-40 39.7-86.7 39.7-134.6V208c0-61.9 50.1-112 112-112m64 352H160c0 17 6.7 33.3 18.7 45.3S207 512 224 512s33.3-6.7 45.3-18.7S288 465 288 448"/>',
width: 448,
},
},
width: 512,
height: 512,
};
mermaid.registerIconPacks([
{
name: 'logos',
loader: () =>
fetch('https://unpkg.com/@iconify-json/logos@1/icons.json').then((res) => res.json()),
},
{
name: 'fa',
loader: () => staticBellIconPack,
},
]);
mermaid.registerLayoutLoaders(layouts);
mermaid.parseError = function (err, hash) {
console.error('Mermaid error: ', err);
@@ -178,6 +393,8 @@ flowchart LR
};
mermaid.initialize({
// theme: 'base',
// theme: 'default',
// theme: 'forest',
// handDrawnSeed: 12,
// look: 'handDrawn',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
@@ -194,6 +411,9 @@ flowchart LR
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
kanban: {
htmlLabels: false,
},
fontSize: 12,
logLevel: 0,
securityLevel: 'loose',

View File

@@ -0,0 +1,174 @@
<html>
<head>
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
/>
<link
href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
rel="stylesheet"
/>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Caveat:wght@400..700&family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
rel="stylesheet"
/>
<style>
body {
/* background: rgb(221, 208, 208); */
/* background: #333; */
font-family: 'Arial';
/* font-size: 18px !important; */
}
h1 {
color: grey;
}
.mermaid2 {
display: none;
}
.mermaid svg {
/* font-size: 18px !important; */
/* background-color: #efefef;
background-image: radial-gradient(#fff 51%, transparent 91%),
radial-gradient(#fff 51%, transparent 91%);
background-size: 20px 20px;
background-position:
0 0,
10px 10px;
background-repeat: repeat; */
}
</style>
</head>
<body style="display: flex; gap: 2rem; flex-direction: row">
<pre id="diagram4" class="mermaid">
flowchart LR
A@{ icon: "fa:window-minimize", form: circle }
E@{ icon: "fa:window-minimize", form: circle }
B@{ icon: "fa:bell", form: circle }
B2@{ icon: "fa:bell", form: circle }
C@{ icon: "fa:address-book", form: square }
D@{ icon: "fa:star-half", form: square }
A --> E
B --> B2
</pre>
<pre id="diagram4" class="mermaid2">
flowchart TB
A --test2--> B2@{ icon: "fa:bell", form: "rounded", label: "B2 aiduaid uyawduad uaduabd uyduadb", pos: "b" }
B2 --test--> C
D --> B2 --> E
style B2 fill:#f9f,stroke:#333,stroke-width:4px
</pre
>
<pre id="diagram43" class="mermaid2">
flowchart BT
A --test2--> B2@{ icon: "fa:bell", form: "square", label: "B2", pos: "t", h: 40, w: 30 }
B2 --test--> C
D --> B2 --> E
</pre
>
<pre id="diagram4" class="mermaid2">
flowchart BT
A --test2--> B2@{ icon: "fa:bell", label: "B2 awiugdawu uydgayuiwd wuydguy", pos: "b", h: 40, w: 30 }
B2 --test--> C
</pre
>
<pre id="diagram43" class="mermaid2">
flowchart BT
A --test2--> B2@{ icon: "fa:bell", label: "B2 dawuygd ayuwgd uy", pos: "t", h: 40, w: 30 }
B2 --test--> C
</pre
>
<pre id="diagram6" class="mermaid2">
flowchart TB
A --> B2@{ icon: "fa:bell", form: "circle", label: "test augfuyfavf ydvaubfuac", pos: "t", w: 200, h: 100 } --> C
</pre
>
<pre id="diagram6" class="mermaid2">
flowchart TB
A --> B2@{ icon: "fa:bell", form: "circle", label: "test augfuyfavf ydvaubfuac", pos: "b", w: 200, h: 100 } --> C
D --> B2 --> E
</pre
>
<script type="module">
import mermaid from './mermaid.esm.mjs';
import layouts from './mermaid-layout-elk.esm.mjs';
mermaid.registerLayoutLoaders(layouts);
mermaid.registerIconPacks([
{
name: 'logos',
loader: () =>
fetch('https://unpkg.com/@iconify-json/logos/icons.json').then((res) => res.json()),
},
{
name: 'fa',
loader: () =>
fetch('https://unpkg.com/@iconify-json/fa6-solid/icons.json').then((res) => res.json()),
},
]);
mermaid.parseError = function (err, hash) {
console.error('Mermaid error: ', err);
};
window.callback = function () {
alert('A callback was triggered');
};
mermaid.initialize({
// theme: 'base',
// handdrawnSeed: 12,
look: 'classic',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// 'elk.nodePlacement.strategy': 'SIMPLE',
// 'elk.nodePlacement.strategy': 'LAYERED',
// 'elk.mergeEdges': true,
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
flowchart: { titleTopMargin: 10, padding: 0, htmlLabels: true },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
fontFamily: 'courier',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
themeVariables: {
fontSize: 50,
fontFamily: 'courier',
},
logLevel: 0,
securityLevel: 'loose',
});
function callback() {
alert('It worked');
}
mermaid.parseError = function (err, hash) {
console.error('In parse error:');
console.error(err);
};
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

663
cypress/platform/yari.html Normal file
View File

@@ -0,0 +1,663 @@
<html>
<body>
<h1 class="header">Class Nodes</h1>
<div class="node-showcase">
<div class="test">
<h2>Basic Class</h2>
<pre class="mermaid">
---
config:
htmlLabels: false
---
classDiagram
class _Duck_ {
+String beakColor
_+_swim_()a_
__+quack() test__
}
</pre>
</div>
<div class="test">
<h2>Basic Class</h2>
<pre class="mermaid">
---
config:
htmlLabels: false
---
classDiagram
class Class10:::exClass2 {
int[] id
List~int~ ids
test(List~int~ ids) List~bool~
testArray() bool[]
}
</pre>
</div>
<div class="test">
<h2>Basic Class</h2>
<pre class="mermaid">
flowchart TD
Start --> Stop
</pre>
</div>
<div class="test">
<h2>Complex Class</h2>
<pre class="mermaid">
classDiagram
class Square~Shape~{
int id
List~int~ position
setPoints(List~int~ points)
getPoints() List~int~
}
Square : -List~string~ messages
Square : +setMessages(List~string~ messages)
Square : +getMessages() List~string~
Square : +getDistanceMatrix() List~List~int~~
</pre
>
</div>
<div class="test">
<h2>No Attributes</h2>
<pre class="mermaid">
classDiagram
class Duck {
+swim()
+quack()
}
</pre>
</div>
<div class="test">
<h2>No Methods</h2>
<pre class="mermaid">
classDiagram
class Duck {
+String beakColor
}
</pre>
</div>
<div class="test">
<h2>Only Class Name</h2>
<p>Empty line as attribute</p>
<pre class="mermaid">
---
config:
class:
hideEmptyMembersBox: false
---
classDiagram
class Duck {
}
</pre>
</div>
<div class="test">
<h2>Visibility and Types</h2>
<p>(Further tilde testing)</p>
<div class="mermaid">
classDiagram class Duck { ~interface~~~ +String beakColor #swim() ~quack()~~~
-test()~~~~~~~ +deposit(amount) bool }
</div>
</div>
<div class="test">
<h2>Additional Classifiers</h2>
<p>(* Abstract | $ Static)</p>
<div class="mermaid">
classDiagram class Square~Shape~ { int id* List~int~ position* setPoints(List~int~points)*
getPoints()* List~int~ } Square : -List~string~ messages$ Square :
+setMessages(List~string~ messages)* Square : +getMessages()$ List~string~ Square :
+getDistanceMatrix() List~List~int~~$
</div>
</div>
<div class="test">
<h2>Label</h2>
<pre class="mermaid">
classDiagram
class Animal~test~["Animal with a label"]
</pre>
</div>
<div class="test">
<h2>Spacing</h2>
<p>(Fix ensures consistent spacing rules)</p>
<p>(No space or single space?)</p>
<pre class="mermaid">
classDiagram
class ClassName {
-attribute:type
- attribute : type
test
+ GetAttribute() type
+ GetAttribute() type
}
</pre>
</div>
<div class="test">
<h2>Annotation</h2>
<pre class="mermaid">
classDiagram
class Shape
&lt;&lt;interface&gt;&gt; Shape
Shape : noOfVertices
Shape : draw()
</pre>
</div>
<div class="test">
<h2>Long Class Name Text</h2>
<pre class="mermaid">
classDiagram
class ThisIsATestForALongClassName {
&lt;&lt;interface&gt;&gt;
noOfLetters
delete()
}
</pre>
</div>
<div class="test">
<h2>Long Annotation Text</h2>
<pre class="mermaid">
classDiagram
class Shape
&lt;&lt;superlongannotationtext&gt;&gt; Shape
Shape : noOfVertices
Shape : draw()
</pre>
</div>
<div class="test">
<h2>Long Member Text</h2>
<pre class="mermaid">
classDiagram
class Shape
&lt;&lt;interface&gt;&gt; Shape
Shape : noOfVertices
Shape : longtexttestkeepgoingandgoing
Shape : draw()
</pre>
</div>
<div class="test">
<h2>Link</h2>
<pre class="mermaid">
classDiagram
class Shape
link Shape "https://www.github.com" "This is a tooltip for a link"
</pre>
</div>
<div class="test">
<h2>Click</h2>
<pre class="mermaid">
classDiagram
class Shape
click Shape href "https://www.github.com" "This is a tooltip for a link"
</pre>
</div>
<div class="test">
<h2>Hand Drawn</h2>
<pre class="mermaid">
---
config:
look: handDrawn
htmlLabels: true
---
classDiagram
class Hand {
+String beakColor
+swim()
+quack()
}
style Hand fill:#f9f,stroke:#29f,stroke-width:2px
</pre>
</div>
<div class="test">
<h2>Neutral Theme</h2>
<pre class="mermaid">
---
config:
theme: neutral
---
classDiagram
class Duck {
+String beakColor
+swim()
+quack()
}
</pre>
</div>
<div class="test">
<h2>Dark Theme</h2>
<pre class="mermaid">
---
config:
theme: dark
---
classDiagram
class Duck {
+String beakColor
+swim()
+quack()
}
</pre>
</div>
<div class="test">
<h2>Forest Theme</h2>
<pre class="mermaid">
---
config:
theme: forest
---
classDiagram
class Duck {
+String beakColor
+swim()
+quack()
}
</pre>
</div>
<div class="test">
<h2>Base Theme</h2>
<pre class="mermaid">
---
config:
theme: base
---
classDiagram
class Duck {
+String beakColor
+swim()
+quack()
}
</pre>
</div>
<div class="test">
<h2>Custom Theme</h2>
<pre class="mermaid">
%%{
init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#BB2528',
'primaryTextColor': '#fff',
'primaryBorderColor': '#7C0000',
'lineColor': '#F83d29',
'secondaryColor': '#006100',
'tertiaryColor': '#fff'
}
}
}%%
classDiagram
class Duck {
+String beakColor
+swim()
+quack()
}
Duck--Dog
</pre>
</div>
<div class="test">
<h2>Styling within Diagram</h2>
<pre class="mermaid">
classDiagram
class Duck {
+String beakColor
+swim()
+quack()
}
style Duck fill:#f9f,stroke:#333,stroke-width:8px
</pre>
</div>
<div class="test">
<h2>Styling with classDef Statement</h2>
<pre class="mermaid">
classDiagram
class Duck:::bold {
+String beakColor
+swim()
+quack()
}
class Dog {
+int numTeeth
+bark()
}
cssClass "Duck,Dog" pink
classDef pink fill:#f9f
classDef default color:#f1e
classDef bold stroke:#333,stroke-width:6px,color:#fff
</pre>
</div>
<div class="test">
<h2>Styling with Class in Stylesheet</h2>
<pre class="mermaid">
classDiagram
class Duck {
+String beakColor
+swim()
+quack()
}
class Duck:::styleClass
</pre>
</div>
</div>
<h1 class="header">Diagram Testing</h1>
<div class="diagram-showcase">
<div class="test">
<h2>Class Nodes Only</h2>
<pre class="mermaid">
---
title: Animal example
---
classDiagram
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}
</pre>
</div>
<div class="test">
<h2>Class Nodes LR</h2>
<pre class="mermaid">
---
title: Animal example
---
classDiagram
direction LR
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}
</pre>
</div>
<div class="test">
<h2>Relations</h2>
<pre class="mermaid">
classDiagram
classA <|-- classB
classC *-- classD
classE o-- classF
classG <-- classH
classI -- classJ
classK <.. classL
classM <|.. classN
classO .. classP
</pre>
</div>
<div class="test">
<h2>Two Way Relation</h2>
<pre class="mermaid">
classDiagram
class Animal {
int size
walk()
}
class Zebra {
int size
walk()
}
Animal o--|> Zebra
</pre>
</div>
<div class="test">
<h2>Relations with Labels</h2>
<pre class="mermaid">
classDiagram
classA <|-- classB : implements
classC *-- classD : composition
classE o-- classF : aggregation
</pre>
</div>
<div class="test">
<h2>Cardinality / Multiplicity</h2>
<pre class="mermaid">
classDiagram
Customer "1" --> "*" Ticket
Student "1" --> "1..*" Course
Galaxy --> "many" Star : Contains
</pre>
</div>
<div class="test">
<h2>Complex Relations with Theme</h2>
<pre class="mermaid">
---
config:
theme: forest
look: handDrawns
layout: elk
---
classDiagram
direction RL
class Student {
-idCard : IdCard
}
class IdCard{
-id : int
-name : string
}
class Bike{
-id : int
-name : string
}
Student "1" o--o "1" IdCard : carries
Student "1" o--o "1" Bike : rides
</pre>
</div>
<div class="test">
<h2>Notes</h2>
<pre class="mermaid">
classDiagram
note "This is a general note"
note for MyClass "This is a note for a class"
class MyClass
</pre>
</div>
<div class="test">
<h2>Namespaces</h2>
<pre class="mermaid">
classDiagram
namespace BaseShapes {
class Triangle
class Rectangle {
double width
double height
}
}
</pre>
</div>
<div class="test">
<h2>Namespaces</h2>
<pre class="mermaid">
---
config:
layout: elk
---
classDiagram
namespace Namespace1 {
class C1
class C2
}
C1 --> C2
class C3
class C4
</pre>
</div>
<div class="test">
<h2>Full Example</h2>
<pre class="mermaid">
---
title: Animal example
config:
layout: dagre
---
classDiagram
note "From Duck till Zebra"
Animal <|--|> Duck
note for Duck "can fly<br>can swim<br>can dive<br>can help in debugging"
Animal <|-- Fish
Animal <|--|> Zebra
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}
cssClass "Duck" test
classDef test fill:#f71
%%classDef default fill:#f93
</pre>
</div>
<div class="test">
<h2>Full Example</h2>
<pre class="mermaid">
---
config:
theme: forest
look: handDrawn
---
classDiagram
note for Outside "Note testing"
namespace Test {
class Outside
}
namespace BaseShapes {
class Triangle
class Rectangle {
double width
double height
}
}
Outside <|--|> Rectangle
style Triangle fill:#f9f,stroke:#333,stroke-width:4px
</pre>
</div>
<div class="test">
<pre class="mermaid">
---
config:
look: handDrawn
layout: elk
---
classDiagram
Class01 "1" <|--|> "*" AveryLongClass : Cool
&lt;&lt;interface&gt;&gt; Class01
Class03 "1" *-- "*" Class04
Class05 "1" o-- "many" Class06
Class07 "1" .. "*" Class08
Class09 "1" --> "*" C2 : Where am i?
Class09 "*" --* "*" C3
Class09 "1" --|> "1" Class07
NewClass ()--() Class04
Class09 <|--|> AveryLongClass
Class07 : equals()
Class07 : Object[] elementData
Class01 : size()
Class01 : int chimp
Class01 : int gorilla
Class08 "1" <--> "*" C2: Cool label
class Class10 {
&lt;&lt;service&gt;&gt;
int id
test()
}
Class10 o--o AveryLongClass
Class10 <--> Class07
</pre>
</div>
<div class="test">
<pre class="mermaid">
classDiagram
test ()--() test2
</pre>
</div>
</div>
<script type="module">
import mermaid from './mermaid.esm.mjs';
import layouts from './mermaid-layout-elk.esm.mjs';
mermaid.registerLayoutLoaders(layouts);
mermaid.parseError = function (err, hash) {
console.error('Mermaid error: ', err);
};
mermaid.initialize();
mermaid.parseError = function (err, hash) {
console.error('In parse error:');
console.error(err);
};
</script>
</body>
<style>
.header {
text-decoration: underline;
text-align: center;
}
.node-showcase {
display: grid;
grid-template-columns: 1fr 1fr;
}
.test {
flex-grow: 1;
display: flex;
flex-direction: column;
align-items: center;
gap: 0.4rem;
}
.test > h2 {
margin: 0;
text-align: center;
}
.test > p {
margin-top: -6px;
color: gray;
}
.diagram-showcase {
display: grid;
grid-template-columns: 1fr;
}
.styleClass > * > path {
fill: #ff0000 !important;
stroke: #ffff00 !important;
stroke-width: 4px !important;
stroke-dasharray: 2 !important;
}
</style>
</html>

152
cypress/timings.json Normal file
View File

@@ -0,0 +1,152 @@
{
"durations": [
{
"spec": "cypress/integration/other/configuration.spec.js",
"duration": 4989
},
{
"spec": "cypress/integration/other/external-diagrams.spec.js",
"duration": 1382
},
{
"spec": "cypress/integration/other/ghsa.spec.js",
"duration": 3178
},
{
"spec": "cypress/integration/other/iife.spec.js",
"duration": 1372
},
{
"spec": "cypress/integration/other/interaction.spec.js",
"duration": 8998
},
{
"spec": "cypress/integration/other/rerender.spec.js",
"duration": 1249
},
{
"spec": "cypress/integration/other/xss.spec.js",
"duration": 25664
},
{
"spec": "cypress/integration/rendering/appli.spec.js",
"duration": 1928
},
{
"spec": "cypress/integration/rendering/architecture.spec.ts",
"duration": 2330
},
{
"spec": "cypress/integration/rendering/block.spec.js",
"duration": 11156
},
{
"spec": "cypress/integration/rendering/c4.spec.js",
"duration": 3418
},
{
"spec": "cypress/integration/rendering/classDiagram-v2.spec.js",
"duration": 14866
},
{
"spec": "cypress/integration/rendering/classDiagram.spec.js",
"duration": 9894
},
{
"spec": "cypress/integration/rendering/conf-and-directives.spec.js",
"duration": 5778
},
{
"spec": "cypress/integration/rendering/current.spec.js",
"duration": 1690
},
{
"spec": "cypress/integration/rendering/erDiagram.spec.js",
"duration": 9144
},
{
"spec": "cypress/integration/rendering/errorDiagram.spec.js",
"duration": 1951
},
{
"spec": "cypress/integration/rendering/flowchart-elk.spec.js",
"duration": 2196
},
{
"spec": "cypress/integration/rendering/flowchart-handDrawn.spec.js",
"duration": 21029
},
{
"spec": "cypress/integration/rendering/flowchart-shape-alias.spec.ts",
"duration": 16087
},
{
"spec": "cypress/integration/rendering/flowchart-v2.spec.js",
"duration": 27465
},
{
"spec": "cypress/integration/rendering/flowchart.spec.js",
"duration": 20035
},
{
"spec": "cypress/integration/rendering/gantt.spec.js",
"duration": 11366
},
{
"spec": "cypress/integration/rendering/gitGraph.spec.js",
"duration": 34025
},
{
"spec": "cypress/integration/rendering/iconShape.spec.ts",
"duration": 185902
},
{
"spec": "cypress/integration/rendering/imageShape.spec.ts",
"duration": 41631
},
{
"spec": "cypress/integration/rendering/info.spec.ts",
"duration": 1736
},
{
"spec": "cypress/integration/rendering/journey.spec.js",
"duration": 2247
},
{
"spec": "cypress/integration/rendering/katex.spec.js",
"duration": 2144
},
{
"spec": "cypress/integration/rendering/marker_unique_id.spec.js",
"duration": 1646
},
{
"spec": "cypress/integration/rendering/mindmap.spec.ts",
"duration": 6406
},
{
"spec": "cypress/integration/rendering/newShapes.spec.ts",
"duration": 107219
},
{
"spec": "cypress/integration/rendering/stateDiagram.spec.js",
"duration": 15834
},
{
"spec": "cypress/integration/rendering/theme.spec.js",
"duration": 33240
},
{
"spec": "cypress/integration/rendering/timeline.spec.ts",
"duration": 7122
},
{
"spec": "cypress/integration/rendering/xyChart.spec.js",
"duration": 11127
},
{
"spec": "cypress/integration/rendering/zenuml.spec.js",
"duration": 2391
}
]
}

256
demos/architecture.html Normal file
View File

@@ -0,0 +1,256 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Architecture Mermaid Quick Test Page</title>
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
<style>
div.mermaid {
/* font-family: 'trebuchet ms', verdana, arial; */
font-family: 'Courier New', Courier, monospace !important;
}
</style>
</head>
<body>
<h1>Architecture diagram demo</h1>
<h2>Simple diagram with groups</h2>
<pre class="mermaid">
architecture-beta
group api(cloud)[API]
service db(database)[Database] in api
service disk1(disk)[Storage] in api
service disk2(disk)[Storage] in api
service server(server)[Server] in api
service gateway(internet)[Gateway]
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
server:T -- B:gateway
</pre>
<hr />
<h2>Groups within groups</h2>
<pre class="mermaid">
architecture-beta
group api[API]
group public[Public API] in api
group private[Private API] in api
service serv1(server)[Server] in public
service serv2(server)[Server] in private
service db(database)[Database] in private
service gateway(internet)[Gateway] in api
serv1:B -- T:serv2
serv2:L -- R:db
serv1:L -- R:gateway
</pre>
<hr />
<h2>Default icon (?) from unknown icon name</h2>
<pre class="mermaid">
architecture-beta
service unknown(iconnamedoesntexist)[Unknown Icon]
</pre>
<hr />
<h2>Split Direction</h2>
<pre class="mermaid">
architecture-beta
service db(database)[Database]
service s3(disk)[Storage]
service serv1(server)[Server 1]
service serv2(server)[Server 2]
service disk(disk)[Disk]
db:L -- R:s3
serv1:L -- T:s3
serv2:L -- B:s3
serv1:T -- B:disk
</pre>
<hr />
<h2>Arrow Tests</h2>
<pre class="mermaid">
architecture-beta
service servC(server)[Server 1]
service servL(server)[Server 2]
service servR(server)[Server 3]
service servT(server)[Server 4]
service servB(server)[Server 5]
servC:L <--> R:servL
servC:R <--> L:servR
servC:T <--> B:servT
servC:B <--> T:servB
servL:T <--> L:servT
servL:B <--> L:servB
servR:T <--> R:servT
servR:B <--> R:servB
</pre>
<pre class="mermaid">
architecture-beta
service servC(server)[Server 1]
service servL(server)[Server 2]
service servR(server)[Server 3]
service servT(server)[Server 4]
service servB(server)[Server 5]
servC:L <--> R:servL
servC:R <--> L:servR
servC:T <--> B:servT
servC:B <--> T:servB
servT:L <--> T:servL
servB:L <--> B:servL
servT:R <--> T:servR
servB:R <--> B:servR
</pre>
<hr />
<h2>Group Edges</h2>
<pre class="mermaid">
architecture-beta
group left_group(cloud)[Left]
group right_group(cloud)[Right]
group top_group(cloud)[Top]
group bottom_group(cloud)[Bottom]
group center_group(cloud)[Center]
service left_disk(disk)[Disk] in left_group
service right_disk(disk)[Disk] in right_group
service top_disk(disk)[Disk] in top_group
service bottom_disk(disk)[Disk] in bottom_group
service center_disk(disk)[Disk] in center_group
left_disk{group}:R <--> L:center_disk{group}
right_disk{group}:L <--> R:center_disk{group}
top_disk{group}:B <--> T:center_disk{group}
bottom_disk{group}:T <--> B:center_disk{group}
</pre
>
<hr />
<h2>Edge Label Test</h2>
<pre class="mermaid">
architecture-beta
service servC(server)[Server 1]
service servL(server)[Server 2]
service servR(server)[Server 3]
service servT(server)[Server 4]
service servB(server)[Server 5]
servC:L -[Label]- R:servL
servC:R -[Label]- L:servR
servC:T -[Label]- B:servT
servC:B -[Label]- T:servB
servL:T -[Label]- L:servT
servL:B -[Label]- L:servB
servR:T -[Label]- R:servT
servR:B -[Label]- R:servB
</pre>
<pre class="mermaid">
architecture-beta
service servC(server)[Server 1]
service servL(server)[Server 2]
service servR(server)[Server 3]
service servT(server)[Server 4]
service servB(server)[Server 5]
servC:L -[Label that is Long]- R:servL
servC:R -[Label that is Long]- L:servR
servC:T -[Label that is Long]- B:servT
servC:B -[Label that is Long]- T:servB
servL:T -[Label that is Long]- L:servT
servL:B -[Label that is Long]- L:servB
servR:T -[Label that is Long]- R:servT
servR:B -[Label that is Long]- R:servB
</pre>
<hr />
<h2>Junction Demo</h2>
<pre class="mermaid">
architecture-beta
service left_disk(disk)[Disk]
service top_disk(disk)[Disk]
service bottom_disk(disk)[Disk]
service top_gateway(internet)[Gateway]
service bottom_gateway(internet)[Gateway]
junction juncC
junction juncR
left_disk:R -- L:juncC
top_disk:B -- T:juncC
bottom_disk:T -- B:juncC
juncC:R -- L:juncR
top_gateway:B -- T:juncR
bottom_gateway:T -- B:juncR
</pre>
<hr />
<h2>Junction Demo Groups</h2>
<pre class="mermaid">
architecture-beta
group left
group right
service left_disk(disk)[Disk] in left
service top_disk(disk)[Disk] in left
service bottom_disk(disk)[Disk] in left
service top_gateway(internet)[Gateway] in right
service bottom_gateway(internet)[Gateway] in right
junction juncC in left
junction juncR in right
left_disk:R -- L:juncC
top_disk:B -- T:juncC
bottom_disk:T -- B:juncC
top_gateway:B <-- T:juncR
bottom_gateway:T <-- B:juncR
juncC{group}:R --> L:juncR{group}
</pre>
<hr />
<h2>External Icons Demo</h2>
<pre class="mermaid">
architecture-beta
service s3(logos:aws-s3)[Cloud Store]
service ec2(logos:aws-ec2)[Server]
service api(logos:aws-api-gateway)[Api Gateway]
service fa(fa:image)[Font Awesome Icon]
</pre>
<script type="module">
import mermaid from './mermaid.esm.mjs';
mermaid.registerIconPacks([
{
name: 'logos',
loader: () =>
fetch('https://unpkg.com/@iconify-json/logos/icons.json').then((res) => res.json()),
},
{
name: 'fa',
loader: () =>
fetch('https://unpkg.com/@iconify-json/fa6-regular/icons.json').then((res) =>
res.json()
),
},
]);
</script>
</body>
</html>

View File

@@ -159,30 +159,87 @@
class People List~List~Person~~
</pre>
<hr />
<pre class="mermaid">
classDiagram
A1 --> B1
namespace A {
class A1 {
+foo : string
}
class A2 {
+bar : int
namespace Company.Project.Module {
class GenericClass~T~ {
+addItem(item: T)
+getItem() T
}
}
namespace B {
class B1 {
+foo : bool
}
class B2 {
+bar : float
}
}
A2 --> B2
</pre>
<hr />
<pre class="mermaid">
classDiagram
namespace Company.Project.Module.SubModule {
class Report {
+generatePDF(data: List)
+generateCSV(data: List)
}
}
namespace Company.Project.Module {
class Admin {
+generateReport()
}
}
Admin --> Report : generates
</pre>
<pre class="mermaid">
classDiagram
namespace Company.Project.Module {
class User {
+login(username: String, password: String)
+logout()
}
class Admin {
+addUser(user: User)
+removeUser(user: User)
+generateReport()
}
class Report {
+generatePDF(reportData: List)
+generateCSV(reportData: List)
}
}
Admin --> User : manages
Admin --> Report : generates
</pre>
<hr />
<pre class="mermaid">
classDiagram
namespace Shapes {
class Shape {
+calculateArea() double
}
class Circle {
+double radius
}
class Square {
+double side
}
}
Shape <|-- Circle
Shape <|-- Square
namespace Vehicles {
class Vehicle {
+String brand
}
class Car {
+int horsepower
}
class Bike {
+boolean hasGears
}
}
Vehicle <|-- Car
Vehicle <|-- Bike
Car --> Circle : "Logo Shape"
Bike --> Square : "Logo Shape"
</pre>
<script type="module">
import mermaid from './mermaid.esm.mjs';
mermaid.initialize({

View File

@@ -39,8 +39,8 @@ graph TB
<script type="module">
import mermaid from '/mermaid.esm.mjs';
import flowchartELK from '/mermaid-flowchart-elk.esm.mjs';
await mermaid.registerExternalDiagrams([flowchartELK]);
import layouts from '/mermaid-layout-elk.esm.mjs';
mermaid.registerLayoutLoaders(layouts);
async function render(str) {
const { svg } = await mermaid.render('dynamic', str);
document.getElementById('dynamicDiagram').innerHTML = svg;

View File

@@ -125,6 +125,35 @@
</pre>
<hr />
<pre class="mermaid">
erDiagram
p[Person] {
string firstName
string lastName
}
a["Customer Account"] {
string email
}
b["Customer Account Secondary"] {
string email
}
c["Customer Account Tertiary"] {
string email
}
d["Customer Account Nth"] {
string email
}
p ||--o| a : "has<br />one"
p ||--o| b : "has<br />one<br />two"
p ||--o| c : "has<br />one<br />two<br />three"
p ||--o| d : "has<br />one<br />two<br />three<br />...<br />Nth"
</pre>
<hr />
<pre class="mermaid">
erDiagram
_customer_order {

View File

@@ -88,6 +88,9 @@
<li>
<h2><a href="./block.html">Layered Blocks</a></h2>
</li>
<li>
<h2><a href="./architecture.html">Architecture</a></h2>
</li>
</ul>
</body>
</html>

View File

@@ -7,9 +7,6 @@ services:
tty: true
working_dir: /mermaid
mem_limit: '8G'
entrypoint: ./docker-entrypoint.sh
environment:
- NODE_OPTIONS=--max_old_space_size=8192
volumes:
- ./:/mermaid
- root_cache:/root/.cache

View File

@@ -1,3 +0,0 @@
#!/bin/sh
source /root/.shrc
exec "$@"

233
docs/adding-new-shape.md Normal file
View File

@@ -0,0 +1,233 @@
> **Warning**
>
> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT.
>
> ## Please edit the corresponding file in [/packages/mermaid/src/docs/adding-new-shape.md](../packages/mermaid/src/docs/adding-new-shape.md).
# Custom SVG Shapes Library
This library provides a collection of custom SVG shapes, utilities, and helpers for generating diagram components. The shapes are designed to be used within an SVG container and include a variety of common and complex shapes.
## Overview
## Shape Helpers and Utilities
Before starting with shape creation, it's essential to familiarize yourself with the utilities provided in the `utils.ts` file from `packages/mermaid/src/rendering-util/rendering-elements/shapes/util.js`. These utilities are designed to assist with various aspects of SVG shape manipulation and ensure consistent and accurate rendering.
## Available Utilities
### 1. `labelHelper`
- **Purpose**: This function creates and inserts labels inside SVG shapes.
- **Features**:
- Handles both HTML labels and plain text.
- Calculates the bounding box dimensions of the label.
- Ensures proper positioning of labels within shapes.
### 2. `updateNodeBounds`
- **Purpose**: Updates the bounding box dimensions (width and height) of a node.
- **Usage**:
- Adjusts the size of the node to fit the content or shape.
- Useful for ensuring that shapes resize appropriately based on their content.
### 3. `insertPolygonShape`
- **Purpose**: Inserts a polygon shape into an SVG container.
- **Features**:
- Handles the creation and insertion of complex polygonal shapes.
- Configures the shape's appearance and positioning within the SVG container.
### 4. `getNodeClasses`
- **Purpose**: Returns the appropriate CSS classes for a node based on its configuration.
- **Usage**:
- Dynamically applies CSS classes to nodes for styling purposes.
- Ensures that nodes adhere to the desired design and theme.
### 5. `createPathFromPoints`
- **Purpose**: Generates an SVG path string from an array of points.
- **Usage**:
- Converts a list of points into a smooth path.
- Useful for creating custom shapes or paths within the SVG.
### 6. `generateFullSineWavePoints`
- **Purpose**: Generates points for a sine wave, useful for creating wavy-edged shapes.
- **Usage**:
- Facilitates the creation of shapes with wavy or sine-wave edges.
- Can be used to add decorative or dynamic edges to shapes.
## Getting Started
To utilize these utilities, simply import them from the `utils.ts` file into your shape creation script. These helpers will streamline the process of building and customizing SVG shapes, ensuring consistent results across your projects.
```typescript
import {
labelHelper,
updateNodeBounds,
insertPolygonShape,
getNodeClasses,
createPathFromPoints,
generateFullSineWavePoints,
} from './utils.ts';
```
## Example Usage
Heres a basic example of how you might use some of these utilities:
```typescript
import { labelHelper, insertPolygonShape } from './utils.ts';
const svgContainer = document.getElementById('svgContainer');
// Insert a polygon shape
insertPolygonShape(svgContainer /* shape-specific parameters */);
// Create and insert a label inside the shape
labelHelper(svgContainer /* label-specific parameters */);
```
## Adding New Shapes
### 1. Create the Shape Function
To add a new shape:
- **Create the shape function**: Create a new file of name of the shape and export a function in the `shapes` directory that generates your shape. The file and function should follow the pattern used in existing shapes and return an SVG element.
- **Example**:
```typescript
import { Node, RenderOptions } from '../../types.ts';
export const myNewShape = async (
parent: SVGAElement,
node: Node,
renderOptions: RenderOptions
) => {
// Create your shape here
const shape = parent.insert('g').attr('class', 'my-new-shape');
// Add other elements or styles as needed
return shape;
};
```
### 2. Register the Shape
- **Register the shape**: Add your shape to the `shapes` object in the [main shapes module](../rendering-util/rendering-elements/shapes.ts). This allows your shape to be recognized and used within the system.
- **Example**:
```typescript
import { myNewShape } from './shapes/myNewShape';
const shapes = {
...,
{
semanticName: 'My Shape',
name: 'Shape Name',
shortName: '<short-name>',
description: '<Description for the shape>',
aliases: ['<alias-one>', '<al-on>', '<alias-two>', '<al-two>'],
handler: myNewShape,
},
};
```
# Shape Intersection Algorithms
This contains algorithms and utilities for calculating intersection points for various shapes in SVG. Arrow intersection points are crucial for accurately determining where arrows connect with shapes. Ensuring precise intersection points enhances the clarity and accuracy of flowcharts and diagrams.
## Shape Intersection Functions
### 1. `Ellipse`
Calculates the intersection points for an ellipse.
**Usage**:
```javascript
import intersectEllipse from './intersect-ellipse.js';
const intersection = intersectEllipse(node, rx, ry, point);
```
- **Parameters**:
- `node`: The SVG node element.
- `rx`: The x-radius of the ellipse.
- `ry`: The y-radius of the ellipse.
- `point`: The point from which the intersection is calculated.
### 2. `intersectRect`
Calculates the intersection points for a rectangle.
**Usage**:
```javascript
import intersectRect from './intersect-rect.js';
const intersection = intersectRect(node, point);
```
- **Parameters**:
- `node`: The SVG node element.
- `point`: The point from which the intersection is calculated.
### 3. `intersectPolygon`
Calculates the intersection points for a polygon.
**Usage**:
```javascript
import intersectPolygon from './intersect-polygon.js';
const intersection = intersectPolygon(node, polyPoints, point);
```
- **Parameters**:
- `node`: The SVG node element.
- `polyPoints`: Array of points defining the polygon.
- `point`: The point from which the intersection is calculated.
## Cypress Tests
To ensure the robustness of the flowchart shapes, there are implementation of comprehensive Cypress test cases in `newShapes.spec.ts` file. These tests cover various aspects such as:
- **Shapes**: Testing new shapes like `bowTieRect`, `waveRectangle`, `trapezoidalPentagon`, etc.
- **Looks**: Verifying shapes under different visual styles (`classic` and `handDrawn`).
- **Directions**: Ensuring correct rendering in all flow directions of arrows :
- `TB` `(Top -> Bottom)`
- `BT` `(Bottom -> Top)`
- `LR` `(Left -> Right)`
- `RL` `(Right -> Left)`
- **Labels**: Testing shapes with different labels, including:
- No labels
- Short labels
- Very long labels
- Markdown with `htmlLabels:true` and `htmlLabels:false`
- **Styles**: Applying custom styles to shapes and verifying correct rendering.
- **Class Definitions**: Using `classDef` to apply custom classes and testing their impact.
### Running the Tests
To run the Cypress tests, follow these steps:
1. Ensure you have all dependencies installed by running:
```bash
pnpm install
```
2. Start the Cypress test runner:
```bash
cypress open --env updateSnapshots=true
```
3. Select the test suite from the Cypress interface to run all the flowchart shape tests.

View File

@@ -370,9 +370,9 @@ If the users have no way to know that things have changed, then you haven't real
Likewise, if users don't know that there is a new feature that you've implemented, it will forever remain unknown and unused.
The documentation has to be updated for users to know that things have been changed and added!
If you are adding a new feature, add `(v10.8.0+)` in the title or description. It will be replaced automatically with the current version number when the release happens.
If you are adding a new feature, add `(v<MERMAID_RELEASE_VERSION>+)` in the title or description. It will be replaced automatically with the current version number when the release happens.
eg: `# Feature Name (v10.8.0+)`
eg: `# Feature Name (v<MERMAID_RELEASE_VERSION>+)`
We know it can sometimes be hard to code _and_ write user documentation.

55
docs/config/icons.md Normal file
View File

@@ -0,0 +1,55 @@
> **Warning**
>
> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT.
>
> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/icons.md](../../packages/mermaid/src/docs/config/icons.md).
# Registering icon pack in mermaid
The icon packs available can be found at [icones.js.org](https://icones.js.org/).
We use the name defined when registering the icon pack, to override the prefix field of the iconify pack. This allows the user to use shorter names for the icons. It also allows us to load a particular pack only when it is used in a diagram.
Using JSON file directly from CDN:
```js
import mermaid from 'CDN/mermaid.esm.mjs';
mermaid.registerIconPacks([
{
name: 'logos',
loader: () =>
fetch('https://unpkg.com/@iconify-json/logos@1/icons.json').then((res) => res.json()),
},
]);
```
Using packages and a bundler:
```bash
npm install @iconify-json/logos@1
```
With lazy loading
```js
import mermaid from 'mermaid';
mermaid.registerIconPacks([
{
name: 'logos',
loader: () => import('@iconify-json/logos').then((module) => module.icons),
},
]);
```
Without lazy loading
```js
import mermaid from 'mermaid';
import { icons } from '@iconify-json/logos';
mermaid.registerIconPacks([
{
name: icons.prefix, // To use the prefix defined in the icon pack
icons,
},
]);
```

View File

@@ -127,7 +127,7 @@ Error.prepareStackTrace
#### Defined in
node_modules/@types/node/globals.d.ts:28
node_modules/.pnpm/@types+node\@20.16.11/node_modules/@types/node/globals.d.ts:98
---
@@ -141,7 +141,7 @@ Error.stackTraceLimit
#### Defined in
node_modules/@types/node/globals.d.ts:30
node_modules/.pnpm/@types+node\@20.16.11/node_modules/@types/node/globals.d.ts:100
## Methods
@@ -168,4 +168,4 @@ Error.captureStackTrace
#### Defined in
node_modules/@types/node/globals.d.ts:21
node_modules/.pnpm/@types+node\@20.16.11/node_modules/@types/node/globals.d.ts:91

View File

@@ -16,11 +16,11 @@
### config
**config**: `MermaidConfig`
**config**: [`MermaidConfig`](mermaid.MermaidConfig.md)
#### Defined in
[packages/mermaid/src/rendering-util/types.d.ts:118](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.d.ts#L118)
[packages/mermaid/src/rendering-util/types.ts:144](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L144)
---
@@ -30,7 +30,7 @@
#### Defined in
[packages/mermaid/src/rendering-util/types.d.ts:117](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.d.ts#L117)
[packages/mermaid/src/rendering-util/types.ts:143](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L143)
---
@@ -40,4 +40,4 @@
#### Defined in
[packages/mermaid/src/rendering-util/types.d.ts:116](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.d.ts#L116)
[packages/mermaid/src/rendering-util/types.ts:142](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L142)

View File

@@ -28,7 +28,7 @@ page.
#### Defined in
[packages/mermaid/src/mermaid.ts:435](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L435)
[packages/mermaid/src/mermaid.ts:436](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L436)
---
@@ -59,7 +59,7 @@ A graph definition key
#### Defined in
[packages/mermaid/src/mermaid.ts:437](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L437)
[packages/mermaid/src/mermaid.ts:438](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L438)
---
@@ -89,7 +89,7 @@ Use [initialize](mermaid.Mermaid.md#initialize) and [run](mermaid.Mermaid.md#run
#### Defined in
[packages/mermaid/src/mermaid.ts:430](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L430)
[packages/mermaid/src/mermaid.ts:431](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L431)
---
@@ -116,7 +116,7 @@ This function should be called before the run function.
#### Defined in
[packages/mermaid/src/mermaid.ts:434](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L434)
[packages/mermaid/src/mermaid.ts:435](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L435)
---
@@ -130,7 +130,7 @@ Use [parse](mermaid.Mermaid.md#parse) and [render](mermaid.Mermaid.md#render) in
#### Defined in
[packages/mermaid/src/mermaid.ts:424](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L424)
[packages/mermaid/src/mermaid.ts:425](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L425)
---
@@ -180,7 +180,7 @@ Error if the diagram is invalid and parseOptions.suppressErrors is false or not
#### Defined in
[packages/mermaid/src/mermaid.ts:425](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L425)
[packages/mermaid/src/mermaid.ts:426](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L426)
---
@@ -190,7 +190,7 @@ Error if the diagram is invalid and parseOptions.suppressErrors is false or not
#### Defined in
[packages/mermaid/src/mermaid.ts:419](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L419)
[packages/mermaid/src/mermaid.ts:420](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L420)
---
@@ -218,7 +218,31 @@ Used to register external diagram types.
#### Defined in
[packages/mermaid/src/mermaid.ts:433](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L433)
[packages/mermaid/src/mermaid.ts:434](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L434)
---
### registerIconPacks
**registerIconPacks**: (`iconLoaders`: `IconLoader`\[]) => `void`
#### Type declaration
▸ (`iconLoaders`): `void`
##### Parameters
| Name | Type |
| :------------ | :-------------- |
| `iconLoaders` | `IconLoader`\[] |
##### Returns
`void`
#### Defined in
[packages/mermaid/src/mermaid.ts:439](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L439)
---
@@ -242,7 +266,7 @@ Used to register external diagram types.
#### Defined in
[packages/mermaid/src/mermaid.ts:432](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L432)
[packages/mermaid/src/mermaid.ts:433](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L433)
---
@@ -268,7 +292,7 @@ Used to register external diagram types.
#### Defined in
[packages/mermaid/src/mermaid.ts:426](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L426)
[packages/mermaid/src/mermaid.ts:427](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L427)
---
@@ -316,7 +340,7 @@ Renders the mermaid diagrams
#### Defined in
[packages/mermaid/src/mermaid.ts:431](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L431)
[packages/mermaid/src/mermaid.ts:432](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L432)
---
@@ -351,7 +375,7 @@ to it (eg. dart interop wrapper). (Initially there is no parseError member of me
#### Defined in
[packages/mermaid/src/mermaid.ts:436](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L436)
[packages/mermaid/src/mermaid.ts:437](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L437)
---
@@ -361,4 +385,4 @@ to it (eg. dart interop wrapper). (Initially there is no parseError member of me
#### Defined in
[packages/mermaid/src/mermaid.ts:418](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L418)
[packages/mermaid/src/mermaid.ts:419](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L419)

View File

@@ -16,7 +16,17 @@
#### Defined in
[packages/mermaid/src/config.type.ts:112](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L112)
[packages/mermaid/src/config.type.ts:122](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L122)
---
### architecture
`Optional` **architecture**: `ArchitectureDiagramConfig`
#### Defined in
[packages/mermaid/src/config.type.ts:194](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L194)
---
@@ -29,7 +39,7 @@ This matters if you are using base tag settings.
#### Defined in
[packages/mermaid/src/config.type.ts:131](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L131)
[packages/mermaid/src/config.type.ts:141](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L141)
---
@@ -39,7 +49,7 @@ This matters if you are using base tag settings.
#### Defined in
[packages/mermaid/src/config.type.ts:189](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L189)
[packages/mermaid/src/config.type.ts:201](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L201)
---
@@ -49,7 +59,7 @@ This matters if you are using base tag settings.
#### Defined in
[packages/mermaid/src/config.type.ts:186](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L186)
[packages/mermaid/src/config.type.ts:198](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L198)
---
@@ -59,7 +69,7 @@ This matters if you are using base tag settings.
#### Defined in
[packages/mermaid/src/config.type.ts:177](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L177)
[packages/mermaid/src/config.type.ts:187](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L187)
---
@@ -69,7 +79,7 @@ This matters if you are using base tag settings.
#### Defined in
[packages/mermaid/src/config.type.ts:103](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L103)
[packages/mermaid/src/config.type.ts:113](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L113)
---
@@ -83,7 +93,7 @@ You can set this attribute to base the seed on a static string.
#### Defined in
[packages/mermaid/src/config.type.ts:171](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L171)
[packages/mermaid/src/config.type.ts:181](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L181)
---
@@ -101,7 +111,7 @@ should not change unless content is changed.
#### Defined in
[packages/mermaid/src/config.type.ts:164](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L164)
[packages/mermaid/src/config.type.ts:174](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L174)
---
@@ -111,7 +121,7 @@ should not change unless content is changed.
#### Defined in
[packages/mermaid/src/config.type.ts:190](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L190)
[packages/mermaid/src/config.type.ts:202](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L202)
---
@@ -121,10 +131,11 @@ should not change unless content is changed.
#### Type declaration
| Name | Type | Description |
| :----------------------- | :---------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `mergeEdges?` | `boolean` | Elk specific option that allows edges to share path where it convenient. It can make for pretty diagrams but can also make it harder to read the diagram. |
| `nodePlacementStrategy?` | `"SIMPLE"` \| `"NETWORK_SIMPLEX"` \| `"LINEAR_SEGMENTS"` \| `"BRANDES_KOEPF"` | Elk specific option affecting how nodes are placed. |
| Name | Type | Description |
| :----------------------- | :-------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `cycleBreakingStrategy?` | `"GREEDY"` \| `"DEPTH_FIRST"` \| `"INTERACTIVE"` \| `"MODEL_ORDER"` \| `"GREEDY_MODEL_ORDER"` | This strategy decides how to find cycles in the graph and deciding which edges need adjustment to break loops. |
| `mergeEdges?` | `boolean` | Elk specific option that allows edges to share path where it convenient. It can make for pretty diagrams but can also make it harder to read the diagram. |
| `nodePlacementStrategy?` | `"SIMPLE"` \| `"NETWORK_SIMPLEX"` \| `"LINEAR_SEGMENTS"` \| `"BRANDES_KOEPF"` | Elk specific option affecting how nodes are placed. |
#### Defined in
@@ -138,7 +149,7 @@ should not change unless content is changed.
#### Defined in
[packages/mermaid/src/config.type.ts:179](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L179)
[packages/mermaid/src/config.type.ts:189](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L189)
---
@@ -148,7 +159,7 @@ should not change unless content is changed.
#### Defined in
[packages/mermaid/src/config.type.ts:172](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L172)
[packages/mermaid/src/config.type.ts:182](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L182)
---
@@ -162,7 +173,7 @@ See <https://developer.mozilla.org/en-US/docs/Web/CSS/font-family>
#### Defined in
[packages/mermaid/src/config.type.ts:111](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L111)
[packages/mermaid/src/config.type.ts:121](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L121)
---
@@ -172,7 +183,7 @@ See <https://developer.mozilla.org/en-US/docs/Web/CSS/font-family>
#### Defined in
[packages/mermaid/src/config.type.ts:192](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L192)
[packages/mermaid/src/config.type.ts:204](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L204)
---
@@ -186,7 +197,7 @@ If set to true, ignores legacyMathML.
#### Defined in
[packages/mermaid/src/config.type.ts:153](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L153)
[packages/mermaid/src/config.type.ts:163](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L163)
---
@@ -196,7 +207,7 @@ If set to true, ignores legacyMathML.
#### Defined in
[packages/mermaid/src/config.type.ts:174](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L174)
[packages/mermaid/src/config.type.ts:184](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L184)
---
@@ -206,7 +217,7 @@ If set to true, ignores legacyMathML.
#### Defined in
[packages/mermaid/src/config.type.ts:185](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L185)
[packages/mermaid/src/config.type.ts:197](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L197)
---
@@ -228,7 +239,7 @@ Defines the seed to be used when using handDrawn look. This is important for the
#### Defined in
[packages/mermaid/src/config.type.ts:104](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L104)
[packages/mermaid/src/config.type.ts:114](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L114)
---
@@ -238,7 +249,17 @@ Defines the seed to be used when using handDrawn look. This is important for the
#### Defined in
[packages/mermaid/src/config.type.ts:175](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L175)
[packages/mermaid/src/config.type.ts:185](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L185)
---
### kanban
`Optional` **kanban**: `KanbanDiagramConfig`
#### Defined in
[packages/mermaid/src/config.type.ts:196](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L196)
---
@@ -265,7 +286,7 @@ fall back to legacy rendering for KaTeX.
#### Defined in
[packages/mermaid/src/config.type.ts:146](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L146)
[packages/mermaid/src/config.type.ts:156](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L156)
---
@@ -277,7 +298,7 @@ This option decides the amount of logging to be used by mermaid.
#### Defined in
[packages/mermaid/src/config.type.ts:117](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L117)
[packages/mermaid/src/config.type.ts:127](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L127)
---
@@ -299,7 +320,7 @@ Defines which main look to use for the diagram.
#### Defined in
[packages/mermaid/src/config.type.ts:193](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L193)
[packages/mermaid/src/config.type.ts:205](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L205)
---
@@ -333,7 +354,7 @@ The maximum allowed size of the users text diagram
#### Defined in
[packages/mermaid/src/config.type.ts:184](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L184)
[packages/mermaid/src/config.type.ts:195](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L195)
---
@@ -343,7 +364,7 @@ The maximum allowed size of the users text diagram
#### Defined in
[packages/mermaid/src/config.type.ts:188](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L188)
[packages/mermaid/src/config.type.ts:200](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L200)
---
@@ -353,7 +374,7 @@ The maximum allowed size of the users text diagram
#### Defined in
[packages/mermaid/src/config.type.ts:180](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L180)
[packages/mermaid/src/config.type.ts:190](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L190)
---
@@ -363,7 +384,7 @@ The maximum allowed size of the users text diagram
#### Defined in
[packages/mermaid/src/config.type.ts:181](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L181)
[packages/mermaid/src/config.type.ts:191](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L191)
---
@@ -373,7 +394,7 @@ The maximum allowed size of the users text diagram
#### Defined in
[packages/mermaid/src/config.type.ts:183](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L183)
[packages/mermaid/src/config.type.ts:193](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L193)
---
@@ -383,7 +404,7 @@ The maximum allowed size of the users text diagram
#### Defined in
[packages/mermaid/src/config.type.ts:187](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L187)
[packages/mermaid/src/config.type.ts:199](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L199)
---
@@ -397,7 +418,7 @@ This prevents malicious graph directives from overriding a site's default securi
#### Defined in
[packages/mermaid/src/config.type.ts:138](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L138)
[packages/mermaid/src/config.type.ts:148](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L148)
---
@@ -409,7 +430,7 @@ Level of trust for parsed diagram
#### Defined in
[packages/mermaid/src/config.type.ts:121](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L121)
[packages/mermaid/src/config.type.ts:131](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L131)
---
@@ -419,7 +440,7 @@ Level of trust for parsed diagram
#### Defined in
[packages/mermaid/src/config.type.ts:173](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L173)
[packages/mermaid/src/config.type.ts:183](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L183)
---
@@ -431,7 +452,7 @@ Dictates whether mermaid starts on Page load
#### Defined in
[packages/mermaid/src/config.type.ts:125](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L125)
[packages/mermaid/src/config.type.ts:135](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L135)
---
@@ -441,7 +462,7 @@ Dictates whether mermaid starts on Page load
#### Defined in
[packages/mermaid/src/config.type.ts:178](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L178)
[packages/mermaid/src/config.type.ts:188](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L188)
---
@@ -454,7 +475,7 @@ This is useful when you want to control how to handle syntax errors in your appl
#### Defined in
[packages/mermaid/src/config.type.ts:199](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L199)
[packages/mermaid/src/config.type.ts:211](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L211)
---
@@ -497,7 +518,7 @@ You may also use `themeCSS` to override this value.
#### Defined in
[packages/mermaid/src/config.type.ts:176](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L176)
[packages/mermaid/src/config.type.ts:186](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L186)
---
@@ -507,7 +528,7 @@ You may also use `themeCSS` to override this value.
#### Defined in
[packages/mermaid/src/config.type.ts:191](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L191)
[packages/mermaid/src/config.type.ts:203](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L203)
---
@@ -517,4 +538,4 @@ You may also use `themeCSS` to override this value.
#### Defined in
[packages/mermaid/src/config.type.ts:182](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L182)
[packages/mermaid/src/config.type.ts:192](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L192)

View File

@@ -19,4 +19,4 @@ The `parseError` function will not be called.
#### Defined in
[packages/mermaid/src/types.ts:43](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L43)
[packages/mermaid/src/types.ts:59](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L59)

View File

@@ -10,6 +10,18 @@
## Properties
### config
**config**: [`MermaidConfig`](mermaid.MermaidConfig.md)
The config passed as YAML frontmatter or directives
#### Defined in
[packages/mermaid/src/types.ts:70](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L70)
---
### diagramType
**diagramType**: `string`
@@ -18,4 +30,4 @@ The diagram type, e.g. 'flowchart', 'sequence', etc.
#### Defined in
[packages/mermaid/src/types.ts:50](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L50)
[packages/mermaid/src/types.ts:66](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L66)

View File

@@ -39,7 +39,7 @@ bindFunctions?.(div); // To call bindFunctions only if it's present.
#### Defined in
[packages/mermaid/src/types.ts:73](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L73)
[packages/mermaid/src/types.ts:98](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L98)
---
@@ -51,7 +51,7 @@ The diagram type, e.g. 'flowchart', 'sequence', etc.
#### Defined in
[packages/mermaid/src/types.ts:63](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L63)
[packages/mermaid/src/types.ts:88](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L88)
---
@@ -63,4 +63,4 @@ The svg code for the rendered graph.
#### Defined in
[packages/mermaid/src/types.ts:59](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L59)
[packages/mermaid/src/types.ts:84](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L84)

View File

@@ -18,7 +18,7 @@ The nodes to render. If this is set, `querySelector` will be ignored.
#### Defined in
[packages/mermaid/src/mermaid.ts:48](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L48)
[packages/mermaid/src/mermaid.ts:49](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L49)
---
@@ -44,7 +44,7 @@ A callback to call after each diagram is rendered.
#### Defined in
[packages/mermaid/src/mermaid.ts:52](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L52)
[packages/mermaid/src/mermaid.ts:53](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L53)
---
@@ -56,7 +56,7 @@ The query selector to use when finding elements to render. Default: `".mermaid"`
#### Defined in
[packages/mermaid/src/mermaid.ts:44](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L44)
[packages/mermaid/src/mermaid.ts:45](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L45)
---
@@ -68,4 +68,4 @@ If `true`, errors will be logged to the console, but not thrown. Default: `false
#### Defined in
[packages/mermaid/src/mermaid.ts:56](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L56)
[packages/mermaid/src/mermaid.ts:57](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L57)

View File

@@ -14,7 +14,7 @@
#### Defined in
[packages/mermaid/src/defaultConfig.ts:266](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L266)
[packages/mermaid/src/defaultConfig.ts:270](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L270)
---

View File

@@ -87,4 +87,4 @@
#### Defined in
[packages/mermaid/src/mermaid.ts:440](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L440)
[packages/mermaid/src/mermaid.ts:442](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L442)

View File

@@ -64,7 +64,7 @@ To add an integration to this list, see the [Integrations - create page](./integ
- [Mermaid Flow Visual Editor](https://www.mermaidflow.app) ✅
- [Mermerd](https://github.com/KarnerTh/mermerd)
- [Slab](https://slab.com) ✅
- [Swimm](https://docs.swimm.io/features/diagrams-and-charts/#mermaid--swimm--up-to-date-diagrams-) ✅
- [Swimm](https://docs.swimm.io/features/diagrams-and-charts) ✅
- [NotesHub](https://noteshub.app) ✅
- [Notion](https://notion.so) ✅
- [Observable](https://observablehq.com/@observablehq/mermaid) ✅
@@ -74,6 +74,7 @@ To add an integration to this list, see the [Integrations - create page](./integ
- [Markdown for mermaid plugin](https://github.com/jamieh-mongolian/markdown-for-mermaid-plugin)
- [redmine-mermaid](https://github.com/styz/redmine_mermaid)
- Visual Studio Code [Polyglot Interactive Notebooks](https://github.com/dotnet/interactive#net-interactive)
- [Microsoft Loop](https://loop.cloud.microsoft) ✅
### LLM integrations
@@ -144,7 +145,7 @@ Communication tools and platforms
- [Mermaid Extension](https://www.mediawiki.org/wiki/Extension:Mermaid)
- [PmWiki](https://www.pmwiki.org)
- [MermaidJs Cookbook recipe](https://www.pmwiki.org/wiki/Cookbook/MermaidJs)
- [Semantic Media Wiki](https://semantic-mediawiki.org)
- [Semantic Media Wiki](https://www.semantic-mediawiki.org)
- [Mermaid Plugin](https://github.com/SemanticMediaWiki/Mermaid)
- [TiddlyWiki](https://tiddlywiki.com/)
- [mermaid-tw5: wrapper for Mermaid Live](https://github.com/efurlanm/mermaid-tw5)
@@ -184,8 +185,6 @@ Communication tools and platforms
- [=Diagram block](https://github.com/zag/podlite/tree/main/packages/podlite-diagrams)
- [Standard Notes](https://standardnotes.com/)
- [Mermaid Extension](https://github.com/nienow/sn-mermaid)
- [Sublime Text 3](https://sublimetext.com)
- [Mermaid Package](https://packagecontrol.io/packages/Mermaid)
- [VS Code](https://code.visualstudio.com/)
- [Mermaid Editor](https://marketplace.visualstudio.com/items?itemName=tomoyukim.vscode-mermaid-editor)
- [Mermaid Export](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.mermaid-export)
@@ -199,15 +198,22 @@ Communication tools and platforms
- [Vim](https://www.vim.org)
- [Vim Diagram Syntax](https://github.com/zhaozg/vim-diagram)
- [Official Vim Syntax and ft plugin](https://github.com/craigmac/vim-mermaid)
- [Zed](https://zed.dev)
- [zed-mermaid](https://github.com/gabeidx/zed-mermaid)
### Document Generation
- [Astro](https://astro.build/)
- [Adding diagrams to your Astro site with MermaidJS and Playwright](https://agramont.net/blog/diagraming-with-mermaidjs-astro/)
- [Codedoc](https://codedoc.cc/)
- [codedoc-mermaid-plugin](https://www.npmjs.com/package/codedoc-mermaid-plugin)
- [Docsy Hugo Theme](https://www.docsy.dev/docs/adding-content/lookandfeel/#diagrams-with-mermaid) ✅
- [Docusaurus](https://docusaurus.io/docs/markdown-features/diagrams) ✅
- [Gatsby](https://www.gatsbyjs.com/)
- [gatsby-remark-mermaid](https://github.com/remcohaszing/gatsby-remark-mermaid)
- [Jekyll](https://jekyllrb.com/)
- [jekyll-mermaid](https://rubygems.org/gems/jekyll-mermaid)
- [jekyll-mermaid-diagrams](https://github.com/fuzhibo/jekyll-mermaid-diagrams)
- [JSDoc](https://jsdoc.app/)
- [jsdoc-mermaid](https://github.com/Jellyvision/jsdoc-mermaid)
- [Madness](https://madness.dannyb.co/)
@@ -216,7 +222,7 @@ Communication tools and platforms
- [MkDocs](https://www.mkdocs.org)
- [mkdocs-mermaid2-plugin](https://github.com/fralau/mkdocs-mermaid2-plugin)
- [mkdocs-material](https://github.com/squidfunk/mkdocs-material), check the [docs](https://squidfunk.github.io/mkdocs-material/reference/diagrams/)
- [Quarto](https://quarto.org/)
- [Quarto](https://quarto.org/)
- [rehype](https://github.com/rehypejs/rehype)
- [rehype-mermaid](https://github.com/remcohaszing/rehype-mermaid)
- [remark](https://remark.js.org/)
@@ -245,17 +251,12 @@ Communication tools and platforms
### Other
- [Astro](https://astro.build/)
- [Adding diagrams to your Astro site with MermaidJS and Playwright](https://agramont.net/blog/diagraming-with-mermaidjs-astro/)
- [Bisheng](https://www.npmjs.com/package/bisheng)
- [bisheng-plugin-mermaid](https://github.com/yct21/bisheng-plugin-mermaid)
- [Blazorade Mermaid: Render Mermaid diagrams in Blazor applications](https://github.com/Blazorade/Blazorade-Mermaid/wiki)
- [Codemia: A tool to practice system design problems](https://codemia.io) ✅
- [ExDoc](https://github.com/elixir-lang/ex_doc)
- [Rendering Mermaid graphs](https://github.com/elixir-lang/ex_doc#rendering-mermaid-graphs)
- [Jekyll](https://jekyllrb.com/)
- [jekyll-mermaid](https://rubygems.org/gems/jekyll-mermaid)
- [jekyll-mermaid-diagrams](https://github.com/fuzhibo/jekyll-mermaid-diagrams)
- [MarkChart: Preview Mermaid diagrams on macOS](https://markchart.app/)
- [mermaid-isomorphic](https://github.com/remcohaszing/mermaid-isomorphic)
- [mermaid-server: Generate diagrams using a HTTP request](https://github.com/TomWright/mermaid-server)

View File

@@ -22,17 +22,20 @@ Try the Ultimate AI, Mermaid, and Visual Diagramming Suite by creating an accoun
- **Editor** - A web based editor for creating and editing Mermaid diagrams.
- **Visual Editor** - The Visual Editor enables users of all skill levels to create diagrams easily and efficiently, with both GUI and code-based editing options.
- **Mermaid AI** - Use our embedded AI Chat to generate diagrams from natural language descriptions.
- **AI Chat** - Use our embedded AI Chat to generate diagrams from natural language descriptions.
- **Whiteboard** - A virtual whiteboard for creating and editing Mermaid diagrams.
- **Plugins** - A plugin system for extending the functionality of Mermaid.
Official Mermaid Chart plugins:
- [Mermaid Chart GPT](https://chat.openai.com/g/g-1IRFKwq4G-mermaid-chart)
- [Confluence](https://marketplace.atlassian.com/apps/1234056/mermaid-chart-for-confluence?hosting=cloud&tab=overview)
- [Jira](https://marketplace.atlassian.com/apps/1234810/mermaid-chart-for-jira?tab=overview&hosting=cloud)
- [Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=MermaidChart.vscode-mermaid-chart)
- [JetBrains IDE](https://plugins.jetbrains.com/plugin/23043-mermaid-chart)
- [Google Docs](https://gsuite.google.com/marketplace/app/mermaidchart/947683068472)
- [Microsoft PowerPoint and Word](https://appsource.microsoft.com/en-us/product/office/WA200006214?tab=Overview)
Visit our [Plugins](https://www.mermaidchart.com/plugins) page for more information.

View File

@@ -63,7 +63,7 @@ import matplotlib.pyplot as plt
def mm(graph):
graphbytes = graph.encode("utf8")
base64_bytes = base64.b64encode(graphbytes)
base64_bytes = base64.urlsafe_b64encode(graphbytes)
base64_string = base64_bytes.decode("ascii")
display(Image(url="https://mermaid.ink/img/" + base64_string))

View File

@@ -55,6 +55,10 @@ For a more detailed introduction to Mermaid and some of its more basic uses, loo
**Thanks to all involved, people committing pull requests, people answering questions and special thanks to Tyler Long who is helping me maintain the project 🙏**
Our PR Visual Regression Testing is powered by [Argos](https://argos-ci.com/?utm_source=mermaid&utm_campaign=oss) with their generous Open Source plan. It makes the process of reviewing PRs with visual changes a breeze.
[![Covered by Argos Visual Testing](https://argos-ci.com/badge-large.svg)](https://argos-ci.com?utm_source=mermaid&utm_campaign=oss)
In our release process we rely heavily on visual regression tests using [applitools](https://applitools.com/). Applitools is a great service which has been easy to use and integrate with our tests.
<a href="https://applitools.com/">

View File

@@ -94,10 +94,8 @@ Mermaid offers a variety of styles or “looks” for your diagrams, allowing yo
**Available Looks:**
```
• Hand-Drawn Look: For a more personal, creative touch, the hand-drawn look brings a sketch-like quality to your diagrams. This style is perfect for informal settings or when you want to add a bit of personality to your diagrams.
• Classic Look: If you prefer the traditional Mermaid style, the classic look maintains the original appearance that many users are familiar with. Its great for consistency across projects or when you want to keep the familiar aesthetic.
```
- Hand-Drawn Look: For a more personal, creative touch, the hand-drawn look brings a sketch-like quality to your diagrams. This style is perfect for informal settings or when you want to add a bit of personality to your diagrams.
- Classic Look: If you prefer the traditional Mermaid style, the classic look maintains the original appearance that many users are familiar with. Its great for consistency across projects or when you want to keep the familiar aesthetic.
**How to Select a Look:**
@@ -133,10 +131,8 @@ In addition to customizing the look of your diagrams, Mermaid Chart now allows y
#### Supported Layout Algorithms:
```
• Dagre (default): This is the classic layout algorithm that has been used in Mermaid for a long time. It provides a good balance of simplicity and visual clarity, making it ideal for most diagrams.
• ELK: For those who need more sophisticated layout capabilities, especially when working with large or intricate diagrams, the ELK (Eclipse Layout Kernel) layout offers advanced options. It provides a more optimized arrangement, potentially reducing overlapping and improving readability. This is not included out the box but needs to be added when integrating mermaid for sites/applications that want to have elk support.
```
- Dagre (default): This is the classic layout algorithm that has been used in Mermaid for a long time. It provides a good balance of simplicity and visual clarity, making it ideal for most diagrams.
- ELK: For those who need more sophisticated layout capabilities, especially when working with large or intricate diagrams, the ELK (Eclipse Layout Kernel) layout offers advanced options. It provides a more optimized arrangement, potentially reducing overlapping and improving readability. This is not included out the box but needs to be added when integrating mermaid for sites/applications that want to have elk support.
#### How to Select a Layout Algorithm:

View File

@@ -6,6 +6,30 @@
# Blog
## [Mermaid 11.4 is out: New Features and Kanban Diagramming](https://www.mermaidchart.com/blog/posts/mermaid-11-4-is-out-new-features-and-kanban-diagramming)
Mermaid 11.4 brings enhanced functionality with the introduction of Kanban diagrams, allowing users to create visual workflows with status columns and task details.
October 31, 2024 · 2 mins
## [How To Build an ER Diagram with Mermaid Chart](https://www.mermaidchart.com/blog/posts/how-to-build-an-er-diagram-with-mermaid-chart)
An entity relationship (ER) diagram acts like a blueprint for your database. This makes ER diagrams effective tools for anyone dealing with complex databases, data modeling, and AI model training.
October 24, 2024 · 4 mins
## [Expanding the Horizons of Mermaid Flowcharts: Introducing 30 New Shapes!](https://www.mermaidchart.com/blog/posts/new-mermaid-flowchart-shapes/)
24 September 2024 · 5 mins
Discover 30 new shapes in Mermaid flowcharts, offering enhanced clarity, customization, and versatility for more dynamic and expressive visualizations.
## [Introducing Architecture Diagrams in Mermaid](https://www.mermaidchart.com/blog/posts/mermaid-supports-architecture-diagrams/)
2 September 2024 · 2 mins
Discover the fresh new and unique Neo and Hand-Drawn looks for Mermaid Diagrams, while still offering the classic look you love.
## [Mermaid v11 is out!](https://www.mermaidchart.com/blog/posts/mermaid-v11/)
23 August 2024 · 2 mins

227
docs/syntax/architecture.md Normal file
View File

@@ -0,0 +1,227 @@
> **Warning**
>
> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT.
>
> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/architecture.md](../../packages/mermaid/src/docs/syntax/architecture.md).
# Architecture Diagrams Documentation (v11.1.0+)
> In the context of mermaid-js, the architecture diagram is used to show the relationship between services and resources commonly found within the Cloud or CI/CD deployments. In an architecture diagram, services (nodes) are connected by edges. Related services can be placed within groups to better illustrate how they are organized.
## Example
```mermaid-example
architecture-beta
group api(cloud)[API]
service db(database)[Database] in api
service disk1(disk)[Storage] in api
service disk2(disk)[Storage] in api
service server(server)[Server] in api
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
```
```mermaid
architecture-beta
group api(cloud)[API]
service db(database)[Database] in api
service disk1(disk)[Storage] in api
service disk2(disk)[Storage] in api
service server(server)[Server] in api
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
```
## Syntax
The building blocks of an architecture are `groups`, `services`, `edges`, and `junctions`.
For supporting components, icons are declared by surrounding the icon name with `()`, while labels are declared by surrounding the text with `[]`.
To begin an architecture diagram, use the keyword `architecture-beta`, followed by your groups, services, edges, and junctions. While each of the 3 building blocks can be declared in any order, care must be taken to ensure the identifier was previously declared by another component.
### Groups
The syntax for declaring a group is:
```
group {group id}({icon name})[{title}] (in {parent id})?
```
Put together:
```
group public_api(cloud)[Public API]
```
creates a group identified as `public_api`, uses the icon `cloud`, and has the label `Public API`.
Additionally, groups can be placed within a group using the optional `in` keyword
```
group private_api(cloud)[Private API] in public_api
```
### Services
The syntax for declaring a service is:
```
service {service id}({icon name})[{title}] (in {parent id})?
```
Put together:
```
service database1(database)[My Database]
```
creates the service identified as `database1`, using the icon `database`, with the label `My Database`.
If the service belongs to a group, it can be placed inside it through the optional `in` keyword
```
service database1(database)[My Database] in private_api
```
### Edges
The syntax for declaring an edge is:
```
{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?
```
#### Edge Direction
The side of the service the edge comes out of is specified by adding a colon (`:`) to the side of the service connecting to the arrow and adding `L|R|T|B`
For example:
```
db:R -- L:server
```
creates an edge between the services `db` and `server`, with the edge coming out of the right of `db` and the left of `server`.
```
db:T -- L:server
```
creates a 90 degree edge between the services `db` and `server`, with the edge coming out of the top of `db` and the left of `server`.
#### Arrows
Arrows can be added to each side of an edge by adding `<` before the direction on the left, and/or `>` after the direction on the right.
For example:
```
subnet:R --> L:gateway
```
creates an edge with the arrow going into the `gateway` service
#### Edges out of Groups
To have an edge go from a group to another group or service within another group, the `{group}` modifier can be added after the `serviceId`.
For example:
```
service server[Server] in groupOne
service subnet[Subnet] in groupTwo
server{group}:B --> T:subnet{group}
```
creates an edge going out of `groupOne`, adjacent to `server`, and into `groupTwo`, adjacent to `subnet`.
It's important to note that `groupId`s cannot be used for specifying edges and the `{group}` modifier can only be used for services within a group.
### Junctions
Junctions are a special type of node which acts as a potential 4-way split between edges.
The syntax for declaring a junction is:
```
junction {junction id} (in {parent id})?
```
```mermaid-example
architecture-beta
service left_disk(disk)[Disk]
service top_disk(disk)[Disk]
service bottom_disk(disk)[Disk]
service top_gateway(internet)[Gateway]
service bottom_gateway(internet)[Gateway]
junction junctionCenter
junction junctionRight
left_disk:R -- L:junctionCenter
top_disk:B -- T:junctionCenter
bottom_disk:T -- B:junctionCenter
junctionCenter:R -- L:junctionRight
top_gateway:B -- T:junctionRight
bottom_gateway:T -- B:junctionRight
```
```mermaid
architecture-beta
service left_disk(disk)[Disk]
service top_disk(disk)[Disk]
service bottom_disk(disk)[Disk]
service top_gateway(internet)[Gateway]
service bottom_gateway(internet)[Gateway]
junction junctionCenter
junction junctionRight
left_disk:R -- L:junctionCenter
top_disk:B -- T:junctionCenter
bottom_disk:T -- B:junctionCenter
junctionCenter:R -- L:junctionRight
top_gateway:B -- T:junctionRight
bottom_gateway:T -- B:junctionRight
```
## Icons
By default, architecture diagram supports the following icons: `cloud`, `database`, `disk`, `internet`, `server`.
Users can use any of the 200,000+ icons available in iconify.design, or add their own custom icons, by following the steps [here](../config/icons.md).
After the icons are installed, they can be used in the architecture diagram by using the format "name:icon-name", where name is the value used when registering the icon pack.
```mermaid-example
architecture-beta
group api(logos:aws-lambda)[API]
service db(logos:aws-aurora)[Database] in api
service disk1(logos:aws-glacier)[Storage] in api
service disk2(logos:aws-s3)[Storage] in api
service server(logos:aws-ec2)[Server] in api
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
```
```mermaid
architecture-beta
group api(logos:aws-lambda)[API]
service db(logos:aws-aurora)[Database] in api
service disk1(logos:aws-glacier)[Storage] in api
service disk2(logos:aws-s3)[Storage] in api
service server(logos:aws-ec2)[Server] in api
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
```

View File

@@ -141,7 +141,7 @@ block-beta
a["A label"] b:2 c:2 d
```
In this example, the block labeled "A wide one" spans two columns, while blocks 'b', 'c', and 'd' are allocated their own columns. This flexibility in block sizing is crucial for accurately representing systems with components of varying significance or size.
In this example, the block labeled "A labels" spans one column, while blocks 'b', 'c' span 2 columns, and 'd' is again allocated its own column. This flexibility in block sizing is crucial for accurately representing systems with components of varying significance or size.
### Creating Composite Blocks
@@ -211,6 +211,27 @@ block-beta
This example demonstrates how Mermaid dynamically adjusts the width of the columns to accommodate the widest block, in this case, 'a' and the composite block 'e'. This dynamic adjustment is essential for creating visually balanced and easy-to-understand diagrams.
**Merging Blocks Horizontally:**
In scenarios where you need to stack blocks horizontally, you can use column width to accomplish the task. Blocks can be arranged vertically by putting them in a single column. Here is how you can create a block diagram in which 4 blocks are stacked on top of each other:
```mermaid-example
block-beta
block
columns 1
a["A label"] b c d
end
```
```mermaid
block-beta
block
columns 1
a["A label"] b c d
end
```
In this example, the width of the merged block dynamically adjusts to the width of the largest child block.
With these advanced configuration options, Mermaid's block diagrams can be tailored to represent a wide array of complex systems and structures. The flexibility offered by these features enables users to create diagrams that are both informative and visually appealing. In the following sections, we will explore further capabilities, including different block shapes and linking options.
## 4. Block Varieties and Shapes

View File

@@ -427,6 +427,51 @@ And `Link` can be one of:
| -- | Solid |
| .. | Dashed |
### Lollipop Interfaces
Classes can also be given a special relation type that defines a lollipop interface on the class. A lollipop interface is defined using the following syntax:
- `bar ()-- foo`
- `foo --() bar`
The interface (bar) with the lollipop connects to the class (foo).
Note: Each interface that is defined is unique and is meant to not be shared between classes / have multiple edges connecting to it.
```mermaid-example
classDiagram
bar ()-- foo
```
```mermaid
classDiagram
bar ()-- foo
```
```mermaid-example
classDiagram
class Class01 {
int amount
draw()
}
Class01 --() bar
Class02 --() bar
foo ()-- Class01
```
```mermaid
classDiagram
class Class01 {
int amount
draw()
}
Class01 --() bar
Class02 --() bar
foo ()-- Class01
```
## Define Namespace
A namespace groups classes.
@@ -776,10 +821,12 @@ Beginner's tip—a full example using interactive links in an HTML page:
## Styling
### Styling a node (v10.7.0+)
### Styling a node
It is possible to apply specific styles such as a thicker border or a different background color to an individual node using the `style` keyword.
Note that notes and namespaces cannot be styled individually but do support themes.
```mermaid-example
classDiagram
class Animal
@@ -799,11 +846,102 @@ classDiagram
#### Classes
More convenient than defining the style every time is to define a class of styles and attach this class to the nodes that
should have a different look. This is done by predefining classes in css styles that can be applied from the graph definition using the `cssClass` statement or the `:::` short hand.
should have a different look.
A class definition looks like the example below:
```
classDef className fill:#f9f,stroke:#333,stroke-width:4px;
```
Also, it is possible to define style to multiple classes in one statement:
```
classDef firstClassName,secondClassName font-size:12pt;
```
Attachment of a class to a node is done as per below:
```
cssClass "nodeId1" className;
```
It is also possible to attach a class to a list of nodes in one statement:
```
cssClass "nodeId1,nodeId2" className;
```
A shorter form of adding a class is to attach the classname to the node using the `:::` operator:
```mermaid-example
classDiagram
class Animal:::someclass
classDef someclass fill:#f96
```
```mermaid
classDiagram
class Animal:::someclass
classDef someclass fill:#f96
```
Or:
```mermaid-example
classDiagram
class Animal:::someclass {
-int sizeInFeet
-canEat()
}
classDef someclass fill:#f96
```
```mermaid
classDiagram
class Animal:::someclass {
-int sizeInFeet
-canEat()
}
classDef someclass fill:#f96
```
### Default class
If a class is named default it will be applied to all nodes. Specific styles and classes should be defined afterwards to override the applied default styling.
```
classDef default fill:#f9f,stroke:#333,stroke-width:4px;
```
```mermaid-example
classDiagram
class Animal:::pink
class Mineral
classDef default fill:#f96,color:red
classDef pink color:#f9f
```
```mermaid
classDiagram
class Animal:::pink
class Mineral
classDef default fill:#f96,color:red
classDef pink color:#f9f
```
### CSS Classes
It is also possible to predefine classes in CSS styles that can be applied from the graph definition as in the example
below:
**Example style**
```html
<style>
.styleClass > rect {
.styleClass > * > g {
fill: #ff0000;
stroke: #ffff00;
stroke-width: 4px;
@@ -811,19 +949,7 @@ should have a different look. This is done by predefining classes in css styles
</style>
```
Then attaching that class to a specific node:
```
cssClass "nodeId1" styleClass;
```
It is also possible to attach a class to a list of nodes in one statement:
```
cssClass "nodeId1,nodeId2" styleClass;
```
A shorter form of adding a class is to attach the classname to the node using the `:::` operator:
**Example definition**
```mermaid-example
classDiagram
@@ -835,136 +961,32 @@ classDiagram
class Animal:::styleClass
```
Or:
```mermaid-example
classDiagram
class Animal:::styleClass {
-int sizeInFeet
-canEat()
}
```
```mermaid
classDiagram
class Animal:::styleClass {
-int sizeInFeet
-canEat()
}
```
?> cssClasses cannot be added using this shorthand method at the same time as a relation statement.
?> Due to limitations with existing markup for class diagrams, it is not currently possible to define css classes within the diagram itself. **_Coming soon!_**
### Default Styles
The main styling of the class diagram is done with a preset number of css classes. During rendering these classes are extracted from the file located at src/themes/class.scss. The classes used here are described below:
| Class | Description |
| ------------------ | ----------------------------------------------------------------- |
| g.classGroup text | Styles for general class text |
| classGroup .title | Styles for general class title |
| g.classGroup rect | Styles for class diagram rectangle |
| g.classGroup line | Styles for class diagram line |
| .classLabel .box | Styles for class label box |
| .classLabel .label | Styles for class label text |
| composition | Styles for composition arrow head and arrow line |
| aggregation | Styles for aggregation arrow head and arrow line(dashed or solid) |
| dependency | Styles for dependency arrow head and arrow line |
#### Sample stylesheet
```scss
body {
background: white;
}
g.classGroup text {
fill: $nodeBorder;
stroke: none;
font-family: 'trebuchet ms', verdana, arial;
font-family: var(--mermaid-font-family);
font-size: 10px;
.title {
font-weight: bolder;
}
}
g.classGroup rect {
fill: $nodeBkg;
stroke: $nodeBorder;
}
g.classGroup line {
stroke: $nodeBorder;
stroke-width: 1;
}
.classLabel .box {
stroke: none;
stroke-width: 0;
fill: $nodeBkg;
opacity: 0.5;
}
.classLabel .label {
fill: $nodeBorder;
font-size: 10px;
}
.relation {
stroke: $nodeBorder;
stroke-width: 1;
fill: none;
}
@mixin composition {
fill: $nodeBorder;
stroke: $nodeBorder;
stroke-width: 1;
}
#compositionStart {
@include composition;
}
#compositionEnd {
@include composition;
}
@mixin aggregation {
fill: $nodeBkg;
stroke: $nodeBorder;
stroke-width: 1;
}
#aggregationStart {
@include aggregation;
}
#aggregationEnd {
@include aggregation;
}
#dependencyStart {
@include composition;
}
#dependencyEnd {
@include composition;
}
#extensionStart {
@include composition;
}
#extensionEnd {
@include composition;
}
```
> cssClasses cannot be added using this shorthand method at the same time as a relation statement.
## Configuration
`Coming soon!`
### Members Box
It is possible to hide the empty members box of a class node.
This is done by changing the **hideEmptyMembersBox** value of the class diagram configuration. For more information on how to edit the Mermaid configuration see the [configuration page.](https://mermaid.js.org/config/configuration.html)
```mermaid-example
---
config:
class:
hideEmptyMembersBox: true
---
classDiagram
class Duck
```
```mermaid
---
config:
class:
hideEmptyMembersBox: true
---
classDiagram
class Duck
```

View File

@@ -286,6 +286,7 @@ erDiagram
- If you want the relationship label to be more than one word, you must use double quotes around the phrase
- If you don't want a label at all on a relationship, you must use an empty double-quoted string
- (v11.1.0+) If you want a multi-line label on a relationship, use `<br />` between the two lines (`"first line<br />second line"`)
## Styling

View File

@@ -298,6 +298,694 @@ flowchart TD
id1(((This is the text in the circle)))
```
## Expanded Node Shapes in Mermaid Flowcharts (v11.3.0+)
Mermaid introduces 30 new shapes to enhance the flexibility and precision of flowchart creation. These new shapes provide more options to represent processes, decisions, events, data storage visually, and other elements within your flowcharts, improving clarity and semantic meaning.
New Syntax for Shape Definition
Mermaid now supports a general syntax for defining shape types to accommodate the growing number of shapes. This syntax allows you to assign specific shapes to nodes using a clear and flexible format:
```
A@{ shape: rect }
```
This syntax creates a node A as a rectangle. It renders in the same way as `A["A"]`, or `A`.
### Complete List of New Shapes
Below is a comprehensive list of the newly introduced shapes and their corresponding semantic meanings, short names, and aliases:
| **Semantic Name** | **Shape Name** | **Short Name** | **Description** | **Alias Supported** |
| --------------------------------- | ---------------------- | -------------- | ------------------------------ | ---------------------------------------------------------------- |
| Card | Notched Rectangle | `notch-rect` | Represents a card | `card`, `notched-rectangle` |
| Collate | Hourglass | `hourglass` | Represents a collate operation | `collate`, `hourglass` |
| Com Link | Lightning Bolt | `bolt` | Communication link | `com-link`, `lightning-bolt` |
| Comment | Curly Brace | `brace` | Adds a comment | `brace-l`, `comment` |
| Comment Right | Curly Brace | `brace-r` | Adds a comment | |
| Comment with braces on both sides | Curly Braces | `braces` | Adds a comment | |
| Data Input/Output | Lean Right | `lean-r` | Represents input or output | `in-out`, `lean-right` |
| Data Input/Output | Lean Left | `lean-l` | Represents output or input | `lean-left`, `out-in` |
| Database | Cylinder | `cyl` | Database storage | `cylinder`, `database`, `db` |
| Decision | Diamond | `diam` | Decision-making step | `decision`, `diamond`, `question` |
| Delay | Half-Rounded Rectangle | `delay` | Represents a delay | `half-rounded-rectangle` |
| Direct Access Storage | Horizontal Cylinder | `h-cyl` | Direct access storage | `das`, `horizontal-cylinder` |
| Disk Storage | Lined Cylinder | `lin-cyl` | Disk storage | `disk`, `lined-cylinder` |
| Display | Curved Trapezoid | `curv-trap` | Represents a display | `curved-trapezoid`, `display` |
| Divided Process | Divided Rectangle | `div-rect` | Divided process shape | `div-proc`, `divided-process`, `divided-rectangle` |
| Document | Document | `doc` | Represents a document | `doc`, `document` |
| Event | Rounded Rectangle | `rounded` | Represents an event | `event` |
| Extract | Triangle | `tri` | Extraction process | `extract`, `triangle` |
| Fork/Join | Filled Rectangle | `fork` | Fork or join in process flow | `join` |
| Internal Storage | Window Pane | `win-pane` | Internal storage | `internal-storage`, `window-pane` |
| Junction | Filled Circle | `f-circ` | Junction point | `filled-circle`, `junction` |
| Lined Document | Lined Document | `lin-doc` | Lined document | `lined-document` |
| Lined/Shaded Process | Lined Rectangle | `lin-rect` | Lined process shape | `lin-proc`, `lined-process`, `lined-rectangle`, `shaded-process` |
| Loop Limit | Trapezoidal Pentagon | `notch-pent` | Loop limit step | `loop-limit`, `notched-pentagon` |
| Manual File | Flipped Triangle | `flip-tri` | Manual file operation | `flipped-triangle`, `manual-file` |
| Manual Input | Sloped Rectangle | `sl-rect` | Manual input step | `manual-input`, `sloped-rectangle` |
| Manual Operation | Trapezoid Base Top | `trap-t` | Represents a manual task | `inv-trapezoid`, `manual`, `trapezoid-top` |
| Multi-Document | Stacked Document | `docs` | Multiple documents | `documents`, `st-doc`, `stacked-document` |
| Multi-Process | Stacked Rectangle | `st-rect` | Multiple processes | `processes`, `procs`, `stacked-rectangle` |
| Odd | Odd | `odd` | Odd shape | |
| Paper Tape | Flag | `flag` | Paper tape | `paper-tape` |
| Prepare Conditional | Hexagon | `hex` | Preparation or condition step | `hexagon`, `prepare` |
| Priority Action | Trapezoid Base Bottom | `trap-b` | Priority action | `priority`, `trapezoid`, `trapezoid-bottom` |
| Process | Rectangle | `rect` | Standard process shape | `proc`, `process`, `rectangle` |
| Start | Circle | `circle` | Starting point | `circ` |
| Start | Small Circle | `sm-circ` | Small starting point | `small-circle`, `start` |
| Stop | Double Circle | `dbl-circ` | Represents a stop point | `double-circle` |
| Stop | Framed Circle | `fr-circ` | Stop point | `framed-circle`, `stop` |
| Stored Data | Bow Tie Rectangle | `bow-rect` | Stored data | `bow-tie-rectangle`, `stored-data` |
| Subprocess | Framed Rectangle | `fr-rect` | Subprocess | `framed-rectangle`, `subproc`, `subprocess`, `subroutine` |
| Summary | Crossed Circle | `cross-circ` | Summary | `crossed-circle`, `summary` |
| Tagged Document | Tagged Document | `tag-doc` | Tagged document | `tag-doc`, `tagged-document` |
| Tagged Process | Tagged Rectangle | `tag-rect` | Tagged process | `tag-proc`, `tagged-process`, `tagged-rectangle` |
| Terminal Point | Stadium | `stadium` | Terminal point | `pill`, `terminal` |
| Text Block | Text Block | `text` | Text block | |
### Example Flowchart with New Shapes
Heres an example flowchart that utilizes some of the newly introduced shapes:
```mermaid-example
flowchart RL
A@{ shape: manual-file, label: "File Handling"}
B@{ shape: manual-input, label: "User Input"}
C@{ shape: docs, label: "Multiple Documents"}
D@{ shape: procs, label: "Process Automation"}
E@{ shape: paper-tape, label: "Paper Records"}
```
```mermaid
flowchart RL
A@{ shape: manual-file, label: "File Handling"}
B@{ shape: manual-input, label: "User Input"}
C@{ shape: docs, label: "Multiple Documents"}
D@{ shape: procs, label: "Process Automation"}
E@{ shape: paper-tape, label: "Paper Records"}
```
### Process
```mermaid-example
flowchart TD
A@{ shape: rect, label: "This is a process" }
```
```mermaid
flowchart TD
A@{ shape: rect, label: "This is a process" }
```
### Event
```mermaid-example
flowchart TD
A@{ shape: rounded, label: "This is an event" }
```
```mermaid
flowchart TD
A@{ shape: rounded, label: "This is an event" }
```
### Terminal Point (Stadium)
```mermaid-example
flowchart TD
A@{ shape: stadium, label: "Terminal point" }
```
```mermaid
flowchart TD
A@{ shape: stadium, label: "Terminal point" }
```
### Subprocess
```mermaid-example
flowchart TD
A@{ shape: subproc, label: "This is a subprocess" }
```
```mermaid
flowchart TD
A@{ shape: subproc, label: "This is a subprocess" }
```
### Database (Cylinder)
```mermaid-example
flowchart TD
A@{ shape: cyl, label: "Database" }
```
```mermaid
flowchart TD
A@{ shape: cyl, label: "Database" }
```
### Start (Circle)
```mermaid-example
flowchart TD
A@{ shape: circle, label: "Start" }
```
```mermaid
flowchart TD
A@{ shape: circle, label: "Start" }
```
### Odd
```mermaid-example
flowchart TD
A@{ shape: odd, label: "Odd shape" }
```
```mermaid
flowchart TD
A@{ shape: odd, label: "Odd shape" }
```
### Decision (Diamond)
```mermaid-example
flowchart TD
A@{ shape: diamond, label: "Decision" }
```
```mermaid
flowchart TD
A@{ shape: diamond, label: "Decision" }
```
### Prepare Conditional (Hexagon)
```mermaid-example
flowchart TD
A@{ shape: hex, label: "Prepare conditional" }
```
```mermaid
flowchart TD
A@{ shape: hex, label: "Prepare conditional" }
```
### Data Input/Output (Lean Right)
```mermaid-example
flowchart TD
A@{ shape: lean-r, label: "Input/Output" }
```
```mermaid
flowchart TD
A@{ shape: lean-r, label: "Input/Output" }
```
### Data Input/Output (Lean Left)
```mermaid-example
flowchart TD
A@{ shape: lean-l, label: "Output/Input" }
```
```mermaid
flowchart TD
A@{ shape: lean-l, label: "Output/Input" }
```
### Priority Action (Trapezoid Base Bottom)
```mermaid-example
flowchart TD
A@{ shape: trap-b, label: "Priority action" }
```
```mermaid
flowchart TD
A@{ shape: trap-b, label: "Priority action" }
```
### Manual Operation (Trapezoid Base Top)
```mermaid-example
flowchart TD
A@{ shape: trap-t, label: "Manual operation" }
```
```mermaid
flowchart TD
A@{ shape: trap-t, label: "Manual operation" }
```
### Stop (Double Circle)
```mermaid-example
flowchart TD
A@{ shape: dbl-circ, label: "Stop" }
```
```mermaid
flowchart TD
A@{ shape: dbl-circ, label: "Stop" }
```
### Text Block
```mermaid-example
flowchart TD
A@{ shape: text, label: "This is a text block" }
```
```mermaid
flowchart TD
A@{ shape: text, label: "This is a text block" }
```
### Card (Notched Rectangle)
```mermaid-example
flowchart TD
A@{ shape: notch-rect, label: "Card" }
```
```mermaid
flowchart TD
A@{ shape: notch-rect, label: "Card" }
```
### Lined/Shaded Process
```mermaid-example
flowchart TD
A@{ shape: lin-rect, label: "Lined process" }
```
```mermaid
flowchart TD
A@{ shape: lin-rect, label: "Lined process" }
```
### Start (Small Circle)
```mermaid-example
flowchart TD
A@{ shape: sm-circ, label: "Small start" }
```
```mermaid
flowchart TD
A@{ shape: sm-circ, label: "Small start" }
```
### Stop (Framed Circle)
```mermaid-example
flowchart TD
A@{ shape: framed-circle, label: "Stop" }
```
```mermaid
flowchart TD
A@{ shape: framed-circle, label: "Stop" }
```
### Fork/Join (Long Rectangle)
```mermaid-example
flowchart TD
A@{ shape: fork, label: "Fork or Join" }
```
```mermaid
flowchart TD
A@{ shape: fork, label: "Fork or Join" }
```
### Collate (Hourglass)
```mermaid-example
flowchart TD
A@{ shape: hourglass, label: "Collate" }
```
```mermaid
flowchart TD
A@{ shape: hourglass, label: "Collate" }
```
### Comment (Curly Brace)
```mermaid-example
flowchart TD
A@{ shape: comment, label: "Comment" }
```
```mermaid
flowchart TD
A@{ shape: comment, label: "Comment" }
```
### Comment Right (Curly Brace Right)
```mermaid-example
flowchart TD
A@{ shape: brace-r, label: "Comment" }
```
```mermaid
flowchart TD
A@{ shape: brace-r, label: "Comment" }
```
### Comment with braces on both sides
```mermaid-example
flowchart TD
A@{ shape: braces, label: "Comment" }
```
```mermaid
flowchart TD
A@{ shape: braces, label: "Comment" }
```
### Com Link (Lightning Bolt)
```mermaid-example
flowchart TD
A@{ shape: bolt, label: "Communication link" }
```
```mermaid
flowchart TD
A@{ shape: bolt, label: "Communication link" }
```
### Document
```mermaid-example
flowchart TD
A@{ shape: doc, label: "Document" }
```
```mermaid
flowchart TD
A@{ shape: doc, label: "Document" }
```
### Delay (Half-Rounded Rectangle)
```mermaid-example
flowchart TD
A@{ shape: delay, label: "Delay" }
```
```mermaid
flowchart TD
A@{ shape: delay, label: "Delay" }
```
### Direct Access Storage (Horizontal Cylinder)
```mermaid-example
flowchart TD
A@{ shape: das, label: "Direct access storage" }
```
```mermaid
flowchart TD
A@{ shape: das, label: "Direct access storage" }
```
### Disk Storage (Lined Cylinder)
```mermaid-example
flowchart TD
A@{ shape: lin-cyl, label: "Disk storage" }
```
```mermaid
flowchart TD
A@{ shape: lin-cyl, label: "Disk storage" }
```
### Display (Curved Trapezoid)
```mermaid-example
flowchart TD
A@{ shape: curv-trap, label: "Display" }
```
```mermaid
flowchart TD
A@{ shape: curv-trap, label: "Display" }
```
### Divided Process (Divided Rectangle)
```mermaid-example
flowchart TD
A@{ shape: div-rect, label: "Divided process" }
```
```mermaid
flowchart TD
A@{ shape: div-rect, label: "Divided process" }
```
### Extract (Small Triangle)
```mermaid-example
flowchart TD
A@{ shape: tri, label: "Extract" }
```
```mermaid
flowchart TD
A@{ shape: tri, label: "Extract" }
```
### Internal Storage (Window Pane)
```mermaid-example
flowchart TD
A@{ shape: win-pane, label: "Internal storage" }
```
```mermaid
flowchart TD
A@{ shape: win-pane, label: "Internal storage" }
```
### Junction (Filled Circle)
```mermaid-example
flowchart TD
A@{ shape: f-circ, label: "Junction" }
```
```mermaid
flowchart TD
A@{ shape: f-circ, label: "Junction" }
```
### Lined Document
```mermaid-example
flowchart TD
A@{ shape: lin-doc, label: "Lined document" }
```
```mermaid
flowchart TD
A@{ shape: lin-doc, label: "Lined document" }
```
### Loop Limit (Notched Pentagon)
```mermaid-example
flowchart TD
A@{ shape: notch-pent, label: "Loop limit" }
```
```mermaid
flowchart TD
A@{ shape: notch-pent, label: "Loop limit" }
```
### Manual File (Flipped Triangle)
```mermaid-example
flowchart TD
A@{ shape: flip-tri, label: "Manual file" }
```
```mermaid
flowchart TD
A@{ shape: flip-tri, label: "Manual file" }
```
### Manual Input (Sloped Rectangle)
```mermaid-example
flowchart TD
A@{ shape: sl-rect, label: "Manual input" }
```
```mermaid
flowchart TD
A@{ shape: sl-rect, label: "Manual input" }
```
### Multi-Document (Stacked Document)
```mermaid-example
flowchart TD
A@{ shape: docs, label: "Multiple documents" }
```
```mermaid
flowchart TD
A@{ shape: docs, label: "Multiple documents" }
```
### Multi-Process (Stacked Rectangle)
```mermaid-example
flowchart TD
A@{ shape: processes, label: "Multiple processes" }
```
```mermaid
flowchart TD
A@{ shape: processes, label: "Multiple processes" }
```
### Paper Tape (Flag)
```mermaid-example
flowchart TD
A@{ shape: flag, label: "Paper tape" }
```
```mermaid
flowchart TD
A@{ shape: flag, label: "Paper tape" }
```
### Stored Data (Bow Tie Rectangle)
```mermaid-example
flowchart TD
A@{ shape: bow-rect, label: "Stored data" }
```
```mermaid
flowchart TD
A@{ shape: bow-rect, label: "Stored data" }
```
### Summary (Crossed Circle)
```mermaid-example
flowchart TD
A@{ shape: cross-circ, label: "Summary" }
```
```mermaid
flowchart TD
A@{ shape: cross-circ, label: "Summary" }
```
### Tagged Document
```mermaid-example
flowchart TD
A@{ shape: tag-doc, label: "Tagged document" }
```
```mermaid
flowchart TD
A@{ shape: tag-doc, label: "Tagged document" }
```
### Tagged Process (Tagged Rectangle)
```mermaid-example
flowchart TD
A@{ shape: tag-rect, label: "Tagged process" }
```
```mermaid
flowchart TD
A@{ shape: tag-rect, label: "Tagged process" }
```
## Special shapes in Mermaid Flowcharts (v11.3.0+)
Mermaid also introduces 2 special shapes to enhance your flowcharts: **icon** and **image**. These shapes allow you to include icons and images directly within your flowcharts, providing more visual context and clarity.
### Icon Shape
You can use the `icon` shape to include an icon in your flowchart. To use icons, you need to register the icon pack first. Follow the instructions provided [here](../config/icons.md). The syntax for defining an icon shape is as follows:
```mermaid-example
flowchart TD
A@{ icon: "fa:user", form: "square", label: "User Icon", pos: "t", h: 60 }
```
```mermaid
flowchart TD
A@{ icon: "fa:user", form: "square", label: "User Icon", pos: "t", h: 60 }
```
### Parameters
- **icon**: The name of the icon from the registered icon pack.
- **form**: Specifies the background shape of the icon. If not defined there will be no background to icon. Options include:
- `square`
- `circle`
- `rounded`
- **label**: The text label associated with the icon. This can be any string. If not defined, no label will be displayed.
- **pos**: The position of the label. If not defined label will default to bottom of icon. Possible values are:
- `t`
- `b`
- **h**: The height of the icon. If not defined this will default to 48 which is minimum.
### Image Shape
You can use the `image` shape to include an image in your flowchart. The syntax for defining an image shape is as follows:
```mermaid-example
flowchart TD
A@{ img: "https://example.com/image.png", label: "Image Label", pos: "t", w: 60, h: 60, constraint: "off" }
```
```mermaid
flowchart TD
A@{ img: "https://example.com/image.png", label: "Image Label", pos: "t", w: 60, h: 60, constraint: "off" }
```
### Parameters
- **img**: The URL of the image to be displayed.
- **label**: The text label associated with the image. This can be any string. If not defined, no label will be displayed.
- **pos**: The position of the label. If not defined, the label will default to the bottom of the image. Possible values are:
- `t`
- `b`
- **w**: The width of the image. If not defined, this will default to the natural width of the image.
- **h**: The height of the image. If not defined, this will default to the natural height of the image.
- **constraint**: Determines if the image should constrain the node size. This setting also ensures the image maintains its original aspect ratio, adjusting the height (`h`) accordingly to the width (`w`). If not defined, this will default to `off` Possible values are:
- `on`
- `off`
These new shapes provide additional flexibility and visual appeal to your flowcharts, making them more informative and engaging.
## Links between nodes
Nodes can be connected with links/edges. It is possible to have different types of links or attach a text string to a link.

View File

@@ -500,7 +500,7 @@ mermaid.ganttConfig = {
sectionFontSize: 24, // Font size for sections
numberSectionStyles: 1, // The number of alternating section styles
axisFormat: '%d/%m', // Date/time format of the axis
tickInterval: '1 week', // Axis ticks
tickInterval: '1week', // Axis ticks
topAxis: true, // When this flag is set, date labels will be added to the top of the chart
displayMode: 'compact', // Turns compact mode on
weekday: 'sunday', // On which day a week-based interval should start

161
docs/syntax/kanban.md Normal file
View File

@@ -0,0 +1,161 @@
> **Warning**
>
> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT.
>
> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/kanban.md](../../packages/mermaid/src/docs/syntax/kanban.md).
# Mermaid Kanban Diagram Documentation
Mermaids Kanban diagram allows you to create visual representations of tasks moving through different stages of a workflow. This guide explains how to use the Kanban diagram syntax, based on the provided example.
## Overview
A Kanban diagram in Mermaid starts with the kanban keyword, followed by the definition of columns (stages) and tasks within those columns.
```mermaid-example
kanban
column1[Column Title]
task1[Task Description]
```
```mermaid
kanban
column1[Column Title]
task1[Task Description]
```
## Defining Columns
Columns represent the different stages in your workflow, such as “Todo,” “In Progress,” “Done,” etc. Each column is defined using a unique identifier and a title enclosed in square brackets.
**Syntax:**
```
columnId[Column Title]
```
- columnId: A unique identifier for the column.
- \[Column Title]: The title displayed on the column header.
Like this `id1[Todo]`
## Adding Tasks to Columns
Tasks are listed under their respective columns with an indentation. Each task also has a unique identifier and a description enclosed in square brackets.
**Syntax:**
```
taskId[Task Description]
```
```
• taskId: A unique identifier for the task.
• [Task Description]: The description of the task.
```
**Example:**
```
docs[Create Documentation]
```
## Adding Metadata to Tasks
You can include additional metadata for each task using the @{ ... } syntax. Metadata can contain key-value pairs like assigned, ticket, priority, etc. This will be rendered added to the rendering of the node.
## Supported Metadata Keys
```
• assigned: Specifies who is responsible for the task.
• ticket: Links the task to a ticket or issue number.
• priority: Indicates the urgency of the task. Allowed values: 'Very High', 'High', 'Low' and 'Very Low'
```
```mermaid-example
kanban
todo[Todo]
id3[Update Database Function]@{ ticket: MC-2037, assigned: 'knsv', priority: 'High' }
```
```mermaid
kanban
todo[Todo]
id3[Update Database Function]@{ ticket: MC-2037, assigned: 'knsv', priority: 'High' }
```
## Configuration Options
You can customize the Kanban diagram using a configuration block at the beginning of your markdown file. This is useful for setting global settings like a base URL for tickets. Currently there is one configuration option for kanban diagrams `ticketBaseUrl`. This can be set as in the the following example:
```yaml
---
config:
kanban:
ticketBaseUrl: 'https://yourproject.atlassian.net/browse/#TICKET#'
---
```
When the kanban item has an assigned ticket number the ticket number in the diagram will have a link to an external system where the ticket is defined. The `ticketBaseUrl` sets the base URL to the external system and #TICKET# is replaced with the ticket value from task metadata to create a valid link.
## Full Example
Below is the full Kanban diagram based on the provided example:
```mermaid-example
---
config:
kanban:
ticketBaseUrl: 'https://mermaidchart.atlassian.net/browse/#TICKET#'
---
kanban
Todo
[Create Documentation]
docs[Create Blog about the new diagram]
[In progress]
id6[Create renderer so that it works in all cases. We also add som extra text here for testing purposes. And some more just for the extra flare.]
id9[Ready for deploy]
id8[Design grammar]@{ assigned: 'knsv' }
id10[Ready for test]
id4[Create parsing tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }
id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }
id11[Done]
id5[define getData]
id2[Title of diagram is more than 100 chars when user duplicates diagram with 100 char]@{ ticket: MC-2036, priority: 'Very High'}
id3[Update DB function]@{ ticket: MC-2037, assigned: knsv, priority: 'High' }
id12[Can't reproduce]
id3[Weird flickering in Firefox]
```
```mermaid
---
config:
kanban:
ticketBaseUrl: 'https://mermaidchart.atlassian.net/browse/#TICKET#'
---
kanban
Todo
[Create Documentation]
docs[Create Blog about the new diagram]
[In progress]
id6[Create renderer so that it works in all cases. We also add som extra text here for testing purposes. And some more just for the extra flare.]
id9[Ready for deploy]
id8[Design grammar]@{ assigned: 'knsv' }
id10[Ready for test]
id4[Create parsing tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }
id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }
id11[Done]
id5[define getData]
id2[Title of diagram is more than 100 chars when user duplicates diagram with 100 char]@{ ticket: MC-2036, priority: 'Very High'}
id3[Update DB function]@{ ticket: MC-2037, assigned: knsv, priority: 'High' }
id12[Can't reproduce]
id3[Weird flickering in Firefox]
```
In conclusion, creating a Kanban diagram in Mermaid is a straightforward process that effectively visualizes your workflow. Start by using the kanban keyword to initiate the diagram. Define your columns with unique identifiers and titles to represent different stages of your project. Under each column, list your tasks—also with unique identifiers—and provide detailed descriptions as needed. Remember that proper indentation is crucial; tasks must be indented under their parent columns to maintain the correct structure.
You can enhance your diagram by adding optional metadata to tasks using the @{ ... } syntax, which allows you to include additional context such as assignee, ticket numbers, and priority levels. For further customization, utilize the configuration block at the top of your file to set global options like ticketBaseUrl for linking tickets directly from your diagram.
By adhering to these guidelines—ensuring unique identifiers, proper indentation, and utilizing metadata and configuration options—you can create a comprehensive and customized Kanban board that effectively maps out your projects workflow using Mermaid.

View File

@@ -155,6 +155,9 @@ end
box rgb(33,66,99)
... actors ...
end
box rgba(33,66,99,0.5)
... actors ...
end
```
> **Note**
@@ -217,7 +220,7 @@ There are ten types of arrows currently supported:
| `<<->>` | Solid line with bidirectional arrowheads (v11.0.0+) |
| `<<-->>` | Dotted line with bidirectional arrowheads (v11.0.0+) |
| `-x` | Solid line with a cross at the end |
| `--x` | Dotted line with a cross at the end. |
| `--x` | Dotted line with a cross at the end |
| `-)` | Solid line with an open arrow at the end (async) |
| `--)` | Dotted line with a open arrow at the end (async) |
@@ -580,6 +583,12 @@ sequenceDiagram
It is possible to highlight flows by providing colored background rects. This is done by the notation
```
rect COLOR
... content ...
end
```
The colors are defined using rgb and rgba syntax.
```

View File

@@ -23,6 +23,7 @@ export default tseslint.config(
'**/generated/',
'**/coverage/',
'packages/mermaid/src/config.type.ts',
'packages/mermaid/src/docs/.vitepress/components.d.ts',
],
},
{

View File

@@ -4,7 +4,7 @@
"version": "10.2.4",
"description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.",
"type": "module",
"packageManager": "pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247",
"packageManager": "pnpm@9.9.0+sha512.60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1",
"keywords": [
"diagram",
"markdown",
@@ -42,7 +42,8 @@
"test": "pnpm lint && vitest run",
"test:watch": "vitest --watch",
"test:coverage": "vitest --coverage",
"prepare": "husky install && pnpm build",
"test:check:tsc": "tsx scripts/tsc-check.ts",
"prepare": "husky && pnpm build",
"pre-commit": "lint-staged"
},
"repository": {
@@ -63,7 +64,7 @@
},
"devDependencies": {
"@applitools/eyes-cypress": "^3.44.4",
"@argos-ci/cypress": "^2.1.0",
"@argos-ci/cypress": "^2.2.2",
"@changesets/changelog-github": "^0.5.0",
"@changesets/cli": "^2.27.7",
"@cspell/eslint-plugin": "^8.8.4",
@@ -88,21 +89,22 @@
"cpy-cli": "^5.0.0",
"cross-env": "^7.0.3",
"cspell": "^8.6.0",
"cypress": "^13.11.0",
"cypress": "^13.14.1",
"cypress-image-snapshot": "^4.0.1",
"cypress-split": "^1.24.0",
"esbuild": "^0.21.5",
"eslint": "^9.4.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-cypress": "^3.3.0",
"eslint-plugin-html": "^8.1.1",
"eslint-plugin-jest": "^28.6.0",
"eslint-plugin-jsdoc": "^48.2.9",
"eslint-plugin-jsdoc": "^50.0.0",
"eslint-plugin-json": "^4.0.0",
"eslint-plugin-lodash": "^8.0.0",
"eslint-plugin-markdown": "^5.0.0",
"eslint-plugin-no-only-tests": "^3.1.0",
"eslint-plugin-tsdoc": "^0.3.0",
"eslint-plugin-unicorn": "^55.0.0",
"eslint-plugin-unicorn": "^56.0.0",
"express": "^4.19.1",
"globals": "^15.4.0",
"globby": "^14.0.1",
@@ -116,7 +118,6 @@
"markdown-table": "^3.0.3",
"nyc": "^15.1.0",
"path-browserify": "^1.0.1",
"pnpm": "^8.15.5",
"prettier": "^3.2.5",
"prettier-plugin-jsdoc": "^1.3.0",
"rimraf": "^5.0.5",
@@ -131,5 +132,10 @@
},
"nyc": {
"report-dir": "coverage/cypress"
},
"pnpm": {
"patchedDependencies": {
"roughjs": "patches/roughjs.patch"
}
}
}

Some files were not shown because too many files have changed in this diff Show More