mirror of
				https://github.com/mermaid-js/mermaid.git
				synced 2025-11-04 04:44:08 +01:00 
			
		
		
		
	Compare commits
	
		
			696 Commits
		
	
	
		
			sidv/runTi
			...
			5237-unifi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					771d3fcbbe | ||
| 
						 | 
					06377b8231 | ||
| 
						 | 
					4e55f4cf3d | ||
| 
						 | 
					d5a03a9054 | ||
| 
						 | 
					f3a65f3178 | ||
| 
						 | 
					b27d83e0e7 | ||
| 
						 | 
					55bd9e6efa | ||
| 
						 | 
					8b8c0dd57c | ||
| 
						 | 
					d8d608fd99 | ||
| 
						 | 
					2efb2565ad | ||
| 
						 | 
					c8a3290163 | ||
| 
						 | 
					14a231767a | ||
| 
						 | 
					803e9eb2bd | ||
| 
						 | 
					29a3967c0e | ||
| 
						 | 
					cf72d33335 | ||
| 
						 | 
					7534462966 | ||
| 
						 | 
					d4525331cb | ||
| 
						 | 
					501cdbfcf7 | ||
| 
						 | 
					13bba48e92 | ||
| 
						 | 
					f1bd8fa91b | ||
| 
						 | 
					d9a12997ce | ||
| 
						 | 
					1fad9e6eef | ||
| 
						 | 
					d9b2934a50 | ||
| 
						 | 
					6b87fb3418 | ||
| 
						 | 
					444de0f133 | ||
| 
						 | 
					51fc56b95d | ||
| 
						 | 
					195e314c42 | ||
| 
						 | 
					4c6e2783b0 | ||
| 
						 | 
					4a50feb5d9 | ||
| 
						 | 
					3f2e823330 | ||
| 
						 | 
					0ba712f53c | ||
| 
						 | 
					14622b0386 | ||
| 
						 | 
					35797f867f | ||
| 
						 | 
					3f0ababca6 | ||
| 
						 | 
					6231682867 | ||
| 
						 | 
					9400e46827 | ||
| 
						 | 
					b92eae5b34 | ||
| 
						 | 
					5e6215d4f2 | ||
| 
						 | 
					871a13aff8 | ||
| 
						 | 
					7f2902594c | ||
| 
						 | 
					ceb487f2d4 | ||
| 
						 | 
					6095aaae61 | ||
| 
						 | 
					c1052bd3c5 | ||
| 
						 | 
					a2cc86a414 | ||
| 
						 | 
					2057649581 | ||
| 
						 | 
					ba0d91da32 | ||
| 
						 | 
					63f81f36a9 | ||
| 
						 | 
					8e46e10429 | ||
| 
						 | 
					3411a6e46d | ||
| 
						 | 
					115a4976ff | ||
| 
						 | 
					a796940de3 | ||
| 
						 | 
					4b5e73102c | ||
| 
						 | 
					c5805383c7 | ||
| 
						 | 
					eb7d18dfca | ||
| 
						 | 
					eb0cb42f36 | ||
| 
						 | 
					18e2879867 | ||
| 
						 | 
					a46f993e3e | ||
| 
						 | 
					fc78ee0fc5 | ||
| 
						 | 
					ee6ae6a47a | ||
| 
						 | 
					6d7b2b1e14 | ||
| 
						 | 
					2117e71b51 | ||
| 
						 | 
					c3423beeda | ||
| 
						 | 
					de51bc40c7 | ||
| 
						 | 
					aa9f4a7760 | ||
| 
						 | 
					9979ea1d74 | ||
| 
						 | 
					fc31b22eb0 | ||
| 
						 | 
					c221350d59 | ||
| 
						 | 
					881a68241c | ||
| 
						 | 
					469acbe810 | ||
| 
						 | 
					ab726f008c | ||
| 
						 | 
					9b56cb3feb | ||
| 
						 | 
					cfacd3b2e1 | ||
| 
						 | 
					f45ae227a0 | ||
| 
						 | 
					97be6cbd73 | ||
| 
						 | 
					ce3b0af03a | ||
| 
						 | 
					c7c1218e02 | ||
| 
						 | 
					f5bdbf22e7 | ||
| 
						 | 
					1ab23d137f | ||
| 
						 | 
					cba968ccc0 | ||
| 
						 | 
					0f3778aea8 | ||
| 
						 | 
					ac5c61dbd4 | ||
| 
						 | 
					6c785c9316 | ||
| 
						 | 
					58483fb231 | ||
| 
						 | 
					0d8c3fcf8c | ||
| 
						 | 
					9f375139d5 | ||
| 
						 | 
					5ba3696f95 | ||
| 
						 | 
					0c49d2b84e | ||
| 
						 | 
					42414e85d1 | ||
| 
						 | 
					77a02fefe4 | ||
| 
						 | 
					1e43ad1ee3 | ||
| 
						 | 
					cda41a1cdf | ||
| 
						 | 
					1a199d630f | ||
| 
						 | 
					51c07163aa | ||
| 
						 | 
					9bbd3cab3c | ||
| 
						 | 
					6f61a71dda | ||
| 
						 | 
					3af4020cdc | ||
| 
						 | 
					d65e78f9e2 | ||
| 
						 | 
					82b120e567 | ||
| 
						 | 
					d95c159b1f | ||
| 
						 | 
					c468319869 | ||
| 
						 | 
					4de0182978 | ||
| 
						 | 
					4b21e1e745 | ||
| 
						 | 
					1601140511 | ||
| 
						 | 
					fb1942c2cf | ||
| 
						 | 
					81d8b9d02e | ||
| 
						 | 
					6db070197a | ||
| 
						 | 
					a331125187 | ||
| 
						 | 
					66bc461fa1 | ||
| 
						 | 
					b69c9821bc | ||
| 
						 | 
					df72febc00 | ||
| 
						 | 
					6d91ae4a09 | ||
| 
						 | 
					5aced51f9e | ||
| 
						 | 
					f791ea00ef | ||
| 
						 | 
					e07fdfedb6 | ||
| 
						 | 
					1096b185ee | ||
| 
						 | 
					fef433e844 | ||
| 
						 | 
					fe9fbd8618 | ||
| 
						 | 
					b031c6f182 | ||
| 
						 | 
					5a93afa7ca | ||
| 
						 | 
					2f792e33d6 | ||
| 
						 | 
					d408efdd1d | ||
| 
						 | 
					dc51a8f182 | ||
| 
						 | 
					e8d18189ac | ||
| 
						 | 
					a6276a94c3 | ||
| 
						 | 
					85628f2148 | ||
| 
						 | 
					1f70717a53 | ||
| 
						 | 
					493bb8a80e | ||
| 
						 | 
					788e7c96ff | ||
| 
						 | 
					caa0ff340d | ||
| 
						 | 
					44688a20b6 | ||
| 
						 | 
					3f1bba407e | ||
| 
						 | 
					91e8bcaba9 | ||
| 
						 | 
					a35e62db14 | ||
| 
						 | 
					66cd0b9621 | ||
| 
						 | 
					6382dcf7c8 | ||
| 
						 | 
					5587011f75 | ||
| 
						 | 
					0044aa3029 | ||
| 
						 | 
					9c3bcec7f0 | ||
| 
						 | 
					63f9e95795 | ||
| 
						 | 
					8f00555bf5 | ||
| 
						 | 
					029b3c1101 | ||
| 
						 | 
					2340a3b836 | ||
| 
						 | 
					d84b4403ab | ||
| 
						 | 
					323f72ce33 | ||
| 
						 | 
					6ae5fe7f17 | ||
| 
						 | 
					460e027b6e | ||
| 
						 | 
					406c0d869b | ||
| 
						 | 
					b6b2b3697d | ||
| 
						 | 
					83f2663f68 | ||
| 
						 | 
					a6f3316ddb | ||
| 
						 | 
					4a8c24a633 | ||
| 
						 | 
					6ca6403878 | ||
| 
						 | 
					5bd3a28667 | ||
| 
						 | 
					d52f4724fe | ||
| 
						 | 
					618f7977ef | ||
| 
						 | 
					ecee23d8ba | ||
| 
						 | 
					7ee22de5e2 | ||
| 
						 | 
					c904c7d21a | ||
| 
						 | 
					0d1ef9de07 | ||
| 
						 | 
					481f8186e4 | ||
| 
						 | 
					5731b72795 | ||
| 
						 | 
					92c05b9138 | ||
| 
						 | 
					dd7f8ac81b | ||
| 
						 | 
					1afd0a199e | ||
| 
						 | 
					e2e652ae0f | ||
| 
						 | 
					a5d24e5da5 | ||
| 
						 | 
					94512c0780 | ||
| 
						 | 
					ef83adb36e | ||
| 
						 | 
					926762a800 | ||
| 
						 | 
					ec0e9b8680 | ||
| 
						 | 
					fc17733770 | ||
| 
						 | 
					a5281e0464 | ||
| 
						 | 
					a6dc1eaa40 | ||
| 
						 | 
					9643e8f19c | ||
| 
						 | 
					bdca0a583e | ||
| 
						 | 
					a35152843f | ||
| 
						 | 
					f19a9d021f | ||
| 
						 | 
					1b5bd999e2 | ||
| 
						 | 
					36e4fcfdfe | ||
| 
						 | 
					913dbee2e7 | ||
| 
						 | 
					d895a62565 | ||
| 
						 | 
					50394e7af1 | ||
| 
						 | 
					9981d3fc8b | ||
| 
						 | 
					7763d9ceb8 | ||
| 
						 | 
					8cbceb611a | ||
| 
						 | 
					5f110e4cde | ||
| 
						 | 
					aaa4e8a794 | ||
| 
						 | 
					ea69d26a60 | ||
| 
						 | 
					ce3d0a23de | ||
| 
						 | 
					7fbe1661ec | ||
| 
						 | 
					1c4dd9b923 | ||
| 
						 | 
					1b29135cc1 | ||
| 
						 | 
					b285466130 | ||
| 
						 | 
					3754ac0872 | ||
| 
						 | 
					83ca6897bd | ||
| 
						 | 
					d2d7f2bcb0 | ||
| 
						 | 
					20f9abcc38 | ||
| 
						 | 
					0417a8ddff | ||
| 
						 | 
					a85f36c3be | ||
| 
						 | 
					d9d4a677ab | ||
| 
						 | 
					01297fa042 | ||
| 
						 | 
					46fe731379 | ||
| 
						 | 
					cca1c41749 | ||
| 
						 | 
					2c9c3b4571 | ||
| 
						 | 
					4266b2e4ca | ||
| 
						 | 
					0e63233845 | ||
| 
						 | 
					9855bdbaaa | ||
| 
						 | 
					51bdda0c34 | ||
| 
						 | 
					8fb9b21f59 | ||
| 
						 | 
					b8dd4b9048 | ||
| 
						 | 
					4f6586873f | ||
| 
						 | 
					37d799dd8e | ||
| 
						 | 
					c32116a21a | ||
| 
						 | 
					a56aa56cbc | ||
| 
						 | 
					48e313bf18 | ||
| 
						 | 
					fa6bcd8b30 | ||
| 
						 | 
					eed5ba6c1e | ||
| 
						 | 
					8e40f31ed3 | ||
| 
						 | 
					af05df937e | ||
| 
						 | 
					f01a9d50fb | ||
| 
						 | 
					f14b65cf43 | ||
| 
						 | 
					e5069083c9 | ||
| 
						 | 
					8a079299a6 | ||
| 
						 | 
					dfe223c3b8 | ||
| 
						 | 
					e09410448c | ||
| 
						 | 
					269ddf4a34 | ||
| 
						 | 
					e41bccad64 | ||
| 
						 | 
					d6ccd93cf2 | ||
| 
						 | 
					7da85b9005 | ||
| 
						 | 
					8d23b684f5 | ||
| 
						 | 
					47776e3ca1 | ||
| 
						 | 
					52e0dc6464 | ||
| 
						 | 
					5413668c1a | ||
| 
						 | 
					3e60270193 | ||
| 
						 | 
					ddaa7afbb5 | ||
| 
						 | 
					2377a0d753 | ||
| 
						 | 
					a4de1b4944 | ||
| 
						 | 
					5b66810646 | ||
| 
						 | 
					aa63f320f8 | ||
| 
						 | 
					cf20ccb126 | ||
| 
						 | 
					ca2c112c9a | ||
| 
						 | 
					75b0ee3daf | ||
| 
						 | 
					60c79dfb2f | ||
| 
						 | 
					c10ab23387 | ||
| 
						 | 
					ec7adb7e00 | ||
| 
						 | 
					0d2c7c3b2c | ||
| 
						 | 
					c8f2abad18 | ||
| 
						 | 
					b6ef7367c2 | ||
| 
						 | 
					4463e9d7a3 | ||
| 
						 | 
					44f42b2a63 | ||
| 
						 | 
					991721e955 | ||
| 
						 | 
					47d4929bc6 | ||
| 
						 | 
					ff36301cc5 | ||
| 
						 | 
					7fb079ef3c | ||
| 
						 | 
					7bcba29493 | ||
| 
						 | 
					8744008630 | ||
| 
						 | 
					418d34cbee | ||
| 
						 | 
					fcd5c2c21d | ||
| 
						 | 
					e3c6281b26 | ||
| 
						 | 
					ae5b886148 | ||
| 
						 | 
					c5badf8341 | ||
| 
						 | 
					da882de0d4 | ||
| 
						 | 
					633febaeab | ||
| 
						 | 
					bf9485c231 | ||
| 
						 | 
					a722bdcd37 | ||
| 
						 | 
					8a5fe53706 | ||
| 
						 | 
					362e49aa2c | ||
| 
						 | 
					6d2939c9b9 | ||
| 
						 | 
					9a11cb7bb3 | ||
| 
						 | 
					45cd2c005b | ||
| 
						 | 
					2d241808e9 | ||
| 
						 | 
					9fc17f67c6 | ||
| 
						 | 
					287e903385 | ||
| 
						 | 
					b1b27f7a2b | ||
| 
						 | 
					745ec0daae | ||
| 
						 | 
					64f1d2f005 | ||
| 
						 | 
					55afd8cdb8 | ||
| 
						 | 
					42a12a62ac | ||
| 
						 | 
					e8018ed779 | ||
| 
						 | 
					00eaebeac8 | ||
| 
						 | 
					dd92aecdca | ||
| 
						 | 
					20f9e503cb | ||
| 
						 | 
					e26dea6416 | ||
| 
						 | 
					3b2b8dacd8 | ||
| 
						 | 
					df94d3994d | ||
| 
						 | 
					6f56d94c64 | ||
| 
						 | 
					56c4f10607 | ||
| 
						 | 
					dfa71317ad | ||
| 
						 | 
					2df26ca323 | ||
| 
						 | 
					b7cb9673b0 | ||
| 
						 | 
					8d815f878c | ||
| 
						 | 
					dab26df9c4 | ||
| 
						 | 
					c7fe9a6465 | ||
| 
						 | 
					4f26f3ae2e | ||
| 
						 | 
					730fa89e4c | ||
| 
						 | 
					0326d899c4 | ||
| 
						 | 
					c993adfcdb | ||
| 
						 | 
					4885b311f8 | ||
| 
						 | 
					3274f673ab | ||
| 
						 | 
					f5fefc0499 | ||
| 
						 | 
					ab077992f5 | ||
| 
						 | 
					2f80c3a2c4 | ||
| 
						 | 
					4c0b8f6f40 | ||
| 
						 | 
					ce6f2739b5 | ||
| 
						 | 
					7ecb772c6c | ||
| 
						 | 
					f480fb7c85 | ||
| 
						 | 
					94bb43907d | ||
| 
						 | 
					32a62bede8 | ||
| 
						 | 
					7372d9055a | ||
| 
						 | 
					3ff4a6910d | ||
| 
						 | 
					683695bec2 | ||
| 
						 | 
					fbe13f4e9e | ||
| 
						 | 
					4f642428de | ||
| 
						 | 
					954f5d7d42 | ||
| 
						 | 
					4a12c46350 | ||
| 
						 | 
					9eb64cd6db | ||
| 
						 | 
					7b8e76c26f | ||
| 
						 | 
					665be1ecfe | ||
| 
						 | 
					edda73c7fc | ||
| 
						 | 
					6413529a6e | ||
| 
						 | 
					f5e1df08a0 | ||
| 
						 | 
					bb2bbfdf92 | ||
| 
						 | 
					7529db8254 | ||
| 
						 | 
					b9a73c88b5 | ||
| 
						 | 
					22bd26272d | ||
| 
						 | 
					d497a5c4ac | ||
| 
						 | 
					323737f3a6 | ||
| 
						 | 
					39bffcb3a0 | ||
| 
						 | 
					16cd7bf649 | ||
| 
						 | 
					da150e8767 | ||
| 
						 | 
					1f64452716 | ||
| 
						 | 
					10871af93b | ||
| 
						 | 
					50c9ede69d | ||
| 
						 | 
					ca4fa11859 | ||
| 
						 | 
					853948a93d | ||
| 
						 | 
					9986b023d7 | ||
| 
						 | 
					58af76384a | ||
| 
						 | 
					e2ca8e820e | ||
| 
						 | 
					1cbd730b8d | ||
| 
						 | 
					6f1a553234 | ||
| 
						 | 
					b2c286ff1d | ||
| 
						 | 
					024bffd683 | ||
| 
						 | 
					5e53d6cfee | ||
| 
						 | 
					913b29dbcb | ||
| 
						 | 
					e68ba3f1df | ||
| 
						 | 
					92f1941fb0 | ||
| 
						 | 
					e68125eb6a | ||
| 
						 | 
					4f1c3547bf | ||
| 
						 | 
					e102ac2b58 | ||
| 
						 | 
					a536484408 | ||
| 
						 | 
					63dca5bb86 | ||
| 
						 | 
					bc7ecf330b | ||
| 
						 | 
					703c25a6e2 | ||
| 
						 | 
					d4e00de1fd | ||
| 
						 | 
					0c36248073 | ||
| 
						 | 
					08e4489ede | ||
| 
						 | 
					76801ff564 | ||
| 
						 | 
					c4ccfec316 | ||
| 
						 | 
					1ac9244e68 | ||
| 
						 | 
					7e837dfee2 | ||
| 
						 | 
					21185227ad | ||
| 
						 | 
					b3e29dc11b | ||
| 
						 | 
					9f6fc5a074 | ||
| 
						 | 
					f2d3ac1e7b | ||
| 
						 | 
					edad740e15 | ||
| 
						 | 
					8265e53128 | ||
| 
						 | 
					d316b05fa1 | ||
| 
						 | 
					3000f0208f | ||
| 
						 | 
					e49c95c220 | ||
| 
						 | 
					47c5abb8a5 | ||
| 
						 | 
					be9b349e51 | ||
| 
						 | 
					b22ae106b2 | ||
| 
						 | 
					7fe4a2ce6c | ||
| 
						 | 
					8102ba4d52 | ||
| 
						 | 
					dd5bfb3b24 | ||
| 
						 | 
					18defaae6d | ||
| 
						 | 
					a2702e4058 | ||
| 
						 | 
					e6e463092c | ||
| 
						 | 
					128c69aa76 | ||
| 
						 | 
					17fd681bdb | ||
| 
						 | 
					3e4193e3d5 | ||
| 
						 | 
					da40dbf1dd | ||
| 
						 | 
					01350467bd | ||
| 
						 | 
					6b1d568172 | ||
| 
						 | 
					d220720dde | ||
| 
						 | 
					e852156b9f | ||
| 
						 | 
					b7f864cdb0 | ||
| 
						 | 
					1f8accd6e0 | ||
| 
						 | 
					8205e3619a | ||
| 
						 | 
					7f33ae0f40 | ||
| 
						 | 
					13aa3265e3 | ||
| 
						 | 
					3b0687e557 | ||
| 
						 | 
					273941a9fe | ||
| 
						 | 
					718811be9c | ||
| 
						 | 
					8d9cb09261 | ||
| 
						 | 
					196d88559c | ||
| 
						 | 
					357da0ca28 | ||
| 
						 | 
					9b411fa8d4 | ||
| 
						 | 
					087a5748c8 | ||
| 
						 | 
					6105185d05 | ||
| 
						 | 
					c993a817d1 | ||
| 
						 | 
					002aa29f19 | ||
| 
						 | 
					07de090723 | ||
| 
						 | 
					3809732e48 | ||
| 
						 | 
					eb4a6fd2ed | ||
| 
						 | 
					3357844a1f | ||
| 
						 | 
					0d8fe3b626 | ||
| 
						 | 
					5df988d2ac | ||
| 
						 | 
					e9ef277929 | ||
| 
						 | 
					2dcdcba227 | ||
| 
						 | 
					5b6c5dff0a | ||
| 
						 | 
					7fa887b644 | ||
| 
						 | 
					5c6b2cf490 | ||
| 
						 | 
					e0930b5cbb | ||
| 
						 | 
					2a3d03254d | ||
| 
						 | 
					e570863801 | ||
| 
						 | 
					866d9416b4 | ||
| 
						 | 
					e048085b5a | ||
| 
						 | 
					9ed2f4b2d3 | ||
| 
						 | 
					c2eb2184fc | ||
| 
						 | 
					a2e3b4ca06 | ||
| 
						 | 
					909ad02a18 | ||
| 
						 | 
					4a930d2b5b | ||
| 
						 | 
					4a19103891 | ||
| 
						 | 
					bb0c45b090 | ||
| 
						 | 
					d0583f9947 | ||
| 
						 | 
					12bd301401 | ||
| 
						 | 
					a14637b416 | ||
| 
						 | 
					5d1ac22fd1 | ||
| 
						 | 
					3ccfea84b8 | ||
| 
						 | 
					38beca11fd | ||
| 
						 | 
					3555577581 | ||
| 
						 | 
					e852596862 | ||
| 
						 | 
					f15fde26f9 | ||
| 
						 | 
					73c426f8be | ||
| 
						 | 
					8f40c1a77f | ||
| 
						 | 
					0d00e88580 | ||
| 
						 | 
					8792e0a978 | ||
| 
						 | 
					e27e56f7bf | ||
| 
						 | 
					6b7e1225dd | ||
| 
						 | 
					0051620840 | ||
| 
						 | 
					63f9d3e0b4 | ||
| 
						 | 
					90b1111382 | ||
| 
						 | 
					0aa526d707 | ||
| 
						 | 
					4daef2591d | ||
| 
						 | 
					2d91aa0b06 | ||
| 
						 | 
					2fd6de0af5 | ||
| 
						 | 
					799af4e550 | ||
| 
						 | 
					b8e0bcee5b | ||
| 
						 | 
					3567308a22 | ||
| 
						 | 
					aca0bebaf4 | ||
| 
						 | 
					4ee4555cbd | ||
| 
						 | 
					253adcb0eb | ||
| 
						 | 
					585609b907 | ||
| 
						 | 
					1d8332d61e | ||
| 
						 | 
					3f95c78428 | ||
| 
						 | 
					8e95c4db55 | ||
| 
						 | 
					f476a7566c | ||
| 
						 | 
					4304fba0f5 | ||
| 
						 | 
					07bd9825a1 | ||
| 
						 | 
					69c7cb9f6f | ||
| 
						 | 
					fd473af5b0 | ||
| 
						 | 
					d1f02f6bed | ||
| 
						 | 
					c5cc9dbffa | ||
| 
						 | 
					43e183b658 | ||
| 
						 | 
					153f319666 | ||
| 
						 | 
					3b8e6ecc42 | ||
| 
						 | 
					29ec8cbd0a | ||
| 
						 | 
					3072604070 | ||
| 
						 | 
					562d10809c | ||
| 
						 | 
					c7d41cd963 | ||
| 
						 | 
					c00bf26c77 | ||
| 
						 | 
					a2f54f7da4 | ||
| 
						 | 
					12bf139708 | ||
| 
						 | 
					dbb69ad7cd | ||
| 
						 | 
					b78f16ef19 | ||
| 
						 | 
					223f339682 | ||
| 
						 | 
					3f556fa3fc | ||
| 
						 | 
					16db0c039f | ||
| 
						 | 
					94874ddbbe | ||
| 
						 | 
					ea86697973 | ||
| 
						 | 
					fa1605e7e7 | ||
| 
						 | 
					46346d2a51 | ||
| 
						 | 
					830a58cebd | ||
| 
						 | 
					0edef7b3cb | ||
| 
						 | 
					64757670fc | ||
| 
						 | 
					edac77de74 | ||
| 
						 | 
					63e3b1af52 | ||
| 
						 | 
					f6fa88e5ff | ||
| 
						 | 
					78587e11c7 | ||
| 
						 | 
					784d06f0ae | ||
| 
						 | 
					6846c8f2ed | ||
| 
						 | 
					cfa4501793 | ||
