diff --git a/packages/mermaid/src/diagrams/treemap/db.ts b/packages/mermaid/src/diagrams/treemap/db.ts index 15cb0cbdc..6a68857f7 100644 --- a/packages/mermaid/src/diagrams/treemap/db.ts +++ b/packages/mermaid/src/diagrams/treemap/db.ts @@ -19,10 +19,11 @@ import type { TreemapDB, TreemapData, TreemapDiagramConfig, TreemapNode } from ' const defaultTreemapData: TreemapData = { nodes: [], levels: new Map(), + outerNodes: [], + classes: new Map(), }; const state = new ImperativeState(() => structuredClone(defaultTreemapData)); -let outerNodes: TreemapNode[] = []; const getConfig = (): Required => { // Use type assertion with unknown as intermediate step @@ -43,7 +44,7 @@ const addNode = (node: TreemapNode, level: number) => { data.levels.set(node, level); if (level === 0) { - outerNodes.push(node); + data.outerNodes.push(node); } // Set the root node if this is a level 0 node and we don't have a root yet @@ -52,11 +53,10 @@ const addNode = (node: TreemapNode, level: number) => { } }; -const getRoot = (): TreemapNode | undefined => ({ name: '', children: outerNodes }); - -let classes = new Map(); +const getRoot = (): TreemapNode | undefined => ({ name: '', children: state.records.outerNodes }); const addClass = (id: string, _style: string) => { + const classes = state.records.classes; const styleClass = classes.get(id) ?? { id, styles: [], textStyles: [] }; classes.set(id, styleClass); @@ -82,18 +82,16 @@ const addClass = (id: string, _style: string) => { classes.set(id, styleClass); }; const getClasses = (): Map => { - return classes; + return state.records.classes; }; const getStylesForClass = (classSelector: string): string[] => { - return classes.get(classSelector)?.styles ?? []; + return state.records.classes.get(classSelector)?.styles ?? []; }; const clear = () => { commonClear(); state.reset(); - outerNodes = []; - classes = new Map(); }; export const db: TreemapDB = { diff --git a/packages/mermaid/src/diagrams/treemap/types.ts b/packages/mermaid/src/diagrams/treemap/types.ts index c1a095a14..8ab973666 100644 --- a/packages/mermaid/src/diagrams/treemap/types.ts +++ b/packages/mermaid/src/diagrams/treemap/types.ts @@ -38,6 +38,8 @@ export interface TreemapData { nodes: TreemapNode[]; levels: Map; root?: TreemapNode; + outerNodes: TreemapNode[]; + classes: Map; } export interface TreemapItem {