1 line
18 KiB
Plaintext
1 line
18 KiB
Plaintext
{"version":3,"file":"classDiagram-v2-146d8a48.js","sources":["../src/diagrams/class/classRenderer-v2.ts","../src/diagrams/class/classDiagram-v2.ts"],"sourcesContent":["// @ts-ignore d3 types are not available\nimport { select, curveLinear } from 'd3';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { log } from '../../logger';\nimport { getConfig } from '../../config';\nimport { render } from '../../dagre-wrapper/index.js';\nimport utils from '../../utils';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils';\nimport { setupGraphViewbox } from '../../setupGraphViewbox';\nimport common from '../common/common';\nimport { ClassRelation, ClassNote, ClassMap, EdgeData } from './classTypes';\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\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 */\nexport const addClasses = function (\n classes: ClassMap,\n g: graphlib.Graph,\n _id: string,\n diagObj: any\n) {\n const keys = Object.keys(classes);\n log.info('keys:', 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 keys.forEach(function (id) {\n const vertex = classes[id];\n\n /**\n * Variable for storing the classes for the vertex\n */\n let cssClassStr = '';\n if (vertex.cssClasses.length > 0) {\n cssClassStr = cssClassStr + ' ' + vertex.cssClasses.join(' ');\n }\n\n const styles = { labelStyle: '', style: '' }; //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 // 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) || '',\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 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 // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n notes.forEach(function (note, i) {\n const vertex = note;\n\n /**\n * Variable for storing the classes for the vertex\n *\n */\n const cssNoteStr = '';\n\n const styles = { labelStyle: '', style: '' };\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n const vertexText = vertex.text;\n\n const radius = 0;\n const shape = 'note';\n // Add the node\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 || !(vertex.class in classes)) {\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: 'id' + cnt,\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 flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param text -\n * @param id -\n * @param _version -\n * @param diagObj -\n */\nexport const draw = 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 classes: ClassMap = diagObj.db.getClasses();\n const relations: ClassRelation[] = diagObj.db.getRelations();\n const notes: ClassNote[] = diagObj.db.getNotes();\n log.info(relations);\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 ? // @ts-ignore Ignore type error for now\n\n select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n // @ts-ignore Ignore type error for now\n const svg = root.select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n // @ts-ignore Ignore type error for now\n const element = root.select('#' + id + ' g');\n 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 // @ts-ignore Ignore type error for now\n const doc = 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 { DiagramDefinition } from '../../diagram-api/types';\n// @ts-ignore: TODO Fix ts errors\nimport parser from './parser/classDiagram';\nimport db from './classDb';\nimport styles from './styles';\nimport renderer from './classRenderer-v2';\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"],"names":["sanitizeText","txt","common","getConfig","conf","addClasses","classes","g","_id","diagObj","keys","log","id","vertex","cssClassStr","styles","vertexText","radius","shape","node","_a","_b","addNotes","notes","startEdgeId","note","i","cssNoteStr","edgeId","edgeData","interpolateToCurve","curveLinear","addRelations","relations","cnt","edge","getArrowMarker","getStylesFromArray","setConf","cnf","draw","text","_version","securityLevel","nodeSpacing","rankSpacing","graphlib.Graph","sandboxElement","select","root","svg","element","render","utils","setupGraphViewbox","doc","labels","label","dim","rect","type","marker","renderer","diagram","parser","db"],"mappings":"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"} |