diff --git a/docs/config/setup/modules/mermaidAPI.md b/docs/config/setup/modules/mermaidAPI.md index 6337807883..a1992c2254 100644 --- a/docs/config/setup/modules/mermaidAPI.md +++ b/docs/config/setup/modules/mermaidAPI.md @@ -96,7 +96,7 @@ mermaid.initialize(config); #### Defined in -[mermaidAPI.ts:603](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L603) +[mermaidAPI.ts:608](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L608) ## Functions diff --git a/packages/mermaid/src/mermaidAPI.spec.ts b/packages/mermaid/src/mermaidAPI.spec.ts index 32647ee625..b7ff578fbe 100644 --- a/packages/mermaid/src/mermaidAPI.spec.ts +++ b/packages/mermaid/src/mermaidAPI.spec.ts @@ -67,6 +67,7 @@ vi.mock('stylis', () => { }); import { compile, serialize } from 'stylis'; import { decodeEntities, encodeEntities } from './utils.js'; +import { Diagram } from './Diagram.js'; /** * @see https://vitest.dev/guide/mocking.html Mock part of a module @@ -744,4 +745,16 @@ describe('mermaidAPI', () => { }); }); }); + + describe('getDiagramFromText', () => { + it('should clean up comments when present in diagram definition', async () => { + const diagram = await mermaidAPI.getDiagramFromText( + `flowchart LR + %% This is a comment A -- text --> B{node} + A -- text --> B -- text2 --> C` + ); + expect(diagram).toBeInstanceOf(Diagram); + expect(diagram.type).toBe('flowchart-v2'); + }); + }); }); diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index 09d0077803..65310d4fae 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -17,7 +17,7 @@ import { compile, serialize, stringify } from 'stylis'; import { version } from '../package.json'; import * as configApi from './config.js'; import { addDiagrams } from './diagram-api/diagram-orchestration.js'; -import { Diagram, getDiagramFromText } from './Diagram.js'; +import { Diagram, getDiagramFromText as getDiagramFromTextInternal } from './Diagram.js'; import errorRenderer from './diagrams/error/errorRenderer.js'; import { attachFunctions } from './interactionDb.js'; import { log, setLogLevel } from './logger.js'; @@ -28,7 +28,7 @@ import type { MermaidConfig } from './config.type.js'; import { evaluate } from './diagrams/common/common.js'; import isEmpty from 'lodash-es/isEmpty.js'; import { setA11yDiagramInfo, addSVGa11yTitleDescription } from './accessibility.js'; -import type { DiagramStyleClassDef } from './diagram-api/types.js'; +import type { DiagramMetadata, DiagramStyleClassDef } from './diagram-api/types.js'; import { preprocessDiagram } from './preprocess.js'; import { decodeEntities } from './utils.js'; @@ -519,6 +519,11 @@ function initialize(options: MermaidConfig = {}) { addDiagrams(); } +const getDiagramFromText = (text: string, metadata: Pick = {}) => { + const { code } = preprocessDiagram(text); + return getDiagramFromTextInternal(code, metadata); +}; + /** * Add accessibility (a11y) information to the diagram. *