@plumile/ui 0.1.99 → 0.1.102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/{BackofficeJsonViewerAsync-GenasLA-.js → BackofficeJsonViewerAsync-niwHe9is.js} +2 -2
- package/lib/esm/{BackofficeJsonViewerAsync-GenasLA-.js.map → BackofficeJsonViewerAsync-niwHe9is.js.map} +1 -1
- package/lib/esm/HighlightCode-KpWSo7Zx.js.map +1 -1
- package/lib/esm/{MarkdownCodeBlock-DZRdzjJ9.js → MarkdownCodeBlock-CLK5KJgU.js} +3 -3
- package/lib/esm/{MarkdownCodeBlock-DZRdzjJ9.js.map → MarkdownCodeBlock-CLK5KJgU.js.map} +1 -1
- package/lib/esm/{MarkdownRenderer-DBpMvD98.js → MarkdownRenderer-c_Ic29c2.js} +2 -2
- package/lib/esm/{MarkdownRenderer-DBpMvD98.js.map → MarkdownRenderer-c_Ic29c2.js.map} +1 -1
- package/lib/esm/{MarkdownShikiCodeBlock-BhdpnKJo.js → MarkdownShikiCodeBlock-CbaOKfZO.js} +1180 -1175
- package/lib/esm/MarkdownShikiCodeBlock-CbaOKfZO.js.map +1 -0
- package/lib/esm/_baseFor-Z--4BB_X.js.map +1 -1
- package/lib/esm/arc-BUZ4igwO.js.map +1 -1
- package/lib/esm/architectureDiagram-Q4EWVU46-DpoNV55s.js.map +1 -1
- package/lib/esm/array-CTFiDRBi.js.map +1 -1
- package/lib/esm/blockDiagram-DXYQGD6D-DJxDffAk.js.map +1 -1
- package/lib/esm/c4Diagram-AHTNJAMY-DxAt6CyF.js.map +1 -1
- package/lib/esm/chunk-2KRD3SAO-C5ZUgIak.js.map +1 -1
- package/lib/esm/{chunk-336JU56O-24m8cXIL.js → chunk-336JU56O-BsMYboJR.js} +3 -3
- package/lib/esm/{chunk-336JU56O-24m8cXIL.js.map → chunk-336JU56O-BsMYboJR.js.map} +1 -1
- package/lib/esm/chunk-426QAEUC-b2PRuT9o.js.map +1 -1
- package/lib/esm/chunk-4BX2VUAB-BkyyJ41z.js.map +1 -1
- package/lib/esm/{chunk-4TB4RGXK-CsiupxiO.js → chunk-4TB4RGXK-LzOZn6e3.js} +2 -2
- package/lib/esm/{chunk-4TB4RGXK-CsiupxiO.js.map → chunk-4TB4RGXK-LzOZn6e3.js.map} +1 -1
- package/lib/esm/chunk-55IACEB6-CZ1WMXNv.js.map +1 -1
- package/lib/esm/chunk-5FUZZQ4R-Hp5ZXYAE.js.map +1 -1
- package/lib/esm/chunk-5PVQY5BW-CQdr0IGy.js.map +1 -1
- package/lib/esm/chunk-67CJDMHE-DQCJ08Vv.js.map +1 -1
- package/lib/esm/chunk-7N4EOEYR-CTdQRezU.js.map +1 -1
- package/lib/esm/chunk-AA7GKIK3-x61iJxkf.js.map +1 -1
- package/lib/esm/chunk-BSJP7CBP-BRqWaFD3.js.map +1 -1
- package/lib/esm/chunk-CIAEETIT-Dm4nDheA.js.map +1 -1
- package/lib/esm/chunk-EDXVE4YY-CyZVAPxl.js.map +1 -1
- package/lib/esm/chunk-ENJZ2VHE-D1RBdOy4.js.map +1 -1
- package/lib/esm/chunk-FOC6F5B3-DTxKWzfh.js.map +1 -1
- package/lib/esm/chunk-ICPOFSXX-BQ7-Poft.js.map +1 -1
- package/lib/esm/chunk-K5T4RW27-BZbwqbnj.js.map +1 -1
- package/lib/esm/chunk-KGLVRYIC-DGO8PqNS.js.map +1 -1
- package/lib/esm/chunk-LIHQZDEY-DRQpYuDY.js.map +1 -1
- package/lib/esm/chunk-ORNJ4GCN-BWnkQx42.js.map +1 -1
- package/lib/esm/{chunk-OYMX7WX6-C3qIK5JJ.js → chunk-OYMX7WX6-C3p3qx9s.js} +2 -2
- package/lib/esm/{chunk-OYMX7WX6-C3qIK5JJ.js.map → chunk-OYMX7WX6-C3p3qx9s.js.map} +1 -1
- package/lib/esm/chunk-QZHKN3VN-BIoC_CBh.js.map +1 -1
- package/lib/esm/chunk-U2HBQHQK-CNpf2t7b.js.map +1 -1
- package/lib/esm/chunk-X2U36JSP-Dh9T66Fy.js.map +1 -1
- package/lib/esm/chunk-XPW4576I-CdsuZylH.js.map +1 -1
- package/lib/esm/chunk-YZCP3GAM-D-LQWFJc.js.map +1 -1
- package/lib/esm/chunk-ZZ45TVLE-CP_4OsJR.js.map +1 -1
- package/lib/esm/{classDiagram-6PBFFD2Q-CfClLEok.js → classDiagram-6PBFFD2Q-CfucyocV.js} +3 -3
- package/lib/esm/{classDiagram-6PBFFD2Q-CfClLEok.js.map → classDiagram-6PBFFD2Q-CfucyocV.js.map} +1 -1
- package/lib/esm/{classDiagram-v2-HSJHXN6E-BlbDAEH6.js → classDiagram-v2-HSJHXN6E-BcU6iB1L.js} +3 -3
- package/lib/esm/{classDiagram-v2-HSJHXN6E-BlbDAEH6.js.map → classDiagram-v2-HSJHXN6E-BcU6iB1L.js.map} +1 -1
- package/lib/esm/clone-DhB5s2T9.js.map +1 -1
- package/lib/esm/cose-bilkent-S5V4N54A-BdVqhM8C.js.map +1 -1
- package/lib/esm/cytoscape.esm-CT-fsRss.js.map +1 -1
- package/lib/esm/dagre-BQULeUjQ.js.map +1 -1
- package/lib/esm/dagre-KV5264BT-DTy5YJ5_.js.map +1 -1
- package/lib/esm/diagram-5BDNPKRD-w19gCTBw.js.map +1 -1
- package/lib/esm/diagram-G4DWMVQ6-EfJtDPEB.js.map +1 -1
- package/lib/esm/diagram-MMDJMWI5-DsPB2uYP.js.map +1 -1
- package/lib/esm/diagram-TYMM5635-D3ecq7oF.js.map +1 -1
- package/lib/esm/dist-CZs_brJz.js.map +1 -1
- package/lib/esm/{erDiagram-SMLLAGMA-sgCGzaHO.js → erDiagram-SMLLAGMA-DsYSva8K.js} +2 -2
- package/lib/esm/{erDiagram-SMLLAGMA-sgCGzaHO.js.map → erDiagram-SMLLAGMA-DsYSva8K.js.map} +1 -1
- package/lib/esm/flatten-CRDGWjhS.js.map +1 -1
- package/lib/esm/{flowDiagram-DWJPFMVM-BlOft6GA.js → flowDiagram-DWJPFMVM-BkxIhdyA.js} +2 -2
- package/lib/esm/{flowDiagram-DWJPFMVM-BlOft6GA.js.map → flowDiagram-DWJPFMVM-BkxIhdyA.js.map} +1 -1
- package/lib/esm/ganttDiagram-T4ZO3ILL-BGrn6yEi.js.map +1 -1
- package/lib/esm/gitGraphDiagram-UUTBAWPF-BV73nor5.js.map +1 -1
- package/lib/esm/graphlib-B76sPwTV.js.map +1 -1
- package/lib/esm/infoDiagram-42DDH7IO-CYONnQuR.js.map +1 -1
- package/lib/esm/init-DcYXQL-k.js.map +1 -1
- package/lib/esm/isEmpty-DLTQgX7m.js.map +1 -1
- package/lib/esm/ishikawaDiagram-UXIWVN3A-B2ISni0r.js.map +1 -1
- package/lib/esm/journeyDiagram-VCZTEJTY-CjNMX7wx.js.map +1 -1
- package/lib/esm/kanban-definition-6JOO6SKY-BNsv25Cl.js.map +1 -1
- package/lib/esm/katex-DpumU0Fc.js.map +1 -1
- package/lib/esm/line-Dyv5of1r.js.map +1 -1
- package/lib/esm/linear-LpGdIFrk.js.map +1 -1
- package/lib/esm/mermaid-parser.core-D5sUsnWF.js.map +1 -1
- package/lib/esm/{mermaid.core-o6lwF-Gt.js → mermaid.core-i12yADTp.js} +12 -12
- package/lib/esm/{mermaid.core-o6lwF-Gt.js.map → mermaid.core-i12yADTp.js.map} +1 -1
- package/lib/esm/{mindmap-definition-QFDTVHPH-C63UTb48.js → mindmap-definition-QFDTVHPH-BfrBPDUJ.js} +2 -2
- package/lib/esm/{mindmap-definition-QFDTVHPH-C63UTb48.js.map → mindmap-definition-QFDTVHPH-BfrBPDUJ.js.map} +1 -1
- package/lib/esm/ordinal-B2RGggQH.js.map +1 -1
- package/lib/esm/path-Bg_3NlDP.js.map +1 -1
- package/lib/esm/pieDiagram-DEJITSTG-YByZ__0R.js.map +1 -1
- package/lib/esm/quadrantDiagram-34T5L4WZ-DLFKZc02.js.map +1 -1
- package/lib/esm/reduce-0ekdtexD.js.map +1 -1
- package/lib/esm/{requirementDiagram-MS252O5E-CJXcr8r4.js → requirementDiagram-MS252O5E-CulfPmse.js} +2 -2
- package/lib/esm/{requirementDiagram-MS252O5E-CJXcr8r4.js.map → requirementDiagram-MS252O5E-CulfPmse.js.map} +1 -1
- package/lib/esm/rough.esm-IQz7gRXZ.js.map +1 -1
- package/lib/esm/sankeyDiagram-XADWPNL6-DMByY6gK.js.map +1 -1
- package/lib/esm/sequenceDiagram-FGHM5R23-vJC9cjdX.js.map +1 -1
- package/lib/esm/src-BZm6Awwh.js.map +1 -1
- package/lib/esm/{src-C5doNKmD.js → src-DT2iBPF8.js} +629 -541
- package/lib/esm/src-DT2iBPF8.js.map +1 -0
- package/lib/esm/{stateDiagram-FHFEXIEX-G9WWEBGm.js → stateDiagram-FHFEXIEX-CofVLBPX.js} +3 -3
- package/lib/esm/{stateDiagram-FHFEXIEX-G9WWEBGm.js.map → stateDiagram-FHFEXIEX-CofVLBPX.js.map} +1 -1
- package/lib/esm/{stateDiagram-v2-QKLJ7IA2-BSg62pbb.js → stateDiagram-v2-QKLJ7IA2-DTXym7Y8.js} +3 -3
- package/lib/esm/{stateDiagram-v2-QKLJ7IA2-BSg62pbb.js.map → stateDiagram-v2-QKLJ7IA2-DTXym7Y8.js.map} +1 -1
- package/lib/esm/style.css +1 -1
- package/lib/esm/timeline-definition-GMOUNBTQ-DeWjV_e-.js.map +1 -1
- package/lib/esm/ui.js +4 -4
- package/lib/esm/vennDiagram-DHZGUBPP-CKdXCzw7.js.map +1 -1
- package/lib/esm/wardleyDiagram-NUSXRM2D-BzD8LDJv.js.map +1 -1
- package/lib/esm/xychartDiagram-5P7HB3ND-C2ITEA5J.js.map +1 -1
- package/lib/types/backoffice/molecules/backoffice_load_more/BackofficeLoadMore.d.ts +2 -1
- package/lib/types/backoffice/molecules/backoffice_load_more/BackofficeLoadMore.d.ts.map +1 -1
- package/lib/types/backoffice/molecules/backoffice_load_more/backofficeLoadMore.css.d.ts +1 -0
- package/lib/types/backoffice/molecules/backoffice_load_more/backofficeLoadMore.css.d.ts.map +1 -1
- package/lib/types/backoffice/molecules/sidebar_nav_section/SidebarNavSection.d.ts +1 -1
- package/lib/types/backoffice/molecules/sidebar_nav_section/SidebarNavSection.d.ts.map +1 -1
- package/lib/types/components/data-table/DataTable.d.ts +2 -0
- package/lib/types/components/data-table/DataTable.d.ts.map +1 -1
- package/lib/types/components/data-table/ResponsiveRecordList.css.d.ts +21 -0
- package/lib/types/components/data-table/ResponsiveRecordList.css.d.ts.map +1 -0
- package/lib/types/components/data-table/ResponsiveRecordList.d.ts +17 -0
- package/lib/types/components/data-table/ResponsiveRecordList.d.ts.map +1 -0
- package/lib/types/index.d.ts +2 -0
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +12 -12
- package/lib/esm/MarkdownShikiCodeBlock-BhdpnKJo.js.map +0 -1
- package/lib/esm/src-C5doNKmD.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wardleyDiagram-NUSXRM2D-BzD8LDJv.js","names":["getConfig"],"sources":["../../../../node_modules/mermaid/dist/chunks/mermaid.core/wardleyDiagram-NUSXRM2D.mjs"],"sourcesContent":["import {\n selectSvgElement\n} from \"./chunk-426QAEUC.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n clear,\n configureSvgSize,\n getAccDescription,\n getAccTitle,\n getConfig2 as getConfig,\n getDiagramTitle,\n sanitizeText,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n} from \"./chunk-ICPOFSXX.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/wardley/wardleyParser.ts\nimport { parse } from \"@mermaid-js/parser\";\nvar toPercent = /* @__PURE__ */ __name((value, context) => {\n const normalized = value <= 1 ? value * 100 : value;\n if (normalized < 0 || normalized > 100) {\n throw new Error(\n `${context} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${value}`\n );\n }\n return normalized;\n}, \"toPercent\");\nvar toCoordinates = /* @__PURE__ */ __name((visibility, evolution, context) => {\n return {\n x: toPercent(evolution, `${context} evolution`),\n y: toPercent(visibility, `${context} visibility`)\n };\n}, \"toCoordinates\");\nvar getFlowFromPort = /* @__PURE__ */ __name((port) => {\n if (!port) {\n return void 0;\n }\n if (port === \"+<>\") {\n return \"bidirectional\";\n }\n if (port === \"+<\") {\n return \"backward\";\n }\n if (port === \"+>\") {\n return \"forward\";\n }\n return void 0;\n}, \"getFlowFromPort\");\nvar extractFlowFromArrow = /* @__PURE__ */ __name((arrow) => {\n if (!arrow?.startsWith(\"+\")) {\n return {};\n }\n const labelMatch = /^\\+'([^']*)'/.exec(arrow);\n const flowLabel = labelMatch?.[1];\n if (arrow.includes(\"<>\")) {\n return { flow: \"bidirectional\", label: flowLabel };\n }\n if (arrow.includes(\"<\")) {\n return { flow: \"backward\", label: flowLabel };\n }\n if (arrow.includes(\">\")) {\n return { flow: \"forward\", label: flowLabel };\n }\n return { label: flowLabel };\n}, \"extractFlowFromArrow\");\nvar populateDb = /* @__PURE__ */ __name((ast, db) => {\n populateCommonDb(ast, db);\n if (ast.size) {\n db.setSize(ast.size.width, ast.size.height);\n }\n if (ast.evolution) {\n const stages = ast.evolution.stages.map((stage) => {\n if (stage.secondName) {\n return `${stage.name.trim()} / ${stage.secondName.trim()}`;\n }\n return stage.name.trim();\n });\n const stageBoundaries = ast.evolution.stages.filter((stage) => stage.boundary !== void 0).map((stage) => stage.boundary);\n db.updateAxes({ stages, stageBoundaries });\n }\n ast.anchors.forEach((anchor) => {\n const coords = toCoordinates(anchor.visibility, anchor.evolution, `Anchor \"${anchor.name}\"`);\n db.addNode(anchor.name, anchor.name, coords.x, coords.y, \"anchor\");\n });\n ast.components.forEach((component) => {\n const coords = toCoordinates(\n component.visibility,\n component.evolution,\n `Component \"${component.name}\"`\n );\n const labelOffsetX = component.label ? (component.label.negX ? -1 : 1) * component.label.offsetX : void 0;\n const labelOffsetY = component.label ? (component.label.negY ? -1 : 1) * component.label.offsetY : void 0;\n const sourceStrategy = component.decorator?.strategy;\n db.addNode(\n component.name,\n component.name,\n coords.x,\n coords.y,\n \"component\",\n labelOffsetX,\n labelOffsetY,\n component.inertia,\n sourceStrategy\n );\n });\n ast.notes.forEach((note) => {\n const coords = toCoordinates(note.visibility, note.evolution, `Note \"${note.text}\"`);\n db.addNote(note.text, coords.x, coords.y);\n });\n ast.pipelines.forEach((pipeline) => {\n const parentNode = db.getNode(pipeline.parent);\n if (!parentNode || typeof parentNode.y !== \"number\") {\n throw new Error(\n `Pipeline \"${pipeline.parent}\" must reference an existing component with coordinates.`\n );\n }\n const parentY = parentNode.y;\n db.startPipeline(pipeline.parent);\n pipeline.components.forEach((component) => {\n const componentId = `${pipeline.parent}_${component.name}`;\n const labelOffsetX = component.label ? (component.label.negX ? -1 : 1) * component.label.offsetX : void 0;\n const labelOffsetY = component.label ? (component.label.negY ? -1 : 1) * component.label.offsetY : void 0;\n const x = toPercent(component.evolution, `Pipeline component \"${component.name}\" evolution`);\n db.addNode(\n componentId,\n component.name,\n x,\n parentY,\n \"pipeline-component\",\n labelOffsetX,\n labelOffsetY\n );\n db.addPipelineComponent(pipeline.parent, componentId);\n });\n });\n ast.links.forEach((link) => {\n const isDashed = !!link.arrow && (link.arrow.includes(\"-.->\") || link.arrow.includes(\".-.\"));\n let flow = getFlowFromPort(link.fromPort) ?? getFlowFromPort(link.toPort);\n const { flow: arrowFlow, label: flowLabel } = extractFlowFromArrow(link.arrow);\n if (!flow && arrowFlow) {\n flow = arrowFlow;\n }\n const annotation = link.linkLabel;\n const label = flowLabel ?? annotation;\n db.addLink(link.from, link.to, isDashed, label, flow);\n });\n ast.evolves.forEach((evolve) => {\n const node = db.getNode(evolve.component);\n if (node?.y !== void 0) {\n const target = toPercent(evolve.target, `Evolve target for \"${evolve.component}\"`);\n db.addTrend(evolve.component, target, node.y);\n }\n });\n if (ast.annotations.length > 0) {\n const annotationsBox = ast.annotations[0];\n const coords = toCoordinates(annotationsBox.x, annotationsBox.y, \"Annotations box\");\n db.setAnnotationsBox(coords.x, coords.y);\n }\n ast.annotation.forEach((annotation) => {\n const coords = toCoordinates(annotation.x, annotation.y, `Annotation ${annotation.number}`);\n db.addAnnotation(annotation.number, [{ x: coords.x, y: coords.y }], annotation.text);\n });\n ast.accelerators.forEach((accelerator) => {\n const coords = toCoordinates(accelerator.x, accelerator.y, `Accelerator \"${accelerator.name}\"`);\n db.addAccelerator(accelerator.name, coords.x, coords.y);\n });\n ast.deaccelerators.forEach((deaccelerator) => {\n const coords = toCoordinates(\n deaccelerator.x,\n deaccelerator.y,\n `Deaccelerator \"${deaccelerator.name}\"`\n );\n db.addDeaccelerator(deaccelerator.name, coords.x, coords.y);\n });\n}, \"populateDb\");\nvar parser = {\n parser: {\n // @ts-expect-error - WardleyDB is not assignable to DiagramDB\n yy: void 0\n },\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"wardley\", input);\n log.debug(ast);\n const db = parser.parser?.yy;\n if (!db || typeof db.addNode !== \"function\") {\n throw new Error(\n \"parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.\"\n );\n }\n populateDb(ast, db);\n }, \"parse\")\n};\n\n// src/diagrams/wardley/wardleyBuilder.ts\nvar WardleyBuilder = class {\n constructor() {\n this.nodes = /* @__PURE__ */ new Map();\n this.links = [];\n this.trends = /* @__PURE__ */ new Map();\n this.pipelines = /* @__PURE__ */ new Map();\n this.annotations = [];\n this.notes = [];\n this.accelerators = [];\n this.deaccelerators = [];\n this.axes = {};\n }\n static {\n __name(this, \"WardleyBuilder\");\n }\n addNode(node) {\n const existing = this.nodes.get(node.id) ?? { id: node.id, label: node.label };\n const merged = {\n ...existing,\n ...node,\n className: node.className ?? existing.className,\n labelOffsetX: node.labelOffsetX ?? existing.labelOffsetX,\n labelOffsetY: node.labelOffsetY ?? existing.labelOffsetY\n };\n this.nodes.set(node.id, merged);\n }\n addLink(link) {\n this.links.push(link);\n }\n addTrend(trend) {\n this.trends.set(trend.nodeId, trend);\n }\n startPipeline(nodeId) {\n this.pipelines.set(nodeId, { nodeId, componentIds: [] });\n const node = this.nodes.get(nodeId);\n if (node) {\n node.isPipelineParent = true;\n }\n }\n addPipelineComponent(pipelineNodeId, componentId) {\n const pipeline = this.pipelines.get(pipelineNodeId);\n if (pipeline) {\n pipeline.componentIds.push(componentId);\n }\n const node = this.nodes.get(componentId);\n if (node) {\n node.inPipeline = true;\n }\n }\n addAnnotation(annotation) {\n this.annotations.push(annotation);\n }\n addNote(note) {\n this.notes.push(note);\n }\n addAccelerator(accelerator) {\n this.accelerators.push(accelerator);\n }\n addDeaccelerator(deaccelerator) {\n this.deaccelerators.push(deaccelerator);\n }\n setAnnotationsBox(x, y) {\n this.annotationsBox = { x, y };\n }\n setAxes(partial) {\n this.axes = {\n ...this.axes,\n ...partial\n };\n }\n setSize(width, height) {\n this.size = { width, height };\n }\n getNode(id) {\n return this.nodes.get(id);\n }\n build() {\n const nodes = [];\n for (const node of this.nodes.values()) {\n if (typeof node.x !== \"number\" || typeof node.y !== \"number\") {\n throw new Error(`Node \"${node.label}\" is missing coordinates`);\n }\n nodes.push(node);\n }\n return {\n nodes,\n links: [...this.links],\n trends: [...this.trends.values()],\n pipelines: [...this.pipelines.values()],\n annotations: [...this.annotations],\n notes: [...this.notes],\n accelerators: [...this.accelerators],\n deaccelerators: [...this.deaccelerators],\n annotationsBox: this.annotationsBox,\n axes: { ...this.axes },\n size: this.size\n };\n }\n clear() {\n this.nodes.clear();\n this.links = [];\n this.trends.clear();\n this.pipelines.clear();\n this.annotations = [];\n this.notes = [];\n this.accelerators = [];\n this.deaccelerators = [];\n this.annotationsBox = void 0;\n this.axes = {};\n this.size = void 0;\n }\n};\n\n// src/diagrams/wardley/wardleyDb.ts\nvar builder = new WardleyBuilder();\nfunction textSanitizer(text) {\n const config = getConfig();\n return sanitizeText(text.trim(), config);\n}\n__name(textSanitizer, \"textSanitizer\");\nfunction getConfig2() {\n return getConfig()[\"wardley-beta\"];\n}\n__name(getConfig2, \"getConfig\");\nfunction addNode(id, label, x, y, className, labelOffsetX, labelOffsetY, inertia, sourceStrategy) {\n builder.addNode({\n id,\n label: textSanitizer(label),\n x,\n y,\n className,\n labelOffsetX,\n labelOffsetY,\n inertia,\n sourceStrategy\n });\n}\n__name(addNode, \"addNode\");\nfunction addLink(sourceId, targetId, dashed = false, label, flow) {\n builder.addLink({ source: sourceId, target: targetId, dashed, label, flow });\n}\n__name(addLink, \"addLink\");\nfunction addTrend(nodeId, targetX, targetY) {\n builder.addTrend({ nodeId, targetX, targetY });\n}\n__name(addTrend, \"addTrend\");\nfunction addAnnotation(number, coordinates, text) {\n builder.addAnnotation({\n number,\n coordinates,\n text: text ? textSanitizer(text) : void 0\n });\n}\n__name(addAnnotation, \"addAnnotation\");\nfunction addNote(text, x, y) {\n builder.addNote({\n text: textSanitizer(text),\n x,\n y\n });\n}\n__name(addNote, \"addNote\");\nfunction addAccelerator(name, x, y) {\n builder.addAccelerator({\n name: textSanitizer(name),\n x,\n y\n });\n}\n__name(addAccelerator, \"addAccelerator\");\nfunction addDeaccelerator(name, x, y) {\n builder.addDeaccelerator({\n name: textSanitizer(name),\n x,\n y\n });\n}\n__name(addDeaccelerator, \"addDeaccelerator\");\nfunction setAnnotationsBox(x, y) {\n builder.setAnnotationsBox(x, y);\n}\n__name(setAnnotationsBox, \"setAnnotationsBox\");\nfunction setSize(width, height) {\n builder.setSize(width, height);\n}\n__name(setSize, \"setSize\");\nfunction startPipeline(nodeId) {\n builder.startPipeline(nodeId);\n}\n__name(startPipeline, \"startPipeline\");\nfunction addPipelineComponent(pipelineNodeId, componentId) {\n builder.addPipelineComponent(pipelineNodeId, componentId);\n}\n__name(addPipelineComponent, \"addPipelineComponent\");\nfunction updateAxes(partial) {\n const sanitized = {};\n if (partial.xLabel) {\n sanitized.xLabel = textSanitizer(partial.xLabel);\n }\n if (partial.yLabel) {\n sanitized.yLabel = textSanitizer(partial.yLabel);\n }\n if (partial.stages) {\n sanitized.stages = partial.stages.map((stage) => textSanitizer(stage));\n }\n if (partial.stageBoundaries) {\n sanitized.stageBoundaries = partial.stageBoundaries;\n }\n builder.setAxes(sanitized);\n}\n__name(updateAxes, \"updateAxes\");\nfunction getNode(id) {\n return builder.getNode(id);\n}\n__name(getNode, \"getNode\");\nfunction getWardleyData() {\n return builder.build();\n}\n__name(getWardleyData, \"getWardleyData\");\nfunction clear2() {\n builder.clear();\n clear();\n}\n__name(clear2, \"clear\");\nvar wardleyDb_default = {\n getConfig: getConfig2,\n addNode,\n addLink,\n addTrend,\n addAnnotation,\n addNote,\n addAccelerator,\n addDeaccelerator,\n setAnnotationsBox,\n setSize,\n startPipeline,\n addPipelineComponent,\n updateAxes,\n getNode,\n getWardleyData,\n clear: clear2,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription\n};\n\n// src/diagrams/wardley/wardleyRenderer.ts\nvar DEFAULT_STAGES = [\"Genesis\", \"Custom Built\", \"Product\", \"Commodity\"];\nvar getTheme = /* @__PURE__ */ __name(() => {\n const { themeVariables } = getConfig();\n return {\n backgroundColor: themeVariables.wardley?.backgroundColor ?? themeVariables.background ?? \"#fff\",\n axisColor: themeVariables.wardley?.axisColor ?? \"#000\",\n axisTextColor: themeVariables.wardley?.axisTextColor ?? themeVariables.primaryTextColor ?? \"#222\",\n gridColor: themeVariables.wardley?.gridColor ?? \"rgba(100, 100, 100, 0.2)\",\n componentFill: themeVariables.wardley?.componentFill ?? \"#fff\",\n componentStroke: themeVariables.wardley?.componentStroke ?? \"#000\",\n componentLabelColor: themeVariables.wardley?.componentLabelColor ?? themeVariables.primaryTextColor ?? \"#222\",\n linkStroke: themeVariables.wardley?.linkStroke ?? \"#000\",\n evolutionStroke: themeVariables.wardley?.evolutionStroke ?? \"#dc3545\",\n annotationStroke: themeVariables.wardley?.annotationStroke ?? \"#000\",\n annotationTextColor: themeVariables.wardley?.annotationTextColor ?? themeVariables.primaryTextColor ?? \"#222\",\n annotationFill: themeVariables.wardley?.annotationFill ?? themeVariables.background ?? \"#fff\"\n };\n}, \"getTheme\");\nvar getConfigValues = /* @__PURE__ */ __name(() => {\n const wardleyConfig = getConfig()[\"wardley-beta\"];\n return {\n width: wardleyConfig?.width ?? 900,\n height: wardleyConfig?.height ?? 600,\n padding: wardleyConfig?.padding ?? 48,\n nodeRadius: wardleyConfig?.nodeRadius ?? 6,\n nodeLabelOffset: wardleyConfig?.nodeLabelOffset ?? 8,\n axisFontSize: wardleyConfig?.axisFontSize ?? 12,\n labelFontSize: wardleyConfig?.labelFontSize ?? 10,\n showGrid: wardleyConfig?.showGrid ?? false,\n useMaxWidth: wardleyConfig?.useMaxWidth ?? true\n };\n}, \"getConfigValues\");\nvar draw = /* @__PURE__ */ __name((text, id, _version, diagObj) => {\n log.debug(\"Rendering Wardley map\\n\" + text);\n const configValues = getConfigValues();\n const theme = getTheme();\n const squareSize = configValues.nodeRadius * 1.6;\n const db = diagObj.db;\n const data = db.getWardleyData();\n const title = db.getDiagramTitle();\n const width = data.size?.width ?? configValues.width;\n const height = data.size?.height ?? configValues.height;\n const svg = selectSvgElement(id);\n svg.selectAll(\"*\").remove();\n configureSvgSize(svg, height, width, configValues.useMaxWidth);\n svg.attr(\"viewBox\", `0 0 ${width} ${height}`);\n const root = svg.append(\"g\").attr(\"class\", \"wardley-map\");\n const defs = svg.append(\"defs\");\n defs.append(\"marker\").attr(\"id\", `arrow-${id}`).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerWidth\", 6).attr(\"markerHeight\", 6).attr(\"orient\", \"auto-start-reverse\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"fill\", theme.evolutionStroke).attr(\"stroke\", \"none\");\n defs.append(\"marker\").attr(\"id\", `link-arrow-end-${id}`).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerWidth\", 5).attr(\"markerHeight\", 5).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"fill\", theme.linkStroke).attr(\"stroke\", \"none\");\n defs.append(\"marker\").attr(\"id\", `link-arrow-start-${id}`).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 1).attr(\"refY\", 5).attr(\"markerWidth\", 5).attr(\"markerHeight\", 5).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 10 0 L 0 5 L 10 10 z\").attr(\"fill\", theme.linkStroke).attr(\"stroke\", \"none\");\n root.append(\"rect\").attr(\"class\", \"wardley-background\").attr(\"width\", width).attr(\"height\", height).attr(\"fill\", theme.backgroundColor);\n const chartWidth = width - configValues.padding * 2;\n const chartHeight = height - configValues.padding * 2;\n if (title) {\n root.append(\"text\").attr(\"class\", \"wardley-title\").attr(\"x\", width / 2).attr(\"y\", configValues.padding / 2).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.axisFontSize * 1.05).attr(\"font-weight\", \"bold\").attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").text(title);\n }\n const projectX = /* @__PURE__ */ __name((value) => configValues.padding + value / 100 * chartWidth, \"projectX\");\n const projectY = /* @__PURE__ */ __name((value) => height - configValues.padding - value / 100 * chartHeight, \"projectY\");\n const axisGroup = root.append(\"g\").attr(\"class\", \"wardley-axes\");\n axisGroup.append(\"line\").attr(\"x1\", configValues.padding).attr(\"x2\", width - configValues.padding).attr(\"y1\", height - configValues.padding).attr(\"y2\", height - configValues.padding).attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1);\n axisGroup.append(\"line\").attr(\"x1\", configValues.padding).attr(\"x2\", configValues.padding).attr(\"y1\", configValues.padding).attr(\"y2\", height - configValues.padding).attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1);\n const xLabel = data.axes.xLabel ?? \"Evolution\";\n const yLabel = data.axes.yLabel ?? \"Visibility\";\n axisGroup.append(\"text\").attr(\"class\", \"wardley-axis-label wardley-axis-label-x\").attr(\"x\", configValues.padding + chartWidth / 2).attr(\"y\", height - configValues.padding / 4).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.axisFontSize).attr(\"font-weight\", \"bold\").attr(\"text-anchor\", \"middle\").text(xLabel);\n axisGroup.append(\"text\").attr(\"class\", \"wardley-axis-label wardley-axis-label-y\").attr(\"x\", configValues.padding / 3).attr(\"y\", configValues.padding + chartHeight / 2).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.axisFontSize).attr(\"font-weight\", \"bold\").attr(\"text-anchor\", \"middle\").attr(\n \"transform\",\n `rotate(-90 ${configValues.padding / 3} ${configValues.padding + chartHeight / 2})`\n ).text(yLabel);\n const stages = data.axes.stages && data.axes.stages.length > 0 ? data.axes.stages : DEFAULT_STAGES;\n if (stages.length > 0) {\n const stageGroup = root.append(\"g\").attr(\"class\", \"wardley-stages\");\n const boundaries = data.axes.stageBoundaries;\n const stagePositions = [];\n if (boundaries && boundaries.length === stages.length) {\n let prevBoundary = 0;\n boundaries.forEach((boundary) => {\n stagePositions.push({ start: prevBoundary, end: boundary });\n prevBoundary = boundary;\n });\n } else {\n const stageWidth = 1 / stages.length;\n stages.forEach((_, index) => {\n stagePositions.push({\n start: index * stageWidth,\n end: (index + 1) * stageWidth\n });\n });\n }\n stages.forEach((stage, index) => {\n const pos = stagePositions[index];\n const startX = configValues.padding + pos.start * chartWidth;\n const endX = configValues.padding + pos.end * chartWidth;\n const centerX = (startX + endX) / 2;\n if (index > 0) {\n stageGroup.append(\"line\").attr(\"x1\", startX).attr(\"x2\", startX).attr(\"y1\", configValues.padding).attr(\"y2\", height - configValues.padding).attr(\"stroke\", \"#000\").attr(\"stroke-width\", 1).attr(\"stroke-dasharray\", \"5 5\").attr(\"opacity\", 0.8);\n }\n stageGroup.append(\"text\").attr(\"class\", \"wardley-stage-label\").attr(\"x\", centerX).attr(\"y\", height - configValues.padding / 1.5).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.axisFontSize - 2).attr(\"text-anchor\", \"middle\").text(stage);\n });\n }\n if (configValues.showGrid) {\n const gridGroup = root.append(\"g\").attr(\"class\", \"wardley-grid\");\n for (let i = 1; i < 4; i++) {\n const ratio = i / 4;\n const x = configValues.padding + chartWidth * ratio;\n gridGroup.append(\"line\").attr(\"x1\", x).attr(\"x2\", x).attr(\"y1\", configValues.padding).attr(\"y2\", height - configValues.padding).attr(\"stroke\", theme.gridColor).attr(\"stroke-dasharray\", \"2 6\");\n gridGroup.append(\"line\").attr(\"x1\", configValues.padding).attr(\"x2\", width - configValues.padding).attr(\"y1\", height - configValues.padding - chartHeight * ratio).attr(\"y2\", height - configValues.padding - chartHeight * ratio).attr(\"stroke\", theme.gridColor).attr(\"stroke-dasharray\", \"2 6\");\n }\n }\n const positions = /* @__PURE__ */ new Map();\n data.nodes.forEach((node) => {\n positions.set(node.id, {\n x: projectX(node.x),\n y: projectY(node.y),\n node\n });\n });\n if (data.pipelines.length > 0) {\n const pipelineGroup = root.append(\"g\").attr(\"class\", \"wardley-pipelines\");\n const pipelineLinksGroup = root.append(\"g\").attr(\"class\", \"wardley-pipeline-links\");\n data.pipelines.forEach((pipeline) => {\n if (pipeline.componentIds.length === 0) {\n return;\n }\n const sortedComponents = pipeline.componentIds.map((id2) => ({ id: id2, pos: positions.get(id2), node: data.nodes.find((n) => n.id === id2) })).filter((c) => c.pos && c.node).sort((a, b) => a.node.x - b.node.x);\n for (let i = 0; i < sortedComponents.length - 1; i++) {\n const current = sortedComponents[i];\n const next = sortedComponents[i + 1];\n pipelineLinksGroup.append(\"line\").attr(\"class\", \"wardley-pipeline-evolution-link\").attr(\"x1\", current.pos.x).attr(\"y1\", current.pos.y).attr(\"x2\", next.pos.x).attr(\"y2\", next.pos.y).attr(\"stroke\", theme.linkStroke).attr(\"stroke-width\", 1).attr(\"stroke-dasharray\", \"4 4\");\n }\n let minX = Infinity;\n let maxX = -Infinity;\n let y = 0;\n pipeline.componentIds.forEach((componentId) => {\n const pos = positions.get(componentId);\n if (pos) {\n minX = Math.min(minX, pos.x);\n maxX = Math.max(maxX, pos.x);\n y = pos.y;\n }\n });\n if (minX !== Infinity && maxX !== -Infinity) {\n const padding = 15;\n const height2 = configValues.nodeRadius * 4;\n const boxTop = y - height2 / 2;\n const parentPos = positions.get(pipeline.nodeId);\n if (parentPos) {\n const centerX = (minX + maxX) / 2;\n parentPos.x = centerX;\n parentPos.y = boxTop - squareSize / 6;\n }\n pipelineGroup.append(\"rect\").attr(\"class\", \"wardley-pipeline-box\").attr(\"x\", minX - padding).attr(\"y\", boxTop).attr(\"width\", maxX - minX + padding * 2).attr(\"height\", height2).attr(\"fill\", \"none\").attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1.5).attr(\"rx\", 4).attr(\"ry\", 4);\n }\n });\n }\n const linksGroup = root.append(\"g\").attr(\"class\", \"wardley-links\");\n const pipelineMap = /* @__PURE__ */ new Map();\n data.pipelines.forEach((pipeline) => {\n pipelineMap.set(pipeline.nodeId, new Set(pipeline.componentIds));\n });\n const validLinks = data.links.filter((link) => {\n if (!positions.has(link.source) || !positions.has(link.target)) {\n return false;\n }\n const pipelineComponents = pipelineMap.get(link.target);\n if (pipelineComponents?.has(link.source)) {\n return false;\n }\n return true;\n });\n linksGroup.selectAll(\"line\").data(validLinks).enter().append(\"line\").attr(\"class\", (link) => `wardley-link${link.dashed ? \" wardley-link--dashed\" : \"\"}`).attr(\"x1\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const sourceNode = data.nodes.find((n) => n.id === link.source);\n const radius = sourceNode.isPipelineParent ? squareSize / Math.sqrt(2) : configValues.nodeRadius;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return sourcePos.x + dx / distance * radius;\n }).attr(\"y1\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const sourceNode = data.nodes.find((n) => n.id === link.source);\n const radius = sourceNode.isPipelineParent ? squareSize / Math.sqrt(2) : configValues.nodeRadius;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return sourcePos.y + dy / distance * radius;\n }).attr(\"x2\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const targetNode = data.nodes.find((n) => n.id === link.target);\n const radius = targetNode.isPipelineParent ? squareSize / Math.sqrt(2) : configValues.nodeRadius;\n const dx = sourcePos.x - targetPos.x;\n const dy = sourcePos.y - targetPos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return targetPos.x + dx / distance * radius;\n }).attr(\"y2\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const targetNode = data.nodes.find((n) => n.id === link.target);\n const radius = targetNode.isPipelineParent ? squareSize / Math.sqrt(2) : configValues.nodeRadius;\n const dx = sourcePos.x - targetPos.x;\n const dy = sourcePos.y - targetPos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return targetPos.y + dy / distance * radius;\n }).attr(\"stroke\", theme.linkStroke).attr(\"stroke-width\", 1).attr(\"stroke-dasharray\", (link) => link.dashed ? \"6 6\" : null).attr(\"marker-end\", (link) => {\n if (link.flow === \"forward\" || link.flow === \"bidirectional\") {\n return `url(#link-arrow-end-${id})`;\n }\n return null;\n }).attr(\"marker-start\", (link) => {\n if (link.flow === \"backward\" || link.flow === \"bidirectional\") {\n return `url(#link-arrow-start-${id})`;\n }\n return null;\n });\n linksGroup.selectAll(\"text\").data(validLinks.filter((link) => link.label)).enter().append(\"text\").attr(\"class\", \"wardley-link-label\").attr(\"x\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const midX = (sourcePos.x + targetPos.x) / 2;\n const dy = targetPos.y - sourcePos.y;\n const dx = targetPos.x - sourcePos.x;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const offset = 8;\n const perpX = dy / distance;\n return midX + perpX * offset;\n }).attr(\"y\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const midY = (sourcePos.y + targetPos.y) / 2;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const offset = 8;\n const perpY = -dx / distance;\n return midY + perpY * offset;\n }).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.labelFontSize).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"transform\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const midX = (sourcePos.x + targetPos.x) / 2;\n const midY = (sourcePos.y + targetPos.y) / 2;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const offset = 8;\n const perpX = dy / distance;\n const perpY = -dx / distance;\n const labelX = midX + perpX * offset;\n const labelY = midY + perpY * offset;\n let angle = Math.atan2(dy, dx) * 180 / Math.PI;\n if (angle > 90 || angle < -90) {\n angle += 180;\n }\n return `rotate(${angle} ${labelX} ${labelY})`;\n }).text((link) => link.label);\n const trendGroup = root.append(\"g\").attr(\"class\", \"wardley-trends\");\n const trendsWithPositions = data.trends.map((trend) => {\n const origin = positions.get(trend.nodeId);\n if (!origin) {\n return null;\n }\n const targetX = projectX(trend.targetX);\n const targetY = projectY(trend.targetY);\n const dx = targetX - origin.x;\n const dy = targetY - origin.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const shortenBy = configValues.nodeRadius + 2;\n const adjustedX2 = distance > shortenBy ? targetX - dx / distance * shortenBy : targetX;\n const adjustedY2 = distance > shortenBy ? targetY - dy / distance * shortenBy : targetY;\n return {\n origin,\n targetX,\n targetY,\n adjustedX2,\n adjustedY2\n };\n }).filter((trend) => trend !== null);\n trendGroup.selectAll(\"line\").data(trendsWithPositions).enter().append(\"line\").attr(\"class\", \"wardley-trend\").attr(\"x1\", (trend) => trend.origin.x).attr(\"y1\", (trend) => trend.origin.y).attr(\"x2\", (trend) => trend.adjustedX2).attr(\"y2\", (trend) => trend.adjustedY2).attr(\"stroke\", theme.evolutionStroke).attr(\"stroke-width\", 1).attr(\"stroke-dasharray\", \"4 4\").attr(\"marker-end\", `url(#arrow-${id})`);\n const nodesGroup = root.append(\"g\").attr(\"class\", \"wardley-nodes\");\n const nodeEnter = nodesGroup.selectAll(\"g\").data(data.nodes).enter().append(\"g\").attr(\n \"class\",\n (node) => [\"wardley-node\", node.className ? `wardley-node--${node.className}` : \"\"].filter(Boolean).join(\" \")\n );\n nodeEnter.filter((node) => node.sourceStrategy === \"outsource\").append(\"circle\").attr(\"class\", \"wardley-outsource-overlay\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius * 2).attr(\"fill\", \"#666\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n nodeEnter.filter((node) => node.sourceStrategy === \"buy\").append(\"circle\").attr(\"class\", \"wardley-buy-overlay\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius * 2).attr(\"fill\", \"#ccc\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n nodeEnter.filter((node) => node.sourceStrategy === \"build\").append(\"circle\").attr(\"class\", \"wardley-build-overlay\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius * 2).attr(\"fill\", \"#eee\").attr(\"stroke\", \"#000\").attr(\"stroke-width\", 1);\n const marketNodes = nodeEnter.filter((node) => node.sourceStrategy === \"market\");\n marketNodes.append(\"circle\").attr(\"class\", \"wardley-market-overlay\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius * 2).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n nodeEnter.filter(\n (node) => !node.isPipelineParent && node.sourceStrategy !== \"market\" && node.className !== \"anchor\"\n ).append(\"circle\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius).attr(\"fill\", theme.componentFill).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n const smallCircleRadius = configValues.nodeRadius * 0.7;\n const triangleRadius = configValues.nodeRadius * 1.2;\n marketNodes.append(\"line\").attr(\"class\", \"wardley-market-line\").attr(\"x1\", (node) => positions.get(node.id).x).attr(\"y1\", (node) => positions.get(node.id).y - triangleRadius).attr(\"x2\", (node) => positions.get(node.id).x - triangleRadius * Math.cos(Math.PI / 6)).attr(\"y2\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n marketNodes.append(\"line\").attr(\"class\", \"wardley-market-line\").attr(\"x1\", (node) => positions.get(node.id).x - triangleRadius * Math.cos(Math.PI / 6)).attr(\"y1\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"x2\", (node) => positions.get(node.id).x + triangleRadius * Math.cos(Math.PI / 6)).attr(\"y2\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n marketNodes.append(\"line\").attr(\"class\", \"wardley-market-line\").attr(\"x1\", (node) => positions.get(node.id).x + triangleRadius * Math.cos(Math.PI / 6)).attr(\"y1\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"x2\", (node) => positions.get(node.id).x).attr(\"y2\", (node) => positions.get(node.id).y - triangleRadius).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n marketNodes.append(\"circle\").attr(\"class\", \"wardley-market-dot\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y - triangleRadius).attr(\"r\", smallCircleRadius).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 2);\n marketNodes.append(\"circle\").attr(\"class\", \"wardley-market-dot\").attr(\"cx\", (node) => positions.get(node.id).x - triangleRadius * Math.cos(Math.PI / 6)).attr(\"cy\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"r\", smallCircleRadius).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 2);\n marketNodes.append(\"circle\").attr(\"class\", \"wardley-market-dot\").attr(\"cx\", (node) => positions.get(node.id).x + triangleRadius * Math.cos(Math.PI / 6)).attr(\"cy\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"r\", smallCircleRadius).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 2);\n nodeEnter.filter((node) => node.isPipelineParent === true).append(\"rect\").attr(\"x\", (node) => positions.get(node.id).x - squareSize / 2).attr(\"y\", (node) => positions.get(node.id).y - squareSize / 2).attr(\"width\", squareSize).attr(\"height\", squareSize).attr(\"fill\", theme.componentFill).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n nodeEnter.filter((node) => node.inertia === true).append(\"line\").attr(\"class\", \"wardley-inertia\").attr(\"x1\", (node) => {\n const pos = positions.get(node.id);\n let offset = node.isPipelineParent ? squareSize / 2 + 15 : configValues.nodeRadius + 15;\n if (node.sourceStrategy) {\n offset += configValues.nodeRadius + 10;\n }\n return pos.x + offset;\n }).attr(\"y1\", (node) => {\n const pos = positions.get(node.id);\n const lineHeight = node.isPipelineParent ? squareSize : configValues.nodeRadius * 2;\n return pos.y - lineHeight / 2;\n }).attr(\"x2\", (node) => {\n const pos = positions.get(node.id);\n let offset = node.isPipelineParent ? squareSize / 2 + 15 : configValues.nodeRadius + 15;\n if (node.sourceStrategy) {\n offset += configValues.nodeRadius + 10;\n }\n return pos.x + offset;\n }).attr(\"y2\", (node) => {\n const pos = positions.get(node.id);\n const lineHeight = node.isPipelineParent ? squareSize : configValues.nodeRadius * 2;\n return pos.y + lineHeight / 2;\n }).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 6);\n nodeEnter.append(\"text\").attr(\"x\", (node) => {\n const pos = positions.get(node.id);\n if (node.className === \"anchor\") {\n return node.labelOffsetX !== void 0 ? pos.x + node.labelOffsetX : pos.x;\n }\n let defaultOffset = configValues.nodeLabelOffset;\n if (node.sourceStrategy && node.labelOffsetX === void 0) {\n defaultOffset += 10;\n }\n const customOffset = node.labelOffsetX ?? defaultOffset;\n return pos.x + customOffset;\n }).attr(\"y\", (node) => {\n const pos = positions.get(node.id);\n if (node.className === \"anchor\") {\n return node.labelOffsetY !== void 0 ? pos.y + node.labelOffsetY : pos.y - 3;\n }\n let defaultOffset = -configValues.nodeLabelOffset;\n if (node.sourceStrategy && node.labelOffsetY === void 0) {\n defaultOffset -= 10;\n }\n const customOffset = node.labelOffsetY ?? defaultOffset;\n return pos.y + customOffset;\n }).attr(\"class\", \"wardley-node-label\").attr(\"fill\", (node) => {\n if (node.className === \"evolved\") {\n return theme.evolutionStroke;\n }\n if (node.className === \"anchor\") {\n return \"#000\";\n }\n return theme.componentLabelColor;\n }).attr(\"font-size\", configValues.labelFontSize).attr(\"font-weight\", (node) => node.className === \"anchor\" ? \"bold\" : \"normal\").attr(\"text-anchor\", (node) => node.className === \"anchor\" ? \"middle\" : \"start\").attr(\"dominant-baseline\", (node) => node.className === \"anchor\" ? \"middle\" : \"auto\").text((node) => node.label);\n if (data.annotations.length > 0) {\n const annotationsGroup = root.append(\"g\").attr(\"class\", \"wardley-annotations\");\n data.annotations.forEach((annotation) => {\n const projectedCoords = annotation.coordinates.map((coord) => ({\n x: projectX(coord.x),\n y: projectY(coord.y)\n }));\n if (projectedCoords.length > 1) {\n for (let i = 0; i < projectedCoords.length - 1; i++) {\n annotationsGroup.append(\"line\").attr(\"class\", \"wardley-annotation-line\").attr(\"x1\", projectedCoords[i].x).attr(\"y1\", projectedCoords[i].y).attr(\"x2\", projectedCoords[i + 1].x).attr(\"y2\", projectedCoords[i + 1].y).attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1.5).attr(\"stroke-dasharray\", \"4 4\");\n }\n }\n projectedCoords.forEach((coord) => {\n const annotationNode = annotationsGroup.append(\"g\").attr(\"class\", \"wardley-annotation\");\n annotationNode.append(\"circle\").attr(\"cx\", coord.x).attr(\"cy\", coord.y).attr(\"r\", 10).attr(\"fill\", \"white\").attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1.5);\n annotationNode.append(\"text\").attr(\"x\", coord.x).attr(\"y\", coord.y).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"central\").attr(\"font-size\", 10).attr(\"fill\", theme.axisTextColor).attr(\"font-weight\", \"bold\").text(annotation.number);\n });\n });\n if (data.annotationsBox) {\n let boxX = projectX(data.annotationsBox.x);\n let boxY = projectY(data.annotationsBox.y);\n const padding = 10;\n const lineHeight = 16;\n const fontSize = 11;\n const textBoxGroup = annotationsGroup.append(\"g\").attr(\"class\", \"wardley-annotations-box\");\n const sortedAnnotations = [...data.annotations].filter((a) => a.text).sort((a, b) => a.number - b.number);\n const textElements = [];\n sortedAnnotations.forEach((annotation, idx) => {\n const text2 = textBoxGroup.append(\"text\").attr(\"x\", boxX + padding).attr(\"y\", boxY + padding + (idx + 1) * lineHeight).attr(\"font-size\", fontSize).attr(\"fill\", theme.axisTextColor).attr(\"text-anchor\", \"start\").attr(\"dominant-baseline\", \"middle\").text(`${annotation.number}. ${annotation.text}`);\n textElements.push(text2);\n });\n if (textElements.length > 0) {\n let maxWidth = 0;\n let maxHeight = 0;\n textElements.forEach((text2) => {\n const textNode = text2.node();\n const textWidth = textNode.getComputedTextLength();\n maxWidth = Math.max(maxWidth, textWidth);\n const bbox = textNode.getBBox();\n maxHeight = Math.max(maxHeight, bbox.height);\n });\n const boxWidth = maxWidth + padding * 2 + 105;\n const boxHeight = sortedAnnotations.length * lineHeight + padding * 2 + maxHeight / 2;\n const minX = configValues.padding;\n const maxX = width - configValues.padding - boxWidth;\n const minY = configValues.padding;\n const maxY = height - configValues.padding - boxHeight;\n boxX = Math.max(minX, Math.min(boxX, maxX));\n boxY = Math.max(minY, Math.min(boxY, maxY));\n textElements.forEach((text2, idx) => {\n text2.attr(\"x\", boxX + padding).attr(\"y\", boxY + padding + (idx + 1) * lineHeight);\n });\n textBoxGroup.insert(\"rect\", \"text\").attr(\"x\", boxX).attr(\"y\", boxY).attr(\"width\", boxWidth).attr(\"height\", boxHeight).attr(\"fill\", \"white\").attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1.5).attr(\"rx\", 4).attr(\"ry\", 4);\n }\n }\n }\n if (data.notes.length > 0) {\n const notesGroup = root.append(\"g\").attr(\"class\", \"wardley-notes\");\n data.notes.forEach((note) => {\n const noteX = projectX(note.x);\n const noteY = projectY(note.y);\n notesGroup.append(\"text\").attr(\"x\", noteX).attr(\"y\", noteY).attr(\"text-anchor\", \"start\").attr(\"font-size\", 11).attr(\"fill\", theme.axisTextColor).attr(\"font-weight\", \"bold\").text(note.text);\n });\n }\n if (data.accelerators.length > 0) {\n const acceleratorsGroup = root.append(\"g\").attr(\"class\", \"wardley-accelerators\");\n data.accelerators.forEach((accelerator) => {\n const accX = projectX(accelerator.x);\n const accY = projectY(accelerator.y);\n const arrowWidth = 60;\n const arrowHeight = 30;\n const arrowHeadWidth = 20;\n const arrowPath = `\n M ${accX} ${accY - arrowHeight / 2}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY - arrowHeight / 2}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY - arrowHeight / 2 - 8}\n L ${accX + arrowWidth} ${accY}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY + arrowHeight / 2 + 8}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY + arrowHeight / 2}\n L ${accX} ${accY + arrowHeight / 2}\n Z\n `;\n acceleratorsGroup.append(\"path\").attr(\"d\", arrowPath).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n acceleratorsGroup.append(\"text\").attr(\"x\", accX + arrowWidth / 2).attr(\"y\", accY + arrowHeight / 2 + 15).attr(\"text-anchor\", \"middle\").attr(\"font-size\", 10).attr(\"fill\", theme.axisTextColor).attr(\"font-weight\", \"bold\").text(accelerator.name);\n });\n }\n if (data.deaccelerators.length > 0) {\n const deacceleratorsGroup = root.append(\"g\").attr(\"class\", \"wardley-deaccelerators\");\n data.deaccelerators.forEach((deaccelerator) => {\n const decX = projectX(deaccelerator.x);\n const decY = projectY(deaccelerator.y);\n const arrowWidth = 60;\n const arrowHeight = 30;\n const arrowHeadWidth = 20;\n const arrowPath = `\n M ${decX + arrowWidth} ${decY - arrowHeight / 2}\n L ${decX + arrowHeadWidth} ${decY - arrowHeight / 2}\n L ${decX + arrowHeadWidth} ${decY - arrowHeight / 2 - 8}\n L ${decX} ${decY}\n L ${decX + arrowHeadWidth} ${decY + arrowHeight / 2 + 8}\n L ${decX + arrowHeadWidth} ${decY + arrowHeight / 2}\n L ${decX + arrowWidth} ${decY + arrowHeight / 2}\n Z\n `;\n deacceleratorsGroup.append(\"path\").attr(\"d\", arrowPath).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n deacceleratorsGroup.append(\"text\").attr(\"x\", decX + arrowWidth / 2).attr(\"y\", decY + arrowHeight / 2 + 15).attr(\"text-anchor\", \"middle\").attr(\"font-size\", 10).attr(\"fill\", theme.axisTextColor).attr(\"font-weight\", \"bold\").text(deaccelerator.name);\n });\n }\n}, \"draw\");\nvar wardleyRenderer_default = {\n draw\n};\n\n// src/diagrams/wardley/wardleyDiagram.ts\nvar diagram = {\n parser,\n db: wardleyDb_default,\n renderer: wardleyRenderer_default,\n styles: /* @__PURE__ */ __name(() => \"\", \"styles\")\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wardleyDiagram-NUSXRM2D-BzD8LDJv.js","names":["getConfig"],"sources":["../../../../node_modules/mermaid/dist/chunks/mermaid.core/wardleyDiagram-NUSXRM2D.mjs"],"sourcesContent":["import {\n selectSvgElement\n} from \"./chunk-426QAEUC.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n clear,\n configureSvgSize,\n getAccDescription,\n getAccTitle,\n getConfig2 as getConfig,\n getDiagramTitle,\n sanitizeText,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n} from \"./chunk-ICPOFSXX.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/wardley/wardleyParser.ts\nimport { parse } from \"@mermaid-js/parser\";\nvar toPercent = /* @__PURE__ */ __name((value, context) => {\n const normalized = value <= 1 ? value * 100 : value;\n if (normalized < 0 || normalized > 100) {\n throw new Error(\n `${context} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${value}`\n );\n }\n return normalized;\n}, \"toPercent\");\nvar toCoordinates = /* @__PURE__ */ __name((visibility, evolution, context) => {\n return {\n x: toPercent(evolution, `${context} evolution`),\n y: toPercent(visibility, `${context} visibility`)\n };\n}, \"toCoordinates\");\nvar getFlowFromPort = /* @__PURE__ */ __name((port) => {\n if (!port) {\n return void 0;\n }\n if (port === \"+<>\") {\n return \"bidirectional\";\n }\n if (port === \"+<\") {\n return \"backward\";\n }\n if (port === \"+>\") {\n return \"forward\";\n }\n return void 0;\n}, \"getFlowFromPort\");\nvar extractFlowFromArrow = /* @__PURE__ */ __name((arrow) => {\n if (!arrow?.startsWith(\"+\")) {\n return {};\n }\n const labelMatch = /^\\+'([^']*)'/.exec(arrow);\n const flowLabel = labelMatch?.[1];\n if (arrow.includes(\"<>\")) {\n return { flow: \"bidirectional\", label: flowLabel };\n }\n if (arrow.includes(\"<\")) {\n return { flow: \"backward\", label: flowLabel };\n }\n if (arrow.includes(\">\")) {\n return { flow: \"forward\", label: flowLabel };\n }\n return { label: flowLabel };\n}, \"extractFlowFromArrow\");\nvar populateDb = /* @__PURE__ */ __name((ast, db) => {\n populateCommonDb(ast, db);\n if (ast.size) {\n db.setSize(ast.size.width, ast.size.height);\n }\n if (ast.evolution) {\n const stages = ast.evolution.stages.map((stage) => {\n if (stage.secondName) {\n return `${stage.name.trim()} / ${stage.secondName.trim()}`;\n }\n return stage.name.trim();\n });\n const stageBoundaries = ast.evolution.stages.filter((stage) => stage.boundary !== void 0).map((stage) => stage.boundary);\n db.updateAxes({ stages, stageBoundaries });\n }\n ast.anchors.forEach((anchor) => {\n const coords = toCoordinates(anchor.visibility, anchor.evolution, `Anchor \"${anchor.name}\"`);\n db.addNode(anchor.name, anchor.name, coords.x, coords.y, \"anchor\");\n });\n ast.components.forEach((component) => {\n const coords = toCoordinates(\n component.visibility,\n component.evolution,\n `Component \"${component.name}\"`\n );\n const labelOffsetX = component.label ? (component.label.negX ? -1 : 1) * component.label.offsetX : void 0;\n const labelOffsetY = component.label ? (component.label.negY ? -1 : 1) * component.label.offsetY : void 0;\n const sourceStrategy = component.decorator?.strategy;\n db.addNode(\n component.name,\n component.name,\n coords.x,\n coords.y,\n \"component\",\n labelOffsetX,\n labelOffsetY,\n component.inertia,\n sourceStrategy\n );\n });\n ast.notes.forEach((note) => {\n const coords = toCoordinates(note.visibility, note.evolution, `Note \"${note.text}\"`);\n db.addNote(note.text, coords.x, coords.y);\n });\n ast.pipelines.forEach((pipeline) => {\n const parentNode = db.getNode(pipeline.parent);\n if (!parentNode || typeof parentNode.y !== \"number\") {\n throw new Error(\n `Pipeline \"${pipeline.parent}\" must reference an existing component with coordinates.`\n );\n }\n const parentY = parentNode.y;\n db.startPipeline(pipeline.parent);\n pipeline.components.forEach((component) => {\n const componentId = `${pipeline.parent}_${component.name}`;\n const labelOffsetX = component.label ? (component.label.negX ? -1 : 1) * component.label.offsetX : void 0;\n const labelOffsetY = component.label ? (component.label.negY ? -1 : 1) * component.label.offsetY : void 0;\n const x = toPercent(component.evolution, `Pipeline component \"${component.name}\" evolution`);\n db.addNode(\n componentId,\n component.name,\n x,\n parentY,\n \"pipeline-component\",\n labelOffsetX,\n labelOffsetY\n );\n db.addPipelineComponent(pipeline.parent, componentId);\n });\n });\n ast.links.forEach((link) => {\n const isDashed = !!link.arrow && (link.arrow.includes(\"-.->\") || link.arrow.includes(\".-.\"));\n let flow = getFlowFromPort(link.fromPort) ?? getFlowFromPort(link.toPort);\n const { flow: arrowFlow, label: flowLabel } = extractFlowFromArrow(link.arrow);\n if (!flow && arrowFlow) {\n flow = arrowFlow;\n }\n const annotation = link.linkLabel;\n const label = flowLabel ?? annotation;\n db.addLink(link.from, link.to, isDashed, label, flow);\n });\n ast.evolves.forEach((evolve) => {\n const node = db.getNode(evolve.component);\n if (node?.y !== void 0) {\n const target = toPercent(evolve.target, `Evolve target for \"${evolve.component}\"`);\n db.addTrend(evolve.component, target, node.y);\n }\n });\n if (ast.annotations.length > 0) {\n const annotationsBox = ast.annotations[0];\n const coords = toCoordinates(annotationsBox.x, annotationsBox.y, \"Annotations box\");\n db.setAnnotationsBox(coords.x, coords.y);\n }\n ast.annotation.forEach((annotation) => {\n const coords = toCoordinates(annotation.x, annotation.y, `Annotation ${annotation.number}`);\n db.addAnnotation(annotation.number, [{ x: coords.x, y: coords.y }], annotation.text);\n });\n ast.accelerators.forEach((accelerator) => {\n const coords = toCoordinates(accelerator.x, accelerator.y, `Accelerator \"${accelerator.name}\"`);\n db.addAccelerator(accelerator.name, coords.x, coords.y);\n });\n ast.deaccelerators.forEach((deaccelerator) => {\n const coords = toCoordinates(\n deaccelerator.x,\n deaccelerator.y,\n `Deaccelerator \"${deaccelerator.name}\"`\n );\n db.addDeaccelerator(deaccelerator.name, coords.x, coords.y);\n });\n}, \"populateDb\");\nvar parser = {\n parser: {\n // @ts-expect-error - WardleyDB is not assignable to DiagramDB\n yy: void 0\n },\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"wardley\", input);\n log.debug(ast);\n const db = parser.parser?.yy;\n if (!db || typeof db.addNode !== \"function\") {\n throw new Error(\n \"parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.\"\n );\n }\n populateDb(ast, db);\n }, \"parse\")\n};\n\n// src/diagrams/wardley/wardleyBuilder.ts\nvar WardleyBuilder = class {\n constructor() {\n this.nodes = /* @__PURE__ */ new Map();\n this.links = [];\n this.trends = /* @__PURE__ */ new Map();\n this.pipelines = /* @__PURE__ */ new Map();\n this.annotations = [];\n this.notes = [];\n this.accelerators = [];\n this.deaccelerators = [];\n this.axes = {};\n }\n static {\n __name(this, \"WardleyBuilder\");\n }\n addNode(node) {\n const existing = this.nodes.get(node.id) ?? { id: node.id, label: node.label };\n const merged = {\n ...existing,\n ...node,\n className: node.className ?? existing.className,\n labelOffsetX: node.labelOffsetX ?? existing.labelOffsetX,\n labelOffsetY: node.labelOffsetY ?? existing.labelOffsetY\n };\n this.nodes.set(node.id, merged);\n }\n addLink(link) {\n this.links.push(link);\n }\n addTrend(trend) {\n this.trends.set(trend.nodeId, trend);\n }\n startPipeline(nodeId) {\n this.pipelines.set(nodeId, { nodeId, componentIds: [] });\n const node = this.nodes.get(nodeId);\n if (node) {\n node.isPipelineParent = true;\n }\n }\n addPipelineComponent(pipelineNodeId, componentId) {\n const pipeline = this.pipelines.get(pipelineNodeId);\n if (pipeline) {\n pipeline.componentIds.push(componentId);\n }\n const node = this.nodes.get(componentId);\n if (node) {\n node.inPipeline = true;\n }\n }\n addAnnotation(annotation) {\n this.annotations.push(annotation);\n }\n addNote(note) {\n this.notes.push(note);\n }\n addAccelerator(accelerator) {\n this.accelerators.push(accelerator);\n }\n addDeaccelerator(deaccelerator) {\n this.deaccelerators.push(deaccelerator);\n }\n setAnnotationsBox(x, y) {\n this.annotationsBox = { x, y };\n }\n setAxes(partial) {\n this.axes = {\n ...this.axes,\n ...partial\n };\n }\n setSize(width, height) {\n this.size = { width, height };\n }\n getNode(id) {\n return this.nodes.get(id);\n }\n build() {\n const nodes = [];\n for (const node of this.nodes.values()) {\n if (typeof node.x !== \"number\" || typeof node.y !== \"number\") {\n throw new Error(`Node \"${node.label}\" is missing coordinates`);\n }\n nodes.push(node);\n }\n return {\n nodes,\n links: [...this.links],\n trends: [...this.trends.values()],\n pipelines: [...this.pipelines.values()],\n annotations: [...this.annotations],\n notes: [...this.notes],\n accelerators: [...this.accelerators],\n deaccelerators: [...this.deaccelerators],\n annotationsBox: this.annotationsBox,\n axes: { ...this.axes },\n size: this.size\n };\n }\n clear() {\n this.nodes.clear();\n this.links = [];\n this.trends.clear();\n this.pipelines.clear();\n this.annotations = [];\n this.notes = [];\n this.accelerators = [];\n this.deaccelerators = [];\n this.annotationsBox = void 0;\n this.axes = {};\n this.size = void 0;\n }\n};\n\n// src/diagrams/wardley/wardleyDb.ts\nvar builder = new WardleyBuilder();\nfunction textSanitizer(text) {\n const config = getConfig();\n return sanitizeText(text.trim(), config);\n}\n__name(textSanitizer, \"textSanitizer\");\nfunction getConfig2() {\n return getConfig()[\"wardley-beta\"];\n}\n__name(getConfig2, \"getConfig\");\nfunction addNode(id, label, x, y, className, labelOffsetX, labelOffsetY, inertia, sourceStrategy) {\n builder.addNode({\n id,\n label: textSanitizer(label),\n x,\n y,\n className,\n labelOffsetX,\n labelOffsetY,\n inertia,\n sourceStrategy\n });\n}\n__name(addNode, \"addNode\");\nfunction addLink(sourceId, targetId, dashed = false, label, flow) {\n builder.addLink({ source: sourceId, target: targetId, dashed, label, flow });\n}\n__name(addLink, \"addLink\");\nfunction addTrend(nodeId, targetX, targetY) {\n builder.addTrend({ nodeId, targetX, targetY });\n}\n__name(addTrend, \"addTrend\");\nfunction addAnnotation(number, coordinates, text) {\n builder.addAnnotation({\n number,\n coordinates,\n text: text ? textSanitizer(text) : void 0\n });\n}\n__name(addAnnotation, \"addAnnotation\");\nfunction addNote(text, x, y) {\n builder.addNote({\n text: textSanitizer(text),\n x,\n y\n });\n}\n__name(addNote, \"addNote\");\nfunction addAccelerator(name, x, y) {\n builder.addAccelerator({\n name: textSanitizer(name),\n x,\n y\n });\n}\n__name(addAccelerator, \"addAccelerator\");\nfunction addDeaccelerator(name, x, y) {\n builder.addDeaccelerator({\n name: textSanitizer(name),\n x,\n y\n });\n}\n__name(addDeaccelerator, \"addDeaccelerator\");\nfunction setAnnotationsBox(x, y) {\n builder.setAnnotationsBox(x, y);\n}\n__name(setAnnotationsBox, \"setAnnotationsBox\");\nfunction setSize(width, height) {\n builder.setSize(width, height);\n}\n__name(setSize, \"setSize\");\nfunction startPipeline(nodeId) {\n builder.startPipeline(nodeId);\n}\n__name(startPipeline, \"startPipeline\");\nfunction addPipelineComponent(pipelineNodeId, componentId) {\n builder.addPipelineComponent(pipelineNodeId, componentId);\n}\n__name(addPipelineComponent, \"addPipelineComponent\");\nfunction updateAxes(partial) {\n const sanitized = {};\n if (partial.xLabel) {\n sanitized.xLabel = textSanitizer(partial.xLabel);\n }\n if (partial.yLabel) {\n sanitized.yLabel = textSanitizer(partial.yLabel);\n }\n if (partial.stages) {\n sanitized.stages = partial.stages.map((stage) => textSanitizer(stage));\n }\n if (partial.stageBoundaries) {\n sanitized.stageBoundaries = partial.stageBoundaries;\n }\n builder.setAxes(sanitized);\n}\n__name(updateAxes, \"updateAxes\");\nfunction getNode(id) {\n return builder.getNode(id);\n}\n__name(getNode, \"getNode\");\nfunction getWardleyData() {\n return builder.build();\n}\n__name(getWardleyData, \"getWardleyData\");\nfunction clear2() {\n builder.clear();\n clear();\n}\n__name(clear2, \"clear\");\nvar wardleyDb_default = {\n getConfig: getConfig2,\n addNode,\n addLink,\n addTrend,\n addAnnotation,\n addNote,\n addAccelerator,\n addDeaccelerator,\n setAnnotationsBox,\n setSize,\n startPipeline,\n addPipelineComponent,\n updateAxes,\n getNode,\n getWardleyData,\n clear: clear2,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription\n};\n\n// src/diagrams/wardley/wardleyRenderer.ts\nvar DEFAULT_STAGES = [\"Genesis\", \"Custom Built\", \"Product\", \"Commodity\"];\nvar getTheme = /* @__PURE__ */ __name(() => {\n const { themeVariables } = getConfig();\n return {\n backgroundColor: themeVariables.wardley?.backgroundColor ?? themeVariables.background ?? \"#fff\",\n axisColor: themeVariables.wardley?.axisColor ?? \"#000\",\n axisTextColor: themeVariables.wardley?.axisTextColor ?? themeVariables.primaryTextColor ?? \"#222\",\n gridColor: themeVariables.wardley?.gridColor ?? \"rgba(100, 100, 100, 0.2)\",\n componentFill: themeVariables.wardley?.componentFill ?? \"#fff\",\n componentStroke: themeVariables.wardley?.componentStroke ?? \"#000\",\n componentLabelColor: themeVariables.wardley?.componentLabelColor ?? themeVariables.primaryTextColor ?? \"#222\",\n linkStroke: themeVariables.wardley?.linkStroke ?? \"#000\",\n evolutionStroke: themeVariables.wardley?.evolutionStroke ?? \"#dc3545\",\n annotationStroke: themeVariables.wardley?.annotationStroke ?? \"#000\",\n annotationTextColor: themeVariables.wardley?.annotationTextColor ?? themeVariables.primaryTextColor ?? \"#222\",\n annotationFill: themeVariables.wardley?.annotationFill ?? themeVariables.background ?? \"#fff\"\n };\n}, \"getTheme\");\nvar getConfigValues = /* @__PURE__ */ __name(() => {\n const wardleyConfig = getConfig()[\"wardley-beta\"];\n return {\n width: wardleyConfig?.width ?? 900,\n height: wardleyConfig?.height ?? 600,\n padding: wardleyConfig?.padding ?? 48,\n nodeRadius: wardleyConfig?.nodeRadius ?? 6,\n nodeLabelOffset: wardleyConfig?.nodeLabelOffset ?? 8,\n axisFontSize: wardleyConfig?.axisFontSize ?? 12,\n labelFontSize: wardleyConfig?.labelFontSize ?? 10,\n showGrid: wardleyConfig?.showGrid ?? false,\n useMaxWidth: wardleyConfig?.useMaxWidth ?? true\n };\n}, \"getConfigValues\");\nvar draw = /* @__PURE__ */ __name((text, id, _version, diagObj) => {\n log.debug(\"Rendering Wardley map\\n\" + text);\n const configValues = getConfigValues();\n const theme = getTheme();\n const squareSize = configValues.nodeRadius * 1.6;\n const db = diagObj.db;\n const data = db.getWardleyData();\n const title = db.getDiagramTitle();\n const width = data.size?.width ?? configValues.width;\n const height = data.size?.height ?? configValues.height;\n const svg = selectSvgElement(id);\n svg.selectAll(\"*\").remove();\n configureSvgSize(svg, height, width, configValues.useMaxWidth);\n svg.attr(\"viewBox\", `0 0 ${width} ${height}`);\n const root = svg.append(\"g\").attr(\"class\", \"wardley-map\");\n const defs = svg.append(\"defs\");\n defs.append(\"marker\").attr(\"id\", `arrow-${id}`).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerWidth\", 6).attr(\"markerHeight\", 6).attr(\"orient\", \"auto-start-reverse\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"fill\", theme.evolutionStroke).attr(\"stroke\", \"none\");\n defs.append(\"marker\").attr(\"id\", `link-arrow-end-${id}`).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerWidth\", 5).attr(\"markerHeight\", 5).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"fill\", theme.linkStroke).attr(\"stroke\", \"none\");\n defs.append(\"marker\").attr(\"id\", `link-arrow-start-${id}`).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 1).attr(\"refY\", 5).attr(\"markerWidth\", 5).attr(\"markerHeight\", 5).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 10 0 L 0 5 L 10 10 z\").attr(\"fill\", theme.linkStroke).attr(\"stroke\", \"none\");\n root.append(\"rect\").attr(\"class\", \"wardley-background\").attr(\"width\", width).attr(\"height\", height).attr(\"fill\", theme.backgroundColor);\n const chartWidth = width - configValues.padding * 2;\n const chartHeight = height - configValues.padding * 2;\n if (title) {\n root.append(\"text\").attr(\"class\", \"wardley-title\").attr(\"x\", width / 2).attr(\"y\", configValues.padding / 2).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.axisFontSize * 1.05).attr(\"font-weight\", \"bold\").attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").text(title);\n }\n const projectX = /* @__PURE__ */ __name((value) => configValues.padding + value / 100 * chartWidth, \"projectX\");\n const projectY = /* @__PURE__ */ __name((value) => height - configValues.padding - value / 100 * chartHeight, \"projectY\");\n const axisGroup = root.append(\"g\").attr(\"class\", \"wardley-axes\");\n axisGroup.append(\"line\").attr(\"x1\", configValues.padding).attr(\"x2\", width - configValues.padding).attr(\"y1\", height - configValues.padding).attr(\"y2\", height - configValues.padding).attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1);\n axisGroup.append(\"line\").attr(\"x1\", configValues.padding).attr(\"x2\", configValues.padding).attr(\"y1\", configValues.padding).attr(\"y2\", height - configValues.padding).attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1);\n const xLabel = data.axes.xLabel ?? \"Evolution\";\n const yLabel = data.axes.yLabel ?? \"Visibility\";\n axisGroup.append(\"text\").attr(\"class\", \"wardley-axis-label wardley-axis-label-x\").attr(\"x\", configValues.padding + chartWidth / 2).attr(\"y\", height - configValues.padding / 4).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.axisFontSize).attr(\"font-weight\", \"bold\").attr(\"text-anchor\", \"middle\").text(xLabel);\n axisGroup.append(\"text\").attr(\"class\", \"wardley-axis-label wardley-axis-label-y\").attr(\"x\", configValues.padding / 3).attr(\"y\", configValues.padding + chartHeight / 2).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.axisFontSize).attr(\"font-weight\", \"bold\").attr(\"text-anchor\", \"middle\").attr(\n \"transform\",\n `rotate(-90 ${configValues.padding / 3} ${configValues.padding + chartHeight / 2})`\n ).text(yLabel);\n const stages = data.axes.stages && data.axes.stages.length > 0 ? data.axes.stages : DEFAULT_STAGES;\n if (stages.length > 0) {\n const stageGroup = root.append(\"g\").attr(\"class\", \"wardley-stages\");\n const boundaries = data.axes.stageBoundaries;\n const stagePositions = [];\n if (boundaries && boundaries.length === stages.length) {\n let prevBoundary = 0;\n boundaries.forEach((boundary) => {\n stagePositions.push({ start: prevBoundary, end: boundary });\n prevBoundary = boundary;\n });\n } else {\n const stageWidth = 1 / stages.length;\n stages.forEach((_, index) => {\n stagePositions.push({\n start: index * stageWidth,\n end: (index + 1) * stageWidth\n });\n });\n }\n stages.forEach((stage, index) => {\n const pos = stagePositions[index];\n const startX = configValues.padding + pos.start * chartWidth;\n const endX = configValues.padding + pos.end * chartWidth;\n const centerX = (startX + endX) / 2;\n if (index > 0) {\n stageGroup.append(\"line\").attr(\"x1\", startX).attr(\"x2\", startX).attr(\"y1\", configValues.padding).attr(\"y2\", height - configValues.padding).attr(\"stroke\", \"#000\").attr(\"stroke-width\", 1).attr(\"stroke-dasharray\", \"5 5\").attr(\"opacity\", 0.8);\n }\n stageGroup.append(\"text\").attr(\"class\", \"wardley-stage-label\").attr(\"x\", centerX).attr(\"y\", height - configValues.padding / 1.5).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.axisFontSize - 2).attr(\"text-anchor\", \"middle\").text(stage);\n });\n }\n if (configValues.showGrid) {\n const gridGroup = root.append(\"g\").attr(\"class\", \"wardley-grid\");\n for (let i = 1; i < 4; i++) {\n const ratio = i / 4;\n const x = configValues.padding + chartWidth * ratio;\n gridGroup.append(\"line\").attr(\"x1\", x).attr(\"x2\", x).attr(\"y1\", configValues.padding).attr(\"y2\", height - configValues.padding).attr(\"stroke\", theme.gridColor).attr(\"stroke-dasharray\", \"2 6\");\n gridGroup.append(\"line\").attr(\"x1\", configValues.padding).attr(\"x2\", width - configValues.padding).attr(\"y1\", height - configValues.padding - chartHeight * ratio).attr(\"y2\", height - configValues.padding - chartHeight * ratio).attr(\"stroke\", theme.gridColor).attr(\"stroke-dasharray\", \"2 6\");\n }\n }\n const positions = /* @__PURE__ */ new Map();\n data.nodes.forEach((node) => {\n positions.set(node.id, {\n x: projectX(node.x),\n y: projectY(node.y),\n node\n });\n });\n if (data.pipelines.length > 0) {\n const pipelineGroup = root.append(\"g\").attr(\"class\", \"wardley-pipelines\");\n const pipelineLinksGroup = root.append(\"g\").attr(\"class\", \"wardley-pipeline-links\");\n data.pipelines.forEach((pipeline) => {\n if (pipeline.componentIds.length === 0) {\n return;\n }\n const sortedComponents = pipeline.componentIds.map((id2) => ({ id: id2, pos: positions.get(id2), node: data.nodes.find((n) => n.id === id2) })).filter((c) => c.pos && c.node).sort((a, b) => a.node.x - b.node.x);\n for (let i = 0; i < sortedComponents.length - 1; i++) {\n const current = sortedComponents[i];\n const next = sortedComponents[i + 1];\n pipelineLinksGroup.append(\"line\").attr(\"class\", \"wardley-pipeline-evolution-link\").attr(\"x1\", current.pos.x).attr(\"y1\", current.pos.y).attr(\"x2\", next.pos.x).attr(\"y2\", next.pos.y).attr(\"stroke\", theme.linkStroke).attr(\"stroke-width\", 1).attr(\"stroke-dasharray\", \"4 4\");\n }\n let minX = Infinity;\n let maxX = -Infinity;\n let y = 0;\n pipeline.componentIds.forEach((componentId) => {\n const pos = positions.get(componentId);\n if (pos) {\n minX = Math.min(minX, pos.x);\n maxX = Math.max(maxX, pos.x);\n y = pos.y;\n }\n });\n if (minX !== Infinity && maxX !== -Infinity) {\n const padding = 15;\n const height2 = configValues.nodeRadius * 4;\n const boxTop = y - height2 / 2;\n const parentPos = positions.get(pipeline.nodeId);\n if (parentPos) {\n const centerX = (minX + maxX) / 2;\n parentPos.x = centerX;\n parentPos.y = boxTop - squareSize / 6;\n }\n pipelineGroup.append(\"rect\").attr(\"class\", \"wardley-pipeline-box\").attr(\"x\", minX - padding).attr(\"y\", boxTop).attr(\"width\", maxX - minX + padding * 2).attr(\"height\", height2).attr(\"fill\", \"none\").attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1.5).attr(\"rx\", 4).attr(\"ry\", 4);\n }\n });\n }\n const linksGroup = root.append(\"g\").attr(\"class\", \"wardley-links\");\n const pipelineMap = /* @__PURE__ */ new Map();\n data.pipelines.forEach((pipeline) => {\n pipelineMap.set(pipeline.nodeId, new Set(pipeline.componentIds));\n });\n const validLinks = data.links.filter((link) => {\n if (!positions.has(link.source) || !positions.has(link.target)) {\n return false;\n }\n const pipelineComponents = pipelineMap.get(link.target);\n if (pipelineComponents?.has(link.source)) {\n return false;\n }\n return true;\n });\n linksGroup.selectAll(\"line\").data(validLinks).enter().append(\"line\").attr(\"class\", (link) => `wardley-link${link.dashed ? \" wardley-link--dashed\" : \"\"}`).attr(\"x1\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const sourceNode = data.nodes.find((n) => n.id === link.source);\n const radius = sourceNode.isPipelineParent ? squareSize / Math.sqrt(2) : configValues.nodeRadius;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return sourcePos.x + dx / distance * radius;\n }).attr(\"y1\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const sourceNode = data.nodes.find((n) => n.id === link.source);\n const radius = sourceNode.isPipelineParent ? squareSize / Math.sqrt(2) : configValues.nodeRadius;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return sourcePos.y + dy / distance * radius;\n }).attr(\"x2\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const targetNode = data.nodes.find((n) => n.id === link.target);\n const radius = targetNode.isPipelineParent ? squareSize / Math.sqrt(2) : configValues.nodeRadius;\n const dx = sourcePos.x - targetPos.x;\n const dy = sourcePos.y - targetPos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return targetPos.x + dx / distance * radius;\n }).attr(\"y2\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const targetNode = data.nodes.find((n) => n.id === link.target);\n const radius = targetNode.isPipelineParent ? squareSize / Math.sqrt(2) : configValues.nodeRadius;\n const dx = sourcePos.x - targetPos.x;\n const dy = sourcePos.y - targetPos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return targetPos.y + dy / distance * radius;\n }).attr(\"stroke\", theme.linkStroke).attr(\"stroke-width\", 1).attr(\"stroke-dasharray\", (link) => link.dashed ? \"6 6\" : null).attr(\"marker-end\", (link) => {\n if (link.flow === \"forward\" || link.flow === \"bidirectional\") {\n return `url(#link-arrow-end-${id})`;\n }\n return null;\n }).attr(\"marker-start\", (link) => {\n if (link.flow === \"backward\" || link.flow === \"bidirectional\") {\n return `url(#link-arrow-start-${id})`;\n }\n return null;\n });\n linksGroup.selectAll(\"text\").data(validLinks.filter((link) => link.label)).enter().append(\"text\").attr(\"class\", \"wardley-link-label\").attr(\"x\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const midX = (sourcePos.x + targetPos.x) / 2;\n const dy = targetPos.y - sourcePos.y;\n const dx = targetPos.x - sourcePos.x;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const offset = 8;\n const perpX = dy / distance;\n return midX + perpX * offset;\n }).attr(\"y\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const midY = (sourcePos.y + targetPos.y) / 2;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const offset = 8;\n const perpY = -dx / distance;\n return midY + perpY * offset;\n }).attr(\"fill\", theme.axisTextColor).attr(\"font-size\", configValues.labelFontSize).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"transform\", (link) => {\n const sourcePos = positions.get(link.source);\n const targetPos = positions.get(link.target);\n const midX = (sourcePos.x + targetPos.x) / 2;\n const midY = (sourcePos.y + targetPos.y) / 2;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const offset = 8;\n const perpX = dy / distance;\n const perpY = -dx / distance;\n const labelX = midX + perpX * offset;\n const labelY = midY + perpY * offset;\n let angle = Math.atan2(dy, dx) * 180 / Math.PI;\n if (angle > 90 || angle < -90) {\n angle += 180;\n }\n return `rotate(${angle} ${labelX} ${labelY})`;\n }).text((link) => link.label);\n const trendGroup = root.append(\"g\").attr(\"class\", \"wardley-trends\");\n const trendsWithPositions = data.trends.map((trend) => {\n const origin = positions.get(trend.nodeId);\n if (!origin) {\n return null;\n }\n const targetX = projectX(trend.targetX);\n const targetY = projectY(trend.targetY);\n const dx = targetX - origin.x;\n const dy = targetY - origin.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const shortenBy = configValues.nodeRadius + 2;\n const adjustedX2 = distance > shortenBy ? targetX - dx / distance * shortenBy : targetX;\n const adjustedY2 = distance > shortenBy ? targetY - dy / distance * shortenBy : targetY;\n return {\n origin,\n targetX,\n targetY,\n adjustedX2,\n adjustedY2\n };\n }).filter((trend) => trend !== null);\n trendGroup.selectAll(\"line\").data(trendsWithPositions).enter().append(\"line\").attr(\"class\", \"wardley-trend\").attr(\"x1\", (trend) => trend.origin.x).attr(\"y1\", (trend) => trend.origin.y).attr(\"x2\", (trend) => trend.adjustedX2).attr(\"y2\", (trend) => trend.adjustedY2).attr(\"stroke\", theme.evolutionStroke).attr(\"stroke-width\", 1).attr(\"stroke-dasharray\", \"4 4\").attr(\"marker-end\", `url(#arrow-${id})`);\n const nodesGroup = root.append(\"g\").attr(\"class\", \"wardley-nodes\");\n const nodeEnter = nodesGroup.selectAll(\"g\").data(data.nodes).enter().append(\"g\").attr(\n \"class\",\n (node) => [\"wardley-node\", node.className ? `wardley-node--${node.className}` : \"\"].filter(Boolean).join(\" \")\n );\n nodeEnter.filter((node) => node.sourceStrategy === \"outsource\").append(\"circle\").attr(\"class\", \"wardley-outsource-overlay\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius * 2).attr(\"fill\", \"#666\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n nodeEnter.filter((node) => node.sourceStrategy === \"buy\").append(\"circle\").attr(\"class\", \"wardley-buy-overlay\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius * 2).attr(\"fill\", \"#ccc\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n nodeEnter.filter((node) => node.sourceStrategy === \"build\").append(\"circle\").attr(\"class\", \"wardley-build-overlay\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius * 2).attr(\"fill\", \"#eee\").attr(\"stroke\", \"#000\").attr(\"stroke-width\", 1);\n const marketNodes = nodeEnter.filter((node) => node.sourceStrategy === \"market\");\n marketNodes.append(\"circle\").attr(\"class\", \"wardley-market-overlay\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius * 2).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n nodeEnter.filter(\n (node) => !node.isPipelineParent && node.sourceStrategy !== \"market\" && node.className !== \"anchor\"\n ).append(\"circle\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y).attr(\"r\", configValues.nodeRadius).attr(\"fill\", theme.componentFill).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n const smallCircleRadius = configValues.nodeRadius * 0.7;\n const triangleRadius = configValues.nodeRadius * 1.2;\n marketNodes.append(\"line\").attr(\"class\", \"wardley-market-line\").attr(\"x1\", (node) => positions.get(node.id).x).attr(\"y1\", (node) => positions.get(node.id).y - triangleRadius).attr(\"x2\", (node) => positions.get(node.id).x - triangleRadius * Math.cos(Math.PI / 6)).attr(\"y2\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n marketNodes.append(\"line\").attr(\"class\", \"wardley-market-line\").attr(\"x1\", (node) => positions.get(node.id).x - triangleRadius * Math.cos(Math.PI / 6)).attr(\"y1\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"x2\", (node) => positions.get(node.id).x + triangleRadius * Math.cos(Math.PI / 6)).attr(\"y2\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n marketNodes.append(\"line\").attr(\"class\", \"wardley-market-line\").attr(\"x1\", (node) => positions.get(node.id).x + triangleRadius * Math.cos(Math.PI / 6)).attr(\"y1\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"x2\", (node) => positions.get(node.id).x).attr(\"y2\", (node) => positions.get(node.id).y - triangleRadius).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n marketNodes.append(\"circle\").attr(\"class\", \"wardley-market-dot\").attr(\"cx\", (node) => positions.get(node.id).x).attr(\"cy\", (node) => positions.get(node.id).y - triangleRadius).attr(\"r\", smallCircleRadius).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 2);\n marketNodes.append(\"circle\").attr(\"class\", \"wardley-market-dot\").attr(\"cx\", (node) => positions.get(node.id).x - triangleRadius * Math.cos(Math.PI / 6)).attr(\"cy\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"r\", smallCircleRadius).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 2);\n marketNodes.append(\"circle\").attr(\"class\", \"wardley-market-dot\").attr(\"cx\", (node) => positions.get(node.id).x + triangleRadius * Math.cos(Math.PI / 6)).attr(\"cy\", (node) => positions.get(node.id).y + triangleRadius * Math.sin(Math.PI / 6)).attr(\"r\", smallCircleRadius).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 2);\n nodeEnter.filter((node) => node.isPipelineParent === true).append(\"rect\").attr(\"x\", (node) => positions.get(node.id).x - squareSize / 2).attr(\"y\", (node) => positions.get(node.id).y - squareSize / 2).attr(\"width\", squareSize).attr(\"height\", squareSize).attr(\"fill\", theme.componentFill).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n nodeEnter.filter((node) => node.inertia === true).append(\"line\").attr(\"class\", \"wardley-inertia\").attr(\"x1\", (node) => {\n const pos = positions.get(node.id);\n let offset = node.isPipelineParent ? squareSize / 2 + 15 : configValues.nodeRadius + 15;\n if (node.sourceStrategy) {\n offset += configValues.nodeRadius + 10;\n }\n return pos.x + offset;\n }).attr(\"y1\", (node) => {\n const pos = positions.get(node.id);\n const lineHeight = node.isPipelineParent ? squareSize : configValues.nodeRadius * 2;\n return pos.y - lineHeight / 2;\n }).attr(\"x2\", (node) => {\n const pos = positions.get(node.id);\n let offset = node.isPipelineParent ? squareSize / 2 + 15 : configValues.nodeRadius + 15;\n if (node.sourceStrategy) {\n offset += configValues.nodeRadius + 10;\n }\n return pos.x + offset;\n }).attr(\"y2\", (node) => {\n const pos = positions.get(node.id);\n const lineHeight = node.isPipelineParent ? squareSize : configValues.nodeRadius * 2;\n return pos.y + lineHeight / 2;\n }).attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 6);\n nodeEnter.append(\"text\").attr(\"x\", (node) => {\n const pos = positions.get(node.id);\n if (node.className === \"anchor\") {\n return node.labelOffsetX !== void 0 ? pos.x + node.labelOffsetX : pos.x;\n }\n let defaultOffset = configValues.nodeLabelOffset;\n if (node.sourceStrategy && node.labelOffsetX === void 0) {\n defaultOffset += 10;\n }\n const customOffset = node.labelOffsetX ?? defaultOffset;\n return pos.x + customOffset;\n }).attr(\"y\", (node) => {\n const pos = positions.get(node.id);\n if (node.className === \"anchor\") {\n return node.labelOffsetY !== void 0 ? pos.y + node.labelOffsetY : pos.y - 3;\n }\n let defaultOffset = -configValues.nodeLabelOffset;\n if (node.sourceStrategy && node.labelOffsetY === void 0) {\n defaultOffset -= 10;\n }\n const customOffset = node.labelOffsetY ?? defaultOffset;\n return pos.y + customOffset;\n }).attr(\"class\", \"wardley-node-label\").attr(\"fill\", (node) => {\n if (node.className === \"evolved\") {\n return theme.evolutionStroke;\n }\n if (node.className === \"anchor\") {\n return \"#000\";\n }\n return theme.componentLabelColor;\n }).attr(\"font-size\", configValues.labelFontSize).attr(\"font-weight\", (node) => node.className === \"anchor\" ? \"bold\" : \"normal\").attr(\"text-anchor\", (node) => node.className === \"anchor\" ? \"middle\" : \"start\").attr(\"dominant-baseline\", (node) => node.className === \"anchor\" ? \"middle\" : \"auto\").text((node) => node.label);\n if (data.annotations.length > 0) {\n const annotationsGroup = root.append(\"g\").attr(\"class\", \"wardley-annotations\");\n data.annotations.forEach((annotation) => {\n const projectedCoords = annotation.coordinates.map((coord) => ({\n x: projectX(coord.x),\n y: projectY(coord.y)\n }));\n if (projectedCoords.length > 1) {\n for (let i = 0; i < projectedCoords.length - 1; i++) {\n annotationsGroup.append(\"line\").attr(\"class\", \"wardley-annotation-line\").attr(\"x1\", projectedCoords[i].x).attr(\"y1\", projectedCoords[i].y).attr(\"x2\", projectedCoords[i + 1].x).attr(\"y2\", projectedCoords[i + 1].y).attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1.5).attr(\"stroke-dasharray\", \"4 4\");\n }\n }\n projectedCoords.forEach((coord) => {\n const annotationNode = annotationsGroup.append(\"g\").attr(\"class\", \"wardley-annotation\");\n annotationNode.append(\"circle\").attr(\"cx\", coord.x).attr(\"cy\", coord.y).attr(\"r\", 10).attr(\"fill\", \"white\").attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1.5);\n annotationNode.append(\"text\").attr(\"x\", coord.x).attr(\"y\", coord.y).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"central\").attr(\"font-size\", 10).attr(\"fill\", theme.axisTextColor).attr(\"font-weight\", \"bold\").text(annotation.number);\n });\n });\n if (data.annotationsBox) {\n let boxX = projectX(data.annotationsBox.x);\n let boxY = projectY(data.annotationsBox.y);\n const padding = 10;\n const lineHeight = 16;\n const fontSize = 11;\n const textBoxGroup = annotationsGroup.append(\"g\").attr(\"class\", \"wardley-annotations-box\");\n const sortedAnnotations = [...data.annotations].filter((a) => a.text).sort((a, b) => a.number - b.number);\n const textElements = [];\n sortedAnnotations.forEach((annotation, idx) => {\n const text2 = textBoxGroup.append(\"text\").attr(\"x\", boxX + padding).attr(\"y\", boxY + padding + (idx + 1) * lineHeight).attr(\"font-size\", fontSize).attr(\"fill\", theme.axisTextColor).attr(\"text-anchor\", \"start\").attr(\"dominant-baseline\", \"middle\").text(`${annotation.number}. ${annotation.text}`);\n textElements.push(text2);\n });\n if (textElements.length > 0) {\n let maxWidth = 0;\n let maxHeight = 0;\n textElements.forEach((text2) => {\n const textNode = text2.node();\n const textWidth = textNode.getComputedTextLength();\n maxWidth = Math.max(maxWidth, textWidth);\n const bbox = textNode.getBBox();\n maxHeight = Math.max(maxHeight, bbox.height);\n });\n const boxWidth = maxWidth + padding * 2 + 105;\n const boxHeight = sortedAnnotations.length * lineHeight + padding * 2 + maxHeight / 2;\n const minX = configValues.padding;\n const maxX = width - configValues.padding - boxWidth;\n const minY = configValues.padding;\n const maxY = height - configValues.padding - boxHeight;\n boxX = Math.max(minX, Math.min(boxX, maxX));\n boxY = Math.max(minY, Math.min(boxY, maxY));\n textElements.forEach((text2, idx) => {\n text2.attr(\"x\", boxX + padding).attr(\"y\", boxY + padding + (idx + 1) * lineHeight);\n });\n textBoxGroup.insert(\"rect\", \"text\").attr(\"x\", boxX).attr(\"y\", boxY).attr(\"width\", boxWidth).attr(\"height\", boxHeight).attr(\"fill\", \"white\").attr(\"stroke\", theme.axisColor).attr(\"stroke-width\", 1.5).attr(\"rx\", 4).attr(\"ry\", 4);\n }\n }\n }\n if (data.notes.length > 0) {\n const notesGroup = root.append(\"g\").attr(\"class\", \"wardley-notes\");\n data.notes.forEach((note) => {\n const noteX = projectX(note.x);\n const noteY = projectY(note.y);\n notesGroup.append(\"text\").attr(\"x\", noteX).attr(\"y\", noteY).attr(\"text-anchor\", \"start\").attr(\"font-size\", 11).attr(\"fill\", theme.axisTextColor).attr(\"font-weight\", \"bold\").text(note.text);\n });\n }\n if (data.accelerators.length > 0) {\n const acceleratorsGroup = root.append(\"g\").attr(\"class\", \"wardley-accelerators\");\n data.accelerators.forEach((accelerator) => {\n const accX = projectX(accelerator.x);\n const accY = projectY(accelerator.y);\n const arrowWidth = 60;\n const arrowHeight = 30;\n const arrowHeadWidth = 20;\n const arrowPath = `\n M ${accX} ${accY - arrowHeight / 2}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY - arrowHeight / 2}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY - arrowHeight / 2 - 8}\n L ${accX + arrowWidth} ${accY}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY + arrowHeight / 2 + 8}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY + arrowHeight / 2}\n L ${accX} ${accY + arrowHeight / 2}\n Z\n `;\n acceleratorsGroup.append(\"path\").attr(\"d\", arrowPath).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n acceleratorsGroup.append(\"text\").attr(\"x\", accX + arrowWidth / 2).attr(\"y\", accY + arrowHeight / 2 + 15).attr(\"text-anchor\", \"middle\").attr(\"font-size\", 10).attr(\"fill\", theme.axisTextColor).attr(\"font-weight\", \"bold\").text(accelerator.name);\n });\n }\n if (data.deaccelerators.length > 0) {\n const deacceleratorsGroup = root.append(\"g\").attr(\"class\", \"wardley-deaccelerators\");\n data.deaccelerators.forEach((deaccelerator) => {\n const decX = projectX(deaccelerator.x);\n const decY = projectY(deaccelerator.y);\n const arrowWidth = 60;\n const arrowHeight = 30;\n const arrowHeadWidth = 20;\n const arrowPath = `\n M ${decX + arrowWidth} ${decY - arrowHeight / 2}\n L ${decX + arrowHeadWidth} ${decY - arrowHeight / 2}\n L ${decX + arrowHeadWidth} ${decY - arrowHeight / 2 - 8}\n L ${decX} ${decY}\n L ${decX + arrowHeadWidth} ${decY + arrowHeight / 2 + 8}\n L ${decX + arrowHeadWidth} ${decY + arrowHeight / 2}\n L ${decX + arrowWidth} ${decY + arrowHeight / 2}\n Z\n `;\n deacceleratorsGroup.append(\"path\").attr(\"d\", arrowPath).attr(\"fill\", \"white\").attr(\"stroke\", theme.componentStroke).attr(\"stroke-width\", 1);\n deacceleratorsGroup.append(\"text\").attr(\"x\", decX + arrowWidth / 2).attr(\"y\", decY + arrowHeight / 2 + 15).attr(\"text-anchor\", \"middle\").attr(\"font-size\", 10).attr(\"fill\", theme.axisTextColor).attr(\"font-weight\", \"bold\").text(deaccelerator.name);\n });\n }\n}, \"draw\");\nvar wardleyRenderer_default = {\n draw\n};\n\n// src/diagrams/wardley/wardleyDiagram.ts\nvar diagram = {\n parser,\n db: wardleyDb_default,\n renderer: wardleyRenderer_default,\n styles: /* @__PURE__ */ __name(() => \"\", \"styles\")\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|