Added classes and outernodes in imperativestate

This commit is contained in:
shubham-mermaid
2025-06-27 15:18:53 +05:30
parent caa04aad8b
commit 8980ca4526
2 changed files with 9 additions and 9 deletions

View File

@@ -19,10 +19,11 @@ import type { TreemapDB, TreemapData, TreemapDiagramConfig, TreemapNode } from '
const defaultTreemapData: TreemapData = { const defaultTreemapData: TreemapData = {
nodes: [], nodes: [],
levels: new Map(), levels: new Map(),
outerNodes: [],
classes: new Map(),
}; };
const state = new ImperativeState<TreemapData>(() => structuredClone(defaultTreemapData)); const state = new ImperativeState<TreemapData>(() => structuredClone(defaultTreemapData));
let outerNodes: TreemapNode[] = [];
const getConfig = (): Required<TreemapDiagramConfig> => { const getConfig = (): Required<TreemapDiagramConfig> => {
// Use type assertion with unknown as intermediate step // Use type assertion with unknown as intermediate step
@@ -43,7 +44,7 @@ const addNode = (node: TreemapNode, level: number) => {
data.levels.set(node, level); data.levels.set(node, level);
if (level === 0) { 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 // 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 }); const getRoot = (): TreemapNode | undefined => ({ name: '', children: state.records.outerNodes });
let classes = new Map<string, DiagramStyleClassDef>();
const addClass = (id: string, _style: string) => { const addClass = (id: string, _style: string) => {
const classes = state.records.classes;
const styleClass = classes.get(id) ?? { id, styles: [], textStyles: [] }; const styleClass = classes.get(id) ?? { id, styles: [], textStyles: [] };
classes.set(id, styleClass); classes.set(id, styleClass);
@@ -82,18 +82,16 @@ const addClass = (id: string, _style: string) => {
classes.set(id, styleClass); classes.set(id, styleClass);
}; };
const getClasses = (): Map<string, DiagramStyleClassDef> => { const getClasses = (): Map<string, DiagramStyleClassDef> => {
return classes; return state.records.classes;
}; };
const getStylesForClass = (classSelector: string): string[] => { const getStylesForClass = (classSelector: string): string[] => {
return classes.get(classSelector)?.styles ?? []; return state.records.classes.get(classSelector)?.styles ?? [];
}; };
const clear = () => { const clear = () => {
commonClear(); commonClear();
state.reset(); state.reset();
outerNodes = [];
classes = new Map();
}; };
export const db: TreemapDB = { export const db: TreemapDB = {

View File

@@ -38,6 +38,8 @@ export interface TreemapData {
nodes: TreemapNode[]; nodes: TreemapNode[];
levels: Map<TreemapNode, number>; levels: Map<TreemapNode, number>;
root?: TreemapNode; root?: TreemapNode;
outerNodes: TreemapNode[];
classes: Map<string, DiagramStyleClassDef>;
} }
export interface TreemapItem { export interface TreemapItem {