Compare commits

..

691 Commits

Author SHA1 Message Date
Knut Sveidqvist
820603e475 MC-2620 Cleanup 2025-02-11 11:04:55 +01:00
Knut Sveidqvist
4636305783 Using intersect function 2025-02-11 10:36:00 +01:00
Knut Sveidqvist
2247bc583f Fix for generateRoundedPath 2025-02-11 10:04:26 +01:00
Knut Sveidqvist
fa51a37d8c Merge in latest 2025-02-10 15:29:31 +01:00
Knut Sveidqvist
e6e88cef15 WIP Merge in latest 2025-02-10 14:44:54 +01:00
Knut Sveidqvist
2e47e17d28 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2025-01-31 15:17:59 +01:00
Knut Sveidqvist
79218398ee Fix for lifelines color in default theme 2025-01-31 15:15:55 +01:00
Ashish Jain
01010465dd Merge pull request #34 from Mermaid-Chart/mc-2642-fix-for-class-diagram-markers
Mc 2642 fix for class diagram markers
2025-01-30 12:06:58 +01:00
Knut Sveidqvist
c3b78a37a6 MC-2642 Removing code that makes class diagram arrows go wrong 2025-01-29 16:54:44 +01:00
Ashish Jain
7e9a29f486 MC-2572 fix for class diagram broken edges 2025-01-29 12:03:29 +01:00
Ashish Jain
5d1c619ca5 Update alana version to 11.4.1-b.11 2025-01-28 13:16:40 +01:00
Ashish Jain
23c00bf7ca Merge pull request #33 from Mermaid-Chart/redux-dark-theme-update
updated redux-dark theme
2025-01-28 13:09:18 +01:00
omkarht
b3a2794f1f updated redux-dark theme 2025-01-28 17:17:27 +05:30
Ashish Jain
7513d0e39a Merge pull request #31 from Mermaid-Chart/set-default-font-family-to-arial
Set default font family to "Arial" for all themes
2025-01-28 12:39:35 +01:00
Saurabh Gore
571bbab859 Added "Recursive Variable" font for redux theme 2025-01-28 16:58:50 +05:30
Ashish Jain
88b28e8fc3 Merge pull request #32 from Mermaid-Chart/shape-theme-styling-issue-fix
fixed issues of  border radius and styling, label padding
2025-01-28 11:08:59 +01:00
Ashish Jain
579d1ee33c Merge from upstream mermaid OS develop 2025-01-28 10:56:26 +01:00
Ashish Jain
8dd0e7a794 Merge pull request #6229 from mermaid-js/patch/font-family-legend-user-diagram
Set custom font family for legend in user diagrams.
2025-01-28 10:30:20 +01:00
Saurabh Gore
13e3d7293e Remove "trebuchet ms", verdana from font family 2025-01-28 12:32:50 +05:30
omkarht
db2295db24 fixed issues of padding and border radius and border styling 2025-01-27 20:10:50 +05:30
Saurabh Gore
aa28880be7 Set default font family to arial for all themes 2025-01-27 19:24:29 +05:30
saurabhg772244
5e9c887385 Fixed unit tests. 2025-01-27 16:30:35 +05:30
saurabhg772244
fdb8ae5b53 Set custom font family for legend in user diagrams. 2025-01-27 16:16:43 +05:30
Sidharth Vinod
e2de55202f Merge pull request #6224 from theHacker/patch-1
Fix: Wrong link to d3-shape documentation in Flowchart docs
2025-01-26 00:40:08 +05:30
autofix-ci[bot]
b4043840ca [autofix.ci] apply automated fixes 2025-01-25 12:03:03 +00:00
Alexander Münch
8f3e17e386 Fix: Wrong link to d3-shape documentation in Flowchart docs 2025-01-25 12:47:59 +01:00
Sidharth Vinod
4e950e7256 Merge pull request #6177 from Ryuno-Ki/forgejo-integration
docs: add Forgejo as integration
2025-01-25 16:24:52 +05:30
autofix-ci[bot]
de3e381ccf [autofix.ci] apply automated fixes 2025-01-25 10:41:45 +00:00
Sidharth Vinod
b2fde76753 Add Forgejo to cspell 2025-01-25 16:06:46 +05:30
Sidharth Vinod
b5587d8b87 test: Fix duplicate test name 2025-01-25 15:45:42 +05:30
André Jaenisch
9b75aeb224 Update integrations-community.md
Added Forgejo as integration
2025-01-25 10:22:35 +01:00
André Jaenisch
993858cdc8 Merge branch 'mermaid-js:develop' into forgejo-integration 2025-01-25 10:20:39 +01:00
Sidharth Vinod
f4e1f07412 chore: Update mermaid repo link to mermaid-js/mermaid
https://github.com/mermaid-js/mermaid/actions/runs/12963524805/job/36161210394
2025-01-25 14:31:24 +05:30
Sidharth Vinod
09e0de6053 chore: Update upload-artifact to v4
Verified that the other hash was infact valid and in the repo, but the scorecard action was not picking it up.
2025-01-25 14:27:18 +05:30
Sidharth Vinod
9a50bf5237 chore: Fix cypress record flag 2025-01-25 14:21:11 +05:30
Sidharth Vinod
5747009c8f chore: Fix failing tests 2025-01-25 14:09:09 +05:30
Sidharth Vinod
dc513ec211 Merge pull request #6098 from royaljain/feature/mermaid-ai-bot
Add Mermaid AI Bot in Readme
2025-01-25 12:18:07 +05:30
Sidharth Vinod
5f58d4f7b0 Merge pull request #6106 from zackkatz/patch-1
Youtube --> YouTube
2025-01-25 12:14:53 +05:30
Sidharth Vinod
3536ceb5d3 Merge branch 'develop' into patch-1 2025-01-25 12:14:31 +05:30
Sidharth Vinod
7ed33a91c0 Merge pull request #6183 from mermaid-js/renovate/autofix-ci-action-digest
chore(deps): update autofix-ci/action digest to 551dded
2025-01-25 12:13:59 +05:30
Sidharth Vinod
f8bf03d365 Merge pull request #6180 from mermaid-js/renovate/actions-upload-artifact-digest
chore(deps): update actions/upload-artifact digest to ff15f03
2025-01-25 12:13:41 +05:30
Sidharth Vinod
4202ee521a Merge pull request #6209 from mermaid-js/renovate/npm-vite-vulnerability
chore(deps): update dependency vite to v5.4.12 [security]
2025-01-25 12:12:52 +05:30
renovate[bot]
0e25fd42f9 chore(deps): update autofix-ci/action digest to 551dded 2025-01-25 06:42:31 +00:00
renovate[bot]
feee5d1c8c chore(deps): update actions/upload-artifact digest to ff15f03 2025-01-25 06:42:28 +00:00
renovate[bot]
ab6d92c544 chore(deps): update dependency vite to v5.4.12 [security] 2025-01-25 06:41:59 +00:00
Sidharth Vinod
d27d4abab7 Merge pull request #6181 from politbuero-kampagnen/patch-2
Update integrations-community.md
2025-01-25 12:10:34 +05:30
Sidharth Vinod
3162cff7a9 Merge branch 'develop' into forgejo-integration 2025-01-25 12:03:20 +05:30
Sidharth Vinod
9681a27b31 chore: Skip running E2E on comments without visual test command 2025-01-25 11:48:26 +05:30
Sidharth Vinod
ba534985ec Merge pull request #6222 from mermaid-js/sidv/visualTestComment
chore: Add a command to execute visual test
2025-01-25 11:34:09 +05:30
Sidharth Vinod
edc1ae1e0c chore: Update default values 2025-01-25 11:23:30 +05:30
Sidharth Vinod
c00f3fb090 chore: Add a command to execute visual test 2025-01-25 11:01:23 +05:30
Ashish Jain
463d42b86d Merge pull request #30 from Mermaid-Chart/mc-2560-dotted-lines-neo
MC-2560 Reviving dotted lines for flowcharts
2025-01-24 15:59:47 +01:00
Knut Sveidqvist
ba0b945821 MC-2560 Reviving dotted lines for flowcharts 2025-01-24 15:49:11 +01:00
Ashish Jain
bf39ae7369 Merge pull request #29 from Mermaid-Chart/redux-theme
Updated html-label alignment for shapes
2025-01-24 15:17:45 +01:00
Ashish Jain
4911b63e44 Merge from upstream mermaid OS develop 2025-01-24 15:15:55 +01:00
Ashish Jain
74a56fc58a Merge pull request #6218 from mermaid-js/revert-state-diagram-class-architecture
Revert state diagram class based architecture
2025-01-24 15:09:54 +01:00
Saurabh Gore
08ffbb61e9 remove unused import 2025-01-24 19:32:17 +05:30
Saurabh Gore
232e60c8cb Added changeset 2025-01-24 19:25:44 +05:30
Saurabh Gore
cd9ca76e39 Revert state diagram class based architecture 2025-01-24 19:20:40 +05:30
omkarht
d52e3d1931 updated html-label alignment for shapes 2025-01-24 17:55:02 +05:30
Ashish Jain
0d308fdffe Merge from upstream mermaid OS develop 2025-01-24 12:47:42 +01:00
Ashish Jain
c13d988392 Merge pull request #6212 from mermaid-js/saurabh/refactor/convert-classDb-to-class
Refactor: Change ClassDB to class based architecture.
2025-01-24 12:28:20 +01:00
Ashish Jain
fb19255f10 Merge pull request #28 from Mermaid-Chart/animations-for-neo-look
#MC-2558 Handling animations for look neo
2025-01-24 12:26:05 +01:00
Ashish Jain
2ef6760cbc Increase size limit of diagrams 2025-01-24 12:18:49 +01:00
saurabhg772244
15ffe2021a Merge branch 'develop' of https://github.com/mermaid-js/mermaid into saurabh/refactor/convert-classDb-to-class 2025-01-24 16:48:22 +05:30
Ashish Jain
2f525434fd Merge pull request #27 from Mermaid-Chart/redux-theme
Resolved the issue for shapes  where the drop-shadow was being applied to themes other than Redux.
2025-01-24 12:14:49 +01:00
Knut Sveidqvist
49bdd11011 #MC-2558 Handling animations for look neo 2025-01-24 11:44:05 +01:00
omkarht
f785b47b1d Resolved the issue where the drop-shadow was being applied to themes other than Redux. 2025-01-24 15:20:38 +05:30
Ashish Jain
4fbc19e0d7 Merge pull request #6185 from mermaid-js/saurabh/refactor/convert-stateDb-to-class
Refactor: Change StateDB to class based architecture.
2025-01-24 10:46:42 +01:00
Ashish Jain
f7772b440d Merge pull request #25 from Mermaid-Chart/redux-theme
Redux theme
2025-01-23 14:41:45 +01:00
Ashish Jain
5bee403c33 Merge pull request #26 from Mermaid-Chart/2542-astar-exposing-intersection
MC-2542 exposing calcIntersect for use in A* Path finding
2025-01-23 14:32:40 +01:00
Knut Sveidqvist
d7535a9e4d MC-2542 Exposing calcIntersect function 2025-01-23 12:03:54 +01:00
Ashish Jain
fd8f95b628 Fix for default curve on flowchart edge 2025-01-23 11:36:06 +01:00
omkarht
78c63d3dc1 minor adjustment for double circle shape for drop-shadow 2025-01-23 15:17:34 +05:30
saurabhg772244
2b8998fdd1 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into saurabh/refactor/convert-classDb-to-class 2025-01-23 14:59:41 +05:30
omkarht
9c89d3401a Merge branch 'neo-new-shapes' of https://github.com/Mermaid-Chart/alana-mermaid into redux-theme 2025-01-23 14:58:48 +05:30
saurabhg772244
202ef31071 Fixed binding issue 2025-01-23 14:58:16 +05:30
omkarht
7fbc873fd0 updated drop shadow styling for small shapes 2025-01-23 12:27:47 +05:30
saurabhg772244
b09f2e836a Updated as per PR comments 2025-01-23 12:25:38 +05:30
saurabhg772244
6a814a0d91 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into saurabh/refactor/convert-stateDb-to-class 2025-01-23 11:53:01 +05:30
saurabhg772244
b07bb9b3ff Minor change 2025-01-23 11:44:06 +05:30
Ashish Jain
1089ec0963 Update alana version to 11.4.1-b.7 2025-01-22 23:56:34 +01:00
Ashish Jain
7df125ab59 Merge from upstream mermaid OS develop 2025-01-22 23:42:47 +01:00
Ashish Jain
5120ed09ab Merge pull request #6161 from mermaid-js/saurabh/refactor/convert-flowDb-to-class
Refactor: Change flowDB to class based architecture.
2025-01-22 22:41:52 +01:00
omkarht
7425430b80 updated Label and Stroke color for redux theme 2025-01-22 19:30:12 +05:30
saurabhg772244
61f3fc5ede Use static reference for relationType in StateDB 2025-01-22 19:17:38 +05:30
saurabhg772244
90bbf90a83 Added changeset 2025-01-22 19:10:48 +05:30
saurabhg772244
92efc24283 Refactored arrow functions to standard function 2025-01-22 19:07:53 +05:30
omkarht
2674bb80ab minor adjustment of padding for some shapes 2025-01-22 18:57:25 +05:30
saurabhg772244
1c45df4567 Updated as per PR comments 2025-01-22 17:53:51 +05:30
saurabhg772244
1575a93136 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into saurabh/refactor/convert-flowDb-to-class 2025-01-22 16:22:20 +05:30
saurabhg772244
bde653b1c2 Updated as per Alois suggestion 2025-01-22 15:49:51 +05:30
Ashish Jain
e9e663ffa3 Merge pull request #6198 from mermaid-js/edge-flicker-fix
edge flickering fix
2025-01-22 11:12:23 +01:00
Ashish Jain
963efa64c7 Added changeset 2025-01-22 11:01:37 +01:00
Ashish Jain
e2e5101005 Handle more override edge animate 2025-01-22 10:57:57 +01:00
saurabhg772244
6ea13cded3 Fixed binding issue 2025-01-22 12:27:32 +05:30
Ashish Jain
c063b92cc9 Handle more edge cases, and lint fixes 2025-01-22 02:03:29 +01:00
autofix-ci[bot]
304f133227 [autofix.ci] apply automated fixes 2025-01-22 00:14:56 +00:00
Ashish Jain
54a0dd0af6 Make flowchart edge Ids consistent across getEdges and getData 2025-01-22 01:09:49 +01:00
Ashish Jain
ab5b7694c6 Merge branch 'develop' into edge-flicker-fix 2025-01-21 17:31:06 +01:00
Ashish Jain
eb76dfb1ca Merge pull request #6205 from mermaid-js/Refactor/fix-styles
fix: styles for Sankey, Gantt, and User Journey diagrams
2025-01-21 17:30:51 +01:00
omkarht
d4441e0200 updated padding for set of shapes [Left Curly Brace , Right Curly Brace, Curly Braces ] 2025-01-21 20:25:38 +05:30
Saurabh Gore
28d7ec092c Merge branch 'develop' into Refactor/fix-styles 2025-01-21 20:10:43 +05:30
omkarht
8bc898ddf1 shapes updated for drop shadow syling in redux theme 2025-01-21 20:01:37 +05:30
Ashish Jain
84b03f3a08 Merge pull request #6196 from mermaid-js/6195-at-signs-in-labels
#6195 at signs in labels
2025-01-21 15:19:39 +01:00
saurabhg772244
f9ac9867c1 Updated as per Alois suggestion. 2025-01-21 19:21:56 +05:30
omkarht
7afd7a9729 Third Set of shapes updated for drop shadow syling in redux theme 2025-01-21 19:06:04 +05:30
omkarht
fa4d93483a Second Set of shapes updated for drop shadow syling in redux theme 2025-01-21 18:32:01 +05:30
saurabhg772244
ee6fb83265 Used 'options' instead of 'var(--mermaid-font-family)' 2025-01-21 18:27:05 +05:30
omkarht
7d11a9578a First Set of shapes updated for drop shadow syling in redux theme 2025-01-21 16:08:11 +05:30
saurabhg772244
46c16c963b Minor change. 2025-01-21 15:32:53 +05:30
saurabhg772244
32a68d489e Added changeset 2025-01-21 11:35:23 +05:30
saurabhg772244
7bbebff583 Updated styles implementation 2025-01-20 20:30:28 +05:30
saurabhg772244
c432aec2f6 fix: styles for Sankey, Gantt, and User Journey diagrams 2025-01-20 20:05:51 +05:30
Feroz Mujawar
64237fbaa7 updated addSingleLink for multiple outgoing edges to same end node 2025-01-20 19:59:46 +05:30
Feroz Mujawar
7ba415dad1 edge flickering fix 2025-01-17 21:23:30 +05:30
Knut Sveidqvist
7f47678862 Spellfix in changeset 2025-01-17 11:50:22 +01:00
Knut Sveidqvist
127bac1147 Adding changeset 2025-01-17 11:48:28 +01:00
Knut Sveidqvist
9a90d795ca #6195 Updated lexer to not allow quotes in link ids 2025-01-17 11:46:44 +01:00
omkarht
5b6c5412cd Draft of fifth set of shapes [Lined Process, Delay, Multiprocess, Stored Data, Internal storage] 2025-01-17 13:06:53 +05:30
omkarht
51756edefc Draft of fourth set of shapes [ Document, Tagged Document, Paper Tape, Lined Document, Multiple Documents] 2025-01-16 21:21:31 +05:30
omkarht
4e685b74a7 Draft of third set of shapes [Divided Process, Manual Input,Subprocess, Horizontal Cylinder, Loop Limit] 2025-01-16 17:04:54 +05:30
Knut Sveidqvist
259af0fb77 Tmp removal of edge id handling 2025-01-16 11:08:15 +01:00
saurabhg772244
f7fe8f2f59 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into saurabh/refactor/convert-flowDb-to-class 2025-01-16 15:17:24 +05:30
omkarht
6e3c37c98b Draft of second set of shapes [Card, Cylinder, Reversed Trapezoid, Odd, Tagged Rect] 2025-01-15 20:49:53 +05:30
Ashish Jain
9114f65dbe Update alana version to 11.4.1-b.4 2025-01-15 13:50:13 +01:00
Ashish Jain
6d73220348 Merge branch 'develop' of github.com:mermaid-js/mermaid into neo-new-shapes 2025-01-15 13:46:01 +01:00
Ashish Jain
1d9c2aab8d #6186 Fix for flowchart new syntax with link 2025-01-15 13:45:04 +01:00
saurabhg772244
8fba9c1236 convert flowDb to class and added test cases. 2025-01-15 18:02:04 +05:30
Ashish Jain
e07fd6d98c Update alana version to 11.4.1-b.3 2025-01-15 13:09:21 +01:00
Ashish Jain
e6d45da81e Merge from upstream mermaid OS develop 2025-01-15 12:58:13 +01:00
Knut Sveidqvist
04800ff677 Merge pull request #6187 from mermaid-js/flowchart-new-syntax-bugs
#6186 Fixes the flowchart node metadata syntax bugs
2025-01-15 11:45:11 +01:00
saurabhg772244
0f08c3bc9c Updated FlowDB instance. 2025-01-14 19:02:50 +05:30
Ashish Jain
7809b5a93f #6186 Fixes the flowchaart node metadata syntax bugs 2025-01-14 14:07:25 +01:00
saurabhg772244
ef9bb53e67 Code refactor 2025-01-14 15:32:47 +05:30
saurabhg772244
3e32332814 Added changeset. 2025-01-14 15:22:14 +05:30
saurabhg772244
e1aab25144 Updated changeset message. 2025-01-14 12:45:56 +05:30
saurabhg772244
c8697301ee Code refactor. 2025-01-14 12:21:07 +05:30
saurabhg772244
fcb1de915b convert stateDb to class, added test case. 2025-01-13 20:30:38 +05:30
autofix-ci[bot]
e345294658 [autofix.ci] apply automated fixes 2025-01-12 14:01:18 +00:00
Balthasar Glättli
9936099e25 Update integrations-community.md
Replaced outdated and lo longer maintained WordPress plugins with actually maintained MerPress Plugin
2025-01-12 14:53:19 +01:00
autofix-ci[bot]
e70b069576 [autofix.ci] apply automated fixes 2025-01-10 14:23:09 +00:00
André Jaenisch
28bab4a323 Update integrations-community.md
Added Forgejo as integration
2025-01-10 15:11:22 +01:00
Knut Sveidqvist
619a1df26e Updated to handle arrow heads differently between noe/classic 2025-01-10 11:44:14 +01:00
Saurabh Gore
6cc31b7453 Added changeset 2025-01-10 13:33:04 +05:30
Saurabh Gore
29ca1504dd Added unit test cases for flow DB to have functions used in flow JISON 2025-01-10 13:19:13 +05:30
saurabhg772244
16d2251e43 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into saurabh/refactor/convert-flowDb-to-class 2025-01-10 11:15:39 +05:30
Ashish Jain
bc2cc61240 Merge pull request #6136 from mermaid-js/5813-edge-bugfix
Adding animations to flowchart edges also fixing bug with invisible edges
2025-01-07 09:59:52 +01:00
Saurabh Gore
6836e9c7a8 Updated test cases 2025-01-07 12:03:54 +05:30
Saurabh Gore
8dc016e7f9 Update packages/mermaid/src/mermaidAPI.spec.ts
Co-authored-by: Alois Klink <alois@aloisklink.com>
2025-01-06 16:43:49 +05:30
Saurabh Gore
3cad7984a3 Update packages/mermaid/src/mermaidAPI.spec.ts
Co-authored-by: Alois Klink <alois@aloisklink.com>
2025-01-06 16:37:51 +05:30
Saurabh Gore
f5bae98098 Set generation to gen-2 in clear 2025-01-03 14:55:20 +05:30
Saurabh Gore
0695893e30 Added test cases 2025-01-03 11:30:21 +05:30
Saurabh Gore
9ef6090c8c convert flowDb to class. 2024-12-31 17:40:52 +05:30
Knut Sveidqvist
7491c78c8c Tuning 2024-12-20 15:57:58 +01:00
Knut Sveidqvist
f0fdf91379 Adjustment for point 2024-12-20 15:36:16 +01:00
Knut Sveidqvist
0bf4aa3e82 Fix for arrow point 2024-12-20 15:28:08 +01:00
Knut Sveidqvist
9bf2bda539 Fix for arrow cross 2024-12-20 15:13:52 +01:00
Knut Sveidqvist
35aa869adc Draft of first set of shapes 2024-12-20 12:38:49 +01:00
Knut Sveidqvist
bf20e0615a Redux themes 2024-12-20 11:07:53 +01:00
Knut Sveidqvist
2352b422db #2028 Adding legacy code 2024-12-19 16:12:44 +01:00
Knut Sveidqvist
ec0d9c389a Adding changeset 2024-12-18 11:59:39 +01:00
Knut Sveidqvist
323b07a2e4 Typescript fix and updating documentation 2024-12-18 11:56:48 +01:00
Knut Sveidqvist
c153d0455f #5574 Fixed issue linkStyles 2024-12-17 16:28:38 +01:00
Knut Sveidqvist
9b00f1f2fb #5574 Adding support for edge ids and animations 2024-12-17 14:56:18 +01:00
Knut Sveidqvist
48a0d41a81 WIP 2024-12-13 10:15:00 +01:00
Knut Sveidqvist
e75260ac07 Initial skeleton setup 2024-12-13 09:12:39 +01:00
Knut Sveidqvist
b5ef6d2e23 Placement draft 2024-12-09 09:29:45 +01:00
Knut Sveidqvist
8277579259 #6097 Handling hourglass and lightningBolt 2024-12-03 10:49:43 +01:00
Knut Sveidqvist
8336d1cf2d #6097 Next shapes, learn-right and card 2024-12-03 10:23:02 +01:00
autofix-ci[bot]
a055ff7db3 [autofix.ci] apply automated fixes 2024-12-02 18:14:21 +00:00
Zack Katz
d032723a47 Youtube --> YouTube 2024-12-02 11:56:17 -05:00
Knut Sveidqvist
3c93e4640a #6097 Next batch of shapes 2024-11-30 13:42:50 +01:00
Knut Sveidqvist
0c28593ea5 #6097 Implemented calcIntersect for the first round of shapes 2024-11-30 10:54:18 +01:00
Knut Sveidqvist
33d8b1a78d #6097 Added scaffolding for the new function in all shapes 2024-11-30 09:49:54 +01:00
Royal Jain
daf83f596d Add Mermaid AI Bot in Readme 2024-11-29 16:46:15 +05:30
Knut Sveidqvist
1e3ea13323 Fix for when last point is on the intersection 2024-11-29 09:07:47 +01:00
Knut Sveidqvist
4c8c48cde9 Generic solution for intersection of shapes with elk 2024-11-28 14:31:54 +01: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
38250af678 Merge from upstream mermaid to sync elk 0.1.7 2024-11-27 18:26:24 +01:00
Ashish Jain
64554a6c60 Merge pull request #6092 from mermaid-js/master
Merge back master to develop
2024-11-27 18:24:31 +01:00
Sidharth Vinod
54d485f173 Merge branch 'develop' into patch-1 2024-11-27 21:50:42 +05:30
Knut Sveidqvist
c8e50276e8 Added changeset 2024-11-27 15:54:05 +01:00
Knut Sveidqvist
1e6419a63f #6088 Updated offset calculations 2024-11-27 15:52:24 +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
Ashish Jain
de08b8244f Merge from upstream mermaid to sync 11.4.1 2024-11-27 12:25:04 +01:00
Ashish Jain
65f9b29b86 Merge back master 11.4.1 to develop 2024-11-27 12:08:28 +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
pbrolin47
41fdfd4c5c Merge pull request #21 from Mermaid-Chart/fix/classBox-neo-default
Fix invisible divider lines on classBox when using neo-default
2024-11-26 10:30:57 +01:00
yari-dewalt
81c2f0f7a9 Add 'neo-line' class to divider lines when appropriate 2024-11-22 08:29:52 -08:00
Ashish Jain
fee2ad565d chore: update alana version to 11.4.0-b.3 2024-11-21 14:49:58 +01:00
pbrolin47
725e25ad88 Merge pull request #20 from Mermaid-Chart/yari/classBox-neofication
"classBox" Shape Neofication and Resize Support
2024-11-21 11:01:44 +01:00
Ashish Jain
cb03af5214 Merge pull request #19 from Mermaid-Chart/fix-edge-flickring-on-delete-node
edge flickring fix while deleting nodes
2024-11-20 13:12:12 +01:00
Feroz Mujawar
4a812a964d fix scenario where two nodes have multiple edges 2024-11-19 12:10:02 +05:30
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
yari-dewalt
c4d06cd4fd Fix methodsAreaPlacement 2024-11-15 09:40:49 -08: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
Feroz Mujawar
ae2c533aca edge flickring fix while deleting nodes 2024-11-15 17:56:41 +05:30
yari-dewalt
1598ac713f Update testing html files 2024-11-14 10:35:03 -08:00
yari-dewalt
45d8a815dc Make node compatible with neo look and resizing 2024-11-14 10:33:24 -08:00
yari-dewalt
82b421696b Add support for positions 2024-11-14 10:32:44 -08:00
agokhale
193fdb225e the ELK imports break the dev playground, drop them 2024-11-13 05:16:01 -05:00
Ashish Jain
e98ab130cc Merge pull request #13 from Mermaid-Chart/fix-node-resize-intersection
fix intersection required object read from db while resizing node
2024-11-11 10:51:53 +01:00
Feroz Mujawar
ddeab2f705 lint fix 2024-11-11 14:34:54 +05:30
Feroz Mujawar
b08cd5dbba Merge branch 'neo-new-shapes' of https://github.com/Mermaid-Chart/alana-mermaid into fix-node-resize-intersection 2024-11-08 20:21:25 +05:30
Ashish Jain
e842cf582b Merge pull request #18 from Mermaid-Chart/MC-2265/fix-failing-e2e-shapes-test
MC-2265: Fix all failing E2E tests in Mermaid Alana
2024-11-08 15:28:03 +01:00
Alois Klink
6db6beca4b Merge pull request #16 from Mermaid-Chart/alana-11.4.0-megre
Merge mermaid 11.4.0 (develop) to neo-new-shapes in Alana
2024-11-08 14:04:38 +00:00
Alois Klink
35fea81209 Merge remote-tracking branch 'origin/alana-11.4.0-megre'; commit '1388662132cc829f9820c2e9970ae04e2dd90588' into MC-2265/fix-failing-e2e-shapes-test
Merges https://github.com/mermaid-js/mermaid/pull/6038 into
Mermaid Alana, fixing the broken E2E test.

See: https://github.com/mermaid-js/mermaid/pull/6038
See: https://mermaidchart.atlassian.net/browse/MC-2265
2024-11-08 22:29:56 +09: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
13d4a238d4 Merge pull request #15 from Mermaid-Chart/ci/disable-argos-in-ci
ci: disable Argos in CI
2024-11-07 14:14:45 +01:00
Alois Klink
c7171fa7b1 test(e2e): fix state diagram useMaxWidth tests
These tests assume that we're using `look: classic, theme: default`,
otherwise the widths are off.

However, since
3dc66a64c (MC-1730 Making neo the default theme, 2024-08-06),
`neo` is now the default look and theme in Alana Mermaid.

