@tecture/core 0.0.6 → 0.0.7

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.
Files changed (111) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.js +1 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/public/assets/{_baseUniq-Dhw8ANLN.js → _baseUniq-CUITAAZ7.js} +2 -2
  5. package/dist/public/assets/{_baseUniq-Dhw8ANLN.js.map → _baseUniq-CUITAAZ7.js.map} +1 -1
  6. package/dist/public/assets/{arc-DHr716eG.js → arc-DyFMcdgg.js} +2 -2
  7. package/dist/public/assets/{arc-DHr716eG.js.map → arc-DyFMcdgg.js.map} +1 -1
  8. package/dist/public/assets/{architectureDiagram-Q4EWVU46-CiupZxBl.js → architectureDiagram-Q4EWVU46-DZTi6y6q.js} +2 -2
  9. package/dist/public/assets/{architectureDiagram-Q4EWVU46-CiupZxBl.js.map → architectureDiagram-Q4EWVU46-DZTi6y6q.js.map} +1 -1
  10. package/dist/public/assets/{blockDiagram-DXYQGD6D-CZsYmXdZ.js → blockDiagram-DXYQGD6D-C5DgUxsA.js} +2 -2
  11. package/dist/public/assets/{blockDiagram-DXYQGD6D-CZsYmXdZ.js.map → blockDiagram-DXYQGD6D-C5DgUxsA.js.map} +1 -1
  12. package/dist/public/assets/{c4Diagram-AHTNJAMY-oYpz_hY-.js → c4Diagram-AHTNJAMY-BF_SaG8K.js} +2 -2
  13. package/dist/public/assets/{c4Diagram-AHTNJAMY-oYpz_hY-.js.map → c4Diagram-AHTNJAMY-BF_SaG8K.js.map} +1 -1
  14. package/dist/public/assets/channel-Chx65KuQ.js +2 -0
  15. package/dist/public/assets/{channel-D4DHyqBz.js.map → channel-Chx65KuQ.js.map} +1 -1
  16. package/dist/public/assets/{chunk-4BX2VUAB-BJASz7t9.js → chunk-4BX2VUAB-JU2t15qH.js} +2 -2
  17. package/dist/public/assets/{chunk-4BX2VUAB-BJASz7t9.js.map → chunk-4BX2VUAB-JU2t15qH.js.map} +1 -1
  18. package/dist/public/assets/{chunk-4TB4RGXK-BmBuFub9.js → chunk-4TB4RGXK-BqjiENIB.js} +2 -2
  19. package/dist/public/assets/{chunk-4TB4RGXK-BmBuFub9.js.map → chunk-4TB4RGXK-BqjiENIB.js.map} +1 -1
  20. package/dist/public/assets/chunk-55IACEB6-CwPOewiq.js +2 -0
  21. package/dist/public/assets/{chunk-55IACEB6-DpRX_xgZ.js.map → chunk-55IACEB6-CwPOewiq.js.map} +1 -1
  22. package/dist/public/assets/{chunk-EDXVE4YY-CjyvbsHL.js → chunk-EDXVE4YY-CeAdKClT.js} +2 -2
  23. package/dist/public/assets/{chunk-EDXVE4YY-CjyvbsHL.js.map → chunk-EDXVE4YY-CeAdKClT.js.map} +1 -1
  24. package/dist/public/assets/{chunk-FMBD7UC4-CopKIX9d.js → chunk-FMBD7UC4-BmV52drU.js} +2 -2
  25. package/dist/public/assets/{chunk-FMBD7UC4-CopKIX9d.js.map → chunk-FMBD7UC4-BmV52drU.js.map} +1 -1
  26. package/dist/public/assets/{chunk-OYMX7WX6-Qy94MD6F.js → chunk-OYMX7WX6-DMQ6OBmH.js} +2 -2
  27. package/dist/public/assets/{chunk-OYMX7WX6-Qy94MD6F.js.map → chunk-OYMX7WX6-DMQ6OBmH.js.map} +1 -1
  28. package/dist/public/assets/{chunk-QZHKN3VN-q0VhU4fD.js → chunk-QZHKN3VN-BbECxIVF.js} +2 -2
  29. package/dist/public/assets/{chunk-QZHKN3VN-q0VhU4fD.js.map → chunk-QZHKN3VN-BbECxIVF.js.map} +1 -1
  30. package/dist/public/assets/{chunk-YZCP3GAM-CLHu-ytS.js → chunk-YZCP3GAM-LV4b5o7A.js} +2 -2
  31. package/dist/public/assets/{chunk-YZCP3GAM-CLHu-ytS.js.map → chunk-YZCP3GAM-LV4b5o7A.js.map} +1 -1
  32. package/dist/public/assets/classDiagram-6PBFFD2Q-CuGjbxVu.js +2 -0
  33. package/dist/public/assets/{classDiagram-6PBFFD2Q-C_GcL8CY.js.map → classDiagram-6PBFFD2Q-CuGjbxVu.js.map} +1 -1
  34. package/dist/public/assets/classDiagram-v2-HSJHXN6E-CuGjbxVu.js +2 -0
  35. package/dist/public/assets/{classDiagram-v2-HSJHXN6E-C_GcL8CY.js.map → classDiagram-v2-HSJHXN6E-CuGjbxVu.js.map} +1 -1
  36. package/dist/public/assets/clone-B5zl9853.js +2 -0
  37. package/dist/public/assets/{clone-Cpn4E8-V.js.map → clone-B5zl9853.js.map} +1 -1
  38. package/dist/public/assets/{cose-bilkent-S5V4N54A-BCNrUYFS.js → cose-bilkent-S5V4N54A-NxYN3t_X.js} +2 -2
  39. package/dist/public/assets/{cose-bilkent-S5V4N54A-BCNrUYFS.js.map → cose-bilkent-S5V4N54A-NxYN3t_X.js.map} +1 -1
  40. package/dist/public/assets/{dagre-KV5264BT-BVapQShq.js → dagre-KV5264BT-DTQ94K2e.js} +2 -2
  41. package/dist/public/assets/{dagre-KV5264BT-BVapQShq.js.map → dagre-KV5264BT-DTQ94K2e.js.map} +1 -1
  42. package/dist/public/assets/{diagram-5BDNPKRD-D6B3PE9C.js → diagram-5BDNPKRD-BI7YTuYk.js} +2 -2
  43. package/dist/public/assets/{diagram-5BDNPKRD-D6B3PE9C.js.map → diagram-5BDNPKRD-BI7YTuYk.js.map} +1 -1
  44. package/dist/public/assets/{diagram-G4DWMVQ6-BaWJIFI_.js → diagram-G4DWMVQ6-CRfC6IFe.js} +2 -2
  45. package/dist/public/assets/{diagram-G4DWMVQ6-BaWJIFI_.js.map → diagram-G4DWMVQ6-CRfC6IFe.js.map} +1 -1
  46. package/dist/public/assets/{diagram-MMDJMWI5-CCy9j0cK.js → diagram-MMDJMWI5-CfWU0Xcy.js} +2 -2
  47. package/dist/public/assets/{diagram-MMDJMWI5-CCy9j0cK.js.map → diagram-MMDJMWI5-CfWU0Xcy.js.map} +1 -1
  48. package/dist/public/assets/{diagram-TYMM5635-Dlu7NmTQ.js → diagram-TYMM5635-DUUA764g.js} +2 -2
  49. package/dist/public/assets/{diagram-TYMM5635-Dlu7NmTQ.js.map → diagram-TYMM5635-DUUA764g.js.map} +1 -1
  50. package/dist/public/assets/{erDiagram-SMLLAGMA-X6FgEuRR.js → erDiagram-SMLLAGMA-CC6HpSJv.js} +2 -2
  51. package/dist/public/assets/{erDiagram-SMLLAGMA-X6FgEuRR.js.map → erDiagram-SMLLAGMA-CC6HpSJv.js.map} +1 -1
  52. package/dist/public/assets/{flowDiagram-DWJPFMVM-Bu3JFQlu.js → flowDiagram-DWJPFMVM-BcUwc3Qv.js} +2 -2
  53. package/dist/public/assets/{flowDiagram-DWJPFMVM-Bu3JFQlu.js.map → flowDiagram-DWJPFMVM-BcUwc3Qv.js.map} +1 -1
  54. package/dist/public/assets/{ganttDiagram-T4ZO3ILL-n168zCl5.js → ganttDiagram-T4ZO3ILL-BQ0OUFDb.js} +2 -2
  55. package/dist/public/assets/{ganttDiagram-T4ZO3ILL-n168zCl5.js.map → ganttDiagram-T4ZO3ILL-BQ0OUFDb.js.map} +1 -1
  56. package/dist/public/assets/{gitGraphDiagram-UUTBAWPF-DArjnyo2.js → gitGraphDiagram-UUTBAWPF-BMtxQA7c.js} +2 -2
  57. package/dist/public/assets/{gitGraphDiagram-UUTBAWPF-DArjnyo2.js.map → gitGraphDiagram-UUTBAWPF-BMtxQA7c.js.map} +1 -1
  58. package/dist/public/assets/{graph-Bfm3kqd3.js → graph-D-_LAAxI.js} +2 -2
  59. package/dist/public/assets/{graph-Bfm3kqd3.js.map → graph-D-_LAAxI.js.map} +1 -1
  60. package/dist/public/assets/{index-DMY07AUl.js → index-B08bCLVX.js} +3 -3
  61. package/dist/public/assets/{index-DMY07AUl.js.map → index-B08bCLVX.js.map} +1 -1
  62. package/dist/public/assets/{infoDiagram-42DDH7IO-pBrtdPq_.js → infoDiagram-42DDH7IO-Bamzqbzk.js} +2 -2
  63. package/dist/public/assets/{infoDiagram-42DDH7IO-pBrtdPq_.js.map → infoDiagram-42DDH7IO-Bamzqbzk.js.map} +1 -1
  64. package/dist/public/assets/{ishikawaDiagram-UXIWVN3A-BDIZnWTx.js → ishikawaDiagram-UXIWVN3A-zKsJsf_v.js} +2 -2
  65. package/dist/public/assets/{ishikawaDiagram-UXIWVN3A-BDIZnWTx.js.map → ishikawaDiagram-UXIWVN3A-zKsJsf_v.js.map} +1 -1
  66. package/dist/public/assets/{journeyDiagram-VCZTEJTY-DmSjb-PU.js → journeyDiagram-VCZTEJTY-C-6pvS6y.js} +2 -2
  67. package/dist/public/assets/{journeyDiagram-VCZTEJTY-DmSjb-PU.js.map → journeyDiagram-VCZTEJTY-C-6pvS6y.js.map} +1 -1
  68. package/dist/public/assets/{kanban-definition-6JOO6SKY-C8FgUjbs.js → kanban-definition-6JOO6SKY-DS7zW-ig.js} +2 -2
  69. package/dist/public/assets/{kanban-definition-6JOO6SKY-C8FgUjbs.js.map → kanban-definition-6JOO6SKY-DS7zW-ig.js.map} +1 -1
  70. package/dist/public/assets/{layout-DJh2njKG.js → layout-CVDJjYNO.js} +2 -2
  71. package/dist/public/assets/{layout-DJh2njKG.js.map → layout-CVDJjYNO.js.map} +1 -1
  72. package/dist/public/assets/{linear-kYTx6SLx.js → linear-lUY0N4kd.js} +2 -2
  73. package/dist/public/assets/{linear-kYTx6SLx.js.map → linear-lUY0N4kd.js.map} +1 -1
  74. package/dist/public/assets/{mermaid.core-sEG8CMeA.js → mermaid.core-H7Dmb05b.js} +5 -5
  75. package/dist/public/assets/{mermaid.core-sEG8CMeA.js.map → mermaid.core-H7Dmb05b.js.map} +1 -1
  76. package/dist/public/assets/{min-Cxji_8ZQ.js → min-CXznxZeM.js} +2 -2
  77. package/dist/public/assets/{min-Cxji_8ZQ.js.map → min-CXznxZeM.js.map} +1 -1
  78. package/dist/public/assets/{mindmap-definition-QFDTVHPH-B0-J9mrb.js → mindmap-definition-QFDTVHPH-jXt705eB.js} +2 -2
  79. package/dist/public/assets/{mindmap-definition-QFDTVHPH-B0-J9mrb.js.map → mindmap-definition-QFDTVHPH-jXt705eB.js.map} +1 -1
  80. package/dist/public/assets/{pieDiagram-DEJITSTG-CDZHsOGg.js → pieDiagram-DEJITSTG-Cs44d6OE.js} +2 -2
  81. package/dist/public/assets/{pieDiagram-DEJITSTG-CDZHsOGg.js.map → pieDiagram-DEJITSTG-Cs44d6OE.js.map} +1 -1
  82. package/dist/public/assets/{quadrantDiagram-34T5L4WZ-Cr3XLn8k.js → quadrantDiagram-34T5L4WZ-CpymTeDv.js} +2 -2
  83. package/dist/public/assets/{quadrantDiagram-34T5L4WZ-Cr3XLn8k.js.map → quadrantDiagram-34T5L4WZ-CpymTeDv.js.map} +1 -1
  84. package/dist/public/assets/{requirementDiagram-MS252O5E-DhckNPK2.js → requirementDiagram-MS252O5E-RyLqPw4W.js} +2 -2
  85. package/dist/public/assets/{requirementDiagram-MS252O5E-DhckNPK2.js.map → requirementDiagram-MS252O5E-RyLqPw4W.js.map} +1 -1
  86. package/dist/public/assets/{sankeyDiagram-XADWPNL6-Cst7lZQ5.js → sankeyDiagram-XADWPNL6-DamuB2BV.js} +2 -2
  87. package/dist/public/assets/{sankeyDiagram-XADWPNL6-Cst7lZQ5.js.map → sankeyDiagram-XADWPNL6-DamuB2BV.js.map} +1 -1
  88. package/dist/public/assets/{sequenceDiagram-FGHM5R23-BSz6hk1R.js → sequenceDiagram-FGHM5R23-6-TOylZP.js} +2 -2
  89. package/dist/public/assets/{sequenceDiagram-FGHM5R23-BSz6hk1R.js.map → sequenceDiagram-FGHM5R23-6-TOylZP.js.map} +1 -1
  90. package/dist/public/assets/{stateDiagram-FHFEXIEX-racSpEdx.js → stateDiagram-FHFEXIEX-B6cKPsIC.js} +2 -2
  91. package/dist/public/assets/{stateDiagram-FHFEXIEX-racSpEdx.js.map → stateDiagram-FHFEXIEX-B6cKPsIC.js.map} +1 -1
  92. package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-CXb0Znc0.js +2 -0
  93. package/dist/public/assets/{stateDiagram-v2-QKLJ7IA2-C8oha-gC.js.map → stateDiagram-v2-QKLJ7IA2-CXb0Znc0.js.map} +1 -1
  94. package/dist/public/assets/{timeline-definition-GMOUNBTQ-pBR5gxYm.js → timeline-definition-GMOUNBTQ-CdeBXF6y.js} +2 -2
  95. package/dist/public/assets/{timeline-definition-GMOUNBTQ-pBR5gxYm.js.map → timeline-definition-GMOUNBTQ-CdeBXF6y.js.map} +1 -1
  96. package/dist/public/assets/{vennDiagram-DHZGUBPP-OCE87T_5.js → vennDiagram-DHZGUBPP-D8DqpbrW.js} +2 -2
  97. package/dist/public/assets/{vennDiagram-DHZGUBPP-OCE87T_5.js.map → vennDiagram-DHZGUBPP-D8DqpbrW.js.map} +1 -1
  98. package/dist/public/assets/{wardley-RL74JXVD-691yvuUx.js → wardley-RL74JXVD-B1MU-JlC.js} +2 -2
  99. package/dist/public/assets/{wardley-RL74JXVD-691yvuUx.js.map → wardley-RL74JXVD-B1MU-JlC.js.map} +1 -1
  100. package/dist/public/assets/{wardleyDiagram-NUSXRM2D-CewxpYfR.js → wardleyDiagram-NUSXRM2D-MYKM6CF8.js} +2 -2
  101. package/dist/public/assets/{wardleyDiagram-NUSXRM2D-CewxpYfR.js.map → wardleyDiagram-NUSXRM2D-MYKM6CF8.js.map} +1 -1
  102. package/dist/public/assets/{xychartDiagram-5P7HB3ND-C_kdNFR1.js → xychartDiagram-5P7HB3ND-Brec7d4F.js} +2 -2
  103. package/dist/public/assets/{xychartDiagram-5P7HB3ND-C_kdNFR1.js.map → xychartDiagram-5P7HB3ND-Brec7d4F.js.map} +1 -1
  104. package/dist/public/index.html +1 -1
  105. package/package.json +1 -1
  106. package/dist/public/assets/channel-D4DHyqBz.js +0 -2
  107. package/dist/public/assets/chunk-55IACEB6-DpRX_xgZ.js +0 -2
  108. package/dist/public/assets/classDiagram-6PBFFD2Q-C_GcL8CY.js +0 -2
  109. package/dist/public/assets/classDiagram-v2-HSJHXN6E-C_GcL8CY.js +0 -2
  110. package/dist/public/assets/clone-Cpn4E8-V.js +0 -2
  111. package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-C8oha-gC.js +0 -2
