From 606ecf89905bdc313305921940a5f125e946579d Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:42:10 +0000 Subject: [PATCH 1/5] [autofix.ci] apply automated fixes --- docs/config/setup/interfaces/mermaid.RenderResult.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/config/setup/interfaces/mermaid.RenderResult.md b/docs/config/setup/interfaces/mermaid.RenderResult.md index 4c5604022..f9954437a 100644 --- a/docs/config/setup/interfaces/mermaid.RenderResult.md +++ b/docs/config/setup/interfaces/mermaid.RenderResult.md @@ -39,7 +39,7 @@ bindFunctions?.(div); // To call bindFunctions only if it's present. #### Defined in -[packages/mermaid/src/types.ts:90](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L90) +[packages/mermaid/src/types.ts:95](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L95) --- @@ -51,7 +51,7 @@ The diagram type, e.g. 'flowchart', 'sequence', etc. #### Defined in -[packages/mermaid/src/types.ts:80](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L80) +[packages/mermaid/src/types.ts:85](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L85) --- @@ -63,4 +63,4 @@ The svg code for the rendered graph. #### Defined in -[packages/mermaid/src/types.ts:76](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L76) +[packages/mermaid/src/types.ts:81](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/types.ts#L81) From 4bc70b732560102d481110f4344b5a4c6776c335 Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Mon, 21 Oct 2024 22:06:30 +0900 Subject: [PATCH 2/5] refactor: use more standard types See: https://github.com/mermaid-js/mermaid/pull/5974#discussion_r1806473749 See: https://github.com/mermaid-js/mermaid/pull/5974#discussion_r1808511738 Co-authored-by: saurabhg772244 --- packages/mermaid-layout-elk/src/render.ts | 2 +- .../src/rendering-util/rendering-elements/nodes.ts | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/mermaid-layout-elk/src/render.ts b/packages/mermaid-layout-elk/src/render.ts index eddf2ce1a..901f76522 100644 --- a/packages/mermaid-layout-elk/src/render.ts +++ b/packages/mermaid-layout-elk/src/render.ts @@ -3,7 +3,7 @@ import ELK from 'elkjs/lib/elk.bundled.js'; import type { InternalHelpers, LayoutData, RenderOptions, SVG, SVGGroup } from 'mermaid'; import { type TreeData, findCommonAncestor } from './find-common-ancestor.js'; -type Node = LayoutData['nodes'][0]; +type Node = LayoutData['nodes'][number]; interface NodeWithVertex extends Omit { children?: unknown[]; diff --git a/packages/mermaid/src/rendering-util/rendering-elements/nodes.ts b/packages/mermaid/src/rendering-util/rendering-elements/nodes.ts index 45e48beb3..071776df2 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/nodes.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/nodes.ts @@ -1,7 +1,7 @@ import { log } from '../../logger.js'; import { shapes } from './shapes.js'; -import type { Node } from '../types.js'; -import type { MermaidConfig, SVGGroup } from '../../mermaid.js'; +import type { Node, ShapeRenderOptions } from '../types.js'; +import type { SVGGroup } from '../../mermaid.js'; import type { D3Selection } from '../../types.js'; import type { graphlib } from 'dagre-d3-es'; @@ -10,11 +10,7 @@ type NodeElement = D3Selection | Awaited>; const nodeElems = new Map(); -export async function insertNode( - elem: SVGGroup, - node: Node, - renderOptions: { config: MermaidConfig; dir: Node['dir'] } -) { +export async function insertNode(elem: SVGGroup, node: Node, renderOptions: ShapeRenderOptions) { let newEl: NodeElement | undefined; let el; From 6cc0132e0a192c4101c86083f34ca3af7d6ebe23 Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Mon, 21 Oct 2024 22:10:57 +0900 Subject: [PATCH 3/5] refactor(elk): add `LabelData` type for layout-elk I don't know what exactly the type does or is for, but I've tried to type it to what it seems to be. --- packages/mermaid-layout-elk/src/render.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/mermaid-layout-elk/src/render.ts b/packages/mermaid-layout-elk/src/render.ts index 901f76522..49a5863c6 100644 --- a/packages/mermaid-layout-elk/src/render.ts +++ b/packages/mermaid-layout-elk/src/render.ts @@ -5,9 +5,16 @@ import { type TreeData, findCommonAncestor } from './find-common-ancestor.js'; type Node = LayoutData['nodes'][number]; +interface LabelData { + width: number; + height: number; + wrappingWidth?: number; + labelNode?: SVGGElement | null; +} + interface NodeWithVertex extends Omit { children?: unknown[]; - labelData?: any; + labelData?: LabelData; domId?: Node['domId'] | SVGGroup | d3.Selection; } @@ -38,7 +45,7 @@ export const render = async ( nodeArr: Node[], node: Node ) => { - const labelData: any = { width: 0, height: 0 }; + const labelData: LabelData = { width: 0, height: 0 }; const config = getConfig(); From bb97fdbd1e539f9585a613844b06b6593d09e44d Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Tue, 22 Oct 2024 21:30:56 +0900 Subject: [PATCH 4/5] refactor: use `parseFontSize()` Handle `NaN` values by using `parseFontSize()`. Suggested-by: https://github.com/mermaid-js/mermaid/pull/5974#discussion_r1810570967 --- .../src/rendering-util/rendering-elements/shapes/util.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/util.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/util.ts index fcae715d8..883129e9a 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/util.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/util.ts @@ -2,8 +2,9 @@ import { createText } from '../../createText.js'; import type { Node } from '../../types.js'; import { getConfig } from '../../../diagram-api/diagramAPI.js'; import { select } from 'd3'; +import defaultConfig from '../../../defaultConfig.js'; import { evaluate, sanitizeText } from '../../../diagrams/common/common.js'; -import { decodeEntities, handleUndefinedAttr } from '../../../utils.js'; +import { decodeEntities, handleUndefinedAttr, parseFontSize } from '../../../utils.js'; import type { D3Selection, Point } from '../../../types.js'; export const labelHelper = async ( @@ -77,10 +78,7 @@ export const labelHelper = async ( ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize; const enlargingFactor = 5; - const parsedBodyFontSize = - typeof bodyFontSize === 'number' - ? bodyFontSize - : parseInt(bodyFontSize ?? '', 10); + const [parsedBodyFontSize = defaultConfig.fontSize] = parseFontSize(bodyFontSize); const width = parsedBodyFontSize * enlargingFactor + 'px'; img.style.minWidth = width; img.style.maxWidth = width; From f8746bee0454b01378726d04f9c65bbc3974eb3a Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Tue, 22 Oct 2024 21:47:22 +0900 Subject: [PATCH 5/5] refactor: move `MaybePromise` type to src/types.ts Suggested-by: https://github.com/mermaid-js/mermaid/pull/5974#discussion_r1810562136 Co-authored-by: Sidharth Vinod --- .../src/rendering-util/rendering-elements/shapes.ts | 3 +-- packages/mermaid/src/types.ts | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes.ts index acda544e2..89beb85e0 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes.ts @@ -1,5 +1,5 @@ import type { Entries } from 'type-fest'; -import type { D3Selection } from '../../types.js'; +import type { D3Selection, MaybePromise } from '../../types.js'; import type { Node, ShapeRenderOptions } from '../types.js'; import { anchor } from './shapes/anchor.js'; import { bowTieRect } from './shapes/bowTieRect.js'; @@ -58,7 +58,6 @@ import { waveEdgedRectangle } from './shapes/waveEdgedRectangle.js'; import { waveRectangle } from './shapes/waveRectangle.js'; import { windowPane } from './shapes/windowPane.js'; -type MaybePromise = T | Promise; type ShapeHandler = ( parent: D3Selection, node: Node, diff --git a/packages/mermaid/src/types.ts b/packages/mermaid/src/types.ts index 891071b10..891231772 100644 --- a/packages/mermaid/src/types.ts +++ b/packages/mermaid/src/types.ts @@ -94,3 +94,10 @@ export interface RenderResult { */ bindFunctions?: (element: Element) => void; } + +/** + * Can be converted back to `T` by awaiting/`Awaited`. + * + * This is useful for function types that may be either synchronous or asynchronous. + */ +export type MaybePromise = T | Promise;