mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-26 11:46:42 +02:00
Compare commits
957 Commits
release/9.
...
lazy-load-
Author | SHA1 | Date | |
---|---|---|---|
![]() |
646f76d343 | ||
![]() |
047e15951a | ||
![]() |
802407c8ae | ||
![]() |
439274c5ae | ||
![]() |
931120f73c | ||
![]() |
1fb671c561 | ||
![]() |
acd9a8aefb | ||
![]() |
66bc844cc9 | ||
![]() |
3e3de72093 | ||
![]() |
883d0d5039 | ||
![]() |
e49825b7a3 | ||
![]() |
9f286b46ff | ||
![]() |
803ea863fd | ||
![]() |
d59f878020 | ||
![]() |
646a96e5f0 | ||
![]() |
77a1aea7b9 | ||
![]() |
f3f4672816 | ||
![]() |
b68a38443c | ||
![]() |
c919bef70e | ||
![]() |
b1540d1491 | ||
![]() |
8ff40c152b | ||
![]() |
51803f00fb | ||
![]() |
fb4aefeae7 | ||
![]() |
7d987e5877 | ||
![]() |
816b6276a6 | ||
![]() |
836a026f63 | ||
![]() |
dc9ddc77ea | ||
![]() |
fdbd38ed5f | ||
![]() |
1f39fde230 | ||
![]() |
c420224080 | ||
![]() |
b1f13cbb9a | ||
![]() |
0f2e0c2ab4 | ||
![]() |
d8af97c152 | ||
![]() |
528ebd8f12 | ||
![]() |
c05c98c082 | ||
![]() |
d8c7557ae5 | ||
![]() |
f9753fc621 | ||
![]() |
42b59a9e35 | ||
![]() |
74bd576ebc | ||
![]() |
a017ffc3c9 | ||
![]() |
d3a81f025a | ||
![]() |
750f647b0d | ||
![]() |
2a9e56439e | ||
![]() |
e4bca33d00 | ||
![]() |
1528c03f85 | ||
![]() |
c73c68532a | ||
![]() |
989c8969cb | ||
![]() |
ff2ff22d27 | ||
![]() |
5ef7bad1ce | ||
![]() |
5e0c321510 | ||
![]() |
f19fac97d1 | ||
![]() |
d04f73af7e | ||
![]() |
6ef3915fcc | ||
![]() |
87257153b9 | ||
![]() |
02207087e4 | ||
![]() |
b4417d47f1 | ||
![]() |
04e3674355 | ||
![]() |
dbf8af06a4 | ||
![]() |
0bcdaa395f | ||
![]() |
7788d26ed4 | ||
![]() |
b3002be08a | ||
![]() |
813ceb0d96 | ||
![]() |
c39c3be39f | ||
![]() |
9eb17c6e13 | ||
![]() |
a6e26ce5bb | ||
![]() |
b735a7911a | ||
![]() |
2e342dace2 | ||
![]() |
14369d3143 | ||
![]() |
b6b5202923 | ||
![]() |
808152211c | ||
![]() |
408e852018 | ||
![]() |
ef91b4fa0e | ||
![]() |
46d924ffc9 | ||
![]() |
f965f5643a | ||
![]() |
85f0f7d241 | ||
![]() |
9468bffcbb | ||
![]() |
bd44957302 | ||
![]() |
7e3d57fc28 | ||
![]() |
4f5c707b56 | ||
![]() |
2a37023a8d | ||
![]() |
9901a73a2a | ||
![]() |
40a319fc5b | ||
![]() |
8ee321fd7b | ||
![]() |
05a594a492 | ||
![]() |
0a2804c641 | ||
![]() |
5079fa93b4 | ||
![]() |
eaf75fa149 | ||
![]() |
a6093e847e | ||
![]() |
0a6c7781c4 | ||
![]() |
0871f5c012 | ||
![]() |
6f27c36186 | ||
![]() |
383cbcf3a0 | ||
![]() |
56add0756f | ||
![]() |
02a0f87562 | ||
![]() |
feb1d34c1a | ||
![]() |
fdb81be0a0 | ||
![]() |
a4d1d86d7b | ||
![]() |
ffe956e27b | ||
![]() |
03190c1dec | ||
![]() |
92f1f2ffb6 | ||
![]() |
4d8d74a50d | ||
![]() |
0dc0de8f1d | ||
![]() |
f5dc4d991f | ||
![]() |
1f3a02559c | ||
![]() |
70f94c3e44 | ||
![]() |
b8eab08119 | ||
![]() |
794b714fac | ||
![]() |
2f4b4ba13b | ||
![]() |
1cdb0ff72c | ||
![]() |
9513e0e2d5 | ||
![]() |
6ebfbb2f9e | ||
![]() |
320e105ffe | ||
![]() |
96cde8a15a | ||
![]() |
972d025578 | ||
![]() |
09bc7e0acd | ||
![]() |
6191bb5f1b | ||
![]() |
d858cd677e | ||
![]() |
2376d38e0e | ||
![]() |
693616b00d | ||
![]() |
30f6550e61 | ||
![]() |
5cfbc9102e | ||
![]() |
766bdde46b | ||
![]() |
f46f8752ca | ||
![]() |
bed9b1bb99 | ||
![]() |
053a20bd33 | ||
![]() |
be34e6145f | ||
![]() |
f60c7fff65 | ||
![]() |
6292bebcd3 | ||
![]() |
80c68d847c | ||
![]() |
fed00be430 | ||
![]() |
ef527cb0fa | ||
![]() |
e1c63139b2 | ||
![]() |
edb30c9feb | ||
![]() |
66809ed972 | ||
![]() |
c66d5cb890 | ||
![]() |
fe8df78322 | ||
![]() |
7da6c0e867 | ||
![]() |
0a0b6d51ba | ||
![]() |
7ed3c21a6d | ||
![]() |
3d0214d453 | ||
![]() |
d0e9de2744 | ||
![]() |
99264fab8a | ||
![]() |
d4519bb730 | ||
![]() |
6468c8e857 | ||
![]() |
982c1b4979 | ||
![]() |
503cbedc96 | ||
![]() |
a448409750 | ||
![]() |
a928120bec | ||
![]() |
b3ca701b8d | ||
![]() |
62e127f1b8 | ||
![]() |
ebdec77c88 | ||
![]() |
98ddc95648 | ||
![]() |
9566f51ca8 | ||
![]() |
696164c9a6 | ||
![]() |
493aac6885 | ||
![]() |
56e1411d37 | ||
![]() |
e0805b8272 | ||
![]() |
e72059ba87 | ||
![]() |
24d46fb936 | ||
![]() |
29c52ec4d4 | ||
![]() |
77831c424c | ||
![]() |
d633ec62df | ||
![]() |
69c13a6ecf | ||
![]() |
69d05c454d | ||
![]() |
97637da9e0 | ||
![]() |
535f555b13 | ||
![]() |
d8ee2bb850 | ||
![]() |
609d28c6ee | ||
![]() |
eeafa8f5aa | ||
![]() |
ddc35fa9ce | ||
![]() |
908f5afe0f | ||
![]() |
5daa130857 | ||
![]() |
c202b94a9a | ||
![]() |
ed0f22b037 | ||
![]() |
eb1c6894f5 | ||
![]() |
91091c614f | ||
![]() |
481b5cde0f | ||
![]() |
d328879329 | ||
![]() |
3c1bad1792 | ||
![]() |
5e4bcbdfa0 | ||
![]() |
87911f4a56 | ||
![]() |
9ec935f109 | ||
![]() |
4bedc49b4d | ||
![]() |
af2b1945a3 | ||
![]() |
c32e76a870 | ||
![]() |
8dcbe83b0b | ||
![]() |
9fac7866f5 | ||
![]() |
53bbf444e5 | ||
![]() |
1a46582e1e | ||
![]() |
913468a7b5 | ||
![]() |
1e71798467 | ||
![]() |
8c63d002e7 | ||
![]() |
67b1e8dbe9 | ||
![]() |
bc0be28f08 | ||
![]() |
eaa1602b1a | ||
![]() |
2a86ced835 | ||
![]() |
ad49564ab5 | ||
![]() |
e8cef4aa81 | ||
![]() |
56954067ab | ||
![]() |
338ba704ba | ||
![]() |
bf25be7cf0 | ||
![]() |
404b718677 | ||
![]() |
8a489176c3 | ||
![]() |
f40f2a0b44 | ||
![]() |
d9406585c8 | ||
![]() |
9e35bf6e6f | ||
![]() |
0d0de49231 | ||
![]() |
dc53b2fde3 | ||
![]() |
98d214fd60 | ||
![]() |
adadc9ee26 | ||
![]() |
777f888892 | ||
![]() |
84dfc8ee4b | ||
![]() |
6f86047a8e | ||
![]() |
2d7a289105 | ||
![]() |
353b62aa0a | ||
![]() |
826cd67cc8 | ||
![]() |
9cb7054ff9 | ||
![]() |
6309300eb6 | ||
![]() |
0dce8f4104 | ||
![]() |
1c4eeb2d53 | ||
![]() |
d6245fdbda | ||
![]() |
aeb31fe1ae | ||
![]() |
0e0a6c0f69 | ||
![]() |
cccbb6939c | ||
![]() |
db31f61368 | ||
![]() |
a96c5ed83a | ||
![]() |
ffbae081ff | ||
![]() |
395cc29701 | ||
![]() |
c93c7c75c9 | ||
![]() |
9b0d4a28ea | ||
![]() |
8dd82839cb | ||
![]() |
24ef5f9fe4 | ||
![]() |
d08882d043 | ||
![]() |
eea31a1046 | ||
![]() |
5d085fd3f6 | ||
![]() |
30e2b08028 | ||
![]() |
533da47516 | ||
![]() |
146c2e2dd9 | ||
![]() |
065756a90d | ||
![]() |
6819fc05da | ||
![]() |
bc14d56568 | ||
![]() |
01ca1cc8c7 | ||
![]() |
f69ead5e08 | ||
![]() |
f29974628b | ||
![]() |
ad2d098b52 | ||
![]() |
247061919b | ||
![]() |
0c308134a9 | ||
![]() |
3982d19e57 | ||
![]() |
55d706323d | ||
![]() |
51df0a68cc | ||
![]() |
ca053e0a11 | ||
![]() |
c260f7c20b | ||
![]() |
9f0137a34d | ||
![]() |
7bd7bcf4b8 | ||
![]() |
36ad4a847e | ||
![]() |
5791fc9a4d | ||
![]() |
d7093c4891 | ||
![]() |
506e427d56 | ||
![]() |
59f8f5f65e | ||
![]() |
3b30232e88 | ||
![]() |
e0aae3e31f | ||
![]() |
c21c026749 | ||
![]() |
b9cb7e9898 | ||
![]() |
1ea546a0a5 | ||
![]() |
ffdf268ba2 | ||
![]() |
f34008b71a | ||
![]() |
8f009ed815 | ||
![]() |
71d252f706 | ||
![]() |
135f2cc2fd | ||
![]() |
b83f18327a | ||
![]() |
d5fc319d4e | ||
![]() |
c343e4a1e3 | ||
![]() |
b72dad9c5b | ||
![]() |
2ada935842 | ||
![]() |
dab43da202 | ||
![]() |
0a944a5de1 | ||
![]() |
bb824f1147 | ||
![]() |
817a89df70 | ||
![]() |
827b3d47b7 | ||
![]() |
00c1732b9b | ||
![]() |
a266a9c539 | ||
![]() |
48d94568ce | ||
![]() |
95d92999bb | ||
![]() |
51a94e6904 | ||
![]() |
43954b9500 | ||
![]() |
636ff1c868 | ||
![]() |
7bf877d820 | ||
![]() |
8e3f9868eb | ||
![]() |
e83c79a169 | ||
![]() |
a6b83c9742 | ||
![]() |
7635db4c1e | ||
![]() |
183fc35fea | ||
![]() |
9cbacb0159 | ||
![]() |
f37ac53118 | ||
![]() |
4e4b5ccf8d | ||
![]() |
4f96116c43 | ||
![]() |
aba458b832 | ||
![]() |
c39a6f27d4 | ||
![]() |
ae920eaa93 | ||
![]() |
5c8fda3891 | ||
![]() |
e1f399a06a | ||
![]() |
a481968ec1 | ||
![]() |
c7ec44da09 | ||
![]() |
22dbe49945 | ||
![]() |
25ed9063f2 | ||
![]() |
e8eb2ab03f | ||
![]() |
48fb5b3f28 | ||
![]() |
27e40248ff | ||
![]() |
98506d888c | ||
![]() |
be7ab54a09 | ||
![]() |
5a2ca03fff | ||
![]() |
37eb0454fd | ||
![]() |
bb413d555e | ||
![]() |
2579bf1ad9 | ||
![]() |
0605bce887 | ||
![]() |
6452ccc220 | ||
![]() |
2693c9b024 | ||
![]() |
38d9795191 | ||
![]() |
9c88c785cb | ||
![]() |
2f41013740 | ||
![]() |
2d9f25b163 | ||
![]() |
4c5d813e58 | ||
![]() |
10d9b88965 | ||
![]() |
207235ea83 | ||
![]() |
97ab62514c | ||
![]() |
790922b938 | ||
![]() |
08af10d439 | ||
![]() |
73d02b2582 | ||
![]() |
5c2a45cd4d | ||
![]() |
064c3134e5 | ||
![]() |
6340c157e8 | ||
![]() |
e9239f83e9 | ||
![]() |
59c69600e8 | ||
![]() |
0ec7e006ec | ||
![]() |
811f838a2d | ||
![]() |
9acdc0bc2e | ||
![]() |
ac788a7e7d | ||
![]() |
b4af820ed1 | ||
![]() |
ac629c91d6 | ||
![]() |
bb413e0022 | ||
![]() |
a7fa40ecda | ||
![]() |
d83c9f5a70 | ||
![]() |
539ee49594 | ||
![]() |
3dff5a90f1 | ||
![]() |
20d22a6468 | ||
![]() |
c5033b92b4 | ||
![]() |
625ec813b9 | ||
![]() |
595f7680e9 | ||
![]() |
6e7037bafd | ||
![]() |
a25c9a30d0 | ||
![]() |
05b8a6e77f | ||
![]() |
f05c790248 | ||
![]() |
5c51ce1393 | ||
![]() |
13809b5025 | ||
![]() |
3cc898ca4c | ||
![]() |
9394abce22 | ||
![]() |
6312eb9dcf | ||
![]() |
c636b873e9 | ||
![]() |
ff971c8300 | ||
![]() |
0c0d37efb2 | ||
![]() |
39081b6bfb | ||
![]() |
0c0468123f | ||
![]() |
50da58afe0 | ||
![]() |
8c4808a681 | ||
![]() |
d60ce53e05 | ||
![]() |
4fc4d71350 | ||
![]() |
b5dcb4f345 | ||
![]() |
a7f0b2ba21 | ||
![]() |
c5bba0b153 | ||
![]() |
94868e48cb | ||
![]() |
e7ac2368c3 | ||
![]() |
bbaf2c2f20 | ||
![]() |
ecd175dd38 | ||
![]() |
5434cfc89d | ||
![]() |
a87abc00c6 | ||
![]() |
3d32280c49 | ||
![]() |
07638f5505 | ||
![]() |
73620ebee9 | ||
![]() |
8b534440a0 | ||
![]() |
7f56112f8e | ||
![]() |
0edc2751f3 | ||
![]() |
06365faef3 | ||
![]() |
885e69c809 | ||
![]() |
9ef50d7a93 | ||
![]() |
ca5fbb7fa8 | ||
![]() |
7a8a9ca5b0 | ||
![]() |
9e5e7b31e9 | ||
![]() |
d8735060dc | ||
![]() |
681f4bb803 | ||
![]() |
e740325d84 | ||
![]() |
213309f5e2 | ||
![]() |
a3bda3c559 | ||
![]() |
bfa69aa084 | ||
![]() |
3f76eb0ac2 | ||
![]() |
0e504f30b9 | ||
![]() |
1527956669 | ||
![]() |
9cc7da09fc | ||
![]() |
5554725f63 | ||
![]() |
37aaca0090 | ||
![]() |
48a899f7a9 | ||
![]() |
6ad9208119 | ||
![]() |
fc9d22562b | ||
![]() |
ad56a22277 | ||
![]() |
8ca91d6303 | ||
![]() |
9d0901801b | ||
![]() |
f63acea34a | ||
![]() |
5a1e3ed5c6 | ||
![]() |
5148acb20f | ||
![]() |
c8d3c3ac4f | ||
![]() |
1029ce4527 | ||
![]() |
0f56c9a85d | ||
![]() |
ffcb73ad5f | ||
![]() |
d2e7b1e56f | ||
![]() |
b1770d3d06 | ||
![]() |
8e2287a86d | ||
![]() |
5aae45dc97 | ||
![]() |
1c6328cc1b | ||
![]() |
8a476f882d | ||
![]() |
d78adc6fb9 | ||
![]() |
2611a430b9 | ||
![]() |
f8eaccb4c1 | ||
![]() |
b0559df903 | ||
![]() |
2826bf6823 | ||
![]() |
9acf63f7d6 | ||
![]() |
5d72585705 | ||
![]() |
b760e717d0 | ||
![]() |
fe8f52fb1b | ||
![]() |
fd567f833e | ||
![]() |
6376c9ae43 | ||
![]() |
48b0076ea5 | ||
![]() |
a800cb6fe6 | ||
![]() |
5f81e3d5ed | ||
![]() |
e690da638d | ||
![]() |
be28160a4a | ||
![]() |
d18624bbe9 | ||
![]() |
7fe8f260fc | ||
![]() |
73abcd869c | ||
![]() |
d0074356e9 | ||
![]() |
6e81ee9d97 | ||
![]() |
3986f48199 | ||
![]() |
c6ce5a80fa | ||
![]() |
056d5200c6 | ||
![]() |
411d641aa2 | ||
![]() |
86cbf85358 | ||
![]() |
a878edfb9b | ||
![]() |
1a0fe0abf6 | ||
![]() |
e310af7673 | ||
![]() |
bb2002fce2 | ||
![]() |
24bd55c360 | ||
![]() |
b534a5c2ff | ||
![]() |
04a25092f4 | ||
![]() |
b7cf7beb22 | ||
![]() |
407927c8ec | ||
![]() |
c50a7533f6 | ||
![]() |
5905787bea | ||
![]() |
a61d95a005 | ||
![]() |
18201d326c | ||
![]() |
c7ba253e7c | ||
![]() |
f27dff2186 | ||
![]() |
0ee0862fae | ||
![]() |
d2df7173e3 | ||
![]() |
a61c17c1a9 | ||
![]() |
853b676d48 | ||
![]() |
51dbdb933c | ||
![]() |
766e111ac1 | ||
![]() |
004ea9872b | ||
![]() |
bf4607cf08 | ||
![]() |
3a179170bb | ||
![]() |
c0dd6f9e35 | ||
![]() |
0832b24d66 | ||
![]() |
97ed63de5a | ||
![]() |
22d20cc76e | ||
![]() |
91363f7aed | ||
![]() |
6554a41f6d | ||
![]() |
d38f0e9e03 | ||
![]() |
703b7eb91d | ||
![]() |
0c85e8ee53 | ||
![]() |
aa42aabb30 | ||
![]() |
0780668239 | ||
![]() |
7e68e06a3a | ||
![]() |
030cbb1acb | ||
![]() |
1ccd3183c4 | ||
![]() |
5a44b7341c | ||
![]() |
bd5933a65b | ||
![]() |
7b60ac1735 | ||
![]() |
0aacc67b7a | ||
![]() |
4d523112d4 | ||
![]() |
a0fa8df0f1 | ||
![]() |
818195f2e4 | ||
![]() |
8020ab9f78 | ||
![]() |
3e2ca5fe54 | ||
![]() |
f9bf53551f | ||
![]() |
d898b8a7e7 | ||
![]() |
579dbc8f63 | ||
![]() |
5ae1bd92cd | ||
![]() |
41e1001050 | ||
![]() |
560bd83fb1 | ||
![]() |
0b4987431e | ||
![]() |
5e9db250bc | ||
![]() |
47490e9820 | ||
![]() |
df7b5965c2 | ||
![]() |
e5212c25f5 | ||
![]() |
8ad5f728c0 | ||
![]() |
8b4a08eef4 | ||
![]() |
01106caa59 | ||
![]() |
047b7023a2 | ||
![]() |
d52c1f09d5 | ||
![]() |
afd1b6ed27 | ||
![]() |
1f6e4a0887 | ||
![]() |
a95f46f513 | ||
![]() |
98e9f5751a | ||
![]() |
41dec4d159 | ||
![]() |
91478caf5b | ||
![]() |
537ce4f630 | ||
![]() |
f0c41a8280 | ||
![]() |
22999e27f0 | ||
![]() |
a64a76db9b | ||
![]() |
7721ee0f28 | ||
![]() |
106672bc75 | ||
![]() |
cb4935258c | ||
![]() |
1d84cfe2e2 | ||
![]() |
27baa24c82 | ||
![]() |
1a6305c079 | ||
![]() |
b86476331f | ||
![]() |
092c15a37c | ||
![]() |
65c73f2eec | ||
![]() |
2414435641 | ||
![]() |
2afcd54184 | ||
![]() |
700e25382b | ||
![]() |
db0d6075ca | ||
![]() |
a196aeb29b | ||
![]() |
92f0c8f8b1 | ||
![]() |
3bc5cfa554 | ||
![]() |
6f7ae17fc6 | ||
![]() |
be5b8012bd | ||
![]() |
90d472042b | ||
![]() |
5378316cc3 | ||
![]() |
8ee534f7fb | ||
![]() |
aee1a87347 | ||
![]() |
e9fb2c8a54 | ||
![]() |
b79eaae002 | ||
![]() |
3b571fc9b3 | ||
![]() |
e718c5bf6c | ||
![]() |
636017fdd7 | ||
![]() |
85dc16df0a | ||
![]() |
0caf372685 | ||
![]() |
5674f8e675 | ||
![]() |
c49c15ab7c | ||
![]() |
b84511b314 | ||
![]() |
f6d69b33b3 | ||
![]() |
661f283dab | ||
![]() |
787cf9395e | ||
![]() |
fe1be11c21 | ||
![]() |
1f7d8c0f49 | ||
![]() |
6167eda6b6 | ||
![]() |
ec7dd9ef01 | ||
![]() |
c702e12a42 | ||
![]() |
42a2cabc7b | ||
![]() |
0a3042322f | ||
![]() |
bdeefb212e | ||
![]() |
074f30ed1f | ||
![]() |
c2f72402f2 | ||
![]() |
13e7da10ca | ||
![]() |
4225f5e2f5 | ||
![]() |
3833dcd0d8 | ||
![]() |
829e1c2390 | ||
![]() |
c3da6c10fb | ||
![]() |
017fdfa552 | ||
![]() |
cc38667df3 | ||
![]() |
b6d0d7fe15 | ||
![]() |
f45c0e3617 | ||
![]() |
0aabae40ad | ||
![]() |
9d5c50a36f | ||
![]() |
e34e208786 | ||
![]() |
d01de850eb | ||
![]() |
bd14dc508f | ||
![]() |
3b88150e11 | ||
![]() |
87f6d34b4f | ||
![]() |
cfae2b6a40 | ||
![]() |
5584fef1b0 | ||
![]() |
98f37d64ea | ||
![]() |
ccb16e5f5a | ||
![]() |
d73cafa7c8 | ||
![]() |
f28c86326d | ||
![]() |
269722fb65 | ||
![]() |
99923fcd0f | ||
![]() |
e06a7587ac | ||
![]() |
b3c0c57c6d | ||
![]() |
04f18630f3 | ||
![]() |
f1fa91a51c | ||
![]() |
53fe35e37e | ||
![]() |
6be05e9948 | ||
![]() |
84bf79f72b | ||
![]() |
904eccc4fa | ||
![]() |
01562528b7 | ||
![]() |
0dca4d3393 | ||
![]() |
fe3bb0b6c0 | ||
![]() |
7aeb60f42a | ||
![]() |
5597cf45bf | ||
![]() |
1ced01c7f6 | ||
![]() |
e46d9c1173 | ||
![]() |
2272eb6644 | ||
![]() |
ac76fb73a8 | ||
![]() |
694692fb5d | ||
![]() |
f4a99fc612 | ||
![]() |
b00d569215 | ||
![]() |
1921623bdf | ||
![]() |
3502fb46f8 | ||
![]() |
bacdd49176 | ||
![]() |
065a3176b8 | ||
![]() |
4fa0d366db | ||
![]() |
36be8114d0 | ||
![]() |
4619ff2ad0 | ||
![]() |
8c85c10212 | ||
![]() |
2fbdfdbf6a | ||
![]() |
558ef8a2db | ||
![]() |
68f8010ab9 | ||
![]() |
654dfa6b3d | ||
![]() |
0092ca1da0 | ||
![]() |
fa85e2a650 | ||
![]() |
3dc7e0e694 | ||
![]() |
98b2febe30 | ||
![]() |
d67e2723c6 | ||
![]() |
1206ec43ac | ||
![]() |
965df4fdf4 | ||
![]() |
4f0e18b088 | ||
![]() |
9d5e855e8e | ||
![]() |
e7b199adaf | ||
![]() |
9b319a55f6 | ||
![]() |
809fbf685b | ||
![]() |
3400c19277 | ||
![]() |
33aa7d8333 | ||
![]() |
f14971e908 | ||
![]() |
63c385a5d7 | ||
![]() |
18d95e479c | ||
![]() |
6966ca47d1 | ||
![]() |
8f107026a9 | ||
![]() |
c846b48882 | ||
![]() |
a93f37a3fc | ||
![]() |
dd40b19c89 | ||
![]() |
7068f6c08a | ||
![]() |
5b63260240 | ||
![]() |
d2aaf6aad9 | ||
![]() |
d7e0888801 | ||
![]() |
e542339ed1 | ||
![]() |
2229a307a1 | ||
![]() |
49d1a8e248 | ||
![]() |
0135ab2ab1 | ||
![]() |
a5d4fdb142 | ||
![]() |
d4a28cc0ec | ||
![]() |
97c998c64b | ||
![]() |
e7df5d52ba | ||
![]() |
32b697f674 | ||
![]() |
7e28fc087d | ||
![]() |
4cdc6e4a0d | ||
![]() |
f350ff9852 | ||
![]() |
6ab0eef6f3 | ||
![]() |
17ccd1fd0b | ||
![]() |
4e3d3a7288 | ||
![]() |
018844e8ea | ||
![]() |
850135a936 | ||
![]() |
080bde0bc2 | ||
![]() |
e6e7bdcb55 | ||
![]() |
9e4ae66346 | ||
![]() |
b7f9495a14 | ||
![]() |
3b93c39249 | ||
![]() |
2968b400c4 | ||
![]() |
d0d5739ab0 | ||
![]() |
0779c39654 | ||
![]() |
b2f5ba3ee8 | ||
![]() |
ba4f7d2ceb | ||
![]() |
3315ae8382 | ||
![]() |
f7b8d1ac07 | ||
![]() |
86b3a4f09e | ||
![]() |
a3dfc4c0e8 | ||
![]() |
15b160c553 | ||
![]() |
39980322bd | ||
![]() |
2f7930efb7 | ||
![]() |
5996e1e69d | ||
![]() |
cde3a7cf70 | ||
![]() |
49eebc1c20 | ||
![]() |
0583c4fa25 | ||
![]() |
a3ace00ed4 | ||
![]() |
c37ff47ee3 | ||
![]() |
84148d4891 | ||
![]() |
60651fdfe0 | ||
![]() |
1efd5c7d58 | ||
![]() |
fd70b862ed | ||
![]() |
1c8035e029 | ||
![]() |
11809e799b | ||
![]() |
c50745323a | ||
![]() |
2af91f5bbb | ||
![]() |
08793e0b50 | ||
![]() |
db961ecefe | ||
![]() |
d3ae5e3e10 | ||
![]() |
576445847c | ||
![]() |
248a7aff7a | ||
![]() |
a8042f622f | ||
![]() |
32ba2d5ffe | ||
![]() |
9ef3164991 | ||
![]() |
b0b54f48f9 | ||
![]() |
35ba62bae2 | ||
![]() |
ea0e9aa7f4 | ||
![]() |
8c56f68a06 | ||
![]() |
2cf9348f53 | ||
![]() |
d97ce7eab8 | ||
![]() |
0c8f7163db | ||
![]() |
0e0802a588 | ||
![]() |
9a0d5e31b7 | ||
![]() |
6291e4dcdd | ||
![]() |
9f49259bca | ||
![]() |
4885e7b7f1 | ||
![]() |
a2469b6984 | ||
![]() |
1549eb20df | ||
![]() |
c245a2da07 | ||
![]() |
6e16369d85 | ||
![]() |
8caeeccea3 | ||
![]() |
102542b4e7 | ||
![]() |
05d664d8d1 | ||
![]() |
8fa57b0b14 | ||
![]() |
d365dacbf7 | ||
![]() |
39aaf2f813 | ||
![]() |
d97b3807b9 | ||
![]() |
a51d8e844b | ||
![]() |
c68ec54fdd | ||
![]() |
858f2eadd4 | ||
![]() |
bc2b4c57c9 | ||
![]() |
280c7e8da1 | ||
![]() |
cd4b1ea245 | ||
![]() |
4710f67baf | ||
![]() |
f14f0d9857 | ||
![]() |
6de66eaba3 | ||
![]() |
238cbd14ca | ||
![]() |
d9bace053b | ||
![]() |
fab9688135 | ||
![]() |
896154d89f | ||
![]() |
c9cd56914f | ||
![]() |
95dbbb350b | ||
![]() |
88e17bf1b4 | ||
![]() |
19a9f90186 | ||
![]() |
e19581b540 | ||
![]() |
ecf62e3b7a | ||
![]() |
ea3573c989 | ||
![]() |
8d3617f0c7 | ||
![]() |
34ea67c8c4 | ||
![]() |
2e392232eb | ||
![]() |
2f4af87bf7 | ||
![]() |
33f06273a9 | ||
![]() |
e1977dd889 | ||
![]() |
6635d4bc97 | ||
![]() |
619136d389 | ||
![]() |
a89b6fd054 | ||
![]() |
02fc68a3f6 | ||
![]() |
a9e798c399 | ||
![]() |
b65c67ec2c | ||
![]() |
1befbe08ff | ||
![]() |
b21cb43639 | ||
![]() |
db4ff451bf | ||
![]() |
f30d19c539 | ||
![]() |
52fcb92f51 | ||
![]() |
18d44c643f | ||
![]() |
d01929255c | ||
![]() |
20e4e81765 | ||
![]() |
2df0c52bc7 | ||
![]() |
4acda0d98c | ||
![]() |
efadeca7dd | ||
![]() |
e5c2de1134 | ||
![]() |
e745290ba9 | ||
![]() |
808bcb8022 | ||
![]() |
af8a5cbbfa | ||
![]() |
cb4b60e8e4 | ||
![]() |
2cc88df08a | ||
![]() |
dce89571ef | ||
![]() |
1512d8120d | ||
![]() |
ac41a98610 | ||
![]() |
bf4272102d | ||
![]() |
7257bba3f3 | ||
![]() |
6e5eeb7215 | ||
![]() |
a5aef9e330 | ||
![]() |
d32c8534cb | ||
![]() |
48fe013c83 | ||
![]() |
02bf5befc4 | ||
![]() |
0cac8abe75 | ||
![]() |
822b741612 | ||
![]() |
b0a459c8a1 | ||
![]() |
60f6bbd42a | ||
![]() |
9b54feab84 | ||
![]() |
afe343e94f | ||
![]() |
93fa3f018f | ||
![]() |
680a06a60e | ||
![]() |
b7925936f8 | ||
![]() |
4dcf7feec0 | ||
![]() |
f5bcd54b89 | ||
![]() |
66585ccd3b | ||
![]() |
0ab152d644 | ||
![]() |
e6b410af04 | ||
![]() |
585795fb0a | ||
![]() |
09eddb59f5 | ||
![]() |
56c4637d1e | ||
![]() |
ee1ec3d6d0 | ||
![]() |
a8aef0ca64 | ||
![]() |
3f683f0dfd | ||
![]() |
ca12b9f253 | ||
![]() |
c3aad38628 | ||
![]() |
6f7670e5ff | ||
![]() |
c2a34b5d71 | ||
![]() |
3caa5e0f39 | ||
![]() |
fd4a136e2b | ||
![]() |
4babbc133a | ||
![]() |
3c5fa95c7a | ||
![]() |
ad3f2d0023 | ||
![]() |
8f5823fac1 | ||
![]() |
617592a959 | ||
![]() |
12f682b7bc | ||
![]() |
6a86e846c3 | ||
![]() |
ce86354a57 | ||
![]() |
72cfa3b8fc | ||
![]() |
1166df3471 | ||
![]() |
09b8f5b540 | ||
![]() |
dcbb134525 | ||
![]() |
fa22c2ae3b | ||
![]() |
ed6f5cbcf2 | ||
![]() |
44cb1acbb2 | ||
![]() |
f5f26e3840 | ||
![]() |
485692b3f2 | ||
![]() |
c20aa124d6 | ||
![]() |
775bba8f7f | ||
![]() |
b0074bf723 | ||
![]() |
1e1f272e4c | ||
![]() |
aa9149912d | ||
![]() |
3054a809ce | ||
![]() |
38d243c63f | ||
![]() |
fb6bf87161 | ||
![]() |
9ee43c0b7a | ||
![]() |
846531363e | ||
![]() |
91e369a840 | ||
![]() |
81ff4416dc | ||
![]() |
dfc2866457 | ||
![]() |
f7c5e1b8b2 | ||
![]() |
f5c2901b3f | ||
![]() |
dd4459f813 | ||
![]() |
01d84fdacf | ||
![]() |
9f8024d836 | ||
![]() |
d4c1f14bd6 | ||
![]() |
ffe520db06 | ||
![]() |
e31acfb3cd | ||
![]() |
00fe5d477d | ||
![]() |
ca3f4559ef | ||
![]() |
1a205aeccc | ||
![]() |
82a480d924 | ||
![]() |
2d361964ce | ||
![]() |
03d71829c6 | ||
![]() |
c40368b0fa | ||
![]() |
0b2ca29ae8 | ||
![]() |
f815bd08b7 | ||
![]() |
1ed926b491 | ||
![]() |
88b255c178 | ||
![]() |
5dbeddf448 | ||
![]() |
15f1cdf3aa | ||
![]() |
8e5e212c49 | ||
![]() |
7de68f0bf2 | ||
![]() |
5d5affca33 | ||
![]() |
6029c5371e | ||
![]() |
8681e78e50 | ||
![]() |
5a6d8aee65 | ||
![]() |
27cf50044d | ||
![]() |
dee9cfea85 | ||
![]() |
8e02438bfb | ||
![]() |
b823777e6d | ||
![]() |
e1de0873cd | ||
![]() |
4c30e03f1e | ||
![]() |
df4069ba37 | ||
![]() |
ce1507c296 | ||
![]() |
7097e6ba83 | ||
![]() |
a28f0e76b9 | ||
![]() |
0cc8537d7d | ||
![]() |
c20c362557 | ||
![]() |
0d4b09a0a0 | ||
![]() |
408c08d2a3 | ||
![]() |
10f56129c1 | ||
![]() |
bc6830cbdb | ||
![]() |
c5f78077ff | ||
![]() |
682a1404ca | ||
![]() |
5318ec6dbf | ||
![]() |
490ddd9a15 | ||
![]() |
1675174b2a | ||
![]() |
023781716f | ||
![]() |
48ad6e6042 | ||
![]() |
bedc9399c5 | ||
![]() |
86d172d209 | ||
![]() |
708ba160d5 | ||
![]() |
b0979a8cf9 | ||
![]() |
b397eea044 | ||
![]() |
5d6d7d9c55 | ||
![]() |
e5c3dcb179 | ||
![]() |
c0f17b39a7 | ||
![]() |
0824f342e4 | ||
![]() |
3e5c74c4f2 | ||
![]() |
8ee617ce1c | ||
![]() |
1891b35eda | ||
![]() |
ed29fe1aa9 | ||
![]() |
5b15865d30 | ||
![]() |
1dfddfde54 | ||
![]() |
1ae2624197 | ||
![]() |
1509ee68be | ||
![]() |
1f4c1c3a6c | ||
![]() |
cc45f3ca01 | ||
![]() |
ccabcca55b | ||
![]() |
259abb081a | ||
![]() |
0ae1bdb61a | ||
![]() |
5110e42786 | ||
![]() |
1410badb05 | ||
![]() |
3ba6e70c96 | ||
![]() |
2c437628d5 | ||
![]() |
ea47bcd682 | ||
![]() |
4ff0a32ea5 | ||
![]() |
0d6109c7a8 | ||
![]() |
4d4b77f39f | ||
![]() |
5619b54cdb | ||
![]() |
8484d55a6a | ||
![]() |
0a55cda0a9 | ||
![]() |
2480a5eaa2 | ||
![]() |
6b5c051c02 | ||
![]() |
ef5c753e32 | ||
![]() |
4b78a2106d | ||
![]() |
0e47c0ee6c | ||
![]() |
8251bf204d | ||
![]() |
184b094218 | ||
![]() |
673b375cd9 | ||
![]() |
2792bb41de | ||
![]() |
ca909edbed | ||
![]() |
610f154c74 | ||
![]() |
ec2da8e85d | ||
![]() |
0c5b4948cf | ||
![]() |
566ec14648 | ||
![]() |
d674b65ca4 | ||
![]() |
7268965adc | ||
![]() |
a0c460fa12 | ||
![]() |
f24cd56e0a | ||
![]() |
1517d6ed04 | ||
![]() |
ff93945aaf | ||
![]() |
f58ee895ae | ||
![]() |
79a42772b9 | ||
![]() |
4c671af723 | ||
![]() |
5ea93fb3d2 | ||
![]() |
648b15b00b | ||
![]() |
b0d65169ab | ||
![]() |
546eb285c4 | ||
![]() |
f79d4f9a40 | ||
![]() |
ddcc9a9d77 | ||
![]() |
e29c3d6125 | ||
![]() |
69b7b0e029 | ||
![]() |
ef3c1c878c | ||
![]() |
2d5e49fa15 | ||
![]() |
8f8c685a39 | ||
![]() |
5b26934802 | ||
![]() |
08eba8ccc1 |
@@ -1,5 +1,3 @@
|
|||||||
{
|
{
|
||||||
"extends": [
|
"extends": ["@commitlint/config-conventional"]
|
||||||
"@commitlint/config-conventional"
|
}
|
||||||
]
|
|
||||||
}
|
|
||||||
|
@@ -1,3 +1,6 @@
|
|||||||
dist/**
|
dist/**
|
||||||
.github/**
|
.github/**
|
||||||
docs/Setup.md
|
docs/Setup.md
|
||||||
|
cypress.config.js
|
||||||
|
cypress/plugins/index.js
|
||||||
|
coverage
|
@@ -5,7 +5,7 @@
|
|||||||
"jest/globals": true,
|
"jest/globals": true,
|
||||||
"node": true
|
"node": true
|
||||||
},
|
},
|
||||||
"parser": "@babel/eslint-parser",
|
"parser": "@typescript-eslint/parser",
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaFeatures": {
|
"ecmaFeatures": {
|
||||||
"experimentalObjectRestSpread": true,
|
"experimentalObjectRestSpread": true,
|
||||||
@@ -15,13 +15,15 @@
|
|||||||
},
|
},
|
||||||
"extends": [
|
"extends": [
|
||||||
"eslint:recommended",
|
"eslint:recommended",
|
||||||
//"plugin:jsdoc/recommended",
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
"plugin:jsdoc/recommended",
|
||||||
"plugin:json/recommended",
|
"plugin:json/recommended",
|
||||||
// "plugin:markdown/recommended",
|
"plugin:markdown/recommended",
|
||||||
"plugin:prettier/recommended"
|
"prettier"
|
||||||
],
|
],
|
||||||
"plugins": ["html", "jest", "jsdoc", "json", "prettier"],
|
"plugins": ["@typescript-eslint", "html", "jest", "jsdoc", "json"],
|
||||||
"rules": {
|
"rules": {
|
||||||
|
"no-console": "error",
|
||||||
"no-prototype-builtins": "off",
|
"no-prototype-builtins": "off",
|
||||||
"no-unused-vars": "off",
|
"no-unused-vars": "off",
|
||||||
"jsdoc/check-indentation": "off",
|
"jsdoc/check-indentation": "off",
|
||||||
@@ -30,7 +32,21 @@
|
|||||||
"jsdoc/multiline-blocks": "off",
|
"jsdoc/multiline-blocks": "off",
|
||||||
"jsdoc/newline-after-description": "off",
|
"jsdoc/newline-after-description": "off",
|
||||||
"jsdoc/tag-lines": "off",
|
"jsdoc/tag-lines": "off",
|
||||||
|
"jsdoc/require-param-description": "off",
|
||||||
|
"jsdoc/require-param-type": "off",
|
||||||
|
"jsdoc/require-returns": "off",
|
||||||
|
"jsdoc/require-returns-description": "off",
|
||||||
"cypress/no-async-tests": "off",
|
"cypress/no-async-tests": "off",
|
||||||
|
"@typescript-eslint/ban-ts-comment": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"ts-expect-error": "allow-with-description",
|
||||||
|
"ts-ignore": "allow-with-description",
|
||||||
|
"ts-nocheck": "allow-with-description",
|
||||||
|
"ts-check": "allow-with-description",
|
||||||
|
"minimumDescriptionLength": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
"json/*": ["error", "allowComments"],
|
"json/*": ["error", "allowComments"],
|
||||||
"no-empty": ["error", { "allowEmptyCatch": true }]
|
"no-empty": ["error", { "allowEmptyCatch": true }]
|
||||||
},
|
},
|
||||||
@@ -43,9 +59,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"files": "./**/*.md/*.html",
|
"files": ["./cypress/**", "./demos/**"],
|
||||||
"rules": {
|
"rules": {
|
||||||
"prettier/prettier": "off"
|
"no-console": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"files": ["./**/*.spec.{ts,js}", "./cypress/**", "./demos/**", "./**/docs/**"],
|
||||||
|
"rules": {
|
||||||
|
"jsdoc/require-jsdoc": "off",
|
||||||
|
"@typescript-eslint/no-unused-vars": "off"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
20
.github/ISSUE_TEMPLATE/bug_report.md
vendored
20
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -4,7 +4,6 @@ about: Create a report to help us improve
|
|||||||
title: ''
|
title: ''
|
||||||
labels: 'Status: Triage, Type: Bug / Error'
|
labels: 'Status: Triage, Type: Bug / Error'
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Describe the bug**
|
**Describe the bug**
|
||||||
@@ -12,6 +11,7 @@ A clear and concise description of what the bug is.
|
|||||||
|
|
||||||
**To Reproduce**
|
**To Reproduce**
|
||||||
Steps to reproduce the behavior:
|
Steps to reproduce the behavior:
|
||||||
|
|
||||||
1. Go to '...'
|
1. Go to '...'
|
||||||
2. Click on '....'
|
2. Click on '....'
|
||||||
3. Scroll down to '....'
|
3. Scroll down to '....'
|
||||||
@@ -24,18 +24,20 @@ A clear and concise description of what you expected to happen.
|
|||||||
If applicable, add screenshots to help explain your problem.
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
**Code Sample**
|
**Code Sample**
|
||||||
If applicable, add the code sample or a link to the [live editor](https://mermaid-js.github.io/mermaid-live-editor).
|
If applicable, add the code sample or a link to the [live editor](https://mermaid.live).
|
||||||
|
|
||||||
**Desktop (please complete the following information):**
|
**Desktop (please complete the following information):**
|
||||||
- OS: [e.g. iOS]
|
|
||||||
- Browser [e.g. chrome, safari]
|
- OS: [e.g. iOS]
|
||||||
- Version [e.g. 22]
|
- Browser [e.g. chrome, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
**Smartphone (please complete the following information):**
|
**Smartphone (please complete the following information):**
|
||||||
- Device: [e.g. iPhone6]
|
|
||||||
- OS: [e.g. iOS8.1]
|
- Device: [e.g. iPhone6]
|
||||||
- Browser [e.g. stock browser, safari]
|
- OS: [e.g. iOS8.1]
|
||||||
- Version [e.g. 22]
|
- Browser [e.g. stock browser, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
**Additional context**
|
**Additional context**
|
||||||
Add any other context about the problem here.
|
Add any other context about the problem here.
|
||||||
|
1
.github/ISSUE_TEMPLATE/feature_request.md
vendored
1
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -4,7 +4,6 @@ about: Suggest an idea for this project
|
|||||||
title: ''
|
title: ''
|
||||||
labels: 'Status: Triage, Type: Enhancement'
|
labels: 'Status: Triage, Type: Enhancement'
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
11
.github/ISSUE_TEMPLATE/question.md
vendored
11
.github/ISSUE_TEMPLATE/question.md
vendored
@@ -4,12 +4,13 @@ about: Get some help from the community.
|
|||||||
title: ''
|
title: ''
|
||||||
labels: 'Help wanted!, Type: Other'
|
labels: 'Help wanted!, Type: Other'
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Help us help you!
|
## Help us help you!
|
||||||
|
|
||||||
You want an answer. Here are some ways to get it quicker:
|
You want an answer. Here are some ways to get it quicker:
|
||||||
* Use a clear and concise title.
|
|
||||||
* Try to pose a clear and concise question.
|
- Use a clear and concise title.
|
||||||
* Include as much, or as little, code as necessary.
|
- Try to pose a clear and concise question.
|
||||||
* Don't be shy to give us some screenshots, if it helps!
|
- Include as much, or as little, code as necessary.
|
||||||
|
- Don't be shy to give us some screenshots, if it helps!
|
||||||
|
2
.github/codeql/codeql-config.yml
vendored
2
.github/codeql/codeql-config.yml
vendored
@@ -1,4 +1,4 @@
|
|||||||
name: "CodeQL config"
|
name: 'CodeQL config'
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- dist
|
- dist
|
||||||
- cypress
|
- cypress
|
||||||
|
31
.github/dependabot.yml
vendored
31
.github/dependabot.yml
vendored
@@ -1,17 +1,18 @@
|
|||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
- package-ecosystem: npm
|
- package-ecosystem: npm
|
||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
directory: /
|
directory: /
|
||||||
target-branch: develop
|
target-branch: develop
|
||||||
schedule:
|
versioning-strategy: increase
|
||||||
interval: weekly
|
schedule:
|
||||||
day: monday
|
interval: weekly
|
||||||
time: "07:00"
|
day: monday
|
||||||
- package-ecosystem: github-actions
|
time: '07:00'
|
||||||
directory: /
|
- package-ecosystem: github-actions
|
||||||
target-branch: develop
|
directory: /
|
||||||
schedule:
|
target-branch: develop
|
||||||
interval: weekly
|
schedule:
|
||||||
day: monday
|
interval: weekly
|
||||||
time: "07:00"
|
day: monday
|
||||||
|
time: '07:00'
|
||||||
|
10
.github/pull_request_template.md
vendored
10
.github/pull_request_template.md
vendored
@@ -1,13 +1,17 @@
|
|||||||
## :bookmark_tabs: Summary
|
## :bookmark_tabs: Summary
|
||||||
|
|
||||||
Brief description about the content of your PR.
|
Brief description about the content of your PR.
|
||||||
|
|
||||||
Resolves #<your issue id here>
|
Resolves #<your issue id here>
|
||||||
|
|
||||||
## :straight_ruler: Design Decisions
|
## :straight_ruler: Design Decisions
|
||||||
|
|
||||||
Describe the way your implementation works or what design decisions you made if applicable.
|
Describe the way your implementation works or what design decisions you made if applicable.
|
||||||
|
|
||||||
### :clipboard: Tasks
|
### :clipboard: Tasks
|
||||||
|
|
||||||
Make sure you
|
Make sure you
|
||||||
- [ ] :book: have read the [contribution guidelines](https://github.com/mermaid-js/mermaid/blob/develop/CONTRIBUTING.md)
|
|
||||||
- [ ] :computer: have added unit/e2e tests (if appropriate)
|
- [ ] :book: have read the [contribution guidelines](https://github.com/mermaid-js/mermaid/blob/develop/CONTRIBUTING.md)
|
||||||
- [ ] :bookmark: targeted `develop` branch
|
- [ ] :computer: have added unit/e2e tests (if appropriate)
|
||||||
|
- [ ] :bookmark: targeted `develop` branch
|
||||||
|
2
.github/stale.yml
vendored
2
.github/stale.yml
vendored
@@ -16,4 +16,4 @@ markComment: >
|
|||||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||||
closeComment: >
|
closeComment: >
|
||||||
This issue has been been automatically closed due to a lack of activity.
|
This issue has been been automatically closed due to a lack of activity.
|
||||||
This is done to maintain a clean list of issues that the community is interested in developing.
|
This is done to maintain a clean list of issues that the community is interested in developing.
|
||||||
|
46
.github/workflows/build.yml
vendored
46
.github/workflows/build.yml
vendored
@@ -18,28 +18,34 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
node-version: [16.x]
|
node-version: [16.x]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Setup Node.js ${{ matrix.node-version }}
|
- uses: pnpm/action-setup@v2
|
||||||
uses: actions/setup-node@v3
|
# uses version from "packageManager" field in package.json
|
||||||
with:
|
|
||||||
cache: yarn
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
|
|
||||||
- name: Install Yarn
|
- name: Setup Node.js ${{ matrix.node-version }}
|
||||||
run: npm i yarn --global
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
cache: pnpm
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
|
||||||
- name: Install Packages
|
- name: Install Packages
|
||||||
run: |
|
run: |
|
||||||
yarn install --frozen-lockfile
|
pnpm install --frozen-lockfile
|
||||||
env:
|
env:
|
||||||
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
||||||
|
|
||||||
- name: Run Build
|
- name: Run Build
|
||||||
run: yarn build
|
run: pnpm run build
|
||||||
|
|
||||||
- name: Upload Build as Artifact
|
- name: Upload Mermaid Build as Artifact
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: mermaid-build
|
||||||
path: dist
|
path: packages/mermaid/dist
|
||||||
|
|
||||||
|
- name: Upload Mermaid Mindmap Build as Artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: mermaid-mindmap-build
|
||||||
|
path: packages/mermaid-mindmap/dist
|
||||||
|
19
.github/workflows/checks.yml
vendored
19
.github/workflows/checks.yml
vendored
@@ -12,13 +12,14 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: check tests
|
name: check tests
|
||||||
|
if: github.repository_owner == 'mermaid-js'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: testomatio/check-tests@stable
|
- uses: testomatio/check-tests@stable
|
||||||
with:
|
with:
|
||||||
framework: cypress
|
framework: cypress
|
||||||
tests: "./cypress/integration/**/**.spec.js"
|
tests: './cypress/e2e/**/**.spec.js'
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
has-tests-label: true
|
has-tests-label: true
|
||||||
|
61
.github/workflows/codeql.yml
vendored
61
.github/workflows/codeql.yml
vendored
@@ -1,12 +1,11 @@
|
|||||||
|
name: 'CodeQL'
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ develop ]
|
branches: [develop]
|
||||||
pull_request:
|
pull_request:
|
||||||
# The branches below must be a subset of the branches above
|
# The branches below must be a subset of the branches above
|
||||||
branches: [ develop ]
|
branches: [develop]
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
@@ -24,40 +23,40 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
language: [ 'javascript' ]
|
language: ['javascript']
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v2
|
||||||
with:
|
with:
|
||||||
config-file: ./.github/codeql/codeql-config.yml
|
config-file: ./.github/codeql/codeql-config.yml
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
# By default, queries listed here will override any specified in a config file.
|
# By default, queries listed here will override any specified in a config file.
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v2
|
uses: github/codeql-action/autobuild@v2
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||||
# and modify them (or add more) to build your code if your project
|
# and modify them (or add more) to build your code if your project
|
||||||
# uses a compiled language
|
# uses a compiled language
|
||||||
|
|
||||||
#- run: |
|
#- run: |
|
||||||
# make bootstrap
|
# make bootstrap
|
||||||
# make release
|
# make release
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v2
|
||||||
|
2
.github/workflows/dependency-review.yml
vendored
2
.github/workflows/dependency-review.yml
vendored
@@ -17,4 +17,4 @@ jobs:
|
|||||||
- name: 'Checkout Repository'
|
- name: 'Checkout Repository'
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
- name: 'Dependency Review'
|
- name: 'Dependency Review'
|
||||||
uses: actions/dependency-review-action@v1
|
uses: actions/dependency-review-action@v2
|
||||||
|
38
.github/workflows/e2e
vendored
38
.github/workflows/e2e
vendored
@@ -1,38 +0,0 @@
|
|||||||
name: E2E
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node-version: [16.x]
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Node.js ${{ matrix.node-version }}
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
cache: yarn
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
|
|
||||||
- name: Install Yarn
|
|
||||||
run: npm i yarn --global
|
|
||||||
|
|
||||||
- name: Install Packages
|
|
||||||
run: |
|
|
||||||
yarn install --frozen-lockfile
|
|
||||||
env:
|
|
||||||
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
|
||||||
|
|
||||||
- name: Run Build
|
|
||||||
run: yarn build
|
|
||||||
|
|
||||||
- name: Run E2E Tests
|
|
||||||
run: yarn e2e
|
|
||||||
env:
|
|
||||||
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
|
72
.github/workflows/e2e-applitools.yml
vendored
Normal file
72
.github/workflows/e2e-applitools.yml
vendored
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
name: E2E (Applitools)
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
# Because we want to limit Applitools usage, so we only want to start this
|
||||||
|
# workflow on rare occasions/manually.
|
||||||
|
inputs:
|
||||||
|
parent_branch:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
default: master
|
||||||
|
description: 'Parent branch to use for PRs'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
env:
|
||||||
|
# on PRs from forks, this secret will always be empty, for security reasons
|
||||||
|
USE_APPLI: ${{ secrets.APPLITOOLS_API_KEY && 'true' || '' }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [16.x]
|
||||||
|
steps:
|
||||||
|
- if: ${{ ! env.USE_APPLI }}
|
||||||
|
name: Warn if not using Applitools
|
||||||
|
run: |
|
||||||
|
echo "::error,title=Not using Applitols::APPLITOOLS_API_KEY is empty, disabling Applitools for this run."
|
||||||
|
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
# uses version from "packageManager" field in package.json
|
||||||
|
|
||||||
|
- name: Setup Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
cache: pnpm
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
|
||||||
|
- name: Install Packages
|
||||||
|
run: |
|
||||||
|
pnpm install --frozen-lockfile
|
||||||
|
env:
|
||||||
|
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
||||||
|
|
||||||
|
- if: ${{ env.USE_APPLI }}
|
||||||
|
name: Notify applitools of new batch
|
||||||
|
# Copied from docs https://applitools.com/docs/topics/integrations/github-integration-ci-setup.html
|
||||||
|
run: curl -L -d '' -X POST "$APPLITOOLS_SERVER_URL/api/externals/github/push?apiKey=$APPLITOOLS_API_KEY&CommitSha=$GITHUB_SHA&BranchName=${APPLITOOLS_BRANCH}$&ParentBranchName=$APPLITOOLS_PARENT_BRANCH"
|
||||||
|
env:
|
||||||
|
# e.g. mermaid-js/mermaid/my-branch
|
||||||
|
APPLITOOLS_BRANCH: ${{ github.repository }}/${{ github.ref_name }}
|
||||||
|
APPLITOOLS_PARENT_BRANCH: ${{ github.inputs.parent_branch }}
|
||||||
|
APPLITOOLS_API_KEY: ${{ secrets.APPLITOOLS_API_KEY }}
|
||||||
|
APPLITOOLS_SERVER_URL: 'https://eyesapi.applitools.com'
|
||||||
|
|
||||||
|
- name: Run E2E Tests
|
||||||
|
run: pnpm run e2e
|
||||||
|
env:
|
||||||
|
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
||||||
|
# Mermaid applitools.config.js uses this to pick batch name.
|
||||||
|
APPLI_BRANCH: ${{ github.ref_name }}
|
||||||
|
APPLITOOLS_BATCH_ID: ${{ github.sha }}
|
||||||
|
# e.g. mermaid-js/mermaid/my-branch
|
||||||
|
APPLITOOLS_BRANCH: ${{ github.repository }}/${{ github.ref_name }}
|
||||||
|
APPLITOOLS_PARENT_BRANCH: ${{ github.inputs.parent_branch }}
|
||||||
|
APPLITOOLS_API_KEY: ${{ secrets.APPLITOOLS_API_KEY }}
|
||||||
|
APPLITOOLS_SERVER_URL: 'https://eyesapi.applitools.com'
|
46
.github/workflows/e2e.yml
vendored
Normal file
46
.github/workflows/e2e.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
name: E2E
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
node-version: [16.x]
|
||||||
|
containers: [1, 2, 3, 4]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
# uses version from "packageManager" field in package.json
|
||||||
|
|
||||||
|
- name: Setup Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
# Need to skip setup if Cypress run is skipped, otherwise an error
|
||||||
|
# is thrown since the pnpm cache step fails
|
||||||
|
if: ${{ ( env.CYPRESS_RECORD_KEY != '' ) || ( matrix.containers == 1 ) }}
|
||||||
|
with:
|
||||||
|
cache: pnpm
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
|
||||||
|
# Install NPM dependencies, cache them correctly
|
||||||
|
# and run all Cypress tests
|
||||||
|
- name: Cypress run
|
||||||
|
uses: cypress-io/github-action@v4
|
||||||
|
# If CYPRESS_RECORD_KEY is set, run in parallel on all containers
|
||||||
|
# Otherwise (e.g. if running from fork), we run on a single container only
|
||||||
|
if: ${{ ( env.CYPRESS_RECORD_KEY != '' ) || ( matrix.containers == 1 ) }}
|
||||||
|
with:
|
||||||
|
start: pnpm run dev
|
||||||
|
wait-on: 'http://localhost:9000'
|
||||||
|
# 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 != '' }}
|
||||||
|
parallel: ${{ secrets.CYPRESS_RECORD_KEY != '' }}
|
||||||
|
env:
|
||||||
|
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
10
.github/workflows/issue-triage.yml
vendored
10
.github/workflows/issue-triage.yml
vendored
@@ -1,6 +1,6 @@
|
|||||||
name: Apply triage label to new issue
|
name: Apply triage label to new issue
|
||||||
|
|
||||||
on:
|
on:
|
||||||
issues:
|
issues:
|
||||||
types: [opened]
|
types: [opened]
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ jobs:
|
|||||||
triage:
|
triage:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: andymckay/labeler@1.0.4
|
- uses: andymckay/labeler@1.0.4
|
||||||
with:
|
with:
|
||||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
repo-token: '${{ secrets.GITHUB_TOKEN }}'
|
||||||
add-labels: "Status: Triage"
|
add-labels: 'Status: Triage'
|
||||||
|
33
.github/workflows/lint.yml
vendored
33
.github/workflows/lint.yml
vendored
@@ -18,22 +18,25 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
node-version: [16.x]
|
node-version: [16.x]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Setup Node.js ${{ matrix.node-version }}
|
- uses: pnpm/action-setup@v2
|
||||||
uses: actions/setup-node@v3
|
# uses version from "packageManager" field in package.json
|
||||||
with:
|
|
||||||
cache: yarn
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
|
|
||||||
- name: Install Yarn
|
- name: Setup Node.js ${{ matrix.node-version }}
|
||||||
run: npm i yarn --global
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
cache: pnpm
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
|
||||||
- name: Install Packages
|
- name: Install Packages
|
||||||
run: |
|
run: |
|
||||||
yarn install --frozen-lockfile
|
pnpm install --frozen-lockfile
|
||||||
env:
|
env:
|
||||||
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
||||||
|
|
||||||
- name: Run Linting
|
- name: Run Linting
|
||||||
run: yarn lint
|
run: pnpm run lint
|
||||||
|
|
||||||
|
- name: Verify Docs
|
||||||
|
run: pnpm run docs:verify
|
||||||
|
45
.github/workflows/release-preview-publish.yml
vendored
45
.github/workflows/release-preview-publish.yml
vendored
@@ -9,29 +9,28 @@ jobs:
|
|||||||
publish:
|
publish:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16.x
|
node-version: 16.x
|
||||||
- name: Install Yarn
|
- name: Install Yarn
|
||||||
run: npm i yarn --global
|
run: npm i yarn --global
|
||||||
|
|
||||||
- name: Install Json
|
- name: Install Json
|
||||||
run: npm i json --global
|
run: npm i json --global
|
||||||
|
|
||||||
- name: Install Packages
|
- name: Install Packages
|
||||||
run: yarn install --frozen-lockfile
|
run: yarn install --frozen-lockfile
|
||||||
|
|
||||||
- name: Publish
|
|
||||||
run: |
|
|
||||||
PREVIEW_VERSION=8
|
|
||||||
VERSION=$(echo ${{github.ref}} | tail -c +20)-preview.$PREVIEW_VERSION
|
|
||||||
echo $VERSION
|
|
||||||
npm version --no-git-tag-version --allow-same-version $VERSION
|
|
||||||
npm set //npm.pkg.github.com/:_authToken ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
npm set registry https://npm.pkg.github.com/mermaid-js
|
|
||||||
json -I -f package.json -e 'this.name="@mermaid-js/mermaid"' # Package name needs to be set to a scoped one because GitHub registry requires this
|
|
||||||
json -I -f package.json -e 'this.repository="git://github.com/mermaid-js/mermaid"' # Repo url needs to have a specific format too
|
|
||||||
npm publish
|
|
||||||
|
|
||||||
|
- name: Publish
|
||||||
|
run: |
|
||||||
|
PREVIEW_VERSION=8
|
||||||
|
VERSION=$(echo ${{github.ref}} | tail -c +20)-preview.$PREVIEW_VERSION
|
||||||
|
echo $VERSION
|
||||||
|
npm version --no-git-tag-version --allow-same-version $VERSION
|
||||||
|
npm set //npm.pkg.github.com/:_authToken ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
npm set registry https://npm.pkg.github.com/mermaid-js
|
||||||
|
json -I -f package.json -e 'this.name="@mermaid-js/mermaid"' # Package name needs to be set to a scoped one because GitHub registry requires this
|
||||||
|
json -I -f package.json -e 'this.repository="git://github.com/mermaid-js/mermaid"' # Repo url needs to have a specific format too
|
||||||
|
npm publish
|
||||||
|
58
.github/workflows/release-publish.yml
vendored
58
.github/workflows/release-publish.yml
vendored
@@ -8,37 +8,37 @@ jobs:
|
|||||||
publish:
|
publish:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: fregante/setup-git-user@v1
|
- uses: fregante/setup-git-user@v1
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16.x
|
node-version: 16.x
|
||||||
- name: Install Yarn
|
- name: Install Yarn
|
||||||
run: npm i yarn --global
|
run: npm i yarn --global
|
||||||
|
|
||||||
- name: Install Json
|
- name: Install Json
|
||||||
run: npm i json --global
|
run: npm i json --global
|
||||||
|
|
||||||
- name: Install Packages
|
- name: Install Packages
|
||||||
run: yarn install --frozen-lockfile
|
run: yarn install --frozen-lockfile
|
||||||
|
|
||||||
- name: Prepare release
|
- name: Prepare release
|
||||||
run: |
|
run: |
|
||||||
VERSION=${GITHUB_REF:10}
|
VERSION=${GITHUB_REF:10}
|
||||||
echo "Preparing release $VERSION"
|
echo "Preparing release $VERSION"
|
||||||
git checkout -t origin/release/$VERSION
|
git checkout -t origin/release/$VERSION
|
||||||
npm version --no-git-tag-version --allow-same-version $VERSION
|
npm version --no-git-tag-version --allow-same-version $VERSION
|
||||||
git add package.json
|
git add package.json
|
||||||
git commit -m "Bump version $VERSION"
|
git commit -m "Bump version $VERSION"
|
||||||
git checkout -t origin/master
|
git checkout -t origin/master
|
||||||
git merge -m "Release $VERSION" --no-ff release/$VERSION
|
git merge -m "Release $VERSION" --no-ff release/$VERSION
|
||||||
git push --no-verify
|
git push --no-verify
|
||||||
|
|
||||||
- name: Publish
|
- name: Publish
|
||||||
run: |
|
run: |
|
||||||
npm set //registry.npmjs.org/:_authToken $NPM_TOKEN
|
npm set //registry.npmjs.org/:_authToken $NPM_TOKEN
|
||||||
npm publish
|
npm publish
|
||||||
env:
|
env:
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
41
.github/workflows/test.yml
vendored
41
.github/workflows/test.yml
vendored
@@ -12,23 +12,32 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
node-version: [16.x]
|
node-version: [16.x]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Setup Node.js ${{ matrix.node-version }}
|
- uses: pnpm/action-setup@v2
|
||||||
uses: actions/setup-node@v3
|
# uses version from "packageManager" field in package.json
|
||||||
with:
|
|
||||||
cache: yarn
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
|
|
||||||
- name: Install Yarn
|
- name: Setup Node.js ${{ matrix.node-version }}
|
||||||
run: npm i yarn --global
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
cache: pnpm
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
|
||||||
- name: Install Packages
|
- name: Install Packages
|
||||||
run: |
|
run: |
|
||||||
yarn install --frozen-lockfile
|
pnpm install --frozen-lockfile
|
||||||
env:
|
env:
|
||||||
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
||||||
|
|
||||||
- name: Run Unit Tests
|
- name: Run Unit Tests
|
||||||
run: |
|
run: |
|
||||||
yarn ci --coverage
|
pnpm run ci --coverage
|
||||||
|
|
||||||
|
- name: Upload Coverage to Coveralls
|
||||||
|
# it feels a bit weird to use @master, but that's what the docs use
|
||||||
|
# (coveralls also doesn't publish a @v1 we can use)
|
||||||
|
# https://github.com/marketplace/actions/coveralls-github-action
|
||||||
|
uses: coverallsapp/github-action@master
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
flag-name: unit
|
||||||
|
8
.github/workflows/unlock-reopened-issues.yml
vendored
8
.github/workflows/unlock-reopened-issues.yml
vendored
@@ -1,6 +1,6 @@
|
|||||||
name: Unlock reopened issue
|
name: Unlock reopened issue
|
||||||
|
|
||||||
on:
|
on:
|
||||||
issues:
|
issues:
|
||||||
types: [reopened]
|
types: [reopened]
|
||||||
|
|
||||||
@@ -8,6 +8,6 @@ jobs:
|
|||||||
triage:
|
triage:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: Dunning-Kruger/unlock-issues@v1
|
- uses: Dunning-Kruger/unlock-issues@v1
|
||||||
with:
|
with:
|
||||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
repo-token: '${{ secrets.GITHUB_TOKEN }}'
|
||||||
|
13
.gitignore
vendored
13
.gitignore
vendored
@@ -12,7 +12,11 @@ token
|
|||||||
|
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
||||||
.vscode/
|
# ignore files in /.vscode/ except for launch.json and extensions.json
|
||||||
|
/.vscode/**
|
||||||
|
!/.vscode/launch.json
|
||||||
|
!/.vscode/extensions.json
|
||||||
|
|
||||||
cypress/platform/current.html
|
cypress/platform/current.html
|
||||||
cypress/platform/experimental.html
|
cypress/platform/experimental.html
|
||||||
local/
|
local/
|
||||||
@@ -22,4 +26,9 @@ Gemfile.lock
|
|||||||
/.vs
|
/.vs
|
||||||
|
|
||||||
cypress/screenshots/
|
cypress/screenshots/
|
||||||
cypress/snapshots/
|
cypress/snapshots/
|
||||||
|
|
||||||
|
# eslint --cache file
|
||||||
|
.eslintcache
|
||||||
|
.tsbuildinfo
|
||||||
|
tsconfig.tsbuildinfo
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
. "$(dirname "$0")/_/husky.sh"
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
yarn pre-commit
|
pnpm run pre-commit
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"*.{js,json,html,md}": [
|
"packages/mermaid/src/docs/**": ["pnpm run docs:build --git"],
|
||||||
"yarn lint:fix"
|
"packages/mermaid/src/docs.mts": ["pnpm run docs:build --git"],
|
||||||
]
|
"*.{ts,js,json,html,md,mts}": ["eslint --fix", "prettier --write"],
|
||||||
}
|
"*.jison": ["pnpm run lint:jison"]
|
||||||
|
}
|
||||||
|
6
.prettierignore
Normal file
6
.prettierignore
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
dist
|
||||||
|
cypress/platform/xss3.html
|
||||||
|
.cache
|
||||||
|
coverage
|
||||||
|
# Autogenerated by PNPM
|
||||||
|
pnpm-lock.yaml
|
@@ -1,8 +1,7 @@
|
|||||||
{
|
{
|
||||||
"endOfLine": "auto",
|
"endOfLine": "auto",
|
||||||
"plugins": [
|
|
||||||
"prettier-plugin-jsdoc"
|
|
||||||
],
|
|
||||||
"printWidth": 100,
|
"printWidth": 100,
|
||||||
"singleQuote": true
|
"singleQuote": true,
|
||||||
}
|
"useTabs": false,
|
||||||
|
"tabWidth": 2
|
||||||
|
}
|
||||||
|
@@ -1,12 +1,8 @@
|
|||||||
{
|
{
|
||||||
"ecmaVersion": 6,
|
"ecmaVersion": 6,
|
||||||
"libs": [
|
"libs": ["browser"],
|
||||||
"browser"
|
|
||||||
],
|
|
||||||
"loadEagerly": [],
|
"loadEagerly": [],
|
||||||
"dontLoad": [
|
"dontLoad": ["node_modules/**"],
|
||||||
"node_modules/**"
|
|
||||||
],
|
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"modules": {},
|
"modules": {},
|
||||||
"es_modules": {},
|
"es_modules": {},
|
||||||
@@ -16,4 +12,4 @@
|
|||||||
"strong": true
|
"strong": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
142
.vite/build.ts
Normal file
142
.vite/build.ts
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
import { build, InlineConfig } from 'vite';
|
||||||
|
import { resolve } from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
import jisonPlugin from './jisonPlugin.js';
|
||||||
|
import pkg from '../package.json' assert { type: 'json' };
|
||||||
|
|
||||||
|
const { dependencies } = pkg;
|
||||||
|
const watch = process.argv.includes('--watch');
|
||||||
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
||||||
|
|
||||||
|
type OutputOptions = Exclude<
|
||||||
|
Exclude<InlineConfig['build'], undefined>['rollupOptions'],
|
||||||
|
undefined
|
||||||
|
>['output'];
|
||||||
|
|
||||||
|
const packageOptions = {
|
||||||
|
mermaid: {
|
||||||
|
name: 'mermaid',
|
||||||
|
packageName: 'mermaid',
|
||||||
|
file: 'mermaid.ts',
|
||||||
|
},
|
||||||
|
'mermaid-mindmap': {
|
||||||
|
name: 'mermaid-mindmap',
|
||||||
|
packageName: 'mermaid-mindmap',
|
||||||
|
file: 'diagram-definition.ts',
|
||||||
|
},
|
||||||
|
'mermaid-mindmap-detector': {
|
||||||
|
name: 'mermaid-mindmap-detector',
|
||||||
|
packageName: 'mermaid-mindmap',
|
||||||
|
file: 'detector.ts',
|
||||||
|
},
|
||||||
|
'mermaid-example-diagram': {
|
||||||
|
name: 'mermaid-example-diagram',
|
||||||
|
packageName: 'mermaid-example-diagram',
|
||||||
|
file: 'diagram-definition.ts',
|
||||||
|
},
|
||||||
|
'mermaid-example-diagram-detector': {
|
||||||
|
name: 'mermaid-example-diagram-detector',
|
||||||
|
packageName: 'mermaid-example-diagram',
|
||||||
|
file: 'detector.ts',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
interface BuildOptions {
|
||||||
|
minify: boolean | 'esbuild';
|
||||||
|
core?: boolean;
|
||||||
|
watch?: boolean;
|
||||||
|
entryName: keyof typeof packageOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions): InlineConfig => {
|
||||||
|
const external = ['require', 'fs', 'path'];
|
||||||
|
console.log(entryName, packageOptions[entryName]);
|
||||||
|
const { name, file, packageName } = packageOptions[entryName];
|
||||||
|
let output: OutputOptions = [
|
||||||
|
{
|
||||||
|
name,
|
||||||
|
format: 'esm',
|
||||||
|
sourcemap: true,
|
||||||
|
entryFileNames: `${name}.esm${minify ? '.min' : ''}.mjs`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name,
|
||||||
|
format: 'umd',
|
||||||
|
sourcemap: true,
|
||||||
|
entryFileNames: `${name}${minify ? '.min' : ''}.js`,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
if (core) {
|
||||||
|
// Core build is used to generate file without bundled dependencies.
|
||||||
|
// This is used by downstream projects to bundle dependencies themselves.
|
||||||
|
external.push(...Object.keys(dependencies));
|
||||||
|
// This needs to be an array. Otherwise vite will build esm & umd with same name and overwrite esm with umd.
|
||||||
|
output = [
|
||||||
|
{
|
||||||
|
name,
|
||||||
|
format: 'esm',
|
||||||
|
sourcemap: true,
|
||||||
|
entryFileNames: `${name}.core.mjs`,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
const config: InlineConfig = {
|
||||||
|
configFile: false,
|
||||||
|
build: {
|
||||||
|
emptyOutDir: false,
|
||||||
|
outDir: resolve(__dirname, `../packages/${packageName}/dist`),
|
||||||
|
lib: {
|
||||||
|
entry: resolve(__dirname, `../packages/${packageName}/src/${file}`),
|
||||||
|
name,
|
||||||
|
// the proper extensions will be added
|
||||||
|
fileName: name,
|
||||||
|
},
|
||||||
|
minify,
|
||||||
|
rollupOptions: {
|
||||||
|
external,
|
||||||
|
output,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.jison', '.js', '.ts', '.json'],
|
||||||
|
},
|
||||||
|
plugins: [jisonPlugin()],
|
||||||
|
};
|
||||||
|
|
||||||
|
if (watch && config.build) {
|
||||||
|
config.build.watch = {
|
||||||
|
include: [
|
||||||
|
'packages/mermaid-mindmap/src/**',
|
||||||
|
'packages/mermaid/src/**',
|
||||||
|
'packages/mermaid-example-diagram/src/**',
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return config;
|
||||||
|
};
|
||||||
|
|
||||||
|
const buildPackage = async (entryName: keyof typeof packageOptions) => {
|
||||||
|
return Promise.allSettled([
|
||||||
|
build(getBuildConfig({ minify: false, entryName })),
|
||||||
|
build(getBuildConfig({ minify: 'esbuild', entryName })),
|
||||||
|
build(getBuildConfig({ minify: false, core: true, entryName })),
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
|
||||||
|
const main = async () => {
|
||||||
|
const packageNames = Object.keys(packageOptions) as (keyof typeof packageOptions)[];
|
||||||
|
for (const pkg of packageNames) {
|
||||||
|
await buildPackage(pkg);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (watch) {
|
||||||
|
build(getBuildConfig({ minify: false, watch, entryName: 'mermaid' }));
|
||||||
|
build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-mindmap' }));
|
||||||
|
build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-example-diagram' }));
|
||||||
|
} else {
|
||||||
|
void main();
|
||||||
|
}
|
17
.vite/jisonPlugin.ts
Normal file
17
.vite/jisonPlugin.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import { transformJison } from './jisonTransformer.js';
|
||||||
|
const fileRegex = /\.(jison)$/;
|
||||||
|
|
||||||
|
export default function jison() {
|
||||||
|
return {
|
||||||
|
name: 'jison',
|
||||||
|
|
||||||
|
transform(src: string, id: string) {
|
||||||
|
if (fileRegex.test(id)) {
|
||||||
|
return {
|
||||||
|
code: transformJison(src),
|
||||||
|
map: null, // provide source map if available
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
17
.vite/jisonTransformer.ts
Normal file
17
.vite/jisonTransformer.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// @ts-ignore No typings for jison
|
||||||
|
import jison from 'jison';
|
||||||
|
|
||||||
|
export const transformJison = (src: string): string => {
|
||||||
|
// @ts-ignore No typings for jison
|
||||||
|
const parser = new jison.Generator(src, {
|
||||||
|
moduleType: 'js',
|
||||||
|
'token-stack': true,
|
||||||
|
});
|
||||||
|
const source = parser.generate({ moduleMain: '() => {}' });
|
||||||
|
const exporter = `
|
||||||
|
parser.parser = parser;
|
||||||
|
export { parser };
|
||||||
|
export default parser;
|
||||||
|
`;
|
||||||
|
return `${source} ${exporter}`;
|
||||||
|
};
|
28
.vite/server.ts
Normal file
28
.vite/server.ts
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import express from 'express';
|
||||||
|
import { createServer as createViteServer } from 'vite';
|
||||||
|
// import { getBuildConfig } from './build';
|
||||||
|
|
||||||
|
async function createServer() {
|
||||||
|
const app = express();
|
||||||
|
|
||||||
|
// Create Vite server in middleware mode
|
||||||
|
const vite = await createViteServer({
|
||||||
|
configFile: './vite.config.ts',
|
||||||
|
server: { middlewareMode: true },
|
||||||
|
appType: 'custom', // don't include Vite's default HTML handling middlewares
|
||||||
|
});
|
||||||
|
|
||||||
|
app.use(express.static('./packages/mermaid/dist'));
|
||||||
|
app.use(express.static('./packages/mermaid-example-diagram/dist'));
|
||||||
|
app.use(express.static('./packages/mermaid-mindmap/dist'));
|
||||||
|
app.use(vite.middlewares);
|
||||||
|
app.use(express.static('demos'));
|
||||||
|
app.use(express.static('cypress/platform'));
|
||||||
|
|
||||||
|
app.listen(9000, () => {
|
||||||
|
console.log(`Listening on http://localhost:9000`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// build(getBuildConfig({ minify: false, watch: true }));
|
||||||
|
createServer();
|
6
.vite/tsconfig.json
Normal file
6
.vite/tsconfig.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"extends": "../tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "ES2022"
|
||||||
|
}
|
||||||
|
}
|
8
.vscode/extensions.json
vendored
Normal file
8
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"zixuanchen.vitest-explorer",
|
||||||
|
"luniclynx.bison"
|
||||||
|
]
|
||||||
|
}
|
17
.vscode/launch.json
vendored
Normal file
17
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug Current Test File",
|
||||||
|
"autoAttachChildProcesses": true,
|
||||||
|
"skipFiles": ["<node_internals>/**", "**/node_modules/**"],
|
||||||
|
"program": "${workspaceRoot}/node_modules/vitest/vitest.mjs",
|
||||||
|
"args": ["run", "${relativeFile}"],
|
||||||
|
"smartStep": true,
|
||||||
|
"console": "integratedTerminal"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@@ -1,25 +0,0 @@
|
|||||||
const { Generator } = require('jison');
|
|
||||||
const validate = require('schema-utils');
|
|
||||||
|
|
||||||
const schema = {
|
|
||||||
title: 'Jison Parser options',
|
|
||||||
type: 'object',
|
|
||||||
properties: {
|
|
||||||
'token-stack': {
|
|
||||||
type: 'boolean',
|
|
||||||
},
|
|
||||||
debug: {
|
|
||||||
type: 'boolean',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
additionalProperties: false,
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = function jisonLoader(source) {
|
|
||||||
const options = this.getOptions();
|
|
||||||
(validate.validate || validate)(schema, options, {
|
|
||||||
name: 'Jison Loader',
|
|
||||||
baseDataPath: 'options',
|
|
||||||
});
|
|
||||||
return new Generator(source, options).generate();
|
|
||||||
};
|
|
@@ -1,45 +0,0 @@
|
|||||||
import { merge, mergeWithCustomize, customizeObject } from 'webpack-merge';
|
|
||||||
import nodeExternals from 'webpack-node-externals';
|
|
||||||
import baseConfig from './webpack.config.base';
|
|
||||||
|
|
||||||
export default (_env, args) => {
|
|
||||||
switch (args.mode) {
|
|
||||||
case 'development':
|
|
||||||
return [
|
|
||||||
baseConfig,
|
|
||||||
merge(baseConfig, {
|
|
||||||
externals: [nodeExternals()],
|
|
||||||
output: {
|
|
||||||
filename: '[name].core.js',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
];
|
|
||||||
case 'production':
|
|
||||||
return [
|
|
||||||
// umd
|
|
||||||
merge(baseConfig, {
|
|
||||||
output: {
|
|
||||||
filename: '[name].min.js',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
// esm
|
|
||||||
mergeWithCustomize({
|
|
||||||
customizeObject: customizeObject({
|
|
||||||
'output.library': 'replace',
|
|
||||||
}),
|
|
||||||
})(baseConfig, {
|
|
||||||
experiments: {
|
|
||||||
outputModule: true,
|
|
||||||
},
|
|
||||||
output: {
|
|
||||||
library: {
|
|
||||||
type: 'module',
|
|
||||||
},
|
|
||||||
filename: '[name].esm.min.mjs',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
];
|
|
||||||
default:
|
|
||||||
throw new Error('No matching configuration was found!');
|
|
||||||
}
|
|
||||||
};
|
|
@@ -1,54 +0,0 @@
|
|||||||
import path from 'path';
|
|
||||||
|
|
||||||
export const resolveRoot = (...relativePath) => path.resolve(__dirname, '..', ...relativePath);
|
|
||||||
|
|
||||||
export default {
|
|
||||||
amd: false, // https://github.com/lodash/lodash/issues/3052
|
|
||||||
target: 'web',
|
|
||||||
entry: {
|
|
||||||
mermaid: './src/mermaid.js',
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
extensions: ['.wasm', '.mjs', '.js', '.json', '.jison'],
|
|
||||||
fallback: {
|
|
||||||
fs: false, // jison generated code requires 'fs'
|
|
||||||
path: require.resolve('path-browserify'),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
output: {
|
|
||||||
path: resolveRoot('./dist'),
|
|
||||||
filename: '[name].js',
|
|
||||||
library: {
|
|
||||||
name: 'mermaid',
|
|
||||||
type: 'umd',
|
|
||||||
export: 'default',
|
|
||||||
},
|
|
||||||
globalObject: 'typeof self !== "undefined" ? self : this',
|
|
||||||
},
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.js$/,
|
|
||||||
include: [resolveRoot('./src'), resolveRoot('./node_modules/dagre-d3-renderer/lib')],
|
|
||||||
use: {
|
|
||||||
loader: 'babel-loader',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// load scss to string
|
|
||||||
test: /\.scss$/,
|
|
||||||
use: ['css-to-string-loader', 'css-loader', 'sass-loader'],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.jison$/,
|
|
||||||
use: {
|
|
||||||
loader: path.resolve(__dirname, './loaders/jison.js'),
|
|
||||||
options: {
|
|
||||||
'token-stack': true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
devtool: 'source-map',
|
|
||||||
};
|
|
@@ -1,37 +0,0 @@
|
|||||||
import baseConfig, { resolveRoot } from './webpack.config.base';
|
|
||||||
import { merge } from 'webpack-merge';
|
|
||||||
|
|
||||||
export default merge(baseConfig, {
|
|
||||||
mode: 'development',
|
|
||||||
entry: {
|
|
||||||
mermaid: './src/mermaid.js',
|
|
||||||
e2e: './cypress/platform/viewer.js',
|
|
||||||
'bundle-test': './cypress/platform/bundle-test.js',
|
|
||||||
},
|
|
||||||
output: {
|
|
||||||
globalObject: 'window',
|
|
||||||
},
|
|
||||||
devServer: {
|
|
||||||
compress: true,
|
|
||||||
port: 9000,
|
|
||||||
static: [
|
|
||||||
{ directory: resolveRoot('cypress', 'platform') },
|
|
||||||
{ directory: resolveRoot('dist') },
|
|
||||||
{ directory: resolveRoot('demos') },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
externals: {
|
|
||||||
mermaid: 'mermaid',
|
|
||||||
},
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.js$/,
|
|
||||||
exclude: /node_modules/,
|
|
||||||
use: {
|
|
||||||
loader: 'babel-loader',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
});
|
|
93
CHANGELOG.md
93
CHANGELOG.md
@@ -1,5 +1,10 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
// TODO: Populate changelog
|
||||||
|
|
||||||
|
- Config has a lot of changes
|
||||||
|
- globalReset resets to `defaultConfig` instead of current config. Use `reset` instead.
|
||||||
|
|
||||||
## [Unreleased](https://github.com/knsv/mermaid/tree/HEAD)
|
## [Unreleased](https://github.com/knsv/mermaid/tree/HEAD)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/8.2.0...HEAD)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/8.2.0...HEAD)
|
||||||
@@ -9,6 +14,7 @@
|
|||||||
- Cross-Site Scripting:DOM - Issue [\#847](https://github.com/knsv/mermaid/issues/847)
|
- Cross-Site Scripting:DOM - Issue [\#847](https://github.com/knsv/mermaid/issues/847)
|
||||||
|
|
||||||
## [8.2.0](https://github.com/knsv/mermaid/tree/8.2.0) (2019-07-17)
|
## [8.2.0](https://github.com/knsv/mermaid/tree/8.2.0) (2019-07-17)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/8.1.0...8.2.0)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/8.1.0...8.2.0)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -26,15 +32,15 @@
|
|||||||
- typora [\#823](https://github.com/knsv/mermaid/issues/823)
|
- typora [\#823](https://github.com/knsv/mermaid/issues/823)
|
||||||
- Maintain the order of the nodes in Flowchart [\#815](https://github.com/knsv/mermaid/issues/815)
|
- Maintain the order of the nodes in Flowchart [\#815](https://github.com/knsv/mermaid/issues/815)
|
||||||
- Overlap, Overflow and cut titles in flowchart [\#814](https://github.com/knsv/mermaid/issues/814)
|
- Overlap, Overflow and cut titles in flowchart [\#814](https://github.com/knsv/mermaid/issues/814)
|
||||||
- How load mermaidApi notejs electron [\#813](https://github.com/knsv/mermaid/issues/813)
|
- How load mermaidApi notejs electron [\#813](https://github.com/knsv/mermaid/issues/813)
|
||||||
- How to set the spacing between the text of the flowchart node and the border? [\#812](https://github.com/knsv/mermaid/issues/812)
|
- How to set the spacing between the text of the flowchart node and the border? [\#812](https://github.com/knsv/mermaid/issues/812)
|
||||||
- no triming participant name and the name following spaces is as another actor in sequence [\#809](https://github.com/knsv/mermaid/issues/809)
|
- no triming participant name and the name following spaces is as another actor in sequence [\#809](https://github.com/knsv/mermaid/issues/809)
|
||||||
- uml Class as shape type [\#807](https://github.com/knsv/mermaid/issues/807)
|
- uml Class as shape type [\#807](https://github.com/knsv/mermaid/issues/807)
|
||||||
- Force-directed graph Layout Style [\#806](https://github.com/knsv/mermaid/issues/806)
|
- Force-directed graph Layout Style [\#806](https://github.com/knsv/mermaid/issues/806)
|
||||||
- how can I start a newLine in FlowChart [\#805](https://github.com/knsv/mermaid/issues/805)
|
- how can I start a newLine in FlowChart [\#805](https://github.com/knsv/mermaid/issues/805)
|
||||||
- UOEProcessShow [\#801](https://github.com/knsv/mermaid/issues/801)
|
- UOEProcessShow [\#801](https://github.com/knsv/mermaid/issues/801)
|
||||||
- Why the use of code blocks? [\#799](https://github.com/knsv/mermaid/issues/799)
|
- Why the use of code blocks? [\#799](https://github.com/knsv/mermaid/issues/799)
|
||||||
- fixing class diagram [\#794](https://github.com/knsv/mermaid/issues/794)
|
- fixing class diagram [\#794](https://github.com/knsv/mermaid/issues/794)
|
||||||
- Autonumber support in sequence diagrams [\#782](https://github.com/knsv/mermaid/issues/782)
|
- Autonumber support in sequence diagrams [\#782](https://github.com/knsv/mermaid/issues/782)
|
||||||
- MomentJS dependency [\#781](https://github.com/knsv/mermaid/issues/781)
|
- MomentJS dependency [\#781](https://github.com/knsv/mermaid/issues/781)
|
||||||
- Feature : Can we color code the flow/arrows [\#766](https://github.com/knsv/mermaid/issues/766)
|
- Feature : Can we color code the flow/arrows [\#766](https://github.com/knsv/mermaid/issues/766)
|
||||||
@@ -60,6 +66,7 @@
|
|||||||
- Adding trapezoid and inverse trapezoid vertex options. [\#741](https://github.com/knsv/mermaid/pull/741) ([adamwulf](https://github.com/adamwulf))
|
- Adding trapezoid and inverse trapezoid vertex options. [\#741](https://github.com/knsv/mermaid/pull/741) ([adamwulf](https://github.com/adamwulf))
|
||||||
|
|
||||||
## [8.1.0](https://github.com/knsv/mermaid/tree/8.1.0) (2019-06-25)
|
## [8.1.0](https://github.com/knsv/mermaid/tree/8.1.0) (2019-06-25)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.5...8.1.0)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.5...8.1.0)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -68,9 +75,9 @@
|
|||||||
- margins around flowchart are not balanced [\#852](https://github.com/knsv/mermaid/issues/852)
|
- margins around flowchart are not balanced [\#852](https://github.com/knsv/mermaid/issues/852)
|
||||||
- Smaller bundles [\#843](https://github.com/knsv/mermaid/issues/843)
|
- Smaller bundles [\#843](https://github.com/knsv/mermaid/issues/843)
|
||||||
- unicode in labels [\#776](https://github.com/knsv/mermaid/issues/776)
|
- unicode in labels [\#776](https://github.com/knsv/mermaid/issues/776)
|
||||||
- Hard-changing drawing of arrows per edge type [\#775](https://github.com/knsv/mermaid/issues/775)
|
- Hard-changing drawing of arrows per edge type [\#775](https://github.com/knsv/mermaid/issues/775)
|
||||||
- SequenceDiagram wrong [\#773](https://github.com/knsv/mermaid/issues/773)
|
- SequenceDiagram wrong [\#773](https://github.com/knsv/mermaid/issues/773)
|
||||||
- Render mermaid on github pages with simple code [\#772](https://github.com/knsv/mermaid/issues/772)
|
- Render mermaid on github pages with simple code [\#772](https://github.com/knsv/mermaid/issues/772)
|
||||||
- FlowChart - large space between text and the image [\#754](https://github.com/knsv/mermaid/issues/754)
|
- FlowChart - large space between text and the image [\#754](https://github.com/knsv/mermaid/issues/754)
|
||||||
- Class Diagram Issues when using Mermaid in Stackedit [\#748](https://github.com/knsv/mermaid/issues/748)
|
- Class Diagram Issues when using Mermaid in Stackedit [\#748](https://github.com/knsv/mermaid/issues/748)
|
||||||
- Multi-platform CI [\#744](https://github.com/knsv/mermaid/issues/744)
|
- Multi-platform CI [\#744](https://github.com/knsv/mermaid/issues/744)
|
||||||
@@ -83,18 +90,18 @@
|
|||||||
- Issue on Dynamic Creation in PHP [\#690](https://github.com/knsv/mermaid/issues/690)
|
- Issue on Dynamic Creation in PHP [\#690](https://github.com/knsv/mermaid/issues/690)
|
||||||
- `click "\#target"` and `click "http://url"` should create regular links [\#689](https://github.com/knsv/mermaid/issues/689)
|
- `click "\#target"` and `click "http://url"` should create regular links [\#689](https://github.com/knsv/mermaid/issues/689)
|
||||||
- Support Chinese punctuation [\#687](https://github.com/knsv/mermaid/issues/687)
|
- Support Chinese punctuation [\#687](https://github.com/knsv/mermaid/issues/687)
|
||||||
- \[Question\] Proper way to install on Mac? [\#681](https://github.com/knsv/mermaid/issues/681)
|
- \[Question\] Proper way to install on Mac? [\#681](https://github.com/knsv/mermaid/issues/681)
|
||||||
- Has Mermaid a graphical interface to make diagrams? [\#668](https://github.com/knsv/mermaid/issues/668)
|
- Has Mermaid a graphical interface to make diagrams? [\#668](https://github.com/knsv/mermaid/issues/668)
|
||||||
- mermaid installation on debian [\#649](https://github.com/knsv/mermaid/issues/649)
|
- mermaid installation on debian [\#649](https://github.com/knsv/mermaid/issues/649)
|
||||||
- "Cannot activate" in sequenceDiagram [\#647](https://github.com/knsv/mermaid/issues/647)
|
- "Cannot activate" in sequenceDiagram [\#647](https://github.com/knsv/mermaid/issues/647)
|
||||||
- Link \("click" statement\) in flowchart does not work in exported SVG [\#646](https://github.com/knsv/mermaid/issues/646)
|
- Link \("click" statement\) in flowchart does not work in exported SVG [\#646](https://github.com/knsv/mermaid/issues/646)
|
||||||
- How to pass styling [\#639](https://github.com/knsv/mermaid/issues/639)
|
- How to pass styling [\#639](https://github.com/knsv/mermaid/issues/639)
|
||||||
- The live editor cant show seq diagram with notes for 8.0.0-alpha.3 [\#638](https://github.com/knsv/mermaid/issues/638)
|
- The live editor cant show seq diagram with notes for 8.0.0-alpha.3 [\#638](https://github.com/knsv/mermaid/issues/638)
|
||||||
- import mermaid.css with ES6 + NPM [\#634](https://github.com/knsv/mermaid/issues/634)
|
- import mermaid.css with ES6 + NPM [\#634](https://github.com/knsv/mermaid/issues/634)
|
||||||
- Actor line cuts through other elements [\#633](https://github.com/knsv/mermaid/issues/633)
|
- Actor line cuts through other elements [\#633](https://github.com/knsv/mermaid/issues/633)
|
||||||
- Graph TD line out of the picture \(left side\) [\#630](https://github.com/knsv/mermaid/issues/630)
|
- Graph TD line out of the picture \(left side\) [\#630](https://github.com/knsv/mermaid/issues/630)
|
||||||
- Flowchart labels appear "cutoff" [\#628](https://github.com/knsv/mermaid/issues/628)
|
- Flowchart labels appear "cutoff" [\#628](https://github.com/knsv/mermaid/issues/628)
|
||||||
- Uncaught TypeError: \_.constant is not a function \(mermaid.js\) [\#626](https://github.com/knsv/mermaid/issues/626)
|
- Uncaught TypeError: \_.constant is not a function \(mermaid.js\) [\#626](https://github.com/knsv/mermaid/issues/626)
|
||||||
- Missing tags and releases for newer versions [\#623](https://github.com/knsv/mermaid/issues/623)
|
- Missing tags and releases for newer versions [\#623](https://github.com/knsv/mermaid/issues/623)
|
||||||
- Mermaid and Leo / Leo Vue [\#622](https://github.com/knsv/mermaid/issues/622)
|
- Mermaid and Leo / Leo Vue [\#622](https://github.com/knsv/mermaid/issues/622)
|
||||||
- mermaidAPI gantt Vue.js [\#621](https://github.com/knsv/mermaid/issues/621)
|
- mermaidAPI gantt Vue.js [\#621](https://github.com/knsv/mermaid/issues/621)
|
||||||
@@ -129,7 +136,7 @@
|
|||||||
- TypeError: Cannot read property 'select' of undefined [\#563](https://github.com/knsv/mermaid/issues/563)
|
- TypeError: Cannot read property 'select' of undefined [\#563](https://github.com/knsv/mermaid/issues/563)
|
||||||
- A little bug [\#557](https://github.com/knsv/mermaid/issues/557)
|
- A little bug [\#557](https://github.com/knsv/mermaid/issues/557)
|
||||||
- Japanese text appears garbled [\#554](https://github.com/knsv/mermaid/issues/554)
|
- Japanese text appears garbled [\#554](https://github.com/knsv/mermaid/issues/554)
|
||||||
- classdiagram not works in mermaid live\_editor [\#553](https://github.com/knsv/mermaid/issues/553)
|
- classdiagram not works in mermaid live_editor [\#553](https://github.com/knsv/mermaid/issues/553)
|
||||||
- font awesome in link text? [\#546](https://github.com/knsv/mermaid/issues/546)
|
- font awesome in link text? [\#546](https://github.com/knsv/mermaid/issues/546)
|
||||||
- q: heard of the cosmogol standard? [\#545](https://github.com/knsv/mermaid/issues/545)
|
- q: heard of the cosmogol standard? [\#545](https://github.com/knsv/mermaid/issues/545)
|
||||||
- Arrow heads missing \(cli, 7.0.3\) [\#544](https://github.com/knsv/mermaid/issues/544)
|
- Arrow heads missing \(cli, 7.0.3\) [\#544](https://github.com/knsv/mermaid/issues/544)
|
||||||
@@ -156,7 +163,7 @@
|
|||||||
- Flowchart edge labels placement [\#490](https://github.com/knsv/mermaid/issues/490)
|
- Flowchart edge labels placement [\#490](https://github.com/knsv/mermaid/issues/490)
|
||||||
- Very different styles when rendering as png vs. svg [\#489](https://github.com/knsv/mermaid/issues/489)
|
- Very different styles when rendering as png vs. svg [\#489](https://github.com/knsv/mermaid/issues/489)
|
||||||
- New editor that supports mermaid: Caret [\#488](https://github.com/knsv/mermaid/issues/488)
|
- New editor that supports mermaid: Caret [\#488](https://github.com/knsv/mermaid/issues/488)
|
||||||
- Gant PNG margin [\#486](https://github.com/knsv/mermaid/issues/486)
|
- Gant PNG margin [\#486](https://github.com/knsv/mermaid/issues/486)
|
||||||
- ReferenceError: window is not defined [\#485](https://github.com/knsv/mermaid/issues/485)
|
- ReferenceError: window is not defined [\#485](https://github.com/knsv/mermaid/issues/485)
|
||||||
- Menu and layout bugs in docs [\#484](https://github.com/knsv/mermaid/issues/484)
|
- Menu and layout bugs in docs [\#484](https://github.com/knsv/mermaid/issues/484)
|
||||||
- Mermaid resets some of the page CSS styles [\#482](https://github.com/knsv/mermaid/issues/482)
|
- Mermaid resets some of the page CSS styles [\#482](https://github.com/knsv/mermaid/issues/482)
|
||||||
@@ -180,7 +187,7 @@
|
|||||||
- Live editor show rendered diagram if syntax invalid [\#415](https://github.com/knsv/mermaid/issues/415)
|
- Live editor show rendered diagram if syntax invalid [\#415](https://github.com/knsv/mermaid/issues/415)
|
||||||
- Live editor sticky sidebar [\#414](https://github.com/knsv/mermaid/issues/414)
|
- Live editor sticky sidebar [\#414](https://github.com/knsv/mermaid/issues/414)
|
||||||
- Linkstyle stroke does not work [\#410](https://github.com/knsv/mermaid/issues/410)
|
- Linkstyle stroke does not work [\#410](https://github.com/knsv/mermaid/issues/410)
|
||||||
- flowchart id's with dots in them .. break links [\#408](https://github.com/knsv/mermaid/issues/408)
|
- flowchart id's with dots in them .. break links [\#408](https://github.com/knsv/mermaid/issues/408)
|
||||||
- Flowchart: Link text beginning with lowercase 'o' causes flowchart to break [\#407](https://github.com/knsv/mermaid/issues/407)
|
- Flowchart: Link text beginning with lowercase 'o' causes flowchart to break [\#407](https://github.com/knsv/mermaid/issues/407)
|
||||||
- Some chinese character will case Safari no responding. [\#405](https://github.com/knsv/mermaid/issues/405)
|
- Some chinese character will case Safari no responding. [\#405](https://github.com/knsv/mermaid/issues/405)
|
||||||
- Cannot center-justify text in nodes? [\#397](https://github.com/knsv/mermaid/issues/397)
|
- Cannot center-justify text in nodes? [\#397](https://github.com/knsv/mermaid/issues/397)
|
||||||
@@ -191,7 +198,7 @@
|
|||||||
- sequence diagram config issue [\#385](https://github.com/knsv/mermaid/issues/385)
|
- sequence diagram config issue [\#385](https://github.com/knsv/mermaid/issues/385)
|
||||||
- How to add newline in the text [\#384](https://github.com/knsv/mermaid/issues/384)
|
- How to add newline in the text [\#384](https://github.com/knsv/mermaid/issues/384)
|
||||||
- PhantomJS crashes on a large graph [\#380](https://github.com/knsv/mermaid/issues/380)
|
- PhantomJS crashes on a large graph [\#380](https://github.com/knsv/mermaid/issues/380)
|
||||||
- Finnish support for class diagrams using plantuml syntax [\#377](https://github.com/knsv/mermaid/issues/377)
|
- Finnish support for class diagrams using plantuml syntax [\#377](https://github.com/knsv/mermaid/issues/377)
|
||||||
- mermaidAPI.render generated different svg code from mermaid.int\(\) [\#374](https://github.com/knsv/mermaid/issues/374)
|
- mermaidAPI.render generated different svg code from mermaid.int\(\) [\#374](https://github.com/knsv/mermaid/issues/374)
|
||||||
- Put your own action on the chart [\#372](https://github.com/knsv/mermaid/issues/372)
|
- Put your own action on the chart [\#372](https://github.com/knsv/mermaid/issues/372)
|
||||||
- when declaring participants the elements are generated twice [\#370](https://github.com/knsv/mermaid/issues/370)
|
- when declaring participants the elements are generated twice [\#370](https://github.com/knsv/mermaid/issues/370)
|
||||||
@@ -226,7 +233,7 @@
|
|||||||
- \[Feature request\] gantt diagram axis format [\#269](https://github.com/knsv/mermaid/issues/269)
|
- \[Feature request\] gantt diagram axis format [\#269](https://github.com/knsv/mermaid/issues/269)
|
||||||
- Not Able to See Labels even htmlLabels:false added [\#268](https://github.com/knsv/mermaid/issues/268)
|
- Not Able to See Labels even htmlLabels:false added [\#268](https://github.com/knsv/mermaid/issues/268)
|
||||||
- npm run watch doesn’t work due missing dependencies [\#266](https://github.com/knsv/mermaid/issues/266)
|
- npm run watch doesn’t work due missing dependencies [\#266](https://github.com/knsv/mermaid/issues/266)
|
||||||
- label out of node [\#262](https://github.com/knsv/mermaid/issues/262)
|
- label out of node [\#262](https://github.com/knsv/mermaid/issues/262)
|
||||||
- IE11 Support issue [\#261](https://github.com/knsv/mermaid/issues/261)
|
- IE11 Support issue [\#261](https://github.com/knsv/mermaid/issues/261)
|
||||||
- mermaid without browser [\#260](https://github.com/knsv/mermaid/issues/260)
|
- mermaid without browser [\#260](https://github.com/knsv/mermaid/issues/260)
|
||||||
- Insufficient capacity of gantt diagrams [\#226](https://github.com/knsv/mermaid/issues/226)
|
- Insufficient capacity of gantt diagrams [\#226](https://github.com/knsv/mermaid/issues/226)
|
||||||
@@ -263,13 +270,14 @@
|
|||||||
- Sequence numbers [\#722](https://github.com/knsv/mermaid/pull/722) ([paulbland](https://github.com/paulbland))
|
- Sequence numbers [\#722](https://github.com/knsv/mermaid/pull/722) ([paulbland](https://github.com/paulbland))
|
||||||
- Add option for right angles [\#721](https://github.com/knsv/mermaid/pull/721) ([paulbland](https://github.com/paulbland))
|
- Add option for right angles [\#721](https://github.com/knsv/mermaid/pull/721) ([paulbland](https://github.com/paulbland))
|
||||||
- Add nested activation classes [\#720](https://github.com/knsv/mermaid/pull/720) ([paulbland](https://github.com/paulbland))
|
- Add nested activation classes [\#720](https://github.com/knsv/mermaid/pull/720) ([paulbland](https://github.com/paulbland))
|
||||||
- wip: class diagram cardinality display [\#705](https://github.com/knsv/mermaid/pull/705) ([Vrixyz](https://github.com/Vrixyz))
|
- wip: class diagram cardinality display [\#705](https://github.com/knsv/mermaid/pull/705) ([Vrixyz](https://github.com/Vrixyz))
|
||||||
- add comments about CSS in config [\#688](https://github.com/knsv/mermaid/pull/688) ([imma90](https://github.com/imma90))
|
- add comments about CSS in config [\#688](https://github.com/knsv/mermaid/pull/688) ([imma90](https://github.com/imma90))
|
||||||
- SequenceDiagram: Add support for multiple alt else statements [\#641](https://github.com/knsv/mermaid/pull/641) ([sechel](https://github.com/sechel))
|
- SequenceDiagram: Add support for multiple alt else statements [\#641](https://github.com/knsv/mermaid/pull/641) ([sechel](https://github.com/sechel))
|
||||||
- fix \#426 - add class .clickable on nodes with click function or link [\#598](https://github.com/knsv/mermaid/pull/598) ([thomasleveil](https://github.com/thomasleveil))
|
- fix \#426 - add class .clickable on nodes with click function or link [\#598](https://github.com/knsv/mermaid/pull/598) ([thomasleveil](https://github.com/thomasleveil))
|
||||||
- Spec fix 1 [\#595](https://github.com/knsv/mermaid/pull/595) ([frankschmitt](https://github.com/frankschmitt))
|
- Spec fix 1 [\#595](https://github.com/knsv/mermaid/pull/595) ([frankschmitt](https://github.com/frankschmitt))
|
||||||
|
|
||||||
## [7.0.5](https://github.com/knsv/mermaid/tree/7.0.5) (2017-09-01)
|
## [7.0.5](https://github.com/knsv/mermaid/tree/7.0.5) (2017-09-01)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.3...7.0.5)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.3...7.0.5)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -293,6 +301,7 @@
|
|||||||
- New documentation - need improved logo [\#216](https://github.com/knsv/mermaid/issues/216)
|
- New documentation - need improved logo [\#216](https://github.com/knsv/mermaid/issues/216)
|
||||||
|
|
||||||
## [7.0.3](https://github.com/knsv/mermaid/tree/7.0.3) (2017-06-04)
|
## [7.0.3](https://github.com/knsv/mermaid/tree/7.0.3) (2017-06-04)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.2...7.0.3)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.2...7.0.3)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -301,6 +310,7 @@
|
|||||||
- Good example of interactivity with mermaidAPI [\#514](https://github.com/knsv/mermaid/issues/514)
|
- Good example of interactivity with mermaidAPI [\#514](https://github.com/knsv/mermaid/issues/514)
|
||||||
|
|
||||||
## [7.0.2](https://github.com/knsv/mermaid/tree/7.0.2) (2017-06-01)
|
## [7.0.2](https://github.com/knsv/mermaid/tree/7.0.2) (2017-06-01)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.0...7.0.2)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.0...7.0.2)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -337,6 +347,7 @@
|
|||||||
- add par statement to sequenceDiagram [\#470](https://github.com/knsv/mermaid/pull/470) ([u-minor](https://github.com/u-minor))
|
- add par statement to sequenceDiagram [\#470](https://github.com/knsv/mermaid/pull/470) ([u-minor](https://github.com/u-minor))
|
||||||
|
|
||||||
## [7.0.0](https://github.com/knsv/mermaid/tree/7.0.0) (2017-01-29)
|
## [7.0.0](https://github.com/knsv/mermaid/tree/7.0.0) (2017-01-29)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/6.0.0...7.0.0)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/6.0.0...7.0.0)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -345,7 +356,7 @@
|
|||||||
- Can not be generated PNG pictures through CLI with Chinese [\#451](https://github.com/knsv/mermaid/issues/451)
|
- Can not be generated PNG pictures through CLI with Chinese [\#451](https://github.com/knsv/mermaid/issues/451)
|
||||||
- Round nodes cannot be styled with CSS classes [\#443](https://github.com/knsv/mermaid/issues/443)
|
- Round nodes cannot be styled with CSS classes [\#443](https://github.com/knsv/mermaid/issues/443)
|
||||||
- webpack gulp UglifyJsPlugin error. [\#440](https://github.com/knsv/mermaid/issues/440)
|
- webpack gulp UglifyJsPlugin error. [\#440](https://github.com/knsv/mermaid/issues/440)
|
||||||
- String concatenation isn't working [\#432](https://github.com/knsv/mermaid/issues/432)
|
- String concatenation isn't working [\#432](https://github.com/knsv/mermaid/issues/432)
|
||||||
- text flow/wrap in actor box of sequence diagram [\#422](https://github.com/knsv/mermaid/issues/422)
|
- text flow/wrap in actor box of sequence diagram [\#422](https://github.com/knsv/mermaid/issues/422)
|
||||||
- Online live editor still use old version [\#402](https://github.com/knsv/mermaid/issues/402)
|
- Online live editor still use old version [\#402](https://github.com/knsv/mermaid/issues/402)
|
||||||
- uncaught TypeError: t.getTransformToElement is not a function [\#401](https://github.com/knsv/mermaid/issues/401)
|
- uncaught TypeError: t.getTransformToElement is not a function [\#401](https://github.com/knsv/mermaid/issues/401)
|
||||||
@@ -372,7 +383,7 @@
|
|||||||
- fix gantt chart cli configuration parsing including functions [\#430](https://github.com/knsv/mermaid/pull/430) ([whyzdev](https://github.com/whyzdev))
|
- fix gantt chart cli configuration parsing including functions [\#430](https://github.com/knsv/mermaid/pull/430) ([whyzdev](https://github.com/whyzdev))
|
||||||
- Uses an empty text node instead of a string for svg group labels [\#429](https://github.com/knsv/mermaid/pull/429) ([daveaglick](https://github.com/daveaglick))
|
- Uses an empty text node instead of a string for svg group labels [\#429](https://github.com/knsv/mermaid/pull/429) ([daveaglick](https://github.com/daveaglick))
|
||||||
- use tspan via d3.textwrap to place actor text in sequence diagram [\#427](https://github.com/knsv/mermaid/pull/427) ([whyzdev](https://github.com/whyzdev))
|
- use tspan via d3.textwrap to place actor text in sequence diagram [\#427](https://github.com/knsv/mermaid/pull/427) ([whyzdev](https://github.com/whyzdev))
|
||||||
- \#422 use foreignObject/div to place actor label in sequence diagram [\#423](https://github.com/knsv/mermaid/pull/423) ([whyzdev](https://github.com/whyzdev))
|
- \#422 use foreignObject/div to place actor label in sequence diagram [\#423](https://github.com/knsv/mermaid/pull/423) ([whyzdev](https://github.com/whyzdev))
|
||||||
- Clarify the need for a CSS stylesheet [\#413](https://github.com/knsv/mermaid/pull/413) ([sifb](https://github.com/sifb))
|
- Clarify the need for a CSS stylesheet [\#413](https://github.com/knsv/mermaid/pull/413) ([sifb](https://github.com/sifb))
|
||||||
- Added hads downstream project [\#412](https://github.com/knsv/mermaid/pull/412) ([sinedied](https://github.com/sinedied))
|
- Added hads downstream project [\#412](https://github.com/knsv/mermaid/pull/412) ([sinedied](https://github.com/sinedied))
|
||||||
- update usage and fix \#273 [\#406](https://github.com/knsv/mermaid/pull/406) ([jinntrance](https://github.com/jinntrance))
|
- update usage and fix \#273 [\#406](https://github.com/knsv/mermaid/pull/406) ([jinntrance](https://github.com/jinntrance))
|
||||||
@@ -387,6 +398,7 @@
|
|||||||
- Fix typo in the sequence diagram documentation [\#369](https://github.com/knsv/mermaid/pull/369) ([ggpasqualino](https://github.com/ggpasqualino))
|
- Fix typo in the sequence diagram documentation [\#369](https://github.com/knsv/mermaid/pull/369) ([ggpasqualino](https://github.com/ggpasqualino))
|
||||||
|
|
||||||
## [6.0.0](https://github.com/knsv/mermaid/tree/6.0.0) (2016-05-29)
|
## [6.0.0](https://github.com/knsv/mermaid/tree/6.0.0) (2016-05-29)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.8...6.0.0)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.8...6.0.0)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -425,9 +437,11 @@
|
|||||||
- Quote phantomPath so that it doesn't fail on window [\#286](https://github.com/knsv/mermaid/pull/286) ([raghur](https://github.com/raghur))
|
- Quote phantomPath so that it doesn't fail on window [\#286](https://github.com/knsv/mermaid/pull/286) ([raghur](https://github.com/raghur))
|
||||||
|
|
||||||
## [0.5.8](https://github.com/knsv/mermaid/tree/0.5.8) (2016-01-27)
|
## [0.5.8](https://github.com/knsv/mermaid/tree/0.5.8) (2016-01-27)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.7...0.5.8)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.7...0.5.8)
|
||||||
|
|
||||||
## [0.5.7](https://github.com/knsv/mermaid/tree/0.5.7) (2016-01-25)
|
## [0.5.7](https://github.com/knsv/mermaid/tree/0.5.7) (2016-01-25)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.6...0.5.7)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.6...0.5.7)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -449,6 +463,7 @@
|
|||||||
- Allow sequenceDiagram participant aliasing [\#265](https://github.com/knsv/mermaid/pull/265) ([gibson042](https://github.com/gibson042))
|
- Allow sequenceDiagram participant aliasing [\#265](https://github.com/knsv/mermaid/pull/265) ([gibson042](https://github.com/gibson042))
|
||||||
|
|
||||||
## [0.5.6](https://github.com/knsv/mermaid/tree/0.5.6) (2015-11-22)
|
## [0.5.6](https://github.com/knsv/mermaid/tree/0.5.6) (2015-11-22)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.5...0.5.6)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.5...0.5.6)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -479,6 +494,7 @@
|
|||||||
- Add a Gitter chat badge to README.md [\#230](https://github.com/knsv/mermaid/pull/230) ([gitter-badger](https://github.com/gitter-badger))
|
- Add a Gitter chat badge to README.md [\#230](https://github.com/knsv/mermaid/pull/230) ([gitter-badger](https://github.com/gitter-badger))
|
||||||
|
|
||||||
## [0.5.5](https://github.com/knsv/mermaid/tree/0.5.5) (2015-10-21)
|
## [0.5.5](https://github.com/knsv/mermaid/tree/0.5.5) (2015-10-21)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.4...0.5.5)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.4...0.5.5)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -490,6 +506,7 @@
|
|||||||
- Fix a typo: crosshead --\> arrowhead [\#228](https://github.com/knsv/mermaid/pull/228) ([tylerlong](https://github.com/tylerlong))
|
- Fix a typo: crosshead --\> arrowhead [\#228](https://github.com/knsv/mermaid/pull/228) ([tylerlong](https://github.com/tylerlong))
|
||||||
|
|
||||||
## [0.5.4](https://github.com/knsv/mermaid/tree/0.5.4) (2015-10-19)
|
## [0.5.4](https://github.com/knsv/mermaid/tree/0.5.4) (2015-10-19)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.3...0.5.4)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.3...0.5.4)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -513,9 +530,11 @@
|
|||||||
- Remove duplicate npm dependencies: d3 and he [\#223](https://github.com/knsv/mermaid/pull/223) ([spect88](https://github.com/spect88))
|
- Remove duplicate npm dependencies: d3 and he [\#223](https://github.com/knsv/mermaid/pull/223) ([spect88](https://github.com/spect88))
|
||||||
|
|
||||||
## [0.5.3](https://github.com/knsv/mermaid/tree/0.5.3) (2015-10-04)
|
## [0.5.3](https://github.com/knsv/mermaid/tree/0.5.3) (2015-10-04)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.2...0.5.3)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.2...0.5.3)
|
||||||
|
|
||||||
## [0.5.2](https://github.com/knsv/mermaid/tree/0.5.2) (2015-10-04)
|
## [0.5.2](https://github.com/knsv/mermaid/tree/0.5.2) (2015-10-04)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.1...0.5.2)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.1...0.5.2)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -526,7 +545,7 @@
|
|||||||
- node feature request [\#211](https://github.com/knsv/mermaid/issues/211)
|
- node feature request [\#211](https://github.com/knsv/mermaid/issues/211)
|
||||||
- Please add prefix for styles [\#208](https://github.com/knsv/mermaid/issues/208)
|
- Please add prefix for styles [\#208](https://github.com/knsv/mermaid/issues/208)
|
||||||
- Bad handling of block arguments [\#207](https://github.com/knsv/mermaid/issues/207)
|
- Bad handling of block arguments [\#207](https://github.com/knsv/mermaid/issues/207)
|
||||||
- please consider port to mac osx [\#203](https://github.com/knsv/mermaid/issues/203)
|
- please consider port to mac osx [\#203](https://github.com/knsv/mermaid/issues/203)
|
||||||
- allow phantomjs \>=1.9.x [\#201](https://github.com/knsv/mermaid/issues/201)
|
- allow phantomjs \>=1.9.x [\#201](https://github.com/knsv/mermaid/issues/201)
|
||||||
- syntax for venn diagrams? [\#200](https://github.com/knsv/mermaid/issues/200)
|
- syntax for venn diagrams? [\#200](https://github.com/knsv/mermaid/issues/200)
|
||||||
- Broken CLI Graphs? \(v0.5.1\) [\#196](https://github.com/knsv/mermaid/issues/196)
|
- Broken CLI Graphs? \(v0.5.1\) [\#196](https://github.com/knsv/mermaid/issues/196)
|
||||||
@@ -555,7 +574,7 @@
|
|||||||
- Last word in comment boxes getting cut off by word wrap library : \( [\#195](https://github.com/knsv/mermaid/issues/195)
|
- Last word in comment boxes getting cut off by word wrap library : \( [\#195](https://github.com/knsv/mermaid/issues/195)
|
||||||
- Escaping characters in sequence diagram [\#193](https://github.com/knsv/mermaid/issues/193)
|
- Escaping characters in sequence diagram [\#193](https://github.com/knsv/mermaid/issues/193)
|
||||||
- SVG foreignObject rendering [\#180](https://github.com/knsv/mermaid/issues/180)
|
- SVG foreignObject rendering [\#180](https://github.com/knsv/mermaid/issues/180)
|
||||||
- IE9 issue [\#179](https://github.com/knsv/mermaid/issues/179)
|
- IE9 issue [\#179](https://github.com/knsv/mermaid/issues/179)
|
||||||
- inoperable in an AMD/requirejs environment: IPython Notebook [\#127](https://github.com/knsv/mermaid/issues/127)
|
- inoperable in an AMD/requirejs environment: IPython Notebook [\#127](https://github.com/knsv/mermaid/issues/127)
|
||||||
- \[Parser\] Hyphen in participant name bring TypeError [\#74](https://github.com/knsv/mermaid/issues/74)
|
- \[Parser\] Hyphen in participant name bring TypeError [\#74](https://github.com/knsv/mermaid/issues/74)
|
||||||
- Support for hyperlink and tooltip [\#34](https://github.com/knsv/mermaid/issues/34)
|
- Support for hyperlink and tooltip [\#34](https://github.com/knsv/mermaid/issues/34)
|
||||||
@@ -569,6 +588,7 @@
|
|||||||
- Update phantomscript.js [\#182](https://github.com/knsv/mermaid/pull/182) ([phairow](https://github.com/phairow))
|
- Update phantomscript.js [\#182](https://github.com/knsv/mermaid/pull/182) ([phairow](https://github.com/phairow))
|
||||||
|
|
||||||
## [0.5.1](https://github.com/knsv/mermaid/tree/0.5.1) (2015-06-21)
|
## [0.5.1](https://github.com/knsv/mermaid/tree/0.5.1) (2015-06-21)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.0...0.5.1)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.0...0.5.1)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -600,6 +620,7 @@
|
|||||||
- Remove moot `version` property from bower.json [\#172](https://github.com/knsv/mermaid/pull/172) ([kkirsche](https://github.com/kkirsche))
|
- Remove moot `version` property from bower.json [\#172](https://github.com/knsv/mermaid/pull/172) ([kkirsche](https://github.com/kkirsche))
|
||||||
|
|
||||||
## [0.5.0](https://github.com/knsv/mermaid/tree/0.5.0) (2015-06-07)
|
## [0.5.0](https://github.com/knsv/mermaid/tree/0.5.0) (2015-06-07)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.4.0...0.5.0)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.4.0...0.5.0)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -634,6 +655,7 @@
|
|||||||
- Use a library-level variable for assigning ids [\#134](https://github.com/knsv/mermaid/pull/134) ([bollwyvl](https://github.com/bollwyvl))
|
- Use a library-level variable for assigning ids [\#134](https://github.com/knsv/mermaid/pull/134) ([bollwyvl](https://github.com/bollwyvl))
|
||||||
|
|
||||||
## [0.4.0](https://github.com/knsv/mermaid/tree/0.4.0) (2015-03-01)
|
## [0.4.0](https://github.com/knsv/mermaid/tree/0.4.0) (2015-03-01)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.5...0.4.0)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.5...0.4.0)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -646,9 +668,11 @@
|
|||||||
- Improve arrows [\#3](https://github.com/knsv/mermaid/issues/3)
|
- Improve arrows [\#3](https://github.com/knsv/mermaid/issues/3)
|
||||||
|
|
||||||
## [0.3.5](https://github.com/knsv/mermaid/tree/0.3.5) (2015-02-15)
|
## [0.3.5](https://github.com/knsv/mermaid/tree/0.3.5) (2015-02-15)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.4...0.3.5)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.4...0.3.5)
|
||||||
|
|
||||||
## [0.3.4](https://github.com/knsv/mermaid/tree/0.3.4) (2015-02-15)
|
## [0.3.4](https://github.com/knsv/mermaid/tree/0.3.4) (2015-02-15)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.3...0.3.4)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.3...0.3.4)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -676,6 +700,7 @@
|
|||||||
- Ignore all files except the license and dist/ folder when installing with Bower. [\#112](https://github.com/knsv/mermaid/pull/112) ([jasonbellamy](https://github.com/jasonbellamy))
|
- Ignore all files except the license and dist/ folder when installing with Bower. [\#112](https://github.com/knsv/mermaid/pull/112) ([jasonbellamy](https://github.com/jasonbellamy))
|
||||||
|
|
||||||
## [0.3.3](https://github.com/knsv/mermaid/tree/0.3.3) (2015-01-25)
|
## [0.3.3](https://github.com/knsv/mermaid/tree/0.3.3) (2015-01-25)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.2...0.3.3)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.2...0.3.3)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -693,6 +718,7 @@
|
|||||||
- fix html tags in example usage [\#100](https://github.com/knsv/mermaid/pull/100) ([deiwin](https://github.com/deiwin))
|
- fix html tags in example usage [\#100](https://github.com/knsv/mermaid/pull/100) ([deiwin](https://github.com/deiwin))
|
||||||
|
|
||||||
## [0.3.2](https://github.com/knsv/mermaid/tree/0.3.2) (2015-01-11)
|
## [0.3.2](https://github.com/knsv/mermaid/tree/0.3.2) (2015-01-11)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.1...0.3.2)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.1...0.3.2)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -712,6 +738,7 @@
|
|||||||
- Template change [\#88](https://github.com/knsv/mermaid/pull/88) ([gkchic](https://github.com/gkchic))
|
- Template change [\#88](https://github.com/knsv/mermaid/pull/88) ([gkchic](https://github.com/gkchic))
|
||||||
|
|
||||||
## [0.3.1](https://github.com/knsv/mermaid/tree/0.3.1) (2015-01-05)
|
## [0.3.1](https://github.com/knsv/mermaid/tree/0.3.1) (2015-01-05)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.0...0.3.1)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.0...0.3.1)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -732,6 +759,7 @@
|
|||||||
- Add apostrophe & 'and' [\#72](https://github.com/knsv/mermaid/pull/72) ([sudodoki](https://github.com/sudodoki))
|
- Add apostrophe & 'and' [\#72](https://github.com/knsv/mermaid/pull/72) ([sudodoki](https://github.com/sudodoki))
|
||||||
|
|
||||||
## [0.3.0](https://github.com/knsv/mermaid/tree/0.3.0) (2014-12-22)
|
## [0.3.0](https://github.com/knsv/mermaid/tree/0.3.0) (2014-12-22)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.16...0.3.0)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.16...0.3.0)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -750,6 +778,7 @@
|
|||||||
- Allow special symbols for direction along with acronyms [\#66](https://github.com/knsv/mermaid/pull/66) ([vijay40](https://github.com/vijay40))
|
- Allow special symbols for direction along with acronyms [\#66](https://github.com/knsv/mermaid/pull/66) ([vijay40](https://github.com/vijay40))
|
||||||
|
|
||||||
## [0.2.16](https://github.com/knsv/mermaid/tree/0.2.16) (2014-12-15)
|
## [0.2.16](https://github.com/knsv/mermaid/tree/0.2.16) (2014-12-15)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.15...0.2.16)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.15...0.2.16)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -768,11 +797,12 @@
|
|||||||
- New grammar will allow statements ending without semicolon as disccused in Issue \#38 [\#63](https://github.com/knsv/mermaid/pull/63) ([vijay40](https://github.com/vijay40))
|
- New grammar will allow statements ending without semicolon as disccused in Issue \#38 [\#63](https://github.com/knsv/mermaid/pull/63) ([vijay40](https://github.com/vijay40))
|
||||||
- Class based styling [\#62](https://github.com/knsv/mermaid/pull/62) ([bjowes](https://github.com/bjowes))
|
- Class based styling [\#62](https://github.com/knsv/mermaid/pull/62) ([bjowes](https://github.com/bjowes))
|
||||||
- Fix typos [\#60](https://github.com/knsv/mermaid/pull/60) ([sublimino](https://github.com/sublimino))
|
- Fix typos [\#60](https://github.com/knsv/mermaid/pull/60) ([sublimino](https://github.com/sublimino))
|
||||||
- Included .DS\_Store in gitignore [\#57](https://github.com/knsv/mermaid/pull/57) ([alvynmcq](https://github.com/alvynmcq))
|
- Included .DS_Store in gitignore [\#57](https://github.com/knsv/mermaid/pull/57) ([alvynmcq](https://github.com/alvynmcq))
|
||||||
- Improves readablity discussed in issue \#38 [\#56](https://github.com/knsv/mermaid/pull/56) ([vijay40](https://github.com/vijay40))
|
- Improves readablity discussed in issue \#38 [\#56](https://github.com/knsv/mermaid/pull/56) ([vijay40](https://github.com/vijay40))
|
||||||
- Added a linting task for gulp [\#43](https://github.com/knsv/mermaid/pull/43) ([serv](https://github.com/serv))
|
- Added a linting task for gulp [\#43](https://github.com/knsv/mermaid/pull/43) ([serv](https://github.com/serv))
|
||||||
|
|
||||||
## [0.2.15](https://github.com/knsv/mermaid/tree/0.2.15) (2014-12-05)
|
## [0.2.15](https://github.com/knsv/mermaid/tree/0.2.15) (2014-12-05)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.14...0.2.15)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.14...0.2.15)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -785,13 +815,15 @@
|
|||||||
|
|
||||||
**Merged pull requests:**
|
**Merged pull requests:**
|
||||||
|
|
||||||
- Include bower\_components/ to .gitignore [\#33](https://github.com/knsv/mermaid/pull/33) ([serv](https://github.com/serv))
|
- Include bower_components/ to .gitignore [\#33](https://github.com/knsv/mermaid/pull/33) ([serv](https://github.com/serv))
|
||||||
- Fixed reference to Git repo. [\#32](https://github.com/knsv/mermaid/pull/32) ([guyellis](https://github.com/guyellis))
|
- Fixed reference to Git repo. [\#32](https://github.com/knsv/mermaid/pull/32) ([guyellis](https://github.com/guyellis))
|
||||||
|
|
||||||
## [0.2.14](https://github.com/knsv/mermaid/tree/0.2.14) (2014-12-03)
|
## [0.2.14](https://github.com/knsv/mermaid/tree/0.2.14) (2014-12-03)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.13...0.2.14)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.13...0.2.14)
|
||||||
|
|
||||||
## [0.2.13](https://github.com/knsv/mermaid/tree/0.2.13) (2014-12-03)
|
## [0.2.13](https://github.com/knsv/mermaid/tree/0.2.13) (2014-12-03)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.10...0.2.13)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.10...0.2.13)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -805,9 +837,11 @@
|
|||||||
- Publish to NPM [\#7](https://github.com/knsv/mermaid/issues/7)
|
- Publish to NPM [\#7](https://github.com/knsv/mermaid/issues/7)
|
||||||
|
|
||||||
## [0.2.10](https://github.com/knsv/mermaid/tree/0.2.10) (2014-12-01)
|
## [0.2.10](https://github.com/knsv/mermaid/tree/0.2.10) (2014-12-01)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.9...0.2.10)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.9...0.2.10)
|
||||||
|
|
||||||
## [0.2.9](https://github.com/knsv/mermaid/tree/0.2.9) (2014-12-01)
|
## [0.2.9](https://github.com/knsv/mermaid/tree/0.2.9) (2014-12-01)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.8...0.2.9)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.8...0.2.9)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -820,9 +854,11 @@
|
|||||||
- Allow unicode chars in labels [\#13](https://github.com/knsv/mermaid/pull/13) ([codebeige](https://github.com/codebeige))
|
- Allow unicode chars in labels [\#13](https://github.com/knsv/mermaid/pull/13) ([codebeige](https://github.com/codebeige))
|
||||||
|
|
||||||
## [0.2.8](https://github.com/knsv/mermaid/tree/0.2.8) (2014-12-01)
|
## [0.2.8](https://github.com/knsv/mermaid/tree/0.2.8) (2014-12-01)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.7...0.2.8)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.7...0.2.8)
|
||||||
|
|
||||||
## [0.2.7](https://github.com/knsv/mermaid/tree/0.2.7) (2014-12-01)
|
## [0.2.7](https://github.com/knsv/mermaid/tree/0.2.7) (2014-12-01)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.6...0.2.7)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.6...0.2.7)
|
||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
@@ -830,9 +866,11 @@
|
|||||||
- Provide parser as separate module [\#4](https://github.com/knsv/mermaid/issues/4)
|
- Provide parser as separate module [\#4](https://github.com/knsv/mermaid/issues/4)
|
||||||
|
|
||||||
## [0.2.6](https://github.com/knsv/mermaid/tree/0.2.6) (2014-11-27)
|
## [0.2.6](https://github.com/knsv/mermaid/tree/0.2.6) (2014-11-27)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.5...0.2.6)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.5...0.2.6)
|
||||||
|
|
||||||
## [0.2.5](https://github.com/knsv/mermaid/tree/0.2.5) (2014-11-27)
|
## [0.2.5](https://github.com/knsv/mermaid/tree/0.2.5) (2014-11-27)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.4...0.2.5)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.4...0.2.5)
|
||||||
|
|
||||||
**Merged pull requests:**
|
**Merged pull requests:**
|
||||||
@@ -840,24 +878,29 @@
|
|||||||
- Added new shapes! [\#1](https://github.com/knsv/mermaid/pull/1) ([bjowes](https://github.com/bjowes))
|
- Added new shapes! [\#1](https://github.com/knsv/mermaid/pull/1) ([bjowes](https://github.com/bjowes))
|
||||||
|
|
||||||
## [0.2.4](https://github.com/knsv/mermaid/tree/0.2.4) (2014-11-25)
|
## [0.2.4](https://github.com/knsv/mermaid/tree/0.2.4) (2014-11-25)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.3...0.2.4)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.3...0.2.4)
|
||||||
|
|
||||||
## [0.2.3](https://github.com/knsv/mermaid/tree/0.2.3) (2014-11-24)
|
## [0.2.3](https://github.com/knsv/mermaid/tree/0.2.3) (2014-11-24)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.2...0.2.3)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.2...0.2.3)
|
||||||
|
|
||||||
## [0.2.2](https://github.com/knsv/mermaid/tree/0.2.2) (2014-11-22)
|
## [0.2.2](https://github.com/knsv/mermaid/tree/0.2.2) (2014-11-22)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.1...0.2.2)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.1...0.2.2)
|
||||||
|
|
||||||
## [0.2.1](https://github.com/knsv/mermaid/tree/0.2.1) (2014-11-22)
|
## [0.2.1](https://github.com/knsv/mermaid/tree/0.2.1) (2014-11-22)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.0...0.2.1)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.0...0.2.1)
|
||||||
|
|
||||||
## [0.2.0](https://github.com/knsv/mermaid/tree/0.2.0) (2014-11-22)
|
## [0.2.0](https://github.com/knsv/mermaid/tree/0.2.0) (2014-11-22)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.1...0.2.0)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.1...0.2.0)
|
||||||
|
|
||||||
## [0.1.1](https://github.com/knsv/mermaid/tree/0.1.1) (2014-11-17)
|
## [0.1.1](https://github.com/knsv/mermaid/tree/0.1.1) (2014-11-17)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.0...0.1.1)
|
[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.0...0.1.1)
|
||||||
|
|
||||||
## [0.1.0](https://github.com/knsv/mermaid/tree/0.1.0) (2014-11-16)
|
## [0.1.0](https://github.com/knsv/mermaid/tree/0.1.0) (2014-11-16)
|
||||||
|
|
||||||
|
\* _This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)_
|
||||||
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
|
||||||
|
128
CODE_OF_CONDUCT.md
Normal file
128
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
|
nationality, personal appearance, race, religion, or sexual identity
|
||||||
|
and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to a positive environment for our
|
||||||
|
community include:
|
||||||
|
|
||||||
|
- Demonstrating empathy and kindness toward other people
|
||||||
|
- Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
- Giving and gracefully accepting constructive feedback
|
||||||
|
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
|
and learning from the experience
|
||||||
|
- Focusing on what is best not just for us as individuals, but for the
|
||||||
|
overall community
|
||||||
|
|
||||||
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
|
- The use of sexualized language or imagery, and sexual attention or
|
||||||
|
advances of any kind
|
||||||
|
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
- Public or private harassment
|
||||||
|
- Publishing others' private information, such as a physical or email
|
||||||
|
address, without their explicit permission
|
||||||
|
- Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
|
acceptable behavior and will take appropriate and fair corrective action in
|
||||||
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||||
|
or harmful.
|
||||||
|
|
||||||
|
Community leaders have the right and responsibility to remove, edit, or reject
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
|
decisions when appropriate.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
an individual is officially representing the community in public spaces.
|
||||||
|
Examples of representing our community include using an official e-mail address,
|
||||||
|
posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported to the community leaders responsible for enforcement at security@mermaid.live
|
||||||
|
.
|
||||||
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
|
reporter of any incident.
|
||||||
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||||
|
unprofessional or unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing
|
||||||
|
clarity around the nature of the violation and an explanation of why the
|
||||||
|
behavior was inappropriate. A public apology may be requested.
|
||||||
|
|
||||||
|
### 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series
|
||||||
|
of actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
|
interaction with the people involved, including unsolicited interaction with
|
||||||
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
|
like social media. Violating these terms may lead to a temporary or
|
||||||
|
permanent ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
sustained inappropriate behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public
|
||||||
|
communication with the community for a specified period of time. No public or
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
### 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within
|
||||||
|
the community.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
|
version 2.0, available at
|
||||||
|
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||||
|
enforcement ladder](https://github.com/mozilla/diversity).
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
|
https://www.contributor-covenant.org/faq. Translations are available at
|
||||||
|
https://www.contributor-covenant.org/translations.
|
@@ -6,13 +6,22 @@ So you want to help? That's great!
|
|||||||
|
|
||||||
Here are a few things to know to get you started on the right path.
|
Here are a few things to know to get you started on the right path.
|
||||||
|
|
||||||
|
## Development Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone git@github.com:mermaid-js/mermaid.git
|
||||||
|
cd mermaid
|
||||||
|
pnpm install
|
||||||
|
pnpm test
|
||||||
|
```
|
||||||
|
|
||||||
## Committing code
|
## Committing code
|
||||||
|
|
||||||
We make all changes via pull requests. As we have many pull requests from developers new to mermaid, the current approach is to have *knsv, Knut Sveidqvist* as a main reviewer of changes and merging pull requests. More precisely like this:
|
We make all changes via pull requests. As we have many pull requests from developers new to mermaid, the current approach is to have _knsv, Knut Sveidqvist_ as a main reviewer of changes and merging pull requests. More precisely like this:
|
||||||
|
|
||||||
* Large changes reviewed by knsv or other developer asked to review by knsv
|
- Large changes reviewed by knsv or other developer asked to review by knsv
|
||||||
* Smaller low-risk changes like dependencies, documentation etc can be merged by active collaborators
|
- Smaller low-risk changes like dependencies, documentation, etc. can be merged by active collaborators
|
||||||
* documentation (updates to the docs folder is also allowed via direct commits)
|
- Documentation (updates to the `src/docs` folder is also allowed via direct commits)
|
||||||
|
|
||||||
To commit code, create a branch, let it start with the type like feature or bug followed by the issue number for reference and some describing text.
|
To commit code, create a branch, let it start with the type like feature or bug followed by the issue number for reference and some describing text.
|
||||||
|
|
||||||
@@ -28,12 +37,28 @@ Another:
|
|||||||
|
|
||||||
Less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator.
|
Less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator.
|
||||||
|
|
||||||
The documentation is located in the `docs` directory and published using GitHub Pages.
|
The documentation is written in **Markdown**. For more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax).
|
||||||
The documentation site is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.
|
|
||||||
|
|
||||||
The documentation is written in Markdown, for more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax).
|
### Documentation source files are in /src/docs
|
||||||
|
|
||||||
If you want to preview the documentation site on your machine, you need to install `docsify-cli`:
|
The source files for the project documentation are located in the `/src/docs` directory. This is where you should make changes.
|
||||||
|
The files under `/src/docs` are processed to generate the published documentation, and the resulting files are put into the `/docs` directory.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
classDef default fill:#fff,color:black,stroke:black
|
||||||
|
|
||||||
|
source["files in /src/docs\n(changes should be done here)"] -- automatic processing\nto generate the final documentation--> published["files in /docs\ndisplayed on the official documentation site"]
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
**_DO NOT CHANGE FILES IN `/docs`_**
|
||||||
|
|
||||||
|
### The official documentation site
|
||||||
|
|
||||||
|
**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.**
|
||||||
|
|
||||||
|
If you want to preview the whole documentation site on your machine, you need to install `docsify-cli`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ npm i docsify-cli -g
|
$ npm i docsify-cli -g
|
||||||
@@ -78,17 +103,18 @@ This is important so that, if someone else does a change to the grammar that doe
|
|||||||
|
|
||||||
This tests the rendering and visual appearance of the diagram. This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks!
|
This tests the rendering and visual appearance of the diagram. This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks!
|
||||||
|
|
||||||
To start working with the e2e tests, run `yarn dev` to start the dev server, after that start cypress by running `cypress open` in the mermaid folder. (Make sure you have path to cypress in order, the binary is located in node_modules/.bin).
|
To start working with the e2e tests, run `pnpm run dev` to start the dev server, after that start cypress by running `pnpm exec cypress open` in the mermaid folder.
|
||||||
|
|
||||||
The rendering tests are very straightforward to create. There is a function imgSnapshotTest. This function takes a diagram in text form, the mermaid options and renders that diagram in cypress.
|
The rendering tests are very straightforward to create. There is a function imgSnapshotTest. This function takes a diagram in text form, the mermaid options and renders that diagram in cypress.
|
||||||
|
|
||||||
When running in ci it will take a snapshot of the rendered diagram and compare it with the snapshot from last build and flag for review it if it differs.
|
When running in ci it will take a snapshot of the rendered diagram and compare it with the snapshot from last build and flag for review it if it differs.
|
||||||
|
|
||||||
This is what a rendering test looks like:
|
This is what a rendering test looks like:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
it('should render forks and joins', () => {
|
it('should render forks and joins', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
stateDiagram
|
stateDiagram
|
||||||
state fork_state <<fork>>
|
state fork_state <<fork>>
|
||||||
[*] --> fork_state
|
[*] --> fork_state
|
||||||
@@ -101,20 +127,23 @@ This is what a rendering test looks like:
|
|||||||
join_state --> State4
|
join_state --> State4
|
||||||
State4 --> [*]
|
State4 --> [*]
|
||||||
`,
|
`,
|
||||||
{ logLevel: 0 }
|
{ logLevel: 0 }
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### **Add documentation for it**
|
### **Add documentation for it**
|
||||||
|
|
||||||
Finally, if it is not in the documentation, no one will know about it and then **no one will use it**. Wouldn't that be sad? With all the effort that was put into the feature?
|
Finally, if it is not in the documentation, no one will know about it and then **no one will use it**. Wouldn't that be sad? With all the effort that was put into the feature?
|
||||||
|
|
||||||
The docs are located in the docs folder and are ofc written in markdown. Just pick the right section and start typing. If you want to add to the structure as in adding a new section and new file you do that via the _navbar.md.
|
The source files for documentation are in `/src/docs` and are written in markdown. Just pick the right section and start typing. See the [Committing Documentation](#committing-documentation) section for more about how the documentation is generated.
|
||||||
|
|
||||||
The changes in master is reflected in https://mermaid-js.github.io/mermaid/ once released the updates are committed to https://mermaid-js.github.io/#/
|
#### Adding to or changing the documentation organization
|
||||||
|
|
||||||
|
If you want to add a new section or change the organization (structure), then you need to make sure to **change the side navigation** in `src/docs/_sidebar.md`.
|
||||||
|
|
||||||
|
When changes are committed and then released, they become part of the `master` branch and become part of the published documentation on https://mermaid-js.github.io/mermaid/
|
||||||
|
|
||||||
## Last words
|
## Last words
|
||||||
|
|
||||||
@@ -122,5 +151,4 @@ Don't get daunted if it is hard in the beginning. We have a great community with
|
|||||||
|
|
||||||
[Join our slack community if you want closer contact!](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE)
|
[Join our slack community if you want closer contact!](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE)
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2014 - 2021 Knut Sveidqvist
|
Copyright (c) 2014 - 2022 Knut Sveidqvist
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
194
README.md
194
README.md
@@ -1,13 +1,28 @@
|
|||||||
# mermaid [](https://travis-ci.org/mermaid-js/mermaid) [](https://www.npmjs.com/package/mermaid) [](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE)
|
# mermaid [](https://travis-ci.org/mermaid-js/mermaid) [](https://www.npmjs.com/package/mermaid) [](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE)
|
||||||
|
|
||||||
|
# Whoa, whats going on here?
|
||||||
|
|
||||||
|
We are transforming the Mermaid repository to a so called mono-repo. This is a part of the effort to decouple the diagrams from the core of mermaid. This will:
|
||||||
|
|
||||||
|
- Make it possible to select which diagrams to include on your site
|
||||||
|
- Open up for lazy loading
|
||||||
|
- Make it possible to add diagrams from outside of the Mermaid repository
|
||||||
|
- Separate the release flow between different diagrams and the Mermaid core
|
||||||
|
|
||||||
|
As such be aware of some changes..
|
||||||
|
|
||||||
|
# We use pnpm now
|
||||||
|
|
||||||
|
# The source code has moved
|
||||||
|
|
||||||
|
It is now located in the src folder for each respective package located as subfolders in packages.
|
||||||
|
|
||||||
English | [简体中文](./README.zh-CN.md)
|
English | [简体中文](./README.zh-CN.md)
|
||||||
|
|
||||||
<img src="./img/header.png" alt="" />
|
<img src="./img/header.png" alt="" />
|
||||||
|
|
||||||
:trophy: **Mermaid was nominated and won the [JS Open Source Awards (2019)](https://osawards.com/javascript/2019) in the category "The most exciting use of technology"!!!**
|
:trophy: **Mermaid was nominated and won the [JS Open Source Awards (2019)](https://osawards.com/javascript/2019) in the category "The most exciting use of technology"!!!**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Thanks to all involved, people committing pull requests, people answering questions! 🙏**
|
**Thanks to all involved, people committing pull requests, people answering questions! 🙏**
|
||||||
|
|
||||||
<a href="https://mermaid-js.github.io/mermaid/landing/"><img src="https://github.com/mermaid-js/mermaid/blob/master/docs/img/book-banner-post-release.jpg" alt="Explore Mermaid.js in depth, with real-world examples, tips & tricks from the creator... The first official book on Mermaid is available for purchase. Check it out!"></a>
|
<a href="https://mermaid-js.github.io/mermaid/landing/"><img src="https://github.com/mermaid-js/mermaid/blob/master/docs/img/book-banner-post-release.jpg" alt="Explore Mermaid.js in depth, with real-world examples, tips & tricks from the creator... The first official book on Mermaid is available for purchase. Check it out!"></a>
|
||||||
@@ -15,43 +30,41 @@ English | [简体中文](./README.zh-CN.md)
|
|||||||
## About
|
## About
|
||||||
|
|
||||||
<!-- <Main description> -->
|
<!-- <Main description> -->
|
||||||
Mermaid is a Javascript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of Mermaid is to help documentation catch up with development.
|
|
||||||
|
Mermaid is a JavaScript-based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of Mermaid is to help documentation catch up with development.
|
||||||
|
|
||||||
> Doc-Rot is a Catch-22 that Mermaid helps to solve.
|
> Doc-Rot is a Catch-22 that Mermaid helps to solve.
|
||||||
|
|
||||||
Diagramming and documentation costs precious developer time and gets outdated quickly.
|
Diagramming and documentation costs precious developer time and gets outdated quickly.
|
||||||
But not having diagrams or docs ruins productivity and hurts organizational learning.<br/>
|
But not having diagrams or docs ruins productivity and hurts organizational learning.<br/>
|
||||||
Mermaid addresses this problem by enabling users to create easily modifiable diagrams, it can also be made part of production scripts (and other pieces of code).<br/>
|
Mermaid addresses this problem by enabling users to create easily modifiable diagrams. It can also be made part of production scripts (and other pieces of code).<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
Mermaid allows even non-programmers to easily create detailed diagrams through the [Mermaid Live Editor](https://mermaid-js.github.io/mermaid-live-editor/).<br/>
|
Mermaid allows even non-programmers to easily create detailed diagrams through the [Mermaid Live Editor](https://mermaid.live/).<br/>
|
||||||
[Tutorials](./docs/Tutorials.md) has video tutorials.
|
[Tutorials](./docs/Tutorials.md) has video tutorials.
|
||||||
Use Mermaid with your favorite applications, check out the list of [Integrations and Usages of Mermaid](./docs/integrations.md).
|
Use Mermaid with your favorite applications, check out the list of [Integrations and Usages of Mermaid](./docs/integrations.md).
|
||||||
|
|
||||||
You can also use Mermaid within [GitHub](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/) as well many of your other favorite applications, check out the list of [Integrations and Usages of Mermaid](./docs/integrations.md).
|
You can also use Mermaid within [GitHub](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/) as well many of your other favorite applications—check out the list of [Integrations and Usages of Mermaid](./docs/integrations.md).
|
||||||
|
|
||||||
For a more detailed introduction to Mermaid and some of its more basic uses, look to the [Beginner's Guide](./docs/n00b-overview.md), [Usage](./docs/usage.md) and [Tutorials](./docs/Tutorials.md).
|
For a more detailed introduction to Mermaid and some of its more basic uses, look to the [Beginner's Guide](./docs/n00b-overview.md), [Usage](./docs/usage.md) and [Tutorials](./docs/Tutorials.md).
|
||||||
|
|
||||||
🌐 [CDN](https://unpkg.com/mermaid/) | 📖 [Documentation](https://mermaidjs.github.io) | 🙌 [Contribution](https://github.com/mermaid-js/mermaid/blob/develop/CONTRIBUTING.md) | 📜 [Changelog](./docs/CHANGELOG.md)
|
🌐 [CDN](https://unpkg.com/mermaid/) | 📖 [Documentation](https://mermaidjs.github.io) | 🙌 [Contribution](https://github.com/mermaid-js/mermaid/blob/develop/CONTRIBUTING.md) | 📜 [Changelog](./docs/CHANGELOG.md)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
In our release process we rely heavily on visual regression tests using [applitools](https://applitools.com/). Applitools is a great service which has been easy to use and integrate with our tests.
|
In our release process we rely heavily on visual regression tests using [applitools](https://applitools.com/). Applitools is a great service which has been easy to use and integrate with our tests.
|
||||||
|
|
||||||
|
|
||||||
<a href="https://applitools.com/">
|
<a href="https://applitools.com/">
|
||||||
<svg width="170" height="32" viewBox="0 0 170 32" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="a" maskUnits="userSpaceOnUse" x="27" y="0" width="143" height="32"><path fill-rule="evenodd" clip-rule="evenodd" d="M27.732.227h141.391v31.19H27.733V.227z" fill="#fff"></path></mask><g mask="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M153.851 22.562l1.971-3.298c1.291 1.219 3.837 2.402 5.988 2.402 1.971 0 2.903-.753 2.903-1.829 0-2.832-10.253-.502-10.253-7.313 0-2.904 2.51-5.45 7.099-5.45 2.904 0 5.234 1.004 6.955 2.367l-1.829 3.226c-1.039-1.075-3.011-2.008-5.126-2.008-1.65 0-2.725.717-2.725 1.685 0 2.546 10.289.395 10.289 7.386 0 3.19-2.724 5.52-7.528 5.52-3.012 0-5.916-1.003-7.744-2.688zm-5.7 2.259h4.553V.908h-4.553v23.913zm-6.273-8.676c0-2.689-1.578-5.02-4.446-5.02-2.832 0-4.409 2.331-4.409 5.02 0 2.724 1.577 5.055 4.409 5.055 2.868 0 4.446-2.33 4.446-5.055zm-13.588 0c0-4.912 3.442-9.07 9.142-9.07 5.736 0 9.178 4.158 9.178 9.07 0 4.911-3.442 9.106-9.178 9.106-5.7 0-9.142-4.195-9.142-9.106zm-5.628 0c0-2.689-1.577-5.02-4.445-5.02-2.832 0-4.41 2.331-4.41 5.02 0 2.724 1.578 5.055 4.41 5.055 2.868 0 4.445-2.33 4.445-5.055zm-13.587 0c0-4.912 3.441-9.07 9.142-9.07 5.736 0 9.178 4.158 9.178 9.07 0 4.911-3.442 9.106-9.178 9.106-5.701 0-9.142-4.195-9.142-9.106zm-8.425 4.338v-8.999h-2.868v-3.98h2.868V2.773h4.553v4.733h3.514v3.979h-3.514v7.78c0 1.111.574 1.936 1.578 1.936.681 0 1.326-.251 1.577-.538l.968 3.478c-.681.609-1.9 1.11-3.8 1.11-3.191 0-4.876-1.648-4.876-4.767zm-8.962 4.338h4.553V7.505h-4.553V24.82zm-.43-21.905a2.685 2.685 0 012.688-2.69c1.506 0 2.725 1.184 2.725 2.69a2.724 2.724 0 01-2.725 2.724c-1.47 0-2.688-1.219-2.688-2.724zM84.482 24.82h4.553V.908h-4.553v23.913zm-6.165-8.676c0-2.976-1.793-5.02-4.41-5.02-1.47 0-3.119.825-3.908 1.973v6.094c.753 1.111 2.438 2.008 3.908 2.008 2.617 0 4.41-2.044 4.41-5.055zm-8.318 6.453v8.82h-4.553V7.504H70v2.187c1.327-1.685 3.227-2.618 5.342-2.618 4.446 0 7.672 3.299 7.672 9.07 0 5.773-3.226 9.107-7.672 9.107-2.043 0-3.907-.86-5.342-2.653zm-10.718-6.453c0-2.976-1.793-5.02-4.41-5.02-1.47 0-3.119.825-3.908 1.973v6.094c.753 1.111 2.438 2.008 3.908 2.008 2.617 0 4.41-2.044 4.41-5.055zm-8.318 6.453v8.82H46.41V7.504h4.553v2.187c1.327-1.685 3.227-2.618 5.342-2.618 4.446 0 7.672 3.299 7.672 9.07 0 5.773-3.226 9.107-7.672 9.107-2.043 0-3.908-.86-5.342-2.653zm-11.758-1.936V18.51c-.753-1.004-2.187-1.542-3.657-1.542-1.793 0-3.263.968-3.263 2.617 0 1.65 1.47 2.582 3.263 2.582 1.47 0 2.904-.502 3.657-1.506zm0 4.159v-1.829c-1.183 1.434-3.227 2.259-5.485 2.259-2.761 0-5.988-1.864-5.988-5.736 0-4.087 3.227-5.593 5.988-5.593 2.33 0 4.337.753 5.485 2.115V13.85c0-1.756-1.506-2.904-3.8-2.904-1.829 0-3.55.717-4.984 2.044L28.63 9.8c2.115-1.901 4.84-2.726 7.564-2.726 3.98 0 7.6 1.578 7.6 6.561v11.186h-4.588z" fill="#00A298"></path></g><path fill-rule="evenodd" clip-rule="evenodd" d="M14.934 16.177c0 1.287-.136 2.541-.391 3.752-1.666-1.039-3.87-2.288-6.777-3.752 2.907-1.465 5.11-2.714 6.777-3.753.255 1.211.39 2.466.39 3.753m4.6-7.666V4.486a78.064 78.064 0 01-4.336 3.567c-1.551-2.367-3.533-4.038-6.14-5.207C11.1 4.658 12.504 6.7 13.564 9.262 5.35 15.155 0 16.177 0 16.177s5.35 1.021 13.564 6.915c-1.06 2.563-2.463 4.603-4.507 6.415 2.607-1.169 4.589-2.84 6.14-5.207a77.978 77.978 0 014.336 3.568v-4.025s-.492-.82-2.846-2.492c.6-1.611.93-3.354.93-5.174a14.8 14.8 0 00-.93-5.174c2.354-1.673 2.846-2.492 2.846-2.492" fill="#00A298"></path></svg>
|
<svg width="170" height="32" viewBox="0 0 170 32" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="a" maskUnits="userSpaceOnUse" x="27" y="0" width="143" height="32"><path fill-rule="evenodd" clip-rule="evenodd" d="M27.732.227h141.391v31.19H27.733V.227z" fill="#fff"></path></mask><g mask="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M153.851 22.562l1.971-3.298c1.291 1.219 3.837 2.402 5.988 2.402 1.971 0 2.903-.753 2.903-1.829 0-2.832-10.253-.502-10.253-7.313 0-2.904 2.51-5.45 7.099-5.45 2.904 0 5.234 1.004 6.955 2.367l-1.829 3.226c-1.039-1.075-3.011-2.008-5.126-2.008-1.65 0-2.725.717-2.725 1.685 0 2.546 10.289.395 10.289 7.386 0 3.19-2.724 5.52-7.528 5.52-3.012 0-5.916-1.003-7.744-2.688zm-5.7 2.259h4.553V.908h-4.553v23.913zm-6.273-8.676c0-2.689-1.578-5.02-4.446-5.02-2.832 0-4.409 2.331-4.409 5.02 0 2.724 1.577 5.055 4.409 5.055 2.868 0 4.446-2.33 4.446-5.055zm-13.588 0c0-4.912 3.442-9.07 9.142-9.07 5.736 0 9.178 4.158 9.178 9.07 0 4.911-3.442 9.106-9.178 9.106-5.7 0-9.142-4.195-9.142-9.106zm-5.628 0c0-2.689-1.577-5.02-4.445-5.02-2.832 0-4.41 2.331-4.41 5.02 0 2.724 1.578 5.055 4.41 5.055 2.868 0 4.445-2.33 4.445-5.055zm-13.587 0c0-4.912 3.441-9.07 9.142-9.07 5.736 0 9.178 4.158 9.178 9.07 0 4.911-3.442 9.106-9.178 9.106-5.701 0-9.142-4.195-9.142-9.106zm-8.425 4.338v-8.999h-2.868v-3.98h2.868V2.773h4.553v4.733h3.514v3.979h-3.514v7.78c0 1.111.574 1.936 1.578 1.936.681 0 1.326-.251 1.577-.538l.968 3.478c-.681.609-1.9 1.11-3.8 1.11-3.191 0-4.876-1.648-4.876-4.767zm-8.962 4.338h4.553V7.505h-4.553V24.82zm-.43-21.905a2.685 2.685 0 012.688-2.69c1.506 0 2.725 1.184 2.725 2.69a2.724 2.724 0 01-2.725 2.724c-1.47 0-2.688-1.219-2.688-2.724zM84.482 24.82h4.553V.908h-4.553v23.913zm-6.165-8.676c0-2.976-1.793-5.02-4.41-5.02-1.47 0-3.119.825-3.908 1.973v6.094c.753 1.111 2.438 2.008 3.908 2.008 2.617 0 4.41-2.044 4.41-5.055zm-8.318 6.453v8.82h-4.553V7.504H70v2.187c1.327-1.685 3.227-2.618 5.342-2.618 4.446 0 7.672 3.299 7.672 9.07 0 5.773-3.226 9.107-7.672 9.107-2.043 0-3.907-.86-5.342-2.653zm-10.718-6.453c0-2.976-1.793-5.02-4.41-5.02-1.47 0-3.119.825-3.908 1.973v6.094c.753 1.111 2.438 2.008 3.908 2.008 2.617 0 4.41-2.044 4.41-5.055zm-8.318 6.453v8.82H46.41V7.504h4.553v2.187c1.327-1.685 3.227-2.618 5.342-2.618 4.446 0 7.672 3.299 7.672 9.07 0 5.773-3.226 9.107-7.672 9.107-2.043 0-3.908-.86-5.342-2.653zm-11.758-1.936V18.51c-.753-1.004-2.187-1.542-3.657-1.542-1.793 0-3.263.968-3.263 2.617 0 1.65 1.47 2.582 3.263 2.582 1.47 0 2.904-.502 3.657-1.506zm0 4.159v-1.829c-1.183 1.434-3.227 2.259-5.485 2.259-2.761 0-5.988-1.864-5.988-5.736 0-4.087 3.227-5.593 5.988-5.593 2.33 0 4.337.753 5.485 2.115V13.85c0-1.756-1.506-2.904-3.8-2.904-1.829 0-3.55.717-4.984 2.044L28.63 9.8c2.115-1.901 4.84-2.726 7.564-2.726 3.98 0 7.6 1.578 7.6 6.561v11.186h-4.588z" fill="#00A298"></path></g><path fill-rule="evenodd" clip-rule="evenodd" d="M14.934 16.177c0 1.287-.136 2.541-.391 3.752-1.666-1.039-3.87-2.288-6.777-3.752 2.907-1.465 5.11-2.714 6.777-3.753.255 1.211.39 2.466.39 3.753m4.6-7.666V4.486a78.064 78.064 0 01-4.336 3.567c-1.551-2.367-3.533-4.038-6.14-5.207C11.1 4.658 12.504 6.7 13.564 9.262 5.35 15.155 0 16.177 0 16.177s5.35 1.021 13.564 6.915c-1.06 2.563-2.463 4.603-4.507 6.415 2.607-1.169 4.589-2.84 6.14-5.207a77.978 77.978 0 014.336 3.568v-4.025s-.492-.82-2.846-2.492c.6-1.611.93-3.354.93-5.174a14.8 14.8 0 00-.93-5.174c2.354-1.673 2.846-2.492 2.846-2.492" fill="#00A298"></path></svg>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
||||||
<!-- </Main description> -->
|
<!-- </Main description> -->
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
__The following are some examples of the diagrams, charts and graphs that can be made using Mermaid. Click here jump into the [text syntax](https://mermaid-js.github.io/mermaid/#/n00b-syntaxReference).__
|
**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.github.io/mermaid/#/n00b-syntaxReference).**
|
||||||
|
|
||||||
<!-- <Flowchart> -->
|
<!-- <Flowchart> -->
|
||||||
|
|
||||||
### Flowchart [<a href="https://mermaid-js.github.io/mermaid/#/flowchart">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ3JhcGggVERcbiAgICBBW0hhcmRdIC0tPnxUZXh0fCBCKFJvdW5kKVxuICAgIEIgLS0-IEN7RGVjaXNpb259XG4gICAgQyAtLT58T25lfCBEW1Jlc3VsdCAxXVxuICAgIEMgLS0-fFR3b3wgRVtSZXN1bHQgMl0iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
|
### Flowchart [<a href="https://mermaid-js.github.io/mermaid/#/flowchart">docs</a> - <a href="https://mermaid.live/edit#pako:eNpNkMtqwzAQRX9FzKqFJK7t1km8KDQP6KJQSLOLvZhIY1tgS0GWmgbb_165IaFaiXvOFTPqgGtBkEJR6zOv0Fj2scsU8-ft8I5G5Gw6fe339GN7tnrYaafE45WvRsLW3Ya4bKVWwzVe_xU-FfVsc9hR62rLwvw_2591z7Y3FuUwgYZMg1L4ObrRzMBW1FAGqb8KKtCLGWRq8Ko7CbS0FdJqA2mBdUsTQGf110VxSK1xdJM2EkuDzd2qNQrypQ7s5TQuXcrW-ie5VoUsx9yZ2seVtac2DYIRz0ppK3eccd0ErRTjD1XfyyRIomSBUUzJPMaXOBb8GC4XRfQcFmL-FEYIwzD8AggvcHE">live editor</a>]
|
||||||
|
|
||||||
```
|
```
|
||||||
flowchart LR
|
flowchart LR
|
||||||
@@ -61,6 +74,7 @@ B --> C{Decision}
|
|||||||
C -->|One| D[Result 1]
|
C -->|One| D[Result 1]
|
||||||
C -->|Two| E[Result 2]
|
C -->|Two| E[Result 2]
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
flowchart LR
|
flowchart LR
|
||||||
|
|
||||||
@@ -70,8 +84,7 @@ C -->|One| D[Result 1]
|
|||||||
C -->|Two| E[Result 2]
|
C -->|Two| E[Result 2]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Sequence diagram [<a href="https://mermaid-js.github.io/mermaid/#/sequenceDiagram">docs</a> - <a href="https://mermaid.live/edit#pako:eNo9kMluwjAQhl_F-AykQMuSA1WrbuLQQ3v1ZbAnsVXHkzrjVhHi3etQwKfRv4w-z0FqMihL2eF3wqDxyUEdoVHhwTuNk-12RzaU4g29JzHMY2HpV0BE0VO6V8ETtdkGz1Zb1F8qiPyG5LX84mrLAmpwoWNh-5a0pWCiAxUwGBXeiVHEU4oq8V_6AHYUwAu2lLLTjVQ4bc1rT2yleI0IfJG320faZ9ABbk-Jz3hZnFxBduR9L2oiM5Jj2WBswJn8-cMArSRbbFDJMo8GK0ielVThmKOpNcD4bBxTlGUFvsOxhMT02QctS44JL6HzAS-iJzCYOwfJfTscunYd542aQuXqQU_RZ9kyt11ZFIM9rR3btJ9qaorOGQuR7c9mWSznyzXMF7hcLeBusTB6P9usq_ntrDKrm9kc5PF4_AMJE56Z">live editor</a>]
|
||||||
### Sequence diagram [<a href="https://mermaid-js.github.io/mermaid/#/sequenceDiagram">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG5BbGljZS0-PkpvaG46IEhlbGxvIEpvaG4sIGhvdyBhcmUgeW91P1xubG9vcCBIZWFsdGhjaGVja1xuICAgIEpvaG4tPj5Kb2huOiBGaWdodCBhZ2FpbnN0IGh5cG9jaG9uZHJpYVxuZW5kXG5Ob3RlIHJpZ2h0IG9mIEpvaG46IFJhdGlvbmFsIHRob3VnaHRzIVxuSm9obi0tPj5BbGljZTogR3JlYXQhXG5Kb2huLT4-Qm9iOiBIb3cgYWJvdXQgeW91P1xuQm9iLS0-PkpvaG46IEpvbGx5IGdvb2QhIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
|
|
||||||
|
|
||||||
```
|
```
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
@@ -84,6 +97,7 @@ John-->>Alice: Great!
|
|||||||
John->>Bob: How about you?
|
John->>Bob: How about you?
|
||||||
Bob-->>John: Jolly good!
|
Bob-->>John: Jolly good!
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>John: Hello John, how are you?
|
Alice->>John: Hello John, how are you?
|
||||||
@@ -96,7 +110,7 @@ John->>Bob: How about you?
|
|||||||
Bob-->>John: Jolly good!
|
Bob-->>John: Jolly good!
|
||||||
```
|
```
|
||||||
|
|
||||||
### Gantt chart [<a href="https://mermaid-js.github.io/mermaid/#/gantt">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ2FudHRcbnNlY3Rpb24gU2VjdGlvblxuQ29tcGxldGVkIDpkb25lLCAgICBkZXMxLCAyMDE0LTAxLTA2LDIwMTQtMDEtMDhcbkFjdGl2ZSAgICAgICAgOmFjdGl2ZSwgIGRlczIsIDIwMTQtMDEtMDcsIDNkXG5QYXJhbGxlbCAxICAgOiAgICAgICAgIGRlczMsIGFmdGVyIGRlczEsIDFkXG5QYXJhbGxlbCAyICAgOiAgICAgICAgIGRlczQsIGFmdGVyIGRlczEsIDFkXG5QYXJhbGxlbCAzICAgOiAgICAgICAgIGRlczUsIGFmdGVyIGRlczMsIDFkXG5QYXJhbGxlbCA0ICAgOiAgICAgICAgIGRlczYsIGFmdGVyIGRlczQsIDFkIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
|
### Gantt chart [<a href="https://mermaid-js.github.io/mermaid/#/gantt">docs</a> - <a href="https://mermaid.live/edit#pako:eNp90cGOgyAQBuBXIZxtFbG29bbZ3fsmvXKZylhJEAyOTZrGd1_sto3xsHMBhu-HBO689hp5xS_giJQbsCbjHTv9jcp9-q63SKhZpb3DhMXSOIiE5ZkoNpnYZGXynh6U-4jBK7JnVfBYJo9QvgjtEya1cj8QwFq0TMz4lZqxTBg0hOF5m1jifI2Lf7Bc490CyxUu1rhc4GLGPOEdhg6Mjq92V44xxanFDhWv4lRjA6MlxZWbIh17DYTf2pAPvGrADphwGMmfbq7mFYURX-jLwCVA91bWg8YYunO69Y8vMgPFI2vvGnOZ-2Owsd0S9UOVpvP29mKoHc_b2nfpYHQLgdrrsUzLvDxALrHcS9hJqeuzOB6avBCN3mciBz5N0y_wxZ0J">live editor</a>]
|
||||||
|
|
||||||
```
|
```
|
||||||
gantt
|
gantt
|
||||||
@@ -108,6 +122,7 @@ gantt
|
|||||||
Parallel 3 : des5, after des3, 1d
|
Parallel 3 : des5, after des3, 1d
|
||||||
Parallel 4 : des6, after des4, 1d
|
Parallel 4 : des6, after des4, 1d
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
gantt
|
gantt
|
||||||
section Section
|
section Section
|
||||||
@@ -119,31 +134,13 @@ gantt
|
|||||||
Parallel 4 : des6, after des4, 1d
|
Parallel 4 : des6, after des4, 1d
|
||||||
```
|
```
|
||||||
|
|
||||||
### Class diagram [<a href="https://mermaid-js.github.io/mermaid/#/classDiagram">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiY2xhc3NEaWFncmFtXG5DbGFzczAxIDx8LS0gQXZlcnlMb25nQ2xhc3MgOiBDb29sXG48PGludGVyZmFjZT4-IENsYXNzMDFcbkNsYXNzMDkgLS0-IEMyIDogV2hlcmUgYW0gaT9cbkNsYXNzMDkgLS0qIEMzXG5DbGFzczA5IC0tfD4gQ2xhc3MwN1xuQ2xhc3MwNyA6IGVxdWFscygpXG5DbGFzczA3IDogT2JqZWN0W10gZWxlbWVudERhdGFcbkNsYXNzMDEgOiBzaXplKClcbkNsYXNzMDEgOiBpbnQgY2hpbXBcbkNsYXNzMDEgOiBpbnQgZ29yaWxsYVxuY2xhc3MgQ2xhc3MxMCB7XG4gID4-c2VydmljZT4-XG4gIGludCBpZFxuICBzaXplKClcbn0iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
|
### Class diagram [<a href="https://mermaid-js.github.io/mermaid/#/classDiagram">docs</a> - <a href="https://mermaid.live/edit#pako:eNpdkTFPwzAQhf-K5QlQ2zQJJG1UBaGWDYmBgYEwXO1LYuTEwXYqlZL_jt02asXm--690zvfgTLFkWaUSTBmI6DS0BTt2lfzkKx-p1PytEO9f1FtdaQkI2ulZNGuVqK1qEtgmOfk7BitSzKdOhg59XuNGgk0RDxed-_IOr6uf8cZ6UhTZ8bvHqS5ub1mr9svZPbjk6DEBlu7AQuXyBkx4gcvDk9cUMJq0XT_YaW0kNK5j-ufAoRzcihaQvLcoN4Jv50vvVxw_xrnD3RCG9QNCO4-8OgpqK1dpoJm7smxhF7agp6kfcfB4jMXVmmalW4tnFDorXrbt4xmVvc4is53GKFUwNF5DtTuO3-sShjrJjLVlqLyvNfS4drazmRB4NuzSti6386YagIjeA3a1rtlEiRRsoAoxiSN4SGOOduGy0UZ3YclT-dhBHQYhj8dc6_I">live editor</a>]
|
||||||
|
|
||||||
```
|
```
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01 <|-- AveryLongClass : Cool
|
Class01 <|-- AveryLongClass : Cool
|
||||||
<<Interface>> Class01
|
<<Interface>> Class01
|
||||||
Class09 --> C2 : Where am i?
|
Class09 --> C2 : Where am I?
|
||||||
Class09 --* C3
|
|
||||||
Class09 --|> Class07
|
|
||||||
Class07 : equals()
|
|
||||||
Class07 : Object[] elementData
|
|
||||||
Class01 : size()
|
|
||||||
Class01 : int chimp
|
|
||||||
Class01 : int gorilla
|
|
||||||
class Class10 {
|
|
||||||
<<service>>
|
|
||||||
int id
|
|
||||||
size()
|
|
||||||
}
|
|
||||||
```
|
|
||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
Class01 <|-- AveryLongClass : Cool
|
|
||||||
<<Interface>> Class01
|
|
||||||
Class09 --> C2 : Where am i?
|
|
||||||
Class09 --* C3
|
Class09 --* C3
|
||||||
Class09 --|> Class07
|
Class09 --|> Class07
|
||||||
Class07 : equals()
|
Class07 : equals()
|
||||||
@@ -158,7 +155,27 @@ class Class10 {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### State diagram [<a href="https://mermaid-js.github.io/mermaid/#/stateDiagram">docs</a> - <a href="https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtLXYyXG4gICAgWypdIC0tPiBTdGlsbFxuICAgIFN0aWxsIC0tPiBbKl1cbiAgICBTdGlsbCAtLT4gTW92aW5nXG4gICAgTW92aW5nIC0tPiBTdGlsbFxuICAgIE1vdmluZyAtLT4gQ3Jhc2hcbiAgICBDcmFzaCAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQiLCJ0aGVtZVZhcmlhYmxlcyI6eyJiYWNrZ3JvdW5kIjoid2hpdGUiLCJwcmltYXJ5Q29sb3IiOiIjRUNFQ0ZGIiwic2Vjb25kYXJ5Q29sb3IiOiIjZmZmZmRlIiwidGVydGlhcnlDb2xvciI6ImhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpIiwicHJpbWFyeUJvcmRlckNvbG9yIjoiaHNsKDI0MCwgNjAlLCA4Ni4yNzQ1MDk4MDM5JSkiLCJzZWNvbmRhcnlCb3JkZXJDb2xvciI6ImhzbCg2MCwgNjAlLCA4My41Mjk0MTE3NjQ3JSkiLCJ0ZXJ0aWFyeUJvcmRlckNvbG9yIjoiaHNsKDgwLCA2MCUsIDg2LjI3NDUwOTgwMzklKSIsInByaW1hcnlUZXh0Q29sb3IiOiIjMTMxMzAwIiwic2Vjb25kYXJ5VGV4dENvbG9yIjoiIzAwMDAyMSIsInRlcnRpYXJ5VGV4dENvbG9yIjoicmdiKDkuNTAwMDAwMDAwMSwgOS41MDAwMDAwMDAxLCA5LjUwMDAwMDAwMDEpIiwibGluZUNvbG9yIjoiIzMzMzMzMyIsInRleHRDb2xvciI6IiMzMzMiLCJtYWluQmtnIjoiI0VDRUNGRiIsInNlY29uZEJrZyI6IiNmZmZmZGUiLCJib3JkZXIxIjoiIzkzNzBEQiIsImJvcmRlcjIiOiIjYWFhYTMzIiwiYXJyb3doZWFkQ29sb3IiOiIjMzMzMzMzIiwiZm9udEZhbWlseSI6IlwidHJlYnVjaGV0IG1zXCIsIHZlcmRhbmEsIGFyaWFsIiwiZm9udFNpemUiOiIxNnB4IiwibGFiZWxCYWNrZ3JvdW5kIjoiI2U4ZThlOCIsIm5vZGVCa2ciOiIjRUNFQ0ZGIiwibm9kZUJvcmRlciI6IiM5MzcwREIiLCJjbHVzdGVyQmtnIjoiI2ZmZmZkZSIsImNsdXN0ZXJCb3JkZXIiOiIjYWFhYTMzIiwiZGVmYXVsdExpbmtDb2xvciI6IiMzMzMzMzMiLCJ0aXRsZUNvbG9yIjoiIzMzMyIsImVkZ2VMYWJlbEJhY2tncm91bmQiOiIjZThlOGU4IiwiYWN0b3JCb3JkZXIiOiJoc2woMjU5LjYyNjE2ODIyNDMsIDU5Ljc3NjUzNjMxMjglLCA4Ny45MDE5NjA3ODQzJSkiLCJhY3RvckJrZyI6IiNFQ0VDRkYiLCJhY3RvclRleHRDb2xvciI6ImJsYWNrIiwiYWN0b3JMaW5lQ29sb3IiOiJncmV5Iiwic2lnbmFsQ29sb3IiOiIjMzMzIiwic2lnbmFsVGV4dENvbG9yIjoiIzMzMyIsImxhYmVsQm94QmtnQ29sb3IiOiIjRUNFQ0ZGIiwibGFiZWxCb3hCb3JkZXJDb2xvciI6ImhzbCgyNTkuNjI2MTY4MjI0MywgNTkuNzc2NTM2MzEyOCUsIDg3LjkwMTk2MDc4NDMlKSIsImxhYmVsVGV4dENvbG9yIjoiYmxhY2siLCJsb29wVGV4dENvbG9yIjoiYmxhY2siLCJub3RlQm9yZGVyQ29sb3IiOiIjYWFhYTMzIiwibm90ZUJrZ0NvbG9yIjoiI2ZmZjVhZCIsIm5vdGVUZXh0Q29sb3IiOiJibGFjayIsImFjdGl2YXRpb25Cb3JkZXJDb2xvciI6IiM2NjYiLCJhY3RpdmF0aW9uQmtnQ29sb3IiOiIjZjRmNGY0Iiwic2VxdWVuY2VOdW1iZXJDb2xvciI6IndoaXRlIiwic2VjdGlvbkJrZ0NvbG9yIjoicmdiYSgxMDIsIDEwMiwgMjU1LCAwLjQ5KSIsImFsdFNlY3Rpb25Ca2dDb2xvciI6IndoaXRlIiwic2VjdGlvbkJrZ0NvbG9yMiI6IiNmZmY0MDAiLCJ0YXNrQm9yZGVyQ29sb3IiOiIjNTM0ZmJjIiwidGFza0JrZ0NvbG9yIjoiIzhhOTBkZCIsInRhc2tUZXh0TGlnaHRDb2xvciI6IndoaXRlIiwidGFza1RleHRDb2xvciI6IndoaXRlIiwidGFza1RleHREYXJrQ29sb3IiOiJibGFjayIsInRhc2tUZXh0T3V0c2lkZUNvbG9yIjoiYmxhY2siLCJ0YXNrVGV4dENsaWNrYWJsZUNvbG9yIjoiIzAwMzE2MyIsImFjdGl2ZVRhc2tCb3JkZXJDb2xvciI6IiM1MzRmYmMiLCJhY3RpdmVUYXNrQmtnQ29sb3IiOiIjYmZjN2ZmIiwiZ3JpZENvbG9yIjoibGlnaHRncmV5IiwiZG9uZVRhc2tCa2dDb2xvciI6ImxpZ2h0Z3JleSIsImRvbmVUYXNrQm9yZGVyQ29sb3IiOiJncmV5IiwiY3JpdEJvcmRlckNvbG9yIjoiI2ZmODg4OCIsImNyaXRCa2dDb2xvciI6InJlZCIsInRvZGF5TGluZUNvbG9yIjoicmVkIiwibGFiZWxDb2xvciI6ImJsYWNrIiwiZXJyb3JCa2dDb2xvciI6IiM1NTIyMjIiLCJlcnJvclRleHRDb2xvciI6IiM1NTIyMjIiLCJjbGFzc1RleHQiOiIjMTMxMzAwIiwiZmlsbFR5cGUwIjoiI0VDRUNGRiIsImZpbGxUeXBlMSI6IiNmZmZmZGUiLCJmaWxsVHlwZTIiOiJoc2woMzA0LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTMiOiJoc2woMTI0LCAxMDAlLCA5My41Mjk0MTE3NjQ3JSkiLCJmaWxsVHlwZTQiOiJoc2woMTc2LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTUiOiJoc2woLTQsIDEwMCUsIDkzLjUyOTQxMTc2NDclKSIsImZpbGxUeXBlNiI6ImhzbCg4LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTciOiJoc2woMTg4LCAxMDAlLCA5My41Mjk0MTE3NjQ3JSkifX0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9">live editor</a>]
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
Class01 <|-- AveryLongClass : Cool
|
||||||
|
<<Interface>> Class01
|
||||||
|
Class09 --> C2 : Where am I?
|
||||||
|
Class09 --* C3
|
||||||
|
Class09 --|> Class07
|
||||||
|
Class07 : equals()
|
||||||
|
Class07 : Object[] elementData
|
||||||
|
Class01 : size()
|
||||||
|
Class01 : int chimp
|
||||||
|
Class01 : int gorilla
|
||||||
|
class Class10 {
|
||||||
|
<<service>>
|
||||||
|
int id
|
||||||
|
size()
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### State diagram [<a href="https://mermaid-js.github.io/mermaid/#/stateDiagram">docs</a> - <a href="https://mermaid.live/edit#pako:eNpdkEFvgzAMhf8K8nEqpYSNthx22Xbcqcexg0sCiZQQlDhIFeK_L8A6TfXp6fOz9ewJGssFVOAJSbwr7ByadGR1n8T6evpO0vQ1uZDSekOrXGFsPqJPO6q-2-imH8f_0TeHXm50lfelsAMjnEHFY6xpMdRAUhhRQxUlFy0GTTXU_RytYeAx-AdXZB1ULWovdoCB7OXWN1CRC-Ju-r3uz6UtchGHJqDbsPygU57iysb2reoWHpyOWBINvsqypb3vFMlw3TfWZF5xiY7keC6zkpUnZIUojwW-FAVvrvn51LLnvOXHQ84Q5nn-AVtLcwk">live editor</a>]
|
||||||
|
|
||||||
```
|
```
|
||||||
stateDiagram-v2
|
stateDiagram-v2
|
||||||
[*] --> Still
|
[*] --> Still
|
||||||
@@ -168,6 +185,7 @@ Moving --> Still
|
|||||||
Moving --> Crash
|
Moving --> Crash
|
||||||
Crash --> [*]
|
Crash --> [*]
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
stateDiagram-v2
|
stateDiagram-v2
|
||||||
[*] --> Still
|
[*] --> Still
|
||||||
@@ -178,24 +196,26 @@ Moving --> Crash
|
|||||||
Crash --> [*]
|
Crash --> [*]
|
||||||
```
|
```
|
||||||
|
|
||||||
### Pie chart [<a href="https://mermaid-js.github.io/mermaid/#/pie">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoicGllXG5cIkRvZ3NcIiA6IDQyLjk2XG5cIkNhdHNcIiA6IDUwLjA1XG5cIlJhdHNcIiA6IDEwLjAxIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
|
### Pie chart [<a href="https://mermaid-js.github.io/mermaid/#/pie">docs</a> - <a href="https://mermaid.live/edit#pako:eNo9jsFugzAMhl8F-VzBgEEh13Uv0F1zcYkTIpEEBadShXj3BU3dzf_n77e8wxQUgYDVkvQSbsFsEgpRtEN_5i_kvzx05XiC-xvUHVzAUXRoVe7v0heFBJ7JkQSRR0Ua08ISpD-ymlaFTN_KcoggNC4bXQATh5-Xn0BwTPSWbhZNRPdvLQEV5dIO_FrPZ43dOJ-cgtfWnDzFJeOZed1EVZ3r0lie06Ocgqs2q2aMPD_HvuqbfsCmpf7aYte2anrU46Cbz1qr60fdIBzH8QvW9lkl">live editor</a>]
|
||||||
|
|
||||||
```
|
```
|
||||||
pie
|
pie
|
||||||
"Dogs" : 386
|
"Dogs" : 386
|
||||||
"Cats" : 85
|
"Cats" : 85.9
|
||||||
"Rats" : 15
|
"Rats" : 15
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
pie
|
pie
|
||||||
"Dogs" : 386
|
"Dogs" : 386
|
||||||
"Cats" : 85
|
"Cats" : 85.9
|
||||||
"Rats" : 15
|
"Rats" : 15
|
||||||
```
|
```
|
||||||
|
|
||||||
### Git graph [experimental - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ2l0R3JhcGg6XG5vcHRpb25zXG57XG4gICAgXCJub2RlU3BhY2luZ1wiOiAxNTAsXG4gICAgXCJub2RlUmFkaXVzXCI6IDEwXG59XG5lbmRcbmNvbW1pdFxuYnJhbmNoIG5ld2JyYW5jaFxuY2hlY2tvdXQgbmV3YnJhbmNoXG5jb21taXRcbmNvbW1pdFxuY2hlY2tvdXQgbWFzdGVyXG5jb21taXRcbmNvbW1pdFxubWVyZ2UgbmV3YnJhbmNoXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
|
### Git graph [experimental - <a href="https://mermaid.live/edit#pako:eNqNkMFugzAMhl8F-VyVAR1tOW_aA-zKxSSGRCMJCk6lCvHuNZPKZdM0n-zf3_8r8QIqaIIGMqnB8kfEybQ--y4VnLP8-9RF9Mpkmm40hmlnDKmvkPiH_kfS7nFo_VN0FAf6XwocQGgxa_nGsm1bYEOOWmik1dRjGrmF1q-Cpkkj07u2HCI0PY4zHQATh8-7V9BwTPSE3iwOEd1OjQE1iWkBvk_bzQY7s0Sq4Hs7bHqKo8iGeZqbPN_WR7mpSd1RHpvPVhuMbG7XOq_L-oJlRfW5wteq0qorrpe-PBW9Pr8UJcK6rg-BLYPQ">live editor</a>]
|
||||||
|
|
||||||
|
### User Journey diagram [<a href="https://mermaid-js.github.io/mermaid/#/user-journey">docs</a> - <a href="https://mermaid.live/edit#pako:eNplkMFuwjAQRH9l5TMiTVIC-FqqnjhxzWWJN4khsSN7XRSh_HsdKBVt97R6Mzsj-yoqq0hIAXCywRkaSwNxWHNHsB_hYt1ZmwYUfiueKtbWwIcFtjf5zgH2eCZgQgkrCXt64GgMg2fUzkvIn5Xd_V5COtMFvCH_62ht_5yk7MU8sn61HDTfxD8VYiF6cj1qFd94nWkpuKWYKWRcFdUYOi5FaaZoDYNCpnel2Toha-w8LQQGtofRVEKyC_Qw7TQ2DvsfV2dRUTy6Ch6H-UMb7TlGVtbUupl5cF3ELfPgZZLM8rLR3IbjsrJ94rVq0XH7uS2SIis2mOVUrHNc5bmqjul2U2evaa3WL2mGYpqmL2BGiho">live editor</a>]
|
||||||
|
|
||||||
### User Journey diagram [<a href="https://mermaid-js.github.io/mermaid/#/user-journey">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtXG4gICAgWypdIC0tPiBTdGlsbFxuICAgIFN0aWxsIC0tPiBbKl1cbiAgICBTdGlsbCAtLT4gTW92aW5nXG4gICAgTW92aW5nIC0tPiBTdGlsbFxuICAgIE1vdmluZyAtLT4gQ3Jhc2hcbiAgICBDcmFzaCAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
|
|
||||||
```
|
```
|
||||||
journey
|
journey
|
||||||
title My working day
|
title My working day
|
||||||
@@ -207,6 +227,7 @@ pie
|
|||||||
Go downstairs: 5: Me
|
Go downstairs: 5: Me
|
||||||
Sit down: 3: Me
|
Sit down: 3: Me
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
journey
|
journey
|
||||||
title My working day
|
title My working day
|
||||||
@@ -219,6 +240,78 @@ pie
|
|||||||
Sit down: 3: Me
|
Sit down: 3: Me
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### C4 diagram [<a href="https://mermaid-js.github.io/mermaid/#/c4c">docs</a>]
|
||||||
|
|
||||||
|
```
|
||||||
|
C4Context
|
||||||
|
title System Context diagram for Internet Banking System
|
||||||
|
|
||||||
|
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
|
||||||
|
Person(customerB, "Banking Customer B")
|
||||||
|
Person_Ext(customerC, "Banking Customer C")
|
||||||
|
System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")
|
||||||
|
|
||||||
|
Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")
|
||||||
|
|
||||||
|
Enterprise_Boundary(b1, "BankBoundary") {
|
||||||
|
|
||||||
|
SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")
|
||||||
|
|
||||||
|
System_Boundary(b2, "BankBoundary2") {
|
||||||
|
System(SystemA, "Banking System A")
|
||||||
|
System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts.")
|
||||||
|
}
|
||||||
|
|
||||||
|
System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
|
||||||
|
SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.")
|
||||||
|
|
||||||
|
Boundary(b3, "BankBoundary3", "boundary") {
|
||||||
|
SystemQueue(SystemF, "Banking System F Queue", "A system of the bank, with personal bank accounts.")
|
||||||
|
SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BiRel(customerA, SystemAA, "Uses")
|
||||||
|
BiRel(SystemAA, SystemE, "Uses")
|
||||||
|
Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
|
||||||
|
Rel(SystemC, customerA, "Sends e-mails to")
|
||||||
|
```
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
C4Context
|
||||||
|
title System Context diagram for Internet Banking System
|
||||||
|
|
||||||
|
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
|
||||||
|
Person(customerB, "Banking Customer B")
|
||||||
|
Person_Ext(customerC, "Banking Customer C")
|
||||||
|
System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")
|
||||||
|
|
||||||
|
Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")
|
||||||
|
|
||||||
|
Enterprise_Boundary(b1, "BankBoundary") {
|
||||||
|
|
||||||
|
SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")
|
||||||
|
|
||||||
|
System_Boundary(b2, "BankBoundary2") {
|
||||||
|
System(SystemA, "Banking System A")
|
||||||
|
System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts.")
|
||||||
|
}
|
||||||
|
|
||||||
|
System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
|
||||||
|
SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.")
|
||||||
|
|
||||||
|
Boundary(b3, "BankBoundary3", "boundary") {
|
||||||
|
SystemQueue(SystemF, "Banking System F Queue", "A system of the bank, with personal bank accounts.")
|
||||||
|
SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BiRel(customerA, SystemAA, "Uses")
|
||||||
|
BiRel(SystemAA, SystemE, "Uses")
|
||||||
|
Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
|
||||||
|
Rel(SystemC, customerA, "Sends e-mails to")
|
||||||
|
```
|
||||||
|
|
||||||
## Release
|
## Release
|
||||||
|
|
||||||
For those who have the permission to do so:
|
For those who have the permission to do so:
|
||||||
@@ -245,23 +338,24 @@ Detailed information about how to contribute can be found in the [contribution g
|
|||||||
|
|
||||||
## Security and safe diagrams
|
## Security and safe diagrams
|
||||||
|
|
||||||
For public sites, it can be precarious to retrieve text from users on the internet, storing that content for presentation in a browser at a later stage. The reason is that the user content can contain embedded malicious scripts that will run when the data is presented. For Mermaid this is a risk, specially as mermaid diagrams contain many characters that are used in html which makes the standard sanitation unusable as it also breaks the diagrams. We still make an effort to sanitise the incoming code and keep refining the process but it is hard to guarantee that there are no loop holes.
|
For public sites, it can be precarious to retrieve text from users on the internet, storing that content for presentation in a browser at a later stage. The reason is that the user content can contain embedded malicious scripts that will run when the data is presented. For Mermaid this is a risk, specially as mermaid diagrams contain many characters that are used in html which makes the standard sanitation unusable as it also breaks the diagrams. We still make an effort to sanitise the incoming code and keep refining the process but it is hard to guarantee that there are no loop holes.
|
||||||
|
|
||||||
As an extra level of security for sites with external users we are happy to introduce a new security level in which the diagram is rendered in a sandboxed iframe preventing javascript in the code from being executed. This is a great step forward for better security.
|
As an extra level of security for sites with external users we are happy to introduce a new security level in which the diagram is rendered in a sandboxed iframe preventing javascript in the code from being executed. This is a great step forward for better security.
|
||||||
|
|
||||||
*Unfortunately you can not have a cake and eat it at the same time which in this case means that some of the interactive functionality gets blocked along with the possible malicious code.*
|
_Unfortunately you can not have a cake and eat it at the same time which in this case means that some of the interactive functionality gets blocked along with the possible malicious code._
|
||||||
|
|
||||||
## Reporting vulnerabilities
|
## Reporting vulnerabilities
|
||||||
|
|
||||||
To report a vulnerability, please e-mail security@mermaid.live with a description of the issue, the steps you took to create the issue, affected versions, and if known, mitigations for the issue.
|
To report a vulnerability, please e-mail security@mermaid.live with a description of the issue, the steps you took to create the issue, affected versions, and if known, mitigations for the issue.
|
||||||
|
|
||||||
## Appreciation
|
## Appreciation
|
||||||
|
|
||||||
A quick note from Knut Sveidqvist:
|
A quick note from Knut Sveidqvist:
|
||||||
>*Many thanks to the [d3](https://d3js.org/) and [dagre-d3](https://github.com/cpettitt/dagre-d3) projects for providing the graphical layout and drawing libraries!*
|
|
||||||
>*Thanks also to the [js-sequence-diagram](https://bramp.github.io/js-sequence-diagrams) project for usage of the grammar for the sequence diagrams. Thanks to Jessica Peter for inspiration and starting point for gantt rendering.*
|
> _Many thanks to the [d3](https://d3js.org/) and [dagre-d3](https://github.com/cpettitt/dagre-d3) projects for providing the graphical layout and drawing libraries!_ >_Thanks also to the [js-sequence-diagram](https://bramp.github.io/js-sequence-diagrams) project for usage of the grammar for the sequence diagrams. Thanks to Jessica Peter for inspiration and starting point for gantt rendering._ >_Thank you to [Tyler Long](https://github.com/tylerlong) who has been a collaborator since April 2017._
|
||||||
>*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/knsv/mermaid/graphs/contributors) that brought the project this far!_
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Mermaid was created by Knut Sveidqvist for easier documentation.*
|
_Mermaid was created by Knut Sveidqvist for easier documentation._
|
||||||
|
139
README.zh-CN.md
139
README.zh-CN.md
@@ -13,6 +13,7 @@
|
|||||||
## 关于 Mermaid
|
## 关于 Mermaid
|
||||||
|
|
||||||
<!-- <Main description> -->
|
<!-- <Main description> -->
|
||||||
|
|
||||||
Mermaid 是一个基于 Javascript 的图表绘制工具,通过解析类 Markdown 的文本语法来实现图表的创建和动态修改。Mermaid 诞生的主要目的是让文档的更新能够及时跟上开发进度。
|
Mermaid 是一个基于 Javascript 的图表绘制工具,通过解析类 Markdown 的文本语法来实现图表的创建和动态修改。Mermaid 诞生的主要目的是让文档的更新能够及时跟上开发进度。
|
||||||
|
|
||||||
> Doc-Rot 是 Mermaid 致力于解决的一个难题。
|
> Doc-Rot 是 Mermaid 致力于解决的一个难题。
|
||||||
@@ -20,7 +21,7 @@ Mermaid 是一个基于 Javascript 的图表绘制工具,通过解析类 Markd
|
|||||||
绘图和编写文档花费了开发者宝贵的开发时间,而且随着业务的变更,它很快就会过期。 但是如果缺少了图表或文档,对于生产力和团队新人的业务学习都会产生巨大的阻碍。 <br/>
|
绘图和编写文档花费了开发者宝贵的开发时间,而且随着业务的变更,它很快就会过期。 但是如果缺少了图表或文档,对于生产力和团队新人的业务学习都会产生巨大的阻碍。 <br/>
|
||||||
Mermaid 通过允许用户创建便于修改的图表来解决这一难题,它也可以作为生产脚本(或其他代码)的一部分。<br/>
|
Mermaid 通过允许用户创建便于修改的图表来解决这一难题,它也可以作为生产脚本(或其他代码)的一部分。<br/>
|
||||||
<br/>
|
<br/>
|
||||||
Mermaid 甚至能让非程序员也能通过 [Mermaid Live Editor](https://mermaid-js.github.io/mermaid-live-editor/) 轻松创建详细的图表。<br/>
|
Mermaid 甚至能让非程序员也能通过 [Mermaid Live Editor](https://mermaid.live/) 轻松创建详细的图表。<br/>
|
||||||
你可以访问 [教程](./docs/Tutorials.md) 来查看 Live Editor 的视频教程,也可以查看 [Mermaid 的集成和使用](./docs/integrations.md) 这个清单来检查你的文档工具是否已经集成了 Mermaid 支持。
|
你可以访问 [教程](./docs/Tutorials.md) 来查看 Live Editor 的视频教程,也可以查看 [Mermaid 的集成和使用](./docs/integrations.md) 这个清单来检查你的文档工具是否已经集成了 Mermaid 支持。
|
||||||
|
|
||||||
如果想要查看关于 Mermaid 更详细的介绍及基础使用方式,可以查看 [入门指引](./docs/n00b-overview.md), [用法](./docs/usage.md) 和 [教程](./docs/Tutorials.md).
|
如果想要查看关于 Mermaid 更详细的介绍及基础使用方式,可以查看 [入门指引](./docs/n00b-overview.md), [用法](./docs/usage.md) 和 [教程](./docs/Tutorials.md).
|
||||||
@@ -31,7 +32,8 @@ Mermaid 甚至能让非程序员也能通过 [Mermaid Live Editor](https://merma
|
|||||||
|
|
||||||
## 示例
|
## 示例
|
||||||
|
|
||||||
__下面是一些可以使用 Mermaid 创建的图表示例。点击 [语法](https://mermaid-js.github.io/mermaid/#/n00b-syntaxReference) 查看详情。__
|
**下面是一些可以使用 Mermaid 创建的图表示例。点击 [语法](https://mermaid-js.github.io/mermaid/#/n00b-syntaxReference) 查看详情。**
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<!-- <Flowchart> -->
|
<!-- <Flowchart> -->
|
||||||
|
|
||||||
@@ -44,6 +46,7 @@ B --> C{Decision}
|
|||||||
C -->|One| D[Result 1]
|
C -->|One| D[Result 1]
|
||||||
C -->|Two| E[Result 2]
|
C -->|Two| E[Result 2]
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
flowchart LR
|
flowchart LR
|
||||||
A[Hard] -->|Text| B(Round)
|
A[Hard] -->|Text| B(Round)
|
||||||
@@ -65,6 +68,7 @@ John-->>Alice: Great!
|
|||||||
John->>Bob: How about you?
|
John->>Bob: How about you?
|
||||||
Bob-->>John: Jolly good!
|
Bob-->>John: Jolly good!
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>John: Hello John, how are you?
|
Alice->>John: Hello John, how are you?
|
||||||
@@ -89,6 +93,7 @@ gantt
|
|||||||
Parallel 3 : des5, after des3, 1d
|
Parallel 3 : des5, after des3, 1d
|
||||||
Parallel 4 : des6, after des4, 1d
|
Parallel 4 : des6, after des4, 1d
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
gantt
|
gantt
|
||||||
section Section
|
section Section
|
||||||
@@ -106,25 +111,7 @@ gantt
|
|||||||
classDiagram
|
classDiagram
|
||||||
Class01 <|-- AveryLongClass : Cool
|
Class01 <|-- AveryLongClass : Cool
|
||||||
<<Interface>> Class01
|
<<Interface>> Class01
|
||||||
Class09 --> C2 : Where am i?
|
Class09 --> C2 : Where am I?
|
||||||
Class09 --* C3
|
|
||||||
Class09 --|> Class07
|
|
||||||
Class07 : equals()
|
|
||||||
Class07 : Object[] elementData
|
|
||||||
Class01 : size()
|
|
||||||
Class01 : int chimp
|
|
||||||
Class01 : int gorilla
|
|
||||||
class Class10 {
|
|
||||||
<<service>>
|
|
||||||
int id
|
|
||||||
size()
|
|
||||||
}
|
|
||||||
```
|
|
||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
Class01 <|-- AveryLongClass : Cool
|
|
||||||
<<Interface>> Class01
|
|
||||||
Class09 --> C2 : Where am i?
|
|
||||||
Class09 --* C3
|
Class09 --* C3
|
||||||
Class09 --|> Class07
|
Class09 --|> Class07
|
||||||
Class07 : equals()
|
Class07 : equals()
|
||||||
@@ -139,7 +126,26 @@ class Class10 {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 状态图 [[<a href="https://mermaid-js.github.io/mermaid/#/stateDiagram">docs</a> - <a href="https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtLXYyXG4gICAgWypdIC0tPiBTdGlsbFxuICAgIFN0aWxsIC0tPiBbKl1cbiAgICBTdGlsbCAtLT4gTW92aW5nXG4gICAgTW92aW5nIC0tPiBTdGlsbFxuICAgIE1vdmluZyAtLT4gQ3Jhc2hcbiAgICBDcmFzaCAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQiLCJ0aGVtZVZhcmlhYmxlcyI6eyJiYWNrZ3JvdW5kIjoid2hpdGUiLCJwcmltYXJ5Q29sb3IiOiIjRUNFQ0ZGIiwic2Vjb25kYXJ5Q29sb3IiOiIjZmZmZmRlIiwidGVydGlhcnlDb2xvciI6ImhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpIiwicHJpbWFyeUJvcmRlckNvbG9yIjoiaHNsKDI0MCwgNjAlLCA4Ni4yNzQ1MDk4MDM5JSkiLCJzZWNvbmRhcnlCb3JkZXJDb2xvciI6ImhzbCg2MCwgNjAlLCA4My41Mjk0MTE3NjQ3JSkiLCJ0ZXJ0aWFyeUJvcmRlckNvbG9yIjoiaHNsKDgwLCA2MCUsIDg2LjI3NDUwOTgwMzklKSIsInByaW1hcnlUZXh0Q29sb3IiOiIjMTMxMzAwIiwic2Vjb25kYXJ5VGV4dENvbG9yIjoiIzAwMDAyMSIsInRlcnRpYXJ5VGV4dENvbG9yIjoicmdiKDkuNTAwMDAwMDAwMSwgOS41MDAwMDAwMDAxLCA5LjUwMDAwMDAwMDEpIiwibGluZUNvbG9yIjoiIzMzMzMzMyIsInRleHRDb2xvciI6IiMzMzMiLCJtYWluQmtnIjoiI0VDRUNGRiIsInNlY29uZEJrZyI6IiNmZmZmZGUiLCJib3JkZXIxIjoiIzkzNzBEQiIsImJvcmRlcjIiOiIjYWFhYTMzIiwiYXJyb3doZWFkQ29sb3IiOiIjMzMzMzMzIiwiZm9udEZhbWlseSI6IlwidHJlYnVjaGV0IG1zXCIsIHZlcmRhbmEsIGFyaWFsIiwiZm9udFNpemUiOiIxNnB4IiwibGFiZWxCYWNrZ3JvdW5kIjoiI2U4ZThlOCIsIm5vZGVCa2ciOiIjRUNFQ0ZGIiwibm9kZUJvcmRlciI6IiM5MzcwREIiLCJjbHVzdGVyQmtnIjoiI2ZmZmZkZSIsImNsdXN0ZXJCb3JkZXIiOiIjYWFhYTMzIiwiZGVmYXVsdExpbmtDb2xvciI6IiMzMzMzMzMiLCJ0aXRsZUNvbG9yIjoiIzMzMyIsImVkZ2VMYWJlbEJhY2tncm91bmQiOiIjZThlOGU4IiwiYWN0b3JCb3JkZXIiOiJoc2woMjU5LjYyNjE2ODIyNDMsIDU5Ljc3NjUzNjMxMjglLCA4Ny45MDE5NjA3ODQzJSkiLCJhY3RvckJrZyI6IiNFQ0VDRkYiLCJhY3RvclRleHRDb2xvciI6ImJsYWNrIiwiYWN0b3JMaW5lQ29sb3IiOiJncmV5Iiwic2lnbmFsQ29sb3IiOiIjMzMzIiwic2lnbmFsVGV4dENvbG9yIjoiIzMzMyIsImxhYmVsQm94QmtnQ29sb3IiOiIjRUNFQ0ZGIiwibGFiZWxCb3hCb3JkZXJDb2xvciI6ImhzbCgyNTkuNjI2MTY4MjI0MywgNTkuNzc2NTM2MzEyOCUsIDg3LjkwMTk2MDc4NDMlKSIsImxhYmVsVGV4dENvbG9yIjoiYmxhY2siLCJsb29wVGV4dENvbG9yIjoiYmxhY2siLCJub3RlQm9yZGVyQ29sb3IiOiIjYWFhYTMzIiwibm90ZUJrZ0NvbG9yIjoiI2ZmZjVhZCIsIm5vdGVUZXh0Q29sb3IiOiJibGFjayIsImFjdGl2YXRpb25Cb3JkZXJDb2xvciI6IiM2NjYiLCJhY3RpdmF0aW9uQmtnQ29sb3IiOiIjZjRmNGY0Iiwic2VxdWVuY2VOdW1iZXJDb2xvciI6IndoaXRlIiwic2VjdGlvbkJrZ0NvbG9yIjoicmdiYSgxMDIsIDEwMiwgMjU1LCAwLjQ5KSIsImFsdFNlY3Rpb25Ca2dDb2xvciI6IndoaXRlIiwic2VjdGlvbkJrZ0NvbG9yMiI6IiNmZmY0MDAiLCJ0YXNrQm9yZGVyQ29sb3IiOiIjNTM0ZmJjIiwidGFza0JrZ0NvbG9yIjoiIzhhOTBkZCIsInRhc2tUZXh0TGlnaHRDb2xvciI6IndoaXRlIiwidGFza1RleHRDb2xvciI6IndoaXRlIiwidGFza1RleHREYXJrQ29sb3IiOiJibGFjayIsInRhc2tUZXh0T3V0c2lkZUNvbG9yIjoiYmxhY2siLCJ0YXNrVGV4dENsaWNrYWJsZUNvbG9yIjoiIzAwMzE2MyIsImFjdGl2ZVRhc2tCb3JkZXJDb2xvciI6IiM1MzRmYmMiLCJhY3RpdmVUYXNrQmtnQ29sb3IiOiIjYmZjN2ZmIiwiZ3JpZENvbG9yIjoibGlnaHRncmV5IiwiZG9uZVRhc2tCa2dDb2xvciI6ImxpZ2h0Z3JleSIsImRvbmVUYXNrQm9yZGVyQ29sb3IiOiJncmV5IiwiY3JpdEJvcmRlckNvbG9yIjoiI2ZmODg4OCIsImNyaXRCa2dDb2xvciI6InJlZCIsInRvZGF5TGluZUNvbG9yIjoicmVkIiwibGFiZWxDb2xvciI6ImJsYWNrIiwiZXJyb3JCa2dDb2xvciI6IiM1NTIyMjIiLCJlcnJvclRleHRDb2xvciI6IiM1NTIyMjIiLCJjbGFzc1RleHQiOiIjMTMxMzAwIiwiZmlsbFR5cGUwIjoiI0VDRUNGRiIsImZpbGxUeXBlMSI6IiNmZmZmZGUiLCJmaWxsVHlwZTIiOiJoc2woMzA0LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTMiOiJoc2woMTI0LCAxMDAlLCA5My41Mjk0MTE3NjQ3JSkiLCJmaWxsVHlwZTQiOiJoc2woMTc2LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTUiOiJoc2woLTQsIDEwMCUsIDkzLjUyOTQxMTc2NDclKSIsImZpbGxUeXBlNiI6ImhzbCg4LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTciOiJoc2woMTg4LCAxMDAlLCA5My41Mjk0MTE3NjQ3JSkifX0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9">live editor</a>]
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
Class01 <|-- AveryLongClass : Cool
|
||||||
|
<<Interface>> Class01
|
||||||
|
Class09 --> C2 : Where am I?
|
||||||
|
Class09 --* C3
|
||||||
|
Class09 --|> Class07
|
||||||
|
Class07 : equals()
|
||||||
|
Class07 : Object[] elementData
|
||||||
|
Class01 : size()
|
||||||
|
Class01 : int chimp
|
||||||
|
Class01 : int gorilla
|
||||||
|
class Class10 {
|
||||||
|
<<service>>
|
||||||
|
int id
|
||||||
|
size()
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 状态图 [[<a href="https://mermaid-js.github.io/mermaid/#/stateDiagram">docs</a> - <a href="https://mermaid.live/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtLXYyXG4gICAgWypdIC0tPiBTdGlsbFxuICAgIFN0aWxsIC0tPiBbKl1cbiAgICBTdGlsbCAtLT4gTW92aW5nXG4gICAgTW92aW5nIC0tPiBTdGlsbFxuICAgIE1vdmluZyAtLT4gQ3Jhc2hcbiAgICBDcmFzaCAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQiLCJ0aGVtZVZhcmlhYmxlcyI6eyJiYWNrZ3JvdW5kIjoid2hpdGUiLCJwcmltYXJ5Q29sb3IiOiIjRUNFQ0ZGIiwic2Vjb25kYXJ5Q29sb3IiOiIjZmZmZmRlIiwidGVydGlhcnlDb2xvciI6ImhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpIiwicHJpbWFyeUJvcmRlckNvbG9yIjoiaHNsKDI0MCwgNjAlLCA4Ni4yNzQ1MDk4MDM5JSkiLCJzZWNvbmRhcnlCb3JkZXJDb2xvciI6ImhzbCg2MCwgNjAlLCA4My41Mjk0MTE3NjQ3JSkiLCJ0ZXJ0aWFyeUJvcmRlckNvbG9yIjoiaHNsKDgwLCA2MCUsIDg2LjI3NDUwOTgwMzklKSIsInByaW1hcnlUZXh0Q29sb3IiOiIjMTMxMzAwIiwic2Vjb25kYXJ5VGV4dENvbG9yIjoiIzAwMDAyMSIsInRlcnRpYXJ5VGV4dENvbG9yIjoicmdiKDkuNTAwMDAwMDAwMSwgOS41MDAwMDAwMDAxLCA5LjUwMDAwMDAwMDEpIiwibGluZUNvbG9yIjoiIzMzMzMzMyIsInRleHRDb2xvciI6IiMzMzMiLCJtYWluQmtnIjoiI0VDRUNGRiIsInNlY29uZEJrZyI6IiNmZmZmZGUiLCJib3JkZXIxIjoiIzkzNzBEQiIsImJvcmRlcjIiOiIjYWFhYTMzIiwiYXJyb3doZWFkQ29sb3IiOiIjMzMzMzMzIiwiZm9udEZhbWlseSI6IlwidHJlYnVjaGV0IG1zXCIsIHZlcmRhbmEsIGFyaWFsIiwiZm9udFNpemUiOiIxNnB4IiwibGFiZWxCYWNrZ3JvdW5kIjoiI2U4ZThlOCIsIm5vZGVCa2ciOiIjRUNFQ0ZGIiwibm9kZUJvcmRlciI6IiM5MzcwREIiLCJjbHVzdGVyQmtnIjoiI2ZmZmZkZSIsImNsdXN0ZXJCb3JkZXIiOiIjYWFhYTMzIiwiZGVmYXVsdExpbmtDb2xvciI6IiMzMzMzMzMiLCJ0aXRsZUNvbG9yIjoiIzMzMyIsImVkZ2VMYWJlbEJhY2tncm91bmQiOiIjZThlOGU4IiwiYWN0b3JCb3JkZXIiOiJoc2woMjU5LjYyNjE2ODIyNDMsIDU5Ljc3NjUzNjMxMjglLCA4Ny45MDE5NjA3ODQzJSkiLCJhY3RvckJrZyI6IiNFQ0VDRkYiLCJhY3RvclRleHRDb2xvciI6ImJsYWNrIiwiYWN0b3JMaW5lQ29sb3IiOiJncmV5Iiwic2lnbmFsQ29sb3IiOiIjMzMzIiwic2lnbmFsVGV4dENvbG9yIjoiIzMzMyIsImxhYmVsQm94QmtnQ29sb3IiOiIjRUNFQ0ZGIiwibGFiZWxCb3hCb3JkZXJDb2xvciI6ImhzbCgyNTkuNjI2MTY4MjI0MywgNTkuNzc2NTM2MzEyOCUsIDg3LjkwMTk2MDc4NDMlKSIsImxhYmVsVGV4dENvbG9yIjoiYmxhY2siLCJsb29wVGV4dENvbG9yIjoiYmxhY2siLCJub3RlQm9yZGVyQ29sb3IiOiIjYWFhYTMzIiwibm90ZUJrZ0NvbG9yIjoiI2ZmZjVhZCIsIm5vdGVUZXh0Q29sb3IiOiJibGFjayIsImFjdGl2YXRpb25Cb3JkZXJDb2xvciI6IiM2NjYiLCJhY3RpdmF0aW9uQmtnQ29sb3IiOiIjZjRmNGY0Iiwic2VxdWVuY2VOdW1iZXJDb2xvciI6IndoaXRlIiwic2VjdGlvbkJrZ0NvbG9yIjoicmdiYSgxMDIsIDEwMiwgMjU1LCAwLjQ5KSIsImFsdFNlY3Rpb25Ca2dDb2xvciI6IndoaXRlIiwic2VjdGlvbkJrZ0NvbG9yMiI6IiNmZmY0MDAiLCJ0YXNrQm9yZGVyQ29sb3IiOiIjNTM0ZmJjIiwidGFza0JrZ0NvbG9yIjoiIzhhOTBkZCIsInRhc2tUZXh0TGlnaHRDb2xvciI6IndoaXRlIiwidGFza1RleHRDb2xvciI6IndoaXRlIiwidGFza1RleHREYXJrQ29sb3IiOiJibGFjayIsInRhc2tUZXh0T3V0c2lkZUNvbG9yIjoiYmxhY2siLCJ0YXNrVGV4dENsaWNrYWJsZUNvbG9yIjoiIzAwMzE2MyIsImFjdGl2ZVRhc2tCb3JkZXJDb2xvciI6IiM1MzRmYmMiLCJhY3RpdmVUYXNrQmtnQ29sb3IiOiIjYmZjN2ZmIiwiZ3JpZENvbG9yIjoibGlnaHRncmV5IiwiZG9uZVRhc2tCa2dDb2xvciI6ImxpZ2h0Z3JleSIsImRvbmVUYXNrQm9yZGVyQ29sb3IiOiJncmV5IiwiY3JpdEJvcmRlckNvbG9yIjoiI2ZmODg4OCIsImNyaXRCa2dDb2xvciI6InJlZCIsInRvZGF5TGluZUNvbG9yIjoicmVkIiwibGFiZWxDb2xvciI6ImJsYWNrIiwiZXJyb3JCa2dDb2xvciI6IiM1NTIyMjIiLCJlcnJvclRleHRDb2xvciI6IiM1NTIyMjIiLCJjbGFzc1RleHQiOiIjMTMxMzAwIiwiZmlsbFR5cGUwIjoiI0VDRUNGRiIsImZpbGxUeXBlMSI6IiNmZmZmZGUiLCJmaWxsVHlwZTIiOiJoc2woMzA0LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTMiOiJoc2woMTI0LCAxMDAlLCA5My41Mjk0MTE3NjQ3JSkiLCJmaWxsVHlwZTQiOiJoc2woMTc2LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTUiOiJoc2woLTQsIDEwMCUsIDkzLjUyOTQxMTc2NDclKSIsImZpbGxUeXBlNiI6ImhzbCg4LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTciOiJoc2woMTg4LCAxMDAlLCA5My41Mjk0MTE3NjQ3JSkifX0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9">live editor</a>]
|
||||||
|
|
||||||
```
|
```
|
||||||
stateDiagram-v2
|
stateDiagram-v2
|
||||||
@@ -150,6 +156,7 @@ Moving --> Still
|
|||||||
Moving --> Crash
|
Moving --> Crash
|
||||||
Crash --> [*]
|
Crash --> [*]
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
stateDiagram-v2
|
stateDiagram-v2
|
||||||
[*] --> Still
|
[*] --> Still
|
||||||
@@ -168,6 +175,7 @@ pie
|
|||||||
"Cats" : 85
|
"Cats" : 85
|
||||||
"Rats" : 15
|
"Rats" : 15
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
pie
|
pie
|
||||||
"Dogs" : 386
|
"Dogs" : 386
|
||||||
@@ -175,7 +183,7 @@ pie
|
|||||||
"Rats" : 15
|
"Rats" : 15
|
||||||
```
|
```
|
||||||
|
|
||||||
### Git图 [实验特性 - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ2l0R3JhcGg6XG5vcHRpb25zXG57XG4gICAgXCJub2RlU3BhY2luZ1wiOiAxNTAsXG4gICAgXCJub2RlUmFkaXVzXCI6IDEwXG59XG5lbmRcbmNvbW1pdFxuYnJhbmNoIG5ld2JyYW5jaFxuY2hlY2tvdXQgbmV3YnJhbmNoXG5jb21taXRcbmNvbW1pdFxuY2hlY2tvdXQgbWFzdGVyXG5jb21taXRcbmNvbW1pdFxubWVyZ2UgbmV3YnJhbmNoXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
|
### Git 图 [实验特性 - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ2l0R3JhcGg6XG5vcHRpb25zXG57XG4gICAgXCJub2RlU3BhY2luZ1wiOiAxNTAsXG4gICAgXCJub2RlUmFkaXVzXCI6IDEwXG59XG5lbmRcbmNvbW1pdFxuYnJhbmNoIG5ld2JyYW5jaFxuY2hlY2tvdXQgbmV3YnJhbmNoXG5jb21taXRcbmNvbW1pdFxuY2hlY2tvdXQgbWFzdGVyXG5jb21taXRcbmNvbW1pdFxubWVyZ2UgbmV3YnJhbmNoXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
|
||||||
|
|
||||||
### 用户体验旅程图 [<a href="https://mermaid-js.github.io/mermaid/#/user-journey">文档</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtXG4gICAgWypdIC0tPiBTdGlsbFxuICAgIFN0aWxsIC0tPiBbKl1cbiAgICBTdGlsbCAtLT4gTW92aW5nXG4gICAgTW92aW5nIC0tPiBTdGlsbFxuICAgIE1vdmluZyAtLT4gQ3Jhc2hcbiAgICBDcmFzaCAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
|
### 用户体验旅程图 [<a href="https://mermaid-js.github.io/mermaid/#/user-journey">文档</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtXG4gICAgWypdIC0tPiBTdGlsbFxuICAgIFN0aWxsIC0tPiBbKl1cbiAgICBTdGlsbCAtLT4gTW92aW5nXG4gICAgTW92aW5nIC0tPiBTdGlsbFxuICAgIE1vdmluZyAtLT4gQ3Jhc2hcbiAgICBDcmFzaCAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
|
||||||
|
|
||||||
@@ -190,6 +198,7 @@ pie
|
|||||||
Go downstairs: 5: Me
|
Go downstairs: 5: Me
|
||||||
Sit down: 3: Me
|
Sit down: 3: Me
|
||||||
```
|
```
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
journey
|
journey
|
||||||
title My working day
|
title My working day
|
||||||
@@ -202,6 +211,78 @@ pie
|
|||||||
Sit down: 3: Me
|
Sit down: 3: Me
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### C4 图 [<a href="https://mermaid-js.github.io/mermaid/#/c4c">文档</a>]
|
||||||
|
|
||||||
|
```
|
||||||
|
C4Context
|
||||||
|
title System Context diagram for Internet Banking System
|
||||||
|
|
||||||
|
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
|
||||||
|
Person(customerB, "Banking Customer B")
|
||||||
|
Person_Ext(customerC, "Banking Customer C")
|
||||||
|
System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")
|
||||||
|
|
||||||
|
Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")
|
||||||
|
|
||||||
|
Enterprise_Boundary(b1, "BankBoundary") {
|
||||||
|
|
||||||
|
SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")
|
||||||
|
|
||||||
|
System_Boundary(b2, "BankBoundary2") {
|
||||||
|
System(SystemA, "Banking System A")
|
||||||
|
System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts.")
|
||||||
|
}
|
||||||
|
|
||||||
|
System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
|
||||||
|
SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.")
|
||||||
|
|
||||||
|
Boundary(b3, "BankBoundary3", "boundary") {
|
||||||
|
SystemQueue(SystemF, "Banking System F Queue", "A system of the bank, with personal bank accounts.")
|
||||||
|
SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BiRel(customerA, SystemAA, "Uses")
|
||||||
|
BiRel(SystemAA, SystemE, "Uses")
|
||||||
|
Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
|
||||||
|
Rel(SystemC, customerA, "Sends e-mails to")
|
||||||
|
```
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
C4Context
|
||||||
|
title System Context diagram for Internet Banking System
|
||||||
|
|
||||||
|
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
|
||||||
|
Person(customerB, "Banking Customer B")
|
||||||
|
Person_Ext(customerC, "Banking Customer C")
|
||||||
|
System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")
|
||||||
|
|
||||||
|
Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")
|
||||||
|
|
||||||
|
Enterprise_Boundary(b1, "BankBoundary") {
|
||||||
|
|
||||||
|
SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")
|
||||||
|
|
||||||
|
System_Boundary(b2, "BankBoundary2") {
|
||||||
|
System(SystemA, "Banking System A")
|
||||||
|
System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts.")
|
||||||
|
}
|
||||||
|
|
||||||
|
System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
|
||||||
|
SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.")
|
||||||
|
|
||||||
|
Boundary(b3, "BankBoundary3", "boundary") {
|
||||||
|
SystemQueue(SystemF, "Banking System F Queue", "A system of the bank, with personal bank accounts.")
|
||||||
|
SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BiRel(customerA, SystemAA, "Uses")
|
||||||
|
BiRel(SystemAA, SystemE, "Uses")
|
||||||
|
Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
|
||||||
|
Rel(SystemC, customerA, "Sends e-mails to")
|
||||||
|
```
|
||||||
|
|
||||||
## 发布
|
## 发布
|
||||||
|
|
||||||
对于有权限的同学来说,你可以通过以下步骤来完成发布操作:
|
对于有权限的同学来说,你可以通过以下步骤来完成发布操作:
|
||||||
@@ -232,20 +313,20 @@ Mermaid 是一个不断发展中的社区,并且还在接收新的贡献者。
|
|||||||
|
|
||||||
作为拥有外部用户的网站的额外安全级别,我们很高兴推出一个新的安全级别,其中的图表在沙盒 iframe 中渲染,防止代码中的 javascript 被执行,这是在安全性方面迈出的一大步。
|
作为拥有外部用户的网站的额外安全级别,我们很高兴推出一个新的安全级别,其中的图表在沙盒 iframe 中渲染,防止代码中的 javascript 被执行,这是在安全性方面迈出的一大步。
|
||||||
|
|
||||||
*很不幸的是,鱼与熊掌不可兼得,在这个场景下它意味着在可能的恶意代码被阻止时,也会损失部分交互能力*。
|
_很不幸的是,鱼与熊掌不可兼得,在这个场景下它意味着在可能的恶意代码被阻止时,也会损失部分交互能力_。
|
||||||
|
|
||||||
## 报告漏洞
|
## 报告漏洞
|
||||||
|
|
||||||
如果想要报告漏洞,请发送邮件到 security@mermaid.live, 并附上问题的描述、复现问题的步骤、受影响的版本,以及解决问题的方案(如果有的话)。
|
如果想要报告漏洞,请发送邮件到 security@mermaid.live, 并附上问题的描述、复现问题的步骤、受影响的版本,以及解决问题的方案(如果有的话)。
|
||||||
|
|
||||||
## 鸣谢
|
## 鸣谢
|
||||||
|
|
||||||
来自 Knut Sveidqvist:
|
来自 Knut Sveidqvist:
|
||||||
>*特别感谢 [d3](https://d3js.org/) 和 [dagre-d3](https://github.com/cpettitt/dagre-d3) 这两个优秀的项目,它们提供了图形布局和绘图工具库! *
|
|
||||||
>*同样感谢 [js-sequence-diagram](https://bramp.github.io/js-sequence-diagrams) 提供了时序图语法的使用。 感谢 Jessica Peter 提供了甘特图渲染的灵感。*
|
> _特别感谢 [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 年四月开始成为了项目的合作者。_
|
||||||
>*感谢 [Tyler Long](https://github.com/tylerlong) 从 2017年四月开始成为了项目的合作者。*
|
|
||||||
>
|
>
|
||||||
>*感谢越来越多的 [贡献者们](https://github.com/knsv/mermaid/graphs/contributors),没有你们,就没有这个项目的今天!*
|
> _感谢越来越多的 [贡献者们](https://github.com/knsv/mermaid/graphs/contributors),没有你们,就没有这个项目的今天!_
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Mermaid 是由 Knut Sveidqvist 创建,它为了更简单的文档编写而生。*
|
_Mermaid 是由 Knut Sveidqvist 创建,它为了更简单的文档编写而生。_
|
||||||
|
5
V10-BreakingChanges.md
Normal file
5
V10-BreakingChanges.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# A collection of updates that change the behaviour
|
||||||
|
|
||||||
|
## Lazy loading and asynchronisity
|
||||||
|
|
||||||
|
- Invalid dates are rendered as syntax error instead of returning best guess or the current date
|
@@ -1,3 +0,0 @@
|
|||||||
export const curveBasis = 'basis';
|
|
||||||
export const curveLinear = 'linear';
|
|
||||||
export const curveCardinal = 'cardinal';
|
|
@@ -1,4 +1,10 @@
|
|||||||
let NewD3 = function () {
|
// @ts-nocheck TODO: Fix TS
|
||||||
|
import { vi } from 'vitest';
|
||||||
|
|
||||||
|
const NewD3 = function () {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
function returnThis() {
|
function returnThis() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -53,9 +59,9 @@ export const MockD3 = (name, parent) => {
|
|||||||
children.push(mockElem);
|
children.push(mockElem);
|
||||||
return mockElem;
|
return mockElem;
|
||||||
};
|
};
|
||||||
elem.lower = jest.fn(() => elem);
|
elem.lower = vi.fn(() => elem);
|
||||||
elem.attr = jest.fn(() => elem);
|
elem.attr = vi.fn(() => elem);
|
||||||
elem.text = jest.fn(() => elem);
|
elem.text = vi.fn(() => elem);
|
||||||
elem.style = jest.fn(() => elem);
|
elem.style = vi.fn(() => elem);
|
||||||
return elem;
|
return elem;
|
||||||
};
|
};
|
3
__mocks__/dagre-d3.ts
Normal file
3
__mocks__/dagre-d3.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
import { vi } from 'vitest';
|
||||||
|
|
||||||
|
// export const render = vi.fn();
|
3
__mocks__/entity-decode/browser.ts
Normal file
3
__mocks__/entity-decode/browser.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module.exports = function (txt: string) {
|
||||||
|
return txt;
|
||||||
|
};
|
@@ -1,16 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
testConcurrency: 1,
|
|
||||||
// browser: [
|
|
||||||
// // Add browsers with different viewports
|
|
||||||
// { width: 800, height: 600, name: 'chrome' },
|
|
||||||
// { width: 700, height: 500, name: 'firefox' },
|
|
||||||
// { width: 1600, height: 1200, name: 'ie11' },
|
|
||||||
// { width: 1024, height: 768, name: 'edgechromium' },
|
|
||||||
// { width: 800, height: 600, name: 'safari' },
|
|
||||||
// // Add mobile emulation devices in Portrait mode
|
|
||||||
// { deviceName: 'iPhone X', screenOrientation: 'portrait' },
|
|
||||||
// { deviceName: 'Pixel 2', screenOrientation: 'portrait' },
|
|
||||||
// ],
|
|
||||||
// // set batch name to the configuration
|
|
||||||
// batchName: 'Ultrafast Batch',
|
|
||||||
};
|
|
19
applitools.config.js
Normal file
19
applitools.config.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
const { defineConfig } = require('cypress');
|
||||||
|
|
||||||
|
module.exports = defineConfig({
|
||||||
|
testConcurrency: 1,
|
||||||
|
browser: [
|
||||||
|
// Add browsers with different viewports
|
||||||
|
// { width: 800, height: 600, name: 'chrome' },
|
||||||
|
// { width: 700, height: 500, name: 'firefox' },
|
||||||
|
// { width: 1600, height: 1200, name: 'ie11' },
|
||||||
|
// { width: 1024, height: 768, name: 'edgechromium' },
|
||||||
|
// { width: 800, height: 600, name: 'safari' },
|
||||||
|
// // Add mobile emulation devices in Portrait mode
|
||||||
|
// { deviceName: 'iPhone X', screenOrientation: 'portrait' },
|
||||||
|
// { deviceName: 'Pixel 2', screenOrientation: 'portrait' },
|
||||||
|
],
|
||||||
|
// set batch name to the configuration
|
||||||
|
batchName: `Mermaid ${process.env.APPLI_BRANCH ?? "'no APPLI_BRANCH set'"}`,
|
||||||
|
});
|
@@ -1,10 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
presets: [
|
|
||||||
[
|
|
||||||
'@babel/preset-env',
|
|
||||||
{
|
|
||||||
targets: 'defaults, ie >= 11, current node',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
};
|
|
22
cypress.config.cjs
Normal file
22
cypress.config.cjs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||||
|
|
||||||
|
const { defineConfig } = require('cypress');
|
||||||
|
const { addMatchImageSnapshotPlugin } = require('cypress-image-snapshot/plugin');
|
||||||
|
|
||||||
|
module.exports = defineConfig({
|
||||||
|
projectId: 'n2sma2',
|
||||||
|
e2e: {
|
||||||
|
specPattern: 'cypress/integration/**/*.{js,jsx,ts,tsx}',
|
||||||
|
setupNodeEvents(on, config) {
|
||||||
|
addMatchImageSnapshotPlugin(on, config);
|
||||||
|
// copy any needed variables from process.env to config.env
|
||||||
|
config.env.useAppli = process.env.USE_APPLI ? true : false;
|
||||||
|
|
||||||
|
// do not forget to return the changed config object!
|
||||||
|
return config;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
video: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
require('@applitools/eyes-cypress')(module);
|
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"video": false
|
|
||||||
}
|
|
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"env": {
|
"env": {
|
||||||
"cypress/globals": true
|
"cypress/globals": true
|
||||||
},
|
},
|
||||||
"extends": ["plugin:cypress/recommended"],
|
"extends": ["plugin:cypress/recommended"],
|
||||||
"plugins": ["cypress"],
|
"plugins": ["cypress"],
|
||||||
"rules":{
|
"rules": {
|
||||||
"cypress/no-unnecessary-waiting": 0
|
"cypress/no-unnecessary-waiting": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
5
cypress/fixtures/example.json
Normal file
5
cypress/fixtures/example.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": "Using fixtures to represent data",
|
||||||
|
"email": "hello@cypress.io",
|
||||||
|
"body": "Fixtures are a great way to mock data for responses to routes"
|
||||||
|
}
|
@@ -1,4 +1,6 @@
|
|||||||
import { Base64 } from 'js-base64';
|
const utf8ToB64 = (str) => {
|
||||||
|
return window.btoa(unescape(encodeURIComponent(str)));
|
||||||
|
};
|
||||||
|
|
||||||
export const mermaidUrl = (graphStr, options, api) => {
|
export const mermaidUrl = (graphStr, options, api) => {
|
||||||
const obj = {
|
const obj = {
|
||||||
@@ -6,7 +8,7 @@ export const mermaidUrl = (graphStr, options, api) => {
|
|||||||
mermaid: options,
|
mermaid: options,
|
||||||
};
|
};
|
||||||
const objStr = JSON.stringify(obj);
|
const objStr = JSON.stringify(obj);
|
||||||
let url = 'http://localhost:9000/e2e.html?graph=' + Base64.encodeURI(objStr);
|
let url = 'http://localhost:9000/e2e.html?graph=' + utf8ToB64(objStr);
|
||||||
if (api) {
|
if (api) {
|
||||||
url = 'http://localhost:9000/xss.html?graph=' + graphStr;
|
url = 'http://localhost:9000/xss.html?graph=' + graphStr;
|
||||||
}
|
}
|
||||||
@@ -43,15 +45,14 @@ export const imgSnapshotTest = (graphStr, _options, api = false, validation) =>
|
|||||||
options.fontSize = '16px';
|
options.fontSize = '16px';
|
||||||
}
|
}
|
||||||
const useAppli = Cypress.env('useAppli');
|
const useAppli = Cypress.env('useAppli');
|
||||||
const branch = Cypress.env('codeBranch');
|
//const useAppli = false;
|
||||||
cy.log('Hello ' + useAppli ? 'Appli' : 'image-snapshot');
|
cy.log('Hello ' + useAppli ? 'Appli' : 'image-snapshot');
|
||||||
const name = (options.name || cy.state('runnable').fullTitle()).replace(/\s+/g, '-');
|
const name = (options.name || cy.state('runnable').fullTitle()).replace(/\s+/g, '-');
|
||||||
|
|
||||||
if (useAppli) {
|
if (useAppli) {
|
||||||
cy.eyesOpen({
|
cy.eyesOpen({
|
||||||
appName: 'Mermaid-' + branch,
|
appName: 'Mermaid',
|
||||||
testName: name,
|
testName: name,
|
||||||
batchName: branch,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,6 +71,54 @@ export const imgSnapshotTest = (graphStr, _options, api = false, validation) =>
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const urlSnapshotTest = (url, _options, api = false, validation) => {
|
||||||
|
cy.log(_options);
|
||||||
|
const options = Object.assign(_options);
|
||||||
|
if (!options.fontFamily) {
|
||||||
|
options.fontFamily = 'courier';
|
||||||
|
}
|
||||||
|
if (!options.sequence) {
|
||||||
|
options.sequence = {};
|
||||||
|
}
|
||||||
|
if (!options.sequence || (options.sequence && !options.sequence.actorFontFamily)) {
|
||||||
|
options.sequence.actorFontFamily = 'courier';
|
||||||
|
}
|
||||||
|
if (options.sequence && !options.sequence.noteFontFamily) {
|
||||||
|
options.sequence.noteFontFamily = 'courier';
|
||||||
|
}
|
||||||
|
options.sequence.actorFontFamily = 'courier';
|
||||||
|
options.sequence.noteFontFamily = 'courier';
|
||||||
|
options.sequence.messageFontFamily = 'courier';
|
||||||
|
if (options.sequence && !options.sequence.actorFontFamily) {
|
||||||
|
options.sequence.actorFontFamily = 'courier';
|
||||||
|
}
|
||||||
|
if (!options.fontSize) {
|
||||||
|
options.fontSize = '16px';
|
||||||
|
}
|
||||||
|
const useAppli = Cypress.env('useAppli');
|
||||||
|
cy.log('Hello ' + useAppli ? 'Appli' : 'image-snapshot');
|
||||||
|
const name = (options.name || cy.state('runnable').fullTitle()).replace(/\s+/g, '-');
|
||||||
|
|
||||||
|
if (useAppli) {
|
||||||
|
cy.eyesOpen({
|
||||||
|
appName: 'Mermaid',
|
||||||
|
testName: name,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
cy.visit(url);
|
||||||
|
if (validation) cy.get('svg').should(validation);
|
||||||
|
cy.get('body');
|
||||||
|
// Default name to test title
|
||||||
|
|
||||||
|
if (useAppli) {
|
||||||
|
cy.eyesCheckWindow('Click!');
|
||||||
|
cy.eyesClose();
|
||||||
|
} else {
|
||||||
|
cy.matchImageSnapshot(name);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const renderGraph = (graphStr, options, api) => {
|
export const renderGraph = (graphStr, options, api) => {
|
||||||
const url = mermaidUrl(graphStr, options, api);
|
const url = mermaidUrl(graphStr, options, api);
|
||||||
|
|
||||||
|
@@ -15,11 +15,13 @@ describe('Configuration', () => {
|
|||||||
|
|
||||||
// Check the marker-end property to make sure it is properly set to
|
// Check the marker-end property to make sure it is properly set to
|
||||||
// start with #
|
// start with #
|
||||||
cy.get('.edgePath path')
|
cy.get('.edgePaths').within(() => {
|
||||||
.first()
|
cy.get('path')
|
||||||
.should('have.attr', 'marker-end')
|
.first()
|
||||||
.should('exist')
|
.should('have.attr', 'marker-end')
|
||||||
.and('include', 'url(#');
|
.should('exist')
|
||||||
|
.and('include', 'url(#');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
it('should handle default value false of arrowMarkerAbsolute', () => {
|
it('should handle default value false of arrowMarkerAbsolute', () => {
|
||||||
renderGraph(
|
renderGraph(
|
||||||
@@ -35,13 +37,15 @@ describe('Configuration', () => {
|
|||||||
|
|
||||||
// Check the marker-end property to make sure it is properly set to
|
// Check the marker-end property to make sure it is properly set to
|
||||||
// start with #
|
// start with #
|
||||||
cy.get('.edgePath path')
|
cy.get('.edgePaths').within(() => {
|
||||||
.first()
|
cy.get('path')
|
||||||
.should('have.attr', 'marker-end')
|
.first()
|
||||||
.should('exist')
|
.should('have.attr', 'marker-end')
|
||||||
.and('include', 'url(#');
|
.should('exist')
|
||||||
|
.and('include', 'url(#');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
it('should handle arrowMarkerAbsolute excplicitly set to false', () => {
|
it('should handle arrowMarkerAbsolute explicitly set to false', () => {
|
||||||
renderGraph(
|
renderGraph(
|
||||||
`graph TD
|
`graph TD
|
||||||
A[Christmas] -->|Get money| B(Go shopping)
|
A[Christmas] -->|Get money| B(Go shopping)
|
||||||
@@ -57,13 +61,15 @@ describe('Configuration', () => {
|
|||||||
|
|
||||||
// Check the marker-end property to make sure it is properly set to
|
// Check the marker-end property to make sure it is properly set to
|
||||||
// start with #
|
// start with #
|
||||||
cy.get('.edgePath path')
|
cy.get('.edgePaths').within(() => {
|
||||||
.first()
|
cy.get('path')
|
||||||
.should('have.attr', 'marker-end')
|
.first()
|
||||||
.should('exist')
|
.should('have.attr', 'marker-end')
|
||||||
.and('include', 'url(#');
|
.should('exist')
|
||||||
|
.and('include', 'url(#');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
it('should handle arrowMarkerAbsolute excplicitly set to "false" as false', () => {
|
it('should handle arrowMarkerAbsolute explicitly set to "false" as false', () => {
|
||||||
renderGraph(
|
renderGraph(
|
||||||
`graph TD
|
`graph TD
|
||||||
A[Christmas] -->|Get money| B(Go shopping)
|
A[Christmas] -->|Get money| B(Go shopping)
|
||||||
@@ -79,15 +85,17 @@ describe('Configuration', () => {
|
|||||||
|
|
||||||
// Check the marker-end property to make sure it is properly set to
|
// Check the marker-end property to make sure it is properly set to
|
||||||
// start with #
|
// start with #
|
||||||
cy.get('.edgePath path')
|
cy.get('.edgePaths').within(() => {
|
||||||
.first()
|
cy.get('path')
|
||||||
.should('have.attr', 'marker-end')
|
.first()
|
||||||
.should('exist')
|
.should('have.attr', 'marker-end')
|
||||||
.and('include', 'url(#');
|
.should('exist')
|
||||||
|
.and('include', 'url(#');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
it('should handle arrowMarkerAbsolute set to true', () => {
|
it('should handle arrowMarkerAbsolute set to true', () => {
|
||||||
renderGraph(
|
renderGraph(
|
||||||
`graph TD
|
`flowchart TD
|
||||||
A[Christmas] -->|Get money| B(Go shopping)
|
A[Christmas] -->|Get money| B(Go shopping)
|
||||||
B --> C{Let me think}
|
B --> C{Let me think}
|
||||||
C -->|One| D[Laptop]
|
C -->|One| D[Laptop]
|
||||||
@@ -99,11 +107,13 @@ describe('Configuration', () => {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
cy.get('.edgePath path')
|
cy.get('.edgePaths').within(() => {
|
||||||
.first()
|
cy.get('path')
|
||||||
.should('have.attr', 'marker-end')
|
.first()
|
||||||
.should('exist')
|
.should('have.attr', 'marker-end')
|
||||||
.and('include', 'url(http://localhost');
|
.should('exist')
|
||||||
|
.and('include', 'url(http://localhost');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
it('should not taint the initial configuration when using multiple directives', () => {
|
it('should not taint the initial configuration when using multiple directives', () => {
|
||||||
const url = 'http://localhost:9000/regression/issue-1874.html';
|
const url = 'http://localhost:9000/regression/issue-1874.html';
|
||||||
|
10
cypress/integration/other/ghsa.spec.js
Normal file
10
cypress/integration/other/ghsa.spec.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { urlSnapshotTest } from '../../helpers/util';
|
||||||
|
|
||||||
|
describe('CSS injections', () => {
|
||||||
|
it('should not allow CSS injections outside of the diagram', () => {
|
||||||
|
urlSnapshotTest('http://localhost:9000/ghsa1.html', {
|
||||||
|
logLevel: 1,
|
||||||
|
flowchart: { htmlLabels: false },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@@ -1,266 +1,180 @@
|
|||||||
describe('Interaction', () => {
|
describe('Interaction', () => {
|
||||||
describe('Interaction - security level loose', () => {
|
describe('Security level loose', () => {
|
||||||
it('Graph: should handle a click on a node with a bound function', () => {
|
beforeEach(() => {
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
cy.visit('http://localhost:9000/click_security_loose.html');
|
||||||
cy.viewport(1440, 1024);
|
});
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g#flowchart-Function-2').click();
|
|
||||||
|
|
||||||
|
it('Graph: should handle a click on a node with a bound function', () => {
|
||||||
|
cy.contains('FunctionTest1').parents('.node').click();
|
||||||
cy.get('.created-by-click').should('have.text', 'Clicked By Flow');
|
cy.get('.created-by-click').should('have.text', 'Clicked By Flow');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Graph: should handle a click on a node with a bound function with args', () => {
|
it('Graph: should handle a click on a node with a bound function with args', () => {
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
cy.contains('FunctionArgTest2').parents('.node').click();
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g#flowchart-FunctionArg-18').click();
|
|
||||||
|
|
||||||
cy.get('.created-by-click-2').should('have.text', 'Clicked By Flow: ARGUMENT');
|
cy.get('.created-by-click-2').should('have.text', 'Clicked By Flow: ARGUMENT');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Flowchart: should handle a click on a node with a bound function where the node starts with a number', () => {
|
it('Flowchart: should handle a click on a node with a bound function where the node starts with a number', () => {
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
cy.contains('2FunctionArg').parents('.node').click();
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g[id="flowchart-FunctionArg-22"]').click();
|
|
||||||
|
|
||||||
cy.get('.created-by-click-2').should('have.text', 'Clicked By Flow: ARGUMENT');
|
cy.get('.created-by-click-2').should('have.text', 'Clicked By Flow: ARGUMENT');
|
||||||
});
|
});
|
||||||
it('Graph: should handle a click on a node with a bound url', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('#flowchart-URL-3').click();
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
it('Graph: should handle a click on a node with a bound url', () => {
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
// When there is a URL, cy.contains selects the a tag instead of the span. The .node is a child of a, so we have to use find instead of parent.
|
||||||
|
cy.contains('URLTest1').find('.node').click();
|
||||||
|
cy.location().should(({ href }) => {
|
||||||
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('Graph: should handle a click on a node with a bound url where the node starts with a number', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g[id="flowchart-2URL-7"]').click();
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
it('Graph: should handle a click on a node with a bound url where the node starts with a number', () => {
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
cy.contains('2URL').find('.node').click();
|
||||||
|
cy.location().should(({ href }) => {
|
||||||
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Flowchart-v2: should handle a click on a node with a bound function', () => {
|
it('Flowchart-v2: should handle a click on a node with a bound function', () => {
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
cy.contains('FunctionTest2').parents('.node').click();
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g#flowchart-Function-10').click();
|
|
||||||
|
|
||||||
cy.get('.created-by-click').should('have.text', 'Clicked By Flow');
|
cy.get('.created-by-click').should('have.text', 'Clicked By Flow');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Flowchart-v2: should handle a click on a node with a bound function where the node starts with a number', () => {
|
it('Flowchart-v2: should handle a click on a node with a bound function where the node starts with a number', () => {
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
cy.contains('10Function').parents('.node').click();
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g[id="flowchart-1Function-14"]').click();
|
|
||||||
|
|
||||||
cy.get('.created-by-click').should('have.text', 'Clicked By Flow');
|
cy.get('.created-by-click').should('have.text', 'Clicked By Flow');
|
||||||
});
|
});
|
||||||
it('Flowchart-v2: should handle a click on a node with a bound url', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('#flowchart-URL-11').click();
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
it('Flowchart-v2: should handle a click on a node with a bound url', () => {
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
cy.contains('URLTest2').find('.node').click();
|
||||||
|
cy.location().should(({ href }) => {
|
||||||
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('Flowchart-v2: should handle a click on a node with a bound url where the node starts with a number', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g[id="flowchart-2URL-15"]').click();
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
it('Flowchart-v2: should handle a click on a node with a bound url where the node starts with a number', () => {
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
cy.contains('20URL').find('.node').click();
|
||||||
|
cy.location().should(({ href }) => {
|
||||||
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a click on a task with a bound URL clicking on the rect', () => {
|
it('should handle a click on a task with a bound URL clicking on the rect', () => {
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
cy.get('rect#cl1').click({ force: true });
|
||||||
cy.viewport(1440, 1024);
|
cy.location().should(({ href }) => {
|
||||||
cy.visit(url);
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
cy.get('body').find('rect#cl1').click({ force: true });
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a click on a task with a bound URL clicking on the text', () => {
|
it('should handle a click on a task with a bound URL clicking on the text', () => {
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
cy.get('text#cl1-text').click({ force: true });
|
||||||
cy.viewport(1440, 1024);
|
cy.location().should(({ href }) => {
|
||||||
cy.visit(url);
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
cy.get('body').find('text#cl1-text').click({ force: true });
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should handle a click on a task with a bound function without args', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('rect#cl2').click({ force: true });
|
|
||||||
|
|
||||||
|
it('should handle a click on a task with a bound function without args', () => {
|
||||||
|
cy.get('rect#cl2').click({ force: true });
|
||||||
cy.get('.created-by-gant-click').should('have.text', 'Clicked By Gant cl2');
|
cy.get('.created-by-gant-click').should('have.text', 'Clicked By Gant cl2');
|
||||||
});
|
});
|
||||||
it('should handle a click on a task with a bound function with args', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('rect#cl3').click({ force: true });
|
|
||||||
|
|
||||||
|
it('should handle a click on a task with a bound function with args', () => {
|
||||||
|
cy.get('rect#cl3').click({ force: true });
|
||||||
cy.get('.created-by-gant-click').should('have.text', 'Clicked By Gant test1 test2 test3');
|
cy.get('.created-by-gant-click').should('have.text', 'Clicked By Gant test1 test2 test3');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a click on a task with a bound function without args', () => {
|
it('should handle a click on a task with a bound function without args', () => {
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
cy.get('text#cl2-text').click({ force: true });
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('text#cl2-text').click({ force: true });
|
|
||||||
|
|
||||||
cy.get('.created-by-gant-click').should('have.text', 'Clicked By Gant cl2');
|
cy.get('.created-by-gant-click').should('have.text', 'Clicked By Gant cl2');
|
||||||
});
|
});
|
||||||
it('should handle a click on a task with a bound function with args ', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_loose.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('text#cl3-text').click({ force: true });
|
|
||||||
|
|
||||||
|
it('should handle a click on a task with a bound function with args ', () => {
|
||||||
|
cy.get('text#cl3-text').click({ force: true });
|
||||||
cy.get('.created-by-gant-click').should('have.text', 'Clicked By Gant test1 test2 test3');
|
cy.get('.created-by-gant-click').should('have.text', 'Clicked By Gant test1 test2 test3');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Interaction - security level tight', () => {
|
describe('Interaction - security level tight', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit('http://localhost:9000/click_security_strict.html');
|
||||||
|
});
|
||||||
it('should handle a click on a node without a bound function', () => {
|
it('should handle a click on a node without a bound function', () => {
|
||||||
const url = 'http://localhost:9000/click_security_strict.html';
|
cy.contains('Function1').parents('.node').click();
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g#flowchart-Function-2').click();
|
|
||||||
|
|
||||||
cy.get('.created-by-click').should('not.exist');
|
cy.get('.created-by-click').should('not.exist');
|
||||||
// cy.get('.created-by-click').should('not.have.text', 'Clicked By Flow');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a click on a node with a bound function where the node starts with a number', () => {
|
it('should handle a click on a node with a bound function where the node starts with a number', () => {
|
||||||
const url = 'http://localhost:9000/click_security_strict.html';
|
cy.contains('1Function').parents('.node').click();
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g[id="flowchart-1Function-6"]').click();
|
|
||||||
|
|
||||||
// cy.get('.created-by-click').should('not.have.text', 'Clicked By Flow');
|
|
||||||
cy.get('.created-by-click').should('not.exist');
|
cy.get('.created-by-click').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should handle a click on a node with a bound url', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_strict.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g#flowchart-URL-3').click();
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
it('should handle a click on a node with a bound url', () => {
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
cy.contains('URL1').find('.node').click();
|
||||||
|
cy.location().should(({ href }) => {
|
||||||
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should handle a click on a node with a bound url where the node starts with a number', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_strict.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g[id="flowchart-2URL-7"]').click();
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
it('should handle a click on a node with a bound url where the node starts with a number', () => {
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
cy.contains('2URL').find('.node').click();
|
||||||
|
cy.location().should(({ href }) => {
|
||||||
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a click on a task with a bound URL clicking on the rect', () => {
|
it('should handle a click on a task with a bound URL clicking on the rect', () => {
|
||||||
const url = 'http://localhost:9000/click_security_strict.html';
|
cy.get('rect#cl1').click({ force: true });
|
||||||
cy.viewport(1440, 1024);
|
cy.location().should(({ href }) => {
|
||||||
cy.visit(url);
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
cy.get('body').find('rect#cl1').click({ force: true });
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a click on a task with a bound URL clicking on the text', () => {
|
it('should handle a click on a task with a bound URL clicking on the text', () => {
|
||||||
const url = 'http://localhost:9000/click_security_strict.html';
|
cy.get('text#cl1-text').click({ force: true });
|
||||||
cy.viewport(1440, 1024);
|
cy.location().should(({ href }) => {
|
||||||
cy.visit(url);
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
cy.get('body').find('text#cl1-text').click({ force: true });
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should handle a click on a task with a bound function', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_strict.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('rect#cl2').click({ force: true });
|
|
||||||
|
|
||||||
// cy.get('.created-by-gant-click').should('not.have.text', 'Clicked By Gant cl2');
|
it('should handle a click on a task with a bound function', () => {
|
||||||
|
cy.get('rect#cl2').click({ force: true });
|
||||||
cy.get('.created-by-gant-click').should('not.exist');
|
cy.get('.created-by-gant-click').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should handle a click on a task with a bound function', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_strict.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('text#cl2-text').click({ force: true });
|
|
||||||
|
|
||||||
// cy.get('.created-by-gant-click').should('not.have.text', 'Clicked By Gant cl2');
|
it('should handle a click on a task with a bound function', () => {
|
||||||
|
cy.get('text#cl2-text').click({ force: true });
|
||||||
cy.get('.created-by-gant-click').should('not.exist');
|
cy.get('.created-by-gant-click').should('not.exist');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Interaction - security level other, missspelling', () => {
|
describe('Interaction - security level other, missspelling', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit('http://localhost:9000/click_security_other.html');
|
||||||
|
});
|
||||||
|
|
||||||
it('should handle a click on a node with a bound function', () => {
|
it('should handle a click on a node with a bound function', () => {
|
||||||
const url = 'http://localhost:9000/click_security_other.html';
|
cy.contains('Function1').parents('.node').click();
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g#flowchart-Function-2').click();
|
|
||||||
|
|
||||||
// cy.get('.created-by-click').should('not.have.text', 'Clicked By Flow');
|
|
||||||
cy.get('.created-by-click').should('not.exist');
|
cy.get('.created-by-click').should('not.exist');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a click on a node with a bound function where the node starts with a number', () => {
|
it('should handle a click on a node with a bound function where the node starts with a number', () => {
|
||||||
const url = 'http://localhost:9000/click_security_other.html';
|
cy.contains('1Function').parents('.node').click();
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g[id="flowchart-1Function-6"]').click();
|
|
||||||
|
|
||||||
cy.get('.created-by-click').should('not.exist');
|
|
||||||
cy.get('.created-by-click').should('not.exist');
|
cy.get('.created-by-click').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should handle a click on a node with a bound url', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_other.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('g#flowchart-URL-3').click();
|
|
||||||
|
|
||||||
cy.location().should((location) => {
|
it('should handle a click on a node with a bound url', () => {
|
||||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
cy.contains('URL1').find('.node').click();
|
||||||
|
cy.location().should(({ href }) => {
|
||||||
|
expect(href).to.eq('http://localhost:9000/empty.html');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a click on a task with a bound function', () => {
|
it('should handle a click on a task with a bound function', () => {
|
||||||
const url = 'http://localhost:9000/click_security_other.html';
|
cy.get('rect#cl2').click({ force: true });
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('rect#cl2').click({ force: true });
|
|
||||||
|
|
||||||
cy.get('.created-by-gant-click').should('not.exist');
|
cy.get('.created-by-gant-click').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should handle a click on a task with a bound function', () => {
|
|
||||||
const url = 'http://localhost:9000/click_security_other.html';
|
|
||||||
cy.viewport(1440, 1024);
|
|
||||||
cy.visit(url);
|
|
||||||
cy.get('body').find('text#cl2-text').click({ force: true });
|
|
||||||
|
|
||||||
|
it('should handle a click on a task with a bound function', () => {
|
||||||
|
cy.get('text#cl2-text').click({ force: true });
|
||||||
cy.get('.created-by-gant-click').should('not.exist');
|
cy.get('.created-by-gant-click').should('not.exist');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
describe('Rerendering', () => {
|
describe('Rerendering', () => {
|
||||||
it('should be able to render after an error has occured', () => {
|
it('should be able to render after an error has occurred', () => {
|
||||||
const url = 'http://localhost:9000/render-after-error.html';
|
const url = 'http://localhost:9000/render-after-error.html';
|
||||||
cy.viewport(1440, 1024);
|
cy.viewport(1440, 1024);
|
||||||
cy.visit(url);
|
cy.visit(url);
|
||||||
|
@@ -15,7 +15,7 @@ describe('XSS', () => {
|
|||||||
|
|
||||||
it('should not allow tags in the css', () => {
|
it('should not allow tags in the css', () => {
|
||||||
const str =
|
const str =
|
||||||
'eyJjb2RlIjoiJSV7aW5pdDogeyAnZm9udEZhbWlseSc6ICdcXFwiPjwvc3R5bGU-PGltZyBzcmM9eCBvbmVycm9yPXhzc0F0dGFjaygpPid9IH0lJVxuZ3JhcGggTFJcbiAgICAgQSAtLT4gQiIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0IiwiZmxvd2NoYXJ0Ijp7Imh0bWxMYWJlbHMiOmZhbHNlfX0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9';
|
'eyJjb2RlIjoiJSV7aW5pdDogeyAnZm9udEZhbWlseSc6ICdcXFwiPjwvc3R5bGU+PGltZyBzcmM9eCBvbmVycm9yPXhzc0F0dGFjaygpPid9IH0lJVxuZ3JhcGggTFJcbiAgICAgQSAtLT4gQiIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0IiwiZmxvd2NoYXJ0Ijp7Imh0bWxMYWJlbHMiOmZhbHNlfX0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9';
|
||||||
|
|
||||||
const url = mermaidUrl(
|
const url = mermaidUrl(
|
||||||
str,
|
str,
|
||||||
@@ -60,52 +60,55 @@ describe('XSS', () => {
|
|||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating htmlLabels into a false positive', () => {
|
it('should not allow manipulating htmlLabels into a false positive', () => {
|
||||||
cy.visit('http://localhost:9000/xss4.html');
|
cy.visit('http://localhost:9000/xss4.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating antiscript to run javascript', () => {
|
it('should not allow manipulating antiscript to run javascript', () => {
|
||||||
cy.visit('http://localhost:9000/xss5.html');
|
cy.visit('http://localhost:9000/xss5.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating antiscript to run javascript using onerror', () => {
|
it('should not allow manipulating antiscript to run javascript using onerror', () => {
|
||||||
cy.visit('http://localhost:9000/xss6.html');
|
cy.visit('http://localhost:9000/xss6.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating antiscript to run javascript using onerror in state diagrams with dagre wrapper', () => {
|
it('should not allow manipulating antiscript to run javascript using onerror in state diagrams with dagre wrapper', () => {
|
||||||
cy.visit('http://localhost:9000/xss8.html');
|
cy.visit('http://localhost:9000/xss8.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
it('should not allow manipulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
||||||
|
cy.on('uncaught:exception', (_err, _runnable) => {
|
||||||
|
return false; // continue rendering even if there if mermaid throws an error
|
||||||
|
});
|
||||||
cy.visit('http://localhost:9000/xss9.html');
|
cy.visit('http://localhost:9000/xss9.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
it('should not allow manipulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
||||||
cy.visit('http://localhost:9000/xss10.html');
|
cy.visit('http://localhost:9000/xss10.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
it('should not allow manipulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
||||||
cy.visit('http://localhost:9000/xss11.html');
|
cy.visit('http://localhost:9000/xss11.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
it('should not allow manipulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
||||||
cy.visit('http://localhost:9000/xss12.html');
|
cy.visit('http://localhost:9000/xss12.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
it('should not allow manipulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
||||||
cy.visit('http://localhost:9000/xss13.html');
|
cy.visit('http://localhost:9000/xss13.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
});
|
});
|
||||||
it('should not allow maniplulating antiscript to run javascript iframes in class diagrams', () => {
|
it('should not allow manipulating antiscript to run javascript iframes in class diagrams', () => {
|
||||||
cy.visit('http://localhost:9000/xss14.html');
|
cy.visit('http://localhost:9000/xss14.html');
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.get('#the-malware').should('not.exist');
|
cy.get('#the-malware').should('not.exist');
|
||||||
|
@@ -381,7 +381,7 @@ describe('Class diagram V2', () => {
|
|||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('16b: should handle the direction statemnent with TB', () => {
|
it('16b: should handle the direction statement with TB', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
@@ -406,7 +406,7 @@ describe('Class diagram V2', () => {
|
|||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('18: should handle the direction statemnent with LR', () => {
|
it('18: should handle the direction statement with LR', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
@@ -430,7 +430,7 @@ describe('Class diagram V2', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
it('17a: should handle the direction statemnent with BT', () => {
|
it('17a: should handle the direction statement with BT', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
@@ -454,7 +454,7 @@ describe('Class diagram V2', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
it('17b: should handle the direction statemment with RL', () => {
|
it('17b: should handle the direction statement with RL', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
|
@@ -1,410 +1,410 @@
|
|||||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util';
|
import { imgSnapshotTest, renderGraph } from '../../helpers/util';
|
||||||
|
|
||||||
describe('Class diagram', () => {
|
describe('Class diagram', () => {
|
||||||
it('1: should render a simple class diagram', () => {
|
it('1: should render a simple class diagram', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01 <|-- AveryLongClass : Cool
|
Class01 <|-- AveryLongClass : Cool
|
||||||
<<interface>> Class01
|
<<interface>> Class01
|
||||||
Class03 *-- Class04
|
Class03 *-- Class04
|
||||||
Class05 o-- Class06
|
Class05 o-- Class06
|
||||||
Class07 .. Class08
|
Class07 .. Class08
|
||||||
Class09 --> C2 : Where am i?
|
Class09 --> C2 : Where am i?
|
||||||
Class09 --* C3
|
Class09 --* C3
|
||||||
Class09 --|> Class07
|
Class09 --|> Class07
|
||||||
Class12 <|.. Class08
|
Class12 <|.. Class08
|
||||||
Class11 ..>Class12
|
Class11 ..>Class12
|
||||||
Class07 : equals()
|
Class07 : equals()
|
||||||
Class07 : Object[] elementData
|
Class07 : Object[] elementData
|
||||||
Class01 : size()
|
Class01 : size()
|
||||||
Class01 : int chimp
|
Class01 : int chimp
|
||||||
Class01 : int gorilla
|
Class01 : int gorilla
|
||||||
Class01 : -int privateChimp
|
Class01 : -int privateChimp
|
||||||
Class01 : +int publicGorilla
|
Class01 : +int publicGorilla
|
||||||
Class01 : #int protectedMarmoset
|
Class01 : #int protectedMarmoset
|
||||||
Class08 <--> C2: Cool label
|
Class08 <--> C2: Cool label
|
||||||
class Class10 {
|
class Class10 {
|
||||||
<<service>>
|
<<service>>
|
||||||
int id
|
int id
|
||||||
test()
|
test()
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
{ logLevel: 1 }
|
{ logLevel: 1 }
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('2: should render a simple class diagrams with cardinality', () => {
|
it('2: should render a simple class diagrams with cardinality', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
||||||
<<interface>> Class01
|
<<interface>> Class01
|
||||||
Class03 "1" *-- "*" Class04
|
Class03 "1" *-- "*" Class04
|
||||||
Class05 "1" o-- "many" Class06
|
Class05 "1" o-- "many" Class06
|
||||||
Class07 "1" .. "*" Class08
|
Class07 "1" .. "*" Class08
|
||||||
Class09 "1" --> "*" C2 : Where am i?
|
Class09 "1" --> "*" C2 : Where am i?
|
||||||
Class09 "*" --* "*" C3
|
Class09 "*" --* "*" C3
|
||||||
Class09 "1" --|> "1" Class07
|
Class09 "1" --|> "1" Class07
|
||||||
Class07 : equals()
|
Class07 : equals()
|
||||||
Class07 : Object[] elementData
|
Class07 : Object[] elementData
|
||||||
Class01 : size()
|
Class01 : size()
|
||||||
Class01 : int chimp
|
Class01 : int chimp
|
||||||
Class01 : int gorilla
|
Class01 : int gorilla
|
||||||
Class08 "1" <--> "*" C2: Cool label
|
Class08 "1" <--> "*" C2: Cool label
|
||||||
class Class10 {
|
class Class10 {
|
||||||
<<service>>
|
<<service>>
|
||||||
int id
|
int id
|
||||||
test()
|
test()
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('3: should render a simple class diagram with different visibilities', () => {
|
it('3: should render a simple class diagram with different visibilities', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01 <|-- AveryLongClass : Cool
|
Class01 <|-- AveryLongClass : Cool
|
||||||
<<interface>> Class01
|
<<interface>> Class01
|
||||||
Class01 : -privateMethod()
|
Class01 : -privateMethod()
|
||||||
Class01 : +publicMethod()
|
Class01 : +publicMethod()
|
||||||
Class01 : #protectedMethod()
|
Class01 : #protectedMethod()
|
||||||
Class01 : -int privateChimp
|
Class01 : -int privateChimp
|
||||||
Class01 : +int publicGorilla
|
Class01 : +int publicGorilla
|
||||||
Class01 : #int protectedMarmoset
|
Class01 : #int protectedMarmoset
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('4: should render a simple class diagram with comments', () => {
|
it('4: should render a simple class diagram with comments', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
%% this is a comment
|
%% this is a comment
|
||||||
Class01 <|-- AveryLongClass : Cool
|
Class01 <|-- AveryLongClass : Cool
|
||||||
<<interface>> Class01
|
<<interface>> Class01
|
||||||
Class03 *-- Class04
|
Class03 *-- Class04
|
||||||
Class05 o-- Class06
|
Class05 o-- Class06
|
||||||
Class07 .. Class08
|
Class07 .. Class08
|
||||||
Class09 --> C2 : Where am i?
|
Class09 --> C2 : Where am i?
|
||||||
Class09 --* C3
|
Class09 --* C3
|
||||||
Class09 --|> Class07
|
Class09 --|> Class07
|
||||||
Class07 : equals()
|
Class07 : equals()
|
||||||
Class07 : Object[] elementData
|
Class07 : Object[] elementData
|
||||||
Class01 : size()
|
Class01 : size()
|
||||||
Class01 : int chimp
|
Class01 : int chimp
|
||||||
Class01 : int gorilla
|
Class01 : int gorilla
|
||||||
Class08 <--> C2: Cool label
|
Class08 <--> C2: Cool label
|
||||||
class Class10 {
|
class Class10 {
|
||||||
<<service>>
|
<<service>>
|
||||||
int id
|
int id
|
||||||
test()
|
test()
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('5: should render a simple class diagram with abstract method', () => {
|
it('5: should render a simple class diagram with abstract method', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01 <|-- AveryLongClass : Cool
|
Class01 <|-- AveryLongClass : Cool
|
||||||
Class01 : someMethod()*
|
Class01 : someMethod()*
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('6: should render a simple class diagram with static method', () => {
|
it('6: should render a simple class diagram with static method', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01 <|-- AveryLongClass : Cool
|
Class01 <|-- AveryLongClass : Cool
|
||||||
Class01 : someMethod()$
|
Class01 : someMethod()$
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('7: should render a simple class diagram with Generic class', () => {
|
it('7: should render a simple class diagram with Generic class', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
class Class01~T~
|
class Class01~T~
|
||||||
Class01 : size()
|
Class01 : size()
|
||||||
Class01 : int chimp
|
Class01 : int chimp
|
||||||
Class01 : int gorilla
|
Class01 : int gorilla
|
||||||
Class08 <--> C2: Cool label
|
Class08 <--> C2: Cool label
|
||||||
class Class10~T~ {
|
class Class10~T~ {
|
||||||
<<service>>
|
<<service>>
|
||||||
int id
|
int id
|
||||||
test()
|
test()
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('8: should render a simple class diagram with Generic class and relations', () => {
|
it('8: should render a simple class diagram with Generic class and relations', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01~T~ <|-- AveryLongClass : Cool
|
Class01~T~ <|-- AveryLongClass : Cool
|
||||||
Class03~T~ *-- Class04~T~
|
Class03~T~ *-- Class04~T~
|
||||||
Class01 : size()
|
Class01 : size()
|
||||||
Class01 : int chimp
|
Class01 : int chimp
|
||||||
Class01 : int gorilla
|
Class01 : int gorilla
|
||||||
Class08 <--> C2: Cool label
|
Class08 <--> C2: Cool label
|
||||||
class Class10~T~ {
|
class Class10~T~ {
|
||||||
<<service>>
|
<<service>>
|
||||||
int id
|
int id
|
||||||
test()
|
test()
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('9: should render a simple class diagram with clickable link', () => {
|
it('9: should render a simple class diagram with clickable link', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01~T~ <|-- AveryLongClass : Cool
|
Class01~T~ <|-- AveryLongClass : Cool
|
||||||
Class03~T~ *-- Class04~T~
|
Class03~T~ *-- Class04~T~
|
||||||
Class01 : size()
|
Class01 : size()
|
||||||
Class01 : int chimp
|
Class01 : int chimp
|
||||||
Class01 : int gorilla
|
Class01 : int gorilla
|
||||||
Class08 <--> C2: Cool label
|
Class08 <--> C2: Cool label
|
||||||
class Class10~T~ {
|
class Class10~T~ {
|
||||||
<<service>>
|
<<service>>
|
||||||
int id
|
int id
|
||||||
test()
|
test()
|
||||||
}
|
}
|
||||||
link Class01 "google.com" "A Tooltip"
|
link Class01 "google.com" "A Tooltip"
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('10: should render a simple class diagram with clickable callback', () => {
|
it('10: should render a simple class diagram with clickable callback', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01~T~ <|-- AveryLongClass : Cool
|
Class01~T~ <|-- AveryLongClass : Cool
|
||||||
Class03~T~ *-- Class04~T~
|
Class03~T~ *-- Class04~T~
|
||||||
Class01 : size()
|
Class01 : size()
|
||||||
Class01 : int chimp
|
Class01 : int chimp
|
||||||
Class01 : int gorilla
|
Class01 : int gorilla
|
||||||
Class08 <--> C2: Cool label
|
Class08 <--> C2: Cool label
|
||||||
class Class10~T~ {
|
class Class10~T~ {
|
||||||
<<service>>
|
<<service>>
|
||||||
int id
|
int id
|
||||||
test()
|
test()
|
||||||
}
|
}
|
||||||
callback Class01 "functionCall" "A Tooltip"
|
callback Class01 "functionCall" "A Tooltip"
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('11: should render a simple class diagram with return type on method', () => {
|
it('11: should render a simple class diagram with return type on method', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
class Class10~T~ {
|
class Class10~T~ {
|
||||||
int[] id
|
int[] id
|
||||||
test(int[] ids) bool
|
test(int[] ids) bool
|
||||||
testArray() bool[]
|
testArray() bool[]
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('12: should render a simple class diagram with generic types', () => {
|
it('12: should render a simple class diagram with generic types', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
class Class10~T~ {
|
class Class10~T~ {
|
||||||
int[] id
|
int[] id
|
||||||
List~int~ ids
|
List~int~ ids
|
||||||
test(List~int~ ids) List~bool~
|
test(List~int~ ids) List~bool~
|
||||||
testArray() bool[]
|
testArray() bool[]
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('13: should render a simple class diagram with css classes applied', () => {
|
it('13: should render a simple class diagram with css classes applied', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
class Class10 {
|
class Class10 {
|
||||||
int[] id
|
int[] id
|
||||||
List~int~ ids
|
List~int~ ids
|
||||||
test(List~int~ ids) List~bool~
|
test(List~int~ ids) List~bool~
|
||||||
testArray() bool[]
|
testArray() bool[]
|
||||||
}
|
}
|
||||||
|
|
||||||
class Class10:::exClass2
|
class Class10:::exClass2
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('14: should render a simple class diagram with css classes applied directly', () => {
|
it('14: should render a simple class diagram with css classes applied directly', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
class Class10:::exClass2 {
|
class Class10:::exClass2 {
|
||||||
int[] id
|
int[] id
|
||||||
List~int~ ids
|
List~int~ ids
|
||||||
test(List~int~ ids) List~bool~
|
test(List~int~ ids) List~bool~
|
||||||
testArray() bool[]
|
testArray() bool[]
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('15: should render a simple class diagram with css classes applied two multiple classes', () => {
|
it('15: should render a simple class diagram with css classes applied two multiple classes', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
class Class10
|
class Class10
|
||||||
class Class20
|
class Class20
|
||||||
|
|
||||||
cssClass "Class10, Class20" exClass2
|
cssClass "Class10, Class20" exClass2
|
||||||
class Class20:::exClass2
|
class Class20:::exClass2
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('16: should render multiple class diagrams', () => {
|
it('16: should render multiple class diagrams', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
[
|
[
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
||||||
<<interface>> Class01
|
<<interface>> Class01
|
||||||
Class03 "1" *-- "*" Class04
|
Class03 "1" *-- "*" Class04
|
||||||
Class05 "1" o-- "many" Class06
|
Class05 "1" o-- "many" Class06
|
||||||
Class07 "1" .. "*" Class08
|
Class07 "1" .. "*" Class08
|
||||||
Class09 "1" --> "*" C2 : Where am i?
|
Class09 "1" --> "*" C2 : Where am i?
|
||||||
Class09 "*" --* "*" C3
|
Class09 "*" --* "*" C3
|
||||||
Class09 "1" --|> "1" Class07
|
Class09 "1" --|> "1" Class07
|
||||||
Class07 : equals()
|
Class07 : equals()
|
||||||
Class07 : Object[] elementData
|
Class07 : Object[] elementData
|
||||||
Class01 : size()
|
Class01 : size()
|
||||||
Class01 : int chimp
|
Class01 : int chimp
|
||||||
Class01 : int gorilla
|
Class01 : int gorilla
|
||||||
Class08 "1" <--> "*" C2: Cool label
|
Class08 "1" <--> "*" C2: Cool label
|
||||||
class Class10 {
|
class Class10 {
|
||||||
<<service>>
|
<<service>>
|
||||||
int id
|
int id
|
||||||
test()
|
test()
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
`
|
`
|
||||||
classDiagram
|
classDiagram
|
||||||
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
||||||
<<interface>> Class01
|
<<interface>> Class01
|
||||||
Class03 "1" *-- "*" Class04
|
Class03 "1" *-- "*" Class04
|
||||||
Class05 "1" o-- "many" Class06
|
Class05 "1" o-- "many" Class06
|
||||||
Class07 "1" .. "*" Class08
|
Class07 "1" .. "*" Class08
|
||||||
Class09 "1" --> "*" C2 : Where am i?
|
Class09 "1" --> "*" C2 : Where am i?
|
||||||
Class09 "*" --* "*" C3
|
Class09 "*" --* "*" C3
|
||||||
Class09 "1" --|> "1" Class07
|
Class09 "1" --|> "1" Class07
|
||||||
Class07 : equals()
|
Class07 : equals()
|
||||||
Class07 : Object[] elementData
|
Class07 : Object[] elementData
|
||||||
Class01 : size()
|
Class01 : size()
|
||||||
Class01 : int chimp
|
Class01 : int chimp
|
||||||
Class01 : int gorilla
|
Class01 : int gorilla
|
||||||
Class08 "1" <--> "*" C2: Cool label
|
Class08 "1" <--> "*" C2: Cool label
|
||||||
class Class10 {
|
class Class10 {
|
||||||
<<service>>
|
<<service>>
|
||||||
int id
|
int id
|
||||||
test()
|
test()
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
// it('17: should render a class diagram when useMaxWidth is true (default)', () => {
|
// it('17: should render a class diagram when useMaxWidth is true (default)', () => {
|
||||||
// renderGraph(
|
// renderGraph(
|
||||||
// `
|
// `
|
||||||
// classDiagram
|
// classDiagram
|
||||||
// Class01 <|-- AveryLongClass : Cool
|
// Class01 <|-- AveryLongClass : Cool
|
||||||
// Class01 : size()
|
// Class01 : size()
|
||||||
// Class01 : int chimp
|
// Class01 : int chimp
|
||||||
// Class01 : int gorilla
|
// Class01 : int gorilla
|
||||||
// Class01 : -int privateChimp
|
// Class01 : -int privateChimp
|
||||||
// Class01 : +int publicGorilla
|
// Class01 : +int publicGorilla
|
||||||
// Class01 : #int protectedMarmoset
|
// Class01 : #int protectedMarmoset
|
||||||
// `,
|
// `,
|
||||||
// { class: { useMaxWidth: true } }
|
// { class: { useMaxWidth: true } }
|
||||||
// );
|
// );
|
||||||
// cy.get('svg')
|
// cy.get('svg')
|
||||||
// .should((svg) => {
|
// .should((svg) => {
|
||||||
// expect(svg).to.have.attr('width', '100%');
|
// expect(svg).to.have.attr('width', '100%');
|
||||||
// const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
// expect(height).to.be.within(332, 333);
|
// expect(height).to.be.within(332, 333);
|
||||||
// // expect(svg).to.have.attr('height', '218');
|
// // expect(svg).to.have.attr('height', '218');
|
||||||
// const style = svg.attr('style');
|
// const style = svg.attr('style');
|
||||||
// expect(style).to.match(/^max-width: [\d.]+px;$/);
|
// expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
// const maxWidthValue = parseInt(style.match(/[\d.]+/g).join(''));
|
// const maxWidthValue = parseInt(style.match(/[\d.]+/g).join(''));
|
||||||
// // use within because the absolute value can be slightly different depending on the environment ±5%
|
// // use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
// expect(maxWidthValue).to.be.within(203, 204);
|
// expect(maxWidthValue).to.be.within(203, 204);
|
||||||
// });
|
// });
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// it('18: should render a class diagram when useMaxWidth is false', () => {
|
// it('18: should render a class diagram when useMaxWidth is false', () => {
|
||||||
// renderGraph(
|
// renderGraph(
|
||||||
// `
|
// `
|
||||||
// classDiagram
|
// classDiagram
|
||||||
// Class01 <|-- AveryLongClass : Cool
|
// Class01 <|-- AveryLongClass : Cool
|
||||||
// Class01 : size()
|
// Class01 : size()
|
||||||
// Class01 : int chimp
|
// Class01 : int chimp
|
||||||
// Class01 : int gorilla
|
// Class01 : int gorilla
|
||||||
// Class01 : -int privateChimp
|
// Class01 : -int privateChimp
|
||||||
// Class01 : +int publicGorilla
|
// Class01 : +int publicGorilla
|
||||||
// Class01 : #int protectedMarmoset
|
// Class01 : #int protectedMarmoset
|
||||||
// `,
|
// `,
|
||||||
// { class: { useMaxWidth: false } }
|
// { class: { useMaxWidth: false } }
|
||||||
// );
|
// );
|
||||||
// cy.get('svg')
|
// cy.get('svg')
|
||||||
// .should((svg) => {
|
// .should((svg) => {
|
||||||
// const width = parseFloat(svg.attr('width'));
|
// const width = parseFloat(svg.attr('width'));
|
||||||
// // use within because the absolute value can be slightly different depending on the environment ±5%
|
// // use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
// expect(width).to.be.within(100, 101);
|
// expect(width).to.be.within(100, 101);
|
||||||
// const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
// expect(height).to.be.within(332, 333);
|
// expect(height).to.be.within(332, 333);
|
||||||
// // expect(svg).to.have.attr('height', '332');
|
// // expect(svg).to.have.attr('height', '332');
|
||||||
// // expect(svg).to.not.have.attr('style');
|
// // expect(svg).to.not.have.attr('style');
|
||||||
// });
|
// });
|
||||||
// });
|
// });
|
||||||
});
|
});
|
||||||
|
@@ -16,7 +16,7 @@ describe('Configuration and directives - nodes should be light blue', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
it('Settigns from intitialize - nodes should be green', () => {
|
it('Settings from initialize - nodes should be green', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
graph TD
|
graph TD
|
||||||
@@ -30,7 +30,7 @@ graph TD
|
|||||||
);
|
);
|
||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
it('Settings from initialize overriding themeVariable - nodes shold be red', () => {
|
it('Settings from initialize overriding themeVariable - nodes should be red', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
|
|
||||||
|
@@ -112,7 +112,7 @@ describe('Entity Relationship Diagram', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
expect(svg).to.have.attr('width', '100%');
|
expect(svg).to.have.attr('width', '100%');
|
||||||
expect(svg).to.have.attr('height', '465');
|
// expect(svg).to.have.attr('height', '465');
|
||||||
const style = svg.attr('style');
|
const style = svg.attr('style');
|
||||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||||
@@ -134,7 +134,7 @@ describe('Entity Relationship Diagram', () => {
|
|||||||
const width = parseFloat(svg.attr('width'));
|
const width = parseFloat(svg.attr('width'));
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
expect(width).to.be.within(140 * 0.95, 140 * 1.05);
|
expect(width).to.be.within(140 * 0.95, 140 * 1.05);
|
||||||
expect(svg).to.have.attr('height', '465');
|
// expect(svg).to.have.attr('height', '465');
|
||||||
expect(svg).to.not.have.attr('style');
|
expect(svg).to.not.have.attr('style');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -167,11 +167,26 @@ describe('Entity Relationship Diagram', () => {
|
|||||||
cy.get('svg');
|
cy.get('svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it.only('should render entities with generic and array attributes', () => {
|
||||||
|
renderGraph(
|
||||||
|
`
|
||||||
|
erDiagram
|
||||||
|
BOOK {
|
||||||
|
string title
|
||||||
|
string[] authors
|
||||||
|
type~T~ type
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
{ logLevel: 1 }
|
||||||
|
);
|
||||||
|
cy.get('svg');
|
||||||
|
});
|
||||||
|
|
||||||
it('should render entities and attributes with big and small entity names', () => {
|
it('should render entities and attributes with big and small entity names', () => {
|
||||||
renderGraph(
|
renderGraph(
|
||||||
`
|
`
|
||||||
erDiagram
|
erDiagram
|
||||||
PRIVATE_FINANCIAL_INSTITUTION {
|
PRIVATE_FINANCIAL_INSTITUTION {
|
||||||
string name
|
string name
|
||||||
int turnover
|
int turnover
|
||||||
}
|
}
|
||||||
@@ -191,9 +206,9 @@ describe('Entity Relationship Diagram', () => {
|
|||||||
string name PK
|
string name PK
|
||||||
}
|
}
|
||||||
AUTHOR_WITH_LONG_ENTITY_NAME }|..|{ BOOK : writes
|
AUTHOR_WITH_LONG_ENTITY_NAME }|..|{ BOOK : writes
|
||||||
BOOK {
|
BOOK {
|
||||||
float price
|
float price
|
||||||
string author FK
|
string author FK
|
||||||
string title PK
|
string title PK
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
@@ -210,8 +225,8 @@ describe('Entity Relationship Diagram', () => {
|
|||||||
string name "comment"
|
string name "comment"
|
||||||
}
|
}
|
||||||
AUTHOR_WITH_LONG_ENTITY_NAME }|..|{ BOOK : writes
|
AUTHOR_WITH_LONG_ENTITY_NAME }|..|{ BOOK : writes
|
||||||
BOOK {
|
BOOK {
|
||||||
string author
|
string author
|
||||||
string title "author comment"
|
string title "author comment"
|
||||||
float price "price comment"
|
float price "price comment"
|
||||||
}
|
}
|
||||||
@@ -229,11 +244,11 @@ describe('Entity Relationship Diagram', () => {
|
|||||||
string name PK "comment"
|
string name PK "comment"
|
||||||
}
|
}
|
||||||
AUTHOR_WITH_LONG_ENTITY_NAME }|..|{ BOOK : writes
|
AUTHOR_WITH_LONG_ENTITY_NAME }|..|{ BOOK : writes
|
||||||
BOOK {
|
BOOK {
|
||||||
string description
|
string description
|
||||||
float price "price comment"
|
float price "price comment"
|
||||||
string title PK "title comment"
|
string title PK "title comment"
|
||||||
string author FK
|
string author FK
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
{ logLevel: 1 }
|
{ logLevel: 1 }
|
||||||
|
@@ -42,7 +42,7 @@ describe('Flowchart v2', () => {
|
|||||||
P3 --> P6
|
P3 --> P6
|
||||||
P1.5 --> P5
|
P1.5 --> P5
|
||||||
`,
|
`,
|
||||||
{ flowchart: { diagramPadding: 0 } }
|
{}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ describe('Flowchart v2', () => {
|
|||||||
C <-...-> E4
|
C <-...-> E4
|
||||||
C ======> E5
|
C ======> E5
|
||||||
`,
|
`,
|
||||||
{ flowchart: { diagramPadding: 0 } }
|
{}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
it('5: should render escaped without html labels', () => {
|
it('5: should render escaped without html labels', () => {
|
||||||
@@ -92,10 +92,10 @@ describe('Flowchart v2', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
expect(svg).to.have.attr('width', '100%');
|
expect(svg).to.have.attr('width', '100%');
|
||||||
expect(svg).to.have.attr('height');
|
// expect(svg).to.have.attr('height');
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
// expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
||||||
const style = svg.attr('style');
|
const style = svg.attr('style');
|
||||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||||
@@ -114,10 +114,10 @@ describe('Flowchart v2', () => {
|
|||||||
{ flowchart: { useMaxWidth: false } }
|
{ flowchart: { useMaxWidth: false } }
|
||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
const width = parseFloat(svg.attr('width'));
|
const width = parseFloat(svg.attr('width'));
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// 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(height).to.be.within(446 * 0.95, 446 * 1.05);
|
||||||
expect(width).to.be.within(290 * 0.95 - 1, 290 * 1.05);
|
expect(width).to.be.within(290 * 0.95 - 1, 290 * 1.05);
|
||||||
expect(svg).to.not.have.attr('style');
|
expect(svg).to.not.have.attr('style');
|
||||||
});
|
});
|
||||||
@@ -652,4 +652,15 @@ flowchart RL
|
|||||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
it('2824: Clipping of edges', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
flowchart TD
|
||||||
|
A --> B
|
||||||
|
A --> C
|
||||||
|
B --> C
|
||||||
|
`,
|
||||||
|
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@@ -744,14 +744,14 @@ describe('Graph', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
expect(svg).to.have.attr('width', '100%');
|
expect(svg).to.have.attr('width', '100%');
|
||||||
expect(svg).to.have.attr('height');
|
// expect(svg).to.have.attr('height');
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±10%
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
// expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
||||||
const style = svg.attr('style');
|
const style = svg.attr('style');
|
||||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||||
expect(maxWidthValue).to.be.within(300 * 0.95, 300 * 1.05);
|
expect(maxWidthValue).to.be.within(300 * 0.9, 300 * 1.1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('39: should render a flowchart when useMaxWidth is false', () => {
|
it('39: should render a flowchart when useMaxWidth is false', () => {
|
||||||
@@ -766,11 +766,11 @@ describe('Graph', () => {
|
|||||||
{ flowchart: { useMaxWidth: false } }
|
{ flowchart: { useMaxWidth: false } }
|
||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
const width = parseFloat(svg.attr('width'));
|
const width = parseFloat(svg.attr('width'));
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±10%
|
||||||
expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
// expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
||||||
expect(width).to.be.within(300 * 0.95, 300 * 1.05);
|
expect(width).to.be.within(300 * 0.9, 300 * 1.1);
|
||||||
expect(svg).to.not.have.attr('style');
|
expect(svg).to.not.have.attr('style');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -92,7 +92,7 @@ describe('Gantt diagram', () => {
|
|||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
it('should render a gantt chart for issue #1060', () => {
|
it('should FAIL redering a gantt chart for issue #1060 with invalid date', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
gantt
|
gantt
|
||||||
@@ -163,6 +163,24 @@ describe('Gantt diagram', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should handle milliseconds', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gantt
|
||||||
|
title A Gantt Diagram
|
||||||
|
dateFormat x
|
||||||
|
axisFormat %L
|
||||||
|
section Section
|
||||||
|
A task :a1, 0, 30ms
|
||||||
|
Another task :after a1, 20ms
|
||||||
|
section Another
|
||||||
|
Another another task :b1, 20, 12ms
|
||||||
|
Another another another task :after b1, 0.024s
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should render a gantt diagram when useMaxWidth is true (default)', () => {
|
it('should render a gantt diagram when useMaxWidth is true (default)', () => {
|
||||||
renderGraph(
|
renderGraph(
|
||||||
`
|
`
|
||||||
@@ -200,10 +218,10 @@ describe('Gantt diagram', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
expect(svg).to.have.attr('width', '100%');
|
expect(svg).to.have.attr('width', '100%');
|
||||||
expect(svg).to.have.attr('height');
|
// expect(svg).to.have.attr('height');
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
expect(height).to.be.within(484 * 0.95, 484 * 1.05);
|
// expect(height).to.be.within(484 * 0.95, 484 * 1.05);
|
||||||
const style = svg.attr('style');
|
const style = svg.attr('style');
|
||||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||||
@@ -247,10 +265,10 @@ describe('Gantt diagram', () => {
|
|||||||
{ gantt: { useMaxWidth: false } }
|
{ gantt: { useMaxWidth: false } }
|
||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
const width = parseFloat(svg.attr('width'));
|
const width = parseFloat(svg.attr('width'));
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
expect(height).to.be.within(484 * 0.95, 484 * 1.05);
|
// expect(height).to.be.within(484 * 0.95, 484 * 1.05);
|
||||||
expect(width).to.be.within(984 * 0.95, 984 * 1.05);
|
expect(width).to.be.within(984 * 0.95, 984 * 1.05);
|
||||||
expect(svg).to.not.have.attr('style');
|
expect(svg).to.not.have.attr('style');
|
||||||
});
|
});
|
||||||
|
@@ -74,7 +74,7 @@ describe('Git Graph diagram', () => {
|
|||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
it('7: should render a simple gitgraph with three branches and merge commit', () => {
|
it('7: should render a simple gitgraph with three branches and tagged merge commit', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`gitGraph
|
`gitGraph
|
||||||
commit id: "1"
|
commit id: "1"
|
||||||
@@ -93,7 +93,7 @@ describe('Git Graph diagram', () => {
|
|||||||
checkout nice_feature
|
checkout nice_feature
|
||||||
commit id: "7"
|
commit id: "7"
|
||||||
checkout main
|
checkout main
|
||||||
merge nice_feature
|
merge nice_feature id: "12345" tag: "my merge commit"
|
||||||
checkout very_nice_feature
|
checkout very_nice_feature
|
||||||
commit id: "8"
|
commit id: "8"
|
||||||
checkout main
|
checkout main
|
||||||
@@ -180,7 +180,48 @@ describe('Git Graph diagram', () => {
|
|||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
it('11: should render a gitgraph with cherry pick commit with custom tag', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gitGraph
|
||||||
|
commit id: "ZERO"
|
||||||
|
branch develop
|
||||||
|
commit id:"A"
|
||||||
|
checkout main
|
||||||
|
commit id:"ONE"
|
||||||
|
checkout develop
|
||||||
|
commit id:"B"
|
||||||
|
checkout main
|
||||||
|
commit id:"TWO"
|
||||||
|
cherry-pick id:"A" tag: "snapshot"
|
||||||
|
commit id:"THREE"
|
||||||
|
checkout develop
|
||||||
|
commit id:"C"
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('11: should render a gitgraph with cherry pick commit with no tag', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gitGraph
|
||||||
|
commit id: "ZERO"
|
||||||
|
branch develop
|
||||||
|
commit id:"A"
|
||||||
|
checkout main
|
||||||
|
commit id:"ONE"
|
||||||
|
checkout develop
|
||||||
|
commit id:"B"
|
||||||
|
checkout main
|
||||||
|
commit id:"TWO"
|
||||||
|
cherry-pick id:"A" tag: ""
|
||||||
|
commit id:"THREE"
|
||||||
|
checkout develop
|
||||||
|
commit id:"C"
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
it('11: should render a simple gitgraph with two cherry pick commit', () => {
|
it('11: should render a simple gitgraph with two cherry pick commit', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
@@ -207,4 +248,78 @@ describe('Git Graph diagram', () => {
|
|||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
it('12: should render commits for more than 8 branches', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gitGraph
|
||||||
|
checkout main
|
||||||
|
%% Make sure to manually set the ID of all commits, for consistent visual tests
|
||||||
|
commit id: "1-abcdefg"
|
||||||
|
checkout main
|
||||||
|
branch branch1
|
||||||
|
commit id: "2-abcdefg"
|
||||||
|
checkout main
|
||||||
|
merge branch1
|
||||||
|
branch branch2
|
||||||
|
commit id: "3-abcdefg"
|
||||||
|
checkout main
|
||||||
|
merge branch2
|
||||||
|
branch branch3
|
||||||
|
commit id: "4-abcdefg"
|
||||||
|
checkout main
|
||||||
|
merge branch3
|
||||||
|
branch branch4
|
||||||
|
commit id: "5-abcdefg"
|
||||||
|
checkout main
|
||||||
|
merge branch4
|
||||||
|
branch branch5
|
||||||
|
commit id: "6-abcdefg"
|
||||||
|
checkout main
|
||||||
|
merge branch5
|
||||||
|
branch branch6
|
||||||
|
commit id: "7-abcdefg"
|
||||||
|
checkout main
|
||||||
|
merge branch6
|
||||||
|
branch branch7
|
||||||
|
commit id: "8-abcdefg"
|
||||||
|
checkout main
|
||||||
|
merge branch7
|
||||||
|
branch branch8
|
||||||
|
commit id: "9-abcdefg"
|
||||||
|
checkout main
|
||||||
|
merge branch8
|
||||||
|
branch branch9
|
||||||
|
commit id: "10-abcdefg"
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('13: should render a simple gitgraph with three branches,custom merge commit id,tag,type', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`gitGraph
|
||||||
|
commit id: "1"
|
||||||
|
commit id: "2"
|
||||||
|
branch nice_feature
|
||||||
|
checkout nice_feature
|
||||||
|
commit id: "3"
|
||||||
|
checkout main
|
||||||
|
commit id: "4"
|
||||||
|
checkout nice_feature
|
||||||
|
branch very_nice_feature
|
||||||
|
checkout very_nice_feature
|
||||||
|
commit id: "5"
|
||||||
|
checkout main
|
||||||
|
commit id: "6"
|
||||||
|
checkout nice_feature
|
||||||
|
commit id: "7"
|
||||||
|
checkout main
|
||||||
|
merge nice_feature id: "customID" tag: "customTag" type: REVERSE
|
||||||
|
checkout very_nice_feature
|
||||||
|
commit id: "8"
|
||||||
|
checkout main
|
||||||
|
commit id: "9"
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@@ -42,8 +42,8 @@ section Checkout from website
|
|||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
expect(svg).to.have.attr('width', '100%');
|
expect(svg).to.have.attr('width', '100%');
|
||||||
expect(svg).to.have.attr('height');
|
expect(svg).to.have.attr('height');
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
expect(height).to.eq(565);
|
// expect(height).to.eq(565);
|
||||||
const style = svg.attr('style');
|
const style = svg.attr('style');
|
||||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||||
|
75
cypress/integration/rendering/mermaid.spec.js
Normal file
75
cypress/integration/rendering/mermaid.spec.js
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
import { imgSnapshotTest, renderGraph } from '../../helpers/util.js';
|
||||||
|
|
||||||
|
describe('Mindmap', () => {
|
||||||
|
it('square shape', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
mindmap
|
||||||
|
root[
|
||||||
|
The root
|
||||||
|
]
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
cy.get('svg');
|
||||||
|
});
|
||||||
|
it('rounded rect shape', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
mindmap
|
||||||
|
root((
|
||||||
|
The root
|
||||||
|
))
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
cy.get('svg');
|
||||||
|
});
|
||||||
|
it('circle shape', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
mindmap
|
||||||
|
root(
|
||||||
|
The root
|
||||||
|
)
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
cy.get('svg');
|
||||||
|
});
|
||||||
|
it('default shape', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
mindmap
|
||||||
|
The root
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
cy.get('svg');
|
||||||
|
});
|
||||||
|
it('adding children', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
mindmap
|
||||||
|
The root
|
||||||
|
child1
|
||||||
|
child2
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
cy.get('svg');
|
||||||
|
});
|
||||||
|
it('adding grand children', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
mindmap
|
||||||
|
The root
|
||||||
|
child1
|
||||||
|
child2
|
||||||
|
child3
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
cy.get('svg');
|
||||||
|
});
|
||||||
|
});
|
115
cypress/integration/rendering/mindmap.spec.js
Normal file
115
cypress/integration/rendering/mindmap.spec.js
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
import { imgSnapshotTest, renderGraph } from '../../helpers/util.js';
|
||||||
|
|
||||||
|
describe('Mindmaps', () => {
|
||||||
|
it('Only a root', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`mindmap
|
||||||
|
root
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('a root with a shape', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`mindmap
|
||||||
|
root[root]
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('a root with wrapping text and a shape', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`mindmap
|
||||||
|
root[A root with a long text that wraps to keep the node size in check]
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('a root with an icon', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`mindmap
|
||||||
|
root[root]
|
||||||
|
::icon(mdi mdi-fire)
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Blang and cloud shape', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`mindmap
|
||||||
|
root))bang((
|
||||||
|
::icon(mdi mdi-fire)
|
||||||
|
a))Another bang((
|
||||||
|
::icon(mdi mdi-fire)
|
||||||
|
a)A cloud(
|
||||||
|
::icon(mdi mdi-fire)
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Blang and cloud shape with icons', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`mindmap
|
||||||
|
root))bang((
|
||||||
|
|
||||||
|
a))Another bang((
|
||||||
|
a)A cloud(
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('braches', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`mindmap
|
||||||
|
root
|
||||||
|
child1
|
||||||
|
grandchild 1
|
||||||
|
grandchild 2
|
||||||
|
child2
|
||||||
|
grandchild 3
|
||||||
|
grandchild 4
|
||||||
|
child3
|
||||||
|
grandchild 5
|
||||||
|
grandchild 6
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('braches with shapes and labels', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`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)
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('text shouhld wrap with icon', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`mindmap
|
||||||
|
root
|
||||||
|
Child3(A node with an icon and with a long text that wraps to keep the node size in check)
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
/* The end */
|
||||||
|
});
|
@@ -48,9 +48,9 @@ describe('Pie Chart', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
expect(svg).to.have.attr('width', '100%');
|
expect(svg).to.have.attr('width', '100%');
|
||||||
expect(svg).to.have.attr('height');
|
// expect(svg).to.have.attr('height');
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
expect(height).to.eq(450);
|
// expect(height).to.eq(450);
|
||||||
const style = svg.attr('style');
|
const style = svg.attr('style');
|
||||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||||
@@ -68,9 +68,9 @@ describe('Pie Chart', () => {
|
|||||||
{ pie: { useMaxWidth: false } }
|
{ pie: { useMaxWidth: false } }
|
||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
const width = parseFloat(svg.attr('width'));
|
const width = parseFloat(svg.attr('width'));
|
||||||
expect(height).to.eq(450);
|
// expect(height).to.eq(450);
|
||||||
expect(width).to.eq(984);
|
expect(width).to.eq(984);
|
||||||
expect(svg).to.not.have.attr('style');
|
expect(svg).to.not.have.attr('style');
|
||||||
});
|
});
|
||||||
|
@@ -76,11 +76,11 @@ context('Sequence diagram', () => {
|
|||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Alice->>Bob: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
loop Loopy
|
loop Loopy
|
||||||
Bob->>Alice: Pasten
|
Bob->>Alice: Pasten
|
||||||
end `,
|
end `,
|
||||||
{}
|
{ wrap: true }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
context('font settings', () => {
|
context('font settings', () => {
|
||||||
@@ -126,6 +126,17 @@ context('Sequence diagram', () => {
|
|||||||
{ sequence: { noteAlign: 'left' } }
|
{ sequence: { noteAlign: 'left' } }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
it('should render multi-line notes aligned to the left when configured', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
sequenceDiagram
|
||||||
|
Alice->>Bob: I'm short
|
||||||
|
note left of Alice: I am left aligned<br>but also<br>multiline
|
||||||
|
Bob->>Alice: Short as well
|
||||||
|
`,
|
||||||
|
{ sequence: { noteAlign: 'left' } }
|
||||||
|
);
|
||||||
|
});
|
||||||
it('should render notes aligned to the right when configured', () => {
|
it('should render notes aligned to the right when configured', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
@@ -137,13 +148,44 @@ context('Sequence diagram', () => {
|
|||||||
{ sequence: { noteAlign: 'right' } }
|
{ sequence: { noteAlign: 'right' } }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
it('should render multi-line notes aligned to the right when configured', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
sequenceDiagram
|
||||||
|
Alice->>Bob: I'm short
|
||||||
|
note left of Alice: I am right aligned<br>but also<br>multiline
|
||||||
|
Bob->>Alice: Short as well
|
||||||
|
`,
|
||||||
|
{ sequence: { noteAlign: 'right' } }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('should render multi-line messages aligned to the left when configured', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
sequenceDiagram
|
||||||
|
Alice->>Bob: I'm short<br>but also<br>multiline
|
||||||
|
Bob->>Alice: Short as well<br>and also<br>multiline
|
||||||
|
`,
|
||||||
|
{ sequence: { messageAlign: 'left' } }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('should render multi-line messages aligned to the right when configured', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
sequenceDiagram
|
||||||
|
Alice->>Bob: I'm short<br>but also<br>multiline
|
||||||
|
Bob->>Alice: Short as well<br>and also<br>multiline
|
||||||
|
`,
|
||||||
|
{ sequence: { messageAlign: 'right' } }
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
context('auth width scaling', () => {
|
context('auth width scaling', () => {
|
||||||
it('should render long actor descriptions', () => {
|
it('should render long actor descriptions', () => {
|
||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
participant A as Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
participant A as Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
A->>Bob: Hola
|
A->>Bob: Hola
|
||||||
Bob-->A: Pasten !
|
Bob-->A: Pasten !
|
||||||
`,
|
`,
|
||||||
@@ -154,7 +196,7 @@ context('Sequence diagram', () => {
|
|||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
participant A as wrap:Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
participant A as wrap:Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
A->>Bob: Hola
|
A->>Bob: Hola
|
||||||
Bob-->A: Pasten !
|
Bob-->A: Pasten !
|
||||||
`,
|
`,
|
||||||
@@ -166,7 +208,7 @@ context('Sequence diagram', () => {
|
|||||||
`
|
`
|
||||||
%%{init: {'config': {'wrap': true }}}%%
|
%%{init: {'config': {'wrap': true }}}%%
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
participant A as Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
participant A as Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
A->>Bob: Hola
|
A->>Bob: Hola
|
||||||
Bob-->A: Pasten !
|
Bob-->A: Pasten !
|
||||||
`,
|
`,
|
||||||
@@ -190,7 +232,7 @@ context('Sequence diagram', () => {
|
|||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: Hola
|
Alice->>Bob: Hola
|
||||||
Note left of Alice: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Note left of Alice: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
Bob->>Alice: I'm short though
|
Bob->>Alice: I'm short though
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
@@ -201,7 +243,7 @@ context('Sequence diagram', () => {
|
|||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: Hola
|
Alice->>Bob: Hola
|
||||||
Note left of Alice:wrap: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Note left of Alice:wrap: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
Bob->>Alice: I'm short though
|
Bob->>Alice: I'm short though
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
@@ -212,7 +254,7 @@ context('Sequence diagram', () => {
|
|||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: Hola
|
Alice->>Bob: Hola
|
||||||
Note right of Alice: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Note right of Alice: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
Bob->>Alice: I'm short though
|
Bob->>Alice: I'm short though
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
@@ -223,7 +265,7 @@ context('Sequence diagram', () => {
|
|||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: Hola
|
Alice->>Bob: Hola
|
||||||
Note right of Alice:wrap: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Note right of Alice:wrap: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
Bob->>Alice: I'm short though
|
Bob->>Alice: I'm short though
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
@@ -234,7 +276,7 @@ context('Sequence diagram', () => {
|
|||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: Hola
|
Alice->>Bob: Hola
|
||||||
Note over Alice: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Note over Alice: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
Bob->>Alice: I'm short though
|
Bob->>Alice: I'm short though
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
@@ -245,7 +287,7 @@ context('Sequence diagram', () => {
|
|||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: Hola
|
Alice->>Bob: Hola
|
||||||
Note over Alice:wrap: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Note over Alice:wrap: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
Bob->>Alice: I'm short though
|
Bob->>Alice: I'm short though
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
@@ -255,7 +297,7 @@ context('Sequence diagram', () => {
|
|||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Alice->>Bob: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
Bob->>Alice: I'm short though
|
Bob->>Alice: I'm short though
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
@@ -265,7 +307,7 @@ context('Sequence diagram', () => {
|
|||||||
imgSnapshotTest(
|
imgSnapshotTest(
|
||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob:wrap:Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Alice->>Bob:wrap:Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
Bob->>Alice: I'm short though
|
Bob->>Alice: I'm short though
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
@@ -276,7 +318,7 @@ context('Sequence diagram', () => {
|
|||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: I'm short
|
Alice->>Bob: I'm short
|
||||||
Bob->>Alice: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Bob->>Alice: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
@@ -286,7 +328,7 @@ context('Sequence diagram', () => {
|
|||||||
`
|
`
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob: I'm short
|
Alice->>Bob: I'm short
|
||||||
Bob->>Alice:wrap: Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Bob->>Alice:wrap: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
`,
|
`,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
@@ -692,9 +734,9 @@ context('Sequence diagram', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
expect(svg).to.have.attr('width', '100%');
|
expect(svg).to.have.attr('width', '100%');
|
||||||
expect(svg).to.have.attr('height');
|
// expect(svg).to.have.attr('height');
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
expect(height).to.be.within(920, 971);
|
// expect(height).to.be.within(920, 971);
|
||||||
const style = svg.attr('style');
|
const style = svg.attr('style');
|
||||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||||
@@ -731,9 +773,9 @@ context('Sequence diagram', () => {
|
|||||||
{ sequence: { useMaxWidth: false } }
|
{ sequence: { useMaxWidth: false } }
|
||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
const width = parseFloat(svg.attr('width'));
|
const width = parseFloat(svg.attr('width'));
|
||||||
expect(height).to.be.within(920, 971);
|
// expect(height).to.be.within(920, 971);
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
expect(width).to.be.within(820 * 0.95, 820 * 1.05);
|
expect(width).to.be.within(820 * 0.95, 820 * 1.05);
|
||||||
expect(svg).to.not.have.attr('style');
|
expect(svg).to.not.have.attr('style');
|
||||||
|
@@ -480,14 +480,14 @@ stateDiagram-v2
|
|||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
expect(svg).to.have.attr('width', '100%');
|
expect(svg).to.have.attr('width', '100%');
|
||||||
expect(svg).to.have.attr('height');
|
// expect(svg).to.have.attr('height');
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
expect(height).to.be.within(177, 178);
|
// expect(height).to.be.within(177, 178);
|
||||||
const style = svg.attr('style');
|
const style = svg.attr('style');
|
||||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
expect(maxWidthValue).to.be.within(135 * 0.95, 135 * 1.05);
|
expect(maxWidthValue).to.be.within(65, 85);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('v2 should render a state diagram when useMaxWidth is false', () => {
|
it('v2 should render a state diagram when useMaxWidth is false', () => {
|
||||||
@@ -501,12 +501,24 @@ stateDiagram-v2
|
|||||||
{ state: { useMaxWidth: false } }
|
{ state: { useMaxWidth: false } }
|
||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
const width = parseFloat(svg.attr('width'));
|
const width = parseFloat(svg.attr('width'));
|
||||||
expect(height).to.be.within(177, 178);
|
// expect(height).to.be.within(177, 178);
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
expect(width).to.be.within(135 * 0.95, 135 * 1.05);
|
expect(width).to.be.within(65, 85);
|
||||||
expect(svg).to.not.have.attr('style');
|
expect(svg).to.not.have.attr('style');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('v2 should render a state diagram and set the correct length of the labels', () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
stateDiagram-v2
|
||||||
|
[*] --> 1
|
||||||
|
1 --> 2: test({ foo#colon; 'far' })
|
||||||
|
2 --> [*]
|
||||||
|
`,
|
||||||
|
{ logLevel: 0, fontFamily: 'courier' }
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@@ -357,16 +357,16 @@ describe('State diagram', () => {
|
|||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
expect(svg).to.have.attr('width', '100%');
|
expect(svg).to.have.attr('width', '100%');
|
||||||
expect(svg).to.have.attr('height');
|
// expect(svg).to.have.attr('height');
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
expect(height).to.be.within(176, 178);
|
// expect(height).to.be.within(176, 178);
|
||||||
const style = svg.attr('style');
|
const style = svg.attr('style');
|
||||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
// Todo investigate difference
|
// Todo investigate difference
|
||||||
// expect(maxWidthValue).to.be.within(112 * .95, 112 * 1.05);
|
// expect(maxWidthValue).to.be.within(112 * .95, 112 * 1.05);
|
||||||
expect(maxWidthValue).to.be.within(130, 140);
|
expect(maxWidthValue).to.be.within(65, 85);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should render a state diagram when useMaxWidth is false', () => {
|
it('should render a state diagram when useMaxWidth is false', () => {
|
||||||
@@ -379,13 +379,13 @@ describe('State diagram', () => {
|
|||||||
{ state: { useMaxWidth: false } }
|
{ state: { useMaxWidth: false } }
|
||||||
);
|
);
|
||||||
cy.get('svg').should((svg) => {
|
cy.get('svg').should((svg) => {
|
||||||
const height = parseFloat(svg.attr('height'));
|
// const height = parseFloat(svg.attr('height'));
|
||||||
const width = parseFloat(svg.attr('width'));
|
const width = parseFloat(svg.attr('width'));
|
||||||
expect(height).to.be.within(176, 178);
|
// expect(height).to.be.within(176, 178);
|
||||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||||
// Todo investigate difference
|
// Todo investigate difference
|
||||||
// expect(width).to.be.within(112 * .95, 112 * 1.05);
|
// expect(width).to.be.within(112 * .95, 112 * 1.05);
|
||||||
expect(width).to.be.within(130, 140);
|
expect(width).to.be.within(65, 85);
|
||||||
|
|
||||||
expect(svg).to.not.have.attr('style');
|
expect(svg).to.not.have.attr('style');
|
||||||
});
|
});
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import mermaid from '../../dist/mermaid.core';
|
import mermaid from '../../packages/mermaid/src/mermaid';
|
||||||
|
|
||||||
let code = `flowchart LR
|
let code = `flowchart LR
|
||||||
Power_Supply --> Transmitter_A
|
Power_Supply --> Transmitter_A
|
||||||
|
@@ -1,31 +1,37 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
||||||
<link
|
<link
|
||||||
href="https://fonts.googleapis.com/css?family=Montserrat&display=swap"
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
||||||
rel="stylesheet"
|
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://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap" rel="stylesheet">
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
background: rgb(221, 208, 208);
|
background: rgb(221, 208, 208);
|
||||||
/*background:#333;*/
|
/*background:#333;*/
|
||||||
font-family: 'Arial';
|
font-family: 'Arial';
|
||||||
}
|
}
|
||||||
h1 { color: white;}
|
h1 {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
.mermaid2 {
|
.mermaid2 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.customCss > rect, .customCss{
|
.customCss > rect,
|
||||||
fill:#FF0000 !important;
|
.customCss {
|
||||||
stroke:#FFFF00 !important;
|
fill: #ff0000 !important;
|
||||||
stroke-width:4px !important;
|
stroke: #ffff00 !important;
|
||||||
}
|
stroke-width: 4px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>info below</h1>
|
<h1>info below</h1>
|
||||||
<div class="mermaid" style="width: 100%; height: 20%;">
|
<pre class="mermaid" style="width: 100%; height: 20%">
|
||||||
%%{init: {'theme': 'base', 'fontFamily': 'courier', 'themeVariables': { 'primaryColor': '#fff000'}}}%%
|
%%{init: {'theme': 'base', 'fontFamily': 'courier', 'themeVariables': { 'primaryColor': '#fff000'}}}%%
|
||||||
classDiagram
|
classDiagram
|
||||||
class BankAccount{
|
class BankAccount{
|
||||||
@@ -36,8 +42,8 @@
|
|||||||
}
|
}
|
||||||
cssClass "BankAccount" customCss
|
cssClass "BankAccount" customCss
|
||||||
|
|
||||||
</div>
|
</pre>
|
||||||
<div class="mermaid" style="width: 100%; height: 20%;">
|
<pre class="mermaid" style="width: 100%; height: 20%">
|
||||||
%%{init: {'theme': 'base', 'fontFamily': 'courier', 'themeVariables': { 'primaryColor': '#fff000'}}}%%
|
%%{init: {'theme': 'base', 'fontFamily': 'courier', 'themeVariables': { 'primaryColor': '#fff000'}}}%%
|
||||||
classDiagram-v2
|
classDiagram-v2
|
||||||
class BankAccount{
|
class BankAccount{
|
||||||
@@ -47,9 +53,8 @@
|
|||||||
+withdrawl(amount) int
|
+withdrawl(amount) int
|
||||||
}
|
}
|
||||||
cssClass "BankAccount" customCss
|
cssClass "BankAccount" customCss
|
||||||
|
</pre>
|
||||||
</div>
|
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||||
<div class="mermaid2" style="width: 100%; height: 20%;">
|
|
||||||
%%{init: {'theme': 'base', 'fontFamily': 'courier', 'themeVariables': { 'primaryColor': '#fff000'}}}%%
|
%%{init: {'theme': 'base', 'fontFamily': 'courier', 'themeVariables': { 'primaryColor': '#fff000'}}}%%
|
||||||
classDiagram
|
classDiagram
|
||||||
class BankAccount{
|
class BankAccount{
|
||||||
@@ -71,8 +76,8 @@
|
|||||||
}
|
}
|
||||||
callback Class01 "callback" "A Tooltip"
|
callback Class01 "callback" "A Tooltip"
|
||||||
|
|
||||||
</div>
|
</pre>
|
||||||
<div class="mermaid2" style="width: 100%; height: 20%;">
|
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||||
flowchart TB
|
flowchart TB
|
||||||
a_a(Aftonbladet) --> b_b[gorilla]:::apa --> c_c{chimp}:::apa -->a_a
|
a_a(Aftonbladet) --> b_b[gorilla]:::apa --> c_c{chimp}:::apa -->a_a
|
||||||
a_a --> c --> d_d --> c_c
|
a_a --> c --> d_d --> c_c
|
||||||
@@ -80,9 +85,9 @@
|
|||||||
class a_a apa;
|
class a_a apa;
|
||||||
click a_a "https://www.aftonbladet.se" "apa"
|
click a_a "https://www.aftonbladet.se" "apa"
|
||||||
|
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div class="mermaid2" style="width: 100%; height: 20%;">
|
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||||
classDiagram-v2
|
classDiagram-v2
|
||||||
|
|
||||||
classA -- classB : Inheritance
|
classA -- classB : Inheritance
|
||||||
@@ -97,7 +102,7 @@
|
|||||||
classK ..> classL : Dependency
|
classK ..> classL : Dependency
|
||||||
classM ..|> classN : Realization
|
classM ..|> classN : Realization
|
||||||
classO .. classP : Link(Dashed)
|
classO .. classP : Link(Dashed)
|
||||||
classA : +attr1
|
classA : +attr1
|
||||||
classA : attr2
|
classA : attr2
|
||||||
classA : method1()
|
classA : method1()
|
||||||
<<interface>> classB
|
<<interface>> classB
|
||||||
@@ -111,8 +116,8 @@
|
|||||||
class Shape
|
class Shape
|
||||||
callback Shape "callbackFunction" "This is a tooltip for a callback"
|
callback Shape "callbackFunction" "This is a tooltip for a callback"
|
||||||
|
|
||||||
</div>
|
</pre>
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
mermaid.parseError = function (err, hash) {
|
mermaid.parseError = function (err, hash) {
|
||||||
// console.error('Mermaid error: ', err);
|
// console.error('Mermaid error: ', err);
|
||||||
@@ -134,8 +139,8 @@
|
|||||||
securityLevel: 'loose',
|
securityLevel: 'loose',
|
||||||
});
|
});
|
||||||
function callback() {
|
function callback() {
|
||||||
alert('It worked');
|
alert('It worked');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,61 +1,60 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<title>Mermaid Quick Test Page</title>
|
<title>Mermaid Quick Test Page</title>
|
||||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
|
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||||
<style>
|
<style>
|
||||||
.mermaid2 {
|
.mermaid2 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
Function-->URL
|
FunctionTest1-->URLTest1
|
||||||
click Function clickByFlow "Add a div"
|
click FunctionTest1 clickByFlow "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click URLTest1 "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
1Function--->2URL
|
1Function--->2URL
|
||||||
click 1Function clickByFlow "Add a div"
|
click 1Function clickByFlow "Add a div"
|
||||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click 2URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
flowchart TB
|
flowchart TB
|
||||||
Function-->URL
|
FunctionTest2-->URLTest2
|
||||||
click Function clickByFlow "Add a div"
|
click FunctionTest2 clickByFlow "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>" _self
|
click URLTest2 "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>" _self
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
flowchart TB
|
flowchart TB
|
||||||
1Function--->2URL
|
10Function--->20URL
|
||||||
click 1Function clickByFlow "Add a div"
|
click 10Function clickByFlow "Add a div"
|
||||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>" _self
|
click 20URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>" _self
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
classDiagram
|
classDiagram
|
||||||
class ShapeLink
|
class ShapeLink
|
||||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink "http://localhost:9000/empty.html" "This is a tooltip for a link"
|
||||||
class ShapeCallback
|
class ShapeCallback
|
||||||
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
classDiagram-v2
|
classDiagram-v2
|
||||||
class ShapeLink2
|
class ShapeLink2
|
||||||
link ShapeLink2 "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink2 "http://localhost:9000/empty.html" "This is a tooltip for a link"
|
||||||
class ShapeCallback2
|
class ShapeCallback2
|
||||||
callback ShapeCallback2 "clickByClass" "This is a tooltip for a callback"
|
callback ShapeCallback2 "clickByClass" "This is a tooltip for a callback"
|
||||||
</div>
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
<pre class="mermaid">
|
||||||
|
|
||||||
<div class="mermaid">
|
|
||||||
gantt
|
gantt
|
||||||
dateFormat YYYY-MM-DD
|
dateFormat YYYY-MM-DD
|
||||||
axisFormat %d/%m
|
axisFormat %d/%m
|
||||||
@@ -86,7 +85,7 @@
|
|||||||
Calling a Callback (look at the console log) :cl2, after cl1, 3d
|
Calling a Callback (look at the console log) :cl2, after cl1, 3d
|
||||||
Calling a Callback with args :cl3, after cl1, 3d
|
Calling a Callback with args :cl3, after cl1, 3d
|
||||||
|
|
||||||
click cl1 href "http://localhost:9000/webpackUsage.html"
|
click cl1 href "http://localhost:9000/empty.html"
|
||||||
click cl2 call clickByGantt()
|
click cl2 call clickByGantt()
|
||||||
click cl3 call clickByGantt("test1", test2, test3)
|
click cl3 call clickByGantt("test1", test2, test3)
|
||||||
|
|
||||||
@@ -94,77 +93,76 @@
|
|||||||
Describe gantt syntax :after doc1, 3d
|
Describe gantt syntax :after doc1, 3d
|
||||||
Add gantt diagram to demo page : 20h
|
Add gantt diagram to demo page : 20h
|
||||||
Add another diagram to demo page : 48h
|
Add another diagram to demo page : 48h
|
||||||
</div>
|
</pre>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
FunctionArg-->URL
|
FunctionArgTest2-->URL
|
||||||
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
click FunctionArgTest2 call clickByFlowArg(ARGUMENT) "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
flowchart TB
|
flowchart TB
|
||||||
FunctionArg-->URL
|
2FunctionArg-->URL
|
||||||
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
click 2FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
classDiagram
|
classDiagram
|
||||||
class ShapeLink
|
class ShapeLink
|
||||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink "http://localhost:9000/empty.html" "This is a tooltip for a link"
|
||||||
class ShapeCallback
|
class ShapeCallback
|
||||||
click ShapeCallback call clickByClass(123) "This is a tooltip for a callback"
|
click ShapeCallback call clickByClass(123) "This is a tooltip for a callback"
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre class="mermaid">
|
||||||
classDiagram-v2
|
classDiagram-v2
|
||||||
class ShapeLink2
|
class ShapeLink2
|
||||||
link ShapeLink2 "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink2 "http://localhost:9000/empty.html" "This is a tooltip for a link"
|
||||||
class ShapeCallback2
|
class ShapeCallback2
|
||||||
click ShapeCallback2 call clickByClass(123) "This is a tooltip for a callback"
|
click ShapeCallback2 call clickByClass(123) "This is a tooltip for a callback"
|
||||||
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="./mermaid.js"></script>
|
|
||||||
<script>
|
|
||||||
function clickByFlow(elemName) {
|
|
||||||
const div = document.createElement('div');
|
|
||||||
div.className = 'created-by-click';
|
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
|
||||||
div.innerText = 'Clicked By Flow';
|
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
<script src="./mermaid.js"></script>
|
||||||
}
|
<script>
|
||||||
function clickByFlowArg(argument) {
|
function clickByFlow(elemName) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-click-2';
|
div.className = 'created-by-click';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Flow: ' + argument;
|
div.innerText = 'Clicked By Flow';
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
function clickByGantt(arg1, arg2, arg3) {
|
function clickByFlowArg(argument) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-gant-click';
|
div.className = 'created-by-click-2';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Gant';
|
div.innerText = 'Clicked By Flow: ' + argument;
|
||||||
if (arg1) div.innerText += ' ' + arg1;
|
|
||||||
if (arg2) div.innerText += ' ' + arg2;
|
|
||||||
if (arg3) div.innerText += ' ' + arg3;
|
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
function clickByClass(arg) {
|
function clickByGantt(arg1, arg2, arg3) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-class-click';
|
div.className = 'created-by-gant-click';
|
||||||
div.style = 'padding: 20px; background: purple; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Class' + (arg ? arg : '');
|
div.innerText = 'Clicked By Gant';
|
||||||
|
if (arg1) div.innerText += ' ' + arg1;
|
||||||
|
if (arg2) div.innerText += ' ' + arg2;
|
||||||
|
if (arg3) div.innerText += ' ' + arg3;
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
mermaid.initialize({ startOnLoad: true, securityLevel: 'loose', logLevel: 1 });
|
function clickByClass(arg) {
|
||||||
</script>
|
const div = document.createElement('div');
|
||||||
</body>
|
div.className = 'created-by-class-click';
|
||||||
|
div.style = 'padding: 20px; background: purple; color: white;';
|
||||||
|
div.innerText = 'Clicked By Class' + (arg ? arg : '');
|
||||||
|
|
||||||
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
|
}
|
||||||
|
mermaid.initialize({ startOnLoad: true, securityLevel: 'loose', logLevel: 1 });
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,26 +1,26 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<title>Mermaid Quick Test Page</title>
|
<title>Mermaid Quick Test Page</title>
|
||||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
|
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
Function-->URL
|
Function1-->URL1
|
||||||
click Function clickByFlow "Add a div"
|
click Function1 clickByFlow "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click URL1 "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
1Function-->2URL
|
1Function-->2URL
|
||||||
click 1Function clickByFlow "Add a div"
|
click 1Function clickByFlow "Add a div"
|
||||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click 2URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div class="mermaid">
|
<pre class="mermaid">
|
||||||
gantt
|
gantt
|
||||||
dateFormat YYYY-MM-DD
|
dateFormat YYYY-MM-DD
|
||||||
axisFormat %d/%m
|
axisFormat %d/%m
|
||||||
@@ -50,34 +50,34 @@
|
|||||||
Visit mermaidjs :active, cl1, 2014-01-07,2014-01-10
|
Visit mermaidjs :active, cl1, 2014-01-07,2014-01-10
|
||||||
Calling a Callback (look at the console log) :cl2, after cl1, 3d
|
Calling a Callback (look at the console log) :cl2, after cl1, 3d
|
||||||
|
|
||||||
click cl1 href "http://localhost:9000/webpackUsage.html"
|
click cl1 href "http://localhost:9000/empty.html"
|
||||||
click cl2 call clickByGantt("test", test, test)
|
click cl2 call clickByGantt("test", test, test)
|
||||||
|
|
||||||
section Last section
|
section Last section
|
||||||
Describe gantt syntax :after doc1, 3d
|
Describe gantt syntax :after doc1, 3d
|
||||||
Add gantt diagram to demo page : 20h
|
Add gantt diagram to demo page : 20h
|
||||||
Add another diagram to demo page : 48h
|
Add another diagram to demo page : 48h
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
function clickByFlow(elemName) {
|
function clickByFlow(elemName) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-click';
|
div.className = 'created-by-click';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Flow';
|
div.innerText = 'Clicked By Flow';
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
function clickByGantt(elemName) {
|
function clickByGantt(elemName) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-gant-click';
|
div.className = 'created-by-gant-click';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Gant';
|
div.innerText = 'Clicked By Gant';
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
mermaid.initialize({ startOnLoad: true, securityLevel: 'strct', logLevel: 1 });
|
mermaid.initialize({ startOnLoad: true, securityLevel: 'strct', logLevel: 1 });
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,61 +1,60 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<title>Mermaid Quick Test Page</title>
|
<title>Mermaid Quick Test Page</title>
|
||||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
|
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||||
<style>
|
<style>
|
||||||
.mermaid2 {
|
.mermaid2 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
Function-->URL
|
Function-->URL
|
||||||
click Function clickByFlow "Add a div"
|
click Function clickByFlow "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
1Function--->2URL
|
1Function--->2URL
|
||||||
click 1Function clickByFlow "Add a div"
|
click 1Function clickByFlow "Add a div"
|
||||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click 2URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
flowchart TB
|
flowchart TB
|
||||||
Function-->URL
|
Function-->URL
|
||||||
click Function clickByFlow "Add a div"
|
click Function clickByFlow "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>" _self
|
click URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>" _self
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
flowchart TB
|
flowchart TB
|
||||||
1Function--->2URL
|
1Function--->2URL
|
||||||
click 1Function clickByFlow "Add a div"
|
click 1Function clickByFlow "Add a div"
|
||||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>" _self
|
click 2URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>" _self
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
classDiagram
|
classDiagram
|
||||||
class ShapeLink
|
class ShapeLink
|
||||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink "http://localhost:9000/empty.html" "This is a tooltip for a link"
|
||||||
class ShapeCallback
|
class ShapeCallback
|
||||||
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
classDiagram-v2
|
classDiagram-v2
|
||||||
class ShapeLink2
|
class ShapeLink2
|
||||||
link ShapeLink2 "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink2 "http://localhost:9000/empty.html" "This is a tooltip for a link"
|
||||||
class ShapeCallback2
|
class ShapeCallback2
|
||||||
callback ShapeCallback2 "clickByClass" "This is a tooltip for a callback"
|
callback ShapeCallback2 "clickByClass" "This is a tooltip for a callback"
|
||||||
</div>
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
<pre class="mermaid">
|
||||||
|
|
||||||
<div class="mermaid">
|
|
||||||
gantt
|
gantt
|
||||||
dateFormat YYYY-MM-DD
|
dateFormat YYYY-MM-DD
|
||||||
axisFormat %d/%m
|
axisFormat %d/%m
|
||||||
@@ -86,7 +85,7 @@
|
|||||||
Calling a Callback (look at the console log) :cl2, after cl1, 3d
|
Calling a Callback (look at the console log) :cl2, after cl1, 3d
|
||||||
Calling a Callback with args :cl3, after cl1, 3d
|
Calling a Callback with args :cl3, after cl1, 3d
|
||||||
|
|
||||||
click cl1 href "http://localhost:9000/webpackUsage.html"
|
click cl1 href "http://localhost:9000/empty.html"
|
||||||
click cl2 call clickByGantt()
|
click cl2 call clickByGantt()
|
||||||
click cl3 call clickByGantt("test1", test2, test3)
|
click cl3 call clickByGantt("test1", test2, test3)
|
||||||
|
|
||||||
@@ -94,77 +93,76 @@
|
|||||||
Describe gantt syntax :after doc1, 3d
|
Describe gantt syntax :after doc1, 3d
|
||||||
Add gantt diagram to demo page : 20h
|
Add gantt diagram to demo page : 20h
|
||||||
Add another diagram to demo page : 48h
|
Add another diagram to demo page : 48h
|
||||||
</div>
|
</pre>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
FunctionArg-->URL
|
FunctionArg-->URL
|
||||||
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
flowchart TB
|
flowchart TB
|
||||||
FunctionArg-->URL
|
FunctionArg-->URL
|
||||||
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
classDiagram
|
classDiagram
|
||||||
class ShapeLink
|
class ShapeLink
|
||||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink "http://localhost:9000/empty.html" "This is a tooltip for a link"
|
||||||
class ShapeCallback
|
class ShapeCallback
|
||||||
click ShapeCallback call clickByClass(123) "This is a tooltip for a callback"
|
click ShapeCallback call clickByClass(123) "This is a tooltip for a callback"
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
classDiagram-v2
|
classDiagram-v2
|
||||||
class ShapeLink2
|
class ShapeLink2
|
||||||
link ShapeLink2 "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink2 "http://localhost:9000/empty.html" "This is a tooltip for a link"
|
||||||
class ShapeCallback2
|
class ShapeCallback2
|
||||||
click ShapeCallback2 call clickByClass(123) "This is a tooltip for a callback"
|
click ShapeCallback2 call clickByClass(123) "This is a tooltip for a callback"
|
||||||
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
<script src="./mermaid.js"></script>
|
||||||
|
<script>
|
||||||
|
function clickByFlow(elemName) {
|
||||||
|
const div = document.createElement('div');
|
||||||
|
div.className = 'created-by-click';
|
||||||
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
|
div.innerText = 'Clicked By Flow';
|
||||||
|
|
||||||
<script src="./mermaid.js"></script>
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
<script>
|
}
|
||||||
function clickByFlow(elemName) {
|
function clickByFlowArg(argument) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-click';
|
div.className = 'created-by-click-2';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Flow';
|
div.innerText = 'Clicked By Flow: ' + argument;
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
function clickByFlowArg(argument) {
|
function clickByGantt(arg1, arg2, arg3) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-click-2';
|
div.className = 'created-by-gant-click';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Flow: ' + argument;
|
div.innerText = 'Clicked By Gant';
|
||||||
|
if (arg1) div.innerText += ' ' + arg1;
|
||||||
|
if (arg2) div.innerText += ' ' + arg2;
|
||||||
|
if (arg3) div.innerText += ' ' + arg3;
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
function clickByGantt(arg1, arg2, arg3) {
|
function clickByClass(arg) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-gant-click';
|
div.className = 'created-by-class-click';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: purple; color: white;';
|
||||||
div.innerText = 'Clicked By Gant';
|
div.innerText = 'Clicked By Class' + (arg ? arg : '');
|
||||||
if (arg1) div.innerText += ' ' + arg1;
|
|
||||||
if (arg2) div.innerText += ' ' + arg2;
|
|
||||||
if (arg3) div.innerText += ' ' + arg3;
|
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
function clickByClass(arg) {
|
mermaid.initialize({ startOnLoad: true, securityLevel: 'sandbox', logLevel: 1 });
|
||||||
const div = document.createElement('div');
|
</script>
|
||||||
div.className = 'created-by-class-click';
|
</body>
|
||||||
div.style = 'padding: 20px; background: purple; color: white;';
|
|
||||||
div.innerText = 'Clicked By Class' + (arg ? arg : '');
|
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
|
||||||
}
|
|
||||||
mermaid.initialize({ startOnLoad: true, securityLevel: 'sandbox', logLevel: 1 });
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,26 +1,26 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<title>Mermaid Quick Test Page</title>
|
<title>Mermaid Quick Test Page</title>
|
||||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
|
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
Function-->URL
|
Function1-->URL1
|
||||||
click Function clickByFlow "Add a div"
|
click Function1 clickByFlow "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click URL1 "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
1Function-->2URL
|
1Function-->2URL
|
||||||
click 1Function clickByFlow "Add a div"
|
click 1Function clickByFlow "Add a div"
|
||||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click 2URL "http://localhost:9000/empty.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div class="mermaid">
|
<pre class="mermaid">
|
||||||
gantt
|
gantt
|
||||||
dateFormat YYYY-MM-DD
|
dateFormat YYYY-MM-DD
|
||||||
axisFormat %d/%m
|
axisFormat %d/%m
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
Calling a Callback (look at the console log) :cl2, after cl1, 3d
|
Calling a Callback (look at the console log) :cl2, after cl1, 3d
|
||||||
Calling a Callback with args :cl3, after cl1, 3d
|
Calling a Callback with args :cl3, after cl1, 3d
|
||||||
|
|
||||||
click cl1 href "http://localhost:9000/webpackUsage.html"
|
click cl1 href "http://localhost:9000/empty.html"
|
||||||
click cl2 call clickByGantt()
|
click cl2 call clickByGantt()
|
||||||
click cl3 call clickByGantt("test1", test2, test3)
|
click cl3 call clickByGantt("test1", test2, test3)
|
||||||
|
|
||||||
@@ -59,30 +59,30 @@
|
|||||||
Describe gantt syntax :after doc1, 3d
|
Describe gantt syntax :after doc1, 3d
|
||||||
Add gantt diagram to demo page : 20h
|
Add gantt diagram to demo page : 20h
|
||||||
Add another diagram to demo page : 48h
|
Add another diagram to demo page : 48h
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
function clickByFlow(elemName) {
|
function clickByFlow(elemName) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-click';
|
div.className = 'created-by-click';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Flow';
|
div.innerText = 'Clicked By Flow';
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
function clickByGantt(arg1, arg2, arg3) {
|
function clickByGantt(arg1, arg2, arg3) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-gant-click';
|
div.className = 'created-by-gant-click';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Gant';
|
div.innerText = 'Clicked By Gant';
|
||||||
if (arg1) div.innerText += ' ' + arg1;
|
if (arg1) div.innerText += ' ' + arg1;
|
||||||
if (arg2) div.innerText += ' ' + arg2;
|
if (arg2) div.innerText += ' ' + arg2;
|
||||||
if (arg3) div.innerText += ' ' + arg3;
|
if (arg3) div.innerText += ' ' + arg3;
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
mermaid.initialize({ startOnLoad: true, securityLevel: 'strict', logLevel: 1 });
|
mermaid.initialize({ startOnLoad: true, securityLevel: 'strict', logLevel: 1 });
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,23 +1,23 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<title>Mermaid Quick Test Page</title>
|
<title>Mermaid Quick Test Page</title>
|
||||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
|
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: 'trebuchet ms', verdana, arial;
|
font-family: 'trebuchet ms', verdana, arial;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="mermaid2">
|
<pre class="mermaid2">
|
||||||
%%{init: { 'themeCSS': '} * { background: lightblue }' } }%%
|
%%{init: { 'themeCSS': '} * { background: lightblue }' } }%%
|
||||||
flowchart TD
|
flowchart TD
|
||||||
a --> b
|
a --> b
|
||||||
</div>
|
</pre>
|
||||||
<div class="mermaid">
|
<pre class="mermaid">
|
||||||
%%{init:{"theme":"base", "themeVariables": {"primaryColor":"#411d4e", "titleColor":"white", "darkMode":true}}}%%
|
%%{init:{"theme":"base", "themeVariables": {"primaryColor":"#411d4e", "titleColor":"white", "darkMode":true}}}%%
|
||||||
flowchart LR
|
flowchart LR
|
||||||
subgraph A
|
subgraph A
|
||||||
@@ -27,13 +27,13 @@
|
|||||||
i -->f
|
i -->f
|
||||||
end
|
end
|
||||||
A --> B
|
A --> B
|
||||||
</div>
|
</pre>
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
function showFullFirstSquad(elemName) {
|
function showFullFirstSquad(elemName) {
|
||||||
console.log('show ' + elemName);
|
console.log('show ' + elemName);
|
||||||
}
|
}
|
||||||
mermaid.initialize({ startOnLoad: true, securityLevel: 'loose', logLevel: 0 });
|
mermaid.initialize({ startOnLoad: true, securityLevel: 'loose', logLevel: 0 });
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,19 +1,24 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<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
|
<link
|
||||||
href="https://fonts.googleapis.com/css?family=Montserrat&display=swap"
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
||||||
rel="stylesheet"
|
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://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap" rel="stylesheet">
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
/* background: rgb(221, 208, 208); */
|
/* background: rgb(221, 208, 208); */
|
||||||
/* background:#333; */
|
/* background:#333; */
|
||||||
font-family: 'Arial';
|
font-family: 'Arial';
|
||||||
}
|
}
|
||||||
h1 { color: grey;}
|
h1 {
|
||||||
|
color: grey;
|
||||||
|
}
|
||||||
.mermaid2 {
|
.mermaid2 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -22,137 +27,55 @@
|
|||||||
<body>
|
<body>
|
||||||
<h1>info below</h1>
|
<h1>info below</h1>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div class="mermaid2" style="width: 50%; height: 20%;">
|
<div class="mermaid" style="width: 50%; height: 20%">
|
||||||
flowchart BT
|
flowchart BT subgraph S1 sub1 -->sub2 end subgraph S2 sub4 end S1 --> S2 sub1 --> sub4
|
||||||
subgraph two
|
|
||||||
b1
|
|
||||||
end
|
|
||||||
subgraph three
|
|
||||||
c1-->c2
|
|
||||||
end
|
|
||||||
c1 --apa apa apa--> b1
|
|
||||||
two --> c2
|
|
||||||
</div>
|
</div>
|
||||||
<div class="mermaid2" style="width: 50%; height: 200px;">
|
<div class="mermaid2" style="width: 50%; height: 200px">
|
||||||
sequenceDiagram
|
sequenceDiagram Alice->>Bob:Extremely utterly long line of longness which had preivously
|
||||||
Alice->>Bob:Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
overflown the actor box as it is much longer than what it should be Bob->>Alice: I'm short
|
||||||
Bob->>Alice: I'm short though
|
though
|
||||||
</div>
|
</div>
|
||||||
<div class="mermaid2" style="width: 50%; height: 200px;">
|
<div class="mermaid2" style="width: 50%; height: 200px">
|
||||||
%%{init: {'securityLevel': 'loose'}}%%
|
%%{init: {'securityLevel': 'loose'}}%% graph TD A[Christmas] -->|Get money| B(Go shopping) B
|
||||||
graph TD
|
--> C{{Let me think...<br />Do I want something for work,<br />something to spend every free
|
||||||
A[Christmas] -->|Get money| B(Go shopping)
|
second with,<br />or something to get around?}} C -->|One| D[Laptop] C -->|Two| E[iPhone] C
|
||||||
B --> C{{Let me think...<br />Do I want something for work,<br />something to spend every free second with,<br />or something to get around?}}
|
-->|Three| F[Car] click A "index.html#link-clicked" "link test" click B callback "click
|
||||||
C -->|One| D[Laptop]
|
test" classDef someclass fill:#f96; class A someclass; class C someclass;
|
||||||
C -->|Two| E[iPhone]
|
|
||||||
C -->|Three| F[Car]
|
|
||||||
click A "index.html#link-clicked" "link test"
|
|
||||||
click B callback "click test"
|
|
||||||
classDef someclass fill:#f96;
|
|
||||||
class A someclass;
|
|
||||||
class C someclass;
|
|
||||||
</div>
|
</div>
|
||||||
<div class="mermaid2" style="width: 50%; height: 200px;">
|
<div class="mermaid2" style="width: 50%; height: 200px">
|
||||||
|
flowchart BT subgraph a b1 -- ok --> b2 end a -- sert --> c c --> d b1 --> d a --asd123 -->
|
||||||
|
d
|
||||||
|
</div>
|
||||||
|
<div class="mermaid2" style="width: 50%; height: 20%">
|
||||||
|
stateDiagram-v2 state A { B1 --> B2: ok } A --> C: sert C --> D B1 --> D A --> D: asd123
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mermaid2" style="width: 50%; height: 40%">
|
||||||
|
%% this does not produce the desired result flowchart TB subgraph container_Beta
|
||||||
|
process_C-->Process_D end subgraph container_Alpha process_A-->process_B
|
||||||
|
process_B-->|via_AWSBatch|container_Beta process_A-->|messages|process_C end
|
||||||
|
</div>
|
||||||
|
<div class="mermaid" style="width: 50%; height: 40%">
|
||||||
|
flowchart TB a{{"Lorem 'ipsum' dolor 'sit' amet, 'consectetur' adipiscing 'elit'."}} -->
|
||||||
|
b{{"Lorem #quot;ipsum#quot; dolor #quot;sit#quot; amet,#quot;consectetur#quot; adipiscing
|
||||||
|
#quot;elit#quot;."}}
|
||||||
|
</div>
|
||||||
|
<div class="mermaid2" style="width: 50%; height: 50%">
|
||||||
|
flowchart TB internet nat routeur lb1 lb2 compute1 compute2 subgraph project routeur nat
|
||||||
|
subgraph subnet1 compute1 lb1 end subgraph subnet2 compute2 lb2 end end internet --> routeur
|
||||||
|
routeur --> subnet1 & subnet2 subnet1 & subnet2 --> nat --> internet
|
||||||
|
</div>
|
||||||
|
<div class="mermaid2" style="width: 50%; height: 50%">
|
||||||
|
flowchart TD subgraph one[One] subgraph sub_one[Sub One] _sub_one end end subgraph two[Two]
|
||||||
|
_two end sub_one --> two
|
||||||
|
</div>
|
||||||
|
<div class="mermaid2" style="width: 50%; height: 50%">
|
||||||
|
flowchart TD subgraph one[One] subgraph sub_one[Sub One] _sub_one end subgraph sub_two[Sub
|
||||||
|
Two] _sub_two end _one end %% here, either the first or the second one sub_one --> sub_two
|
||||||
|
_one --> b
|
||||||
|
</div>
|
||||||
|
|
||||||
flowchart BT
|
<script src="./mermaid.js"></script>
|
||||||
subgraph a
|
|
||||||
b1 -- ok --> b2
|
|
||||||
end
|
|
||||||
a -- sert --> c
|
|
||||||
c --> d
|
|
||||||
b1 --> d
|
|
||||||
a --asd123 --> d
|
|
||||||
</div>
|
|
||||||
<div class="mermaid2" style="width: 50%; height: 20%;">
|
|
||||||
stateDiagram-v2
|
|
||||||
state A {
|
|
||||||
B1 --> B2: ok
|
|
||||||
}
|
|
||||||
A --> C: sert
|
|
||||||
C --> D
|
|
||||||
B1 --> D
|
|
||||||
A --> D: asd123
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mermaid2" style="width: 50%; height: 40%;">
|
|
||||||
%% this does not produce the desired result
|
|
||||||
flowchart TB
|
|
||||||
subgraph container_Beta
|
|
||||||
process_C-->Process_D
|
|
||||||
end
|
|
||||||
subgraph container_Alpha
|
|
||||||
process_A-->process_B
|
|
||||||
process_B-->|via_AWSBatch|container_Beta
|
|
||||||
process_A-->|messages|process_C
|
|
||||||
end
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="mermaid" style="width: 50%; height: 40%;">
|
|
||||||
flowchart TB
|
|
||||||
a{{"Lorem 'ipsum' dolor 'sit' amet, 'consectetur' adipiscing 'elit'."}}
|
|
||||||
--> b{{"Lorem #quot;ipsum#quot; dolor #quot;sit#quot; amet,#quot;consectetur#quot; adipiscing #quot;elit#quot;."}}
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="mermaid2" style="width: 50%; height: 50%;">
|
|
||||||
flowchart TB
|
|
||||||
internet
|
|
||||||
nat
|
|
||||||
routeur
|
|
||||||
lb1
|
|
||||||
lb2
|
|
||||||
compute1
|
|
||||||
compute2
|
|
||||||
subgraph project
|
|
||||||
routeur
|
|
||||||
nat
|
|
||||||
subgraph subnet1
|
|
||||||
compute1
|
|
||||||
lb1
|
|
||||||
end
|
|
||||||
subgraph subnet2
|
|
||||||
compute2
|
|
||||||
lb2
|
|
||||||
end
|
|
||||||
end
|
|
||||||
internet --> routeur
|
|
||||||
routeur --> subnet1 & subnet2
|
|
||||||
subnet1 & subnet2 --> nat --> internet
|
|
||||||
</div>
|
|
||||||
<div class="mermaid2" style="width: 50%; height: 50%;">
|
|
||||||
flowchart TD
|
|
||||||
|
|
||||||
subgraph one[One]
|
|
||||||
subgraph sub_one[Sub One]
|
|
||||||
_sub_one
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph two[Two]
|
|
||||||
_two
|
|
||||||
end
|
|
||||||
|
|
||||||
sub_one --> two
|
|
||||||
</div>
|
|
||||||
<div class="mermaid2" style="width: 50%; height: 50%;">
|
|
||||||
flowchart TD
|
|
||||||
|
|
||||||
subgraph one[One]
|
|
||||||
subgraph sub_one[Sub One]
|
|
||||||
_sub_one
|
|
||||||
end
|
|
||||||
subgraph sub_two[Sub Two]
|
|
||||||
_sub_two
|
|
||||||
end
|
|
||||||
_one
|
|
||||||
end
|
|
||||||
|
|
||||||
%% here, either the first or the second one
|
|
||||||
sub_one --> sub_two
|
|
||||||
_one --> b
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="./mermaid.js"></script>
|
|
||||||
<script>
|
<script>
|
||||||
mermaid.parseError = function (err, hash) {
|
mermaid.parseError = function (err, hash) {
|
||||||
// console.error('Mermaid error: ', err);
|
// console.error('Mermaid error: ', err);
|
||||||
@@ -163,7 +86,7 @@ _one --> b
|
|||||||
// arrowMarkerAbsolute: true,
|
// arrowMarkerAbsolute: true,
|
||||||
// themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}',
|
// themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}',
|
||||||
logLevel: 0,
|
logLevel: 0,
|
||||||
flowchart: { curve: 'cardinal', htmlLabels: true },
|
flowchart: { curve: 'cardinal', htmlLabels: false },
|
||||||
// gantt: { axisFormat: '%m/%d/%Y' },
|
// gantt: { axisFormat: '%m/%d/%Y' },
|
||||||
sequence: { actorMargin: 50, showSequenceNumbers: true },
|
sequence: { actorMargin: 50, showSequenceNumbers: true },
|
||||||
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
||||||
@@ -172,8 +95,8 @@ _one --> b
|
|||||||
securityLevel: 'strict',
|
securityLevel: 'strict',
|
||||||
});
|
});
|
||||||
function callback() {
|
function callback() {
|
||||||
alert('It worked');
|
alert('It worked');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,19 +1,24 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<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
|
<link
|
||||||
href="https://fonts.googleapis.com/css?family=Montserrat&display=swap"
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
||||||
rel="stylesheet"
|
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://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap" rel="stylesheet">
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
/* background: rgb(221, 208, 208); */
|
/* background: rgb(221, 208, 208); */
|
||||||
/* background:#333; */
|
/* background:#333; */
|
||||||
font-family: 'Arial';
|
font-family: 'Arial';
|
||||||
}
|
}
|
||||||
h1 { color: grey;}
|
h1 {
|
||||||
|
color: grey;
|
||||||
|
}
|
||||||
.mermaid2 {
|
.mermaid2 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -22,7 +27,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<h1>info below</h1>
|
<h1>info below</h1>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div class="mermaid2" style="width: 50%; height: 20%;">
|
<pre class="mermaid2" style="width: 50%; height: 20%">
|
||||||
flowchart BT
|
flowchart BT
|
||||||
subgraph two
|
subgraph two
|
||||||
b1
|
b1
|
||||||
@@ -32,13 +37,13 @@ flowchart BT
|
|||||||
end
|
end
|
||||||
c1 --apa apa apa--> b1
|
c1 --apa apa apa--> b1
|
||||||
two --> c2
|
two --> c2
|
||||||
</div>
|
</pre>
|
||||||
<div class="mermaid2" style="width: 50%; height: 200px;">
|
<pre class="mermaid2" style="width: 50%; height: 200px">
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->>Bob:Extremely utterly long line of longness which had preivously overflown the actor box as it is much longer than what it should be
|
Alice->>Bob:Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be
|
||||||
Bob->>Alice: I'm short though
|
Bob->>Alice: I'm short though
|
||||||
</div>
|
</pre>
|
||||||
<div class="mermaid2" style="width: 50%; height: 200px;">
|
<pre class="mermaid2" style="width: 50%; height: 200px">
|
||||||
%%{init: {'securityLevel': 'loose'}}%%
|
%%{init: {'securityLevel': 'loose'}}%%
|
||||||
graph TD
|
graph TD
|
||||||
A[Christmas] -->|Get money| B(Go shopping)
|
A[Christmas] -->|Get money| B(Go shopping)
|
||||||
@@ -51,8 +56,8 @@ sequenceDiagram
|
|||||||
classDef someclass fill:#f96;
|
classDef someclass fill:#f96;
|
||||||
class A someclass;
|
class A someclass;
|
||||||
class C someclass;
|
class C someclass;
|
||||||
</div>
|
</pre>
|
||||||
<div class="mermaid2" style="width: 50%; height: 200px;">
|
<pre class="mermaid2" style="width: 50%; height: 200px">
|
||||||
|
|
||||||
flowchart BT
|
flowchart BT
|
||||||
subgraph a
|
subgraph a
|
||||||
@@ -62,8 +67,8 @@ sequenceDiagram
|
|||||||
c --> d
|
c --> d
|
||||||
b1 --> d
|
b1 --> d
|
||||||
a --asd123 --> d
|
a --asd123 --> d
|
||||||
</div>
|
</pre>
|
||||||
<div class="mermaid2" style="width: 50%; height: 20%;">
|
<pre class="mermaid2" style="width: 50%; height: 20%">
|
||||||
stateDiagram-v2
|
stateDiagram-v2
|
||||||
state A {
|
state A {
|
||||||
B1 --> B2: ok
|
B1 --> B2: ok
|
||||||
@@ -72,9 +77,9 @@ stateDiagram-v2
|
|||||||
C --> D
|
C --> D
|
||||||
B1 --> D
|
B1 --> D
|
||||||
A --> D: asd123
|
A --> D: asd123
|
||||||
</div>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div class="mermaid2" style="width: 50%; height: 20%;">
|
<pre class="mermaid2" style="width: 50%; height: 20%">
|
||||||
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%%
|
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%%
|
||||||
flowchart LR
|
flowchart LR
|
||||||
a -->b
|
a -->b
|
||||||
@@ -84,9 +89,8 @@ flowchart LR
|
|||||||
subgraph B
|
subgraph B
|
||||||
b
|
b
|
||||||
end
|
end
|
||||||
|
</pre>
|
||||||
</div>
|
<pre class="mermaid" style="width: 50%; height: 20%">
|
||||||
<div class="mermaid" style="width: 50%; height: 20%;">
|
|
||||||
flowchart TB
|
flowchart TB
|
||||||
subgraph A
|
subgraph A
|
||||||
b-->B
|
b-->B
|
||||||
@@ -95,16 +99,15 @@ flowchart TB
|
|||||||
subgraph B
|
subgraph B
|
||||||
c
|
c
|
||||||
end
|
end
|
||||||
|
</pre>
|
||||||
</div>
|
<pre class="mermaid2" style="width: 50%; height: 20%">
|
||||||
<div class="mermaid2" style="width: 50%; height: 20%;">
|
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
Alice->Bob: Hello Bob, how are you?
|
Alice->Bob: Hello Bob, how are you?
|
||||||
Note over Alice,Bob: Looks
|
Note over Alice,Bob: Looks
|
||||||
Note over Bob,Alice: Looks back
|
Note over Bob,Alice: Looks back
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
mermaid.parseError = function (err, hash) {
|
mermaid.parseError = function (err, hash) {
|
||||||
// console.error('Mermaid error: ', err);
|
// console.error('Mermaid error: ', err);
|
||||||
@@ -124,8 +127,8 @@ Note over Bob,Alice: Looks back
|
|||||||
securityLevel: 'strict',
|
securityLevel: 'strict',
|
||||||
});
|
});
|
||||||
function callback() {
|
function callback() {
|
||||||
alert('It worked');
|
alert('It worked');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,10 +1,13 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8"/>
|
<meta charset="utf-8" />
|
||||||
<!-- <meta charset="iso-8859-15"/> -->
|
<!-- <meta charset="iso-8859-15"/> -->
|
||||||
<script src="/e2e.js"></script>
|
<script src="./viewer.js" type="module"></script>
|
||||||
<!-- <link href="https://fonts.googleapis.com/css?family=Mansalva&display=swap" rel="stylesheet" /> -->
|
<!-- <link href="https://fonts.googleapis.com/css?family=Mansalva&display=swap" rel="stylesheet" /> -->
|
||||||
<link href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap" rel="stylesheet">
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
/* font-family: 'Mansalva', cursive;*/
|
/* font-family: 'Mansalva', cursive;*/
|
||||||
@@ -27,13 +30,14 @@
|
|||||||
svg {
|
svg {
|
||||||
border: 2px solid darkred;
|
border: 2px solid darkred;
|
||||||
}
|
}
|
||||||
.exClass2 > rect, .exClass {
|
.exClass2 > rect,
|
||||||
|
.exClass {
|
||||||
fill: greenyellow !important;
|
fill: greenyellow !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script src="./mermaid.js"></script>
|
<!-- <script src="./mermaid.js"></script> -->
|
||||||
<script>
|
<script>
|
||||||
// Notice startOnLoad=false
|
// Notice startOnLoad=false
|
||||||
// This prevents default handling in mermaid from render before the e2e logic is applied
|
// This prevents default handling in mermaid from render before the e2e logic is applied
|
||||||
|
10
cypress/platform/empty.html
Normal file
10
cypress/platform/empty.html
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Empty</title>
|
||||||
|
</head>
|
||||||
|
<body></body>
|
||||||
|
</html>
|
@@ -3,4 +3,4 @@ div.id = 'the-malware';
|
|||||||
div.className = 'malware';
|
div.className = 'malware';
|
||||||
div.innerHTML = 'XSS Succeeded';
|
div.innerHTML = 'XSS Succeeded';
|
||||||
parent.document.getElementsByTagName('body')[0].appendChild(div);
|
parent.document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
throw new Error('XSS Succeded');
|
throw new Error('XSS Succeeded');
|
||||||
|
@@ -1,34 +1,34 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<link
|
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
||||||
href="https://fonts.googleapis.com/css?family=Montserrat&display=swap"
|
<style>
|
||||||
rel="stylesheet"
|
body {
|
||||||
/>
|
font-family: 'trebuchet ms', verdana, arial;
|
||||||
<style>body {
|
}
|
||||||
font-family: 'trebuchet ms', verdana, arial;
|
</style>
|
||||||
}</style>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="mermaid">
|
<pre class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
subgraph One
|
subgraph One
|
||||||
a1-->a2-->a3
|
a1-->a2-->a3
|
||||||
end
|
end
|
||||||
</div>
|
</pre>
|
||||||
<div class="mermaid">
|
<pre class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
a_a --> b_b:::apa --> c_c:::apa
|
a_a --> b_b:::apa --> c_c:::apa
|
||||||
classDef apa fill:#f9f,stroke:#333,stroke-width:4px;
|
classDef apa fill:#f9f,stroke:#333,stroke-width:4px;
|
||||||
class a_a apa;
|
class a_a apa;
|
||||||
</div>
|
</pre>
|
||||||
<div class="mermaid">
|
<pre class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
a_a(Aftonbladet) --> b_b[gorilla]:::apa --> c_c{chimp}:::apa -->a_a
|
a_a(Aftonbladet) --> b_b[gorilla]:::apa --> c_c{chimp}:::apa -->a_a
|
||||||
a_a --> c --> d_d --> c_c
|
a_a --> c --> d_d --> c_c
|
||||||
classDef apa fill:#f9f,stroke:#333,stroke-width:4px;
|
classDef apa fill:#f9f,stroke:#333,stroke-width:4px;
|
||||||
class a_a apa;
|
class a_a apa;
|
||||||
click a_a "http://www.aftonbladet.se" "apa"
|
click a_a "http://www.aftonbladet.se" "apa"
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
@@ -41,6 +41,5 @@
|
|||||||
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
26
cypress/platform/ghsa1.html
Normal file
26
cypress/platform/ghsa1.html
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<html>
|
||||||
|
<script>
|
||||||
|
// %%{ init: { "logLevel":0, "themeVariables" : { "primaryColor": "#fff000","textColor": "green","apa":"} #target { background-color: crimson }" } } }%%
|
||||||
|
</script>
|
||||||
|
<body>
|
||||||
|
<div id="target">
|
||||||
|
<h1>This element does not belong to the SVG but we can style it</h1>
|
||||||
|
</div>
|
||||||
|
<svg id="diagram"></svg>
|
||||||
|
|
||||||
|
<script src="./mermaid.js"></script>
|
||||||
|
<script>
|
||||||
|
mermaid.initialize({ startOnLoad: false, logLevel: 0 });
|
||||||
|
|
||||||
|
const graph = `
|
||||||
|
%%{ init: { "themeVariables" : { "textColor": "green;} #target { background-color: crimson }", "mainBkg": "#fff000" } } }%%
|
||||||
|
graph TD
|
||||||
|
A[Goose]
|
||||||
|
`;
|
||||||
|
|
||||||
|
const diagram = document.getElementById('diagram');
|
||||||
|
const svg = mermaid.render('diagram-svg', graph);
|
||||||
|
diagram.innerHTML = svg;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
26
cypress/platform/ghsa2.html
Normal file
26
cypress/platform/ghsa2.html
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<html>
|
||||||
|
<script>
|
||||||
|
// %%{ init: { "logLevel":0, "themeVariables" : { "primaryColor": "#fff000","textColor": "green","apa":"} #target { background-color: crimson }" } } }%%
|
||||||
|
</script>
|
||||||
|
<body>
|
||||||
|
<div id="target">
|
||||||
|
<h1>This element does not belong to the SVG but we can style it</h1>
|
||||||
|
</div>
|
||||||
|
<svg id="diagram"></svg>
|
||||||
|
|
||||||
|
<script src="./mermaid.js"></script>
|
||||||
|
<script>
|
||||||
|
mermaid.initialize({ startOnLoad: false, logLevel: 0 });
|
||||||
|
|
||||||
|
const graph = `
|
||||||
|
%%{ init: { "fontFamily" : "&125; * { background: red }" } }%%
|
||||||
|
graph TD
|
||||||
|
A[Goose]
|
||||||
|
`;
|
||||||
|
|
||||||
|
const diagram = document.getElementById('diagram');
|
||||||
|
const svg = mermaid.render('diagram-svg', graph);
|
||||||
|
diagram.innerHTML = svg;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@@ -1,31 +1,37 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
||||||
<link
|
<link
|
||||||
href="https://fonts.googleapis.com/css?family=Montserrat&display=swap"
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
||||||
rel="stylesheet"
|
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://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap" rel="stylesheet">
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
background: rgb(221, 208, 208);
|
background: rgb(221, 208, 208);
|
||||||
/*background:#333;*/
|
/*background:#333;*/
|
||||||
font-family: 'Arial';
|
font-family: 'Arial';
|
||||||
}
|
}
|
||||||
h1 { color: white;}
|
h1 {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
.mermaid2 {
|
.mermaid2 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.customCss > rect, .customCss{
|
.customCss > rect,
|
||||||
fill:#FF0000 !important;
|
.customCss {
|
||||||
stroke:#FFFF00 !important;
|
fill: #ff0000 !important;
|
||||||
stroke-width:4px !important;
|
stroke: #ffff00 !important;
|
||||||
}
|
stroke-width: 4px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>info below</h1>
|
<h1>info below</h1>
|
||||||
<div class="mermaid" style="width: 100%; height: 20%;">
|
<pre class="mermaid" style="width: 100%; height: 20%">
|
||||||
|
|
||||||
gitGraph
|
gitGraph
|
||||||
class BankAccount{
|
class BankAccount{
|
||||||
@@ -35,10 +41,9 @@
|
|||||||
+withdrawl(amount) int
|
+withdrawl(amount) int
|
||||||
}
|
}
|
||||||
cssClass "BankAccount" customCss
|
cssClass "BankAccount" customCss
|
||||||
|
</pre>
|
||||||
|
|
||||||
</div>
|
<script src="./mermaid.js"></script>
|
||||||
|
|
||||||
<script src="./mermaid.js"></script>
|
|
||||||
<script>
|
<script>
|
||||||
mermaid.parseError = function (err, hash) {
|
mermaid.parseError = function (err, hash) {
|
||||||
// console.error('Mermaid error: ', err);
|
// console.error('Mermaid error: ', err);
|
||||||
@@ -60,8 +65,8 @@
|
|||||||
securityLevel: 'loose',
|
securityLevel: 'loose',
|
||||||
});
|
});
|
||||||
function callback() {
|
function callback() {
|
||||||
alert('It worked');
|
alert('It worked');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,32 +1,60 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
||||||
<link
|
<link
|
||||||
href="https://fonts.googleapis.com/css?family=Montserrat&display=swap"
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
||||||
rel="stylesheet"
|
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://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap" rel="stylesheet">
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
/* background: rgb(221, 208, 208); */
|
/* background: rgb(221, 208, 208); */
|
||||||
/* background:#111; */
|
/* background:#111; */
|
||||||
/* background:#333; */
|
/* background:#333; */
|
||||||
font-family: 'Arial';
|
font-family: 'Arial';
|
||||||
}
|
}
|
||||||
/* h1 { color: white;} */
|
/* h1 { color: white;} */
|
||||||
.mermaid2 {
|
.mermaid2 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.customCss > rect, .customCss{
|
.customCss > rect,
|
||||||
fill:#FF0000 !important;
|
.customCss {
|
||||||
stroke:#FFFF00 !important;
|
fill: #ff0000 !important;
|
||||||
stroke-width:4px !important;
|
stroke: #ffff00 !important;
|
||||||
}
|
stroke-width: 4px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>info below</h1>
|
<h1>info below</h1>
|
||||||
<div class="mermaid" style="width: 100%; height: 20%;">
|
|
||||||
|
<pre class="mermaid" style="width: 100%; height: 20%">
|
||||||
|
%%{init: { "logLevel": "debug", "theme": "default" , "gitGraph" : {"showBranches":"false","rotateCommitLabel":"true"},"themeVariables": {
|
||||||
|
"gitBranchLabel0": "#ff0000",
|
||||||
|
"gitBranchLabel1": "#00ff00",
|
||||||
|
"gitBranchLabel2": "#0000ff",
|
||||||
|
"git0": "#550055"
|
||||||
|
} } }%%
|
||||||
|
gitGraph
|
||||||
|
commit
|
||||||
|
branch develop
|
||||||
|
commit
|
||||||
|
commit
|
||||||
|
branch release/1.0.0
|
||||||
|
checkout release/1.0.0
|
||||||
|
commit tag:"1.0.0-beta1"
|
||||||
|
checkout develop
|
||||||
|
commit
|
||||||
|
commit
|
||||||
|
commit
|
||||||
|
commit
|
||||||
|
checkout release/1.0.0
|
||||||
|
merge develop tag: "1.0.0-beta2"
|
||||||
|
</pre>
|
||||||
|
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||||
%%{init: { "logLevel": "debug", "theme": "default" , "gitGraph" : {"showBranches":"false"},"themeVariables": {
|
%%{init: { "logLevel": "debug", "theme": "default" , "gitGraph" : {"showBranches":"false"},"themeVariables": {
|
||||||
"gitBranchLabel0": "#ff0000",
|
"gitBranchLabel0": "#ff0000",
|
||||||
"gitBranchLabel1": "#00ff00",
|
"gitBranchLabel1": "#00ff00",
|
||||||
@@ -50,9 +78,8 @@
|
|||||||
commit
|
commit
|
||||||
branch featureA
|
branch featureA
|
||||||
commit
|
commit
|
||||||
|
</pre>
|
||||||
</div>
|
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||||
<div class="mermaid2" style="width: 100%; height: 20%;">
|
|
||||||
gitGraph
|
gitGraph
|
||||||
commit type:HIGHLIGHT
|
commit type:HIGHLIGHT
|
||||||
branch hotfix
|
branch hotfix
|
||||||
@@ -94,17 +121,16 @@
|
|||||||
merge main
|
merge main
|
||||||
checkout develop
|
checkout develop
|
||||||
merge release
|
merge release
|
||||||
|
</pre>
|
||||||
</div>
|
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||||
<div class="mermaid2" style="width: 100%; height: 20%;">
|
|
||||||
gitGraph:
|
gitGraph:
|
||||||
commit
|
commit
|
||||||
commit
|
commit
|
||||||
branch newbranch
|
branch newbranch
|
||||||
commit
|
commit
|
||||||
merge main
|
merge main
|
||||||
</div>
|
</pre>
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
mermaid.parseError = function (err, hash) {
|
mermaid.parseError = function (err, hash) {
|
||||||
// console.error('Mermaid error: ', err);
|
// console.error('Mermaid error: ', err);
|
||||||
@@ -112,23 +138,24 @@
|
|||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
//theme: 'dark',
|
//theme: 'dark',
|
||||||
themeVariables: {
|
themeVariables: {
|
||||||
commitLabelColor: '#9400D3',
|
commitLabelColor: '#9400D3',
|
||||||
commitLabelBackground: '#FFFFFF',
|
commitLabelBackground: '#FFFFFF',
|
||||||
// darkMode: true,
|
// darkMode: true,
|
||||||
// background: '#222',
|
// background: '#222',
|
||||||
// // textColor: 'white',
|
// // textColor: 'white',
|
||||||
// // primaryTextColor: '#f4f4f4',
|
// // primaryTextColor: '#f4f4f4',
|
||||||
|
|
||||||
// // // nodeBkg: '#ff0000',
|
// // // nodeBkg: '#ff0000',
|
||||||
// // // mainBkg: '#0000ff',
|
// // // mainBkg: '#0000ff',
|
||||||
// // // tertiaryColor: '#ffffcc',
|
// // // tertiaryColor: '#ffffcc',
|
||||||
},
|
},
|
||||||
// theme: 'forest',
|
// theme: 'forest',
|
||||||
// theme: 'neutral',
|
// theme: 'neutral',
|
||||||
// theme: 'dark',
|
// theme: 'dark',
|
||||||
// arrowMarkerAbsolute: true,
|
// arrowMarkerAbsolute: true,
|
||||||
// themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}',
|
// themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}',
|
||||||
logLevel: 1,
|
logLevel: 1,
|
||||||
|
gitGraph: { rotateCommitLabel: false },
|
||||||
flowchart: { curve: 'linear', htmlLabels: true },
|
flowchart: { curve: 'linear', htmlLabels: true },
|
||||||
// gantt: { axisFormat: '%m/%d/%Y' },
|
// gantt: { axisFormat: '%m/%d/%Y' },
|
||||||
sequence: { actorMargin: 50, showSequenceNumbers: true },
|
sequence: { actorMargin: 50, showSequenceNumbers: true },
|
||||||
@@ -141,8 +168,8 @@
|
|||||||
securityLevel: 'loose',
|
securityLevel: 'loose',
|
||||||
});
|
});
|
||||||
function callback() {
|
function callback() {
|
||||||
alert('It worked');
|
alert('It worked');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,32 +1,36 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
||||||
<link
|
<link
|
||||||
href="https://fonts.googleapis.com/css?family=Montserrat&display=swap"
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
||||||
rel="stylesheet"
|
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://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap" rel="stylesheet">
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
/* background: rgb(221, 208, 208); */
|
/* background: rgb(221, 208, 208); */
|
||||||
/* background:#111; */
|
/* background:#111; */
|
||||||
/* background:#333; */
|
/* background:#333; */
|
||||||
font-family: 'Arial';
|
font-family: 'Arial';
|
||||||
}
|
}
|
||||||
/* h1 { color: white;} */
|
/* h1 { color: white;} */
|
||||||
.mermaid2 {
|
.mermaid2 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.customCss > rect, .customCss{
|
.customCss > rect,
|
||||||
fill:#FF0000 !important;
|
.customCss {
|
||||||
stroke:#FFFF00 !important;
|
fill: #ff0000 !important;
|
||||||
stroke-width:4px !important;
|
stroke: #ffff00 !important;
|
||||||
}
|
stroke-width: 4px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>info below</h1>
|
<h1>info below</h1>
|
||||||
<div class="mermaid2" style="width: 100%; height: 20%;">
|
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||||
gitGraph:
|
gitGraph:
|
||||||
commit "Ashish"
|
commit "Ashish"
|
||||||
branch newbranch
|
branch newbranch
|
||||||
@@ -40,9 +44,8 @@
|
|||||||
commit
|
commit
|
||||||
branch b2
|
branch b2
|
||||||
commit
|
commit
|
||||||
|
</pre>
|
||||||
</div>
|
<pre class="mermaid" style="width: 100%; height: 20%">
|
||||||
<div class="mermaid" style="width: 100%; height: 20%;">
|
|
||||||
%%{init: { "gitGraph": { "showBranches": true, "mainBranchName": "APA" }}}%%
|
%%{init: { "gitGraph": { "showBranches": true, "mainBranchName": "APA" }}}%%
|
||||||
gitGraph
|
gitGraph
|
||||||
commit
|
commit
|
||||||
@@ -86,17 +89,16 @@
|
|||||||
merge APA
|
merge APA
|
||||||
checkout develop
|
checkout develop
|
||||||
merge release
|
merge release
|
||||||
|
</pre>
|
||||||
</div>
|
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||||
<div class="mermaid2" style="width: 100%; height: 20%;">
|
|
||||||
gitGraph:
|
gitGraph:
|
||||||
commit
|
commit
|
||||||
commit
|
commit
|
||||||
branch newbranch
|
branch newbranch
|
||||||
commit
|
commit
|
||||||
merge main
|
merge main
|
||||||
</div>
|
</pre>
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
mermaid.parseError = function (err, hash) {
|
mermaid.parseError = function (err, hash) {
|
||||||
// console.error('Mermaid error: ', err);
|
// console.error('Mermaid error: ', err);
|
||||||
@@ -132,8 +134,8 @@
|
|||||||
securityLevel: 'loose',
|
securityLevel: 'loose',
|
||||||
});
|
});
|
||||||
function callback() {
|
function callback() {
|
||||||
alert('It worked');
|
alert('It worked');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
File diff suppressed because one or more lines are too long
@@ -1,14 +1,12 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<link
|
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
||||||
href="https://fonts.googleapis.com/css?family=Montserrat&display=swap"
|
|
||||||
rel="stylesheet"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>info below</h1>
|
<h1>info below</h1>
|
||||||
<div class="mermaid">info</div>
|
<pre class="mermaid">
|
||||||
|
info
|
||||||
|
</pre>
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
@@ -21,6 +19,5 @@
|
|||||||
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,52 +1,52 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<title>Mermaid Quick Test Page</title>
|
<title>Mermaid Quick Test Page</title>
|
||||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
|
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||||
<style>
|
<style>
|
||||||
.mermaid2 {
|
.mermaid2 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
graph TB
|
graph TB
|
||||||
Function-->URL
|
Function-->URL
|
||||||
click Function clickByFlow "Add a div"
|
click Function clickByFlow "Add a div"
|
||||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid2">
|
<pre id="FirstLine" class="mermaid2">
|
||||||
graph TB
|
graph TB
|
||||||
1Function-->2URL
|
1Function-->2URL
|
||||||
click 1Function clickByFlow "Add a div"
|
click 1Function clickByFlow "Add a div"
|
||||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<div id="FirstLine" class="mermaid2">
|
<pre id="FirstLine" class="mermaid2">
|
||||||
classDiagram
|
classDiagram
|
||||||
class Test
|
class Test
|
||||||
class ShapeLink
|
class ShapeLink
|
||||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||||
class ShapeCallback
|
class ShapeCallback
|
||||||
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
classDiagram-v2
|
classDiagram-v2
|
||||||
class ShapeCallback
|
class ShapeCallback
|
||||||
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
||||||
</div>
|
</pre>
|
||||||
<div id="FirstLine" class="mermaid">
|
<pre id="FirstLine" class="mermaid">
|
||||||
classDiagram-v2
|
classDiagram-v2
|
||||||
class ShapeLink
|
class ShapeLink
|
||||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||||
</div>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mermaid2">
|
<pre class="mermaid2">
|
||||||
gantt
|
gantt
|
||||||
dateFormat YYYY-MM-DD
|
dateFormat YYYY-MM-DD
|
||||||
axisFormat %d/%m
|
axisFormat %d/%m
|
||||||
@@ -85,38 +85,38 @@
|
|||||||
Describe gantt syntax :after doc1, 3d
|
Describe gantt syntax :after doc1, 3d
|
||||||
Add gantt diagram to demo page : 20h
|
Add gantt diagram to demo page : 20h
|
||||||
Add another diagram to demo page : 48h
|
Add another diagram to demo page : 48h
|
||||||
</div>
|
</pre>
|
||||||
|
|
||||||
<script src="./mermaid.js"></script>
|
<script src="./mermaid.js"></script>
|
||||||
<script>
|
<script>
|
||||||
function clickByFlow(elemName) {
|
function clickByFlow(elemName) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-click';
|
div.className = 'created-by-click';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Flow';
|
div.innerText = 'Clicked By Flow';
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
function clickByGantt(arg1, arg2, arg3) {
|
function clickByGantt(arg1, arg2, arg3) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-gant-click';
|
div.className = 'created-by-gant-click';
|
||||||
div.style = 'padding: 20px; background: green; color: white;';
|
div.style = 'padding: 20px; background: green; color: white;';
|
||||||
div.innerText = 'Clicked By Gant';
|
div.innerText = 'Clicked By Gant';
|
||||||
if (arg1) div.innerText += ' ' + arg1;
|
if (arg1) div.innerText += ' ' + arg1;
|
||||||
if (arg2) div.innerText += ' ' + arg2;
|
if (arg2) div.innerText += ' ' + arg2;
|
||||||
if (arg3) div.innerText += ' ' + arg3;
|
if (arg3) div.innerText += ' ' + arg3;
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
function clickByClass() {
|
function clickByClass() {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'created-by-class-click';
|
div.className = 'created-by-class-click';
|
||||||
div.style = 'padding: 20px; background: purple; color: white;';
|
div.style = 'padding: 20px; background: purple; color: white;';
|
||||||
div.innerText = 'Clicked By Class';
|
div.innerText = 'Clicked By Class';
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(div);
|
document.getElementsByTagName('body')[0].appendChild(div);
|
||||||
}
|
}
|
||||||
mermaid.initialize({ startOnLoad: true, securityLevel: 'loose', logLevel: 1 });
|
mermaid.initialize({ startOnLoad: true, securityLevel: 'loose', logLevel: 1 });
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user