@@ -1,4 +1,4 @@
1
- import{s as Lt,g as zt,p as Xt,o as At,a as Ct,b as Et,_ as y,l as et,H as Tt,d as Yt,y as Bt,c as q,h as Rt}from"./mermaid.core-sEG8CMeA.js";import{p as Ft}from"./chunk-4BX2VUAB-BJASz7t9.js";import{p as Ot}from"./wardley-RL74JXVD-691yvuUx.js";import"./index-DMY07AUl.js";import"./min-Cxji_8ZQ.js";import"./_baseUniq-Dhw8ANLN.js";var H=y((a,r)=>{const e=a<=1?a*100:a;if(e<0||e>100)throw new Error(`${r} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${a}`);return e},"toPercent"),Y=y((a,r,e)=>({x:H(r,`${e} evolution`),y:H(a,`${e} visibility`)}),"toCoordinates"),tt=y(a=>{if(a){if(a==="+<>")return"bidirectional";if(a==="+<")return"backward";if(a==="+>")return"forward"}},"getFlowFromPort"),It=y(a=>{if(!(a!=null&&a.startsWith("+")))return{};const r=/^\+'([^']*)'/.exec(a),e=r==null?void 0:r[1];return a.includes("<>")?{flow:"bidirectional",label:e}:a.includes("<")?{flow:"backward",label:e}:a.includes(">")?{flow:"forward",label:e}:{label:e}},"extractFlowFromArrow"),Wt=y((a,r)=>{if(Ft(a,r),a.size&&r.setSize(a.size.width,a.size.height),a.evolution){const e=a.evolution.stages.map(o=>o.secondName?`${o.name.trim()} / ${o.secondName.trim()}`:o.name.trim()),h=a.evolution.stages.filter(o=>o.boundary!==void 0).map(o=>o.boundary);r.updateAxes({stages:e,stageBoundaries:h})}if(a.anchors.forEach(e=>{const h=Y(e.visibility,e.evolution,`Anchor "${e.name}"`);r.addNode(e.name,e.name,h.x,h.y,"anchor")}),a.components.forEach(e=>{var v;const h=Y(e.visibility,e.evolution,`Component "${e.name}"`),o=e.label?(e.label.negX?-1:1)*e.label.offsetX:void 0,d=e.label?(e.label.negY?-1:1)*e.label.offsetY:void 0,m=(v=e.decorator)==null?void 0:v.strategy;r.addNode(e.name,e.name,h.x,h.y,"component",o,d,e.inertia,m)}),a.notes.forEach(e=>{const h=Y(e.visibility,e.evolution,`Note "${e.text}"`);r.addNote(e.text,h.x,h.y)}),a.pipelines.forEach(e=>{const h=r.getNode(e.parent);if(!h||typeof h.y!="number")throw new Error(`Pipeline "${e.parent}" must reference an existing component with coordinates.`);const o=h.y;r.startPipeline(e.parent),e.components.forEach(d=>{const m=`${e.parent}_${d.name}`,v=d.label?(d.label.negX?-1:1)*d.label.offsetX:void 0,g=d.label?(d.label.negY?-1:1)*d.label.offsetY:void 0,A=H(d.evolution,`Pipeline component "${d.name}" evolution`);r.addNode(m,d.name,A,o,"pipeline-component",v,g),r.addPipelineComponent(e.parent,m)})}),a.links.forEach(e=>{const h=!!e.arrow&&(e.arrow.includes("-.->")||e.arrow.includes(".-."));let o=tt(e.fromPort)??tt(e.toPort);const{flow:d,label:m}=It(e.arrow);!o&&d&&(o=d);const v=e.linkLabel,g=m??v;r.addLink(e.from,e.to,h,g,o)}),a.evolves.forEach(e=>{const h=r.getNode(e.component);if((h==null?void 0:h.y)!==void 0){const o=H(e.target,`Evolve target for "${e.component}"`);r.addTrend(e.component,o,h.y)}}),a.annotations.length>0){const e=a.annotations[0],h=Y(e.x,e.y,"Annotations box");r.setAnnotationsBox(h.x,h.y)}a.annotation.forEach(e=>{const h=Y(e.x,e.y,`Annotation ${e.number}`);r.addAnnotation(e.number,[{x:h.x,y:h.y}],e.text)}),a.accelerators.forEach(e=>{const h=Y(e.x,e.y,`Accelerator "${e.name}"`);r.addAccelerator(e.name,h.x,h.y)}),a.deaccelerators.forEach(e=>{const h=Y(e.x,e.y,`Deaccelerator "${e.name}"`);r.addDeaccelerator(e.name,h.x,h.y)})},"populateDb"),at={parser:{yy:void 0},parse:y(async a=>{var h;const r=await Ot("wardley",a);et.debug(r);const e=(h=at.parser)==null?void 0:h.yy;if(!e||typeof e.addNode!="function")throw new Error("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.");Wt(r,e)},"parse")},R,Dt=(R=class{constructor(){this.nodes=new Map,this.links=[],this.trends=new Map,this.pipelines=new Map,this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.axes={}}addNode(r){const e=this.nodes.get(r.id)??{id:r.id,label:r.label},h={...e,...r,className:r.className??e.className,labelOffsetX:r.labelOffsetX??e.labelOffsetX,labelOffsetY:r.labelOffsetY??e.labelOffsetY};this.nodes.set(r.id,h)}addLink(r){this.links.push(r)}addTrend(r){this.trends.set(r.nodeId,r)}startPipeline(r){this.pipelines.set(r,{nodeId:r,componentIds:[]});const e=this.nodes.get(r);e&&(e.isPipelineParent=!0)}addPipelineComponent(r,e){const h=this.pipelines.get(r);h&&h.componentIds.push(e);const o=this.nodes.get(e);o&&(o.inPipeline=!0)}addAnnotation(r){this.annotations.push(r)}addNote(r){this.notes.push(r)}addAccelerator(r){this.accelerators.push(r)}addDeaccelerator(r){this.deaccelerators.push(r)}setAnnotationsBox(r,e){this.annotationsBox={x:r,y:e}}setAxes(r){this.axes={...this.axes,...r}}setSize(r,e){this.size={width:r,height:e}}getNode(r){return this.nodes.get(r)}build(){const r=[];for(const e of this.nodes.values()){if(typeof e.x!="number"||typeof e.y!="number")throw new Error(`Node "${e.label}" is missing coordinates`);r.push(e)}return{nodes:r,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}},y(R,"WardleyBuilder"),R),P=new Dt;function N(a){const r=q();return Rt(a.trim(),r)}y(N,"textSanitizer");function rt(){return q()["wardley-beta"]}y(rt,"getConfig");function ot(a,r,e,h,o,d,m,v,g){P.addNode({id:a,label:N(r),x:e,y:h,className:o,labelOffsetX:d,labelOffsetY:m,inertia:v,sourceStrategy:g})}y(ot,"addNode");function st(a,r,e=!1,h,o){P.addLink({source:a,target:r,dashed:e,label:h,flow:o})}y(st,"addLink");function nt(a,r,e){P.addTrend({nodeId:a,targetX:r,targetY:e})}y(nt,"addTrend");function it(a,r,e){P.addAnnotation({number:a,coordinates:r,text:e?N(e):void 0})}y(it,"addAnnotation");function dt(a,r,e){P.addNote({text:N(a),x:r,y:e})}y(dt,"addNote");function lt(a,r,e){P.addAccelerator({name:N(a),x:r,y:e})}y(lt,"addAccelerator");function ct(a,r,e){P.addDeaccelerator({name:N(a),x:r,y:e})}y(ct,"addDeaccelerator");function pt(a,r){P.setAnnotationsBox(a,r)}y(pt,"setAnnotationsBox");function ht(a,r){P.setSize(a,r)}y(ht,"setSize");function xt(a){P.startPipeline(a)}y(xt,"startPipeline");function ft(a,r){P.addPipelineComponent(a,r)}y(ft,"addPipelineComponent");function gt(a){const r={};a.xLabel&&(r.xLabel=N(a.xLabel)),a.yLabel&&(r.yLabel=N(a.yLabel)),a.stages&&(r.stages=a.stages.map(e=>N(e))),a.stageBoundaries&&(r.stageBoundaries=a.stageBoundaries),P.setAxes(r)}y(gt,"updateAxes");function ut(a){return P.getNode(a)}y(ut,"getNode");function yt(){return P.build()}y(yt,"getWardleyData");function mt(){P.clear(),Bt()}y(mt,"clear");var Gt={getConfig:rt,addNode:ot,addLink:st,addTrend:nt,addAnnotation:it,addNote:dt,addAccelerator:lt,addDeaccelerator:ct,setAnnotationsBox:pt,setSize:ht,startPipeline:xt,addPipelineComponent:ft,updateAxes:gt,getNode:ut,getWardleyData:yt,clear:mt,setAccTitle:Et,getAccTitle:Ct,setDiagramTitle:At,getDiagramTitle:Xt,getAccDescription:zt,setAccDescription:Lt},Ht=["Genesis","Custom Built","Product","Commodity"],qt=y(()=>{var r,e,h,o,d,m,v,g,A,M,b,L;const{themeVariables:a}=q();return{backgroundColor:((r=a.wardley)==null?void 0:r.backgroundColor)??a.background??"#fff",axisColor:((e=a.wardley)==null?void 0:e.axisColor)??"#000",axisTextColor:((h=a.wardley)==null?void 0:h.axisTextColor)??a.primaryTextColor??"#222",gridColor:((o=a.wardley)==null?void 0:o.gridColor)??"rgba(100, 100, 100, 0.2)",componentFill:((d=a.wardley)==null?void 0:d.componentFill)??"#fff",componentStroke:((m=a.wardley)==null?void 0:m.componentStroke)??"#000",componentLabelColor:((v=a.wardley)==null?void 0:v.componentLabelColor)??a.primaryTextColor??"#222",linkStroke:((g=a.wardley)==null?void 0:g.linkStroke)??"#000",evolutionStroke:((A=a.wardley)==null?void 0:A.evolutionStroke)??"#dc3545",annotationStroke:((M=a.wardley)==null?void 0:M.annotationStroke)??"#000",annotationTextColor:((b=a.wardley)==null?void 0:b.annotationTextColor)??a.primaryTextColor??"#222",annotationFill:((L=a.wardley)==null?void 0:L.annotationFill)??a.background??"#fff"}},"getTheme"),jt=y(()=>{const a=q()["wardley-beta"];return{width:(a==null?void 0:a.width)??900,height:(a==null?void 0:a.height)??600,padding:(a==null?void 0:a.padding)??48,nodeRadius:(a==null?void 0:a.nodeRadius)??6,nodeLabelOffset:(a==null?void 0:a.nodeLabelOffset)??8,axisFontSize:(a==null?void 0:a.axisFontSize)??12,labelFontSize:(a==null?void 0:a.labelFontSize)??10,showGrid:(a==null?void 0:a.showGrid)??!1,useMaxWidth:(a==null?void 0:a.useMaxWidth)??!0}},"getConfigValues"),_t=y((a,r,e,h)=>{var K,Q;et.debug(`Rendering Wardley map
1
+ import{s as Lt,g as zt,p as Xt,o as At,a as Ct,b as Et,_ as y,l as et,H as Tt,d as Yt,y as Bt,c as q,h as Rt}from"./mermaid.core-H7Dmb05b.js";import{p as Ft}from"./chunk-4BX2VUAB-JU2t15qH.js";import{p as Ot}from"./wardley-RL74JXVD-B1MU-JlC.js";import"./index-B08bCLVX.js";import"./min-CXznxZeM.js";import"./_baseUniq-CUITAAZ7.js";var H=y((a,r)=>{const e=a<=1?a*100:a;if(e<0||e>100)throw new Error(`${r} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${a}`);return e},"toPercent"),Y=y((a,r,e)=>({x:H(r,`${e} evolution`),y:H(a,`${e} visibility`)}),"toCoordinates"),tt=y(a=>{if(a){if(a==="+<>")return"bidirectional";if(a==="+<")return"backward";if(a==="+>")return"forward"}},"getFlowFromPort"),It=y(a=>{if(!(a!=null&&a.startsWith("+")))return{};const r=/^\+'([^']*)'/.exec(a),e=r==null?void 0:r[1];return a.includes("<>")?{flow:"bidirectional",label:e}:a.includes("<")?{flow:"backward",label:e}:a.includes(">")?{flow:"forward",label:e}:{label:e}},"extractFlowFromArrow"),Wt=y((a,r)=>{if(Ft(a,r),a.size&&r.setSize(a.size.width,a.size.height),a.evolution){const e=a.evolution.stages.map(o=>o.secondName?`${o.name.trim()} / ${o.secondName.trim()}`:o.name.trim()),h=a.evolution.stages.filter(o=>o.boundary!==void 0).map(o=>o.boundary);r.updateAxes({stages:e,stageBoundaries:h})}if(a.anchors.forEach(e=>{const h=Y(e.visibility,e.evolution,`Anchor "${e.name}"`);r.addNode(e.name,e.name,h.x,h.y,"anchor")}),a.components.forEach(e=>{var v;const h=Y(e.visibility,e.evolution,`Component "${e.name}"`),o=e.label?(e.label.negX?-1:1)*e.label.offsetX:void 0,d=e.label?(e.label.negY?-1:1)*e.label.offsetY:void 0,m=(v=e.decorator)==null?void 0:v.strategy;r.addNode(e.name,e.name,h.x,h.y,"component",o,d,e.inertia,m)}),a.notes.forEach(e=>{const h=Y(e.visibility,e.evolution,`Note "${e.text}"`);r.addNote(e.text,h.x,h.y)}),a.pipelines.forEach(e=>{const h=r.getNode(e.parent);if(!h||typeof h.y!="number")throw new Error(`Pipeline "${e.parent}" must reference an existing component with coordinates.`);const o=h.y;r.startPipeline(e.parent),e.components.forEach(d=>{const m=`${e.parent}_${d.name}`,v=d.label?(d.label.negX?-1:1)*d.label.offsetX:void 0,g=d.label?(d.label.negY?-1:1)*d.label.offsetY:void 0,A=H(d.evolution,`Pipeline component "${d.name}" evolution`);r.addNode(m,d.name,A,o,"pipeline-component",v,g),r.addPipelineComponent(e.parent,m)})}),a.links.forEach(e=>{const h=!!e.arrow&&(e.arrow.includes("-.->")||e.arrow.includes(".-."));let o=tt(e.fromPort)??tt(e.toPort);const{flow:d,label:m}=It(e.arrow);!o&&d&&(o=d);const v=e.linkLabel,g=m??v;r.addLink(e.from,e.to,h,g,o)}),a.evolves.forEach(e=>{const h=r.getNode(e.component);if((h==null?void 0:h.y)!==void 0){const o=H(e.target,`Evolve target for "${e.component}"`);r.addTrend(e.component,o,h.y)}}),a.annotations.length>0){const e=a.annotations[0],h=Y(e.x,e.y,"Annotations box");r.setAnnotationsBox(h.x,h.y)}a.annotation.forEach(e=>{const h=Y(e.x,e.y,`Annotation ${e.number}`);r.addAnnotation(e.number,[{x:h.x,y:h.y}],e.text)}),a.accelerators.forEach(e=>{const h=Y(e.x,e.y,`Accelerator "${e.name}"`);r.addAccelerator(e.name,h.x,h.y)}),a.deaccelerators.forEach(e=>{const h=Y(e.x,e.y,`Deaccelerator "${e.name}"`);r.addDeaccelerator(e.name,h.x,h.y)})},"populateDb"),at={parser:{yy:void 0},parse:y(async a=>{var h;const r=await Ot("wardley",a);et.debug(r);const e=(h=at.parser)==null?void 0:h.yy;if(!e||typeof e.addNode!="function")throw new Error("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.");Wt(r,e)},"parse")},R,Dt=(R=class{constructor(){this.nodes=new Map,this.links=[],this.trends=new Map,this.pipelines=new Map,this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.axes={}}addNode(r){const e=this.nodes.get(r.id)??{id:r.id,label:r.label},h={...e,...r,className:r.className??e.className,labelOffsetX:r.labelOffsetX??e.labelOffsetX,labelOffsetY:r.labelOffsetY??e.labelOffsetY};this.nodes.set(r.id,h)}addLink(r){this.links.push(r)}addTrend(r){this.trends.set(r.nodeId,r)}startPipeline(r){this.pipelines.set(r,{nodeId:r,componentIds:[]});const e=this.nodes.get(r);e&&(e.isPipelineParent=!0)}addPipelineComponent(r,e){const h=this.pipelines.get(r);h&&h.componentIds.push(e);const o=this.nodes.get(e);o&&(o.inPipeline=!0)}addAnnotation(r){this.annotations.push(r)}addNote(r){this.notes.push(r)}addAccelerator(r){this.accelerators.push(r)}addDeaccelerator(r){this.deaccelerators.push(r)}setAnnotationsBox(r,e){this.annotationsBox={x:r,y:e}}setAxes(r){this.axes={...this.axes,...r}}setSize(r,e){this.size={width:r,height:e}}getNode(r){return this.nodes.get(r)}build(){const r=[];for(const e of this.nodes.values()){if(typeof e.x!="number"||typeof e.y!="number")throw new Error(`Node "${e.label}" is missing coordinates`);r.push(e)}return{nodes:r,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}},y(R,"WardleyBuilder"),R),P=new Dt;function N(a){const r=q();return Rt(a.trim(),r)}y(N,"textSanitizer");function rt(){return q()["wardley-beta"]}y(rt,"getConfig");function ot(a,r,e,h,o,d,m,v,g){P.addNode({id:a,label:N(r),x:e,y:h,className:o,labelOffsetX:d,labelOffsetY:m,inertia:v,sourceStrategy:g})}y(ot,"addNode");function st(a,r,e=!1,h,o){P.addLink({source:a,target:r,dashed:e,label:h,flow:o})}y(st,"addLink");function nt(a,r,e){P.addTrend({nodeId:a,targetX:r,targetY:e})}y(nt,"addTrend");function it(a,r,e){P.addAnnotation({number:a,coordinates:r,text:e?N(e):void 0})}y(it,"addAnnotation");function dt(a,r,e){P.addNote({text:N(a),x:r,y:e})}y(dt,"addNote");function lt(a,r,e){P.addAccelerator({name:N(a),x:r,y:e})}y(lt,"addAccelerator");function ct(a,r,e){P.addDeaccelerator({name:N(a),x:r,y:e})}y(ct,"addDeaccelerator");function pt(a,r){P.setAnnotationsBox(a,r)}y(pt,"setAnnotationsBox");function ht(a,r){P.setSize(a,r)}y(ht,"setSize");function xt(a){P.startPipeline(a)}y(xt,"startPipeline");function ft(a,r){P.addPipelineComponent(a,r)}y(ft,"addPipelineComponent");function gt(a){const r={};a.xLabel&&(r.xLabel=N(a.xLabel)),a.yLabel&&(r.yLabel=N(a.yLabel)),a.stages&&(r.stages=a.stages.map(e=>N(e))),a.stageBoundaries&&(r.stageBoundaries=a.stageBoundaries),P.setAxes(r)}y(gt,"updateAxes");function ut(a){return P.getNode(a)}y(ut,"getNode");function yt(){return P.build()}y(yt,"getWardleyData");function mt(){P.clear(),Bt()}y(mt,"clear");var Gt={getConfig:rt,addNode:ot,addLink:st,addTrend:nt,addAnnotation:it,addNote:dt,addAccelerator:lt,addDeaccelerator:ct,setAnnotationsBox:pt,setSize:ht,startPipeline:xt,addPipelineComponent:ft,updateAxes:gt,getNode:ut,getWardleyData:yt,clear:mt,setAccTitle:Et,getAccTitle:Ct,setDiagramTitle:At,getDiagramTitle:Xt,getAccDescription:zt,setAccDescription:Lt},Ht=["Genesis","Custom Built","Product","Commodity"],qt=y(()=>{var r,e,h,o,d,m,v,g,A,M,b,L;const{themeVariables:a}=q();return{backgroundColor:((r=a.wardley)==null?void 0:r.backgroundColor)??a.background??"#fff",axisColor:((e=a.wardley)==null?void 0:e.axisColor)??"#000",axisTextColor:((h=a.wardley)==null?void 0:h.axisTextColor)??a.primaryTextColor??"#222",gridColor:((o=a.wardley)==null?void 0:o.gridColor)??"rgba(100, 100, 100, 0.2)",componentFill:((d=a.wardley)==null?void 0:d.componentFill)??"#fff",componentStroke:((m=a.wardley)==null?void 0:m.componentStroke)??"#000",componentLabelColor:((v=a.wardley)==null?void 0:v.componentLabelColor)??a.primaryTextColor??"#222",linkStroke:((g=a.wardley)==null?void 0:g.linkStroke)??"#000",evolutionStroke:((A=a.wardley)==null?void 0:A.evolutionStroke)??"#dc3545",annotationStroke:((M=a.wardley)==null?void 0:M.annotationStroke)??"#000",annotationTextColor:((b=a.wardley)==null?void 0:b.annotationTextColor)??a.primaryTextColor??"#222",annotationFill:((L=a.wardley)==null?void 0:L.annotationFill)??a.background??"#fff"}},"getTheme"),jt=y(()=>{const a=q()["wardley-beta"];return{width:(a==null?void 0:a.width)??900,height:(a==null?void 0:a.height)??600,padding:(a==null?void 0:a.padding)??48,nodeRadius:(a==null?void 0:a.nodeRadius)??6,nodeLabelOffset:(a==null?void 0:a.nodeLabelOffset)??8,axisFontSize:(a==null?void 0:a.axisFontSize)??12,labelFontSize:(a==null?void 0:a.labelFontSize)??10,showGrid:(a==null?void 0:a.showGrid)??!1,useMaxWidth:(a==null?void 0:a.useMaxWidth)??!0}},"getConfigValues"),_t=y((a,r,e,h)=>{var K,Q;et.debug(`Rendering Wardley map
2
2
  `+a);const o=jt(),d=qt(),m=o.nodeRadius*1.6,v=h.db,g=v.getWardleyData(),A=v.getDiagramTitle(),M=((K=g.size)==null?void 0:K.width)??o.width,b=((Q=g.size)==null?void 0:Q.height)??o.height,L=Tt(r);L.selectAll("*").remove(),Yt(L,b,M,o.useMaxWidth),L.attr("viewBox",`0 0 ${M} ${b}`);const S=L.append("g").attr("class","wardley-map"),j=L.append("defs");j.append("marker").attr("id",`arrow-${r}`).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",d.evolutionStroke).attr("stroke","none"),j.append("marker").attr("id",`link-arrow-end-${r}`).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",d.linkStroke).attr("stroke","none"),j.append("marker").attr("id",`link-arrow-start-${r}`).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",d.linkStroke).attr("stroke","none"),S.append("rect").attr("class","wardley-background").attr("width",M).attr("height",b).attr("fill",d.backgroundColor);const F=M-o.padding*2,O=b-o.padding*2;A&&S.append("text").attr("class","wardley-title").attr("x",M/2).attr("y",o.padding/2).attr("fill",d.axisTextColor).attr("font-size",o.axisFontSize*1.05).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(A);const C=y(t=>o.padding+t/100*F,"projectX"),E=y(t=>b-o.padding-t/100*O,"projectY"),W=S.append("g").attr("class","wardley-axes");W.append("line").attr("x1",o.padding).attr("x2",M-o.padding).attr("y1",b-o.padding).attr("y2",b-o.padding).attr("stroke",d.axisColor).attr("stroke-width",1),W.append("line").attr("x1",o.padding).attr("x2",o.padding).attr("y1",o.padding).attr("y2",b-o.padding).attr("stroke",d.axisColor).attr("stroke-width",1);const wt=g.axes.xLabel??"Evolution",bt=g.axes.yLabel??"Visibility";W.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",o.padding+F/2).attr("y",b-o.padding/4).attr("fill",d.axisTextColor).attr("font-size",o.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(wt),W.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",o.padding/3).attr("y",o.padding+O/2).attr("fill",d.axisTextColor).attr("font-size",o.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${o.padding/3} ${o.padding+O/2})`).text(bt);const I=g.axes.stages&&g.axes.stages.length>0?g.axes.stages:Ht;if(I.length>0){const t=S.append("g").attr("class","wardley-stages"),n=g.axes.stageBoundaries,s=[];if(n&&n.length===I.length){let i=0;n.forEach(p=>{s.push({start:i,end:p}),i=p})}else{const i=1/I.length;I.forEach((p,l)=>{s.push({start:l*i,end:(l+1)*i})})}I.forEach((i,p)=>{const l=s[p],x=o.padding+l.start*F,f=o.padding+l.end*F,u=(x+f)/2;p>0&&t.append("line").attr("x1",x).attr("x2",x).attr("y1",o.padding).attr("y2",b-o.padding).attr("stroke","#000").attr("stroke-width",1).attr("stroke-dasharray","5 5").attr("opacity",.8),t.append("text").attr("class","wardley-stage-label").attr("x",u).attr("y",b-o.padding/1.5).attr("fill",d.axisTextColor).attr("font-size",o.axisFontSize-2).attr("text-anchor","middle").text(i)})}if(o.showGrid){const t=S.append("g").attr("class","wardley-grid");for(let n=1;n<4;n++){const s=n/4,i=o.padding+F*s;t.append("line").attr("x1",i).attr("x2",i).attr("y1",o.padding).attr("y2",b-o.padding).attr("stroke",d.gridColor).attr("stroke-dasharray","2 6"),t.append("line").attr("x1",o.padding).attr("x2",M-o.padding).attr("y1",b-o.padding-O*s).attr("y2",b-o.padding-O*s).attr("stroke",d.gridColor).attr("stroke-dasharray","2 6")}}const c=new Map;if(g.nodes.forEach(t=>{c.set(t.id,{x:C(t.x),y:E(t.y),node:t})}),g.pipelines.length>0){const t=S.append("g").attr("class","wardley-pipelines"),n=S.append("g").attr("class","wardley-pipeline-links");g.pipelines.forEach(s=>{if(s.componentIds.length===0)return;const i=s.componentIds.map(f=>({id:f,pos:c.get(f),node:g.nodes.find(u=>u.id===f)})).filter(f=>f.pos&&f.node).sort((f,u)=>f.node.x-u.node.x);for(let f=0;f<i.length-1;f++){const u=i[f],w=i[f+1];n.append("line").attr("class","wardley-pipeline-evolution-link").attr("x1",u.pos.x).attr("y1",u.pos.y).attr("x2",w.pos.x).attr("y2",w.pos.y).attr("stroke",d.linkStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4")}let p=1/0,l=-1/0,x=0;if(s.componentIds.forEach(f=>{const u=c.get(f);u&&(p=Math.min(p,u.x),l=Math.max(l,u.x),x=u.y)}),p!==1/0&&l!==-1/0){const u=o.nodeRadius*4,w=x-u/2,$=c.get(s.nodeId);if($){const X=(p+l)/2;$.x=X,$.y=w-m/6}t.append("rect").attr("class","wardley-pipeline-box").attr("x",p-15).attr("y",w).attr("width",l-p+15*2).attr("height",u).attr("fill","none").attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}const Z=S.append("g").attr("class","wardley-links"),U=new Map;g.pipelines.forEach(t=>{U.set(t.nodeId,new Set(t.componentIds))});const J=g.links.filter(t=>{if(!c.has(t.source)||!c.has(t.target))return!1;const n=U.get(t.target);return!(n!=null&&n.has(t.source))});Z.selectAll("line").data(J).enter().append("line").attr("class",t=>`wardley-link${t.dashed?" wardley-link--dashed":""}`).attr("x1",t=>{const n=c.get(t.source),s=c.get(t.target),p=g.nodes.find(u=>u.id===t.source).isPipelineParent?m/Math.sqrt(2):o.nodeRadius,l=s.x-n.x,x=s.y-n.y,f=Math.sqrt(l*l+x*x);return n.x+l/f*p}).attr("y1",t=>{const n=c.get(t.source),s=c.get(t.target),p=g.nodes.find(u=>u.id===t.source).isPipelineParent?m/Math.sqrt(2):o.nodeRadius,l=s.x-n.x,x=s.y-n.y,f=Math.sqrt(l*l+x*x);return n.y+x/f*p}).attr("x2",t=>{const n=c.get(t.source),s=c.get(t.target),p=g.nodes.find(u=>u.id===t.target).isPipelineParent?m/Math.sqrt(2):o.nodeRadius,l=n.x-s.x,x=n.y-s.y,f=Math.sqrt(l*l+x*x);return s.x+l/f*p}).attr("y2",t=>{const n=c.get(t.source),s=c.get(t.target),p=g.nodes.find(u=>u.id===t.target).isPipelineParent?m/Math.sqrt(2):o.nodeRadius,l=n.x-s.x,x=n.y-s.y,f=Math.sqrt(l*l+x*x);return s.y+x/f*p}).attr("stroke",d.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",t=>t.dashed?"6 6":null).attr("marker-end",t=>t.flow==="forward"||t.flow==="bidirectional"?`url(#link-arrow-end-${r})`:null).attr("marker-start",t=>t.flow==="backward"||t.flow==="bidirectional"?`url(#link-arrow-start-${r})`:null),Z.selectAll("text").data(J.filter(t=>t.label)).enter().append("text").attr("class","wardley-link-label").attr("x",t=>{const n=c.get(t.source),s=c.get(t.target),i=(n.x+s.x)/2,p=s.y-n.y,l=s.x-n.x,x=Math.sqrt(l*l+p*p),f=8,u=p/x;return i+u*f}).attr("y",t=>{const n=c.get(t.source),s=c.get(t.target),i=(n.y+s.y)/2,p=s.x-n.x,l=s.y-n.y,x=Math.sqrt(p*p+l*l),f=8,u=-p/x;return i+u*f}).attr("fill",d.axisTextColor).attr("font-size",o.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",t=>{const n=c.get(t.source),s=c.get(t.target),i=(n.x+s.x)/2,p=(n.y+s.y)/2,l=s.x-n.x,x=s.y-n.y,f=Math.sqrt(l*l+x*x),u=8,w=x/f,$=-l/f,X=i+w*u,D=p+$*u;let B=Math.atan2(x,l)*180/Math.PI;return(B>90||B<-90)&&(B+=180),`rotate(${B} ${X} ${D})`}).text(t=>t.label);const kt=S.append("g").attr("class","wardley-trends"),Pt=g.trends.map(t=>{const n=c.get(t.nodeId);if(!n)return null;const s=C(t.targetX),i=E(t.targetY),p=s-n.x,l=i-n.y,x=Math.sqrt(p*p+l*l),f=o.nodeRadius+2,u=x>f?s-p/x*f:s,w=x>f?i-l/x*f:i;return{origin:n,targetX:s,targetY:i,adjustedX2:u,adjustedY2:w}}).filter(t=>t!==null);kt.selectAll("line").data(Pt).enter().append("line").attr("class","wardley-trend").attr("x1",t=>t.origin.x).attr("y1",t=>t.origin.y).attr("x2",t=>t.adjustedX2).attr("y2",t=>t.adjustedY2).attr("stroke",d.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${r})`);const z=S.append("g").attr("class","wardley-nodes").selectAll("g").data(g.nodes).enter().append("g").attr("class",t=>["wardley-node",t.className?`wardley-node--${t.className}`:""].filter(Boolean).join(" "));z.filter(t=>t.sourceStrategy==="outsource").append("circle").attr("class","wardley-outsource-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius*2).attr("fill","#666").attr("stroke",d.componentStroke).attr("stroke-width",1),z.filter(t=>t.sourceStrategy==="buy").append("circle").attr("class","wardley-buy-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius*2).attr("fill","#ccc").attr("stroke",d.componentStroke).attr("stroke-width",1),z.filter(t=>t.sourceStrategy==="build").append("circle").attr("class","wardley-build-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius*2).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);const T=z.filter(t=>t.sourceStrategy==="market");T.append("circle").attr("class","wardley-market-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius*2).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",1),z.filter(t=>!t.isPipelineParent&&t.sourceStrategy!=="market"&&t.className!=="anchor").append("circle").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius).attr("fill",d.componentFill).attr("stroke",d.componentStroke).attr("stroke-width",1);const _=o.nodeRadius*.7,k=o.nodeRadius*1.2;if(T.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x).attr("y1",t=>c.get(t.id).y-k).attr("x2",t=>c.get(t.id).x-k*Math.cos(Math.PI/6)).attr("y2",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("stroke",d.componentStroke).attr("stroke-width",1),T.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x-k*Math.cos(Math.PI/6)).attr("y1",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("x2",t=>c.get(t.id).x+k*Math.cos(Math.PI/6)).attr("y2",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("stroke",d.componentStroke).attr("stroke-width",1),T.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x+k*Math.cos(Math.PI/6)).attr("y1",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("x2",t=>c.get(t.id).x).attr("y2",t=>c.get(t.id).y-k).attr("stroke",d.componentStroke).attr("stroke-width",1),T.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y-k).attr("r",_).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),T.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x-k*Math.cos(Math.PI/6)).attr("cy",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("r",_).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),T.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x+k*Math.cos(Math.PI/6)).attr("cy",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("r",_).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),z.filter(t=>t.isPipelineParent===!0).append("rect").attr("x",t=>c.get(t.id).x-m/2).attr("y",t=>c.get(t.id).y-m/2).attr("width",m).attr("height",m).attr("fill",d.componentFill).attr("stroke",d.componentStroke).attr("stroke-width",1),z.filter(t=>t.inertia===!0).append("line").attr("class","wardley-inertia").attr("x1",t=>{const n=c.get(t.id);let s=t.isPipelineParent?m/2+15:o.nodeRadius+15;return t.sourceStrategy&&(s+=o.nodeRadius+10),n.x+s}).attr("y1",t=>{const n=c.get(t.id),s=t.isPipelineParent?m:o.nodeRadius*2;return n.y-s/2}).attr("x2",t=>{const n=c.get(t.id);let s=t.isPipelineParent?m/2+15:o.nodeRadius+15;return t.sourceStrategy&&(s+=o.nodeRadius+10),n.x+s}).attr("y2",t=>{const n=c.get(t.id),s=t.isPipelineParent?m:o.nodeRadius*2;return n.y+s/2}).attr("stroke",d.componentStroke).attr("stroke-width",6),z.append("text").attr("x",t=>{const n=c.get(t.id);if(t.className==="anchor")return t.labelOffsetX!==void 0?n.x+t.labelOffsetX:n.x;let s=o.nodeLabelOffset;t.sourceStrategy&&t.labelOffsetX===void 0&&(s+=10);const i=t.labelOffsetX??s;return n.x+i}).attr("y",t=>{const n=c.get(t.id);if(t.className==="anchor")return t.labelOffsetY!==void 0?n.y+t.labelOffsetY:n.y-3;let s=-o.nodeLabelOffset;t.sourceStrategy&&t.labelOffsetY===void 0&&(s-=10);const i=t.labelOffsetY??s;return n.y+i}).attr("class","wardley-node-label").attr("fill",t=>t.className==="evolved"?d.evolutionStroke:t.className==="anchor"?"#000":d.componentLabelColor).attr("font-size",o.labelFontSize).attr("font-weight",t=>t.className==="anchor"?"bold":"normal").attr("text-anchor",t=>t.className==="anchor"?"middle":"start").attr("dominant-baseline",t=>t.className==="anchor"?"middle":"auto").text(t=>t.label),g.annotations.length>0){const t=S.append("g").attr("class","wardley-annotations");if(g.annotations.forEach(n=>{const s=n.coordinates.map(i=>({x:C(i.x),y:E(i.y)}));if(s.length>1)for(let i=0;i<s.length-1;i++)t.append("line").attr("class","wardley-annotation-line").attr("x1",s[i].x).attr("y1",s[i].y).attr("x2",s[i+1].x).attr("y2",s[i+1].y).attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("stroke-dasharray","4 4");s.forEach(i=>{const p=t.append("g").attr("class","wardley-annotation");p.append("circle").attr("cx",i.x).attr("cy",i.y).attr("r",10).attr("fill","white").attr("stroke",d.axisColor).attr("stroke-width",1.5),p.append("text").attr("x",i.x).attr("y",i.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",d.axisTextColor).attr("font-weight","bold").text(n.number)})}),g.annotationsBox){let n=C(g.annotationsBox.x),s=E(g.annotationsBox.y);const i=10,p=16,l=11,x=t.append("g").attr("class","wardley-annotations-box"),f=[...g.annotations].filter(w=>w.text).sort((w,$)=>w.number-$.number),u=[];if(f.forEach((w,$)=>{const X=x.append("text").attr("x",n+i).attr("y",s+i+($+1)*p).attr("font-size",l).attr("fill",d.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${w.number}. ${w.text}`);u.push(X)}),u.length>0){let w=0,$=0;u.forEach(V=>{const G=V.node(),Mt=G.getComputedTextLength();w=Math.max(w,Mt);const Nt=G.getBBox();$=Math.max($,Nt.height)});const X=w+i*2+105,D=f.length*p+i*2+$/2,B=o.padding,vt=M-o.padding-X,St=o.padding,$t=b-o.padding-D;n=Math.max(B,Math.min(n,vt)),s=Math.max(St,Math.min(s,$t)),u.forEach((V,G)=>{V.attr("x",n+i).attr("y",s+i+(G+1)*p)}),x.insert("rect","text").attr("x",n).attr("y",s).attr("width",X).attr("height",D).attr("fill","white").attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(g.notes.length>0){const t=S.append("g").attr("class","wardley-notes");g.notes.forEach(n=>{const s=C(n.x),i=E(n.y);t.append("text").attr("x",s).attr("y",i).attr("text-anchor","start").attr("font-size",11).attr("fill",d.axisTextColor).attr("font-weight","bold").text(n.text)})}if(g.accelerators.length>0){const t=S.append("g").attr("class","wardley-accelerators");g.accelerators.forEach(n=>{const s=C(n.x),i=E(n.y),p=60,l=30,x=20,f=`
3
3
  M ${s} ${i-l/2}
4
4
  L ${s+p-x} ${i-l/2}
@@ -18,4 +18,4 @@ import{s as Lt,g as zt,p as Xt,o as At,a as Ct,b as Et,_ as y,l as et,H as Tt,d
18
18
  L ${s+p} ${i+l/2}
19
19
  Z
20
20
  `;t.append("path").attr("d",f).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",1),t.append("text").attr("x",s+p/2).attr("y",i+l/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",d.axisTextColor).attr("font-weight","bold").text(n.name)})}},"draw"),Vt={draw:_t},ae={parser:at,db:Gt,renderer:Vt,styles:y(()=>"","styles")};export{ae as diagram};
21
- //# sourceMappingURL=wardleyDiagram-NUSXRM2D-CewxpYfR.js.map
21
+ //# sourceMappingURL=wardleyDiagram-NUSXRM2D-MYKM6CF8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wardleyDiagram-NUSXRM2D-CewxpYfR.js","sources":["../../../../node_modules/.pnpm/mermaid@11.14.0/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"],"names":["toPercent","__name","value","context","normalized","toCoordinates","visibility","evolution","getFlowFromPort","port","extractFlowFromArrow","arrow","labelMatch","flowLabel","populateDb","ast","db","populateCommonDb","stages","stage","stageBoundaries","anchor","coords","component","labelOffsetX","labelOffsetY","sourceStrategy","_a","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","nodes","builder","textSanitizer","text","config","getConfig","sanitizeText","getConfig2","addNode","className","inertia","addLink","sourceId","targetId","dashed","addTrend","targetX","targetY","addAnnotation","number","coordinates","addNote","addAccelerator","name","addDeaccelerator","setAnnotationsBox","setSize","startPipeline","addPipelineComponent","updateAxes","sanitized","getNode","getWardleyData","clear2","clear","wardleyDb_default","setAccTitle","getAccTitle","setDiagramTitle","getDiagramTitle","getAccDescription","setAccDescription","DEFAULT_STAGES","getTheme","themeVariables","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","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","pipelineComponents","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","diagram"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"wardleyDiagram-NUSXRM2D-MYKM6CF8.js","sources":["../../../../node_modules/.pnpm/mermaid@11.14.0/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"],"names":["toPercent","__name","value","context","normalized","toCoordinates","visibility","evolution","getFlowFromPort","port","extractFlowFromArrow","arrow","labelMatch","flowLabel","populateDb","ast","db","populateCommonDb","stages","stage","stageBoundaries","anchor","coords","component","labelOffsetX","labelOffsetY","sourceStrategy","_a","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","nodes","builder","textSanitizer","text","config","getConfig","sanitizeText","getConfig2","addNode","className","inertia","addLink","sourceId","targetId","dashed","addTrend","targetX","targetY","addAnnotation","number","coordinates","addNote","addAccelerator","name","addDeaccelerator","setAnnotationsBox","setSize","startPipeline","addPipelineComponent","updateAxes","sanitized","getNode","getWardleyData","clear2","clear","wardleyDb_default","setAccTitle","getAccTitle","setDiagramTitle","getDiagramTitle","getAccDescription","setAccDescription","DEFAULT_STAGES","getTheme","themeVariables","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","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","pipelineComponents","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","diagram"],"mappings":"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","x_google_ignoreList":[0]}