79 lines
25 KiB
JavaScript
Raw Permalink Normal View History

2026-05-31 13:21:13 +02:00
import{a as pt}from"./chunk-JQRUD6KW.mjs";import{a as ct}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{a as gt}from"./chunk-LRIF4GLE.mjs";import{o as Z}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{O as rt,S as at,T as nt,U as ot,V as st,W as it,X as lt,Y as dt,_ as Y,h as tt,t as et}from"./chunk-67TQ5CYL.mjs";import{b as G}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import{a as m}from"./chunk-AQ6EADP3.mjs";var j=m((n,a)=>{let e=n<=1?n*100:n;if(e<0||e>100)throw new Error(`${a} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${n}`);return e},"toPercent"),L=m((n,a,e)=>({x:j(a,`${e} evolution`),y:j(n,`${e} visibility`)}),"toCoordinates"),ut=m(n=>{if(n){if(n==="+<>")return"bidirectional";if(n==="+<")return"backward";if(n==="+>")return"forward"}},"getFlowFromPort"),$t=m(n=>{if(!n?.startsWith("+"))return{};let e=/^\+'([^']*)'/.exec(n)?.[1];return n.includes("<>")?{flow:"bidirectional",label:e}:n.includes("<")?{flow:"backward",label:e}:n.includes(">")?{flow:"forward",label:e}:{label:e}},"extractFlowFromArrow"),Nt=m((n,a)=>{if(pt(n,a),n.size&&a.setSize(n.size.width,n.size.height),n.evolution){let e=n.evolution.stages.map(r=>r.secondName?`${r.name.trim()} / ${r.secondName.trim()}`:r.name.trim()),u=n.evolution.stages.filter(r=>r.boundary!==void 0).map(r=>r.boundary);a.updateAxes({stages:e,stageBoundaries:u})}if(n.anchors.forEach(e=>{let u=L(e.visibility,e.evolution,`Anchor "${e.name}"`);a.addNode(e.name,e.name,u.x,u.y,"anchor")}),n.components.forEach(e=>{let u=L(e.visibility,e.evolution,`Component "${e.name}"`),r=e.label?(e.label.negX?-1:1)*e.label.offsetX:void 0,l=e.label?(e.label.negY?-1:1)*e.label.offsetY:void 0,h=e.decorator?.strategy;a.addNode(e.name,e.name,u.x,u.y,"component",r,l,e.inertia,h)}),n.notes.forEach(e=>{let u=L(e.visibility,e.evolution,`Note "${e.text}"`);a.addNote(e.text,u.x,u.y)}),n.pipelines.forEach(e=>{let u=a.getNode(e.parent);if(!u||typeof u.y!="number")throw new Error(`Pipeline "${e.parent}" must reference an existing component with coordinates.`);let r=u.y;a.startPipeline(e.parent),e.components.forEach(l=>{let h=`${e.parent}_${l.name}`,S=l.label?(l.label.negX?-1:1)*l.label.offsetX:void 0,y=l.label?(l.label.negY?-1:1)*l.label.offsetY:void 0,I=j(l.evolution,`Pipeline component "${l.name}" evolution`);a.addNode(h,l.name,I,r,"pipeline-component",S,y),a.addPipelineComponent(e.parent,h)})}),n.links.forEach(e=>{let u=!!e.arrow&&(e.arrow.includes("-.->")||e.arrow.includes(".-.")),r=ut(e.fromPort)??ut(e.toPort),{flow:l,label:h}=$t(e.arrow);!r&&l&&(r=l);let S=e.linkLabel,y=h??S;a.addLink(a.resolveNodeId(e.from),a.resolveNodeId(e.to),u,y,r)}),n.evolves.forEach(e=>{let u=a.getNode(e.component);if(u?.y!==void 0){let r=j(e.target,`Evolve target for "${e.component}"`);a.addTrend(e.component,r,u.y)}}),n.annotations.length>0){let e=n.annotations[0],u=L(e.x,e.y,"Annotations box");a.setAnnotationsBox(u.x,u.y)}n.annotation.forEach(e=>{let u=L(e.x,e.y,`Annotation ${e.number}`);a.addAnnotation(e.number,[{x:u.x,y:u.y}],e.text)}),n.accelerators.forEach(e=>{let u=L(e.x,e.y,`Accelerator "${e.name}"`);a.addAccelerator(e.name,u.x,u.y)}),n.deaccelerators.forEach(e=>{let u=L(e.x,e.y,`Deaccelerator "${e.name}"`);a.addDeaccelerator(e.name,u.x,u.y)})},"populateDb"),U={parser:{yy:void 0},parse:m(async n=>{let a=await ct("wardley",n);G.debug(a);let e=U.parser?.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.");Nt(a,e)},"parse")};var q=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={}}static{m(this,"WardleyBuilder")}addNode(a){let e=thi
`+n);let r=Vt(),l=Ht(),h=r.nodeRadius*1.6,S=u.db,y=S.getWardleyData(),I=S.getDiagramTitle(),$=y.size?.width??r.width,k=y.size?.height??r.height,X=gt(a);X.selectAll("*").remove(),rt(X,k,$,r.useMaxWidth),X.attr("viewBox",`0 0 ${$} ${k}`);let W=X.append("g").attr("class","wardley-map"),H=X.append("defs");H.append("marker").attr("id",`arrow-${a}`).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",l.evolutionStroke).attr("stroke","none"),H.append("marker").attr("id",`link-arrow-end-${a}`).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",l.linkStroke).attr("stroke","none"),H.append("marker").attr("id",`link-arrow-start-${a}`).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",l.linkStroke).attr("stroke","none"),W.append("rect").attr("class","wardley-background").attr("width",$).attr("height",k).attr("fill",l.backgroundColor);let B=$-r.padding*2,E=k-r.padding*2;I&&W.append("text").attr("class","wardley-title").attr("x",$/2).attr("y",r.padding/2).attr("fill",l.axisTextColor).attr("font-size",r.axisFontSize*1.05).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(I);let v=m(t=>r.padding+t/100*B,"projectX"),T=m(t=>k-r.padding-t/100*E,"projectY"),O=W.append("g").attr("class","wardley-axes");O.append("line").attr("x1",r.padding).attr("x2",$-r.padding).attr("y1",k-r.padding).attr("y2",k-r.padding).attr("stroke",l.axisColor).attr("stroke-width",1),O.append("line").attr("x1",r.padding).attr("x2",r.padding).attr("y1",r.padding).attr("y2",k-r.padding).attr("stroke",l.axisColor).attr("stroke-width",1);let mt=y.axes.xLabel??"Evolution",ht=y.axes.yLabel??"Visibility";O.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",r.padding+B/2).attr("y",k-r.padding/4).attr("fill",l.axisTextColor).attr("font-size",r.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(mt),O.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",r.padding/3).attr("y",r.padding+E/2).attr("fill",l.axisTextColor).attr("font-size",r.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${r.padding/3} ${r.padding+E/2})`).text(ht);let D=y.axes.stages&&y.axes.stages.length>0?y.axes.stages:qt;if(D.length>0){let t=W.append("g").attr("class","wardley-stages"),s=y.axes.stageBoundaries,o=[];if(s&&s.length===D.length){let i=0;s.forEach(p=>{o.push({start:i,end:p}),i=p})}else{let i=1/D.length;D.forEach((p,d)=>{o.push({start:d*i,end:(d+1)*i})})}D.forEach((i,p)=>{let d=o[p],g=r.padding+d.start*B,f=r.padding+d.end*B,x=(g+f)/2;p>0&&t.append("line").attr("x1",g).attr("x2",g).attr("y1",r.padding).attr("y2",k-r.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",x).attr("y",k-r.padding/1.5).attr("fill",l.axisTextColor).attr("font-size",r.axisFontSize-2).attr("text-anchor","middle").text(i)})}if(r.showGrid){let t=W.append("g").attr("class","wardley-grid");for(let s=1;s<4;s++){let o=s/4,i=r.padding+B*o;t.append("line").attr("x1",i).attr("x2",i).attr("y1",r.padding).attr("y2",k-r.padding).attr("stroke",l.gridColor).attr("stroke-dasharray","2 6"),t.append("line").attr("x1",r.padding).attr("x2",$-r.padding).attr("y1",k-r.padding-E*o).attr("y2",k-r.padding-E*o).attr("stroke",l.gridColor).attr("stroke-dasharray","2 6")}}let c=new Map;if(y.nodes.forEach(t=>{c.set(t.id,{x:v(t.x),y:T(t.y),node:t})}),y.pipelines.length>0){let t=W.append("g").attr("class","wardley-pipelines"),s=W.append("g").attr("class","wardley-pipeline-links");y.pipelines.forEach(o=>{if(o.componentIds.length===0)return;let i=o.componentIds.map
M ${o} ${i-d/2}
L ${o+p-g} ${i-d/2}
L ${o+p-g} ${i-d/2-8}
L ${o+p} ${i}
L ${o+p-g} ${i+d/2+8}
L ${o+p-g} ${i+d/2}
L ${o} ${i+d/2}
Z
`;t.append("path").attr("d",f).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",1),t.append("text").attr("x",o+p/2).attr("y",i+d/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",l.axisTextColor).attr("font-weight","bold").text(s.name)})}if(y.deaccelerators.length>0){let t=W.append("g").attr("class","wardley-deaccelerators");y.deaccelerators.forEach(s=>{let o=v(s.x),i=T(s.y),p=60,d=30,g=20,f=`
M ${o+p} ${i-d/2}
L ${o+g} ${i-d/2}
L ${o+g} ${i-d/2-8}
L ${o} ${i}
L ${o+g} ${i+d/2+8}
L ${o+g} ${i+d/2}
L ${o+p} ${i+d/2}
Z
`;t.append("path").attr("d",f).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",1),t.append("text").attr("x",o+p/2).attr("y",i+d/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",l.axisTextColor).attr("font-weight","bold").text(s.name)})}},"draw"),yt={draw:_t};var xt=m(({wardley:n}={})=>{let a=tt(),e=et(),u=Z(a,e.themeVariables),r=Z(u.wardley,n);return`
.wardley-background {
fill: ${r.backgroundColor};
}
.wardley-axes line, .wardley-axes path {
stroke: ${r.axisColor};
}
.wardley-axis-label {
fill: ${r.axisTextColor};
}
.wardley-stage-label {
fill: ${r.axisTextColor};
}
.wardley-grid line {
stroke: ${r.gridColor};
}
.wardley-node circle {
fill: ${r.componentFill};
stroke: ${r.componentStroke};
}
.wardley-node-label {
fill: ${r.componentLabelColor};
}
.wardley-link {
stroke: ${r.linkStroke};
}
.wardley-link--dashed {
stroke-dasharray: 4 4;
}
.wardley-link-label {
fill: ${r.axisTextColor};
}
.wardley-trend line {
stroke: ${r.evolutionStroke};
}
.wardley-annotation-line {
stroke: ${r.annotationStroke};
}
.wardley-annotation circle {
fill: ${r.annotationFill};
stroke: ${r.annotationStroke};
}
.wardley-annotation text {
fill: ${r.annotationTextColor};
}
.wardley-annotations-box rect {
fill: ${r.annotationFill};
stroke: ${r.annotationStroke};
}
.wardley-annotations-box text {
fill: ${r.annotationTextColor};
}
.wardley-pipeline-box {
stroke: ${r.componentStroke};
}
.wardley-notes text {
fill: ${r.axisTextColor};
}
`},"styles");var We={parser:U,db:ft,renderer:yt,styles:xt};export{We as diagram};