{"version":3,"file":"wardleyDiagram-YWT4CUSO-BLiTDeEu.chunk.mjs","sources":["../node_modules/mermaid/dist/chunks/mermaid.core/wardleyDiagram-YWT4CUSO.mjs"],"sourcesContent":["import {\n  selectSvgElement\n} from \"./chunk-WU5MYG2G.mjs\";\nimport {\n  populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n  cleanAndMerge\n} from \"./chunk-5ZQYHXKU.mjs\";\nimport {\n  clear,\n  configureSvgSize,\n  getAccDescription,\n  getAccTitle,\n  getConfig,\n  getConfig2,\n  getDiagramTitle,\n  getThemeVariables,\n  setAccDescription,\n  setAccTitle,\n  setDiagramTitle\n} from \"./chunk-CSCIHK7Q.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(db.resolveNodeId(link.from), db.resolveNodeId(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  /**\n   * Resolve a name to a node ID. Tries exact ID match first,\n   * then falls back to finding a node whose label matches the name\n   * (handles pipeline components which have synthetic IDs like \"Parent_Child\").\n   */\n  resolveNodeId(name) {\n    if (this.nodes.has(name)) {\n      return name;\n    }\n    for (const [id, node] of this.nodes) {\n      if (node.label === name) {\n        return id;\n      }\n    }\n    return name;\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 getConfig3() {\n  return getConfig2()[\"wardley-beta\"];\n}\n__name(getConfig3, \"getConfig\");\nfunction addNode(id, label, x, y, className, labelOffsetX, labelOffsetY, inertia, sourceStrategy) {\n  builder.addNode({\n    id,\n    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({\n    source: sourceId,\n    target: targetId,\n    dashed,\n    label,\n    flow\n  });\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\n  });\n}\n__name(addAnnotation, \"addAnnotation\");\nfunction addNote(text, x, y) {\n  builder.addNote({\n    text,\n    x,\n    y\n  });\n}\n__name(addNote, \"addNote\");\nfunction addAccelerator(name, x, y) {\n  builder.addAccelerator({\n    name,\n    x,\n    y\n  });\n}\n__name(addAccelerator, \"addAccelerator\");\nfunction addDeaccelerator(name, x, y) {\n  builder.addDeaccelerator({\n    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  builder.setAxes(partial);\n}\n__name(updateAxes, \"updateAxes\");\nfunction getNode(id) {\n  return builder.getNode(id);\n}\n__name(getNode, \"getNode\");\nfunction resolveNodeId(name) {\n  return builder.resolveNodeId(name);\n}\n__name(resolveNodeId, \"resolveNodeId\");\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: getConfig3,\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  resolveNodeId,\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 } = getConfig2();\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 = getConfig2()[\"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/styles.ts\nvar styles = /* @__PURE__ */ __name(({\n  wardley\n} = {}) => {\n  const defaultThemeVariables = getThemeVariables();\n  const currentConfig = getConfig();\n  const themeVariables = cleanAndMerge(defaultThemeVariables, currentConfig.themeVariables);\n  const w = cleanAndMerge(themeVariables.wardley, wardley);\n  return `\n  .wardley-background {\n    fill: ${w.backgroundColor};\n  }\n  .wardley-axes line, .wardley-axes path {\n    stroke: ${w.axisColor};\n  }\n  .wardley-axis-label {\n    fill: ${w.axisTextColor};\n  }\n  .wardley-stage-label {\n    fill: ${w.axisTextColor};\n  }\n  .wardley-grid line {\n    stroke: ${w.gridColor};\n  }\n  .wardley-node circle {\n    fill: ${w.componentFill};\n    stroke: ${w.componentStroke};\n  }\n  .wardley-node-label {\n    fill: ${w.componentLabelColor};\n  }\n  .wardley-link {\n    stroke: ${w.linkStroke};\n  }\n  .wardley-link--dashed {\n    stroke-dasharray: 4 4;\n  }\n  .wardley-link-label {\n    fill: ${w.axisTextColor};\n  }\n  .wardley-trend line {\n    stroke: ${w.evolutionStroke};\n  }\n  .wardley-annotation-line {\n    stroke: ${w.annotationStroke};\n  }\n  .wardley-annotation circle {\n    fill: ${w.annotationFill};\n    stroke: ${w.annotationStroke};\n  }\n  .wardley-annotation text {\n    fill: ${w.annotationTextColor};\n  }\n  .wardley-annotations-box rect {\n    fill: ${w.annotationFill};\n    stroke: ${w.annotationStroke};\n  }\n  .wardley-annotations-box text {\n    fill: ${w.annotationTextColor};\n  }\n  .wardley-pipeline-box {\n    stroke: ${w.componentStroke};\n  }\n  .wardley-notes text {\n    fill: ${w.axisTextColor};\n  }\n  `;\n}, \"styles\");\n\n// src/diagrams/wardley/wardleyDiagram.ts\nvar diagram = {\n  parser,\n  db: wardleyDb_default,\n  renderer: wardleyRenderer_default,\n  styles\n};\nexport {\n  diagram\n};\n"],"names":["toPercent","__name","value","context","normalized","toCoordinates","visibility","evolution","getFlowFromPort","port","extractFlowFromArrow","arrow","flowLabel","populateDb","ast","db","populateCommonDb","stages","stage","stageBoundaries","anchor","coords","component","labelOffsetX","labelOffsetY","sourceStrategy","note","pipeline","parentNode","parentY","componentId","x","link","isDashed","flow","arrowFlow","annotation","label","evolve","node","target","annotationsBox","accelerator","deaccelerator","parser","input","parse","log","WardleyBuilder","existing","merged","trend","nodeId","pipelineNodeId","y","partial","width","height","id","name","nodes","builder","getConfig3","getConfig2","addNode","className","inertia","addLink","sourceId","targetId","dashed","addTrend","targetX","targetY","addAnnotation","number","coordinates","text","addNote","addAccelerator","addDeaccelerator","setAnnotationsBox","setSize","startPipeline","addPipelineComponent","updateAxes","getNode","resolveNodeId","getWardleyData","clear2","clear","wardleyDb_default","setAccTitle","getAccTitle","setDiagramTitle","getDiagramTitle","getAccDescription","setAccDescription","DEFAULT_STAGES","getTheme","themeVariables","getConfigValues","wardleyConfig","draw","_version","diagObj","configValues","theme","squareSize","data","title","svg","selectSvgElement","configureSvgSize","root","defs","chartWidth","chartHeight","projectX","projectY","axisGroup","xLabel","yLabel","stageGroup","boundaries","stagePositions","prevBoundary","boundary","stageWidth","_","index","pos","startX","endX","centerX","gridGroup","i","ratio","positions","pipelineGroup","pipelineLinksGroup","sortedComponents","id2","n","c","a","b","current","next","minX","maxX","height2","boxTop","parentPos","linksGroup","pipelineMap","validLinks","sourcePos","targetPos","radius","dx","dy","distance","midX","offset","perpX","midY","perpY","labelX","labelY","angle","trendGroup","trendsWithPositions","origin","shortenBy","adjustedX2","adjustedY2","nodeEnter","marketNodes","smallCircleRadius","triangleRadius","lineHeight","defaultOffset","customOffset","annotationsGroup","projectedCoords","coord","annotationNode","boxX","boxY","padding","fontSize","textBoxGroup","sortedAnnotations","textElements","idx","text2","maxWidth","maxHeight","textNode","textWidth","bbox","boxWidth","boxHeight","minY","maxY","notesGroup","noteX","noteY","acceleratorsGroup","accX","accY","arrowWidth","arrowHeight","arrowHeadWidth","arrowPath","deacceleratorsGroup","decX","decY","wardleyRenderer_default","styles","wardley","defaultThemeVariables","getThemeVariables","currentConfig","getConfig","cleanAndMerge","w","diagram"],"mappings":"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","x_google_ignoreList":[0]}