| 
						 | 
					16f1dccd22 | ||
| 
						 | 
					3278899787 | ||
| 
						 | 
					cdbee64086 | ||
| 
						 | 
					90e134cb26 | ||
| 
						 | 
					725b618111 | ||
| 
						 | 
					f135a3a5e7 | ||
| 
						 | 
					8f8e4806a9 | ||
| 
						 | 
					100123b43e | ||
| 
						 | 
					45a5424ebf | ||
| 
						 | 
					be37f2c576 | ||
| 
						 | 
					26ed819664 | ||
| 
						 | 
					f907ac30c6 | ||
| 
						 | 
					60be7012aa | ||
| 
						 | 
					002d493035 | ||
| 
						 | 
					a41d6cfef1 | ||
| 
						 | 
					ecfa149efc | ||
| 
						 | 
					be1270d070 | ||
| 
						 | 
					75ee4b7709 | ||
| 
						 | 
					d5b1028732 | ||
| 
						 | 
					6c0be03e62 | ||
| 
						 | 
					7ddea1270f | ||
| 
						 | 
					97578c2d3d | ||
| 
						 | 
					64806ed169 | ||
| 
						 | 
					a14c3bcc89 | ||
| 
						 | 
					1699a23ff0 | ||
| 
						 | 
					268c3fdbd8 | ||
| 
						 | 
					7689e03739 | ||
| 
						 | 
					d875540b3a | ||
| 
						 | 
					16aa9a310c | ||
| 
						 | 
					d0a008566e | ||
| 
						 | 
					d6c1a59bd4 | ||
| 
						 | 
					07117b4c8a | ||
| 
						 | 
					46d20c9968 | ||
| 
						 | 
					de1b2c31a1 | ||
| 
						 | 
					1f9cbe218f | ||
| 
						 | 
					b914f48a91 | ||
| 
						 | 
					de89355a49 | ||
| 
						 | 
					6502036be9 | ||
| 
						 | 
					f86da19362 | ||
| 
						 | 
					b04e150dc1 | ||
| 
						 | 
					1c0c374c29 | ||
| 
						 | 
					fcda3dc8c6 | ||
| 
						 | 
					d370dd43b1 | ||
| 
						 | 
					c90d7b8395 | ||
| 
						 | 
					4feb2e639b | ||
| 
						 | 
					37ba7af6f6 | ||
| 
						 | 
					10fb85663f | ||
| 
						 | 
					33287a63ad | ||
| 
						 | 
					3134a87e72 | ||
| 
						 | 
					d68b59a390 | ||
| 
						 | 
					447263ecc2 | ||
| 
						 | 
					08a7f662ea | ||
| 
						 | 
					007fb5deb9 | ||
| 
						 | 
					6422175ef2 | ||
| 
						 | 
					32ca0b97fc | ||
| 
						 | 
					244b161032 | ||
| 
						 | 
					75a6fb1d91 | ||
| 
						 | 
					32c2aecc62 | ||
| 
						 | 
					b0ef0de032 | ||
| 
						 | 
					92692653a7 | ||
| 
						 | 
					77ba19cd04 | ||
| 
						 | 
					5b43460ea4 | ||
| 
						 | 
					579f1f9dc1 | ||
| 
						 | 
					de4ad764ce | ||
| 
						 | 
					33444466f3 | ||
| 
						 | 
					73888eafe1 | ||
| 
						 | 
					cd3d560e8d | ||
| 
						 | 
					c0497d3413 | ||
| 
						 | 
					648f779e2c | ||
| 
						 | 
					b1915132d5 | ||
| 
						 | 
					e6d80c60fb | ||
| 
						 | 
					05f59f6ed2 | ||
| 
						 | 
					8f457815e9 | ||
| 
						 | 
					233944bf24 | ||
| 
						 | 
					424d988f93 | ||
| 
						 | 
					3926594c6a | ||
| 
						 | 
					5f84344c3c | ||
| 
						 | 
					01082f86b7 | ||
| 
						 | 
					9fa681f5a8 | ||
| 
						 | 
					36b6733c4f | ||
| 
						 | 
					2c195c73a9 | ||
| 
						 | 
					1dd05ffbb1 | ||
| 
						 | 
					4884b01b8a | ||
| 
						 | 
					46136b5632 | ||
| 
						 | 
					ae29dd124c | ||
| 
						 | 
					703460ea95 | ||
| 
						 | 
					b7c889bb70 | ||
| 
						 | 
					12bbbcaff0 | ||
| 
						 | 
					b156c1ab25 | ||
| 
						 | 
					358d855c88 | ||
| 
						 | 
					1059dd389f | ||
| 
						 | 
					f1bcf89723 | ||
| 
						 | 
					099a239207 | ||
| 
						 | 
					821076ba9c | ||
| 
						 | 
					60dd27671b | ||
| 
						 | 
					5ccdb6f213 | ||
| 
						 | 
					0981b66a5f | ||
| 
						 | 
					3ddcc2d4ea | ||
| 
						 | 
					6005479918 | ||
| 
						 | 
					19e049642b | ||
| 
						 | 
					b8e6672e60 | ||
| 
						 | 
					dbeb0a4720 | ||
| 
						 | 
					da33867ad7 | ||
| 
						 | 
					539010c65c | ||
| 
						 | 
					cbe44a6cff | ||
| 
						 | 
					b077fedd4c | ||
| 
						 | 
					b67dee1eed | ||
| 
						 | 
					be6b3176f4 | ||
| 
						 | 
					aef29affa3 | ||
| 
						 | 
					67e482ff97 | ||
| 
						 | 
					8862d63377 | ||
| 
						 | 
					fc7427536c | ||
| 
						 | 
					0cb365cf31 | ||
| 
						 | 
					49a0d0d9bf | ||
| 
						 | 
					38fcc2847b | ||
| 
						 | 
					2caeb9db47 | ||
| 
						 | 
					f9c359e70c | ||
| 
						 | 
					24528c1426 | ||
| 
						 | 
					3602191f69 | ||
| 
						 | 
					5935e277e6 | ||
| 
						 | 
					0ce33cb160 | ||
| 
						 | 
					df026c795d | ||
| 
						 | 
					d945030803 | ||
| 
						 | 
					60a484f1e4 | ||
| 
						 | 
					077b1a5d8a | ||
| 
						 | 
					31686802b3 | ||
| 
						 | 
					b96eaed6f4 | ||
| 
						 | 
					c8fc989237 | ||
| 
						 | 
					392ebd0af4 | ||
| 
						 | 
					cabcf1e270 | ||
| 
						 | 
					af7364bdf9 | ||
| 
						 | 
					14e1e6368a | ||
| 
						 | 
					f1aa6fff9c | ||
| 
						 | 
					8ad056b8a2 | ||
| 
						 | 
					c1cb171071 | ||
| 
						 | 
					17959f648a | ||
| 
						 | 
					c3d9aa791a | ||
| 
						 | 
					f846e7719e | ||
| 
						 | 
					f25c215f6a | ||
| 
						 | 
					2640120be8 | ||
| 
						 | 
					b55014617e | ||
| 
						 | 
					42589a0034 | ||
| 
						 | 
					8691874dbb | ||
| 
						 | 
					82c405289d | ||
| 
						 | 
					7d0faa3fed | ||
| 
						 | 
					4256177531 | ||
| 
						 | 
					327530fb9d | ||
| 
						 | 
					db92b5a219 | ||
| 
						 | 
					140645b760 | ||
| 
						 | 
					fa201ad9ad | ||
| 
						 | 
					6a1a38b395 | ||
| 
						 | 
					7abcb61afb | ||
| 
						 | 
					ff5240c0bc | ||
| 
						 | 
					4e3d935acf | ||
| 
						 | 
					3fad11e104 | ||
| 
						 | 
					38ee1724a8 | ||
| 
						 | 
					0c7e2e2364 | ||
| 
						 | 
					f693084065 | ||
| 
						 | 
					a5ecc7a06d | ||
| 
						 | 
					565f1543c6 | ||
| 
						 | 
					0d8016d926 | ||
| 
						 | 
					a599e33ec2 | ||
| 
						 | 
					36c84b3fec | ||
| 
						 | 
					9cca389031 | ||
| 
						 | 
					e965507470 | ||
| 
						 | 
					65fd3a3193 | ||
| 
						 | 
					3bbd8fe4c9 | ||
| 
						 | 
					beb308c5b3 | ||
| 
						 | 
					8ab00442ea | ||
| 
						 | 
					cba803abaf | ||
| 
						 | 
					4fe2f31301 | ||
| 
						 | 
					dacd2cbc30 | ||
| 
						 | 
					b2509c82b8 | ||
| 
						 | 
					cd9bf03fb7 | ||
| 
						 | 
					6d2904cff1 | ||
| 
						 | 
					55fac29b3e | ||
| 
						 | 
					5e966d60b0 | ||
| 
						 | 
					c08f927d60 | ||
| 
						 | 
					00e66c48b8 | ||
| 
						 | 
					589f90762a | ||
| 
						 | 
					f256a57f27 | ||
| 
						 | 
					1102bf271d | ||
| 
						 | 
					b561d5ad9a | ||
| 
						 | 
					a5cb58ca96 | ||
| 
						 | 
					0af77a3c2c | ||
| 
						 | 
					a75d14f5d0 | ||
| 
						 | 
					bca39e8081 | ||
| 
						 | 
					43885e6d0b | ||
| 
						 | 
					577f0ca562 | ||
| 
						 | 
					56d339b8f0 | ||
| 
						 | 
					bd1e7a7c13 | ||
| 
						 | 
					5f41b65af1 | ||
| 
						 | 
					0dbebe953b | ||
| 
						 | 
					16c12a42c7 | ||
| 
						 | 
					fcd983d915 | ||
| 
						 | 
					8b8b828cd1 | ||
| 
						 | 
					65dabeaf15 | ||
| 
						 | 
					0480339272 | ||
| 
						 | 
					b09cdc0a18 | ||
| 
						 | 
					c3b86b687c | ||
| 
						 | 
					8d48f8d8b0 | ||
| 
						 | 
					b4618f9ba1 | ||
| 
						 | 
					2c5d83fab3 | 
@@ -22,9 +22,9 @@ export const packageOptions = {
 | 
			
		||||
    packageName: 'mermaid-zenuml',
 | 
			
		||||
    file: 'detector.ts',
 | 
			
		||||
  },
 | 
			
		||||
  'mermaid-flowchart-elk': {
 | 
			
		||||
    name: 'mermaid-flowchart-elk',
 | 
			
		||||
    packageName: 'mermaid-flowchart-elk',
 | 
			
		||||
    file: 'detector.ts',
 | 
			
		||||
  'mermaid-layout-elk': {
 | 
			
		||||
    name: 'mermaid-layout-elk',
 | 
			
		||||
    packageName: 'mermaid-layout-elk',
 | 
			
		||||
    file: 'layouts.ts',
 | 
			
		||||
  },
 | 
			
		||||
} as const;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
import jison from 'jison';
 | 
			
		||||
 | 
			
		||||
