mirror of
				https://github.com/mermaid-js/mermaid.git
				synced 2025-10-31 10:54:15 +01:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			mermaid@11
			...
			5824-diff-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 4693aa2749 | ||
|   | 468b6a55b6 | ||
|   | c7880d7281 | ||
|   | f27ca07371 | 
							
								
								
									
										5
									
								
								.changeset/gold-ducks-sort.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.changeset/gold-ducks-sort.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| --- | ||||
| 'mermaid': patch | ||||
| --- | ||||
|  | ||||
| fix: Proper separation between strings and markdown strings | ||||
| @@ -895,7 +895,7 @@ graph TD | ||||
|     imgSnapshotTest( | ||||
|       ` | ||||
|       graph TD | ||||
|         classDef default fill:#a34,stroke:#000,stroke-width:4px,color:#fff  | ||||
|         classDef default fill:#a34,stroke:#000,stroke-width:4px,color:#fff | ||||
|         hello --> default | ||||
|       `, | ||||
|       { htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' } | ||||
| @@ -917,4 +917,24 @@ graph TD | ||||
|       } | ||||
|     ); | ||||
|   }); | ||||
|   it('68: should be able to render string and markdown labels (#5824)', () => { | ||||
|     imgSnapshotTest( | ||||
|       ` | ||||
| flowchart TB | ||||
|     mermaid{"What is\nyourmermaid version?"} --> v10["<11"] --"\`<**1**1\`"--> fine["No bug"] | ||||
|     mermaid --> v11[">= v11"] -- ">= v11" --> broken["Affected by https://github.com/mermaid-js/mermaid/issues/5824"] | ||||
|     subgraph subgraph1["\`How to fix **fix**\`"] | ||||
|         broken --> B["B"] | ||||
|     end | ||||
|     githost["Github, Gitlab, BitBucket, etc."] | ||||
|     githost2["\`Github, Gitlab, BitBucket, etc.\`"] | ||||
|     a["1."] | ||||
|     b["- x"] | ||||
|     `, | ||||
|       { | ||||
|         flowchart: { htmlLabels: true }, | ||||
|         securityLevel: 'loose', | ||||
|       } | ||||
|     ); | ||||
|   }); | ||||
| }); | ||||
|   | ||||
| @@ -144,7 +144,7 @@ config: | ||||
|       D-->I | ||||
|       D-->I | ||||
|     </pre> | ||||
|     <pre id="diagram4" class="mermaid"> | ||||
|     <pre id="diagram4" class="mermaid2"> | ||||
| --- | ||||
| config: | ||||
|   layout: elk | ||||
| @@ -185,19 +185,19 @@ flowchart LR | ||||
|     </pre> | ||||
|     <pre id="diagram4" class="mermaid"> | ||||
| --- | ||||
| config: | ||||
|   layout: elk | ||||
| title: https://github.com/mermaid-js/mermaid/issues/5824 | ||||
| --- | ||||
| flowchart LR | ||||
|  subgraph s1["Untitled subgraph"] | ||||
|         n1["Evaluate"] | ||||
|         n2["Option 1"] | ||||
|   end | ||||
|     n1 -- One --> n2 | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| %% 6048, 5824 | ||||
| flowchart TB | ||||
|     mermaid{"What is\nyourmermaid version?"} --> v10["<11"] --"`<**1**1`"--> fine["No bug"] | ||||
|     mermaid --> v11[">= v11"] -- ">= v11" --> broken["Affected by https://github.com/mermaid-js/mermaid/issues/5824"] | ||||
|     subgraph subgraph1["`How to fix **fix**`"] | ||||
|         broken --> B["B"] | ||||
|     end | ||||
|     githost["Github, Gitlab, BitBucket, etc."] | ||||
|     githost2["`Github, Gitlab, BitBucket, etc.`"] | ||||
|     a["1."] | ||||
|     b["- x"] | ||||
|     </pre> | ||||
|     <pre id="diagram4" class="mermaid"> | ||||
| --- | ||||
|   | ||||
| @@ -896,6 +896,7 @@ const addNodeFromVertex = ( | ||||
|     const baseNode = { | ||||
|       id: vertex.id, | ||||
|       label: vertex.text, | ||||
|       labelType: vertex.labelType, | ||||
|       labelStyle: '', | ||||
|       parentId, | ||||
|       padding: config.flowchart?.padding || 8, | ||||
| @@ -1002,6 +1003,7 @@ export const getData = () => { | ||||
|       end: rawEdge.end, | ||||
|       type: rawEdge.type ?? 'normal', | ||||
|       label: rawEdge.text, | ||||
|       labelType: rawEdge.labelType, | ||||
|       labelpos: 'c', | ||||
|       thickness: rawEdge.stroke, | ||||
|       minlen: rawEdge.length, | ||||
|   | ||||
| @@ -26,12 +26,16 @@ export const getLabelStyles = (styleArray) => { | ||||
| export const insertEdgeLabel = async (elem, edge) => { | ||||
|   let useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels); | ||||
|  | ||||
|   const labelElement = await createText(elem, edge.label, { | ||||
|     style: getLabelStyles(edge.labelStyle), | ||||
|     useHtmlLabels, | ||||
|     addSvgBackground: true, | ||||
|     isNode: false, | ||||
|   }); | ||||
|   const labelElement = | ||||
|     edge.labelType === 'markdown' | ||||
|       ? await createText(elem, edge.label, { | ||||
|           style: getLabelStyles(edge.labelStyle), | ||||
|           useHtmlLabels, | ||||
|           addSvgBackground: true, | ||||
|           isNode: false, | ||||
|         }) | ||||
|       : await createLabel(edge.label, getLabelStyles(edge.labelStyle), undefined, false); | ||||
|  | ||||
|   log.info('abc82', edge, edge.labelType); | ||||
|  | ||||
|   // Create outer g, edgeLabel, this will be positioned after graph layout | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| import createLabel from '../createLabel.js'; | ||||
| import { createText } from '../../createText.js'; | ||||
| import type { Node } from '../../types.js'; | ||||
| import { getConfig } from '../../../diagram-api/diagramAPI.js'; | ||||
| @@ -40,14 +41,26 @@ export const labelHelper = async <T extends SVGGraphicsElement>( | ||||
|     label = typeof node.label === 'string' ? node.label : node.label[0]; | ||||
|   } | ||||
|  | ||||
|   const text = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig()), { | ||||
|     useHtmlLabels, | ||||
|     width: node.width || getConfig().flowchart?.wrappingWidth, | ||||
|     // @ts-expect-error -- This is currently not used. Should this be `classes` instead? | ||||
|     cssClasses: 'markdown-node-label', | ||||
|     style: node.labelStyle, | ||||
|     addSvgBackground: !!node.icon || !!node.img, | ||||
|   }); | ||||
|   let text; | ||||
|   if (node.labelType !== 'string') { | ||||
|     text = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig()), { | ||||
|       useHtmlLabels, | ||||
|       width: node.width || getConfig().flowchart?.wrappingWidth, | ||||
|       // @ts-expect-error -- This is currently not used. Should this be `classes` instead? | ||||
|       cssClasses: 'markdown-node-label', | ||||
|       style: node.labelStyle, | ||||
|       addSvgBackground: !!node.icon || !!node.img, | ||||
|     }); | ||||
|   } else { | ||||
|     const labelElement = await createLabel( | ||||
|       sanitizeText(decodeEntities(label), getConfig()), | ||||
|       node.labelStyle, | ||||
|       false, | ||||
|       true | ||||
|     ); | ||||
|     text = labelEl.node()?.appendChild(labelElement); | ||||
|   } | ||||
|  | ||||
|   // Get the size of the label | ||||
|   let bbox = text.getBBox(); | ||||
|   const halfPadding = (node?.padding ?? 0) / 2; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user