mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-10-24 16:34:09 +02:00
Compare commits
5282 Commits
0.2.7
...
3061_decou
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06365faef3 | ||
|
|
9ef50d7a93 | ||
|
|
ca5fbb7fa8 | ||
|
|
7a8a9ca5b0 | ||
|
|
9e5e7b31e9 | ||
|
|
213309f5e2 | ||
|
|
bfa69aa084 | ||
|
|
1527956669 | ||
|
|
fc9d22562b | ||
|
|
9d0901801b | ||
|
|
f63acea34a | ||
|
|
5a1e3ed5c6 | ||
|
|
d78adc6fb9 | ||
|
|
2611a430b9 | ||
|
|
6e81ee9d97 | ||
|
|
3986f48199 | ||
|
|
e310af7673 | ||
|
|
bb2002fce2 | ||
|
|
24bd55c360 | ||
|
|
04a25092f4 | ||
|
|
b7cf7beb22 | ||
|
|
c50a7533f6 | ||
|
|
c0dd6f9e35 | ||
|
|
97ed63de5a | ||
|
|
22d20cc76e | ||
|
|
91363f7aed | ||
|
|
aa42aabb30 | ||
|
|
0780668239 | ||
|
|
7e68e06a3a | ||
|
|
030cbb1acb | ||
|
|
1ccd3183c4 | ||
|
|
5a44b7341c | ||
|
|
bd5933a65b | ||
|
|
7b60ac1735 | ||
|
|
0aacc67b7a | ||
|
|
4d523112d4 | ||
|
|
818195f2e4 | ||
|
|
8020ab9f78 | ||
|
|
3e2ca5fe54 | ||
|
|
d898b8a7e7 | ||
|
|
579dbc8f63 | ||
|
|
5ae1bd92cd | ||
|
|
41e1001050 | ||
|
|
560bd83fb1 | ||
|
|
0b4987431e | ||
|
|
5e9db250bc | ||
|
|
47490e9820 | ||
|
|
df7b5965c2 | ||
|
|
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 | ||
|
|
ccb16e5f5a | ||
|
|
d73cafa7c8 | ||
|
|
f28c86326d | ||
|
|
269722fb65 | ||
|
|
b3c0c57c6d | ||
|
|
0dca4d3393 | ||
|
|
5597cf45bf | ||
|
|
1ced01c7f6 | ||
|
|
e46d9c1173 | ||
|
|
2272eb6644 | ||
|
|
ac76fb73a8 | ||
|
|
694692fb5d | ||
|
|
f4a99fc612 | ||
|
|
b00d569215 | ||
|
|
1921623bdf | ||
|
|
3502fb46f8 | ||
|
|
bacdd49176 | ||
|
|
065a3176b8 | ||
|
|
4fa0d366db | ||
|
|
36be8114d0 | ||
|
|
4619ff2ad0 | ||
|
|
8c85c10212 | ||
|
|
2fbdfdbf6a | ||
|
|
558ef8a2db | ||
|
|
68f8010ab9 | ||
|
|
654dfa6b3d | ||
|
|
0092ca1da0 | ||
|
|
fa85e2a650 | ||
|
|
3dc7e0e694 | ||
|
|
98b2febe30 | ||
|
|
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 | ||
|
|
3b8d74f1f9 | ||
|
|
3fd9cabd43 | ||
|
|
113efd1150 | ||
|
|
2d5e49fa15 | ||
|
|
f159808df6 | ||
|
|
e9148b4caf | ||
|
|
611880414b | ||
|
|
36321c7cb8 | ||
|
|
8f8c685a39 | ||
|
|
6c0f8e2800 | ||
|
|
71e75c0900 | ||
|
|
0400a597ef | ||
|
|
0e923ec771 | ||
|
|
79ce18c9bc | ||
|
|
91f863ad9f | ||
|
|
1415c8eda0 | ||
|
|
9eae97ddab | ||
|
|
df28de62c1 | ||
|
|
72ada38417 | ||
|
|
5d30d46535 | ||
|
|
4dd3d3bc76 | ||
|
|
348fa3318b | ||
|
|
84ae430806 | ||
|
|
61c1b0aebb | ||
|
|
e3df38e078 | ||
|
|
44b2fae0db | ||
|
|
c147404d1c | ||
|
|
7a4acb5c36 | ||
|
|
90d187c48a | ||
|
|
1851e81794 | ||
|
|
aeb6e860bb | ||
|
|
3300ad09f3 | ||
|
|
c6e689255e | ||
|
|
8aff0d6321 | ||
|
|
a4ead2f259 | ||
|
|
a569d5cbf6 | ||
|
|
fb50a3a249 | ||
|
|
c8cd61f0f8 | ||
|
|
d1e51abe2d | ||
|
|
b8c0cd9564 | ||
|
|
56f2073ad5 | ||
|
|
794d46beec | ||
|
|
8e157423e0 | ||
|
|
ef9740bb38 | ||
|
|
bd459fadd3 | ||
|
|
bb5baa65cb | ||
|
|
ee61a26faf | ||
|
|
ef943d4b0b | ||
|
|
4c25b95124 | ||
|
|
3451a87d64 | ||
|
|
560b44daef | ||
|
|
c7c211e031 | ||
|
|
de3cbeeff3 | ||
|
|
689b204327 | ||
|
|
ea265bc28e | ||
|
|
63f145f5c0 | ||
|
|
66f2f42294 | ||
|
|
1148039c6b | ||
|
|
b82b2d2b78 | ||
|
|
6eef26f107 | ||
|
|
2ab1e162ea | ||
|
|
56f79692a3 | ||
|
|
ef66cf77e1 | ||
|
|
4b72539e33 | ||
|
|
da31880319 | ||
|
|
96dfa1dbed | ||
|
|
dcedfdb674 | ||
|
|
bcb0cdfb3f | ||
|
|
6beab4f286 | ||
|
|
2f150b0c82 | ||
|
|
8c29007c69 | ||
|
|
02aafcabba | ||
|
|
81a7e6bc05 | ||
|
|
bf977311e1 | ||
|
|
79636af9f9 | ||
|
|
c956fb6570 | ||
|
|
48b2a15fd0 | ||
|
|
ce5bb4fef7 | ||
|
|
06081c73e9 | ||
|
|
6c3c6a1e65 | ||
|
|
e8f551964b | ||
|
|
95407eea80 | ||
|
|
61e35edf27 | ||
|
|
fe32845197 | ||
|
|
077e6621b9 | ||
|
|
7372ca5e8e | ||
|
|
949f6dd4f9 | ||
|
|
938b47bead | ||
|
|
ef2fea157b | ||
|
|
eb20782aa4 | ||
|
|
ce3ba4f772 | ||
|
|
5b26934802 | ||
|
|
0fd11562bc | ||
|
|
08eba8ccc1 | ||
|
|
a3878528c6 | ||
|
|
3cb37ab802 | ||
|
|
7d52e99aba | ||
|
|
91d5c7ed71 | ||
|
|
85062ac570 | ||
|
|
6f6755ec02 | ||
|
|
6d2c6c13a7 | ||
|
|
bda13c41fd | ||
|
|
ea58bb3359 | ||
|
|
390ec89045 | ||
|
|
4906460bf4 | ||
|
|
28ca1420f9 | ||
|
|
9ba8e6e491 | ||
|
|
24eb2123e4 | ||
|
|
a67b86b73b | ||
|
|
95a2ce244c | ||
|
|
35e2dd4047 | ||
|
|
6ee632f245 | ||
|
|
f9eb552382 | ||
|
|
deff411f85 | ||
|
|
e531997868 | ||
|
|
7d658403c2 | ||
|
|
015c112103 | ||
|
|
a1ef3f0f4a | ||
|
|
0c65ea25cb | ||
|
|
53c63b31c8 | ||
|
|
5a9ec30803 | ||
|
|
ee0b31b3d5 | ||
|
|
18114ab9ce | ||
|
|
32a2e5fc47 | ||
|
|
af4c0591f9 | ||
|
|
d7b1cd912c | ||
|
|
3a56bbed2e | ||
|
|
b7b02fcc2c | ||
|
|
9365138206 | ||
|
|
61771b97ad | ||
|
|
bc4ecdc791 | ||
|
|
bc58c8e03c | ||
|
|
8394bcd4a9 | ||
|
|
c6cde959b3 | ||
|
|
e74e51fb25 | ||
|
|
4a0321fe3e | ||
|
|
48eb871ab5 | ||
|
|
e306fcc795 | ||
|
|
3a2650dc6d | ||
|
|
eadbf595ba | ||
|
|
20c4a68aa8 | ||
|
|
8889b05d29 | ||
|
|
5ec5ebf94b | ||
|
|
6cea0fd835 | ||
|
|
4fabf91e16 | ||
|
|
8ed7ea6b36 | ||
|
|
99f0eecb86 | ||
|
|
996e8ef9b8 | ||
|
|
734cef9017 | ||
|
|
0856d2e82c | ||
|
|
a8000bf51b | ||
|
|
24f181afc8 | ||
|
|
97cc8a4afe | ||
|
|
4c1cf345fc | ||
|
|
01cdd28938 | ||
|
|
7198b6884c | ||
|
|
3cb926727c | ||
|
|
6528a0cfb6 | ||
|
|
65143a0182 | ||
|
|
3ef7d6fbc6 | ||
|
|
da548f1970 | ||
|
|
c8e5525899 | ||
|
|
3b94850084 | ||
|
|
d8682cfb5f | ||
|
|
1602755330 | ||
|
|
572b29b35f | ||
|
|
c883631e50 | ||
|
|
4269125838 | ||
|
|
0a0c5cae94 | ||
|
|
f7c28ff31e | ||
|
|
ca8080a371 | ||
|
|
0df80d2b52 | ||
|
|
67b6414693 | ||
|
|
8210e3c80a | ||
|
|
52fbc604b8 | ||
|
|
8060fd8890 | ||
|
|
d740fa5acf | ||
|
|
ae0570e4cd | ||
|
|
f0563c861a | ||
|
|
d75455aca3 | ||
|
|
721e737918 | ||
|
|
97e64f0125 | ||
|
|
40992e857e | ||
|
|
97cf52976f | ||
|
|
a2ffad8f97 | ||
|
|
52a8a56448 | ||
|
|
21beeb11e4 | ||
|
|
2794553335 | ||
|
|
12b33a138d | ||
|
|
16c818bb42 | ||
|
|
aee66041e2 | ||
|
|
0eebfdc178 | ||
|
|
74a574f7e8 | ||
|
|
cfc41fb5b9 | ||
|
|
f299966a0a | ||
|
|
be36e83b5a | ||
|
|
8583c7b9a5 | ||
|
|
bae5b9ddea | ||
|
|
86bf447782 | ||
|
|
1128f53fdc | ||
|
|
2b6646e38c | ||
|
|
ed56e4858a | ||
|
|
fdd7af9089 | ||
|
|
e917347b81 | ||
|
|
3baf31695e | ||
|
|
ae91f794d6 | ||
|
|
34ffe2790b | ||
|
|
a642ae356c | ||
|
|
a401e44180 | ||
|
|
8372d4952e | ||
|
|
5f4b7ae369 | ||
|
|
5e6b4d73e1 | ||
|
|
85e157f0d3 | ||
|
|
4a87fa15c6 | ||
|
|
0127238645 | ||
|
|
1450b8676c | ||
|
|
7cba061d18 | ||
|
|
dc53699a96 | ||
|
|
a62d53e9a7 | ||
|
|
f3f06aaefb | ||
|
|
e2c78f1ebc | ||
|
|
b30790cac4 | ||
|
|
bada661bd0 | ||
|
|
d914e23626 | ||
|
|
c58a04bc94 | ||
|
|
5aac0734d5 | ||
|
|
90a631cdad | ||
|
|
386f3c7ce9 | ||
|
|
7c25fb572e | ||
|
|
fa514bc7bc | ||
|
|
a251b79b3f | ||
|
|
bcf05aecd6 | ||
|
|
78798d8fd7 | ||
|
|
fbc694ccf5 | ||
|
|
72087feaca | ||
|
|
bfee7120f4 | ||
|
|
66adb691fb | ||
|
|
1b8c48e315 | ||
|
|
3fcc43efdd | ||
|
|
a3f07b6390 | ||
|
|
873003c607 | ||
|
|
449ba284ce | ||
|
|
684ec81fda | ||
|
|
123e35394a | ||
|
|
3e43a981e4 | ||
|
|
e247c37275 | ||
|
|
1a43be752b | ||
|
|
f4f7e11c07 | ||
|
|
170ed89e9e | ||
|
|
611370c644 | ||
|
|
179584b4bb | ||
|
|
b472fb4f73 | ||
|
|
a6299d8334 | ||
|
|
c0bdf9d99b | ||
|
|
df87ab8818 | ||
|
|
a3e6d3cd76 | ||
|
|
1947af0693 | ||
|
|
8966639e65 | ||
|
|
473aced449 | ||
|
|
3f812326a6 | ||
|
|
99a8c0d152 | ||
|
|
fb82a5be46 | ||
|
|
3d6aab98f7 | ||
|
|
619258164a | ||
|
|
5ad858d1fb | ||
|
|
7e7b707125 | ||
|
|
4757bebebf | ||
|
|
2698bcdb28 | ||
|
|
a3b68ba294 | ||
|
|
e7b84d008e | ||
|
|
4c93870580 | ||
|
|
88cf2023c9 | ||
|
|
0ee72cd2fb | ||
|
|
2fd0b7f83b | ||
|
|
85485d850c | ||
|
|
1014127246 | ||
|
|
37f6a42de8 | ||
|
|
0935fb0790 | ||
|
|
3c725b97b1 | ||
|
|
cda21c50ac | ||
|
|
7aa037ee60 | ||
|
|
491933f114 | ||
|
|
c13f6f789f | ||
|
|
6052636a62 | ||
|
|
7d2e77a1b3 | ||
|
|
e48d60f4cf | ||
|
|
4f833db2d0 | ||
|
|
266bce45f2 | ||
|
|
ab81f22b84 | ||
|
|
698cc5f914 | ||
|
|
6aa3e38edb | ||
|
|
787d499b9b | ||
|
|
2210af4e0f | ||
|
|
e8987177a1 | ||
|
|
c12dbce516 | ||
|
|
a7231a5c25 | ||
|
|
a7527e6f88 | ||
|
|
6a57c99335 | ||
|
|
6b4eaa185e | ||
|
|
81b982ac20 | ||
|
|
897c4259ed | ||
|
|
9eb18e78c3 | ||
|
|
adc0bd7f36 | ||
|
|
c1a17d9fce | ||
|
|
081bdda55d | ||
|
|
df993f977c | ||
|
|
5452cedc51 | ||
|
|
49409241bc | ||
|
|
e5345f209c | ||
|
|
0c5252594e | ||
|
|
e2ec7fd653 | ||
|
|
ca256308f2 | ||
|
|
f72d3c4372 | ||
|
|
7a5149e39e | ||
|
|
d36f45ec58 | ||
|
|
380688c16a | ||
|
|
1d269f07e3 | ||
|
|
7761561ac2 | ||
|
|
8b29fbe98e | ||
|
|
3d7cb212c0 | ||
|
|
f2e77917d7 | ||
|
|
0f8df335a7 | ||
|
|
f1a0eb1e2a | ||
|
|
938295cdcc | ||
|
|
6562df4dd9 | ||
|
|
f15b318a77 | ||
|
|
53cc650aa8 | ||
|
|
c540bf6a8b | ||
|
|
dffedb7428 | ||
|
|
8325be8d00 | ||
|
|
81e8aec1ca | ||
|
|
1ad2fad542 | ||
|
|
529384c4ba | ||
|
|
ada3f8e5e6 | ||
|
|
bed475b229 | ||
|
|
87b56bdd9a | ||
|
|
65b0b83625 | ||
|
|
bfca242958 | ||
|
|
861b866a4c | ||
|
|
d498106e90 | ||
|
|
d3ba48a1b7 | ||
|
|
904826b3e1 | ||
|
|
4855d0382e | ||
|
|
564d951d4f | ||
|
|
2bfc09b84c | ||
|
|
cdb814bba5 | ||
|
|
a2c00f1efc | ||
|
|
701e313b82 | ||
|
|
e4b9360512 | ||
|
|
328909f34d | ||
|
|
44877545e5 | ||
|
|
9123757549 | ||
|
|
1d2f92454a | ||
|
|
57ac111d05 | ||
|
|
51e9a6b3aa | ||
|
|
3ccf027f42 | ||
|
|
bbac11a4b8 | ||
|
|
12c63ff007 | ||
|
|
f6421734a2 | ||
|
|
754a776fe3 | ||
|
|
be92c70b1b | ||
|
|
fca58aafb1 | ||
|
|
bbabf25a9e | ||
|
|
3c0a2f0fd0 | ||
|
|
b380d46c66 | ||
|
|
f24e66ecd9 | ||
|
|
50f522ae5c | ||
|
|
76a6f622f7 | ||
|
|
6bf60ef097 | ||
|
|
62fe24b477 | ||
|
|
b3fb86e374 | ||
|
|
733a2f9b3f | ||
|
|
13b388b7be | ||
|
|
ac57eb09f3 | ||
|
|
cf4cae315a | ||
|
|
b0310d1f7a | ||
|
|
db117cc738 | ||
|
|
4bd45b7432 | ||
|
|
22aca7b3ee | ||
|
|
3ee141ff9b | ||
|
|
c0335cf5fb | ||
|
|
2ab275b5b5 | ||
|
|
b9bde5e64c | ||
|
|
c3e9382053 | ||
|
|
32de3684a3 | ||
|
|
4eb7d0d299 | ||
|
|
a29e2e6baa | ||
|
|
2f9a7e8590 | ||
|
|
512e157c8a | ||
|
|
594df753b8 | ||
|
|
17857d3ea9 | ||
|
|
f9b1e05c08 | ||
|
|
8949b77a4a | ||
|
|
e54fcae363 | ||
|
|
fa2148f4bf | ||
|
|
b03f017372 | ||
|
|
36677152e9 | ||
|
|
84bf1cb5d5 | ||
|
|
65052854c2 | ||
|
|
bdcd0d7dab | ||
|
|
30a10bfa99 | ||
|
|
cc6050332e | ||
|
|
2038562f79 | ||
|
|
f5cc145e35 | ||
|
|
695218c2f0 | ||
|
|
a9194d4eaa | ||
|
|
4023be1e84 | ||
|
|
b78b371025 | ||
|
|
a7c33b7d5a | ||
|
|
501e62894b | ||
|
|
1ef58e286c | ||
|
|
c1dead1187 | ||
|
|
01970d2bbd | ||
|
|
243f2b28cd | ||
|
|
9f7130a3e6 | ||
|
|
b84cd155dd | ||
|
|
423ebfd5d5 | ||
|
|
bfc431f0f8 | ||
|
|
1f3293bb43 | ||
|
|
2a449ab773 | ||
|
|
01f571e053 | ||
|
|
c4c219b7c2 | ||
|
|
1e1c3ef1a6 | ||
|
|
0a8a0790cf | ||
|
|
0181cbf743 | ||
|
|
c6c9b88292 | ||
|
|
2753b88cac | ||
|
|
c72384f5d2 | ||
|
|
fe6a042060 | ||
|
|
1e19e39cc5 | ||
|
|
4d9821fb46 | ||
|
|
50f60da076 | ||
|
|
4f5cab7f4c | ||
|
|
3342f884ce | ||
|
|
21c97f9521 | ||
|
|
7bd9286a9b | ||
|
|
781b239d0d | ||
|
|
2b3f99d0e9 | ||
|
|
4ff3b23da5 | ||
|
|
9ddf138683 | ||
|
|
4620a88164 | ||
|
|
3f61993e2e | ||
|
|
548c18a0c0 | ||
|
|
213920a7c3 | ||
|
|
5f3bb4aeeb | ||
|
|
efbc369b86 | ||
|
|
17bededad8 | ||
|
|
1de7f3e14c | ||
|
|
2822fd033a | ||
|
|
ee63856483 | ||
|
|
d886c2b6b7 | ||
|
|
12d9e81bee | ||
|
|
dd51acb6c0 | ||
|
|
8cb548d30d | ||
|
|
b1fab6ffcd | ||
|
|
5a8c372666 | ||
|
|
56a1c27907 | ||
|
|
7e041dd921 | ||
|
|
1f175d2d84 | ||
|
|
b110567517 | ||
|
|
f8401511e2 | ||
|
|
3b282e26c2 | ||
|
|
8cc2ef8e36 | ||
|
|
7b0c3c3cd5 | ||
|
|
6223d3c470 | ||
|
|
005fc7a765 | ||
|
|
b50052c073 | ||
|
|
0c6f8b58a3 | ||
|
|
4593d8742d | ||
|
|
fd1cd908fe | ||
|
|
d302380b08 | ||
|
|
bc2c3cba08 | ||
|
|
695ca5d3f3 | ||
|
|
bc9ff496f2 | ||
|
|
c0cb05b406 | ||
|
|
2524dfdf39 | ||
|
|
4ec1c608a3 | ||
|
|
14464f9fba | ||
|
|
b3573e27be | ||
|
|
286f6e52f0 | ||
|
|
26f9924839 | ||
|
|
908b704a42 | ||
|
|
f95de5c6d9 | ||
|
|
933efd0dda | ||
|
|
4753ae8ac0 | ||
|
|
0b815c7782 | ||
|
|
321c2a73dd | ||
|
|
050a4df149 | ||
|
|
0ed20278f8 | ||
|
|
97acbfee0b | ||
|
|
25b5f544e8 | ||
|
|
4a1d7c42f4 | ||
|
|
05b1451050 | ||
|
|
c58340916c | ||
|
|
99e10766b3 | ||
|
|
ad08016509 | ||
|
|
cc826289c6 | ||
|
|
7098bf9185 | ||
|
|
43854a2921 | ||
|
|
ed39de8426 | ||
|
|
ffc6cae7f5 | ||
|
|
40f95a5dc1 | ||
|
|
f5ba67ab78 | ||
|
|
04454cece0 | ||
|
|
3b9900c1e0 | ||
|
|
f8f59fc00f | ||
|
|
d8c7a2894e | ||
|
|
f71ab2f879 | ||
|
|
1e4be4eb6a | ||
|
|
1fc10a7857 | ||
|
|
e1f0e69263 | ||
|
|
8d77721dee | ||
|
|
9110bdfb5d | ||
|
|
74b1219d62 | ||
|
|
d818551f50 | ||
|
|
2d8a6b7d7f | ||
|
|
606f0e50b2 | ||
|
|
8b111bb4f0 | ||
|
|
869bb0f37f | ||
|
|
03ae4d03cf | ||
|
|
07add1fe01 | ||
|
|
7c950619cf | ||
|
|
cdeca2d507 | ||
|
|
f145f44d5b | ||
|
|
3e43bc0299 | ||
|
|
f36e29ea90 | ||
|
|
7fb70fdd20 | ||
|
|
73d3049255 | ||
|
|
8be1e4756d | ||
|
|
bb2dd2f5f3 | ||
|
|
cbe3a9159d | ||
|
|
b141f24068 | ||
|
|
e13f97c8ee | ||
|
|
3877b88e6e | ||
|
|
bb6c36c6af | ||
|
|
a4892069d2 | ||
|
|
5d71afc56a | ||
|
|
6413cc5ad3 | ||
|
|
69cc6ddaeb | ||
|
|
4465a661d0 | ||
|
|
246e5f5b8b | ||
|
|
4c11e8ec68 | ||
|
|
df7ba0a897 | ||
|
|
b7dd2bb2ce | ||
|
|
dfca6ae893 | ||
|
|
09fdd2cd0c | ||
|
|
15ed52f64a | ||
|
|
ac6759078b | ||
|
|
6a9a09c08f | ||
|
|
882ba03fcb | ||
|
|
77908e8059 | ||
|
|
2ea68c607c | ||
|
|
41a6697dc3 | ||
|
|
953c31cd11 | ||
|
|
a483a53e26 | ||
|
|
a3745ca492 | ||
|
|
571423e909 | ||
|
|
3873ec941b | ||
|
|
46cdacfdc7 | ||
|
|
384afc1a6d | ||
|
|
fa55b7c824 | ||
|
|
8188bf1d57 | ||
|
|
c19319f115 | ||
|
|
ff3bdfd282 | ||
|
|
4130386447 | ||
|
|
9c04595ae8 | ||
|
|
d1c7f1c2e3 | ||
|
|
f67b972fdf | ||
|
|
0185a74e95 | ||
|
|
222fafe686 | ||
|
|
45c461cd8a | ||
|
|
afcf1d5f53 | ||
|
|
4a7a672d96 | ||
|
|
9cbbfe3a06 | ||
|
|
c2db4640aa | ||
|
|
bec7f2eaf0 | ||
|
|
556f37284c | ||
|
|
929b421c71 | ||
|
|
cd67f7a63a | ||
|
|
59810783d6 | ||
|
|
0eae5120eb | ||
|
|
eeccf1c56b | ||
|
|
e3e9c67f5b | ||
|
|
a73b291c4f | ||
|
|
1b5056ca38 | ||
|
|
2de2cb64f8 | ||
|
|
f458e9c003 | ||
|
|
aa36aee4ee | ||
|
|
e10bb774e6 | ||
|
|
cbe2ce41c1 | ||
|
|
06834eb383 | ||
|
|
413816783d | ||
|
|
4081d7f5f6 | ||
|
|
3a2f6659a6 | ||
|
|
2210c73ae8 | ||
|
|
44d7dfe993 | ||
|
|
87dc13365f | ||
|
|
adc15c2989 | ||
|
|
c69ef282b5 | ||
|
|
8938d3656e | ||
|
|
6b7699444a | ||
|
|
926783fe4c | ||
|
|
8c293df7af | ||
|
|
8ce9d2f02f | ||
|
|
09687e407e | ||
|
|
ad7630f091 | ||
|
|
a14b384f65 | ||
|
|
0e8952984b | ||
|
|
3d4cfe60af | ||
|
|
b3235c762e | ||
|
|
30d8eee631 | ||
|
|
5c77aa6e8e | ||
|
|
77f2a57155 | ||
|
|
91ec41762a | ||
|
|
7abe279b4a | ||
|
|
ce04c82356 | ||
|
|
7746091c98 | ||
|
|
748ee19b4a | ||
|
|
7a6d73762e | ||
|
|
20bbe6cfb0 | ||
|
|
583d905b88 | ||
|
|
40479aef77 | ||
|
|
ab276ccdfe | ||
|
|
5178de7fef | ||
|
|
d3d5f12d3c | ||
|
|
db51adcc26 | ||
|
|
f38c6a661a | ||
|
|
3d016ba800 | ||
|
|
bfeb3a8b3c | ||
|
|
e73894bfbd | ||
|
|
c2c753ce7d | ||
|
|
a352cf3ae5 | ||
|
|
35f3d57cf3 | ||
|
|
9bd5652b88 | ||
|
|
0924a1cef0 | ||
|
|
0b56686f4d | ||
|
|
9a398c0a76 | ||
|
|
db3edb61b4 | ||
|
|
f4a3f33f36 | ||
|
|
2305bbed93 | ||
|
|
a900a8cc17 | ||
|
|
d48a4bd13d | ||
|
|
d5c4ea30db | ||
|
|
979960e8e4 | ||
|
|
24ee6746f4 | ||
|
|
4c76b4189c | ||
|
|
c6dfc9306f | ||
|
|
d3577eb59b | ||
|
|
066b7a0d0b | ||
|
|
be46ace02e | ||
|
|
65592e0541 | ||
|
|
f4c335ad2f | ||
|
|
e6fc278861 | ||
|
|
73045b5c6d | ||
|
|
f6d1f6c825 | ||
|
|
eae664937d | ||
|
|
fabaddb10e | ||
|
|
b18cb6933a | ||
|
|
6d3ebab529 | ||
|
|
4369b6cda2 | ||
|
|
952d360010 | ||
|
|
f84b6237cf | ||
|
|
6f800be33b | ||
|
|
52af0476c1 | ||
|
|
b4fbe1b0f0 | ||
|
|
835ae1734c | ||
|
|
1127ce7b50 | ||
|
|
9d8273771a | ||
|
|
0f9722393e | ||
|
|
e2bb8478d0 | ||
|
|
a353300707 | ||
|
|
77b2e4211d | ||
|
|
868c2ece91 | ||
|
|
354daee3a1 | ||
|
|
fcc51f4d94 | ||
|
|
94f7af1190 | ||
|
|
1059873b10 | ||
|
|
4cf2d71eb4 | ||
|
|
f7b73be561 | ||
|
|
a349fd3aba | ||
|
|
295b428d62 | ||
|
|
a44714c715 | ||
|
|
53ea005ebc | ||
|
|
1baca16a51 | ||
|
|
036f9dc359 | ||
|
|
8f22daf9a3 | ||
|
|
9c12502a36 | ||
|
|
38496c004b | ||
|
|
966139eae3 | ||
|
|
c1326f1e14 | ||
|
|
42d107f434 | ||
|
|
92a275eb9b | ||
|
|
6329e90f62 | ||
|
|
4cd2621eeb | ||
|
|
67143b7bfd | ||
|
|
b7eb71e7d3 | ||
|
|
c75827c71c | ||
|
|
0c472d97bd | ||
|
|
4459eb5c87 | ||
|
|
1e7a56b6fa | ||
|
|
800f1e8305 | ||
|
|
bf716de886 | ||
|
|
db537f2cb4 | ||
|
|
bad0584317 | ||
|
|
36b4860ab5 | ||
|
|
6a45701042 | ||
|
|
a8325c6a5c | ||
|
|
7a42c3123e | ||
|
|
305b78dbba | ||
|
|
411ff4f302 | ||
|
|
be32447773 | ||
|
|
4c105e36a5 | ||
|
|
48d7082fe4 | ||
|
|
44ba9c8953 | ||
|
|
f01bf59114 | ||
|
|
d0cf3fc96a | ||
|
|
7479fd3dd2 | ||
|
|
e0a05f83d1 | ||
|
|
0b35f9c24a | ||
|
|
308ab0e465 | ||
|
|
be0dd22fa5 | ||
|
|
1385acc3f6 | ||
|
|
7da80812e0 | ||
|
|
2ce18ec2a8 | ||
|
|
831110029c | ||
|
|
89ce930de2 | ||
|
|
f69f770043 | ||
|
|
a97b2cc4da | ||
|
|
25b70d8058 | ||
|
|
bd106e4aec | ||
|
|
b7abaf1e47 | ||
|
|
4fea702347 | ||
|
|
3ea974709f | ||
|
|
6681216889 | ||
|
|
189d3434b2 | ||
|
|
c11f9b7e5f | ||
|
|
80b14d1d7f | ||
|
|
ae5e15c046 | ||
|
|
8574dadc34 | ||
|
|
e6cf1f2602 | ||
|
|
9a729257f2 | ||
|
|
492ecb1099 | ||
|
|
ab17af274d | ||
|
|
59e0a8e1b5 | ||
|
|
c232bee95f | ||
|
|
837eeb6d01 | ||
|
|
3426aa8b2a | ||
|
|
3526e35012 | ||
|
|
a018789026 | ||
|
|
d9e598aa7f | ||
|
|
27027d003b | ||
|
|
89eea0536d | ||
|
|
4679daafcf | ||
|
|
a0c6160e55 | ||
|
|
f887420818 | ||
|
|
31851b2e30 | ||
|
|
08702565f7 | ||
|
|
5d99ac7d8d | ||
|
|
d19be0b940 | ||
|
|
b7115b804c | ||
|
|
28bb07d415 | ||
|
|
c2db1d4d44 | ||
|
|
b6d3ac8e32 | ||
|
|
9e8c03cb49 | ||
|
|
5fff8403a8 | ||
|
|
86810e04bd | ||
|
|
ee3680eb6d | ||
|
|
984a5084b0 | ||
|
|
853d62c8d1 | ||
|
|
0550e4a899 | ||
|
|
dec6b6d8b5 | ||
|
|
0b1b3538bc | ||
|
|
31c29b4c02 | ||
|
|
a3b2ba736d | ||
|
|
17a23a1103 | ||
|
|
6b4107b231 | ||
|
|
0a50b835b1 | ||
|
|
89ed7d9b72 | ||
|
|
6e5180bd1c | ||
|
|
efcc3b7d37 | ||
|
|
8a08efdfbb | ||
|
|
a4f26f27bc | ||
|
|
226f90dbcb | ||
|
|
7ce383078d | ||
|
|
d84be0d792 | ||
|
|
4089ee8786 | ||
|
|
5487ac9542 | ||
|
|
f303909ad6 | ||
|
|
be412ba78c | ||
|
|
a1ae00070c | ||
|
|
bb299685cd | ||
|
|
9d1f32cc0a | ||
|
|
6318eee07e | ||
|
|
bc64fc7efb | ||
|
|
650bcef3d1 | ||
|
|
95df8fa128 | ||
|
|
bb62704433 | ||
|
|
09cc0d02f4 | ||
|
|
98f575e098 | ||
|
|
72d2045104 | ||
|
|
3feff08d42 | ||
|
|
fcbd8a5081 | ||
|
|
5b8a4a0b7a | ||
|
|
00f228b959 | ||
|
|
e68ec31a8f | ||
|
|
d6782bced8 | ||
|
|
2368ba4914 | ||
|
|
857f6c892c | ||
|
|
0db5f9fea7 | ||
|
|
1fe31dac7d | ||
|
|
ce675b011d | ||
|
|
775461407e | ||
|
|
6305455554 | ||
|
|
c964461cb5 | ||
|
|
42b2e582c5 | ||
|
|
12f58c967e | ||
|
|
d140a9df8f | ||
|
|
53a539e84b | ||
|
|
57671b2b78 | ||
|
|
4d103c14f7 | ||
|
|
6f4fb48fad | ||
|
|
92f036222e | ||
|
|
c29c8bd33c | ||
|
|
ec834363b4 | ||
|
|
d69c3b8856 | ||
|
|
0fb25ee749 | ||
|
|
d2d8c9bc8e | ||
|
|
829642a2cb | ||
|
|
a2e6180143 | ||
|
|
69ecb02375 | ||
|
|
2ae442accc | ||
|
|
caeeca7722 | ||
|
|
dac542682d | ||
|
|
ab3e076c91 | ||
|
|
d2b7a3ec28 | ||
|
|
c015d97957 | ||
|
|
4ec12ba9d5 | ||
|
|
2d4f31dff5 | ||
|
|
95a4f96da7 | ||
|
|
4f3130908f | ||
|
|
b874322f2f | ||
|
|
fdfb5d8270 | ||
|
|
1b7e690ec1 | ||
|
|
5cc7ba52bb | ||
|
|
66d4d9d5b8 | ||
|
|
8579442d77 | ||
|
|
d23ff27e1a | ||
|
|
932fabbd42 | ||
|
|
4d6792141d | ||
|
|
8930a80fdd | ||
|
|
b46db461a2 | ||
|
|
0be2084b18 | ||
|
|
5f43f44db0 | ||
|
|
3c996ee4a0 | ||
|
|
fa184320e9 | ||
|
|
780b3eb95a | ||
|
|
8b35745928 | ||
|
|
f8c01acd18 | ||
|
|
250c9beff9 | ||
|
|
24d18eb42a | ||
|
|
d144128bf0 | ||
|
|
2a87ec2dc2 | ||
|
|
d6a4047a52 | ||
|
|
d63b26efc2 | ||
|
|
1ba990be6e | ||
|
|
7b5e6e95c8 | ||
|
|
3a77f91ba4 | ||
|
|
84338524c5 | ||
|
|
e5966f97b3 | ||
|
|
4a0b074967 | ||
|
|
4d2d99f227 | ||
|
|
23d23251c7 | ||
|
|
4d477d7e96 | ||
|
|
bf378b76f4 | ||
|
|
0d7d5ddc5f | ||
|
|
ebe8b8d89f | ||
|
|
4a50995906 | ||
|
|
bb3597614a | ||
|
|
4620a7eeba | ||
|
|
96236187b5 | ||
|
|
d325f4b496 | ||
|
|
236fd6b231 | ||
|
|
9b32e0b222 | ||
|
|
2c1e8a2a73 | ||
|
|
aa0e84c3c3 | ||
|
|
7d876ea9f2 | ||
|
|
ea4a49d50e | ||
|
|
eb5b6966e5 | ||
|
|
00e716e064 | ||
|
|
cd885e952c | ||
|
|
e2cd2a72aa | ||
|
|
cd427ab8ba | ||
|
|
cefafba062 | ||
|
|
ddcaf1850f | ||
|
|
18ecf479b1 | ||
|
|
a06f6f9604 | ||
|
|
35de6d4cbc | ||
|
|
2bcd66e714 | ||
|
|
4c7ac3fdb6 | ||
|
|
cf3ded482f | ||
|
|
dcca4896f0 | ||
|
|
d267f84030 | ||
|
|
b2f93b49ba | ||
|
|
1c00608b27 | ||
|
|
e3c1354ce0 | ||
|
|
93a1961762 | ||
|
|
c04fdd250c | ||
|
|
626fbe6de8 | ||
|
|
b22422f4b8 | ||
|
|
b0b85e12a6 | ||
|
|
b500a312b6 | ||
|
|
cac354caa9 | ||
|
|
1c8c635e48 | ||
|
|
9c48703fb1 | ||
|
|
d040883286 | ||
|
|
b2c059d56b | ||
|
|
15b9a25aa4 | ||
|
|
e01855ca9c | ||
|
|
618ee6d95f | ||
|
|
8f82d86e7c | ||
|
|
b3525deeab | ||
|
|
7d81fd3c3c | ||
|
|
d48af035d8 | ||
|
|
ebba764c85 | ||
|
|
a5c4d0783d | ||
|
|
3772afb40c | ||
|
|
19343e890e | ||
|
|
5661b43168 | ||
|
|
aa666d1829 | ||
|
|
2758d64778 | ||
|
|
5d5808880f | ||
|
|
8ee3155f2a | ||
|
|
62cc720607 | ||
|
|
900d7e0974 | ||
|
|
7102c1205e | ||
|
|
ec05e2333a | ||
|
|
8540a2757e | ||
|
|
ce1a8d8f6a | ||
|
|
637ae09192 | ||
|
|
4f59e2d28b | ||
|
|
cb2294d6f2 | ||
|
|
95e6efc218 | ||
|
|
029042393c | ||
|
|
7ad509cc7a | ||
|
|
f6cd4547ab | ||
|
|
dd088bc603 | ||
|
|
c5d091d445 | ||
|
|
38ef061175 | ||
|
|
715d0aced3 | ||
|
|
55eebd9309 | ||
|
|
cce8821a83 | ||
|
|
d45765dab5 | ||
|
|
54a4aafd06 | ||
|
|
e4e8a00acc | ||
|
|
db8517a7f9 | ||
|
|
35d8f33542 | ||
|
|
75b79e1b23 | ||
|
|
66df007ea8 | ||
|
|
9da885b2f8 | ||
|
|
efa063d8d0 | ||
|
|
fcd4cc17d3 | ||
|
|
550cf9b102 | ||
|
|
69639bb61c | ||
|
|
4839e6a8b3 | ||
|
|
477c4f1c88 | ||
|
|
b62d0d974f | ||
|
|
5a433d9bf8 | ||
|
|
f91920ab90 | ||
|
|
83d3b31a1a | ||
|
|
97268b9876 | ||
|
|
b2fb9f421a | ||
|
|
6b0105cc3b | ||
|
|
0b2d0ce34f | ||
|
|
5c4ee44787 | ||
|
|
165a10ac37 | ||
|
|
b8f68325ef | ||
|
|
2f2eb67b5f | ||
|
|
5b1f574167 | ||
|
|
a990718b71 | ||
|
|
8670fe9a4f | ||
|
|
2a22c3396a | ||
|
|
20b139bf7f | ||
|
|
a838e52fea | ||
|
|
918cea5291 | ||
|
|
b7ecf3b9dd | ||
|
|
b90a5e2b0b | ||
|
|
1deef137a9 | ||
|
|
8baf553a49 | ||
|
|
d3afc8a245 | ||
|
|
cc4476031a | ||
|
|
3a2c8456d7 | ||
|
|
9cb1a566c1 | ||
|
|
d2707bbb6a | ||
|
|
88f30a26b2 | ||
|
|
61d16b682b | ||
|
|
1c3f94c9ec | ||
|
|
004e7e376d | ||
|
|
549011edf4 | ||
|
|
432267c811 | ||
|
|
0fcabfae05 | ||
|
|
9faa5acb21 | ||
|
|
9c511559ff | ||
|
|
f9a4c8eb0e | ||
|
|
5f27987ca2 | ||
|
|
866ee997d9 | ||
|
|
c82b1cee8e | ||
|
|
6ce1c80a47 | ||
|
|
0839fadbc2 | ||
|
|
96977e70b3 | ||
|
|
a448af2897 | ||
|
|
20aaf644fa | ||
|
|
0d91eee5e0 | ||
|
|
e01ad572a5 | ||
|
|
8bd830c991 | ||
|
|
85d33ecccd | ||
|
|
b6ba4b2fd8 | ||
|
|
37c6837dc1 | ||
|
|
08f2f9aef0 | ||
|
|
09461fd3df | ||
|
|
b8996ce50b | ||
|
|
857f6ecc81 | ||
|
|
f5963b8ea5 | ||
|
|
904849e156 | ||
|
|
b9513c80eb | ||
|
|
b3210ed2ef | ||
|
|
6dbed7964b | ||
|
|
ce6d8576ae | ||
|
|
291bec7e90 | ||
|
|
5997227997 | ||
|
|
c73b04111e | ||
|
|
05637b1eff | ||
|
|
48b6a32fe1 | ||
|
|
579e79575b | ||
|
|
296a64f465 | ||
|
|
3ad190855b | ||
|
|
206a35ebd9 | ||
|
|
8acab4bba6 | ||
|
|
abd3b18727 | ||
|
|
f07a777194 | ||
|
|
cd60a30aeb | ||
|
|
2e02f843ad | ||
|
|
fddc408cd9 | ||
|
|
d4f0c0808a | ||
|
|
dbdee1f7f8 | ||
|
|
bae74bcc95 | ||
|
|
bc31125bc6 | ||
|
|
d32fb0e4c0 | ||
|
|
0658a363cb | ||
|
|
186fb03048 | ||
|
|
8db827e429 | ||
|
|
46a7039ae9 | ||
|
|
8a8f792d4b | ||
|
|
c0c978bbdf | ||
|
|
ff75349d95 | ||
|
|
e88c710fd3 | ||
|
|
0fba1c06b4 | ||
|
|
69a9829041 | ||
|
|
d68c1958b5 | ||
|
|
2434a94aae | ||
|
|
b80ebb4fcb | ||
|
|
fd6e59174e | ||
|
|
54ef5b0bee | ||
|
|
b0c09a5b0f | ||
|
|
719de71de4 | ||
|
|
571816fc28 | ||
|
|
adcc25db8e | ||
|
|
7c97f68ee2 | ||
|
|
2dfc9a7973 | ||
|
|
c04aac4ae0 | ||
|
|
798a0ad783 | ||
|
|
935cc3b098 | ||
|
|
5ef2ad5536 | ||
|
|
0276a67417 | ||
|
|
46a3d10e8a | ||
|
|
d09dea7e5e | ||
|
|
55faa3cb1a | ||
|
|
d9a9eb56a7 | ||
|
|
5237729a6d | ||
|
|
a251848ba1 | ||
|
|
3383da514a | ||
|
|
3d7091a9e2 | ||
|
|
d1759228cc | ||
|
|
768536b9e2 | ||
|
|
8f0b19f427 | ||
|
|
972f6a0ea9 | ||
|
|
9c55dec6ba | ||
|
|
06715be05f | ||
|
|
8f8169b8e4 | ||
|
|
313aa11528 | ||
|
|
2ccd9feae7 | ||
|
|
fa3735b033 | ||
|
|
adfceaf20b | ||
|
|
8af36b742e | ||
|
|
a670b67844 | ||
|
|
e8fc810b8d | ||
|
|
b6648283c2 | ||
|
|
b29979bfd9 | ||
|
|
7e346a56ff | ||
|
|
719480cf76 | ||
|
|
92f1b9c079 | ||
|
|
c0831ecef6 | ||
|
|
d3ae43c4ba | ||
|
|
a4e01dd8e9 | ||
|
|
88e195408c | ||
|
|
f77ae2b045 | ||
|
|
655ff2675e | ||
|
|
37fae09ce4 | ||
|
|
711fb7d748 | ||
|
|
f8891beb0a | ||
|
|
61a401b119 | ||
|
|
5dd78c18da | ||
|
|
eb4ac5c103 | ||
|
|
af7f5d0aaf | ||
|
|
7275b215b8 | ||
|
|
6fa6503515 | ||
|
|
73ff972789 | ||
|
|
a51bfd6a04 | ||
|
|
b8cda6616f | ||
|
|
1aa5388aaf | ||
|
|
0dd79d4f80 | ||
|
|
68cd425950 | ||
|
|
ffa83547ca | ||
|
|
d48cd57198 | ||
|
|
ab26c172d7 | ||
|
|
1d32307a71 | ||
|
|
42d8bbfce2 | ||
|
|
9245b0bb8b | ||
|
|
fa6f453e88 | ||
|
|
f7295a7a79 | ||
|
|
4c00e90436 | ||
|
|
7d802a71c1 | ||
|
|
69a1bb99ac | ||
|
|
b055015250 | ||
|
|
e325bdb16b | ||
|
|
209ac97d15 | ||
|
|
e64cea499f | ||
|
|
c621c145e9 | ||
|
|
6ea84a36dc | ||
|
|
9914e9b1ab | ||
|
|
5dfaed91f1 | ||
|
|
d523818339 | ||
|
|
33e8ee6c0e | ||
|
|
a87d557354 | ||
|
|
024f7c3275 | ||
|
|
f2910da513 | ||
|
|
b5ed5db880 | ||
|
|
fa65e73bd0 | ||
|
|
f1ff7d02d1 | ||
|
|
21afb56089 | ||
|
|
034cdc9d02 | ||
|
|
2008d497bb | ||
|
|
b71a28106c | ||
|
|
eb5147b497 | ||
|
|
341c40b610 | ||
|
|
169800b209 | ||
|
|
bdacc5e3eb | ||
|
|
afaf213f11 | ||
|
|
e4116bf5b1 | ||
|
|
58c1d7dd62 | ||
|
|
56a4ca0406 | ||
|
|
3f991a4f1f | ||
|
|
056abc314c | ||
|
|
9870121f01 | ||
|
|
525e342f9b | ||
|
|
8b267ba947 | ||
|
|
843ccbc88b | ||
|
|
78fbe18aed | ||
|
|
dd83cd9f78 | ||
|
|
0f178b9f07 | ||
|
|
381ff20820 | ||
|
|
559d5ee5e6 | ||
|
|
ec0e476521 | ||
|
|
3f8ff1a66c | ||
|
|
7229b6aaf1 | ||
|
|
3ab447a766 | ||
|
|
0ed11dc98c | ||
|
|
52b1b23d47 | ||
|
|
030d383d30 | ||
|
|
b34f7bcdd5 | ||
|
|
6a3991bbaa | ||
|
|
5d2a9fe267 | ||
|
|
cd8620cc9d | ||
|
|
5399214ad8 | ||
|
|
896c7eca57 | ||
|
|
c29486f515 | ||
|
|
3fe1f5af60 | ||
|
|
1034e1a301 | ||
|
|
6379320b83 | ||
|
|
30de90e4f0 | ||
|
|
52a40112a2 | ||
|
|
7a679dea2d | ||
|
|
0eb86cb97f | ||
|
|
7fcb1ae9b3 | ||
|
|
6715498598 | ||
|
|
eaec4c9744 | ||
|
|
fa07abd014 | ||
|
|
30a02adfe3 | ||
|
|
ea6102e123 | ||
|
|
b5aaf0f990 | ||
|
|
ed6abb6d92 | ||
|
|
862330a576 | ||
|
|
fadda49b0e | ||
|
|
db5709a033 | ||
|
|
c447262764 | ||
|
|
79e6013342 | ||
|
|
2c00d4c116 | ||
|
|
b468065c6b | ||
|
|
67050e4d6d | ||
|
|
5437ab7057 | ||
|
|
2f73fd3a9d | ||
|
|
27b6845b78 | ||
|
|
1310619848 | ||
|
|
1d78267871 | ||
|
|
ed0947d761 | ||
|
|
6564bad85e | ||
|
|
6b9462f606 | ||
|
|
eef4ef54a1 | ||
|
|
9cc4f73cab | ||
|
|
d0d87497c5 | ||
|
|
09a97d339e | ||
|
|
db049f9c8e | ||
|
|
c1335955f4 | ||
|
|
3a65551746 | ||
|
|
62c6b9d886 | ||
|
|
a78ccb460d | ||
|
|
2f5c7ea2f1 | ||
|
|
ecede3126b | ||
|
|
8b55b83256 | ||
|
|
ee57e60ca6 | ||
|
|
890512ccbb | ||
|
|
3d22fa5d24 | ||
|
|
e0652539fb | ||
|
|
26ede9b015 | ||
|
|
2d01c5489b | ||
|
|
7cdf4c7476 | ||
|
|
5251dfaa97 | ||
|
|
d6ce739b8a | ||
|
|
b2be90e1a0 | ||
|
|
e6e94ad57e | ||
|
|
fc70fb7c1a | ||
|
|
e0c3b8e269 | ||
|
|
9861c081db | ||
|
|
916df3ff4f | ||
|
|
c0b65e9304 | ||
|
|
aa2596b457 | ||
|
|
359ea05680 | ||
|
|
c77e7af126 | ||
|
|
1a444071f1 | ||
|
|
5070d992dd | ||
|
|
bf21aa8cd6 | ||
|
|
529824e2b3 | ||
|
|
6e6ced2cee | ||
|
|
4fa4849fcd | ||
|
|
affab5f6d3 | ||
|
|
5fb8d34a07 | ||
|
|
ff75122095 | ||
|
|
4c92592aa1 | ||
|
|
0bbefdc48f | ||
|
|
09569301f1 | ||
|
|
84ad8aabec | ||
|
|
98c092637e | ||
|
|
1f86ec3d19 | ||
|
|
85217fffc3 | ||
|
|
9f9fb7d043 | ||
|
|
cea1441eeb | ||
|
|
85faec73f4 | ||
|
|
d1180a5c69 | ||
|
|
84941607df | ||
|
|
3dc7b68d08 | ||
|
|
af4930e3f3 | ||
|
|
0a4f16737a | ||
|
|
a4795975a7 | ||
|
|
0e10160d85 | ||
|
|
f7944e83eb | ||
|
|
a55777c62b | ||
|
|
ebd2cb6f25 | ||
|
|
d5a349fccc | ||
|
|
417428acea | ||
|
|
ac837a77e7 | ||
|
|
d208f58084 | ||
|
|
3eb44ccb80 | ||
|
|
6dcc538777 | ||
|
|
560951d597 | ||
|
|
75769c46de | ||
|
|
d3d0df59cb | ||
|
|
43f6ae7ba0 | ||
|
|
f86f027fb2 | ||
|
|
e3164d8d44 | ||
|
|
4720ede442 | ||
|
|
413bdce17c | ||
|
|
37136c9bef | ||
|
|
fb5970d4db | ||
|
|
2de9d491c3 | ||
|
|
f6b4794183 | ||
|
|
30909bd6fe | ||
|
|
2104c983e9 | ||
|
|
30faf7bfad | ||
|
|
785e5552ae | ||
|
|
a1cd398e4d | ||
|
|
edb06b12e9 | ||
|
|
1337ffe9e5 | ||
|
|
1238dc20da | ||
|
|
5157b2eff4 | ||
|
|
257ed8dc92 | ||
|
|
ea12f5b2ec | ||
|
|
34bd9b58e8 | ||
|
|
83754410f3 | ||
|
|
ae36704b66 | ||
|
|
70899ffb87 | ||
|
|
001865f1db | ||
|
|
2a3c68f2c6 | ||
|
|
769a7b1384 | ||
|
|
149abf98cf | ||
|
|
e104078b3f | ||
|
|
b7fa328d95 | ||
|
|
598dbeb185 | ||
|
|
7c249e9f7a | ||
|
|
1c7710d0ab | ||
|
|
a67e714abc | ||
|
|
932d08c276 | ||
|
|
2c90b6157c | ||
|
|
4b5b7381c2 | ||
|
|
f67639e0a2 | ||
|
|
66082029a9 | ||
|
|
f9e8b31633 | ||
|
|
257c57ccca | ||
|
|
7b488c8ec8 | ||
|
|
a46719eaba | ||
|
|
1bdf906617 | ||
|
|
97abb0e97f | ||
|
|
86f3153973 | ||
|
|
390726ac03 | ||
|
|
82b24d95d0 | ||
|
|
c7a2afa287 | ||
|
|
92d70dfcf4 | ||
|
|
cfcf72b8e0 | ||
|
|
36226a23ab | ||
|
|
fdba19043a | ||
|
|
c56ccb3aa4 | ||
|
|
f7a5cda7f4 | ||
|
|
7c346df471 | ||
|
|
99f5e9fc9f | ||
|
|
a942cb2711 | ||
|
|
aa39dcc34f | ||
|
|
0b3881751f | ||
|
|
31e656630d | ||
|
|
9cce3faba5 | ||
|
|
6dc71122b8 | ||
|
|
073c9445ea | ||
|
|
5dc7c62cd4 | ||
|
|
d3f8f03a7d | ||
|
|
7a90970177 | ||
|
|
b20f8668be | ||
|
|
d8d624870d | ||
|
|
1e6ed7be02 | ||
|
|
973369e7f1 | ||
|
|
0185d75b05 | ||
|
|
3e40bec98d | ||
|
|
f96ca5dd73 | ||
|
|
2240333df1 | ||
|
|
fdac4bf2c9 | ||
|
|
fab98633a4 | ||
|
|
11f3cbdb36 | ||
|
|
a3e7df0068 | ||
|
|
4e6b9ec947 | ||
|
|
de8bdb96bd | ||
|
|
ebafb9c316 | ||
|
|
f4ae9b41d6 | ||
|
|
27bf4b272b | ||
|
|
bb92715f02 | ||
|
|
0ffa15eb21 | ||
|
|
ae4a18c745 | ||
|
|
a9f14d9ffe | ||
|
|
ce84278f10 | ||
|
|
8955e0a6b1 | ||
|
|
9594c8d004 | ||
|
|
8a893e12f5 | ||
|
|
8f09514dd7 | ||
|
|
2bb4f1f875 | ||
|
|
050569b03b | ||
|
|
8b3ac57ce7 | ||
|
|
88447f87d6 | ||
|
|
d6296e9cf0 | ||
|
|
ab1a31cfb6 | ||
|
|
45918da48e | ||
|
|
cef6273dcf | ||
|
|
8c57df1945 | ||
|
|
6c927e8ec4 | ||
|
|
0e881faa87 | ||
|
|
6dbec06571 | ||
|
|
3306b01df9 | ||
|
|
598993e592 | ||
|
|
d03ef49a3c | ||
|
|
ea108b7733 | ||
|
|
60bbee9eaf | ||
|
|
1e316c75ea | ||
|
|
30c07c429c | ||
|
|
b69ad0a3d2 | ||
|
|
bad2c82669 | ||
|
|
12efdbef01 | ||
|
|
cf6476c1fc | ||
|
|
f48cb65284 | ||
|
|
62b8f78937 | ||
|
|
1b66b3c3fb | ||
|
|
2075e42c6d | ||
|
|
cda845f9a6 | ||
|
|
3edd06548c | ||
|
|
723976be58 | ||
|
|
91e1866d1a | ||
|
|
42178d5f7b | ||
|
|
cd94bb3f5b | ||
|
|
94cc7c8256 | ||
|
|
6ce2de6fb0 | ||
|
|
f7750e5f04 | ||
|
|
adab9819bd | ||
|
|
1304890441 | ||
|
|
a6dfaa0076 | ||
|
|
97563c1f2a | ||
|
|
68d0002d6b | ||
|
|
9734bfc4a0 | ||
|
|
646a76570f | ||
|
|
b8ef76f130 | ||
|
|
2fd7992b0e | ||
|
|
2beedb1676 | ||
|
|
cd7657d4d5 | ||
|
|
25e2c96ecd | ||
|
|
8085179499 | ||
|
|
0a922752de | ||
|
|
d58a286e3b | ||
|
|
8666f4efbf | ||
|
|
0c60ee5f1d | ||
|
|
d75f950ac4 | ||
|
|
f78d8b3e5e | ||
|
|
84f664de14 | ||
|
|
9eedd6c57a | ||
|
|
7866e761cc | ||
|
|
8af62c37bb | ||
|
|
74c109d6f1 | ||
|
|
c7e05df9c0 | ||
|
|
b558d67fcd | ||
|
|
f78d4b13eb | ||
|
|
120b89041b | ||
|
|
2d0aab223c | ||
|
|
6629061abd | ||
|
|
79b30153ba | ||
|
|
1b3971d6da | ||
|
|
0ad932acf6 | ||
|
|
d719f44e6f | ||
|
|
96e89f5ce5 | ||
|
|
f86bdd648a | ||
|
|
bce5cf9400 | ||
|
|
fe182a7407 | ||
|
|
94471c1a1a | ||
|
|
c714f3109a | ||
|
|
6cc95f2a4a | ||
|
|
3d31c9753a | ||
|
|
346a6721df | ||
|
|
d2a3f7de23 | ||
|
|
f47b83235a | ||
|
|
2d22c3519f | ||
|
|
a18543862f | ||
|
|
30dfbbbd68 | ||
|
|
4339fadd50 | ||
|
|
1ae074d05f | ||
|
|
84c9dd0dad | ||
|
|
3209986df1 | ||
|
|
87458657f8 | ||
|
|
67a6ed3fb4 | ||
|
|
f10e267b4c | ||
|
|
22987a5747 | ||
|
|
497fe6399f | ||
|
|
a5cc75c1f7 | ||
|
|
c8d4c798ee | ||
|
|
90c225e8b2 | ||
|
|
b789d44fd6 | ||
|
|
f26f4c30c8 | ||
|
|
00848fef21 | ||
|
|
0dfaa13f20 | ||
|
|
94decf01dc | ||
|
|
c269dc822c | ||
|
|
0f50e4d895 | ||
|
|
9a2cb1b6d1 | ||
|
|
31be8e7585 | ||
|
|
6d1e16a0a6 | ||
|
|
540dc17303 | ||
|
|
a8028768bc | ||
|
|
3872c16ed9 | ||
|
|
4e7ecb3f30 | ||
|
|
b9d90339ac | ||
|
|
5f841d98bc | ||
|
|
9bf5d7e6ba | ||
|
|
05bd2329c7 | ||
|
|
1a1de95ff5 | ||
|
|
7aaf09e92d | ||
|
|
2eb9ee1507 | ||
|
|
f2196b25f8 | ||
|
|
0f31471b2e | ||
|
|
4395a5f404 | ||
|
|
407996b00b | ||
|
|
2bf866052d | ||
|
|
10b002889c | ||
|
|
b50eea26ed | ||
|
|
8dae33e9ba | ||
|
|
ac742bf662 | ||
|
|
f368908660 | ||
|
|
76da6598c6 | ||
|
|
395bf25e1a | ||
|
|
3a3111ab91 | ||
|
|
ba8b49c703 | ||
|
|
fa1e69c1ec | ||
|
|
dbc1015d18 | ||
|
|
bb3df31c86 | ||
|
|
df9129364a | ||
|
|
38049c4bab | ||
|
|
9fafe50693 | ||
|
|
190dfe6706 | ||
|
|
835508a6b2 | ||
|
|
b20569a3fb | ||
|
|
feb1bb4fa3 | ||
|
|
fecb80665b | ||
|
|
23a6137624 | ||
|
|
a7e838e001 | ||
|
|
8f2b51c574 | ||
|
|
0b4d42eb27 | ||
|
|
2e108b7875 | ||
|
|
1d5228b4e3 | ||
|
|
f9251271fb | ||
|
|
7472a8ebc7 | ||
|
|
f2a6b6c6b6 | ||
|
|
438884b866 | ||
|
|
c583386175 | ||
|
|
749f16d875 | ||
|
|
82618f0184 | ||
|
|
cc1eb5dd98 | ||
|
|
d66727cb35 | ||
|
|
865aeaad12 | ||
|
|
0c05f998e9 | ||
|
|
4524f8413f | ||
|
|
903054e97a | ||
|
|
623056fe20 | ||
|
|
f2e75e730b | ||
|
|
5e8b8ab3e3 | ||
|
|
b1d21b0e3f | ||
|
|
184351c932 | ||
|
|
c0d0e80fe0 | ||
|
|
0646b43144 | ||
|
|
b477ffd08f | ||
|
|
ef63a0661b | ||
|
|
1293850a09 | ||
|
|
300d405621 | ||
|
|
f5d1a1753d | ||
|
|
bbdeec5a50 | ||
|
|
30b265a425 | ||
|
|
62e196e802 | ||
|
|
7cc7a8f47c | ||
|
|
b9859a1e57 | ||
|
|
9c6f50af41 | ||
|
|
45518580a4 | ||
|
|
f6d4686898 | ||
|
|
021bc5f011 | ||
|
|
55251e1024 | ||
|
|
693de2996a | ||
|
|
dabe7a3b55 | ||
|
|
be95b93a2d | ||
|
|
73ce47675c | ||
|
|
67d1368730 | ||
|
|
d923b4df53 | ||
|
|
ba3e0c4c35 | ||
|
|
9677aaa715 | ||
|
|
2e3b93b7f5 | ||
|
|
229f5b0c51 | ||
|
|
adac0bb388 | ||
|
|
745f3854d4 | ||
|
|
4a594ed115 | ||
|
|
dc14b2f9fe | ||
|
|
1f523ee843 | ||
|
|
0728533676 | ||
|
|
7019a1149d | ||
|
|
b4b2a5b5a6 | ||
|
|
1ec21662a9 | ||
|
|
560c487d15 | ||
|
|
edd7bc7197 | ||
|
|
98fbef7c24 | ||
|
|
8b191f038e | ||
|
|
eb206cb687 | ||
|
|
b974b3df3e | ||
|
|
15e412bd4e | ||
|
|
f1fc0df52a | ||
|
|
c05e3f8fe1 | ||
|
|
a0c2ffaac4 | ||
|
|
68a5f36f25 | ||
|
|
bb42f78bef | ||
|
|
562390dbb6 | ||
|
|
1b9d9fe12c | ||
|
|
fc5693067c | ||
|
|
177cd30854 | ||
|
|
2e5771b9e8 | ||
|
|
757bc94a23 | ||
|
|
7d48890f76 | ||
|
|
1514ef18ec | ||
|
|
a6cfb315f2 | ||
|
|
9ec76f7ecb | ||
|
|
03edd00014 | ||
|
|
0c724d1a88 | ||
|
|
bf8e7a3590 | ||
|
|
7cb46ffa18 | ||
|
|
d9293afd35 | ||
|
|
ea9a893c24 | ||
|
|
0619059047 | ||
|
|
f8c6fd9fac | ||
|
|
1136834d63 | ||
|
|
277915407e | ||
|
|
a2b2e4599d | ||
|
|
a9b1a6daaf | ||
|
|
ebf6fca040 | ||
|
|
f9273d3692 | ||
|
|
981bfc9b39 | ||
|
|
e70b32e14d | ||
|
|
9a928295fa | ||
|
|
22da3bdba7 | ||
|
|
89c8b3e3dd | ||
|
|
c60734cc5f | ||
|
|
1daa259c98 | ||
|
|
3c5da00230 | ||
|
|
98c30799a8 | ||
|
|
5b605bb6db | ||
|
|
a53518fd0e | ||
|
|
8014116bda | ||
|
|
466e725afd | ||
|
|
520a9b8b0d | ||
|
|
071fd8b569 | ||
|
|
64deea0d99 | ||
|
|
a8fd8053f4 | ||
|
|
000b880023 | ||
|
|
d42cb40ae3 | ||
|
|
5d24a2b7d9 | ||
|
|
b2f52baa99 | ||
|
|
081de6bed8 | ||
|
|
f47450846c | ||
|
|
2026be325f | ||
|
|
f6bc3cf998 | ||
|
|
5ec30ac35c | ||
|
|
e08ae8ed4a | ||
|
|
fc67edb44d | ||
|
|
3e042f63e6 | ||
|
|
aac78cef0a | ||
|
|
1c0b167c95 | ||
|
|
f435152c88 | ||
|
|
4da5df9c9b | ||
|
|
36589ad832 | ||
|
|
032d8781dc | ||
|
|
2ec7ef8acd | ||
|
|
d4b1eefe70 | ||
|
|
ddea5b57a5 | ||
|
|
49fed04bd2 | ||
|
|
9c36b2bef7 | ||
|
|
7d394896e4 | ||
|
|
5a0122cec5 | ||
|
|
bdb2afb1dc | ||
|
|
0fe1fb76d1 | ||
|
|
2a5b029ecc | ||
|
|
8aa030539b | ||
|
|
8ed7d12a08 | ||
|
|
469a726285 | ||
|
|
0103da13f0 | ||
|
|
c3ce525c6c | ||
|
|
939a96b314 | ||
|
|
b0c5c24d06 | ||
|
|
2b61d131dc | ||
|
|
e7db2a63b9 | ||
|
|
d5d78a1018 | ||
|
|
fc3c05692f | ||
|
|
1fdd037132 | ||
|
|
63b404be9f | ||
|
|
aaf031f501 | ||
|
|
a855f4bc67 | ||
|
|
85c8b2fdc3 | ||
|
|
b97e71e83e | ||
|
|
44a744752f | ||
|
|
02fec31c92 | ||
|
|
93f15a507b | ||
|
|
7cc2daa696 | ||
|
|
46aff7aabf | ||
|
|
65a4e664e5 | ||
|
|
62768cd617 | ||
|
|
f03efefac5 | ||
|
|
7f22d155f2 | ||
|
|
619b9f230f | ||
|
|
3e8b6dd1c1 | ||
|
|
0b8561711b | ||
|
|
5cb04828d2 | ||
|
|
2d100197c8 | ||
|
|
4debc2dffb | ||
|
|
b1bb2dce16 | ||
|
|
1940b63237 | ||
|
|
5ca629ec90 | ||
|
|
e7852ea54e | ||
|
|
40cf4dfee4 | ||
|
|
1a2c1252f0 | ||
|
|
95ee87f771 | ||
|
|
84697eb9b0 | ||
|
|
884f6b3571 | ||
|
|
aa9ecde7c8 | ||
|
|
1ead98b999 | ||
|
|
2a14039733 | ||
|
|
568962dadf | ||
|
|
7126d215b0 | ||
|
|
027342bba0 | ||
|
|
7b953ffefb | ||
|
|
d8e57d1c01 | ||
|
|
56f3f49f15 | ||
|
|
f8a45e4963 | ||
|
|
740a86609f | ||
|
|
d6b2bcf0d2 | ||
|
|
c3209e7738 | ||
|
|
3b55a19119 | ||
|
|
8ed7d22010 | ||
|
|
6542134e04 | ||
|
|
96ac13cdac | ||
|
|
d409006a44 | ||
|
|
ec418f98c0 | ||
|
|
2e7452f067 | ||
|
|
ddc31870bf | ||
|
|
77d6048005 | ||
|
|
8748e661e8 | ||
|
|
a50086ddec | ||
|
|
465fa571d2 | ||
|
|
d72ba16664 | ||
|
|
efd14f4c24 | ||
|
|
c472024921 | ||
|
|
35cd3918df | ||
|
|
a2a0851978 | ||
|
|
b329679d2d | ||
|
|
39657e6537 | ||
|
|
ee99d15df4 | ||
|
|
813b993819 | ||
|
|
f62189b381 | ||
|
|
dfa306c8c2 | ||
|
|
df7e90f4b5 | ||
|
|
55532c00b4 | ||
|
|
7ea18f5462 | ||
|
|
a16bbb8046 | ||
|
|
1d30241871 | ||
|
|
a0e5ec1d13 | ||
|
|
830620740a | ||
|
|
d34e8c4336 | ||
|
|
2370531e75 | ||
|
|
06f74a8c15 | ||
|
|
e0ad5eaf5e | ||
|
|
067f356010 | ||
|
|
555a38b819 | ||
|
|
88f2ede8fe | ||
|
|
9b2f61d778 | ||
|
|
0801047fe6 | ||
|
|
f8b8d03e15 | ||
|
|
f4270a0d75 | ||
|
|
0ab629e32d | ||
|
|
4259611726 | ||
|
|
24e2429fc0 | ||
|
|
ebf046ebc0 | ||
|
|
0155171c0d | ||
|
|
5a92b77560 | ||
|
|
0604b1a822 | ||
|
|
d54f3afe25 | ||
|
|
acc2392c3d | ||
|
|
3044c63773 | ||
|
|
f963238a75 | ||
|
|
46d41ba67a | ||
|
|
00921ce713 | ||
|
|
55073bd891 | ||
|
|
2b4ceda937 | ||
|
|
93ddc0b4f5 | ||
|
|
a74fc5aac7 | ||
|
|
e1032498e2 | ||
|
|
f43e07bc68 | ||
|
|
e61207ab41 | ||
|
|
0f87b1b5da | ||
|
|
6032e33290 | ||
|
|
037cba9a13 | ||
|
|
cb41569a5a | ||
|
|
6167f5d7b4 | ||
|
|
b50a453fe0 | ||
|
|
52d7f02dcb | ||
|
|
cce90a2bed | ||
|
|
973b6fc355 | ||
|
|
331c7d1a1a | ||
|
|
e35ee592ad | ||
|
|
2e646d722c | ||
|
|
fff29fcd69 | ||
|
|
4fd8bcd7c7 | ||
|
|
9fd97d89c0 | ||
|
|
0544f96980 | ||
|
|
4671a49fd8 | ||
|
|
e3cf8b7843 | ||
|
|
997257ff79 | ||
|
|
153da33311 | ||
|
|
93f613d6af | ||
|
|
608c0df0f7 | ||
|
|
4f568d5d19 | ||
|
|
331c952212 | ||
|
|
879da091d3 | ||
|
|
68410b9c58 | ||
|
|
7a3ecb339b | ||
|
|
144cba7f10 | ||
|
|
ee4571071d | ||
|
|
47a3ca44ba | ||
|
|
0e7ad3feeb | ||
|
|
bb6ba758db | ||
|
|
1ce4805bdc | ||
|
|
ecdb66f65a | ||
|
|
ae1880311e | ||
|
|
6652319283 | ||
|
|
855dec7fcd | ||
|
|
e57120fa61 | ||
|
|
f955eef31e | ||
|
|
6aaec3dc96 | ||
|
|
f59e5128d7 | ||
|
|
29fa2dfcfb | ||
|
|
6363cb0d80 | ||
|
|
17d9f4fb46 | ||
|
|
2c6329310a | ||
|
|
48089e869e | ||
|
|
5cb735eb8f | ||
|
|
d034e32703 | ||
|
|
a3b8c84e39 | ||
|
|
bf2376d504 | ||
|
|
aba8c0356a | ||
|
|
8870ba3b65 | ||
|
|
26e0283fc7 | ||
|
|
0c38e014d7 | ||
|
|
b89f79d901 | ||
|
|
56fbbef133 | ||
|
|
6ece2537ee | ||
|
|
f7b722f10f | ||
|
|
64544a6e7c | ||
|
|
1ef7a097a6 | ||
|
|
b70297dc7a | ||
|
|
732b3289f0 | ||
|
|
bc0caa5dd6 | ||
|
|
f835b34f57 | ||
|
|
3aa33bd720 | ||
|
|
87601fba1b | ||
|
|
adc900a03a | ||
|
|
de52808e9f | ||
|
|
31aebca134 | ||
|
|
9d09bdc1f3 | ||
|
|
a9c3019433 | ||
|
|
3f56830170 | ||
|
|
73b1953c09 | ||
|
|
4e0fc58f60 | ||
|
|
108f102360 | ||
|
|
be73811c53 | ||
|
|
f3fbc004f3 | ||
|
|
be71cf5689 | ||
|
|
bd53fce4a7 | ||
|
|
80c72c8f83 | ||
|
|
445daaeba2 | ||
|
|
851cff4bb8 | ||
|
|
245e25f4b7 | ||
|
|
69113a988f | ||
|
|
521bfc66f0 | ||
|
|
d473f3904a | ||
|
|
3f6296b619 | ||
|
|
f67a374444 | ||
|
|
74d09b5468 | ||
|
|
8435e3c856 | ||
|
|
6eaea38df7 | ||
|
|
5fb572abaf | ||
|
|
b495772118 | ||
|
|
7c939860d6 | ||
|
|
310420fda1 | ||
|
|
a679d2a0ed | ||
|
|
3f60107885 | ||
|
|
3c2e8cb71c | ||
|
|
cff55e91b0 | ||
|
|
005390f54b | ||
|
|
82ce848d24 | ||
|
|
dfdae7f046 | ||
|
|
7a7bad2aa3 | ||
|
|
8f438744cf | ||
|
|
460ccd9b34 | ||
|
|
0638d0b2d7 | ||
|
|
4c239b7eef | ||
|
|
ac8ddd58f0 | ||
|
|
b49308f0f1 | ||
|
|
b435171aa2 | ||
|
|
8e342e1db7 | ||
|
|
1ade6cdfa5 | ||
|
|
561ee5c72e | ||
|
|
143566fbf6 | ||
|
|
5e0f2e8572 | ||
|
|
350732d8dd | ||
|
|
d8da24804f | ||
|
|
15f8856f92 | ||
|
|
4ae61ad35a | ||
|
|
c2c5cc45fa | ||
|
|
7404e436d2 | ||
|
|
cc1560d3e3 | ||
|
|
4812437519 | ||
|
|
6df9bf36e5 | ||
|
|
53933d934d | ||
|
|
f108099623 | ||
|
|
7dd82a4a87 | ||
|
|
1a91b1bd42 | ||
|
|
439399b9f1 | ||
|
|
5e95d75f44 | ||
|
|
35deb4a512 | ||
|
|
19ac8e6e61 | ||
|
|
68a0506a40 | ||
|
|
0f9da18cbe | ||
|
|
acc4f31c3a | ||
|
|
2e4d1a7b44 | ||
|
|
ec7628924e | ||
|
|
4c849554da | ||
|
|
582a045457 | ||
|
|
4b2d98129e | ||
|
|
8ec99cb244 | ||
|
|
088dd8698e | ||
|
|
e9f4d2040b | ||
|
|
6d58836301 | ||
|
|
c81eaccfef | ||
|
|
b21100cc5d | ||
|
|
f6954c898d | ||
|
|
f1cea37814 | ||
|
|
911d97c0a3 | ||
|
|
4dc805d25a | ||
|
|
c691ef1899 | ||
|
|
04338335d0 | ||
|
|
4d9d315f10 | ||
|
|
eb3ddbcca7 | ||
|
|
13d11633ab | ||
|
|
c4572036b3 | ||
|
|
f0a8eaa5be | ||
|
|
93bf8d7414 | ||
|
|
2cbb2d7b6a | ||
|
|
ce23316008 | ||
|
|
c04dac65ac | ||
|
|
abba5a5d75 | ||
|
|
98b556cb1a | ||
|
|
488afd64d7 | ||
|
|
e2a7e60dad | ||
|
|
c17778ba47 | ||
|
|
753ba194fd | ||
|
|
f856782528 | ||
|
|
c9ff70b3cc | ||
|
|
6311abec2d | ||
|
|
1461d535d4 | ||
|
|
77d57b865d | ||
|
|
57a208d271 | ||
|
|
a26c9fca1e | ||
|
|
c679d18888 | ||
|
|
2a6372cabe | ||
|
|
22c710ed99 | ||
|
|
a14ff7820e | ||
|
|
a446b3c600 | ||
|
|
c8c4554299 | ||
|
|
6360ed52b2 | ||
|
|
9d8c867de8 | ||
|
|
571b8bbd88 | ||
|
|
b795950892 | ||
|
|
28c01f6476 | ||
|
|
117988d26d | ||
|
|
137770dc61 | ||
|
|
5d57237c3b | ||
|
|
9635ef5f16 | ||
|
|
bbec2c54ed | ||
|
|
c95b9ffc43 | ||
|
|
5336e98e18 | ||
|
|
1f4be42b3f | ||
|
|
6a1c88204a | ||
|
|
4f8e242dac | ||
|
|
89f616df88 | ||
|
|
0918b97e81 | ||
|
|
a8b7144d62 | ||
|
|
9bf97d9dcd | ||
|
|
343703c54f | ||
|
|
2ca8bcad5c | ||
|
|
9106c6ad52 | ||
|
|
2a4344ace3 | ||
|
|
a82c53dd2e | ||
|
|
1ac3611e6e | ||
|
|
c62f3c2898 | ||
|
|
b244118fd9 | ||
|
|
7164eaa8b1 | ||
|
|
a20aa472d6 | ||
|
|
1811153467 | ||
|
|
d003f9c6fd | ||
|
|
99844b4ca3 | ||
|
|
184fcab0b7 | ||
|
|
459e07834c | ||
|
|
c7e7f3b4c1 | ||
|
|
78a8ae3ba2 | ||
|
|
31527e8e87 | ||
|
|
c0008bf850 | ||
|
|
3b026ff0cc | ||
|
|
73b5ffa3ef | ||
|
|
55f0d0ab9f | ||
|
|
0cbd002667 | ||
|
|
5246f81dce | ||
|
|
56a9b8fa94 | ||
|
|
ab130900a1 | ||
|
|
d4b72ececc | ||
|
|
41b8ac32b3 | ||
|
|
7e0e4455b0 | ||
|
|
2127c00671 | ||
|
|
874fc741b5 | ||
|
|
605241f6e1 | ||
|
|
dac7b1c5b1 | ||
|
|
76cb1dc237 | ||
|
|
9440b09c66 | ||
|
|
6da0ceec9d | ||
|
|
bcb388ea9e | ||
|
|
288f1320a1 | ||
|
|
4aa461e317 | ||
|
|
54674158ca | ||
|
|
b02a884c16 | ||
|
|
91f0f21f45 | ||
|
|
44a0115b07 | ||
|
|
95bcd14c1d | ||
|
|
9e8c6aed4d | ||
|
|
f63b58edd9 | ||
|
|
ea47873db3 | ||
|
|
a608f98ca5 | ||
|
|
e84d0b9334 | ||
|
|
43b0a83b82 | ||
|
|
4f7e0941dc | ||
|
|
70a2e934f9 | ||
|
|
14801805ac | ||
|
|
54f2bb1daf | ||
|
|
75e380fe14 | ||
|
|
ec97d40242 | ||
|
|
7bb4f5591c | ||
|
|
4447366118 | ||
|
|
7140aa1015 | ||
|
|
16f9b2631e | ||
|
|
a6dee9ee0c | ||
|
|
89b4f84b0a | ||
|
|
09f4c21421 | ||
|
|
9fe10d087f | ||
|
|
12a95dfbc6 | ||
|
|
d9f82806ec | ||
|
|
455cd9c696 | ||
|
|
f695fa736d | ||
|
|
51f0a3f42a | ||
|
|
b7e953bc1a | ||
|
|
8b508bda9a | ||
|
|
b69e7fbe2c | ||
|
|
d5062ec5ae | ||
|
|
7143a8c806 | ||
|
|
b3d1c548e7 | ||
|
|
b28af56523 | ||
|
|
4a08d1d954 | ||
|
|
71d977908d | ||
|
|
cc0da7d8c6 | ||
|
|
b55d5c0e39 | ||
|
|
aafb65f888 | ||
|
|
12272dfb80 | ||
|
|
7e3848cc76 | ||
|
|
2ca50de41b | ||
|
|
9561fcea76 | ||
|
|
b9f45577a7 | ||
|
|
25dd806a18 | ||
|
|
6b23c71bb5 | ||
|
|
236332d8c7 | ||
|
|
de72d7ba13 | ||
|
|
ba6d73fc17 | ||
|
|
450d4b5a0a | ||
|
|
888b1fb021 | ||
|
|
958b032cea | ||
|
|
e9060a3ad9 | ||
|
|
78f43b6e13 | ||
|
|
bbaf7583e4 | ||
|
|
34cc115cdb | ||
|
|
93c6272fe2 | ||
|
|
25402c708e | ||
|
|
33cc635fcf | ||
|
|
129b3f9004 | ||
|
|
01344a991d | ||
|
|
060ac3bb4a | ||
|
|
95677e601a | ||
|
|
a97cc62d0a | ||
|
|
62260aa30b | ||
|
|
32457e83f0 | ||
|
|
2519486a02 | ||
|
|
bec3cc437d | ||
|
|
525a32f9f0 | ||
|
|
36f8f1902c | ||
|
|
bde7b1a828 | ||
|
|
9891b383e7 | ||
|
|
28bc87b873 | ||
|
|
9223173ef2 | ||
|
|
5e72416478 | ||
|
|
595e03c584 | ||
|
|
50a0c93cce | ||
|
|
e06cf70615 | ||
|
|
4c38b1a776 | ||
|
|
677c6d9f89 | ||
|
|
2743681392 | ||
|
|
aacf84f78a | ||
|
|
b95a9bb9b4 | ||
|
|
77541102af | ||
|
|
b337cf9f95 | ||
|
|
f914cb0248 | ||
|
|
c93828569b | ||
|
|
61993a032a | ||
|
|
b99c14b910 | ||
|
|
8aa0185cb8 | ||
|
|
2a1161bff4 | ||
|
|
067b495212 | ||
|
|
894369cc73 | ||
|
|
9a86accc62 | ||
|
|
77be268a70 | ||
|
|
1f051d7a9f | ||
|
|
652b6ae7d2 | ||
|
|
57a5b09328 | ||
|
|
9b806f2690 | ||
|
|
1b56a8b696 | ||
|
|
5a5d2c770c | ||
|
|
a5d06bde03 | ||
|
|
15103ac7fb | ||
|
|
439e735d4b | ||
|
|
7f5df308ad | ||
|
|
2f97baadc6 | ||
|
|
c2863156cd | ||
|
|
75762d64c6 | ||
|
|
8209cffcd0 | ||
|
|
70976460ff | ||
|
|
954155b090 | ||
|
|
5265bc20f1 | ||
|
|
af60a4d407 | ||
|
|
c9a6dc4fab | ||
|
|
9c647dc57a | ||
|
|
52e688df9b | ||
|
|
87f12c7d5a | ||
|
|
e9e9b13df0 | ||
|
|
7ee9c4fb30 | ||
|
|
e43fd0c48a | ||
|
|
27bed22fee | ||
|
|
aae69fa599 | ||
|
|
8abe138150 | ||
|
|
dccb23bb80 | ||
|
|
5e4bf0f019 | ||
|
|
f87c56af5c | ||
|
|
5565aab488 | ||
|
|
dbe6b9dacb | ||
|
|
dd866718b9 | ||
|
|
116c616561 | ||
|
|
084e3df8f7 | ||
|
|
36e421eb5f | ||
|
|
a5b01c3f6f | ||
|
|
f1836c281c | ||
|
|
292289d16d | ||
|
|
4e3bdf0925 | ||
|
|
b17475f013 | ||
|
|
ecea0f90d4 | ||
|
|
a4bf85b1b6 | ||
|
|
d215d31349 | ||
|
|
e4e24399d9 | ||
|
|
8f9d132ed6 | ||
|
|
e651511c35 | ||
|
|
2ecda17618 | ||
|
|
db03b5b102 | ||
|
|
9fd9a7bc10 | ||
|
|
eda9faf956 | ||
|
|
cf70678188 | ||
|
|
b23988c947 | ||
|
|
06f6e75d5a | ||
|
|
c9854b35e2 | ||
|
|
71e4ada39a | ||
|
|
d04d8c3a1d | ||
|
|
283faf7a2f | ||
|
|
0299ff0a79 | ||
|
|
4ee65822aa | ||
|
|
e7ca6c16ff | ||
|
|
771bf78576 | ||
|
|
b9fa2f4125 | ||
|
|
e5b22684cd | ||
|
|
43d37ab1cf | ||
|
|
1fc142a59f | ||
|
|
c4ad95760a | ||
|
|
f0ed170b04 | ||
|
|
38d4b5be1a | ||
|
|
5a7d770a58 | ||
|
|
c8f652aaa8 | ||
|
|
336793b2a1 | ||
|
|
c29ea2e679 | ||
|
|
3b6f05800d | ||
|
|
dda824856a | ||
|
|
474ab586f8 | ||
|
|
6bef35d8ef | ||
|
|
ad12660019 | ||
|
|
016da1d37d | ||
|
|
4e12f959fc | ||
|
|
1c06e9d683 | ||
|
|
01d7a33230 | ||
|
|
d92f5621aa | ||
|
|
8fdc61e227 | ||
|
|
9825b161ff | ||
|
|
108a50f3bb | ||
|
|
95b7e4f9ad | ||
|
|
a526386fbb | ||
|
|
3fb3453166 | ||
|
|
8dd0fe3c40 | ||
|
|
b1f0797a1f | ||
|
|
416e355495 | ||
|
|
62acc18e7d | ||
|
|
06d80032fe | ||
|
|
4e795c81f4 | ||
|
|
718ba719ca | ||
|
|
a5ed3ca446 | ||
|
|
3a93c50e38 | ||
|
|
654f673def | ||
|
|
1111382b53 | ||
|
|
1e605cdf0f | ||
|
|
2c27f422d9 | ||
|
|
f53a2f1b94 | ||
|
|
4fb40a6af7 | ||
|
|
6f6f5738fa | ||
|
|
40aacbf279 | ||
|
|
9ea3bfb7c7 | ||
|
|
dc2d52fc09 | ||
|
|
7dcebd51ab | ||
|
|
9ef5769f93 | ||
|
|
d12b197ec9 | ||
|
|
c5b55fa476 | ||
|
|
355fcced55 | ||
|
|
701fb1378e | ||
|
|
b120c34177 | ||
|
|
c23caf899f | ||
|
|
52c30e588c | ||
|
|
9da8f4d35b | ||
|
|
1b89189efa | ||
|
|
e53c5097f9 | ||
|
|
cb675300b1 | ||
|
|
c6a1f42c44 | ||
|
|
dbda90b15b | ||
|
|
29a04d9d83 | ||
|
|
0a6dc68d13 | ||
|
|
a1a85d08af | ||
|
|
601eec7da5 | ||
|
|
a54f3c8c7f | ||
|
|
17478491e9 | ||
|
|
245cf6d2e0 | ||
|
|
71af9741cc | ||
|
|
0503b64205 | ||
|
|
c9d4cac3ff | ||
|
|
a2932a0393 | ||
|
|
6917303e1b | ||
|
|
f685363574 | ||
|
|
03c19ccae9 | ||
|
|
7313b4b649 | ||
|
|
ff439369da | ||
|
|
24e470a099 | ||
|
|
8e72ddde32 | ||
|
|
07a7ea1f23 | ||
|
|
3c854d4af9 | ||
|
|
7f3f011104 | ||
|
|
a5cfae4b33 | ||
|
|
516649a508 | ||
|
|
abe23250c4 | ||
|
|
0f575907c7 | ||
|
|
835a3f6149 | ||
|
|
b93ef22687 | ||
|
|
bfd927d395 | ||
|
|
cb79302867 | ||
|
|
211d6f4005 | ||
|
|
ddee6d2b6a | ||
|
|
575c34467f | ||
|
|
dc8c27b1f9 | ||
|
|
4639ec87d2 | ||
|
|
50079670f9 | ||
|
|
ae12e65712 | ||
|
|
2f9be335cb | ||
|
|
9e59d927f2 | ||
|
|
ced3e5fec8 | ||
|
|
50eb523d8e | ||
|
|
d6baf1b32a | ||
|
|
60b8dfaa2d | ||
|
|
815f398ada | ||
|
|
56ed31ed6f | ||
|
|
3213fbff8b | ||
|
|
4bca9c63da | ||
|
|
01fe70a29a | ||
|
|
e43804d950 | ||
|
|
17206fc538 | ||
|
|
8cda6ede84 | ||
|
|
a6ec038189 | ||
|
|
ffaf6c14e4 | ||
|
|
3a6915c0b6 | ||
|
|
93a8c83a68 | ||
|
|
1302addcdd | ||
|
|
490cbd3f0d | ||
|
|
631355d788 | ||
|
|
ec1ab05ae6 | ||
|
|
f5f26f334f | ||
|
|
dba579b546 | ||
|
|
fa68b8bb35 | ||
|
|
ceb84ce020 | ||
|
|
68aa7fa3a4 | ||
|
|
70cd0655ed | ||
|
|
956ee06ea6 | ||
|
|
e15e34db93 | ||
|
|
3c23de9735 | ||
|
|
91da46dd63 | ||
|
|
4d280ff010 | ||
|
|
0297dd2664 | ||
|
|
56e328f31f | ||
|
|
ac2c1e019f | ||
|
|
56073fd522 | ||
|
|
07f6572816 | ||
|
|
8a018aa0f2 | ||
|
|
936d5821f9 | ||
|
|
04493035cd | ||
|
|
08064c4243 | ||
|
|
ed1c2cb596 | ||
|
|
212e0e624f | ||
|
|
e8af778962 | ||
|
|
26dba53d99 | ||
|
|
1c6a64caf2 | ||
|
|
f7a6241ac0 | ||
|
|
b6453383cf | ||
|
|
615c6cb388 | ||
|
|
31f890d55c | ||
|
|
567c09850c | ||
|
|
8d076efd71 | ||
|
|
062126c43d | ||
|
|
f9667cd80f | ||
|
|
65c2f58a66 | ||
|
|
030b945828 | ||
|
|
fd4240b774 | ||
|
|
8c0e022b44 | ||
|
|
da8e75f98a | ||
|
|
a1d2208bf3 | ||
|
|
b6b76eb137 | ||
|
|
19b16fe796 | ||
|
|
fec1553041 | ||
|
|
bc2f693c55 | ||
|
|
594ae20a6e | ||
|
|
14388f4bb1 | ||
|
|
369e6d1e61 | ||
|
|
789200d454 | ||
|
|
dcfab0f4dd | ||
|
|
9677ed9e2d | ||
|
|
a4ece6c1c5 | ||
|
|
e34396015f | ||
|
|
64e3310376 | ||
|
|
a955d8f890 | ||
|
|
bbc9532444 | ||
|
|
389afde138 | ||
|
|
fe5d9e486b | ||
|
|
6959e140af | ||
|
|
3a9306a9c2 | ||
|
|
cd23899e02 | ||
|
|
5a9fa66b04 | ||
|
|
1866244a2a | ||
|
|
5d4583c77f | ||
|
|
66ee81c55f | ||
|
|
9a2321a669 | ||
|
|
1878e39dfc | ||
|
|
2b9960e05f | ||
|
|
c2e34cd0f5 | ||
|
|
78bb5e09e5 | ||
|
|
e8c7ffa872 | ||
|
|
557a3f0896 | ||
|
|
b2af5390fb | ||
|
|
eb6c901527 | ||
|
|
d5a9cbe5a3 | ||
|
|
0658581bcd | ||
|
|
26c3f5a2cc | ||
|
|
34a60d7661 | ||
|
|
ea0cd80ea7 | ||
|
|
11d35c8410 | ||
|
|
38359e176f | ||
|
|
e54d9cf629 | ||
|
|
deccf8891d | ||
|
|
e5ac551795 | ||
|
|
7684f79e64 | ||
|
|
9fdab327c8 | ||
|
|
1908af6f54 | ||
|
|
a677608f1d | ||
|
|
93d462e028 | ||
|
|
661553da68 | ||
|
|
b4203992bf | ||
|
|
686ee1e349 | ||
|
|
9e8c9e897f | ||
|
|
06ceb5e68d | ||
|
|
dc2f9c304d | ||
|
|
462d5c3b12 | ||
|
|
39e90a20da | ||
|
|
b40014d709 | ||
|
|
2bdc229a9a | ||
|
|
61684830bf | ||
|
|
e93a0556e7 | ||
|
|
12668b78b9 | ||
|
|
8255088508 | ||
|
|
e66f7f012e | ||
|
|
3e38da2120 | ||
|
|
f2e7c82231 | ||
|
|
20e56d7dfa | ||
|
|
13225faa9e | ||
|
|
99cb752c71 | ||
|
|
5da4ced8c1 | ||
|
|
e363a21619 | ||
|
|
09efbaf621 | ||
|
|
31027047e3 | ||
|
|
629eb4ca90 | ||
|
|
c4e6e5eca4 | ||
|
|
ea72d41e6d | ||
|
|
c0f5b04472 | ||
|
|
532b32dab5 | ||
|
|
fb5c96731a | ||
|
|
3f8eb8cb6b | ||
|
|
89dc64ab66 | ||
|
|
6968cff2b6 | ||
|
|
c390e9e877 | ||
|
|
dee47ec978 | ||
|
|
fce2a16e42 | ||
|
|
5242672efb | ||
|
|
5c043dd908 | ||
|
|
19ed03c44c | ||
|
|
32b2ee8cab | ||
|
|
7e9ab546eb | ||
|
|
2af1f9a9d3 | ||
|
|
b6d6d3c980 | ||
|
|
c655cfaca8 | ||
|
|
b3a465dbca | ||
|
|
33d3bc53b4 | ||
|
|
be9da3928b | ||
|
|
a9fd557c4e | ||
|
|
faac22f6ed | ||
|
|
35a47093ab | ||
|
|
01a2d90e38 | ||
|
|
1cc2e74a03 | ||
|
|
ca86ab71f2 | ||
|
|
ee425d278c | ||
|
|
1c3c2b6a74 | ||
|
|
9952f7734a | ||
|
|
2ffb2988bf | ||
|
|
fda1d7c4c5 | ||
|
|
19519ac74e | ||
|
|
eb3f62fd90 | ||
|
|
891b362e7d | ||
|
|
cbb69bd3cb | ||
|
|
200a3e5e8c | ||
|
|
0fab2dc24f | ||
|
|
a48654f195 | ||
|
|
174b098724 | ||
|
|
ecb4671e0d | ||
|
|
6c6f6838ee | ||
|
|
b4414758a7 | ||
|
|
5b37536ce5 | ||
|
|
3365fa174d | ||
|
|
d42b95bab9 | ||
|
|
6a3aaf360e | ||
|
|
083d0c90e2 | ||
|
|
fed142dad2 | ||
|
|
fcd2126330 | ||
|
|
e5cd0ced53 | ||
|
|
06dad7865c | ||
|
|
6915634729 | ||
|
|
d3647e2e8a | ||
|
|
217bd1f4bf | ||
|
|
75fe500305 | ||
|
|
1e400624e0 | ||
|
|
b190a0eaba | ||
|
|
afc779440a | ||
|
|
7f71717a9f | ||
|
|
b9931da241 | ||
|
|
eaf0d5e0a0 | ||
|
|
832206ef80 | ||
|
|
85d4f2843e | ||
|
|
0849aa3f03 | ||
|
|
4cdeb214a7 | ||
|
|
3c727bc46f | ||
|
|
955ccfae88 | ||
|
|
e13662dd2c | ||
|
|
2840c98bb0 | ||
|
|
7d9bf83f66 | ||
|
|
d2c47bb153 | ||
|
|
9da3402997 | ||
|
|
e7784e3c34 | ||
|
|
224d6dc93f | ||
|
|
f95b5d05d7 | ||
|
|
ee109c2279 | ||
|
|
e515c7beb1 | ||
|
|
5f56db6f6e | ||
|
|
c00b204259 | ||
|
|
280c89a78d | ||
|
|
809ba2b392 | ||
|
|
18254392ab | ||
|
|
5646518352 | ||
|
|
710b88efae | ||
|
|
1118c3399c | ||
|
|
98a7800fae | ||
|
|
b3f9bbe50f | ||
|
|
e37c7e58cf | ||
|
|
feb9ffadec | ||
|
|
a4d96b032e | ||
|
|
038d70a40b | ||
|
|
44d5009538 | ||
|
|
8e1e7fb314 | ||
|
|
dbbfbb2855 | ||
|
|
24ed979faf | ||
|
|
e64a65c41e | ||
|
|
67c2fe8005 | ||
|
|
d3d15b79fb | ||
|
|
60586d8ce0 | ||
|
|
c95257f32c | ||
|
|
f0162557c5 | ||
|
|
5f257119d6 | ||
|
|
e6df4f24f4 | ||
|
|
d4b733ff16 | ||
|
|
3c72d28511 | ||
|
|
e4b63a68fd | ||
|
|
a251029546 | ||
|
|
b5d457daa9 | ||
|
|
603f2a2154 | ||
|
|
4f40c96d19 | ||
|
|
d7fc658bae | ||
|
|
08dd2bd93d | ||
|
|
10b8a33b55 | ||
|
|
bd0210cdce | ||
|
|
5677523800 | ||
|
|
2150933368 | ||
|
|
fd7dbaf0a7 | ||
|
|
d145310447 | ||
|
|
9d413680d9 | ||
|
|
0e85c814e1 | ||
|
|
3589bb9597 | ||
|
|
10b06eda91 | ||
|
|
145d337db9 | ||
|
|
1d59ae24c6 | ||
|
|
6309dd1350 | ||
|
|
0ae001ed6d | ||
|
|
bb8efadb98 | ||
|
|
620c894929 | ||
|
|
18d2a7fe4d | ||
|
|
78e74cda28 | ||
|
|
cc9c69c931 | ||
|
|
6559cfd0e1 | ||
|
|
28dcc781b4 | ||
|
|
09f10d2d7e | ||
|
|
8492503d4f | ||
|
|
c48b9b34e9 | ||
|
|
04b4da0c75 | ||
|
|
276b171d93 | ||
|
|
44675739a1 | ||
|
|
6e13718cbd | ||
|
|
2bb6922e7f | ||
|
|
67e167427c | ||
|
|
969a4e7ba5 | ||
|
|
a5aa38ce3c | ||
|
|
0495103635 | ||
|
|
ae6b75b62a | ||
|
|
9091d686ed | ||
|
|
47b5d7a2df | ||
|
|
6298a7a357 | ||
|
|
45c63e2b82 | ||
|
|
dba617a7fe | ||
|
|
4a253a7760 | ||
|
|
bd11663e0a | ||
|
|
7c4bff567b | ||
|
|
df2a5e97f8 | ||
|
|
e9e5c75dec | ||
|
|
21e4387a39 | ||
|
|
67ef829e04 | ||
|
|
8b2b9713ce | ||
|
|
b7f998094f | ||
|
|
c324200f70 | ||
|
|
db3377e170 | ||
|
|
85a8feec9d | ||
|
|
22b0ddfb42 | ||
|
|
1cc94f8353 | ||
|
|
7d2a7d24a6 | ||
|
|
73056f5620 | ||
|
|
2c271acfe9 | ||
|
|
b76e833ea5 | ||
|
|
3bdb9f289f | ||
|
|
97b8684e1a | ||
|
|
8958b2aa1b | ||
|
|
cf0fb69153 | ||
|
|
8603cf89b0 | ||
|
|
39ef0107ad | ||
|
|
63d7b63f42 | ||
|
|
4ea6c98f43 | ||
|
|
39bdf261c6 | ||
|
|
cb3e13e9e5 | ||
|
|
7a7e8fe741 | ||
|
|
4a9e691747 | ||
|
|
4026c57834 | ||
|
|
f1c05bc909 | ||
|
|
18d3b3545d | ||
|
|
a03d9fba10 | ||
|
|
ef24020b14 | ||
|
|
d16d969799 | ||
|
|
232f1fda6d | ||
|
|
c1fd7fdad0 | ||
|
|
9470a4f1ed | ||
|
|
9da027cf74 | ||
|
|
45e9988700 | ||
|
|
1f9b4703e8 | ||
|
|
c21b61bbd2 | ||
|
|
61249b0887 | ||
|
|
0ac48a431a | ||
|
|
7b15fefcaa | ||
|
|
6d076284e8 | ||
|
|
d7d248fd04 | ||
|
|
a636aa592b | ||
|
|
1fc6603f41 | ||
|
|
d36a233cbf | ||
|
|
2a11f42318 | ||
|
|
e23383be41 | ||
|
|
36a47febc2 | ||
|
|
053a86c0d4 | ||
|
|
3ded1b6c6e | ||
|
|
28ea68fe7f | ||
|
|
6203c27244 | ||
|
|
57fb800c77 | ||
|
|
9a3ec31191 | ||
|
|
8ef3aee7e7 | ||
|
|
a20e6086cc | ||
|
|
66fa8a7595 | ||
|
|
a8f9e3f0b0 | ||
|
|
215905213b | ||
|
|
f8865c1413 | ||
|
|
67aed51742 | ||
|
|
2be2b10e59 | ||
|
|
ed5e194b8e | ||
|
|
a6b4cb24b8 | ||
|
|
4276fc0b0b | ||
|
|
0d10957441 | ||
|
|
368720538c | ||
|
|
d068a460bd | ||
|
|
346ff199c6 | ||
|
|
480a4a9d38 | ||
|
|
77cfd0e1a6 | ||
|
|
950af2e753 | ||
|
|
aa2845a730 | ||
|
|
aedf066337 | ||
|
|
b975cf3ed4 | ||
|
|
f2af5ce7eb | ||
|
|
fa612b731c | ||
|
|
0933268e61 | ||
|
|
3aa5fc0cc2 | ||
|
|
397f57accb | ||
|
|
e3b1944e31 | ||
|
|
507582f40b | ||
|
|
08e015a951 | ||
|
|
ef17f4eacb | ||
|
|
3d185dc622 | ||
|
|
76b4b88e4b | ||
|
|
fd37edc53f | ||
|
|
5662c06a33 | ||
|
|
0aede618ec | ||
|
|
e52d4ce033 | ||
|
|
b646672d3e | ||
|
|
a1a7d44fd7 | ||
|
|
25ea221a6a | ||
|
|
38ee4f556e | ||
|
|
862f20ef20 | ||
|
|
5c902001b9 | ||
|
|
5f6887b316 | ||
|
|
45b96bd568 | ||
|
|
197d006860 | ||
|
|
49f8aac6a9 | ||
|
|
22dd50a047 | ||
|
|
81d9b5afd6 | ||
|
|
59f3d2a11e | ||
|
|
134a170a61 | ||
|
|
681f006ae1 | ||
|
|
36abfcc79b | ||
|
|
249a14f84a | ||
|
|
10fdc45dea | ||
|
|
e8e7b419b5 | ||
|
|
955fc58773 | ||
|
|
2da3d83420 | ||
|
|
c3f2e8dde1 | ||
|
|
4e4c80b7fa | ||
|
|
3e776c8c41 | ||
|
|
7c82e4b6c1 | ||
|
|
12d26d5a3d | ||
|
|
d228769b1b | ||
|
|
433f88b459 | ||
|
|
704d56d193 | ||
|
|
5f4da6e0bc | ||
|
|
0ce89d53d7 | ||
|
|
5bdffd7d20 | ||
|
|
5996920249 | ||
|
|
f0119085e4 | ||
|
|
22e17172dd | ||
|
|
6ec731e263 | ||
|
|
7cd8b6f938 | ||
|
|
a4a19845d4 | ||
|
|
fffb0eafde | ||
|
|
10f60e2807 | ||
|
|
3db27e6017 | ||
|
|
91b64798bb | ||
|
|
8455db6fae | ||
|
|
530648e937 | ||
|
|
7f67435cb9 | ||
|
|
d8eba411ec | ||
|
|
dcfa903176 | ||
|
|
fc70a8e145 | ||
|
|
e4a2d7dfb7 | ||
|
|
f081527731 | ||
|
|
9f8a0234aa | ||
|
|
857c860952 | ||
|
|
cff68fc062 | ||
|
|
365c741864 | ||
|
|
366f9db8a8 | ||
|
|
9d5303c59d | ||
|
|
c527392e21 | ||
|
|
933cc333cc | ||
|
|
e72c3b2c86 | ||
|
|
231c849451 | ||
|
|
a5af248715 | ||
|
|
8fede48e7b | ||
|
|
d0492ec7bd | ||
|
|
b5399202b6 | ||
|
|
240077ffe8 | ||
|
|
eee9a1661f | ||
|
|
9199546dca | ||
|
|
e0d97d44aa | ||
|
|
5fbb69e7c5 | ||
|
|
3a6aa8f820 | ||
|
|
44ae5c86a7 | ||
|
|
85f47e1693 | ||
|
|
9a96f8b155 | ||
|
|
391dc06013 | ||
|
|
598b392878 | ||
|
|
9e75993658 | ||
|
|
159a3a3706 | ||
|
|
cbdb2e6e6f | ||
|
|
d409da2201 | ||
|
|
c7aa67b07a | ||
|
|
5b302ae2e6 | ||
|
|
df2925e51c | ||
|
|
02b19fed27 | ||
|
|
17f06564a2 | ||
|
|
6ddd394e33 | ||
|
|
d3f78299e7 | ||
|
|
3e76b2374c | ||
|
|
a3b97f7c24 | ||
|
|
4f50e36e5b | ||
|
|
a0bbbe1404 | ||
|
|
50f983871b | ||
|
|
2d3b02df6a | ||
|
|
4010c89899 | ||
|
|
215e930da4 | ||
|
|
5b74d75011 | ||
|
|
9266eaef16 | ||
|
|
963a0ce6ef | ||
|
|
5f5e453fb3 | ||
|
|
0cacd111df | ||
|
|
d86a7ccf3e | ||
|
|
35ea4d1a00 | ||
|
|
10583610bd | ||
|
|
55816a09fe | ||
|
|
ad288be2ee | ||
|
|
c9071ff724 | ||
|
|
96b8dce982 | ||
|
|
1e498eccb6 | ||
|
|
da048cbc7b | ||
|
|
7bd5529bb7 | ||
|
|
1b64af143e | ||
|
|
d2685f2544 | ||
|
|
83c6aef078 | ||
|
|
a9570f7298 | ||
|
|
71e0a788d1 | ||
|
|
e6910d3c52 | ||
|
|
9a6e4ba77f | ||
|
|
bab4649a1e | ||
|
|
5a763230e5 | ||
|
|
09e6804761 | ||
|
|
a414aa27b6 | ||
|
|
c598fd9ec4 | ||
|
|
a8eeb7f76a | ||
|
|
d28e3374c7 | ||
|
|
c3e9ae0ca0 | ||
|
|
71cfec91af | ||
|
|
b085222253 | ||
|
|
29b6e00071 | ||
|
|
9aacc85a16 | ||
|
|
aa32d454c9 | ||
|
|
d3b69abd87 | ||
|
|
df88300e6e | ||
|
|
e90ed7a853 | ||
|
|
fdaf13bdc4 | ||
|
|
d96d40e0b0 | ||
|
|
5dae0c14d9 | ||
|
|
5cd54c4831 | ||
|
|
4caa02474c | ||
|
|
005defbb5c | ||
|
|
061045016f | ||
|
|
997353ab71 | ||
|
|
1570ed4610 | ||
|
|
25e2d78311 | ||
|
|
1e2d014ac9 | ||
|
|
a0b1d16e79 | ||
|
|
6985391437 | ||
|
|
e90f58a0a7 | ||
|
|
0555fca5d8 | ||
|
|
2a55e74e11 | ||
|
|
94ace2348f | ||
|
|
2b58a2a176 | ||
|
|
7bc82365c6 | ||
|
|
de11dc43ab | ||
|
|
756927b6f8 | ||
|
|
5693c69457 | ||
|
|
cda41a1506 | ||
|
|
890298457a | ||
|
|
ccfc7351e7 | ||
|
|
df6c5dd22e | ||
|
|
60f23c838b | ||
|
|
dcd807c49b | ||
|
|
575b921a15 | ||
|
|
67473f07b1 | ||
|
|
3aa368b630 | ||
|
|
4e044d66b4 | ||
|
|
065a5d2a47 | ||
|
|
5103da09c5 | ||
|
|
33ea1d44fb | ||
|
|
e62027b73c | ||
|
|
26c43667aa | ||
|
|
92fbc26852 | ||
|
|
a4e488a1eb | ||
|
|
0ee9c69ddf | ||
|
|
dd5e6c18d5 | ||
|
|
737e95c3f9 | ||
|
|
4b064dc19f | ||
|
|
f2e5c913d6 | ||
|
|
8758bd57ca | ||
|
|
73e31373a8 | ||
|
|
990e620dc7 | ||
|
|
9103e58314 | ||
|
|
a26fe71171 | ||
|
|
7a44e46d6d | ||
|
|
b376e4da1f | ||
|
|
f8481f8d4c | ||
|
|
54f55cc021 | ||
|
|
a7a4f38d58 | ||
|
|
d67e49400f | ||
|
|
6789f2c1e3 | ||
|
|
e8a3ffcb41 | ||
|
|
9607c743a0 | ||
|
|
553b964ab8 | ||
|
|
72ac408429 | ||
|
|
8456905960 | ||
|
|
13261c974a | ||
|
|
eafabdce36 | ||
|
|
d02a57744c | ||
|
|
58374add90 | ||
|
|
a52d501ba2 | ||
|
|
702abbad6d | ||
|
|
2d0edb5270 | ||
|
|
7aab34b540 | ||
|
|
d637a13f59 | ||
|
|
17f99aeed8 | ||
|
|
8729414da9 | ||
|
|
cd8b7e5528 | ||
|
|
6d74c5663f | ||
|
|
5ccca5e329 | ||
|
|
6c7b7b796e | ||
|
|
4ee3cea6ce | ||
|
|
1c07e550bb | ||
|
|
50c71ebb01 | ||
|
|
348d086c11 | ||
|
|
89c1853977 | ||
|
|
3acff54837 | ||
|
|
c7466f7a1a | ||
|
|
6420ad9f69 | ||
|
|
b30823d5ac | ||
|
|
864472d648 | ||
|
|
36b02ec008 | ||
|
|
aad080aa1b | ||
|
|
7b7a6e10f8 | ||
|
|
aeccf92375 | ||
|
|
f90d271739 | ||
|
|
9c2fde940d | ||
|
|
2b57cc6be8 | ||
|
|
b62819e3fb | ||
|
|
3eb5f2c65b | ||
|
|
41be7f951c | ||
|
|
7812fdb6ed | ||
|
|
4eeb2a0583 | ||
|
|
3dd0c537ee | ||
|
|
e0aa42f695 | ||
|
|
5dddf2f757 | ||
|
|
f8137ea7c1 | ||
|
|
cf6f1a083e | ||
|
|
f9cfeacc67 | ||
|
|
98229a47b2 | ||
|
|
530ace1507 | ||
|
|
792c657ff2 | ||
|
|
5aa07439a8 | ||
|
|
bf2862f164 | ||
|
|
d9ef227435 | ||
|
|
324c845dc4 | ||
|
|
5d0c44e84b | ||
|
|
01a71c3dbb | ||
|
|
b018f026e3 | ||
|
|
0a38e3557d | ||
|
|
6f450272b8 | ||
|
|
7e01f9be6e | ||
|
|
00d2a1fe9f | ||
|
|
18d0d435c6 | ||
|
|
f298c154e2 | ||
|
|
822df37f8c | ||
|
|
73cac95255 | ||
|
|
a0e7789d50 | ||
|
|
c825b37cc6 | ||
|
|
2dd4aa31e5 | ||
|
|
c95adfaf74 | ||
|
|
9da8ea5967 | ||
|
|
4d5ecc5518 | ||
|
|
963a0fcd77 | ||
|
|
fbd8dfa5be | ||
|
|
c43f791b29 | ||
|
|
39b873cd5f | ||
|
|
ec90537181 | ||
|
|
4709195a1d | ||
|
|
0082c23a90 | ||
|
|
c7b559f449 | ||
|
|
d571c7e08e | ||
|
|
b6f0b25f24 | ||
|
|
5ea6bd5980 | ||
|
|
ea29b67c5c | ||
|
|
1f851bc04c | ||
|
|
0921007d92 | ||
|
|
4a2e0bfa00 | ||
|
|
8ebc587fb5 | ||
|
|
c7b46f4fba | ||
|
|
4ad354a561 | ||
|
|
587592449a | ||
|
|
425b071a50 | ||
|
|
4dd72e6793 | ||
|
|
d2d4a24229 | ||
|
|
4805394e61 | ||
|
|
5cbd723f8d | ||
|
|
28153656d7 | ||
|
|
d2eaf16751 | ||
|
|
e0d98b2e14 | ||
|
|
c38f053294 | ||
|
|
921d274579 | ||
|
|
c9f95a1866 | ||
|
|
99469f8404 | ||
|
|
417d2c0336 | ||
|
|
2a3de1a090 | ||
|
|
d9318c5af3 | ||
|
|
0e02cf5c86 | ||
|
|
45277affe8 | ||
|
|
c564a843fa | ||
|
|
efa810da91 | ||
|
|
c0e1c90497 | ||
|
|
b1bfdec473 | ||
|
|
244f423baf | ||
|
|
8897b32cd3 | ||
|
|
5493fadc9e | ||
|
|
eade3d0a2d | ||
|
|
36f9eca33e | ||
|
|
4dd90e56b1 | ||
|
|
5e7484a12d | ||
|
|
fdbc44e41b | ||
|
|
e0d16dcb22 | ||
|
|
0a5ee0634f | ||
|
|
fa1331ffd5 | ||
|
|
57b5b9a7a6 | ||
|
|
58fbfc3c38 | ||
|
|
0af5e0b795 | ||
|
|
d7771eb4b6 | ||
|
|
fc0902c290 | ||
|
|
75890f88fa | ||
|
|
9a6b07e1e1 | ||
|
|
ce02d1dc98 | ||
|
|
7760e63b47 | ||
|
|
a483f2466f | ||
|
|
48c345a403 | ||
|
|
82b79aa332 | ||
|
|
ffbf9f265f | ||
|
|
144f65c459 | ||
|
|
18204586e1 | ||
|
|
1f3c970e7a | ||
|
|
1cfd93640c | ||
|
|
553ea4971f | ||
|
|
ac8b01a94c | ||
|
|
b3934c9788 | ||
|
|
37ae863443 | ||
|
|
f57356006d | ||
|
|
591a104c80 | ||
|
|
38097c9095 | ||
|
|
7f31e624ca | ||
|
|
e6fbfcb1e8 | ||
|
|
00687f21cd | ||
|
|
96fc0d043e | ||
|
|
190353785e | ||
|
|
f54adb4a3e | ||
|
|
f2a5d92398 | ||
|
|
b14c768fa2 | ||
|
|
851d2f2d91 | ||
|
|
4e6aad5115 | ||
|
|
7bd1408de0 | ||
|
|
d63eb396e1 | ||
|
|
465e99ab5d | ||
|
|
33916cfbd3 | ||
|
|
a1626927cc | ||
|
|
75e2abe242 | ||
|
|
2db8075e3f | ||
|
|
413876644c | ||
|
|
d5e9f2e23e | ||
|
|
bc59d015e6 | ||
|
|
2decf94ad0 | ||
|
|
b52744ae18 | ||
|
|
6cbbf0af2f | ||
|
|
5d7ef149aa | ||
|
|
7ce0974767 | ||
|
|
7b12c7a07d | ||
|
|
728e3fd2f0 | ||
|
|
4eedeebd46 | ||
|
|
85fb12155b | ||
|
|
f99daa696e | ||
|
|
b4f9dd46a9 | ||
|
|
ffe16f89bb | ||
|
|
7604d92d5c | ||
|
|
3abd77a1e6 | ||
|
|
d96b79a9ba | ||
|
|
14bb888c21 | ||
|
|
c8f59ea1a7 | ||
|
|
233520b797 | ||
|
|
061d31af33 | ||
|
|
ec742d3180 | ||
|
|
1bc62cfba4 | ||
|
|
028d9a2667 | ||
|
|
d53e00ffe0 | ||
|
|
b90fcc1b71 | ||
|
|
a4e7305d52 | ||
|
|
a3378f8d03 | ||
|
|
5716d163ec | ||
|
|
42ef035241 | ||
|
|
b6157195b3 | ||
|
|
b8ee68034d | ||
|
|
6598b1b10d | ||
|
|
4ff4058244 | ||
|
|
dddd5af830 | ||
|
|
26fac9507e | ||
|
|
1f1c9698ce | ||
|
|
56f7459617 | ||
|
|
86604b5de1 | ||
|
|
0544dbe891 | ||
|
|
6365cea0b2 | ||
|
|
7fef13346e | ||
|
|
81216e6ece | ||
|
|
1d0b305332 | ||
|
|
c10ccc011f | ||
|
|
3fe7995060 | ||
|
|
c441d04e8a | ||
|
|
52d84a99ac | ||
|
|
fcf20215a6 | ||
|
|
aa2f9622f8 | ||
|
|
1811318dea | ||
|
|
5eb50cb2b6 | ||
|
|
f6ef6ff7db | ||
|
|
2f33a80e1e | ||
|
|
363d49b655 | ||
|
|
de8c6d5572 | ||
|
|
9406bda93d | ||
|
|
d17a447a5f | ||
|
|
5b4e95484e | ||
|
|
bebea41e19 | ||
|
|
442474fc44 | ||
|
|
0d9112a4c1 | ||
|
|
d504e00e18 | ||
|
|
74c8e7fad9 | ||
|
|
4b781d3827 | ||
|
|
9fbcc5c32d | ||
|
|
c7ec8190fb | ||
|
|
b73a6d84ee | ||
|
|
2eaa7f1ab6 | ||
|
|
608445e64f | ||
|
|
1f4be77662 | ||
|
|
0deae4abf9 | ||
|
|
5b2f9351c7 | ||
|
|
6fdf30357c | ||
|
|
cf5d7478fc | ||
|
|
9a0df5afb0 | ||
|
|
813b2fcb38 | ||
|
|
08cbc0f187 | ||
|
|
d8251c8f79 | ||
|
|
5ea70baa6f | ||
|
|
d23ce9fb63 | ||
|
|
ddf8016a0c | ||
|
|
ab191abd5a | ||
|
|
c2e5e94b37 | ||
|
|
6a9b251be1 | ||
|
|
6b5185abfb | ||
|
|
2a41280076 | ||
|
|
91d986970b | ||
|
|
b4192bba7a | ||
|
|
9fe0aa0604 | ||
|
|
fc528749f8 | ||
|
|
5c71a3c85b | ||
|
|
94e768dd01 | ||
|
|
0fb91d6bcc | ||
|
|
02854881b4 | ||
|
|
4254781391 | ||
|
|
31f4f4096e | ||
|
|
e95e016378 | ||
|
|
c337c9128c | ||
|
|
5a38562bfc | ||
|
|
a3dd0e5f7d | ||
|
|
fcd1e106a5 | ||
|
|
346328156a | ||
|
|
3239f99ea8 | ||
|
|
93c32d3f29 | ||
|
|
98449dac3f | ||
|
|
32b60edda7 | ||
|
|
823c95bd9c | ||
|
|
e99d872f2b | ||
|
|
de8f8b02dc | ||
|
|
eec45dfff9 | ||
|
|
cce86c8e96 | ||
|
|
aabdc47c38 | ||
|
|
cb07a729e5 | ||
|
|
df10f7fbe7 | ||
|
|
71c531240f | ||
|
|
1e83207dac | ||
|
|
3311fcdc8e | ||
|
|
f368be925f | ||
|
|
075c57ca06 | ||
|
|
49fc80d506 | ||
|
|
74fc2fcfa9 | ||
|
|
7cc427e28d | ||
|
|
87c571412c | ||
|
|
ab093b2cde | ||
|
|
bbc4ede768 | ||
|
|
64c20dc528 | ||
|
|
50ea9bda89 | ||
|
|
2cf8c4e37a | ||
|
|
fe4719f656 | ||
|
|
1d43b7b316 | ||
|
|
78e4fead49 | ||
|
|
02d5143ff2 | ||
|
|
d9c92b2c6d | ||
|
|
27ac9bbaf3 | ||
|
|
11cdd393f2 | ||
|
|
1ca8578035 | ||
|
|
2516718882 | ||
|
|
5283314c4f | ||
|
|
dcae8da0d1 | ||
|
|
34f2a1a02f | ||
|
|
ee5a68a23c | ||
|
|
6c706ccd9f | ||
|
|
94106f5825 | ||
|
|
72ab2b8011 | ||
|
|
8978ab5917 | ||
|
|
94577316f9 | ||
|
|
91650fb052 | ||
|
|
e9aa037230 | ||
|
|
871e6f691c | ||
|
|
fe60836a89 | ||
|
|
bea2e73b82 | ||
|
|
481e55e8da | ||
|
|
d26a67297a | ||
|
|
753bd7e1d9 | ||
|
|
b57492c1c6 | ||
|
|
4ff5c3b455 | ||
|
|
f62c47a757 | ||
|
|
a85bb0d86f | ||
|
|
5736d523dd | ||
|
|
5004b5723d | ||
|
|
ad2802d8e8 | ||
|
|
3fedd452a5 | ||
|
|
292bc3c4e5 | ||
|
|
512ba8e733 | ||
|
|
9a87ff684d | ||
|
|
f79fc21bfc | ||
|
|
ffddd58b6b | ||
|
|
087e5eaa32 | ||
|
|
cbd27831df | ||
|
|
f6028b63b6 | ||
|
|
a60e01db97 | ||
|
|
68c2ea38c9 | ||
|
|
3469cfca2f | ||
|
|
afd189d24c | ||
|
|
06cb09c267 | ||
|
|
e461b57a48 | ||
|
|
eca9d49575 | ||
|
|
15a37a5062 | ||
|
|
3f8f9eb92c | ||
|
|
33de2bda9e | ||
|
|
94d913fbab | ||
|
|
beb1fcc176 | ||
|
|
1e1a6e3a2d | ||
|
|
6e7c21e439 | ||
|
|
cfe9aaf639 | ||
|
|
69e701befb | ||
|
|
5174a085b7 | ||
|
|
15fab69eca | ||
|
|
20b103a0fb | ||
|
|
8ebe7ee81a | ||
|
|
1d747f664b | ||
|
|
dbf5988c28 | ||
|
|
31ab0e4b7d | ||
|
|
35ea7083bb | ||
|
|
bf90e8bf44 | ||
|
|
b1305644f4 | ||
|
|
34707a057b | ||
|
|
f5e90252f1 | ||
|
|
e75acf69aa | ||
|
|
3ad3fc2622 | ||
|
|
a59468d6c1 | ||
|
|
86e63b1614 | ||
|
|
3f8f9f6711 | ||
|
|
d01f494277 | ||
|
|
4db525c6a9 | ||
|
|
8b5f8b0cb4 | ||
|
|
d0c9b5e98f | ||
|
|
e313625ccb | ||
|
|
7dead548f3 | ||
|
|
8db46ff762 | ||
|
|
93f54a997a | ||
|
|
1353491952 | ||
|
|
00802ffe7a | ||
|
|
78e556aaf7 | ||
|
|
e34988d65a | ||
|
|
07f5c7c89c | ||
|
|
7319d8941a | ||
|
|
3d7933135b | ||
|
|
a778472461 | ||
|
|
cbe2a7446d | ||
|
|
8251dc5cd1 | ||
|
|
5a4103a248 | ||
|
|
d7996f5c1a | ||
|
|
db4229f033 | ||
|
|
e103664963 | ||
|
|
fbf3936ddc | ||
|
|
62d03f1976 | ||
|
|
f3ea159c6b | ||
|
|
3c99294a3a | ||
|
|
7a2a8cffbb | ||
|
|
6d90f87b2f | ||
|
|
f506d24a82 | ||
|
|
ddb0d23ca7 | ||
|
|
763be9bb95 | ||
|
|
77109144e7 | ||
|
|
840e7bd985 | ||
|
|
a6c12f4b25 | ||
|
|
e8e9a4d07b | ||
|
|
ba00182ce4 | ||
|
|
2ad78ee3b8 | ||
|
|
4995d59499 | ||
|
|
d58ef7aa36 | ||
|
|
dc59632fb3 | ||
|
|
1542e15a1b | ||
|
|
5b5be40dd5 | ||
|
|
1ecf0f4c23 | ||
|
|
fa7d1ac554 | ||
|
|
48ce7a9b78 | ||
|
|
09bf54f9af | ||
|
|
43b9bcdb0b | ||
|
|
a3017b8456 | ||
|
|
aac915b285 | ||
|
|
7208f045c1 | ||
|
|
f7a3c42da1 | ||
|
|
4d1c53eb1e | ||
|
|
7bcc9b19ac | ||
|
|
7cfc729679 | ||
|
|
1f8480f0af | ||
|
|
ec3b68ad28 | ||
|
|
3674e27e0f | ||
|
|
e4486420ce | ||
|
|
fe64cc697b | ||
|
|
97177dffd6 | ||
|
|
061a02dddc | ||
|
|
1f72c3e720 | ||
|
|
8270469652 | ||
|
|
5e6590a0f7 | ||
|
|
06dfd13927 | ||
|
|
486cc92f2e | ||
|
|
e8d649b152 | ||
|
|
e96bd14d21 | ||
|
|
e4a2d2a290 | ||
|
|
d8d5d0fa61 | ||
|
|
e010a03dd5 | ||
|
|
427aea73e7 | ||
|
|
c4436b7a1e | ||
|
|
d098051047 | ||
|
|
034a7c424d | ||
|
|
b113436055 | ||
|
|
e550d974da | ||
|
|
bc34ef4b66 | ||
|
|
a5cc1e804b | ||
|
|
aac51979cc | ||
|
|
8f8638fb7c | ||
|
|
d1c74070ab | ||
|
|
ee01d09af5 | ||
|
|
caaf4e3e40 | ||
|
|
34037e58e5 | ||
|
|
66152b42ae | ||
|
|
76c8737485 | ||
|
|
4a1eb55127 | ||
|
|
c87637c6f4 | ||
|
|
364b81a1b9 | ||
|
|
d4c8cf66ef | ||
|
|
08762bc066 | ||
|
|
0add11a257 | ||
|
|
ca5e60b38b | ||
|
|
0e7876536d | ||
|
|
be61a03a98 | ||
|
|
50c707ba51 | ||
|
|
2a2fd7a8b1 | ||
|
|
ad126c838e | ||
|
|
cafc18a78f | ||
|
|
ffca12a8b0 | ||
|
|
137f57ad9c | ||
|
|
153b3322a6 | ||
|
|
575535bdbd | ||
|
|
61a3802494 | ||
|
|
0157f665a3 | ||
|
|
d366605d91 | ||
|
|
fd5bcad5d6 | ||
|
|
7adb80b35b | ||
|
|
dc88e7a2c2 | ||
|
|
dd68a7151f | ||
|
|
bf2497ea3e | ||
|
|
202c889246 | ||
|
|
ec0e93bd6f | ||
|
|
def9bef988 | ||
|
|
c3db9032f3 | ||
|
|
016dc17d94 | ||
|
|
8e1672568a | ||
|
|
42b8ac1235 | ||
|
|
2348f9d785 | ||
|
|
04f86ef130 | ||
|
|
f436086aae | ||
|
|
1b813d371d | ||
|
|
8f49d96c3a | ||
|
|
49f5b8d150 | ||
|
|
f0bbb063dd | ||
|
|
d95a9469ac | ||
|
|
6e088d17fd | ||
|
|
42aeafc907 | ||
|
|
3073b6559c | ||
|
|
af57da8e6b | ||
|
|
56e9abfc92 | ||
|
|
61b4c6d3ac | ||
|
|
7e6b43236a | ||
|
|
6a33ac05a3 | ||
|
|
5f1246280c | ||
|
|
ecef0c78d2 | ||
|
|
0ce42e6185 | ||
|
|
3709d9d5c8 | ||
|
|
e65f916ba5 | ||
|
|
f9c8ce1ac7 | ||
|
|
b881e5c69c | ||
|
|
51a89c80aa | ||
|
|
97a5f408d2 | ||
|
|
2f00d7d145 | ||
|
|
d743838716 | ||
|
|
069b4854f8 | ||
|
|
f089c45115 | ||
|
|
90fe015d68 | ||
|
|
96c86fd4b2 | ||
|
|
d921c36cd4 | ||
|
|
4a552069cf | ||
|
|
74c171b6d1 | ||
|
|
1ae1313edd | ||
|
|
5949d01821 | ||
|
|
3cdb0ae4c8 | ||
|
|
89b6ccf47d | ||
|
|
047ce2949a | ||
|
|
53bdfee057 | ||
|
|
2da55993e0 | ||
|
|
a258eda035 | ||
|
|
7c125cf9d6 | ||
|
|
2af76230f7 | ||
|
|
bdb530f831 | ||
|
|
7a7c09493c | ||
|
|
f3d588eca5 | ||
|
|
031c0b7b21 | ||
|
|
ce017ecd40 | ||
|
|
85e58faa78 | ||
|
|
808ed11e91 | ||
|
|
f8f52c4587 | ||
|
|
54e6e2f66e | ||
|
|
fe1e09f06b | ||
|
|
cd646c0e42 | ||
|
|
f180510fbb | ||
|
|
687e74de9b | ||
|
|
65f91dd051 | ||
|
|
a8a4616cab | ||
|
|
aaac86fd9d | ||
|
|
35ddf9235f | ||
|
|
554189908d | ||
|
|
54dbbd154c | ||
|
|
a9224015e0 | ||
|
|
1cba50266e | ||
|
|
341456cc25 | ||
|
|
ae7852d9b9 | ||
|
|
4ce523f33b | ||
|
|
6b4a8325ae | ||
|
|
6d3044bddd | ||
|
|
0678f61ce9 | ||
|
|
ebede9b910 | ||
|
|
b12791d3e0 | ||
|
|
ce0b0fa0c8 | ||
|
|
dce09586cd | ||
|
|
4f1186a610 | ||
|
|
1cb52a602a | ||
|
|
c482083d82 | ||
|
|
d9dda88164 | ||
|
|
c9fe948b90 | ||
|
|
cc731fe3c4 | ||
|
|
40b7262c19 | ||
|
|
9da61ad562 | ||
|
|
3b731282e3 | ||
|
|
cfc14ade2a | ||
|
|
d4306e61c2 | ||
|
|
3afa6e2350 | ||
|
|
8bbb0448dc | ||
|
|
dcbcbf40a0 | ||
|
|
9a0a5ca804 | ||
|
|
20b2866631 | ||
|
|
92eec664b1 | ||
|
|
723fe84383 | ||
|
|
3ca9347361 | ||
|
|
704d36a7eb | ||
|
|
612df99c34 | ||
|
|
912e850db4 | ||
|
|
96735dd543 | ||
|
|
65cbfbdb40 | ||
|
|
7865fd4f02 | ||
|
|
801f001098 | ||
|
|
7e92257c3c | ||
|
|
7d4777a8bf | ||
|
|
e7428afb3e | ||
|
|
51b7c90dae | ||
|
|
c9f84ccae5 | ||
|
|
01fd54dd6f | ||
|
|
e1446ce38a | ||
|
|
1920e9f758 | ||
|
|
550f91aa68 | ||
|
|
57921e3f52 | ||
|
|
b300a4decb | ||
|
|
51e902cd36 | ||
|
|
ea359c0037 | ||
|
|
f9f8785aef | ||
|
|
0abeaa4dc2 | ||
|
|
18f35ac213 | ||
|
|
9ca077b3dc | ||
|
|
351dd3728e | ||
|
|
054901cb79 | ||
|
|
4f29f7c3a7 | ||
|
|
f149f090a6 | ||
|
|
d113364f82 | ||
|
|
d499cce371 | ||
|
|
5d7dbd701f | ||
|
|
8345134d2a | ||
|
|
55f9cba0f9 | ||
|
|
94afcfb6f9 | ||
|
|
682faa4f9d | ||
|
|
3cffd1e3ed | ||
|
|
0730f73f73 | ||
|
|
dffe20b76c | ||
|
|
e7161fcca6 | ||
|
|
3bf873b99f | ||
|
|
f49bae6622 | ||
|
|
095233e6cf | ||
|
|
490d42fce1 | ||
|
|
11d2db08fa | ||
|
|
13baa43081 | ||
|
|
fad76ad534 | ||
|
|
1c3ddcd120 | ||
|
|
2ccdeec550 | ||
|
|
3164f99b3b | ||
|
|
1bceae12dd | ||
|
|
b2c60135f5 | ||
|
|
0dddf3c50c | ||
|
|
b4badf6e7f | ||
|
|
9c69afeddd | ||
|
|
e8835429fd | ||
|
|
029a84159e | ||
|
|
ba01e3778a | ||
|
|
6cfd4e6422 | ||
|
|
bb372751f7 | ||
|
|
3fdf2c7e32 | ||
|
|
9f4ca63603 | ||
|
|
4bdf772130 | ||
|
|
6110640fc2 | ||
|
|
6c243488fa | ||
|
|
4f218435e3 | ||
|
|
7ca13fd163 | ||
|
|
2306534248 | ||
|
|
2f0248e6d5 | ||
|
|
3a8564de92 | ||
|
|
1aa8b9b804 | ||
|
|
921d5464a1 | ||
|
|
9993b90a20 | ||
|
|
6f054519e7 | ||
|
|
51bf4a4c5c | ||
|
|
046b83582d | ||
|
|
be2e467583 | ||
|
|
b1d137770c | ||
|
|
40c7cab1da | ||
|
|
f39e120952 | ||
|
|
f30f607b0c | ||
|
|
e40e1da292 | ||
|
|
1783ef501d | ||
|
|
b4ec22ecea | ||
|
|
0200fef389 | ||
|
|
d8397f146b | ||
|
|
244be86207 | ||
|
|
c26135780d | ||
|
|
4411a26002 | ||
|
|
21622f575b | ||
|
|
23e6df04d4 | ||
|
|
bf403dfc62 | ||
|
|
c3f48b5a13 | ||
|
|
e192454f54 | ||
|
|
a55573be94 | ||
|
|
0e548f63f9 | ||
|
|
4d1a34661e | ||
|
|
7e5802e799 | ||
|
|
0e8164d805 | ||
|
|
f9b30bdb43 | ||
|
|
34de31195f | ||
|
|
cf05a8d8fa | ||
|
|
a2e3f3d900 | ||
|
|
0890ba0fdd | ||
|
|
d2f082b2e2 | ||
|
|
e67b8c86d6 | ||
|
|
e14922f15c | ||
|
|
ad5669b523 | ||
|
|
f2a6ba80b5 | ||
|
|
b3dac15d57 | ||
|
|
def4ca699a | ||
|
|
f98fa82134 | ||
|
|
ff44671ae5 | ||
|
|
398d66bda9 | ||
|
|
eb9ac1bbe5 | ||
|
|
42fc23cff2 | ||
|
|
78cae3dce7 | ||
|
|
beed86ff37 | ||
|
|
ec7324e12e | ||
|
|
d097b673bb | ||
|
|
7eea957a3b | ||
|
|
4dda6b8a81 | ||
|
|
5fd5a65283 | ||
|
|
ca0513396d | ||
|
|
9f87ab4941 | ||
|
|
e37f5a6eb2 | ||
|
|
ece40cdc54 | ||
|
|
65561b22c5 | ||
|
|
21aa8c5f15 | ||
|
|
f4bafacc62 | ||
|
|
2cb54293f8 | ||
|
|
5610185050 | ||
|
|
699bd61045 | ||
|
|
27d0b934a1 | ||
|
|
0f1b704385 | ||
|
|
7d0c1d2594 | ||
|
|
43cff9e1a3 | ||
|
|
f5ddf869e4 | ||
|
|
185db4c112 | ||
|
|
07e3815b74 | ||
|
|
187ddfd80c | ||
|
|
d3f7923bc6 | ||
|
|
e52db94c1a | ||
|
|
e50959c1fe | ||
|
|
bab75625cb | ||
|
|
f0b039ad10 | ||
|
|
5c8dc7ab07 | ||
|
|
de2b5390cb | ||
|
|
d89ceb2125 | ||
|
|
c43d58d3c9 | ||
|
|
c6efddee87 | ||
|
|
f6377e6125 | ||
|
|
357c47910a | ||
|
|
4ae48f4284 | ||
|
|
a48a306fe8 | ||
|
|
a3c1928fc0 | ||
|
|
34d3b85227 | ||
|
|
06a91d8564 | ||
|
|
e1f0367631 | ||
|
|
dbcd4f635e | ||
|
|
a3142aad69 | ||
|
|
980749536b | ||
|
|
5dbddfb6a1 | ||
|
|
c4d2be7a0d | ||
|
|
ef51f543a3 | ||
|
|
4eda2aa36d | ||
|
|
a35892da4f | ||
|
|
23b567e11b | ||
|
|
abdbf2cb8a | ||
|
|
ca97ac11e1 | ||
|
|
8f0a7f56e2 | ||
|
|
0a61971d29 | ||
|
|
7b335fb62e | ||
|
|
a6f21c2b91 | ||
|
|
e74378a8ac | ||
|
|
ec67ee946a | ||
|
|
c5e8a52205 | ||
|
|
78dd0e6ddc | ||
|
|
cfea52f570 | ||
|
|
2d88982729 | ||
|
|
148a3c4cf7 | ||
|
|
533b55bb68 | ||
|
|
5b85fe9293 | ||
|
|
1ac126fb7a | ||
|
|
b5e3323a93 | ||
|
|
8f6d148481 | ||
|
|
671a892b52 | ||
|
|
5c25c5563a | ||
|
|
8b05eeaa59 | ||
|
|
1b001cf1e8 | ||
|
|
855bad2f40 | ||
|
|
b6d9407246 | ||
|
|
957687ed39 | ||
|
|
db86cfa7d9 | ||
|
|
afa95172b6 | ||
|
|
2e0843c226 | ||
|
|
b312901705 | ||
|
|
16028b51c7 | ||
|
|
c8091c61c0 | ||
|
|
5d9018aeec | ||
|
|
cf686c445c | ||
|
|
0478e4217b | ||
|
|
f11d1a6fa1 | ||
|
|
9dc6668e8a | ||
|
|
527aea9264 | ||
|
|
056f321ee6 | ||
|
|
e679556975 | ||
|
|
e9f4ac7425 | ||
|
|
c6502fb03b | ||
|
|
83b7163844 | ||
|
|
c33533082c | ||
|
|
5dd392127f | ||
|
|
9c150eec4e | ||
|
|
c25a3cf1c1 | ||
|
|
b9ad9ba674 | ||
|
|
92ac7d7c24 | ||
|
|
8e27318eda | ||
|
|
976d16b0db | ||
|
|
1cee9828b0 | ||
|
|
2c7f00bac1 | ||
|
|
484b24d097 | ||
|
|
e93cc85e9b | ||
|
|
615381f8e7 | ||
|
|
b01f7e1d54 | ||
|
|
f29e1e2ee0 | ||
|
|
ec4be237b5 | ||
|
|
6249c90bc9 | ||
|
|
69efac3634 | ||
|
|
77b68ec12e | ||
|
|
c818dbb5a0 | ||
|
|
9753578903 | ||
|
|
5abedab095 | ||
|
|
31576f8f55 | ||
|
|
31a2b2ca3c | ||
|
|
27cc737fe1 | ||
|
|
064700be36 | ||
|
|
343277e387 | ||
|
|
363b878a24 | ||
|
|
69c7d31e69 | ||
|
|
e5bd0e6dc7 | ||
|
|
3b41ba9dd9 | ||
|
|
17b4c98db1 | ||
|
|
04d55f60ea | ||
|
|
86f430f61b | ||
|
|
c6511ed829 | ||
|
|
047760ad4b | ||
|
|
b7c4b66b61 | ||
|
|
67bb5ffa73 | ||
|
|
a671576578 | ||
|
|
1ee4b964e2 | ||
|
|
cb7d05bd53 | ||
|
|
16f3338b3d | ||
|
|
0a567a3ef9 | ||
|
|
660e0f3d8b | ||
|
|
ee766ec88e | ||
|
|
63096a5c26 | ||
|
|
b5b714861d | ||
|
|
5c2d416a34 | ||
|
|
0515375cfa | ||
|
|
6d20ccccd0 | ||
|
|
6dce255393 | ||
|
|
402d4bdee1 | ||
|
|
123fba5b07 | ||
|
|
f506c795d6 | ||
|
|
5fd803d479 | ||
|
|
1241664d8d | ||
|
|
3e6efb663b | ||
|
|
cd907ff430 | ||
|
|
724189e4ef | ||
|
|
4bb0da0ce6 | ||
|
|
666e587114 | ||
|
|
3e9e5acdab | ||
|
|
40d10ea741 | ||
|
|
231aaedec8 | ||
|
|
d86a4b15c1 | ||
|
|
03abeacea4 | ||
|
|
99169398b7 | ||
|
|
24600355c8 | ||
|
|
db2a21cea1 | ||
|
|
95967151ae | ||
|
|
f2137e4cdd | ||
|
|
bba6bb6255 | ||
|
|
7d7bc9782b | ||
|
|
5667694652 | ||
|
|
4cb0b9174b | ||
|
|
7493031d11 | ||
|
|
e64d2dcada | ||
|
|
f057bd1e89 | ||
|
|
1e7e719dbf | ||
|
|
5b6e9747b7 | ||
|
|
803c12877c | ||
|
|
db5be3c28a | ||
|
|
434a033411 | ||
|
|
fd2ee3e109 | ||
|
|
0816591cf9 | ||
|
|
836d02d0b9 | ||
|
|
b951d506d9 | ||
|
|
ec5627a44c | ||
|
|
333a13269c | ||
|
|
e0a70bd352 | ||
|
|
fe913ec10f | ||
|
|
50899b845d | ||
|
|
3e6396cc4b | ||
|
|
a8d9b269ff | ||
|
|
df7dc21893 | ||
|
|
750c74eea7 | ||
|
|
2f7da8b577 | ||
|
|
5e52138861 | ||
|
|
e2dba9e9b8 | ||
|
|
c79fcf7ad5 | ||
|
|
c6abc43ca5 | ||
|
|
2c1913af23 | ||
|
|
ed3d15501a | ||
|
|
fef85cf259 | ||
|
|
00be016979 | ||
|
|
9290aa2b61 | ||
|
|
977491ef8d | ||
|
|
86fcbf9c5e | ||
|
|
e081e4c9c6 | ||
|
|
357e738983 | ||
|
|
7242a98adb | ||
|
|
6974892a11 | ||
|
|
ee0cb8793f | ||
|
|
0cfd3c7e02 | ||
|
|
23693bd57e | ||
|
|
d742211797 | ||
|
|
9191663a1a | ||
|
|
b3dd2a4282 | ||
|
|
f51596eb61 | ||
|
|
c1d252afe0 | ||
|
|
c3f03e4497 | ||
|
|
9e67de8a9f | ||
|
|
6f09b14f44 | ||
|
|
d78b33ca75 | ||
|
|
fa9cf2b345 | ||
|
|
b2c833b879 | ||
|
|
96516d6dd5 | ||
|
|
7071cd7381 | ||
|
|
0a7b8840a4 | ||
|
|
f272cff7f6 | ||
|
|
6ede0f6166 | ||
|
|
c44ff8a70f | ||
|
|
d2eb507e7d | ||
|
|
fa04e3de75 | ||
|
|
63184d53c1 | ||
|
|
1dfff7ac0e | ||
|
|
6c84544521 | ||
|
|
91651ca6ce | ||
|
|
6fd790570a | ||
|
|
b322a964ca | ||
|
|
20b35cbe13 | ||
|
|
d169641c99 | ||
|
|
856591d253 | ||
|
|
4587f5a73d | ||
|
|
10057217cb | ||
|
|
0c66e1b5b9 | ||
|
|
4800460e07 | ||
|
|
67ee649d99 | ||
|
|
57b780a0d7 | ||
|
|
19d9dd6954 | ||
|
|
e298351caa | ||
|
|
752a12bda4 | ||
|
|
afeb3b53c9 | ||
|
|
8ce658416b | ||
|
|
6e846ac3e5 | ||
|
|
ec298185a3 | ||
|
|
58df72984f | ||
|
|
5bfddcc444 | ||
|
|
a99b31a61d | ||
|
|
8a8b7bd48c | ||
|
|
1d04c7e1fe | ||
|
|
9f1c37ecb3 | ||
|
|
8e8651a0e1 | ||
|
|
a8e9f21035 | ||
|
|
997cdfffb4 | ||
|
|
5a9c57ec0f | ||
|
|
418ac501aa | ||
|
|
12b58a17e1 | ||
|
|
7ca9df9357 | ||
|
|
f912f8582d | ||
|
|
a211b6d55d | ||
|
|
c84c154603 | ||
|
|
f903090e0f | ||
|
|
901df242b7 | ||
|
|
9dbb3767e2 | ||
|
|
5565d36ef2 | ||
|
|
48f8c3f85a | ||
|
|
a3eef7298e | ||
|
|
7d3578b31a | ||
|
|
2914d4975b | ||
|
|
2a0fcd99e4 | ||
|
|
d7e0e4afc5 | ||
|
|
de78bb5ffe | ||
|
|
9ecee6b163 | ||
|
|
e25e8af135 | ||
|
|
4ab2fed8d2 | ||
|
|
3e8fea6533 | ||
|
|
a57b90809b | ||
|
|
b097b8bb34 | ||
|
|
349aeb5a26 | ||
|
|
e8aebb00ee | ||
|
|
6ece2838bd | ||
|
|
bcd3aa7d61 | ||
|
|
aca80726d7 | ||
|
|
2fc5745c58 | ||
|
|
ba2f2cb284 | ||
|
|
ac2a4b54e7 | ||
|
|
9326e91832 | ||
|
|
06aa4a5c07 | ||
|
|
80c7c9a86e | ||
|
|
0fdddfe548 | ||
|
|
42d66fd3d9 | ||
|
|
ae8dde981b | ||
|
|
228b832bed | ||
|
|
8035572fac | ||
|
|
7fcccb4ab2 | ||
|
|
b80bad0a93 | ||
|
|
f87c503d5e | ||
|
|
568c0318be | ||
|
|
5903b33016 | ||
|
|
47bad33949 | ||
|
|
fb79b133e9 | ||
|
|
ad1763a8f2 | ||
|
|
97e26686f4 | ||
|
|
f476002691 | ||
|
|
a4992963b3 | ||
|
|
44ff608868 | ||
|
|
f2ea725edb | ||
|
|
40a87fa736 | ||
|
|
a5627f97ff | ||
|
|
8b1698b17d | ||
|
|
f8da3c2e48 | ||
|
|
03f9264394 | ||
|
|
33da5bcee1 | ||
|
|
01541a3dc1 | ||
|
|
13ec3f6c0d | ||
|
|
a949c2aaec | ||
|
|
f4324d1de6 | ||
|
|
f1d2808594 | ||
|
|
52d0605066 | ||
|
|
015b976c28 | ||
|
|
b777c8de15 | ||
|
|
93201b2ded | ||
|
|
234d39cf96 | ||
|
|
9913bf654b | ||
|
|
2d560861df | ||
|
|
24786c643b | ||
|
|
3b4e48e32f | ||
|
|
45b81a9db9 | ||
|
|
500dea182f | ||
|
|
274e9f3e42 | ||
|
|
cf589f713d | ||
|
|
07d881cd5e | ||
|
|
0d0f793f81 | ||
|
|
23dfe1e8a9 | ||
|
|
a8e49a0d2d | ||
|
|
594847ba04 | ||
|
|
f3fcfb635b | ||
|
|
011220180c | ||
|
|
3e9215b27d | ||
|
|
6ce2dfeaec | ||
|
|
9176237361 | ||
|
|
9b65abe76a | ||
|
|
d6085fcdb9 | ||
|
|
259d2a9b5c | ||
|
|
f62736c749 | ||
|
|
7ef1b28c83 | ||
|
|
7df9dea72a | ||
|
|
2a061fba07 | ||
|
|
93aa575697 | ||
|
|
8a20a71906 | ||
|
|
37076d3d1f | ||
|
|
acf11bdc6c | ||
|
|
d222196fd1 | ||
|
|
6f43082e38 | ||
|
|
964bc4dc12 | ||
|
|
ecf7870b3e | ||
|
|
30fcab1c63 | ||
|
|
edde501d54 | ||
|
|
35c0e2cea2 | ||
|
|
5cf061cb32 | ||
|
|
5b6dfb01a6 | ||
|
|
a0b589979d | ||
|
|
0d0cdd0542 | ||
|
|
297fa7a069 | ||
|
|
2ed515091f | ||
|
|
b093f9fd41 | ||
|
|
fde6396f48 | ||
|
|
11250290a2 | ||
|
|
be33c41a40 | ||
|
|
e20528ab0d | ||
|
|
a40d89ba0d | ||
|
|
c0c7c96f28 | ||
|
|
003e5575b9 | ||
|
|
d904574ea8 | ||
|
|
cbb884edae | ||
|
|
0a7829fcfe | ||
|
|
7c970d6ff0 | ||
|
|
048b39ae16 | ||
|
|
bb9d5e38fa | ||
|
|
bb365ca1b5 | ||
|
|
53b97b3ffa | ||
|
|
9c101eb8af | ||
|
|
c251270633 | ||
|
|
dfb1095908 | ||
|
|
cf2b415cd3 | ||
|
|
e9f3ad63c6 | ||
|
|
6a9bd22904 | ||
|
|
ebbf3bfa77 | ||
|
|
661aaead35 | ||
|
|
197671960d | ||
|
|
e434ac9a1f | ||
|
|
388ec2cd97 | ||
|
|
1d7589abb9 | ||
|
|
da47ba11f8 | ||
|
|
eaa572aafe | ||
|
|
d4ac9f8114 | ||
|
|
4bc2f4d26d | ||
|
|
7dd174642c | ||
|
|
89f3de169c | ||
|
|
bc04bb28fe | ||
|
|
9df8d319c3 | ||
|
|
3f55200737 | ||
|
|
204b029973 | ||
|
|
3fbe3a3078 | ||
|
|
8848203d90 | ||
|
|
8edd89c665 | ||
|
|
c78d623e93 | ||
|
|
b093fc8a55 | ||
|
|
7e01b2b3fb | ||
|
|
26eaaa8c79 | ||
|
|
8cd0e3bb05 | ||
|
|
e0f74690b0 | ||
|
|
8db7d73dc0 | ||
|
|
48ef5d74e8 | ||
|
|
18117af067 | ||
|
|
b418642359 | ||
|
|
6a2f62a084 | ||
|
|
1ec262becf | ||
|
|
6cd5ffe637 | ||
|
|
20b43d8ad1 | ||
|
|
f16143de7c | ||
|
|
daba43dcba | ||
|
|
7c74107f36 | ||
|
|
2e0bfaeb74 | ||
|
|
d31e03d04e | ||
|
|
8da5f26452 | ||
|
|
d6e22d5f5e | ||
|
|
c52f4d6307 | ||
|
|
77f1a8ecac | ||
|
|
a4348f1963 | ||
|
|
fe0434cb16 | ||
|
|
a6f992ce5b | ||
|
|
04fc5e51fc | ||
|
|
d430019b44 | ||
|
|
72493b7a8b | ||
|
|
0a828ee67f | ||
|
|
385454f3f1 | ||
|
|
f0ff4d087f | ||
|
|
89081ea169 | ||
|
|
e3d753da76 | ||
|
|
1e89aa7d92 | ||
|
|
f979d941b6 | ||
|
|
b1dffc9eec | ||
|
|
5424092189 | ||
|
|
bfa8f75d3b | ||
|
|
75d9e7bc59 | ||
|
|
c5a7eeaa0f | ||
|
|
4947c75ff7 | ||
|
|
d07a7f505b | ||
|
|
7ab5dac5c7 | ||
|
|
4fc082b526 | ||
|
|
2a0bc3b2e8 | ||
|
|
a7d79baf00 | ||
|
|
c9442653e9 | ||
|
|
969faf91fe | ||
|
|
8fe218676a | ||
|
|
f6b518ed49 | ||
|
|
c53c679c6b | ||
|
|
2d91daf858 | ||
|
|
a5b7145527 | ||
|
|
ee912c2b29 | ||
|
|
bdf9b33b10 | ||
|
|
167368d508 | ||
|
|
bb534225b3 | ||
|
|
ab69dacc6d | ||
|
|
8c2690e01f | ||
|
|
57db10a4c0 | ||
|
|
fc5c07027c | ||
|
|
5da8c26cb6 | ||
|
|
626fdfe345 | ||
|
|
c071503f19 | ||
|
|
873f7a591b | ||
|
|
e0f5f10215 | ||
|
|
11a949b78e | ||
|
|
81007f841a | ||
|
|
84f592c417 | ||
|
|
1e3b61a188 | ||
|
|
baeeedcc16 | ||
|
|
70763fd13b | ||
|
|
21c91a8408 | ||
|
|
07af7123c9 | ||
|
|
3fbb5f08b8 | ||
|
|
973f5b2591 | ||
|
|
64b5880444 | ||
|
|
81132bf0ed | ||
|
|
a9c23f205b | ||
|
|
801d1e9eda | ||
|
|
15977695cd | ||
|
|
e0d578920a | ||
|
|
b6c75c8d62 | ||
|
|
e4cb1dcbfd | ||
|
|
ceb8430f9b | ||
|
|
2565b47637 | ||
|
|
73eb98c4c3 | ||
|
|
8c7e8b7a6c | ||
|
|
894616bef9 | ||
|
|
1cfd6b67b3 | ||
|
|
5e4d8a1034 | ||
|
|
00785daac9 | ||
|
|
12bfc9570a | ||
|
|
f6b5c704e8 | ||
|
|
6fe62060c6 | ||
|
|
51fe2e8a9b | ||
|
|
a18179e6db | ||
|
|
89e1da4780 | ||
|
|
cb9a7f4cd1 | ||
|
|
dcad2e9a17 | ||
|
|
75eb6b1b6a | ||
|
|
47be3df96a | ||
|
|
b077918832 | ||
|
|
73a66b8206 | ||
|
|
89179ff5d1 | ||
|
|
12a4882efe | ||
|
|
4017628630 | ||
|
|
d596b58895 | ||
|
|
398f4bf56d | ||
|
|
e2b4fd4b20 | ||
|
|
e0c732ad47 | ||
|
|
3a0e665c13 | ||
|
|
1076d67137 | ||
|
|
b023892c57 | ||
|
|
5f5c8a2df0 | ||
|
|
0c4bab2966 | ||
|
|
054950ef16 | ||
|
|
e08496d84c | ||
|
|
ef07012359 | ||
|
|
952fe4923c | ||
|
|
fb94892ca6 | ||
|
|
b81b3bb118 | ||
|
|
5496f790bf | ||
|
|
a6ab0a5742 | ||
|
|
ef053a813d | ||
|
|
550e7beb61 | ||
|
|
e8930e7ded | ||
|
|
22ad977349 | ||
|
|
c223c2be5c | ||
|
|
e3585a7d66 | ||
|
|
905e0c20d9 | ||
|
|
981c3e0ce4 | ||
|
|
de2db39161 | ||
|
|
ef25bfee14 | ||
|
|
4cfd18e25f | ||
|
|
e0f3656629 | ||
|
|
2ddad07fc7 | ||
|
|
1dcb6cd390 | ||
|
|
1a3d37d8a5 | ||
|
|
5cd8ac1fac | ||
|
|
7889e35340 | ||
|
|
dcffde3e98 | ||
|
|
d38b9be891 | ||
|
|
42846cce50 | ||
|
|
2134dbb2fd | ||
|
|
ccec3810df | ||
|
|
12af9b0b66 | ||
|
|
97b9edf7c3 | ||
|
|
c63d556cf8 | ||
|
|
b4e8cffd0a | ||
|
|
4ba3ff6769 | ||
|
|
c56ac30d39 | ||
|
|
7072979cfc | ||
|
|
727f6c0e28 | ||
|
|
1c7c109960 | ||
|
|
391149dbd8 | ||
|
|
7bb988c48b | ||
|
|
1927ed47ff | ||
|
|
73027d5cec | ||
|
|
c52a8fc442 | ||
|
|
acab3a5ee1 | ||
|
|
0bd8aabd7c | ||
|
|
99de658093 | ||
|
|
a4d06742c3 | ||
|
|
3ebae8f331 | ||
|
|
7fed3b408e | ||
|
|
95712ea357 | ||
|
|
d5178f61f1 | ||
|
|
941a7f9ff5 | ||
|
|
0ccc216a2c | ||
|
|
f0dc7f89e4 | ||
|
|
332ceb0da6 | ||
|
|
189758cca4 | ||
|
|
2fa4df2830 | ||
|
|
a8ff7a65f4 | ||
|
|
5d68359eb6 | ||
|
|
4032824c79 | ||
|
|
0ebf162673 | ||
|
|
166acad749 | ||
|
|
15bfc12cbe | ||
|
|
3ac23c21d9 | ||
|
|
8b44401b1b | ||
|
|
5624453c87 | ||
|
|
87c7f73245 | ||
|
|
110e4ee586 | ||
|
|
6a7a5b9249 | ||
|
|
8832aa61fe | ||
|
|
e16e501b93 | ||
|
|
8536c975bf | ||
|
|
3d500800f1 | ||
|
|
b9b991c5fe | ||
|
|
701e638907 | ||
|
|
52d03f3ce3 | ||
|
|
ebf00eecaa | ||
|
|
262a917952 | ||
|
|
a730225700 | ||
|
|
538d2c2b83 | ||
|
|
736d57f3f2 | ||
|
|
053388a2d3 | ||
|
|
e17ec3e299 | ||
|
|
869a64e457 | ||
|
|
9d56595d48 | ||
|
|
ea11f8bff1 | ||
|
|
fd5b3083dd | ||
|
|
58a787b660 | ||
|
|
dffc53b7b1 | ||
|
|
173899fc76 | ||
|
|
7166ade310 | ||
|
|
7b935823da | ||
|
|
e945bf884e | ||
|
|
d87da684a9 | ||
|
|
15bdaca2f9 | ||
|
|
df8085bee0 | ||
|
|
f04d415b0a | ||
|
|
ab398c64a8 | ||
|
|
a2ce9e6a54 | ||
|
|
dc4edf775d | ||
|
|
e91229f69f | ||
|
|
f136a7fd8d | ||
|
|
413162dfad | ||
|
|
7d1c1e3845 | ||
|
|
620f3e8734 | ||
|
|
d46fda537d | ||
|
|
fc96360e17 | ||
|
|
bc94fc3d6d | ||
|
|
c1e5fe3281 | ||
|
|
69ceab9f44 | ||
|
|
546e766fd9 | ||
|
|
82220638a0 | ||
|
|
432f3446b0 | ||
|
|
19212eb4aa | ||
|
|
176ffa8e7c | ||
|
|
3caa755b28 | ||
|
|
e48ff4c7e9 | ||
|
|
e1e7be07f7 | ||
|
|
23dd96be97 | ||
|
|
2525929e8d | ||
|
|
2deacb8e97 | ||
|
|
3b2b0da3a1 | ||
|
|
ca5a96f53a | ||
|
|
c2227e1a48 | ||
|
|
dff8027be6 | ||
|
|
8f7f1ee0b5 | ||
|
|
c7c077c21c | ||
|
|
d7b1eb74e5 | ||
|
|
8772a5bba0 | ||
|
|
c6ccfa8b6a | ||
|
|
63057c2f60 | ||
|
|
3b9baeb866 | ||
|
|
38c5e65c35 | ||
|
|
fa7570efd8 | ||
|
|
b50c15e278 | ||
|
|
96be32225e | ||
|
|
dab3bc6ce4 | ||
|
|
b0e81bf188 | ||
|
|
acbbfbe419 | ||
|
|
c1478418ae | ||
|
|
37f9655714 | ||
|
|
4f12596e29 | ||
|
|
c714a7a28c | ||
|
|
b935108ed8 | ||
|
|
fb70b9742a | ||
|
|
8d91a42fe7 | ||
|
|
0be8d62f7d | ||
|
|
cac960c6b8 | ||
|
|
8596eb6091 | ||
|
|
7ff87fdac9 | ||
|
|
4c04001637 | ||
|
|
8c6cfebc1c | ||
|
|
ff0ab048df | ||
|
|
9b66b114cc | ||
|
|
957244583c | ||
|
|
a124be71b1 | ||
|
|
345d460643 | ||
|
|
7f0d4fff1b | ||
|
|
1903154d01 | ||
|
|
9558ebcb0b | ||
|
|
d63934637f | ||
|
|
256c529de8 | ||
|
|
a56fe7a8fe | ||
|
|
be4bbed687 | ||
|
|
2d2f0b9281 | ||
|
|
dfd9622ce7 | ||
|
|
71125e7b86 | ||
|
|
4a5bbe1791 | ||
|
|
0ecbbf8ddf | ||
|
|
b73698849d | ||
|
|
e13c939583 | ||
|
|
96a25935ac | ||
|
|
7d5c3144dc | ||
|
|
2cf9a07bb2 | ||
|
|
72718c14d1 | ||
|
|
fbe64b21bc | ||
|
|
d65741177a | ||
|
|
046b4fdae4 | ||
|
|
a179212c60 | ||
|
|
5d99e9c0b8 | ||
|
|
b426e600ce | ||
|
|
66d7c00e84 | ||
|
|
293c23ec52 | ||
|
|
9e701b0fb3 | ||
|
|
95a0cb53d3 | ||
|
|
3c03c84782 | ||
|
|
a3fa318edc | ||
|
|
0187407cff | ||
|
|
1424ff7d22 | ||
|
|
db62447c98 | ||
|
|
b96ae68aee | ||
|
|
7d3f0da75c | ||
|
|
4984f9e041 | ||
|
|
1e27238083 | ||
|
|
1e41cea107 | ||
|
|
da99d3b15e | ||
|
|
a0dafb4093 | ||
|
|
f5485c1265 | ||
|
|
24da004bd6 | ||
|
|
e8f28b71f7 | ||
|
|
fa91653beb | ||
|
|
aa93860466 | ||
|
|
ea26bd0ff2 | ||
|
|
214fc1d8c4 | ||
|
|
09558e6e9a | ||
|
|
cc069d3987 | ||
|
|
db3dc0ffab | ||
|
|
6a6d6b6f85 | ||
|
|
605d74dd0d | ||
|
|
0c62c08abd | ||
|
|
aa6e15e3ac | ||
|
|
537cba4bda | ||
|
|
7e9419f299 | ||
|
|
d59ac53f64 | ||
|
|
92c7fe9bf6 | ||
|
|
3f2cd65159 | ||
|
|
da717b5a91 | ||
|
|
e277f286c0 | ||
|
|
d45e21a786 | ||
|
|
22fc99d521 | ||
|
|
1026ad7011 | ||
|
|
f9491ef193 | ||
|
|
5302ca38da | ||
|
|
2830c70140 | ||
|
|
5e2d8d1c90 | ||
|
|
65797742ef | ||
|
|
1a5a52358e | ||
|
|
5852fc2d68 | ||
|
|
b8d3b01f64 | ||
|
|
165d43b0cd | ||
|
|
d8929db208 | ||
|
|
0ab0be01c2 | ||
|
|
f2e4b922a9 | ||
|
|
a7e5db6e19 | ||
|
|
e8be61e062 | ||
|
|
0cd04af6a4 | ||
|
|
23105211f8 | ||
|
|
618bc4fbc2 | ||
|
|
cbefb716e3 | ||
|
|
d2cecca297 | ||
|
|
8f8856b767 | ||
|
|
00682160b6 | ||
|
|
6ffef61afc | ||
|
|
75c9debb5e | ||
|
|
6521cc81fe | ||
|
|
b634439765 | ||
|
|
1d8d42ad08 | ||
|
|
4e26b8e645 | ||
|
|
6a674a0a40 | ||
|
|
a5a3bc8b7c | ||
|
|
6ff536fca7 | ||
|
|
719ee2e001 | ||
|
|
6c28c55ea7 | ||
|
|
6032e05581 | ||
|
|
0538048f24 | ||
|
|
89307d3f13 | ||
|
|
5dcd3e6f35 | ||
|
|
59ef2b0d4f | ||
|
|
a92e116a21 | ||
|
|
d8805ae4d7 | ||
|
|
942bd02add | ||
|
|
0d6d848325 | ||
|
|
c6494f92fa | ||
|
|
9cb9407e1c | ||
|
|
43ab44d8ba | ||
|
|
c2bc3317c3 | ||
|
|
413c6e12f5 | ||
|
|
65140f6b3f | ||
|
|
2fee6e62aa | ||
|
|
4b91dbfed6 | ||
|
|
e17b35a96a | ||
|
|
44dc30c02c | ||
|
|
038062b3c3 | ||
|
|
5cb44d55ff | ||
|
|
8befe916fb | ||
|
|
d3caa9b97d | ||
|
|
2d99ccfcda | ||
|
|
92be61dc48 | ||
|
|
2fecb4d945 | ||
|
|
462c3d3a6c | ||
|
|
422d78cbcd | ||
|
|
7b0e2513bd | ||
|
|
f8f0454f33 | ||
|
|
d937a3c552 | ||
|
|
dbd2855bfc | ||
|
|
8084d80d64 | ||
|
|
d585121bdb | ||
|
|
9e496175d9 | ||
|
|
e6fcc2b3e3 | ||
|
|
f748969186 | ||
|
|
4750769c63 | ||
|
|
8c5c2b0fe1 | ||
|
|
1b04dbf7f9 | ||
|
|
97e208f081 | ||
|
|
2de974f71d | ||
|
|
bda1aaa5db | ||
|
|
b69010d83b | ||
|
|
2e3bc443ff | ||
|
|
d2e3517c78 | ||
|
|
e930c5a30c | ||
|
|
fb500ace8a | ||
|
|
4f9a2a8083 | ||
|
|
2acaef67b1 | ||
|
|
1ad9e75a86 | ||
|
|
e9c6db4d8c | ||
|
|
d070029856 | ||
|
|
68b65ba5d4 | ||
|
|
c3f840126c | ||
|
|
7404de6776 | ||
|
|
d763fffd7a | ||
|
|
0435509952 | ||
|
|
bba1050e5e | ||
|
|
28f9e6f17b | ||
|
|
b3d147b97a | ||
|
|
3f85391bde | ||
|
|
513c35d0ef | ||
|
|
499a2582e6 | ||
|
|
d6363e908d | ||
|
|
325d0dd075 | ||
|
|
2c90034d39 | ||
|
|
614e9f4b87 | ||
|
|
2452532557 | ||
|
|
6c621f243d | ||
|
|
9cedbea2cf | ||
|
|
2168cce020 | ||
|
|
7858186ecd | ||
|
|
d2e9918e5f | ||
|
|
9a7b498818 | ||
|
|
3ff23b3c45 | ||
|
|
0f7dda9dfc | ||
|
|
eef6eb93f8 | ||
|
|
31f78d1aa9 | ||
|
|
193ee657e6 | ||
|
|
b5a030c78d | ||
|
|
5e447e8938 | ||
|
|
b495a7d834 | ||
|
|
9aa4a79d6e | ||
|
|
cabd0769a8 | ||
|
|
803916c99b | ||
|
|
54433ee555 | ||
|
|
6ee298dc7d | ||
|
|
9bd140ce42 | ||
|
|
f005c72669 | ||
|
|
d56af022c1 | ||
|
|
cc8c5aecaf | ||
|
|
8c8f5928f5 | ||
|
|
ab38e17936 | ||
|
|
52fcd18e6a | ||
|
|
9fb980ab2c | ||
|
|
b42939796c | ||
|
|
69ce29841d | ||
|
|
425a83c0da | ||
|
|
a9f4f8e06c | ||
|
|
989ff03e43 | ||
|
|
64b0517bac | ||
|
|
f52fa46326 | ||
|
|
51858c02eb | ||
|
|
4eb38e4cfd | ||
|
|
4a5828c732 | ||
|
|
774ebfe671 | ||
|
|
6e2534aa77 | ||
|
|
ad4e0a2ad5 | ||
|
|
24d1afd40f | ||
|
|
2278325822 | ||
|
|
49c13f19ff | ||
|
|
dbd63ff797 | ||
|
|
a59a5a2402 | ||
|
|
26ebbf82ee | ||
|
|
76130bc485 | ||
|
|
f79577c816 | ||
|
|
ecca3588bc | ||
|
|
34209db57b | ||
|
|
ec37fc897b | ||
|
|
5666d5f298 | ||
|
|
6ac0c00e30 | ||
|
|
990cab53a9 | ||
|
|
18766466c6 | ||
|
|
73e1957c62 | ||
|
|
e0a31feaec | ||
|
|
c62061090a | ||
|
|
0f689c2ea1 | ||
|
|
ef290796e0 | ||
|
|
c8fef693fa | ||
|
|
a9ac654040 | ||
|
|
17be68f5d9 | ||
|
|
5d7815c98a | ||
|
|
7fe5b5af7a | ||
|
|
068b7ce6a9 | ||
|
|
eec89e0442 | ||
|
|
7a58e8261f | ||
|
|
eec0aced7f | ||
|
|
74eb2e4493 | ||
|
|
01ddfea478 | ||
|
|
a694f61003 | ||
|
|
d3a025acd6 | ||
|
|
51d5c90c9f | ||
|
|
e4d25ed9cd | ||
|
|
1a60b6e412 | ||
|
|
dd6495abf6 | ||
|
|
35865ba70e | ||
|
|
cee267193f | ||
|
|
30149df88e | ||
|
|
841aea9d97 | ||
|
|
d68323d7bb | ||
|
|
a583daf712 | ||
|
|
cf1912523b | ||
|
|
eecd56d6e0 | ||
|
|
1cd1423780 | ||
|
|
68812b0f04 | ||
|
|
c9d29c16e2 | ||
|
|
185233c971 | ||
|
|
ca42976c62 | ||
|
|
9ff2b35ae0 | ||
|
|
ecb12ae2a8 | ||
|
|
b43e695da2 | ||
|
|
57b731842b | ||
|
|
a8ef091cd6 | ||
|
|
315923d1d3 | ||
|
|
632a564158 | ||
|
|
8365fcc2f9 | ||
|
|
2417741283 | ||
|
|
e0033965bc | ||
|
|
ae73583d53 | ||
|
|
b87764ed94 | ||
|
|
7e9e9cc98c | ||
|
|
658ed3d790 | ||
|
|
ed65e6df3b | ||
|
|
16906ee242 | ||
|
|
a611ff3abd | ||
|
|
8258fb059c | ||
|
|
122274bf52 | ||
|
|
c5d41c5a21 | ||
|
|
a2b6bc5213 | ||
|
|
cb5e88c2f1 | ||
|
|
8bc3bdd300 | ||
|
|
b3fa6378bd | ||
|
|
e406fda9cd | ||
|
|
30a755221b | ||
|
|
40efbc5b84 | ||
|
|
dc1a6ba8b5 | ||
|
|
709ebe524d | ||
|
|
fb94aaaa6f | ||
|
|
bae1e80ac0 | ||
|
|
4536930e17 | ||
|
|
189325508e | ||
|
|
c81e933dc3 | ||
|
|
85481b2310 | ||
|
|
b04f198f3e | ||
|
|
a989b5ccde | ||
|
|
4ee0f9b6be | ||
|
|
1d371e0a1e | ||
|
|
3ec7c6d18b | ||
|
|
80912ffaee | ||
|
|
4777fe0d91 | ||
|
|
feddb6d048 | ||
|
|
b148ec0850 | ||
|
|
1a36ed9786 | ||
|
|
1b7ad1fc38 | ||
|
|
71d4113ecf | ||
|
|
ed712fa673 | ||
|
|
fcb2af780d | ||
|
|
a8c8f9a472 | ||
|
|
ab1dd1e549 | ||
|
|
145983fc5d | ||
|
|
9fb45a3ab7 | ||
|
|
b97e5ff5b0 | ||
|
|
0ca04671ed | ||
|
|
6e062b241e | ||
|
|
df77276805 | ||
|
|
a85a694cc1 | ||
|
|
590fa0894b | ||
|
|
4d7f7d0756 | ||
|
|
af0d40e907 | ||
|
|
6f96b5dd14 | ||
|
|
0dc983d04a | ||
|
|
50219cf2d9 | ||
|
|
4ed345101a | ||
|
|
e5a701d04d | ||
|
|
342b83a010 | ||
|
|
eb555f7da6 | ||
|
|
8a0c857a92 | ||
|
|
31d5899011 | ||
|
|
14520e8bd5 | ||
|
|
efb4e464b2 | ||
|
|
6042ca9c56 | ||
|
|
e5c16fd960 | ||
|
|
6eb018489e | ||
|
|
5447a88c34 | ||
|
|
4fbebcfab4 | ||
|
|
35e4cd7c18 | ||
|
|
999430f9e0 | ||
|
|
be535604ab | ||
|
|
0703292fb9 | ||
|
|
c0ca932ccf | ||
|
|
08fa19bc83 | ||
|
|
55fa62d9c0 | ||
|
|
94e5177bb1 | ||
|
|
45f34d871b | ||
|
|
173a2b12aa | ||
|
|
3f0ead3e0a | ||
|
|
6864652b80 | ||
|
|
ca99a30b71 | ||
|
|
b2e489b689 | ||
|
|
cf67307711 | ||
|
|
2d1f5aa6cb | ||
|
|
56375faa65 | ||
|
|
1236c0c272 | ||
|
|
b4a96c9b21 | ||
|
|
05f3982632 | ||
|
|
9face45357 | ||
|
|
824a43f537 | ||
|
|
ae6bb57cf5 | ||
|
|
82dffe0a1d | ||
|
|
22cee7e4b0 | ||
|
|
c65f6aaed3 | ||
|
|
2204d46ce1 | ||
|
|
11a30dd505 | ||
|
|
e0d90def93 | ||
|
|
f310eb0574 | ||
|
|
2bd7dee3c7 | ||
|
|
594e69dd93 | ||
|
|
1fd94f9cf1 | ||
|
|
78d8ee01ac | ||
|
|
c966aad496 | ||
|
|
0ed5a01756 | ||
|
|
22b9ee4919 | ||
|
|
3781dea498 | ||
|
|
60392424dc | ||
|
|
23bd06c2d3 | ||
|
|
1644f06ec8 | ||
|
|
f591fedb77 | ||
|
|
b0cf9836af | ||
|
|
34ee8a0e21 | ||
|
|
d61aac362c | ||
|
|
6aff481e9b | ||
|
|
3ae1b5f1a3 | ||
|
|
cbebf126ce | ||
|
|
3fedc1263c | ||
|
|
f4b2211f8f | ||
|
|
bc5f73daa2 | ||
|
|
ec9094696b | ||
|
|
85cdfbaaf8 | ||
|
|
421409181d | ||
|
|
cc1a4be15a | ||
|
|
ead74558ea | ||
|
|
3c5a19e5a7 | ||
|
|
8598a7d712 | ||
|
|
0955c4c428 | ||
|
|
182729e015 | ||
|
|
a7dd6a6614 | ||
|
|
e5657d028d | ||
|
|
4078cf3aed | ||
|
|
a7339eaf1c | ||
|
|
2877501ff5 | ||
|
|
1b016bd412 | ||
|
|
2512666f49 | ||
|
|
074a819ca8 | ||
|
|
c211434c38 | ||
|
|
7896a7152e | ||
|
|
3a96682b9c | ||
|
|
c4639d11c8 | ||
|
|
10b47b5785 | ||
|
|
5452be9fed | ||
|
|
4562a811fc | ||
|
|
910b90b79c | ||
|
|
a38a156d3b | ||
|
|
d3d44ec806 | ||
|
|
6612b3e01e | ||
|
|
d0428d492b | ||
|
|
ee6ad01209 | ||
|
|
33973354ed | ||
|
|
2af4a1f9f8 | ||
|
|
44a2e0472a | ||
|
|
699d3bca52 | ||
|
|
50d285bc49 | ||
|
|
48500652b3 | ||
|
|
8e050d4223 | ||
|
|
73f567f3e2 | ||
|
|
1033a74970 | ||
|
|
595fe1fd32 | ||
|
|
9095b2df97 | ||
|
|
8e45e7284b | ||
|
|
fe437550fc | ||
|
|
84124c9427 | ||
|
|
3fe38237e6 | ||
|
|
9c8e36ea95 | ||
|
|
8e9890d6e1 | ||
|
|
1abb53ce00 | ||
|
|
fec3101f37 | ||
|
|
a23fce6c2d | ||
|
|
9f970ed953 | ||
|
|
9b892ef128 | ||
|
|
0b2afb8e71 | ||
|
|
cbd7393d36 | ||
|
|
a27b3d8fcb | ||
|
|
9246df4410 | ||
|
|
5ad30c86c5 | ||
|
|
43d2b0b9d7 | ||
|
|
367d620a82 | ||
|
|
1b76160a7d | ||
|
|
d9f8ef6d57 | ||
|
|
58659c4d85 | ||
|
|
911cd09dd8 | ||
|
|
27687fc742 | ||
|
|
3027882847 | ||
|
|
a7fd52237a | ||
|
|
36b389b1fd | ||
|
|
952723706b | ||
|
|
5a720b6d63 | ||
|
|
0ae130de0a | ||
|
|
273eb63efb | ||
|
|
c5c995c916 | ||
|
|
222a6e0682 | ||
|
|
7741f49ed8 | ||
|
|
786d9ddb54 | ||
|
|
03a711d82d | ||
|
|
758a9d7254 | ||
|
|
9bc23129d5 | ||
|
|
343bd52c17 | ||
|
|
f9943b6b82 | ||
|
|
c7e2c2b3c6 | ||
|
|
c10b4553ae | ||
|
|
c8d1b388d8 | ||
|
|
da37b4dee5 | ||
|
|
9f904da7b3 | ||
|
|
7bcbe6f469 | ||
|
|
439cca926d | ||
|
|
5bc20a4b08 | ||
|
|
26d0908b27 | ||
|
|
385e823c17 | ||
|
|
83d9a3269e | ||
|
|
c50178c640 | ||
|
|
96b12e876e | ||
|
|
9a8d7a8c57 | ||
|
|
d4b35b5594 | ||
|
|
0af92a1626 | ||
|
|
c3eb62255f | ||
|
|
5fc873468d | ||
|
|
307c599a0e | ||
|
|
a83639addd | ||
|
|
8920411b3c | ||
|
|
46a7eaea7d | ||
|
|
d2513e9b50 | ||
|
|
f349ddd796 | ||
|
|
c703c9a0d3 | ||
|
|
6a1550fbdf | ||
|
|
9458bfb24f | ||
|
|
7bb75c16da | ||
|
|
69c84df367 | ||
|
|
000ffbb622 | ||
|
|
53d5221aed | ||
|
|
0dc8aa32c6 | ||
|
|
8fa47dac37 | ||
|
|
cebe033b4b | ||
|
|
0a3e9ac8e8 | ||
|
|
a1e415686c | ||
|
|
21daaf3e29 | ||
|
|
5712c6de7b | ||
|
|
e32cbe3004 | ||
|
|
3279edab33 | ||
|
|
13a65db40e | ||
|
|
e550ef9e25 | ||
|
|
429b901e7a | ||
|
|
f656269a50 | ||
|
|
eb7c341046 | ||
|
|
71b6a664f7 | ||
|
|
7de9687911 | ||
|
|
7e3bd2e574 | ||
|
|
764907ce34 | ||
|
|
ae76dc957a | ||
|
|
6ef6d79b48 | ||
|
|
3fcbc7ae56 | ||
|
|
bb9e36d5fa | ||
|
|
8a129d7384 | ||
|
|
71fd8e1b70 | ||
|
|
28594138e0 | ||
|
|
7fc2a0a544 | ||
|
|
48af3b3590 | ||
|
|
8a13c4cc06 | ||
|
|
bfd93627a0 | ||
|
|
d4451ef8a1 | ||
|
|
3f3e23b419 | ||
|
|
728bd656d7 | ||
|
|
1cc3f16d7a | ||
|
|
92439fbdf3 | ||
|
|
0955305076 | ||
|
|
977df99c80 | ||
|
|
fcfbce8a97 | ||
|
|
202af046aa | ||
|
|
bd2633acf4 | ||
|
|
9aeff6be2d | ||
|
|
6988dea353 | ||
|
|
afe12b5636 | ||
|
|
7b79b0c8e0 | ||
|
|
2b9e464798 | ||
|
|
89780140c8 | ||
|
|
907bd62678 | ||
|
|
76d48db219 | ||
|
|
9e3253ee70 | ||
|
|
8949166a17 | ||
|
|
4c564ebe9e | ||
|
|
2a0a2a2269 | ||
|
|
53e3b431d5 | ||
|
|
dd26960852 | ||
|
|
fe2f3b403d | ||
|
|
dabedb379d | ||
|
|
1e53b588fc | ||
|
|
c0e2c86fd8 | ||
|
|
52a78375a4 | ||
|
|
c0e9638109 | ||
|
|
0539b8a74e | ||
|
|
7b09a6d1bf | ||
|
|
ab78295faf | ||
|
|
540c614c88 | ||
|
|
d0ed2d2735 | ||
|
|
fb58204900 | ||
|
|
240939a7ec | ||
|
|
c067b31a57 | ||
|
|
1502346172 | ||
|
|
9537f60b01 | ||
|
|
1a7997cdef | ||
|
|
3a65cd1df3 | ||
|
|
225560dcdf | ||
|
|
d6766de7be | ||
|
|
8906ee8097 | ||
|
|
fc4f6e617f | ||
|
|
8261429afb | ||
|
|
733cbc753c | ||
|
|
1d2327c4c2 | ||
|
|
5f8508ab52 | ||
|
|
cb7b8a4b98 |
4
.ackrc
Normal file
4
.ackrc
Normal file
@@ -0,0 +1,4 @@
|
||||
--ignore-dir=dist
|
||||
--ignore-file=match:/^yarn\.lock$/
|
||||
--ignore-file=match:/^yarn-error\.log$/
|
||||
--ignore-dir=coverage
|
||||
3
.commitlintrc.json
Normal file
3
.commitlintrc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["@commitlint/config-conventional"]
|
||||
}
|
||||
11
.editorconfig
Normal file
11
.editorconfig
Normal file
@@ -0,0 +1,11 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
indent_size = 4
|
||||
5
.eslintignore
Normal file
5
.eslintignore
Normal file
@@ -0,0 +1,5 @@
|
||||
dist/**
|
||||
.github/**
|
||||
docs/Setup.md
|
||||
cypress.config.js
|
||||
cypress/plugins/index.js
|
||||
68
.eslintrc.json
Normal file
68
.eslintrc.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es6": true,
|
||||
"jest/globals": true,
|
||||
"node": true
|
||||
},
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaFeatures": {
|
||||
"experimentalObjectRestSpread": true,
|
||||
"jsx": true
|
||||
},
|
||||
"sourceType": "module"
|
||||
},
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:jsdoc/recommended",
|
||||
"plugin:json/recommended",
|
||||
"plugin:markdown/recommended",
|
||||
"prettier"
|
||||
],
|
||||
"plugins": ["@typescript-eslint", "html", "jest", "jsdoc", "json"],
|
||||
"rules": {
|
||||
"no-console": "error",
|
||||
"no-prototype-builtins": "off",
|
||||
"no-unused-vars": "off",
|
||||
"jsdoc/check-indentation": "off",
|
||||
"jsdoc/check-alignment": "off",
|
||||
"jsdoc/check-line-alignment": "off",
|
||||
"jsdoc/multiline-blocks": "off",
|
||||
"jsdoc/newline-after-description": "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",
|
||||
"@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"],
|
||||
"no-empty": ["error", { "allowEmptyCatch": true }]
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"files": "./**/*.html",
|
||||
"rules": {
|
||||
"no-undef": "off",
|
||||
"jsdoc/require-jsdoc": "off"
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": ["./cypress/**", "./demos/**"],
|
||||
"rules": {
|
||||
"no-console": "off"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* text=auto
|
||||
12
.github/FUNDING.yml
vendored
Normal file
12
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: [knsv]
|
||||
#patreon: # Replace with a single Patreon username
|
||||
#open_collective: # Replace with a single Open Collective username
|
||||
#ko_fi: # Replace with a single Ko-fi username
|
||||
#tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
#community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
#liberapay: # Replace with a single Liberapay username
|
||||
#issuehunt: # Replace with a single IssueHunt username
|
||||
#otechie: # Replace with a single Otechie username
|
||||
#custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
43
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
43
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: 'Status: Triage, Type: Bug / Error'
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Code Sample**
|
||||
If applicable, add the code sample or a link to the [live editor](https://mermaid.live).
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Smartphone (please complete the following information):**
|
||||
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Browser [e.g. stock browser, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
19
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
19
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: 'Status: Triage, Type: Enhancement'
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
16
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
16
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: Question
|
||||
about: Get some help from the community.
|
||||
title: ''
|
||||
labels: 'Help wanted!, Type: Other'
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## Help us help you!
|
||||
|
||||
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.
|
||||
- Include as much, or as little, code as necessary.
|
||||
- Don't be shy to give us some screenshots, if it helps!
|
||||
4
.github/codeql/codeql-config.yml
vendored
Normal file
4
.github/codeql/codeql-config.yml
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
name: 'CodeQL config'
|
||||
paths-ignore:
|
||||
- dist
|
||||
- cypress
|
||||
18
.github/dependabot.yml
vendored
Normal file
18
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
open-pull-requests-limit: 10
|
||||
directory: /
|
||||
target-branch: develop
|
||||
versioning-strategy: increase
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: monday
|
||||
time: '07:00'
|
||||
- package-ecosystem: github-actions
|
||||
directory: /
|
||||
target-branch: develop
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: monday
|
||||
time: '07:00'
|
||||
3
.github/pr-labeler.yml
vendored
Normal file
3
.github/pr-labeler.yml
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
'Type: Bug / Error': 'bug/*'
|
||||
'Type: Enhancement': 'feature/*'
|
||||
'Type: Other': 'other/*'
|
||||
17
.github/pull_request_template.md
vendored
Normal file
17
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
## :bookmark_tabs: Summary
|
||||
|
||||
Brief description about the content of your PR.
|
||||
|
||||
Resolves #<your issue id here>
|
||||
|
||||
## :straight_ruler: Design Decisions
|
||||
|
||||
Describe the way your implementation works or what design decisions you made if applicable.
|
||||
|
||||
### :clipboard: Tasks
|
||||
|
||||
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)
|
||||
- [ ] :bookmark: targeted `develop` branch
|
||||
25
.github/release-drafter.yml
vendored
Normal file
25
.github/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name-template: '$NEXT_PATCH_VERSION'
|
||||
tag-template: '$NEXT_PATCH_VERSION'
|
||||
categories:
|
||||
- title: '🚀 Features'
|
||||
labels:
|
||||
- 'Type: Enhancement'
|
||||
- title: '🐛 Bug Fixes'
|
||||
labels:
|
||||
- 'Type: Bug / Error'
|
||||
- title: '🧰 Maintenance'
|
||||
label: 'Type: Other'
|
||||
change-template: '- $TITLE (#$NUMBER) @$AUTHOR'
|
||||
sort-by: title
|
||||
sort-direction: ascending
|
||||
branches:
|
||||
- develop
|
||||
exclude-labels:
|
||||
- 'Skip changelog'
|
||||
no-changes-template: 'This release contains minor changes and bugfixes.'
|
||||
template: |
|
||||
# Release Notes
|
||||
|
||||
$CHANGES
|
||||
|
||||
🎉 **Thanks to all contributors helping with this release!** 🎉
|
||||
19
.github/stale.yml
vendored
Normal file
19
.github/stale.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 14
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- Retained
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: Inactive
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
If you are still interested in this issue and it is still relevant you can comment to revive it.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: >
|
||||
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.
|
||||
45
.github/workflows/build.yml
vendored
Normal file
45
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
push: {}
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- ready_for_review
|
||||
|
||||
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: Upload Build as Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: dist
|
||||
path: dist
|
||||
35
.github/workflows/check-readme-in-sync.yml
vendored
Normal file
35
.github/workflows/check-readme-in-sync.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# Reference: https://github.com/Yash-Singh1/eslint-plugin-userscripts/blob/main/.github/workflows/readme-in-sync.yml
|
||||
|
||||
name: Check if README and docs/README are in sync
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- gh-pages
|
||||
pull_request:
|
||||
branches:
|
||||
- gh-pages
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Check for difference in README.md and docs/README.md
|
||||
run: |
|
||||
if [ -z "$(diff README.md docs/README.md --brief)" ]
|
||||
then
|
||||
echo "README.md and docs/README.md are in sync"
|
||||
else
|
||||
echo "Make sure that README.md and docs/README.md are in sync"
|
||||
echo
|
||||
echo "Difference:"
|
||||
echo
|
||||
diff README.md docs/README.md -u
|
||||
exit 1
|
||||
fi
|
||||
25
.github/workflows/checks.yml
vendored
Normal file
25
.github/workflows/checks.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
on:
|
||||
push: {}
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- ready_for_review
|
||||
|
||||
name: Static analysis
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
name: check tests
|
||||
if: github.repository_owner == 'mermaid-js'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: testomatio/check-tests@stable
|
||||
with:
|
||||
framework: cypress
|
||||
tests: './cypress/e2e/**/**.spec.js'
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
has-tests-label: true
|
||||
62
.github/workflows/codeql.yml
vendored
Normal file
62
.github/workflows/codeql.yml
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
name: 'CodeQL'
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [develop]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [develop]
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- ready_for_review
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: ['javascript']
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
config-file: ./.github/codeql/codeql-config.yml
|
||||
languages: ${{ matrix.language }}
|
||||
# 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.
|
||||
# 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
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ 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
|
||||
|
||||
# ✏️ 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
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
20
.github/workflows/dependency-review.yml
vendored
Normal file
20
.github/workflows/dependency-review.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# Dependency Review Action
|
||||
#
|
||||
# This Action will scan dependency manifest files that change as part of a Pull Reqest, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging.
|
||||
#
|
||||
# Source repository: https://github.com/actions/dependency-review-action
|
||||
# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
|
||||
name: 'Dependency Review'
|
||||
on: [pull_request]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
dependency-review:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: 'Checkout Repository'
|
||||
uses: actions/checkout@v3
|
||||
- name: 'Dependency Review'
|
||||
uses: actions/dependency-review-action@v2
|
||||
38
.github/workflows/e2e
vendored
Normal file
38
.github/workflows/e2e
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
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
|
||||
14
.github/workflows/issue-triage.yml
vendored
Normal file
14
.github/workflows/issue-triage.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
name: Apply triage label to new issue
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: andymckay/labeler@1.0.4
|
||||
with:
|
||||
repo-token: '${{ secrets.GITHUB_TOKEN }}'
|
||||
add-labels: 'Status: Triage'
|
||||
57
.github/workflows/lint.yml
vendored
Normal file
57
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
name: Lint
|
||||
|
||||
on:
|
||||
push: {}
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- ready_for_review
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
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 Linting
|
||||
run: yarn lint
|
||||
|
||||
- name: Verify Docs
|
||||
run: yarn docs:verify
|
||||
|
||||
- name: Check no `console.log()` in .jison files
|
||||
# ESLint can't parse .jison files directly
|
||||
# In the future, it might be worth making a `eslint-plugin-jison`, so
|
||||
# that this will be built into the `yarn lint` command.
|
||||
run: |
|
||||
shopt -s globstar
|
||||
mkdir -p tmp/
|
||||
for jison_file in src/**/*.jison; do
|
||||
outfile="tmp/$(basename -- "$jison_file" .jison)-jison.js"
|
||||
echo "Converting $jison_file to $outfile"
|
||||
# default module-type (CJS) always adds a console.log()
|
||||
yarn jison "$jison_file" --outfile "$outfile" --module-type "amd"
|
||||
done
|
||||
yarn eslint --no-eslintrc --rule no-console:error --parser "@babel/eslint-parser" "./tmp/*-jison.js"
|
||||
19
.github/workflows/pr-labeler-config-validator.yml
vendored
Normal file
19
.github/workflows/pr-labeler-config-validator.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
name: Validate PR Labeler Configuration
|
||||
on:
|
||||
push: {}
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- ready_for_review
|
||||
|
||||
jobs:
|
||||
pr-labeler:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
- name: Validate Configuration
|
||||
uses: Yash-Singh1/pr-labeler-config-validator@releases/v0.0.3
|
||||
with:
|
||||
configuration-path: .github/pr-labeler.yml
|
||||
13
.github/workflows/pr-labeler.yml
vendored
Normal file
13
.github/workflows/pr-labeler.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
name: Apply labels to PR
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
pr-labeler:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Label PR
|
||||
uses: TimonVS/pr-labeler-action@v3
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
15
.github/workflows/release-draft.yml
vendored
Normal file
15
.github/workflows/release-draft.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
name: Draft Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
|
||||
jobs:
|
||||
draft-release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Draft Release
|
||||
uses: toolmantim/release-drafter@v5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
36
.github/workflows/release-preview-publish.yml
vendored
Normal file
36
.github/workflows/release-preview-publish.yml
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
name: Publish release preview package
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'release/**'
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16.x
|
||||
- name: Install Yarn
|
||||
run: npm i yarn --global
|
||||
|
||||
- name: Install Json
|
||||
run: npm i json --global
|
||||
|
||||
- name: Install Packages
|
||||
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
|
||||
44
.github/workflows/release-publish.yml
vendored
Normal file
44
.github/workflows/release-publish.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: Publish release
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: fregante/setup-git-user@v1
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16.x
|
||||
- name: Install Yarn
|
||||
run: npm i yarn --global
|
||||
|
||||
- name: Install Json
|
||||
run: npm i json --global
|
||||
|
||||
- name: Install Packages
|
||||
run: yarn install --frozen-lockfile
|
||||
|
||||
- name: Prepare release
|
||||
run: |
|
||||
VERSION=${GITHUB_REF:10}
|
||||
echo "Preparing release $VERSION"
|
||||
git checkout -t origin/release/$VERSION
|
||||
npm version --no-git-tag-version --allow-same-version $VERSION
|
||||
git add package.json
|
||||
git commit -m "Bump version $VERSION"
|
||||
git checkout -t origin/master
|
||||
git merge -m "Release $VERSION" --no-ff release/$VERSION
|
||||
git push --no-verify
|
||||
|
||||
- name: Publish
|
||||
run: |
|
||||
npm set //registry.npmjs.org/:_authToken $NPM_TOKEN
|
||||
npm publish
|
||||
env:
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
34
.github/workflows/test.yml
vendored
Normal file
34
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Unit Tests
|
||||
|
||||
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 Unit Tests
|
||||
run: |
|
||||
yarn ci --coverage
|
||||
13
.github/workflows/unlock-reopened-issues.yml
vendored
Normal file
13
.github/workflows/unlock-reopened-issues.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
name: Unlock reopened issue
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [reopened]
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: Dunning-Kruger/unlock-issues@v1
|
||||
with:
|
||||
repo-token: '${{ secrets.GITHUB_TOKEN }}'
|
||||
18
.github/workflows/update-browserlist.yml
vendored
Normal file
18
.github/workflows/update-browserlist.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
name: Update Browserslist
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 7 * * 1'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: npx browserslist@latest --update-db
|
||||
- name: Commit changes
|
||||
uses: EndBug/add-and-commit@v9
|
||||
with:
|
||||
author_name: ${{ github.actor }}
|
||||
author_email: ${{ github.actor }}@users.noreply.github.com
|
||||
message: 'chore: update browsers list'
|
||||
29
.gitignore
vendored
29
.gitignore
vendored
@@ -1 +1,28 @@
|
||||
node_modules/*
|
||||
.DS_Store
|
||||
|
||||
node_modules/
|
||||
coverage/
|
||||
.idea/
|
||||
|
||||
dist
|
||||
|
||||
yarn-error.log
|
||||
.npmrc
|
||||
token
|
||||
|
||||
package-lock.json
|
||||
|
||||
.vscode/
|
||||
cypress/platform/current.html
|
||||
cypress/platform/experimental.html
|
||||
local/
|
||||
|
||||
_site
|
||||
Gemfile.lock
|
||||
/.vs
|
||||
|
||||
cypress/screenshots/
|
||||
cypress/snapshots/
|
||||
|
||||
# eslint --cache file
|
||||
.eslintcache
|
||||
|
||||
4
.husky/commit-msg
Executable file
4
.husky/commit-msg
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
# . "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
# npx --no-install commitlint --edit $1
|
||||
4
.husky/pre-commit
Executable file
4
.husky/pre-commit
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
yarn pre-commit
|
||||
4
.lintstagedrc.json
Normal file
4
.lintstagedrc.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"src/docs/**": ["yarn docs:build --git"],
|
||||
"*.{ts,js,json,html,md}": ["eslint --fix", "prettier --write"]
|
||||
}
|
||||
6
.percy.yml
Normal file
6
.percy.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
snapshot:
|
||||
widths:
|
||||
- 1280
|
||||
discovery:
|
||||
disable-cache: true
|
||||
3
.prettierignore
Normal file
3
.prettierignore
Normal file
@@ -0,0 +1,3 @@
|
||||
dist
|
||||
cypress/platform/xss3.html
|
||||
.cache
|
||||
7
.prettierrc.json
Normal file
7
.prettierrc.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"endOfLine": "auto",
|
||||
"printWidth": 100,
|
||||
"singleQuote": true,
|
||||
"useTabs": false,
|
||||
"tabWidth": 2
|
||||
}
|
||||
15
.tern-project
Normal file
15
.tern-project
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"ecmaVersion": 6,
|
||||
"libs": ["browser"],
|
||||
"loadEagerly": [],
|
||||
"dontLoad": ["node_modules/**"],
|
||||
"plugins": {
|
||||
"modules": {},
|
||||
"es_modules": {},
|
||||
"node": {},
|
||||
"doc_comment": {
|
||||
"fullDocs": true,
|
||||
"strong": true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.10"
|
||||
addons:
|
||||
code_climate:
|
||||
repo_token: e87e6bf1c253e0555437ebd23235fdfe2749b889358e7c6d100e4ea5b4f2e091
|
||||
after_script:
|
||||
- cat coverage/lcov.info | codeclimate
|
||||
25
.webpack/loaders/jison.js
Normal file
25
.webpack/loaders/jison.js
Normal file
@@ -0,0 +1,25 @@
|
||||
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();
|
||||
};
|
||||
45
.webpack/webpack.config.babel.js
Normal file
45
.webpack/webpack.config.babel.js
Normal file
@@ -0,0 +1,45 @@
|
||||
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!');
|
||||
}
|
||||
};
|
||||
58
.webpack/webpack.config.base.js
Normal file
58
.webpack/webpack.config.base.js
Normal file
@@ -0,0 +1,58 @@
|
||||
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',
|
||||
},
|
||||
resolve: {
|
||||
extensions: ['.wasm', '.mjs', '.js', '.ts', '.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: /\.ts$/,
|
||||
use: 'ts-loader',
|
||||
exclude: /node_modules/,
|
||||
},
|
||||
{
|
||||
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',
|
||||
};
|
||||
37
.webpack/webpack.config.e2e.babel.js
Normal file
37
.webpack/webpack.config.e2e.babel.js
Normal file
@@ -0,0 +1,37 @@
|
||||
import baseConfig, { resolveRoot } from './webpack.config.base';
|
||||
import { merge } from 'webpack-merge';
|
||||
|
||||
export default merge(baseConfig, {
|
||||
mode: 'development',
|
||||
entry: {
|
||||
mermaid: './src/mermaid',
|
||||
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',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
906
CHANGELOG.md
Normal file
906
CHANGELOG.md
Normal file
@@ -0,0 +1,906 @@
|
||||
# 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/8.2.0...HEAD)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/8.1.0...8.2.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Create issue templates [\#871](https://github.com/knsv/mermaid/issues/871)
|
||||
- cross site scripting in mermaid [\#869](https://github.com/knsv/mermaid/issues/869)
|
||||
- Make Gantt chart date inclusive [\#868](https://github.com/knsv/mermaid/issues/868)
|
||||
- CHANGELOG missing updates for all versions since 0.4.0 [\#865](https://github.com/knsv/mermaid/issues/865)
|
||||
- please add tag for 8.0.0 release [\#863](https://github.com/knsv/mermaid/issues/863)
|
||||
- classDiagram breaks on any edit [\#858](https://github.com/knsv/mermaid/issues/858)
|
||||
- found 1 high severity vulnerability [\#839](https://github.com/knsv/mermaid/issues/839)
|
||||
- Missing fontawesome icon support [\#830](https://github.com/knsv/mermaid/issues/830)
|
||||
- Docs for integration with wiki.js? [\#829](https://github.com/knsv/mermaid/issues/829)
|
||||
- Is this project still maintained? [\#826](https://github.com/knsv/mermaid/issues/826)
|
||||
- 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)
|
||||
- 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 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- Autonumber support in sequence diagrams [\#782](https://github.com/knsv/mermaid/issues/782)
|
||||
- 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)
|
||||
- Is there any way to convert flowchart.js code to mermaid code [\#726](https://github.com/knsv/mermaid/issues/726)
|
||||
- Fixed width of nodes [\#653](https://github.com/knsv/mermaid/issues/653)
|
||||
- Inline comment [\#650](https://github.com/knsv/mermaid/issues/650)
|
||||
- alt attribute of img tag in HTML [\#619](https://github.com/knsv/mermaid/issues/619)
|
||||
- Just wanted to say : THANKS ! [\#618](https://github.com/knsv/mermaid/issues/618)
|
||||
- "animation" [\#446](https://github.com/knsv/mermaid/issues/446)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Trimming whitespace after participant id [\#882](https://github.com/knsv/mermaid/pull/882) ([IOrlandoni](https://github.com/IOrlandoni))
|
||||
- chore\(deps\): bump atob from 2.0.3 to 2.1.2 [\#881](https://github.com/knsv/mermaid/pull/881) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- chore\(deps\): bump fstream from 1.0.11 to 1.0.12 [\#880](https://github.com/knsv/mermaid/pull/880) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- chore\(deps\): bump js-yaml from 3.12.0 to 3.13.1 [\#879](https://github.com/knsv/mermaid/pull/879) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- I847 cross site scripting [\#878](https://github.com/knsv/mermaid/pull/878) ([knsv](https://github.com/knsv))
|
||||
- Bump lodash.mergewith from 4.6.1 to 4.6.2 [\#877](https://github.com/knsv/mermaid/pull/877) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- Adding docs into core repo again [\#876](https://github.com/knsv/mermaid/pull/876) ([knsv](https://github.com/knsv))
|
||||
- Bump lodash from 4.17.11 to 4.17.13 [\#875](https://github.com/knsv/mermaid/pull/875) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- feat\(stale.yml\): update issue label and bot comment [\#874](https://github.com/knsv/mermaid/pull/874) ([ThePenguin1140](https://github.com/ThePenguin1140))
|
||||
- Feature/allow inclusive enddates [\#872](https://github.com/knsv/mermaid/pull/872) ([ThePenguin1140](https://github.com/ThePenguin1140))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.5...8.1.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Gantt and sequence diagram do not render [\#853](https://github.com/knsv/mermaid/issues/853)
|
||||
- margins around flowchart are not balanced [\#852](https://github.com/knsv/mermaid/issues/852)
|
||||
- Smaller bundles [\#843](https://github.com/knsv/mermaid/issues/843)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- Multi-platform CI [\#744](https://github.com/knsv/mermaid/issues/744)
|
||||
- gantt: sections can't have a colon [\#742](https://github.com/knsv/mermaid/issues/742)
|
||||
- Yarn build does not add mermaid.min.css to dist [\#732](https://github.com/knsv/mermaid/issues/732)
|
||||
- Is there a grammar / keyword / more than just the basic examples? [\#718](https://github.com/knsv/mermaid/issues/718)
|
||||
- Click event and react component [\#717](https://github.com/knsv/mermaid/issues/717)
|
||||
- Long text going outside the box [\#706](https://github.com/knsv/mermaid/issues/706)
|
||||
- How to migrate from yUML to mermaid? [\#704](https://github.com/knsv/mermaid/issues/704)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- "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)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- Gantt sections are not separated by colors - Fix: set numberSectionStyles to 4 instead of 3 [\#620](https://github.com/knsv/mermaid/issues/620)
|
||||
- how to get mermaidAPI? [\#617](https://github.com/knsv/mermaid/issues/617)
|
||||
- Error in startOnLoad documentation? [\#616](https://github.com/knsv/mermaid/issues/616)
|
||||
- Example export to SVG generates error [\#614](https://github.com/knsv/mermaid/issues/614)
|
||||
- The new online editor does not support previously generated links [\#613](https://github.com/knsv/mermaid/issues/613)
|
||||
- Grammar / Syntax documentation for flowcharts [\#607](https://github.com/knsv/mermaid/issues/607)
|
||||
- Mermaid does not work with d3.js [\#606](https://github.com/knsv/mermaid/issues/606)
|
||||
- Why does this code's flowchart lines get cut-off on screen? [\#604](https://github.com/knsv/mermaid/issues/604)
|
||||
- click keyword does not fire my callback \(on the demo Website too\) [\#603](https://github.com/knsv/mermaid/issues/603)
|
||||
- Online Editor fails to show exported SVG [\#601](https://github.com/knsv/mermaid/issues/601)
|
||||
- Just saying thanks! [\#597](https://github.com/knsv/mermaid/issues/597)
|
||||
- stylesheet crashed with other library like abcjs [\#596](https://github.com/knsv/mermaid/issues/596)
|
||||
- Missing connection [\#594](https://github.com/knsv/mermaid/issues/594)
|
||||
- How to use mermaid on node.js restful api? [\#593](https://github.com/knsv/mermaid/issues/593)
|
||||
- Remove status code [\#589](https://github.com/knsv/mermaid/issues/589)
|
||||
- Golang based editor [\#588](https://github.com/knsv/mermaid/issues/588)
|
||||
- sequenceDiagram -\> notetext css font is hardcoded [\#587](https://github.com/knsv/mermaid/issues/587)
|
||||
- Multiple graph in the live editor [\#586](https://github.com/knsv/mermaid/issues/586)
|
||||
- All \<svg\> elements in page are colored black [\#584](https://github.com/knsv/mermaid/issues/584)
|
||||
- Styling: classes aren't applied to elements. [\#582](https://github.com/knsv/mermaid/issues/582)
|
||||
- Rounded connections [\#580](https://github.com/knsv/mermaid/issues/580)
|
||||
- Arrows are not being shown correctly in the dark theme [\#578](https://github.com/knsv/mermaid/issues/578)
|
||||
- The documentation for CLI seems outdated. [\#572](https://github.com/knsv/mermaid/issues/572)
|
||||
- No effect of click event:can not open link [\#571](https://github.com/knsv/mermaid/issues/571)
|
||||
- Text colors are not correct in VSCODE [\#570](https://github.com/knsv/mermaid/issues/570)
|
||||
- Nodes aren't aligned properly \(just need an explanation\) [\#568](https://github.com/knsv/mermaid/issues/568)
|
||||
- setting margin around figure in R [\#567](https://github.com/knsv/mermaid/issues/567)
|
||||
- Arrows should Come out in upward and Downward direction from decision Node [\#566](https://github.com/knsv/mermaid/issues/566)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- Arrow heads missing \(cli, 7.0.3\) [\#544](https://github.com/knsv/mermaid/issues/544)
|
||||
- No Edge Boxes if useHtmlLabels=false [\#541](https://github.com/knsv/mermaid/issues/541)
|
||||
- how to change mermaid text color or line text block color? [\#534](https://github.com/knsv/mermaid/issues/534)
|
||||
- FlowChart visualization broken when downloading from live editor [\#533](https://github.com/knsv/mermaid/issues/533)
|
||||
- Can't get flowchart to render paths at the top of the diagram; I even tried the online editor and that shows the same issue. Thoughts? [\#532](https://github.com/knsv/mermaid/issues/532)
|
||||
- live editor make browser\(safari on macOS&iOS\) not longer respond [\#531](https://github.com/knsv/mermaid/issues/531)
|
||||
- css classes need a prefix/namespace [\#527](https://github.com/knsv/mermaid/issues/527)
|
||||
- input activate/deactivate cause safari unresponding [\#521](https://github.com/knsv/mermaid/issues/521)
|
||||
- Cannot Render the Mermaid Graph to PDF ? [\#520](https://github.com/knsv/mermaid/issues/520)
|
||||
- clicking links works from inset in subgraph but not from nodes [\#516](https://github.com/knsv/mermaid/issues/516)
|
||||
- Strange syntax error - when importing mermaid.js [\#515](https://github.com/knsv/mermaid/issues/515)
|
||||
- gantt x-axis display [\#510](https://github.com/knsv/mermaid/issues/510)
|
||||
- phantomjs renamed to phantomjs-prebuilt [\#508](https://github.com/knsv/mermaid/issues/508)
|
||||
- issue when using sphinxcontrib-mermaid extension for sphinx [\#507](https://github.com/knsv/mermaid/issues/507)
|
||||
- layout of docs page looks broken [\#504](https://github.com/knsv/mermaid/issues/504)
|
||||
- Problem showing graph with php on localhost [\#502](https://github.com/knsv/mermaid/issues/502)
|
||||
- logLevel's option doesnt work at 7.0.0 [\#501](https://github.com/knsv/mermaid/issues/501)
|
||||
- How do I get the log for a render or parse attempt? [\#500](https://github.com/knsv/mermaid/issues/500)
|
||||
- Mermaid neutral style style to built in latest release [\#499](https://github.com/knsv/mermaid/issues/499)
|
||||
- Any plans for adding a typescript definition file? [\#495](https://github.com/knsv/mermaid/issues/495)
|
||||
- Gantt diagrams too narrow [\#493](https://github.com/knsv/mermaid/issues/493)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- Mermaid resets some of the page CSS styles [\#482](https://github.com/knsv/mermaid/issues/482)
|
||||
- Arrows rendering incorrectly in online editor [\#480](https://github.com/knsv/mermaid/issues/480)
|
||||
- CSS stroke-dasharray ignored by browsers but not other viewers [\#474](https://github.com/knsv/mermaid/issues/474)
|
||||
- mermaid - Browser Support issue [\#472](https://github.com/knsv/mermaid/issues/472)
|
||||
- Totally love mermaid I might pop! [\#471](https://github.com/knsv/mermaid/issues/471)
|
||||
- Sequence Diagram: Missing x on async arrows \(png\) [\#469](https://github.com/knsv/mermaid/issues/469)
|
||||
- live editor: the svg file rendered from graph is not supported by browsers [\#468](https://github.com/knsv/mermaid/issues/468)
|
||||
- Not found css [\#462](https://github.com/knsv/mermaid/issues/462)
|
||||
- Phantomjs Dependency [\#461](https://github.com/knsv/mermaid/issues/461)
|
||||
- Mermaid cli not working for subgraphs [\#459](https://github.com/knsv/mermaid/issues/459)
|
||||
- Support for notes across multiple participants? [\#458](https://github.com/knsv/mermaid/issues/458)
|
||||
- Related to Issue \#329: Phantomjs issues. [\#455](https://github.com/knsv/mermaid/issues/455)
|
||||
- Add a click style [\#426](https://github.com/knsv/mermaid/issues/426)
|
||||
- Add Parallel block \(par\) to sequence diagrams [\#425](https://github.com/knsv/mermaid/issues/425)
|
||||
- updating shapes after the flow chart rendering complete [\#424](https://github.com/knsv/mermaid/issues/424)
|
||||
- can't catch parse error Maximum call stack size exceeded on safari [\#421](https://github.com/knsv/mermaid/issues/421)
|
||||
- Arrows endings are missing [\#419](https://github.com/knsv/mermaid/issues/419)
|
||||
- shouldn't mermaid become more like Markdown ? [\#417](https://github.com/knsv/mermaid/issues/417)
|
||||
- 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)
|
||||
- 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: 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)
|
||||
- Cannot center-justify text in nodes? [\#397](https://github.com/knsv/mermaid/issues/397)
|
||||
- Edge labels should have white background in live editor [\#396](https://github.com/knsv/mermaid/issues/396)
|
||||
- Live editor does not support activate/deactivate [\#394](https://github.com/knsv/mermaid/issues/394)
|
||||
- Styling subgraph? [\#391](https://github.com/knsv/mermaid/issues/391)
|
||||
- Update live editor to version 6.0.0 [\#387](https://github.com/knsv/mermaid/issues/387)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- when declaring participants the elements are generated twice [\#370](https://github.com/knsv/mermaid/issues/370)
|
||||
- Example Flowchart is cut in display \(Chrome\). [\#368](https://github.com/knsv/mermaid/issues/368)
|
||||
- Add shebang support to diagrams [\#365](https://github.com/knsv/mermaid/issues/365)
|
||||
- Silencing CLI output [\#352](https://github.com/knsv/mermaid/issues/352)
|
||||
- SequenceDiagram: 3+ Alternative Paths [\#348](https://github.com/knsv/mermaid/issues/348)
|
||||
- Smaller height of actor boxes [\#342](https://github.com/knsv/mermaid/issues/342)
|
||||
- Question: lib/phantomscript.js - foreignObjects in SVG - related to \#58 [\#340](https://github.com/knsv/mermaid/issues/340)
|
||||
- npm test fails on osx being blocked at Can not load "PhantomJS", it is not registered! [\#337](https://github.com/knsv/mermaid/issues/337)
|
||||
- Tabs & subgraphs cause rendering error [\#336](https://github.com/knsv/mermaid/issues/336)
|
||||
- Display question: right angles [\#335](https://github.com/knsv/mermaid/issues/335)
|
||||
- No Arrows rendered v0.5.8 [\#330](https://github.com/knsv/mermaid/issues/330)
|
||||
- mermaid -v filename.mmd gives You must specify at least one source file. [\#328](https://github.com/knsv/mermaid/issues/328)
|
||||
- You had errors in your syntax. Use --help for further information. [\#327](https://github.com/knsv/mermaid/issues/327)
|
||||
- Allow alternate arrow syntax that doesn't close html comments [\#322](https://github.com/knsv/mermaid/issues/322)
|
||||
- Comment in subgraph [\#319](https://github.com/knsv/mermaid/issues/319)
|
||||
- Update graph [\#311](https://github.com/knsv/mermaid/issues/311)
|
||||
- css conflicts with boostrap's css [\#308](https://github.com/knsv/mermaid/issues/308)
|
||||
- Can not get click event to fire. [\#306](https://github.com/knsv/mermaid/issues/306)
|
||||
- Fix phantomjs2 compatibility [\#304](https://github.com/knsv/mermaid/issues/304)
|
||||
- Flowcharts do not work in native IE11 [\#303](https://github.com/knsv/mermaid/issues/303)
|
||||
- Integration with remark.js - tutorial added [\#302](https://github.com/knsv/mermaid/issues/302)
|
||||
- Theme for dark background [\#301](https://github.com/knsv/mermaid/issues/301)
|
||||
- Sequence diagram Loops: changing boxMargin spoils the "loop" notation [\#299](https://github.com/knsv/mermaid/issues/299)
|
||||
- src/mermaid.js generates bad code [\#297](https://github.com/knsv/mermaid/issues/297)
|
||||
- Fresh fork: jasmine tests fail [\#294](https://github.com/knsv/mermaid/issues/294)
|
||||
- CSS clash [\#292](https://github.com/knsv/mermaid/issues/292)
|
||||
- Mermaid does not work in Chrome 48 [\#281](https://github.com/knsv/mermaid/issues/281)
|
||||
- node click is not effective [\#272](https://github.com/knsv/mermaid/issues/272)
|
||||
- circle and ellipse cannot change color by classDef [\#271](https://github.com/knsv/mermaid/issues/271)
|
||||
- \[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)
|
||||
- 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)
|
||||
- IE11 Support issue [\#261](https://github.com/knsv/mermaid/issues/261)
|
||||
- mermaid without browser [\#260](https://github.com/knsv/mermaid/issues/260)
|
||||
- Insufficient capacity of gantt diagrams [\#226](https://github.com/knsv/mermaid/issues/226)
|
||||
- some WARN about installion [\#222](https://github.com/knsv/mermaid/issues/222)
|
||||
- Live editor offline access [\#217](https://github.com/knsv/mermaid/issues/217)
|
||||
- suggest: code highlight mode config for editors [\#212](https://github.com/knsv/mermaid/issues/212)
|
||||
- Uncaught RangeError: Maximum call stack size exceeded [\#189](https://github.com/knsv/mermaid/issues/189)
|
||||
- Implement render function for server side rendering using phantomjs [\#169](https://github.com/knsv/mermaid/issues/169)
|
||||
- Styling label texts [\#50](https://github.com/knsv/mermaid/issues/50)
|
||||
- Graphviz DOT syntax [\#5](https://github.com/knsv/mermaid/issues/5)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Remove console.log in classDB. [\#861](https://github.com/knsv/mermaid/pull/861) ([Arthaey](https://github.com/Arthaey))
|
||||
- Bump sshpk from 1.13.1 to 1.16.1 [\#851](https://github.com/knsv/mermaid/pull/851) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- Significantly smaller bundles [\#850](https://github.com/knsv/mermaid/pull/850) ([fabiospampinato](https://github.com/fabiospampinato))
|
||||
- Support styling of subgraphs [\#845](https://github.com/knsv/mermaid/pull/845) ([Qix-](https://github.com/Qix-))
|
||||
- fix dark theme loop labels not visible [\#837](https://github.com/knsv/mermaid/pull/837) ([jnnnnn](https://github.com/jnnnnn))
|
||||
- fix draw function can only call once [\#832](https://github.com/knsv/mermaid/pull/832) ([vaniship](https://github.com/vaniship))
|
||||
- Fix dotted lines not appearing in flowcharts when HTML labels disabled [\#828](https://github.com/knsv/mermaid/pull/828) ([stanhu](https://github.com/stanhu))
|
||||
- Fix issue with XML line breaks inside vertex labels [\#824](https://github.com/knsv/mermaid/pull/824) ([jsyang](https://github.com/jsyang))
|
||||
- fixed diagrams [\#810](https://github.com/knsv/mermaid/pull/810) ([0xflotus](https://github.com/0xflotus))
|
||||
- Clickable gantt tasks [\#804](https://github.com/knsv/mermaid/pull/804) ([abzicht](https://github.com/abzicht))
|
||||
- linkStyle now supports list of indexes with a few tests [\#798](https://github.com/knsv/mermaid/pull/798) ([ivan-danilov](https://github.com/ivan-danilov))
|
||||
- fix class diagram mermaid [\#795](https://github.com/knsv/mermaid/pull/795) ([DanShai](https://github.com/DanShai))
|
||||
- Added exclude weekdays to definition [\#792](https://github.com/knsv/mermaid/pull/792) ([jopapo](https://github.com/jopapo))
|
||||
- SVG link rendering [\#791](https://github.com/knsv/mermaid/pull/791) ([flying-sheep](https://github.com/flying-sheep))
|
||||
- Gantt milestones [\#788](https://github.com/knsv/mermaid/pull/788) ([gijswijs](https://github.com/gijswijs))
|
||||
- Remove duplicate code [\#768](https://github.com/knsv/mermaid/pull/768) ([znxkznxk1030](https://github.com/znxkznxk1030))
|
||||
- Render nodes as real links [\#765](https://github.com/knsv/mermaid/pull/765) ([flying-sheep](https://github.com/flying-sheep))
|
||||
- Support Multi-line Actor Descriptions [\#764](https://github.com/knsv/mermaid/pull/764) ([watsoncj](https://github.com/watsoncj))
|
||||
- Fix issue with marker-end. [\#757](https://github.com/knsv/mermaid/pull/757) ([gjlubbertsen](https://github.com/gjlubbertsen))
|
||||
- Make Class Diagrams usable in Stackedit and Live Editor [\#749](https://github.com/knsv/mermaid/pull/749) ([monsterkrampe](https://github.com/monsterkrampe))
|
||||
- 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 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))
|
||||
- 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))
|
||||
- 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))
|
||||
|
||||
## [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)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- live editor latin error after update [\#560](https://github.com/knsv/mermaid/issues/560)
|
||||
- Simple full example in online documentation is broken [\#558](https://github.com/knsv/mermaid/issues/558)
|
||||
- Graph No Arrow Head v7.0.3 [\#543](https://github.com/knsv/mermaid/issues/543)
|
||||
- Conflict while using mermaid along with core-js [\#512](https://github.com/knsv/mermaid/issues/512)
|
||||
- Export to pdf on website [\#496](https://github.com/knsv/mermaid/issues/496)
|
||||
- New downstream project: Mermaid Preview for VSCode [\#442](https://github.com/knsv/mermaid/issues/442)
|
||||
- Can't Zoom the flowchart ? [\#399](https://github.com/knsv/mermaid/issues/399)
|
||||
- line labels are not rendered correctly in live editor [\#366](https://github.com/knsv/mermaid/issues/366)
|
||||
- mermaid-loader [\#361](https://github.com/knsv/mermaid/issues/361)
|
||||
- Are there any documentation or examples for classDiagram and gitGraph? [\#359](https://github.com/knsv/mermaid/issues/359)
|
||||
- \# character broken in 0.5.8 [\#347](https://github.com/knsv/mermaid/issues/347)
|
||||
- Documentation issue: CSS example is not visible [\#345](https://github.com/knsv/mermaid/issues/345)
|
||||
- Include documentation for command line usage [\#326](https://github.com/knsv/mermaid/issues/326)
|
||||
- Fresh fork: can't build dist [\#296](https://github.com/knsv/mermaid/issues/296)
|
||||
- Invalid value for \<svg\> attribute viewBox="0 0 -Infinity -Infinity" [\#291](https://github.com/knsv/mermaid/issues/291)
|
||||
- Webpack require fails [\#277](https://github.com/knsv/mermaid/issues/277)
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.2...7.0.3)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- the documentation website is down [\#539](https://github.com/knsv/mermaid/issues/539)
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.0...7.0.2)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- CDN is not working [\#511](https://github.com/knsv/mermaid/issues/511)
|
||||
- A sampe sequenceDiagram crashes mermaid-cli [\#492](https://github.com/knsv/mermaid/issues/492)
|
||||
- Mermaid doesn't delete nodes when called multiple times [\#491](https://github.com/knsv/mermaid/issues/491)
|
||||
- API crashes on 2nd render\(\) call [\#478](https://github.com/knsv/mermaid/issues/478)
|
||||
- sequenceDiagram: dotted line for alt and empty bracket should be hidden [\#456](https://github.com/knsv/mermaid/issues/456)
|
||||
- SVG output \(almost\) not correct [\#434](https://github.com/knsv/mermaid/issues/434)
|
||||
- How to set axisFormatter of gantt in mermaid CLI? [\#428](https://github.com/knsv/mermaid/issues/428)
|
||||
- customizing link style with any color sets `fill` property to `black` instead of `none` [\#416](https://github.com/knsv/mermaid/issues/416)
|
||||
- New line at the end of SVG file [\#400](https://github.com/knsv/mermaid/issues/400)
|
||||
- CLI doesn't work [\#389](https://github.com/knsv/mermaid/issues/389)
|
||||
- Can't render subgraphs with htmlLabels: false [\#367](https://github.com/knsv/mermaid/issues/367)
|
||||
- Color arrowhead [\#362](https://github.com/knsv/mermaid/issues/362)
|
||||
- CLI: Invisible text, lines in SVG output [\#341](https://github.com/knsv/mermaid/issues/341)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Update Travis config [\#538](https://github.com/knsv/mermaid/pull/538) ([tylerlong](https://github.com/tylerlong))
|
||||
- Fix spelling of 'you' in sequenceDiagram docs [\#537](https://github.com/knsv/mermaid/pull/537) ([ctruelson](https://github.com/ctruelson))
|
||||
- Improve CLI output [\#536](https://github.com/knsv/mermaid/pull/536) ([gibson042](https://github.com/gibson042))
|
||||
- Modernize mermaid [\#524](https://github.com/knsv/mermaid/pull/524) ([tylerlong](https://github.com/tylerlong))
|
||||
- Modernize mermaid [\#519](https://github.com/knsv/mermaid/pull/519) ([tylerlong](https://github.com/tylerlong))
|
||||
- Update CLI instructions [\#509](https://github.com/knsv/mermaid/pull/509) ([filipedeschamps](https://github.com/filipedeschamps))
|
||||
- Add style for classDiagram to dark/default theme [\#503](https://github.com/knsv/mermaid/pull/503) ([yudenzel](https://github.com/yudenzel))
|
||||
- Fix documentation for git graph. [\#498](https://github.com/knsv/mermaid/pull/498) ([gomlgs](https://github.com/gomlgs))
|
||||
- Fix links in documentations [\#497](https://github.com/knsv/mermaid/pull/497) ([saveman71](https://github.com/saveman71))
|
||||
- Update README.md with git graph sample [\#481](https://github.com/knsv/mermaid/pull/481) ([raghur](https://github.com/raghur))
|
||||
- Fix misspelling of “another” [\#479](https://github.com/knsv/mermaid/pull/479) ([stevenschobert](https://github.com/stevenschobert))
|
||||
- Fixed \#456 sequenceDiagram: dotted line for alt and empty bracket sho… [\#477](https://github.com/knsv/mermaid/pull/477) ([brookhong](https://github.com/brookhong))
|
||||
- Add viewbox attr to class diagram [\#473](https://github.com/knsv/mermaid/pull/473) ([gnkm](https://github.com/gnkm))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/6.0.0...7.0.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- demos on io site not working [\#466](https://github.com/knsv/mermaid/issues/466)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- uncaught TypeError: t.getTransformToElement is not a function [\#401](https://github.com/knsv/mermaid/issues/401)
|
||||
- Only works when using browserify'd code [\#373](https://github.com/knsv/mermaid/issues/373)
|
||||
- document the use of shebang line in mmd files [\#364](https://github.com/knsv/mermaid/issues/364)
|
||||
- Diagrams are small and unreadable in IE 11 - since 0.5.1 [\#356](https://github.com/knsv/mermaid/issues/356)
|
||||
- \[Feature Request\] ER-Diagram Support [\#354](https://github.com/knsv/mermaid/issues/354)
|
||||
- npm install -g mermaid does not install phantomjs [\#329](https://github.com/knsv/mermaid/issues/329)
|
||||
- activation boxes [\#313](https://github.com/knsv/mermaid/issues/313)
|
||||
- The need for mermaid.css should be mentioned explicitly in the intro docs... [\#273](https://github.com/knsv/mermaid/issues/273)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Update index.html [\#465](https://github.com/knsv/mermaid/pull/465) ([bmsleight](https://github.com/bmsleight))
|
||||
- Fix for \#416, customizing link style with any color sets `fill` property to `black` instead of `none` [\#452](https://github.com/knsv/mermaid/pull/452) ([joshuacolvin](https://github.com/joshuacolvin))
|
||||
- Allow .node\>circle to receive css styles [\#449](https://github.com/knsv/mermaid/pull/449) ([bfriedz](https://github.com/bfriedz))
|
||||
- Fix spelling [\#447](https://github.com/knsv/mermaid/pull/447) ([jawn](https://github.com/jawn))
|
||||
- added tests and fix cli css style selector lowercase problem [\#445](https://github.com/knsv/mermaid/pull/445) ([whyzdev](https://github.com/whyzdev))
|
||||
- Update d3.js [\#441](https://github.com/knsv/mermaid/pull/441) ([hetz](https://github.com/hetz))
|
||||
- adde tests to reproduce \#434 in flowchart [\#439](https://github.com/knsv/mermaid/pull/439) ([whyzdev](https://github.com/whyzdev))
|
||||
- Code Climate config [\#437](https://github.com/knsv/mermaid/pull/437) ([larkinscott](https://github.com/larkinscott))
|
||||
- fix gantt and sequence digram cli cfg [\#435](https://github.com/knsv/mermaid/pull/435) ([whyzdev](https://github.com/whyzdev))
|
||||
- fix gantt chart cli configuration broken [\#433](https://github.com/knsv/mermaid/pull/433) ([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))
|
||||
- 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))
|
||||
- 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))
|
||||
- update usage and fix \#273 [\#406](https://github.com/knsv/mermaid/pull/406) ([jinntrance](https://github.com/jinntrance))
|
||||
- Add https://github.com/raghur/mermaid-filter to downstream projects docs page [\#404](https://github.com/knsv/mermaid/pull/404) ([raghur](https://github.com/raghur))
|
||||
- New neutral theme [\#395](https://github.com/knsv/mermaid/pull/395) ([sinedied](https://github.com/sinedied))
|
||||
- fix cli issues [\#390](https://github.com/knsv/mermaid/pull/390) ([ben-page](https://github.com/ben-page))
|
||||
- Add missing space for 'Labels out of bounds' section [\#386](https://github.com/knsv/mermaid/pull/386) ([The-Alchemist](https://github.com/The-Alchemist))
|
||||
- Fix typo: `pats` -\> `paths` [\#382](https://github.com/knsv/mermaid/pull/382) ([swhgoon](https://github.com/swhgoon))
|
||||
- Added class diagram example to README.md [\#379](https://github.com/knsv/mermaid/pull/379) ([HustLion](https://github.com/HustLion))
|
||||
- override normal flowchart arrowhead to allow css styling [\#376](https://github.com/knsv/mermaid/pull/376) ([dodoinblue](https://github.com/dodoinblue))
|
||||
- added sphinx extension [\#371](https://github.com/knsv/mermaid/pull/371) ([mgaitan](https://github.com/mgaitan))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.8...6.0.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Docs css: code hard to read [\#324](https://github.com/knsv/mermaid/issues/324)
|
||||
- About Markpad integration [\#323](https://github.com/knsv/mermaid/issues/323)
|
||||
- How to link backwords in flowchat? [\#321](https://github.com/knsv/mermaid/issues/321)
|
||||
- Help with editor [\#310](https://github.com/knsv/mermaid/issues/310)
|
||||
- +1 [\#293](https://github.com/knsv/mermaid/issues/293)
|
||||
- Basic chart does not render on Chome, but does in Firefox [\#290](https://github.com/knsv/mermaid/issues/290)
|
||||
- Live editor is broken [\#285](https://github.com/knsv/mermaid/issues/285)
|
||||
- "No such file or directory" trying to run mermaid 0.5.7 on OS X [\#284](https://github.com/knsv/mermaid/issues/284)
|
||||
- participant name as "Long Long Name" [\#283](https://github.com/knsv/mermaid/issues/283)
|
||||
- Windows - cli - could not find phantomjs at the specified path [\#236](https://github.com/knsv/mermaid/issues/236)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- The option of gantt for the spaces for the section names. [\#353](https://github.com/knsv/mermaid/pull/353) ([zeroyonichihachi](https://github.com/zeroyonichihachi))
|
||||
- Gitgraph: Make reset work with parent ref carets [\#350](https://github.com/knsv/mermaid/pull/350) ([raghur](https://github.com/raghur))
|
||||
- Remove the text-shadows that make the text look blurry [\#349](https://github.com/knsv/mermaid/pull/349) ([AsaAyers](https://github.com/AsaAyers))
|
||||
- add line interpolation to linkStyle in flowchart [\#346](https://github.com/knsv/mermaid/pull/346) ([AlanHohn](https://github.com/AlanHohn))
|
||||
- Support git graph diagrams in mermaid [\#344](https://github.com/knsv/mermaid/pull/344) ([raghur](https://github.com/raghur))
|
||||
- Build and test execution changes [\#338](https://github.com/knsv/mermaid/pull/338) ([ssbarnea](https://github.com/ssbarnea))
|
||||
- Reformatting of css files [\#331](https://github.com/knsv/mermaid/pull/331) ([Jmuccigr](https://github.com/Jmuccigr))
|
||||
- \(WIP\) Sequence Diagram Title Support [\#320](https://github.com/knsv/mermaid/pull/320) ([bronsoja](https://github.com/bronsoja))
|
||||
- activations doc + few fixes [\#318](https://github.com/knsv/mermaid/pull/318) ([ciekawy](https://github.com/ciekawy))
|
||||
- Dark theme for better contrast on darker backgrounds [\#317](https://github.com/knsv/mermaid/pull/317) ([crodriguez1a](https://github.com/crodriguez1a))
|
||||
- Activations [\#316](https://github.com/knsv/mermaid/pull/316) ([ciekawy](https://github.com/ciekawy))
|
||||
- Support leading comments for sequenceDiagrams [\#312](https://github.com/knsv/mermaid/pull/312) ([ashsearle](https://github.com/ashsearle))
|
||||
- Show a little lenience for white-space around names [\#309](https://github.com/knsv/mermaid/pull/309) ([ashsearle](https://github.com/ashsearle))
|
||||
- Update list of downstream projects [\#307](https://github.com/knsv/mermaid/pull/307) ([maxArturo](https://github.com/maxArturo))
|
||||
- Issue 299: Sequence diagram Loops: changing boxMargin spoils the "loop" notation [\#300](https://github.com/knsv/mermaid/pull/300) ([LarryKlugerDS](https://github.com/LarryKlugerDS))
|
||||
- Issue 297 - src/mermaid.js generates bad code [\#298](https://github.com/knsv/mermaid/pull/298) ([LarryKlugerDS](https://github.com/LarryKlugerDS))
|
||||
- Updated instructions for running tests [\#295](https://github.com/knsv/mermaid/pull/295) ([LarryKlugerDS](https://github.com/LarryKlugerDS))
|
||||
- Add Markdown Plus to Downstream projects [\#288](https://github.com/knsv/mermaid/pull/288) ([tylerlong](https://github.com/tylerlong))
|
||||
- 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)
|
||||
|
||||
[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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.6...0.5.7)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Mermaid + LightPaper = ❤️ [\#280](https://github.com/knsv/mermaid/issues/280)
|
||||
- Bower Integration [\#278](https://github.com/knsv/mermaid/issues/278)
|
||||
- Mermaid breaks when variables end in 'v' [\#276](https://github.com/knsv/mermaid/issues/276)
|
||||
- sequence diagrams don't support participant aliasing [\#263](https://github.com/knsv/mermaid/issues/263)
|
||||
- One diagram that fails to render stops further execution on the page [\#259](https://github.com/knsv/mermaid/issues/259)
|
||||
- Where to find line layout algorithm? [\#258](https://github.com/knsv/mermaid/issues/258)
|
||||
- Compatibility with node.js [\#257](https://github.com/knsv/mermaid/issues/257)
|
||||
- Label resizing with dynamically loaded fonts [\#255](https://github.com/knsv/mermaid/issues/255)
|
||||
- SVG arrowheads are broken in the CLI [\#249](https://github.com/knsv/mermaid/issues/249)
|
||||
- Cannot read property 'replace' of undefined [\#239](https://github.com/knsv/mermaid/issues/239)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- gh-50 Allow styling of edge labels in css [\#267](https://github.com/knsv/mermaid/pull/267) ([Anoia](https://github.com/Anoia))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.5...0.5.6)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- title doesn't work in sequenceDiagram [\#248](https://github.com/knsv/mermaid/issues/248)
|
||||
- hypen-minus should be valid in sequence diagram alt/else/etc. descriptions [\#247](https://github.com/knsv/mermaid/issues/247)
|
||||
- Broken in firefox? [\#245](https://github.com/knsv/mermaid/issues/245)
|
||||
- When there is a Chinese symbol in the flowchart, it will crash。 [\#238](https://github.com/knsv/mermaid/issues/238)
|
||||
- Non-alpha characters included in ALPHA token \(flow graph jison\) [\#232](https://github.com/knsv/mermaid/issues/232)
|
||||
- subgraph not rendering with change to sample [\#231](https://github.com/knsv/mermaid/issues/231)
|
||||
- sequence diagram requires a new line at the end? [\#229](https://github.com/knsv/mermaid/issues/229)
|
||||
- Live Editor: Permalink address not being parsed [\#202](https://github.com/knsv/mermaid/issues/202)
|
||||
- Add download SVG link to the live editor [\#144](https://github.com/knsv/mermaid/issues/144)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Make sequenceDiagram terminal newline optional [\#253](https://github.com/knsv/mermaid/pull/253) ([gibson042](https://github.com/gibson042))
|
||||
- Support sequenceDiagram "over" notes [\#252](https://github.com/knsv/mermaid/pull/252) ([gibson042](https://github.com/gibson042))
|
||||
- Properly handle "rest of line" statements [\#251](https://github.com/knsv/mermaid/pull/251) ([gibson042](https://github.com/gibson042))
|
||||
- CLI: Propagate exit code from lib \(i.e., phantomjs\) [\#250](https://github.com/knsv/mermaid/pull/250) ([gibson042](https://github.com/gibson042))
|
||||
- flowRender.js - Fix FontAwesome icon insert [\#244](https://github.com/knsv/mermaid/pull/244) ([ma-zal](https://github.com/ma-zal))
|
||||
- updated sequence diagram link in live editor [\#242](https://github.com/knsv/mermaid/pull/242) ([r-a-v-a-s](https://github.com/r-a-v-a-s))
|
||||
- updated links in README.md [\#240](https://github.com/knsv/mermaid/pull/240) ([r-a-v-a-s](https://github.com/r-a-v-a-s))
|
||||
- Ellipse syntax [\#237](https://github.com/knsv/mermaid/pull/237) ([spect88](https://github.com/spect88))
|
||||
- Allow keywords as suffixes of node ids [\#235](https://github.com/knsv/mermaid/pull/235) ([spect88](https://github.com/spect88))
|
||||
- Highlighted the editor in the nav [\#234](https://github.com/knsv/mermaid/pull/234) ([knsv](https://github.com/knsv))
|
||||
- Live editor tweaks [\#233](https://github.com/knsv/mermaid/pull/233) ([spect88](https://github.com/spect88))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.4...0.5.5)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- sequence diagram, arrowhead instead of crosshead [\#227](https://github.com/knsv/mermaid/issues/227)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.3...0.5.4)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Weird bug in live editor when using words with substring `end` [\#184](https://github.com/knsv/mermaid/issues/184)
|
||||
- Custom icons [\#15](https://github.com/knsv/mermaid/issues/15)
|
||||
- Marker-end arrow cannot be shown for URL with query parameter [\#225](https://github.com/knsv/mermaid/issues/225)
|
||||
- Please update bower's D3 version [\#221](https://github.com/knsv/mermaid/issues/221)
|
||||
- Set log level from mermaid configuration [\#220](https://github.com/knsv/mermaid/issues/220)
|
||||
- Width fixed to 400px [\#204](https://github.com/knsv/mermaid/issues/204)
|
||||
- render to png from the cli does not display the marker-end arrow heads [\#181](https://github.com/knsv/mermaid/issues/181)
|
||||
- Links in sequence diagrams [\#159](https://github.com/knsv/mermaid/issues/159)
|
||||
- comment characters `%%` cause parse error [\#141](https://github.com/knsv/mermaid/issues/141)
|
||||
- Add a reversed assymetric shape [\#124](https://github.com/knsv/mermaid/issues/124)
|
||||
- Add syntax for double headed arrows [\#123](https://github.com/knsv/mermaid/issues/123)
|
||||
- Support for font-awesome [\#49](https://github.com/knsv/mermaid/issues/49)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Allow `end` as a substring of vertex id [\#224](https://github.com/knsv/mermaid/pull/224) ([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)
|
||||
|
||||
[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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.1...0.5.2)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Installing “atom-mermaid@0.1.3” failed [\#218](https://github.com/knsv/mermaid/issues/218)
|
||||
- Render mermaid code on websites? [\#215](https://github.com/knsv/mermaid/issues/215)
|
||||
- Brackets in a node with text? [\#213](https://github.com/knsv/mermaid/issues/213)
|
||||
- node feature request [\#211](https://github.com/knsv/mermaid/issues/211)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- Static site does not render under HTTPS [\#194](https://github.com/knsv/mermaid/issues/194)
|
||||
- Error on simple graph [\#192](https://github.com/knsv/mermaid/issues/192)
|
||||
- Escape "~" [\#191](https://github.com/knsv/mermaid/issues/191)
|
||||
- Trying to add link using 'click' to flowchart [\#188](https://github.com/knsv/mermaid/issues/188)
|
||||
- cli: no lines and arrowheads rendered / only dotted lines [\#187](https://github.com/knsv/mermaid/issues/187)
|
||||
- text of mermaid div displayed on page [\#186](https://github.com/knsv/mermaid/issues/186)
|
||||
- using mermaid with laravel [\#185](https://github.com/knsv/mermaid/issues/185)
|
||||
- Atom editor package [\#183](https://github.com/knsv/mermaid/issues/183)
|
||||
- Auto linewrap for notes in sequence diagrams [\#178](https://github.com/knsv/mermaid/issues/178)
|
||||
- Execute code after initialize [\#176](https://github.com/knsv/mermaid/issues/176)
|
||||
- Autoscaling for all diagram types [\#175](https://github.com/knsv/mermaid/issues/175)
|
||||
- Problem wit click event callback [\#174](https://github.com/knsv/mermaid/issues/174)
|
||||
- How to escape characters? [\#170](https://github.com/knsv/mermaid/issues/170)
|
||||
- it can not work [\#167](https://github.com/knsv/mermaid/issues/167)
|
||||
- UML Class diagram [\#154](https://github.com/knsv/mermaid/issues/154)
|
||||
- Broken subgraph using the CLI [\#153](https://github.com/knsv/mermaid/issues/153)
|
||||
- Support PlantUML syntax [\#149](https://github.com/knsv/mermaid/issues/149)
|
||||
- IE Support issue [\#142](https://github.com/knsv/mermaid/issues/142)
|
||||
- Flowchart truncated [\#140](https://github.com/knsv/mermaid/issues/140)
|
||||
- Double Quote as text is not working [\#219](https://github.com/knsv/mermaid/issues/219)
|
||||
- classDef / class not working with htmlLabels? [\#210](https://github.com/knsv/mermaid/issues/210)
|
||||
- Links in graph missing [\#209](https://github.com/knsv/mermaid/issues/209)
|
||||
- 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)
|
||||
- SVG foreignObject rendering [\#180](https://github.com/knsv/mermaid/issues/180)
|
||||
- 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)
|
||||
- \[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)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Update flowchart.md [\#214](https://github.com/knsv/mermaid/pull/214) ([orschiro](https://github.com/orschiro))
|
||||
- Default style when using the CLI [\#205](https://github.com/knsv/mermaid/pull/205) ([gillesdemey](https://github.com/gillesdemey))
|
||||
- Gantt chart - add minutes and seconds durations [\#198](https://github.com/knsv/mermaid/pull/198) ([dbrans](https://github.com/dbrans))
|
||||
- Using QUnit for AMD testing [\#190](https://github.com/knsv/mermaid/pull/190) ([bollwyvl](https://github.com/bollwyvl))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.0...0.5.1)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Live editor is broken [\#173](https://github.com/knsv/mermaid/issues/173)
|
||||
- 0.5.0 no longer respects custom date definitions in Gantt diagrams [\#171](https://github.com/knsv/mermaid/issues/171)
|
||||
- Drop label character restrictions [\#162](https://github.com/knsv/mermaid/issues/162)
|
||||
- can't nest subgraphs in flowchart [\#161](https://github.com/knsv/mermaid/issues/161)
|
||||
- Unable to generate gantt diagram with mermaid CLI [\#158](https://github.com/knsv/mermaid/issues/158)
|
||||
- Inline css by "mermaid" [\#157](https://github.com/knsv/mermaid/issues/157)
|
||||
- Finite State Machine Diagram [\#152](https://github.com/knsv/mermaid/issues/152)
|
||||
- How to center align gantt diagram [\#150](https://github.com/knsv/mermaid/issues/150)
|
||||
- Security concern regarding class definition [\#148](https://github.com/knsv/mermaid/issues/148)
|
||||
- File Extension [\#147](https://github.com/knsv/mermaid/issues/147)
|
||||
- To SVG Export [\#146](https://github.com/knsv/mermaid/issues/146)
|
||||
- `setTimeout` with clusters problematic with programmatic edits and no callback [\#133](https://github.com/knsv/mermaid/issues/133)
|
||||
- Possibility to set the width of the generated flowchart [\#129](https://github.com/knsv/mermaid/issues/129)
|
||||
- flowchart - styling of edges via css overrides specific styles set in the graph definition [\#128](https://github.com/knsv/mermaid/issues/128)
|
||||
- module.exports.cloneCssStyles\(\) in combination with Angularjs breaks display in Chrome and IE [\#126](https://github.com/knsv/mermaid/issues/126)
|
||||
- Gantt - suitable xAxis for longer project [\#125](https://github.com/knsv/mermaid/issues/125)
|
||||
- Mix horizontal and vertical graph [\#68](https://github.com/knsv/mermaid/issues/68)
|
||||
- How to get started with this project ? [\#64](https://github.com/knsv/mermaid/issues/64)
|
||||
- Special characters break parsing [\#54](https://github.com/knsv/mermaid/issues/54)
|
||||
- Responsive graph layout for mobile viewers [\#51](https://github.com/knsv/mermaid/issues/51)
|
||||
- Styling connector lines [\#31](https://github.com/knsv/mermaid/issues/31)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.4.0...0.5.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- it can not work where graph TD contains chinese character [\#166](https://github.com/knsv/mermaid/issues/166)
|
||||
- Broken Examples [\#163](https://github.com/knsv/mermaid/issues/163)
|
||||
- uglifyjs wanrings which means we can improve the code [\#156](https://github.com/knsv/mermaid/issues/156)
|
||||
- New\(er\) features unavailable in downloadable js files? [\#151](https://github.com/knsv/mermaid/issues/151)
|
||||
- Add gh-gapes link to description [\#143](https://github.com/knsv/mermaid/issues/143)
|
||||
- Some examples not displayed on Firefox 36.0.1 [\#138](https://github.com/knsv/mermaid/issues/138)
|
||||
- tags ending in a "v" don't render [\#132](https://github.com/knsv/mermaid/issues/132)
|
||||
- Links in flowchart [\#131](https://github.com/knsv/mermaid/issues/131)
|
||||
- Using the library for iOS development [\#130](https://github.com/knsv/mermaid/issues/130)
|
||||
- Add a css file, mermaid.css, with default styling [\#122](https://github.com/knsv/mermaid/issues/122)
|
||||
- Add capability for gantt diagrams [\#118](https://github.com/knsv/mermaid/issues/118)
|
||||
- lower case v causes error in the parser [\#108](https://github.com/knsv/mermaid/issues/108)
|
||||
- Label's css conflict with boostrap's .label [\#67](https://github.com/knsv/mermaid/issues/67)
|
||||
- TypeError: Cannot read property 'layout' of undefined [\#37](https://github.com/knsv/mermaid/issues/37)
|
||||
- software architecture diagram [\#36](https://github.com/knsv/mermaid/issues/36)
|
||||
- Support for bar charts and pie diagrams [\#22](https://github.com/knsv/mermaid/issues/22)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Dev 0.5.0 [\#168](https://github.com/knsv/mermaid/pull/168) ([knsv](https://github.com/knsv))
|
||||
- Fix spacing [\#164](https://github.com/knsv/mermaid/pull/164) ([rhcarvalho](https://github.com/rhcarvalho))
|
||||
- Fixing typo: "Think" -\> "Thick" [\#160](https://github.com/knsv/mermaid/pull/160) ([it0a](https://github.com/it0a))
|
||||
- IE, local html, cssRules access is denied [\#155](https://github.com/knsv/mermaid/pull/155) ([tylerlong](https://github.com/tylerlong))
|
||||
- Add automatically generated change log file. [\#139](https://github.com/knsv/mermaid/pull/139) ([skywinder](https://github.com/skywinder))
|
||||
- Adding init argument to the global API [\#137](https://github.com/knsv/mermaid/pull/137) ([bollwyvl](https://github.com/bollwyvl))
|
||||
- Add description of manual calling of init [\#136](https://github.com/knsv/mermaid/pull/136) ([bollwyvl](https://github.com/bollwyvl))
|
||||
- Allow other forms of node selection for init\(\) [\#135](https://github.com/knsv/mermaid/pull/135) ([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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.5...0.4.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- subgraph background is black in rendered flowchart PNG via CLI [\#121](https://github.com/knsv/mermaid/issues/121)
|
||||
- Integrate editor at https://github.com/naseer/mermaid-webapp [\#110](https://github.com/knsv/mermaid/issues/110)
|
||||
- Internet Explorer Support [\#99](https://github.com/knsv/mermaid/issues/99)
|
||||
- Assymetric shapes not documented [\#82](https://github.com/knsv/mermaid/issues/82)
|
||||
- NoModificationAllowedError [\#23](https://github.com/knsv/mermaid/issues/23)
|
||||
- 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)
|
||||
|
||||
[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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.3...0.3.4)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Subgraph syntax bug? [\#120](https://github.com/knsv/mermaid/issues/120)
|
||||
- Live editor [\#115](https://github.com/knsv/mermaid/issues/115)
|
||||
- Error in "Basic Syntax" wiki page [\#113](https://github.com/knsv/mermaid/issues/113)
|
||||
- semicolons, anyone? [\#111](https://github.com/knsv/mermaid/issues/111)
|
||||
- undefined `sequenceConfig` fails [\#109](https://github.com/knsv/mermaid/issues/109)
|
||||
- Sequence Diagrams: Show Actors below as well [\#106](https://github.com/knsv/mermaid/issues/106)
|
||||
- Allow overriding sequence diagram configuration \(SVG properties\) [\#103](https://github.com/knsv/mermaid/issues/103)
|
||||
- Error when rendering A-- This is the text -- B [\#102](https://github.com/knsv/mermaid/issues/102)
|
||||
- Clipping in documentation [\#97](https://github.com/knsv/mermaid/issues/97)
|
||||
- isolate class styling to the svg container [\#92](https://github.com/knsv/mermaid/issues/92)
|
||||
- Apply styling from css when using the CLI utility [\#85](https://github.com/knsv/mermaid/issues/85)
|
||||
- Generated SVG works poorly outside web browsers [\#58](https://github.com/knsv/mermaid/issues/58)
|
||||
- Make the new graph declaration more visual [\#40](https://github.com/knsv/mermaid/issues/40)
|
||||
- Generating SVG text blob for use in Node [\#2](https://github.com/knsv/mermaid/issues/2)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Add live editor [\#119](https://github.com/knsv/mermaid/pull/119) ([naseer](https://github.com/naseer))
|
||||
- Adds CSS option to the CLI [\#116](https://github.com/knsv/mermaid/pull/116) ([fardog](https://github.com/fardog))
|
||||
- Update flowchart.md in response Issue \#113 [\#114](https://github.com/knsv/mermaid/pull/114) ([vijay40](https://github.com/vijay40))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.2...0.3.3)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Missing arrows in sequence diagram [\#98](https://github.com/knsv/mermaid/issues/98)
|
||||
- Error with \>9 linkStyles [\#95](https://github.com/knsv/mermaid/issues/95)
|
||||
- Support for dotted links [\#26](https://github.com/knsv/mermaid/issues/26)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Require d3 directly to better support Node usage [\#107](https://github.com/knsv/mermaid/pull/107) ([markdalgleish](https://github.com/markdalgleish))
|
||||
- update doc with -c option [\#105](https://github.com/knsv/mermaid/pull/105) ([jjmr](https://github.com/jjmr))
|
||||
- Add new parameter to the console client to override the svg configuration in sequence diagrams [\#104](https://github.com/knsv/mermaid/pull/104) ([jjmr](https://github.com/jjmr))
|
||||
- Text based labels, new shape [\#101](https://github.com/knsv/mermaid/pull/101) ([bjowes](https://github.com/bjowes))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.1...0.3.2)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- disable auto render [\#91](https://github.com/knsv/mermaid/issues/91)
|
||||
- Tidy breaks mermaid \(linebreaks in \<div\>\) [\#87](https://github.com/knsv/mermaid/issues/87)
|
||||
- Bug: \<br\> being rendered as text in node [\#73](https://github.com/knsv/mermaid/issues/73)
|
||||
- Graph edges appear to render outside of the canvas [\#70](https://github.com/knsv/mermaid/issues/70)
|
||||
- Make link text look like it is on the line [\#53](https://github.com/knsv/mermaid/issues/53)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Merge pull request \#1 from knsv/master [\#96](https://github.com/knsv/mermaid/pull/96) ([gkchic](https://github.com/gkchic))
|
||||
- Removed duplicated section in flowchart docs [\#94](https://github.com/knsv/mermaid/pull/94) ([kaime](https://github.com/kaime))
|
||||
- Grammar changes to sequence page [\#93](https://github.com/knsv/mermaid/pull/93) ([gkchic](https://github.com/gkchic))
|
||||
- Github buttons [\#89](https://github.com/knsv/mermaid/pull/89) ([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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.0...0.3.1)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Non ASCII chars in labels [\#84](https://github.com/knsv/mermaid/issues/84)
|
||||
- 'undefined' titles of Quicklinks on the usage page [\#80](https://github.com/knsv/mermaid/issues/80)
|
||||
- \[cli\] Enhancement proposal: not fail --version / --help if phantomjs isn't installed [\#71](https://github.com/knsv/mermaid/issues/71)
|
||||
- Neural Networks [\#39](https://github.com/knsv/mermaid/issues/39)
|
||||
- Support for sequence diagrams [\#16](https://github.com/knsv/mermaid/issues/16)
|
||||
- Client utility for mermaid [\#6](https://github.com/knsv/mermaid/issues/6)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Flowchart doc: Text in the circle now in a circle [\#81](https://github.com/knsv/mermaid/pull/81) ([Grahack](https://github.com/Grahack))
|
||||
- Fix for issue \#73 [\#79](https://github.com/knsv/mermaid/pull/79) ([it0a](https://github.com/it0a))
|
||||
- Ink template [\#78](https://github.com/knsv/mermaid/pull/78) ([gkchic](https://github.com/gkchic))
|
||||
- Show help and version even if phantom isn't present. Fixes \#71 [\#75](https://github.com/knsv/mermaid/pull/75) ([fardog](https://github.com/fardog))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.16...0.3.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Consider shipping a standalone executable [\#65](https://github.com/knsv/mermaid/issues/65)
|
||||
- Trailing whitespace at the end of lines is not ignored [\#55](https://github.com/knsv/mermaid/issues/55)
|
||||
- How do I do comments? [\#47](https://github.com/knsv/mermaid/issues/47)
|
||||
- This characters failed the lexical parsing [\#46](https://github.com/knsv/mermaid/issues/46)
|
||||
- tutorial for creating new type of graph/layout [\#44](https://github.com/knsv/mermaid/issues/44)
|
||||
- Improve readability with new line as terminator and whitespace [\#38](https://github.com/knsv/mermaid/issues/38)
|
||||
- Use classes instead of inline style for easy styling [\#24](https://github.com/knsv/mermaid/issues/24)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Adds Command Line Interface for generating PNGs from mermaid description files [\#69](https://github.com/knsv/mermaid/pull/69) ([fardog](https://github.com/fardog))
|
||||
- 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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.15...0.2.16)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Mermaid not rendering properly on Wordpress pages [\#59](https://github.com/knsv/mermaid/issues/59)
|
||||
- Improve example page with live demo [\#52](https://github.com/knsv/mermaid/issues/52)
|
||||
- Create image file via CLI? [\#48](https://github.com/knsv/mermaid/issues/48)
|
||||
- Does not render upon AngularJS Updates [\#45](https://github.com/knsv/mermaid/issues/45)
|
||||
- Download link in README.MD doesn't work. [\#42](https://github.com/knsv/mermaid/issues/42)
|
||||
- linkStyle usage is not obvious [\#41](https://github.com/knsv/mermaid/issues/41)
|
||||
- Move \*.spec.js in src/ to test/ [\#35](https://github.com/knsv/mermaid/issues/35)
|
||||
- Lines routed outside visible area [\#19](https://github.com/knsv/mermaid/issues/19)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- 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))
|
||||
- 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))
|
||||
- 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))
|
||||
|
||||
## [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)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Question marks don't render properly with /dist/mermaid.full.min.js [\#30](https://github.com/knsv/mermaid/issues/30)
|
||||
- Error with some characters [\#25](https://github.com/knsv/mermaid/issues/25)
|
||||
- Provide parse function in browser widthout `require`? [\#21](https://github.com/knsv/mermaid/issues/21)
|
||||
- Better label text support [\#18](https://github.com/knsv/mermaid/issues/18)
|
||||
- Cap-cased words break parser [\#8](https://github.com/knsv/mermaid/issues/8)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- 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))
|
||||
|
||||
## [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)
|
||||
|
||||
## [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)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- modified init to be applied more than once [\#29](https://github.com/knsv/mermaid/issues/29)
|
||||
- Wanted to know build process for the project. [\#28](https://github.com/knsv/mermaid/issues/28)
|
||||
- Container support [\#27](https://github.com/knsv/mermaid/issues/27)
|
||||
- can not support Chinese description [\#20](https://github.com/knsv/mermaid/issues/20)
|
||||
- Node Label text mistaken for Direction [\#17](https://github.com/knsv/mermaid/issues/17)
|
||||
- Support unicode chars in labels [\#9](https://github.com/knsv/mermaid/issues/9)
|
||||
- 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)
|
||||
|
||||
[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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.8...0.2.9)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Add link to jsbin playground to README [\#11](https://github.com/knsv/mermaid/issues/11)
|
||||
- What are the requirements ? [\#10](https://github.com/knsv/mermaid/issues/10)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- 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)
|
||||
|
||||
[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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.6...0.2.7)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- 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)
|
||||
|
||||
[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)
|
||||
|
||||
[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.4...0.2.5)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- 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)
|
||||
|
||||
[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)
|
||||
|
||||
[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)
|
||||
|
||||
[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)
|
||||
|
||||
[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)
|
||||
|
||||
[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)
|
||||
|
||||
[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)
|
||||
|
||||
\* _This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)_
|
||||
154
CONTRIBUTING.md
Normal file
154
CONTRIBUTING.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# Contributing
|
||||
|
||||
So you want to help? That's great!
|
||||
|
||||

|
||||
|
||||
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
|
||||
yarn
|
||||
yarn test
|
||||
```
|
||||
|
||||
## 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:
|
||||
|
||||
- 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
|
||||
- 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.
|
||||
|
||||
One example:
|
||||
|
||||
`feature/945_state_diagrams`
|
||||
|
||||
Another:
|
||||
|
||||
`bug/123_nasty_bug_branch`
|
||||
|
||||
## Committing documentation
|
||||
|
||||
Less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator.
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
$ npm i docsify-cli -g
|
||||
```
|
||||
|
||||
If you are more familiar with Yarn, you can use the following command:
|
||||
|
||||
```sh
|
||||
$ yarn global add docsify-cli
|
||||
```
|
||||
|
||||
The above command will install `docsify-cli` globally.
|
||||
If the installation is successful, the command `docsify` will be available in your `PATH`.
|
||||
|
||||
You can now run the following command to serve the documentation site:
|
||||
|
||||
```sh
|
||||
$ docsify serve docs
|
||||
```
|
||||
|
||||
Once the local HTTP server is listening, you can point your browser at http://localhost:3000.
|
||||
|
||||
## Branching
|
||||
|
||||
Going forward we will use a git flow inspired approach to branching. So development is done in develop, to do the development in the develop.
|
||||
|
||||
Once development is done we branch a release branch from develop for testing.
|
||||
|
||||
Once the release happens we merge the release branch to master and kill the release branch.
|
||||
|
||||
This means... **branch off your pull request from develop**
|
||||
|
||||
## Content of a pull request
|
||||
|
||||
A new feature has been born. Great! But without the steps below it might just ... fade away ...
|
||||
|
||||
### **Add unit tests for the parsing part**
|
||||
|
||||
This is important so that, if someone else does a change to the grammar that does not know about this great feature, gets notified early on when that change breaks the parser. Another important aspect is that without proper parsing tests refactoring is pretty much impossible.
|
||||
|
||||
### **Add e2e tests**
|
||||
|
||||
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).
|
||||
|
||||
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.
|
||||
|
||||
This is what a rendering test looks like:
|
||||
|
||||
```javascript
|
||||
it('should render forks and joins', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
state fork_state <<fork>>
|
||||
[*] --> fork_state
|
||||
fork_state --> State2
|
||||
fork_state --> State3
|
||||
|
||||
state join_state <<join>>
|
||||
State2 --> join_state
|
||||
State3 --> join_state
|
||||
join_state --> State4
|
||||
State4 --> [*]
|
||||
`,
|
||||
{ logLevel: 0 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
```
|
||||
|
||||
### **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?
|
||||
|
||||
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.
|
||||
|
||||
#### 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
|
||||
|
||||
Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So if you get stuck, ask for help and hints in the slack forum. If you want to show off something good, show it off there.
|
||||
|
||||
[Join our slack community if you want closer contact!](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE)
|
||||
|
||||

|
||||
3
LICENSE
3
LICENSE
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Knut Sveidqvist
|
||||
Copyright (c) 2014 - 2022 Knut Sveidqvist
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
|
||||
471
README.md
471
README.md
@@ -1,277 +1,344 @@
|
||||
mermaid [](https://travis-ci.org/knsv/mermaid)
|
||||
=======
|
||||
# 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)
|
||||
|
||||
Generation of diagrams and flowcharts from text in a similar manner as markdown.
|
||||
English | [简体中文](./README.zh-CN.md)
|
||||
|
||||
Ever wanted to simplify documentation and avoid heavy tools like Visio when explaining your code?
|
||||
<img src="./img/header.png" alt="" />
|
||||
|
||||
This is why mermaid was born, a simple markdown-like script language for generating charts from text via javascript.
|
||||
: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"!!!**
|
||||
|
||||
The code below would render the following image
|
||||
**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>
|
||||
|
||||
## About
|
||||
|
||||
<!-- <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.
|
||||
|
||||
> Doc-Rot is a Catch-22 that Mermaid helps to solve.
|
||||
|
||||
Diagramming and documentation costs precious developer time and gets outdated quickly.
|
||||
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/>
|
||||
<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.
|
||||
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).
|
||||
|
||||
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)
|
||||
|
||||
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/">
|
||||
<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>
|
||||
|
||||
<!-- </Main description> -->
|
||||
|
||||
## Examples
|
||||
|
||||
**The following are some examples of the diagrams, charts and graphs that can be made using Mermaid. Click here to jump into the [text syntax](https://mermaid-js.github.io/mermaid/#/n00b-syntaxReference).**
|
||||
|
||||
<!-- <Flowchart> -->
|
||||
|
||||
### 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>]
|
||||
|
||||
```
|
||||
graph TD;
|
||||
A-->B;
|
||||
A-->C;
|
||||
B-->D;
|
||||
C-->D;
|
||||
flowchart LR
|
||||
|
||||
A[Hard] -->|Text| B(Round)
|
||||
B --> C{Decision}
|
||||
C -->|One| D[Result 1]
|
||||
C -->|Two| E[Result 2]
|
||||
```
|
||||
|
||||
would render this lovely chart:
|
||||
```mermaid
|
||||
flowchart LR
|
||||
|
||||

|
||||
|
||||
|
||||
#Installation
|
||||
|
||||
Either use the bower package manager as per below:
|
||||
|
||||
```
|
||||
bower install mermaid --save-dev
|
||||
A[Hard] -->|Text| B(Round)
|
||||
B --> C{Decision}
|
||||
C -->|One| D[Result 1]
|
||||
C -->|Two| E[Result 2]
|
||||
```
|
||||
|
||||
Or download javascript files:
|
||||
|
||||
* [mermaid including dependencies](http://www.sveido.com/mermaid/dist/mermaid.full.min.js)
|
||||
|
||||
This file bundles mermaid with d3 and dagre-d3.
|
||||
|
||||
* [mermaid without dependencies](http://www.sveido.com/mermaid/dist/mermaid.slim.min.js)
|
||||
|
||||
With this file you will need to include d3 and dagre-d3 yourself.
|
||||
|
||||
# Usage
|
||||
|
||||
Include mermaid on your web page:
|
||||
### 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>]
|
||||
|
||||
```
|
||||
<script src="mermaid.full.min.js"></script>
|
||||
sequenceDiagram
|
||||
Alice->>John: Hello John, how are you?
|
||||
loop Healthcheck
|
||||
John->>John: Fight against hypochondria
|
||||
end
|
||||
Note right of John: Rational thoughts!
|
||||
John-->>Alice: Great!
|
||||
John->>Bob: How about you?
|
||||
Bob-->>John: Jolly good!
|
||||
```
|
||||
|
||||
Further down on your page mermaid will look for tags with ```class="mermaid"```. From these tags mermaid will try to
|
||||
read the chart definiton which will be replaced with the svg chart.
|
||||
|
||||
|
||||
A chart defined like this:
|
||||
```
|
||||
<div class="mermaid">
|
||||
CHART DEFINITION GOES HERE
|
||||
</div>
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
Alice->>John: Hello John, how are you?
|
||||
loop Healthcheck
|
||||
John->>John: Fight against hypochondria
|
||||
end
|
||||
Note right of John: Rational thoughts!
|
||||
John-->>Alice: Great!
|
||||
John->>Bob: How about you?
|
||||
Bob-->>John: Jolly good!
|
||||
```
|
||||
|
||||
Would end up like this:
|
||||
```
|
||||
<div class="mermaid" id="mermaidChart0">
|
||||
<svg>
|
||||
Chart ends up here
|
||||
</svg>
|
||||
</div>
|
||||
```
|
||||
An id is also added to mermaid tags without id.
|
||||
|
||||
|
||||
# A graph example
|
||||
### 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>]
|
||||
|
||||
```
|
||||
graph LR;
|
||||
A[Hard edge]-->|Link text|B(Round edge);
|
||||
B-->C{Decision};
|
||||
C-->|One|D[Result one];
|
||||
C-->|Two|E[Result two];
|
||||
gantt
|
||||
section Section
|
||||
Completed :done, des1, 2014-01-06,2014-01-08
|
||||
Active :active, des2, 2014-01-07, 3d
|
||||
Parallel 1 : des3, after des1, 1d
|
||||
Parallel 2 : des4, after des1, 1d
|
||||
Parallel 3 : des5, after des3, 1d
|
||||
Parallel 4 : des6, after des4, 1d
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
#Syntax
|
||||
## Graph
|
||||
This statement declares a new graph and the direction of the graph layout.
|
||||
|
||||
```
|
||||
graph TD
|
||||
```mermaid
|
||||
gantt
|
||||
section Section
|
||||
Completed :done, des1, 2014-01-06,2014-01-08
|
||||
Active :active, des2, 2014-01-07, 3d
|
||||
Parallel 1 : des3, after des1, 1d
|
||||
Parallel 2 : des4, after des1, 1d
|
||||
Parallel 3 : des5, after des3, 1d
|
||||
Parallel 4 : des6, after des4, 1d
|
||||
```
|
||||
|
||||
This declares a graph oriented from top to bottom.
|
||||
|
||||

|
||||
### 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>]
|
||||
|
||||
```
|
||||
graph LR
|
||||
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()
|
||||
}
|
||||
```
|
||||
|
||||
This declares a graph oriented from left to right.
|
||||
|
||||
Possible directions are:
|
||||
|
||||
* TB - top bottom
|
||||
* BT - bottom top
|
||||
* RL - right left
|
||||
* LR - left right
|
||||
* TD - same as TB
|
||||
|
||||

|
||||
|
||||
## Nodes
|
||||
|
||||
### A node (default)
|
||||
```
|
||||
id1;
|
||||
```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()
|
||||
}
|
||||
```
|
||||
|
||||

|
||||
|
||||
Note that the id is what is displayed in the box.
|
||||
|
||||
### A node with text
|
||||
It is also possible to set text in the box that differs from the id. If this is done several times, it is the last text
|
||||
found for the node that will be used. Also if you define edges for the node later on, you can omit text definitions. The
|
||||
one previously defined will be used when rendering the box.
|
||||
### 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>]
|
||||
|
||||
```
|
||||
id1[This is the text in the box];
|
||||
stateDiagram-v2
|
||||
[*] --> Still
|
||||
Still --> [*]
|
||||
Still --> Moving
|
||||
Moving --> Still
|
||||
Moving --> Crash
|
||||
Crash --> [*]
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
### A node with round edges
|
||||
```
|
||||
id1(This is the text in the box);
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> Still
|
||||
Still --> [*]
|
||||
Still --> Moving
|
||||
Moving --> Still
|
||||
Moving --> Crash
|
||||
Crash --> [*]
|
||||
```
|
||||
|
||||

|
||||
|
||||
### A node in the form of a circle
|
||||
```
|
||||
id1((This is the text in the box));
|
||||
```
|
||||
|
||||

|
||||
|
||||
### A node in an asymetric shape
|
||||
```
|
||||
id1>This is the text in the box];
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
### A node (rhombus)
|
||||
```
|
||||
id1{This is the text in the box};
|
||||
```
|
||||
|
||||

|
||||
|
||||
### Styling a node
|
||||
It is possible to apply specific styles such as a thicker border or a different background color to a node.
|
||||
### 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>]
|
||||
|
||||
```
|
||||
graph LR;
|
||||
id1(Start)-->id2(Stop);
|
||||
style id1 fill:#f9f,stroke:#333,stroke-width:4px;
|
||||
style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5;
|
||||
pie
|
||||
"Dogs" : 386
|
||||
"Cats" : 85.9
|
||||
"Rats" : 15
|
||||
```
|
||||
|
||||

|
||||
|
||||
#### Classes
|
||||
More convenient then defining the style everytime is to define a class of styles and attach this class to the nodes that
|
||||
should have a different look.
|
||||
|
||||
a class definition looks like the example below:
|
||||
|
||||
```
|
||||
classDef className fill:#f9f,stroke:#333,stroke-width:4px;
|
||||
```mermaid
|
||||
pie
|
||||
"Dogs" : 386
|
||||
"Cats" : 85.9
|
||||
"Rats" : 15
|
||||
```
|
||||
|
||||
Attachment of a class to a node is done as per below:
|
||||
### 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>]
|
||||
|
||||
```
|
||||
class nodeId1 className;
|
||||
journey
|
||||
title My working day
|
||||
section Go to work
|
||||
Make tea: 5: Me
|
||||
Go upstairs: 3: Me
|
||||
Do work: 1: Me, Cat
|
||||
section Go home
|
||||
Go downstairs: 5: Me
|
||||
Sit down: 3: Me
|
||||
```
|
||||
|
||||
It is also possible to attach a class to a list of nodes in one statement:
|
||||
|
||||
```
|
||||
class nodeId1,nodeId2 className;
|
||||
```mermaid
|
||||
journey
|
||||
title My working day
|
||||
section Go to work
|
||||
Make tea: 5: Me
|
||||
Go upstairs: 3: Me
|
||||
Do work: 1: Me, Cat
|
||||
section Go home
|
||||
Go downstairs: 5: Me
|
||||
Sit down: 3: Me
|
||||
```
|
||||
|
||||
#### Default class
|
||||
|
||||
If a class is named default it will be assigned to all classes without specific class definitions.
|
||||
### C4 diagram [<a href="https://mermaid-js.github.io/mermaid/#/c4c">docs</a>]
|
||||
|
||||
```
|
||||
classDef default fill:#f9f,stroke:#333,stroke-width:4px;
|
||||
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
|
||||
|
||||
## Links between nodes
|
||||
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.")
|
||||
|
||||
Nodes can be connected with links/edges. It is possible to have different types of links or attach a text string to a link.
|
||||
Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")
|
||||
|
||||
### A link with arrow head
|
||||
```
|
||||
A-->B;
|
||||
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
|
||||
|
||||
### An open link
|
||||
For those who have the permission to do so:
|
||||
|
||||
```
|
||||
A---B;
|
||||
Update version number in `package.json`.
|
||||
|
||||
```sh
|
||||
npm publish
|
||||
```
|
||||
|
||||

|
||||
The above command generates files into the `dist` folder and publishes them to npmjs.org.
|
||||
|
||||
### Text on links
|
||||
## Related projects
|
||||
|
||||
```
|
||||
A---|This is the text|B;
|
||||
```
|
||||
- [Command Line Interface](https://github.com/mermaid-js/mermaid-cli)
|
||||
- [Live Editor](https://github.com/mermaid-js/mermaid-live-editor)
|
||||
- [HTTP Server](https://github.com/TomWright/mermaid-server)
|
||||
|
||||

|
||||
## Contributors [](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+issue%21%22) [](https://github.com/mermaid-js/mermaid/graphs/contributors) [](https://github.com/mermaid-js/mermaid/graphs/contributors)
|
||||
|
||||
### Styling links
|
||||
It is possible to style links for instance a link that is going back in the flow. This is done by the linkStyle statement as in the example below:
|
||||
Mermaid is a growing community and is always accepting new contributors. There's a lot of different ways to help out and we're always looking for extra hands! Look at [this issue](https://github.com/mermaid-js/mermaid/issues/866) if you want to know where to start helping out.
|
||||
|
||||
```
|
||||
linkStyle 3 stroke:#ff3,stroke-width:4px;
|
||||
```
|
||||
Detailed information about how to contribute can be found in the [contribution guide](CONTRIBUTING.md)
|
||||
|
||||
## Interaction
|
||||
## Security and safe diagrams
|
||||
|
||||
It is possible to bind a click event to a node:
|
||||
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.
|
||||
|
||||
```
|
||||
click nodeId callback
|
||||
```
|
||||
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.
|
||||
|
||||
* nodeId is the id of the node
|
||||
* callback is the name of a javascript function defined on the page displaying the graph, the function will be called with the nodeId as parameter.
|
||||
_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._
|
||||
|
||||
## Usage of the parser as a seperate module
|
||||
## Reporting vulnerabilities
|
||||
|
||||
### Setup
|
||||
```
|
||||
var graph = require('./graphDb');
|
||||
var flow = require('./parser/flow');
|
||||
flow.parser.yy = graph;
|
||||
```
|
||||
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.
|
||||
|
||||
### Parsing
|
||||
## Appreciation
|
||||
|
||||
```
|
||||
flow.parser.parse(text);
|
||||
```
|
||||
A quick note from Knut Sveidqvist:
|
||||
|
||||
### Data extraction
|
||||
```
|
||||
graph.getDirection();
|
||||
graph.getVertices();
|
||||
graph.getEdges();
|
||||
```
|
||||
> _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 the ever-growing list of [contributors](https://github.com/knsv/mermaid/graphs/contributors) that brought the project this far!_
|
||||
|
||||
# Credits
|
||||
Many thanks to the [d3](http://d3js.org/) and [dagre-d3](https://github.com/cpettitt/dagre-d3) projects for providing the graphical layout and drawing libraries!
|
||||
---
|
||||
|
||||
_Mermaid was created by Knut Sveidqvist for easier documentation._
|
||||
|
||||
332
README.zh-CN.md
Normal file
332
README.zh-CN.md
Normal file
@@ -0,0 +1,332 @@
|
||||
# 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)
|
||||
|
||||
[English](./README.md) | 简体中文
|
||||
|
||||
<img src="./img/header.png" alt="" />
|
||||
|
||||
:trophy: **Mermaid 被提名并获得了 [JS Open Source Awards (2019)](https://osawards.com/javascript/2019) 的 "The most exciting use of technology" 奖项!!!**
|
||||
|
||||
**感谢所有参与进来提交 PR,解答疑问的人们! 🙏**
|
||||
|
||||
<a href="https://mermaid-js.github.io/mermaid/landing/"><img src="https://github.com/mermaid-js/mermaid/blob/master/docs/img/book-banner-pre-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>
|
||||
|
||||
## 关于 Mermaid
|
||||
|
||||
<!-- <Main description> -->
|
||||
|
||||
Mermaid 是一个基于 Javascript 的图表绘制工具,通过解析类 Markdown 的文本语法来实现图表的创建和动态修改。Mermaid 诞生的主要目的是让文档的更新能够及时跟上开发进度。
|
||||
|
||||
> Doc-Rot 是 Mermaid 致力于解决的一个难题。
|
||||
|
||||
绘图和编写文档花费了开发者宝贵的开发时间,而且随着业务的变更,它很快就会过期。 但是如果缺少了图表或文档,对于生产力和团队新人的业务学习都会产生巨大的阻碍。 <br/>
|
||||
Mermaid 通过允许用户创建便于修改的图表来解决这一难题,它也可以作为生产脚本(或其他代码)的一部分。<br/>
|
||||
<br/>
|
||||
Mermaid 甚至能让非程序员也能通过 [Mermaid Live Editor](https://mermaid.live/) 轻松创建详细的图表。<br/>
|
||||
你可以访问 [教程](./docs/Tutorials.md) 来查看 Live Editor 的视频教程,也可以查看 [Mermaid 的集成和使用](./docs/integrations.md) 这个清单来检查你的文档工具是否已经集成了 Mermaid 支持。
|
||||
|
||||
如果想要查看关于 Mermaid 更详细的介绍及基础使用方式,可以查看 [入门指引](./docs/n00b-overview.md), [用法](./docs/usage.md) 和 [教程](./docs/Tutorials.md).
|
||||
|
||||
🌐 [CDN](https://unpkg.com/mermaid/) | 📖 [文档](https://mermaidjs.github.io) | 🙌 [贡献](https://github.com/mermaid-js/mermaid/blob/develop/CONTRIBUTING.md) | 📜 [更新日志](./docs/CHANGELOG.md)
|
||||
|
||||
<!-- </Main description> -->
|
||||
|
||||
## 示例
|
||||
|
||||
**下面是一些可以使用 Mermaid 创建的图表示例。点击 [语法](https://mermaid-js.github.io/mermaid/#/n00b-syntaxReference) 查看详情。**
|
||||
|
||||
<table>
|
||||
<!-- <Flowchart> -->
|
||||
|
||||
### 流程图 [<a href="https://mermaid-js.github.io/mermaid/#/flowchart">文档</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ3JhcGggVERcbiAgICBBW0hhcmRdIC0tPnxUZXh0fCBCKFJvdW5kKVxuICAgIEIgLS0-IEN7RGVjaXNpb259XG4gICAgQyAtLT58T25lfCBEW1Jlc3VsdCAxXVxuICAgIEMgLS0-fFR3b3wgRVtSZXN1bHQgMl0iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
|
||||
|
||||
```
|
||||
flowchart LR
|
||||
A[Hard] -->|Text| B(Round)
|
||||
B --> C{Decision}
|
||||
C -->|One| D[Result 1]
|
||||
C -->|Two| E[Result 2]
|
||||
```
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[Hard] -->|Text| B(Round)
|
||||
B --> C{Decision}
|
||||
C -->|One| D[Result 1]
|
||||
C -->|Two| E[Result 2]
|
||||
```
|
||||
|
||||
### 时序图 [<a href="https://mermaid-js.github.io/mermaid/#/sequenceDiagram">文档</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG5BbGljZS0-PkpvaG46IEhlbGxvIEpvaG4sIGhvdyBhcmUgeW91P1xubG9vcCBIZWFsdGhjaGVja1xuICAgIEpvaG4tPj5Kb2huOiBGaWdodCBhZ2FpbnN0IGh5cG9jaG9uZHJpYVxuZW5kXG5Ob3RlIHJpZ2h0IG9mIEpvaG46IFJhdGlvbmFsIHRob3VnaHRzIVxuSm9obi0tPj5BbGljZTogR3JlYXQhXG5Kb2huLT4-Qm9iOiBIb3cgYWJvdXQgeW91P1xuQm9iLS0-PkpvaG46IEpvbGx5IGdvb2QhIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
|
||||
|
||||
```
|
||||
sequenceDiagram
|
||||
Alice->>John: Hello John, how are you?
|
||||
loop Healthcheck
|
||||
John->>John: Fight against hypochondria
|
||||
end
|
||||
Note right of John: Rational thoughts!
|
||||
John-->>Alice: Great!
|
||||
John->>Bob: How about you?
|
||||
Bob-->>John: Jolly good!
|
||||
```
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
Alice->>John: Hello John, how are you?
|
||||
loop Healthcheck
|
||||
John->>John: Fight against hypochondria
|
||||
end
|
||||
Note right of John: Rational thoughts!
|
||||
John-->>Alice: Great!
|
||||
John->>Bob: How about you?
|
||||
Bob-->>John: Jolly good!
|
||||
```
|
||||
|
||||
### 甘特图 [<a href="https://mermaid-js.github.io/mermaid/#/gantt">文档</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ2FudHRcbnNlY3Rpb24gU2VjdGlvblxuQ29tcGxldGVkIDpkb25lLCAgICBkZXMxLCAyMDE0LTAxLTA2LDIwMTQtMDEtMDhcbkFjdGl2ZSAgICAgICAgOmFjdGl2ZSwgIGRlczIsIDIwMTQtMDEtMDcsIDNkXG5QYXJhbGxlbCAxICAgOiAgICAgICAgIGRlczMsIGFmdGVyIGRlczEsIDFkXG5QYXJhbGxlbCAyICAgOiAgICAgICAgIGRlczQsIGFmdGVyIGRlczEsIDFkXG5QYXJhbGxlbCAzICAgOiAgICAgICAgIGRlczUsIGFmdGVyIGRlczMsIDFkXG5QYXJhbGxlbCA0ICAgOiAgICAgICAgIGRlczYsIGFmdGVyIGRlczQsIDFkIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
|
||||
|
||||
```
|
||||
gantt
|
||||
section Section
|
||||
Completed :done, des1, 2014-01-06,2014-01-08
|
||||
Active :active, des2, 2014-01-07, 3d
|
||||
Parallel 1 : des3, after des1, 1d
|
||||
Parallel 2 : des4, after des1, 1d
|
||||
Parallel 3 : des5, after des3, 1d
|
||||
Parallel 4 : des6, after des4, 1d
|
||||
```
|
||||
|
||||
```mermaid
|
||||
gantt
|
||||
section Section
|
||||
Completed :done, des1, 2014-01-06,2014-01-08
|
||||
Active :active, des2, 2014-01-07, 3d
|
||||
Parallel 1 : des3, after des1, 1d
|
||||
Parallel 2 : des4, after des1, 1d
|
||||
Parallel 3 : des5, after des3, 1d
|
||||
Parallel 4 : des6, after des4, 1d
|
||||
```
|
||||
|
||||
### 类图 [<a href="https://mermaid-js.github.io/mermaid/#/classDiagram">文档</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiY2xhc3NEaWFncmFtXG5DbGFzczAxIDx8LS0gQXZlcnlMb25nQ2xhc3MgOiBDb29sXG48PGludGVyZmFjZT4-IENsYXNzMDFcbkNsYXNzMDkgLS0-IEMyIDogV2hlcmUgYW0gaT9cbkNsYXNzMDkgLS0qIEMzXG5DbGFzczA5IC0tfD4gQ2xhc3MwN1xuQ2xhc3MwNyA6IGVxdWFscygpXG5DbGFzczA3IDogT2JqZWN0W10gZWxlbWVudERhdGFcbkNsYXNzMDEgOiBzaXplKClcbkNsYXNzMDEgOiBpbnQgY2hpbXBcbkNsYXNzMDEgOiBpbnQgZ29yaWxsYVxuY2xhc3MgQ2xhc3MxMCB7XG4gID4-c2VydmljZT4-XG4gIGludCBpZFxuICBzaXplKClcbn0iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
|
||||
|
||||
```
|
||||
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()
|
||||
}
|
||||
```
|
||||
|
||||
```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
|
||||
[*] --> Still
|
||||
Still --> [*]
|
||||
Still --> Moving
|
||||
Moving --> Still
|
||||
Moving --> Crash
|
||||
Crash --> [*]
|
||||
```
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> Still
|
||||
Still --> [*]
|
||||
Still --> Moving
|
||||
Moving --> Still
|
||||
Moving --> Crash
|
||||
Crash --> [*]
|
||||
```
|
||||
|
||||
### 饼图 [<a href="https://mermaid-js.github.io/mermaid/#/pie">文档</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoicGllXG5cIkRvZ3NcIiA6IDQyLjk2XG5cIkNhdHNcIiA6IDUwLjA1XG5cIlJhdHNcIiA6IDEwLjAxIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
|
||||
|
||||
```
|
||||
pie
|
||||
"Dogs" : 386
|
||||
"Cats" : 85
|
||||
"Rats" : 15
|
||||
```
|
||||
|
||||
```mermaid
|
||||
pie
|
||||
"Dogs" : 386
|
||||
"Cats" : 85
|
||||
"Rats" : 15
|
||||
```
|
||||
|
||||
### 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>]
|
||||
|
||||
```
|
||||
journey
|
||||
title My working day
|
||||
section Go to work
|
||||
Make tea: 5: Me
|
||||
Go upstairs: 3: Me
|
||||
Do work: 1: Me, Cat
|
||||
section Go home
|
||||
Go downstairs: 5: Me
|
||||
Sit down: 3: Me
|
||||
```
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title My working day
|
||||
section Go to work
|
||||
Make tea: 5: Me
|
||||
Go upstairs: 3: Me
|
||||
Do work: 1: Me, Cat
|
||||
section Go home
|
||||
Go downstairs: 5: 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")
|
||||
```
|
||||
|
||||
## 发布
|
||||
|
||||
对于有权限的同学来说,你可以通过以下步骤来完成发布操作:
|
||||
|
||||
更新 `package.json` 中的版本号,然后执行如下命令:
|
||||
|
||||
```sh
|
||||
npm publish
|
||||
```
|
||||
|
||||
以上的命令会将文件打包到 `dist` 目录并发布至 npmjs.org.
|
||||
|
||||
## 相关项目
|
||||
|
||||
- [Command Line Interface](https://github.com/mermaid-js/mermaid-cli)
|
||||
- [Live Editor](https://github.com/mermaid-js/mermaid-live-editor)
|
||||
- [HTTP Server](https://github.com/TomWright/mermaid-server)
|
||||
|
||||
## 贡献者 [](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+issue%21%22) [](https://github.com/mermaid-js/mermaid/graphs/contributors) [](https://github.com/mermaid-js/mermaid/graphs/contributors)
|
||||
|
||||
Mermaid 是一个不断发展中的社区,并且还在接收新的贡献者。有很多不同的方式可以参与进来,而且我们还在寻找额外的帮助。如果你想知道如何开始贡献,请查看 [这个 issue](https://github.com/mermaid-js/mermaid/issues/866)。
|
||||
|
||||
关于如何贡献的详细信息可以在 [贡献指南](CONTRIBUTING.md) 中找到。
|
||||
|
||||
## 安全
|
||||
|
||||
对于公开网站来说,从互联网上的用户处检索文本、存储供后续在浏览器中展示的内容可能是不安全的,理由是用户的内容可能嵌入一些数据加载完成之后就会运行的恶意脚本,这些对于 Mermaid 来说毫无疑问是一个风险,尤其是 mermaid 图表还包含了许多在 html 中使用的字符,这意味着我们难以使用常规的手段来过滤不安全代码,因为这些常规手段会造成图表损坏。我们仍然在努力对获取到的代码进行安全过滤并不断完善我们的程序,但很难保证没有漏洞。
|
||||
|
||||
作为拥有外部用户的网站的额外安全级别,我们很高兴推出一个新的安全级别,其中的图表在沙盒 iframe 中渲染,防止代码中的 javascript 被执行,这是在安全性方面迈出的一大步。
|
||||
|
||||
_很不幸的是,鱼与熊掌不可兼得,在这个场景下它意味着在可能的恶意代码被阻止时,也会损失部分交互能力_。
|
||||
|
||||
## 报告漏洞
|
||||
|
||||
如果想要报告漏洞,请发送邮件到 security@mermaid.live, 并附上问题的描述、复现问题的步骤、受影响的版本,以及解决问题的方案(如果有的话)。
|
||||
|
||||
## 鸣谢
|
||||
|
||||
来自 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 提供了甘特图渲染的灵感。_ >_感谢 [Tyler Long](https://github.com/tylerlong) 从 2017 年四月开始成为了项目的合作者。_
|
||||
>
|
||||
> _感谢越来越多的 [贡献者们](https://github.com/knsv/mermaid/graphs/contributors),没有你们,就没有这个项目的今天!_
|
||||
|
||||
---
|
||||
|
||||
_Mermaid 是由 Knut Sveidqvist 创建,它为了更简单的文档编写而生。_
|
||||
3
__mocks__/MERMAID.js
Normal file
3
__mocks__/MERMAID.js
Normal file
@@ -0,0 +1,3 @@
|
||||
export const curveBasis = 'basis';
|
||||
export const curveLinear = 'linear';
|
||||
export const curveCardinal = 'cardinal';
|
||||
64
__mocks__/d3.js
vendored
Normal file
64
__mocks__/d3.js
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
let NewD3 = function () {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function returnThis() {
|
||||
return this;
|
||||
}
|
||||
return {
|
||||
append: function () {
|
||||
return NewD3();
|
||||
},
|
||||
lower: returnThis,
|
||||
attr: returnThis,
|
||||
style: returnThis,
|
||||
text: returnThis,
|
||||
0: {
|
||||
0: {
|
||||
getBBox: function () {
|
||||
return {
|
||||
height: 10,
|
||||
width: 20,
|
||||
};
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
export const select = function () {
|
||||
return new NewD3();
|
||||
};
|
||||
|
||||
export const selectAll = function () {
|
||||
return new NewD3();
|
||||
};
|
||||
|
||||
export const curveBasis = 'basis';
|
||||
export const curveLinear = 'linear';
|
||||
export const curveCardinal = 'cardinal';
|
||||
|
||||
export const MockD3 = (name, parent) => {
|
||||
const children = [];
|
||||
const elem = {
|
||||
get __children() {
|
||||
return children;
|
||||
},
|
||||
get __name() {
|
||||
return name;
|
||||
},
|
||||
get __parent() {
|
||||
return parent;
|
||||
},
|
||||
};
|
||||
elem.append = (name) => {
|
||||
const mockElem = MockD3(name, elem);
|
||||
children.push(mockElem);
|
||||
return mockElem;
|
||||
};
|
||||
elem.lower = jest.fn(() => elem);
|
||||
elem.attr = jest.fn(() => elem);
|
||||
elem.text = jest.fn(() => elem);
|
||||
elem.style = jest.fn(() => elem);
|
||||
return elem;
|
||||
};
|
||||
16
applitools.cnfig.js
Normal file
16
applitools.cnfig.js
Normal file
@@ -0,0 +1,16 @@
|
||||
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',
|
||||
};
|
||||
10
babel.config.js
Normal file
10
babel.config.js
Normal file
@@ -0,0 +1,10 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
[
|
||||
'@babel/preset-env',
|
||||
{
|
||||
targets: 'defaults, ie >= 11, current node',
|
||||
},
|
||||
],
|
||||
],
|
||||
};
|
||||
28
bower.json
28
bower.json
@@ -1,28 +0,0 @@
|
||||
{
|
||||
"name": "mermaid",
|
||||
"version": "0.2.7",
|
||||
"authors": [
|
||||
"knsv <knut@sveido.com>"
|
||||
],
|
||||
"description": "Markdownish syntax for generating flowcharts",
|
||||
"main": "dist/mermaid.slim.js",
|
||||
"keywords": [
|
||||
"diagram",
|
||||
"markdown",
|
||||
"flowchart"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"vendor",
|
||||
"test",
|
||||
"tests"
|
||||
],
|
||||
"devDependencies": {
|
||||
"jasmine": "~2.0.4",
|
||||
"dagre": "0.6.2",
|
||||
"d3": "3.3.8",
|
||||
"dagre-d3": "0.3.2"
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
// Karma configuration
|
||||
// Generated on Mon Nov 03 2014 07:53:38 GMT+0100 (CET)
|
||||
|
||||
module.exports = function (config) {
|
||||
config.set({
|
||||
|
||||
// base path that will be used to resolve all patterns (eg. files, exclude)
|
||||
basePath: '',
|
||||
|
||||
// frameworks to use
|
||||
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
|
||||
frameworks: ['jasmine'],
|
||||
|
||||
|
||||
// list of files / patterns to load in the browser
|
||||
files: [
|
||||
'../src/**/*.js'
|
||||
],
|
||||
|
||||
|
||||
// list of files to exclude
|
||||
exclude: ['../src/backup/**/*.js'],
|
||||
|
||||
|
||||
// preprocess matching files before serving them to the browser
|
||||
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
|
||||
|
||||
|
||||
// test results reporter to use
|
||||
// possible values: 'dots', 'progress'
|
||||
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
|
||||
reporters: ['progress'],
|
||||
|
||||
|
||||
// web server port
|
||||
port: 9876,
|
||||
|
||||
|
||||
// enable / disable colors in the output (reporters and logs)
|
||||
colors: true,
|
||||
|
||||
|
||||
// level of logging
|
||||
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
|
||||
logLevel: config.LOG_DEBUG,
|
||||
|
||||
|
||||
// enable / disable watching file and executing tests whenever any file changes
|
||||
autoWatch: true,
|
||||
|
||||
|
||||
// start these browsers
|
||||
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
|
||||
browsers: ['Chrome'],
|
||||
|
||||
// Continuous Integration mode
|
||||
// if true, Karma captures browsers, runs the tests and exits
|
||||
singleRun: false
|
||||
});
|
||||
};
|
||||
22
cypress.config.js
Normal file
22
cypress.config.js
Normal file
@@ -0,0 +1,22 @@
|
||||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
|
||||
const { defineConfig } = require('cypress');
|
||||
const { addMatchImageSnapshotPlugin } = require('cypress-image-snapshot/plugin');
|
||||
require('@applitools/eyes-cypress')(module);
|
||||
|
||||
module.exports = defineConfig({
|
||||
e2e: {
|
||||
specPattern: 'cypress/e2e/**/*.{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;
|
||||
config.env.codeBranch = process.env.APPLI_BRANCH;
|
||||
|
||||
// do not forget to return the changed config object!
|
||||
return config;
|
||||
},
|
||||
supportFile: 'cypress/support/index.js',
|
||||
},
|
||||
video: false,
|
||||
});
|
||||
10
cypress/.eslintrc.json
Normal file
10
cypress/.eslintrc.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"env": {
|
||||
"cypress/globals": true
|
||||
},
|
||||
"extends": ["plugin:cypress/recommended"],
|
||||
"plugins": ["cypress"],
|
||||
"rules": {
|
||||
"cypress/no-unnecessary-waiting": 0
|
||||
}
|
||||
}
|
||||
1
cypress/downloads/downloads.html
Normal file
1
cypress/downloads/downloads.html
Normal file
@@ -0,0 +1 @@
|
||||
Cr24
|
||||
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"
|
||||
}
|
||||
128
cypress/helpers/util.js
Normal file
128
cypress/helpers/util.js
Normal file
@@ -0,0 +1,128 @@
|
||||
import { Base64 } from 'js-base64';
|
||||
|
||||
export const mermaidUrl = (graphStr, options, api) => {
|
||||
const obj = {
|
||||
code: graphStr,
|
||||
mermaid: options,
|
||||
};
|
||||
const objStr = JSON.stringify(obj);
|
||||
let url = 'http://localhost:9000/e2e.html?graph=' + Base64.encodeURI(objStr);
|
||||
if (api) {
|
||||
url = 'http://localhost:9000/xss.html?graph=' + graphStr;
|
||||
}
|
||||
|
||||
if (options.listUrl) {
|
||||
cy.log(options.listId, ' ', url);
|
||||
}
|
||||
|
||||
return url;
|
||||
};
|
||||
|
||||
export const imgSnapshotTest = (graphStr, _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');
|
||||
//const useAppli = false;
|
||||
const branch = Cypress.env('codeBranch');
|
||||
cy.log('Hello ' + useAppli ? 'Appli' : 'image-snapshot');
|
||||
const name = (options.name || cy.state('runnable').fullTitle()).replace(/\s+/g, '-');
|
||||
|
||||
if (useAppli) {
|
||||
cy.eyesOpen({
|
||||
appName: 'Mermaid-' + branch,
|
||||
testName: name,
|
||||
batchName: branch,
|
||||
});
|
||||
}
|
||||
|
||||
const url = mermaidUrl(graphStr, options, api);
|
||||
|
||||
cy.visit(url);
|
||||
if (validation) cy.get('svg').should(validation);
|
||||
cy.get('svg');
|
||||
// Default name to test title
|
||||
|
||||
if (useAppli) {
|
||||
cy.eyesCheckWindow('Click!');
|
||||
cy.eyesClose();
|
||||
} else {
|
||||
cy.matchImageSnapshot(name);
|
||||
}
|
||||
};
|
||||
|
||||
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');
|
||||
const branch = Cypress.env('codeBranch');
|
||||
cy.log('Hello ' + useAppli ? 'Appli' : 'image-snapshot');
|
||||
const name = (options.name || cy.state('runnable').fullTitle()).replace(/\s+/g, '-');
|
||||
|
||||
if (useAppli) {
|
||||
cy.eyesOpen({
|
||||
appName: 'Mermaid-' + branch,
|
||||
testName: name,
|
||||
batchName: branch,
|
||||
});
|
||||
}
|
||||
|
||||
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) => {
|
||||
const url = mermaidUrl(graphStr, options, api);
|
||||
|
||||
cy.visit(url);
|
||||
};
|
||||
119
cypress/integration/other/configuration.spec.js
Normal file
119
cypress/integration/other/configuration.spec.js
Normal file
@@ -0,0 +1,119 @@
|
||||
import { renderGraph } from '../../helpers/util';
|
||||
describe('Configuration', () => {
|
||||
describe('arrowMarkerAbsolute', () => {
|
||||
it('should handle default value false of arrowMarkerAbsolute', () => {
|
||||
renderGraph(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{}
|
||||
);
|
||||
|
||||
// Check the marker-end property to make sure it is properly set to
|
||||
// start with #
|
||||
cy.get('.edgePath path')
|
||||
.first()
|
||||
.should('have.attr', 'marker-end')
|
||||
.should('exist')
|
||||
.and('include', 'url(#');
|
||||
});
|
||||
it('should handle default value false of arrowMarkerAbsolute', () => {
|
||||
renderGraph(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{}
|
||||
);
|
||||
|
||||
// Check the marker-end property to make sure it is properly set to
|
||||
// start with #
|
||||
cy.get('.edgePath path')
|
||||
.first()
|
||||
.should('have.attr', 'marker-end')
|
||||
.should('exist')
|
||||
.and('include', 'url(#');
|
||||
});
|
||||
it('should handle arrowMarkerAbsolute explicitly set to false', () => {
|
||||
renderGraph(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{
|
||||
arrowMarkerAbsolute: false,
|
||||
}
|
||||
);
|
||||
|
||||
// Check the marker-end property to make sure it is properly set to
|
||||
// start with #
|
||||
cy.get('.edgePath path')
|
||||
.first()
|
||||
.should('have.attr', 'marker-end')
|
||||
.should('exist')
|
||||
.and('include', 'url(#');
|
||||
});
|
||||
it('should handle arrowMarkerAbsolute explicitly set to "false" as false', () => {
|
||||
renderGraph(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{
|
||||
arrowMarkerAbsolute: 'false',
|
||||
}
|
||||
);
|
||||
|
||||
// Check the marker-end property to make sure it is properly set to
|
||||
// start with #
|
||||
cy.get('.edgePath path')
|
||||
.first()
|
||||
.should('have.attr', 'marker-end')
|
||||
.should('exist')
|
||||
.and('include', 'url(#');
|
||||
});
|
||||
it('should handle arrowMarkerAbsolute set to true', () => {
|
||||
renderGraph(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{
|
||||
arrowMarkerAbsolute: true,
|
||||
}
|
||||
);
|
||||
|
||||
cy.get('.edgePath path')
|
||||
.first()
|
||||
.should('have.attr', 'marker-end')
|
||||
.should('exist')
|
||||
.and('include', 'url(http://localhost');
|
||||
});
|
||||
it('should not taint the initial configuration when using multiple directives', () => {
|
||||
const url = 'http://localhost:9000/regression/issue-1874.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
|
||||
cy.get('svg');
|
||||
cy.matchImageSnapshot(
|
||||
'configuration.spec-should-not-taint-initial-configuration-when-using-multiple-directives'
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
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 },
|
||||
});
|
||||
});
|
||||
});
|
||||
267
cypress/integration/other/interaction.spec.js
Normal file
267
cypress/integration/other/interaction.spec.js
Normal file
@@ -0,0 +1,267 @@
|
||||
describe('Interaction', () => {
|
||||
describe('Interaction - security level loose', () => {
|
||||
it('Graph: should handle a click on a node with a bound function', () => {
|
||||
const url = 'http://localhost:9000/click_security_loose.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('body').find('g#flowchart-Function-4').click();
|
||||
|
||||
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', () => {
|
||||
const url = 'http://localhost:9000/click_security_loose.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('body').find('g#flowchart-FunctionArg-28').click();
|
||||
|
||||
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', () => {
|
||||
const url = 'http://localhost:9000/click_security_loose.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('body').find('g[id="flowchart-FunctionArg-34"]').click();
|
||||
|
||||
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-5').click();
|
||||
|
||||
cy.location().should((location) => {
|
||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.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-11"]').click();
|
||||
|
||||
cy.location().should((location) => {
|
||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.html');
|
||||
});
|
||||
});
|
||||
|
||||
it('Flowchart-v2: should handle a click on a node with a bound function', () => {
|
||||
const url = 'http://localhost:9000/click_security_loose.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('body').find('g#flowchart-Function-16').click();
|
||||
|
||||
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', () => {
|
||||
const url = 'http://localhost:9000/click_security_loose.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('body').find('g[id="flowchart-1Function-22"]').click();
|
||||
|
||||
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-17').click();
|
||||
|
||||
cy.location().should((location) => {
|
||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.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-23"]').click();
|
||||
|
||||
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 rect', () => {
|
||||
const url = 'http://localhost:9000/click_security_loose.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
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', () => {
|
||||
const url = 'http://localhost:9000/click_security_loose.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
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 });
|
||||
|
||||
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 });
|
||||
|
||||
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', () => {
|
||||
const url = 'http://localhost:9000/click_security_loose.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('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 });
|
||||
|
||||
cy.get('.created-by-gant-click').should('have.text', 'Clicked By Gant test1 test2 test3');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Interaction - security level tight', () => {
|
||||
it('should handle a click on a node without a bound function', () => {
|
||||
const url = 'http://localhost:9000/click_security_strict.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('body').find('g#flowchart-Function-4').click();
|
||||
|
||||
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', () => {
|
||||
const url = 'http://localhost:9000/click_security_strict.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('body').find('g[id="flowchart-1Function-10"]').click();
|
||||
|
||||
// cy.get('.created-by-click').should('not.have.text', 'Clicked By Flow');
|
||||
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-5').click();
|
||||
|
||||
cy.location().should((location) => {
|
||||
expect(location.href).to.eq('http://localhost:9000/webpackUsage.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-11"]').click();
|
||||
|
||||
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 rect', () => {
|
||||
const url = 'http://localhost:9000/click_security_strict.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
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', () => {
|
||||
const url = 'http://localhost:9000/click_security_strict.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
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');
|
||||
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');
|
||||
cy.get('.created-by-gant-click').should('not.exist');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Interaction - security level other, missspelling', () => {
|
||||
it('should handle a click on a node with a bound function', () => {
|
||||
const url = 'http://localhost:9000/click_security_other.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('body').find('g#flowchart-Function-4').click();
|
||||
|
||||
// cy.get('.created-by-click').should('not.have.text', 'Clicked By Flow');
|
||||
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', () => {
|
||||
const url = 'http://localhost:9000/click_security_other.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('body').find('g[id="flowchart-1Function-10"]').click();
|
||||
|
||||
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-5').click();
|
||||
|
||||
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_other.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.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 });
|
||||
|
||||
cy.get('.created-by-gant-click').should('not.exist');
|
||||
});
|
||||
});
|
||||
});
|
||||
19
cypress/integration/other/rerender.spec.js
Normal file
19
cypress/integration/other/rerender.spec.js
Normal file
@@ -0,0 +1,19 @@
|
||||
describe('Rerendering', () => {
|
||||
it('should be able to render after an error has occurred', () => {
|
||||
const url = 'http://localhost:9000/render-after-error.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('#graphDiv').should('exist');
|
||||
});
|
||||
|
||||
it('should be able to render and rerender a graph via API', () => {
|
||||
const url = 'http://localhost:9000/rerender.html';
|
||||
cy.viewport(1440, 1024);
|
||||
cy.visit(url);
|
||||
cy.get('#graph [id^=flowchart-A]').should('have.text', 'XMas');
|
||||
|
||||
cy.get('body').find('#rerender').click({ force: true });
|
||||
|
||||
cy.get('#graph [id^=flowchart-A]').should('have.text', 'Saturday');
|
||||
});
|
||||
});
|
||||
16
cypress/integration/other/webpackUsage.spec.js
Normal file
16
cypress/integration/other/webpackUsage.spec.js
Normal file
@@ -0,0 +1,16 @@
|
||||
describe('Sequencediagram', () => {
|
||||
it('should render a simple sequence diagrams', () => {
|
||||
const url = 'http://localhost:9000/webpackUsage.html';
|
||||
|
||||
cy.visit(url);
|
||||
cy.get('body').find('svg').should('have.length', 1);
|
||||
});
|
||||
it('should handle html escapings properly', () => {
|
||||
const url = 'http://localhost:9000/webpackUsage.html?test-html-escaping=true';
|
||||
|
||||
cy.visit(url);
|
||||
cy.get('body').find('svg').should('have.length', 1);
|
||||
|
||||
cy.get('g.label > foreignobject > div').should('not.contain.text', '<b>');
|
||||
});
|
||||
});
|
||||
132
cypress/integration/other/xss.spec.js
Normal file
132
cypress/integration/other/xss.spec.js
Normal file
@@ -0,0 +1,132 @@
|
||||
import { mermaidUrl } from '../../helpers/util.js';
|
||||
describe('XSS', () => {
|
||||
it('should handle xss in tags', () => {
|
||||
const str =
|
||||
'eyJjb2RlIjoiXG5ncmFwaCBMUlxuICAgICAgQi0tPkQoPGltZyBvbmVycm9yPWxvY2F0aW9uPWBqYXZhc2NyaXB0XFx1MDAzYXhzc0F0dGFja1xcdTAwMjhkb2N1bWVudC5kb21haW5cXHUwMDI5YCBzcmM9eD4pOyIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0In19';
|
||||
|
||||
const url = mermaidUrl(str, {}, true);
|
||||
|
||||
cy.visit(url);
|
||||
cy.wait(1000).then(() => {
|
||||
cy.get('.mermaid').should('exist');
|
||||
});
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should not allow tags in the css', () => {
|
||||
const str =
|
||||
'eyJjb2RlIjoiJSV7aW5pdDogeyAnZm9udEZhbWlseSc6ICdcXFwiPjwvc3R5bGU-PGltZyBzcmM9eCBvbmVycm9yPXhzc0F0dGFjaygpPid9IH0lJVxuZ3JhcGggTFJcbiAgICAgQSAtLT4gQiIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0IiwiZmxvd2NoYXJ0Ijp7Imh0bWxMYWJlbHMiOmZhbHNlfX0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9';
|
||||
|
||||
const url = mermaidUrl(
|
||||
str,
|
||||
{
|
||||
theme: 'default',
|
||||
flowchart: {
|
||||
htmlMode: false,
|
||||
},
|
||||
},
|
||||
true
|
||||
);
|
||||
|
||||
cy.visit(url);
|
||||
cy.wait(1000).then(() => {
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle xss in tags in non-html mode', () => {
|
||||
const str =
|
||||
'eyJjb2RlIjoiXG5ncmFwaCBMUlxuICAgICAgQi0tPkQoPGltZyBvbmVycm9yPWxvY2F0aW9uPWBqYXZhc2NyaXB0XFx1MDAzYXhzc0F0dGFja1xcdTAwMjhkb2N1bWVudC5kb21haW5cXHUwMDI5YCBzcmM9eD4pOyIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0IiwiZmxvd2NoYXJ0Ijp7Imh0bWxMYWJlbHMiOmZhbHNlfX19';
|
||||
|
||||
const url = mermaidUrl(
|
||||
str,
|
||||
{
|
||||
theme: 'default',
|
||||
flowchart: {
|
||||
htmlMode: false,
|
||||
},
|
||||
},
|
||||
true
|
||||
);
|
||||
|
||||
cy.visit(url);
|
||||
cy.wait(1000);
|
||||
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
|
||||
it('should not allow changing the __proto__ attribute using config', () => {
|
||||
cy.visit('http://localhost:9000/xss2.html');
|
||||
cy.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
it('should not allow manipulating htmlLabels into a false positive', () => {
|
||||
cy.visit('http://localhost:9000/xss4.html');
|
||||
cy.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
it('should not allow manipulating antiscript to run javascript', () => {
|
||||
cy.visit('http://localhost:9000/xss5.html');
|
||||
cy.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
it('should not allow manipulating antiscript to run javascript using onerror', () => {
|
||||
cy.visit('http://localhost:9000/xss6.html');
|
||||
cy.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
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.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
it('should not allow manipulating antiscript to run javascript using onerror in state diagrams with dagre d3', () => {
|
||||
cy.visit('http://localhost:9000/xss9.html');
|
||||
cy.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
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.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
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.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
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.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
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.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
it('should not allow manipulating antiscript to run javascript iframes in class diagrams', () => {
|
||||
cy.visit('http://localhost:9000/xss14.html');
|
||||
cy.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
it('should sanitize cardinalities properly in class diagrams', () => {
|
||||
cy.visit('http://localhost:9000/xss18.html');
|
||||
cy.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
it('should sanitize colons properly', () => {
|
||||
cy.visit('http://localhost:9000/xss20.html');
|
||||
cy.wait(1000);
|
||||
cy.get('a').click('');
|
||||
cy.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
it('should sanitize colons properly', () => {
|
||||
cy.visit('http://localhost:9000/xss21.html');
|
||||
cy.wait(1000);
|
||||
cy.get('a').click('');
|
||||
cy.wait(1000);
|
||||
cy.get('#the-malware').should('not.exist');
|
||||
});
|
||||
});
|
||||
59
cypress/integration/rendering/appli.spec.js
Normal file
59
cypress/integration/rendering/appli.spec.js
Normal file
@@ -0,0 +1,59 @@
|
||||
import { imgSnapshotTest } from '../../helpers/util.js';
|
||||
|
||||
describe('Git Graph diagram', () => {
|
||||
it('1: should render a simple gitgraph with commit on main branch', () => {
|
||||
imgSnapshotTest(
|
||||
`gitGraph
|
||||
commit id: "1"
|
||||
commit id: "2"
|
||||
commit id: "3"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
// it(`ultraFastTest`, function () {
|
||||
// // Navigate to the url we want to test
|
||||
// // ⭐️ Note to see visual bugs, run the test using the above URL for the 1st run.
|
||||
// // but then change the above URL to https://demo.applitools.com/index_v2.html
|
||||
// // (for the 2nd run)
|
||||
// cy.visit('https://demo.applitools.com');
|
||||
|
||||
// // Call Open on eyes to initialize a test session
|
||||
// cy.eyesOpen({
|
||||
// appName: 'Demo App',
|
||||
// testName: 'Ultrafast grid demo',
|
||||
// });
|
||||
|
||||
// // check the login page with fluent api, see more info here
|
||||
// // https://applitools.com/docs/topics/sdk/the-eyes-sdk-check-fluent-api.html
|
||||
// cy.eyesCheckWindow({
|
||||
// tag: 'Login Window',
|
||||
// target: 'window',
|
||||
// fully: true,
|
||||
// });
|
||||
|
||||
// cy.get('#log-in').click();
|
||||
|
||||
// // Check the app page
|
||||
// cy.eyesCheckWindow({
|
||||
// tag: 'App Window',
|
||||
// target: 'window',
|
||||
// fully: true,
|
||||
// });
|
||||
|
||||
// // Call Close on eyes to let the server know it should display the results
|
||||
// cy.eyesClose();
|
||||
// });
|
||||
// it('works', () => {
|
||||
// cy.visit('https://applitools.com/helloworld');
|
||||
// cy.eyesOpen({
|
||||
// appName: 'Hello World!',
|
||||
// testName: 'My first JavaScript test!',
|
||||
// browser: { width: 800, height: 600 },
|
||||
// });
|
||||
// cy.eyesCheckWindow('Main Page');
|
||||
// cy.get('button').click();
|
||||
// cy.eyesCheckWindow('Click!');
|
||||
// cy.eyesClose();
|
||||
// });
|
||||
});
|
||||
481
cypress/integration/rendering/classDiagram-v2.spec.js
Normal file
481
cypress/integration/rendering/classDiagram-v2.spec.js
Normal file
@@ -0,0 +1,481 @@
|
||||
import { imgSnapshotTest } from '../../helpers/util';
|
||||
describe('Class diagram V2', () => {
|
||||
it('0: should render a simple class diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
|
||||
classA -- classB : Inheritance
|
||||
classA -- classC : link
|
||||
classC -- classD : link
|
||||
classB -- classD
|
||||
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('1: should render a simple class diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 *-- Class04
|
||||
Class05 o-- Class06
|
||||
Class07 .. Class08
|
||||
Class09 --> C2 : Where am i?
|
||||
Class09 --* C3
|
||||
Class09 --|> Class07
|
||||
Class12 <|.. Class08
|
||||
Class11 ..>Class12
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class01 : -int privateChimp
|
||||
Class01 : +int publicGorilla
|
||||
Class01 : #int protectedMarmoset
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('2: should render a simple class diagrams with cardinality', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 "1" *-- "*" Class04
|
||||
Class05 "1" o-- "many" Class06
|
||||
Class07 "1" .. "*" Class08
|
||||
Class09 "1" --> "*" C2 : Where am i?
|
||||
Class09 "*" --* "*" C3
|
||||
Class09 "1" --|> "1" Class07
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 "1" <--> "*" C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render a simple class diagram with different visibilities', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class01 : -privateMethod()
|
||||
Class01 : +publicMethod()
|
||||
Class01 : #protectedMethod()
|
||||
Class01 : -int privateChimp
|
||||
Class01 : +int publicGorilla
|
||||
Class01 : #int protectedMarmoset
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render multiple class diagrams', () => {
|
||||
imgSnapshotTest(
|
||||
[
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 "1" *-- "*" Class04
|
||||
Class05 "1" o-- "many" Class06
|
||||
Class07 "1" .. "*" Class08
|
||||
Class09 "1" --> "*" C2 : Where am i?
|
||||
Class09 "*" --* "*" C3
|
||||
Class09 "1" --|> "1" Class07
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 "1" <--> "*" C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 "1" *-- "*" Class04
|
||||
Class05 "1" o-- "many" Class06
|
||||
Class07 "1" .. "*" Class08
|
||||
Class09 "1" --> "*" C2 : Where am i?
|
||||
Class09 "*" --* "*" C3
|
||||
Class09 "1" --|> "1" Class07
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 "1" <--> "*" C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
],
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('4: should render a simple class diagram with comments', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
%% this is a comment
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 *-- Class04
|
||||
Class05 o-- Class06
|
||||
Class07 .. Class08
|
||||
Class09 --> C2 : Where am i?
|
||||
Class09 --* C3
|
||||
Class09 --|> Class07
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('5: should render a simple class diagram with abstract method', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
Class01 : someMethod()*
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('6: should render a simple class diagram with static method', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
Class01 : someMethod()$
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('7: should render a simple class diagram with Generic class', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
class Class01~T~
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10~T~ {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('8: should render a simple class diagram with Generic class and relations', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01~T~ <|-- AveryLongClass : Cool
|
||||
Class03~T~ *-- Class04~T~
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10~T~ {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('9: should render a simple class diagram with clickable link', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01~T~ <|-- AveryLongClass : Cool
|
||||
Class03~T~ *-- Class04~T~
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10~T~ {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
link Class01 "google.com" "A Tooltip"
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('10: should render a simple class diagram with clickable callback', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
Class01~T~ <|-- AveryLongClass : Cool
|
||||
Class03~T~ *-- Class04~T~
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10~T~ {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
callback Class01 "functionCall" "A Tooltip"
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('11: should render a simple class diagram with return type on method', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
class Class10~T~ {
|
||||
int[] id
|
||||
test(int[] ids) bool
|
||||
testArray() bool[]
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('12: should render a simple class diagram with generic types', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
class Class10~T~ {
|
||||
int[] id
|
||||
List~int~ ids
|
||||
test(List~int~ ids) List~bool~
|
||||
testArray() bool[]
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('13: should render a simple class diagram with css classes applied', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
class Class10 {
|
||||
int[] id
|
||||
List~int~ ids
|
||||
test(List~int~ ids) List~bool~
|
||||
testArray() bool[]
|
||||
}
|
||||
|
||||
cssClass "Class10" exClass2
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('14: should render a simple class diagram with css classes applied directly', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
class Class10:::exClass2 {
|
||||
int[] id
|
||||
List~int~ ids
|
||||
test(List~int~ ids) List~bool~
|
||||
testArray() bool[]
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('15: should render a simple class diagram with css classes applied two multiple classes', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
class Class10
|
||||
class Class20
|
||||
|
||||
cssClass "Class10, class20" exClass2
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('16a: should render a simple class diagram with static field', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram-v2
|
||||
class Foo {
|
||||
+String bar$
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('16b: should handle the direction statement with TB', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
direction TB
|
||||
class Student {
|
||||
-idCard : IdCard
|
||||
}
|
||||
class IdCard{
|
||||
-id : int
|
||||
-name : string
|
||||
}
|
||||
class Bike{
|
||||
-id : int
|
||||
-name : string
|
||||
}
|
||||
Student "1" --o "1" IdCard : carries
|
||||
Student "1" --o "1" Bike : rides
|
||||
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('18: should handle the direction statement with LR', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
direction LR
|
||||
class Student {
|
||||
-idCard : IdCard
|
||||
}
|
||||
class IdCard{
|
||||
-id : int
|
||||
-name : string
|
||||
}
|
||||
class Bike{
|
||||
-id : int
|
||||
-name : string
|
||||
}
|
||||
Student "1" --o "1" IdCard : carries
|
||||
Student "1" --o "1" Bike : rides
|
||||
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('17a: should handle the direction statement with BT', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
direction BT
|
||||
class Student {
|
||||
-idCard : IdCard
|
||||
}
|
||||
class IdCard{
|
||||
-id : int
|
||||
-name : string
|
||||
}
|
||||
class Bike{
|
||||
-id : int
|
||||
-name : string
|
||||
}
|
||||
Student "1" --o "1" IdCard : carries
|
||||
Student "1" --o "1" Bike : rides
|
||||
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('17b: should handle the direction statement with RL', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
direction RL
|
||||
class Student {
|
||||
-idCard : IdCard
|
||||
}
|
||||
class IdCard{
|
||||
-id : int
|
||||
-name : string
|
||||
}
|
||||
class Bike{
|
||||
-id : int
|
||||
-name : string
|
||||
}
|
||||
Student "1" --o "1" IdCard : carries
|
||||
Student "1" --o "1" Bike : rides
|
||||
|
||||
`,
|
||||
{ logLevel: 1, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
});
|
||||
410
cypress/integration/rendering/classDiagram.spec.js
Normal file
410
cypress/integration/rendering/classDiagram.spec.js
Normal file
@@ -0,0 +1,410 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util';
|
||||
|
||||
describe('Class diagram', () => {
|
||||
it('1: should render a simple class diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 *-- Class04
|
||||
Class05 o-- Class06
|
||||
Class07 .. Class08
|
||||
Class09 --> C2 : Where am i?
|
||||
Class09 --* C3
|
||||
Class09 --|> Class07
|
||||
Class12 <|.. Class08
|
||||
Class11 ..>Class12
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class01 : -int privateChimp
|
||||
Class01 : +int publicGorilla
|
||||
Class01 : #int protectedMarmoset
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('2: should render a simple class diagrams with cardinality', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 "1" *-- "*" Class04
|
||||
Class05 "1" o-- "many" Class06
|
||||
Class07 "1" .. "*" Class08
|
||||
Class09 "1" --> "*" C2 : Where am i?
|
||||
Class09 "*" --* "*" C3
|
||||
Class09 "1" --|> "1" Class07
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 "1" <--> "*" C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('3: should render a simple class diagram with different visibilities', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class01 : -privateMethod()
|
||||
Class01 : +publicMethod()
|
||||
Class01 : #protectedMethod()
|
||||
Class01 : -int privateChimp
|
||||
Class01 : +int publicGorilla
|
||||
Class01 : #int protectedMarmoset
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('4: should render a simple class diagram with comments', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
%% this is a comment
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 *-- Class04
|
||||
Class05 o-- Class06
|
||||
Class07 .. Class08
|
||||
Class09 --> C2 : Where am i?
|
||||
Class09 --* C3
|
||||
Class09 --|> Class07
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('5: should render a simple class diagram with abstract method', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
Class01 : someMethod()*
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('6: should render a simple class diagram with static method', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
Class01 <|-- AveryLongClass : Cool
|
||||
Class01 : someMethod()$
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('7: should render a simple class diagram with Generic class', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
class Class01~T~
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10~T~ {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('8: should render a simple class diagram with Generic class and relations', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
Class01~T~ <|-- AveryLongClass : Cool
|
||||
Class03~T~ *-- Class04~T~
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10~T~ {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('9: should render a simple class diagram with clickable link', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
Class01~T~ <|-- AveryLongClass : Cool
|
||||
Class03~T~ *-- Class04~T~
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10~T~ {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
link Class01 "google.com" "A Tooltip"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('10: should render a simple class diagram with clickable callback', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
Class01~T~ <|-- AveryLongClass : Cool
|
||||
Class03~T~ *-- Class04~T~
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10~T~ {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
callback Class01 "functionCall" "A Tooltip"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('11: should render a simple class diagram with return type on method', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
class Class10~T~ {
|
||||
int[] id
|
||||
test(int[] ids) bool
|
||||
testArray() bool[]
|
||||
}
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('12: should render a simple class diagram with generic types', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
class Class10~T~ {
|
||||
int[] id
|
||||
List~int~ ids
|
||||
test(List~int~ ids) List~bool~
|
||||
testArray() bool[]
|
||||
}
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('13: should render a simple class diagram with css classes applied', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
class Class10 {
|
||||
int[] id
|
||||
List~int~ ids
|
||||
test(List~int~ ids) List~bool~
|
||||
testArray() bool[]
|
||||
}
|
||||
|
||||
class Class10:::exClass2
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('14: should render a simple class diagram with css classes applied directly', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
class Class10:::exClass2 {
|
||||
int[] id
|
||||
List~int~ ids
|
||||
test(List~int~ ids) List~bool~
|
||||
testArray() bool[]
|
||||
}
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('15: should render a simple class diagram with css classes applied two multiple classes', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
classDiagram
|
||||
class Class10
|
||||
class Class20
|
||||
|
||||
cssClass "Class10, Class20" exClass2
|
||||
class Class20:::exClass2
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('16: should render multiple class diagrams', () => {
|
||||
imgSnapshotTest(
|
||||
[
|
||||
`
|
||||
classDiagram
|
||||
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 "1" *-- "*" Class04
|
||||
Class05 "1" o-- "many" Class06
|
||||
Class07 "1" .. "*" Class08
|
||||
Class09 "1" --> "*" C2 : Where am i?
|
||||
Class09 "*" --* "*" C3
|
||||
Class09 "1" --|> "1" Class07
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 "1" <--> "*" C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
`
|
||||
classDiagram
|
||||
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
||||
<<interface>> Class01
|
||||
Class03 "1" *-- "*" Class04
|
||||
Class05 "1" o-- "many" Class06
|
||||
Class07 "1" .. "*" Class08
|
||||
Class09 "1" --> "*" C2 : Where am i?
|
||||
Class09 "*" --* "*" C3
|
||||
Class09 "1" --|> "1" Class07
|
||||
Class07 : equals()
|
||||
Class07 : Object[] elementData
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 "1" <--> "*" C2: Cool label
|
||||
class Class10 {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
`,
|
||||
],
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
// it('17: should render a class diagram when useMaxWidth is true (default)', () => {
|
||||
// renderGraph(
|
||||
// `
|
||||
// classDiagram
|
||||
// Class01 <|-- AveryLongClass : Cool
|
||||
// Class01 : size()
|
||||
// Class01 : int chimp
|
||||
// Class01 : int gorilla
|
||||
// Class01 : -int privateChimp
|
||||
// Class01 : +int publicGorilla
|
||||
// Class01 : #int protectedMarmoset
|
||||
// `,
|
||||
// { class: { useMaxWidth: true } }
|
||||
// );
|
||||
// cy.get('svg')
|
||||
// .should((svg) => {
|
||||
// expect(svg).to.have.attr('width', '100%');
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.be.within(332, 333);
|
||||
// // expect(svg).to.have.attr('height', '218');
|
||||
// const style = svg.attr('style');
|
||||
// expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
// const maxWidthValue = parseInt(style.match(/[\d.]+/g).join(''));
|
||||
// // use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// expect(maxWidthValue).to.be.within(203, 204);
|
||||
// });
|
||||
// });
|
||||
|
||||
// it('18: should render a class diagram when useMaxWidth is false', () => {
|
||||
// renderGraph(
|
||||
// `
|
||||
// classDiagram
|
||||
// Class01 <|-- AveryLongClass : Cool
|
||||
// Class01 : size()
|
||||
// Class01 : int chimp
|
||||
// Class01 : int gorilla
|
||||
// Class01 : -int privateChimp
|
||||
// Class01 : +int publicGorilla
|
||||
// Class01 : #int protectedMarmoset
|
||||
// `,
|
||||
// { class: { useMaxWidth: false } }
|
||||
// );
|
||||
// cy.get('svg')
|
||||
// .should((svg) => {
|
||||
// const width = parseFloat(svg.attr('width'));
|
||||
// // use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// expect(width).to.be.within(100, 101);
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.be.within(332, 333);
|
||||
// // expect(svg).to.have.attr('height', '332');
|
||||
// // expect(svg).to.not.have.attr('style');
|
||||
// });
|
||||
// });
|
||||
});
|
||||
140
cypress/integration/rendering/conf-and-directives.spec.js
Normal file
140
cypress/integration/rendering/conf-and-directives.spec.js
Normal file
@@ -0,0 +1,140 @@
|
||||
import { imgSnapshotTest } from '../../helpers/util.js';
|
||||
|
||||
describe('Configuration and directives - nodes should be light blue', () => {
|
||||
it('No config - use default', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TD
|
||||
A(Default) --> B[/Another/]
|
||||
A --> C[End]
|
||||
subgraph section
|
||||
B
|
||||
C
|
||||
end
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('Settings from initialize - nodes should be green', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TD
|
||||
A(Forest) --> B[/Another/]
|
||||
A --> C[End]
|
||||
subgraph section
|
||||
B
|
||||
C
|
||||
end `,
|
||||
{ theme: 'forest' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('Settings from initialize overriding themeVariable - nodes should be red', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
|
||||
|
||||
%%{init: { 'theme': 'base', 'themeVariables':{ 'primaryColor': '#ff0000'}}}%%
|
||||
graph TD
|
||||
A(Start) --> B[/Another/]
|
||||
A[/Another/] --> C[End]
|
||||
subgraph section
|
||||
B
|
||||
C
|
||||
end
|
||||
`,
|
||||
{ theme: 'base', themeVariables: { primaryColor: '#ff0000' }, logLevel: 0 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('Settings from directive - nodes should be grey', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0, 'theme': 'neutral'} }%%
|
||||
graph TD
|
||||
A(Start) --> B[/Another/]
|
||||
A[/Another/] --> C[End]
|
||||
subgraph section
|
||||
B
|
||||
C
|
||||
end
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('Settings from directive overriding theme variable - nodes should be red', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: {'theme': 'base', 'themeVariables':{ 'primaryColor': '#ff0000'}}}%%
|
||||
graph TD
|
||||
A(Start) --> B[/Another/]
|
||||
A[/Another/] --> C[End]
|
||||
subgraph section
|
||||
B
|
||||
C
|
||||
end
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('Settings from initialize and directive - nodes should be grey', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0, 'theme': 'neutral'} }%%
|
||||
graph TD
|
||||
A(Start) --> B[/Another/]
|
||||
A[/Another/] --> C[End]
|
||||
subgraph section
|
||||
B
|
||||
C
|
||||
end
|
||||
`,
|
||||
{ theme: 'forest' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('Theme from initialize, directive overriding theme variable - nodes should be red', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: {'theme': 'base', 'themeVariables':{ 'primaryColor': '#ff0000'}}}%%
|
||||
graph TD
|
||||
A(Start) --> B[/Another/]
|
||||
A[/Another/] --> C[End]
|
||||
subgraph section
|
||||
B
|
||||
C
|
||||
end
|
||||
`,
|
||||
{ theme: 'base' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('Theme variable from initialize, theme from directive - nodes should be red', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0, 'theme': 'base'} }%%
|
||||
graph TD
|
||||
A(Start) --> B[/Another/]
|
||||
A[/Another/] --> C[End]
|
||||
subgraph section
|
||||
B
|
||||
C
|
||||
end
|
||||
`,
|
||||
{ themeVariables: { primaryColor: '#ff0000' } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
describe('when rendering several diagrams', () => {
|
||||
it('diagrams should not taint later diagrams', () => {
|
||||
const url = 'http://localhost:9000/theme-directives.html';
|
||||
cy.visit(url);
|
||||
cy.get('svg');
|
||||
cy.matchImageSnapshot('conf-and-directives.spec-when-rendering-several-diagrams-diagram-1');
|
||||
});
|
||||
});
|
||||
});
|
||||
20
cypress/integration/rendering/current.spec.js
Normal file
20
cypress/integration/rendering/current.spec.js
Normal file
@@ -0,0 +1,20 @@
|
||||
import { imgSnapshotTest } from '../../helpers/util';
|
||||
|
||||
describe('State diagram', () => {
|
||||
it('should render a state with states in it', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
state PersonalizedCockpit {
|
||||
Other
|
||||
state Parent {
|
||||
C
|
||||
}
|
||||
}
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
12
cypress/integration/rendering/debug.spec.js
Normal file
12
cypress/integration/rendering/debug.spec.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import { imgSnapshotTest } from '../../helpers/util';
|
||||
|
||||
describe('Flowchart', () => {
|
||||
it('34: testing the label width in percy', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[Christmas]
|
||||
`,
|
||||
{ theme: 'forest', fontFamily: '"Noto Sans SC", sans-serif' }
|
||||
);
|
||||
});
|
||||
});
|
||||
258
cypress/integration/rendering/erDiagram.spec.js
Normal file
258
cypress/integration/rendering/erDiagram.spec.js
Normal file
@@ -0,0 +1,258 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util';
|
||||
|
||||
describe('Entity Relationship Diagram', () => {
|
||||
it('should render a simple ER diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
erDiagram
|
||||
CUSTOMER ||--o{ ORDER : places
|
||||
ORDER ||--|{ LINE-ITEM : contains
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render an ER diagram with a recursive relationship', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
erDiagram
|
||||
CUSTOMER ||..o{ CUSTOMER : refers
|
||||
CUSTOMER ||--o{ ORDER : places
|
||||
ORDER ||--|{ LINE-ITEM : contains
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render an ER diagram with multiple relationships between the same two entities', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
erDiagram
|
||||
CUSTOMER ||--|{ ADDRESS : "invoiced at"
|
||||
CUSTOMER ||--|{ ADDRESS : "receives goods at"
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render a cyclical ER diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
erDiagram
|
||||
A ||--|{ B : likes
|
||||
B ||--|{ C : likes
|
||||
C ||--|{ A : likes
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render a not-so-simple ER diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
erDiagram
|
||||
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
||||
CUSTOMER ||--o{ ORDER : places
|
||||
CUSTOMER ||--o{ INVOICE : "liable for"
|
||||
DELIVERY-ADDRESS ||--o{ ORDER : receives
|
||||
INVOICE ||--|{ ORDER : covers
|
||||
ORDER ||--|{ ORDER-ITEM : includes
|
||||
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
||||
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render multiple ER diagrams', () => {
|
||||
imgSnapshotTest(
|
||||
[
|
||||
`
|
||||
erDiagram
|
||||
CUSTOMER ||--o{ ORDER : places
|
||||
ORDER ||--|{ LINE-ITEM : contains
|
||||
`,
|
||||
`
|
||||
erDiagram
|
||||
CUSTOMER ||--o{ ORDER : places
|
||||
ORDER ||--|{ LINE-ITEM : contains
|
||||
`,
|
||||
],
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render an ER diagram with blank or empty labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
erDiagram
|
||||
BOOK }|..|{ AUTHOR : ""
|
||||
BOOK }|..|{ GENRE : " "
|
||||
AUTHOR }|..|{ GENRE : " "
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render an ER diagrams when useMaxWidth is true (default)', () => {
|
||||
renderGraph(
|
||||
`
|
||||
erDiagram
|
||||
CUSTOMER ||--o{ ORDER : places
|
||||
ORDER ||--|{ LINE-ITEM : contains
|
||||
`,
|
||||
{ er: { useMaxWidth: true } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
expect(svg).to.have.attr('width', '100%');
|
||||
// expect(svg).to.have.attr('height', '465');
|
||||
const style = svg.attr('style');
|
||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
expect(maxWidthValue).to.be.within(140 * 0.95, 140 * 1.05);
|
||||
});
|
||||
});
|
||||
|
||||
it('should render an ER when useMaxWidth is false', () => {
|
||||
renderGraph(
|
||||
`
|
||||
erDiagram
|
||||
CUSTOMER ||--o{ ORDER : places
|
||||
ORDER ||--|{ LINE-ITEM : contains
|
||||
`,
|
||||
{ er: { useMaxWidth: false } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
const width = parseFloat(svg.attr('width'));
|
||||
// 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(svg).to.have.attr('height', '465');
|
||||
expect(svg).to.not.have.attr('style');
|
||||
});
|
||||
});
|
||||
|
||||
it('should render entities that have no relationships', () => {
|
||||
renderGraph(
|
||||
`
|
||||
erDiagram
|
||||
DEAD_PARROT
|
||||
HERMIT
|
||||
RECLUSE
|
||||
SOCIALITE }o--o{ SOCIALITE : "interacts with"
|
||||
RECLUSE }o--o{ SOCIALITE : avoids
|
||||
`,
|
||||
{ er: { useMaxWidth: false } }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render entities with and without attributes', () => {
|
||||
renderGraph(
|
||||
`
|
||||
erDiagram
|
||||
BOOK { string title }
|
||||
AUTHOR }|..|{ BOOK : writes
|
||||
BOOK { float price }
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
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', () => {
|
||||
renderGraph(
|
||||
`
|
||||
erDiagram
|
||||
PRIVATE_FINANCIAL_INSTITUTION {
|
||||
string name
|
||||
int turnover
|
||||
}
|
||||
PRIVATE_FINANCIAL_INSTITUTION ||..|{ EMPLOYEE : employs
|
||||
EMPLOYEE { bool officer_of_firm }
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render entities with keys', () => {
|
||||
renderGraph(
|
||||
`
|
||||
erDiagram
|
||||
AUTHOR_WITH_LONG_ENTITY_NAME {
|
||||
string name PK
|
||||
}
|
||||
AUTHOR_WITH_LONG_ENTITY_NAME }|..|{ BOOK : writes
|
||||
BOOK {
|
||||
float price
|
||||
string author FK
|
||||
string title PK
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render entities with comments', () => {
|
||||
renderGraph(
|
||||
`
|
||||
erDiagram
|
||||
AUTHOR_WITH_LONG_ENTITY_NAME {
|
||||
string name "comment"
|
||||
}
|
||||
AUTHOR_WITH_LONG_ENTITY_NAME }|..|{ BOOK : writes
|
||||
BOOK {
|
||||
string author
|
||||
string title "author comment"
|
||||
float price "price comment"
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render entities with keys and comments', () => {
|
||||
renderGraph(
|
||||
`
|
||||
erDiagram
|
||||
AUTHOR_WITH_LONG_ENTITY_NAME {
|
||||
string name PK "comment"
|
||||
}
|
||||
AUTHOR_WITH_LONG_ENTITY_NAME }|..|{ BOOK : writes
|
||||
BOOK {
|
||||
string description
|
||||
float price "price comment"
|
||||
string title PK "title comment"
|
||||
string author FK
|
||||
}
|
||||
`,
|
||||
{ logLevel: 1 }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
});
|
||||
666
cypress/integration/rendering/flowchart-v2.spec.js
Normal file
666
cypress/integration/rendering/flowchart-v2.spec.js
Normal file
@@ -0,0 +1,666 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util';
|
||||
|
||||
describe('Flowchart v2', () => {
|
||||
it('1: should render a simple flowchart', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
it('2: should render a simple flowchart with diagramPadding set to 0', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
%% this is a comment
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { diagramPadding: 0 } }
|
||||
);
|
||||
});
|
||||
|
||||
it('3: a link with correct arrowhead to a subgraph', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TD
|
||||
P1
|
||||
P1 -->P1.5
|
||||
subgraph P1.5
|
||||
P2
|
||||
P2.5(( A ))
|
||||
P3
|
||||
end
|
||||
P2 --> P4
|
||||
P3 --> P6
|
||||
P1.5 --> P5
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
it('4: Length of edges', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TD
|
||||
L1 --- L2
|
||||
L2 --- C
|
||||
M1 ---> C
|
||||
R1 .-> R2
|
||||
R2 <.-> C
|
||||
C -->|Label 1| E1
|
||||
C <-- Label 2 ---> E2
|
||||
C ----> E3
|
||||
C <-...-> E4
|
||||
C ======> E5
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('5: should render escaped without html labels', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TD
|
||||
a["<strong>Haiya</strong>"]---->b
|
||||
`,
|
||||
{ htmlLabels: false, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
});
|
||||
it('6: should render non-escaped with html labels', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TD
|
||||
a["<strong>Haiya</strong>"]===>b
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('7: should render a flowchart when useMaxWidth is true (default)', () => {
|
||||
renderGraph(
|
||||
`flowchart TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { useMaxWidth: true } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
expect(svg).to.have.attr('width', '100%');
|
||||
// expect(svg).to.have.attr('height');
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
||||
const style = svg.attr('style');
|
||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||
expect(maxWidthValue).to.be.within(290 * 0.95 - 1, 290 * 1.05);
|
||||
});
|
||||
});
|
||||
it('8: should render a flowchart when useMaxWidth is false', () => {
|
||||
renderGraph(
|
||||
`flowchart TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { useMaxWidth: false } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
const width = parseFloat(svg.attr('width'));
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
||||
expect(width).to.be.within(290 * 0.95 - 1, 290 * 1.05);
|
||||
expect(svg).to.not.have.attr('style');
|
||||
});
|
||||
});
|
||||
|
||||
it('V2 - 16: Render Stadium shape', () => {
|
||||
imgSnapshotTest(
|
||||
` flowchart TD
|
||||
A([stadium shape test])
|
||||
A -->|Get money| B([Go shopping])
|
||||
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?])
|
||||
C -->|One| D([Laptop])
|
||||
C -->|Two| E([iPhone])
|
||||
C -->|Three| F([Car<br/>wroom wroom])
|
||||
click A "index.html#link-clicked" "link test"
|
||||
click B testClick "click test"
|
||||
classDef someclass fill:#f96;
|
||||
class A someclass;
|
||||
class C someclass;
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('50: handle nested subgraphs in reverse order', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart LR
|
||||
a -->b
|
||||
subgraph A
|
||||
B
|
||||
end
|
||||
subgraph B
|
||||
b
|
||||
end
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('51: handle nested subgraphs in reverse order', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart LR
|
||||
a -->b
|
||||
subgraph A
|
||||
B
|
||||
end
|
||||
subgraph B
|
||||
b
|
||||
end
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('52: handle nested subgraphs in several levels', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TB
|
||||
b-->B
|
||||
a-->c
|
||||
subgraph O
|
||||
A
|
||||
end
|
||||
subgraph B
|
||||
c
|
||||
end
|
||||
subgraph A
|
||||
a
|
||||
b
|
||||
B
|
||||
end
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('53: handle nested subgraphs with edges in and out', () => {
|
||||
imgSnapshotTest(
|
||||
`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
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('54: handle nested subgraphs with outgoing links', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TD
|
||||
subgraph main
|
||||
subgraph subcontainer
|
||||
subcontainer-child
|
||||
end
|
||||
subcontainer-child--> subcontainer-sibling
|
||||
end
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('55: handle nested subgraphs with outgoing links 2', () => {
|
||||
imgSnapshotTest(
|
||||
`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
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('56: handle nested subgraphs with outgoing links 3', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TB
|
||||
subgraph container_Beta
|
||||
process_C-->Process_D
|
||||
end
|
||||
subgraph container_Alpha
|
||||
process_A-->process_B
|
||||
process_A-->|messages|process_C
|
||||
end
|
||||
process_B-->|via_AWSBatch|container_Beta
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('57: handle nested subgraphs with outgoing links 4', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart LR
|
||||
subgraph A
|
||||
a -->b
|
||||
end
|
||||
subgraph B
|
||||
b
|
||||
end
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('57: handle nested subgraphs with outgoing links 2', () => {
|
||||
imgSnapshotTest(
|
||||
`flowchart TB
|
||||
c1-->a2
|
||||
subgraph one
|
||||
a1-->a2
|
||||
end
|
||||
subgraph two
|
||||
b1-->b2
|
||||
end
|
||||
subgraph three
|
||||
c1-->c2
|
||||
end
|
||||
one --> two
|
||||
three --> two
|
||||
two --> c2
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('57.x: handle nested subgraphs with outgoing links 5', () => {
|
||||
imgSnapshotTest(
|
||||
`%% 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
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('58: handle styling with style expressions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart LR
|
||||
id1(Start)-->id2(Stop)
|
||||
style id1 fill:#f9f,stroke:#333,stroke-width:4px
|
||||
style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('59: handle styling of subgraphs and links', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart TD
|
||||
A[Christmas] ==> D
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
A[Christmas] ==> C
|
||||
subgraph T ["Test"]
|
||||
A
|
||||
B
|
||||
C
|
||||
end
|
||||
|
||||
classDef Test fill:#F84E68,stroke:#333,color:white;
|
||||
class A,T Test
|
||||
classDef TestSub fill:green;
|
||||
class T TestSub
|
||||
linkStyle 0,1 color:orange, stroke: orange;
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('60: handle styling for all node shapes - v2', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart LR
|
||||
A[red text] -->|default style| B(blue text)
|
||||
C([red text]) -->|default style| D[[blue text]]
|
||||
E[(red text)] -->|default style| F((blue text))
|
||||
G>red text] -->|default style| H{blue text}
|
||||
I{{red text}} -->|default style| J[/blue text/]
|
||||
K[\\ red text\\] -->|default style| L[/blue text\\]
|
||||
M[\\ red text/] -->|default style| N[blue text];
|
||||
O(((red text))) -->|default style| P(((blue text)));
|
||||
linkStyle default color:Sienna;
|
||||
style A stroke:#ff0000,fill:#ffcccc,color:#ff0000;
|
||||
style B stroke:#0000ff,fill:#ccccff,color:#0000ff;
|
||||
style C stroke:#ff0000,fill:#ffcccc,color:#ff0000;
|
||||
style D stroke:#0000ff,fill:#ccccff,color:#0000ff;
|
||||
style E stroke:#ff0000,fill:#ffcccc,color:#ff0000;
|
||||
style F stroke:#0000ff,fill:#ccccff,color:#0000ff;
|
||||
style G stroke:#ff0000,fill:#ffcccc,color:#ff0000;
|
||||
style H stroke:#0000ff,fill:#ccccff,color:#0000ff;
|
||||
style I stroke:#ff0000,fill:#ffcccc,color:#ff0000;
|
||||
style J stroke:#0000ff,fill:#ccccff,color:#0000ff;
|
||||
style K stroke:#ff0000,fill:#ffcccc,color:#ff0000;
|
||||
style L stroke:#0000ff,fill:#ccccff,color:#0000ff;
|
||||
style M stroke:#ff0000,fill:#ffcccc,color:#ff0000;
|
||||
style N stroke:#0000ff,fill:#ccccff,color:#0000ff;
|
||||
style O stroke:#ff0000,fill:#ffcccc,color:#ff0000;
|
||||
style P stroke:#0000ff,fill:#ccccff,color:#0000ff;
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose', logLevel: 2 }
|
||||
);
|
||||
});
|
||||
it('61: fontawesome icons in edge labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart TD
|
||||
C -->|fa:fa-car Car| F[fa:fa-car Car]
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('62: should render styled subgraphs', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart TB
|
||||
A
|
||||
B
|
||||
subgraph foo[Foo SubGraph]
|
||||
C
|
||||
D
|
||||
end
|
||||
subgraph bar[Bar SubGraph]
|
||||
E
|
||||
F
|
||||
end
|
||||
G
|
||||
|
||||
A-->B
|
||||
B-->C
|
||||
C-->D
|
||||
B-->D
|
||||
D-->E
|
||||
E-->A
|
||||
E-->F
|
||||
F-->D
|
||||
F-->G
|
||||
B-->G
|
||||
G-->D
|
||||
|
||||
style foo fill:#F99,stroke-width:2px,stroke:#F0F,color:darkred
|
||||
style bar fill:#999,stroke-width:10px,stroke:#0F0,color:blue
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('63: title on subgraphs should be themable', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init:{"theme":"base", "themeVariables": {"primaryColor":"#411d4e", "titleColor":"white", "darkMode":true}}}%%
|
||||
flowchart LR
|
||||
subgraph A
|
||||
a --> b
|
||||
end
|
||||
subgraph B
|
||||
i -->f
|
||||
end
|
||||
A --> B
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('65: text-color from classes', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart LR
|
||||
classDef dark fill:#000,stroke:#000,stroke-width:4px,color:#fff
|
||||
Lorem --> Ipsum --> Dolor
|
||||
class Lorem,Dolor dark
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('66: More nested subgraph cases (TB)', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart TB
|
||||
subgraph two
|
||||
b1
|
||||
end
|
||||
subgraph three
|
||||
c2
|
||||
end
|
||||
|
||||
three --> two
|
||||
two --> c2
|
||||
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('67: More nested subgraph cases (RL)', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart RL
|
||||
subgraph two
|
||||
b1
|
||||
end
|
||||
subgraph three
|
||||
c2
|
||||
end
|
||||
|
||||
three --> two
|
||||
two --> c2
|
||||
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('68: More nested subgraph cases (BT)', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart BT
|
||||
subgraph two
|
||||
b1
|
||||
end
|
||||
subgraph three
|
||||
c2
|
||||
end
|
||||
|
||||
three --> two
|
||||
two --> c2
|
||||
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('69: More nested subgraph cases (LR)', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart LR
|
||||
subgraph two
|
||||
b1
|
||||
end
|
||||
subgraph three
|
||||
c2
|
||||
end
|
||||
|
||||
three --> two
|
||||
two --> c2
|
||||
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('70: Handle nested subgraph cases (TB) link out and link between subgraphs', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart TB
|
||||
subgraph S1
|
||||
sub1 -->sub2
|
||||
end
|
||||
subgraph S2
|
||||
sub4
|
||||
end
|
||||
S1 --> S2
|
||||
sub1 --> sub4
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('71: Handle nested subgraph cases (RL) link out and link between subgraphs', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart RL
|
||||
subgraph S1
|
||||
sub1 -->sub2
|
||||
end
|
||||
subgraph S2
|
||||
sub4
|
||||
end
|
||||
S1 --> S2
|
||||
sub1 --> sub4
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('72: Handle nested subgraph cases (BT) link out and link between subgraphs', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart BT
|
||||
subgraph S1
|
||||
sub1 -->sub2
|
||||
end
|
||||
subgraph S2
|
||||
sub4
|
||||
end
|
||||
S1 --> S2
|
||||
sub1 --> sub4
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('74: Handle nested subgraph cases (RL) link out and link between subgraphs', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart RL
|
||||
subgraph S1
|
||||
sub1 -->sub2
|
||||
end
|
||||
subgraph S2
|
||||
sub4
|
||||
end
|
||||
S1 --> S2
|
||||
sub1 --> sub4
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('74: Handle labels for multiple edges from and to the same couple of nodes', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart RL
|
||||
subgraph one
|
||||
a1 -- l1 --> a2
|
||||
a1 -- l2 --> a2
|
||||
end
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('76: handle unicode encoded character with HTML labels true', () => {
|
||||
imgSnapshotTest(
|
||||
`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;."}}
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('2050: handling of different rendering direction in subgraphs', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart LR
|
||||
|
||||
subgraph TOP
|
||||
direction TB
|
||||
subgraph B1
|
||||
direction RL
|
||||
i1 -->f1
|
||||
end
|
||||
subgraph B2
|
||||
direction BT
|
||||
i2 -->f2
|
||||
end
|
||||
end
|
||||
A --> TOP --> B
|
||||
B1 --> B2
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
|
||||
it('2388: handling default in the node name', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart LR
|
||||
default-index.js --> dot.template.js
|
||||
index.js --> module-utl.js
|
||||
`,
|
||||
{ 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' }
|
||||
);
|
||||
});
|
||||
});
|
||||
894
cypress/integration/rendering/flowchart.spec.js
Normal file
894
cypress/integration/rendering/flowchart.spec.js
Normal file
@@ -0,0 +1,894 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util';
|
||||
|
||||
describe('Graph', () => {
|
||||
it('1: should render a simple flowchart no htmlLabels', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('2: should render a simple flowchart with htmlLabels', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { htmlLabels: true }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('3: should render a simple flowchart with line breaks', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me thinksssss<br/>ssssssssssssssssssssss<br/>sssssssssssssssssssssssssss}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[Car]
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('4: should render a simple flowchart with trapezoid and inverse trapezoid vertex options.', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TD
|
||||
A[/Christmas\\]
|
||||
A -->|Get money| B[\\Go shopping/]
|
||||
B --> C{Let me thinksssss<br/>ssssssssssssssssssssss<br/>sssssssssssssssssssssssssss}
|
||||
C -->|One| D[/Laptop/]
|
||||
C -->|Two| E[\\iPhone\\]
|
||||
C -->|Three| F[Car]
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('5: should style nodes via a class.', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TD
|
||||
1A --> 1B
|
||||
1B --> 1C
|
||||
1C --> D
|
||||
1C --> E
|
||||
|
||||
classDef processHead fill:#888888,color:white,font-weight:bold,stroke-width:3px,stroke:#001f3f
|
||||
class 1A,1B,D,E processHead
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('6: should render a flowchart full of circles', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph LR
|
||||
47(SAM.CommonFA.FMESummary)-->48(SAM.CommonFA.CommonFAFinanceBudget)
|
||||
37(SAM.CommonFA.BudgetSubserviceLineVolume)-->48(SAM.CommonFA.CommonFAFinanceBudget)
|
||||
35(SAM.CommonFA.PopulationFME)-->47(SAM.CommonFA.FMESummary)
|
||||
41(SAM.CommonFA.MetricCost)-->47(SAM.CommonFA.FMESummary)
|
||||
44(SAM.CommonFA.MetricOutliers)-->47(SAM.CommonFA.FMESummary)
|
||||
46(SAM.CommonFA.MetricOpportunity)-->47(SAM.CommonFA.FMESummary)
|
||||
40(SAM.CommonFA.OPVisits)-->47(SAM.CommonFA.FMESummary)
|
||||
38(SAM.CommonFA.CommonFAFinanceRefund)-->47(SAM.CommonFA.FMESummary)
|
||||
43(SAM.CommonFA.CommonFAFinancePicuDays)-->47(SAM.CommonFA.FMESummary)
|
||||
42(SAM.CommonFA.CommonFAFinanceNurseryDays)-->47(SAM.CommonFA.FMESummary)
|
||||
45(SAM.CommonFA.MetricPreOpportunity)-->46(SAM.CommonFA.MetricOpportunity)
|
||||
35(SAM.CommonFA.PopulationFME)-->45(SAM.CommonFA.MetricPreOpportunity)
|
||||
41(SAM.CommonFA.MetricCost)-->45(SAM.CommonFA.MetricPreOpportunity)
|
||||
41(SAM.CommonFA.MetricCost)-->44(SAM.CommonFA.MetricOutliers)
|
||||
39(SAM.CommonFA.ChargeDetails)-->43(SAM.CommonFA.CommonFAFinancePicuDays)
|
||||
39(SAM.CommonFA.ChargeDetails)-->42(SAM.CommonFA.CommonFAFinanceNurseryDays)
|
||||
39(SAM.CommonFA.ChargeDetails)-->41(SAM.CommonFA.MetricCost)
|
||||
39(SAM.CommonFA.ChargeDetails)-->40(SAM.CommonFA.OPVisits)
|
||||
35(SAM.CommonFA.PopulationFME)-->39(SAM.CommonFA.ChargeDetails)
|
||||
36(SAM.CommonFA.PremetricCost)-->39(SAM.CommonFA.ChargeDetails)
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('7: should render a flowchart full of icons', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TD
|
||||
9e122290_1ec3_e711_8c5a_005056ad0002("fa:fa-creative-commons My System | Test Environment")
|
||||
82072290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Business Logic Server:Service 1")
|
||||
db052290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Business Logic Server:Service 2")
|
||||
4e112290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Report Server:Service 1")
|
||||
30122290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Report Server:Service 2")
|
||||
5e112290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Dedicated Test Business Logic Server:Service 1")
|
||||
c1112290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Dedicated Test Business Logic Server:Service 2")
|
||||
b7042290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[SupportDb]")
|
||||
8f102290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[DevelopmentDb]")
|
||||
0e102290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[TestDb]")
|
||||
07132290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[SharedReportingDb]")
|
||||
c7072290_1ec3_e711_8c5a_005056ad0002("fa:fa-server Shared Business Logic Server")
|
||||
ca122290_1ec3_e711_8c5a_005056ad0002("fa:fa-server Shared Report Server")
|
||||
68102290_1ec3_e711_8c5a_005056ad0002("fa:fa-server Dedicated Test Business Logic Server")
|
||||
f4112290_1ec3_e711_8c5a_005056ad0002("fa:fa-database [DBServer\\SharedDbInstance]")
|
||||
d6072290_1ec3_e711_8c5a_005056ad0002("fa:fa-server DBServer")
|
||||
71082290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs DBServer\\:MSSQLSERVER")
|
||||
c0102290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs DBServer\\:SQLAgent")
|
||||
9a072290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs DBServer\\:SQLBrowser")
|
||||
1d0a2290_1ec3_e711_8c5a_005056ad0002("fa:fa-server VmHost1")
|
||||
200a2290_1ec3_e711_8c5a_005056ad0002("fa:fa-server VmHost2")
|
||||
1c0a2290_1ec3_e711_8c5a_005056ad0002("fa:fa-server VmHost3")
|
||||
9e122290_1ec3_e711_8c5a_005056ad0002-->82072290_1ec3_e711_8c5a_005056ad0002
|
||||
9e122290_1ec3_e711_8c5a_005056ad0002-->db052290_1ec3_e711_8c5a_005056ad0002
|
||||
9e122290_1ec3_e711_8c5a_005056ad0002-->4e112290_1ec3_e711_8c5a_005056ad0002
|
||||
9e122290_1ec3_e711_8c5a_005056ad0002-->30122290_1ec3_e711_8c5a_005056ad0002
|
||||
9e122290_1ec3_e711_8c5a_005056ad0002-->5e112290_1ec3_e711_8c5a_005056ad0002
|
||||
9e122290_1ec3_e711_8c5a_005056ad0002-->c1112290_1ec3_e711_8c5a_005056ad0002
|
||||
82072290_1ec3_e711_8c5a_005056ad0002-->b7042290_1ec3_e711_8c5a_005056ad0002
|
||||
82072290_1ec3_e711_8c5a_005056ad0002-->8f102290_1ec3_e711_8c5a_005056ad0002
|
||||
82072290_1ec3_e711_8c5a_005056ad0002-->0e102290_1ec3_e711_8c5a_005056ad0002
|
||||
82072290_1ec3_e711_8c5a_005056ad0002-->c7072290_1ec3_e711_8c5a_005056ad0002
|
||||
db052290_1ec3_e711_8c5a_005056ad0002-->c7072290_1ec3_e711_8c5a_005056ad0002
|
||||
db052290_1ec3_e711_8c5a_005056ad0002-->82072290_1ec3_e711_8c5a_005056ad0002
|
||||
4e112290_1ec3_e711_8c5a_005056ad0002-->b7042290_1ec3_e711_8c5a_005056ad0002
|
||||
4e112290_1ec3_e711_8c5a_005056ad0002-->8f102290_1ec3_e711_8c5a_005056ad0002
|
||||
4e112290_1ec3_e711_8c5a_005056ad0002-->0e102290_1ec3_e711_8c5a_005056ad0002
|
||||
4e112290_1ec3_e711_8c5a_005056ad0002-->07132290_1ec3_e711_8c5a_005056ad0002
|
||||
4e112290_1ec3_e711_8c5a_005056ad0002-->ca122290_1ec3_e711_8c5a_005056ad0002
|
||||
30122290_1ec3_e711_8c5a_005056ad0002-->ca122290_1ec3_e711_8c5a_005056ad0002
|
||||
30122290_1ec3_e711_8c5a_005056ad0002-->4e112290_1ec3_e711_8c5a_005056ad0002
|
||||
5e112290_1ec3_e711_8c5a_005056ad0002-->8f102290_1ec3_e711_8c5a_005056ad0002
|
||||
5e112290_1ec3_e711_8c5a_005056ad0002-->68102290_1ec3_e711_8c5a_005056ad0002
|
||||
c1112290_1ec3_e711_8c5a_005056ad0002-->68102290_1ec3_e711_8c5a_005056ad0002
|
||||
c1112290_1ec3_e711_8c5a_005056ad0002-->5e112290_1ec3_e711_8c5a_005056ad0002
|
||||
b7042290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
|
||||
8f102290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
|
||||
0e102290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
|
||||
07132290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
|
||||
c7072290_1ec3_e711_8c5a_005056ad0002-->1d0a2290_1ec3_e711_8c5a_005056ad0002
|
||||
ca122290_1ec3_e711_8c5a_005056ad0002-->200a2290_1ec3_e711_8c5a_005056ad0002
|
||||
68102290_1ec3_e711_8c5a_005056ad0002-->1c0a2290_1ec3_e711_8c5a_005056ad0002
|
||||
f4112290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
|
||||
f4112290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
|
||||
f4112290_1ec3_e711_8c5a_005056ad0002-->c0102290_1ec3_e711_8c5a_005056ad0002
|
||||
f4112290_1ec3_e711_8c5a_005056ad0002-->9a072290_1ec3_e711_8c5a_005056ad0002
|
||||
d6072290_1ec3_e711_8c5a_005056ad0002-->1c0a2290_1ec3_e711_8c5a_005056ad0002
|
||||
71082290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
|
||||
c0102290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
|
||||
c0102290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
|
||||
9a072290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
|
||||
9a072290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('8: should render labels with numbers at the start', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TB;subgraph "number as labels";1;end;
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('9: should render subgraphs', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TB
|
||||
subgraph One
|
||||
a1-->a2
|
||||
end
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('10: should render subgraphs with a title starting with a digit', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TB
|
||||
subgraph 2Two
|
||||
a1-->a2
|
||||
end
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('11: should render styled subgraphs', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TB
|
||||
A
|
||||
B
|
||||
subgraph foo[Foo SubGraph]
|
||||
C
|
||||
D
|
||||
end
|
||||
subgraph bar[Bar SubGraph]
|
||||
E
|
||||
F
|
||||
end
|
||||
G
|
||||
|
||||
A-->B
|
||||
B-->C
|
||||
C-->D
|
||||
B-->D
|
||||
D-->E
|
||||
E-->A
|
||||
E-->F
|
||||
F-->D
|
||||
F-->G
|
||||
B-->G
|
||||
G-->D
|
||||
|
||||
style foo fill:#F99,stroke-width:2px,stroke:#F0F,color:darkred
|
||||
style bar fill:#999,stroke-width:10px,stroke:#0F0,color:blue
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('12: should render a flowchart with long names and class definitions', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
sid-B3655226-6C29-4D00-B685-3D5C734DC7E1["
|
||||
|
||||
提交申请
|
||||
熊大
|
||||
"];
|
||||
class sid-B3655226-6C29-4D00-B685-3D5C734DC7E1 node-executed;
|
||||
sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A["
|
||||
负责人审批
|
||||
强子
|
||||
"];
|
||||
class sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A node-executed;
|
||||
sid-E27C0367-E6D6-497F-9736-3CDC21FDE221["
|
||||
DBA审批
|
||||
强子
|
||||
"];
|
||||
class sid-E27C0367-E6D6-497F-9736-3CDC21FDE221 node-executed;
|
||||
sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD["
|
||||
SA审批
|
||||
阿美
|
||||
"];
|
||||
class sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD node-executed;
|
||||
sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7["
|
||||
主管审批
|
||||
光头强
|
||||
"];
|
||||
class sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7 node-executed;
|
||||
sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89["
|
||||
DBA确认
|
||||
强子
|
||||
"];
|
||||
class sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89 node-executed;
|
||||
sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937["
|
||||
SA确认
|
||||
阿美
|
||||
"];
|
||||
class sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937 node-executed;
|
||||
sid-4FC27B48-A6F9-460A-A675-021F5854FE22["
|
||||
结束
|
||||
"];
|
||||
class sid-4FC27B48-A6F9-460A-A675-021F5854FE22 node-executed;
|
||||
sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E["
|
||||
SA执行1
|
||||
强子
|
||||
"];
|
||||
class sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E node-executed;
|
||||
sid-6C2120F3-D940-4958-A067-0903DCE879C4["
|
||||
SA执行2
|
||||
强子
|
||||
"];
|
||||
class sid-6C2120F3-D940-4958-A067-0903DCE879C4 node-executed;
|
||||
sid-9180E2A0-5C4B-435F-B42F-0D152470A338["
|
||||
DBA执行1
|
||||
强子
|
||||
"];
|
||||
class sid-9180E2A0-5C4B-435F-B42F-0D152470A338 node-executed;
|
||||
sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD["
|
||||
DBA执行3
|
||||
强子
|
||||
"];
|
||||
class sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD node-executed;
|
||||
sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756["
|
||||
DBA执行2
|
||||
强子
|
||||
"];
|
||||
class sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756 node-executed;
|
||||
sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93["
|
||||
DBA执行4
|
||||
强子
|
||||
"];
|
||||
class sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93 node-executed;
|
||||
sid-1897B30A-9C5C-4D5B-B80B-76A038785070["
|
||||
负责人确认
|
||||
梁静茹
|
||||
"];
|
||||
class sid-1897B30A-9C5C-4D5B-B80B-76A038785070 node-executed;
|
||||
sid-B3655226-6C29-4D00-B685-3D5C734DC7E1-->sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7;
|
||||
sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A-->sid-1897B30A-9C5C-4D5B-B80B-76A038785070;
|
||||
sid-E27C0367-E6D6-497F-9736-3CDC21FDE221-->sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89;
|
||||
sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD-->sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937;
|
||||
sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E-->sid-6C2120F3-D940-4958-A067-0903DCE879C4;
|
||||
sid-9180E2A0-5C4B-435F-B42F-0D152470A338-->sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756;
|
||||
sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD-->sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93;
|
||||
sid-6C2120F3-D940-4958-A067-0903DCE879C4-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
|
||||
sid-1897B30A-9C5C-4D5B-B80B-76A038785070-->sid-4FC27B48-A6F9-460A-A675-021F5854FE22;
|
||||
sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937-->sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E;
|
||||
sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89-->sid-9180E2A0-5C4B-435F-B42F-0D152470A338;
|
||||
sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89-->sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD;
|
||||
sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
|
||||
sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
|
||||
sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD;
|
||||
sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-E27C0367-E6D6-497F-9736-3CDC21FDE221;
|
||||
sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937-->sid-6C2120F3-D940-4958-A067-0903DCE879C4;
|
||||
sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
|
||||
sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-4FC27B48-A6F9-460A-A675-021F5854FE22;
|
||||
`,
|
||||
{ fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('13: should render color of styled nodes', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph LR
|
||||
foo-->bar
|
||||
|
||||
classDef foo fill:lightblue,color:green,stroke:#FF9E2C,font-weight:bold
|
||||
style foo fill:#F99,stroke-width:2px,stroke:#F0F
|
||||
style bar fill:#999,color: #00ff00, stroke-width:10px,stroke:#0F0
|
||||
`,
|
||||
{
|
||||
listUrl: false,
|
||||
listId: 'color styling',
|
||||
fontFamily: 'courier',
|
||||
logLevel: 0,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('14: should render hexagons', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
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?}}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[Car]
|
||||
click A "index.html#link-clicked" "link test"
|
||||
click B testClick "click test"
|
||||
classDef someclass fill:#f96;
|
||||
class A someclass;
|
||||
class C someclass;
|
||||
`,
|
||||
{
|
||||
listUrl: false,
|
||||
listId: 'color styling',
|
||||
fontFamily: 'courier',
|
||||
logLevel: 0,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('15: should render a simple flowchart with comments', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
%% this is a comment
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('16: Render Stadium shape', () => {
|
||||
imgSnapshotTest(
|
||||
` graph TD
|
||||
A([stadium shape test])
|
||||
A -->|Get money| B([Go shopping])
|
||||
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?])
|
||||
C -->|One| D([Laptop])
|
||||
C -->|Two| E([iPhone])
|
||||
C -->|Three| F([Car<br/>wroom wroom])
|
||||
click A "index.html#link-clicked" "link test"
|
||||
click B testClick "click test"
|
||||
classDef someclass fill:#f96;
|
||||
class A someclass;
|
||||
class C someclass;
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('17: Render multiline texts', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
A1[Multi<br>Line] -->|Multi<br>Line| B1(Multi<br>Line)
|
||||
C1[Multi<br/>Line] -->|Multi<br/>Line| D1(Multi<br/>Line)
|
||||
E1[Multi<br />Line] -->|Multi<br />Line| F1(Multi<br />Line)
|
||||
A2[Multi<br>Line] -->|Multi<br>Line| B2(Multi<br>Line)
|
||||
C2[Multi<br/>Line] -->|Multi<br/>Line| D2(Multi<br/>Line)
|
||||
E2[Multi<br />Line] -->|Multi<br />Line| F2(Multi<br />Line)
|
||||
linkStyle 0 stroke:DarkGray,stroke-width:2px
|
||||
linkStyle 1 stroke:DarkGray,stroke-width:2px
|
||||
linkStyle 2 stroke:DarkGray,stroke-width:2px
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('18: Chaining of nodes', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
a --> b --> c
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('19: Multiple nodes and chaining in one statement', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
a --> b & c--> d
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('20: Multiple nodes and chaining in one statement', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[ h ] -- hello --> B[" test "]:::exClass & C --> D;
|
||||
classDef exClass background:#bbb,border:1px solid red;
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('21: Render cylindrical shape', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
A[(cylindrical<br />shape<br />test)]
|
||||
A -->|Get money| B1[(Go shopping 1)]
|
||||
A -->|Get money| B2[(Go shopping 2)]
|
||||
A -->|Get money| B3[(Go shopping 3)]
|
||||
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?)]
|
||||
B1 --> C
|
||||
B2 --> C
|
||||
B3 --> C
|
||||
C -->|One| D[(Laptop)]
|
||||
C -->|Two| E[(iPhone)]
|
||||
C -->|Three| F[(Car)]
|
||||
click A "index.html#link-clicked" "link test"
|
||||
click B testClick "click test"
|
||||
classDef someclass fill:#f96;
|
||||
class A someclass;`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('22: Render a simple flowchart with nodeSpacing set to 100', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
%% this is a comment
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { nodeSpacing: 50 }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('23: Render a simple flowchart with rankSpacing set to 100', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
%% this is a comment
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { rankSpacing: '100' }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('24: Keep node label text (if already defined) when a style is applied', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
A(( )) -->|step 1| B(( ))
|
||||
B(( )) -->|step 2| C(( ))
|
||||
C(( )) -->|step 3| D(( ))
|
||||
linkStyle 1 stroke:greenyellow,stroke-width:2px
|
||||
style C fill:greenyellow,stroke:green,stroke-width:4px
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('25: Handle link click events (link, anchor, mailto, other protocol, script)', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TB
|
||||
TITLE["Link Click Events<br>(click the nodes below)"]
|
||||
A["link test (open in same tab)"]
|
||||
B["link test (open in new tab)"]
|
||||
C[anchor test]
|
||||
D[mailto test]
|
||||
E[other protocol test]
|
||||
F[script test]
|
||||
TITLE --> A & B & C & D & E & F
|
||||
click A "https://mermaid-js.github.io/mermaid/#/" "link test (open in same tab)"
|
||||
click B "https://mermaid-js.github.io/mermaid/#/" "link test (open in new tab)" _blank
|
||||
click C "#link-clicked"
|
||||
click D "mailto:user@user.user" "mailto test"
|
||||
click E "notes://do-your-thing/id" "other protocol test"
|
||||
click F "javascript:alert('test')" "script test"
|
||||
`,
|
||||
{ securityLevel: 'loose', fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('26: Set text color of nodes and links according to styles when html labels are enabled', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
A[red<br>text] -->|red<br>text| B(blue<br>text)
|
||||
C[/red<br/>text/] -->|blue<br/>text| D{blue<br/>text}
|
||||
E{{default<br />style}} -->|default<br />style| F([default<br />style])
|
||||
linkStyle default color:Sienna;
|
||||
linkStyle 0 color:red;
|
||||
linkStyle 1 stroke:DarkGray,stroke-width:2px,color:#0000ff
|
||||
style A color:red;
|
||||
style B color:blue;
|
||||
style C stroke:#ff0000,fill:#ffcccc,color:#ff0000
|
||||
style D stroke:#0000ff,fill:#ccccff,color:#0000ff
|
||||
click B "index.html#link-clicked" "link test"
|
||||
click D testClick "click test"
|
||||
`,
|
||||
{ flowchart: { htmlLabels: true } }
|
||||
);
|
||||
});
|
||||
|
||||
it('27: Set text color of nodes and links according to styles when html labels are disabled', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
A[red<br>text] -->|red<br>text| B(blue<br>text)
|
||||
C[/red<br/>text/] -->|blue<br/>text| D{blue<br/>text}
|
||||
E{{default<br />style}} -->|default<br />style| F([default<br />style])
|
||||
linkStyle default color:Sienna;
|
||||
linkStyle 0 color:red;
|
||||
linkStyle 1 stroke:DarkGray,stroke-width:2px,color:#0000ff
|
||||
style A color:red;
|
||||
style B color:blue;
|
||||
style C stroke:#ff0000,fill:#ffcccc,color:#ff0000
|
||||
style D stroke:#0000ff,fill:#ccccff,color:#0000ff
|
||||
click B "index.html#link-clicked" "link test"
|
||||
click D testClick "click test"
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('28: Apply default class to all nodes which do not have another class assigned (htmlLabels enabled)', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[myClass1] --> B[default] & C[default]
|
||||
B[default] & C[default] --> D[myClass2]
|
||||
classDef default stroke-width:2px,fill:none,stroke:silver
|
||||
classDef node color:red
|
||||
classDef myClass1 color:#0000ff
|
||||
classDef myClass2 stroke:#0000ff,fill:#ccccff
|
||||
class A myClass1
|
||||
class D myClass2
|
||||
`,
|
||||
{ flowchart: { htmlLabels: true } }
|
||||
);
|
||||
});
|
||||
|
||||
it('29: Apply default class to all nodes which do not have another class assigned (htmlLabels disabled)', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[myClass1] --> B[default] & C[default]
|
||||
B[default] & C[default] --> D[myClass2]
|
||||
classDef default stroke-width:2px,fill:none,stroke:silver
|
||||
classDef node color:red
|
||||
classDef myClass1 color:#0000ff
|
||||
classDef myClass2 stroke:#0000ff,fill:#ccccff
|
||||
class A myClass1
|
||||
class D myClass2
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('30: Possibility to style text color of nodes and subgraphs as well as apply classes to subgraphs', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
subgraph id1 [title is set]
|
||||
A-->B
|
||||
end
|
||||
subgraph id2 [title]
|
||||
E
|
||||
end
|
||||
|
||||
B-->C
|
||||
|
||||
subgraph id3
|
||||
C-->D
|
||||
end
|
||||
class id3,id2,A redBg;
|
||||
class id3,A whiteTxt;
|
||||
classDef redBg fill:#622;
|
||||
classDef whiteTxt color: white;
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('31: should not slice off edges that are to the left of the left-most vertex', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
work --> sleep
|
||||
sleep --> work
|
||||
eat --> sleep
|
||||
work --> eat
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('32: Render Subroutine shape', () => {
|
||||
imgSnapshotTest(
|
||||
`graph LR
|
||||
A[[subroutine shape test]]
|
||||
A -->|Get money| B[[Go shopping]]
|
||||
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?]]
|
||||
C -->|One| D[[Laptop]]
|
||||
C -->|Two| E[[iPhone]]
|
||||
C -->|Three| F[[Car<br/>wroom wroom]]
|
||||
click A "index.html#link-clicked" "link test"
|
||||
click B testClick "click test"
|
||||
classDef someclass fill:#f96;
|
||||
class A someclass;
|
||||
class C someclass;
|
||||
`,
|
||||
{ flowchart: { htmlLabels: false }, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('33: should render a simple flowchart with diagramPadding set to 0', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
%% this is a comment
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { diagramPadding: 0 } }
|
||||
);
|
||||
});
|
||||
|
||||
it('34: testing the label width in percy', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
A[Christmas]
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
it('35: should honor minimum edge length as specified by the user', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
L1 --- L2
|
||||
L2 --- C
|
||||
M1 ---> C
|
||||
R1 .-> R2
|
||||
R2 <.-> C
|
||||
C -->|Label 1| E1
|
||||
C -- Label 2 ---> E2
|
||||
C ----> E3
|
||||
C -----> E4
|
||||
C ======> E5
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('36: should render escaped without html labels', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
a["<strong>Haiya</strong>"]-->b
|
||||
`,
|
||||
{ htmlLabels: false, flowchart: { htmlLabels: false } }
|
||||
);
|
||||
});
|
||||
it('37: should render non-escaped with html labels', () => {
|
||||
imgSnapshotTest(
|
||||
`graph TD
|
||||
a["<strong>Haiya</strong>"]-->b
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('38: should render a flowchart when useMaxWidth is true (default)', () => {
|
||||
renderGraph(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { useMaxWidth: true } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
expect(svg).to.have.attr('width', '100%');
|
||||
// expect(svg).to.have.attr('height');
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
||||
const style = svg.attr('style');
|
||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||
expect(maxWidthValue).to.be.within(300 * 0.95, 300 * 1.05);
|
||||
});
|
||||
});
|
||||
it('39: should render a flowchart when useMaxWidth is false', () => {
|
||||
renderGraph(
|
||||
`graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
C -->|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
`,
|
||||
{ flowchart: { useMaxWidth: false } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
const width = parseFloat(svg.attr('width'));
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// expect(height).to.be.within(446 * 0.95, 446 * 1.05);
|
||||
expect(width).to.be.within(300 * 0.95, 300 * 1.05);
|
||||
expect(svg).to.not.have.attr('style');
|
||||
});
|
||||
});
|
||||
it('58: handle styling with style expressions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph LR
|
||||
id1(Start)-->id2(Stop)
|
||||
style id1 fill:#f9f,stroke:#333,stroke-width:4px
|
||||
style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('60: handle styling for all node shapes', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph LR
|
||||
A[red text] -->|default style| B(blue text)
|
||||
C([red text]) -->|default style| D[[blue text]]
|
||||
E[(red text)] -->|default style| F((blue text))
|
||||
G>red text] -->|default style| H{blue text}
|
||||
I{{red text}} -->|default style| J[/blue text/]
|
||||
linkStyle default color:Sienna;
|
||||
style A stroke:#ff0000,fill:#ffcccc,color:#ff0000
|
||||
style B stroke:#0000ff,fill:#ccccff,color:#0000ff
|
||||
style C stroke:#ff0000,fill:#ffcccc,color:#ff0000
|
||||
style D stroke:#0000ff,fill:#ccccff,color:#0000ff
|
||||
style E stroke:#ff0000,fill:#ffcccc,color:#ff0000
|
||||
style F stroke:#0000ff,fill:#ccccff,color:#0000ff
|
||||
style G stroke:#ff0000,fill:#ffcccc,color:#ff0000
|
||||
style H stroke:#0000ff,fill:#ccccff,color:#0000ff
|
||||
style I stroke:#ff0000,fill:#ffcccc,color:#ff0000
|
||||
style J stroke:#0000ff,fill:#ccccff,color:#0000ff
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('61: fontawesome icons in edge labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TD
|
||||
C -->|fa:fa-car Car| F[fa:fa-car Car]
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('62: fontawesome icons in edge labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TB
|
||||
subgraph bar[Bar]
|
||||
F
|
||||
end
|
||||
style bar fill:#999,stroke-width:10px,stroke:#0F0,color:blue
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('63: fontawesome icons in edge labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
graph TB
|
||||
A
|
||||
B
|
||||
subgraph foo[Foo SubGraph]
|
||||
C
|
||||
D
|
||||
end
|
||||
subgraph bar[Bar SubGraph]
|
||||
E
|
||||
F
|
||||
end
|
||||
G
|
||||
|
||||
A-->B
|
||||
B-->C
|
||||
C-->D
|
||||
B-->D
|
||||
D-->E
|
||||
E-->A
|
||||
E-->F
|
||||
F-->D
|
||||
F-->G
|
||||
B-->G
|
||||
G-->D
|
||||
|
||||
style foo fill:#F99,stroke-width:2px,stroke:#F0F,color:darkred
|
||||
style bar fill:#999,stroke-width:10px,stroke:#0F0,color:blue
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('64: fontawesome icons in edge labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init:{"theme":"base", "themeVariables": {"primaryColor":"#411d4e", "titleColor":"white", "darkMode":true}}}%%
|
||||
flowchart LR
|
||||
subgraph A
|
||||
a --> b
|
||||
end
|
||||
subgraph B
|
||||
i -->f
|
||||
end
|
||||
A --> B
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
it('65: text-color from classes', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
flowchart LR
|
||||
classDef dark fill:#000,stroke:#000,stroke-width:4px,color:#fff
|
||||
Lorem --> Ipsum --> Dolor
|
||||
class Lorem,Dolor dark
|
||||
`,
|
||||
{ htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' }
|
||||
);
|
||||
});
|
||||
});
|
||||
344
cypress/integration/rendering/gantt.spec.js
Normal file
344
cypress/integration/rendering/gantt.spec.js
Normal file
@@ -0,0 +1,344 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util.js';
|
||||
|
||||
describe('Gantt diagram', () => {
|
||||
beforeEach(() => {
|
||||
cy.clock(new Date('1010-10-10').getTime());
|
||||
});
|
||||
it('should render a gantt chart', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title Adding GANTT diagram to mermaid
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d
|
||||
|
||||
section Documentation
|
||||
Describe gantt syntax :active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page :after a1 , 20h
|
||||
Add another diagram to demo page :doc1, after a1 , 48h
|
||||
|
||||
section Last section
|
||||
Describe gantt syntax :after doc1, 3d
|
||||
Add gantt diagram to demo page : 20h
|
||||
Add another diagram to demo page : 48h
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('Handle multiline section titles with different line breaks', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title GANTT diagram with multiline section titles
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
section A section<br>multiline
|
||||
Completed task : done, des1, 2014-01-06,2014-01-08
|
||||
Active task : active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks<br/>multiline
|
||||
Completed task in the critical line : crit, done, 2014-01-06, 24h
|
||||
Implement parser and jison : crit, done, after des1, 2d
|
||||
Create tests for parser : crit, active, 3d
|
||||
Future task in critical line : crit, 5d
|
||||
Create tests for renderer : 2d
|
||||
Add to mermaid : 1d
|
||||
|
||||
section Documentation<br />multiline
|
||||
Describe gantt syntax : active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page : after a1, 20h
|
||||
Add another diagram to demo page : doc1, after a1, 48h
|
||||
|
||||
section Last section<br />multiline
|
||||
Describe gantt syntax : after doc1, 3d
|
||||
Add gantt diagram to demo page : 20h
|
||||
Add another diagram to demo page : 48h
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('Multiple dependencies syntax', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title Adding GANTT diagram to mermaid
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
apple :a, 2017-07-20, 1w
|
||||
banana :crit, b, 2017-07-23, 1d
|
||||
cherry :active, c, after b a, 1d
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render a gantt chart for issue #1060', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gantt
|
||||
excludes weekdays 2017-01-10
|
||||
title Projects Timeline
|
||||
|
||||
section asdf
|
||||
specs :done, :ps, 2019-05-10, 50d
|
||||
Plasma :pc, 2019-06-20, 60d
|
||||
Rollup :or, 2019-08-20, 50d
|
||||
|
||||
section CEL
|
||||
|
||||
plasma-chamber :done, :pc, 2019-05-20, 60d
|
||||
Plasma Implementation (Rust) :por, 2019-06-20, 120d
|
||||
Predicates (Atomic Swap) :pred, 2019-07-20, 60d
|
||||
|
||||
section DEX
|
||||
|
||||
History zkSNARK :hs, 2019-08-10, 40d
|
||||
Exit :vs, after hs, 60d
|
||||
PredicateSpec :ps, 2019-09-1, 20d
|
||||
PlasmaIntegration :pi, after ps,40d
|
||||
|
||||
|
||||
section Events
|
||||
|
||||
ETHBoston :done, :eb, 2019-09-08, 3d
|
||||
DevCon :active, :dc, 2019-10-08, 3d
|
||||
|
||||
section Plasma Calls & updates
|
||||
OVM :ovm, 2019-07-12, 120d
|
||||
Plasma call 26 :pc26, 2019-08-21, 1d
|
||||
Plasma call 27 :pc27, 2019-09-03, 1d
|
||||
Plasma call 28 :pc28, 2019-09-17, 1d
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
it('should hide today marker', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gantt
|
||||
title Hide today marker (vertical line should not be visible)
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d
|
||||
todayMarker off
|
||||
section Section1
|
||||
Today: 1, -1h
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
it('should style today marker', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gantt
|
||||
title Style today marker (vertical line should be 5px wide and half-transparent blue)
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d
|
||||
todayMarker stroke-width:5px,stroke:#00f,opacity:0.5
|
||||
section Section1
|
||||
Today: 1, -1h
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
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)', () => {
|
||||
renderGraph(
|
||||
`
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title Adding GANTT diagram to mermaid
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d
|
||||
|
||||
section Documentation
|
||||
Describe gantt syntax :active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page :after a1 , 20h
|
||||
Add another diagram to demo page :doc1, after a1 , 48h
|
||||
|
||||
section Last section
|
||||
Describe gantt syntax :after doc1, 3d
|
||||
Add gantt diagram to demo page : 20h
|
||||
Add another diagram to demo page : 48h
|
||||
`,
|
||||
{ gantt: { useMaxWidth: true } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
expect(svg).to.have.attr('width', '100%');
|
||||
// expect(svg).to.have.attr('height');
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.be.within(484 * 0.95, 484 * 1.05);
|
||||
const style = svg.attr('style');
|
||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||
expect(maxWidthValue).to.be.within(984 * 0.95, 984 * 1.05);
|
||||
});
|
||||
});
|
||||
|
||||
it('should render a gantt diagram when useMaxWidth is false', () => {
|
||||
renderGraph(
|
||||
`
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title Adding GANTT diagram to mermaid
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d
|
||||
|
||||
section Documentation
|
||||
Describe gantt syntax :active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page :after a1 , 20h
|
||||
Add another diagram to demo page :doc1, after a1 , 48h
|
||||
|
||||
section Last section
|
||||
Describe gantt syntax :after doc1, 3d
|
||||
Add gantt diagram to demo page : 20h
|
||||
Add another diagram to demo page : 48h
|
||||
`,
|
||||
{ gantt: { useMaxWidth: false } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
const width = parseFloat(svg.attr('width'));
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// expect(height).to.be.within(484 * 0.95, 484 * 1.05);
|
||||
expect(width).to.be.within(984 * 0.95, 984 * 1.05);
|
||||
expect(svg).to.not.have.attr('style');
|
||||
});
|
||||
});
|
||||
it('should render a gantt diagram with data labels at the top when topAxis is true', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title Adding GANTT diagram to mermaid
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d
|
||||
|
||||
section Documentation
|
||||
Describe gantt syntax :active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page :after a1 , 20h
|
||||
Add another diagram to demo page :doc1, after a1 , 48h
|
||||
|
||||
section Last section
|
||||
Describe gantt syntax :after doc1, 3d
|
||||
Add gantt diagram to demo page : 20h
|
||||
Add another diagram to demo page : 48h
|
||||
`,
|
||||
{ gantt: { topAxis: true } }
|
||||
);
|
||||
});
|
||||
|
||||
it('should render accessibility tags', function () {
|
||||
const expectedTitle = 'Gantt Diagram';
|
||||
const expectedAccDescription = 'Tasks for Q4';
|
||||
renderGraph(
|
||||
`
|
||||
gantt
|
||||
accTitle: ${expectedTitle}
|
||||
accDescr: ${expectedAccDescription}
|
||||
dateFormat YYYY-MM-DD
|
||||
section Section
|
||||
A task :a1, 2014-01-01, 30d
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
const el = svg.get(0);
|
||||
const children = Array.from(el.children);
|
||||
|
||||
const titleEl = children.find(function (node) {
|
||||
return node.tagName === 'title';
|
||||
});
|
||||
const descriptionEl = children.find(function (node) {
|
||||
return node.tagName === 'desc';
|
||||
});
|
||||
|
||||
expect(titleEl).to.exist;
|
||||
expect(titleEl.textContent).to.equal(expectedTitle);
|
||||
expect(descriptionEl).to.exist;
|
||||
expect(descriptionEl.textContent).to.equal(expectedAccDescription);
|
||||
});
|
||||
});
|
||||
});
|
||||
284
cypress/integration/rendering/gitGraph.spec.js
Normal file
284
cypress/integration/rendering/gitGraph.spec.js
Normal file
@@ -0,0 +1,284 @@
|
||||
import { imgSnapshotTest } from '../../helpers/util.js';
|
||||
|
||||
describe('Git Graph diagram', () => {
|
||||
it('1: should render a simple gitgraph with commit on main branch', () => {
|
||||
imgSnapshotTest(
|
||||
`gitGraph
|
||||
commit id: "1"
|
||||
commit id: "2"
|
||||
commit id: "3"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('2: should render a simple gitgraph with commit on main branch with Id', () => {
|
||||
imgSnapshotTest(
|
||||
`gitGraph
|
||||
commit id: "One"
|
||||
commit id: "Two"
|
||||
commit id: "Three"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('3: should render a simple gitgraph with different commitTypes on main branch ', () => {
|
||||
imgSnapshotTest(
|
||||
`gitGraph
|
||||
commit id: "Normal Commit"
|
||||
commit id: "Reverse Commit" type: REVERSE
|
||||
commit id: "Hightlight Commit" type: HIGHLIGHT
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('4: should render a simple gitgraph with tags commitTypes on main branch ', () => {
|
||||
imgSnapshotTest(
|
||||
`gitGraph
|
||||
commit id: "Normal Commit with tag" tag: "v1.0.0"
|
||||
commit id: "Reverse Commit with tag" type: REVERSE tag: "RC_1"
|
||||
commit id: "Hightlight Commit" type: HIGHLIGHT tag: "8.8.4"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('5: should render a simple gitgraph with two branches', () => {
|
||||
imgSnapshotTest(
|
||||
`gitGraph
|
||||
commit id: "1"
|
||||
commit id: "2"
|
||||
branch develop
|
||||
checkout develop
|
||||
commit id: "3"
|
||||
commit id: "4"
|
||||
checkout main
|
||||
commit id: "5"
|
||||
commit id: "6"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('6: should render a simple gitgraph with two branches and merge commit', () => {
|
||||
imgSnapshotTest(
|
||||
`gitGraph
|
||||
commit id: "1"
|
||||
commit id: "2"
|
||||
branch develop
|
||||
checkout develop
|
||||
commit id: "3"
|
||||
commit id: "4"
|
||||
checkout main
|
||||
merge develop
|
||||
commit id: "5"
|
||||
commit id: "6"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('7: should render a simple gitgraph with three branches and tagged merge commit', () => {
|
||||
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: "12345" tag: "my merge commit"
|
||||
checkout very_nice_feature
|
||||
commit id: "8"
|
||||
checkout main
|
||||
commit id: "9"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('8: should render a simple gitgraph with more than 8 branchs & overriding variables', () => {
|
||||
imgSnapshotTest(
|
||||
`%%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': {
|
||||
'gitBranchLabel0': '#ffffff',
|
||||
'gitBranchLabel1': '#ffffff',
|
||||
'gitBranchLabel2': '#ffffff',
|
||||
'gitBranchLabel3': '#ffffff',
|
||||
'gitBranchLabel4': '#ffffff',
|
||||
'gitBranchLabel5': '#ffffff',
|
||||
'gitBranchLabel6': '#ffffff',
|
||||
'gitBranchLabel7': '#ffffff',
|
||||
} } }%%
|
||||
gitGraph
|
||||
checkout main
|
||||
branch branch1
|
||||
branch branch2
|
||||
branch branch3
|
||||
branch branch4
|
||||
branch branch5
|
||||
branch branch6
|
||||
branch branch7
|
||||
branch branch8
|
||||
branch branch9
|
||||
checkout branch1
|
||||
commit id: "1"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('9: should render a simple gitgraph with rotated labels', () => {
|
||||
imgSnapshotTest(
|
||||
`%%{init: { 'logLevel': 'debug', 'theme': 'default' , 'gitGraph': {
|
||||
'rotateCommitLabel': true
|
||||
} } }%%
|
||||
gitGraph
|
||||
commit id: "75f7219e83b321cd3fdde7dcf83bc7c1000a6828"
|
||||
commit id: "0db4784daf82736dec4569e0dc92980d328c1f2e"
|
||||
commit id: "7067e9973f9eaa6cd4a4b723c506d1eab598e83e"
|
||||
commit id: "66972321ad6c199013b5b31f03b3a86fa3f9817d"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('10: should render a simple gitgraph with horizontal labels', () => {
|
||||
imgSnapshotTest(
|
||||
`%%{init: { 'logLevel': 'debug', 'theme': 'default' , 'gitGraph': {
|
||||
'rotateCommitLabel': false
|
||||
} } }%%
|
||||
gitGraph
|
||||
commit id: "Alpha"
|
||||
commit id: "Beta"
|
||||
commit id: "Gamma"
|
||||
commit id: "Delta"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('11: should render a simple gitgraph with cherry pick commit', () => {
|
||||
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"
|
||||
commit id:"THREE"
|
||||
checkout develop
|
||||
commit id:"C"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
it('11: should render a simple gitgraph with two cherry pick commit', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gitGraph
|
||||
commit id: "ZERO"
|
||||
branch develop
|
||||
commit id:"A"
|
||||
checkout main
|
||||
commit id:"ONE"
|
||||
checkout develop
|
||||
commit id:"B"
|
||||
branch featureA
|
||||
commit id:"FIX"
|
||||
commit id: "FIX-2"
|
||||
checkout main
|
||||
commit id:"TWO"
|
||||
cherry-pick id:"A"
|
||||
commit id:"THREE"
|
||||
cherry-pick id:"FIX"
|
||||
checkout develop
|
||||
commit id:"C"
|
||||
merge featureA
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
it('12: should render commits for more than 8 branches', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gitGraph
|
||||
checkout main
|
||||
commit
|
||||
checkout main
|
||||
branch branch1
|
||||
commit
|
||||
checkout main
|
||||
merge branch1
|
||||
branch branch2
|
||||
commit
|
||||
checkout main
|
||||
merge branch2
|
||||
branch branch3
|
||||
commit
|
||||
checkout main
|
||||
merge branch3
|
||||
branch branch4
|
||||
commit
|
||||
checkout main
|
||||
merge branch4
|
||||
branch branch5
|
||||
commit
|
||||
checkout main
|
||||
merge branch5
|
||||
branch branch6
|
||||
commit
|
||||
checkout main
|
||||
merge branch6
|
||||
branch branch7
|
||||
commit
|
||||
checkout main
|
||||
merge branch7
|
||||
branch branch8
|
||||
commit
|
||||
checkout main
|
||||
merge branch8
|
||||
branch branch9
|
||||
commit
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
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"
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
});
|
||||
13
cypress/integration/rendering/info.spec.js
Normal file
13
cypress/integration/rendering/info.spec.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import { imgSnapshotTest } from '../../helpers/util.js';
|
||||
|
||||
describe('Sequencediagram', () => {
|
||||
it('should render a simple info diagrams', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
info
|
||||
showInfo
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
});
|
||||
66
cypress/integration/rendering/journey.spec.js
Normal file
66
cypress/integration/rendering/journey.spec.js
Normal file
@@ -0,0 +1,66 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util.js';
|
||||
|
||||
describe('User journey diagram', () => {
|
||||
it('Simple test', () => {
|
||||
imgSnapshotTest(
|
||||
`journey
|
||||
title Adding journey diagram functionality to mermaid
|
||||
section Order from website
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
it('should render a user journey chart', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
journey
|
||||
title My working day
|
||||
section Go to work
|
||||
Make tea: 5: Me
|
||||
Go upstairs: 3: Me
|
||||
Do work: 1: Me, Cat
|
||||
section Go home
|
||||
Go downstairs: 5: Me
|
||||
Sit down: 3: Me
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
|
||||
it('should render a user journey diagram when useMaxWidth is true (default)', () => {
|
||||
renderGraph(
|
||||
`journey
|
||||
title E-Commerce
|
||||
section Order from website
|
||||
Add to cart: 5: Me
|
||||
section Checkout from website
|
||||
Add payment details: 5: Me
|
||||
`,
|
||||
{ journey: { useMaxWidth: true } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
expect(svg).to.have.attr('width', '100%');
|
||||
expect(svg).to.have.attr('height');
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.eq(565);
|
||||
const style = svg.attr('style');
|
||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||
expect(maxWidthValue).to.eq(700);
|
||||
});
|
||||
});
|
||||
|
||||
it('should render a user journey diagram when useMaxWidth is false', () => {
|
||||
imgSnapshotTest(
|
||||
`journey
|
||||
title E-Commerce
|
||||
section Order from website
|
||||
Add to cart: 5: Me
|
||||
section Checkout from website
|
||||
Add payment details: 5: Me
|
||||
`,
|
||||
{ journey: { useMaxWidth: false } }
|
||||
);
|
||||
});
|
||||
});
|
||||
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 */
|
||||
});
|
||||
78
cypress/integration/rendering/pie.spec.js
Normal file
78
cypress/integration/rendering/pie.spec.js
Normal file
@@ -0,0 +1,78 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util.js';
|
||||
|
||||
describe('Pie Chart', () => {
|
||||
it('should render a simple pie diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
pie title Sports in Sweden
|
||||
"Bandy" : 40
|
||||
"Ice-Hockey" : 80
|
||||
"Football" : 90
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a simple pie diagram with long labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
pie title NETFLIX
|
||||
"Time spent looking for movie" : 90
|
||||
"Time spent watching it" : 10
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a simple pie diagram with capital letters for labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
pie title What Voldemort doesn't have?
|
||||
"FRIENDS" : 2
|
||||
"FAMILY" : 3
|
||||
"NOSE" : 45
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a pie diagram when useMaxWidth is true (default)', () => {
|
||||
renderGraph(
|
||||
`
|
||||
pie title Sports in Sweden
|
||||
"Bandy" : 40
|
||||
"Ice-Hockey" : 80
|
||||
"Football" : 90
|
||||
`,
|
||||
{ pie: { useMaxWidth: true } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
expect(svg).to.have.attr('width', '100%');
|
||||
// expect(svg).to.have.attr('height');
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.eq(450);
|
||||
const style = svg.attr('style');
|
||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||
expect(maxWidthValue).to.eq(984);
|
||||
});
|
||||
});
|
||||
it('should render a pie diagram when useMaxWidth is false', () => {
|
||||
renderGraph(
|
||||
`
|
||||
pie title Sports in Sweden
|
||||
"Bandy" : 40
|
||||
"Ice-Hockey" : 80
|
||||
"Football" : 90
|
||||
`,
|
||||
{ pie: { useMaxWidth: false } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
const width = parseFloat(svg.attr('width'));
|
||||
// expect(height).to.eq(450);
|
||||
expect(width).to.eq(984);
|
||||
expect(svg).to.not.have.attr('style');
|
||||
});
|
||||
});
|
||||
});
|
||||
114
cypress/integration/rendering/requirement.spec.js
Normal file
114
cypress/integration/rendering/requirement.spec.js
Normal file
@@ -0,0 +1,114 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util.js';
|
||||
|
||||
describe('Requirement diagram', () => {
|
||||
it('sample', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
requirementDiagram
|
||||
|
||||
requirement test_req {
|
||||
id: 1
|
||||
text: the test text.
|
||||
risk: high
|
||||
verifymethod: test
|
||||
}
|
||||
|
||||
functionalRequirement test_req2 {
|
||||
id: 1.1
|
||||
text: the second test text.
|
||||
risk: low
|
||||
verifymethod: inspection
|
||||
}
|
||||
|
||||
performanceRequirement test_req3 {
|
||||
id: 1.2
|
||||
text: the third test text.
|
||||
risk: medium
|
||||
verifymethod: demonstration
|
||||
}
|
||||
|
||||
element test_entity {
|
||||
type: simulation
|
||||
}
|
||||
|
||||
element test_entity2 {
|
||||
type: word doc
|
||||
docRef: reqs/test_entity
|
||||
}
|
||||
|
||||
|
||||
test_entity - satisfies -> test_req2
|
||||
test_req - traces -> test_req2
|
||||
test_req - contains -> test_req3
|
||||
test_req <- copies - test_entity2
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render accessibility tags', function () {
|
||||
const expectedTitle = 'Gantt Diagram';
|
||||
const expectedAccDescription = 'Tasks for Q4';
|
||||
renderGraph(
|
||||
`
|
||||
requirementDiagram
|
||||
accTitle: ${expectedTitle}
|
||||
accDescr: ${expectedAccDescription}
|
||||
|
||||
requirement test_req {
|
||||
id: 1
|
||||
text: the test text.
|
||||
risk: high
|
||||
verifymethod: test
|
||||
}
|
||||
|
||||
functionalRequirement test_req2 {
|
||||
id: 1.1
|
||||
text: the second test text.
|
||||
risk: low
|
||||
verifymethod: inspection
|
||||
}
|
||||
|
||||
performanceRequirement test_req3 {
|
||||
id: 1.2
|
||||
text: the third test text.
|
||||
risk: medium
|
||||
verifymethod: demonstration
|
||||
}
|
||||
|
||||
element test_entity {
|
||||
type: simulation
|
||||
}
|
||||
|
||||
element test_entity2 {
|
||||
type: word doc
|
||||
docRef: reqs/test_entity
|
||||
}
|
||||
|
||||
|
||||
test_entity - satisfies -> test_req2
|
||||
test_req - traces -> test_req2
|
||||
test_req - contains -> test_req3
|
||||
test_req <- copies - test_entity2
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
const el = svg.get(0);
|
||||
const children = Array.from(el.children);
|
||||
|
||||
const titleEl = children.find(function (node) {
|
||||
return node.tagName === 'title';
|
||||
});
|
||||
const descriptionEl = children.find(function (node) {
|
||||
return node.tagName === 'desc';
|
||||
});
|
||||
|
||||
expect(titleEl).to.exist;
|
||||
expect(titleEl.textContent).to.equal(expectedTitle);
|
||||
expect(descriptionEl).to.exist;
|
||||
expect(descriptionEl.textContent).to.equal(expectedAccDescription);
|
||||
});
|
||||
});
|
||||
});
|
||||
785
cypress/integration/rendering/sequencediagram.spec.js
Normal file
785
cypress/integration/rendering/sequencediagram.spec.js
Normal file
@@ -0,0 +1,785 @@
|
||||
/// <reference types="Cypress" />
|
||||
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util';
|
||||
|
||||
context('Sequence diagram', () => {
|
||||
it('should render a simple sequence diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
participant Alice
|
||||
participant Bob
|
||||
participant John as John<br/>Second Line
|
||||
Alice ->> Bob: Hello Bob, how are you?
|
||||
Bob-->>John: How about you John?
|
||||
Bob--x Alice: I am good thanks!
|
||||
Bob-x John: I am good thanks!
|
||||
Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row.
|
||||
Bob-->Alice: Checking with John...
|
||||
alt either this
|
||||
Alice->>John: Yes
|
||||
else or this
|
||||
Alice->>John: No
|
||||
else or this will happen
|
||||
Alice->John: Maybe
|
||||
end
|
||||
par this happens in parallel
|
||||
Alice -->> Bob: Parallel message 1
|
||||
and
|
||||
Alice -->> John: Parallel message 2
|
||||
end
|
||||
`,
|
||||
{ sequence: { actorFontFamily: 'courier' } }
|
||||
);
|
||||
});
|
||||
it('should handle different line breaks', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
participant 1 as multiline<br>using #lt;br#gt;
|
||||
participant 2 as multiline<br/>using #lt;br/#gt;
|
||||
participant 3 as multiline<br />using #lt;br /#gt;
|
||||
participant 4 as multiline<br \t/>using #lt;br \t/#gt;
|
||||
1->>2: multiline<br>using #lt;br#gt;
|
||||
note right of 2: multiline<br>using #lt;br#gt;
|
||||
2->>3: multiline<br/>using #lt;br/#gt;
|
||||
note right of 3: multiline<br/>using #lt;br/#gt;
|
||||
3->>4: multiline<br />using #lt;br /#gt;
|
||||
note right of 4: multiline<br />using #lt;br /#gt;
|
||||
4->>1: multiline<br />using #lt;br /#gt;
|
||||
note right of 1: multiline<br \t/>using #lt;br \t/#gt;
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should handle line breaks and wrap annotations', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
participant Alice
|
||||
participant Bob
|
||||
participant John as John<br/>Second Line
|
||||
Alice ->> Bob: Hello Bob, how are you?
|
||||
Bob-->>John: How about you John?
|
||||
Note right of John: John thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row.
|
||||
Bob-->Alice: Checking with John...
|
||||
Note over John:wrap: John looks like he's still thinking, so Bob prods him a bit.
|
||||
Bob-x John: Hey John -<br/>we're still waiting to know<br/>how you're doing
|
||||
Note over John:nowrap: John's trying hard not to break his train of thought.
|
||||
Bob-x John:wrap: John! Are you still debating about how you're doing? How long does it take??
|
||||
Note over John: After a few more moments, John<br/>finally snaps out of it.
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render loops with a slight margin', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
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
|
||||
Bob->>Alice: Pasten
|
||||
end `,
|
||||
{ wrap: true }
|
||||
);
|
||||
});
|
||||
context('font settings', () => {
|
||||
it('should render different note fonts when configured', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: I'm short
|
||||
note left of Alice: I should have bigger fonts
|
||||
Bob->>Alice: Short as well
|
||||
`,
|
||||
{ sequence: { noteFontSize: 18, noteFontFamily: 'Arial' } }
|
||||
);
|
||||
});
|
||||
it('should render different message fonts when configured', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: I'm short
|
||||
Bob->>Alice: Short as well
|
||||
`,
|
||||
{ sequence: { messageFontSize: 18, messageFontFamily: 'Arial' } }
|
||||
);
|
||||
});
|
||||
it('should render different actor fonts when configured', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: I'm short
|
||||
Bob->>Alice: Short as well
|
||||
`,
|
||||
{ sequence: { actorFontSize: 18, actorFontFamily: 'times' } }
|
||||
);
|
||||
});
|
||||
it('should render notes aligned to the left when configured', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: I'm short
|
||||
note left of Alice: I am left aligned
|
||||
Bob->>Alice: Short as well
|
||||
`,
|
||||
{ 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', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: I'm short
|
||||
note left of Alice: I am right aligned
|
||||
Bob->>Alice: Short as well
|
||||
`,
|
||||
{ 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', () => {
|
||||
it('should render long actor descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
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
|
||||
Bob-->A: Pasten !
|
||||
`,
|
||||
{ logLevel: 0 }
|
||||
);
|
||||
});
|
||||
it('should wrap (inline) long actor descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
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
|
||||
Bob-->A: Pasten !
|
||||
`,
|
||||
{ logLevel: 0 }
|
||||
);
|
||||
});
|
||||
it('should wrap (directive) long actor descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: {'config': {'wrap': true }}}%%
|
||||
sequenceDiagram
|
||||
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
|
||||
Bob-->A: Pasten !
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should be possible to use actor symbols instead of boxes', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
actor Alice
|
||||
actor Bob
|
||||
Alice->>Bob: Hi Bob
|
||||
Bob->>Alice: Hi Alice
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long notes left of actor', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: Hola
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long notes wrapped (inline) left of actor', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: Hola
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long notes right of actor', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: Hola
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long notes wrapped (inline) right of actor', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: Hola
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long notes over actor', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: Hola
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long notes wrapped (inline) over actor', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: Hola
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long messages from an actor to the left to one to the right', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long messages wrapped (inline) from an actor to the left to one to the right', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long messages from an actor to the right to one to the left', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: I'm short
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render long messages wrapped (inline) from an actor to the right to one to the left', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>Bob: I'm short
|
||||
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
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
});
|
||||
context('background rects', () => {
|
||||
it('should render a single and nested rects', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
participant A
|
||||
participant B
|
||||
participant C
|
||||
participant D
|
||||
participant E
|
||||
participant G
|
||||
|
||||
A ->>+ B: Task 1
|
||||
rect rgb(178, 102, 255)
|
||||
B ->>+ C: Task 2
|
||||
C -->>- B: Return
|
||||
end
|
||||
|
||||
A ->> D: Task 3
|
||||
rect rgb(0, 128, 255)
|
||||
D ->>+ E: Task 4
|
||||
rect rgb(0, 204, 0)
|
||||
E ->>+ G: Task 5
|
||||
G -->>- E: Return
|
||||
end
|
||||
E ->> E: Task 6
|
||||
end
|
||||
D -->> A: Complete
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render a single and nested opt with long test overflowing', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
participant A
|
||||
participant B
|
||||
participant C
|
||||
participant D
|
||||
participant E
|
||||
participant G
|
||||
|
||||
A ->>+ B: Task 1
|
||||
opt this is an opt with a long title that will overflow
|
||||
B ->>+ C: Task 2
|
||||
C -->>- B: Return
|
||||
end
|
||||
|
||||
A ->> D: Task 3
|
||||
opt this is another opt with a long title that will overflow
|
||||
D ->>+ E: Task 4
|
||||
opt this is a nested opt with a long title that will overflow
|
||||
E ->>+ G: Task 5
|
||||
G -->>- E: Return
|
||||
end
|
||||
E ->> E: Task 6
|
||||
end
|
||||
D -->> A: Complete
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render a single and nested opt with long test wrapping', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'config': { 'wrap': true } } }%%
|
||||
sequenceDiagram
|
||||
participant A
|
||||
participant B
|
||||
participant C
|
||||
participant D
|
||||
participant E
|
||||
participant G
|
||||
|
||||
A ->>+ B: Task 1
|
||||
opt this is an opt with a long title that will overflow
|
||||
B ->>+ C: Task 2
|
||||
C -->>- B: Return
|
||||
end
|
||||
|
||||
A ->> D: Task 3
|
||||
opt this is another opt with a long title that will overflow
|
||||
D ->>+ E: Task 4
|
||||
opt this is a nested opt with a long title that will overflow
|
||||
E ->>+ G: Task 5
|
||||
G -->>- E: Return
|
||||
end
|
||||
E ->> E: Task 6
|
||||
end
|
||||
D -->> A: Complete
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render rect around and inside loops', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
A ->> B: 1
|
||||
rect rgb(204, 0, 102)
|
||||
loop check C
|
||||
C ->> C: Every 10 seconds
|
||||
end
|
||||
end
|
||||
A ->> B: 2
|
||||
loop check D
|
||||
C ->> D: 3
|
||||
rect rgb(153, 153, 255)
|
||||
D -->> D: 5
|
||||
D --> C: 4
|
||||
end
|
||||
end
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render rect around and inside alts', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
A ->> B: 1
|
||||
rect rgb(204, 0, 102)
|
||||
alt yes
|
||||
C ->> C: 1
|
||||
else no
|
||||
rect rgb(0, 204, 204)
|
||||
C ->> C: 0
|
||||
end
|
||||
end
|
||||
end
|
||||
B ->> A: Return
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render rect around and inside opts', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
A ->> B: 1
|
||||
rect rgb(204, 0, 102)
|
||||
opt maybe
|
||||
C -->> D: Do something
|
||||
rect rgb(0, 204, 204)
|
||||
C ->> C: 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
opt possibly
|
||||
rect rgb(0, 204, 204)
|
||||
C ->> C: 0
|
||||
end
|
||||
end
|
||||
B ->> A: Return
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render rect around and inside criticals', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
A ->> B: 1
|
||||
rect rgb(204, 0, 102)
|
||||
critical yes
|
||||
C ->> C: 1
|
||||
option no
|
||||
rect rgb(0, 204, 204)
|
||||
C ->> C: 0
|
||||
end
|
||||
end
|
||||
end
|
||||
B ->> A: Return
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render rect around and inside breaks', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
A ->> B: 1
|
||||
rect rgb(204, 0, 102)
|
||||
break yes
|
||||
rect rgb(0, 204, 204)
|
||||
C ->> C: 0
|
||||
end
|
||||
end
|
||||
end
|
||||
B ->> A: Return
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render autonumber when configured with such', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
Alice->>John: Hello John, how are you?
|
||||
loop Healthcheck
|
||||
John->>John: Fight against hypochondria
|
||||
end
|
||||
Note right of John: Rational thoughts!
|
||||
John-->>Alice: Great!
|
||||
John->>Bob: How about you?
|
||||
Bob-->>John: Jolly good!
|
||||
`,
|
||||
{ sequence: { actorMargin: 50, showSequenceNumbers: true } }
|
||||
);
|
||||
});
|
||||
it('should render autonumber when autonumber keyword is used', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
autonumber
|
||||
Alice->>John: Hello John, how are you?
|
||||
loop Healthcheck
|
||||
John->>John: Fight against hypochondria
|
||||
end
|
||||
Note right of John: Rational thoughts!
|
||||
John-->>Alice: Great!
|
||||
John->>Bob: How about you?
|
||||
Bob-->>John: Jolly good!
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render autonumber with different line breaks', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
sequenceDiagram
|
||||
autonumber
|
||||
Alice->>John: Hello John,<br>how are you?
|
||||
Alice->>John: John,<br/>can you hear me?
|
||||
John-->>Alice: Hi Alice,<br />I can hear you!
|
||||
John-->>Alice: I feel great!
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render dark theme from init directive and configure font size 24 font', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: {'theme': 'dark', 'config': {'fontSize': 24}}}%%
|
||||
sequenceDiagram
|
||||
Alice->>John: Hello John, how are you?
|
||||
Alice->>John: John, can you hear me?
|
||||
John-->>Alice: Hi Alice, I can hear you!
|
||||
John-->>Alice: I feel great!
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render with wrapping enabled', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'config': { 'wrap': true }}}%%
|
||||
sequenceDiagram
|
||||
participant A as Alice, the talkative one
|
||||
A->>John: Hello John, how are you today? I'm feeling quite verbose today.
|
||||
A->>John: John, can you hear me? If you are not available, we can talk later.
|
||||
John-->>A: Hi Alice, I can hear you! I was finishing up an important meeting.
|
||||
John-->>A: I feel great! I was not ignoring you. I am sorry you had to wait for a response.
|
||||
`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
it('should render with an init directive', () => {
|
||||
imgSnapshotTest(
|
||||
`%%{init: { "theme": "dark", 'config': { "fontFamily": "Menlo", "fontSize": 18, "fontWeight": 400, "wrap": true }}}%%
|
||||
sequenceDiagram
|
||||
Alice->>Bob: Hello Bob, how are you? If you are not available right now, I can leave you a message. Please get back to me as soon as you can!
|
||||
Note left of Alice: Bob thinks
|
||||
Bob->>Alice: Fine!`,
|
||||
{}
|
||||
);
|
||||
});
|
||||
});
|
||||
context('directives', () => {
|
||||
it('should override config with directive settings', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { "config": { "mirrorActors": true }}}%%
|
||||
sequenceDiagram
|
||||
Alice->>Bob: I'm short
|
||||
note left of Alice: config set to mirrorActors: false<br/>directive set to mirrorActors: true
|
||||
Bob->>Alice: Short as well
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
sequence: { mirrorActors: false, noteFontSize: 18, noteFontFamily: 'Arial' },
|
||||
}
|
||||
);
|
||||
});
|
||||
it('should override config with directive settings 2', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { "config": { "mirrorActors": false, "wrap": true }}}%%
|
||||
sequenceDiagram
|
||||
Alice->>Bob: I'm short
|
||||
note left of Alice: config: mirrorActors=true<br/>directive: mirrorActors=false
|
||||
Bob->>Alice: Short as well
|
||||
`,
|
||||
{ logLevel: 0, sequence: { mirrorActors: true, noteFontSize: 18, noteFontFamily: 'Arial' } }
|
||||
);
|
||||
});
|
||||
});
|
||||
context('links', () => {
|
||||
it('should support actor links and properties EXPERIMENTAL: USE WITH CAUTION', () => {
|
||||
//Be aware that the syntax for "properties" is likely to be changed.
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { "config": { "mirrorActors": true, "forceMenus": true }}}%%
|
||||
sequenceDiagram
|
||||
participant a as Alice
|
||||
participant j as John
|
||||
note right of a: Hello world!
|
||||
properties a: {"class": "internal-service-actor", "type": "@clock"}
|
||||
properties j: {"class": "external-service-actor", "type": "@computer"}
|
||||
links a: {"Repo": "https://www.contoso.com/repo", "Swagger": "https://www.contoso.com/swagger"}
|
||||
links j: {"Repo": "https://www.contoso.com/repo"}
|
||||
links a: {"Dashboard": "https://www.contoso.com/dashboard", "On-Call": "https://www.contoso.com/oncall"}
|
||||
link a: Contacts @ https://contacts.contoso.com/?contact=alice@contoso.com
|
||||
a->>j: Hello John, how are you?
|
||||
j-->>a: Great!
|
||||
`,
|
||||
{ logLevel: 0, sequence: { mirrorActors: true, noteFontSize: 18, noteFontFamily: 'Arial' } }
|
||||
);
|
||||
});
|
||||
it('should support actor links and properties when not mirrored EXPERIMENTAL: USE WITH CAUTION', () => {
|
||||
//Be aware that the syntax for "properties" is likely to be changed.
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { "config": { "mirrorActors": false, "forceMenus": true, "wrap": true }}}%%
|
||||
sequenceDiagram
|
||||
participant a as Alice
|
||||
participant j as John
|
||||
note right of a: Hello world!
|
||||
properties a: {"class": "internal-service-actor", "type": "@clock"}
|
||||
properties j: {"class": "external-service-actor", "type": "@computer"}
|
||||
links a: {"Repo": "https://www.contoso.com/repo", "Swagger": "https://www.contoso.com/swagger"}
|
||||
links j: {"Repo": "https://www.contoso.com/repo"}
|
||||
links a: {"Dashboard": "https://www.contoso.com/dashboard", "On-Call": "https://www.contoso.com/oncall"}
|
||||
a->>j: Hello John, how are you?
|
||||
j-->>a: Great!
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
sequence: { mirrorActors: false, noteFontSize: 18, noteFontFamily: 'Arial' },
|
||||
}
|
||||
);
|
||||
});
|
||||
it("shouldn't display unused participants", () => {
|
||||
//Be aware that the syntax for "properties" is likely to be changed.
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { "config": { "sequence": {"hideUnusedParticipants": true }}}}%%
|
||||
sequenceDiagram
|
||||
participant a
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
sequence: { mirrorActors: false, noteFontSize: 18, noteFontFamily: 'Arial' },
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
context('svg size', () => {
|
||||
it('should render a sequence diagram when useMaxWidth is true (default)', () => {
|
||||
renderGraph(
|
||||
`
|
||||
sequenceDiagram
|
||||
participant Alice
|
||||
participant Bob
|
||||
participant John as John<br/>Second Line
|
||||
Alice ->> Bob: Hello Bob, how are you?
|
||||
Bob-->>John: How about you John?
|
||||
Bob--x Alice: I am good thanks!
|
||||
Bob-x John: I am good thanks!
|
||||
Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row.
|
||||
Bob-->Alice: Checking with John...
|
||||
alt either this
|
||||
Alice->>John: Yes
|
||||
else or this
|
||||
Alice->>John: No
|
||||
else or this will happen
|
||||
Alice->John: Maybe
|
||||
end
|
||||
par this happens in parallel
|
||||
Alice -->> Bob: Parallel message 1
|
||||
and
|
||||
Alice -->> John: Parallel message 2
|
||||
end
|
||||
`,
|
||||
{ sequence: { useMaxWidth: true } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
expect(svg).to.have.attr('width', '100%');
|
||||
// expect(svg).to.have.attr('height');
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.be.within(920, 971);
|
||||
const style = svg.attr('style');
|
||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
expect(maxWidthValue).to.be.within(820 * 0.95, 820 * 1.05);
|
||||
});
|
||||
});
|
||||
it('should render a sequence diagram when useMaxWidth is false', () => {
|
||||
renderGraph(
|
||||
`
|
||||
sequenceDiagram
|
||||
participant Alice
|
||||
participant Bob
|
||||
participant John as John<br/>Second Line
|
||||
Alice ->> Bob: Hello Bob, how are you?
|
||||
Bob-->>John: How about you John?
|
||||
Bob--x Alice: I am good thanks!
|
||||
Bob-x John: I am good thanks!
|
||||
Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row.
|
||||
Bob-->Alice: Checking with John...
|
||||
alt either this
|
||||
Alice->>John: Yes
|
||||
else or this
|
||||
Alice->>John: No
|
||||
else or this will happen
|
||||
Alice->John: Maybe
|
||||
end
|
||||
par this happens in parallel
|
||||
Alice -->> Bob: Parallel message 1
|
||||
and
|
||||
Alice -->> John: Parallel message 2
|
||||
end
|
||||
`,
|
||||
{ sequence: { useMaxWidth: false } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
const width = parseFloat(svg.attr('width'));
|
||||
// expect(height).to.be.within(920, 971);
|
||||
// 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(svg).to.not.have.attr('style');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
524
cypress/integration/rendering/stateDiagram-v2.spec.js
Normal file
524
cypress/integration/rendering/stateDiagram-v2.spec.js
Normal file
@@ -0,0 +1,524 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util';
|
||||
|
||||
describe('State diagram', () => {
|
||||
it('v2 should render a simple info', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
info
|
||||
`,
|
||||
{ logLevel: 1, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a simple state diagrams', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
|
||||
[*] --> State1
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a long descriptions instead of id when available', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
|
||||
[*] --> S1
|
||||
state "Some long name" as S1
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a long descriptions with additional descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
|
||||
[*] --> S1
|
||||
state "Some long name" as S1: The description
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a single state with short descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
state "A long long name" as long1
|
||||
state "A" as longlonglongid
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a transition descriptions with new lines', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
|
||||
[*] --> S1
|
||||
S1 --> S2: long line using<br/>should work
|
||||
S1 --> S3: long line using <br>should work
|
||||
S1 --> S4: long line using \\nshould work
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a state with a note', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
State1: The state with a note
|
||||
note right of State1
|
||||
Important information! You can write
|
||||
notes.
|
||||
end note
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a state with on the left side when so specified', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
State1: The state with a note with minus - and plus + in it
|
||||
note left of State1
|
||||
Important information! You can write
|
||||
notes with . and in them.
|
||||
end note
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a state with a note together with another state', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
State1: The state with a note +,-
|
||||
note right of State1
|
||||
Important information! You can write +,-
|
||||
notes.
|
||||
end note
|
||||
State1 --> State2 : With +,-
|
||||
note left of State2 : This is the note +,-<br/>
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a note with multiple lines in it', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
State1: The state with a note
|
||||
note right of State1
|
||||
Important information! You\ncan write
|
||||
notes with multiple lines...
|
||||
Here is another line...
|
||||
And another line...
|
||||
end note
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
it('v2 should handle multiline notes with different line breaks', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
State1
|
||||
note right of State1
|
||||
Line1<br>Line2<br/>Line3<br />Line4<br />Line5
|
||||
end note
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('v2 should render a states with descriptions including multi-line descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
State1: This a a single line description
|
||||
State2: This a a multi line description
|
||||
State2: here comes the multi part
|
||||
[*] --> State1
|
||||
State1 --> State2
|
||||
State2 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a simple state diagrams 2', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
[*] --> State1
|
||||
State1 --> State2
|
||||
State1 --> State3
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a simple state diagrams with labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
[*] --> State1
|
||||
State1 --> State2 : Transition 1
|
||||
State1 --> State3 : Transition 2
|
||||
State1 --> State4 : Transition 3
|
||||
State1 --> State5 : Transition 4
|
||||
State2 --> State3 : Transition 5
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render state descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
state "Long state description" as XState1
|
||||
state "Another Long state description" as XState2
|
||||
XState2 : New line
|
||||
XState1 --> XState2
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render composite states', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
[*] --> NotShooting: Pacifist
|
||||
NotShooting --> A
|
||||
NotShooting --> B
|
||||
NotShooting --> C
|
||||
|
||||
state NotShooting {
|
||||
[*] --> Idle: Yet another long long öong öong öong label
|
||||
Idle --> Configuring : EvConfig
|
||||
Configuring --> Idle : EvConfig EvConfig EvConfig EvConfig EvConfig
|
||||
}
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render multiple composite states', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
[*]-->TV
|
||||
|
||||
state TV {
|
||||
[*] --> Off: Off to start with
|
||||
On --> Off : Turn off
|
||||
Off --> On : Turn on
|
||||
}
|
||||
|
||||
TV--> Console
|
||||
|
||||
state Console {
|
||||
[*] --> Off2: Off to start with
|
||||
On2--> Off2 : Turn off
|
||||
Off2 --> On2 : Turn on
|
||||
On2-->Playing
|
||||
|
||||
state Playing {
|
||||
Alive --> Dead
|
||||
Dead-->Alive
|
||||
}
|
||||
}
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
it('v2 should render forks in composite states', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
[*]-->TV
|
||||
|
||||
state TV {
|
||||
state fork_state <<fork>>
|
||||
[*] --> fork_state
|
||||
fork_state --> State2
|
||||
fork_state --> State3
|
||||
|
||||
state join_state <<join>>
|
||||
State2 --> join_state
|
||||
State3 --> join_state
|
||||
join_state --> State4
|
||||
State4 --> [*]
|
||||
}
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
it('v2 should render forks and joins', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
state fork_state <<fork>>
|
||||
[*] --> fork_state
|
||||
fork_state --> State2
|
||||
fork_state --> State3
|
||||
|
||||
state join_state <<join>>
|
||||
State2 --> join_state
|
||||
State3 --> join_state
|
||||
join_state --> State4
|
||||
State4 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render concurrency states', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
[*] --> Active
|
||||
|
||||
state Active {
|
||||
[*] --> NumLockOff
|
||||
NumLockOff --> NumLockOn : EvNumLockPressed
|
||||
NumLockOn --> NumLockOff : EvNumLockPressed
|
||||
--
|
||||
[*] --> CapsLockOff
|
||||
CapsLockOff --> CapsLockOn : EvCapsLockPressed
|
||||
CapsLockOn --> CapsLockOff : EvCapsLockPressed
|
||||
--
|
||||
[*] --> ScrollLockOff
|
||||
ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
|
||||
ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
|
||||
}
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('v2 should render a state with states in it', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
state PilotCockpit {
|
||||
state Parent {
|
||||
C
|
||||
}
|
||||
}
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 it should be possibel to use a choice', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
[*] --> Off
|
||||
Off --> On
|
||||
state MyChoice [[choice]]
|
||||
On --> MyChoice
|
||||
MyChoice --> Washing
|
||||
MyChoice --> Drying
|
||||
Washing --> Finished
|
||||
Finished --> [*]
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 A compound state should be able to link to itself', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
state Active {
|
||||
Idle
|
||||
}
|
||||
Inactive --> Idle: ACT
|
||||
Active --> Active: LOG
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 width of compond state should grow with title if title is wider', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
state "Long state name 2" as NotShooting {
|
||||
a-->b
|
||||
}
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 state label with names in it', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
Yswsii: Your state with spaces in it
|
||||
[*] --> Yswsii
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 Simplest composite state', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
state Parent {
|
||||
C
|
||||
}
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
fontFamily: 'courier',
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 should handle multiple arrows from one node to another', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
a --> b: Start
|
||||
a --> b: Stop
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
fontFamily: 'courier',
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 should handle multiple notes added to one state', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
MyState
|
||||
note left of MyState : I am a leftie
|
||||
note right of MyState : I am a rightie
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
fontFamily: 'courier',
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 should handle different rendering directions in composite states', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
direction LR
|
||||
state A {
|
||||
direction BT
|
||||
a --> b
|
||||
}
|
||||
state C {
|
||||
direction RL
|
||||
c --> d
|
||||
}
|
||||
A --> C
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
fontFamily: 'courier',
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 handle transition from one state in a composite state to a composite state', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram-v2
|
||||
state S1 {
|
||||
sub1 -->sub2
|
||||
}
|
||||
|
||||
state S2 {
|
||||
sub4
|
||||
}
|
||||
S1 --> S2
|
||||
sub1 --> sub4
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
fontFamily: 'courier',
|
||||
}
|
||||
);
|
||||
});
|
||||
it('v2 should render a state diagram when useMaxWidth is true (default)', () => {
|
||||
renderGraph(
|
||||
`
|
||||
stateDiagram-v2
|
||||
|
||||
[*] --> State1
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ state: { useMaxWidth: true } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
expect(svg).to.have.attr('width', '100%');
|
||||
// expect(svg).to.have.attr('height');
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.be.within(177, 178);
|
||||
const style = svg.attr('style');
|
||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
expect(maxWidthValue).to.be.within(65, 85);
|
||||
});
|
||||
});
|
||||
it('v2 should render a state diagram when useMaxWidth is false', () => {
|
||||
renderGraph(
|
||||
`
|
||||
stateDiagram-v2
|
||||
|
||||
[*] --> State1
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ state: { useMaxWidth: false } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
const width = parseFloat(svg.attr('width'));
|
||||
// expect(height).to.be.within(177, 178);
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
expect(width).to.be.within(65, 85);
|
||||
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' }
|
||||
);
|
||||
});
|
||||
});
|
||||
393
cypress/integration/rendering/stateDiagram.spec.js
Normal file
393
cypress/integration/rendering/stateDiagram.spec.js
Normal file
@@ -0,0 +1,393 @@
|
||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util';
|
||||
|
||||
describe('State diagram', () => {
|
||||
it('should render a simple state diagrams', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
[*] --> State1
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a long descriptions instead of id when available', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
|
||||
[*] --> S1
|
||||
state "Some long name" as S1
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a long descriptions with additional descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
|
||||
[*] --> S1
|
||||
state "Some long name" as S1: The description
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a single state with short descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
state "A long long name" as long1
|
||||
state "A" as longlonglongid
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a transition descriptions with new lines', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
|
||||
[*] --> S1
|
||||
S1 --> S2: long line using<br/>should work
|
||||
S1 --> S3: long line using <br>should work
|
||||
S1 --> S4: long line using \\nshould work
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a state with a note', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
State1: The state with a note
|
||||
note right of State1
|
||||
Important information! You can write
|
||||
notes.
|
||||
end note
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a state with on the left side when so specified', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
State1: The state with a note with minus - and plus + in it
|
||||
note left of State1
|
||||
Important information! You can write
|
||||
notes with . and in them.
|
||||
end note
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a state with a note together with another state', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
State1: The state with a note +,-
|
||||
note right of State1
|
||||
Important information! You can write +,-
|
||||
notes.
|
||||
end note
|
||||
State1 --> State2 : With +,-
|
||||
note left of State2 : This is the note +,-<br/>
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a note with multiple lines in it', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
State1: The state with a note
|
||||
note right of State1
|
||||
Important information! You\ncan write
|
||||
notes with multiple lines...
|
||||
Here is another line...
|
||||
And another line...
|
||||
end note
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
it('should handle multiline notes with different line breaks', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
State1
|
||||
note right of State1
|
||||
Line1<br>Line2<br/>Line3<br />Line4<br />Line5
|
||||
end note
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
|
||||
it('should render a states with descriptions including multi-line descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
State1: This a a single line description
|
||||
State2: This a a multi line description
|
||||
State2: here comes the multi part
|
||||
[*] --> State1
|
||||
State1 --> State2
|
||||
State2 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a simple state diagrams 2', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
[*] --> State1
|
||||
State1 --> State2
|
||||
State1 --> State3
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a simple state diagrams with labels', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
[*] --> State1
|
||||
State1 --> State2 : Transition 1
|
||||
State1 --> State3 : Transition 2
|
||||
State1 --> State4 : Transition 3
|
||||
State1 --> State5 : Transition 4
|
||||
State2 --> State3 : Transition 5
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render state descriptions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
state "Long state description" as XState1
|
||||
state "Another Long state description" as XState2
|
||||
XState2 : New line
|
||||
XState1 --> XState2
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render composite states', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
[*] --> NotShooting: Pacifist
|
||||
NotShooting --> A
|
||||
NotShooting --> B
|
||||
NotShooting --> C
|
||||
|
||||
state NotShooting {
|
||||
[*] --> Idle: Yet another long long öong öong öong label
|
||||
Idle --> Configuring : EvConfig
|
||||
Configuring --> Idle : EvConfig EvConfig EvConfig EvConfig EvConfig
|
||||
}
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render multiple composit states', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
[*]-->TV
|
||||
|
||||
state TV {
|
||||
[*] --> Off: Off to start with
|
||||
On --> Off : Turn off
|
||||
Off --> On : Turn on
|
||||
}
|
||||
|
||||
TV--> Console
|
||||
|
||||
state Console {
|
||||
[*] --> Off2: Off to start with
|
||||
On2--> Off2 : Turn off
|
||||
Off2 --> On2 : Turn on
|
||||
On2-->Playing
|
||||
|
||||
state Playing {
|
||||
Alive --> Dead
|
||||
Dead-->Alive
|
||||
}
|
||||
}
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
it('should render forks in composit states', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
[*]-->TV
|
||||
|
||||
state TV {
|
||||
state fork_state <<fork>>
|
||||
[*] --> fork_state
|
||||
fork_state --> State2
|
||||
fork_state --> State3
|
||||
|
||||
state join_state <<join>>
|
||||
State2 --> join_state
|
||||
State3 --> join_state
|
||||
join_state --> State4
|
||||
State4 --> [*]
|
||||
}
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
});
|
||||
it('should render forks and joins', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
state fork_state <<fork>>
|
||||
[*] --> fork_state
|
||||
fork_state --> State2
|
||||
fork_state --> State3
|
||||
|
||||
state join_state <<join>>
|
||||
State2 --> join_state
|
||||
State3 --> join_state
|
||||
join_state --> State4
|
||||
State4 --> [*]
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render concurrency states', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
[*] --> Active
|
||||
|
||||
state Active {
|
||||
[*] --> NumLockOff
|
||||
NumLockOff --> NumLockOn : EvNumLockPressed
|
||||
NumLockOn --> NumLockOff : EvNumLockPressed
|
||||
--
|
||||
[*] --> CapsLockOff
|
||||
CapsLockOff --> CapsLockOn : EvCapsLockPressed
|
||||
CapsLockOn --> CapsLockOff : EvCapsLockPressed
|
||||
--
|
||||
[*] --> ScrollLockOff
|
||||
ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
|
||||
ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
|
||||
}
|
||||
`,
|
||||
{ logLevel: 0, fontFamily: 'courier' }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a state with states in it', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
state PilotCockpit {
|
||||
state Parent {
|
||||
C
|
||||
}
|
||||
}
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
fontFamily: 'courier',
|
||||
}
|
||||
);
|
||||
});
|
||||
it('Simplest composite state', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
state Parent {
|
||||
C
|
||||
}
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
fontFamily: 'courier',
|
||||
}
|
||||
);
|
||||
});
|
||||
it('should handle multiple arrows from one node to another', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
stateDiagram
|
||||
a --> b: Start
|
||||
a --> b: Stop
|
||||
`,
|
||||
{
|
||||
logLevel: 0,
|
||||
fontFamily: 'courier',
|
||||
}
|
||||
);
|
||||
});
|
||||
it('should render a state diagram when useMaxWidth is true (default)', () => {
|
||||
renderGraph(
|
||||
`
|
||||
stateDiagram
|
||||
[*] --> State1
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ state: { useMaxWidth: true } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
expect(svg).to.have.attr('width', '100%');
|
||||
// expect(svg).to.have.attr('height');
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
// expect(height).to.be.within(176, 178);
|
||||
const style = svg.attr('style');
|
||||
expect(style).to.match(/^max-width: [\d.]+px;$/);
|
||||
const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// Todo investigate difference
|
||||
// expect(maxWidthValue).to.be.within(112 * .95, 112 * 1.05);
|
||||
expect(maxWidthValue).to.be.within(65, 85);
|
||||
});
|
||||
});
|
||||
it('should render a state diagram when useMaxWidth is false', () => {
|
||||
renderGraph(
|
||||
`
|
||||
stateDiagram
|
||||
[*] --> State1
|
||||
State1 --> [*]
|
||||
`,
|
||||
{ state: { useMaxWidth: false } }
|
||||
);
|
||||
cy.get('svg').should((svg) => {
|
||||
// const height = parseFloat(svg.attr('height'));
|
||||
const width = parseFloat(svg.attr('width'));
|
||||
// expect(height).to.be.within(176, 178);
|
||||
// use within because the absolute value can be slightly different depending on the environment ±5%
|
||||
// Todo investigate difference
|
||||
// expect(width).to.be.within(112 * .95, 112 * 1.05);
|
||||
expect(width).to.be.within(65, 85);
|
||||
|
||||
expect(svg).to.not.have.attr('style');
|
||||
});
|
||||
});
|
||||
});
|
||||
332
cypress/integration/rendering/theme.spec.js
Normal file
332
cypress/integration/rendering/theme.spec.js
Normal file
@@ -0,0 +1,332 @@
|
||||
import { imgSnapshotTest } from '../../helpers/util.js';
|
||||
|
||||
describe('themeCSS balancing, it', () => {
|
||||
it('should not allow unbalanced CSS definitions', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'themeCSS': '} * { background: red }' } }%%
|
||||
flowchart TD
|
||||
a --> b
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should not allow unbalanced CSS definitions 2', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'themeCSS': '\u007D * { background: red }' } }%%
|
||||
flowchart TD
|
||||
a2 --> b2
|
||||
`,
|
||||
{}
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Pie Chart', () => {
|
||||
// beforeEach(()=>{
|
||||
// cy.clock((new Date('2014-06-09')).getTime());
|
||||
// });
|
||||
|
||||
['default', 'forest', 'dark', 'neutral'].forEach((theme) => {
|
||||
describe(theme, () => {
|
||||
it('should render a pie diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
pie title Sports in Sweden
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
"Bandy" : 40
|
||||
"Ice-Hockey" : 80
|
||||
"Football" : 90
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a flowchart diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0} }%%
|
||||
graph TD
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
B --> G[/Another/]
|
||||
C ==>|One| D[Laptop]
|
||||
C -->|Two| E[iPhone]
|
||||
C -->|Three| F[fa:fa-car Car]
|
||||
subgraph section
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
end
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a new flowchart diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0, 'theme': '${theme}'} }%%
|
||||
flowchart TD
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
B --> C{Let me think}
|
||||
B --> G[Another]
|
||||
C ==>|One| D[Laptop]
|
||||
C x--x|Two| E[iPhone]
|
||||
C o--o|Three| F[fa:fa-car Car]
|
||||
subgraph section
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
end
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a sequence diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0, 'theme': '${theme}'} }%%
|
||||
sequenceDiagram
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
|
||||
autonumber
|
||||
par Action 1
|
||||
Alice->>John: Hello John, how are you?
|
||||
and Action 2
|
||||
Alice->>Bob: Hello Bob, how are you?
|
||||
end
|
||||
Alice->>+John: Hello John, how are you?
|
||||
Alice->>+John: John, can you hear me?
|
||||
John-->>-Alice: Hi Alice, I can hear you!
|
||||
Note right of John: John is perceptive
|
||||
John-->>-Alice: I feel great!
|
||||
loop Every minute
|
||||
John-->Alice: Great!
|
||||
end
|
||||
|
||||
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
|
||||
it('should render a class diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0, 'theme': '${theme}'} }%%
|
||||
classDiagram
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
|
||||
Animal "*" <|-- "1" Duck
|
||||
Animal "1" <|-- "10" Fish
|
||||
Animal <|-- Zebra
|
||||
Animal : +int age
|
||||
Animal : +String gender
|
||||
Animal: +isMammal()
|
||||
Animal: +mate()
|
||||
class Duck{
|
||||
+String beakColor
|
||||
+swim()
|
||||
+quack()
|
||||
}
|
||||
class Fish{
|
||||
-int sizeInFeet
|
||||
-canEat()
|
||||
}
|
||||
class Zebra{
|
||||
+bool is_wild
|
||||
+run()
|
||||
}
|
||||
classA <|-- classB
|
||||
classC *-- classD
|
||||
classE o-- classF
|
||||
classG <-- classH
|
||||
classI -- classJ
|
||||
classK <.. classL
|
||||
classM <|.. classN
|
||||
classO .. classP
|
||||
classA --|> classB : Inheritance
|
||||
classC --* classD : Composition
|
||||
classE --o classF : Aggregation
|
||||
classG --> classH : Association
|
||||
classI -- classJ : Link(Solid)
|
||||
classK ..> classL : Dependency
|
||||
classM ..|> classN : Realization
|
||||
classO .. classP : Link(Dashed)
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a state diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0, 'theme': '${theme}'} }%%
|
||||
stateDiagram
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
|
||||
[*] --> Active
|
||||
|
||||
state Active {
|
||||
[*] --> NumLockOff
|
||||
NumLockOff --> NumLockOn : EvNumLockPressed
|
||||
NumLockOn --> NumLockOff : EvNumLockPressed
|
||||
--
|
||||
[*] --> CapsLockOff
|
||||
CapsLockOff --> CapsLockOn : EvCapsLockPressed
|
||||
CapsLockOn --> CapsLockOff : EvCapsLockPressed
|
||||
--
|
||||
[*] --> ScrollLockOff
|
||||
ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
|
||||
ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
|
||||
}
|
||||
state SomethingElse {
|
||||
A --> B
|
||||
B --> A
|
||||
}
|
||||
|
||||
Active --> SomethingElse
|
||||
note right of SomethingElse : This is the note to the right.
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a state diagram (v2)', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0, 'theme': '${theme}'} }%%
|
||||
stateDiagram-v2
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
|
||||
[*] --> Active
|
||||
|
||||
state Active {
|
||||
[*] --> NumLockOff
|
||||
NumLockOff --> NumLockOn : EvNumLockPressed
|
||||
NumLockOn --> NumLockOff : EvNumLockPressed
|
||||
--
|
||||
[*] --> CapsLockOff
|
||||
CapsLockOff --> CapsLockOn : EvCapsLockPressed
|
||||
CapsLockOn --> CapsLockOff : EvCapsLockPressed
|
||||
--
|
||||
[*] --> ScrollLockOff
|
||||
ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
|
||||
ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
|
||||
}
|
||||
state SomethingElse {
|
||||
A --> B
|
||||
B --> A
|
||||
}
|
||||
|
||||
Active --> SomethingElse2
|
||||
note right of SomethingElse2 : This is the note to the right.
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a er diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
erDiagram
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
|
||||
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
||||
CUSTOMER ||--o{ ORDER : places
|
||||
CUSTOMER ||--o{ INVOICE : "liable for"
|
||||
DELIVERY-ADDRESS ||--o{ ORDER : receives
|
||||
INVOICE ||--|{ ORDER : covers
|
||||
ORDER ||--|{ ORDER-ITEM : includes
|
||||
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
||||
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
||||
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a user journey diagram', () => {
|
||||
imgSnapshotTest(
|
||||
`
|
||||
%%{init: { 'logLevel': 0, 'theme': '${theme}'} }%%
|
||||
journey
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
|
||||
title My working day
|
||||
section Go to work
|
||||
Make tea: 5: Me
|
||||
Go upstairs: 3: Me
|
||||
Do work: 1: Me, Cat
|
||||
section Go home
|
||||
Go downstairs: 5: Me
|
||||
Sit down: 5: Me
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
it('should render a gantt diagram', () => {
|
||||
cy.clock(new Date('2014-01-06').getTime());
|
||||
imgSnapshotTest(
|
||||
`
|
||||
gantt
|
||||
accTitle: This is a title
|
||||
accDescr: This is a description
|
||||
|
||||
dateFormat :YYYY-MM-DD
|
||||
title :Adding GANTT diagram functionality to mermaid
|
||||
excludes :excludes the named dates/days from being included in a charted task..
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d
|
||||
|
||||
section Documentation
|
||||
Describe gantt syntax :active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page :after a1 , 20h
|
||||
Add another diagram to demo page :doc1, after a1 , 48h
|
||||
|
||||
section Last section
|
||||
Describe gantt syntax :after doc1, 3d
|
||||
Add gantt diagram to demo page :20h
|
||||
Add another diagram to demo page :48h
|
||||
`,
|
||||
{ theme }
|
||||
);
|
||||
cy.get('svg');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
61
cypress/platform/bundle-test.js
Normal file
61
cypress/platform/bundle-test.js
Normal file
@@ -0,0 +1,61 @@
|
||||
import mermaid from '../../dist/mermaid.core';
|
||||
|
||||
let code = `flowchart LR
|
||||
Power_Supply --> Transmitter_A
|
||||
Power_Supply --> Transmitter_B
|
||||
Transmitter_A --> D
|
||||
Transmitter_B --> D`;
|
||||
|
||||
let code2 = `gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
title Adding GANTT diagram functionality to mermaid
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d`;
|
||||
|
||||
const code3 = `flowchart TD
|
||||
A(<img scr='https://iconscout.com/ms-icon-310x310.png' width='20' height='20' />)
|
||||
B(<b>Bold text!</b>)`;
|
||||
|
||||
if (location.href.match('test-html-escaping')) {
|
||||
code = code3;
|
||||
}
|
||||
|
||||
mermaid.initialize({
|
||||
theme: 'default',
|
||||
// fontFamily: '"Lucida Console", Monaco, monospace',
|
||||
startOnLoad: false,
|
||||
securityLevel: 'loose',
|
||||
flowchart: {
|
||||
htmlLabels: true,
|
||||
},
|
||||
gantt: {
|
||||
axisFormatter: [
|
||||
[
|
||||
'%Y-%m-%d',
|
||||
(d) => {
|
||||
return d.getDay() === 1;
|
||||
},
|
||||
],
|
||||
],
|
||||
},
|
||||
});
|
||||
mermaid.render(
|
||||
'the-id-of-the-svg',
|
||||
code,
|
||||
(svg) => {
|
||||
console.log(svg);
|
||||
const elem = document.querySelector('#graph-to-be');
|
||||
elem.innerHTML = svg;
|
||||
}
|
||||
// ,document.querySelector('#tmp')
|
||||
);
|
||||
146
cypress/platform/class.html
Normal file
146
cypress/platform/class.html
Normal file
@@ -0,0 +1,146 @@
|
||||
<html>
|
||||
<head>
|
||||
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" 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>
|
||||
body {
|
||||
background: rgb(221, 208, 208);
|
||||
/*background:#333;*/
|
||||
font-family: 'Arial';
|
||||
}
|
||||
h1 {
|
||||
color: white;
|
||||
}
|
||||
.mermaid2 {
|
||||
display: none;
|
||||
}
|
||||
.customCss > rect,
|
||||
.customCss {
|
||||
fill: #ff0000 !important;
|
||||
stroke: #ffff00 !important;
|
||||
stroke-width: 4px !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>info below</h1>
|
||||
<pre class="mermaid" style="width: 100%; height: 20%">
|
||||
%%{init: {'theme': 'base', 'fontFamily': 'courier', 'themeVariables': { 'primaryColor': '#fff000'}}}%%
|
||||
classDiagram
|
||||
class BankAccount{
|
||||
+String owner
|
||||
+BigDecimal balance
|
||||
+deposit(amount) bool
|
||||
+withdrawl(amount) int
|
||||
}
|
||||
cssClass "BankAccount" customCss
|
||||
|
||||
</pre>
|
||||
<pre class="mermaid" style="width: 100%; height: 20%">
|
||||
%%{init: {'theme': 'base', 'fontFamily': 'courier', 'themeVariables': { 'primaryColor': '#fff000'}}}%%
|
||||
classDiagram-v2
|
||||
class BankAccount{
|
||||
+String owner
|
||||
+BigDecimal balance
|
||||
+deposit(amount) bool
|
||||
+withdrawl(amount) int
|
||||
}
|
||||
cssClass "BankAccount" customCss
|
||||
</pre>
|
||||
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||
%%{init: {'theme': 'base', 'fontFamily': 'courier', 'themeVariables': { 'primaryColor': '#fff000'}}}%%
|
||||
classDiagram
|
||||
class BankAccount{
|
||||
+String owner
|
||||
+BigDecimal balance
|
||||
+deposit(amount) bool
|
||||
+withdrawl(amount) int
|
||||
}
|
||||
Class01~T~ <|-- AveryLongClass : Cool
|
||||
Class03~T~ *-- Class04~T~
|
||||
Class01 : size()
|
||||
Class01 : int chimp
|
||||
Class01 : int gorilla
|
||||
Class08 <--> C2: Cool label
|
||||
class Class10~T~ {
|
||||
<<service>>
|
||||
int id
|
||||
test()
|
||||
}
|
||||
callback Class01 "callback" "A Tooltip"
|
||||
|
||||
</pre>
|
||||
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||
flowchart TB
|
||||
a_a(Aftonbladet) --> b_b[gorilla]:::apa --> c_c{chimp}:::apa -->a_a
|
||||
a_a --> c --> d_d --> c_c
|
||||
classDef apa fill:#f9f,stroke:#333,stroke-width:4px;
|
||||
class a_a apa;
|
||||
click a_a "https://www.aftonbladet.se" "apa"
|
||||
|
||||
</pre>
|
||||
|
||||
<pre class="mermaid2" style="width: 100%; height: 20%">
|
||||
classDiagram-v2
|
||||
|
||||
classA -- classB : Inheritance
|
||||
classA -- classC : link
|
||||
classC -- classD : link
|
||||
classB -- classD
|
||||
classA --|> classB : Inheritance
|
||||
classC --* classD : Composition
|
||||
classE --o classF : Aggregation
|
||||
classG --> classH : Association
|
||||
classI -- classJ : Link(Solid)
|
||||
classK ..> classL : Dependency
|
||||
classM ..|> classN : Realization
|
||||
classO .. classP : Link(Dashed)
|
||||
classA : +attr1
|
||||
classA : attr2
|
||||
classA : method1()
|
||||
<<interface>> classB
|
||||
classB : method2() int
|
||||
|
||||
Customer "1" --> "*" Ticket
|
||||
Student "1" --> "1..*" Course
|
||||
Galaxy --> "many" Star : Contains
|
||||
<<interface>> Customer
|
||||
|
||||
class Shape
|
||||
callback Shape "callbackFunction" "This is a tooltip for a callback"
|
||||
|
||||
</pre>
|
||||
<script src="./mermaid.js"></script>
|
||||
<script>
|
||||
mermaid.parseError = function (err, hash) {
|
||||
// console.error('Mermaid error: ', err);
|
||||
};
|
||||
mermaid.initialize({
|
||||
theme: 'default',
|
||||
// arrowMarkerAbsolute: true,
|
||||
// themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}',
|
||||
logLevel: 0,
|
||||
flowchart: { curve: 'linear', htmlLabels: true },
|
||||
// gantt: { axisFormat: '%m/%d/%Y' },
|
||||
sequence: { actorMargin: 50, showSequenceNumbers: true },
|
||||
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
||||
// fontFamily: '"arial", sans-serif',
|
||||
// themeVariables: {
|
||||
// fontFamily: '"arial", sans-serif',
|
||||
// },
|
||||
curve: 'linear',
|
||||
securityLevel: 'loose',
|
||||
});
|
||||
function callback() {
|
||||
alert('It worked');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
168
cypress/platform/click_security_loose.html
Normal file
168
cypress/platform/click_security_loose.html
Normal file
@@ -0,0 +1,168 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Mermaid Quick Test Page</title>
|
||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||
<style>
|
||||
.mermaid2 {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="display: flex">
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
Function-->URL
|
||||
click Function clickByFlow "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
1Function--->2URL
|
||||
click 1Function clickByFlow "Add a div"
|
||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
flowchart TB
|
||||
Function-->URL
|
||||
click Function clickByFlow "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>" _self
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
flowchart TB
|
||||
1Function--->2URL
|
||||
click 1Function clickByFlow "Add a div"
|
||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>" _self
|
||||
</pre>
|
||||
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
classDiagram
|
||||
class ShapeLink
|
||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||
class ShapeCallback
|
||||
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
classDiagram-v2
|
||||
class ShapeLink2
|
||||
link ShapeLink2 "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||
class ShapeCallback2
|
||||
callback ShapeCallback2 "clickByClass" "This is a tooltip for a callback"
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="mermaid">
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title Adding GANTT diagram to mermaid
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d
|
||||
|
||||
section Documentation
|
||||
Describe gantt syntax :active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page :after a1 , 20h
|
||||
Add another diagram to demo page :doc1, after a1 , 48h
|
||||
|
||||
section Clickable
|
||||
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 with args :cl3, after cl1, 3d
|
||||
|
||||
click cl1 href "http://localhost:9000/webpackUsage.html"
|
||||
click cl2 call clickByGantt()
|
||||
click cl3 call clickByGantt("test1", test2, test3)
|
||||
|
||||
section Last section
|
||||
Describe gantt syntax :after doc1, 3d
|
||||
Add gantt diagram to demo page : 20h
|
||||
Add another diagram to demo page : 48h
|
||||
</pre>
|
||||
<div style="display: flex">
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
FunctionArg-->URL
|
||||
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
flowchart TB
|
||||
FunctionArg-->URL
|
||||
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
classDiagram
|
||||
class ShapeLink
|
||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||
class ShapeCallback
|
||||
click ShapeCallback call clickByClass(123) "This is a tooltip for a callback"
|
||||
</pre>
|
||||
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
classDiagram-v2
|
||||
class ShapeLink2
|
||||
link ShapeLink2 "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||
class ShapeCallback2
|
||||
click ShapeCallback2 call clickByClass(123) "This is a tooltip for a callback"
|
||||
</pre>
|
||||
</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);
|
||||
}
|
||||
function clickByFlowArg(argument) {
|
||||
const div = document.createElement('div');
|
||||
div.className = 'created-by-click-2';
|
||||
div.style = 'padding: 20px; background: green; color: white;';
|
||||
div.innerText = 'Clicked By Flow: ' + argument;
|
||||
|
||||
document.getElementsByTagName('body')[0].appendChild(div);
|
||||
}
|
||||
function clickByGantt(arg1, arg2, arg3) {
|
||||
const div = document.createElement('div');
|
||||
div.className = 'created-by-gant-click';
|
||||
div.style = 'padding: 20px; background: green; color: white;';
|
||||
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);
|
||||
}
|
||||
function clickByClass(arg) {
|
||||
const div = document.createElement('div');
|
||||
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>
|
||||
83
cypress/platform/click_security_other.html
Normal file
83
cypress/platform/click_security_other.html
Normal file
@@ -0,0 +1,83 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Mermaid Quick Test Page</title>
|
||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||
</head>
|
||||
<body>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
Function-->URL
|
||||
click Function clickByFlow "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
1Function-->2URL
|
||||
click 1Function clickByFlow "Add a div"
|
||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
|
||||
<pre class="mermaid">
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title Adding GANTT diagram to mermaid
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d
|
||||
|
||||
section Documentation
|
||||
Describe gantt syntax :active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page :after a1 , 20h
|
||||
Add another diagram to demo page :doc1, after a1 , 48h
|
||||
|
||||
section Clickable
|
||||
Visit mermaidjs :active, cl1, 2014-01-07,2014-01-10
|
||||
Calling a Callback (look at the console log) :cl2, after cl1, 3d
|
||||
|
||||
click cl1 href "http://localhost:9000/webpackUsage.html"
|
||||
click cl2 call clickByGantt("test", test, test)
|
||||
|
||||
section Last section
|
||||
Describe gantt syntax :after doc1, 3d
|
||||
Add gantt diagram to demo page : 20h
|
||||
Add another diagram to demo page : 48h
|
||||
</pre>
|
||||
|
||||
<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);
|
||||
}
|
||||
function clickByGantt(elemName) {
|
||||
const div = document.createElement('div');
|
||||
div.className = 'created-by-gant-click';
|
||||
div.style = 'padding: 20px; background: green; color: white;';
|
||||
div.innerText = 'Clicked By Gant';
|
||||
|
||||
document.getElementsByTagName('body')[0].appendChild(div);
|
||||
}
|
||||
mermaid.initialize({ startOnLoad: true, securityLevel: 'strct', logLevel: 1 });
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
168
cypress/platform/click_security_sandbox.html
Normal file
168
cypress/platform/click_security_sandbox.html
Normal file
@@ -0,0 +1,168 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Mermaid Quick Test Page</title>
|
||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||
<style>
|
||||
.mermaid2 {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="display: flex">
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
Function-->URL
|
||||
click Function clickByFlow "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
1Function--->2URL
|
||||
click 1Function clickByFlow "Add a div"
|
||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
flowchart TB
|
||||
Function-->URL
|
||||
click Function clickByFlow "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>" _self
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
flowchart TB
|
||||
1Function--->2URL
|
||||
click 1Function clickByFlow "Add a div"
|
||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>" _self
|
||||
</pre>
|
||||
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
classDiagram
|
||||
class ShapeLink
|
||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||
class ShapeCallback
|
||||
callback ShapeCallback "clickByClass" "This is a tooltip for a callback"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
classDiagram-v2
|
||||
class ShapeLink2
|
||||
link ShapeLink2 "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||
class ShapeCallback2
|
||||
callback ShapeCallback2 "clickByClass" "This is a tooltip for a callback"
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="mermaid">
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title Adding GANTT diagram to mermaid
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d
|
||||
|
||||
section Documentation
|
||||
Describe gantt syntax :active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page :after a1 , 20h
|
||||
Add another diagram to demo page :doc1, after a1 , 48h
|
||||
|
||||
section Clickable
|
||||
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 with args :cl3, after cl1, 3d
|
||||
|
||||
click cl1 href "http://localhost:9000/webpackUsage.html"
|
||||
click cl2 call clickByGantt()
|
||||
click cl3 call clickByGantt("test1", test2, test3)
|
||||
|
||||
section Last section
|
||||
Describe gantt syntax :after doc1, 3d
|
||||
Add gantt diagram to demo page : 20h
|
||||
Add another diagram to demo page : 48h
|
||||
</pre>
|
||||
<div style="display: flex">
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
FunctionArg-->URL
|
||||
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
flowchart TB
|
||||
FunctionArg-->URL
|
||||
click FunctionArg call clickByFlowArg(ARGUMENT) "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
classDiagram
|
||||
class ShapeLink
|
||||
link ShapeLink "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||
class ShapeCallback
|
||||
click ShapeCallback call clickByClass(123) "This is a tooltip for a callback"
|
||||
</pre>
|
||||
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
classDiagram-v2
|
||||
class ShapeLink2
|
||||
link ShapeLink2 "http://localhost:9000/webpackUsage.html" "This is a tooltip for a link"
|
||||
class ShapeCallback2
|
||||
click ShapeCallback2 call clickByClass(123) "This is a tooltip for a callback"
|
||||
</pre>
|
||||
</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);
|
||||
}
|
||||
function clickByFlowArg(argument) {
|
||||
const div = document.createElement('div');
|
||||
div.className = 'created-by-click-2';
|
||||
div.style = 'padding: 20px; background: green; color: white;';
|
||||
div.innerText = 'Clicked By Flow: ' + argument;
|
||||
|
||||
document.getElementsByTagName('body')[0].appendChild(div);
|
||||
}
|
||||
function clickByGantt(arg1, arg2, arg3) {
|
||||
const div = document.createElement('div');
|
||||
div.className = 'created-by-gant-click';
|
||||
div.style = 'padding: 20px; background: green; color: white;';
|
||||
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);
|
||||
}
|
||||
function clickByClass(arg) {
|
||||
const div = document.createElement('div');
|
||||
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: 'sandbox', logLevel: 1 });
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
88
cypress/platform/click_security_strict.html
Normal file
88
cypress/platform/click_security_strict.html
Normal file
@@ -0,0 +1,88 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Mermaid Quick Test Page</title>
|
||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||
</head>
|
||||
<body>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
Function-->URL
|
||||
click Function clickByFlow "Add a div"
|
||||
click URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
<pre id="FirstLine" class="mermaid">
|
||||
graph TB
|
||||
1Function-->2URL
|
||||
click 1Function clickByFlow "Add a div"
|
||||
click 2URL "http://localhost:9000/webpackUsage.html" "Visit <strong>mermaid docs</strong>"
|
||||
</pre>
|
||||
|
||||
<pre class="mermaid">
|
||||
gantt
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %d/%m
|
||||
title Adding GANTT diagram to mermaid
|
||||
excludes weekdays 2014-01-10
|
||||
|
||||
section A section
|
||||
Completed task :done, des1, 2014-01-06,2014-01-08
|
||||
Active task :active, des2, 2014-01-09, 3d
|
||||
Future task : des3, after des2, 5d
|
||||
Future task2 : des4, after des3, 5d
|
||||
|
||||
section Critical tasks
|
||||
Completed task in the critical line :crit, done, 2014-01-06,24h
|
||||
Implement parser and jison :crit, done, after des1, 2d
|
||||
Create tests for parser :crit, active, 3d
|
||||
Future task in critical line :crit, 5d
|
||||
Create tests for renderer :2d
|
||||
Add to mermaid :1d
|
||||
|
||||
section Documentation
|
||||
Describe gantt syntax :active, a1, after des1, 3d
|
||||
Add gantt diagram to demo page :after a1 , 20h
|
||||
Add another diagram to demo page :doc1, after a1 , 48h
|
||||
|
||||
section Clickable
|
||||
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 with args :cl3, after cl1, 3d
|
||||
|
||||
click cl1 href "http://localhost:9000/webpackUsage.html"
|
||||
click cl2 call clickByGantt()
|
||||
click cl3 call clickByGantt("test1", test2, test3)
|
||||
|
||||
section Last section
|
||||
Describe gantt syntax :after doc1, 3d
|
||||
Add gantt diagram to demo page : 20h
|
||||
Add another diagram to demo page : 48h
|
||||
</pre>
|
||||
|
||||
<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);
|
||||
}
|
||||
function clickByGantt(arg1, arg2, arg3) {
|
||||
const div = document.createElement('div');
|
||||
div.className = 'created-by-gant-click';
|
||||
div.style = 'padding: 20px; background: green; color: white;';
|
||||
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);
|
||||
}
|
||||
mermaid.initialize({ startOnLoad: true, securityLevel: 'strict', logLevel: 1 });
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
39
cypress/platform/css1.html
Normal file
39
cypress/platform/css1.html
Normal file
@@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Mermaid Quick Test Page</title>
|
||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||
<style>
|
||||
body {
|
||||
font-family: 'trebuchet ms', verdana, arial;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre class="mermaid2">
|
||||
%%{init: { 'themeCSS': '} * { background: lightblue }' } }%%
|
||||
flowchart TD
|
||||
a --> b
|
||||
</pre>
|
||||
<pre class="mermaid">
|
||||
%%{init:{"theme":"base", "themeVariables": {"primaryColor":"#411d4e", "titleColor":"white", "darkMode":true}}}%%
|
||||
flowchart LR
|
||||
subgraph A
|
||||
a --> b
|
||||
end
|
||||
subgraph B
|
||||
i -->f
|
||||
end
|
||||
A --> B
|
||||
</pre>
|
||||
<script src="./mermaid.js"></script>
|
||||
<script>
|
||||
function showFullFirstSquad(elemName) {
|
||||
console.log('show ' + elemName);
|
||||
}
|
||||
mermaid.initialize({ startOnLoad: true, securityLevel: 'loose', logLevel: 0 });
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
102
cypress/platform/current.html
Normal file
102
cypress/platform/current.html
Normal file
@@ -0,0 +1,102 @@
|
||||
<html>
|
||||
<head>
|
||||
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
||||
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||
/>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<style>
|
||||
body {
|
||||
/* background: rgb(221, 208, 208); */
|
||||
/* background:#333; */
|
||||
font-family: 'Arial';
|
||||
}
|
||||
h1 {
|
||||
color: grey;
|
||||
}
|
||||
.mermaid2 {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>info below</h1>
|
||||
<div class="flex">
|
||||
<div class="mermaid" style="width: 50%; height: 20%">
|
||||
flowchart BT subgraph S1 sub1 -->sub2 end subgraph S2 sub4 end S1 --> S2 sub1 --> sub4
|
||||
</div>
|
||||
<div class="mermaid2" style="width: 50%; height: 200px">
|
||||
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 Bob->>Alice: I'm short
|
||||
though
|
||||
</div>
|
||||
<div class="mermaid2" style="width: 50%; height: 200px">
|
||||
%%{init: {'securityLevel': 'loose'}}%% graph TD A[Christmas] -->|Get money| B(Go shopping) 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?}} C -->|One| D[Laptop] 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 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>
|
||||
|
||||
<script src="./mermaid.js"></script>
|
||||
<script>
|
||||
mermaid.parseError = function (err, hash) {
|
||||
// console.error('Mermaid error: ', err);
|
||||
};
|
||||
mermaid.initialize({
|
||||
// theme: 'forest',
|
||||
// themeVariables:{primaryColor: '#ff0000'},
|
||||
// arrowMarkerAbsolute: true,
|
||||
// themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}',
|
||||
logLevel: 0,
|
||||
flowchart: { curve: 'cardinal', htmlLabels: false },
|
||||
// gantt: { axisFormat: '%m/%d/%Y' },
|
||||
sequence: { actorMargin: 50, showSequenceNumbers: true },
|
||||
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
||||
fontFamily: '"arial", sans-serif',
|
||||
curve: 'cardinal',
|
||||
securityLevel: 'strict',
|
||||
});
|
||||
function callback() {
|
||||
alert('It worked');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
134
cypress/platform/current2.html
Normal file
134
cypress/platform/current2.html
Normal file
@@ -0,0 +1,134 @@
|
||||
<html>
|
||||
<head>
|
||||
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
||||
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||
/>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<style>
|
||||
body {
|
||||
/* background: rgb(221, 208, 208); */
|
||||
/* background:#333; */
|
||||
font-family: 'Arial';
|
||||
}
|
||||
h1 {
|
||||
color: grey;
|
||||
}
|
||||
.mermaid2 {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>info below</h1>
|
||||
<div class="flex">
|
||||
<pre class="mermaid2" style="width: 50%; height: 20%">
|
||||
flowchart BT
|
||||
subgraph two
|
||||
b1
|
||||
end
|
||||
subgraph three
|
||||
c1-->c2
|
||||
end
|
||||
c1 --apa apa apa--> b1
|
||||
two --> c2
|
||||
</pre>
|
||||
<pre class="mermaid2" style="width: 50%; height: 200px">
|
||||
sequenceDiagram
|
||||
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
|
||||
</pre>
|
||||
<pre class="mermaid2" style="width: 50%; height: 200px">
|
||||
%%{init: {'securityLevel': 'loose'}}%%
|
||||
graph TD
|
||||
A[Christmas] -->|Get money| B(Go shopping)
|
||||
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?}}
|
||||
C -->|One| D[Laptop]
|
||||
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;
|
||||
</pre>
|
||||
<pre 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
|
||||
</pre>
|
||||
<pre class="mermaid2" style="width: 50%; height: 20%">
|
||||
stateDiagram-v2
|
||||
state A {
|
||||
B1 --> B2: ok
|
||||
}
|
||||
A --> C: sert
|
||||
C --> D
|
||||
B1 --> D
|
||||
A --> D: asd123
|
||||
</pre>
|
||||
</div>
|
||||
<pre class="mermaid2" style="width: 50%; height: 20%">
|
||||
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%%
|
||||
flowchart LR
|
||||
a -->b
|
||||
subgraph A
|
||||
B
|
||||
end
|
||||
subgraph B
|
||||
b
|
||||
end
|
||||
</pre>
|
||||
<pre class="mermaid" style="width: 50%; height: 20%">
|
||||
flowchart TB
|
||||
subgraph A
|
||||
b-->B
|
||||
a-->c
|
||||
end
|
||||
subgraph B
|
||||
c
|
||||
end
|
||||
</pre>
|
||||
<pre class="mermaid2" style="width: 50%; height: 20%">
|
||||
sequenceDiagram
|
||||
Alice->Bob: Hello Bob, how are you?
|
||||
Note over Alice,Bob: Looks
|
||||
Note over Bob,Alice: Looks back
|
||||
</pre>
|
||||
|
||||
<script src="./mermaid.js"></script>
|
||||
<script>
|
||||
mermaid.parseError = function (err, hash) {
|
||||
// console.error('Mermaid error: ', err);
|
||||
};
|
||||
mermaid.initialize({
|
||||
// theme: 'forest',
|
||||
// themeVariables:{primaryColor: '#ff0000'},
|
||||
// arrowMarkerAbsolute: true,
|
||||
// themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}',
|
||||
logLevel: 0,
|
||||
flowchart: { curve: 'cardinal', htmlLabels: false },
|
||||
// gantt: { axisFormat: '%m/%d/%Y' },
|
||||
sequence: { actorMargin: 50, showSequenceNumbers: true },
|
||||
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
||||
fontFamily: '"arial", sans-serif',
|
||||
curve: 'cardinal',
|
||||
securityLevel: 'strict',
|
||||
});
|
||||
function callback() {
|
||||
alert('It worked');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
56
cypress/platform/e2e.html
Normal file
56
cypress/platform/e2e.html
Normal file
@@ -0,0 +1,56 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<!-- <meta charset="iso-8859-15"/> -->
|
||||
<script src="/e2e.js"></script>
|
||||
<!-- <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"
|
||||
/>
|
||||
<style>
|
||||
body {
|
||||
/* font-family: 'Mansalva', cursive;*/
|
||||
/* font-family: 'Mansalva', cursive; */
|
||||
/* font-family: 'arial'; */
|
||||
/* font-family: "trebuchet ms", verdana, arial; */
|
||||
}
|
||||
/* div {
|
||||
font-family: 'arial';
|
||||
} */
|
||||
/* .mermaid-main-font {
|
||||
font-family: "trebuchet ms", verdana, arial;
|
||||
font-family: var(--mermaid-font-family);
|
||||
} */
|
||||
/* :root {
|
||||
--mermaid-font-family: '"trebuchet ms", verdana, arial';
|
||||
--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive;
|
||||
--mermaid-font-family: '"Lucida Console", Monaco, monospace';
|
||||
} */
|
||||
svg {
|
||||
border: 2px solid darkred;
|
||||
}
|
||||
.exClass2 > rect,
|
||||
.exClass {
|
||||
fill: greenyellow !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<script src="./mermaid.js"></script>
|
||||
<script>
|
||||
// Notice startOnLoad=false
|
||||
// This prevents default handling in mermaid from render before the e2e logic is applied
|
||||
// mermaid.initialize({
|
||||
// startOnLoad: false,
|
||||
// useMaxWidth: true,
|
||||
// // "themeCSS": ":root { --mermaid-font-family: \"trebuchet ms\", verdana, arial;}",
|
||||
// // fontFamily: '\"trebuchet ms\", verdana, arial;'
|
||||
// // fontFamily: '"Comic Sans MS", "Comic Sans", cursive'
|
||||
// // fontFamily: '"Mansalva", cursive',
|
||||
// // fontFamily: '"Noto Sans SC", sans-serif'
|
||||
// fontFamily: '"Noto Sans SC", sans-serif'
|
||||
// });
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
6
cypress/platform/exploit.js
Normal file
6
cypress/platform/exploit.js
Normal file
@@ -0,0 +1,6 @@
|
||||
const div = parent.document.createElement('div');
|
||||
div.id = 'the-malware';
|
||||
div.className = 'malware';
|
||||
div.innerHTML = 'XSS Succeeded';
|
||||
parent.document.getElementsByTagName('body')[0].appendChild(div);
|
||||
throw new Error('XSS Succeeded');
|
||||
45
cypress/platform/flow.html
Normal file
45
cypress/platform/flow.html
Normal file
@@ -0,0 +1,45 @@
|
||||
<html>
|
||||
<head>
|
||||
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
body {
|
||||
font-family: 'trebuchet ms', verdana, arial;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre class="mermaid">
|
||||
graph TB
|
||||
subgraph One
|
||||
a1-->a2-->a3
|
||||
end
|
||||
</pre>
|
||||
<pre class="mermaid">
|
||||
graph TB
|
||||
a_a --> b_b:::apa --> c_c:::apa
|
||||
classDef apa fill:#f9f,stroke:#333,stroke-width:4px;
|
||||
class a_a apa;
|
||||
</pre>
|
||||
<pre class="mermaid">
|
||||
graph TB
|
||||
a_a(Aftonbladet) --> b_b[gorilla]:::apa --> c_c{chimp}:::apa -->a_a
|
||||
a_a --> c --> d_d --> c_c
|
||||
classDef apa fill:#f9f,stroke:#333,stroke-width:4px;
|
||||
class a_a apa;
|
||||
click a_a "http://www.aftonbladet.se" "apa"
|
||||
</pre>
|
||||
|
||||
<script src="./mermaid.js"></script>
|
||||
<script>
|
||||
mermaid.initialize({
|
||||
theme: 'forest',
|
||||
// themeCSS: '.node rect { fill: red; }',
|
||||
logLevel: 3,
|
||||
flowchart: { curve: 'linear' },
|
||||
gantt: { axisFormat: '%m/%d/%Y' },
|
||||
sequence: { actorMargin: 50 },
|
||||
// sequenceDiagram: { actorMargin: 300 } // deprecated
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user