Fixes: 3dc66a64c7
2024-11-07 22:13:21 +09:00
Ashish Jain
861599245d Merge from upstream mermaid os 11.4.0 develop 2024-11-07 13:58:42 +01:00
Alois Klink
f550f17dc0 ci: disable Argos in CI
Argos only works in open-source repos, it doesn't work for this private
repo.
2024-11-07 21:49:01 +09:00
Alois Klink
191cd27b2b Merge pull request #14 from Mermaid-Chart/merge-fix/make-parse-error-on-invalid-shape
Merge https://github.com/mermaid-js/mermaid/pull/6002
2024-11-07 12:40:51 +00:00
Ashish Jain
4ad85974c6 Merge pull request #11 from Mermaid-Chart/merge-refactor/improving-rendering-shape-types
Merge https://github.com/mermaid-js/mermaid/pull/5974
2024-11-07 13:34:51 +01:00
NicolasNewman
cb0a4703bd fix(#5952): initial fix for architecture diagrams with extreme heights 2024-11-03 15:53:09 -06:00
Alois Klink
91ed9bb9c2 Merge commit '848be3d1297b833c4e8b2e25fabafec4d7c4db02' into merge-fix/make-parse-error-on-invalid-shape
Pulls PR https://github.com/mermaid-js/mermaid/pull/6002 into Alana.

Fixes a semantic merge conflict in
- `docs/config/setup/interfaces/mermaid.LayoutData.md`

See: https://github.com/mermaid-js/mermaid/pull/6002
2024-10-30 22:31:31 +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
Feroz Mujawar
18fd67300f fix intersection required object read from db while resizing node 2024-10-29 14:23:37 +05:30
Alois Klink
93239b5f34 Merge commit 'f8746bee0454b01378726d04f9c65bbc3974eb3a' into merge-refactor/improving-rendering-shape-types
See https://github.com/mermaid-js/mermaid/pull/5974

Conflicts:
	docs/config/setup/interfaces/mermaid.RenderResult.md
	packages/mermaid/src/rendering-util/rendering-elements/shapes/util.ts
2024-10-28 21:03:19 +09:00
Ashish Jain
807820f199 Update alana version to v11.3.0-b.4 2024-10-23 10:47:08 +02:00
Knut Sveidqvist
030aeb8c88 Merge pull request #12 from Mermaid-Chart/subgraph-NaN-fix
fix NaN error while adding subgraph
2024-10-22 16:58:18 +02:00
Feroz Mujawar
0d1212e463 fix NaN error while adding subgraph 2024-10-22 19:42:27 +05:30
Alois Klink
92d706f677 Merge commit '16a5fc05d65165f02966eb7f33154f136394a534' into merge-refactor/improving-rendering-shape-types
See https://github.com/mermaid-js/mermaid/pull/5974

There were a lot of merge conflicts!

Conflicts:
	packages/mermaid/src/rendering-util/rendering-elements/shapes/bowTieRect.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/card.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/crossedCircle.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/cylinder.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/drawRect.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/filledCircle.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/flippedTriangle.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/hourglass.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/iconRounded.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/iconSquare.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/imageSquare.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/lightningBolt.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/linedCylinder.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/roundedRect.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/shadedProcess.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/stateStart.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/subroutine.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedRect.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/triangle.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/util.ts
	packages/mermaid/src/rendering-util/rendering-elements/shapes/windowPane.ts
2024-10-18 02:49:26 +09:00
Ashish Jain
44e7e68e0b Update alana version to v11.3.0-b.3 2024-10-17 10:57:28 +02:00
Knut Sveidqvist
7d59a624d7 Updating fontsize to 14px 2024-10-16 18:25:27 +02:00
Ashish Jain
e2dc9e557c Update alana version to v11.3.0-b.2 2024-10-16 14:54:25 +02:00
Knut Sveidqvist
c7adb37a1f Fix for points to rearrange function for issue when using dagre 2024-10-16 13:52:06 +02:00
Ashish Jain
3b5ca1c638 Updated alana version to v11.3.0-b.1 2024-10-10 14:47:01 +02:00
omkarht
ff9fffef90 fixed resizing issue for iconCircle shape 2024-10-10 17:04:37 +05:30
saurabhg772244
71d6ded224 Fix path highlight for neo icons 2024-10-10 10:23:06 +05:30
Alois Klink
5ecd12de1c Merge pull request #10 from Mermaid-Chart/export-calcIntersections-and-calcNodeIntersections
Export `calcIntersections, calcNodeIntersections`
2024-10-09 22:25:58 +09:00
Alois Klink
ee4991f3e7 docs: regenerate docs 2024-10-09 21:55:04 +09:00
Ashish Jain
1028ca2ffc Merge branch 'develop' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-10-09 13:24:46 +02:00
saurabhg772244
edce46b305 Merge branch 'neo-new-shapes' of mermaid.github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-10-09 16:51:50 +05:30
saurabhg772244
2509511135 Fixed neo look for color icons 2024-10-09 16:50:46 +05:30
Alois Klink
c76a513417 Merge branch 'neo-new-shapes' into export-calcIntersections-and-calcNodeIntersections 2024-10-09 19:31:52 +09:00
Sidharth Vinod
3968010d6b skip ts build in alana 2024-10-09 15:51:37 +05:30
Sidharth Vinod
122a44024c fix: change package json import path 2024-10-09 15:44:57 +05:30
Ashish Jain
654c00f88c Update alana version 2024-10-09 11:47:47 +02:00
Ashish Jain
c5acf870de Fix broken unit test 2024-10-09 11:34:14 +02:00
Ashish Jain
c73f8d0990 Merge from upstream mermaid os develop 2024-10-09 11:19:40 +02:00
omkarht
aa91874d9e resolved edge intersection calculation issue for square and rounded form of icon shape 2024-10-08 19:51:28 +05:30
omkarht
42fe55e2bc updated iconCircle shape 2024-10-07 11:53:24 +05:30
omkarht
3bcbad7fa1 upated iconRounded shape 2024-10-07 11:52:08 +05:30
Alois Klink
32ff6ec50f Export calcIntersections, calcNodeIntersections
Support doing:

```js
import { calcIntersections, calcNodeIntersections } from '@mermaid-chart/mermaid';
```

This means we can eventually stop doing `window.calcIntersections` and
`window.calcNodeIntersections`.
2024-10-04 19:57:35 +09:00
Ashish Jain
0198f0e798 Update alana version 2024-10-03 15:42:48 +02:00
Knut Sveidqvist
9aded56538 Updating image and diamond dimension handling 2024-10-03 15:32:07 +02:00
Knut Sveidqvist
b52b54086e Fixed sizing of diamond shape 2024-10-03 07:59:55 +02:00
Ashish Jain
31c01b1795 fix for label positioning for brace-l & brace-r shapes 2024-10-02 21:33:44 +02:00
Ashish Jain
90b200ed2e Merge commit 2024-10-02 21:22:58 +02:00
Ashish Jain
971a166073 fix for label positioning for brances shape 2024-10-02 21:22:01 +02:00
Knut Sveidqvist
4e25bf5db9 Adding handling of self-loops into update position 2024-10-02 21:06:01 +02:00
Ashish Jain
962fcb8ba8 fix for label positioning divided rect 2024-10-02 20:59:21 +02:00
Knut Sveidqvist
b3f2ba8bb8 Fix for intersecrtion calculations for start shape sm-circ 2024-10-02 20:36:10 +02:00
Ashish Jain
bda37516b8 fix for label positioning triangle and flipped triangle 2024-10-02 19:43:54 +02:00
Ashish Jain
0aebb941e9 Updated alana version 2024-10-02 14:45:35 +02:00
Knut Sveidqvist
36df0e340e Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-10-02 14:37:03 +02:00
Ashish Jain
1d8c4fd279 merge from upstream 2024-10-02 14:36:41 +02:00
Knut Sveidqvist
c1377f9075 Adjusted fixed height settings odd 2024-10-02 14:36:19 +02:00
Ashish Jain
c6fd62ab7d fix for min size for flag 2024-10-02 14:07:45 +02:00
Ashish Jain
2abdece0f2 fix for min size for tagged rect 2024-10-02 13:34:28 +02:00
Knut Sveidqvist
ed1427ed31 Adjusted fixed height settings tag-doc 2024-10-02 13:22:38 +02:00
Knut Sveidqvist
36f1dc8541 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-10-02 09:47:22 +02:00
Knut Sveidqvist
7a7d161a61 Fix for tag-doc 2024-10-02 09:46:58 +02:00
Ashish Jain
a2d64a82c5 fix for min size for more shapes 2024-10-02 09:45:55 +02:00
Ashish Jain
f1674b8b04 fix for min size for more shapes 2024-10-01 23:45:32 +02:00
Ashish Jain
eb346e1c51 fix for min size for several shapes 2024-10-01 21:35:30 +02:00
Ashish Jain
d2dfb639c8 fix for min size for several shapes 2024-10-01 18:52:26 +02:00
Alois Klink
5363e9545e Merge 'aloisklink:fix/5904-ban-dompurify-3.1.7' into neo-new-shapes
This prevents DOMPurify 3.1.7 from being installed.
2024-10-02 00:27:19 +09:00
omkarht
42fd9836f0 updated curly-brace shapes 2024-10-01 18:56:29 +05:30
Knut Sveidqvist
bda3bfd2a7 test html file 2024-10-01 14:50:20 +02:00
Knut Sveidqvist
834fa07991 Updated shapes using the set width/height 2024-10-01 14:18:40 +02:00
Knut Sveidqvist
491aa7d9ff Mermaid version v11.2.0-b.12 2024-09-30 15:04:25 +02:00
Knut Sveidqvist
6cf07067e2 Default size for circle 2024-09-30 14:57:14 +02:00
Knut Sveidqvist
d0881534c1 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-30 14:54:40 +02:00
Knut Sveidqvist
f10d148097 Adjusted min values 2024-09-30 14:53:33 +02:00
Per Brolin
f5545d094f Set a smaller default size for stateStart and stateEnd 2024-09-30 13:16:44 +02:00
Per Brolin
c36bdf12a0 Merge branch 'perb-fix-circles-resize' into neo-new-shapes 2024-09-30 10:58:54 +02:00
Per Brolin
92f67af6af Merge branch 'neo-new-shapes' into perb-fix-circles-resize 2024-09-30 10:56:08 +02:00
Per Brolin
d175e9a403 Fixed default size if not provided in height/width 2024-09-30 10:48:15 +02:00
Per Brolin
2ce57e4cf4 Fix default size if width/height not provided 2024-09-30 10:45:52 +02:00
Per Brolin
a7a9185222 Fix default size if not provided 2024-09-30 10:44:01 +02:00
Per Brolin
edc2ac7fea Fixed double circle 2024-09-30 10:35:13 +02:00
Per Brolin
221d59cbfc Fix problem with circle 2024-09-30 10:26:00 +02:00
Knut Sveidqvist
e8472c3647 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-30 10:16:38 +02:00
Knut Sveidqvist
414f666417 Better handling of subgraphs without positions 2024-09-30 10:11:38 +02:00
Per Brolin
5ad1a6082b Merge branch 'neo-new-shapes' into perb-fix-circles-resize 2024-09-29 22:45:46 +02:00
Per Brolin
32d7f470dc fix remaining rendering of circles 2024-09-29 22:40:08 +02:00
Ashish Jain
9b269ecf3b fix for trapezoidal pentagon 2024-09-29 20:42:01 +02:00
Per Brolin
8fa8fd6abd WIP. Updated size-testet 2024-09-29 20:36:36 +02:00
omkarht
9957d3101f updated multiWaveEdgedRectangle shape 2024-09-28 23:52:00 +05:30
Ashish Jain
22982baf1a fix for flipped triangle 2024-09-28 12:35:44 +02:00
Ashish Jain
d3b51e2282 fix for triangle 2024-09-28 12:35:01 +02:00
Knut Sveidqvist
d9b2220085 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-27 17:36:43 +02:00
Knut Sveidqvist
e2ecb8e180 TaggedWaveEdged Rect 2024-09-27 17:35:44 +02:00
Alois Klink
68ba79259a fix: fix sizing of bow-rect in fixed layout
OMG, I never want to hear 'sagitta', 'ellipse', and 'Elliptic integral'
again. This shape was painful to fix.
2024-09-28 00:20:14 +09:00
Knut Sveidqvist
0f7e14ba70 Update for stadium shape 2024-09-27 16:59:37 +02:00
Knut Sveidqvist
59f28810d5 lin-doc shape fixed 2024-09-27 16:26:44 +02:00
Knut Sveidqvist
00b32d07fe Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-27 16:15:06 +02:00
Knut Sveidqvist
bf57a283d3 Trapezoids and document 2024-09-27 16:14:28 +02:00
Alois Klink
ee2e6a2c2c fix: fix sizing of tag-rect in fixed layout 2024-09-27 23:05:40 +09:00
Alois Klink
9caa46cfd2 fix: fix sizing of st-rect in fixed layout 2024-09-27 23:05:40 +09:00
Alois Klink
2566f1cab8 fix: fix sizing of sl-rect in fixed layout 2024-09-27 23:05:40 +09:00
Alois Klink
aae4e6f048 fix: fix sizing of win-pane in fixed layout 2024-09-27 23:05:40 +09:00
Alois Klink
b32acb619c fix: fix sizing of div-rect in fixed layout 2024-09-27 23:05:40 +09:00
Alois Klink
1510939196 fix: fix sizing of lin-rect in fixed layout 2024-09-27 23:05:40 +09:00
Alois Klink
a8db94fd1a fix: fix sizing of notch-rect in fixed layout 2024-09-27 23:05:40 +09:00
Alois Klink
c72d774519 fix: fix sizing of fr-rect in fixed layout 2024-09-27 23:05:40 +09:00
Ashish Jain
437f2c0be2 fix for half-rounded-rectangle 2024-09-27 16:03:13 +02:00
omkarht
82e8eb97cc updated waveRectangle shape 2024-09-27 19:20:29 +05:30
Ashish Jain
c7a2023661 fix for curved trapezoid 2024-09-27 14:43:34 +02:00
Ashish Jain
0b0c0fc1f1 lin cyl 2024-09-27 14:13:54 +02:00
Ashish Jain
ba51f4ab38 fix cylr & h-cyl 2024-09-27 13:55:22 +02:00
Knut Sveidqvist
c3838305b3 Lean-left 2024-09-27 13:44:44 +02:00
Knut Sveidqvist
5b7dfbad94 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-27 13:41:12 +02:00
Knut Sveidqvist
b47168b064 Lean-right and question 2024-09-27 13:40:32 +02:00
saurabhg772244
2c0d48eef5 updated shapes 2024-09-27 17:07:53 +05:30
Knut Sveidqvist
1ef4c42bcf Updating odd shape 2024-09-27 11:59:05 +02:00
saurabhg772244
9da6321c4b updated lightning bolt shape 2024-09-27 15:25:19 +05:30
Ashish Jain
b99e080337 suport dynamic resizing of rect shape 2024-09-27 10:24:29 +02:00
saurabhg772244
7a9ec739d9 fixed lightning bolt shape 2024-09-27 12:17:31 +05:30
Knut Sveidqvist
390025c085 Fix for sizing of Stadium 2024-09-26 19:55:32 +02:00
Knut Sveidqvist
e4abc39572 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-26 19:51:21 +02:00
Knut Sveidqvist
b0abb44928 Fix for width calculations in Rect 2024-09-26 19:41:35 +02:00
Knut Sveidqvist
0afd83a0c3 Adding size-tester for checking size calculations with fixed sizes 2024-09-26 18:26:49 +02:00
Alois Klink
0a355968c4 fix(types): improve mermaid.parse types
It looks like
8873ffca1 (chore: Overload parse type to be more specific., 2023-12-08)
got overwritten in the merge from Mermaid v11.
2024-09-27 01:07:34 +09:00
Knut Sveidqvist
2a05b479ae Removing wrap 2024-09-26 16:21:28 +02:00
Knut Sveidqvist
9e3bd1fb19 Fix for text sizing calculations ans possibly insertion of a bug 2024-09-26 15:33:02 +02:00
Knut Sveidqvist
0ba4265bc3 Handle fixed size for hexagon 2024-09-26 13:20:44 +02:00
Knut Sveidqvist
a94ad012c4 Fix for resizing of circle 2024-09-26 13:13:37 +02:00
Ashish Jain
bcfc5e0ce4 update version to v11.2.0-b.8 2024-09-24 15:13:43 +02:00
Ashish Jain
210cd35422 Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-09-24 15:11:43 +02:00
Ashish Jain
2aaf1b9619 update version to v11.2.0-b.7 2024-09-24 11:13:10 +02:00
Ashish Jain
e63f533f3c Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-09-24 11:12:00 +02:00
saurabhg772244
3a3ea06413 fixed hover highlight for crossed circle multiRect and multiWavedEgeRect 2024-09-24 14:18:51 +05:30
saurabhg772244
5a1640ee34 updated neo look for shaded process and divided process 2024-09-24 13:46:25 +05:30
saurabhg772244
633328c9da fixed padding in neo look for icon square and rounded 2024-09-24 11:53:55 +05:30
Ashish Jain
51aba30620 update version to v11.2.0-b.6 2024-09-23 18:01:28 +02:00
Ashish Jain
f720f2cb13 Merge from Upstream new-shapes branch 2024-09-23 17:52:40 +02:00
saurabhg772244
02a03e3d60 fixed multirect for shadow 2024-09-23 19:54:11 +05:30
Knut Sveidqvist
97dec4e4cb Decreasing drop shadow for neo-dark 2024-09-23 15:10:42 +02:00
Knut Sveidqvist
bb755c6e99 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-23 15:00:06 +02:00
Knut Sveidqvist
65d47dea24 Fix for issues with comment shapes in neo-dark 2024-09-23 14:57:18 +02:00
saurabhg772244
6934c3eb5a Updated padding for neo look 2024-09-23 17:08:17 +05:30
saurabhg772244
4d2ffc46d0 updated padding for curley brace shape 2024-09-23 16:46:44 +05:30
saurabhg772244
2f2fc1b4f1 updated window pane for new look 2024-09-23 15:48:46 +05:30
Knut Sveidqvist
7dcd2758b2 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-23 10:23:54 +02:00
Knut Sveidqvist
1a974eeb39 Fix for state diagram curve 2024-09-23 10:19:55 +02:00
Ashish Jain
7272e7297c update version to v11.2.0-b.5 2024-09-23 10:05:07 +02:00
Ashish Jain
c94c3d7c86 Merge from Upstream new-shapes branch 2024-09-23 09:43:33 +02:00
Knut Sveidqvist
3fc723003c Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-20 15:10:43 +02:00
Knut Sveidqvist
6d64c75121 Fix for image 2024-09-20 15:09:29 +02:00
Ashish Jain
62bcfefa7c update version to v11.2.0-b.4 2024-09-20 13:59:00 +02:00
Ashish Jain
401590c010 Merge from Upstream new-shapes branch 2024-09-20 12:31:07 +02:00
saurabhg772244
b301138d93 neoify icon shape 2024-09-20 15:45:17 +05:30
Ashish Jain
cf53340672 fix lint issue 2024-09-20 11:07:33 +02:00
Ashish Jain
a07b61fdf1 Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-09-20 10:59:25 +02:00
Knut Sveidqvist
e67894fbb3 Adding config for chose edge type and adding debug option for curves. Mermaid version 11.2.0-b.3 2024-09-19 14:54:58 +02:00
Knut Sveidqvist
fa638da9fc Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-19 14:28:38 +02:00
Knut Sveidqvist
b9ae52e1c2 Configurable debugging of edge points 2024-09-19 14:28:33 +02:00
Knut Sveidqvist
5348e74475 Handling of rounded paths 2024-09-19 14:01:17 +02:00
Ashish Jain
aa41c67266 Merge from upstream new-shapes branch 2024-09-19 13:28:34 +02:00
Knut Sveidqvist
6184510439 Mermaid version 11.2.0-a.10 2024-09-18 13:49:50 +02:00
Sidharth Vinod
faed69c86e chore: Bump versions 2024-09-17 21:35:26 +05:30
Sidharth Vinod
16a75de518 Merge branch 'knsv/new-shapes' into neo-new-shapes
* knsv/new-shapes:
  chore: changeset
  [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:02:04 +05:30
Ashish Jain
a23132e1f2 Merge from upstream new-shapes branch 2024-09-17 09:57:30 +02:00
Ashish Jain
2bc6ac4a76 fix prettier lint error 2024-09-17 08:41:34 +02:00
Ashish Jain
776cb92e3e fix unit test 2024-09-17 08:39:18 +02:00
Ashish Jain
2a7c3dc436 fix lint error for unused variables 2024-09-17 00:02:00 +02:00
Ashish Jain
032a8cbbee Merge pull request #8 from Mermaid-Chart/sidv/configReturn
fix: Change return type from parse
2024-09-16 23:43:28 +02:00
Ashish Jain
3d767cbc06 Merge branch 'neo-new-shapes' into sidv/configReturn 2024-09-16 23:37:14 +02:00
Knut Sveidqvist
eee669f1ee New mermaid version 11.1.0-b.12 2024-09-16 15:41:34 +02:00
Knut Sveidqvist
d85889c200 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-16 15:38:29 +02:00
Knut Sveidqvist
ff3418c520 Adding intersection calculation for new nodes 2024-09-16 15:38:05 +02:00
Sidharth Vinod
7b0b548d05 Merge branch 'neo-new-shapes' into sidv/configReturn
* neo-new-shapes:
  update type check for getTypeFromVertex
  [autofix.ci] apply automated fixes
  fixed build error
  Updated readme for renderOptions parameter and renamed to use kabab case
  Updated icon shape for background colour and icon colour
  Moving case check to parsing
  Adding case check
  Updated shape aliases
  Updated type
  Throwing error for invalid shape
  Updated insertNode to pass optional config
  Fix for amp and adjusted tests
  WIP
  Removing the ending @ sign in the shape data
2024-09-16 18:35:08 +05:30
Ashish Jain
48791aac13 Merge from upstream newShapes branch 2024-09-16 14:59:46 +02:00
Sidharth Vinod
c8381d0fca fix: ParseResult type 2024-09-16 15:59:03 +05:30
Sidharth Vinod
2bb1a2c4f2 Merge branch 'neo-new-shapes' into sidv/configReturn
* neo-new-shapes:
  Mermaid version b.10
  Fix for issue with incorrect calculations of which edge a line intersects with
2024-09-16 14:46:46 +05:30
Knut Sveidqvist
3730f1afbb Mermaid version b.10 2024-09-16 10:04:10 +02:00
Sidharth Vinod
e0c2b832a9 Bump version 2024-09-13 23:18:20 +05:30
Sidharth Vinod
4cbb0004be fix: Remove changes to parse 2024-09-13 20:54:59 +05:30
Sidharth Vinod
19e79fda73 feat: Add title to parseResult 2024-09-13 19:49:24 +05:30
Knut Sveidqvist
05989d06fa Fix for issue with incorrect calculations of which edge a line intersects with 2024-09-13 08:37:07 +02:00
Sidharth Vinod
71889fd135 chore: Remove type from ParseResult 2024-09-13 12:00:05 +05:30
Sidharth Vinod
eca19efa32 Merge branch 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid into sidv/configReturn
* 'knsv/new-shapes' of https://github.com/mermaid-js/mermaid:
2024-09-12 15:47:20 +05:30
Sidharth Vinod
4841b7d3d9 Merge branch 'develop' of https://github.com/mermaid-js/mermaid into sidv/configReturn
* 'develop' of https://github.com/mermaid-js/mermaid:
  #5787 Fix for issue with labels in firefox
2024-09-12 15:41:31 +05:30
Sidharth Vinod
dd01f3d52c revert import changes 2024-09-12 15:33:03 +05:30
Sidharth Vinod
dc642fb5bc Build docs 2024-09-12 15:23:11 +05:30
Sidharth Vinod
ef428dc555 Merge branch 'neo-new-shapes' of https://github.com/Mermaid-Chart/alana-mermaid into sidv/configReturn
* 'neo-new-shapes' of https://github.com/Mermaid-Chart/alana-mermaid: (45 commits)
  updated styles, testcases and fixed html labels for image shape
  MC-1733 Reset layout
  updated ImageSqaure shape
  updated styles
  updated pos changes
  fixed html labels for icon shape
  updated test cases
  Added rounded icon shape
  Updated circle icon
  updated image shape
  Updated labels for shapes
  updated icon square and icon
  MC-1733 Reset layout
  Updated logic for vertex label
  Updated test cases
  Update .changeset/rude-meals-invite.md
  changesets
  added neo-fication and shape-resize for linedCylinder shape
  added neo-fication for curvedTrapezoid shape
  Version Packages
  ...
2024-09-12 15:19:21 +05:30
Ashish Jain
d964893a5d Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-09-12 10:48:18 +02:00
Ashish Jain
7ef296a9cf Merge from upstream newShapes branch 2024-09-11 14:41:52 +02:00
Knut Sveidqvist
acd66a5eb4 MC-1733 Reset layout 2024-09-11 13:57:32 +02:00
Sidharth Vinod
db6242590e Fix result type 2024-09-10 18:41:59 +05:30
Knut Sveidqvist
1efc794056 Merge branch 'neo-new-shapes' of github.com:Mermaid-Chart/alana-mermaid into neo-new-shapes 2024-09-10 13:43:38 +02:00
Knut Sveidqvist
d1395d05e2 MC-1733 Reset layout 2024-09-10 13:39:13 +02:00
Sidharth Vinod
888f668f5e chore: Fix imports 2024-09-10 17:08:29 +05:30
Sidharth Vinod
d0caa2b3e0 test: Fix parse tests 2024-09-10 17:08:15 +05:30
Ashish Jain
900c8a4209 Replace with relative path 2024-09-10 13:19:32 +02:00
Sidharth Vinod
5ab955b6b3 fix: Change return type from parse 2024-09-10 14:18:34 +05:30
omkarht
fd8542080d added neo-fication and shape-resize for linedCylinder shape 2024-09-09 19:10:03 +05:30
omkarht
040a989c3d added neo-fication for curvedTrapezoid shape 2024-09-09 18:54:43 +05:30
Sidharth Vinod
638be1992d Merge remote-tracking branch 'upstream/develop' into neo-new-shapes
* upstream/develop: (27 commits)
  [autofix.ci] apply automated fixes
  fix: Return type, make config non optional
  [autofix.ci] apply automated fixes
  Create red-beans-cross.md
  chore(deps): update dependency eslint-plugin-jsdoc to v50
  remove tsconfig compiler option paths
  linting
  replace mermaid/dist with relative paths
  chore: add git command and set safe dir
  chore: Fix check
  feat: Preview release
  feat: Return parsed config from `mermaid.parse`
  Version Packages
  Adding changeset
  Cleanup of test-file
  Updated cypress test for self-loops
  Fix for issues with self loops
  docs: Fix SMW link
  add blog post - architecture diagrams
  more , linting
  ...
2024-09-09 18:30:31 +05:30
Ashish Jain
13b96ad6c0 Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-09-06 14:59:14 +02:00
Ashish Jain
f9d5128c91 Merge from upsteam, updated to version v11.1.0-b6 2024-09-05 13:42:04 +02:00
Ashish Jain
35f2e4f5fa Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-09-05 13:40:07 +02:00
Ashish Jain
2244c1fa87 Merge from upsteam, updated to version v11.1.0-b5 2024-09-05 12:04:41 +02:00
Per Brolin
791b442089 fix-architecture-styling 2024-09-05 12:02:21 +02:00
Ashish Jain
e180ad0666 Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-09-05 12:01:39 +02:00
Ashish Jain
1b67997da2 Merge from upsteam, updated to version v11.1.0-b4 2024-09-05 10:58:04 +02:00
Per Brolin
c18ee0381c Merge branch 'pebr-fix-arch-neo-reboot' into neo-new-shapes 2024-09-04 16:56:44 +02:00
Per Brolin
8d91622235 MC-2029: Fix styling for neo-dark 2024-09-04 16:24:19 +02:00
Per Brolin
19f98c1c72 MC-2029: Corrected dashed border 2024-09-04 16:17:01 +02:00
Per Brolin
afe32f2f8c MC-2029: Updated lockfile 2024-09-04 16:10:01 +02:00
Per Brolin
b214f30e96 MC-2029: Added styling 2024-09-04 16:08:47 +02:00
Per Brolin
415eb26335 MC-2029: Added demo page with architecture neo 2024-09-04 15:54:39 +02:00
Ashish Jain
8fd57abc81 Fix support for fixed layout for flowchart 2024-09-04 13:38:10 +02:00
omkarht
165a4f6825 updated trapezoidalPentagon shape 2024-09-04 13:58:45 +05:30
omkarht
1e7a5a4408 updated taggedWaveEdgedRectangle shape 2024-09-04 13:17:31 +05:30
omkarht
acb569193b updated waveEdgedRectangle shape 2024-09-04 11:53:42 +05:30
saurabhg772244
1b6d627bd3 updated styles for shapes 2024-09-03 18:29:42 +05:30
omkarht
ea987171b2 implemented neo-fication and shape resize for waveRectangle, taggedWaveEdgedRectangle, multiWaveEdgedRectangle shapes 2024-09-03 18:01:15 +05:30
Ashish Jain
b84617c915 Updated versions 2024-09-03 12:26:52 +02:00
Ashish Jain
0e2753814a merge commit 2024-09-03 11:57:12 +02:00
Ashish Jain
11bb1a4a17 Merge from upstream 2024-09-03 11:55:46 +02:00
omkarht
46aba3dfe9 implemented neo-fication and shape resize for flippedTriangle, taggedRect, triangle waveEdgedRectangle shapes 2024-09-03 15:21:57 +05:30
omkarht
0764dca3ce implemented neo-fication for bowTieRect shape 2024-09-03 13:33:09 +05:30
omkarht
83493f26b7 implemented neo-fication for multiRect, slopedRect, waveEdgedRectangle shapes 2024-09-02 21:00:12 +05:30
Knut Sveidqvist
5673dd7ebc Mermaid version 11.0.2-b.9 2024-09-02 11:51:03 +02:00
Knut Sveidqvist
fabecc4abd Incorrect mermaid version, was already published by someone else 2024-09-02 11:50:13 +02:00
Knut Sveidqvist
7603a51302 MC-1801 Fix for issue with markers using fixed layout 2024-09-02 11:46:32 +02:00
Knut Sveidqvist
dedf2d25e3 MC-1801 Fix for link id issue and intersection calculations 2024-08-29 11:58:30 +02:00
Ashish Jain
b011b628ad Updated package versions 2024-08-29 10:00:08 +02:00
Ashish Jain
db3541047a Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-08-28 14:36:44 +02:00
Ashish Jain
bd5a9cc21e Merge from Upstream 2024-08-28 14:33:13 +02:00
Knut Sveidqvist
62f887b3c3 Alana version 11.0.2-b.5, Updated calcIntersections allowing mouse coordinates 2024-08-28 11:45:20 +02:00
Knut Sveidqvist
9c2d7b1dad Fix for fixed position 2024-08-27 16:11:16 +02:00
Ashish Jain
fd47e4eb2f fix fixed layout 2024-08-27 15:54:31 +02:00
Ashish Jain
327ea728ac fix fixed layout 2024-08-27 15:30:37 +02:00
Ashish Jain
96974c9007 updated version 2024-08-27 15:14:27 +02:00
Ashish Jain
c00707165f fix lint & typescript issues 2024-08-27 15:13:39 +02:00
Ashish Jain
dc2ecc9f19 fix mermiad version placeholder 2024-08-27 15:12:49 +02:00
Ashish Jain
41b8a1e6f4 Merge from Upstream & fix version 2024-08-27 14:41:03 +02:00
Ashish Jain
d421cfb1fd Merge branch 'knsv/new-shapes' of github.com:mermaid-js/mermaid into neo-new-shapes 2024-08-27 14:22:19 +02:00
Ashish Jain
ba978e86ae Merge from Upstream 2024-08-27 14:21:46 +02:00
Knut Sveidqvist
1483e9245e Merge remote-tracking branch 'os_repo/knsv/new-shapes' into neo-new-shapes 2024-08-26 12:17:37 +02:00
Ashish Jain
6a53d87742 Merge from upstream new-shapes branch 2024-08-21 17:24:47 +02:00
Ashish Jain
a7b771a622 Merge from upstream new-shapes branch 2024-08-21 16:27:55 +02:00
Knut Sveidqvist
c6acf84e43 Mermaid version 11.0.0-b.74, handling of default positions in subgraphs for fixed layout 2024-08-20 13:35:40 +02:00
Knut Sveidqvist
e9b91485f4 Updated intersection calculations , Mermaid version 11.0.0-b.73 2024-08-15 18:26:23 +02:00
Knut Sveidqvist
a0a03b932d Updated intersection calculations , Mermaid version 11.0.0-b.73 2024-08-15 18:25:24 +02:00
Knut Sveidqvist
9acf55069c Mermaid version 11.0.0-b.67, handling of fixed layout without defined positions 2024-08-15 14:11:02 +02:00
Ashish Jain
4878cb9356 Export types & version upgrade 2024-08-15 12:46:48 +02:00
Ashish Jain
b6725eae94 Export types & version upgrade 2024-08-15 12:08:02 +02:00
Knut Sveidqvist
2415e8652a Updated intersection calculations , Mermaid version 11.0.0-b.64 2024-08-15 12:05:59 +02:00
Knut Sveidqvist
941a1723d8 Mermaid version 11.0.0-b.63 2024-08-14 14:05:57 +02:00
Knut Sveidqvist
43b038547e Merge remote-tracking branch 'os_repo/develop' into alanaV11 2024-08-13 14:08:55 +02:00
Ashish Jain
8a22615dbf Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-08-09 15:47:22 +02:00
Ashish Jain
947b59d392 merge from upstream mermaid 2024-08-09 15:18:41 +02:00
Ashish Jain
58694ecd29 merge from upstream mermaid 2024-08-09 15:17:25 +02:00
Knut Sveidqvist
8e3cb5fb1b Fix for fixed layout, mermaid v11.0.0-b.61 2024-08-08 09:49:16 +02:00
Knut Sveidqvist
534cf32231 Removing console.logs 2024-08-06 15:14:34 +02:00
Knut Sveidqvist
41484b2272 MC-1730 Fix for subroutine shape 2024-08-06 15:03:19 +02:00
Knut Sveidqvist
992095d0f8 Mermaid version 11.0.0-b.58 2024-08-06 14:29:52 +02:00
Knut Sveidqvist
3321f6472f Adding subroutine fill 2024-08-06 14:29:33 +02:00
Ashish Jain
2ee94eb9ae updated package version 2024-08-06 12:02:31 +02:00
Ashish Jain
2114e3e0fc fix NaN values in viewBox for sequence diagram 2024-08-06 10:55:30 +02:00
Knut Sveidqvist
87011c6ab4 MC-1730 Better elk publish 2024-08-06 10:33:33 +02:00
Knut Sveidqvist
3dc66a64c7 MC-1730 Making neo the default theme 2024-08-06 10:27:06 +02:00
Alois Klink
64cc767dd5 fix: add mc mermaid theme to types 2024-08-05 23:08:59 +09:00
Knut Sveidqvist
04a704c068 MC-1730 Fix for id handling in elk 2024-08-05 16:02:50 +02:00
Ashish Jain
cef45c023f fix edge id for elk 2024-08-05 15:48:53 +02:00
Knut Sveidqvist
61100d81b1 Updated version of elk renderer 0.0.15 2024-08-05 13:12:29 +02:00
Knut Sveidqvist
29a9c16ab6 Updated mermaid version to 11.0.0-b.55 2024-08-05 13:11:28 +02:00
Knut Sveidqvist
ba20d6c627 #5237 Fix for issue with edge routing for elk layout 2024-08-05 13:09:13 +02:00
Knut Sveidqvist
ca7ddbfe8a MC-1730 Fixed border-color for statediagram notes 2024-08-05 11:04:25 +02:00
Knut Sveidqvist
c33aa50916 Mermaid version 11.0.0-b.54 2024-08-02 18:01:19 +02:00
Steph
b153203338 Merge branch 'alanaV11' of https://github.com/Mermaid-Chart/alana-mermaid into alanaV11 2024-08-02 08:23:41 -07:00
Steph
f834dba3ff update gradient colors for neo-dark 2024-08-02 08:21:58 -07:00
Knut Sveidqvist
640c502346 MC-1730 Fix for flowchart arrows without arrowheads 2024-08-02 17:16:40 +02:00
Knut Sveidqvist
34ecbba275 Mermaid version 11.0.0-b.53 with neo colors for gantt chart 2024-08-02 12:18:28 +02:00
Knut Sveidqvist
930a33d351 Updated version 11.0.0-b.52 2024-08-02 12:11:12 +02:00
Knut Sveidqvist
fda930ec64 Merge branch 'alanaV11' of github.com:Mermaid-Chart/alana-mermaid into alanaV11 2024-08-02 11:48:14 +02:00
Knut Sveidqvist
f93e331be5 Updating the color scales for the neo theme 2024-08-02 11:47:57 +02:00
Ashish Jain
7396c485db fix for parser module for pie 2024-08-02 11:21:38 +02:00
Knut Sveidqvist
85e7af566e Mermaid v11.0.0-b.50 2024-08-01 16:12:11 +02:00
Knut Sveidqvist
36c90cf90e #5237 Fix for issue with styling rectWithTitle 2024-08-01 16:09:32 +02:00
Knut Sveidqvist
6346e29f6a 5237 Fix for edges to diamond shapes and new mermaid version 2024-07-31 15:07:28 +02:00
Knut Sveidqvist
04b31b8672 MC-1730 Adding mc theme 2024-07-22 12:52:22 +02:00
Knut Sveidqvist
2eddee90e0 MC-1730 Adding mc theme 2024-07-22 12:52:16 +02:00
Knut Sveidqvist
63f9043d40 Mermaid version 11.0.0-b.46 2024-07-22 11:06:31 +02:00
Knut Sveidqvist
e019a60bdd MC-1730 Adding neo and neo-dark to valid themes 2024-07-22 11:03:09 +02:00
Knut Sveidqvist
0a4ace5128 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-07-22 11:01:51 +02:00
Knut Sveidqvist
7156735394 MC-1730 Fix for failing unit-test 2024-07-22 10:12:03 +02:00
Ashish Jain
64a5c11318 Fix broken unit test 2024-07-19 15:40:20 +02:00
Ashish Jain
05abfd132b lint fixes 2024-07-19 14:55:51 +02:00
Knut Sveidqvist
31370ed240 Merge branch 'alanaV11' of github.com:Mermaid-Chart/alana-mermaid into alanaV11 2024-07-19 14:30:01 +02:00
Knut Sveidqvist
e6722bc7f6 MC-1730 Lint fixes 2024-07-19 14:29:52 +02:00
Ashish Jain
3f0e18cb94 fix lint issue 2024-07-19 14:27:00 +02:00
Knut Sveidqvist
cc0dcd68f8 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-07-19 14:15:08 +02:00
Ashish Jain
9a2865c64a Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-07-15 11:50:37 +02:00
Ashish Jain
2c25197d65 MC-1730 Fix flowchart subgraph id isue 2024-07-10 15:29:26 +02:00
Ashish Jain
2d6a5ade9d MC-1730 Updated version 2024-07-10 14:53:11 +02:00
Ashish Jain
7ad9b84319 Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-07-10 14:45:02 +02:00
Ashish Jain
ff0322a5dd MC-1730 Updated version 2024-07-10 11:28:26 +02:00
Ashish Jain
9aa01d8a39 Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-07-10 11:27:21 +02:00
Ashish Jain
04ad2ae3dd MC-1730 Fix for data-et as cluster 2024-07-08 16:07:59 +02:00
Ashish Jain
d7497c179e MC-1730 Fix for data-et as cluster 2024-07-08 14:52:07 +02:00
Ashish Jain
df7de0e796 MC-1730 Merge from mermaid v11 2024-07-08 14:10:59 +02:00
Ashish Jain
55d4e83732 Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-07-04 22:12:00 +02:00
Ashish Jain
9e01da0d04 Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-07-04 21:45:32 +02:00
Knut Sveidqvist
476b7a12d7 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-07-03 15:47:46 +02:00
Knut Sveidqvist
40063d0982 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-07-03 14:52:56 +02:00
Knut Sveidqvist
25703ea8c1 Latest merge from mermaid b38 2024-07-03 14:06:54 +02:00
Knut Sveidqvist
87f333b0d5 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-07-03 14:00:08 +02:00
Knut Sveidqvist
ae046ff4dd Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-07-02 11:06:36 +02:00
Knut Sveidqvist
5f35f6c37d Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-07-02 10:41:56 +02:00
Knut Sveidqvist
3b7fb45ee6 MC-1799 Reviving the fixed layout 2024-07-01 13:39:11 +02:00
Ashish Jain
0ab49e1e3d Update version 2024-07-01 11:26:30 +02:00
Ashish Jain
442d5077d3 Merge from mermaid 2024-07-01 11:16:19 +02:00
Knut Sveidqvist
834afef2c0 MC-1730 Styling of the subprocess class with neo 2024-06-30 12:24:07 +02:00
Knut Sveidqvist
0b4dbeda8c Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-29 21:23:56 +02:00
Knut Sveidqvist
84fc95d7cf Divider layout fix 2024-06-28 17:50:24 +02:00
Knut Sveidqvist
bbe71f5367 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-28 15:40:46 +02:00
Knut Sveidqvist
9528b5f391 Merge from mermaid 2024-06-28 09:00:33 +02:00
Ashish Jain
23180d35ac MC-1730 Adding data-id, data-node, and data-et attr for dividers. Also, updated version 2024-06-27 16:05:15 +02:00
Ashish Jain
35ae14681e MC-1730 Updated version 2024-06-26 15:50:59 +02:00
Ashish Jain
9bfd6517ac Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-26 15:48:07 +02:00
Knut Sveidqvist
bebc2ba4e9 Merge branch 'alanaV11' of github.com:Mermaid-Chart/alana-mermaid into alanaV11 2024-06-26 09:22:47 +02:00
Knut Sveidqvist
93b4699189 Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-26 09:22:13 +02:00
Ashish Jain
5feb3beb8b Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-24 12:10:01 +02:00
Ashish Jain
11c3ef1c8b MC-1730 Updated version 2024-06-24 11:36:38 +02:00
Ashish Jain
f967ee935d Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-24 11:34:41 +02:00
Knut Sveidqvist
20a273a853 Merge branches 'alanaV11' and 'alanaV11' of github.com:Mermaid-Chart/alana-mermaid into alanaV11 2024-06-24 11:31:35 +02:00
Knut Sveidqvist
e451f83b08 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-24 11:30:30 +02:00
Ashish Jain
948781cbce MC-1730 Updated version 2024-06-20 15:45:42 +02:00
Ashish Jain
cdf75558b5 Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-20 15:43:44 +02:00
Knut Sveidqvist
f8c16f577b New build b.26 2024-06-20 15:31:39 +02:00
Knut Sveidqvist
823035abd8 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-20 15:29:36 +02:00
Ashish Jain
82f1344af6 MC-1730 Updated version 2024-06-20 14:14:32 +02:00
Ashish Jain
ab626fac9e Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-20 14:13:52 +02:00
Ashish Jain
4fa080df9d #5237 Add data-id attr for edge 2024-06-20 13:31:44 +02:00
Ashish Jain
c5186b0df2 Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-20 13:30:58 +02:00
Knut Sveidqvist
b9dda2797a Merge branch 'alanaV11' of github.com:Mermaid-Chart/alana-mermaid into alanaV11 2024-06-19 13:56:59 +02:00
Knut Sveidqvist
d898cc6a67 New build numbers 2024-06-19 13:43:28 +02:00
Knut Sveidqvist
01b7074203 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-19 13:38:38 +02:00
Per Brolin
c4685fb0ff Merge branch 'pebr/neo-style' into alanaV11 2024-06-19 11:53:14 +02:00
Per Brolin
96c8e544ec MC-1765: Added specific end-state class 2024-06-19 11:52:28 +02:00
Knut Sveidqvist
c406e6cefe Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-19 10:57:31 +02:00
Per Brolin
31936cf6cb MC-1765: Merge from AlanaV11 to pebr/neo-style 2024-06-19 09:53:06 +02:00
Per Brolin
d6e8419360 MC-1765: Removed curvature from inner rect composite 2024-06-19 09:49:04 +02:00
Knut Sveidqvist
37e43c0be4 Merge branch 'alanaV11' of github.com:Mermaid-Chart/alana-mermaid into alanaV11 2024-06-18 16:02:02 +02:00
Knut Sveidqvist
9510b2e138 MC-1730 Selector for gradients 2024-06-18 16:00:57 +02:00
Knut Sveidqvist
4bd6e3a70c MC-1730 Selector for gradients 2024-06-18 15:58:50 +02:00
Ashish Jain
54a6a996aa Fix database shapes neo look for flowchart 2024-06-18 15:58:09 +02:00
Per Brolin
ba6f2b26a6 Merge branch 'alanaV11' into pebr/neo-style 2024-06-18 15:43:20 +02:00
Per Brolin
9cac8cc472 MC-1765: WIP Added some flow chart shapes 2024-06-18 15:42:29 +02:00
Ashish Jain
416a9fa069 Fix different shapes neo look for flowchart 2024-06-18 15:35:16 +02:00
Ashish Jain
1c1dbe0eb7 Fix different shapes neo look for flowchart 2024-06-18 15:33:28 +02:00
Knut Sveidqvist
0520226b5b Merge branch 'alanaV11' of github.com:Mermaid-Chart/alana-mermaid into alanaV11 2024-06-18 15:11:35 +02:00
Knut Sveidqvist
e7d9e1b223 MC-1730 Putting shadows back 2024-06-18 15:10:47 +02:00
Per Brolin
d5735fd721 Merge branch 'pebr/neo-style' into alanaV11 2024-06-18 15:09:36 +02:00
Per Brolin
1e47c8a70e Merge branch 'alanaV11' into pebr/neo-style 2024-06-18 15:05:46 +02:00
Knut Sveidqvist
838b2ce391 Merge branch 'alanaV11' of github.com:Mermaid-Chart/alana-mermaid into alanaV11 2024-06-18 15:04:10 +02:00
Knut Sveidqvist
9b310df58a MC-1730 Updated gradient settings 2024-06-18 15:00:51 +02:00
Per Brolin
7f8ca0c77e Merge branch 'alanaV11' into pebr/neo-style 2024-06-18 14:59:02 +02:00
Per Brolin
444bad5f20 MC-1765 WIP Added test-grid for states 2024-06-18 14:58:34 +02:00
Ashish Jain
0d630862ee Fix odd (asymmetrical) shape & hexagon shape neo look for flowchart 2024-06-18 14:51:14 +02:00
Knut Sveidqvist
7297b9bc42 MC-1730 Updated gradient settings 2024-06-18 14:42:00 +02:00
Ashish Jain
92e6f52168 Fix double circle shape neo look for flowchart 2024-06-18 14:31:17 +02:00
Ashish Jain
2007cab5ee Fix circle shape neo look for flowchart 2024-06-18 14:16:28 +02:00
Knut Sveidqvist
86d75373ca MC-1730 Neo look for subgraphs 2024-06-18 14:15:53 +02:00
Ashish Jain
41a5f2dacd Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-18 14:07:16 +02:00
Knut Sveidqvist
f431020b6b MC-1730 Cleanup of gradients, adding neo-dark 2024-06-18 14:04:41 +02:00
Ashish Jain
736181bf3d fix neo look for stadium shape in flowchart 2024-06-18 13:59:17 +02:00
Per Brolin
ace39a2154 MC-1765: WIP Test Grid of shapes and themes 2024-06-18 13:30:31 +02:00
Per Brolin
959d8cb606 Merge branch 'pebr/neo-style' into alanaV11 2024-06-18 13:03:08 +02:00
Per Brolin
f96c6462de Merge branch 'alanaV11' into pebr/neo-style 2024-06-18 13:02:22 +02:00
Per Brolin
74ef8b53f1 MC-1765: WIP. Gradiant 2024-06-18 13:00:37 +02:00
Per Brolin
3780659337 MC-1765: WIP Support for Gradient-theme 2024-06-18 12:59:04 +02:00
Knut Sveidqvist
ea87596363 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-18 12:40:09 +02:00
Knut Sveidqvist
caff6662a0 MC-1730 Repplying rectClass efter merge conflict 2024-06-18 11:26:11 +02:00
Knut Sveidqvist
ce7e738843 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-18 11:19:56 +02:00
Per Brolin
9591159901 Corrected end-state for neo 2024-06-17 20:40:48 +02:00
Per Brolin
ced34394bb Updated label padding, and set rx, ry for neo-style class 2024-06-17 20:15:04 +02:00
Per Brolin
1cdafaac80 Merge branch 'alanaV11' into pebr/neo-style 2024-06-17 15:40:02 +02:00
Per Brolin
0fc2f3c85f Corrected minor typo 2024-06-17 15:39:00 +02:00
Knut Sveidqvist
ea0b4f3e95 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-17 14:44:57 +02:00
Per Brolin
8aefe293b0 MC-1765: Merge branch 'alanaV11' into pebr/neo-style 2024-06-17 08:53:17 +02:00
Per Brolin
757f5c395c MC-1765: Added drop-shadow for circles and polygons 2024-06-17 08:47:44 +02:00
Knut Sveidqvist
0a08cfd573 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-14 17:40:42 +02:00
Per Brolin
582035ef9b MC-1765: Added column for classic, default as comparison 2024-06-14 15:29:08 +02:00
Per Brolin
2f6d728123 Added attribute data-look to composite and nested states 2024-06-14 14:45:24 +02:00
Knut Sveidqvist
61b8c9b639 New mermaid version bete-20 2024-06-14 14:24:04 +02:00
Knut Sveidqvist
729cbec78d Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-14 14:18:06 +02:00
Per Brolin
ccdaa6333e Renamed test file and added new file to check neo and themes 2024-06-14 13:49:14 +02:00
Per Brolin
bbb118547e Removed temp override of look 2024-06-14 11:40:58 +02:00
Per Brolin
04159a8427 MC-1765: Removed hard-coded setting of look in render-utils 2024-06-14 11:36:34 +02:00
Knut Sveidqvist
4838023a0b MC-1730 Latest fixes from mermaid 2024-06-13 17:02:49 +02:00
Per Brolin
d70ffe93bb MCC-1765: Added styling of neo class and removed override in drawRect 2024-06-13 13:44:34 +02:00
Per Brolin
10e9a30769 Merge branch 'pebr/neo-style' into alanaV11 2024-06-13 13:34:05 +02:00
Ashish Jain
9d590bc587 updated version 2024-06-13 11:10:37 +02:00
Ashish Jain
69871c94c4 updated version 7 data-node true attr 2024-06-13 11:09:59 +02:00
Per Brolin
2c2b86dc9d Merge branch 'alanaV11' into pebr/neo-style 2024-06-13 10:11:15 +02:00
Per Brolin
8b278d483a MC-1765: Added todo-list to keep track 2024-06-13 10:10:37 +02:00
Knut Sveidqvist
9fbad9c9c1 MC-1730 Applying look to nodes 2024-06-13 10:01:20 +02:00
Per Brolin
2130839770 Merge branch 'alanaV11' into pebr/neo-style 2024-06-13 08:36:34 +02:00
Per Brolin
f22f319599 Fixed so padding of Node labels is working for neo and other theme 2024-06-13 08:35:26 +02:00
Per Brolin
f17d788ac8 Set a less prominent color in nested composite state and added demo page of styling 2024-06-12 14:54:03 +02:00
Ashish Jain
67cf57ae4f added logging for config 2024-06-12 14:45:54 +02:00
Ashish Jain
8ff462f01c Updated version 2024-06-12 14:34:14 +02:00
Ashish Jain
183b83b1ff Adding data-et and data-id for cluster in rendering-util 2024-06-12 14:33:22 +02:00
Knut Sveidqvist
0dd6db67e8 Fix for paddings in square rect 2024-06-12 13:49:37 +02:00
Per Brolin
7ff731163f Added rendering of neo-style in state-refactor 2024-06-12 13:31:01 +02:00
Knut Sveidqvist
7c851bc849 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-12 12:38:29 +02:00
Knut Sveidqvist
2df39e3658 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-12 11:46:46 +02:00
Knut Sveidqvist
29e73ed2dc Verisons 2024-06-12 11:46:32 +02:00
Ashish Jain
32f6c9eefa Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-12 11:37:13 +02:00
Per Brolin
3af2c29d8f Clean-up to avoid code duplication. Corrected neo-optins according to stephs design 2024-06-12 10:38:54 +02:00
Per Brolin
6842b316ec Correccted bug with innen height in composite diags 2024-06-12 08:49:58 +02:00
Per Brolin
979a9b08f9 Merge branch 'alanaV11' into pebr/neo-style 2024-06-11 16:14:34 +02:00
Per Brolin
d3ec33cfe7 Set line-height of label so bbox is height of line 2024-06-11 16:13:55 +02:00
Knut Sveidqvist
80295c3cc2 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-11 15:04:06 +02:00
Knut Sveidqvist
a4777bd44d Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-11 14:48:03 +02:00
Per Brolin
efe8573c06 Merge branch 'pebr/neo-style' into alanaV11 2024-06-11 13:44:41 +02:00
Per Brolin
a9aa8b7f1a Commit prior work by knsv 2024-06-11 13:43:54 +02:00
Knut Sveidqvist
58f5f4a35d Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-11 13:28:47 +02:00
Per Brolin
6dcdec0126 Removed border for neo as UX-design by steph 2024-06-10 15:26:20 +02:00
Per Brolin
4eea7ff5da Corrected options rx,ry for roundedRect when not neo 2024-06-10 14:15:43 +02:00
Per Brolin
15d35387a0 Removed slick 2024-06-10 13:56:21 +02:00
Per Brolin
8b7001b8e3 Removed useRough in favor of node.look 2024-06-10 13:55:08 +02:00
Per Brolin
4fe7e062b5 Removed some hard coding form review 2024-06-10 12:02:15 +02:00
Per Brolin
b41431b378 Merge branch 'alanaV11' into pebr/neo-style 2024-06-10 10:24:43 +02:00
Knut Sveidqvist
1bf4cca3a3 Local package for layout 2024-06-09 19:01:34 +02:00
Knut Sveidqvist
edd4457154 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-09 18:28:31 +02:00
Per Brolin
36de3dca62 Added fix for handling y-alignment of labels of different font-sizes for composite states 2024-06-09 17:33:58 +02:00
Per Brolin
51da34b831 Replaced hard-coded node.look by checking diagram config and cleanup styling a bit 2024-06-07 15:14:26 +02:00
Knut Sveidqvist
59130ca107 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-06-04 16:42:10 +02:00
Per Brolin
544d17db95 WIP:Updated edge-arrow and correct styling pars from figma 2024-06-04 15:11:13 +02:00
Per Brolin
ce6aa48511 WIP: Changed drop-shadow and background of states and composite-states 2024-06-04 12:17:27 +02:00
Per Brolin
03ba130764 Made drop-shadow less prominent and set new arrow-type 2024-06-03 15:42:49 +02:00
Knut Sveidqvist
a36f1d1656 #MC-1733 Support for subgraphs in fixed layout 2024-06-03 15:02:05 +02:00
Ashish Jain
8d1539f2d7 Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-03 14:43:40 +02:00
Ashish Jain
0393e4018b Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-06-03 14:23:37 +02:00
Per Brolin
195ea6405a Merge branch 'alanaV11' into pebr/neo-style 2024-06-03 13:33:26 +02:00
Per Brolin
9fca13ca19 Added first initial styling for neo for state diagrams 2024-06-03 13:10:05 +02:00
Knut Sveidqvist
b9b678a429 #MC-1733 New fixed layout-algorithm for mermaid, nodes and edges 2024-05-31 16:20:24 +02:00
Knut Sveidqvist
648d804d03 Merge remote-tracking branch 'os_repo/5237-unified-layout-common-renderer' into alanaV11 2024-05-31 13:26:10 +02:00
Knut Sveidqvist
344f7a9060 #5237 Bugfixes 2024-05-31 11:29:27 +02:00
Knut Sveidqvist
520e06d2eb #5237 State diagram bugfixes 2024-05-31 10:52:23 +02:00
Knut Sveidqvist
8bb340182c Decorating edges and nodes 2024-05-29 15:58:50 +02:00
Knut Sveidqvist
a62239d9bc Merge branch 'alanaV11' of github.com:Mermaid-Chart/alana-mermaid into alanaV11 2024-05-29 15:56:54 +02:00
Knut Sveidqvist
b390fbe1cb Decorating edges and nodes 2024-05-29 15:56:43 +02:00
Ashish Jain
e416ac1c0b refactor: added look to nodes and edges 2024-05-29 14:27:48 +02:00
Knut Sveidqvist
4538f5b8c6 pnpm-lock fix 2024-05-28 10:39:22 +02:00
Knut Sveidqvist
b2ccec0efa Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-05-28 10:30:04 +02:00
knsv
e52ad8edc2 Update docs 2024-05-24 15:06:03 +00:00
Knut Sveidqvist
be604703aa Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-05-24 17:01:29 +02:00
Knut Sveidqvist
2ba93dd30d Merge branch '5237-unified-layout-common-renderer' of github.com:mermaid-js/mermaid into alanaV11 2024-05-24 17:00:31 +02:00
sidharthv96
a54e1a854b Update docs 2024-05-24 11:09:36 +00:00
Sidharth Vinod
ea56c64c7b Merge branch 'develop' into alana
* develop: (355 commits)
  Create FUNDING.json
  Update pnpm to v9
  Tiny improvements to Diagram Syntax sidebar
  chore(deps): update all patch dependencies
  chore: address @Yokozuna59's code reviews
  refactor: remove non-null assertion operator
  chore: remove unrefSubSchemas
  chore: Build config types before building types
  chore: Ignore `vite.config.ts.timestamp-`
  chore(deps): update all patch dependencies
  Update docs
  chore: Update ordering
  Added to "others" section on integration with Astro
  feat: use standard edge id function for class,flow,state diagram
  feat(utils): create a standard edge id function
  chore: update browsers list
  chore: rm autocompleted import
  trigger e2e again
  feat(state): add from, to in edge
  fix: classrenderer v2 using in op
  ...
2024-05-24 16:33:41 +05:30
Knut Sveidqvist
1089c4029c Merge branch 'master' of github.com:mermaid-js/mermaid into develop 2024-05-24 08:33:22 +02:00
Knut Sveidqvist
bca86cce52 Merge branch 'master' of github.com:mermaid-js/mermaid into develop 2024-05-14 13:09:24 +02:00
Knut Sveidqvist
d14a399801 10.9.0-b.5 2024-03-18 10:41:33 +01:00
Knut Sveidqvist
949a06b00f Adding the missing id prefix 2024-03-18 10:40:57 +01:00
Knut Sveidqvist
0b88e0a8a9 Adding missing id 2024-03-15 15:19:04 +01:00
Knut Sveidqvist
ec4f0120ef Adding missing id 2024-03-14 16:01:46 +01:00
Knut Sveidqvist
51b1216a46 Merge branch 'develop' of github.com:Mermaid-Chart/alana-mermaid into develop 2024-03-14 15:49:29 +01:00
Knut Sveidqvist
f353f3b28c Updated changes for 10.9.0-b.2 2024-03-14 15:49:10 +01:00
knsv
f0f1bec9ce Update docs 2024-03-06 10:14:35 +00:00
Knut Sveidqvist
f5bd82461e MC-1278 version 10.9.0-b.1 2024-03-06 11:10:03 +01:00
Knut Sveidqvist
b5f70cd45e MC-1278 Merging mermaid 10.9 2024-03-06 10:37:53 +01:00
Knut Sveidqvist
c2b640aa86 Updated changes for b.8 2024-03-01 18:03:00 +01:00
Knut Sveidqvist
f5bf2563cf Removing tagging from sequence diagram footer 2024-02-28 17:59:03 +01:00
Knut Sveidqvist
26c7ee15e9 MC-1278 Removing tagging of footer participants 2024-02-28 15:06:53 +01:00
Knut Sveidqvist
8f7fd8329d MC-1278 Adding additional data to messages 2024-02-21 11:34:01 +01:00
knsv
a41488a849 Update docs 2024-02-16 11:15:25 +00:00
Knut Sveidqvist
762daac854 MC-1278 Making adding data-et and data-id to life-lines and actors 2024-02-16 12:10:12 +01:00
Knut Sveidqvist
f1e5bd37ae Merge branch 'release/10.8.0' of github.com:mermaid-js/mermaid into develop 2024-02-02 11:11:46 +01:00
Knut Sveidqvist
ae307831eb Merge from release/10.8.0 2024-02-02 09:55:30 +01:00
Knut Sveidqvist
976a39ea54 Merge branch 'perf/add-dompurify-hooks-once-only' into develop 2024-01-25 18:25:10 +01:00
Alois Klink
0ff611b729 perf: prevent adding multiple DOMPurify hooks
Currently, everytime `removeScript()` is called, the same DOMPurify
hooks are getting added again and again.
2024-01-25 16:48:17 +00:00
Knut Sveidqvist
6c2ded389f Merge branch 'master' of github.com:mermaid-js/mermaid into develop 2024-01-16 10:13:15 +01:00
Knut Sveidqvist
5b3b73ba49 Support for ids on edges 2023-12-08 17:38:49 +01:00
Knut Sveidqvist
ce4318a419 POC Changes 2023-11-13 15:38:03 +01:00
266 changed files with 32490 additions and 6846 deletions

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
---
Fixes for consistent edge id creation & handling edge cases for animate edge feature

View File

@@ -0,0 +1,5 @@
---
'mermaid': patch
---
Fix for issue #6195 - allowing @ signs inside node labels

View File

@@ -0,0 +1,5 @@
---
'mermaid': patch
---
fix: `mermaidAPI.getDiagramFromText()` now returns a new different db for each class diagram

View File

@@ -0,0 +1,5 @@
---
'mermaid': patch
---
fix: revert state db to resolve getData returning empty nodes and edges

View File

@@ -0,0 +1,8 @@
---
'mermaid': minor
---
Flowchart new syntax for node metadata bugs
- Incorrect label mapping for nodes when using `&`
- Syntax error when `}` with trailing spaces before new line

View File

@@ -0,0 +1,5 @@
---
'@mermaid-js/layout-elk': patch
---
fix: Updated offset calculations for diamond shape when handling intersections

View File

@@ -0,0 +1,5 @@
---
'mermaid': minor
---
Adding support for animation of flowchart edges

View File

@@ -0,0 +1,5 @@
---
'mermaid': patch
---
fix: `mermaidAPI.getDiagramFromText()` now returns a new different db for each flowchart

View File

@@ -0,0 +1,5 @@
---
'mermaid': patch
---
fix: Gantt, Sankey and User Journey diagram are now able to pick font-family from mermaid config.

View File

@@ -0,0 +1,5 @@
---
'mermaid': patch
---
`mermaidAPI.getDiagramFromText()` now returns a new different db for each state diagram

View File

@@ -26,6 +26,7 @@ dompurify
elkjs
fcose
fontawesome
Forgejo
Foswiki
Gitea
graphlib
@@ -46,6 +47,7 @@ mdbook
Mermerd
mkdocs
Nextra
NODECOUNT
nodenext
npmjs
pageview
@@ -57,6 +59,7 @@ presetAttributify
pyplot
redmine
rehype
RIGHTDOWN
roughjs
rscratch
shiki
@@ -66,6 +69,7 @@ sphinxcontrib
ssim
stylis
Swimm
topdown
tsbuildinfo
tseslint
Tuleap

View File

@@ -42,4 +42,4 @@ jobs:
working-directory: ./packages/mermaid
run: pnpm run docs:build
- uses: autofix-ci/action@ff86a557419858bb967097bfc916833f5647fa8c # main
- uses: autofix-ci/action@551dded8c6cc8a1054039c8bc0b8b48c51dfc6ef # main

View File

@@ -7,6 +7,9 @@ on:
- master
- release/**
pull_request:
issue_comment:
types:
- created
merge_group:
concurrency: ${{ github.workflow }}-${{ github.ref }}
@@ -28,8 +31,12 @@ env:
) ||
github.event.before
}}
# Check if this is a new comment with '/visual-test'
RUN_VISUAL_TEST: >-
${{ github.event_name == 'issue_comment' && github.event.action == 'created' && contains(github.event.comment.body, '/visual-test') && github.event.issue.pull_request != null }}
jobs:
cache:
if: ${{ github.event_name != 'issue_comment' || contains(github.event.comment.body, '/visual-test') }}
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
@@ -125,18 +132,19 @@ jobs:
browser: chrome
# Disable recording if we don't have an API key
# e.g. if this action was run from a fork
record: ${{ secrets.CYPRESS_RECORD_KEY != '' }}
record: ${{ env.RUN_VISUAL_TEST == 'true' && secrets.CYPRESS_RECORD_KEY != '' }}
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
VITEST_COVERAGE: true
# Only set Argos environment variables if the visual test comment trigger is present
ARGOS_TOKEN: ${{ env.RUN_VISUAL_TEST == 'true' && secrets.ARGOS_TOKEN || '' }}
ARGOS_PARALLEL: ${{ env.RUN_VISUAL_TEST == 'true' }}
ARGOS_PARALLEL_TOTAL: ${{ env.RUN_VISUAL_TEST == 'true' && strategy.job-total || 1 }}
ARGOS_PARALLEL_INDEX: ${{ env.RUN_VISUAL_TEST == 'true' && matrix.containers || 1 }}
CYPRESS_COMMIT: ${{ github.sha }}
ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }}
ARGOS_PARALLEL: true
ARGOS_PARALLEL_TOTAL: ${{ strategy.job-total }}
ARGOS_PARALLEL_INDEX: ${{ matrix.containers }}
CYPRESS_RECORD_KEY: ${{ env.RUN_VISUAL_TEST == 'true' && secrets.CYPRESS_RECORD_KEY || ''}}
SPLIT: ${{ strategy.job-total }}
SPLIT_INDEX: ${{ strategy.job-index }}
SPLIT_FILE: 'cypress/timings.json'
VITEST_COVERAGE: true
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0

View File

@@ -26,7 +26,7 @@ jobs:
results_format: sarif
publish_results: true
- name: Upload artifact
uses: actions/upload-artifact@97a0fba1372883ab732affbe8f94b823f91727db # v3.pre.node20
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name: SARIF file
path: results.sarif

View File

@@ -39,6 +39,7 @@ jobs:
pnpm exec vitest run ./packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts --coverage
- name: Verify out-of-tree build with TypeScript
if: ${{ github.repository == 'mermaid-js/mermaid' }}
run: |
pnpm test:check:tsc

24
.vscode/launch.json vendored
View File

@@ -12,18 +12,18 @@
"args": ["run", "${relativeFile}"],
"smartStep": true,
"console": "integratedTerminal"
},
{
"name": "Docs generation",
"type": "node",
"request": "launch",
"args": ["scripts/docs.cli.mts"],
// we'll need to change this to --import in Node.JS v20.6.0 and up
"runtimeArgs": ["--loader", "tsx/esm"],
"cwd": "${workspaceRoot}/packages/mermaid",
"skipFiles": ["<node_internals>/**", "**/node_modules/**"],
"smartStep": true,
"internalConsoleOptions": "openOnSessionStart"
}
// {
// "name": "Docs generation",
// "type": "node",
// "request": "launch",
// "args": ["scripts/docs.cli.mts"],
// // we'll need to change this to --import in Node.JS v20.6.0 and up
// "runtimeArgs": ["--loader", "tsx/esm"],
// "cwd": "${workspaceRoot}/packages/mermaid",
// "skipFiles": ["<node_internals>/**", "**/node_modules/**"],
// "smartStep": true,
// "internalConsoleOptions": "openOnSessionStart"
// }
]
}

9
Pulling-from-remote.md Normal file
View File

@@ -0,0 +1,9 @@
Pulling from remote repo
```
git remote add os_repo git@github.com:mermaid-js/mermaid.git
git pull os_repo main
git pull os_repo
git pull os_repo master
git pull os_repo 5237-unified-layout-common-renderer
```

View File

@@ -95,6 +95,10 @@ In our release process we rely heavily on visual regression tests using [applito
<!-- </Main description> -->
## Mermaid AI Bot
[Mermaid](https://codeparrot.ai/oracle?owner=mermaid-js&repo=mermaid) Bot will help you understand this repository better. You can ask for code examples, installation guide, debugging help and much more.
## Examples
**The following are some examples of the diagrams, charts and graphs that can be made using Mermaid. Click here to jump into the [text syntax](https://mermaid.js.org/intro/syntax-reference.html).**
@@ -435,7 +439,7 @@ A quick note from Knut Sveidqvist:
>
> _Thank you to [Tyler Long](https://github.com/tylerlong) who has been a collaborator since April 2017._
>
> _Thank you to the ever-growing list of [contributors](https://github.com/knsv/mermaid/graphs/contributors) that brought the project this far!_
> _Thank you to the ever-growing list of [contributors](https://github.com/mermaid-js/mermaid/graphs/contributors) that brought the project this far!_
---

View File

@@ -358,7 +358,7 @@ _很不幸的是鱼与熊掌不可兼得在这个场景下它意味着在
> _特别感谢 [d3](https://d3js.org/) 和 [dagre-d3](https://github.com/cpettitt/dagre-d3) 这两个优秀的项目它们提供了图形布局和绘图工具库_ > _同样感谢 [js-sequence-diagram](https://bramp.github.io/js-sequence-diagrams) 提供了时序图语法的使用。 感谢 Jessica Peter 提供了甘特图渲染的灵感。_ > _感谢 [Tyler Long](https://github.com/tylerlong) 从 2017 年四月开始成为了项目的合作者。_
>
> _感谢越来越多的 [贡献者们](https://github.com/knsv/mermaid/graphs/contributors)没有你们就没有这个项目的今天_
> _感谢越来越多的 [贡献者们](https://github.com/mermaid-js/mermaid/graphs/contributors)没有你们就没有这个项目的今天_
---

View File

@@ -23,7 +23,11 @@ export default eyesPlugin(
});
// copy any needed variables from process.env to config.env
config.env.useAppli = process.env.USE_APPLI ? true : false;
config.env.useArgos = !!process.env.CI;
// only use Argos on CI in the mermaid-js/mermaid repository
config.env.useArgos =
!!process.env.CI &&
process.env.GITHUB_REPOSITORY === 'mermaid-js/mermaid' &&
!!process.env.ARGOS_TOKEN;
if (config.env.useArgos) {
registerArgosTask(on, config, {

View File

@@ -132,3 +132,10 @@ export const verifyScreenshot = (name: string): void => {
cy.matchImageSnapshot(name);
}
};
export const verifyNumber = (value: number, expected: number, deltaPercent = 10): void => {
expect(value).to.be.within(
expected * (1 - deltaPercent / 100),
expected * (1 + deltaPercent / 100)
);
};

View File

@@ -171,6 +171,58 @@ describe.skip('architecture diagram', () => {
`
);
});
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.

View File

@@ -1,4 +1,4 @@
import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts';
import { imgSnapshotTest, renderGraph, verifyNumber } from '../../helpers/util.ts';
describe('Flowchart ELK', () => {
it('1-elk: should render a simple flowchart', () => {
@@ -109,7 +109,7 @@ describe('Flowchart ELK', () => {
const style = svg.attr('style');
expect(style).to.match(/^max-width: [\d.]+px;$/);
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
expect(maxWidthValue).to.be.within(230 * 0.95, 230 * 1.05);
verifyNumber(maxWidthValue, 380);
});
});
it('8-elk: should render a flowchart when useMaxWidth is false', () => {
@@ -128,7 +128,7 @@ describe('Flowchart ELK', () => {
const width = parseFloat(svg.attr('width'));
// use within because the absolute value can be slightly different depending on the environment ±5%
// expect(height).to.be.within(446 * 0.95, 446 * 1.05);
expect(width).to.be.within(230 * 0.95, 230 * 1.05);
verifyNumber(width, 380);
expect(svg).to.not.have.attr('style');
});
});
@@ -692,7 +692,7 @@ A --> B
{}
);
cy.get('svg').should((svg) => {
const edges = svg.querySelectorAll('.edges > path');
const edges = svg[0].querySelectorAll('.edges > path');
edges.forEach((edge) => {
expect(edge).to.have.class('flowchart-link');
});
@@ -739,7 +739,7 @@ NL\`") --"\`1o **bold**\`"--> c
{ flowchart: { titleTopMargin: 0 } }
);
});
it('Wrapping long text with a new line', () => {
it.skip('Wrapping long text with a new line', () => {
imgSnapshotTest(
`%%{init: {"flowchart": {"htmlLabels": true}} }%%
flowchart-elk LR
@@ -841,7 +841,7 @@ end
{ flowchart: { titleTopMargin: 0 } }
);
});
it('Sub graphs and markdown strings', () => {
it('Sub graphs', () => {
imgSnapshotTest(
`---
config:

View File

@@ -1076,4 +1076,41 @@ end
);
});
});
describe('New @ sytax for node metadata edge cases', () => {
it('should be possible to use @ syntax to add labels on multi nodes', () => {
imgSnapshotTest(
`flowchart TB
n2["label for n2"] & n4@{ label: "labe for n4"} & n5@{ label: "labe for n5"}
`,
{}
);
});
it('should be possible to use @ syntax to add labels with trail spaces and &', () => {
imgSnapshotTest(
`flowchart TB
n2["label for n2"] & n4@{ label: "labe for n4"} & n5@{ label: "labe for n5"}
`,
{}
);
});
it('should be possible to use @ syntax to add labels with trail spaces', () => {
imgSnapshotTest(
`flowchart TB
n2["label for n2"]
n4@{ label: "labe for n4"}
n5@{ label: "labe for n5"}
`,
{}
);
});
it('should be possible to use @ syntax to add labels with trail spaces and edge/link', () => {
imgSnapshotTest(
`flowchart TD
A["A"] --> B["for B"] & C@{ label: "for c"} & E@{label : "for E"}
D@{label: "for D"}
`,
{}
);
});
});
});

View File

@@ -460,7 +460,7 @@ stateDiagram-v2
[*] --> State1
State1 --> [*]
`,
{ state: { useMaxWidth: true } }
{ state: { useMaxWidth: true }, look: 'classic' }
);
cy.get('svg').should((svg) => {
expect(svg).to.have.attr('width', '100%');
@@ -482,7 +482,7 @@ stateDiagram-v2
[*] --> State1
State1 --> [*]
`,
{ state: { useMaxWidth: false } }
{ state: { useMaxWidth: false }, look: 'classic' }
);
cy.get('svg').should((svg) => {
// const height = parseFloat(svg.attr('height'));

View File

@@ -338,7 +338,7 @@ describe('State diagram', () => {
[*] --> State1
State1 --> [*]
`,
{ state: { useMaxWidth: true } }
{ state: { useMaxWidth: true }, look: 'classic', theme: 'default' }
);
cy.get('svg').should((svg) => {
expect(svg).to.have.attr('width', '100%');
@@ -361,7 +361,7 @@ describe('State diagram', () => {
[*] --> State1
State1 --> [*]
`,
{ state: { useMaxWidth: false } }
{ state: { useMaxWidth: false }, look: 'classic', theme: 'default' }
);
cy.get('svg').should((svg) => {
// const height = parseFloat(svg.attr('height'));

221
cypress/platform/ash.html Normal file
View File

@@ -0,0 +1,221 @@
<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; */
}
.malware {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 150px;
background: red;
color: black;
display: flex;
display: flex;
justify-content: center;
align-items: center;
font-family: monospace;
font-size: 72px;
}
/* tspan {
font-size: 6px !important;
} */
</style>
</head>
<body>
<pre id="diagram" class="mermaid">
flowchart
node
rounded(rounded)
id1([This is the text in the box])
id2((circle))
id3(((double circle)))
id4>Asymetrical]
id5{This is the text in the box}
id6{{This is the text in the box}}
id7[/This is the text in the box/]
id8[\This is the text in the box\]
A[/Christmas\]
B[\Christmas/]
sub[[subroutine]]
db[(Database)]
</pre
>
<pre id="diagram" class="mermaid">
---
config:
theme: default
look: classic
---
flowchart
node
rounded(rounded)
id1([This is the text in the box])
id2((circle))
id3(((double circle)))
id4>Asymetrical]
id5{This is the text in the box}
id6{{This is the text in the box}}
id7[/This is the text in the box/]
id8[\This is the text in the box\]
B[/Christmas\]
sub[[subroutine]]
db[(Database)]
</pre
>
<pre id="diagram" class="mermaid">
stateDiagram
[*] --> Active
Active --> Inactive
Inactive --> Active
Active --> [*]
</pre>
<pre id="diagram" class="mermaid2">
flowchart
a_a(Aftonbladet) --> b_b[gorilla]:::apa --> c_c{chimp}:::apa -->a_a
a_a --> c --> d_d --> c_c
classDef apa fill:#f9f,stroke:#333,stroke-width:4px;
class a_a apa;
click a_a "http://www.aftonbladet.se" "bookmark"
click c_c callback "new tooltip"
</pre
>
<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
</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
</pre>
<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);
};
window.callback = function () {
alert('A callback was triggered');
};
mermaid.initialize({
theme: 'neo',
look: 'neo',
// handdrawnSeed: 12,
// look: 'handdrawn',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',
fontFamily: 'arial',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
fontSize: 12,
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>

View File

@@ -0,0 +1,164 @@
<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; */
}
.malware {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 150px;
background: red;
color: black;
display: flex;
display: flex;
justify-content: center;
align-items: center;
font-family: monospace;
font-size: 72px;
}
/* tspan {
font-size: 6px !important;
} */
</style>
</head>
<body>
<pre id="diagram" class="mermaid">
flowchart
A --> B & C
subgraph apa
D --> E
end
</pre
>
<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
</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
</pre>
<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);
};
window.callback = function () {
alert('A callback was triggered');
};
mermaid.initialize({
theme: 'neo-dark',
// handdrawnSeed: 12,
look: 'neo',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',
fontFamily: 'arial',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
fontSize: 12,
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>

View File

@@ -0,0 +1,206 @@
<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; */
}
.malware {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 150px;
background: red;
color: black;
display: flex;
display: flex;
justify-content: center;
align-items: center;
font-family: monospace;
font-size: 72px;
}
/* tspan {
font-size: 6px !important;
} */
</style>
</head>
<body>
<pre id="diagram" class="mermaid"></pre>
<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({
startOnLoad: false,
// look: 'handdrawn',
// layout: 'elk',
fontFamily: 'Kalam',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
flowchart: {
// curve: 'cardinal',
// edgeDebug: true,
},
logLevel: 0,
});
mermaid.parseError = function (err, hash) {
console.error('In parse error:');
console.error(err);
};
let code = `---
config:
state:
curve: line
---
stateDiagram
S:S
T:T
U:U
state Z {
state X {
Y:Ypsilon
}
}
A
S --> T: angrepp
T --> U
T --> V
C
D
E
`;
code = `
flowchart TB
n3["Untitled Node"] --> n5["Untitled Node"] & n6["Untitled Node"] & n7["Untitled Node"] & n8["Untitled Node"] & n9["Untitled Node"]
`;
let positions = {
nodes: {
S: { x: 0, y: 0 },
T: { x: 100, y: 100, width: 100, height: 100 },
U: { x: 250, y: 260 },
V: { x: 300, y: 120 },
Z: { x: 300, y: 10, width: 160, height: 100 },
X: { x: 300, y: 20, width: 80, height: 60 },
Y: { x: 300, y: 30, width: 50, height: 20 },
A: { x: 300, y: 75, width: 20, height: 20 },
},
edges: {
edge0: {
points: [
{ x: 0, y: 0 },
{ x: 50, y: 0 },
{ x: 100, y: 100 },
],
},
edge1: {
// points: [
// { x: 100, y: 100 },
// { x: 200, y: 200 },
// ],
points: [
{ x: 100, y: 100 },
{ x: 150, y: 120 },
{ x: 190.19453144073486, y: 120 },
{ x: 190.19453144073486, y: 152.1556251525879 },
{ x: 250, y: 152.1556251525879 },
{ x: 250, y: 160 },
],
},
edge2: {
points: [
{ x: 100, y: 100 },
{ x: 175, y: 80 },
{ x: 200, y: 120 },
{ x: 300, y: 100 },
],
},
},
};
positions = JSON.parse(
'{"nodes":{"n3":{"x":360.885009765625,"y":7.677405834197998,"width":120.59375,"height":45.00000762939453},"n5":{"x":546.1309814453125,"y":190.24496459960938,"width":120.59375,"height":45},"n6":{"x":694.6719360351562,"y":167.00001525878906,"width":120.59375,"height":45},"n7":{"x":72.29684925079346,"y":167.00001525878906,"width":120.59370994567871,"height":45},"n8":{"x":250.27700805664062,"y":183.1090545654297,"width":120.59375,"height":45},"n9":{"x":393.2580871582031,"y":197.45834350585938,"width":120.59375,"height":45}},"edges":{"L_n3_n5_0":{"points":[{"x":383.71510673157036,"y":30.177409648895264},{"x":383.71510673157036,"y":98.96118712425232},{"x":523.300888350029,"y":98.96118712425232},{"x":523.300888350029,"y":167.74496459960938}],"start":"n3","end":"n5"},"L_n3_n6_1":{"points":[{"x":408.02337350122014,"y":30.177409648895264},{"x":408.02337350122014,"y":87.33871245384216},{"x":647.533580291497,"y":87.33871245384216},{"x":647.533580291497,"y":144.50001525878906}],"start":"n3","end":"n6"},"L_n3_n7_2":{"points":[{"x":320.12974762228504,"y":30.177409648895264},{"x":270.12974762228504,"y":87.33871245384216},{"x":113.05210448440184,"y":87.33871245384216},{"x":113.05210448440184,"y":144.50001525878906}],"start":"n3","end":"n7"},"L_n3_n8_3":{"points":[{"x":346.6989693425486,"y":30.177409648895264},{"x":346.6989693425486,"y":95.39323210716248},{"x":264.4630460745863,"y":95.39323210716248},{"x":264.4630460745863,"y":160.6090545654297}],"start":"n3","end":"n8"},"L_n3_n9_4":{"points":[{"x":364.7230894682698,"y":30.177409648895264},{"x":364.7230894682698,"y":102.56787657737732},{"x":389.42000810627434,"y":102.56787657737732},{"x":389.42000810627434,"y":174.95834350585938}],"start":"n3","end":"n9"}}}'
);
// console.log('positions:', positions);
const { svg } = await mermaid.render('the-id-of-the-svg', code, undefined, positions);
// if (window?.calcIntersections2) {
// const int = await calcIntersections2(
// { id: 'a', shape: 'rect', x: 100, y: 100, width: 100, height: 100 },
// { id: 'a', shape: 'rect', x: 300, y: 100, width: 100, height: 100 }
// );
// console.log('Intersections', int);
// } else {
// console.error('calcIntersections not found');
// }
// console.log(JSON.stringify(positions));
const elem = document.querySelector('#diagram');
elem.innerHTML = svg;
</script>
</body>
</html>

View File

@@ -0,0 +1,272 @@
<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://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"
/>
<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"
/>
<link
href="https://fonts.googleapis.com/css2?family=Recursive:wght@300..1000&display=swap"
rel="stylesheet"
/>
<style>
.recursive-500 {
font-family: 'Recursive', serif;
font-optical-sizing: auto;
font-weight: 500;
font-style: normal;
font-variation-settings:
'slnt' 0,
'CASL' 0,
'CRSV' 0.5,
'MONO' 0;
}
body {
/* background: rgb(221, 208, 208); */
/* background: #333; */
/* font-family: 'Arial'; */
font-family: 'Recursive', serif;
font-optical-sizing: auto;
font-weight: 500;
font-style: normal;
font-variation-settings:
'slnt' 0,
'CASL' 0,
'CRSV' 0.5,
'MONO' 0;
/* color: white; */
/* font-size: 18px !important; */
}
.gridify.tiny {
background-image: linear-gradient(
transparent 11px,
rgba(220, 220, 200, 0.8) 12px,
transparent 12px
),
linear-gradient(90deg, transparent 11px, rgba(220, 220, 200, 0.8) 12px, transparent 12px);
background-size:
100% 12px,
12px 100%;
}
.gridify.dots {
background-image: radial-gradient(
circle at center,
rgba(220, 220, 200, 0.8) 1px,
transparent 1px
);
background-size: 24px 24px;
}
h1 {
color: grey;
}
.mermaid2 {
display: none;
}
.mermaid svg {
font-size: 16px !important;
font-family: 'Recursive', serif;
font-optical-sizing: auto;
font-weight: 500;
font-style: normal;
font-variation-settings:
'slnt' 0,
'CASL' 0,
'CRSV' 0.5,
'MONO' 0;
}
pre {
width: 100%;
/*box-shadow: 4px 4px 0px 0px #0000000F;*/
}
</style>
</head>
<body class="gridify dots">
<p class="mb-20">Test Diagram</p>
<div class="w-full h-64">
<pre id="diagram4" class="mermaid">
---
config:
theme: neo
layout: dagre
---
flowchart TD
A{"Diamond"} --- n1["Rectangle"] & n2["Rounded"] & n3(["Stadium"])
n1 --x n4["Rounded"]
n2 --o n5["Hexagon"]
n3 --> n6["Parallelogram"]
n5 o--o n7["Trapezoid"]
n4 x--x n8["Lean Right"]
n6 <--> n9(("Circle"))
n8 --> n10["Rose"]
n7 --> n11["Pine"]
n9 --> n12["Peach"]
n2@{ shape: rounded}
n4@{ shape: rounded}
n5@{ shape: hex}
n6@{ shape: lean-l}
n7@{ shape: trap-b}
n8@{ shape: lean-r}
n10:::Rose
n11:::Pine
n12:::Peach
classDef Rose stroke-width:1px, stroke-dasharray:none, stroke:#FF5978, fill:#FFDFE5, color:#8E2236
classDef Pine stroke-width:1px, stroke-dasharray:none, stroke:#254336, fill:#27654A, color:#FFFFFF
classDef Peach stroke-width:1px, stroke-dasharray:none, stroke:#FBB35A, fill:#FFEFDB, color:#8F632D
n10 --x End
n11 --x End
n12 --x End
</pre
>
<pre id="diagram4" class="mermaid">
---
config:
look: classic
theme: forest
layout: dagre
---
flowchart TD
A{"Diamond"} --- n1["Rectangle"] & n2["Rounded"] & n3(["Stadium"])
n1 --x n4["Rounded"]
n2 --o n5["Hexagon"]
n3 --> n6["Parallelogram"]
n5 o--o n7["Trapezoid"]
n4 x--x n8["Lean Right"]
n6 <--> n9(("Circle"))
n8 --> n10["Rose"]
n7 --> n11["Pine"]
n9 --> n12["Peach"]
n2@{ shape: rounded}
n4@{ shape: rounded}
n5@{ shape: hex}
n6@{ shape: lean-l}
n7@{ shape: trap-b}
n8@{ shape: lean-r}
n10:::Rose
n11:::Pine
n12:::Peach
classDef Rose stroke-width:1px, stroke-dasharray:none, stroke:#FF5978, fill:#FFDFE5, color:#8E2236
classDef Pine stroke-width:1px, stroke-dasharray:none, stroke:#254336, fill:#27654A, color:#FFFFFF
classDef Peach stroke-width:1px, stroke-dasharray:none, stroke:#FBB35A, fill:#FFEFDB, color:#8F632D
n10 --x End
n11 --x End
n12 --x End
</pre
>
</div>
<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);
};
window.callback = function () {
alert('A callback was triggered');
};
function callback() {
alert('It worked');
}
await mermaid.initialize({
startOnLoad: false,
theme: 'redux',
// theme: 'default',
// theme: 'forest',
// handDrawnSeed: 12,
look: 'neo',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',
fontFamily: 'Recursive',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
kanban: {
htmlLabels: false,
},
fontSize: 16,
logLevel: 0,
securityLevel: 'loose',
callback,
});
// setTimeout(() => {
mermaid.init(undefined, document.querySelectorAll('.mermaid'));
// }, 1000);
mermaid.parseError = function (err, hash) {
console.error('In parse error:');
console.error(err);
};
</script>
</body>
</html>

