File size: 28,709 Bytes
bc20498
 
 
 
 
 
 
1
2
3
4
5
6
7
8
{
  "version": 3,
  "sources": ["../../dagre-d3-es/src/dagre-js/util.js", "../../dagre-d3-es/src/dagre-js/label/add-html-label.js", "../../mermaid/dist/styles-483fbfea.js"],
  "sourcesContent": ["import * as _ from 'lodash-es';\n\n// Public utility functions\nexport { isSubgraph, edgeToId, applyStyle, applyClass, applyTransition };\n\n/*\n * Returns true if the specified node in the graph is a subgraph node. A\n * subgraph node is one that contains other nodes.\n */\nfunction isSubgraph(g, v) {\n  return !!g.children(v).length;\n}\n\nfunction edgeToId(e) {\n  return escapeId(e.v) + ':' + escapeId(e.w) + ':' + escapeId(e.name);\n}\n\nvar ID_DELIM = /:/g;\nfunction escapeId(str) {\n  return str ? String(str).replace(ID_DELIM, '\\\\:') : '';\n}\n\nfunction applyStyle(dom, styleFn) {\n  if (styleFn) {\n    dom.attr('style', styleFn);\n  }\n}\n\nfunction applyClass(dom, classFn, otherClasses) {\n  if (classFn) {\n    dom.attr('class', classFn).attr('class', otherClasses + ' ' + dom.attr('class'));\n  }\n}\n\nfunction applyTransition(selection, g) {\n  var graph = g.graph();\n\n  if (_.isPlainObject(graph)) {\n    var transition = graph.transition;\n    if (_.isFunction(transition)) {\n      return transition(selection);\n    }\n  }\n\n  return selection;\n}\n", "import * as util from '../util.js';\n\nexport { addHtmlLabel };\n\nfunction addHtmlLabel(root, node) {\n  var fo = root.append('foreignObject').attr('width', '100000');\n\n  var div = fo.append('xhtml:div');\n  div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n  var label = node.label;\n  switch (typeof label) {\n    case 'function':\n      div.insert(label);\n      break;\n    case 'object':\n      // Currently we assume this is a DOM object.\n      div.insert(function () {\n        return label;\n      });\n      break;\n    default:\n      div.html(label);\n  }\n\n  util.applyStyle(div, node.labelStyle);\n  div.style('display', 'inline-block');\n  // Fix for firefox\n  div.style('white-space', 'nowrap');\n\n  var client = div.node().getBoundingClientRect();\n  fo.attr('width', client.width).attr('height', client.height);\n\n  return fo;\n}\n", "import * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { curveLinear, select, selectAll } from \"d3\";\nimport { k as getStylesFromArray, l as log, m as evaluate, c as getConfig, e as common, r as renderKatex, n as interpolateToCurve, u as utils, o as setupGraphViewbox } from \"./mermaid-6dc72991.js\";\nimport { r as render } from \"./index-01f381cb.js\";\nimport { addHtmlLabel } from \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport * as khroma from \"khroma\";\nconst conf = {};\nconst setConf = function(cnf) {\n  const keys = Object.keys(cnf);\n  for (const key of keys) {\n    conf[key] = cnf[key];\n  }\n};\nconst addVertices = async function(vert, g, svgId, root, doc, diagObj) {\n  const svg = root.select(`[id=\"${svgId}\"]`);\n  const keys = Object.keys(vert);\n  for (const id of keys) {\n    const vertex = vert[id];\n    let classStr = \"default\";\n    if (vertex.classes.length > 0) {\n      classStr = vertex.classes.join(\" \");\n    }\n    classStr = classStr + \" flowchart-label\";\n    const styles = getStylesFromArray(vertex.styles);\n    let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n    let vertexNode;\n    log.info(\"vertex\", vertex, vertex.labelType);\n    if (vertex.labelType === \"markdown\") {\n      log.info(\"vertex\", vertex, vertex.labelType);\n    } else {\n      if (evaluate(getConfig().flowchart.htmlLabels)) {\n        const node = {\n          label: vertexText\n        };\n        vertexNode = addHtmlLabel(svg, node).node();\n        vertexNode.parentNode.removeChild(vertexNode);\n      } else {\n        const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n        svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n        const rows = vertexText.split(common.lineBreakRegex);\n        for (const row of rows) {\n          const tspan = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n          tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n          tspan.setAttribute(\"dy\", \"1em\");\n          tspan.setAttribute(\"x\", \"1\");\n          tspan.textContent = row;\n          svgLabel.appendChild(tspan);\n        }\n        vertexNode = svgLabel;\n      }\n    }\n    let radius = 0;\n    let _shape = \"\";\n    switch (vertex.type) {\n      case \"round\":\n        radius = 5;\n        _shape = \"rect\";\n        break;\n      case \"square\":\n        _shape = \"rect\";\n        break;\n      case \"diamond\":\n        _shape = \"question\";\n        break;\n      case \"hexagon\":\n        _shape = \"hexagon\";\n        break;\n      case \"odd\":\n        _shape = \"rect_left_inv_arrow\";\n        break;\n      case \"lean_right\":\n        _shape = \"lean_right\";\n        break;\n      case \"lean_left\":\n        _shape = \"lean_left\";\n        break;\n      case \"trapezoid\":\n        _shape = \"trapezoid\";\n        break;\n      case \"inv_trapezoid\":\n        _shape = \"inv_trapezoid\";\n        break;\n      case \"odd_right\":\n        _shape = \"rect_left_inv_arrow\";\n        break;\n      case \"circle\":\n        _shape = \"circle\";\n        break;\n      case \"ellipse\":\n        _shape = \"ellipse\";\n        break;\n      case \"stadium\":\n        _shape = \"stadium\";\n        break;\n      case \"subroutine\":\n        _shape = \"subroutine\";\n        break;\n      case \"cylinder\":\n        _shape = \"cylinder\";\n        break;\n      case \"group\":\n        _shape = \"rect\";\n        break;\n      case \"doublecircle\":\n        _shape = \"doublecircle\";\n        break;\n      default:\n        _shape = \"rect\";\n    }\n    const labelText = await renderKatex(vertexText, getConfig());\n    g.setNode(vertex.id, {\n      labelStyle: styles.labelStyle,\n      shape: _shape,\n      labelText,\n      labelType: vertex.labelType,\n      rx: radius,\n      ry: radius,\n      class: classStr,\n      style: styles.style,\n      id: vertex.id,\n      link: vertex.link,\n      linkTarget: vertex.linkTarget,\n      tooltip: diagObj.db.getTooltip(vertex.id) || \"\",\n      domId: diagObj.db.lookUpDomId(vertex.id),\n      haveCallback: vertex.haveCallback,\n      width: vertex.type === \"group\" ? 500 : void 0,\n      dir: vertex.dir,\n      type: vertex.type,\n      props: vertex.props,\n      padding: getConfig().flowchart.padding\n    });\n    log.info(\"setNode\", {\n      labelStyle: styles.labelStyle,\n      labelType: vertex.labelType,\n      shape: _shape,\n      labelText,\n      rx: radius,\n      ry: radius,\n      class: classStr,\n      style: styles.style,\n      id: vertex.id,\n      domId: diagObj.db.lookUpDomId(vertex.id),\n      width: vertex.type === \"group\" ? 500 : void 0,\n      type: vertex.type,\n      dir: vertex.dir,\n      props: vertex.props,\n      padding: getConfig().flowchart.padding\n    });\n  }\n};\nconst addEdges = async function(edges, g, diagObj) {\n  log.info(\"abc78 edges = \", edges);\n  let cnt = 0;\n  let linkIdCnt = {};\n  let defaultStyle;\n  let defaultLabelStyle;\n  if (edges.defaultStyle !== void 0) {\n    const defaultStyles = getStylesFromArray(edges.defaultStyle);\n    defaultStyle = defaultStyles.style;\n    defaultLabelStyle = defaultStyles.labelStyle;\n  }\n  for (const edge of edges) {\n    cnt++;\n    const linkIdBase = \"L-\" + edge.start + \"-\" + edge.end;\n    if (linkIdCnt[linkIdBase] === void 0) {\n      linkIdCnt[linkIdBase] = 0;\n      log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n    } else {\n      linkIdCnt[linkIdBase]++;\n      log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n    }\n    let linkId = linkIdBase + \"-\" + linkIdCnt[linkIdBase];\n    log.info(\"abc78 new link id to be used is\", linkIdBase, linkId, linkIdCnt[linkIdBase]);\n    const linkNameStart = \"LS-\" + edge.start;\n    const linkNameEnd = \"LE-\" + edge.end;\n    const edgeData = { style: \"\", labelStyle: \"\" };\n    edgeData.minlen = edge.length || 1;\n    if (edge.type === \"arrow_open\") {\n      edgeData.arrowhead = \"none\";\n    } else {\n      edgeData.arrowhead = \"normal\";\n    }\n    edgeData.arrowTypeStart = \"arrow_open\";\n    edgeData.arrowTypeEnd = \"arrow_open\";\n    switch (edge.type) {\n      case \"double_arrow_cross\":\n        edgeData.arrowTypeStart = \"arrow_cross\";\n      case \"arrow_cross\":\n        edgeData.arrowTypeEnd = \"arrow_cross\";\n        break;\n      case \"double_arrow_point\":\n        edgeData.arrowTypeStart = \"arrow_point\";\n      case \"arrow_point\":\n        edgeData.arrowTypeEnd = \"arrow_point\";\n        break;\n      case \"double_arrow_circle\":\n        edgeData.arrowTypeStart = \"arrow_circle\";\n      case \"arrow_circle\":\n        edgeData.arrowTypeEnd = \"arrow_circle\";\n        break;\n    }\n    let style = \"\";\n    let labelStyle = \"\";\n    switch (edge.stroke) {\n      case \"normal\":\n        style = \"fill:none;\";\n        if (defaultStyle !== void 0) {\n          style = defaultStyle;\n        }\n        if (defaultLabelStyle !== void 0) {\n          labelStyle = defaultLabelStyle;\n        }\n        edgeData.thickness = \"normal\";\n        edgeData.pattern = \"solid\";\n        break;\n      case \"dotted\":\n        edgeData.thickness = \"normal\";\n        edgeData.pattern = \"dotted\";\n        edgeData.style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n        break;\n      case \"thick\":\n        edgeData.thickness = \"thick\";\n        edgeData.pattern = \"solid\";\n        edgeData.style = \"stroke-width: 3.5px;fill:none;\";\n        break;\n      case \"invisible\":\n        edgeData.thickness = \"invisible\";\n        edgeData.pattern = \"solid\";\n        edgeData.style = \"stroke-width: 0;fill:none;\";\n        break;\n    }\n    if (edge.style !== void 0) {\n      const styles = getStylesFromArray(edge.style);\n      style = styles.style;\n      labelStyle = styles.labelStyle;\n    }\n    edgeData.style = edgeData.style += style;\n    edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n    if (edge.interpolate !== void 0) {\n      edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n    } else if (edges.defaultInterpolate !== void 0) {\n      edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n    } else {\n      edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n    }\n    if (edge.text === void 0) {\n      if (edge.style !== void 0) {\n        edgeData.arrowheadStyle = \"fill: #333\";\n      }\n    } else {\n      edgeData.arrowheadStyle = \"fill: #333\";\n      edgeData.labelpos = \"c\";\n    }\n    edgeData.labelType = edge.labelType;\n    edgeData.label = await renderKatex(edge.text.replace(common.lineBreakRegex, \"\\n\"), getConfig());\n    if (edge.style === void 0) {\n      edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none;\";\n    }\n    edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n    edgeData.id = linkId;\n    edgeData.classes = \"flowchart-link \" + linkNameStart + \" \" + linkNameEnd;\n    g.setEdge(edge.start, edge.end, edgeData, cnt);\n  }\n};\nconst getClasses = function(text, diagObj) {\n  return diagObj.db.getClasses();\n};\nconst draw = async function(text, id, _version, diagObj) {\n  log.info(\"Drawing flowchart\");\n  let dir = diagObj.db.getDirection();\n  if (dir === void 0) {\n    dir = \"TD\";\n  }\n  const { securityLevel, flowchart: conf2 } = getConfig();\n  const nodeSpacing = conf2.nodeSpacing || 50;\n  const rankSpacing = conf2.rankSpacing || 50;\n  let sandboxElement;\n  if (securityLevel === \"sandbox\") {\n    sandboxElement = select(\"#i\" + id);\n  }\n  const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n  const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n  const g = new graphlib.Graph({\n    multigraph: true,\n    compound: true\n  }).setGraph({\n    rankdir: dir,\n    nodesep: nodeSpacing,\n    ranksep: rankSpacing,\n    marginx: 0,\n    marginy: 0\n  }).setDefaultEdgeLabel(function() {\n    return {};\n  });\n  let subG;\n  const subGraphs = diagObj.db.getSubGraphs();\n  log.info(\"Subgraphs - \", subGraphs);\n  for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n    subG = subGraphs[i2];\n    log.info(\"Subgraph - \", subG);\n    diagObj.db.addVertex(\n      subG.id,\n      { text: subG.title, type: subG.labelType },\n      \"group\",\n      void 0,\n      subG.classes,\n      subG.dir\n    );\n  }\n  const vert = diagObj.db.getVertices();\n  const edges = diagObj.db.getEdges();\n  log.info(\"Edges\", edges);\n  let i = 0;\n  for (i = subGraphs.length - 1; i >= 0; i--) {\n    subG = subGraphs[i];\n    selectAll(\"cluster\").append(\"text\");\n    for (let j = 0; j < subG.nodes.length; j++) {\n      log.info(\"Setting up subgraphs\", subG.nodes[j], subG.id);\n      g.setParent(subG.nodes[j], subG.id);\n    }\n  }\n  await addVertices(vert, g, id, root, doc, diagObj);\n  await addEdges(edges, g);\n  const svg = root.select(`[id=\"${id}\"]`);\n  const element = root.select(\"#\" + id + \" g\");\n  await render(element, g, [\"point\", \"circle\", \"cross\"], \"flowchart\", id);\n  utils.insertTitle(svg, \"flowchartTitleText\", conf2.titleTopMargin, diagObj.db.getDiagramTitle());\n  setupGraphViewbox(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n  diagObj.db.indexNodes(\"subGraph\" + i);\n  if (!conf2.htmlLabels) {\n    const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n    for (const label of labels) {\n      const dim = label.getBBox();\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      label.insertBefore(rect, label.firstChild);\n    }\n  }\n  const keys = Object.keys(vert);\n  keys.forEach(function(key) {\n    const vertex = vert[key];\n    if (vertex.link) {\n      const node = select(\"#\" + id + ' [id=\"' + key + '\"]');\n      if (node) {\n        const link = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"a\");\n        link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"class\", vertex.classes.join(\" \"));\n        link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"href\", vertex.link);\n        link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"rel\", \"noopener\");\n        if (securityLevel === \"sandbox\") {\n          link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n        } else if (vertex.linkTarget) {\n          link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n        }\n        const linkNode = node.insert(function() {\n          return link;\n        }, \":first-child\");\n        const shape = node.select(\".label-container\");\n        if (shape) {\n          linkNode.append(function() {\n            return shape.node();\n          });\n        }\n        const label = node.select(\".label\");\n        if (label) {\n          linkNode.append(function() {\n            return label.node();\n          });\n        }\n      }\n    }\n  });\n};\nconst flowRendererV2 = {\n  setConf,\n  addVertices,\n  addEdges,\n  getClasses,\n  draw\n};\nconst fade = (color, opacity) => {\n  const channel = khroma.channel;\n  const r = channel(color, \"r\");\n  const g = channel(color, \"g\");\n  const b = channel(color, \"b\");\n  return khroma.rgba(r, g, b, opacity);\n};\nconst getStyles = (options) => `.label {\n    font-family: ${options.fontFamily};\n    color: ${options.nodeTextColor || options.textColor};\n  }\n  .cluster-label text {\n    fill: ${options.titleColor};\n  }\n  .cluster-label span,p {\n    color: ${options.titleColor};\n  }\n\n  .label text,span,p {\n    fill: ${options.nodeTextColor || options.textColor};\n    color: ${options.nodeTextColor || options.textColor};\n  }\n\n  .node rect,\n  .node circle,\n  .node ellipse,\n  .node polygon,\n  .node path {\n    fill: ${options.mainBkg};\n    stroke: ${options.nodeBorder};\n    stroke-width: 1px;\n  }\n  .flowchart-label text {\n    text-anchor: middle;\n  }\n  // .flowchart-label .text-outer-tspan {\n  //   text-anchor: middle;\n  // }\n  // .flowchart-label .text-inner-tspan {\n  //   text-anchor: start;\n  // }\n\n  .node .katex path {\n    fill: #000;\n    stroke: #000;\n    stroke-width: 1px;\n  }\n\n  .node .label {\n    text-align: center;\n  }\n  .node.clickable {\n    cursor: pointer;\n  }\n\n  .arrowheadPath {\n    fill: ${options.arrowheadColor};\n  }\n\n  .edgePath .path {\n    stroke: ${options.lineColor};\n    stroke-width: 2.0px;\n  }\n\n  .flowchart-link {\n    stroke: ${options.lineColor};\n    fill: none;\n  }\n\n  .edgeLabel {\n    background-color: ${options.edgeLabelBackground};\n    rect {\n      opacity: 0.5;\n      background-color: ${options.edgeLabelBackground};\n      fill: ${options.edgeLabelBackground};\n    }\n    text-align: center;\n  }\n\n  /* For html labels only */\n  .labelBkg {\n    background-color: ${fade(options.edgeLabelBackground, 0.5)};\n    // background-color: \n  }\n\n  .cluster rect {\n    fill: ${options.clusterBkg};\n    stroke: ${options.clusterBorder};\n    stroke-width: 1px;\n  }\n\n  .cluster text {\n    fill: ${options.titleColor};\n  }\n\n  .cluster span,p {\n    color: ${options.titleColor};\n  }\n  /* .cluster div {\n    color: ${options.titleColor};\n  } */\n\n  div.mermaidTooltip {\n    position: absolute;\n    text-align: center;\n    max-width: 200px;\n    padding: 2px;\n    font-family: ${options.fontFamily};\n    font-size: 12px;\n    background: ${options.tertiaryColor};\n    border: 1px solid ${options.border2};\n    border-radius: 2px;\n    pointer-events: none;\n    z-index: 100;\n  }\n\n  .flowchartTitleText {\n    text-anchor: middle;\n    font-size: 18px;\n    fill: ${options.textColor};\n  }\n`;\nconst flowStyles = getStyles;\nexport {\n  flowStyles as a,\n  flowRendererV2 as f\n};\n"],
  "mappings": "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",
  "names": []
}