webapp.stateDiagram-5dee940d.365d4b10.js.map Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of langgraph4j-studio-jetty Show documentation
Show all versions of langgraph4j-studio-jetty Show documentation
an **embed playground webapp** to run a Langgraph4j workflow in visual way
The newest version!
{"mappings":"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","sources":["","node_modules/mermaid/dist/stateDiagram-5dee940d.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n var parcelRequire = $parcel$global[\"parcelRequire0031\"];\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"74fZR\", function(module, exports) {\n\n$parcel$export(module.exports, \"diagram\", () => $525550bf0a32a999$export$6118d022d940d562);\n\nvar $3ltxT = parcelRequire(\"3ltxT\");\n\nvar $2YFJl = parcelRequire(\"2YFJl\");\n\nvar $hV1gR = parcelRequire(\"hV1gR\");\n\nvar $4LkSm = parcelRequire(\"4LkSm\");\n\nvar $4jcZX = parcelRequire(\"4jcZX\");\nparcelRequire(\"eJNXH\");\nparcelRequire(\"gngdn\");\nparcelRequire(\"2ujND\");\nparcelRequire(\"i8Fxz\");\n\n\n\n\n\nconst $525550bf0a32a999$var$idCache = {};\nconst $525550bf0a32a999$var$set = (key, val)=>{\n $525550bf0a32a999$var$idCache[key] = val;\n};\nconst $525550bf0a32a999$var$get = (k)=>$525550bf0a32a999$var$idCache[k];\nconst $525550bf0a32a999$var$keys = ()=>Object.keys($525550bf0a32a999$var$idCache);\nconst $525550bf0a32a999$var$size = ()=>$525550bf0a32a999$var$keys().length;\nconst $525550bf0a32a999$var$idCache$1 = {\n get: $525550bf0a32a999$var$get,\n set: $525550bf0a32a999$var$set,\n keys: $525550bf0a32a999$var$keys,\n size: $525550bf0a32a999$var$size\n};\nconst $525550bf0a32a999$var$drawStartState = (g)=>g.append(\"circle\").attr(\"class\", \"start-state\").attr(\"r\", (0, $4jcZX.c)().state.sizeUnit).attr(\"cx\", (0, $4jcZX.c)().state.padding + (0, $4jcZX.c)().state.sizeUnit).attr(\"cy\", (0, $4jcZX.c)().state.padding + (0, $4jcZX.c)().state.sizeUnit);\nconst $525550bf0a32a999$var$drawDivider = (g)=>g.append(\"line\").style(\"stroke\", \"grey\").style(\"stroke-dasharray\", \"3\").attr(\"x1\", (0, $4jcZX.c)().state.textHeight).attr(\"class\", \"divider\").attr(\"x2\", (0, $4jcZX.c)().state.textHeight * 2).attr(\"y1\", 0).attr(\"y2\", 0);\nconst $525550bf0a32a999$var$drawSimpleState = (g, stateDef)=>{\n const state = g.append(\"text\").attr(\"x\", 2 * (0, $4jcZX.c)().state.padding).attr(\"y\", (0, $4jcZX.c)().state.textHeight + 2 * (0, $4jcZX.c)().state.padding).attr(\"font-size\", (0, $4jcZX.c)().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const classBox = state.node().getBBox();\n g.insert(\"rect\", \":first-child\").attr(\"x\", (0, $4jcZX.c)().state.padding).attr(\"y\", (0, $4jcZX.c)().state.padding).attr(\"width\", classBox.width + 2 * (0, $4jcZX.c)().state.padding).attr(\"height\", classBox.height + 2 * (0, $4jcZX.c)().state.padding).attr(\"rx\", (0, $4jcZX.c)().state.radius);\n return state;\n};\nconst $525550bf0a32a999$var$drawDescrState = (g, stateDef)=>{\n const addTspan = function(textEl, txt, isFirst2) {\n const tSpan = textEl.append(\"tspan\").attr(\"x\", 2 * (0, $4jcZX.c)().state.padding).text(txt);\n if (!isFirst2) tSpan.attr(\"dy\", (0, $4jcZX.c)().state.textHeight);\n };\n const title = g.append(\"text\").attr(\"x\", 2 * (0, $4jcZX.c)().state.padding).attr(\"y\", (0, $4jcZX.c)().state.textHeight + 1.3 * (0, $4jcZX.c)().state.padding).attr(\"font-size\", (0, $4jcZX.c)().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.descriptions[0]);\n const titleBox = title.node().getBBox();\n const titleHeight = titleBox.height;\n const description = g.append(\"text\").attr(\"x\", (0, $4jcZX.c)().state.padding).attr(\"y\", titleHeight + (0, $4jcZX.c)().state.padding * 0.4 + (0, $4jcZX.c)().state.dividerMargin + (0, $4jcZX.c)().state.textHeight).attr(\"class\", \"state-description\");\n let isFirst = true;\n let isSecond = true;\n stateDef.descriptions.forEach(function(descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n isFirst = false;\n });\n const descrLine = g.append(\"line\").attr(\"x1\", (0, $4jcZX.c)().state.padding).attr(\"y1\", (0, $4jcZX.c)().state.padding + titleHeight + (0, $4jcZX.c)().state.dividerMargin / 2).attr(\"y2\", (0, $4jcZX.c)().state.padding + titleHeight + (0, $4jcZX.c)().state.dividerMargin / 2).attr(\"class\", \"descr-divider\");\n const descrBox = description.node().getBBox();\n const width = Math.max(descrBox.width, titleBox.width);\n descrLine.attr(\"x2\", width + 3 * (0, $4jcZX.c)().state.padding);\n g.insert(\"rect\", \":first-child\").attr(\"x\", (0, $4jcZX.c)().state.padding).attr(\"y\", (0, $4jcZX.c)().state.padding).attr(\"width\", width + 2 * (0, $4jcZX.c)().state.padding).attr(\"height\", descrBox.height + titleHeight + 2 * (0, $4jcZX.c)().state.padding).attr(\"rx\", (0, $4jcZX.c)().state.radius);\n return g;\n};\nconst $525550bf0a32a999$var$addTitleAndBox = (g, stateDef, altBkg)=>{\n const pad = (0, $4jcZX.c)().state.padding;\n const dblPad = 2 * (0, $4jcZX.c)().state.padding;\n const orgBox = g.node().getBBox();\n const orgWidth = orgBox.width;\n const orgX = orgBox.x;\n const title = g.append(\"text\").attr(\"x\", 0).attr(\"y\", (0, $4jcZX.c)().state.titleShift).attr(\"font-size\", (0, $4jcZX.c)().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const titleBox = title.node().getBBox();\n const titleWidth = titleBox.width + dblPad;\n let width = Math.max(titleWidth, orgWidth);\n if (width === orgWidth) width = width + dblPad;\n let startX;\n const graphBox = g.node().getBBox();\n stateDef.doc;\n startX = orgX - pad;\n if (titleWidth > orgWidth) startX = (orgWidth - width) / 2 + pad;\n if (Math.abs(orgX - graphBox.x) < pad && titleWidth > orgWidth) startX = orgX - (titleWidth - orgWidth) / 2;\n const lineY = 1 - (0, $4jcZX.c)().state.textHeight;\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\"y\", lineY).attr(\"class\", altBkg ? \"alt-composit\" : \"composit\").attr(\"width\", width).attr(\"height\", graphBox.height + (0, $4jcZX.c)().state.textHeight + (0, $4jcZX.c)().state.titleShift + 1).attr(\"rx\", \"0\");\n title.attr(\"x\", startX + pad);\n if (titleWidth <= orgWidth) title.attr(\"x\", orgX + (width - dblPad) / 2 - titleWidth / 2 + pad);\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\"y\", (0, $4jcZX.c)().state.titleShift - (0, $4jcZX.c)().state.textHeight - (0, $4jcZX.c)().state.padding).attr(\"width\", width).attr(\"height\", (0, $4jcZX.c)().state.textHeight * 3).attr(\"rx\", (0, $4jcZX.c)().state.radius);\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\"y\", (0, $4jcZX.c)().state.titleShift - (0, $4jcZX.c)().state.textHeight - (0, $4jcZX.c)().state.padding).attr(\"width\", width).attr(\"height\", graphBox.height + 3 + 2 * (0, $4jcZX.c)().state.textHeight).attr(\"rx\", (0, $4jcZX.c)().state.radius);\n return g;\n};\nconst $525550bf0a32a999$var$drawEndState = (g)=>{\n g.append(\"circle\").attr(\"class\", \"end-state-outer\").attr(\"r\", (0, $4jcZX.c)().state.sizeUnit + (0, $4jcZX.c)().state.miniPadding).attr(\"cx\", (0, $4jcZX.c)().state.padding + (0, $4jcZX.c)().state.sizeUnit + (0, $4jcZX.c)().state.miniPadding).attr(\"cy\", (0, $4jcZX.c)().state.padding + (0, $4jcZX.c)().state.sizeUnit + (0, $4jcZX.c)().state.miniPadding);\n return g.append(\"circle\").attr(\"class\", \"end-state-inner\").attr(\"r\", (0, $4jcZX.c)().state.sizeUnit).attr(\"cx\", (0, $4jcZX.c)().state.padding + (0, $4jcZX.c)().state.sizeUnit + 2).attr(\"cy\", (0, $4jcZX.c)().state.padding + (0, $4jcZX.c)().state.sizeUnit + 2);\n};\nconst $525550bf0a32a999$var$drawForkJoinState = (g, stateDef)=>{\n let width = (0, $4jcZX.c)().state.forkWidth;\n let height = (0, $4jcZX.c)().state.forkHeight;\n if (stateDef.parentId) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n return g.append(\"rect\").style(\"stroke\", \"black\").style(\"fill\", \"black\").attr(\"width\", width).attr(\"height\", height).attr(\"x\", (0, $4jcZX.c)().state.padding).attr(\"y\", (0, $4jcZX.c)().state.padding);\n};\nconst $525550bf0a32a999$var$_drawLongText = (_text, x, y, g)=>{\n let textHeight = 0;\n const textElem = g.append(\"text\");\n textElem.style(\"text-anchor\", \"start\");\n textElem.attr(\"class\", \"noteText\");\n let text = _text.replace(/\\r\\n/g, \"
\");\n text = text.replace(/\\n/g, \"
\");\n const lines = text.split((0, $4jcZX.e).lineBreakRegex);\n let tHeight = 1.25 * (0, $4jcZX.c)().state.noteMargin;\n for (const line2 of lines){\n const txt = line2.trim();\n if (txt.length > 0) {\n const span = textElem.append(\"tspan\");\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n textHeight += tHeight;\n span.attr(\"x\", x + (0, $4jcZX.c)().state.noteMargin);\n span.attr(\"y\", y + textHeight + 1.25 * (0, $4jcZX.c)().state.noteMargin);\n }\n }\n return {\n textWidth: textElem.node().getBBox().width,\n textHeight: textHeight\n };\n};\nconst $525550bf0a32a999$var$drawNote = (text, g)=>{\n g.attr(\"class\", \"state-note\");\n const note = g.append(\"rect\").attr(\"x\", 0).attr(\"y\", (0, $4jcZX.c)().state.padding);\n const rectElem = g.append(\"g\");\n const { textWidth: textWidth, textHeight: textHeight } = $525550bf0a32a999$var$_drawLongText(text, 0, 0, rectElem);\n note.attr(\"height\", textHeight + 2 * (0, $4jcZX.c)().state.noteMargin);\n note.attr(\"width\", textWidth + (0, $4jcZX.c)().state.noteMargin * 2);\n return note;\n};\nconst $525550bf0a32a999$var$drawState = function(elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id: id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", id).attr(\"class\", \"stateGroup\");\n if (stateDef.type === \"start\") $525550bf0a32a999$var$drawStartState(g);\n if (stateDef.type === \"end\") $525550bf0a32a999$var$drawEndState(g);\n if (stateDef.type === \"fork\" || stateDef.type === \"join\") $525550bf0a32a999$var$drawForkJoinState(g, stateDef);\n if (stateDef.type === \"note\") $525550bf0a32a999$var$drawNote(stateDef.note.text, g);\n if (stateDef.type === \"divider\") $525550bf0a32a999$var$drawDivider(g);\n if (stateDef.type === \"default\" && stateDef.descriptions.length === 0) $525550bf0a32a999$var$drawSimpleState(g, stateDef);\n if (stateDef.type === \"default\" && stateDef.descriptions.length > 0) $525550bf0a32a999$var$drawDescrState(g, stateDef);\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * (0, $4jcZX.c)().state.padding;\n stateInfo.height = stateBox.height + 2 * (0, $4jcZX.c)().state.padding;\n $525550bf0a32a999$var$idCache$1.set(id, stateInfo);\n return stateInfo;\n};\nlet $525550bf0a32a999$var$edgeCount = 0;\nconst $525550bf0a32a999$var$drawEdge = function(elem, path, relation) {\n const getRelationType = function(type) {\n switch(type){\n case (0, $3ltxT.d).relationType.AGGREGATION:\n return \"aggregation\";\n case (0, $3ltxT.d).relationType.EXTENSION:\n return \"extension\";\n case (0, $3ltxT.d).relationType.COMPOSITION:\n return \"composition\";\n case (0, $3ltxT.d).relationType.DEPENDENCY:\n return \"dependency\";\n }\n };\n path.points = path.points.filter((p)=>!Number.isNaN(p.y));\n const lineData = path.points;\n const lineFunction = (0, $2YFJl.line)().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve((0, $2YFJl.curveBasis));\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", \"edge\" + $525550bf0a32a999$var$edgeCount).attr(\"class\", \"transition\");\n let url = \"\";\n if ((0, $4jcZX.c)().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + getRelationType((0, $3ltxT.d).relationType.DEPENDENCY) + \"End)\");\n if (relation.title !== void 0) {\n const label = elem.append(\"g\").attr(\"class\", \"stateLabel\");\n const { x: x, y: y } = (0, $4jcZX.u).calcLabelPosition(path.points);\n const rows = (0, $4jcZX.e).getRows(relation.title);\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n for(let i = 0; i <= rows.length; i++){\n const title = label.append(\"text\").attr(\"text-anchor\", \"middle\").text(rows[i]).attr(\"x\", x).attr(\"y\", y + titleHeight);\n const boundsTmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundsTmp.width);\n minX = Math.min(minX, boundsTmp.x);\n (0, $4jcZX.l).info(boundsTmp.x, x, y + titleHeight);\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n (0, $4jcZX.l).info(\"Title height\", titleHeight, y);\n }\n titleRows.push(title);\n }\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n titleRows.forEach((title, i)=>title.attr(\"y\", y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n const bounds = label.node().getBBox();\n label.insert(\"rect\", \":first-child\").attr(\"class\", \"box\").attr(\"x\", x - maxWidth / 2 - (0, $4jcZX.c)().state.padding / 2).attr(\"y\", y - boxHeight / 2 - (0, $4jcZX.c)().state.padding / 2 - 3.5).attr(\"width\", maxWidth + (0, $4jcZX.c)().state.padding).attr(\"height\", boxHeight + (0, $4jcZX.c)().state.padding);\n (0, $4jcZX.l).info(bounds);\n }\n $525550bf0a32a999$var$edgeCount++;\n};\nlet $525550bf0a32a999$var$conf;\nconst $525550bf0a32a999$var$transformationLog = {};\nconst $525550bf0a32a999$var$setConf = function() {};\nconst $525550bf0a32a999$var$insertMarkers = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst $525550bf0a32a999$var$draw = function(text, id, _version, diagObj) {\n $525550bf0a32a999$var$conf = (0, $4jcZX.c)().state;\n const securityLevel = (0, $4jcZX.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") sandboxElement = (0, $2YFJl.select)(\"#i\" + id);\n const root = securityLevel === \"sandbox\" ? (0, $2YFJl.select)(sandboxElement.nodes()[0].contentDocument.body) : (0, $2YFJl.select)(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n (0, $4jcZX.l).debug(\"Rendering diagram \" + text);\n const diagram2 = root.select(`[id='${id}']`);\n $525550bf0a32a999$var$insertMarkers(diagram2);\n const rootDoc = diagObj.db.getRootDoc();\n $525550bf0a32a999$var$renderDoc(rootDoc, diagram2, void 0, false, root, doc, diagObj);\n const padding = $525550bf0a32a999$var$conf.padding;\n const bounds = diagram2.node().getBBox();\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n const svgWidth = width * 1.75;\n (0, $4jcZX.i)(diagram2, height, svgWidth, $525550bf0a32a999$var$conf.useMaxWidth);\n diagram2.attr(\"viewBox\", `${bounds.x - $525550bf0a32a999$var$conf.padding} ${bounds.y - $525550bf0a32a999$var$conf.padding} ` + width + \" \" + height);\n};\nconst $525550bf0a32a999$var$getLabelWidth = (text)=>{\n return text ? text.length * $525550bf0a32a999$var$conf.fontSizeFactor : 1;\n};\nconst $525550bf0a32a999$var$renderDoc = (doc, diagram2, parentId, altBkg, root, domDocument, diagObj)=>{\n const graph = new $4LkSm.Graph({\n compound: true,\n multigraph: true\n });\n let i;\n let edgeFreeDoc = true;\n for(i = 0; i < doc.length; i++)if (doc[i].stmt === \"relation\") {\n edgeFreeDoc = false;\n break;\n }\n if (parentId) graph.setGraph({\n rankdir: \"LR\",\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: \"tight-tree\",\n ranksep: edgeFreeDoc ? 1 : $525550bf0a32a999$var$conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true\n });\n else graph.setGraph({\n rankdir: \"TB\",\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : $525550bf0a32a999$var$conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: \"tight-tree\",\n // ranker: 'network-simplex'\n isMultiGraph: true\n });\n graph.setDefaultEdgeLabel(function() {\n return {};\n });\n diagObj.db.extract(doc);\n const states = diagObj.db.getStates();\n const relations = diagObj.db.getRelations();\n const keys2 = Object.keys(states);\n for (const key of keys2){\n const stateDef = states[key];\n if (parentId) stateDef.parentId = parentId;\n let node;\n if (stateDef.doc) {\n let sub = diagram2.append(\"g\").attr(\"id\", stateDef.id).attr(\"class\", \"stateGroup\");\n node = $525550bf0a32a999$var$renderDoc(stateDef.doc, sub, stateDef.id, !altBkg, root, domDocument, diagObj);\n {\n sub = $525550bf0a32a999$var$addTitleAndBox(sub, stateDef, altBkg);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + $525550bf0a32a999$var$conf.padding / 2;\n $525550bf0a32a999$var$transformationLog[stateDef.id] = {\n y: $525550bf0a32a999$var$conf.compositTitleSize\n };\n }\n } else node = $525550bf0a32a999$var$drawState(diagram2, stateDef);\n if (stateDef.note) {\n const noteDef = {\n descriptions: [],\n id: stateDef.id + \"-note\",\n note: stateDef.note,\n type: \"note\"\n };\n const note = $525550bf0a32a999$var$drawState(diagram2, noteDef);\n if (stateDef.note.position === \"left of\") {\n graph.setNode(node.id + \"-note\", note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + \"-note\", note);\n }\n graph.setParent(node.id, node.id + \"-group\");\n graph.setParent(node.id + \"-note\", node.id + \"-group\");\n } else graph.setNode(node.id, node);\n }\n (0, $4jcZX.l).debug(\"Count=\", graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function(relation) {\n cnt++;\n (0, $4jcZX.l).debug(\"Setting edge\", relation);\n graph.setEdge(relation.id1, relation.id2, {\n relation: relation,\n width: $525550bf0a32a999$var$getLabelWidth(relation.title),\n height: $525550bf0a32a999$var$conf.labelHeight * (0, $4jcZX.e).getRows(relation.title).length,\n labelpos: \"c\"\n }, \"id\" + cnt);\n });\n (0, $hV1gR.layout)(graph);\n (0, $4jcZX.l).debug(\"Graph after layout\", graph.nodes());\n const svgElem = diagram2.node();\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n (0, $4jcZX.l).warn(\"Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\"transform\", \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y + ($525550bf0a32a999$var$transformationLog[v] ? $525550bf0a32a999$var$transformationLog[v].y : 0) - graph.node(v).height / 2) + \" )\");\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\"data-x-shift\", graph.node(v).x - graph.node(v).width / 2);\n const dividers = domDocument.querySelectorAll(\"#\" + svgElem.id + \" #\" + v + \" .divider\");\n dividers.forEach((divider)=>{\n const parent = divider.parentElement;\n let pWidth = 0;\n let pShift = 0;\n if (parent) {\n if (parent.parentElement) pWidth = parent.parentElement.getBBox().width;\n pShift = parseInt(parent.getAttribute(\"data-x-shift\"), 10);\n if (Number.isNaN(pShift)) pShift = 0;\n }\n divider.setAttribute(\"x1\", 0 - pShift + 8);\n divider.setAttribute(\"x2\", pWidth - pShift - 8);\n });\n } else (0, $4jcZX.l).debug(\"No Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n });\n let stateBox = svgElem.getBBox();\n graph.edges().forEach(function(e) {\n if (e !== void 0 && graph.edge(e) !== void 0) {\n (0, $4jcZX.l).debug(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n $525550bf0a32a999$var$drawEdge(diagram2, graph.edge(e), graph.edge(e).relation);\n }\n });\n stateBox = svgElem.getBBox();\n const stateInfo = {\n id: parentId ? parentId : \"root\",\n label: parentId ? parentId : \"root\",\n width: 0,\n height: 0\n };\n stateInfo.width = stateBox.width + 2 * $525550bf0a32a999$var$conf.padding;\n stateInfo.height = stateBox.height + 2 * $525550bf0a32a999$var$conf.padding;\n (0, $4jcZX.l).debug(\"Doc rendered\", stateInfo, graph);\n return stateInfo;\n};\nconst $525550bf0a32a999$var$renderer = {\n setConf: $525550bf0a32a999$var$setConf,\n draw: $525550bf0a32a999$var$draw\n};\nconst $525550bf0a32a999$export$6118d022d940d562 = {\n parser: $3ltxT.p,\n db: $3ltxT.d,\n renderer: $525550bf0a32a999$var$renderer,\n styles: $3ltxT.s,\n init: (cnf)=>{\n if (!cnf.state) cnf.state = {};\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n (0, $3ltxT.d).clear();\n }\n};\n\n});\n\n\n//# sourceMappingURL=stateDiagram-5dee940d.365d4b10.js.map\n","import { d as db, p as parser, s as styles } from \"./styles-0784dbeb.js\";\nimport { line, curveBasis, select } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { c as getConfig, u as utils, e as common, l as log, i as configureSvgSize } from \"./mermaid-6dc72991.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst idCache = {};\nconst set = (key, val) => {\n idCache[key] = val;\n};\nconst get = (k) => idCache[k];\nconst keys = () => Object.keys(idCache);\nconst size = () => keys().length;\nconst idCache$1 = {\n get,\n set,\n keys,\n size\n};\nconst drawStartState = (g) => g.append(\"circle\").attr(\"class\", \"start-state\").attr(\"r\", getConfig().state.sizeUnit).attr(\"cx\", getConfig().state.padding + getConfig().state.sizeUnit).attr(\"cy\", getConfig().state.padding + getConfig().state.sizeUnit);\nconst drawDivider = (g) => g.append(\"line\").style(\"stroke\", \"grey\").style(\"stroke-dasharray\", \"3\").attr(\"x1\", getConfig().state.textHeight).attr(\"class\", \"divider\").attr(\"x2\", getConfig().state.textHeight * 2).attr(\"y1\", 0).attr(\"y2\", 0);\nconst drawSimpleState = (g, stateDef) => {\n const state = g.append(\"text\").attr(\"x\", 2 * getConfig().state.padding).attr(\"y\", getConfig().state.textHeight + 2 * getConfig().state.padding).attr(\"font-size\", getConfig().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const classBox = state.node().getBBox();\n g.insert(\"rect\", \":first-child\").attr(\"x\", getConfig().state.padding).attr(\"y\", getConfig().state.padding).attr(\"width\", classBox.width + 2 * getConfig().state.padding).attr(\"height\", classBox.height + 2 * getConfig().state.padding).attr(\"rx\", getConfig().state.radius);\n return state;\n};\nconst drawDescrState = (g, stateDef) => {\n const addTspan = function(textEl, txt, isFirst2) {\n const tSpan = textEl.append(\"tspan\").attr(\"x\", 2 * getConfig().state.padding).text(txt);\n if (!isFirst2) {\n tSpan.attr(\"dy\", getConfig().state.textHeight);\n }\n };\n const title = g.append(\"text\").attr(\"x\", 2 * getConfig().state.padding).attr(\"y\", getConfig().state.textHeight + 1.3 * getConfig().state.padding).attr(\"font-size\", getConfig().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.descriptions[0]);\n const titleBox = title.node().getBBox();\n const titleHeight = titleBox.height;\n const description = g.append(\"text\").attr(\"x\", getConfig().state.padding).attr(\n \"y\",\n titleHeight + getConfig().state.padding * 0.4 + getConfig().state.dividerMargin + getConfig().state.textHeight\n ).attr(\"class\", \"state-description\");\n let isFirst = true;\n let isSecond = true;\n stateDef.descriptions.forEach(function(descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n isFirst = false;\n });\n const descrLine = g.append(\"line\").attr(\"x1\", getConfig().state.padding).attr(\"y1\", getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2).attr(\"y2\", getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2).attr(\"class\", \"descr-divider\");\n const descrBox = description.node().getBBox();\n const width = Math.max(descrBox.width, titleBox.width);\n descrLine.attr(\"x2\", width + 3 * getConfig().state.padding);\n g.insert(\"rect\", \":first-child\").attr(\"x\", getConfig().state.padding).attr(\"y\", getConfig().state.padding).attr(\"width\", width + 2 * getConfig().state.padding).attr(\"height\", descrBox.height + titleHeight + 2 * getConfig().state.padding).attr(\"rx\", getConfig().state.radius);\n return g;\n};\nconst addTitleAndBox = (g, stateDef, altBkg) => {\n const pad = getConfig().state.padding;\n const dblPad = 2 * getConfig().state.padding;\n const orgBox = g.node().getBBox();\n const orgWidth = orgBox.width;\n const orgX = orgBox.x;\n const title = g.append(\"text\").attr(\"x\", 0).attr(\"y\", getConfig().state.titleShift).attr(\"font-size\", getConfig().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const titleBox = title.node().getBBox();\n const titleWidth = titleBox.width + dblPad;\n let width = Math.max(titleWidth, orgWidth);\n if (width === orgWidth) {\n width = width + dblPad;\n }\n let startX;\n const graphBox = g.node().getBBox();\n if (stateDef.doc)\n ;\n startX = orgX - pad;\n if (titleWidth > orgWidth) {\n startX = (orgWidth - width) / 2 + pad;\n }\n if (Math.abs(orgX - graphBox.x) < pad && titleWidth > orgWidth) {\n startX = orgX - (titleWidth - orgWidth) / 2;\n }\n const lineY = 1 - getConfig().state.textHeight;\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\"y\", lineY).attr(\"class\", altBkg ? \"alt-composit\" : \"composit\").attr(\"width\", width).attr(\n \"height\",\n graphBox.height + getConfig().state.textHeight + getConfig().state.titleShift + 1\n ).attr(\"rx\", \"0\");\n title.attr(\"x\", startX + pad);\n if (titleWidth <= orgWidth) {\n title.attr(\"x\", orgX + (width - dblPad) / 2 - titleWidth / 2 + pad);\n }\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\n \"y\",\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n ).attr(\"width\", width).attr(\"height\", getConfig().state.textHeight * 3).attr(\"rx\", getConfig().state.radius);\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\n \"y\",\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n ).attr(\"width\", width).attr(\"height\", graphBox.height + 3 + 2 * getConfig().state.textHeight).attr(\"rx\", getConfig().state.radius);\n return g;\n};\nconst drawEndState = (g) => {\n g.append(\"circle\").attr(\"class\", \"end-state-outer\").attr(\"r\", getConfig().state.sizeUnit + getConfig().state.miniPadding).attr(\n \"cx\",\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n ).attr(\n \"cy\",\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n );\n return g.append(\"circle\").attr(\"class\", \"end-state-inner\").attr(\"r\", getConfig().state.sizeUnit).attr(\"cx\", getConfig().state.padding + getConfig().state.sizeUnit + 2).attr(\"cy\", getConfig().state.padding + getConfig().state.sizeUnit + 2);\n};\nconst drawForkJoinState = (g, stateDef) => {\n let width = getConfig().state.forkWidth;\n let height = getConfig().state.forkHeight;\n if (stateDef.parentId) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n return g.append(\"rect\").style(\"stroke\", \"black\").style(\"fill\", \"black\").attr(\"width\", width).attr(\"height\", height).attr(\"x\", getConfig().state.padding).attr(\"y\", getConfig().state.padding);\n};\nconst _drawLongText = (_text, x, y, g) => {\n let textHeight = 0;\n const textElem = g.append(\"text\");\n textElem.style(\"text-anchor\", \"start\");\n textElem.attr(\"class\", \"noteText\");\n let text = _text.replace(/\\r\\n/g, \"
\");\n text = text.replace(/\\n/g, \"
\");\n const lines = text.split(common.lineBreakRegex);\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line2 of lines) {\n const txt = line2.trim();\n if (txt.length > 0) {\n const span = textElem.append(\"tspan\");\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n textHeight += tHeight;\n span.attr(\"x\", x + getConfig().state.noteMargin);\n span.attr(\"y\", y + textHeight + 1.25 * getConfig().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\nconst drawNote = (text, g) => {\n g.attr(\"class\", \"state-note\");\n const note = g.append(\"rect\").attr(\"x\", 0).attr(\"y\", getConfig().state.padding);\n const rectElem = g.append(\"g\");\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr(\"height\", textHeight + 2 * getConfig().state.noteMargin);\n note.attr(\"width\", textWidth + getConfig().state.noteMargin * 2);\n return note;\n};\nconst drawState = function(elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", id).attr(\"class\", \"stateGroup\");\n if (stateDef.type === \"start\") {\n drawStartState(g);\n }\n if (stateDef.type === \"end\") {\n drawEndState(g);\n }\n if (stateDef.type === \"fork\" || stateDef.type === \"join\") {\n drawForkJoinState(g, stateDef);\n }\n if (stateDef.type === \"note\") {\n drawNote(stateDef.note.text, g);\n }\n if (stateDef.type === \"divider\") {\n drawDivider(g);\n }\n if (stateDef.type === \"default\" && stateDef.descriptions.length === 0) {\n drawSimpleState(g, stateDef);\n }\n if (stateDef.type === \"default\" && stateDef.descriptions.length > 0) {\n drawDescrState(g, stateDef);\n }\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * getConfig().state.padding;\n stateInfo.height = stateBox.height + 2 * getConfig().state.padding;\n idCache$1.set(id, stateInfo);\n return stateInfo;\n};\nlet edgeCount = 0;\nconst drawEdge = function(elem, path, relation) {\n const getRelationType = function(type) {\n switch (type) {\n case db.relationType.AGGREGATION:\n return \"aggregation\";\n case db.relationType.EXTENSION:\n return \"extension\";\n case db.relationType.COMPOSITION:\n return \"composition\";\n case db.relationType.DEPENDENCY:\n return \"dependency\";\n }\n };\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n const lineData = path.points;\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", \"edge\" + edgeCount).attr(\"class\", \"transition\");\n let url = \"\";\n if (getConfig().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + getRelationType(db.relationType.DEPENDENCY) + \"End)\"\n );\n if (relation.title !== void 0) {\n const label = elem.append(\"g\").attr(\"class\", \"stateLabel\");\n const { x, y } = utils.calcLabelPosition(path.points);\n const rows = common.getRows(relation.title);\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n for (let i = 0; i <= rows.length; i++) {\n const title = label.append(\"text\").attr(\"text-anchor\", \"middle\").text(rows[i]).attr(\"x\", x).attr(\"y\", y + titleHeight);\n const boundsTmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundsTmp.width);\n minX = Math.min(minX, boundsTmp.x);\n log.info(boundsTmp.x, x, y + titleHeight);\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n log.info(\"Title height\", titleHeight, y);\n }\n titleRows.push(title);\n }\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n titleRows.forEach((title, i) => title.attr(\"y\", y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n const bounds = label.node().getBBox();\n label.insert(\"rect\", \":first-child\").attr(\"class\", \"box\").attr(\"x\", x - maxWidth / 2 - getConfig().state.padding / 2).attr(\"y\", y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5).attr(\"width\", maxWidth + getConfig().state.padding).attr(\"height\", boxHeight + getConfig().state.padding);\n log.info(bounds);\n }\n edgeCount++;\n};\nlet conf;\nconst transformationLog = {};\nconst setConf = function() {\n};\nconst insertMarkers = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst draw = function(text, id, _version, diagObj) {\n conf = getConfig().state;\n const securityLevel = getConfig().securityLevel;\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 log.debug(\"Rendering diagram \" + text);\n const diagram2 = root.select(`[id='${id}']`);\n insertMarkers(diagram2);\n const rootDoc = diagObj.db.getRootDoc();\n renderDoc(rootDoc, diagram2, void 0, false, root, doc, diagObj);\n const padding = conf.padding;\n const bounds = diagram2.node().getBBox();\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n const svgWidth = width * 1.75;\n configureSvgSize(diagram2, height, svgWidth, conf.useMaxWidth);\n diagram2.attr(\n \"viewBox\",\n `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + \" \" + height\n );\n};\nconst getLabelWidth = (text) => {\n return text ? text.length * conf.fontSizeFactor : 1;\n};\nconst renderDoc = (doc, diagram2, parentId, altBkg, root, domDocument, diagObj) => {\n const graph = new graphlib.Graph({\n compound: true,\n multigraph: true\n });\n let i;\n let edgeFreeDoc = true;\n for (i = 0; i < doc.length; i++) {\n if (doc[i].stmt === \"relation\") {\n edgeFreeDoc = false;\n break;\n }\n }\n if (parentId) {\n graph.setGraph({\n rankdir: \"LR\",\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: \"tight-tree\",\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true\n // ranksep: 5,\n // nodesep: 1\n });\n } else {\n graph.setGraph({\n rankdir: \"TB\",\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: \"tight-tree\",\n // ranker: 'network-simplex'\n isMultiGraph: true\n });\n }\n graph.setDefaultEdgeLabel(function() {\n return {};\n });\n diagObj.db.extract(doc);\n const states = diagObj.db.getStates();\n const relations = diagObj.db.getRelations();\n const keys2 = Object.keys(states);\n for (const key of keys2) {\n const stateDef = states[key];\n if (parentId) {\n stateDef.parentId = parentId;\n }\n let node;\n if (stateDef.doc) {\n let sub = diagram2.append(\"g\").attr(\"id\", stateDef.id).attr(\"class\", \"stateGroup\");\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg, root, domDocument, diagObj);\n {\n sub = addTitleAndBox(sub, stateDef, altBkg);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + conf.padding / 2;\n transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n }\n } else {\n node = drawState(diagram2, stateDef);\n }\n if (stateDef.note) {\n const noteDef = {\n descriptions: [],\n id: stateDef.id + \"-note\",\n note: stateDef.note,\n type: \"note\"\n };\n const note = drawState(diagram2, noteDef);\n if (stateDef.note.position === \"left of\") {\n graph.setNode(node.id + \"-note\", note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + \"-note\", note);\n }\n graph.setParent(node.id, node.id + \"-group\");\n graph.setParent(node.id + \"-note\", node.id + \"-group\");\n } else {\n graph.setNode(node.id, node);\n }\n }\n log.debug(\"Count=\", graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function(relation) {\n cnt++;\n log.debug(\"Setting edge\", relation);\n graph.setEdge(\n relation.id1,\n relation.id2,\n {\n relation,\n width: getLabelWidth(relation.title),\n height: conf.labelHeight * common.getRows(relation.title).length,\n labelpos: \"c\"\n },\n \"id\" + cnt\n );\n });\n layout(graph);\n log.debug(\"Graph after layout\", graph.nodes());\n const svgElem = diagram2.node();\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n log.warn(\"Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y + (transformationLog[v] ? transformationLog[v].y : 0) - graph.node(v).height / 2) + \" )\"\n );\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\"data-x-shift\", graph.node(v).x - graph.node(v).width / 2);\n const dividers = domDocument.querySelectorAll(\"#\" + svgElem.id + \" #\" + v + \" .divider\");\n dividers.forEach((divider) => {\n const parent = divider.parentElement;\n let pWidth = 0;\n let pShift = 0;\n if (parent) {\n if (parent.parentElement) {\n pWidth = parent.parentElement.getBBox().width;\n }\n pShift = parseInt(parent.getAttribute(\"data-x-shift\"), 10);\n if (Number.isNaN(pShift)) {\n pShift = 0;\n }\n }\n divider.setAttribute(\"x1\", 0 - pShift + 8);\n divider.setAttribute(\"x2\", pWidth - pShift - 8);\n });\n } else {\n log.debug(\"No Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n }\n });\n let stateBox = svgElem.getBBox();\n graph.edges().forEach(function(e) {\n if (e !== void 0 && graph.edge(e) !== void 0) {\n log.debug(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n drawEdge(diagram2, graph.edge(e), graph.edge(e).relation);\n }\n });\n stateBox = svgElem.getBBox();\n const stateInfo = {\n id: parentId ? parentId : \"root\",\n label: parentId ? parentId : \"root\",\n width: 0,\n height: 0\n };\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n log.debug(\"Doc rendered\", stateInfo, graph);\n return stateInfo;\n};\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n"],"names":["parcelRequire","$parcel$global","globalThis","parcelRegister","register","module","exports","$525550bf0a32a999$var$conf","Object","defineProperty","get","$525550bf0a32a999$export$6118d022d940d562","set","s","enumerable","configurable","$3ltxT","$2YFJl","$hV1gR","$4LkSm","$4jcZX","$525550bf0a32a999$var$idCache","key","val","$525550bf0a32a999$var$drawStartState","g","append","attr","c","state","sizeUnit","padding","$525550bf0a32a999$var$drawDivider","style","textHeight","$525550bf0a32a999$var$drawSimpleState","stateDef","fontSize","text","id","classBox","node","getBBox","insert","width","height","radius","$525550bf0a32a999$var$drawDescrState","addTspan","textEl","txt","isFirst2","tSpan","titleBox","title","descriptions","titleHeight","description","dividerMargin","isFirst","isSecond","forEach","descr","descrLine","descrBox","Math","max","$525550bf0a32a999$var$addTitleAndBox","altBkg","startX","pad","dblPad","orgBox","orgWidth","orgX","x","titleShift","titleWidth","graphBox","doc","abs","lineY","$525550bf0a32a999$var$drawEndState","miniPadding","$525550bf0a32a999$var$drawForkJoinState","forkWidth","forkHeight","parentId","tmp","$525550bf0a32a999$var$_drawLongText","_text","y","textElem","replace","lines","split","e","lineBreakRegex","tHeight","noteMargin","line2","trim","length","span","textBounds","textWidth","$525550bf0a32a999$var$drawNote","note","$525550bf0a32a999$var$drawState","elem","stateInfo","label","type","stateBox","$525550bf0a32a999$var$idCache$1","$525550bf0a32a999$var$edgeCount","$525550bf0a32a999$var$drawEdge","path","relation","points","filter","p","Number","isNaN","lineData","lineFunction","line","d","curve","curveBasis","svgPath","url","arrowMarkerAbsolute","window","location","protocol","host","pathname","search","getRelationType","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","u","calcLabelPosition","rows","getRows","titleRows","maxWidth","minX","i","boundsTmp","min","l","info","push","boxHeight","heightAdj","bounds","$525550bf0a32a999$var$transformationLog","$525550bf0a32a999$var$insertMarkers","$525550bf0a32a999$var$getLabelWidth","fontSizeFactor","$525550bf0a32a999$var$renderDoc","diagram2","root","domDocument","diagObj","graph","Graph","compound","multigraph","edgeFreeDoc","stmt","setGraph","rankdir","ranker","ranksep","edgeLengthFactor","nodeSep","isMultiGraph","setDefaultEdgeLabel","db","extract","states","getStates","relations","getRelations","keys","sub","boxBounds","compositTitleSize","position","setNode","setParent","debug","nodeCount","cnt","setEdge","id1","id2","labelHeight","labelpos","layout","nodes","svgElem","v","warn","JSON","stringify","select","dividers","querySelectorAll","divider","parent","parentElement","pWidth","pShift","parseInt","getAttribute","setAttribute","edges","edge","w","parser","renderer","setConf","draw","_version","sandboxElement","securityLevel","contentDocument","body","document","getRootDoc","useMaxWidth","styles","init","cnf","clear"],"version":3,"file":"stateDiagram-5dee940d.365d4b10.js.map"}