View File

@@ -0,0 +1,306 @@
<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; */
}
.malware {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 150px;
background: red;
color: black;
display: flex;
display: flex;
justify-content: center;
align-items: center;
font-family: monospace;
font-size: 72px;
}
/* tspan {
font-size: 6px !important;
} */
</style>
</head>
<body>
<pre id="diagram" class="mermaid"></pre>
<pre id="diagram2" class="mermaid"></pre>
<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.parseError = function (err, hash) {
console.error('In parse error:');
console.error(err);
};
let code = `
stateDiagram
S:S
T:T
U:U
state Z {
state X {
Y:Ypsilon
}
}
A
S --> T: angrepp
S --> T: angrepp
T --> U
Y --> V
C
D
E
`;
code = `
flowchart TB
c1-->a2
subgraph one
a1-->a2
end
subgraph two
b1-->b2
end
subgraph three
c1-->c2
end
`;
// code = `
// flowchart BT
// A
// subgraph one
// a1 --> a2
// end
// subgraph two
// a3
// end
// `;
// code = `
// flowchart TB
// subgraph one
// a1-->a2
// end`;
// let positions = JSON.parse(
// '{"nodes":{"S":{"x":30.78125,"y":43.5},"Y":{"x":127.94140625,"y":50}},"edges":{}}'
// );
function exctractPositions(svg) {
const positions = { nodes: {}, edges: {} };
// Extract the viewbox paddings - TOSDO: update in collab
const viewBox = svg.getAttribute('viewBox').split(' ');
const viewBoxX = parseFloat(viewBox[0]);
const viewBoxY = parseFloat(viewBox[1]);
// console.log('viewBox:', viewBoxX, viewBoxY);
svg.querySelectorAll('[data-et="node"]').forEach((node) => {
if (node.tagName === 'g') {
// console.log('node:', node);
const id = node.dataset.id;
const bbox = node.getBBox();
const transform = node.getAttribute('transform');
const x = parseFloat(transform.split(',')[0].split('(')[1]);
const y = parseFloat(transform.split(',')[1].split(')')[0]);
// Get the bounding rectangle of the element
const rect = node.getBoundingClientRect();
// Get the absolute position relative to the document
const absoluteX = rect.left + window.pageXOffset + viewBoxX;
const absoluteY = rect.top + window.pageYOffset + viewBoxY;
positions.nodes[id] = {
x: absoluteX + rect.width / 2,
y: absoluteY + rect.height / 2,
width: rect.width,
height: rect.height,
};
}
});
svg.querySelectorAll('[data-et="cluster"]').forEach((node) => {
// console.log('cluster:', node);
if (node.tagName === 'g') {
const id = node.dataset.id;
// console.log('cluster:', node);
const transform = node.getAttribute('transform');
const rect = node.getBoundingClientRect();
// Get the absolute position relative to the document
const absoluteX = rect.left + window.pageXOffset + viewBoxX;
const absoluteY = rect.top + window.pageYOffset + viewBoxY;
positions.nodes[id] = {
x: absoluteX + rect.width / 2,
y: absoluteY + rect.height / 2,
width: rect.width,
height: rect.height,
};
}
});
svg.querySelectorAll('[data-et="edge"]').forEach((edge) => {
// if (node.tagName === 'g') {
const path = edge.getBoundingClientRect();
// Get the absolute position relative to the document
const absoluteX = path.left + window.pageXOffset + viewBoxX;
const absoluteY = path.top + window.pageYOffset + viewBoxY;
console.log(
'absoluteX:',
absoluteX,
'absoluteY:',
absoluteY,
'offset',
window.pageXOffset
);
const id = edge.dataset.id;
const points = JSON.parse(atob(edge.dataset.points));
console.log('edge:', points, absoluteX, absoluteY);
let minX = 10000;
let minY = 10000;
points.forEach((point) => {
if (point.x < minX) {
minX = point.x;
}
if (point.y < minY) {
minY = point.y;
}
});
let dx = absoluteX - minX;
let dy = absoluteY - minY;
if (dx < 1) {
dx = 0;
}
if (dy < 1) {
dy = 0;
}
positions.edges[id] = {
points: points.map((point) => {
console.log('point:', point.y, absoluteY);
return {
x: point.x + dx,
y: point.y + dy,
};
}),
};
// }
});
return positions;
}
const mode = 'reset';
if (mode === 'reset') {
mermaid.initialize({
startOnLoad: false,
layout: 'elk',
fontFamily: 'Kalam',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
logLevel: 5,
});
const { svg } = await mermaid.render('the-id-of-the-svg', code);
const elem = document.querySelector('#diagram');
elem.innerHTML = svg;
elem.classList.remove('mermaid');
const positions = exctractPositions(elem.firstChild);
// console.log('Positions:', JSON.stringify(positions));
const { svg: svg2 } = await mermaid.render(
'the-id-of-the-svg2',
'---\n config:\n layout: fixed\n---' + code,
undefined,
positions
);
// console.log('svg2', svg2);
const elem2 = document.querySelector('#diagram2');
elem2.innerHTML = svg2;
} else {
mermaid.initialize({
startOnLoad: false,
// look: 'handdrawn',
layout: 'fixed',
fontFamily: 'Kalam',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
logLevel: 0,
});
const { svg } = await mermaid.render('the-id-of-the-svg', code, undefined, positions);
// console.log(JSON.stringify(positions));
const elem = document.querySelector('#diagram');
elem.innerHTML = svg;
}
</script>
</body>
</html>

