{
  "version": 3,
  "sources": ["../../../src/diagrams/class/classRenderer-v2.ts", "../../../src/diagrams/class/classDiagram-v2.ts"],
  "sourcesContent": ["// @ts-nocheck - don't check until handle it\nimport { select, curveLinear } from 'd3';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { render } from '../../dagre-wrapper/index.js';\nimport utils, { getEdgeId } from '../../utils.js';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils.js';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport common from '../common/common.js';\nimport type { ClassRelation, ClassNote, ClassMap, NamespaceMap } from './classTypes.js';\nimport type { EdgeData } from '../../types.js';\n\nconst sanitizeText = (txt: string) => common.sanitizeText(txt, getConfig());\n\nlet conf = {\n  dividerMargin: 10,\n  padding: 5,\n  textHeight: 10,\n  curve: undefined,\n};\n\ninterface RectParameters {\n  id: string;\n  shape: 'rect';\n  labelStyle: string;\n  domId: string;\n  labelText: string;\n  padding: number | undefined;\n  style?: string;\n}\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n *\n * @param namespaces - Object containing the vertices.\n * @param g - The graph that is to be drawn.\n * @param _id - id of the graph\n * @param diagObj - The diagram object\n */\nexport const addNamespaces = function (\n  namespaces: NamespaceMap,\n  g: graphlib.Graph,\n  _id: string,\n  diagObj: any\n) {\n  log.info('keys:', [...namespaces.keys()]);\n  log.info(namespaces);\n\n  // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n  namespaces.forEach(function (vertex) {\n    // parent node must be one of [rect, roundedWithTitle, noteGroup, divider]\n    const shape = 'rect';\n\n    const node: RectParameters = {\n      shape: shape,\n      id: vertex.id,\n      domId: vertex.domId,\n      labelText: sanitizeText(vertex.id),\n      labelStyle: '',\n      style: 'fill: none; stroke: black',\n      // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n      padding: getConfig().flowchart?.padding ?? getConfig().class?.padding,\n    };\n\n    g.setNode(vertex.id, node);\n    addClasses(vertex.classes, g, _id, diagObj, vertex.id);\n\n    log.info('setNode', node);\n  });\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n *\n * @param classes - Object containing the vertices.\n * @param g - The graph that is to be drawn.\n * @param _id - id of the graph\n * @param diagObj - The diagram object\n * @param parent - id of the parent namespace, if it exists\n */\nexport const addClasses = function (\n  classes: ClassMap,\n  g: graphlib.Graph,\n  _id: string,\n  diagObj: any,\n  parent?: string\n) {\n  log.info('keys:', [...classes.keys()]);\n  log.info(classes);\n\n  // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n  [...classes.values()]\n    .filter((vertex) => vertex.parent === parent)\n    .forEach(function (vertex) {\n      /**\n       * Variable for storing the classes for the vertex\n       */\n      const cssClassStr = vertex.cssClasses.join(' ');\n\n      const styles = getStylesFromArray(vertex.styles);\n\n      // Use vertex id as text in the box if no text is provided by the graph definition\n      const vertexText = vertex.label ?? vertex.id;\n      const radius = 0;\n      const shape = 'class_box';\n\n      // Add the node\n      const node = {\n        labelStyle: styles.labelStyle,\n        shape: shape,\n        labelText: sanitizeText(vertexText),\n        classData: vertex,\n        rx: radius,\n        ry: radius,\n        class: cssClassStr,\n        style: styles.style,\n        id: vertex.id,\n        domId: vertex.domId,\n        tooltip: diagObj.db.getTooltip(vertex.id, parent) || '',\n        haveCallback: vertex.haveCallback,\n        link: vertex.link,\n        width: vertex.type === 'group' ? 500 : undefined,\n        type: vertex.type,\n        // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n        padding: getConfig().flowchart?.padding ?? getConfig().class?.padding,\n      };\n      g.setNode(vertex.id, node);\n\n      if (parent) {\n        g.setParent(vertex.id, parent);\n      }\n\n      log.info('setNode', node);\n    });\n};\n\n/**\n * Function that adds the additional vertices (notes) found during parsing to the graph to be rendered.\n *\n * @param notes - Object containing the additional vertices (notes).\n * @param g - The graph that is to be drawn.\n * @param startEdgeId - starting index for note edge\n * @param classes - Classes\n */\nexport const addNotes = function (\n  notes: ClassNote[],\n  g: graphlib.Graph,\n  startEdgeId: number,\n  classes: ClassMap\n) {\n  log.info(notes);\n\n  notes.forEach(function (note, i) {\n    const vertex = note;\n\n    const cssNoteStr = '';\n\n    const styles = { labelStyle: '', style: '' };\n\n    const vertexText = vertex.text;\n\n    const radius = 0;\n    const shape = 'note';\n    const node = {\n      labelStyle: styles.labelStyle,\n      shape: shape,\n      labelText: sanitizeText(vertexText),\n      noteData: vertex,\n      rx: radius,\n      ry: radius,\n      class: cssNoteStr,\n      style: styles.style,\n      id: vertex.id,\n      domId: vertex.id,\n      tooltip: '',\n      type: 'note',\n      // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n      padding: getConfig().flowchart?.padding ?? getConfig().class?.padding,\n    };\n    g.setNode(vertex.id, node);\n    log.info('setNode', node);\n\n    if (!vertex.class || !classes.has(vertex.class)) {\n      return;\n    }\n    const edgeId = startEdgeId + i;\n\n    const edgeData: EdgeData = {\n      id: `edgeNote${edgeId}`,\n      //Set relationship style and line type\n      classes: 'relation',\n      pattern: 'dotted',\n      // Set link type for rendering\n      arrowhead: 'none',\n      //Set edge extra labels\n      startLabelRight: '',\n      endLabelLeft: '',\n      //Set relation arrow types\n      arrowTypeStart: 'none',\n      arrowTypeEnd: 'none',\n      style: 'fill:none',\n      labelStyle: '',\n      curve: interpolateToCurve(conf.curve, curveLinear),\n    };\n\n    // Add the edge to the graph\n    g.setEdge(vertex.id, vertex.class, edgeData, edgeId);\n  });\n};\n\n/**\n * Add edges to graph based on parsed graph definition\n *\n * @param relations -\n * @param g - The graph object\n */\nexport const addRelations = function (relations: ClassRelation[], g: graphlib.Graph) {\n  const conf = getConfig().flowchart;\n  let cnt = 0;\n\n  relations.forEach(function (edge) {\n    cnt++;\n    const edgeData: EdgeData = {\n      //Set relationship style and line type\n      classes: 'relation',\n      pattern: edge.relation.lineType == 1 ? 'dashed' : 'solid',\n      id: getEdgeId(edge.id1, edge.id2, {\n        prefix: 'id',\n        counter: cnt,\n      }),\n      // Set link type for rendering\n      arrowhead: edge.type === 'arrow_open' ? 'none' : 'normal',\n      //Set edge extra labels\n      startLabelRight: edge.relationTitle1 === 'none' ? '' : edge.relationTitle1,\n      endLabelLeft: edge.relationTitle2 === 'none' ? '' : edge.relationTitle2,\n      //Set relation arrow types\n      arrowTypeStart: getArrowMarker(edge.relation.type1),\n      arrowTypeEnd: getArrowMarker(edge.relation.type2),\n      style: 'fill:none',\n      labelStyle: '',\n      curve: interpolateToCurve(conf?.curve, curveLinear),\n    };\n\n    log.info(edgeData, edge);\n\n    if (edge.style !== undefined) {\n      const styles = getStylesFromArray(edge.style);\n      edgeData.style = styles.style;\n      edgeData.labelStyle = styles.labelStyle;\n    }\n\n    edge.text = edge.title;\n    if (edge.text === undefined) {\n      if (edge.style !== undefined) {\n        edgeData.arrowheadStyle = 'fill: #333';\n      }\n    } else {\n      edgeData.arrowheadStyle = 'fill: #333';\n      edgeData.labelpos = 'c';\n\n      // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n      if (getConfig().flowchart?.htmlLabels ?? getConfig().htmlLabels) {\n        edgeData.labelType = 'html';\n        edgeData.label = '<span class=\"edgeLabel\">' + edge.text + '</span>';\n      } else {\n        edgeData.labelType = 'text';\n        edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n        if (edge.style === undefined) {\n          edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n        }\n\n        edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n      }\n    }\n    // Add the edge to the graph\n    g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n  });\n};\n\n/**\n * Merges the value of `conf` with the passed `cnf`\n *\n * @param cnf - Config to merge\n */\nexport const setConf = function (cnf: any) {\n  conf = {\n    ...conf,\n    ...cnf,\n  };\n};\n\n/**\n * Draws a class diagram in the tag with id: id based on the definition in text.\n *\n * @param text -\n * @param id -\n * @param _version -\n * @param diagObj -\n */\nexport const draw = async function (text: string, id: string, _version: string, diagObj: any) {\n  log.info('Drawing class - ', id);\n\n  // TODO V10: Why flowchart? Might be a mistake when copying.\n  const conf = getConfig().flowchart ?? getConfig().class;\n  const securityLevel = getConfig().securityLevel;\n  log.info('config:', conf);\n  const nodeSpacing = conf?.nodeSpacing ?? 50;\n  const rankSpacing = conf?.rankSpacing ?? 50;\n\n  // Create the input mermaid.graph\n  const g: graphlib.Graph = new graphlib.Graph({\n    multigraph: true,\n    compound: true,\n  })\n    .setGraph({\n      rankdir: diagObj.db.getDirection(),\n      nodesep: nodeSpacing,\n      ranksep: rankSpacing,\n      marginx: 8,\n      marginy: 8,\n    })\n    .setDefaultEdgeLabel(function () {\n      return {};\n    });\n\n  // Fetch the vertices/nodes and edges/links from the parsed graph definition\n  const namespaces: NamespaceMap = diagObj.db.getNamespaces();\n  const classes: ClassMap = diagObj.db.getClasses();\n  const relations: ClassRelation[] = diagObj.db.getRelations();\n  const notes: ClassNote[] = diagObj.db.getNotes();\n  log.info(relations);\n  addNamespaces(namespaces, g, id, diagObj);\n  addClasses(classes, g, id, diagObj);\n  addRelations(relations, g);\n  addNotes(notes, g, relations.length + 1, classes);\n\n  // Set up an SVG group so that we can translate the final graph.\n  let sandboxElement;\n  if (securityLevel === 'sandbox') {\n    sandboxElement = select('#i' + id);\n  }\n  const root =\n    securityLevel === 'sandbox'\n      ? select(sandboxElement!.nodes()[0]!.contentDocument.body)\n      : select('body');\n  const svg = root.select(`[id=\"${id}\"]`);\n\n  // Run the renderer. This is what draws the final graph.\n  const element = root.select('#' + id + ' g');\n  await render(\n    element,\n    g,\n    ['aggregation', 'extension', 'composition', 'dependency', 'lollipop'],\n    'classDiagram',\n    id\n  );\n\n  utils.insertTitle(svg, 'classTitleText', conf?.titleTopMargin ?? 5, diagObj.db.getDiagramTitle());\n\n  setupGraphViewbox(g, svg, conf?.diagramPadding, conf?.useMaxWidth);\n\n  // Add label rects for non html labels\n  if (!conf?.htmlLabels) {\n    const doc =\n      securityLevel === 'sandbox' ? sandboxElement!.nodes()[0]!.contentDocument : document;\n    const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n    for (const label of labels) {\n      // Get dimensions of label\n      const dim = label.getBBox();\n\n      const rect = doc.createElementNS('http://www.w3.org/2000/svg', 'rect');\n      rect.setAttribute('rx', 0);\n      rect.setAttribute('ry', 0);\n      rect.setAttribute('width', dim.width);\n      rect.setAttribute('height', dim.height);\n\n      label.insertBefore(rect, label.firstChild);\n    }\n  }\n};\n\n/**\n * Gets the arrow marker for a type index\n *\n * @param type - The type to look for\n * @returns The arrow marker\n */\nfunction getArrowMarker(type: number) {\n  let marker;\n  switch (type) {\n    case 0:\n      marker = 'aggregation';\n      break;\n    case 1:\n      marker = 'extension';\n      break;\n    case 2:\n      marker = 'composition';\n      break;\n    case 3:\n      marker = 'dependency';\n      break;\n    case 4:\n      marker = 'lollipop';\n      break;\n    default:\n      marker = 'none';\n  }\n  return marker;\n}\n\nexport default {\n  setConf,\n  draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/classDiagram.jison';\nimport db from './classDb.js';\nimport styles from './styles.js';\nimport renderer from './classRenderer-v2.js';\n\nexport const diagram: DiagramDefinition = {\n  parser,\n  db,\n  renderer,\n  styles,\n  init: (cnf) => {\n    if (!cnf.class) {\n      cnf.class = {};\n    }\n    cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n    db.clear();\n  },\n};\n"],
  "mappings": "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",
  "names": ["conf"]
}
