{
  "version": 3,
  "sources": ["../../../src/diagrams/treemap/db.ts", "../../../src/diagrams/treemap/utils.ts", "../../../src/diagrams/treemap/parser.ts", "../../../src/diagrams/treemap/renderer.ts", "../../../src/diagrams/treemap/styles.ts", "../../../src/diagrams/treemap/diagram.ts"],
  "sourcesContent": ["import type { DiagramDB } from '../../diagram-api/types.js';\nimport type { DiagramStyleClassDef } from '../../diagram-api/types.js';\nimport type { TreemapDiagramConfig, TreemapNode } from './types.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport { getConfig as commonGetConfig } from '../../config.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { isLabelStyle } from '../../rendering-util/rendering-elements/shapes/handDrawnShapeStyles.js';\nimport {\n  clear as commonClear,\n  getAccDescription,\n  getAccTitle,\n  getDiagramTitle,\n  setAccDescription,\n  setAccTitle,\n  setDiagramTitle,\n} from '../common/commonDb.js';\nexport class TreeMapDB implements DiagramDB {\n  private nodes: TreemapNode[] = [];\n  private levels: Map<TreemapNode, number> = new Map<TreemapNode, number>();\n  private outerNodes: TreemapNode[] = [];\n  private classes: Map<string, DiagramStyleClassDef> = new Map<string, DiagramStyleClassDef>();\n  private root?: TreemapNode;\n\n  public getNodes() {\n    return this.nodes;\n  }\n\n  public getConfig() {\n    const defaultConfig = DEFAULT_CONFIG as unknown as { treemap: Required<TreemapDiagramConfig> };\n    const userConfig = commonGetConfig() as unknown as { treemap?: Partial<TreemapDiagramConfig> };\n    return cleanAndMerge({\n      ...defaultConfig.treemap,\n      ...(userConfig.treemap ?? {}),\n    }) as Required<TreemapDiagramConfig>;\n  }\n\n  public addNode(node: TreemapNode, level: number) {\n    this.nodes.push(node);\n    this.levels.set(node, level);\n    if (level === 0) {\n      this.outerNodes.push(node);\n      this.root ??= node;\n    }\n  }\n\n  public getRoot() {\n    return { name: '', children: this.outerNodes };\n  }\n\n  public addClass(id: string, _style: string) {\n    const styleClass = this.classes.get(id) ?? { id, styles: [], textStyles: [] };\n    const styles = _style.replace(/\\\\,/g, '\u00A7\u00A7\u00A7').replace(/,/g, ';').replace(/\u00A7\u00A7\u00A7/g, ',').split(';');\n    if (styles) {\n      styles.forEach((s) => {\n        if (isLabelStyle(s)) {\n          if (styleClass?.textStyles) {\n            styleClass.textStyles.push(s);\n          } else {\n            styleClass.textStyles = [s];\n          }\n        }\n        if (styleClass?.styles) {\n          styleClass.styles.push(s);\n        } else {\n          styleClass.styles = [s];\n        }\n      });\n    }\n    this.classes.set(id, styleClass);\n  }\n\n  public getClasses() {\n    return this.classes;\n  }\n\n  public getStylesForClass(classSelector: string): string[] {\n    return this.classes.get(classSelector)?.styles ?? [];\n  }\n\n  public clear() {\n    commonClear();\n    this.nodes = [];\n    this.levels = new Map();\n    this.outerNodes = [];\n    this.classes = new Map();\n    this.root = undefined;\n  }\n\n  public setAccTitle = setAccTitle;\n  public getAccTitle = getAccTitle;\n  public setDiagramTitle = setDiagramTitle;\n  public getDiagramTitle = getDiagramTitle;\n  public getAccDescription = getAccDescription;\n  public setAccDescription = setAccDescription;\n}\n", "import type { TreemapNode } from './types.js';\n\n/**\n * Converts a flat array of treemap items into a hierarchical structure\n * @param items - Array of flat treemap items with level, name, type, and optional value\n * @returns A hierarchical tree structure\n */\nexport function buildHierarchy(\n  items: {\n    level: number;\n    name: string;\n    type: string;\n    value?: number;\n    classSelector?: string;\n    cssCompiledStyles?: string[];\n  }[]\n): TreemapNode[] {\n  if (!items.length) {\n    return [];\n  }\n\n  const root: TreemapNode[] = [];\n  const stack: { node: TreemapNode; level: number }[] = [];\n\n  items.forEach((item) => {\n    const node: TreemapNode = {\n      name: item.name,\n      children: item.type === 'Leaf' ? undefined : [],\n    };\n    node.classSelector = item?.classSelector;\n    if (item?.cssCompiledStyles) {\n      node.cssCompiledStyles = item.cssCompiledStyles;\n    }\n\n    if (item.type === 'Leaf' && item.value !== undefined) {\n      node.value = item.value;\n    }\n\n    // Find the right parent for this node\n    while (stack.length > 0 && stack[stack.length - 1].level >= item.level) {\n      stack.pop();\n    }\n\n    if (stack.length === 0) {\n      // This is a root node\n      root.push(node);\n    } else {\n      // Add as child to the parent\n      const parent = stack[stack.length - 1].node;\n      if (parent.children) {\n        parent.children.push(node);\n      } else {\n        parent.children = [node];\n      }\n    }\n\n    // Only add to stack if it can have children\n    if (item.type !== 'Leaf') {\n      stack.push({ node, level: item.level });\n    }\n  });\n\n  return root;\n}\n", "import { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport type { TreemapNode, TreemapAst, TreemapDB } from './types.js';\nimport { buildHierarchy } from './utils.js';\nimport { TreeMapDB } from './db.js';\n\n/**\n * Populates the database with data from the Treemap AST\n * @param ast - The Treemap AST\n */\nconst populate = (ast: TreemapAst, db: TreemapDB) => {\n  // We need to bypass the type checking for populateCommonDb\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  populateCommonDb(ast as any, db);\n\n  const items: {\n    level: number;\n    name: string;\n    type: string;\n    value?: number;\n    classSelector?: string;\n    cssCompiledStyles?: string[];\n  }[] = [];\n\n  // Extract classes and styles from the treemap\n  for (const row of ast.TreemapRows ?? []) {\n    if (row.$type === 'ClassDefStatement') {\n      db.addClass(row.className ?? '', row.styleText ?? '');\n    }\n  }\n\n  // Extract data from each row in the treemap\n  for (const row of ast.TreemapRows ?? []) {\n    const item = row.item;\n\n    if (!item) {\n      continue;\n    }\n\n    const level = row.indent ? parseInt(row.indent) : 0;\n    const name = getItemName(item);\n\n    // Get styles as a string if they exist\n    const styles = item.classSelector ? db.getStylesForClass(item.classSelector) : [];\n    const cssCompiledStyles = styles.length > 0 ? styles : undefined;\n\n    const itemData = {\n      level,\n      name,\n      type: item.$type,\n      value: item.value,\n      classSelector: item.classSelector,\n      cssCompiledStyles,\n    };\n\n    items.push(itemData);\n  }\n\n  // Convert flat structure to hierarchical\n  const hierarchyNodes = buildHierarchy(items);\n\n  // Add all nodes to the database\n  const addNodesRecursively = (nodes: TreemapNode[], level: number) => {\n    for (const node of nodes) {\n      db.addNode(node, level);\n      if (node.children && node.children.length > 0) {\n        addNodesRecursively(node.children, level + 1);\n      }\n    }\n  };\n\n  addNodesRecursively(hierarchyNodes, 0);\n};\n\n/**\n * Gets the name of a treemap item\n * @param item - The treemap item\n * @returns The name of the item\n */\nconst getItemName = (item: { name?: string | number }): string => {\n  return item.name ? String(item.name) : '';\n};\n\nexport const parser: ParserDefinition = {\n  // @ts-expect-error - TreeMapDB is not assignable to DiagramDB\n  parser: { yy: undefined },\n  parse: async (text: string): Promise<void> => {\n    try {\n      // Use a generic parse that accepts any diagram type\n\n      const parseFunc = parse as (diagramType: string, text: string) => Promise<TreemapAst>;\n      const ast = await parseFunc('treemap', text);\n      log.debug('Treemap AST:', ast);\n      const db = parser.parser?.yy;\n      if (!(db instanceof TreeMapDB)) {\n        throw new Error(\n          'parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.'\n        );\n      }\n      populate(ast, db);\n    } catch (error) {\n      log.error('Error parsing treemap:', error);\n      throw error;\n    }\n  },\n};\n", "import type { Diagram } from '../../Diagram.js';\nimport type {\n  DiagramRenderer,\n  DiagramStyleClassDef,\n  DrawDefinition,\n} from '../../diagram-api/types.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { TreemapDB, TreemapNode } from './types.js';\nimport { scaleOrdinal, treemap, hierarchy, format, select } from 'd3';\nimport { styles2String } from '../../rendering-util/rendering-elements/shapes/handDrawnShapeStyles.js';\nimport { getConfig } from '../../config.js';\nimport { log } from '../../logger.js';\nimport type { Node } from '../../rendering-util/types.js';\n\nconst DEFAULT_INNER_PADDING = 10; // Default for inner padding between cells/sections\nconst SECTION_INNER_PADDING = 10; // Default for inner padding between cells/sections\nconst SECTION_HEADER_HEIGHT = 25;\n\n/**\n * Draws the treemap diagram\n */\nconst draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => {\n  const treemapDb = diagram.db as TreemapDB;\n  const config = treemapDb.getConfig();\n  const treemapInnerPadding = config.padding ?? DEFAULT_INNER_PADDING;\n  const title = treemapDb.getDiagramTitle();\n  const root = treemapDb.getRoot();\n  const { themeVariables } = getConfig();\n  if (!root) {\n    return;\n  }\n\n  // Define dimensions\n  const titleHeight = title ? 30 : 0;\n\n  const svg = selectSvgElement(id);\n  // Use config dimensions or defaults\n  const width = config.nodeWidth ? config.nodeWidth * SECTION_INNER_PADDING : 960;\n  const height = config.nodeHeight ? config.nodeHeight * SECTION_INNER_PADDING : 500;\n\n  const svgWidth = width;\n  const svgHeight = height + titleHeight;\n\n  // Set the SVG size\n  svg.attr('viewBox', `0 0 ${svgWidth} ${svgHeight}`);\n  configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);\n\n  // Format for displaying values\n  let valueFormat;\n  try {\n    // Handle special format patterns\n    const formatStr = config.valueFormat || ',';\n\n    // Handle special cases that aren't directly supported by D3 format\n    if (formatStr === '$0,0') {\n      // Currency with thousands separator\n      valueFormat = (value: number) => '$' + format(',')(value);\n    } else if (formatStr.startsWith('$') && formatStr.includes(',')) {\n      // Other dollar formats with commas\n      const precision = /\\.\\d+/.exec(formatStr);\n      const precisionStr = precision ? precision[0] : '';\n      valueFormat = (value: number) => '$' + format(',' + precisionStr)(value);\n    } else if (formatStr.startsWith('$')) {\n      // Simple dollar sign prefix\n      const restOfFormat = formatStr.substring(1);\n      valueFormat = (value: number) => '$' + format(restOfFormat || '')(value);\n    } else {\n      // Standard D3 format\n      valueFormat = format(formatStr);\n    }\n  } catch (error) {\n    log.error('Error creating format function:', error);\n    // Fallback to default format\n    valueFormat = format(',');\n  }\n\n  // Create color scale\n  const colorScale = scaleOrdinal<string>().range([\n    'transparent',\n    themeVariables.cScale0,\n    themeVariables.cScale1,\n    themeVariables.cScale2,\n    themeVariables.cScale3,\n    themeVariables.cScale4,\n    themeVariables.cScale5,\n    themeVariables.cScale6,\n    themeVariables.cScale7,\n    themeVariables.cScale8,\n    themeVariables.cScale9,\n    themeVariables.cScale10,\n    themeVariables.cScale11,\n  ]);\n  const colorScalePeer = scaleOrdinal<string>().range([\n    'transparent',\n    themeVariables.cScalePeer0,\n    themeVariables.cScalePeer1,\n    themeVariables.cScalePeer2,\n    themeVariables.cScalePeer3,\n    themeVariables.cScalePeer4,\n    themeVariables.cScalePeer5,\n    themeVariables.cScalePeer6,\n    themeVariables.cScalePeer7,\n    themeVariables.cScalePeer8,\n    themeVariables.cScalePeer9,\n    themeVariables.cScalePeer10,\n    themeVariables.cScalePeer11,\n  ]);\n  const colorScaleLabel = scaleOrdinal<string>().range([\n    themeVariables.cScaleLabel0,\n    themeVariables.cScaleLabel1,\n    themeVariables.cScaleLabel2,\n    themeVariables.cScaleLabel3,\n    themeVariables.cScaleLabel4,\n    themeVariables.cScaleLabel5,\n    themeVariables.cScaleLabel6,\n    themeVariables.cScaleLabel7,\n    themeVariables.cScaleLabel8,\n    themeVariables.cScaleLabel9,\n    themeVariables.cScaleLabel10,\n    themeVariables.cScaleLabel11,\n  ]);\n\n  // Draw the title if it exists\n  if (title) {\n    svg\n      .append('text')\n      .attr('x', svgWidth / 2)\n      .attr('y', titleHeight / 2)\n      .attr('class', 'treemapTitle')\n      .attr('text-anchor', 'middle')\n      .attr('dominant-baseline', 'middle')\n      .text(title);\n  }\n\n  // Create a main container for the treemap, translated below the title\n  const g = svg\n    .append('g')\n    .attr('transform', `translate(0, ${titleHeight})`)\n    .attr('class', 'treemapContainer');\n\n  // Create the hierarchical structure\n  const hierarchyRoot = hierarchy<TreemapNode>(root)\n    .sum((d) => d.value ?? 0)\n    .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n  // Create treemap layout\n  const treemapLayout = treemap<TreemapNode>()\n    .size([width, height])\n    .paddingTop((d) =>\n      d.children && d.children.length > 0 ? SECTION_HEADER_HEIGHT + SECTION_INNER_PADDING : 0\n    )\n    .paddingInner(treemapInnerPadding)\n    .paddingLeft((d) => (d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0))\n    .paddingRight((d) => (d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0))\n    .paddingBottom((d) => (d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0))\n    .round(true);\n\n  // Apply the treemap layout to the hierarchy\n  const treemapData = treemapLayout(hierarchyRoot);\n\n  // Draw section nodes (branches - nodes with children)\n  const branchNodes = treemapData.descendants().filter((d) => d.children && d.children.length > 0);\n  const sections = g\n    .selectAll('.treemapSection')\n    .data(branchNodes)\n    .enter()\n    .append('g')\n    .attr('class', 'treemapSection')\n    .attr('transform', (d) => `translate(${d.x0},${d.y0})`);\n\n  // Add section header background\n  sections\n    .append('rect')\n    .attr('width', (d) => d.x1 - d.x0)\n    .attr('height', SECTION_HEADER_HEIGHT)\n    .attr('class', 'treemapSectionHeader')\n    .attr('fill', 'none')\n    .attr('fill-opacity', 0.6)\n    .attr('stroke-width', 0.6)\n    .attr('style', (d) => {\n      // Hide the label for the root section\n      if (d.depth === 0) {\n        return 'display: none;';\n      }\n      return '';\n    });\n\n  // Add clip paths for section headers to prevent text overflow\n  sections\n    .append('clipPath')\n    .attr('id', (_d, i) => `clip-section-${id}-${i}`)\n    .append('rect')\n    .attr('width', (d) => Math.max(0, d.x1 - d.x0 - 12)) // 6px padding on each side\n    .attr('height', SECTION_HEADER_HEIGHT);\n\n  sections\n    .append('rect')\n    .attr('width', (d) => d.x1 - d.x0)\n    .attr('height', (d) => d.y1 - d.y0)\n    .attr('class', (_d, i) => {\n      return `treemapSection section${i}`;\n    })\n    .attr('fill', (d) => colorScale(d.data.name))\n    .attr('fill-opacity', 0.6)\n    .attr('stroke', (d) => colorScalePeer(d.data.name))\n    .attr('stroke-width', 2.0)\n    .attr('stroke-opacity', 0.4)\n    .attr('style', (d) => {\n      // Hide the label for the root section\n      if (d.depth === 0) {\n        return 'display: none;';\n      }\n      const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n      return styles.nodeStyles + ';' + styles.borderStyles.join(';');\n    });\n  // Add section labels\n  sections\n    .append('text')\n    .attr('class', 'treemapSectionLabel')\n    .attr('x', 6) // Keep original left padding\n    .attr('y', SECTION_HEADER_HEIGHT / 2)\n    .attr('dominant-baseline', 'middle')\n    .text((d) => (d.depth === 0 ? '' : d.data.name)) // Skip label for root section\n    .attr('font-weight', 'bold')\n    .attr('style', (d) => {\n      // Hide the label for the root section\n      if (d.depth === 0) {\n        return 'display: none;';\n      }\n      const labelStyles =\n        'dominant-baseline: middle; font-size: 12px; fill:' +\n        colorScaleLabel(d.data.name) +\n        '; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;';\n      const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n      return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n    })\n    .each(function (d) {\n      // Skip processing for root section\n      if (d.depth === 0) {\n        return;\n      }\n      const self = select(this);\n      const originalText = d.data.name;\n      self.text(originalText);\n      const totalHeaderWidth = d.x1 - d.x0;\n      const labelXPosition = 6;\n      let spaceForTextContent;\n      if (config.showValues !== false && d.value) {\n        const valueEndsAtXRelative = totalHeaderWidth - 10;\n        const estimatedValueTextActualWidth = 30;\n        const gapBetweenLabelAndValue = 10;\n        const labelMustEndBeforeX =\n          valueEndsAtXRelative - estimatedValueTextActualWidth - gapBetweenLabelAndValue;\n        spaceForTextContent = labelMustEndBeforeX - labelXPosition;\n      } else {\n        const labelOwnRightPadding = 6;\n        spaceForTextContent = totalHeaderWidth - labelXPosition - labelOwnRightPadding;\n      }\n      const minimumWidthToDisplay = 15;\n      const actualAvailableWidth = Math.max(minimumWidthToDisplay, spaceForTextContent);\n      const textNode = self.node()!;\n      const currentTextContentLength = textNode.getComputedTextLength();\n      if (currentTextContentLength > actualAvailableWidth) {\n        const ellipsis = '...';\n        let currentTruncatedText = originalText;\n        while (currentTruncatedText.length > 0) {\n          currentTruncatedText = originalText.substring(0, currentTruncatedText.length - 1);\n          if (currentTruncatedText.length === 0) {\n            self.text(ellipsis);\n            if (textNode.getComputedTextLength() > actualAvailableWidth) {\n              self.text('');\n            }\n            break;\n          }\n          self.text(currentTruncatedText + ellipsis);\n          if (textNode.getComputedTextLength() <= actualAvailableWidth) {\n            break;\n          }\n        }\n      }\n    });\n\n  // Add section values if enabled\n  if (config.showValues !== false) {\n    sections\n      .append('text')\n      .attr('class', 'treemapSectionValue')\n      .attr('x', (d) => d.x1 - d.x0 - 10)\n      .attr('y', SECTION_HEADER_HEIGHT / 2)\n      .attr('text-anchor', 'end')\n      .attr('dominant-baseline', 'middle')\n      .text((d) => (d.value ? valueFormat(d.value) : ''))\n      .attr('font-style', 'italic')\n      .attr('style', (d) => {\n        // Hide the value for the root section\n        if (d.depth === 0) {\n          return 'display: none;';\n        }\n        const labelStyles =\n          'text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:' +\n          colorScaleLabel(d.data.name) +\n          '; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;';\n        const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n        return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n      });\n  }\n\n  // Draw the leaf nodes\n  const leafNodes = treemapData.leaves();\n  const cell = g\n    .selectAll('.treemapLeafGroup')\n    .data(leafNodes)\n    .enter()\n    .append('g')\n    .attr('class', (d, i) => {\n      return `treemapNode treemapLeafGroup leaf${i}${d.data.classSelector ? ` ${d.data.classSelector}` : ''}x`;\n    })\n    .attr('transform', (d) => `translate(${d.x0},${d.y0})`);\n\n  // Add rectangle for each leaf node\n  cell\n    .append('rect')\n    .attr('width', (d) => d.x1 - d.x0)\n    .attr('height', (d) => d.y1 - d.y0)\n    .attr('class', 'treemapLeaf')\n    .attr('fill', (d) => {\n      // Leaves inherit color from their immediate parent section's name.\n      // If a leaf is the root itself (no parent), it uses its own name.\n      return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n    })\n    .attr('style', (d) => {\n      const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n      return styles.nodeStyles;\n    })\n    .attr('fill-opacity', 0.3)\n    .attr('stroke', (d) => {\n      // Leaves inherit color from their immediate parent section's name.\n      // If a leaf is the root itself (no parent), it uses its own name.\n      return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n    })\n    .attr('stroke-width', 3.0);\n\n  // Add clip paths to prevent text from extending outside nodes\n  cell\n    .append('clipPath')\n    .attr('id', (_d, i) => `clip-${id}-${i}`)\n    .append('rect')\n    .attr('width', (d) => Math.max(0, d.x1 - d.x0 - 4))\n    .attr('height', (d) => Math.max(0, d.y1 - d.y0 - 4));\n\n  // Add node labels with clipping\n  const leafLabels = cell\n    .append('text')\n    .attr('class', 'treemapLabel')\n    .attr('x', (d) => (d.x1 - d.x0) / 2)\n    .attr('y', (d) => (d.y1 - d.y0) / 2)\n    // .style('fill', (d) => colorScaleLabel(d.data.name))\n    .attr('style', (d) => {\n      const labelStyles =\n        'text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:' +\n        colorScaleLabel(d.data.name) +\n        ';';\n      const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n      return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n    })\n    .attr('clip-path', (_d, i) => `url(#clip-${id}-${i})`)\n    .text((d) => d.data.name);\n\n  leafLabels.each(function (d) {\n    const self = select(this);\n    const nodeWidth = d.x1 - d.x0;\n    const nodeHeight = d.y1 - d.y0;\n    const textNode = self.node()!;\n\n    const padding = 4;\n    const availableWidth = nodeWidth - 2 * padding;\n    const availableHeight = nodeHeight - 2 * padding;\n\n    if (availableWidth < 10 || availableHeight < 10) {\n      self.style('display', 'none');\n      return;\n    }\n\n    let currentLabelFontSize = parseInt(self.style('font-size'), 10);\n    const minLabelFontSize = 8;\n    const originalValueRelFontSize = 28; // Original font size of value, for max cap\n    const valueScaleFactor = 0.6; // Value font size as a factor of label font size\n    const minValueFontSize = 6;\n    const spacingBetweenLabelAndValue = 2;\n\n    // 1. Adjust label font size to fit width\n    while (\n      textNode.getComputedTextLength() > availableWidth &&\n      currentLabelFontSize > minLabelFontSize\n    ) {\n      currentLabelFontSize--;\n      self.style('font-size', `${currentLabelFontSize}px`);\n    }\n\n    // 2. Adjust both label and prospective value font size to fit combined height\n    let prospectiveValueFontSize = Math.max(\n      minValueFontSize,\n      Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n    );\n    let combinedHeight =\n      currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n\n    while (combinedHeight > availableHeight && currentLabelFontSize > minLabelFontSize) {\n      currentLabelFontSize--;\n      prospectiveValueFontSize = Math.max(\n        minValueFontSize,\n        Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n      );\n      if (\n        prospectiveValueFontSize < minValueFontSize &&\n        currentLabelFontSize === minLabelFontSize\n      ) {\n        break;\n      } // Avoid shrinking label if value is already at min\n      self.style('font-size', `${currentLabelFontSize}px`);\n      combinedHeight =\n        currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n      if (prospectiveValueFontSize <= minValueFontSize && combinedHeight > availableHeight) {\n        // If value is at min and still doesn't fit, label might need to shrink more alone\n        // This might lead to label being too small for its own text, checked next\n      }\n    }\n\n    // Update label font size based on height adjustment\n    self.style('font-size', `${currentLabelFontSize}px`);\n\n    // 3. Final visibility check for the label\n    if (\n      textNode.getComputedTextLength() > availableWidth ||\n      currentLabelFontSize < minLabelFontSize ||\n      availableHeight < currentLabelFontSize\n    ) {\n      self.style('display', 'none');\n      // If label is hidden, value will be hidden by its own .each() loop\n    }\n  });\n\n  // Add node values with clipping\n  if (config.showValues !== false) {\n    const leafValues = cell\n      .append('text')\n      .attr('class', 'treemapValue')\n      .attr('x', (d) => (d.x1 - d.x0) / 2)\n      .attr('y', function (d) {\n        // Y position calculated dynamically in leafValues.each based on final label metrics\n        return (d.y1 - d.y0) / 2; // Placeholder, will be overwritten\n      })\n      .attr('style', (d) => {\n        const labelStyles =\n          'text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:' +\n          colorScaleLabel(d.data.name) +\n          ';';\n        const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n        return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n      })\n\n      .attr('clip-path', (_d, i) => `url(#clip-${id}-${i})`)\n      .text((d) => (d.value ? valueFormat(d.value) : ''));\n\n    leafValues.each(function (d) {\n      const valueTextElement = select(this);\n      const parentCellNode = this.parentNode as SVGGElement | null;\n\n      if (!parentCellNode) {\n        valueTextElement.style('display', 'none');\n        return;\n      }\n\n      const labelElement = select(parentCellNode).select<SVGTextElement>('.treemapLabel');\n\n      if (labelElement.empty() || labelElement.style('display') === 'none') {\n        valueTextElement.style('display', 'none');\n        return;\n      }\n\n      const finalLabelFontSize = parseFloat(labelElement.style('font-size'));\n      const originalValueFontSize = 28; // From initial style setting\n      const valueScaleFactor = 0.6;\n      const minValueFontSize = 6;\n      const spacingBetweenLabelAndValue = 2;\n\n      const actualValueFontSize = Math.max(\n        minValueFontSize,\n        Math.min(originalValueFontSize, Math.round(finalLabelFontSize * valueScaleFactor))\n      );\n      valueTextElement.style('font-size', `${actualValueFontSize}px`);\n\n      const labelCenterY = (d.y1 - d.y0) / 2;\n      const valueTopActualY = labelCenterY + finalLabelFontSize / 2 + spacingBetweenLabelAndValue;\n      valueTextElement.attr('y', valueTopActualY);\n\n      const nodeWidth = d.x1 - d.x0;\n      const nodeTotalHeight = d.y1 - d.y0;\n      const cellBottomPadding = 4;\n      const maxValueBottomY = nodeTotalHeight - cellBottomPadding;\n      const availableWidthForValue = nodeWidth - 2 * 4; // padding for value text\n\n      if (\n        valueTextElement.node()!.getComputedTextLength() > availableWidthForValue ||\n        valueTopActualY + actualValueFontSize > maxValueBottomY ||\n        actualValueFontSize < minValueFontSize\n      ) {\n        valueTextElement.style('display', 'none');\n      } else {\n        valueTextElement.style('display', null);\n      }\n    });\n  }\n  const diagramPadding = config.diagramPadding ?? 8;\n  setupViewPortForSVG(svg, diagramPadding, 'flowchart', config?.useMaxWidth || false);\n};\n\nconst getClasses = function (\n  _text: string,\n  diagramObj: Pick<Diagram, 'db'>\n): Map<string, DiagramStyleClassDef> {\n  return (diagramObj.db as TreemapDB).getClasses();\n};\nexport const renderer: DiagramRenderer = { draw, getClasses };\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport type { TreemapStyleOptions } from './types.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport { getConfig as getConfigAPI } from '../../config.js';\n\nconst defaultTreemapStyleOptions: TreemapStyleOptions = {\n  sectionStrokeColor: 'black',\n  sectionStrokeWidth: '1',\n  sectionFillColor: '#efefef',\n  leafStrokeColor: 'black',\n  leafStrokeWidth: '1',\n  leafFillColor: '#efefef',\n  labelFontSize: '12px',\n  valueFontSize: '10px',\n  titleFontSize: '14px',\n};\n\nexport const getStyles: DiagramStylesProvider = ({\n  treemap,\n}: { treemap?: TreemapStyleOptions } = {}) => {\n  const defaultThemeVariables = getThemeVariables();\n  const currentConfig = getConfigAPI();\n  const themeVariables = cleanAndMerge(defaultThemeVariables, currentConfig.themeVariables);\n\n  const options = cleanAndMerge(defaultTreemapStyleOptions, treemap);\n\n  const titleColor = options.titleColor ?? themeVariables.titleColor;\n  const labelColor = options.labelColor ?? themeVariables.textColor;\n  const valueColor = options.valueColor ?? themeVariables.textColor;\n\n  return `\n  .treemapNode.section {\n    stroke: ${options.sectionStrokeColor};\n    stroke-width: ${options.sectionStrokeWidth};\n    fill: ${options.sectionFillColor};\n  }\n  .treemapNode.leaf {\n    stroke: ${options.leafStrokeColor};\n    stroke-width: ${options.leafStrokeWidth};\n    fill: ${options.leafFillColor};\n  }\n  .treemapLabel {\n    fill: ${labelColor};\n    font-size: ${options.labelFontSize};\n  }\n  .treemapValue {\n    fill: ${valueColor};\n    font-size: ${options.valueFontSize};\n  }\n  .treemapTitle {\n    fill: ${titleColor};\n    font-size: ${options.titleFontSize};\n  }\n  `;\n};\n\nexport default getStyles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { TreeMapDB } from './db.js';\nimport { parser } from './parser.js';\nimport { renderer } from './renderer.js';\nimport styles from './styles.js';\n\nexport const diagram: DiagramDefinition = {\n  parser,\n  get db() {\n    return new TreeMapDB();\n  },\n  renderer,\n  styles,\n};\n"],
  "mappings": "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",
  "names": ["TreeMapDB", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "__name", "defaultConfig", "defaultConfig_default", "userConfig", "getConfig", "cleanAndMerge", "node", "level", "id", "_style", "styleClass", "styles", "isLabelStyle", "classSelector", "clear", "buildHierarchy", "items", "root", "stack", "item", "node", "parent", "__name", "populate", "__name", "ast", "db", "populateCommonDb", "items", "row", "item", "level", "name", "getItemName", "styles", "cssCompiledStyles", "itemData", "hierarchyNodes", "buildHierarchy", "addNodesRecursively", "nodes", "node", "parser", "text", "parse", "log", "TreeMapDB", "error", "DEFAULT_INNER_PADDING", "SECTION_INNER_PADDING", "SECTION_HEADER_HEIGHT", "draw", "__name", "_text", "id", "_version", "diagram", "treemapDb", "config", "treemapInnerPadding", "title", "root", "themeVariables", "getConfig", "titleHeight", "svg", "selectSvgElement", "width", "height", "svgWidth", "svgHeight", "configureSvgSize", "valueFormat", "formatStr", "value", "format", "precision", "precisionStr", "restOfFormat", "error", "log", "colorScale", "ordinal", "colorScalePeer", "colorScaleLabel", "g", "hierarchyRoot", "hierarchy", "d", "a", "b", "treemapData", "treemap_default", "branchNodes", "sections", "_d", "i", "styles", "styles2String", "labelStyles", "self", "select_default", "originalText", "totalHeaderWidth", "labelXPosition", "spaceForTextContent", "actualAvailableWidth", "textNode", "currentTruncatedText", "leafNodes", "cell", "nodeWidth", "nodeHeight", "padding", "availableWidth", "availableHeight", "currentLabelFontSize", "minLabelFontSize", "originalValueRelFontSize", "valueScaleFactor", "minValueFontSize", "spacingBetweenLabelAndValue", "prospectiveValueFontSize", "combinedHeight", "valueTextElement", "parentCellNode", "labelElement", "finalLabelFontSize", "originalValueFontSize", "actualValueFontSize", "valueTopActualY", "maxValueBottomY", "availableWidthForValue", "diagramPadding", "setupViewPortForSVG", "getClasses", "diagramObj", "renderer", "defaultTreemapStyleOptions", "getStyles", "__name", "treemap", "defaultThemeVariables", "getThemeVariables", "currentConfig", "getConfig", "themeVariables", "cleanAndMerge", "options", "titleColor", "labelColor", "valueColor", "styles_default", "diagram", "parser", "TreeMapDB", "renderer", "styles_default"]
}