View File

@@ -90,6 +90,58 @@
<body>
<pre id="diagram4" class="mermaid">
---
config:
look: classic
theme: forest
layout: dagre
---
flowchart LR
A["A"] --> C
B("B B B B B") --> C[/"C C C C C"/]
C@{ shape: circle }
%%C@{ shape: question }
C@{ shape: stadium }
</pre>
<pre id="diagram4" class="mermaid">
---
config:
look: classic
layout: elk
---
flowchart LR
n1["n1"] --- C
B("Continue") --> C[/"Evaluate"/]
C -- One --> D["Option 1"]
C -- Two --> E["Option 2"]
C -- Three --> F["fa:fa-car Option 3"]
C@{ shape: db }
</pre>
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
---
flowchart LR
%% subgraph s1["Untitled subgraph"]
C{"Evaluate"}
%% end
B --> C
</pre>
<pre id="diagram4" class="mermaid2">
---
config:
look: neo
layout: elk
---
flowchart LR
%% A ==> B
%% A2 --> B2
D --> I((I the Circle))
D --> I
</pre>
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
---
@@ -100,13 +152,13 @@ config:
end
D -- Mermaid js --> I{"fa:fa-code Text"}
D --> I
D -- Mermaid js --> I(("fa:fa-code Text"))
D --> I
D --> E --> I
end
</pre>
<pre id="diagram4" class="mermaid">
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
@@ -131,7 +183,7 @@ config:
end
end
</pre>
<pre id="diagram4" class="mermaid">
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
@@ -144,7 +196,7 @@ config:
D-->I
D-->I
</pre>
<pre id="diagram4" class="mermaid">
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
@@ -183,7 +235,7 @@ flowchart LR
n8@{ shape: rect}
</pre>
<pre id="diagram4" class="mermaid">
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
@@ -199,7 +251,7 @@ flowchart LR
</pre>
<pre id="diagram4" class="mermaid">
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
@@ -208,7 +260,7 @@ flowchart LR
A{A} --> B & C
</pre
>
<pre id="diagram4" class="mermaid">
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
@@ -220,7 +272,7 @@ flowchart LR
end
</pre
>
<pre id="diagram4" class="mermaid">
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
@@ -394,7 +446,7 @@ kanban
mermaid.initialize({
// theme: 'base',
// theme: 'default',
// theme: 'forest',
theme: 'forest',
// handDrawnSeed: 12,
// look: 'handDrawn',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
@@ -402,7 +454,7 @@ kanban
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
flowchart: { titleTopMargin: 10 },
flowchart: { titleTopMargin: 10, useMaxWidth: false },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',

View File

@@ -1,103 +1,173 @@
<!doctype html>
<html lang="en">
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Mindmap Mermaid Quick Test Page</title>
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
<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://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"
/>
<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>
div.mermaid {
/* font-family: 'trebuchet ms', verdana, arial; */
font-family: 'Courier New', Courier, monospace !important;
body {
/* background: rgb(221, 208, 208); */
/* background: #333; */
font-family: 'Arial';
/* color: white; */
/* 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; */
}
.malware {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 150px;
background: red;
color: black;
display: flex;
display: flex;
justify-content: center;
align-items: center;
font-family: monospace;
font-size: 72px;
}
pre {
width: 100%;
}
/* tspan {
font-size: 6px !important;
} */
</style>
</head>
<body>
<h1>Mindmap diagram demo</h1>
<pre class="mermaid">
mindmap
root
child1((Circle))
grandchild 1
grandchild 2
child2(Round rectangle)
grandchild 3
grandchild 4
child3[Square]
grandchild 5
::icon(mdi mdi-fire)
gc6((grand<br/>child 6))
::icon(mdi mdi-fire)
gc7((grand<br/>grand<br/>child 8))
</pre>
<h2>Mindmap with root wrapping text and a shape</h2>
<pre class="mermaid">
mindmap
root[A root with a long text that wraps to keep the node size in check]
</pre>
<div class="flex gap-4">
<pre id="diagram4" class="mermaid">
---
config:
look: classic
theme: forest
layout: elk
---
flowchart LR
n1["n1"] --> C
n2("n2") --> C
C@{ shape: circle }
</pre
>
<pre id="diagram4" class="mermaid">
---
config:
look: neo
theme: redux
layout: elk
---
flowchart LR
n1["n1"] --> C
n2("n2") --> C
C@{ shape: circle }
</pre
>
<pre id="diagram4" class="mermaid">
---
config:
look: handDrawn
theme: forest
layout: elk
---
flowchart LR
n1["n1"] --> C
n2("n2") --> C
C@{ shape: circle }
</pre
>
</div>
<script type="module">
// import mermaid from './mermaid.esm.mjs';
import mermaid from '../../packages/mermaid/dist/mermaid.esm.mjs';
// import mermaidMindmap from './mermaid-mindmap.esm.mjs';
import mermaid from './mermaid.esm.mjs';
import layouts from './mermaid-layout-elk.esm.mjs';
// import mermaidMindmap from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-mindmap@9.3.0/+esm';
// await mermaid.registerExternalDiagrams([mermaidMindmap]);
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,
};
const ALLOWED_TAGS = [
'a',
'b',
'blockquote',
'br',
'dd',
'div',
'dl',
'dt',
'em',
'foreignObject',
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'h7',
'h8',
'hr',
'i',
'li',
'ul',
'ol',
'p',
'pre',
'span',
'strike',
'strong',
'table',
'tbody',
'td',
'tfoot',
'th',
'thead',
'tr',
];
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);
console.error('Mermaid error: ', err);
};
window.callback = function () {
alert('A callback was triggered');
};
mermaid.initialize({
theme: 'base',
startOnLoad: true,
flowchart: { titleTopMargin: 10, useMaxWidth: false },
fontSize: 12,
logLevel: 0,
flowchart: {
useMaxWidth: false,
htmlLabels: true,
},
gantt: {
useMaxWidth: false,
},
useMaxWidth: false,
securityLevel: 'loose',
});
function callback() {
alert('It worked');

View File

@@ -0,0 +1,171 @@
<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 {
font-family: 'Arial';
background-color: #333;
}
h3 {
color: white;
}
</style>
</head>
<body>
<div class="flex w-full">
<div id="diagram-fixed"></div>
<div id="diagram-normal"></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({
startOnLoad: false,
//look: 'handdrawn',
// layout: 'fixed',
theme: 'neo-dark',
//layout: 'elk',
fontFamily: 'Kalam',
logLevel: 1,
});
// let shape = 'rect'; // Done
//let shape = 'rounded'; // Done
//let shape = 'stadium'; // Done
// let shape = 'fr-rect'; // Done
// let shape = 'cyl'; // Done
//let shape = 'circle'; // Done
// let shape = 'odd'; // Done
// let shape = 'diam'; //Done
// let shape = 'hex'; // Done
// let shape = 'lean-r'; // Done
// let shape = 'lean-l'; // Done
// let shape = 'trap-b'; // Done
// let shape = 'trap-t'; // Done
// let shape = 'dbl-circ'; // Done
// let shape = 'text'; // Done
// let shape = 'notch-rect'; // Done
// let shape = 'lin-rect'; // Done
//let shape = 'sm-circ'; // Done
// let shape = 'fr-circ'; //Done
//let shape = 'fork'; // Done
//let shape = 'hourglass'; //Done
// let shape = 'bolt'; //Done
// let shape = 'doc'; // Done
// let shape = 'delay'; // Done
// let shape = 'h-cyl'; // Done
// let shape = 'lin-cyl'; // Done
// let shape = 'curv-trap'; // Done
// let shape = 'div-rect'; // Done
//let shape = 'tri'; // Done
// let shape = 'win-pane'; //Done
// let shape = 'f-circ'; // Done
// let shape = 'lin-doc'; // Done
// let shape = 'notch-pent'; // Done
// let shape = 'flip-tri'; // Done
// let shape = 'sl-rect'; // Done
// let shape = 'cross-circ'; // Done
// let shape = 'bow-rect'; // Done
// let shape = 'st-rect'; // Done
// let shape = 'flag';
// let shape = 'docs';
// let shape = 'brace';
// let shape = 'brace-r';
// let shape = 'braces';
// let shape = 'tag-doc';
let configFixed = `---
config:
layout: fixed
---
`;
let code = `flowchart TB
%% n80["APA ksldj hfaskljdh aklsjdhf klasjdhf klasjhf klsajdh klasjdhf klasjdhf klasjdh klasjhf klasjdh klajsdhfklasjdhf kljadh fklasjdhf klajsdhf lkasdhf klajsdhf klasjdhfklasjdh klasjhf klasdfh klasdfh aklsjfh akjshkasldfh klasdfh klasjh fklsjhf klasdhf kljasdhf klasdhf klj"]
%% n80@{ shape: '${shape}'}
n81@{ label: "Ashish", shape: '${shape}'}
%%n82@{ label: "n82", shape: '${shape}'}
%%n83@{ label: "n83", shape: '${shape}'}
`;
let positions = {
edges: {},
nodes: {
n81: {
x: 0,
y: 10,
width: 107.7,
height: 65,
},
n80: {
x: -400,
y: 10,
width: 1,
height: 1,
},
n82: {
x: 0,
y: 110,
},
n83: {
x: 80,
y: 10,
},
n84: {
x: 1200,
y: 10,
width: 300,
height: 200,
},
},
};
console.log(configFixed + code);
const { svg } = await mermaid.render(
'the-id-of-the-svg-1',
configFixed + code,
undefined,
positions
);
const elem = document.querySelector('#diagram-fixed');
elem.innerHTML = svg;
const { svg: svg2 } = await mermaid.render('the-id-of-the-svg-2', code, undefined, positions);
const elem2 = document.querySelector('#diagram-normal');
elem2.innerHTML = svg2;
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,248 @@
<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://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"
/>
<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"
/>
<link
href="https://fonts.googleapis.com/css2?family=Recursive:wght@300..1000&display=swap"
rel="stylesheet"
/>
<style>
.recursive-500 {
font-family: 'Recursive', serif;
font-optical-sizing: auto;
font-weight: 500;
font-style: normal;
font-variation-settings:
'slnt' 0,
'CASL' 0,
'CRSV' 0.5,
'MONO' 0;
}
body {
/* background: rgb(221, 208, 208); */
/* background: #333; */
/* font-family: 'Arial'; */
font-family: 'Recursive', serif;
font-optical-sizing: auto;
font-weight: 500;
font-style: normal;
font-variation-settings:
'slnt' 0,
'CASL' 0,
'CRSV' 0.5,
'MONO' 0;
/* color: white; */
/* font-size: 18px !important; */
}
.gridify.tiny {
background-image: linear-gradient(
transparent 11px,
rgba(220, 220, 200, 0.8) 12px,
transparent 12px
),
linear-gradient(90deg, transparent 11px, rgba(220, 220, 200, 0.8) 12px, transparent 12px);
background-size:
100% 12px,
12px 100%;
}
.gridify.dots {
background-image: radial-gradient(
circle at center,
rgba(220, 220, 200, 0.8) 1px,
transparent 1px
);
background-size: 24px 24px;
}
h1 {
color: grey;
}
.mermaid2 {
display: none;
}
.mermaid svg {
font-size: 16px !important;
font-family: 'Recursive', serif;
font-optical-sizing: auto;
font-weight: 500;
font-style: normal;
font-variation-settings:
'slnt' 0,
'CASL' 0,
'CRSV' 0.5,
'MONO' 0;
}
pre {
width: 100%;
/*box-shadow: 4px 4px 0px 0px #0000000F;*/
}
</style>
</head>
<body class="gridify dots">
<p class="mb-20">Test Diagram</p>
<div class="w-full h-64">
<pre style="display: none">
---
config:
theme: neo
layout: dagre
---
flowchart TD
A{"Cylinder"} --- n1["Rectangle"] & n2["Rounded"] & n3(["Stadium"])
n1 --x n4["Rounded"]
n2 --o n5["Hexagon"]
n3 --> n6["Parallelogram"]
n5 o--o n7["Trapezoid"]
n4 x--x n8["Lean Right"]
n6 <--> n9(("Circle"))
n8 --> n10["Rose"]
n7 --> n11["Pine"]
n9 --> n12["Peach"]
n2@{ shape: rounded}
n4@{ shape: rounded}
n5@{ shape: hex}
n6@{ shape: lean-l}
n7@{ shape: trap-b}
n8@{ shape: lean-r}
n10:::Rose
n11:::Pine
n12:::Peach
classDef Rose stroke-width:1px, stroke-dasharray:none, stroke:#FF5978, fill:#FFDFE5, color:#8E2236
classDef Pine stroke-width:1px, stroke-dasharray:none, stroke:#254336, fill:#27654A, color:#FFFFFF
classDef Peach stroke-width:1px, stroke-dasharray:none, stroke:#FBB35A, fill:#FFEFDB, color:#8F632D
n10 --x End
n11 --x End
n12 --x End
</pre
>
<pre id="diagram4" class="mermaid">
---
config:
theme: neo
layout: dagre
---
flowchart TD
n1["Cylinder"]
n1@{ shape: database}
</pre
>
</div>
<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);
};
window.callback = function () {
alert('A callback was triggered');
};
function callback() {
alert('It worked');
}
await mermaid.initialize({
startOnLoad: false,
theme: 'redux',
// theme: 'default',
// theme: 'forest',
// handDrawnSeed: 12,
look: 'neo',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',
fontFamily: 'Recursive',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
kanban: {
htmlLabels: false,
},
fontSize: 16,
logLevel: 0,
securityLevel: 'loose',
callback,
});
// setTimeout(() => {
mermaid.init(undefined, document.querySelectorAll('.mermaid'));
// }, 1000);
mermaid.parseError = function (err, hash) {
console.error('In parse error:');
console.error(err);
};
</script>
</body>
</html>