export const transformJison = (src: string): string => {
 | 
			
		||||
  // @ts-ignore - Jison is not typed properly
 | 
			
		||||
  const parser = new jison.Generator(src, {
 | 
			
		||||
    moduleType: 'js',
 | 
			
		||||
    'token-stack': true,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
/* eslint-disable no-console */
 | 
			
		||||
import { packageOptions } from './common.js';
 | 
			
		||||
import { execSync } from 'child_process';
 | 
			
		||||
 | 
			
		||||
@@ -5,11 +6,17 @@ const buildType = (packageName: string) => {
 | 
			
		||||
  console.log(`Building types for ${packageName}`);
 | 
			
		||||
  try {
 | 
			
		||||
    const out = execSync(`tsc -p ./packages/${packageName}/tsconfig.json --emitDeclarationOnly`);
 | 
			
		||||
    out.length > 0 && console.log(out.toString());
 | 
			
		||||
    if (out.length > 0) {
 | 
			
		||||
      console.log(out.toString());
 | 
			
		||||
    }
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    console.error(e);
 | 
			
		||||
    e.stdout.length > 0 && console.error(e.stdout.toString());
 | 
			
		||||
    e.stderr.length > 0 && console.error(e.stderr.toString());
 | 
			
		||||
    if (e.stdout.length > 0) {
 | 
			
		||||
      console.error(e.stdout.toString());
 | 
			
		||||
    }
 | 
			
		||||
    if (e.stderr.length > 0) {
 | 
			
		||||
      console.error(e.stderr.toString());
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "extends": ["@commitlint/config-conventional"]
 | 
			
		||||
}
 | 
			
		||||
@@ -13,6 +13,7 @@ bqstring
 | 
			
		||||
BQUOTE
 | 
			
		||||
bramp
 | 
			
		||||
BRKT
 | 
			
		||||
brotli
 | 
			
		||||
callbackargs
 | 
			
		||||
callbackname
 | 
			
		||||
classdef
 | 
			
		||||
@@ -27,6 +28,7 @@ controly
 | 
			
		||||
CSSCLASS
 | 
			
		||||
CYLINDEREND
 | 
			
		||||
CYLINDERSTART
 | 
			
		||||
DAGA
 | 
			
		||||
datakey
 | 
			
		||||
DEND
 | 
			
		||||
descr
 | 
			
		||||
@@ -88,8 +90,8 @@ rels
 | 
			
		||||
reqs
 | 
			
		||||
rewritelinks
 | 
			
		||||
rgba
 | 
			
		||||
runtimes
 | 
			
		||||
RIGHTOF
 | 
			
		||||
roughjs
 | 
			
		||||
sankey
 | 
			
		||||
sequencenumber
 | 
			
		||||
shrc
 | 
			
		||||
@@ -109,9 +111,11 @@ strikethrough
 | 
			
		||||
stringifying
 | 
			
		||||
struct
 | 
			
		||||
STYLECLASS
 | 
			
		||||
STYLEDEF
 | 
			
		||||
STYLEOPTS
 | 
			
		||||
subcomponent
 | 
			
		||||
subcomponents
 | 
			
		||||
subconfig
 | 
			
		||||
SUBROUTINEEND
 | 
			
		||||
SUBROUTINESTART
 | 
			
		||||
Subschemas
 | 
			
		||||
@@ -126,6 +130,7 @@ titlevalue
 | 
			
		||||
topbar
 | 
			
		||||
TRAPEND
 | 
			
		||||
TRAPSTART
 | 
			
		||||
treemap
 | 
			
		||||
ts-nocheck
 | 
			
		||||
tsdoc
 | 
			
		||||
typeof
 | 
			
		||||
 
 | 
			
		||||
@@ -4,5 +4,6 @@ cpettitt
 | 
			
		||||
Dong Cai
 | 
			
		||||
Nikolay Rozhkov
 | 
			
		||||
Peng Xiao
 | 
			
		||||
Per Brolin
 | 
			
		||||
subhash-halder
 | 
			
		||||
Vinod Sidharth
 | 
			
		||||
 
 | 
			
		||||
@@ -54,13 +54,16 @@ presetAttributify
 | 
			
		||||
pyplot
 | 
			
		||||
redmine
 | 
			
		||||
rehype
 | 
			
		||||
roughjs
 | 
			
		||||
rscratch
 | 
			
		||||
shiki
 | 
			
		||||
sparkline
 | 
			
		||||
sphinxcontrib
 | 
			
		||||
ssim
 | 
			
		||||
stylis
 | 
			
		||||
Swimm
 | 
			
		||||
tsbuildinfo
 | 
			
		||||
tseslint
 | 
			
		||||
Tuleap
 | 
			
		||||
Typora
 | 
			
		||||
unocss
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@ elems
 | 
			
		||||
gantt
 | 
			
		||||
gitgraph
 | 
			
		||||
gzipped
 | 
			
		||||
handdrawn
 | 
			
		||||
knsv
 | 
			
		||||
Knut
 | 
			
		||||
marginx
 | 
			
		||||
@@ -17,6 +18,7 @@ Markdownish
 | 
			
		||||
mermaidjs
 | 
			
		||||
mindmap
 | 
			
		||||
mindmaps
 | 
			
		||||
mrtree
 | 
			
		||||
multigraph
 | 
			
		||||
nodesep
 | 
			
		||||
NOTEGROUP
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1,6 @@
 | 
			
		||||
BRANDES
 | 
			
		||||
circo
 | 
			
		||||
handdrawn
 | 
			
		||||
KOEPF
 | 
			
		||||
neato
 | 
			
		||||
newbranch
 | 
			
		||||
 
 | 
			
		||||
@@ -2,13 +2,14 @@ import { build } from 'esbuild';
 | 
			
		||||
import { mkdir, writeFile } from 'node:fs/promises';
 | 
			
		||||
import { packageOptions } from '../.build/common.js';
 | 
			
		||||
import { generateLangium } from '../.build/generateLangium.js';
 | 
			
		||||
import { MermaidBuildOptions, defaultOptions, getBuildConfig } from './util.js';
 | 
			
		||||
import type { MermaidBuildOptions } from './util.js';
 | 
			
		||||
import { defaultOptions, getBuildConfig } from './util.js';
 | 
			
		||||
 | 
			
		||||
const shouldVisualize = process.argv.includes('--visualize');
 | 
			
		||||
 | 
			
		||||
const buildPackage = async (entryName: keyof typeof packageOptions) => {
 | 
			
		||||
  const commonOptions = { ...defaultOptions, entryName } as const;
 | 
			
		||||
  const buildConfigs = [
 | 
			
		||||
  const commonOptions: MermaidBuildOptions = { ...defaultOptions, entryName } as const;
 | 
			
		||||
  const buildConfigs: MermaidBuildOptions[] = [
 | 
			
		||||
    // package.mjs
 | 
			
		||||
    { ...commonOptions },
 | 
			
		||||
    // package.min.mjs
 | 
			
		||||
@@ -35,11 +36,11 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => {
 | 
			
		||||
 | 
			
		||||
  if (shouldVisualize) {
 | 
			
		||||
    for (const { metafile } of results) {
 | 
			
		||||
      if (!metafile) {
 | 
			
		||||
      if (!metafile?.outputs) {
 | 
			
		||||
        continue;
 | 
			
		||||
      }
 | 
			
		||||
      const fileName = Object.keys(metafile.outputs)
 | 
			
		||||
        .filter((file) => !file.includes('chunks') && file.endsWith('js'))[0]
 | 
			
		||||
        .find((file) => !file.includes('chunks') && file.endsWith('js'))
 | 
			
		||||
        .replace('dist/', '');
 | 
			
		||||
      // Upload metafile into https://esbuild.github.io/analyze/
 | 
			
		||||
      await writeFile(`stats/${fileName}.meta.json`, JSON.stringify(metafile));
 | 
			
		||||
@@ -48,13 +49,14 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const handler = (e) => {
 | 
			
		||||
  // eslint-disable-next-line no-console
 | 
			
		||||
  console.error(e);
 | 
			
		||||
  process.exit(1);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const main = async () => {
 | 
			
		||||
  await generateLangium();
 | 
			
		||||
  await mkdir('stats').catch(() => {});
 | 
			
		||||
  await mkdir('stats', { recursive: true });
 | 
			
		||||
  const packageNames = Object.keys(packageOptions) as (keyof typeof packageOptions)[];
 | 
			
		||||
  // it should build `parser` before `mermaid` because it's a dependency
 | 
			
		||||
  for (const pkg of packageNames) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
import { readFile } from 'node:fs/promises';
 | 
			
		||||
import { transformJison } from '../.build/jisonTransformer.js';
 | 
			
		||||
import { Plugin } from 'esbuild';
 | 
			
		||||
import type { Plugin } from 'esbuild';
 | 
			
		||||
 | 
			
		||||
export const jisonPlugin: Plugin = {
 | 
			
		||||
  name: 'jison',
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,12 @@
 | 
			
		||||
import express from 'express';
 | 
			
		||||
import type { NextFunction, Request, Response } from 'express';
 | 
			
		||||
import cors from 'cors';
 | 
			
		||||
import { getBuildConfig, defaultOptions } from './util.js';
 | 
			
		||||
import { context } from 'esbuild';
 | 
			
		||||
/* eslint-disable no-console */
 | 
			
		||||
import chokidar from 'chokidar';
 | 
			
		||||
import { generateLangium } from '../.build/generateLangium.js';
 | 
			
		||||
import cors from 'cors';
 | 
			
		||||
import { context } from 'esbuild';
 | 
			
		||||
import type { Request, Response } from 'express';
 | 
			
		||||
import express from 'express';
 | 
			
		||||
import { packageOptions } from '../.build/common.js';
 | 
			
		||||
import { generateLangium } from '../.build/generateLangium.js';
 | 
			
		||||
import { defaultOptions, getBuildConfig } from './util.js';
 | 
			
		||||
 | 
			
		||||
const configs = Object.values(packageOptions).map(({ packageName }) =>
 | 
			
		||||
  getBuildConfig({ ...defaultOptions, minify: false, core: false, entryName: packageName })
 | 
			
		||||
@@ -19,16 +20,28 @@ const mermaidIIFEConfig = getBuildConfig({
 | 
			
		||||
});
 | 
			
		||||
configs.push(mermaidIIFEConfig);
 | 
			
		||||
 | 
			
		||||
const contexts = await Promise.all(configs.map((config) => context(config)));
 | 
			
		||||
const contexts = await Promise.all(
 | 
			
		||||
  configs.map(async (config) => ({ config, context: await context(config) }))
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
let rebuildCounter = 1;
 | 
			
		||||
const rebuildAll = async () => {
 | 
			
		||||
  console.time('Rebuild time');
 | 
			
		||||
  await Promise.all(contexts.map((ctx) => ctx.rebuild())).catch((e) => console.error(e));
 | 
			
		||||
  console.timeEnd('Rebuild time');
 | 
			
		||||
  const buildNumber = rebuildCounter++;
 | 
			
		||||
  const timeLabel = `Rebuild ${buildNumber} Time (total)`;
 | 
			
		||||
  console.time(timeLabel);
 | 
			
		||||
  await Promise.all(
 | 
			
		||||
    contexts.map(async ({ config, context }) => {
 | 
			
		||||
      const buildVariant = `Rebuild ${buildNumber} Time (${Object.keys(config.entryPoints!)[0]} ${config.format})`;
 | 
			
		||||
      console.time(buildVariant);
 | 
			
		||||
      await context.rebuild();
 | 
			
		||||
      console.timeEnd(buildVariant);
 | 
			
		||||
    })
 | 
			
		||||
  ).catch((e) => console.error(e));
 | 
			
		||||
  console.timeEnd(timeLabel);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
let clients: { id: number; response: Response }[] = [];
 | 
			
		||||
function eventsHandler(request: Request, response: Response, next: NextFunction) {
 | 
			
		||||
function eventsHandler(request: Request, response: Response) {
 | 
			
		||||
  const headers = {
 | 
			
		||||
    'Content-Type': 'text/event-stream',
 | 
			
		||||
    Connection: 'keep-alive',
 | 
			
		||||
@@ -45,19 +58,20 @@ function eventsHandler(request: Request, response: Response, next: NextFunction)
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
let timeoutId: NodeJS.Timeout | undefined = undefined;
 | 
			
		||||
let timeoutID: NodeJS.Timeout | undefined = undefined;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Debounce file change events to avoid rebuilding multiple times.
 | 
			
		||||
 */
 | 
			
		||||
function handleFileChange() {
 | 
			
		||||
  if (timeoutId !== undefined) {
 | 
			
		||||
    clearTimeout(timeoutId);
 | 
			
		||||
  if (timeoutID !== undefined) {
 | 
			
		||||
    clearTimeout(timeoutID);
 | 
			
		||||
  }
 | 
			
		||||
  timeoutId = setTimeout(async () => {
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
			
		||||
  timeoutID = setTimeout(async () => {
 | 
			
		||||
    await rebuildAll();
 | 
			
		||||
    sendEventsToAll();
 | 
			
		||||
    timeoutId = undefined;
 | 
			
		||||
    timeoutID = undefined;
 | 
			
		||||
  }, 100);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -74,15 +88,16 @@ async function createServer() {
 | 
			
		||||
      ignoreInitial: true,
 | 
			
		||||
      ignored: [/node_modules/, /dist/, /docs/, /coverage/],
 | 
			
		||||
    })
 | 
			
		||||
    // eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
			
		||||
    .on('all', async (event, path) => {
 | 
			
		||||
      // Ignore other events.
 | 
			
		||||
      if (!['add', 'change'].includes(event)) {
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      if (/\.langium$/.test(path)) {
 | 
			
		||||
      console.log(`${path} changed. Rebuilding...`);
 | 
			
		||||
      if (path.endsWith('.langium')) {
 | 
			
		||||
        await generateLangium();
 | 
			
		||||
      }
 | 
			
		||||
      console.log(`${path} changed. Rebuilding...`);
 | 
			
		||||
      handleFileChange();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
@@ -99,4 +114,4 @@ async function createServer() {
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
createServer();
 | 
			
		||||
void createServer();
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import { jisonPlugin } from './jisonPlugin.js';
 | 
			
		||||
 | 
			
		||||
const __dirname = fileURLToPath(new URL('.', import.meta.url));
 | 
			
		||||
 | 
			
		||||
export interface MermaidBuildOptions {
 | 
			
		||||
export interface MermaidBuildOptions extends BuildOptions {
 | 
			
		||||
  minify: boolean;
 | 
			
		||||
  core: boolean;
 | 
			
		||||
  metafile: boolean;
 | 
			
		||||
@@ -56,7 +56,7 @@ export const getBuildConfig = (options: MermaidBuildOptions): BuildOptions => {
 | 
			
		||||
  const external: string[] = ['require', 'fs', 'path'];
 | 
			
		||||
  const { name, file, packageName } = packageOptions[entryName];
 | 
			
		||||
  const outFileName = getFileName(name, options);
 | 
			
		||||
  let output: BuildOptions = buildOptions({
 | 
			
		||||
  const output: BuildOptions = buildOptions({
 | 
			
		||||
    absWorkingDir: resolve(__dirname, `../packages/${packageName}`),
 | 
			
		||||
    entryPoints: {
 | 
			
		||||
      [outFileName]: `src/${file}`,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
dist/**
 | 
			
		||||
.github/**
 | 
			
		||||
docs/Setup.md
 | 
			
		||||
cypress.config.js
 | 
			
		||||
cypress/plugins/index.js
 | 
			
		||||
coverage
 | 
			
		||||
*.json
 | 
			
		||||
node_modules
 | 
			
		||||
 | 
			
		||||
# autogenereated by langium-cli
 | 
			
		||||
generated/
 | 
			
		||||
							
								
								
									
										189
									
								
								.eslintrc.cjs
									
									
									
									
									
								
							
							
						
						
									
										189
									
								
								.eslintrc.cjs
									
									
									
									
									
								
							@@ -1,189 +0,0 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
  env: {
 | 
			
		||||
    browser: true,
 | 
			
		||||
    es6: true,
 | 
			
		||||
    'jest/globals': true,
 | 
			
		||||
    node: true,
 | 
			
		||||
  },
 | 
			
		||||
  root: true,
 | 
			
		||||
  parser: '@typescript-eslint/parser',
 | 
			
		||||
  parserOptions: {
 | 
			
		||||
    ecmaFeatures: {
 | 
			
		||||
      experimentalObjectRestSpread: true,
 | 
			
		||||
      jsx: true,
 | 
			
		||||
    },
 | 
			
		||||
    tsconfigRootDir: __dirname,
 | 
			
		||||
    sourceType: 'module',
 | 
			
		||||
    ecmaVersion: 2020,
 | 
			
		||||
    allowAutomaticSingleRunInference: true,
 | 
			
		||||
    project: ['./tsconfig.eslint.json', './packages/*/tsconfig.json'],
 | 
			
		||||
    parser: '@typescript-eslint/parser',
 | 
			
		||||
  },
 | 
			
		||||
  extends: [
 | 
			
		||||
    'eslint:recommended',
 | 
			
		||||
    'plugin:@typescript-eslint/recommended',
 | 
			
		||||
    'plugin:json/recommended',
 | 
			
		||||
    'plugin:markdown/recommended',
 | 
			
		||||
    'plugin:@cspell/recommended',
 | 
			
		||||
    'prettier',
 | 
			
		||||
  ],
 | 
			
		||||
  plugins: [
 | 
			
		||||
    '@typescript-eslint',
 | 
			
		||||
    'no-only-tests',
 | 
			
		||||
    'html',
 | 
			
		||||
    'jest',
 | 
			
		||||
    'jsdoc',
 | 
			
		||||
    'json',
 | 
			
		||||
    '@cspell',
 | 
			
		||||
    'lodash',
 | 
			
		||||
    'unicorn',
 | 
			
		||||
  ],
 | 
			
		||||
  ignorePatterns: [
 | 
			
		||||
    // this file is automatically generated by `pnpm run --filter mermaid types:build-config`
 | 
			
		||||
    'packages/mermaid/src/config.type.ts',
 | 
			
		||||
  ],
 | 
			
		||||
  rules: {
 | 
			
		||||
    curly: 'error',
 | 
			
		||||
    'no-console': 'error',
 | 
			
		||||
    'no-prototype-builtins': 'off',
 | 
			
		||||
    'no-unused-vars': 'off',
 | 
			
		||||
    'cypress/no-async-tests': 'off',
 | 
			
		||||
    '@typescript-eslint/consistent-type-imports': 'error',
 | 
			
		||||
    '@typescript-eslint/no-explicit-any': 'warn',
 | 
			
		||||
    '@typescript-eslint/no-floating-promises': 'error',
 | 
			
		||||
    '@typescript-eslint/no-misused-promises': 'error',
 | 
			
		||||
    '@typescript-eslint/no-unused-vars': 'warn',
 | 
			
		||||
    '@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,
 | 
			
		||||
      },
 | 
			
		||||
    ],
 | 
			
		||||
    '@typescript-eslint/naming-convention': [
 | 
			
		||||
      'error',
 | 
			
		||||
      {
 | 
			
		||||
        selector: 'typeLike',
 | 
			
		||||
        format: ['PascalCase'],
 | 
			
		||||
        custom: {
 | 
			
		||||
          regex: '^I[A-Z]',
 | 
			
		||||
          match: false,
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    ],
 | 
			
		||||
    'json/*': ['error', 'allowComments'],
 | 
			
		||||
    '@cspell/spellchecker': [
 | 
			
		||||
      'error',
 | 
			
		||||
      {
 | 
			
		||||
        checkIdentifiers: true,
 | 
			
		||||
        checkStrings: true,
 | 
			
		||||
        checkStringTemplates: true,
 | 
			
		||||
      },
 | 
			
		||||
    ],
 | 
			
		||||
    'no-empty': [
 | 
			
		||||
      'error',
 | 
			
		||||
      {
 | 
			
		||||
        allowEmptyCatch: true,
 | 
			
		||||
      },
 | 
			
		||||
    ],
 | 
			
		||||
    'no-only-tests/no-only-tests': 'error',
 | 
			
		||||
    'lodash/import-scope': ['error', 'method'],
 | 
			
		||||
    'unicorn/better-regex': 'error',
 | 
			
		||||
    'unicorn/no-abusive-eslint-disable': 'error',
 | 
			
		||||
    'unicorn/no-array-push-push': 'error',
 | 
			
		||||
    'unicorn/no-for-loop': 'error',
 | 
			
		||||
    'unicorn/no-instanceof-array': 'error',
 | 
			
		||||
    'unicorn/no-typeof-undefined': 'error',
 | 
			
		||||
    'unicorn/no-unnecessary-await': 'error',
 | 
			
		||||
    'unicorn/no-unsafe-regex': 'warn',
 | 
			
		||||
    'unicorn/no-useless-promise-resolve-reject': 'error',
 | 
			
		||||
    'unicorn/prefer-array-find': 'error',
 | 
			
		||||
    'unicorn/prefer-array-flat-map': 'error',
 | 
			
		||||
    'unicorn/prefer-array-index-of': 'error',
 | 
			
		||||
    'unicorn/prefer-array-some': 'error',
 | 
			
		||||
    'unicorn/prefer-default-parameters': 'error',
 | 
			
		||||
    'unicorn/prefer-includes': 'error',
 | 
			
		||||
    'unicorn/prefer-negative-index': 'error',
 | 
			
		||||
    'unicorn/prefer-object-from-entries': 'error',
 | 
			
		||||
    'unicorn/prefer-string-starts-ends-with': 'error',
 | 
			
		||||
    'unicorn/prefer-string-trim-start-end': 'error',
 | 
			
		||||
    'unicorn/string-content': 'error',
 | 
			
		||||
    'unicorn/prefer-spread': 'error',
 | 
			
		||||
    'unicorn/no-lonely-if': 'error',
 | 
			
		||||
  },
 | 
			
		||||
  overrides: [
 | 
			
		||||
    {
 | 
			
		||||
      files: ['cypress/**', 'demos/**'],
 | 
			
		||||
      rules: {
 | 
			
		||||
        'no-console': 'off',
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      files: ['*.{js,jsx,mjs,cjs}'],
 | 
			
		||||
      extends: ['plugin:jsdoc/recommended'],
 | 
			
		||||
      rules: {
 | 
			
		||||
        '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',
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      files: ['*.{ts,tsx}'],
 | 
			
		||||
      plugins: ['tsdoc'],
 | 
			
		||||
      rules: {
 | 
			
		||||
        'no-restricted-syntax': [
 | 
			
		||||
          'error',
 | 
			
		||||
          {
 | 
			
		||||
            selector: 'TSEnumDeclaration',
 | 
			
		||||
            message:
 | 
			
		||||
              'Prefer using TypeScript union types over TypeScript enum, since TypeScript enums have a bunch of issues, see https://dev.to/dvddpl/whats-the-problem-with-typescript-enums-2okj',
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        'tsdoc/syntax': 'error',
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      files: ['*.spec.{ts,js}', 'cypress/**', 'demos/**', '**/docs/**'],
 | 
			
		||||
      rules: {
 | 
			
		||||
        'jsdoc/require-jsdoc': 'off',
 | 
			
		||||
        '@typescript-eslint/no-unused-vars': 'off',
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      files: ['*.spec.{ts,js}', 'tests/**', 'cypress/**/*.js'],
 | 
			
		||||
      rules: {
 | 
			
		||||
        '@cspell/spellchecker': [
 | 
			
		||||
          'error',
 | 
			
		||||
          {
 | 
			
		||||
            checkIdentifiers: false,
 | 
			
		||||
            checkStrings: false,
 | 
			
		||||
            checkStringTemplates: false,
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      files: ['*.html', '*.md', '**/*.md/*'],
 | 
			
		||||
      rules: {
 | 
			
		||||
        'no-var': 'error',
 | 
			
		||||
        'no-undef': 'off',
 | 
			
		||||
        '@typescript-eslint/no-unused-vars': 'off',
 | 
			
		||||
        '@typescript-eslint/no-floating-promises': 'off',
 | 
			
		||||
        '@typescript-eslint/no-misused-promises': 'off',
 | 
			
		||||
      },
 | 
			
		||||
      parserOptions: {
 | 
			
		||||
        project: null,
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  ],
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										7
									
								
								.github/lychee.toml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.github/lychee.toml
									
									
									
									
										vendored
									
									
								
							@@ -40,8 +40,11 @@ exclude = [
 | 
			
		||||
# BundlePhobia has frequent downtime
 | 
			
		||||
"https://bundlephobia.com",
 | 
			
		||||
 | 
			
		||||
# Chrome webstore redirect issue
 | 
			
		||||
"https://chromewebstore.google.com"
 | 
			
		||||
# Chrome webstore migration issue. Temporary
 | 
			
		||||
"https://chromewebstore.google.com",
 | 
			
		||||
 | 
			
		||||
# Drupal 403
 | 
			
		||||
"https://(www.)?drupal.org"
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
# Exclude all private IPs from checking.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							@@ -37,13 +37,13 @@ jobs:
 | 
			
		||||
        run: pnpm run build
 | 
			
		||||
 | 
			
		||||
      - name: Upload Mermaid Build as Artifact
 | 
			
		||||
        uses: actions/upload-artifact@v3
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: mermaid-build
 | 
			
		||||
          path: packages/mermaid/dist
 | 
			
		||||
 | 
			
		||||
      - name: Upload Mermaid Mindmap Build as Artifact
 | 
			
		||||
        uses: actions/upload-artifact@v3
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: mermaid-mindmap-build
 | 
			
		||||
          path: packages/mermaid-mindmap/dist
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							@@ -33,7 +33,7 @@ jobs:
 | 
			
		||||
 | 
			
		||||
      # Initializes the CodeQL tools for scanning.
 | 
			
		||||
      - name: Initialize CodeQL
 | 
			
		||||
        uses: github/codeql-action/init@v2
 | 
			
		||||
        uses: github/codeql-action/init@v3
 | 
			
		||||
        with:
 | 
			
		||||
          config-file: ./.github/codeql/codeql-config.yml
 | 
			
		||||
          languages: ${{ matrix.language }}
 | 
			
		||||
@@ -45,7 +45,7 @@ jobs:
 | 
			
		||||
      # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
 | 
			
		||||
      # If this step fails, then you should remove it and run the build manually (see below)
 | 
			
		||||
      - name: Autobuild
 | 
			
		||||
        uses: github/codeql-action/autobuild@v2
 | 
			
		||||
        uses: github/codeql-action/autobuild@v3
 | 
			
		||||
 | 
			
		||||
      # ℹ️ Command-line programs to run using the OS shell.
 | 
			
		||||
      # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
 | 
			
		||||
@@ -59,4 +59,4 @@ jobs:
 | 
			
		||||
      #   make release
 | 
			
		||||
 | 
			
		||||
      - name: Perform CodeQL Analysis
 | 
			
		||||
        uses: github/codeql-action/analyze@v2
 | 
			
		||||
        uses: github/codeql-action/analyze@v3
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/dependency-review.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/dependency-review.yml
									
									
									
									
										vendored
									
									
								
							@@ -17,4 +17,4 @@ jobs:
 | 
			
		||||
      - name: 'Checkout Repository'
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
      - name: 'Dependency Review'
 | 
			
		||||
        uses: actions/dependency-review-action@v3
 | 
			
		||||
        uses: actions/dependency-review-action@v4
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										155
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										155
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,9 +1,3 @@
 | 
			
		||||
# We use github cache to save snapshots between runs.
 | 
			
		||||
# For PRs and MergeQueues, the target commit is used, and for push events, github.event.previous is used.
 | 
			
		||||
# If a snapshot for a given Hash is not found, we checkout that commit, run the tests and cache the snapshots.
 | 
			
		||||
# These are then downloaded before running the E2E, providing the reference snapshots.
 | 
			
		||||
# If there are any errors, the diff image is uploaded to artifacts, and the user is notified.
 | 
			
		||||
 | 
			
		||||
name: E2E
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
@@ -15,12 +9,21 @@ on:
 | 
			
		||||
 | 
			
		||||
permissions:
 | 
			
		||||
  contents: read
 | 
			
		||||
  pull-requests: write
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  # For PRs and MergeQueues, the target commit is used, and for push events, github.event.previous is used.
 | 
			
		||||
  targetHash: ${{ github.event.pull_request.base.sha || github.event.merge_group.base_sha || (github.event.before == '0000000000000000000000000000000000000000' && 'develop' || github.event.before)  }}
 | 
			
		||||
 | 
			
		||||
  # For PRs and MergeQueues, the target commit is used, and for push events to non-develop branches, github.event.previous is used if available. Otherwise, 'develop' is used.
 | 
			
		||||
  targetHash: >-
 | 
			
		||||
    ${{ 
 | 
			
		||||
      github.event.pull_request.base.sha || 
 | 
			
		||||
      github.event.merge_group.base_sha || 
 | 
			
		||||
      (
 | 
			
		||||
        (
 | 
			
		||||
          (github.event_name == 'push' && github.ref == 'refs/heads/develop') || 
 | 
			
		||||
          github.event.before == '0000000000000000000000000000000000000000'
 | 
			
		||||
        ) && 'develop'
 | 
			
		||||
      ) || 
 | 
			
		||||
      github.event.before
 | 
			
		||||
    }}
 | 
			
		||||
jobs:
 | 
			
		||||
  cache:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
@@ -56,28 +59,13 @@ jobs:
 | 
			
		||||
          # just perform install
 | 
			
		||||
          runTests: false
 | 
			
		||||
 | 
			
		||||
      - name: Build
 | 
			
		||||
        if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true' && github.event_name == 'pull_request' }}
 | 
			
		||||
      - name: Calculate bundle size
 | 
			
		||||
        if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true'}}
 | 
			
		||||
        run: |
 | 
			
		||||
          pnpm run build:viz
 | 
			
		||||
          mkdir -p cypress/snapshots/stats/base
 | 
			
		||||
          mv stats cypress/snapshots/stats/base
 | 
			
		||||
 | 
			
		||||
      - name: Cypress run
 | 
			
		||||
        uses: cypress-io/github-action@v6
 | 
			
		||||
        id: cypress-snapshot-gen
 | 
			
		||||
        if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true' }}
 | 
			
		||||
        with:
 | 
			
		||||
          install: false
 | 
			
		||||
          start: pnpm run dev
 | 
			
		||||
          wait-on: 'http://localhost:9000'
 | 
			
		||||
          browser: chrome
 | 
			
		||||
 | 
			
		||||
      - name: Move runtime data
 | 
			
		||||
        if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true' }}
 | 
			
		||||
        run: |
 | 
			
		||||
          mv cypress/snapshots/runtimes/current cypress/snapshots/runtimes/base
 | 
			
		||||
 | 
			
		||||
  e2e:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    container:
 | 
			
		||||
@@ -102,7 +90,7 @@ jobs:
 | 
			
		||||
      # These cached snapshots are downloaded, providing the reference snapshots.
 | 
			
		||||
      - name: Cache snapshots
 | 
			
		||||
        id: cache-snapshot
 | 
			
		||||
        uses: actions/cache/restore@v3
 | 
			
		||||
        uses: actions/cache/restore@v4
 | 
			
		||||
        with:
 | 
			
		||||
          path: ./cypress/snapshots
 | 
			
		||||
          key: ${{ runner.os }}-snapshots-${{ env.targetHash }}
 | 
			
		||||
@@ -112,26 +100,14 @@ jobs:
 | 
			
		||||
        with:
 | 
			
		||||
          runTests: false
 | 
			
		||||
 | 
			
		||||
      - name: Build
 | 
			
		||||
        id: size
 | 
			
		||||
        if: ${{ github.event_name == 'pull_request' && matrix.containers == 1 }}
 | 
			
		||||
      - name: Output size diff
 | 
			
		||||
        if: ${{ matrix.containers == 1 }}
 | 
			
		||||
        run: |
 | 
			
		||||
          pnpm run build:viz
 | 
			
		||||
          mv stats cypress/snapshots/stats/head
 | 
			
		||||
          {
 | 
			
		||||
            echo 'size_diff<<EOF'
 | 
			
		||||
            npx tsx scripts/size.ts
 | 
			
		||||
            echo EOF
 | 
			
		||||
          } >> "$GITHUB_OUTPUT"
 | 
			
		||||
 | 
			
		||||
      # Size diff only needs to be posted from one job, on PRs.
 | 
			
		||||
      - name: Comment PR size difference
 | 
			
		||||
        if: ${{ github.event_name == 'pull_request' && matrix.containers == 1 }}
 | 
			
		||||
        uses: thollander/actions-comment-pull-request@v2
 | 
			
		||||
        with:
 | 
			
		||||
          message: |
 | 
			
		||||
            ${{ steps.size.outputs.size_diff }}
 | 
			
		||||
          comment_tag: size-diff
 | 
			
		||||
          echo '## Bundle size difference' >> "$GITHUB_STEP_SUMMARY"
 | 
			
		||||
          echo '' >> "$GITHUB_STEP_SUMMARY"
 | 
			
		||||
          npx tsx scripts/size.ts >> "$GITHUB_STEP_SUMMARY"
 | 
			
		||||
 | 
			
		||||
      # Install NPM dependencies, cache them correctly
 | 
			
		||||
      # and run all Cypress tests
 | 
			
		||||
@@ -154,9 +130,13 @@ jobs:
 | 
			
		||||
          CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
 | 
			
		||||
          VITEST_COVERAGE: true
 | 
			
		||||
          CYPRESS_COMMIT: ${{ github.sha }}
 | 
			
		||||
          ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }}
 | 
			
		||||
          ARGOS_PARALLEL: ${{ secrets.CYPRESS_RECORD_KEY != '' }}
 | 
			
		||||
          ARGOS_PARALLEL_TOTAL: 4
 | 
			
		||||
          ARGOS_PARALLEL_INDEX: ${{ matrix.containers }}
 | 
			
		||||
 | 
			
		||||
      - name: Upload Coverage to Codecov
 | 
			
		||||
        uses: codecov/codecov-action@v3
 | 
			
		||||
        uses: codecov/codecov-action@v4
 | 
			
		||||
        # Run step only pushes to develop and pull_requests
 | 
			
		||||
        if: ${{ steps.cypress.conclusion == 'success' && (github.event_name == 'pull_request' || github.ref == 'refs/heads/develop')}}
 | 
			
		||||
        with:
 | 
			
		||||
@@ -166,86 +146,3 @@ jobs:
 | 
			
		||||
          fail_ci_if_error: false
 | 
			
		||||
          verbose: true
 | 
			
		||||
          token: 6845cc80-77ee-4e17-85a1-026cd95e0766
 | 
			
		||||
 | 
			
		||||
      # We upload the artifacts into numbered archives to prevent overwriting
 | 
			
		||||
      - name: Upload Artifacts
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        with:
 | 
			
		||||
          name: snapshots-${{ matrix.containers }}
 | 
			
		||||
          retention-days: 1
 | 
			
		||||
          path: ./cypress/snapshots
 | 
			
		||||
 | 
			
		||||
  combineArtifacts:
 | 
			
		||||
    needs: e2e
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: ${{ always() }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - uses: pnpm/action-setup@v2
 | 
			
		||||
        # uses version from "packageManager" field in package.json
 | 
			
		||||
 | 
			
		||||
      - name: Setup Node.js 18.x
 | 
			
		||||
        uses: actions/setup-node@v4
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 18.x
 | 
			
		||||
 | 
			
		||||
      # Download all snapshot artifacts and merge them into a single folder
 | 
			
		||||
      - name: Download All Artifacts
 | 
			
		||||
        uses: actions/download-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          path: snapshots
 | 
			
		||||
          pattern: snapshots-*
 | 
			
		||||
          merge-multiple: true
 | 
			
		||||
 | 
			
		||||
      - name: Build
 | 
			
		||||
        id: runtime
 | 
			
		||||
        if: ${{ needs.e2e.result != 'failure' && github.event_name == 'pull_request' }}
 | 
			
		||||
        run: |
 | 
			
		||||
          mv ./snapshots/runtimes/current ./snapshots/runtimes/head
 | 
			
		||||
          npm config set ignore-scripts true
 | 
			
		||||
          pnpm install --frozen-lockfile
 | 
			
		||||
          {
 | 
			
		||||
            echo 'runtime_diff<<EOF'
 | 
			
		||||
            npx tsx scripts/runTime.ts ./snapshots
 | 
			
		||||
            echo EOF
 | 
			
		||||
          } >> "$GITHUB_OUTPUT"
 | 
			
		||||
 | 
			
		||||
      - name: Comment PR runtime difference
 | 
			
		||||
        if: ${{ github.event_name == 'pull_request' }}
 | 
			
		||||
        uses: thollander/actions-comment-pull-request@v2
 | 
			
		||||
        with:
 | 
			
		||||
          message: |
 | 
			
		||||
            ${{ steps.runtime.outputs.runtime_diff }}
 | 
			
		||||
          comment_tag: size-diff
 | 
			
		||||
 | 
			
		||||
      # For successful push events, we save the snapshots cache
 | 
			
		||||
      - name: Save snapshots cache
 | 
			
		||||
        id: cache-upload
 | 
			
		||||
        if: ${{ github.event_name == 'push' && needs.e2e.result != 'failure' }}
 | 
			
		||||
        uses: actions/cache/save@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: ./snapshots
 | 
			
		||||
          key: ${{ runner.os }}-snapshots-${{ github.event.after }}
 | 
			
		||||
 | 
			
		||||
      - name: Flatten images to a folder
 | 
			
		||||
        if: ${{ needs.e2e.result == 'failure'  }}
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir errors
 | 
			
		||||
          cd snapshots
 | 
			
		||||
          find . -mindepth 2 -type d -name "*__diff_output__*" -exec sh -c 'mv "$0"/*.png ../errors/' {} \;
 | 
			
		||||
 | 
			
		||||
      - name: Upload Error snapshots
 | 
			
		||||
        if: ${{ needs.e2e.result == 'failure' }}
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        id: upload-artifacts
 | 
			
		||||
        with:
 | 
			
		||||
          name: error-snapshots
 | 
			
		||||
          retention-days: 10
 | 
			
		||||
          path: errors/
 | 
			
		||||
 | 
			
		||||
      - name: Notify Users
 | 
			
		||||
        if: ${{ needs.e2e.result == 'failure' }}
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "::error title=Visual tests failed::You can view images that failed by downloading the error-snapshots artifact: ${{ steps.upload-artifacts.outputs.artifact-url }}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/link-checker.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/link-checker.yml
									
									
									
									
										vendored
									
									
								
							@@ -29,7 +29,7 @@ jobs:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Restore lychee cache
 | 
			
		||||
        uses: actions/cache@v3
 | 
			
		||||
        uses: actions/cache@v4
 | 
			
		||||
        with:
 | 
			
		||||
          path: .lycheecache
 | 
			
		||||
          key: cache-lychee-${{ github.sha }}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/pr-labeler.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/pr-labeler.yml
									
									
									
									
										vendored
									
									
								
							@@ -22,7 +22,7 @@ jobs:
 | 
			
		||||
      pull-requests: write # write permission is required to label PRs
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Label PR
 | 
			
		||||
        uses: release-drafter/release-drafter@v5
 | 
			
		||||
        uses: release-drafter/release-drafter@v6
 | 
			
		||||
        with:
 | 
			
		||||
          config-name: pr-labeler.yml
 | 
			
		||||
          disable-autolabeler: false
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								.github/workflows/publish-docs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/publish-docs.yml
									
									
									
									
										vendored
									
									
								
							@@ -37,13 +37,13 @@ jobs:
 | 
			
		||||
        run: pnpm install --frozen-lockfile
 | 
			
		||||
 | 
			
		||||
      - name: Setup Pages
 | 
			
		||||
        uses: actions/configure-pages@v3
 | 
			
		||||
        uses: actions/configure-pages@v4
 | 
			
		||||
 | 
			
		||||
      - name: Run Build
 | 
			
		||||
        run: pnpm --filter mermaid run docs:build:vitepress
 | 
			
		||||
 | 
			
		||||
      - name: Upload artifact
 | 
			
		||||
        uses: actions/upload-pages-artifact@v1
 | 
			
		||||
        uses: actions/upload-pages-artifact@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: packages/mermaid/src/vitepress/.vitepress/dist
 | 
			
		||||
 | 
			
		||||
@@ -56,4 +56,4 @@ jobs:
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Deploy to GitHub Pages
 | 
			
		||||
        id: deployment
 | 
			
		||||
        uses: actions/deploy-pages@v2
 | 
			
		||||
        uses: actions/deploy-pages@v4
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								.github/workflows/release-draft.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/release-draft.yml
									
									
									
									
										vendored
									
									
								
							@@ -12,11 +12,11 @@ jobs:
 | 
			
		||||
  draft-release:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    permissions:
 | 
			
		||||
      contents: write # write permission is required to create a github release
 | 
			
		||||
      contents: write # write permission is required to create a GitHub release
 | 
			
		||||
      pull-requests: read # required to read PR titles/labels
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Draft Release
 | 
			
		||||
        uses: release-drafter/release-drafter@v5
 | 
			
		||||
        uses: release-drafter/release-drafter@v6
 | 
			
		||||
        with:
 | 
			
		||||
          disable-autolabeler: true
 | 
			
		||||
        env:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							@@ -39,7 +39,7 @@ jobs:
 | 
			
		||||
          pnpm exec vitest run ./packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts --coverage
 | 
			
		||||
 | 
			
		||||
      - name: Upload Coverage to Codecov
 | 
			
		||||
        uses: codecov/codecov-action@v3
 | 
			
		||||
        uses: codecov/codecov-action@v4
 | 
			
		||||
        # Run step only pushes to develop and pull_requests
 | 
			
		||||
        if: ${{ github.event_name == 'pull_request' || github.ref == 'refs/heads/develop' }}
 | 
			
		||||
        with:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/update-browserlist.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/update-browserlist.yml
									
									
									
									
										vendored
									
									
								
							@@ -19,7 +19,7 @@ jobs:
 | 
			
		||||
          message: 'chore: update browsers list'
 | 
			
		||||
          push: false
 | 
			
		||||
      - name: Create Pull Request
 | 
			
		||||
        uses: peter-evans/create-pull-request@v5
 | 
			
		||||
        uses: peter-evans/create-pull-request@v6
 | 
			
		||||
        with:
 | 
			
		||||
          branch: update-browserslist
 | 
			
		||||
          title: Update Browserslist
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -29,14 +29,13 @@ Gemfile.lock
 | 
			
		||||
 | 
			
		||||
cypress/screenshots/
 | 
			
		||||
cypress/snapshots/
 | 
			
		||||
cypress/runtimes/
 | 
			
		||||
 | 
			
		||||
# eslint --cache file
 | 
			
		||||
.eslintcache
 | 
			
		||||
.tsbuildinfo
 | 
			
		||||
tsconfig.tsbuildinfo
 | 
			
		||||
 | 
			
		||||
knsv*.html
 | 
			
		||||
#knsv*.html
 | 
			
		||||
local*.html
 | 
			
		||||
stats/
 | 
			
		||||
 | 
			
		||||
@@ -49,6 +48,7 @@ demos/dev/**
 | 
			
		||||
!/demos/dev/example.html
 | 
			
		||||
!/demos/dev/reload.js
 | 
			
		||||
tsx-0/**
 | 
			
		||||
vite.config.ts.timestamp-*
 | 
			
		||||
 | 
			
		||||
# autogenereated by langium-cli
 | 
			
		||||
generated/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
# . "$(dirname "$0")/_/husky.sh"
 | 
			
		||||
 | 
			
		||||
# npx --no-install commitlint --edit $1
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
. "$(dirname "$0")/_/husky.sh"
 | 
			
		||||
 | 
			
		||||
pnpm run pre-commit
 | 
			
		||||
NODE_OPTIONS="--max_old_space_size=8192" pnpm run pre-commit
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
v20.11.1
 | 
			
		||||
20.12.2
 | 
			
		||||
 
 | 
			
		||||
@@ -16,3 +16,5 @@ generated/
 | 
			
		||||
# Ignore the files creates in /demos/dev except for example.html
 | 
			
		||||
demos/dev/**
 | 
			
		||||
!/demos/dev/example.html
 | 
			
		||||
# TODO: Lots of errors to fix
 | 
			
		||||
cypress/platform/state-refactor.html
 | 
			
		||||
 
 | 
			
		||||
@@ -3,5 +3,6 @@
 | 
			
		||||
  "printWidth": 100,
 | 
			
		||||
  "singleQuote": true,
 | 
			
		||||
  "useTabs": false,
 | 
			
		||||
  "tabWidth": 2
 | 
			
		||||
  "tabWidth": 2,
 | 
			
		||||
  "trailingComma": "es5"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
import { build, InlineConfig, type PluginOption } from 'vite';
 | 
			
		||||
import type { InlineConfig } from 'vite';
 | 
			
		||||
import { build, type PluginOption } from 'vite';
 | 
			
		||||
import { resolve } from 'path';
 | 
			
		||||
import { fileURLToPath } from 'url';
 | 
			
		||||
import jisonPlugin from './jisonPlugin.js';
 | 
			
		||||
@@ -46,9 +47,10 @@ interface BuildOptions {
 | 
			
		||||
 | 
			
		||||
export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions): InlineConfig => {
 | 
			
		||||
  const external: (string | RegExp)[] = ['require', 'fs', 'path'];
 | 
			
		||||
  // eslint-disable-next-line no-console
 | 
			
		||||
  console.log(entryName, packageOptions[entryName]);
 | 
			
		||||
  const { name, file, packageName } = packageOptions[entryName];
 | 
			
		||||
  let output: OutputOptions = [
 | 
			
		||||
  const output: OutputOptions = [
 | 
			
		||||
    {
 | 
			
		||||
      name,
 | 
			
		||||
      format: 'esm',
 | 
			
		||||
@@ -83,7 +85,6 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions)
 | 
			
		||||
    plugins: [
 | 
			
		||||
      jisonPlugin(),
 | 
			
		||||
      jsonSchemaPlugin(), // handles `.schema.yaml` files
 | 
			
		||||
      // @ts-expect-error According to the type definitions, rollup plugins are incompatible with vite
 | 
			
		||||
      typescript({ compilerOptions: { declaration: false } }),
 | 
			
		||||
      istanbul({
 | 
			
		||||
        exclude: ['node_modules', 'test/', '__mocks__', 'generated'],
 | 
			
		||||
@@ -121,10 +122,10 @@ await generateLangium();
 | 
			
		||||
 | 
			
		||||
if (watch) {
 | 
			
		||||
  await build(getBuildConfig({ minify: false, watch, core: false, entryName: 'parser' }));
 | 
			
		||||
  build(getBuildConfig({ minify: false, watch, core: false, entryName: 'mermaid' }));
 | 
			
		||||
  void build(getBuildConfig({ minify: false, watch, core: false, entryName: 'mermaid' }));
 | 
			
		||||
  if (!mermaidOnly) {
 | 
			
		||||
    build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-example-diagram' }));
 | 
			
		||||
    build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-zenuml' }));
 | 
			
		||||
    void build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-example-diagram' }));
 | 
			
		||||
    void build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-zenuml' }));
 | 
			
		||||
  }
 | 
			
		||||
} else if (visualize) {
 | 
			
		||||
  await build(getBuildConfig({ minify: false, watch, core: false, entryName: 'parser' }));
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
import { PluginOption } from 'vite';
 | 
			
		||||
import type { PluginOption } from 'vite';
 | 
			
		||||
import { getDefaults, getSchema, loadSchema } from '../.build/jsonSchema.js';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -23,8 +23,9 @@ async function createServer() {
 | 
			
		||||
  app.use(express.static('cypress/platform'));
 | 
			
		||||
 | 
			
		||||
  app.listen(9000, () => {
 | 
			
		||||
    // eslint-disable-next-line no-console
 | 
			
		||||
    console.log(`Listening on http://localhost:9000`);
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
createServer();
 | 
			
		||||
void createServer();
 | 
			
		||||
 
 | 
			
		||||
@@ -1,2 +1,2 @@
 | 
			
		||||
FROM node:20.11.1-alpine3.19 AS base
 | 
			
		||||
FROM node:20.12.2-alpine3.19 AS base
 | 
			
		||||
RUN wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.shrc" SHELL="$(which sh)" sh -
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								FUNDING.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								FUNDING.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "drips": {
 | 
			
		||||
    "ethereum": {
 | 
			
		||||
      "ownedBy": "0x0831DDFe60d009d9448CC976157b539089aB821E"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -35,6 +35,7 @@ Try Live Editor previews of future releases: <a href="https://develop.git.mermai
 | 
			
		||||
[](https://www.npmjs.com/package/mermaid)
 | 
			
		||||
[](https://discord.gg/AgrbSrBer3)
 | 
			
		||||
[](https://twitter.com/mermaidjs_)
 | 
			
		||||
[](https://argos-ci.com)
 | 
			
		||||
 | 
			
		||||
<img src="./img/header.png" alt="" />
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
import { defineConfig } from 'cypress';
 | 
			
		||||
import fs from 'fs';
 | 
			
		||||
import path from 'path';
 | 
			
		||||
import { addMatchImageSnapshotPlugin } from 'cypress-image-snapshot/plugin';
 | 
			
		||||
import coverage from '@cypress/code-coverage/task';
 | 
			
		||||
import eyesPlugin from '@applitools/eyes-cypress';
 | 
			
		||||
import { registerArgosTask } from '@argos-ci/cypress/task';
 | 
			
		||||
 | 
			
		||||
export default eyesPlugin(
 | 
			
		||||
  defineConfig({
 | 
			
		||||
    projectId: 'n2sma2',
 | 
			
		||||
@@ -19,23 +19,17 @@ export default eyesPlugin(
 | 
			
		||||
          }
 | 
			
		||||
          return launchOptions;
 | 
			
		||||
        });
 | 
			
		||||
        on('task', {
 | 
			
		||||
          recordRenderTime({ fileName, testName, timeTaken }) {
 | 
			
		||||
            const resultsPath = path.join('cypress', 'snapshots', 'runtimes', 'current');
 | 
			
		||||
            if (!fs.existsSync(resultsPath)) {
 | 
			
		||||
              fs.mkdirSync(resultsPath, { recursive: true });
 | 
			
		||||
            }
 | 
			
		||||
            fs.appendFileSync(
 | 
			
		||||
              path.join(resultsPath, `${fileName}.csv`),
 | 
			
		||||
              `${testName},${timeTaken}\n`
 | 
			
		||||
            );
 | 
			
		||||
            return true;
 | 
			
		||||
          },
 | 
			
		||||
        });
 | 
			
		||||
        addMatchImageSnapshotPlugin(on, config);
 | 
			
		||||
        // copy any needed variables from process.env to config.env
 | 
			
		||||
        config.env.useAppli = process.env.USE_APPLI ? true : false;
 | 
			
		||||
        config.env.useArgos = !!process.env.CI;
 | 
			
		||||
 | 
			
		||||
        if (config.env.useArgos) {
 | 
			
		||||
          registerArgosTask(on, config, {
 | 
			
		||||
            token: 'fc3a35cf5200db928d65b2047861582d9444032b',
 | 
			
		||||
          });
 | 
			
		||||
        } else {
 | 
			
		||||
          addMatchImageSnapshotPlugin(on, config);
 | 
			
		||||
        }
 | 
			
		||||
        // do not forget to return the changed config object!
 | 
			
		||||
        return config;
 | 
			
		||||
      },
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ export const mermaidUrl = (
 | 
			
		||||
  };
 | 
			
		||||
  const objStr: string = JSON.stringify(codeObject);
 | 
			
		||||
  let url = `http://localhost:9000/e2e.html?graph=${utf8ToB64(objStr)}`;
 | 
			
		||||
  if (api) {
 | 
			
		||||
  if (api && typeof graphStr === 'string') {
 | 
			
		||||
    url = `http://localhost:9000/xss.html?graph=${graphStr}`;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -54,16 +54,15 @@ export const imgSnapshotTest = (
 | 
			
		||||
): void => {
 | 
			
		||||
  const options: CypressMermaidConfig = {
 | 
			
		||||
    ..._options,
 | 
			
		||||
    fontFamily: _options.fontFamily || 'courier',
 | 
			
		||||
    fontFamily: _options.fontFamily ?? 'courier',
 | 
			
		||||
    // @ts-ignore TODO: Fix type of fontSize
 | 
			
		||||
    fontSize: _options.fontSize || '16px',
 | 
			
		||||
    fontSize: _options.fontSize ?? '16px',
 | 
			
		||||
    sequence: {
 | 
			
		||||
      ...(_options.sequence || {}),
 | 
			
		||||
      ...(_options.sequence ?? {}),
 | 
			
		||||
      actorFontFamily: 'courier',
 | 
			
		||||
      noteFontFamily:
 | 
			
		||||
        _options.sequence && _options.sequence.noteFontFamily
 | 
			
		||||
          ? _options.sequence.noteFontFamily
 | 
			
		||||
          : 'courier',
 | 
			
		||||
      noteFontFamily: _options.sequence?.noteFontFamily
 | 
			
		||||
        ? _options.sequence.noteFontFamily
 | 
			
		||||
        : 'courier',
 | 
			
		||||
      messageFontFamily: 'courier',
 | 
			
		||||
    },
 | 
			
		||||
  };
 | 
			
		||||
@@ -95,8 +94,22 @@ export const openURLAndVerifyRendering = (
 | 
			
		||||
  options: CypressMermaidConfig,
 | 
			
		||||
  validation?: any
 | 
			
		||||
): void => {
 | 
			
		||||
  const name: string = (options.name ?? cy.state('runnable').fullTitle()).replace(/\s+/g, '-');
 | 
			
		||||
 | 
			
		||||
  cy.visit(url);
 | 
			
		||||
  // cy.window().should('have.property', 'rendered', true);
 | 
			
		||||
  cy.get('svg').should('be.visible');
 | 
			
		||||
 | 
			
		||||
  if (validation) {
 | 
			
		||||
    cy.get('svg').should(validation);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  verifyScreenshot(name);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const verifyScreenshot = (name: string): void => {
 | 
			
		||||
  const useAppli: boolean = Cypress.env('useAppli');
 | 
			
		||||
  const name: string = (options.name || cy.state('runnable').fullTitle()).replace(/\s+/g, '-');
 | 
			
		||||
  const useArgos: boolean = Cypress.env('useArgos');
 | 
			
		||||
 | 
			
		||||
  if (useAppli) {
 | 
			
		||||
    cy.log(`Opening eyes ${Cypress.spec.name} --- ${name}`);
 | 
			
		||||
@@ -106,29 +119,12 @@ export const openURLAndVerifyRendering = (
 | 
			
		||||
      batchName: Cypress.spec.name,
 | 
			
		||||
      batchId: batchId + Cypress.spec.name,
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  cy.visit(url);
 | 
			
		||||
  cy.window().should('have.property', 'rendered', true);
 | 
			
		||||
  cy.window().then((win) => {
 | 
			
		||||
    cy.task('recordRenderTime', {
 | 
			
		||||
      fileName: Cypress.spec.name,
 | 
			
		||||
      testName: name,
 | 
			
		||||
      // @ts-ignore Dynamically added property.
 | 
			
		||||
      timeTaken: win.renderTime,
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  cy.get('svg').should('be.visible');
 | 
			
		||||
 | 
			
		||||
  if (validation) {
 | 
			
		||||
    cy.get('svg').should(validation);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (useAppli) {
 | 
			
		||||
    cy.log(`Check eyes ${Cypress.spec.name}`);
 | 
			
		||||
    cy.eyesCheckWindow('Click!');
 | 
			
		||||
    cy.log(`Closing eyes ${Cypress.spec.name}`);
 | 
			
		||||
    cy.eyesClose();
 | 
			
		||||
  } else if (useArgos) {
 | 
			
		||||
    cy.argosScreenshot(name);
 | 
			
		||||
  } else {
 | 
			
		||||
    cy.matchImageSnapshot(name);
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
import { renderGraph } from '../../helpers/util.ts';
 | 
			
		||||
import { renderGraph, verifyScreenshot } from '../../helpers/util.ts';
 | 
			
		||||
describe('Configuration', () => {
 | 
			
		||||
  describe('arrowMarkerAbsolute', () => {
 | 
			
		||||
    it('should handle default value false of arrowMarkerAbsolute', () => {
 | 
			
		||||
@@ -118,11 +118,52 @@ describe('Configuration', () => {
 | 
			
		||||
    it('should not taint the initial configuration when using multiple directives', () => {
 | 
			
		||||
      const url = 'http://localhost:9000/regression/issue-1874.html';
 | 
			
		||||
      cy.visit(url);
 | 
			
		||||
 | 
			
		||||
      cy.get('svg');
 | 
			
		||||
      cy.matchImageSnapshot(
 | 
			
		||||
      cy.window().should('have.property', 'rendered', true);
 | 
			
		||||
      verifyScreenshot(
 | 
			
		||||
        'configuration.spec-should-not-taint-initial-configuration-when-using-multiple-directives'
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('suppressErrorRendering', () => {
 | 
			
		||||
    beforeEach(() => {
 | 
			
		||||
      cy.on('uncaught:exception', (err, runnable) => {
 | 
			
		||||
        return !err.message.includes('Parse error on line');
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should not render error diagram if suppressErrorRendering is set', () => {
 | 
			
		||||
      const url = 'http://localhost:9000/suppressError.html?suppressErrorRendering=true';
 | 
			
		||||
      cy.visit(url);
 | 
			
		||||
      cy.window().should('have.property', 'rendered', true);
 | 
			
		||||
      cy.get('#test')
 | 
			
		||||
        .find('svg')
 | 
			
		||||
        .should(($svg) => {
 | 
			
		||||
          // all failing diagrams should not appear!
 | 
			
		||||
          expect($svg).to.have.length(2);
 | 
			
		||||
          // none of the diagrams should be error diagrams
 | 
			
		||||
          expect($svg).to.not.contain('Syntax error');
 | 
			
		||||
        });
 | 
			
		||||
      verifyScreenshot(
 | 
			
		||||
        'configuration.spec-should-not-render-error-diagram-if-suppressErrorRendering-is-set'
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should render error diagram if suppressErrorRendering is not set', () => {
 | 
			
		||||
      const url = 'http://localhost:9000/suppressError.html';
 | 
			
		||||
      cy.visit(url);
 | 
			
		||||
      cy.window().should('have.property', 'rendered', true);
 | 
			
		||||
      cy.get('#test')
 | 
			
		||||
        .find('svg')
 | 
			
		||||
        .should(($svg) => {
 | 
			
		||||
          // all five diagrams should be rendered
 | 
			
		||||
          expect($svg).to.have.length(5);
 | 
			
		||||
          // some of the diagrams should be error diagrams
 | 
			
		||||
          expect($svg).to.contain('Syntax error');
 | 
			
		||||
        });
 | 
			
		||||
      verifyScreenshot(
 | 
			
		||||
        'configuration.spec-should-render-error-diagram-if-suppressErrorRendering-is-not-set'
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,6 @@ describe('XSS', () => {
 | 
			
		||||
    cy.wait(1000).then(() => {
 | 
			
		||||
      cy.get('.mermaid').should('exist');
 | 
			
		||||
    });
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should not allow tags in the css', () => {
 | 
			
		||||
@@ -137,4 +136,9 @@ describe('XSS', () => {
 | 
			
		||||
    cy.wait(1000);
 | 
			
		||||
    cy.get('#the-malware').should('not.exist');
 | 
			
		||||
  });
 | 
			
		||||
  it('should sanitize backticks block diagram labels properly', () => {
 | 
			
		||||
    cy.visit('http://localhost:9000/xss25.html');
 | 
			
		||||
    cy.wait(1000);
 | 
			
		||||
    cy.get('#the-malware').should('not.exist');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,27 @@ describe('Git Graph diagram', () => {
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('Should render subgraphs with title margins and edge labels', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `flowchart LR
 | 
			
		||||
 | 
			
		||||
          subgraph TOP
 | 
			
		||||
              direction TB
 | 
			
		||||
              subgraph B1
 | 
			
		||||
                  direction RL
 | 
			
		||||
                  i1 --lb1-->f1
 | 
			
		||||
              end
 | 
			
		||||
              subgraph B2
 | 
			
		||||
                  direction BT
 | 
			
		||||
                  i2 --lb2-->f2
 | 
			
		||||
              end
 | 
			
		||||
          end
 | 
			
		||||
          A --lb3--> TOP --lb4--> B
 | 
			
		||||
          B1 --lb5--> B2
 | 
			
		||||
        `,
 | 
			
		||||
      { flowchart: { subGraphTitleMargin: { top: 10, bottom: 5 } } }
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  // 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.
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,6 @@ describe('C4 diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a simple C4Container diagram', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -50,7 +49,6 @@ describe('C4 diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a simple C4Component diagram', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -69,7 +67,6 @@ describe('C4 diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a simple C4Dynamic diagram', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -93,7 +90,6 @@ describe('C4 diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a simple C4Deployment diagram', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -117,6 +113,5 @@ describe('C4 diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 1 }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('2: should render a simple class diagrams with cardinality', () => {
 | 
			
		||||
@@ -61,7 +60,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('3: should render a simple class diagram with different visibilities', () => {
 | 
			
		||||
@@ -79,7 +77,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('4: should render a simple class diagram with comments', () => {
 | 
			
		||||
@@ -109,7 +106,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('5: should render a simple class diagram with abstract method', () => {
 | 
			
		||||
@@ -121,7 +117,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('6: should render a simple class diagram with static method', () => {
 | 
			
		||||
@@ -133,7 +128,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('7: should render a simple class diagram with Generic class', () => {
 | 
			
		||||
@@ -153,7 +147,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('8: should render a simple class diagram with Generic class and relations', () => {
 | 
			
		||||
@@ -174,7 +167,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('9: should render a simple class diagram with clickable link', () => {
 | 
			
		||||
@@ -196,7 +188,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('10: should render a simple class diagram with clickable callback', () => {
 | 
			
		||||
@@ -218,7 +209,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('11: should render a simple class diagram with return type on method', () => {
 | 
			
		||||
@@ -233,7 +223,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('12: should render a simple class diagram with generic types', () => {
 | 
			
		||||
@@ -249,7 +238,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('13: should render a simple class diagram with css classes applied', () => {
 | 
			
		||||
@@ -267,7 +255,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('14: should render a simple class diagram with css classes applied directly', () => {
 | 
			
		||||
@@ -283,7 +270,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('15: should render a simple class diagram with css classes applied to multiple classes', () => {
 | 
			
		||||
@@ -298,7 +284,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('16: should render multiple class diagrams', () => {
 | 
			
		||||
@@ -351,7 +336,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      ],
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // it('17: should render a class diagram when useMaxWidth is true (default)', () => {
 | 
			
		||||
@@ -421,7 +405,6 @@ describe('Class diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 1 }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should render class diagram with newlines in title', () => {
 | 
			
		||||
@@ -439,7 +422,6 @@ describe('Class diagram', () => {
 | 
			
		||||
          +quack()
 | 
			
		||||
        }
 | 
			
		||||
      `);
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should render class diagram with many newlines in title', () => {
 | 
			
		||||
 
 | 
			
		||||
@@ -218,7 +218,6 @@ describe('Entity Relationship Diagram', () => {
 | 
			
		||||
        `,
 | 
			
		||||
      { loglevel: 1 }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should render entities with keys', () => {
 | 
			
		||||
 
 | 
			
		||||
@@ -844,3 +844,42 @@ end
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
describe('Title and arrow styling #4813', () => {
 | 
			
		||||
  it('should render a flowchart with title', () => {
 | 
			
		||||
    const titleString = 'Test Title';
 | 
			
		||||
    renderGraph(
 | 
			
		||||
      `---
 | 
			
		||||
      title: ${titleString}
 | 
			
		||||
      ---
 | 
			
		||||
      flowchart LR
 | 
			
		||||
      A-->B
 | 
			
		||||
      A-->C`,
 | 
			
		||||
      { flowchart: { defaultRenderer: 'elk' } }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg').should((svg) => {
 | 
			
		||||
      const title = svg[0].querySelector('text');
 | 
			
		||||
      expect(title.textContent).to.contain(titleString);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('Render with stylized arrows', () => {
 | 
			
		||||
    renderGraph(
 | 
			
		||||
      `
 | 
			
		||||
      flowchart LR
 | 
			
		||||
      A-->B
 | 
			
		||||
      B-.-oC
 | 
			
		||||
      C==xD
 | 
			
		||||
      D ~~~ A`,
 | 
			
		||||
      { flowchart: { defaultRenderer: 'elk' } }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg').should((svg) => {
 | 
			
		||||
      const edges = svg[0].querySelectorAll('.edges path');
 | 
			
		||||
      console.log(edges);
 | 
			
		||||
      expect(edges[0]).to.have.attr('pattern', 'solid');
 | 
			
		||||
      expect(edges[1]).to.have.attr('pattern', 'dotted');
 | 
			
		||||
      expect(edges[2]).to.have.css('stroke-width', '3.5px');
 | 
			
		||||
      expect(edges[3]).to.have.css('stroke-width', '1.5px');
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -760,6 +760,51 @@ A ~~~ B
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('3258: Should render subgraphs with main graph nodeSpacing and rankSpacing', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `---
 | 
			
		||||
      title: Subgraph nodeSpacing and rankSpacing example
 | 
			
		||||
      ---
 | 
			
		||||
      flowchart LR
 | 
			
		||||
        X --> Y
 | 
			
		||||
        subgraph X
 | 
			
		||||
          direction LR
 | 
			
		||||
          A
 | 
			
		||||
          C
 | 
			
		||||
        end
 | 
			
		||||
        subgraph Y
 | 
			
		||||
          B
 | 
			
		||||
          D
 | 
			
		||||
        end
 | 
			
		||||
      `,
 | 
			
		||||
      { flowchart: { nodeSpacing: 1, rankSpacing: 1 } }
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('3258: Should render subgraphs with large nodeSpacing and rankSpacing', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `---
 | 
			
		||||
      title: Subgraph nodeSpacing and rankSpacing example
 | 
			
		||||
      config:
 | 
			
		||||
        flowchart: 
 | 
			
		||||
          nodeSpacing: 250
 | 
			
		||||
          rankSpacing: 250
 | 
			
		||||
      ---
 | 
			
		||||
      flowchart LR
 | 
			
		||||
        X --> Y
 | 
			
		||||
        subgraph X
 | 
			
		||||
          direction LR
 | 
			
		||||
          A
 | 
			
		||||
          C
 | 
			
		||||
        end
 | 
			
		||||
        subgraph Y
 | 
			
		||||
          B
 | 
			
		||||
          D
 | 
			
		||||
        end
 | 
			
		||||
      `
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('Markdown strings flowchart (#4220)', () => {
 | 
			
		||||
    describe('html labels', () => {
 | 
			
		||||
      it('With styling and classes', () => {
 | 
			
		||||
@@ -904,6 +949,18 @@ end
 | 
			
		||||
        );
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should not auto wrap when markdownAutoWrap is false', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `flowchart TD
 | 
			
		||||
    angular_velocity["\`**angular_velocity**
 | 
			
		||||
      *angular_displacement / duration*
 | 
			
		||||
      [rad/s, 1/s]
 | 
			
		||||
      {vector}\`"]
 | 
			
		||||
    frequency["frequency\n(1 / period_duration)\n[Hz, 1/s]"]`,
 | 
			
		||||
        { markdownAutoWrap: false }
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  describe('Subgraph title margins', () => {
 | 
			
		||||
    it('Should render subgraphs with title margins set (LR)', () => {
 | 
			
		||||
 
 | 
			
		||||
@@ -101,12 +101,12 @@ describe('Gantt diagram', () => {
 | 
			
		||||
      title Adding GANTT diagram to mermaid
 | 
			
		||||
      excludes weekdays 2014-01-10
 | 
			
		||||
      todayMarker off
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
      section team's critical event
 | 
			
		||||
      deadline A           :milestone, crit, deadlineA, 2024-02-01, 0
 | 
			
		||||
      deadline B           :milestone, crit, deadlineB, 2024-02-15, 0
 | 
			
		||||
      boss on leave        :bossaway, 2024-01-28, 2024-02-11
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
      section new intern
 | 
			
		||||
      onboarding           :onboarding, 2024-01-02, 1w
 | 
			
		||||
      literature review    :litreview, 2024-01-02, 10d
 | 
			
		||||
@@ -573,7 +573,28 @@ describe('Gantt diagram', () => {
 | 
			
		||||
      `
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should render a gantt diagram exculding friday and saturday', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `gantt
 | 
			
		||||
      title A Gantt Diagram
 | 
			
		||||
      dateFormat  YYYY-MM-DD
 | 
			
		||||
      excludes weekends
 | 
			
		||||
      weekend friday
 | 
			
		||||
      section Section1
 | 
			
		||||
      A task :a1, 2024-02-28, 10d`
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a gantt diagram exculding saturday and sunday', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `gantt
 | 
			
		||||
      title A Gantt Diagram
 | 
			
		||||
      dateFormat  YYYY-MM-DD
 | 
			
		||||
      excludes weekends
 | 
			
		||||
      weekend saturday
 | 
			
		||||
      section Section1
 | 
			
		||||
      A task :a1, 2024-02-28, 10d`
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('should render when compact is true', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
 
 | 
			
		||||
@@ -1013,4 +1013,524 @@ gitGraph TB:
 | 
			
		||||
      { gitGraph: { parallelCommits: true } }
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  describe('Git-Graph Bottom-to-Top Orientation Tests', () => {
 | 
			
		||||
    it('50: should render a simple gitgraph with commit on main branch | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
         commit id: "1"
 | 
			
		||||
         commit id: "2"
 | 
			
		||||
         commit id: "3"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('51: should render a simple gitgraph with commit on main branch with Id | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
         commit id: "One"
 | 
			
		||||
         commit id: "Two"
 | 
			
		||||
         commit id: "Three"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('52: should render a simple gitgraph with different commitTypes on main branch | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
         commit id: "Normal Commit"
 | 
			
		||||
         commit id: "Reverse Commit" type: REVERSE
 | 
			
		||||
         commit id: "Highlight Commit" type: HIGHLIGHT
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('53: should render a simple gitgraph with tags commitTypes on main branch | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
         commit id: "Normal Commit with tag" tag: "v1.0.0"
 | 
			
		||||
         commit id: "Reverse Commit with tag" type: REVERSE tag: "RC_1"
 | 
			
		||||
         commit id: "Highlight Commit" type: HIGHLIGHT  tag: "8.8.4"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('54: should render a simple gitgraph with two branches | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
         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('55: should render a simple gitgraph with two branches and merge commit | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
         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('56: should render a simple gitgraph with three branches and tagged merge commit | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
         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('57: should render a simple gitgraph with more than 8 branches &  overriding variables | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `%%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': {
 | 
			
		||||
          'gitBranchLabel0': '#ffffff',
 | 
			
		||||
          'gitBranchLabel1': '#ffffff',
 | 
			
		||||
          'gitBranchLabel2': '#ffffff',
 | 
			
		||||
          'gitBranchLabel3': '#ffffff',
 | 
			
		||||
          'gitBranchLabel4': '#ffffff',
 | 
			
		||||
          'gitBranchLabel5': '#ffffff',
 | 
			
		||||
          'gitBranchLabel6': '#ffffff',
 | 
			
		||||
          'gitBranchLabel7': '#ffffff',
 | 
			
		||||
    } } }%%
 | 
			
		||||
    gitGraph BT:
 | 
			
		||||
      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('58: should render a simple gitgraph with rotated labels | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `%%{init: { 'logLevel': 'debug', 'theme': 'default' , 'gitGraph': {
 | 
			
		||||
          'rotateCommitLabel': true
 | 
			
		||||
    } } }%%
 | 
			
		||||
          gitGraph BT:
 | 
			
		||||
          commit id: "75f7219e83b321cd3fdde7dcf83bc7c1000a6828"
 | 
			
		||||
          commit id: "0db4784daf82736dec4569e0dc92980d328c1f2e"
 | 
			
		||||
          commit id: "7067e9973f9eaa6cd4a4b723c506d1eab598e83e"
 | 
			
		||||
          commit id: "66972321ad6c199013b5b31f03b3a86fa3f9817d"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('59: should render a simple gitgraph with horizontal labels | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `%%{init: { 'logLevel': 'debug', 'theme': 'default' , 'gitGraph': {
 | 
			
		||||
          'rotateCommitLabel': false
 | 
			
		||||
    } } }%%
 | 
			
		||||
          gitGraph BT:
 | 
			
		||||
          commit id: "Alpha"
 | 
			
		||||
          commit id: "Beta"
 | 
			
		||||
          commit id: "Gamma"
 | 
			
		||||
          commit id: "Delta"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('60: should render a simple gitgraph with cherry pick commit | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
      gitGraph BT:
 | 
			
		||||
         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('61: should render a gitgraph with cherry pick commit with custom tag | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
      gitGraph BT:
 | 
			
		||||
         commit id: "ZERO"
 | 
			
		||||
         branch develop
 | 
			
		||||
         commit id:"A"
 | 
			
		||||
         checkout main
 | 
			
		||||
         commit id:"ONE"
 | 
			
		||||
         checkout develop
 | 
			
		||||
         commit id:"B"
 | 
			
		||||
         checkout main
 | 
			
		||||
         commit id:"TWO"
 | 
			
		||||
         cherry-pick id:"A" tag: "snapshot"
 | 
			
		||||
         commit id:"THREE"
 | 
			
		||||
         checkout develop
 | 
			
		||||
         commit id:"C"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('62: should render a gitgraph with cherry pick commit with no tag | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
      gitGraph BT:
 | 
			
		||||
         commit id: "ZERO"
 | 
			
		||||
         branch develop
 | 
			
		||||
         commit id:"A"
 | 
			
		||||
         checkout main
 | 
			
		||||
         commit id:"ONE"
 | 
			
		||||
         checkout develop
 | 
			
		||||
         commit id:"B"
 | 
			
		||||
         checkout main
 | 
			
		||||
         commit id:"TWO"
 | 
			
		||||
         cherry-pick id:"A" tag: ""
 | 
			
		||||
         commit id:"THREE"
 | 
			
		||||
         checkout develop
 | 
			
		||||
         commit id:"C"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('63: should render a simple gitgraph with two cherry pick commit | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
      gitGraph BT:
 | 
			
		||||
         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('64: should render commits for more than 8 branches | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
        gitGraph BT:
 | 
			
		||||
        checkout main
 | 
			
		||||
        %% Make sure to manually set the ID of all commits, for consistent visual tests
 | 
			
		||||
        commit id: "1-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        branch branch1
 | 
			
		||||
        commit id: "2-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge branch1
 | 
			
		||||
        branch branch2
 | 
			
		||||
        commit id: "3-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge branch2
 | 
			
		||||
        branch branch3
 | 
			
		||||
        commit id: "4-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge branch3
 | 
			
		||||
        branch branch4
 | 
			
		||||
        commit id: "5-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge branch4
 | 
			
		||||
        branch branch5
 | 
			
		||||
        commit id: "6-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge branch5
 | 
			
		||||
        branch branch6
 | 
			
		||||
        commit id: "7-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge branch6
 | 
			
		||||
        branch branch7
 | 
			
		||||
        commit id: "8-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge branch7
 | 
			
		||||
        branch branch8
 | 
			
		||||
        commit id: "9-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge branch8
 | 
			
		||||
        branch branch9
 | 
			
		||||
        commit id: "10-abcdefg"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('65: should render a simple gitgraph with three branches,custom merge commit id,tag,type | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
         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"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('66: should render a simple gitgraph with a title | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `---
 | 
			
		||||
  title: simple gitGraph
 | 
			
		||||
  ---
 | 
			
		||||
  gitGraph BT:
 | 
			
		||||
    commit id: "1-abcdefg"
 | 
			
		||||
  `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('67: should render a simple gitgraph overlapping commits | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
         commit id:"s1"
 | 
			
		||||
         commit id:"s2"
 | 
			
		||||
         branch branch1
 | 
			
		||||
         commit id:"s3"
 | 
			
		||||
         commit id:"s4"
 | 
			
		||||
         checkout main
 | 
			
		||||
         commit id:"s5"
 | 
			
		||||
         checkout branch1
 | 
			
		||||
         commit id:"s6"
 | 
			
		||||
         commit id:"s7"
 | 
			
		||||
         merge main
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('68: should render a simple gitgraph with two branches from same commit | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
        commit id:"1-abcdefg"
 | 
			
		||||
        commit id:"2-abcdefg"
 | 
			
		||||
        branch feature-001
 | 
			
		||||
        commit id:"3-abcdefg"
 | 
			
		||||
        commit id:"4-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        branch feature-002
 | 
			
		||||
        commit id:"5-abcdefg"
 | 
			
		||||
        checkout feature-001
 | 
			
		||||
        merge feature-002
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('69: should render GitGraph with branch that is not used immediately | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
        commit id:"1-abcdefg"
 | 
			
		||||
        branch x
 | 
			
		||||
        checkout main
 | 
			
		||||
        commit id:"2-abcdefg"
 | 
			
		||||
        checkout x
 | 
			
		||||
        commit id:"3-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge x
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('70: should render GitGraph with branch and sub-branch neither of which used immediately | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
        commit id:"1-abcdefg"
 | 
			
		||||
        branch x
 | 
			
		||||
        checkout main
 | 
			
		||||
        commit id:"2-abcdefg"
 | 
			
		||||
        checkout x
 | 
			
		||||
        commit id:"3-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        merge x
 | 
			
		||||
        checkout x
 | 
			
		||||
        branch y
 | 
			
		||||
        checkout x
 | 
			
		||||
        commit id:"4-abcdefg"
 | 
			
		||||
        checkout y
 | 
			
		||||
        commit id:"5-abcdefg"
 | 
			
		||||
        checkout x
 | 
			
		||||
        merge y
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('71: should render GitGraph with parallel commits | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
        commit id:"1-abcdefg"
 | 
			
		||||
        commit id:"2-abcdefg"
 | 
			
		||||
        branch develop
 | 
			
		||||
        commit id:"3-abcdefg"
 | 
			
		||||
        commit id:"4-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        branch feature
 | 
			
		||||
        commit id:"5-abcdefg"
 | 
			
		||||
        commit id:"6-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        commit id:"7-abcdefg"
 | 
			
		||||
        commit id:"8-abcdefg"
 | 
			
		||||
        `,
 | 
			
		||||
        { gitGraph: { parallelCommits: true } }
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('72: should render GitGraph with unconnected branches and parallel commits | Vertical Branch - Bottom-to-top', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph BT:
 | 
			
		||||
        branch dev
 | 
			
		||||
        branch v2
 | 
			
		||||
        branch feat
 | 
			
		||||
        commit id:"1-abcdefg"
 | 
			
		||||
        commit id:"2-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        commit id:"3-abcdefg"
 | 
			
		||||
        checkout dev
 | 
			
		||||
        commit id:"4-abcdefg"
 | 
			
		||||
        checkout v2
 | 
			
		||||
        commit id:"5-abcdefg"
 | 
			
		||||
        checkout main
 | 
			
		||||
        commit id:"6-abcdefg"
 | 
			
		||||
        `,
 | 
			
		||||
        { gitGraph: { parallelCommits: true } }
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('73: should render a simple gitgraph with three branches and tagged merge commit using switch instead of checkout', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `gitGraph
 | 
			
		||||
         commit id: "1"
 | 
			
		||||
         commit id: "2"
 | 
			
		||||
         branch nice_feature
 | 
			
		||||
         switch nice_feature
 | 
			
		||||
         commit id: "3"
 | 
			
		||||
         switch main
 | 
			
		||||
         commit id: "4"
 | 
			
		||||
         switch nice_feature
 | 
			
		||||
         branch very_nice_feature
 | 
			
		||||
         switch very_nice_feature
 | 
			
		||||
         commit id: "5"
 | 
			
		||||
         switch main
 | 
			
		||||
         commit id: "6"
 | 
			
		||||
         switch nice_feature
 | 
			
		||||
         commit id: "7"
 | 
			
		||||
         switch main
 | 
			
		||||
         merge nice_feature id: "12345" tag: "my merge commit"
 | 
			
		||||
         switch very_nice_feature
 | 
			
		||||
         commit id: "8"
 | 
			
		||||
         switch main
 | 
			
		||||
         commit id: "9"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('74: should render commits for more than 8 branches using switch instead of checkout', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
        gitGraph
 | 
			
		||||
        switch main
 | 
			
		||||
        %% Make sure to manually set the ID of all commits, for consistent visual tests
 | 
			
		||||
        commit id: "1-abcdefg"
 | 
			
		||||
        switch main
 | 
			
		||||
        branch branch1
 | 
			
		||||
        commit id: "2-abcdefg"
 | 
			
		||||
        switch main
 | 
			
		||||
        merge branch1
 | 
			
		||||
        branch branch2
 | 
			
		||||
        commit id: "3-abcdefg"
 | 
			
		||||
        switch main
 | 
			
		||||
        merge branch2
 | 
			
		||||
        branch branch3
 | 
			
		||||
        commit id: "4-abcdefg"
 | 
			
		||||
        switch main
 | 
			
		||||
        merge branch3
 | 
			
		||||
        branch branch4
 | 
			
		||||
        commit id: "5-abcdefg"
 | 
			
		||||
        switch main
 | 
			
		||||
        merge branch4
 | 
			
		||||
        branch branch5
 | 
			
		||||
        commit id: "6-abcdefg"
 | 
			
		||||
        switch main
 | 
			
		||||
        merge branch5
 | 
			
		||||
        branch branch6
 | 
			
		||||
        commit id: "7-abcdefg"
 | 
			
		||||
        switch main
 | 
			
		||||
        merge branch6
 | 
			
		||||
        branch branch7
 | 
			
		||||
        commit id: "8-abcdefg"
 | 
			
		||||
        switch main
 | 
			
		||||
        merge branch7
 | 
			
		||||
        branch branch8
 | 
			
		||||
        commit id: "9-abcdefg"
 | 
			
		||||
        switch main
 | 
			
		||||
        merge branch8
 | 
			
		||||
        branch branch9
 | 
			
		||||
        commit id: "10-abcdefg"
 | 
			
		||||
        `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts';
 | 
			
		||||
import { imgSnapshotTest } from '../../helpers/util.ts';
 | 
			
		||||
 | 
			
		||||
describe('Quadrant Chart', () => {
 | 
			
		||||
  it('should render if only chart type is provided', () => {
 | 
			
		||||
@@ -8,7 +8,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a complete quadrant chart', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -30,7 +29,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render without points', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -46,7 +44,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should able to render y-axix on right side', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -63,7 +60,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should able to render x-axix on bottom', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -80,7 +76,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should able to render x-axix on bottom and y-axis on right', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -97,7 +92,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render without title', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -112,7 +106,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should use all the config', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -135,7 +128,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should use all the theme variable', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -158,7 +150,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render x-axis labels in the center, if x-axis has two labels', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -180,7 +171,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render y-axis labels in the center, if y-axis has two labels', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -202,7 +192,6 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render both axes labels on the left and bottom, if both axes have only one label', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -224,6 +213,52 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('it should render data points with styles', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
  quadrantChart
 | 
			
		||||
    title Reach and engagement of campaigns
 | 
			
		||||
    x-axis Reach -->
 | 
			
		||||
    y-axis Engagement -->
 | 
			
		||||
    quadrant-1 We should expand
 | 
			
		||||
    quadrant-2 Need to promote
 | 
			
		||||
    quadrant-3 Re-evaluate
 | 
			
		||||
    quadrant-4 May be improved
 | 
			
		||||
    Campaign A: [0.3, 0.6] radius: 20
 | 
			
		||||
    Campaign B: [0.45, 0.23]     color: #ff0000  
 | 
			
		||||
    Campaign C: [0.57, 0.69]  stroke-color: #ff00ff  
 | 
			
		||||
    Campaign D: [0.78, 0.34]        stroke-width: 3px    
 | 
			
		||||
    Campaign E: [0.40, 0.34] radius: 20,   color: #ff0000  , stroke-color  : #ff00ff,     stroke-width    :   3px   
 | 
			
		||||
    Campaign F: [0.35, 0.78] stroke-width: 3px , color: #ff0000, radius: 20, stroke-color:     #ff00ff
 | 
			
		||||
    Campaign G: [0.22, 0.22] stroke-width: 3px  , color: #309708  ,  radius  : 20  ,  stroke-color:    #5060ff
 | 
			
		||||
    Campaign H: [0.22, 0.44]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('it should render data points with styles + classes', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
  quadrantChart
 | 
			
		||||
    title Reach and engagement of campaigns
 | 
			
		||||
    x-axis Reach -->
 | 
			
		||||
    y-axis Engagement -->
 | 
			
		||||
    quadrant-1 We should expand
 | 
			
		||||
    quadrant-2 Need to promote
 | 
			
		||||
    quadrant-3 Re-evaluate
 | 
			
		||||
    quadrant-4 May be improved
 | 
			
		||||
    Campaign A:::class1: [0.3, 0.6] radius: 20
 | 
			
		||||
    Campaign B: [0.45, 0.23] color: #ff0000
 | 
			
		||||
    Campaign C: [0.57, 0.69] stroke-color: #ff00ff
 | 
			
		||||
    Campaign D:::class2: [0.78, 0.34] stroke-width: 3px
 | 
			
		||||
    Campaign E:::class2: [0.40, 0.34] radius: 20, color: #ff0000, stroke-color: #ff00ff, stroke-width: 3px
 | 
			
		||||
    Campaign F:::class1: [0.35, 0.78]
 | 
			
		||||
    classDef class1 color: #908342, radius : 10, stroke-color: #310085, stroke-width: 10px
 | 
			
		||||
    classDef class2 color: #f00fff, radius : 10
 | 
			
		||||
    `
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -44,6 +44,5 @@ describe('Requirement diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,6 @@
 | 
			
		||||
/// <reference types="Cypress" />
 | 
			
		||||
 | 
			
		||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts';
 | 
			
		||||
 | 
			
		||||
context('Sequence diagram', () => {
 | 
			
		||||
describe('Sequence diagram', () => {
 | 
			
		||||
  it('should render a sequence diagram with boxes', () => {
 | 
			
		||||
    renderGraph(
 | 
			
		||||
      `
 | 
			
		||||
@@ -68,6 +66,19 @@ context('Sequence diagram', () => {
 | 
			
		||||
      { sequence: { actorFontFamily: 'courier' } }
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('should render bidirectional arrows', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      sequenceDiagram
 | 
			
		||||
      Alice<<->>John: Hello John, how are you?
 | 
			
		||||
      Alice<<-->>John: Hi Alice, I can hear you!
 | 
			
		||||
      John<<->>Alice: This also works the other way
 | 
			
		||||
      John<<-->>Alice: Yes
 | 
			
		||||
      Alice->John: Test
 | 
			
		||||
      John->>Alice: Still works
 | 
			
		||||
      `
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('should handle different line breaks', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
@@ -231,7 +242,7 @@ context('Sequence diagram', () => {
 | 
			
		||||
      `
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  context('font settings', () => {
 | 
			
		||||
  describe('font settings', () => {
 | 
			
		||||
    it('should render different note fonts when configured', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
@@ -328,7 +339,7 @@ context('Sequence diagram', () => {
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  context('auth width scaling', () => {
 | 
			
		||||
  describe('auth width scaling', () => {
 | 
			
		||||
    it('should render long actor descriptions', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
@@ -375,7 +386,7 @@ context('Sequence diagram', () => {
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('should have actor-top and actor-bottom classes on top and bottom actor box and symbol', () => {
 | 
			
		||||
    it('should have actor-top and actor-bottom classes on top and bottom actor box and symbol and actor-box and actor-man classes for text tags', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
        sequenceDiagram
 | 
			
		||||
@@ -394,6 +405,9 @@ context('Sequence diagram', () => {
 | 
			
		||||
      cy.get('.actor-man').should('have.class', 'actor-bottom');
 | 
			
		||||
      cy.get('.actor.actor-bottom').should('not.have.class', 'actor-top');
 | 
			
		||||
      cy.get('.actor-man.actor-bottom').should('not.have.class', 'actor-top');
 | 
			
		||||
 | 
			
		||||
      cy.get('text.actor-box').should('include.text', 'Alice');
 | 
			
		||||
      cy.get('text.actor-man').should('include.text', 'Bob');
 | 
			
		||||
    });
 | 
			
		||||
    it('should render long notes left of actor', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
@@ -461,6 +475,18 @@ context('Sequence diagram', () => {
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('should render notes over actors and participant', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
        sequenceDiagram
 | 
			
		||||
        actor Alice
 | 
			
		||||
        participant Charlie
 | 
			
		||||
        note over Alice: some note
 | 
			
		||||
        note over Charlie: other note
 | 
			
		||||
      `,
 | 
			
		||||
        {}
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('should render long messages from an actor to the left to one to the right', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
@@ -502,7 +528,7 @@ context('Sequence diagram', () => {
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  context('background rects', () => {
 | 
			
		||||
  describe('background rects', () => {
 | 
			
		||||
    it('should render a single and nested rects', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
@@ -782,7 +808,7 @@ context('Sequence diagram', () => {
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  context('directives', () => {
 | 
			
		||||
  describe('directives', () => {
 | 
			
		||||
    it('should override config with directive settings', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
@@ -807,11 +833,14 @@ context('Sequence diagram', () => {
 | 
			
		||||
        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' } }
 | 
			
		||||
        {
 | 
			
		||||
          logLevel: 0,
 | 
			
		||||
          sequence: { mirrorActors: true, noteFontSize: 18, noteFontFamily: 'Arial' },
 | 
			
		||||
        }
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  context('links', () => {
 | 
			
		||||
  describe('links', () => {
 | 
			
		||||
    it('should support actor links', () => {
 | 
			
		||||
      renderGraph(
 | 
			
		||||
        `
 | 
			
		||||
@@ -827,7 +856,7 @@ context('Sequence diagram', () => {
 | 
			
		||||
      );
 | 
			
		||||
      cy.get('#actor0_popup').should((popupMenu) => {
 | 
			
		||||
        const style = popupMenu.attr('style');
 | 
			
		||||
        expect(style).to.undefined;
 | 
			
		||||
        // expect(style).to.undefined;
 | 
			
		||||
      });
 | 
			
		||||
      cy.get('#root-0').click();
 | 
			
		||||
      cy.get('#actor0_popup').should((popupMenu) => {
 | 
			
		||||
@@ -858,7 +887,10 @@ context('Sequence diagram', () => {
 | 
			
		||||
        a->>j: Hello John, how are you?
 | 
			
		||||
        j-->>a: Great!
 | 
			
		||||
      `,
 | 
			
		||||
        { logLevel: 0, sequence: { mirrorActors: true, noteFontSize: 18, noteFontFamily: 'Arial' } }
 | 
			
		||||
        {
 | 
			
		||||
          logLevel: 0,
 | 
			
		||||
          sequence: { mirrorActors: true, noteFontSize: 18, noteFontFamily: 'Arial' },
 | 
			
		||||
        }
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it('should support actor links and properties when not mirrored EXPERIMENTAL: USE WITH CAUTION', () => {
 | 
			
		||||
@@ -899,7 +931,7 @@ context('Sequence diagram', () => {
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  context('svg size', () => {
 | 
			
		||||
  describe('svg size', () => {
 | 
			
		||||
    it('should render a sequence diagram when useMaxWidth is true (default)', () => {
 | 
			
		||||
      renderGraph(
 | 
			
		||||
        `
 | 
			
		||||
@@ -978,7 +1010,7 @@ context('Sequence diagram', () => {
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  context('render after error', () => {
 | 
			
		||||
  describe('render after error', () => {
 | 
			
		||||
    it('should render diagram after fixing destroy participant error', () => {
 | 
			
		||||
      cy.on('uncaught:exception', (err) => {
 | 
			
		||||
        return false;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 1, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a simple state diagrams', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -20,7 +19,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a long descriptions instead of id when available', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -32,7 +30,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a long descriptions with additional descriptions', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -44,7 +41,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a single state with short descriptions', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -55,7 +51,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a transition descriptions with new lines', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -69,7 +64,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a state with a note', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -83,7 +77,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a state with on the left side when so specified', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -97,7 +90,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a state with a note together with another state', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -113,7 +105,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a note with multiple lines in it', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -156,7 +147,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a simple state diagrams 2', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -169,7 +159,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a simple state diagrams with labels', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -185,7 +174,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render state descriptions', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -198,7 +186,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render composite states', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -217,7 +204,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render multiple composite states', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -287,7 +273,6 @@ describe('State diagram', () => {
 | 
			
		||||
    `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render concurrency states', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -311,7 +296,6 @@ describe('State diagram', () => {
 | 
			
		||||
    `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('v2 should render a state with states in it', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -558,6 +542,43 @@ stateDiagram-v2
 | 
			
		||||
        { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it(' can have styles applied ', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
stateDiagram-v2
 | 
			
		||||
AState
 | 
			
		||||
style AState fill:#636,border:1px solid red,color:white;
 | 
			
		||||
        `,
 | 
			
		||||
        { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it(' should let styles take preceedence over classes', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
stateDiagram-v2
 | 
			
		||||
AState: Should NOT be white
 | 
			
		||||
BState
 | 
			
		||||
classDef exampleStyleClass fill:#fff,color: blue;
 | 
			
		||||
class AState,BState exampleStyleClass
 | 
			
		||||
style AState fill:#636,border:1px solid red,color:white;
 | 
			
		||||
        `,
 | 
			
		||||
        { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
    it(' should allow styles to take effect in stubgraphs', () => {
 | 
			
		||||
      imgSnapshotTest(
 | 
			
		||||
        `
 | 
			
		||||
  stateDiagram
 | 
			
		||||
    state roundWithTitle {
 | 
			
		||||
      C: Black with white text
 | 
			
		||||
    }
 | 
			
		||||
    D: Black with white text
 | 
			
		||||
 | 
			
		||||
    style C,D stroke:#00f, fill:black, color:white
 | 
			
		||||
        `,
 | 
			
		||||
        { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  it('1433: should render a simple state diagram with a title', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a long descriptions instead of id when available', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -22,7 +21,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a long descriptions with additional descriptions', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -34,7 +32,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a single state with short descriptions', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -45,7 +42,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a transition descriptions with new lines', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -59,7 +55,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a state with a note', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -73,7 +68,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a state with on the left side when so specified', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -87,7 +81,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a state with a note together with another state', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -103,7 +96,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a note with multiple lines in it', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -146,7 +138,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a simple state diagrams 2', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -159,7 +150,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a simple state diagrams with labels', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -175,7 +165,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render state descriptions', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -188,7 +177,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render composite states', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -207,7 +195,6 @@ describe('State diagram', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render multiple composit states', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -277,7 +264,6 @@ describe('State diagram', () => {
 | 
			
		||||
    `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render concurrency states', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -301,7 +287,6 @@ describe('State diagram', () => {
 | 
			
		||||
    `,
 | 
			
		||||
      { logLevel: 0, fontFamily: 'courier' }
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render a state with states in it', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,6 @@ describe('themeCSS balancing, it', () => {
 | 
			
		||||
          `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should not allow unbalanced CSS definitions 2', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -21,7 +20,6 @@ describe('themeCSS balancing, it', () => {
 | 
			
		||||
          `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@@ -45,7 +43,6 @@ describe('Pie Chart', () => {
 | 
			
		||||
          `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
      it('should render a flowchart diagram', () => {
 | 
			
		||||
        imgSnapshotTest(
 | 
			
		||||
@@ -70,7 +67,6 @@ describe('Pie Chart', () => {
 | 
			
		||||
          `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
      it('should render a new flowchart diagram', () => {
 | 
			
		||||
        imgSnapshotTest(
 | 
			
		||||
@@ -96,7 +92,6 @@ describe('Pie Chart', () => {
 | 
			
		||||
          `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
      it('should render a sequence diagram', () => {
 | 
			
		||||
        imgSnapshotTest(
 | 
			
		||||
@@ -125,7 +120,6 @@ describe('Pie Chart', () => {
 | 
			
		||||
          `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      it('should render a class diagram', () => {
 | 
			
		||||
@@ -175,7 +169,6 @@ describe('Pie Chart', () => {
 | 
			
		||||
          `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
      it('should render a state diagram', () => {
 | 
			
		||||
        imgSnapshotTest(
 | 
			
		||||
@@ -210,7 +203,6 @@ stateDiagram
 | 
			
		||||
          `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
      it('should render a state diagram (v2)', () => {
 | 
			
		||||
        imgSnapshotTest(
 | 
			
		||||
@@ -245,7 +237,6 @@ stateDiagram-v2
 | 
			
		||||
          `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
      it('should render a er diagram', () => {
 | 
			
		||||
        imgSnapshotTest(
 | 
			
		||||
@@ -266,7 +257,6 @@ erDiagram
 | 
			
		||||
          `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
      it('should render a user journey diagram', () => {
 | 
			
		||||
        imgSnapshotTest(
 | 
			
		||||
@@ -287,7 +277,6 @@ erDiagram
 | 
			
		||||
                        `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
      it('should render a gantt diagram', () => {
 | 
			
		||||
        cy.clock(new Date('2014-01-06').getTime());
 | 
			
		||||
@@ -326,7 +315,6 @@ erDiagram
 | 
			
		||||
       `,
 | 
			
		||||
          { theme }
 | 
			
		||||
        );
 | 
			
		||||
        cy.get('svg');
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Should render a complete chart', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -35,7 +34,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('y-axis title not required', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -48,7 +46,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Should render a chart without y-axis with different range', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -60,7 +57,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('x axis title not required', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -72,7 +68,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Multiple plots can be rendered', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -87,7 +82,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Decimals and negative numbers are supported', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -98,7 +92,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render spark line with "plotReservedSpacePercent"', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -116,7 +109,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render spark bar without displaying other property', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -143,7 +135,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Should use all the config from directive', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -158,7 +149,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Should use all the config from yaml', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -199,7 +189,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render with show axis title false', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -221,7 +210,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render with show axis label false', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -243,7 +231,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render with show axis tick false', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -265,7 +252,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render with show axis line false', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -287,7 +273,6 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render all the theme color', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
@@ -317,6 +302,17 @@ describe('XY Chart', () => {
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('should use the correct distances between data points', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        x-axis 0 --> 2
 | 
			
		||||
        line [0, 1, 0, 1]
 | 
			
		||||
        bar [1, 0, 1, 0]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css"
 | 
			
		||||
@@ -33,7 +33,9 @@
 | 
			
		||||
        background-image: radial-gradient(#fff 1%, transparent 11%),
 | 
			
		||||
          radial-gradient(#fff 1%, transparent 11%);
 | 
			
		||||
        background-size: 20px 20px;
 | 
			
		||||
        background-position: 0 0, 10px 10px;
 | 
			
		||||
        background-position:
 | 
			
		||||
          0 0,
 | 
			
		||||
          10px 10px;
 | 
			
		||||
        background-repeat: repeat;
 | 
			
		||||
      }
 | 
			
		||||
      .malware {
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ 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')) {
 | 
			
		||||
if (/test-html-escaping/.exec(location.href)) {
 | 
			
		||||
  code = code3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="UTF-8" />
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										866
									
								
								cypress/platform/flowchart-refactor.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										866
									
								
								cypress/platform/flowchart-refactor.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,866 @@
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
 | 
			
		||||
    <link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
 | 
			
		||||
    <link
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link rel="preconnect" href="https://fonts.googleapis.com" />
 | 
			
		||||
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css2?family=Caveat:wght@400..700&family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
 | 
			
		||||
    <style>
 | 
			
		||||
      body {
 | 
			
		||||
        font-family: 'Arial';
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      table {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        border-collapse: collapse;
 | 
			
		||||
        table-layout: fixed;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      th,
 | 
			
		||||
      td {
 | 
			
		||||
        border: 1px solid black;
 | 
			
		||||
        padding: 10px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        vertical-align: middle;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .separator {
 | 
			
		||||
        height: 20px;
 | 
			
		||||
        background-color: #f0f0f0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .vertical-header {
 | 
			
		||||
        text-align: center;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .collapsible {
 | 
			
		||||
        background-color: #f9f9f9;
 | 
			
		||||
        color: #444;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
        padding: 18px;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        border: none;
 | 
			
		||||
        text-align: left;
 | 
			
		||||
        outline: none;
 | 
			
		||||
        font-size: 15px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .active,
 | 
			
		||||
      .collapsible:hover {
 | 
			
		||||
        background-color: #ccc;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .collapsible:after {
 | 
			
		||||
        content: '\002B';
 | 
			
		||||
        color: #777;
 | 
			
		||||
        font-weight: bold;
 | 
			
		||||
        float: right;
 | 
			
		||||
        margin-left: 2px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .active:after {
 | 
			
		||||
        content: '\2212';
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .content {
 | 
			
		||||
        padding: 0 5px;
 | 
			
		||||
        max-height: 0;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        transition: max-height 0.2s ease-out;
 | 
			
		||||
        background-color: #f1f1f1;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .content .pre-scrollable {
 | 
			
		||||
        max-height: 200px;
 | 
			
		||||
        overflow-y: scroll;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
  </head>
 | 
			
		||||
 | 
			
		||||
  <body>
 | 
			
		||||
    <table>
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th></th>
 | 
			
		||||
        <!-- Placeholder for the top left corner -->
 | 
			
		||||
        <th>Dagre</th>
 | 
			
		||||
        <th>Dagre with rough</th>
 | 
			
		||||
        <th>ELK</th>
 | 
			
		||||
        <th>ELK with rough</th>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Stadium shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart LR
 | 
			
		||||
              id1([This is the text in the box])
 | 
			
		||||
            </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram1" class="mermaid">
 | 
			
		||||
flowchart LR
 | 
			
		||||
    id1([This is the text in the box])
 | 
			
		||||
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram2" class="mermaid">
 | 
			
		||||
%%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
flowchart LR
 | 
			
		||||
    id1([This is the text in the box])
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram3" class="mermaid">
 | 
			
		||||
%%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
flowchart LR
 | 
			
		||||
    id1([This is the text in the box])
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram4" class="mermaid">
 | 
			
		||||
%%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
flowchart LR
 | 
			
		||||
    id1([This is the text in the box])
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Sub-Routine shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
      flowchart LR
 | 
			
		||||
    id1[[This is the text in the box]]
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram5" class="mermaid">
 | 
			
		||||
flowchart LR
 | 
			
		||||
    id1[[This is the text in the box]]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram6" class="mermaid">
 | 
			
		||||
%%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
flowchart LR
 | 
			
		||||
    id1[[This is the text in the box]]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram7" class="mermaid">
 | 
			
		||||
%%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
flowchart LR
 | 
			
		||||
    id1[[This is the text in the box]]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram8" class="mermaid">
 | 
			
		||||
%%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
flowchart LR
 | 
			
		||||
    id1[[This is the text in the box]]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Cylindrical shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart LR
 | 
			
		||||
    id1[(Database)]
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram9" class="mermaid">
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1[(Database)]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram10" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1[(Database)]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram11" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1[(Database)]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram12" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1[(Database)]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Circle shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart LR
 | 
			
		||||
    id1((This is the text in the circle))
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram13" class="mermaid">
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1((This is the text in the circle))
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram14" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1((This is the text in the circle))
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram15" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1((This is the text in the circle))
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram16" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1((This is the text in the circle))
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Double Circle shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart TD
 | 
			
		||||
    id1(((This is the text in the circle)))
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram17" class="mermaid">
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1(((This is the text in the circle)))
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram18" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1(((This is the text in the circle)))
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram19" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1(((This is the text in the circle)))
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram20" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1(((This is the text in the circle)))
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Asymmetric shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart LR
 | 
			
		||||
    id1>This is the text in the box]
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram21" class="mermaid">
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1>This is the text in the box]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram22" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1>This is the text in the box]  
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram23" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1>This is the text in the box]  
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram24" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1>This is the text in the box]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Rhombus/Diamond/Question shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart LR
 | 
			
		||||
    id1{This is the text in the box}
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram25" class="mermaid">
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1{This is the text in the box}
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram26" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1{This is the text in the box}
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram27" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1{This is the text in the box}
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram28" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1{This is the text in the box}
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Hexagon shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart LR
 | 
			
		||||
    id1{{This is the text in the box}}
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram29" class="mermaid">
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1{{This is the text in the box}}
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram31" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1{{This is the text in the box}}
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram32" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1{{This is the text in the box}}
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Parallelogram shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart TD
 | 
			
		||||
    id1[/This is the text in the box/]
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram33" class="mermaid">
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1[/This is the text in the box/]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram34" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1[/This is the text in the box/]  
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram35" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1[/This is the text in the box/] 
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram36" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1[/This is the text in the box/]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Parallelogram Alt shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart TD
 | 
			
		||||
    id1[\This is the text in the box\]
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram37" class="mermaid">
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1[\This is the text in the box\]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram38" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1[\This is the text in the box\]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram39" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1[\This is the text in the box\]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram40" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    id1[\This is the text in the box\]
 | 
			
		||||
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Trapezoid shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart TD
 | 
			
		||||
    A[/Christmas\]
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram41" class="mermaid">
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    A[/Christmas\]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram42" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    A[/Christmas\]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram43" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    A[/Christmas\]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram44" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    A[/Christmas\]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Trapezoid Alt shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart TD
 | 
			
		||||
    A[\Christmas/]
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram45" class="mermaid">
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    A[\Christmas/]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram46" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    A[\Christmas/]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram47" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    A[\Christmas/]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram48" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart TD
 | 
			
		||||
    A[\Christmas/]  
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Rect with rounded corner</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart LR
 | 
			
		||||
    id1(This is the text in the box)
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram49" class="mermaid">
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1(This is the text in the box)
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram50" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1(This is the text in the box)
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram51" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1(This is the text in the box)
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram52" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1(This is the text in the box) 
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Rect with sharp corner</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
              flowchart LR
 | 
			
		||||
    id1[This is the text in the box]
 | 
			
		||||
    </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram53" class="mermaid">
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1[This is the text in the box]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram54" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1[This is the text in the box]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram55" class="mermaid">
 | 
			
		||||
          %%{init: {"handdrawn": false, "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1[This is the text in the box]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram56" class="mermaid">
 | 
			
		||||
          %%{init: {"look": "handdrawn", "layout": "elk"} }%%
 | 
			
		||||
          flowchart LR
 | 
			
		||||
    id1[This is the text in the box]
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <!-- Separator row -->
 | 
			
		||||
      <tr class="separator">
 | 
			
		||||
        <td colspan="5"></td>
 | 
			
		||||
        <!-- This cell spans all columns including the vertical header -->
 | 
			
		||||
      </tr>
 | 
			
		||||
    </table>
 | 
			
		||||
 | 
			
		||||
    <script type="module">
 | 
			
		||||
      import mermaid from './mermaid.esm.mjs';
 | 
			
		||||
      import { layouts } from './mermaid-layout-elk.esm.mjs';
 | 
			
		||||
      mermaid.registerLayoutLoaders(layouts);
 | 
			
		||||
      mermaid.parseError = function (err, hash) {};
 | 
			
		||||
 | 
			
		||||
      mermaid.initialize({
 | 
			
		||||
        handdrawn: false,
 | 
			
		||||
        mergeEdges: true,
 | 
			
		||||
        layout: 'dagre',
 | 
			
		||||
        flowchart: { titleTopMargin: 10 },
 | 
			
		||||
        // fontFamily: 'Caveat',
 | 
			
		||||
        fontFamily: 'Kalam',
 | 
			
		||||
        sequence: {
 | 
			
		||||
          actorFontFamily: 'courier',
 | 
			
		||||
          noteFontFamily: 'courier',
 | 
			
		||||
          messageFontFamily: 'courier',
 | 
			
		||||
        },
 | 
			
		||||
        fontSize: 16,
 | 
			
		||||
        logLevel: 0,
 | 
			
		||||
      });
 | 
			
		||||
      function callback() {
 | 
			
		||||
        alert('It worked');
 | 
			
		||||
      }
 | 
			
		||||
      mermaid.parseError = function (err, hash) {
 | 
			
		||||
        console.error('In parse error:');
 | 
			
		||||
        console.error(err);
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      let coll = document.getElementsByClassName('collapsible');
 | 
			
		||||
      for (const element of coll) {
 | 
			
		||||
        element.addEventListener('click', function () {
 | 
			
		||||
          this.classList.toggle('active');
 | 
			
		||||
          let content = this.nextElementSibling;
 | 
			
		||||
          if (content.style.maxHeight) {
 | 
			
		||||
            content.style.maxHeight = null;
 | 
			
		||||
          } else {
 | 
			
		||||
            content.style.maxHeight = content.scrollHeight + 'px';
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										191
									
								
								cypress/platform/flowchart-sate.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										191
									
								
								cypress/platform/flowchart-sate.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,191 @@
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
 | 
			
		||||
    <link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
 | 
			
		||||
    <link
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link rel="preconnect" href="https://fonts.googleapis.com" />
 | 
			
		||||
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css2?family=Caveat:wght@400..700&family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
 | 
			
		||||
    <style>
 | 
			
		||||
      body {
 | 
			
		||||
        font-family: 'Arial';
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      table {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        border-collapse: collapse;
 | 
			
		||||
        table-layout: fixed;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      th,
 | 
			
		||||
      td {
 | 
			
		||||
        border: 1px solid black;
 | 
			
		||||
        padding: 10px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        vertical-align: middle;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .separator {
 | 
			
		||||
        height: 20px;
 | 
			
		||||
        background-color: #f0f0f0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .vertical-header {
 | 
			
		||||
        text-align: center;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .collapsible {
 | 
			
		||||
        background-color: #f9f9f9;
 | 
			
		||||
        color: #444;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
        padding: 18px;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        border: none;
 | 
			
		||||
        text-align: left;
 | 
			
		||||
        outline: none;
 | 
			
		||||
        font-size: 15px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .active,
 | 
			
		||||
      .collapsible:hover {
 | 
			
		||||
        background-color: #ccc;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .collapsible:after {
 | 
			
		||||
        content: '\002B';
 | 
			
		||||
        color: #777;
 | 
			
		||||
        font-weight: bold;
 | 
			
		||||
        float: right;
 | 
			
		||||
        margin-left: 2px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .active:after {
 | 
			
		||||
        content: '\2212';
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .content {
 | 
			
		||||
        padding: 0 5px;
 | 
			
		||||
        max-height: 0;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        transition: max-height 0.2s ease-out;
 | 
			
		||||
        background-color: #f1f1f1;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .content .pre-scrollable {
 | 
			
		||||
        max-height: 200px;
 | 
			
		||||
        overflow-y: scroll;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
  </head>
 | 
			
		||||
 | 
			
		||||
  <body>
 | 
			
		||||
    <table>
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th></th>
 | 
			
		||||
        <!-- Placeholder for the top left corner -->
 | 
			
		||||
        <th>State rough</th>
 | 
			
		||||
        <th>Flowchart rough</th>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <tr>
 | 
			
		||||
        <th class="vertical-header">
 | 
			
		||||
          <button class="collapsible">Stadium shape</button>
 | 
			
		||||
          <div class="content">
 | 
			
		||||
            <div class="pre-scrollable">
 | 
			
		||||
              <pre>
 | 
			
		||||
      flowchart LR
 | 
			
		||||
    id1([This is the text in the box])
 | 
			
		||||
 | 
			
		||||
  </pre
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram1" class="mermaid">
 | 
			
		||||
%%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
stateDiagram-v2
 | 
			
		||||
    stateA
 | 
			
		||||
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
          <pre id="diagram2" class="mermaid">
 | 
			
		||||
%%{init: {"look": "handdrawn"} }%%
 | 
			
		||||
flowchart LR
 | 
			
		||||
    id1[[This is the text in the box]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      </pre
 | 
			
		||||
          >
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
    </table>
 | 
			
		||||
 | 
			
		||||
    <script type="module">
 | 
			
		||||
      import mermaid from './mermaid.esm.mjs';
 | 
			
		||||
      import { layouts } from './mermaid-layout-elk.esm.mjs';
 | 
			
		||||
      mermaid.registerLayoutLoaders(layouts);
 | 
			
		||||
      mermaid.parseError = function (err, hash) {};
 | 
			
		||||
 | 
			
		||||
      mermaid.initialize({
 | 
			
		||||
        handdrawn: false,
 | 
			
		||||
        mergeEdges: true,
 | 
			
		||||
        layout: 'dagre',
 | 
			
		||||
        flowchart: { titleTopMargin: 10 },
 | 
			
		||||
        // fontFamily: 'Caveat',
 | 
			
		||||
        fontFamily: 'Kalam',
 | 
			
		||||
        sequence: {
 | 
			
		||||
          actorFontFamily: 'courier',
 | 
			
		||||
          noteFontFamily: 'courier',
 | 
			
		||||
          messageFontFamily: 'courier',
 | 
			
		||||
        },
 | 
			
		||||
        fontSize: 16,
 | 
			
		||||
        logLevel: 0,
 | 
			
		||||
      });
 | 
			
		||||
      function callback() {
 | 
			
		||||
        alert('It worked');
 | 
			
		||||
      }
 | 
			
		||||
      mermaid.parseError = function (err, hash) {
 | 
			
		||||
        console.error('In parse error:');
 | 
			
		||||
        console.error(err);
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      let coll = document.getElementsByClassName('collapsible');
 | 
			
		||||
      for (const element of coll) {
 | 
			
		||||
        element.addEventListener('click', function () {
 | 
			
		||||
          this.classList.toggle('active');
 | 
			
		||||
          let content = this.nextElementSibling;
 | 
			
		||||
          if (content.style.maxHeight) {
 | 
			
		||||
            content.style.maxHeight = null;
 | 
			
		||||
          } else {
 | 
			
		||||
            content.style.maxHeight = content.scrollHeight + 'px';
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										433
									
								
								cypress/platform/knsv-4442.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										433
									
								
								cypress/platform/knsv-4442.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,433 @@
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
 | 
			
		||||
    <link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
 | 
			
		||||
    <link
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <style>
 | 
			
		||||
      body {
 | 
			
		||||
        /* background: rgb(221, 208, 208); */
 | 
			
		||||
        /* background:#333; */
 | 
			
		||||
        font-family: 'Arial';
 | 
			
		||||
        /* font-size: 18px !important; */
 | 
			
		||||
      }
 | 
			
		||||
      h1 {
 | 
			
		||||
        color: grey;
 | 
			
		||||
      }
 | 
			
		||||
      .mermaid2 {
 | 
			
		||||
        display: none;
 | 
			
		||||
      }
 | 
			
		||||
      .mermaid svg {
 | 
			
		||||
        /* font-size: 18px !important; */
 | 
			
		||||
        background-color: #efefef;
 | 
			
		||||
        background-image: radial-gradient(#fff 51%, transparent 91%),
 | 
			
		||||
          radial-gradient(#fff 51%, transparent 91%);
 | 
			
		||||
        background-size: 20px 20px;
 | 
			
		||||
        background-position:
 | 
			
		||||
          0 0,
 | 
			
		||||
          10px 10px;
 | 
			
		||||
        background-repeat: repeat;
 | 
			
		||||
      }
 | 
			
		||||
      .malware {
 | 
			
		||||
        position: fixed;
 | 
			
		||||
        bottom: 0;
 | 
			
		||||
        left: 0;
 | 
			
		||||
        right: 0;
 | 
			
		||||
        height: 150px;
 | 
			
		||||
        background: red;
 | 
			
		||||
        color: black;
 | 
			
		||||
        display: flex;
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: center;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        font-family: monospace;
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
      /* tspan {
 | 
			
		||||
        font-size: 6px !important;
 | 
			
		||||
      } */
 | 
			
		||||
    </style>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
stateDiagram-v2
 | 
			
		||||
    [*] --> Still
 | 
			
		||||
    Still --> [*]
 | 
			
		||||
    Still --> Moving
 | 
			
		||||
    Moving --> Still
 | 
			
		||||
    Moving --> Crash
 | 
			
		||||
    Crash --> [*]    </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart RL
 | 
			
		||||
    subgraph "`one`"
 | 
			
		||||
      a1 -- l1 --> a2
 | 
			
		||||
      a1 -- l2 --> a2
 | 
			
		||||
    end
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
flowchart RL
 | 
			
		||||
    subgraph "`one`"
 | 
			
		||||
      a1 -- l1 --> a2
 | 
			
		||||
      a1 -- l2 --> a2
 | 
			
		||||
    end
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart
 | 
			
		||||
id["`A root with a long text that wraps to keep the node size in check. A root with a long text that wraps to keep the node size in check`"]</pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart LR
 | 
			
		||||
    A[A text that needs to be wrapped wraps to another line]
 | 
			
		||||
    B[A text that needs to be<br/>wrapped wraps to another line]
 | 
			
		||||
    C["`A text that needs to be wrapped to another line`"]</pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart LR
 | 
			
		||||
    C["`A text
 | 
			
		||||
        that needs
 | 
			
		||||
        to be wrapped
 | 
			
		||||
        in another
 | 
			
		||||
        way`"]
 | 
			
		||||
  </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
      classDiagram-v2
 | 
			
		||||
        note "I love this diagram!\nDo you love it?"
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
    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    </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
mindmap
 | 
			
		||||
root
 | 
			
		||||
  Child3(A node with an icon and with a long text that wraps to keep the node size in check)
 | 
			
		||||
</pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
      %%{init: {"theme": "forest"} }%%
 | 
			
		||||
mindmap
 | 
			
		||||
    id1[**Start2**<br/>end]
 | 
			
		||||
      id2[**Start2**<br />end]
 | 
			
		||||
      %% Another comment
 | 
			
		||||
      id3[**Start2**<br>end] %% Comment
 | 
			
		||||
      id4[**Start2**<br >end<br    >the very end]
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
mindmap
 | 
			
		||||
    id1["`**Start2**
 | 
			
		||||
    second line 😎 with long text that is wrapping to the next line`"]
 | 
			
		||||
      id2["`Child **with bold** text`"]
 | 
			
		||||
      id3["`Children of which some
 | 
			
		||||
      is using *italic type of* text`"]
 | 
			
		||||
      id4[Child]
 | 
			
		||||
      id5["`Child
 | 
			
		||||
      Row
 | 
			
		||||
      and another
 | 
			
		||||
      `"]
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
mindmap
 | 
			
		||||
    id1("`**Root**`"]
 | 
			
		||||
      id2["`A formatted text... with **bold** and *italics*`"]
 | 
			
		||||
      id3[Regular labels works as usual]
 | 
			
		||||
      id4["`Emojis and unicode works too: 🤓
 | 
			
		||||
      शान्तिः سلام  和平 `"]
 | 
			
		||||
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%
 | 
			
		||||
flowchart TB
 | 
			
		||||
  %% I could not figure out how to use double quotes in labels in Mermaid
 | 
			
		||||
  subgraph ibm[IBM Espresso CPU]
 | 
			
		||||
    core0[IBM PowerPC Broadway Core 0]
 | 
			
		||||
    core1[IBM PowerPC Broadway Core 1]
 | 
			
		||||
    core2[IBM PowerPC Broadway Core 2]
 | 
			
		||||
 | 
			
		||||
    rom[16 KB ROM]
 | 
			
		||||
 | 
			
		||||
    core0 --- core2
 | 
			
		||||
 | 
			
		||||
    rom --> core2
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  subgraph amd["`**AMD** Latte GPU`"]
 | 
			
		||||
    mem[Memory & I/O Bridge]
 | 
			
		||||
    dram[DRAM Controller]
 | 
			
		||||
    edram[32 MB EDRAM MEM1]
 | 
			
		||||
    rom[512 B SEEPROM]
 | 
			
		||||
 | 
			
		||||
    sata[SATA IF]
 | 
			
		||||
    exi[EXI]
 | 
			
		||||
 | 
			
		||||
    subgraph gx[GX]
 | 
			
		||||
      sram[3 MB 1T-SRAM]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    radeon[AMD Radeon R7xx GX2]
 | 
			
		||||
 | 
			
		||||
    mem --- gx
 | 
			
		||||
    mem --- radeon
 | 
			
		||||
 | 
			
		||||
    rom --- mem
 | 
			
		||||
 | 
			
		||||
    mem --- sata
 | 
			
		||||
    mem --- exi
 | 
			
		||||
 | 
			
		||||
    dram --- sata
 | 
			
		||||
    dram --- exi
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ddr3[2 GB DDR3 RAM MEM2]
 | 
			
		||||
 | 
			
		||||
  mem --- ddr3
 | 
			
		||||
  dram --- ddr3
 | 
			
		||||
  edram --- ddr3
 | 
			
		||||
 | 
			
		||||
  core1 --- mem
 | 
			
		||||
 | 
			
		||||
  exi --- rtc
 | 
			
		||||
  rtc{{rtc}}
 | 
			
		||||
</pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
%%{init: {"flowchart": {"defaultRenderer": "elk", "htmlLabels": false}} }%%
 | 
			
		||||
flowchart TB
 | 
			
		||||
  %% I could not figure out how to use double quotes in labels in Mermaid
 | 
			
		||||
  subgraph ibm[IBM Espresso CPU]
 | 
			
		||||
    core0[IBM PowerPC Broadway Core 0]
 | 
			
		||||
    core1[IBM PowerPC Broadway Core 1]
 | 
			
		||||
    core2[IBM PowerPC Broadway Core 2]
 | 
			
		||||
 | 
			
		||||
    rom[16 KB ROM]
 | 
			
		||||
 | 
			
		||||
    core0 --- core2
 | 
			
		||||
 | 
			
		||||
    rom --> core2
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  subgraph amd["`**AMD** Latte GPU`"]
 | 
			
		||||
    mem[Memory & I/O Bridge]
 | 
			
		||||
    dram[DRAM Controller]
 | 
			
		||||
    edram[32 MB EDRAM MEM1]
 | 
			
		||||
    rom[512 B SEEPROM]
 | 
			
		||||
 | 
			
		||||
    sata[SATA IF]
 | 
			
		||||
    exi[EXI]
 | 
			
		||||
 | 
			
		||||
    subgraph gx[GX]
 | 
			
		||||
      sram[3 MB 1T-SRAM]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    radeon[AMD Radeon R7xx GX2]
 | 
			
		||||
 | 
			
		||||
    mem --- gx
 | 
			
		||||
    mem --- radeon
 | 
			
		||||
 | 
			
		||||
    rom --- mem
 | 
			
		||||
 | 
			
		||||
    mem --- sata
 | 
			
		||||
    mem --- exi
 | 
			
		||||
 | 
			
		||||
    dram --- sata
 | 
			
		||||
    dram --- exi
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ddr3[2 GB DDR3 RAM MEM2]
 | 
			
		||||
 | 
			
		||||
  mem --- ddr3
 | 
			
		||||
  dram --- ddr3
 | 
			
		||||
  edram --- ddr3
 | 
			
		||||
 | 
			
		||||
  core1 --- mem
 | 
			
		||||
 | 
			
		||||
  exi --- rtc
 | 
			
		||||
  rtc{{rtc}}
 | 
			
		||||
</pre
 | 
			
		||||
    >
 | 
			
		||||
 | 
			
		||||
    <br />
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart TB
 | 
			
		||||
  %% I could not figure out how to use double quotes in labels in Mermaid
 | 
			
		||||
  subgraph ibm[IBM Espresso CPU]
 | 
			
		||||
    core0[IBM PowerPC Broadway Core 0]
 | 
			
		||||
    core1[IBM PowerPC Broadway Core 1]
 | 
			
		||||
    core2[IBM PowerPC Broadway Core 2]
 | 
			
		||||
 | 
			
		||||
    rom[16 KB ROM]
 | 
			
		||||
 | 
			
		||||
    core0 --- core2
 | 
			
		||||
 | 
			
		||||
    rom --> core2
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  subgraph amd[AMD Latte GPU]
 | 
			
		||||
    mem[Memory & I/O Bridge]
 | 
			
		||||
    dram[DRAM Controller]
 | 
			
		||||
    edram[32 MB EDRAM MEM1]
 | 
			
		||||
    rom[512 B SEEPROM]
 | 
			
		||||
 | 
			
		||||
    sata[SATA IF]
 | 
			
		||||
    exi[EXI]
 | 
			
		||||
 | 
			
		||||
    subgraph gx[GX]
 | 
			
		||||
      sram[3 MB 1T-SRAM]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    radeon[AMD Radeon R7xx GX2]
 | 
			
		||||
 | 
			
		||||
    mem --- gx
 | 
			
		||||
    mem --- radeon
 | 
			
		||||
 | 
			
		||||
    rom --- mem
 | 
			
		||||
 | 
			
		||||
    mem --- sata
 | 
			
		||||
    mem --- exi
 | 
			
		||||
 | 
			
		||||
    dram --- sata
 | 
			
		||||
    dram --- exi
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ddr3[2 GB DDR3 RAM MEM2]
 | 
			
		||||
 | 
			
		||||
  mem --- ddr3
 | 
			
		||||
  dram --- ddr3
 | 
			
		||||
  edram --- ddr3
 | 
			
		||||
 | 
			
		||||
  core1 --- mem
 | 
			
		||||
 | 
			
		||||
  exi --- rtc
 | 
			
		||||
  rtc{{rtc}}
 | 
			
		||||
</pre
 | 
			
		||||
    >
 | 
			
		||||
    <br />
 | 
			
		||||
     
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
      flowchart LR
 | 
			
		||||
  B1 --be be--x B2
 | 
			
		||||
  B1 --bo bo--o B3
 | 
			
		||||
  subgraph Ugge
 | 
			
		||||
      B2
 | 
			
		||||
      B3
 | 
			
		||||
      subgraph inner
 | 
			
		||||
          B4
 | 
			
		||||
          B5
 | 
			
		||||
      end
 | 
			
		||||
      subgraph inner2
 | 
			
		||||
        subgraph deeper
 | 
			
		||||
          C4
 | 
			
		||||
          C5
 | 
			
		||||
        end
 | 
			
		||||
        C6
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      B4 --> C4
 | 
			
		||||
 | 
			
		||||
      B3 -- X --> B4
 | 
			
		||||
      B2 --> inner
 | 
			
		||||
 | 
			
		||||
      C4 --> C5
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  subgraph outer
 | 
			
		||||
      B6
 | 
			
		||||
  end
 | 
			
		||||
  B6 --> B5
 | 
			
		||||
  </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
sequenceDiagram
 | 
			
		||||
    Customer->>+Stripe: Makes a payment request
 | 
			
		||||
    Stripe->>+Bank: Forwards the payment request to the bank
 | 
			
		||||
    Bank->>+Customer: Asks for authorization
 | 
			
		||||
    Customer->>+Bank: Provides authorization
 | 
			
		||||
    Bank->>+Stripe: Sends a response with payment details
 | 
			
		||||
    Stripe->>+Merchant: Sends a notification of payment receipt
 | 
			
		||||
    Merchant->>+Stripe: Confirms the payment
 | 
			
		||||
    Stripe->>+Customer: Sends a confirmation of payment
 | 
			
		||||
    Customer->>+Merchant: Receives goods or services
 | 
			
		||||
        </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
mindmap
 | 
			
		||||
  root((mindmap))
 | 
			
		||||
    Origins
 | 
			
		||||
      Long history
 | 
			
		||||
      ::icon(fa fa-book)
 | 
			
		||||
      Popularisation
 | 
			
		||||
        British popular psychology author Tony Buzan
 | 
			
		||||
    Research
 | 
			
		||||
      On effectiveness<br/>and features
 | 
			
		||||
      On Automatic creation
 | 
			
		||||
        Uses
 | 
			
		||||
            Creative techniques
 | 
			
		||||
            Strategic planning
 | 
			
		||||
            Argument mapping
 | 
			
		||||
    Tools
 | 
			
		||||
      Pen and paper
 | 
			
		||||
      Mermaid
 | 
			
		||||
    </pre>
 | 
			
		||||
    <br />
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
  example-diagram
 | 
			
		||||
    </pre>
 | 
			
		||||
 | 
			
		||||
    <!-- <div id="cy"></div> -->
 | 
			
		||||
    <!-- <script src="http://localhost:9000/packages/mermaid-mindmap/dist/mermaid-mindmap-detector.js"></script> -->
 | 
			
		||||
    <!-- <script src="./mermaid-example-diagram-detector.js"></script>    -->
 | 
			
		||||
    <!-- <script src="//cdn.jsdelivr.net/npm/mermaid@9.1.7/dist/mermaid.min.js"></script> -->
 | 
			
		||||
    <!-- <script src="./mermaid.js"></script> -->
 | 
			
		||||
 | 
			
		||||
    <scrpt>
 | 
			
		||||
      // import mindmap from '../../packages/mermaid-mindmap/src/detector'; // import example from
 | 
			
		||||
      '../../packages/mermaid-example-diagram/src/mermaid-example-diagram.core.mjs'; import mermaid
 | 
			
		||||
      from './mermaid.esm.mjs'; // await mermaid.registerExternalDiagrams([example]);
 | 
			
		||||
      mermaid.parseError = function (err, hash) { // console.error('Mermaid error: ', err); };
 | 
			
		||||
      mermaid.initialize({ // theme: 'forest', startOnLoad: true, logLevel: 0, flowchart: { //
 | 
			
		||||
      defaultRenderer: 'elk', useMaxWidth: false, // htmlLabels: false, htmlLabels: true, }, //
 | 
			
		||||
      htmlLabels: false, gantt: { useMaxWidth: false, }, useMaxWidth: false, }); function callback()
 | 
			
		||||
      { alert('It worked'); } mermaid.parseError = function (err, hash) { console.error('In parse
 | 
			
		||||
      error:'); console.error(err); }; // mermaid.test1('first_slow', 1200).then((r) =>
 | 
			
		||||
      console.info(r)); // mermaid.test1('second_fast', 200).then((r) => console.info(r)); //
 | 
			
		||||
      mermaid.test1('third_fast', 200).then((r) => console.info(r)); // mermaid.test1('forth_slow',
 | 
			
		||||
      1200).then((r) => console.info(r));
 | 
			
		||||
    </scrpt>
 | 
			
		||||
    <script
 | 
			
		||||
      type="text/javascript"
 | 
			
		||||
      src="https://cdn.jsdelivr.net/npm/mermaid@10.2.0/dist/mermaid.min.js"
 | 
			
		||||
    ></script>
 | 
			
		||||
    <script type="module">
 | 
			
		||||
      import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.2.0/dist/mermaid.min.js';
 | 
			
		||||
      (function () {
 | 
			
		||||
        mermaid.initialize({ startOnLoad: false });
 | 
			
		||||
        const elements = document.getElementsByClassName('mermaid');
 | 
			
		||||
        console.log(elements);
 | 
			
		||||
        let id = 0;
 | 
			
		||||
        [...elements].forEach((elem) => {
 | 
			
		||||
          const insertSvg = function (svgCode) {
 | 
			
		||||
            elem.innerHTML = svgCode;
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          console.log(atob(elem.innerText));
 | 
			
		||||
 | 
			
		||||
          mermaid.render(`graphDiv-${id++}`, atob(elem.innerText), insertSvg);
 | 
			
		||||
        });
 | 
			
		||||
      })();
 | 
			
		||||
    </script>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css"
 | 
			
		||||
 
 | 
			
		||||
@@ -14,33 +14,45 @@
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link rel="preconnect" href="https://fonts.googleapis.com" />
 | 
			
		||||
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css2?family=Caveat:wght@400..700&family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
 | 
			
		||||
    <style>
 | 
			
		||||
      body {
 | 
			
		||||
        /* background: rgb(221, 208, 208); */
 | 
			
		||||
        background: #333;
 | 
			
		||||
        /* background: #333; */
 | 
			
		||||
        font-family: 'Arial';
 | 
			
		||||
        /* font-size: 18px !important; */
 | 
			
		||||
      }
 | 
			
		||||
      h1 {
 | 
			
		||||
        color: grey;
 | 
			
		||||
      }
 | 
			
		||||
      .mermaid {
 | 
			
		||||
        border: 1px solid #ddd;
 | 
			
		||||
        margin: 10px;
 | 
			
		||||
      }
 | 
			
		||||
      .mermaid2 {
 | 
			
		||||
        display: none;
 | 
			
		||||
      }
 | 
			
		||||
      .mermaid svg {
 | 
			
		||||
        /* font-size: 18px !important; */
 | 
			
		||||
        /* background-color: #efefef; */
 | 
			
		||||
        background-color: #333;
 | 
			
		||||
        background-image: radial-gradient(#333 51%, transparent 91%),
 | 
			
		||||
          radial-gradient(#333 51%, transparent 91%);
 | 
			
		||||
 | 
			
		||||
        /* background-color: #efefef;
 | 
			
		||||
        background-image: radial-gradient(#fff 51%, transparent 91%),
 | 
			
		||||
          radial-gradient(#fff 51%, transparent 91%);
 | 
			
		||||
        background-size: 20px 20px;
 | 
			
		||||
        background-position: 0 0, 10px 10px;
 | 
			
		||||
        background-repeat: repeat;
 | 
			
		||||
        border: 2px solid rgb(131, 142, 205);
 | 
			
		||||
        background-position:
 | 
			
		||||
          0 0,
 | 
			
		||||
          10px 10px;
 | 
			
		||||
        background-repeat: repeat; */
 | 
			
		||||
      }
 | 
			
		||||
      .malware {
 | 
			
		||||
        position: fixed;
 | 
			
		||||
@@ -58,545 +70,82 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
      /* tspan {
 | 
			
		||||
        font-size: 6px !important;
 | 
			
		||||
      } */
 | 
			
		||||
              font-size: 6px !important;
 | 
			
		||||
            } */
 | 
			
		||||
    </style>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
      block-beta
 | 
			
		||||
  blockArrowId<["Label"]>(right)
 | 
			
		||||
  blockArrowId2<["Label"]>(left)
 | 
			
		||||
  blockArrowId3<["Label"]>(up)
 | 
			
		||||
  blockArrowId4<["Label"]>(down)
 | 
			
		||||
  blockArrowId5<["Label"]>(x)
 | 
			
		||||
  blockArrowId6<["Label"]>(y)
 | 
			
		||||
  blockArrowId6<["Label"]>(x, down)
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
block-beta
 | 
			
		||||
  block:e:4
 | 
			
		||||
    columns 2
 | 
			
		||||
      f
 | 
			
		||||
      g
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
block-beta
 | 
			
		||||
  block:e:4
 | 
			
		||||
    columns 2
 | 
			
		||||
      f
 | 
			
		||||
      g
 | 
			
		||||
      h
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
block-beta
 | 
			
		||||
  columns 4
 | 
			
		||||
  a b c d
 | 
			
		||||
  block:e:4
 | 
			
		||||
    columns 2
 | 
			
		||||
      f
 | 
			
		||||
      g
 | 
			
		||||
      h
 | 
			
		||||
  end
 | 
			
		||||
  i:4
 | 
			
		||||
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart LR
 | 
			
		||||
  X-- "y" -->z
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
columns 5
 | 
			
		||||
   A space B
 | 
			
		||||
   A --x B
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
columns 3
 | 
			
		||||
  a["A wide one"] b:2 c:2 d
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
  block:e
 | 
			
		||||
      f
 | 
			
		||||
  end
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
  columns 3
 | 
			
		||||
  a:3
 | 
			
		||||
  block:e:3
 | 
			
		||||
      f
 | 
			
		||||
  end
 | 
			
		||||
  g
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
  columns 3
 | 
			
		||||
  a:3
 | 
			
		||||
  block:e:3
 | 
			
		||||
      f
 | 
			
		||||
      g
 | 
			
		||||
  end
 | 
			
		||||
  h
 | 
			
		||||
  i
 | 
			
		||||
  j
 | 
			
		||||
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
columns 3
 | 
			
		||||
  a b:2
 | 
			
		||||
  block:e:3
 | 
			
		||||
      f
 | 
			
		||||
  end
 | 
			
		||||
  g h i
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
block-beta
 | 
			
		||||
columns 3
 | 
			
		||||
  a b c
 | 
			
		||||
  e:3
 | 
			
		||||
  f g h
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
block-beta
 | 
			
		||||
columns 1
 | 
			
		||||
  db(("DB"))
 | 
			
		||||
  blockArrowId6<["   "]>(down)
 | 
			
		||||
  block:ID
 | 
			
		||||
    A
 | 
			
		||||
    B["A wide one in the middle"]
 | 
			
		||||
    C
 | 
			
		||||
  end
 | 
			
		||||
  space
 | 
			
		||||
  D
 | 
			
		||||
  ID --> D
 | 
			
		||||
  C --> D
 | 
			
		||||
  style B fill:#f9F,stroke:#333,stroke-width:4px
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
block-beta
 | 
			
		||||
  columns 5
 | 
			
		||||
  A1:3
 | 
			
		||||
  A2:1
 | 
			
		||||
  A3
 | 
			
		||||
  B1 B2 B3:3
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
  block
 | 
			
		||||
    D
 | 
			
		||||
    E
 | 
			
		||||
  end
 | 
			
		||||
  db("This is the text in the box")
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
 | 
			
		||||
      block
 | 
			
		||||
        D
 | 
			
		||||
      end
 | 
			
		||||
      A["A: I am a wide one"]
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
    A["square"]
 | 
			
		||||
    B("rounded")
 | 
			
		||||
    C(("circle"))
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
    A>"rect_left_inv_arrow"]
 | 
			
		||||
    B{"diamond"}
 | 
			
		||||
    C{{"hexagon"}}
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
    A(["stadium"])
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
    %% A[["subroutine"]]
 | 
			
		||||
    %% B[("cylinder")]
 | 
			
		||||
    C>"surprise"]
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
block-beta
 | 
			
		||||
    A[/"lean right"/]
 | 
			
		||||
    B[\"lean left"\]
 | 
			
		||||
    C[/"trapezoid"\]
 | 
			
		||||
    D[\"trapezoid"/]
 | 
			
		||||
    </pre>
 | 
			
		||||
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart
 | 
			
		||||
      B
 | 
			
		||||
      style B fill:#f9F,stroke:#333,stroke-width:4px
 | 
			
		||||
    </pre>
 | 
			
		||||
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
      flowchart LR
 | 
			
		||||
      a1 -- apa --> b1
 | 
			
		||||
    </pre>
 | 
			
		||||
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart RL
 | 
			
		||||
  subgraph "`one`"
 | 
			
		||||
    id
 | 
			
		||||
  end
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart RL
 | 
			
		||||
    subgraph "`one`"
 | 
			
		||||
      a1 -- l1 --> a2
 | 
			
		||||
      a1 -- l2 --> a2
 | 
			
		||||
    end
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart
 | 
			
		||||
id["`A root with a long text that wraps to keep the node size in check. A root with a long text that wraps to keep the node size in check`"]</pre
 | 
			
		||||
   a_a(Aftonbladet) --> b_b[gorilla]:::apa --> c_c{chimp}:::apa -->a_a
 | 
			
		||||
        a_a --> c --> d_d --> c_c
 | 
			
		||||
        classDef apa fill:#f9f,stroke:#333,stroke-width:4px;
 | 
			
		||||
        class a_a apa;
 | 
			
		||||
        click a_a "http://www.aftonbladet.se" "bookmark"
 | 
			
		||||
        click c_c callback "new tooltip"
 | 
			
		||||
      </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
    <pre id="diagram2" class="mermaid">
 | 
			
		||||
flowchart LR
 | 
			
		||||
    A[A text that needs to be wrapped wraps to another line]
 | 
			
		||||
    B[A text that needs to be<br/>wrapped wraps to another line]
 | 
			
		||||
    C["`A text that needs to be wrapped to another line`"]</pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart LR
 | 
			
		||||
    C["`A text
 | 
			
		||||
        that needs
 | 
			
		||||
        to be wrapped
 | 
			
		||||
        in another
 | 
			
		||||
        way`"]
 | 
			
		||||
  </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
      classDiagram-v2
 | 
			
		||||
        note "I love this diagram!\nDo you love it?"
 | 
			
		||||
    id1(Start)-->id2(Stop)
 | 
			
		||||
    style id1 fill:#f9f,stroke:#333,stroke-width:4px
 | 
			
		||||
    style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
 | 
			
		||||
 | 
			
		||||
      
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
    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    </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
mindmap
 | 
			
		||||
root
 | 
			
		||||
  Child3(A node with an icon and with a long text that wraps to keep the node size in check)
 | 
			
		||||
</pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
      %%{init: {"theme": "forest"} }%%
 | 
			
		||||
mindmap
 | 
			
		||||
    id1[**Start2**<br/>end]
 | 
			
		||||
      id2[**Start2**<br />end]
 | 
			
		||||
      %% Another comment
 | 
			
		||||
      id3[**Start2**<br>end] %% Comment
 | 
			
		||||
      id4[**Start2**<br >end<br    >the very end]
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
mindmap
 | 
			
		||||
    id1["`**Start2**
 | 
			
		||||
    second line 😎 with long text that is wrapping to the next line`"]
 | 
			
		||||
      id2["`Child **with bold** text`"]
 | 
			
		||||
      id3["`Children of which some
 | 
			
		||||
      is using *italic type of* text`"]
 | 
			
		||||
      id4[Child]
 | 
			
		||||
      id5["`Child
 | 
			
		||||
      Row
 | 
			
		||||
      and another
 | 
			
		||||
      `"]
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
mindmap
 | 
			
		||||
    id1("`**Root**`"]
 | 
			
		||||
      id2["`A formatted text... with **bold** and *italics*`"]
 | 
			
		||||
      id3[Regular labels works as usual]
 | 
			
		||||
      id4["`Emojis and unicode works too: 🤓
 | 
			
		||||
      शान्तिः سلام  和平 `"]
 | 
			
		||||
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%
 | 
			
		||||
flowchart TB
 | 
			
		||||
  %% I could not figure out how to use double quotes in labels in Mermaid
 | 
			
		||||
  subgraph ibm[IBM Espresso CPU]
 | 
			
		||||
    core0[IBM PowerPC Broadway Core 0]
 | 
			
		||||
    core1[IBM PowerPC Broadway Core 1]
 | 
			
		||||
    core2[IBM PowerPC Broadway Core 2]
 | 
			
		||||
 | 
			
		||||
    rom[16 KB ROM]
 | 
			
		||||
 | 
			
		||||
    core0 --- core2
 | 
			
		||||
 | 
			
		||||
    rom --> core2
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  subgraph amd["`**AMD** Latte GPU`"]
 | 
			
		||||
    mem[Memory & I/O Bridge]
 | 
			
		||||
    dram[DRAM Controller]
 | 
			
		||||
    edram[32 MB EDRAM MEM1]
 | 
			
		||||
    rom[512 B SEEPROM]
 | 
			
		||||
 | 
			
		||||
    sata[SATA IF]
 | 
			
		||||
    exi[EXI]
 | 
			
		||||
 | 
			
		||||
    subgraph gx[GX]
 | 
			
		||||
      sram[3 MB 1T-SRAM]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    radeon[AMD Radeon R7xx GX2]
 | 
			
		||||
 | 
			
		||||
    mem --- gx
 | 
			
		||||
    mem --- radeon
 | 
			
		||||
 | 
			
		||||
    rom --- mem
 | 
			
		||||
 | 
			
		||||
    mem --- sata
 | 
			
		||||
    mem --- exi
 | 
			
		||||
 | 
			
		||||
    dram --- sata
 | 
			
		||||
    dram --- exi
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ddr3[2 GB DDR3 RAM MEM2]
 | 
			
		||||
 | 
			
		||||
  mem --- ddr3
 | 
			
		||||
  dram --- ddr3
 | 
			
		||||
  edram --- ddr3
 | 
			
		||||
 | 
			
		||||
  core1 --- mem
 | 
			
		||||
 | 
			
		||||
  exi --- rtc
 | 
			
		||||
  rtc{{rtc}}
 | 
			
		||||
</pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
%%{init: {"flowchart": {"defaultRenderer": "elk", "htmlLabels": false}} }%%
 | 
			
		||||
flowchart TB
 | 
			
		||||
  %% I could not figure out how to use double quotes in labels in Mermaid
 | 
			
		||||
  subgraph ibm[IBM Espresso CPU]
 | 
			
		||||
    core0[IBM PowerPC Broadway Core 0]
 | 
			
		||||
    core1[IBM PowerPC Broadway Core 1]
 | 
			
		||||
    core2[IBM PowerPC Broadway Core 2]
 | 
			
		||||
 | 
			
		||||
    rom[16 KB ROM]
 | 
			
		||||
 | 
			
		||||
    core0 --- core2
 | 
			
		||||
 | 
			
		||||
    rom --> core2
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  subgraph amd["`**AMD** Latte GPU`"]
 | 
			
		||||
    mem[Memory & I/O Bridge]
 | 
			
		||||
    dram[DRAM Controller]
 | 
			
		||||
    edram[32 MB EDRAM MEM1]
 | 
			
		||||
    rom[512 B SEEPROM]
 | 
			
		||||
 | 
			
		||||
    sata[SATA IF]
 | 
			
		||||
    exi[EXI]
 | 
			
		||||
 | 
			
		||||
    subgraph gx[GX]
 | 
			
		||||
      sram[3 MB 1T-SRAM]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    radeon[AMD Radeon R7xx GX2]
 | 
			
		||||
 | 
			
		||||
    mem --- gx
 | 
			
		||||
    mem --- radeon
 | 
			
		||||
 | 
			
		||||
    rom --- mem
 | 
			
		||||
 | 
			
		||||
    mem --- sata
 | 
			
		||||
    mem --- exi
 | 
			
		||||
 | 
			
		||||
    dram --- sata
 | 
			
		||||
    dram --- exi
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ddr3[2 GB DDR3 RAM MEM2]
 | 
			
		||||
 | 
			
		||||
  mem --- ddr3
 | 
			
		||||
  dram --- ddr3
 | 
			
		||||
  edram --- ddr3
 | 
			
		||||
 | 
			
		||||
  core1 --- mem
 | 
			
		||||
 | 
			
		||||
  exi --- rtc
 | 
			
		||||
  rtc{{rtc}}
 | 
			
		||||
</pre
 | 
			
		||||
    >
 | 
			
		||||
 | 
			
		||||
    <br />
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart TB
 | 
			
		||||
  %% I could not figure out how to use double quotes in labels in Mermaid
 | 
			
		||||
  subgraph ibm[IBM Espresso CPU]
 | 
			
		||||
    core0[IBM PowerPC Broadway Core 0]
 | 
			
		||||
    core1[IBM PowerPC Broadway Core 1]
 | 
			
		||||
    core2[IBM PowerPC Broadway Core 2]
 | 
			
		||||
 | 
			
		||||
    rom[16 KB ROM]
 | 
			
		||||
 | 
			
		||||
    core0 --- core2
 | 
			
		||||
 | 
			
		||||
    rom --> core2
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  subgraph amd[AMD Latte GPU]
 | 
			
		||||
    mem[Memory & I/O Bridge]
 | 
			
		||||
    dram[DRAM Controller]
 | 
			
		||||
    edram[32 MB EDRAM MEM1]
 | 
			
		||||
    rom[512 B SEEPROM]
 | 
			
		||||
 | 
			
		||||
    sata[SATA IF]
 | 
			
		||||
    exi[EXI]
 | 
			
		||||
 | 
			
		||||
    subgraph gx[GX]
 | 
			
		||||
      sram[3 MB 1T-SRAM]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    radeon[AMD Radeon R7xx GX2]
 | 
			
		||||
 | 
			
		||||
    mem --- gx
 | 
			
		||||
    mem --- radeon
 | 
			
		||||
 | 
			
		||||
    rom --- mem
 | 
			
		||||
 | 
			
		||||
    mem --- sata
 | 
			
		||||
    mem --- exi
 | 
			
		||||
 | 
			
		||||
    dram --- sata
 | 
			
		||||
    dram --- exi
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ddr3[2 GB DDR3 RAM MEM2]
 | 
			
		||||
 | 
			
		||||
  mem --- ddr3
 | 
			
		||||
  dram --- ddr3
 | 
			
		||||
  edram --- ddr3
 | 
			
		||||
 | 
			
		||||
  core1 --- mem
 | 
			
		||||
 | 
			
		||||
  exi --- rtc
 | 
			
		||||
  rtc{{rtc}}
 | 
			
		||||
</pre
 | 
			
		||||
    >
 | 
			
		||||
    <br />
 | 
			
		||||
     
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
    <pre id="diagram3" class="mermaid">
 | 
			
		||||
      flowchart LR
 | 
			
		||||
  B1 --be be--x B2
 | 
			
		||||
  B1 --bo bo--o B3
 | 
			
		||||
  subgraph Ugge
 | 
			
		||||
      B2
 | 
			
		||||
      B3
 | 
			
		||||
      subgraph inner
 | 
			
		||||
          B4
 | 
			
		||||
          B5
 | 
			
		||||
      end
 | 
			
		||||
      subgraph inner2
 | 
			
		||||
        subgraph deeper
 | 
			
		||||
          C4
 | 
			
		||||
          C5
 | 
			
		||||
        end
 | 
			
		||||
        C6
 | 
			
		||||
      end
 | 
			
		||||
    A:::foo & B:::bar --> C:::foobar
 | 
			
		||||
    classDef foo stroke:#f00
 | 
			
		||||
    classDef bar stroke:#0f0
 | 
			
		||||
    classDef ash color:red
 | 
			
		||||
    class C ash
 | 
			
		||||
    style C stroke:#00f, fill:black
 | 
			
		||||
 | 
			
		||||
      B4 --> C4
 | 
			
		||||
 | 
			
		||||
      B3 -- X --> B4
 | 
			
		||||
      B2 --> inner
 | 
			
		||||
 | 
			
		||||
      C4 --> C5
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  subgraph outer
 | 
			
		||||
      B6
 | 
			
		||||
  end
 | 
			
		||||
  B6 --> B5
 | 
			
		||||
  </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
sequenceDiagram
 | 
			
		||||
    Customer->>+Stripe: Makes a payment request
 | 
			
		||||
    Stripe->>+Bank: Forwards the payment request to the bank
 | 
			
		||||
    Bank->>+Customer: Asks for authorization
 | 
			
		||||
    Customer->>+Bank: Provides authorization
 | 
			
		||||
    Bank->>+Stripe: Sends a response with payment details
 | 
			
		||||
    Stripe->>+Merchant: Sends a notification of payment receipt
 | 
			
		||||
    Merchant->>+Stripe: Confirms the payment
 | 
			
		||||
    Stripe->>+Customer: Sends a confirmation of payment
 | 
			
		||||
    Customer->>+Merchant: Receives goods or services
 | 
			
		||||
        </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
mindmap
 | 
			
		||||
  root((mindmap))
 | 
			
		||||
    Origins
 | 
			
		||||
      Long history
 | 
			
		||||
      ::icon(fa fa-book)
 | 
			
		||||
      Popularisation
 | 
			
		||||
        British popular psychology author Tony Buzan
 | 
			
		||||
    Research
 | 
			
		||||
      On effectiveness<br/>and features
 | 
			
		||||
      On Automatic creation
 | 
			
		||||
        Uses
 | 
			
		||||
            Creative techniques
 | 
			
		||||
            Strategic planning
 | 
			
		||||
            Argument mapping
 | 
			
		||||
    Tools
 | 
			
		||||
      Pen and paper
 | 
			
		||||
      Mermaid
 | 
			
		||||
    </pre>
 | 
			
		||||
    <br />
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
  example-diagram
 | 
			
		||||
    </pre>
 | 
			
		||||
 | 
			
		||||
    <!-- <div id="cy"></div> -->
 | 
			
		||||
    <!-- <script src="http://localhost:9000/packages/mermaid-mindmap/dist/mermaid-mindmap-detector.js"></script> -->
 | 
			
		||||
    <!-- <script src="./mermaid-example-diagram-detector.js"></script>    -->
 | 
			
		||||
    <!-- <script src="//cdn.jsdelivr.net/npm/mermaid@9.1.7/dist/mermaid.min.js"></script> -->
 | 
			
		||||
    <!-- <script src="./mermaid.js"></script> -->
 | 
			
		||||
    <pre id="diagram4" class="mermaid">
 | 
			
		||||
      stateDiagram
 | 
			
		||||
    A:::foo 
 | 
			
		||||
    B:::bar --> C:::foobar
 | 
			
		||||
    classDef foo stroke:#f00
 | 
			
		||||
    classDef bar stroke:#0f0
 | 
			
		||||
    style C stroke:#00f, fill:black, color:white
 | 
			
		||||
 | 
			
		||||
    </pre>
 | 
			
		||||
 | 
			
		||||
    <script type="module">
 | 
			
		||||
      // import mindmap from '../../packages/mermaid-mindmap/src/detector';
 | 
			
		||||
      // import example from '../../packages/mermaid-example-diagram/src/mermaid-example-diagram.core.mjs';
 | 
			
		||||
      import mermaid from './mermaid.esm.mjs';
 | 
			
		||||
      // await mermaid.registerExternalDiagrams([example]);
 | 
			
		||||
      // import { layouts } from './mermaid-layout-elk.esm.mjs';
 | 
			
		||||
      // mermaid.registerLayoutLoaders(layouts);
 | 
			
		||||
      mermaid.parseError = function (err, hash) {
 | 
			
		||||
        // console.error('Mermaid error: ', err);
 | 
			
		||||
        console.error('Mermaid error: ', err);
 | 
			
		||||
      };
 | 
			
		||||
      window.callback = function () {
 | 
			
		||||
        alert('A callback was triggered');
 | 
			
		||||
      };
 | 
			
		||||
      // mermaid.initialize({
 | 
			
		||||
      //   // theme: 'forest',
 | 
			
		||||
      //   startOnLoad: true,
 | 
			
		||||
      //   logLevel: 0,
 | 
			
		||||
      //   flowchart: {
 | 
			
		||||
      //     // defaultRenderer: 'elk',
 | 
			
		||||
      //     useMaxWidth: false,
 | 
			
		||||
      //     // htmlLabels: false,
 | 
			
		||||
      //     htmlLabels: true,
 | 
			
		||||
      //   },
 | 
			
		||||
      //   // htmlLabels: false,
 | 
			
		||||
      //   gantt: {
 | 
			
		||||
      //     useMaxWidth: false,
 | 
			
		||||
      //   },
 | 
			
		||||
      //   useMaxWidth: false,
 | 
			
		||||
      // });
 | 
			
		||||
      mermaid.initialize({
 | 
			
		||||
        theme: 'dark',
 | 
			
		||||
        startOnLoad: true,
 | 
			
		||||
        // theme: 'base',
 | 
			
		||||
        // handdrawnSeed: 12,
 | 
			
		||||
        // look: 'handdrawn',
 | 
			
		||||
        // 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
 | 
			
		||||
        // layout: 'dagre',
 | 
			
		||||
        // layout: 'elk',
 | 
			
		||||
        // layout: 'fixed',
 | 
			
		||||
        // htmlLabels: false,
 | 
			
		||||
        flowchart: { titleTopMargin: 10 },
 | 
			
		||||
        // fontFamily: 'Caveat',
 | 
			
		||||
        // fontFamily: 'Kalam',
 | 
			
		||||
        // fontFamily: 'courier',
 | 
			
		||||
        sequence: {
 | 
			
		||||
          actorFontFamily: 'courier',
 | 
			
		||||
          noteFontFamily: 'courier',
 | 
			
		||||
          messageFontFamily: 'courier',
 | 
			
		||||
        },
 | 
			
		||||
        fontSize: 12,
 | 
			
		||||
        logLevel: 0,
 | 
			
		||||
        securityLevel: 'loose',
 | 
			
		||||
      });
 | 
			
		||||
      function callback() {
 | 
			
		||||
        alert('It worked');
 | 
			
		||||
@@ -605,10 +154,6 @@ mindmap
 | 
			
		||||
        console.error('In parse error:');
 | 
			
		||||
        console.error(err);
 | 
			
		||||
      };
 | 
			
		||||
      // mermaid.test1('first_slow', 1200).then((r) => console.info(r));
 | 
			
		||||
      // mermaid.test1('second_fast', 200).then((r) => console.info(r));
 | 
			
		||||
      // mermaid.test1('third_fast', 200).then((r) => console.info(r));
 | 
			
		||||
      // mermaid.test1('forth_slow', 1200).then((r) => console.info(r));
 | 
			
		||||
    </script>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,11 @@ sequenceDiagram
 | 
			
		||||
    mermaid.initialize({
 | 
			
		||||
      theme: 'base',
 | 
			
		||||
      themeVariables: {},
 | 
			
		||||
      startOnLoad: true,
 | 
			
		||||
      startOnLoad: false,
 | 
			
		||||
    });
 | 
			
		||||
    await mermaid.run();
 | 
			
		||||
    if (window.Cypress) {
 | 
			
		||||
      window.rendered = true;
 | 
			
		||||
    }
 | 
			
		||||
  </script>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1271
									
								
								cypress/platform/state-refactor.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1271
									
								
								cypress/platform/state-refactor.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										59
									
								
								cypress/platform/suppressError.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								cypress/platform/suppressError.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
<!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>
 | 
			
		||||
    <div id="test">
 | 
			
		||||
      <pre class="mermaid">
 | 
			
		||||
  flowchart
 | 
			
		||||
      a[This should be visible]
 | 
			
		||||
    </pre
 | 
			
		||||
      >
 | 
			
		||||
      <pre class="mermaid">
 | 
			
		||||
  flowchart
 | 
			
		||||
    a --< b
 | 
			
		||||
    </pre
 | 
			
		||||
      >
 | 
			
		||||
      <pre class="mermaid">
 | 
			
		||||
  flowchart
 | 
			
		||||
      a[This should be visible]
 | 
			
		||||
    </pre
 | 
			
		||||
      >
 | 
			
		||||
      <pre class="mermaid">
 | 
			
		||||
  ---
 | 
			
		||||
  config:
 | 
			
		||||
    suppressErrorRendering: true # This should not affect anything, as suppressErrorRendering is a secure config
 | 
			
		||||
  ---
 | 
			
		||||
  flowchart
 | 
			
		||||
    a --< b
 | 
			
		||||
    </pre
 | 
			
		||||
      >
 | 
			
		||||
      <pre class="mermaid">
 | 
			
		||||
  ---
 | 
			
		||||
  config:
 | 
			
		||||
    suppressErrorRendering: false # This should not affect anything, as suppressErrorRendering is a secure config
 | 
			
		||||
  ---
 | 
			
		||||
  flowchart
 | 
			
		||||
    a --< b
 | 
			
		||||
    </pre
 | 
			
		||||
      >
 | 
			
		||||
    </div>
 | 
			
		||||
    <script type="module">
 | 
			
		||||
      import mermaid from './mermaid.esm.mjs';
 | 
			
		||||
      const shouldSuppress =
 | 
			
		||||
        new URLSearchParams(window.location.search).get('suppressErrorRendering') === 'true';
 | 
			
		||||
      mermaid.initialize({ startOnLoad: false, suppressErrorRendering: shouldSuppress });
 | 
			
		||||
      try {
 | 
			
		||||
        await mermaid.run();
 | 
			
		||||
      } catch {
 | 
			
		||||
        if (window.Cypress) {
 | 
			
		||||
          window.rendered = true;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
import mermaid from './mermaid.esm.mjs';
 | 
			
		||||
// import flowchartELK from './mermaid-flowchart-elk.esm.mjs';
 | 
			
		||||
import externalExample from './mermaid-example-diagram.esm.mjs';
 | 
			
		||||
import zenUml from './mermaid-zenuml.esm.mjs';
 | 
			
		||||
 | 
			
		||||
@@ -8,7 +9,7 @@ function b64ToUtf8(str) {
 | 
			
		||||
 | 
			
		||||
// Adds a rendered flag to window when rendering is done, so cypress can wait for it.
 | 
			
		||||
function markRendered() {
 | 
			
		||||
  window.renderTime = Date.now() - window.loadTime;
 | 
			
		||||
  console.log('Done rendering');
 | 
			
		||||
  if (window.Cypress) {
 | 
			
		||||
    window.rendered = true;
 | 
			
		||||
  }
 | 
			
		||||
@@ -46,6 +47,7 @@ const contentLoaded = async function () {
 | 
			
		||||
      document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // await mermaid.registerExternalDiagrams([externalExample, zenUml, flowchartELK]);
 | 
			
		||||
    await mermaid.registerExternalDiagrams([externalExample, zenUml]);
 | 
			
		||||
    mermaid.initialize(graphObj.mermaid);
 | 
			
		||||
    await mermaid.run();
 | 
			
		||||
@@ -132,8 +134,7 @@ if (typeof document !== 'undefined') {
 | 
			
		||||
  window.addEventListener(
 | 
			
		||||
    'load',
 | 
			
		||||
    function () {
 | 
			
		||||
      this.window.loadTime = Date.now();
 | 
			
		||||
      if (this.location.href.match('xss.html')) {
 | 
			
		||||
      if (/xss.html/.exec(this.location.href)) {
 | 
			
		||||
        this.console.log('Using api');
 | 
			
		||||
        void contentLoadedApi().finally(markRendered);
 | 
			
		||||
      } else {
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    <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"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user