View File

@@ -4,28 +4,60 @@
<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/6.5.2/css/font-awesome.min.css"
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; */
/* 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; */
}
.malware {
position: fixed;
bottom: 0;
@@ -41,34 +73,75 @@
font-family: monospace;
font-size: 72px;
}
/* tspan {
font-size: 6px !important;
} */
</style>
</head>
<body>
<div>Security check</div>
<pre id="diagram" class="mermaid">
flowchart LR
A-->B
</pre
>
<pre id="diagram" class="mermaid2">
mindmap
root
ch1
ch2
</pre
stateDiagram-v2
direction LR
[*] --> Active
state Active {
direction BT
[*] --> Inner
Inner --> NumLockOn : EvNumLockPressed
}
%% Outer --> Inner
</pre
>
<script src="./packages/mermaid-mindmap/dist/mermaid-mindmap-detector.js"></script>
<script src="./packages/mermaid-mindmap/dist/mermaid-example-diagram-detector.js"></script>
<script src="./packages/mermaid/dist/mermaid.esm.mjs"></script>
<script>
<pre id="diagram" class="mermaid">
stateDiagram-v2
[*] --> First
state First {
[*] --> second
second --> [*]
}
</pre>
<pre id="diagram" class="mermaid2">
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>
<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);
console.error('Mermaid error: ', err);
};
mermaid.initialize({
startOnLoad: true,
theme: 'neo',
handdrawnSeed: 12,
look: 'neo',
//layout: 'elk',
'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
//fontFamily: 'Kalam',
fontFamily: 'Arial',
sequence: {
actorFontFamily: 'arial',
noteFontFamily: 'arial',
messageFontFamily: 'arial',
},
fontSize: 10,
logLevel: 0,
basePath: './packages/',
// themeVariables: {relationLabelColor: 'red'}
htmlLabels: true,
});
function callback() {
alert('It worked');
@@ -77,6 +150,10 @@ A-->B
console.error('In parse error:');
console.error(err);
};
// mermaid.test1('first_slow', 1200).then((r) => console.info(r));
// mermaid.test1('second_fast', 200).then((r) => console.info(r));
// mermaid.test1('third_fast', 200).then((r) => console.info(r));
// mermaid.test1('forth_slow', 1200).then((r) => console.info(r));
</script>
</body>
</html>

View File

@@ -0,0 +1,307 @@
<html>
<head>
<script src="//unpkg.com/alpinejs" defer></script>
<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 {
font-family: 'Arial';
}
table {
width: 100%;
border-collapse: collapse;
table-layout: fixed;
}
th,
td {
border: 1px solid black;
padding: 10px;
text-align: center;
vertical-align: middle;
}
.separator {
height: 20px;
background-color: #f0f0f0;
}
.vertical-header {
text-align: center;
}
.collapsible {
background-color: #f9f9f9;
color: #444;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active,
.collapsible:hover {
background-color: #ccc;
}
.collapsible:after {
content: '\002B';
color: #777;
font-weight: bold;
float: right;
margin-left: 2px;
}
.active:after {
content: '\2212';
}
.content {
padding: 0 5px;
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
background-color: #f1f1f1;
}
.content .pre-scrollable {
max-height: 200px;
overflow-y: scroll;
}
</style>
</head>
<body>
<script>
const data = {
shapes: [
{
descr: 'Stadium shape',
code: `
flowchart LR
id1([This is the text in the box])
`,
},
{
descr: 'Sub-Routine shape',
code: `
flowchart LR
id1[[This is the text in the box]]
`,
},
{
descr: 'Cylindrical shape',
code: `
flowchart LR
id1[(Database)]
`,
},
{
descr: 'Circle shape',
code: `
flowchart LR
id1((Circle))
`,
},
{
descr: 'Double Circle shape',
code: `
flowchart LR
id1(((Circle)))
`,
},
{
descr: 'Asymmetric shape',
code: `
flowchart LR
id1>This is the text in the box]
`,
},
{
descr: 'Rhombus/Diamond/Question shape',
code: `
flowchart LR
id1{This is the text in the box}
`,
},
{
descr: 'Hexagon shape',
code: `
flowchart LR
id1{{This is the text in the box}}
`,
},
{
descr: 'Parallelogram shape',
code: `
flowchart TD
id1[/This is the text in the box/]
`,
},
{
descr: 'Parallelogram Alt shape',
code: `
flowchart TD
id1[\This is the text in the box\]
`,
},
{
descr: 'Trapezoid shape',
code: `
flowchart TD
A[/Christmas\\]
`,
},
{
descr: 'Trapezoid Alt shape',
code: `
flowchart TD
id1[\\This is the text in the box\\]
`,
},
{
descr: 'Rect with rounded corner',
code: `
flowchart LR
id1(This is the text in the box)
`,
},
{
descr: 'Rect with sharp corner',
code: `
flowchart LR
id1[This is the text in the box]
`,
},
],
looks: ['classic', 'handdrawn', 'neo'],
// looks: ['classic'],
layouts: ['elk', 'dagre'],
// layouts: ['elk'],
themes: ['default', 'neo'],
// themes: ['default'],
};
function generateMermaidCode(layout, look, theme, shape) {
return `---
config:
layout: ${layout}
look: ${look}
theme: ${theme}
---
${shape.code}
`;
}
</script>
<table x-data="data">
<tr>
<th></th>
<template x-for="layout in layouts">
<template x-for="look in looks">
<template x-for="theme in themes">
<th x-text="layout + '-' + look + '-' + theme "></th>
</template>
</template>
</template>
</tr>
<template x-for="shape in shapes">
<tr>
<th class="vertical-header">
<button class="collapsible" x-text="shape.descr">Sub-Routine shape</button>
<div class="content">
<div class="pre-scrollable">
<pre x-text="shape.code"></pre>
</div>
</div>
</th>
<template x-for="layout in layouts">
<template x-for="look in looks">
<template x-for="theme in themes">
<td>
<pre
id="diagram6"
class="mermaid"
x-text="generateMermaidCode(layout, look, theme, shape)"
></pre>
</td>
</template>
</template>
</template>
</tr>
</template>
</table>
<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) {};
mermaid.initialize({
handdrawn: false,
mergeEdges: true,
layout: 'dagre',
flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
fontFamily: 'Kalam',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
fontSize: 16,
logLevel: 0,
});
function callback() {
alert('It worked');
}
mermaid.parseError = function (err, hash) {
console.error('In parse error:');
console.error(err);
};
let coll = document.getElementsByClassName('collapsible');
for (const element of coll) {
element.addEventListener('click', function () {
this.classList.toggle('active');
let content = this.nextElementSibling;
if (content.style.maxHeight) {
content.style.maxHeight = null;
} else {
content.style.maxHeight = content.scrollHeight + 'px';
}
});
}
</script>
</body>
</html>

View File

@@ -62,56 +62,23 @@
<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
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
</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';

View File

@@ -0,0 +1,102 @@
<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 {
font-family: 'Arial';
background-color: #333;
}
</style>
</head>
<body>
<div id="diagram"></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({
startOnLoad: false,
//look: 'handdrawn',
// layout: 'fixed',
theme: 'dark',
//layout: 'elk',
fontFamily: 'Kalam',
logLevel: 1,
});
let shape = 'circle';
let simplified = true;
// let simplified = false;
let algorithm = 'elk';
// let algorithm = 'dagre';
let code = `---
config:
layout: ${algorithm}
---
flowchart TD
A["Abrakadabra"] --> C["C"] & D["I am a circle"] & n4["Untitled Node"]
D@{ shape: diamond}
B["Bombrakadombra"] --> D & C & D
C --> E["E"] & B
D --> E & A
n4 --> C
A@{ shape: ${shape}}
B@{ shape: ${shape}}
C@{ shape: ${shape}}
D@{ shape: ${shape}}
E@{ shape: ${shape}}
n4@{ shape: ${shape}}
`;
if (simplified) {
code = `---
config:
layout: ${algorithm}
---
flowchart LR
A["Abrakadabra"] --> C["I am the circle"] & C & C & C & C
%% A["Abrakadabra"] --> C
A@{ shape: ${shape}}
C@{ shape: ${shape}}
`;
}
console.log(code);
const { svg } = await mermaid.render('the-id-of-the-svg', code, undefined, undefined);
const elem = document.querySelector('#diagram');
elem.innerHTML = svg;
</script>
</body>
</html>

View File

@@ -0,0 +1,180 @@
<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 {
font-family: 'Arial';
background-color: #333;
}
</style>
</head>
<body>
<div id="diagram"></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({
startOnLoad: false,
//look: 'handdrawn',
layout: 'fixed',
theme: 'neo-dark',
//layout: 'elk',
fontFamily: 'Kalam',
logLevel: 1,
class: {
hideEmptyMembersBox: true,
},
});
let shape = 'circle';
let code = `
flowchart TB
n80["APA ksldj hfaskljdh aklsjdhf klasjdhf klasjhf klsajdh klasjdhf klasjdhf klasjdh klasjhf klasjdh klajsdhfklasjdhf kljadh fklasjdhf klajsdhf lkasdhf klajsdhf klasjdhfklasjdh klasjhf klasdfh klasdfh aklsjfh akjshkasldfh klasdfh klasjh fklsjhf klasdhf kljasdhf klasdhf klj"]
n80@{ shape: '${shape}'}
n81["APA ksldj hfaskljdh aklsjdhf klasjdhf klasjhf klsajdh klasjdhf klasjdhf klasjdh klasjhf klasjdh klajsdhfklasjdhf kljadh fklasjdhf klajsdhf lkasdhf klajsdhf klasjdhfklasjdh klasjhf klasdfh klasdfh aklsjfh akjshkasldfh klasdfh klasjh fklsjhf klasdhf kljasdhf klasdhf klj"]
n82["A single line of text"]
n81@{ shape: '${shape}'}
n82@{ shape: '${shape}'}
n83@{ label: "A single line of text", shape: '${shape}'}
n84@{ shape: '${shape}'}
`;
let code2 = `
classDiagram
class class1 {
int num
string test
string test
string test
string test
string test
method()
}
class class2 {
int num
string test
string test
string test
string test
string test
method()
method()
}
class class3 {
int test
}
<<interface>> class3
class class4 {
int[] id
method()
method()
method()
method()
}
<<interface>> class4
`;
let positions = {
edges: {},
nodes: {
n81: {
x: 0,
y: 10,
width: 300,
height: 200,
},
n80: {
x: -400,
y: 10,
width: 100,
height: 50,
},
n82: {
x: 400,
y: 10,
width: 300,
height: 200,
},
n83: {
x: 800,
y: 10,
},
n84: {
x: 1200,
y: 10,
width: 300,
height: 200,
},
},
};
let positions2 = {
edges: {},
nodes: {
class1: {
x: 0,
y: 10,
width: 100,
height: 400,
},
class2: {
x: -300,
y: 100,
width: 100,
height: 0,
},
class3: {
x: 400,
y: 10,
width: 0,
height: 0,
},
class4: {
x: 800,
y: 10,
width: 0,
height: 0,
},
},
};
const { svg } = await mermaid.render('the-id-of-the-svg', code2, undefined, positions2);
const elem = document.querySelector('#diagram');
elem.innerHTML = svg;
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -93,6 +93,7 @@
<th></th> <!-- Placeholder for the top left corner -->
<th>Dagre</th>
<th>Dagre with rough</th>
<th>Dagre with neo</th>
<th>ELK</th>
<th>ELK with rough</th>
</tr>
@@ -116,6 +117,14 @@ stateDiagram-v2
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "handDrawn"} }%%
stateDiagram-v2
stateId
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
stateId
@@ -163,6 +172,13 @@ stateDiagram-v2
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "handDrawn"} }%%
stateDiagram-v2
state "This is a state description" as s3
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
state "This is a state description" as s3
</pre>
@@ -207,6 +223,14 @@ stateDiagram-v2
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "handDrawn"} }%%
stateDiagram-v2
s22 : This is a state description
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
s22 : This is a state description
@@ -267,10 +291,20 @@ stateDiagram-v2
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
s51 --> s52
</pre>
</td>
<td>
<pre id="diagram3" class="mermaid">
%%{init: {"handDrawn": false, "layout": "elk"} }%%
stateDiagram-v2
s51 --> s52
s61 --> s62
</pre>
@@ -279,7 +313,7 @@ stateDiagram-v2
<pre id="diagram4" class="mermaid">
%%{init: {"look": "handDrawn", "layout": "elk"} }%%
stateDiagram-v2
s61 --> s62
s71 --> s72
</pre>
@@ -322,13 +356,23 @@ stateDiagram-v2
a3 --> a4: A transition
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
a5 --> a6: A transition
</pre>
</td>
<td>
<pre id="diagram3" class="mermaid">
%%{init: {"handDrawn": false, "layout": "elk"} }%%
stateDiagram-v2
a5 --> a6: A transition
a7 --> a8: A transition
</pre>
@@ -337,7 +381,7 @@ stateDiagram-v2
<pre id="diagram4" class="mermaid">
%%{init: {"look": "handDrawn", "layout": "elk"} }%%
stateDiagram-v2
a7 --> a8: A transition
a9 --> a10: A transition
</pre>
@@ -383,6 +427,17 @@ stateDiagram-v2
test --> [*]
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
[*] --> test
test --> [*]
</pre>
</td>
<td>
@@ -455,6 +510,20 @@ stateDiagram-v2
}
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
[*] --> First
state First {
[*] --> second
second --> [*]
}
</pre>
</td>
<td>
@@ -568,6 +637,31 @@ stateDiagram-v2
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
[*] --> Level1
state Level1 {
[*] --> Level2
state Level2 {
[*] --> level2
level2 --> Level3
state Level3 {
[*] --> level3
level3 --> [*]
}
}
}
</pre>
</td>
<td>
@@ -698,6 +792,30 @@ stateDiagram-v2
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
[*] --> B1
B1 --> B2
B1 --> B3
state B1 {
[*] --> B11
B11 --> [*]
}
state B2 {
[*] --> B22
B22 --> [*]
}
state B3 {
[*] --> B33
B33 --> [*]
}
</pre>
</td>
<td>
<pre id="diagram3" class="mermaid">
%%{init: {"handDrawn": false, "layout": "elk"} }%%
stateDiagram-v2
@@ -794,7 +912,19 @@ stateDiagram-v2
if_state --> True : if n >= 0
</pre>
</td>
<td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
state if_state <<choice>>
[*] --> IsPositive
IsPositive --> if_state
if_state --> False: if n < 0
if_state --> True : if n >= 0
</pre>
</td>
<td>
<pre id="diagram3" class="mermaid">
%%{init: {"handDrawn": false, "layout": "elk"} }%%
stateDiagram-v2
@@ -866,6 +996,23 @@ stateDiagram-v2
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "handDrawn"} }%%
stateDiagram-v2
state fork_state <<fork>>
[*] --> fork_state
fork_state --> State2
fork_state --> State3
state join_state <<join>>
State2 --> join_state
State3 --> join_state
join_state --> State4
State4 --> [*]
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
state fork_state <<fork>>
[*] --> fork_state
@@ -956,6 +1103,19 @@ stateDiagram-v2
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "handDrawn"} }%%
stateDiagram-v2
TN3: The state with a note
note right of TN3
Important information! You can write
notes.
end note
TN3 --> TN4
note left of TN4 : This is the note to the left.
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
TN3: The state with a note
note right of TN3
@@ -1056,6 +1216,27 @@ state Active {
stateDiagram-v2
[*] --> Active
state Active {
[*] --> NumLockOff
NumLockOff --> NumLockOn : EvNumLockPressed
NumLockOn --> NumLockOff : EvNumLockPressed
--
[*] --> CapsLockOff
CapsLockOff --> CapsLockOn : EvCapsLockPressed
CapsLockOn --> CapsLockOff : EvCapsLockPressed
--
[*] --> ScrollLockOff
ScrollLockOff --> ScrollLockOn : EvScrollLockPressed
ScrollLockOn --> ScrollLockOff : EvScrollLockPressed
}
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
[*] --> Active
state Active {
[*] --> NumLockOff
NumLockOff --> NumLockOn : EvNumLockPressed
@@ -1161,6 +1342,21 @@ direction LR
<pre id="diagram2" class="mermaid">
%%{init: {"look": "handDrawn"} }%%
stateDiagram-v2
direction LR
[*] --> D1
D1 --> D2
D2 --> D3
state D3 {
direction TB
D11 --> D22
}
D2 --> D4
</pre>
</td>
<td>
<pre id="diagram2" class="mermaid">
%%{init: {"look": "neo"} }%%
stateDiagram-v2
direction LR
[*] --> D1
D1 --> D2

172
cypress/platform/steph.html Normal file
View File

@@ -0,0 +1,172 @@
<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>
<pre id="diagram" class="mermaid2">
%%{init: {"look": "neo", "theme": "neo","fontFamily": "Arial"} }%%
flowchart
A[A really really really super long node] --> B & C
subgraph apa
D --> E
end
</pre
>
<pre id="diagram" class="mermaid2">
%%{init: {"look": "neo", "theme": "forest","fontFamily": "Arial", "themeVariables": {
"useGradient": true,
"gradientStart": '#fff',
"gradientStop": '#ccc'
}} }%%
stateDiagram-v2
stateId
</pre
>
<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
</pre>
<!-- Flowchart with subgraph-->
<pre id="diagram3" class="mermaid">
flowchart TB
c1-->a2
subgraph one
a1-->a2
end
subgraph two
b1-->b2
end
subgraph three
c1-->c2
end
</pre>
<pre id="diagram4" class="mermaid">
stateDiagram-v2
[*] --> First
state First {
[*] --> second
second --> [*]
}
</pre>
<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);
};
window.callback = function () {
alert('A callback was triggered');
};
mermaid.initialize({
theme: 'neo',
// handdrawnSeed: 12,
look: 'neo',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',
fontFamily: 'arial',
sequence: {
actorFontFamily: 'courier',
noteFontFamily: 'courier',
messageFontFamily: 'courier',
},
fontSize: 12,
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>

View File

@@ -0,0 +1,285 @@
<!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;
background-color: #333;
}
body {
color: white;
background-color: #333;
}
</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.initialize({
theme: 'dark',
// handDrawnSeed: 12,
// look: 'handDrawn',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
//flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',
// fontFamily: 'arial',
// sequence: {
// actorFontFamily: 'courier',
// noteFontFamily: 'courier',
// messageFontFamily: 'courier',
// },
// fontSize: 12,
// logLevel: 3,
// securityLevel: 'loose',
});
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

@@ -0,0 +1,280 @@
<!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.initialize({
theme: 'mc',
// handDrawnSeed: 12,
// look: 'handDrawn',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
//flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',
// fontFamily: 'arial',
// sequence: {
// actorFontFamily: 'courier',
// noteFontFamily: 'courier',
// messageFontFamily: 'courier',
// },
// fontSize: 12,
// logLevel: 3,
// securityLevel: 'loose',
});
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

@@ -0,0 +1,284 @@
<!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;
}
body {
color: white;
background-color: #333;
}
</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.initialize({
theme: 'neo-dark',
// handDrawnSeed: 12,
// look: 'handDrawn',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
//flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',
// fontFamily: 'arial',
// sequence: {
// actorFontFamily: 'courier',
// noteFontFamily: 'courier',
// messageFontFamily: 'courier',
// },
// fontSize: 12,
// logLevel: 3,
// securityLevel: 'loose',
});
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>

280
demos/architecture-neo.html Normal file
View File

@@ -0,0 +1,280 @@
<!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.initialize({
theme: 'neo',
// handDrawnSeed: 12,
// look: 'handDrawn',
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
// layout: 'dagre',
// layout: 'elk',
// layout: 'fixed',
// htmlLabels: false,
//flowchart: { titleTopMargin: 10 },
// fontFamily: 'Caveat',
// fontFamily: 'Kalam',
// fontFamily: 'courier',
// fontFamily: 'arial',
// sequence: {
// actorFontFamily: 'courier',
// noteFontFamily: 'courier',
// messageFontFamily: 'courier',
// },
// fontSize: 12,
// logLevel: 3,
// securityLevel: 'loose',
});
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

@@ -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

@@ -91,6 +91,18 @@
<li>
<h2><a href="./architecture.html">Architecture</a></h2>
</li>
<li>
<h2><a href="./architecture-neo.html">Architecture-neo</a></h2>
</li>
<li>
<h2><a href="./architecture-neo-dark.html">Architecture-neo-dark</a></h2>
</li>
<li>
<h2><a href="./architecture-mermaid-chart.html">Architecture-mermaid-chart</a></h2>
</li>
<li>
<h2><a href="./architecture-dark.html">Architecture-dark</a></h2>
</li>
</ul>
</body>
</html>

View File

@@ -6,12 +6,12 @@
# Frequently Asked Questions
1. [How to add title to flowchart?](https://github.com/knsv/mermaid/issues/556#issuecomment-363182217)
1. [How to add title to flowchart?](https://github.com/mermaid-js/mermaid/issues/556#issuecomment-363182217)
2. [How to specify custom CSS file?](https://github.com/mermaidjs/mermaid.cli/pull/24#issuecomment-373402785)
3. [How to fix tooltip misplacement issue?](https://github.com/knsv/mermaid/issues/542#issuecomment-3343564621)
4. [How to specify gantt diagram xAxis format?](https://github.com/knsv/mermaid/issues/269#issuecomment-373229136)
5. [How to bind an event?](https://github.com/knsv/mermaid/issues/372)
6. [How to add newline in the text?](https://github.com/knsv/mermaid/issues/384#issuecomment-281339381)
7. [How to have special characters in link text?](https://github.com/knsv/mermaid/issues/407#issuecomment-329944735)
8. [How to change Flowchart curve style?](https://github.com/knsv/mermaid/issues/580#issuecomment-373929046)
3. [How to fix tooltip misplacement issue?](https://github.com/mermaid-js/mermaid/issues/542#issuecomment-3343564621)
4. [How to specify gantt diagram xAxis format?](https://github.com/mermaid-js/mermaid/issues/269#issuecomment-373229136)
5. [How to bind an event?](https://github.com/mermaid-js/mermaid/issues/372)
6. [How to add newline in the text?](https://github.com/mermaid-js/mermaid/issues/384#issuecomment-281339381)
7. [How to have special characters in link text?](https://github.com/mermaid-js/mermaid/issues/407#issuecomment-329944735)
8. [How to change Flowchart curve style?](https://github.com/mermaid-js/mermaid/issues/580#issuecomment-373929046)
9. [How to create a Flowchart end-Node that says "End"](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897)

View File

@@ -4,7 +4,7 @@
>
> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/README.md](../../../packages/mermaid/src/docs/config/setup/README.md).
# mermaid
# @mermaid-chart/mermaid
## Modules

View File

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

View File

@@ -20,7 +20,7 @@
#### Defined in
[packages/mermaid/src/rendering-util/types.ts:144](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L144)
[packages/mermaid/src/rendering-util/types.ts:149](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L149)
---
@@ -30,7 +30,7 @@
#### Defined in
[packages/mermaid/src/rendering-util/types.ts:143](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L143)
[packages/mermaid/src/rendering-util/types.ts:148](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L148)
---
@@ -40,4 +40,4 @@
#### Defined in
[packages/mermaid/src/rendering-util/types.ts:142](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L142)
[packages/mermaid/src/rendering-util/types.ts:147](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L147)

View File

@@ -16,7 +16,7 @@
#### Defined in
[packages/mermaid/src/rendering-util/render.ts:24](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/render.ts#L24)
[packages/mermaid/src/rendering-util/render.ts:25](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/render.ts#L25)
---
@@ -26,7 +26,7 @@
#### Defined in
[packages/mermaid/src/rendering-util/render.ts:23](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/render.ts#L23)
[packages/mermaid/src/rendering-util/render.ts:24](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/render.ts#L24)
---
@@ -36,4 +36,4 @@
#### Defined in
[packages/mermaid/src/rendering-util/render.ts:22](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/render.ts#L22)
[packages/mermaid/src/rendering-util/render.ts:23](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/render.ts#L23)

View File

@@ -122,7 +122,7 @@ This function should be called before the run function.
### mermaidAPI
**mermaidAPI**: `Readonly`<{ `defaultConfig`: [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.defaultConfig; `getConfig`: () => [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.getConfig; `getDiagramFromText`: (`text`: `string`, `metadata`: `Pick`<`DiagramMetadata`, `"title"`>) => `Promise`<`Diagram`> ; `getSiteConfig`: () => [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.getSiteConfig; `globalReset`: () => `void` ; `initialize`: (`userOptions`: [`MermaidConfig`](mermaid.MermaidConfig.md)) => `void` ; `parse`: (`text`: `string`, `parseOptions`: [`ParseOptions`](mermaid.ParseOptions.md) & { `suppressErrors`: `true` }) => `Promise`<[`ParseResult`](mermaid.ParseResult.md) | `false`>(`text`: `string`, `parseOptions?`: [`ParseOptions`](mermaid.ParseOptions.md)) => `Promise`<[`ParseResult`](mermaid.ParseResult.md)> ; `render`: (`id`: `string`, `text`: `string`, `svgContainingElement?`: `Element`) => `Promise`<[`RenderResult`](mermaid.RenderResult.md)> ; `reset`: () => `void` ; `setConfig`: (`conf`: [`MermaidConfig`](mermaid.MermaidConfig.md)) => [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.setConfig; `updateSiteConfig`: (`conf`: [`MermaidConfig`](mermaid.MermaidConfig.md)) => [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.updateSiteConfig }>
**mermaidAPI**: `Readonly`<{ `defaultConfig`: [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.defaultConfig; `getConfig`: () => [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.getConfig; `getDiagramFromText`: (`text`: `string`, `metadata`: `Pick`<`DiagramMetadata`, `"title"`>) => `Promise`<`Diagram`> ; `getSiteConfig`: () => [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.getSiteConfig; `globalReset`: () => `void` ; `initialize`: (`userOptions`: [`MermaidConfig`](mermaid.MermaidConfig.md)) => `void` ; `parse`: (`text`: `string`, `parseOptions`: [`ParseOptions`](mermaid.ParseOptions.md) & { `suppressErrors`: `true` }) => `Promise`<[`ParseResult`](mermaid.ParseResult.md) & { `error?`: `unknown` }>(`text`: `string`, `parseOptions?`: [`ParseOptions`](mermaid.ParseOptions.md)) => `Promise`<[`ParseResult`](mermaid.ParseResult.md)> ; `render`: (`id`: `string`, `text`: `string`, `svgContainingElement?`: `Element`, `positions?`: `Positions`) => `Promise`<[`RenderResult`](mermaid.RenderResult.md)> ; `reset`: () => `void` ; `setConfig`: (`conf`: [`MermaidConfig`](mermaid.MermaidConfig.md)) => [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.setConfig; `updateSiteConfig`: (`conf`: [`MermaidConfig`](mermaid.MermaidConfig.md)) => [`MermaidConfig`](mermaid.MermaidConfig.md) = configApi.updateSiteConfig }>
**`Deprecated`**
@@ -136,11 +136,11 @@ Use [parse](mermaid.Mermaid.md#parse) and [render](mermaid.Mermaid.md#render) in
### parse
**parse**: (`text`: `string`, `parseOptions`: [`ParseOptions`](mermaid.ParseOptions.md) & { `suppressErrors`: `true` }) => `Promise`<[`ParseResult`](mermaid.ParseResult.md) | `false`>(`text`: `string`, `parseOptions?`: [`ParseOptions`](mermaid.ParseOptions.md)) => `Promise`<[`ParseResult`](mermaid.ParseResult.md)>
**parse**: (`text`: `string`, `parseOptions`: [`ParseOptions`](mermaid.ParseOptions.md) & { `suppressErrors`: `true` }) => `Promise`<[`ParseResult`](mermaid.ParseResult.md) & { `error?`: `unknown` }>(`text`: `string`, `parseOptions?`: [`ParseOptions`](mermaid.ParseOptions.md)) => `Promise`<[`ParseResult`](mermaid.ParseResult.md)>
#### Type declaration
▸ (`text`, `parseOptions`): `Promise`<[`ParseResult`](mermaid.ParseResult.md) | `false`>
▸ (`text`, `parseOptions`): `Promise`<[`ParseResult`](mermaid.ParseResult.md) & { `error?`: `unknown` }>
Parse the text and validate the syntax.
@@ -153,7 +153,7 @@ Parse the text and validate the syntax.
##### Returns
`Promise`<[`ParseResult`](mermaid.ParseResult.md) | `false`>
`Promise`<[`ParseResult`](mermaid.ParseResult.md) & { `error?`: `unknown` }>
An object with the `diagramType` set to type of the diagram if valid. Otherwise `false` if parseOptions.suppressErrors is `true`.
@@ -272,19 +272,20 @@ Used to register external diagram types.
### render
**render**: (`id`: `string`, `text`: `string`, `svgContainingElement?`: `Element`) => `Promise`<[`RenderResult`](mermaid.RenderResult.md)>
**render**: (`id`: `string`, `text`: `string`, `svgContainingElement?`: `Element`, `positions?`: `Positions`) => `Promise`<[`RenderResult`](mermaid.RenderResult.md)>
#### Type declaration
▸ (`id`, `text`, `svgContainingElement?`): `Promise`<[`RenderResult`](mermaid.RenderResult.md)>
▸ (`id`, `text`, `svgContainingElement?`, `positions?`): `Promise`<[`RenderResult`](mermaid.RenderResult.md)>
##### Parameters
| Name | Type |
| :---------------------- | :-------- |
| `id` | `string` |
| `text` | `string` |
| `svgContainingElement?` | `Element` |
| Name | Type |
| :---------------------- | :---------- |
| `id` | `string` |
| `text` | `string` |
| `svgContainingElement?` | `Element` |
| `positions?` | `Positions` |
##### Returns

View File

@@ -16,7 +16,7 @@
#### Defined in
[packages/mermaid/src/config.type.ts:122](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L122)
[packages/mermaid/src/config.type.ts:133](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L133)
---
@@ -26,7 +26,7 @@
#### Defined in
[packages/mermaid/src/config.type.ts:194](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L194)
[packages/mermaid/src/config.type.ts:205](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L205)
---
@@ -39,7 +39,7 @@ This matters if you are using base tag settings.
#### Defined in
[packages/mermaid/src/config.type.ts:141](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L141)
[packages/mermaid/src/config.type.ts:152](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L152)
---
@@ -49,7 +49,7 @@ This matters if you are using base tag settings.
#### Defined in
[packages/mermaid/src/config.type.ts:201](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L201)
[packages/mermaid/src/config.type.ts:212](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L212)
---
@@ -59,7 +59,7 @@ This matters if you are using base tag settings.
#### Defined in
[packages/mermaid/src/config.type.ts:198](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L198)
[packages/mermaid/src/config.type.ts:209](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L209)
---
@@ -69,7 +69,7 @@ This matters if you are using base tag settings.
#### 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:198](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L198)
---
@@ -79,7 +79,7 @@ This matters if you are using base tag settings.
#### Defined in
[packages/mermaid/src/config.type.ts:113](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L113)
[packages/mermaid/src/config.type.ts:124](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L124)
---
@@ -93,7 +93,7 @@ You can set this attribute to base the seed on a static string.
#### 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:192](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L192)
---
@@ -111,7 +111,7 @@ should not change unless content is changed.
#### 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:185](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L185)
---
@@ -121,7 +121,7 @@ should not change unless content is changed.
#### Defined in
[packages/mermaid/src/config.type.ts:202](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L202)
[packages/mermaid/src/config.type.ts:213](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L213)
---
@@ -139,7 +139,7 @@ should not change unless content is changed.
#### Defined in
[packages/mermaid/src/config.type.ts:91](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L91)
[packages/mermaid/src/config.type.ts:102](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L102)
---
@@ -149,7 +149,7 @@ should not change unless content is changed.
#### 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:200](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L200)
---
@@ -159,7 +159,7 @@ should not change unless content is changed.
#### 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:193](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L193)
---
@@ -173,7 +173,7 @@ See <https://developer.mozilla.org/en-US/docs/Web/CSS/font-family>
#### 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:132](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L132)
---
@@ -183,7 +183,7 @@ See <https://developer.mozilla.org/en-US/docs/Web/CSS/font-family>
#### Defined in
[packages/mermaid/src/config.type.ts:204](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L204)
[packages/mermaid/src/config.type.ts:215](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L215)
---
@@ -197,7 +197,7 @@ If set to true, ignores legacyMathML.
#### Defined in
[packages/mermaid/src/config.type.ts:163](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L163)
[packages/mermaid/src/config.type.ts:174](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L174)
---
@@ -207,7 +207,7 @@ If set to true, ignores legacyMathML.
#### 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)
---
@@ -217,7 +217,7 @@ If set to true, ignores legacyMathML.
#### Defined in
[packages/mermaid/src/config.type.ts:197](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L197)
[packages/mermaid/src/config.type.ts:208](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L208)
---
@@ -229,7 +229,7 @@ Defines the seed to be used when using handDrawn look. This is important for the
#### Defined in
[packages/mermaid/src/config.type.ts:76](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L76)
[packages/mermaid/src/config.type.ts:87](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L87)
---
@@ -239,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:114](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L114)
[packages/mermaid/src/config.type.ts:125](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L125)
---
@@ -249,7 +249,7 @@ Defines the seed to be used when using handDrawn look. This is important for the
#### 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:196](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L196)
---
@@ -259,7 +259,7 @@ Defines the seed to be used when using handDrawn look. This is important for the
#### Defined in
[packages/mermaid/src/config.type.ts:196](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L196)
[packages/mermaid/src/config.type.ts:207](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L207)
---
@@ -271,7 +271,7 @@ Defines which layout algorithm to use for rendering the diagram.
#### Defined in
[packages/mermaid/src/config.type.ts:81](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L81)
[packages/mermaid/src/config.type.ts:92](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L92)
---
@@ -286,7 +286,7 @@ fall back to legacy rendering for KaTeX.
#### Defined in
[packages/mermaid/src/config.type.ts:156](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L156)
[packages/mermaid/src/config.type.ts:167](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L167)
---
@@ -298,19 +298,19 @@ This option decides the amount of logging to be used by mermaid.
#### Defined in
[packages/mermaid/src/config.type.ts:127](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L127)
[packages/mermaid/src/config.type.ts:138](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L138)
---
### look
`Optional` **look**: `"classic"` | `"handDrawn"`
`Optional` **look**: `"neo"` | `"classic"` | `"handDrawn"`
Defines which main look to use for the diagram.
#### Defined in
[packages/mermaid/src/config.type.ts:71](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L71)
[packages/mermaid/src/config.type.ts:82](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L82)
---
@@ -320,7 +320,7 @@ Defines which main look to use for the diagram.
#### Defined in
[packages/mermaid/src/config.type.ts:205](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L205)
[packages/mermaid/src/config.type.ts:216](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L216)
---
@@ -332,7 +332,7 @@ Defines the maximum number of edges that can be drawn in a graph.
#### Defined in
[packages/mermaid/src/config.type.ts:90](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L90)
[packages/mermaid/src/config.type.ts:101](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L101)
---
@@ -344,7 +344,7 @@ The maximum allowed size of the users text diagram
#### Defined in
[packages/mermaid/src/config.type.ts:85](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L85)
[packages/mermaid/src/config.type.ts:96](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L96)
---
@@ -354,7 +354,7 @@ The maximum allowed size of the users text diagram
#### Defined in
[packages/mermaid/src/config.type.ts:195](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L195)
[packages/mermaid/src/config.type.ts:206](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L206)
---
@@ -364,7 +364,7 @@ The maximum allowed size of the users text diagram
#### Defined in
[packages/mermaid/src/config.type.ts:200](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L200)
[packages/mermaid/src/config.type.ts:211](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L211)
---
@@ -374,7 +374,7 @@ The maximum allowed size of the users text diagram
#### 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:201](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L201)
---
@@ -384,7 +384,7 @@ The maximum allowed size of the users text diagram
#### 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:202](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L202)
---
@@ -394,7 +394,7 @@ The maximum allowed size of the users text 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:204](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L204)
---
@@ -404,7 +404,7 @@ The maximum allowed size of the users text diagram
#### 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:210](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L210)
---
@@ -418,7 +418,7 @@ This prevents malicious graph directives from overriding a site's default securi
#### Defined in
[packages/mermaid/src/config.type.ts:148](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L148)
[packages/mermaid/src/config.type.ts:159](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L159)
---
@@ -430,7 +430,7 @@ Level of trust for parsed diagram
#### 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:142](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L142)
---
@@ -440,7 +440,7 @@ Level of trust for parsed 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:194](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L194)
---
@@ -452,7 +452,7 @@ Dictates whether mermaid starts on Page load
#### Defined in
[packages/mermaid/src/config.type.ts:135](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L135)
[packages/mermaid/src/config.type.ts:146](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L146)
---
@@ -462,7 +462,7 @@ Dictates whether mermaid starts on Page load
#### 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:199](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L199)
---
@@ -475,13 +475,13 @@ This is useful when you want to control how to handle syntax errors in your appl
#### Defined in
[packages/mermaid/src/config.type.ts:211](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L211)
[packages/mermaid/src/config.type.ts:222](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L222)
---
### theme
`Optional` **theme**: `"default"` | `"base"` | `"dark"` | `"forest"` | `"neutral"` | `"null"`
`Optional` **theme**: `"default"` | `"base"` | `"dark"` | `"forest"` | `"neutral"` | `"neo"` | `"neo-dark"` | `"redux"` | `"redux-dark"` | `"mc"` | `"null"`
Theme, the CSS style sheet.
You may also use `themeCSS` to override this value.
@@ -498,7 +498,7 @@ You may also use `themeCSS` to override this value.
#### Defined in
[packages/mermaid/src/config.type.ts:66](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L66)
[packages/mermaid/src/config.type.ts:77](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L77)
---
@@ -508,7 +508,7 @@ You may also use `themeCSS` to override this value.
#### Defined in
[packages/mermaid/src/config.type.ts:65](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L65)
[packages/mermaid/src/config.type.ts:76](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L76)
---
@@ -518,7 +518,7 @@ You may also use `themeCSS` to override this value.
#### 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:197](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L197)
---
@@ -528,7 +528,7 @@ You may also use `themeCSS` to override this value.
#### Defined in
[packages/mermaid/src/config.type.ts:203](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L203)
[packages/mermaid/src/config.type.ts:214](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L214)
---
@@ -538,4 +538,4 @@ You may also use `themeCSS` to override this value.
#### 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:203](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L203)

View File

@@ -19,4 +19,4 @@ The `parseError` function will not be called.
#### 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:66](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L66)

View File

@@ -10,6 +10,18 @@
## Properties
### code
**code**: `string`
The mermaid code after extracting the config.
#### Defined in
[packages/mermaid/src/types.ts:74](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L74)
---
### config
**config**: [`MermaidConfig`](mermaid.MermaidConfig.md)
@@ -18,16 +30,46 @@ The config passed as YAML frontmatter or directives
#### Defined in
[packages/mermaid/src/types.ts:78](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L78)
---
### diagram
`Optional` **diagram**: `Diagram`
#### Defined in
[packages/mermaid/src/types.ts:80](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L80)
---
### error
`Optional` **error**: `unknown`
The error that occurred during parsing, if any.
#### Defined in
[packages/mermaid/src/types.ts:84](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L84)
---
### success
**success**: `boolean`
#### Defined in
[packages/mermaid/src/types.ts:70](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L70)
---
### diagramType
### title
**diagramType**: `string`
The diagram type, e.g. 'flowchart', 'sequence', etc.
`Optional` **title**: `string`
#### Defined in
[packages/mermaid/src/types.ts:66](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L66)
[packages/mermaid/src/types.ts:79](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L79)

View File

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

View File

@@ -67,7 +67,7 @@
#### Defined in
[packages/mermaid/src/diagram-api/types.ts:130](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagram-api/types.ts#L130)
[packages/mermaid/src/diagram-api/types.ts:157](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagram-api/types.ts#L157)
---
@@ -77,7 +77,7 @@
#### Defined in
[packages/mermaid/src/diagram-api/types.ts:132](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagram-api/types.ts#L132)
[packages/mermaid/src/diagram-api/types.ts:159](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagram-api/types.ts#L159)
## Variables
@@ -88,3 +88,77 @@
#### Defined in
[packages/mermaid/src/mermaid.ts:442](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L442)
## Functions
### calcIntersect
**calcIntersect**(`nodeId`, `point`): `Point` | `Promise`<`Point`>
#### Parameters
| Name | Type |
| :------- | :------- |
| `nodeId` | `string` |
| `point` | `Point` |
#### Returns
`Point` | `Promise`<`Point`>
#### Defined in
[packages/mermaid/src/rendering-util/layout-algorithms/fixed/index.js:172](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/layout-algorithms/fixed/index.js#L172)
---
### calcIntersections
**calcIntersections**(`startNodeId`, `endNodeId`, `startNodeSize`, `endNodeSize`): `IntersectionPoint`\[]
#### Parameters
| Name | Type |
| :-------------------- | :---------------------- |
| `startNodeId` | `string` |
| `endNodeId` | `undefined` \| `string` |
| `startNodeSize` | `NodePosition` |
| `endNodeSize` | `Object` |
| `endNodeSize.height?` | `number` |
| `endNodeSize.width?` | `number` |
| `endNodeSize.x` | `number` |
| `endNodeSize.y` | `number` |
#### Returns
`IntersectionPoint`\[]
**`Throws`**
If the start node doesn't exist in the nodeDB (e.g. `render` hasn't been called yet)
#### Defined in
[packages/mermaid/src/rendering-util/layout-algorithms/fixed/index.js:115](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/layout-algorithms/fixed/index.js#L115)
---
### calcNodeIntersections
**calcNodeIntersections**(`targetNodeId`, `_node1`, `_node2`): `IntersectionPoint`\[] | `Promise`<`IntersectionPoint`\[]>
#### Parameters
| Name | Type |
| :------------- | :------------------------------------------------------------------------------------------------ |
| `targetNodeId` | `any` |
| `_node1` | `Pick`<`Node`, `"width"` \| `"height"` \| `"x"` \| `"y"` \| `"id"` \| `"shape"` \| `"intersect"`> |
| `_node2` | `Pick`<`Node`, `"width"` \| `"height"` \| `"x"` \| `"y"` \| `"id"` \| `"shape"` \| `"intersect"`> |
#### Returns
`IntersectionPoint`\[] | `Promise`<`IntersectionPoint`\[]>
#### Defined in
[packages/mermaid/src/rendering-util/layout-algorithms/fixed/index.js:78](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/layout-algorithms/fixed/index.js#L78)

View File

@@ -44,6 +44,7 @@ To add an integration to this list, see the [Integrations - create page](./integ
- [Deepdwn](https://billiam.itch.io/deepdwn) ✅
- [Doctave](https://www.doctave.com/) ✅
- [Mermaid in Markdown code blocks](https://docs.doctave.com/components/mermaid) ✅
- [Forgejo](https://forgejo.org/) ✅
- [GitBook](https://gitbook.com)
- [Mermaid Plugin](https://github.com/JozoVilcek/gitbook-plugin-mermaid)
- [Mermaid plugin for GitBook](https://github.com/wwformat/gitbook-plugin-mermaid-pdf)
@@ -99,8 +100,7 @@ Blogging frameworks and platforms
- [Nextra](https://nextra.site/)
- [Mermaid](https://nextra.site/docs/guide/mermaid)
- [WordPress](https://wordpress.org)
- [WordPress Markdown Editor](https://wordpress.org/plugins/wp-githuber-md)
- [WP-ReliableMD](https://wordpress.org/plugins/wp-reliablemd/)
- [MerPRess](https://wordpress.org/plugins/merpress/)
### CMS/ECM

View File

@@ -49,7 +49,7 @@ For a more detailed introduction to Mermaid and some of its more basic uses, loo
🌐 [CDN](https://www.jsdelivr.com/package/npm/mermaid) | 📖 [Documentation](https://mermaidjs.github.io) | 🙌 [Contribution](../community/contributing.md) | 🔌 [Plug-Ins](../ecosystem/integrations-community.md)
> 🖖 Keep a steady pulse: mermaid needs more Collaborators, [Read More](https://github.com/knsv/mermaid/issues/866).
> 🖖 Keep a steady pulse: mermaid needs more Collaborators, [Read More](https://github.com/mermaid-js/mermaid/issues/866).
:trophy: **Mermaid was nominated and won the [JS Open Source Awards (2019)](https://osawards.com/javascript/#nominees) in the category "The most exciting use of technology"!!!**
@@ -453,7 +453,7 @@ A quick note from Knut Sveidqvist:
>
> _Thank you to [Tyler Long](https://github.com/tylerlong) who has been a collaborator since April 2017._
>
> _Thank you to the ever-growing list of [contributors](https://github.com/knsv/mermaid/graphs/contributors) that brought the project this far!_
> _Thank you to the ever-growing list of [contributors](https://github.com/mermaid-js/mermaid/graphs/contributors) that brought the project this far!_
---

View File

@@ -1183,6 +1183,91 @@ flowchart TB
B --> D
```
### Attaching an ID to Edges
Mermaid now supports assigning IDs to edges, similar to how IDs and metadata can be attached to nodes. This feature lays the groundwork for more advanced styling, classes, and animation capabilities on edges.
**Syntax:**
To give an edge an ID, prepend the edge syntax with the ID followed by an `@` character. For example:
```mermaid-example
flowchart LR
A e1@> B
```
```mermaid
flowchart LR
A e1@> B
```
In this example, `e1` is the ID of the edge connecting `A` to `B`. You can then use this ID in later definitions or style statements, just like with nodes.
### Turning an Animation On
Once you have assigned an ID to an edge, you can turn on animations for that edge by defining the edges properties:
```mermaid-example
flowchart LR
A e1@==> B
e1@{ animate: true }
```
```mermaid
flowchart LR
A e1@==> B
e1@{ animate: true }
```
This tells Mermaid that the edge `e1` should be animated.
### Selecting Type of Animation
In the initial version, two animation speeds are supported: `fast` and `slow`. Selecting a specific animation type is a shorthand for enabling animation and setting the animation speed in one go.
**Examples:**
```mermaid-example
flowchart LR
A e1@> B
e1@{ animation: fast }
```
```mermaid
flowchart LR
A e1@> B
e1@{ animation: fast }
```
This is equivalent to `{ animate: true, animation: fast }`.
### Using classDef Statements for Animations
You can also animate edges by assigning a class to them and then defining animation properties in a `classDef` statement. For example:
```mermaid-example
flowchart LR
A e1@> B
classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite;
class e1 animate
```
```mermaid
flowchart LR
A e1@> B
classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite;
class e1 animate
```
In this snippet:
- `e1@-->` creates an edge with ID `e1`.
- `classDef animate` defines a class named `animate` with styling and animation properties.
- `class e1 animate` applies the `animate` class to the edge `e1`.
**Note on Escaping Commas:**
When setting the `stroke-dasharray` property, remember to escape commas as `\,` since commas are used as delimiters in Mermaids style definitions.
## New arrow types
There are new types of arrows supported:
@@ -1707,8 +1792,7 @@ graph LR
```
For a full list of available curves, including an explanation of custom curves, refer to
the [Shapes](https://github.com/d3/d3-shape/blob/main/README.md#curves) documentation in the
[d3-shape](https://github.com/d3/d3-shape/) project.
the [Shapes](https://d3js.org/d3-shape/curve) documentation in the [d3-shape](https://github.com/d3/d3-shape/) project.
### Styling a node

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

View File

@@ -86,7 +86,7 @@ todo[Todo]
## 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 tacketBaseUrl. This can be set as in the the following example:
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
---

View File

@@ -18,7 +18,7 @@ timeline
2002 : LinkedIn
2004 : Facebook
: Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
```
@@ -28,7 +28,7 @@ timeline
2002 : LinkedIn
2004 : Facebook
: Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
```
@@ -67,7 +67,7 @@ timeline
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
```
@@ -76,7 +76,7 @@ timeline
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
```
@@ -198,7 +198,7 @@ However, if there is no section defined, then we have two possibilities:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
```
@@ -208,7 +208,7 @@ However, if there is no section defined, then we have two possibilities:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
```
@@ -239,7 +239,7 @@ let us look at same example, where we have disabled the multiColor option.
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
```
@@ -250,7 +250,7 @@ let us look at same example, where we have disabled the multiColor option.
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
```
@@ -278,7 +278,7 @@ Now let's override the default values for the `cScale0` to `cScale2` variables:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -296,7 +296,7 @@ Now let's override the default values for the `cScale0` to `cScale2` variables:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -329,7 +329,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -342,7 +342,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -357,7 +357,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -370,7 +370,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -385,7 +385,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -398,7 +398,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -413,7 +413,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -426,7 +426,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -441,7 +441,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram
@@ -454,7 +454,7 @@ Let's put them to use, and see how our sample diagram looks in different themes:
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook : Google
2005 : Youtube
2005 : YouTube
2006 : Twitter
2007 : Tumblr
2008 : Instagram

View File

@@ -43,7 +43,7 @@
},
"devDependencies": {
"concurrently": "^8.2.2",
"mermaid": "workspace:*",
"@mermaid-chart/mermaid": "workspace:*",
"rimraf": "^5.0.5"
},
"files": [

View File

@@ -1,4 +1,4 @@
import type { ExternalDiagramDefinition } from 'mermaid';
import type { ExternalDiagramDefinition } from '@mermaid-chart/mermaid';
const id = 'example-diagram';

View File

@@ -1,6 +1,6 @@
{
"name": "@mermaid-js/layout-elk",
"version": "0.1.7",
"name": "@mermaid-chart/layout-elk",
"version": "0.1.7-b.1",
"description": "ELK layout engine for mermaid",
"module": "dist/mermaid-layout-elk.core.mjs",
"types": "dist/layouts.d.ts",
@@ -34,10 +34,10 @@
},
"devDependencies": {
"@types/d3": "^7.4.3",
"mermaid": "workspace:^"
"@mermaid-chart/mermaid": "workspace:^"
},
"peerDependencies": {
"mermaid": "^11.0.0"
"@mermaid-chart/mermaid": "^11.0.0"
},
"files": [
"dist"

View File

@@ -1,4 +1,4 @@
import type { LayoutLoaderDefinition } from 'mermaid';
import type { LayoutLoaderDefinition } from '@mermaid-chart/mermaid';
const loader = async () => await import(`./render.js`);
const algos = ['elk.stress', 'elk.force', 'elk.mrtree', 'elk.sporeOverlap'];

View File

@@ -1,10 +1,18 @@
import type {
InternalHelpers,
LayoutData,
RenderOptions,
SVG,
SVGGroup,
} from '@mermaid-chart/mermaid';
// @ts-ignore TODO: Investigate D3 issue
import { curveLinear } from 'd3';
import ELK from 'elkjs/lib/elk.bundled.js';
import type { InternalHelpers, LayoutData, RenderOptions, SVG, SVGGroup } from 'mermaid';
import { type TreeData, findCommonAncestor } from './find-common-ancestor.js';
type Node = LayoutData['nodes'][number];
// Used to calculate distances in order to avoid floating number rounding issues when comparing floating numbers
const epsilon = 0.0001;
interface LabelData {
width: number;
height: number;
@@ -17,7 +25,16 @@ interface NodeWithVertex extends Omit<Node, 'domId'> {
labelData?: LabelData;
domId?: Node['domId'] | SVGGroup | d3.Selection<SVGAElement, unknown, Element | null, unknown>;
}
interface Point {
x: number;
y: number;
}
function distance(p1?: Point, p2?: Point): number {
if (!p1 || !p2) {
return 0;
}
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
}
export const render = async (
data4Layout: LayoutData,
svg: SVG,
@@ -51,17 +68,17 @@ export const render = async (
// Add the element to the DOM
if (!node.isGroup) {
const child: NodeWithVertex = {
...node,
};
graph.children.push(child);
nodeDb[node.id] = child;
// const child: NodeWithVertex = {
// ...node,
// };
graph.children.push(node);
nodeDb[node.id] = node;
const childNodeEl = await insertNode(nodeEl, node, { config, dir: node.dir });
const boundingBox = childNodeEl.node()!.getBBox();
child.domId = childNodeEl;
child.width = boundingBox.width;
child.height = boundingBox.height;
node.domId = childNodeEl;
node.width = boundingBox.width;
node.height = boundingBox.height;
} else {
// A subgraph
const child: NodeWithVertex & { children: NodeWithVertex[] } = {
@@ -289,7 +306,7 @@ export const render = async (
linkIdCnt[linkIdBase]++;
log.info('abc78 new entry', linkIdBase, linkIdCnt[linkIdBase]);
}
const linkId = linkIdBase + '_' + linkIdCnt[linkIdBase];
const linkId = linkIdBase; // + '_' + linkIdCnt[linkIdBase];
edge.id = linkId;
log.info('abc78 new link id to be used is', linkIdBase, linkId, linkIdCnt[linkIdBase]);
const linkNameStart = 'LS_' + edge.start;
@@ -459,302 +476,6 @@ export const render = async (
}
}
function intersectLine(
p1: { y: number; x: number },
p2: { y: number; x: number },
q1: { x: any; y: any },
q2: { x: any; y: any }
) {
log.debug('UIO intersectLine', p1, p2, q1, q2);
// Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,
// p7 and p473.
// let a1, a2, b1, b2, c1, c2;
// let r1, r2, r3, r4;
// let denom, offset, num;
// let x, y;
// Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +
// b1 y + c1 = 0.
const a1 = p2.y - p1.y;
const b1 = p1.x - p2.x;
const c1 = p2.x * p1.y - p1.x * p2.y;
// Compute r3 and r4.
const r3 = a1 * q1.x + b1 * q1.y + c1;
const r4 = a1 * q2.x + b1 * q2.y + c1;
const epsilon = 1e-6;
// Check signs of r3 and r4. If both point 3 and point 4 lie on
// same side of line 1, the line segments do not intersect.
if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {
return /*DON'T_INTERSECT*/;
}
// Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0
const a2 = q2.y - q1.y;
const b2 = q1.x - q2.x;
const c2 = q2.x * q1.y - q1.x * q2.y;
// Compute r1 and r2
const r1 = a2 * p1.x + b2 * p1.y + c2;
const r2 = a2 * p2.x + b2 * p2.y + c2;
// Check signs of r1 and r2. If both point 1 and point 2 lie
// on same side of second line segment, the line segments do
// not intersect.
if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {
return /*DON'T_INTERSECT*/;
}
// Line segments intersect: compute intersection point.
const denom = a1 * b2 - a2 * b1;
if (denom === 0) {
return /*COLLINEAR*/;
}
const offset = Math.abs(denom / 2);
// The denom/2 is to get rounding instead of truncating. It
// is added or subtracted to the numerator, depending upon the
// sign of the numerator.
let num = b1 * c2 - b2 * c1;
const x = num < 0 ? (num - offset) / denom : (num + offset) / denom;
num = a2 * c1 - a1 * c2;
const y = num < 0 ? (num - offset) / denom : (num + offset) / denom;
return { x: x, y: y };
}
function sameSign(r1: number, r2: number) {
return r1 * r2 > 0;
}
const diamondIntersection = (
bounds: { x: any; y: any; width: any; height: any },
outsidePoint: { x: number; y: number },
insidePoint: any
) => {
const x1 = bounds.x;
const y1 = bounds.y;
const w = bounds.width; //+ bounds.padding;
const h = bounds.height; // + bounds.padding;
const polyPoints = [
{ x: x1, y: y1 - h / 2 },
{ x: x1 + w / 2, y: y1 },
{ x: x1, y: y1 + h / 2 },
{ x: x1 - w / 2, y: y1 },
];
log.debug(
`APA16 diamondIntersection calc abc89:
outsidePoint: ${JSON.stringify(outsidePoint)}
insidePoint : ${JSON.stringify(insidePoint)}
node-bounds : x:${bounds.x} y:${bounds.y} w:${bounds.width} h:${bounds.height}`,
JSON.stringify(polyPoints)
);
const intersections = [];
let minX = Number.POSITIVE_INFINITY;
let minY = Number.POSITIVE_INFINITY;
polyPoints.forEach(function (entry) {
minX = Math.min(minX, entry.x);
minY = Math.min(minY, entry.y);
});
const left = x1 - w / 2 - minX;
const top = y1 - h / 2 - minY;
for (let i = 0; i < polyPoints.length; i++) {
const p1 = polyPoints[i];
const p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];
const intersect = intersectLine(
bounds,
outsidePoint,
{ x: left + p1.x, y: top + p1.y },
{ x: left + p2.x, y: top + p2.y }
);
if (intersect) {
intersections.push(intersect);
}
}
if (!intersections.length) {
return bounds;
}
log.debug('UIO intersections', intersections);
if (intersections.length > 1) {
// More intersections, find the one nearest to edge end point
intersections.sort(function (p, q) {
const pdx = p.x - outsidePoint.x;
const pdy = p.y - outsidePoint.y;
const distp = Math.sqrt(pdx * pdx + pdy * pdy);
const qdx = q.x - outsidePoint.x;
const qdy = q.y - outsidePoint.y;
const distq = Math.sqrt(qdx * qdx + qdy * qdy);
return distp < distq ? -1 : distp === distq ? 0 : 1;
});
}
return intersections[0];
};
const intersection = (
node: { x: any; y: any; width: number; height: number },
outsidePoint: { x: number; y: number },
insidePoint: { x: number; y: number }
) => {
log.debug(`intersection calc abc89:
outsidePoint: ${JSON.stringify(outsidePoint)}
insidePoint : ${JSON.stringify(insidePoint)}
node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);
const x = node.x;
const y = node.y;
const dx = Math.abs(x - insidePoint.x);
// const dy = Math.abs(y - insidePoint.y);
const w = node.width / 2;
let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;
const h = node.height / 2;
const Q = Math.abs(outsidePoint.y - insidePoint.y);
const R = Math.abs(outsidePoint.x - insidePoint.x);
if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {
// Intersection is top or bottom of rect.
const q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;
r = (R * q) / Q;
const res = {
x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,
y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,
};
if (r === 0) {
res.x = outsidePoint.x;
res.y = outsidePoint.y;
}
if (R === 0) {
res.x = outsidePoint.x;
}
if (Q === 0) {
res.y = outsidePoint.y;
}
log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res); // cspell: disable-line
return res;
} else {
// Intersection onn sides of rect
if (insidePoint.x < outsidePoint.x) {
r = outsidePoint.x - w - x;
} else {
// r = outsidePoint.x - w - x;
r = x - w - outsidePoint.x;
}
const q = (Q * r) / R;
// OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w;
// OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;
let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;
// let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;
let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;
log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });
if (r === 0) {
_x = outsidePoint.x;
_y = outsidePoint.y;
}
if (R === 0) {
_x = outsidePoint.x;
}
if (Q === 0) {
_y = outsidePoint.y;
}
return { x: _x, y: _y };
}
};
const outsideNode = (
node: { x: any; y: any; width: number; height: number },
point: { x: number; y: number }
) => {
const x = node.x;
const y = node.y;
const dx = Math.abs(point.x - x);
const dy = Math.abs(point.y - y);
const w = node.width / 2;
const h = node.height / 2;
if (dx >= w || dy >= h) {
return true;
}
return false;
};
/**
* This function will page a path and node where the last point(s) in the path is inside the node
* and return an update path ending by the border of the node.
*/
const cutPathAtIntersect = (
_points: any[],
bounds: { x: any; y: any; width: any; height: any; padding: any },
isDiamond: boolean
) => {
log.debug('APA18 cutPathAtIntersect Points:', _points, 'node:', bounds, 'isDiamond', isDiamond);
const points: any[] = [];
let lastPointOutside = _points[0];
let isInside = false;
_points.forEach((point: any) => {
// check if point is inside the boundary rect
if (!outsideNode(bounds, point) && !isInside) {
// First point inside the rect found
// Calc the intersection coord between the point anf the last point outside the rect
let inter;
if (isDiamond) {
const inter2 = diamondIntersection(bounds, lastPointOutside, point);
const distance = Math.sqrt(
(lastPointOutside.x - inter2.x) ** 2 + (lastPointOutside.y - inter2.y) ** 2
);
if (distance > 1) {
inter = inter2;
}
}
if (!inter) {
inter = intersection(bounds, lastPointOutside, point);
}
// Check case where the intersection is the same as the last point
let pointPresent = false;
points.forEach((p) => {
pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);
});
// if (!pointPresent) {
if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {
points.push(inter);
} else {
log.debug('abc88 no intersect', inter, points);
}
// points.push(inter);
isInside = true;
} else {
// Outside
log.debug('abc88 outside', point, lastPointOutside, points);
lastPointOutside = point;
// points.push(point);
if (!isInside) {
points.push(point);
}
}
});
return points;
};
// @ts-ignore - ELK is not typed
const elk = new ELK();
const element = svg.select('g');
@@ -766,20 +487,30 @@ export const render = async (
id: 'root',
layoutOptions: {
'elk.hierarchyHandling': 'INCLUDE_CHILDREN',
'elk.algorithm': algorithm,
'nodePlacement.strategy': data4Layout.config.elk?.nodePlacementStrategy,
'elk.layered.priority.direction': 10,
'elk.algorithm': 'elk.layered',
// 'elk.algorithm': 'elk.stress',
// 'partitioning.activate': true,
// 'nodePlacement.strategy': data4Layout.config.elk?.nodePlacementStrategy,
'elk.layered.nodePlacement.strategy': 'INTERACTIVE',
// 'nodePlacement.strategy': 'LINEAR_SEGMENTS',
'elk.layered.mergeEdges': data4Layout.config.elk?.mergeEdges,
'elk.direction': 'DOWN',
'spacing.baseValue': 35,
'elk.layered.unnecessaryBendpoints': true,
'elk.layered.cycleBreaking.strategy': data4Layout.config.elk?.cycleBreakingStrategy,
// 'spacing.nodeNode': 20,
// 'spacing.nodeNodeBetweenLayers': 25,
// 'spacing.edgeNode': 20,
// 'spacing.edgeNodeBetweenLayers': 10,
// 'spacing.edgeEdge': 10,
// 'spacing.edgeEdgeBetweenLayers': 20,
// 'spacing.nodeSelfLoop': 20,
// 'elk.layered.unnecessaryBendpoints': true,
// 'elk.layered.cycleBreaking.strategy': data4Layout.config.elk?.cycleBreakingStrategy,
// 'elk.layered.cycleBreaking.strategy': 'INTERACTIVE',
// 'elk.layered.layering.strategy': 'MIN_WIDTH',
// 'layering.strategy': 'SIMPLE',
// 'layering.nodePromotion.strategy': 'NODECOUNT_PERCENTAGE',
// 'elk.topdown.nodeType': 'PARALLEL_NODE',
'spacing.nodeNode': 20,
'spacing.nodeNodeBetweenLayers': 25,
'spacing.edgeNode': 20,
'spacing.edgeNodeBetweenLayers': 20,
'spacing.edgeEdge': 10,
'spacing.edgeEdgeBetweenLayers': 20,
'spacing.nodeSelfLoop': 20,
// Tweaking options
// 'elk.layered.nodePlacement.favorStraightEdges': true,
@@ -790,14 +521,21 @@ export const render = async (
// 'elk.layered.edgeRouting.selfLoopDistribution': 'EQUALLY',
// 'elk.layered.mergeHierarchyEdges': true,
// 'elk.layered.feedbackEdges': true,
// 'elk.layered.crossingMinimization.semiInteractive': true,
// 'elk.layered.crossingMinimization.semiInteractive': false,
// 'crossingMinimization.semiInteractive': false,
// 'elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor': 1,
// 'elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth': 4.0,
// 'elk.layered.wrapping.validify.strategy': 'LOOK_BACK',
// 'elk.insideSelfLoops.activate': true,
// 'elk.alg.layered.options.EdgeStraighteningStrategy': 'NONE',
// 'elk.layered.considerModelOrder.strategy': 'NODES_AND_EDGES', // NODES_AND_EDGES
// 'elk.layered.considerModelOrder.strategy': 'PREFER_NODES',
// 'elk.layered.wrapping.cutting.strategy': 'ARD', // NODES_AND_EDGES
// 'elk.layered.wrapping.cutting.strategy': 'NODES_AND_EDGES',
// 'elk.alignment': 'BOTTOM',
// 'elk.layered.nodePlacement.bk.fixedAlignment': 'RIGHTDOWN',
// 'elk.edgeRouting': 'UNDEFINED',
'elk.layered.crossingMinimization.forceNodeModelOrder': false,
},
children: [],
edges: [],
@@ -832,6 +570,7 @@ export const render = async (
// Iterate through all nodes and add the top level nodes to the graph
const nodes = data4Layout.nodes;
nodes.forEach((n: { id: string | number }) => {
const node = nodeDb[n.id];
@@ -850,6 +589,7 @@ export const render = async (
'spacing.baseValue': 30,
'nodeLabels.placement': '[H_CENTER V_TOP, INSIDE]',
};
if (node.dir) {
node.layoutOptions = {
...node.layoutOptions,
@@ -860,6 +600,7 @@ export const render = async (
'elk.hierarchyHandling': 'SEPARATE_CHILDREN',
};
}
delete node.x;
delete node.y;
delete node.width;
@@ -877,9 +618,7 @@ export const render = async (
setIncludeChildrenPolicy(target, ancestorId);
}
});
const g = await elk.layout(elkGraph);
// debugger;
await drawNodes(0, 0, g.children, svg, subGraphsEl, 0);
g.edges?.map(
@@ -966,42 +705,44 @@ export const render = async (
startNode.innerHTML
);
}
if (startNode.shape === 'diamond' || startNode.shape === 'diam') {
edge.points.unshift({
x: startNode.offset.posX + startNode.width / 2,
y: startNode.offset.posY + startNode.height / 2,
});
}
if (endNode.shape === 'diamond' || endNode.shape === 'diam') {
edge.points.push({
x: endNode.offset.posX + endNode.width / 2,
y: endNode.offset.posY + endNode.height / 2,
});
}
if (startNode.intersect) {
// Remove the first point of the edge points
// edge.points.shift();
const firstPoint = edge.points[0];
// Transpose points to adjust for elk standard
const adjustedFirstPoint = {
x: firstPoint.x - startNode.width / 2,
y: firstPoint.y - startNode.height / 2,
};
const intersectionRaw = startNode.intersect(adjustedFirstPoint);
const intersection = {
x: intersectionRaw.x + startNode.width / 2,
y: intersectionRaw.y + startNode.height / 2,
};
edge.points = cutPathAtIntersect(
edge.points.reverse(),
{
x: startNode.offset.posX + startNode.width / 2,
y: startNode.offset.posY + startNode.height / 2,
width: sw,
height: startNode.height,
padding: startNode.padding,
},
startNode.shape === 'diamond' || startNode.shape === 'diam'
).reverse();
if (distance(intersection, firstPoint) > epsilon) {
edge.points.unshift(intersection);
}
}
if (endNode.intersect) {
// Remove the last point of the edge points
// edge.points.pop();
edge.points = cutPathAtIntersect(
edge.points,
{
x: endNode.offset.posX + endNode.width / 2,
y: endNode.offset.posY + endNode.height / 2,
width: ew,
height: endNode.height,
padding: endNode.padding,
},
endNode.shape === 'diamond' || endNode.shape === 'diam'
);
const lastPoint = edge.points[edge.points.length - 1];
// Transpose points to adjust for elk standard
const adjustedLastPoint = {
x: lastPoint.x - endNode.width / 2,
y: lastPoint.y - endNode.height / 2,
};
const intersectionRaw = endNode.intersect(adjustedLastPoint);
const intersection = {
x: intersectionRaw.x + endNode.width / 2,
y: intersectionRaw.y + endNode.height / 2,
};
if (distance(intersection, lastPoint) > epsilon) {
edge.points.push(intersection);
}
}
const paths = insertEdge(
edgesEl,
@@ -1012,7 +753,6 @@ export const render = async (
endNode,
data4Layout.diagramId
);
log.info('APA12 edge points after insert', JSON.stringify(edge.points));
edge.x = edge.labels[0].x + offset.x + edge.labels[0].width / 2;
edge.y = edge.labels[0].y + offset.y + edge.labels[0].height / 2;

View File

@@ -36,7 +36,7 @@
"@zenuml/core": "^3.23.27"
},
"devDependencies": {
"mermaid": "workspace:^"
"@mermaid-chart/mermaid": "workspace:^"
},
"peerDependencies": {
"mermaid": "^10 || ^11"

View File

@@ -1,6 +1,6 @@
{
"name": "mermaid",
"version": "11.4.1",
"name": "@mermaid-chart/mermaid",
"version": "11.4.1-b.12",
"description": "Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",
"type": "module",
"module": "./dist/mermaid.core.mjs",
@@ -52,7 +52,7 @@
},
"repository": {
"type": "git",
"url": "https://github.com/mermaid-js/mermaid"
"url": "https://github.com/Mermaid-Chart/mermaid"
},
"author": "Knut Sveidqvist",
"license": "MIT",
@@ -69,7 +69,7 @@
"dependencies": {
"@braintree/sanitize-url": "^7.0.1",
"@iconify/utils": "^2.1.32",
"@mermaid-js/parser": "workspace:^",
"@mermaid-js/parser": "^0.3.1-rc.1",
"@types/d3": "^7.4.3",
"cytoscape": "^3.29.2",
"cytoscape-cose-bilkent": "^4.1.0",
@@ -105,6 +105,8 @@
"@types/prettier": "^3.0.0",
"@types/stylis": "^4.2.5",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^7.3.1",
"@typescript-eslint/parser": "^7.3.1",
"ajv": "^8.12.0",
"chokidar": "^3.6.0",
"concurrently": "^8.2.2",
@@ -134,8 +136,5 @@
"files": [
"dist/",
"README.md"
],
"publishConfig": {
"access": "public"
}
]
}

View File

@@ -53,12 +53,13 @@ import mm from 'micromatch';
// @ts-ignore No typescript declaration file
import flatmap from 'unist-util-flatmap';
import { visit } from 'unist-util-visit';
import { fileURLToPath } from 'url';
// short-circuit `.schema.yaml` imports, so that we can safely import `shapes.js`
register('./loadHook.mjs', import.meta.url);
const { shapesDefs } = await import('../src/rendering-util/rendering-elements/shapes.js');
export const MERMAID_RELEASE_VERSION = JSON.parse(readFileSync('../mermaid/package.json', 'utf8'))
const packageJsonPath = join(fileURLToPath(import.meta.url), '../../package.json');
export const MERMAID_RELEASE_VERSION = JSON.parse(readFileSync(packageJsonPath, 'utf8'))
.version as string;
const MERMAID_MAJOR_VERSION = MERMAID_RELEASE_VERSION.split('.')[0];
const CDN_URL = 'https://cdn.jsdelivr.net/npm'; // 'https://unpkg.com';

View File

@@ -53,8 +53,8 @@ export class Diagram {
public renderer: DiagramDefinition['renderer']
) {}
async render(id: string, version: string) {
await this.renderer.draw(this.text, id, version, this);
async render(id: string, version: string, positions?: any) {
await this.renderer.draw(this.text, id, version, this, positions);
}
getParser() {

View File

@@ -61,14 +61,25 @@ export interface MermaidConfig {
* You may also use `themeCSS` to override this value.
*
*/
theme?: 'default' | 'base' | 'dark' | 'forest' | 'neutral' | 'null';
theme?:
| 'default'
| 'base'
| 'dark'
| 'forest'
| 'neutral'
| 'neo'
| 'neo-dark'
| 'redux'
| 'redux-dark'
| 'mc'
| 'null';
themeVariables?: any;
themeCSS?: string;
/**
* Defines which main look to use for the diagram.
*
*/
look?: 'classic' | 'handDrawn';
look?: 'classic' | 'handDrawn' | 'neo';
/**
* Defines the seed to be used when using handDrawn look. This is important for the automated tests as they will always find differences without the seed. The default value is 0 which gives a random seed.
*
@@ -261,7 +272,12 @@ export interface FlowchartDiagramConfig extends BaseDiagramConfig {
* Defines how mermaid renders curves for flowcharts.
*
*/
curve?: 'basis' | 'linear' | 'cardinal';
curve?: 'basis' | 'linear' | 'cardinal' | 'rounded';
/**
* Highlights the points in an edge for debugging.
*
*/
edgeDebug?: boolean;
/**
* Represents the padding between the labels and the shape
*
@@ -754,6 +770,11 @@ export interface StateDiagramConfig extends BaseDiagramConfig {
edgeLengthFactor?: string;
compositTitleSize?: number;
radius?: number;
/**
* Defines how mermaid renders curves for flowcharts.
*
*/
curve?: 'basis' | 'linear' | 'cardinal' | 'rounded';
/**
* Decides which rendering engine that is to be used for the rendering.
*

View File

@@ -15,6 +15,8 @@ const rect = (parent, node) => {
const shapeSvg = parent
.insert('g')
.attr('class', 'cluster' + (node.class ? ' ' + node.class : ''))
.attr('data-et', 'cluster')
.attr('data-id', node.id)
.attr('id', node.id);
// add the rect

View File

@@ -29,6 +29,7 @@ const arrowTypesMap = {
arrow_cross: 'cross',
arrow_point: 'point',
arrow_barb: 'barb',
arrow_neo: 'barbNeo',
arrow_circle: 'circle',
aggregation: 'aggregation',
extension: 'extension',

View File

@@ -39,7 +39,7 @@ export const insertEdgeLabel = (elem, edge) => {
const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');
// Create inner g, label, this will be positioned now for centering the text
const label = edgeLabel.insert('g').attr('class', 'label');
const label = edgeLabel.insert('g').attr('class', 'label').attr('data-id', edge.id);
label.node().appendChild(labelElement);
// Center the label
@@ -423,6 +423,8 @@ export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph
.append('path')
.attr('d', lineFunction(lineData))
.attr('id', edge.id)
// MC
.attr('data-edge', 'true')
.attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))
.attr('style', edge.style);

View File

@@ -1156,6 +1156,10 @@ export const insertNode = async (elem, node, renderOptions) => {
el.attr('class', 'node default ' + node.class);
}
// MC Special
newEl.attr('data-node', 'true');
newEl.attr('data-id', node.id);
nodeElems[node.id] = newEl;
if (node.haveCallback) {

View File

@@ -39,6 +39,7 @@ export const detectType = function (text: string, config?: MermaidConfig): strin
.replace(directiveRegex, '')
.replace(anyCommentRegex, '\n');
for (const [key, { detector }] of Object.entries(detectors)) {
console.log('APA20', key);
const diagram = detector(text, config);
if (diagram) {
return key;

View File

@@ -18,6 +18,7 @@ import journey from '../diagrams/user-journey/journeyDetector.js';
import errorDiagram from '../diagrams/error/errorDiagram.js';
import flowchartElk from '../diagrams/flowchart/elk/detector.js';
import timeline from '../diagrams/timeline/detector.js';
import swimlane from '../diagrams/swimlane/detector.js';
import mindmap from '../diagrams/mindmap/detector.js';
import kanban from '../diagrams/kanban/detector.js';
import sankey from '../diagrams/sankey/sankeyDetector.js';
@@ -94,6 +95,7 @@ export const addDiagrams = () => {
packet,
xychart,
block,
architecture
architecture,
swimlane
);
};

View File

@@ -1,16 +1,16 @@
import { addDetector } from './detectType.js';
import { log as _log, setLogLevel as _setLogLevel } from '../logger.js';
import {
defaultConfig as _defaultConfig,
getConfig as _getConfig,
setConfig as _setConfig,
defaultConfig as _defaultConfig,
setSiteConfig as _setSiteConfig,
} from '../config.js';
import { sanitizeText as _sanitizeText } from '../diagrams/common/common.js';
import * as _commonDb from '../diagrams/common/commonDb.js';
import { log as _log, setLogLevel as _setLogLevel } from '../logger.js';
import { setupGraphViewbox as _setupGraphViewbox } from '../setupGraphViewbox.js';
import { addStylesForDiagram } from '../styles.js';
import { addDetector } from './detectType.js';
import type { DiagramDefinition, DiagramDetector } from './types.js';
import * as _commonDb from '../diagrams/common/commonDb.js';
/*
Packaging and exposing resources for external diagrams so that they can import

View File

@@ -105,6 +105,30 @@ export interface ExternalDiagramDefinition {
export type DiagramDetector = (text: string, config?: MermaidConfig) => boolean;
export type DiagramLoader = () => Promise<{ id: string; diagram: DiagramDefinition }>;
/* Types for the positions used in the free layout engine */
interface Point {
x: number;
y: number;
}
export interface IntersectionPoint extends Point {
pos: 't' | 'b' | 'l' | 'r';
}
export interface NodePosition extends Point {
width?: number;
height?: number;
}
export interface EdgePoints {
points: Point[];
}
export interface Positions {
nodes: Record<string, NodePosition>;
edges: Record<string, EdgePoints>;
}
/**
* Type for function draws diagram in the tag with id: id based on the graph definition in text.
*
@@ -117,7 +141,10 @@ export type DrawDefinition = (
text: string,
id: string,
version: string,
diagramObject: Diagram
diagramObject: Diagram,
// Todo: types from positions when logic is done
// MC Special
positions?: any
) => void | Promise<void>;
export interface ParserDefinition {

View File

@@ -13,6 +13,7 @@ import {
setDiagramTitle,
} from '../common/commonDb.js';
import type {
ArchitectureAlignment,
ArchitectureDB,
ArchitectureDirectionPair,
ArchitectureDirectionPairMap,
@@ -25,6 +26,7 @@ import type {
ArchitectureState,
} from './architectureTypes.js';
import {
getArchitectureDirectionAlignment,
getArchitectureDirectionPair,
isArchitectureDirection,
isArchitectureJunction,
@@ -211,12 +213,18 @@ const addEdge = function ({
const getEdges = (): ArchitectureEdge[] => state.records.edges;
/**
* Returns the current diagram's adjacency list & spatial map.
* Returns the current diagram's adjacency list, spatial map, & group alignments.
* If they have not been created, run the algorithms to generate them.
* @returns
*/
const getDataStructures = () => {
if (state.records.dataStructures === undefined) {
// Tracks how groups are aligned with one another. Generated while creating the adj list
const groupAlignments: Record<
string,
Record<string, Exclude<ArchitectureAlignment, 'bend'>>
> = {};
// Create an adjacency list of the diagram to perform BFS on
// Outer reduce applied on all services
// Inner reduce applied on the edges for a service
@@ -224,6 +232,19 @@ const getDataStructures = () => {
Record<string, ArchitectureDirectionPairMap>
>((prevOuter, [id, service]) => {
prevOuter[id] = service.edges.reduce<ArchitectureDirectionPairMap>((prevInner, edge) => {
// track the direction groups connect to one another
const lhsGroupId = getNode(edge.lhsId)?.in;
const rhsGroupId = getNode(edge.rhsId)?.in;
if (lhsGroupId && rhsGroupId && lhsGroupId !== rhsGroupId) {
const alignment = getArchitectureDirectionAlignment(edge.lhsDir, edge.rhsDir);
if (alignment !== 'bend') {
groupAlignments[lhsGroupId] ??= {};
groupAlignments[lhsGroupId][rhsGroupId] = alignment;
groupAlignments[rhsGroupId] ??= {};
groupAlignments[rhsGroupId][lhsGroupId] = alignment;
}
}
if (edge.lhsId === id) {
// source is LHS
const pair = getArchitectureDirectionPair(edge.lhsDir, edge.rhsDir);
@@ -245,6 +266,7 @@ const getDataStructures = () => {
// Configuration for the initial pass of BFS
const firstId = Object.keys(adjList)[0];
const visited = { [firstId]: 1 };
// If a key is present in this object, it has not been visited
const notVisited = Object.keys(adjList).reduce(
(prev, id) => (id === firstId ? prev : { ...prev, [id]: 1 }),
{} as Record<string, number>
@@ -283,6 +305,7 @@ const getDataStructures = () => {
state.records.dataStructures = {
adjList,
spatialMaps,
groupAlignments,
};
}
return state.records.dataStructures;

View File

@@ -12,7 +12,9 @@ import { setupGraphViewbox } from '../../setupGraphViewbox.js';
import { getConfigField } from './architectureDb.js';
import { architectureIcons } from './architectureIcons.js';
import type {
ArchitectureAlignment,
ArchitectureDataStructures,
ArchitectureGroupAlignments,
ArchitectureJunction,
ArchitectureSpatialMap,
EdgeSingular,
@@ -149,25 +151,91 @@ function addEdges(edges: ArchitectureEdge[], cy: cytoscape.Core) {
});
}
function getAlignments(spatialMaps: ArchitectureSpatialMap[]): fcose.FcoseAlignmentConstraint {
function getAlignments(
db: ArchitectureDB,
spatialMaps: ArchitectureSpatialMap[],
groupAlignments: ArchitectureGroupAlignments
): fcose.FcoseAlignmentConstraint {
/**
* Flattens the alignment object so nodes in different groups will be in the same alignment array IFF their groups don't connect in a conflicting alignment
*
* i.e., two groups which connect horizontally should not have nodes with vertical alignments to one another
*
* See: #5952
*
* @param alignmentObj - alignment object with the outer key being the row/col # and the inner key being the group name mapped to the nodes on that axis in the group
* @param alignmentDir - alignment direction
* @returns flattened alignment object with an arbitrary key mapping to nodes in the same row/col
*/
const flattenAlignments = (
alignmentObj: Record<number, Record<string, string[]>>,
alignmentDir: ArchitectureAlignment
): Record<string, string[]> => {
return Object.entries(alignmentObj).reduce(
(prev, [dir, alignments]) => {
// prev is the mapping of x/y coordinate to an array of the nodes in that row/column
let cnt = 0;
const arr = Object.entries(alignments); // [group name, array of nodes within the group on axis dir]
if (arr.length === 1) {
// If only one group exists in the row/column, we don't need to do anything else
prev[dir] = arr[0][1];
return prev;
}
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
const [aGroupId, aNodeIds] = arr[i];
const [bGroupId, bNodeIds] = arr[j];
const alignment = groupAlignments[aGroupId]?.[bGroupId]; // Get how the two groups are intended to align (undefined if they aren't)
if (alignment === alignmentDir) {
// If the intended alignment between the two groups is the same as the alignment we are parsing
prev[dir] ??= [];
prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds]; // add the node ids of both groups to the axis array in prev
} else if (aGroupId === 'default' || bGroupId === 'default') {
// If either of the groups are in the default space (not in a group), use the same behavior as above
prev[dir] ??= [];
prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds];
} else {
// Otherwise, the nodes in the two groups are not intended to align
const keyA = `${dir}-${cnt++}`;
prev[keyA] = aNodeIds;
const keyB = `${dir}-${cnt++}`;
prev[keyB] = bNodeIds;
}
}
}
return prev;
},
{} as Record<string, string[]>
);
};
const alignments = spatialMaps.map((spatialMap) => {
const horizontalAlignments: Record<number, string[]> = {};
const verticalAlignments: Record<number, string[]> = {};
const horizontalAlignments: Record<number, Record<string, string[]>> = {};
const verticalAlignments: Record<number, Record<string, string[]>> = {};
// Group service ids in an object with their x and y coordinate as the key
Object.entries(spatialMap).forEach(([id, [x, y]]) => {
if (!horizontalAlignments[y]) {
horizontalAlignments[y] = [];
}
if (!verticalAlignments[x]) {
verticalAlignments[x] = [];
}
horizontalAlignments[y].push(id);
verticalAlignments[x].push(id);
const nodeGroup = db.getNode(id)?.in ?? 'default';
horizontalAlignments[y] ??= {};
horizontalAlignments[y][nodeGroup] ??= [];
horizontalAlignments[y][nodeGroup].push(id);
verticalAlignments[x] ??= {};
verticalAlignments[x][nodeGroup] ??= [];
verticalAlignments[x][nodeGroup].push(id);
});
// Merge the values of each object into a list if the inner list has at least 2 elements
return {
horiz: Object.values(horizontalAlignments).filter((arr) => arr.length > 1),
vert: Object.values(verticalAlignments).filter((arr) => arr.length > 1),
horiz: Object.values(flattenAlignments(horizontalAlignments, 'horizontal')).filter(
(arr) => arr.length > 1
),
vert: Object.values(flattenAlignments(verticalAlignments, 'vertical')).filter(
(arr) => arr.length > 1
),
};
});
@@ -244,7 +312,8 @@ function layoutArchitecture(
junctions: ArchitectureJunction[],
groups: ArchitectureGroup[],
edges: ArchitectureEdge[],
{ spatialMaps }: ArchitectureDataStructures
db: ArchitectureDB,
{ spatialMaps, groupAlignments }: ArchitectureDataStructures
): Promise<cytoscape.Core> {
return new Promise((resolve) => {
const renderEl = select('body').append('div').attr('id', 'cy').attr('style', 'display:none');
@@ -318,9 +387,8 @@ function layoutArchitecture(
addServices(services, cy);
addJunctions(junctions, cy);
addEdges(edges, cy);
// Use the spatial map to create alignment arrays for fcose
const alignmentConstraint = getAlignments(spatialMaps);
const alignmentConstraint = getAlignments(db, spatialMaps, groupAlignments);
// Create the relative constraints for fcose by using an inverse of the spatial map and performing BFS on it
const relativePlacementConstraint = getRelativeConstraints(spatialMaps);
@@ -454,7 +522,7 @@ export const draw: DrawDefinition = async (text, id, _version, diagObj: Diagram)
await drawServices(db, servicesElem, services);
drawJunctions(db, servicesElem, junctions);
const cy = await layoutArchitecture(services, junctions, groups, edges, ds);
const cy = await layoutArchitecture(services, junctions, groups, edges, db, ds);
await drawEdges(edgesElem, cy);
await drawGroups(groupElem, cy);

View File

@@ -20,10 +20,10 @@ const getStyles: DiagramStylesProvider = (options: ArchitectureStyleOptions) =>
stroke-dasharray: 8;
}
.node-icon-text {
display: flex;
display: flex;
align-items: center;
}
.node-icon-text > div {
color: #fff;
margin: 1px;
@@ -33,6 +33,9 @@ const getStyles: DiagramStylesProvider = (options: ArchitectureStyleOptions) =>
display: -webkit-box;
-webkit-box-orient: vertical;
}
.architecture-services, .architecture-edges, .architecture-groups {
font-size: 16px;
}
`;
export default getStyles;

View File

@@ -7,6 +7,8 @@ import type cytoscape from 'cytoscape';
| Architecture Diagram Types |
\*=======================================*/
export type ArchitectureAlignment = 'vertical' | 'horizontal' | 'bend';
export type ArchitectureDirection = 'L' | 'R' | 'T' | 'B';
export type ArchitectureDirectionX = Extract<ArchitectureDirection, 'L' | 'R'>;
export type ArchitectureDirectionY = Extract<ArchitectureDirection, 'T' | 'B'>;
@@ -170,6 +172,18 @@ export const getArchitectureDirectionXYFactors = function (
}
};
export const getArchitectureDirectionAlignment = function (
a: ArchitectureDirection,
b: ArchitectureDirection
): ArchitectureAlignment {
if (isArchitectureDirectionXY(a, b)) {
return 'bend';
} else if (isArchitectureDirectionX(a)) {
return 'horizontal';
}
return 'vertical';
};
export interface ArchitectureStyleOptions {
archEdgeColor: string;
archEdgeArrowColor: string;
@@ -249,9 +263,27 @@ export interface ArchitectureDB extends DiagramDB {
export type ArchitectureAdjacencyList = Record<string, ArchitectureDirectionPairMap>;
export type ArchitectureSpatialMap = Record<string, number[]>;
/**
* Maps the direction that groups connect from.
*
* **Outer key**: ID of group A
*
* **Inner key**: ID of group B
*
* **Value**: 'vertical' or 'horizontal'
*
* Note: tmp[groupA][groupB] == tmp[groupB][groupA]
*/
export type ArchitectureGroupAlignments = Record<
string,
Record<string, Exclude<ArchitectureAlignment, 'bend'>>
>;
export interface ArchitectureDataStructures {
adjList: ArchitectureAdjacencyList;
spatialMaps: ArchitectureSpatialMap[];
groupAlignments: ArchitectureGroupAlignments;
}
export interface ArchitectureState extends Record<string, unknown> {

View File

@@ -105,7 +105,6 @@ const getStyles = (options: BlockChartStyleOptions) =>
}
.node .cluster {
// fill: ${fade(options.mainBkg, 0.5)};
fill: ${fade(options.clusterBkg, 0.5)};
stroke: ${fade(options.clusterBorder, 0.2)};
box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,11 @@
import { parser } from './parser/classDiagram.jison';
import classDb from './classDb.js';
import { ClassDB } from './classDb.js';
describe('class diagram, ', function () {
describe('when parsing data from a classDiagram it', function () {
let classDb;
beforeEach(function () {
classDb = new ClassDB();
parser.yy = classDb;
parser.yy.clear();
});

View File

@@ -1,13 +1,15 @@
import type { DiagramDefinition } from '../../diagram-api/types.js';
// @ts-ignore: JISON doesn't support types
import parser from './parser/classDiagram.jison';
import db from './classDb.js';
import { ClassDB } from './classDb.js';
import styles from './styles.js';
import renderer from './classRenderer-v3-unified.js';
export const diagram: DiagramDefinition = {
parser,
db,
get db() {
return new ClassDB();
},
renderer,
styles,
init: (cnf) => {
@@ -15,6 +17,5 @@ export const diagram: DiagramDefinition = {
cnf.class = {};
}
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
db.clear();
},
};

View File

@@ -1,6 +1,7 @@
/* eslint-disable @typescript-eslint/unbound-method -- Broken for Vitest mocks, see https://github.com/vitest-dev/eslint-plugin-vitest/pull/286 */
// @ts-expect-error Jison doesn't export types
import { parser } from './parser/classDiagram.jison';
import classDb from './classDb.js';
import { ClassDB } from './classDb.js';
import { vi, describe, it, expect } from 'vitest';
import type { ClassMap, NamespaceNode } from './classTypes.js';
const spyOn = vi.spyOn;
@@ -10,8 +11,9 @@ const abstractCssStyle = 'font-style:italic;';
describe('given a basic class diagram, ', function () {
describe('when parsing class definition', function () {
let classDb: ClassDB;
beforeEach(function () {
classDb.clear();
classDb = new ClassDB();
parser.yy = classDb;
});
it('should handle classes within namespaces', () => {
@@ -564,8 +566,9 @@ class C13["With Città foreign language"]
});
describe('when parsing class defined in brackets', function () {
let classDb: ClassDB;
beforeEach(function () {
classDb.clear();
classDb = new ClassDB();
parser.yy = classDb;
});
@@ -656,8 +659,9 @@ class C13["With Città foreign language"]
});
describe('when parsing comments', function () {
let classDb: ClassDB;
beforeEach(function () {
classDb.clear();
classDb = new ClassDB();
parser.yy = classDb;
});
@@ -746,8 +750,9 @@ foo()
});
describe('when parsing click statements', function () {
let classDb: ClassDB;
beforeEach(function () {
classDb.clear();
classDb = new ClassDB();
parser.yy = classDb;
});
it('should handle href link', function () {
@@ -857,8 +862,9 @@ foo()
});
describe('when parsing annotations', function () {
let classDb: ClassDB;
beforeEach(function () {
classDb.clear();
classDb = new ClassDB();
parser.yy = classDb;
});
@@ -921,8 +927,9 @@ foo()
describe('given a class diagram with members and methods ', function () {
describe('when parsing members', function () {
let classDb: ClassDB;
beforeEach(function () {
classDb.clear();
classDb = new ClassDB();
parser.yy = classDb;
});
@@ -980,8 +987,9 @@ describe('given a class diagram with members and methods ', function () {
});
describe('when parsing method definition', function () {
let classDb: ClassDB;
beforeEach(function () {
classDb.clear();
classDb = new ClassDB();
parser.yy = classDb;
});
@@ -1067,8 +1075,9 @@ describe('given a class diagram with members and methods ', function () {
describe('given a class diagram with generics, ', function () {
describe('when parsing valid generic classes', function () {
let classDb: ClassDB;
beforeEach(function () {
classDb.clear();
classDb = new ClassDB();
parser.yy = classDb;
});
@@ -1180,8 +1189,9 @@ namespace space {
describe('given a class diagram with relationships, ', function () {
describe('when parsing basic relationships', function () {
let classDb: ClassDB;
beforeEach(function () {
classDb.clear();
classDb = new ClassDB();
parser.yy = classDb;
});
@@ -1714,7 +1724,9 @@ class Class2
});
describe('when parsing classDiagram with text labels', () => {
let classDb: ClassDB;
beforeEach(function () {
classDb = new ClassDB();
parser.yy = classDb;
parser.yy.clear();
});
@@ -1897,3 +1909,40 @@ class C13["With Città foreign language"]
});
});
});
describe('class db class', () => {
let classDb: ClassDB;
beforeEach(() => {
classDb = new ClassDB();
});
// This is to ensure that functions used in class JISON are exposed as function from ClassDB
it('should have functions used in class JISON as own property', () => {
const functionsUsedInParser = [
'addRelation',
'cleanupLabel',
'setAccTitle',
'setAccDescription',
'addClassesToNamespace',
'addNamespace',
'setCssClass',
'addMembers',
'addClass',
'setClassLabel',
'addAnnotation',
'addMember',
'addNote',
'defineClass',
'setDirection',
'relationType',
'lineType',
'setClickEvent',
'setTooltip',
'setLink',
'setCssStyle',
] as const satisfies (keyof ClassDB)[];
for (const fun of functionsUsedInParser) {
expect(Object.hasOwn(classDb, fun)).toBe(true);
}
});
});

View File

@@ -1,13 +1,15 @@
import type { DiagramDefinition } from '../../diagram-api/types.js';
// @ts-ignore: JISON doesn't support types
import parser from './parser/classDiagram.jison';
import db from './classDb.js';
import { ClassDB } from './classDb.js';
import styles from './styles.js';
import renderer from './classRenderer-v3-unified.js';
export const diagram: DiagramDefinition = {
parser,
db,
get db() {
return new ClassDB();
},
renderer,
styles,
init: (cnf) => {
@@ -15,6 +17,5 @@ export const diagram: DiagramDefinition = {
cnf.class = {};
}
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
db.clear();
},
};

View File

@@ -38,7 +38,13 @@ export const getClasses = function (
return diagramObj.db.getClasses();
};
export const draw = async function (text: string, id: string, _version: string, diag: any) {
export const draw = async function (
text: string,
id: string,
_version: string,
diag: any,
positions: any
) {
log.info('REF0:');
log.info('Drawing class diagram (v3)', id);
const { securityLevel, state: conf, layout } = getConfig();
@@ -60,7 +66,7 @@ export const draw = async function (text: string, id: string, _version: string,
data4Layout.rankSpacing = conf?.rankSpacing || 50;
data4Layout.markers = ['aggregation', 'extension', 'composition', 'dependency', 'lollipop'];
data4Layout.diagramId = id;
await render(data4Layout, svg);
await render(data4Layout, svg, positions);
const padding = 8;
utils.insertTitle(
svg,

View File

@@ -1,8 +1,10 @@
import { parser } from './classDiagram.jison';
import classDb from '../classDb.js';
import { ClassDB } from '../classDb.js';
describe('class diagram', function () {
let classDb;
beforeEach(function () {
classDb = new ClassDB();
parser.yy = classDb;
parser.yy.clear();
});

View File

@@ -1,9 +1,11 @@
import flowDb from './flowDb.js';
import { FlowDB } from './flowDb.js';
import type { FlowSubGraph } from './types.js';
describe('flow db subgraphs', () => {
let flowDb: FlowDB;
let subgraphs: FlowSubGraph[];
beforeEach(() => {
flowDb = new FlowDB();
subgraphs = [
{ nodes: ['a', 'b', 'c', 'e'] },
{ nodes: ['f', 'g', 'h'] },
@@ -44,8 +46,9 @@ describe('flow db subgraphs', () => {
});
describe('flow db addClass', () => {
let flowDb: FlowDB;
beforeEach(() => {
flowDb.clear();
flowDb = new FlowDB();
});
it('should detect many classes', () => {
flowDb.addClass('a,b', ['stroke-width: 8px']);
@@ -65,3 +68,33 @@ describe('flow db addClass', () => {
expect(classes.get('a')?.styles).toEqual(['stroke-width: 8px']);
});
});
describe('flow db class', () => {
let flowDb: FlowDB;
beforeEach(() => {
flowDb = new FlowDB();
});
// This is to ensure that functions used in flow JISON are exposed as function from FlowDB
it('should have functions used in flow JISON as own property', () => {
const functionsUsedInParser = [
'setDirection',
'addSubGraph',
'setAccTitle',
'setAccDescription',
'addVertex',
'addLink',
'setClass',
'destructLink',
'addClass',
'setClickEvent',
'setTooltip',
'setLink',
'updateLink',
'updateLinkInterpolate',
] as const satisfies (keyof FlowDB)[];
for (const fun of functionsUsedInParser) {
expect(Object.hasOwn(flowDb, fun)).toBe(true);
}
});
});

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