Files
vac.dev/assets/js/3272.ff016770.js
2026-05-08 07:42:49 +00:00

1 line
24 KiB
JavaScript

"use strict";(self.webpackChunkresearch_logos_co=self.webpackChunkresearch_logos_co||[]).push([[3272],{48252:(t,e,a)=>{function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(40797).K2)(r,"populateCommonDb")},53272:(t,e,a)=>{a.d(e,{diagram:()=>I});var r=a(38342),n=a(48252),o=a(17726),i=a(40797),s=a(78731),d=(0,i.K2)(((t,e)=>{const a=t<=1?100*t:t;if(a<0||a>100)throw new Error(`${e} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${t}`);return a}),"toPercent"),l=(0,i.K2)(((t,e,a)=>({x:d(e,`${a} evolution`),y:d(t,`${a} visibility`)})),"toCoordinates"),c=(0,i.K2)((t=>{if(t)return"+<>"===t?"bidirectional":"+<"===t?"backward":"+>"===t?"forward":void 0}),"getFlowFromPort"),p=(0,i.K2)((t=>{if(!t?.startsWith("+"))return{};const e=/^\+'([^']*)'/.exec(t),a=e?.[1];return t.includes("<>")?{flow:"bidirectional",label:a}:t.includes("<")?{flow:"backward",label:a}:t.includes(">")?{flow:"forward",label:a}:{label:a}}),"extractFlowFromArrow"),h=(0,i.K2)(((t,e)=>{if((0,n.S)(t,e),t.size&&e.setSize(t.size.width,t.size.height),t.evolution){const a=t.evolution.stages.map((t=>t.secondName?`${t.name.trim()} / ${t.secondName.trim()}`:t.name.trim())),r=t.evolution.stages.filter((t=>void 0!==t.boundary)).map((t=>t.boundary));e.updateAxes({stages:a,stageBoundaries:r})}if(t.anchors.forEach((t=>{const a=l(t.visibility,t.evolution,`Anchor "${t.name}"`);e.addNode(t.name,t.name,a.x,a.y,"anchor")})),t.components.forEach((t=>{const a=l(t.visibility,t.evolution,`Component "${t.name}"`),r=t.label?(t.label.negX?-1:1)*t.label.offsetX:void 0,n=t.label?(t.label.negY?-1:1)*t.label.offsetY:void 0,o=t.decorator?.strategy;e.addNode(t.name,t.name,a.x,a.y,"component",r,n,t.inertia,o)})),t.notes.forEach((t=>{const a=l(t.visibility,t.evolution,`Note "${t.text}"`);e.addNote(t.text,a.x,a.y)})),t.pipelines.forEach((t=>{const a=e.getNode(t.parent);if(!a||"number"!=typeof a.y)throw new Error(`Pipeline "${t.parent}" must reference an existing component with coordinates.`);const r=a.y;e.startPipeline(t.parent),t.components.forEach((a=>{const n=`${t.parent}_${a.name}`,o=a.label?(a.label.negX?-1:1)*a.label.offsetX:void 0,i=a.label?(a.label.negY?-1:1)*a.label.offsetY:void 0,s=d(a.evolution,`Pipeline component "${a.name}" evolution`);e.addNode(n,a.name,s,r,"pipeline-component",o,i),e.addPipelineComponent(t.parent,n)}))})),t.links.forEach((t=>{const a=!!t.arrow&&(t.arrow.includes("-.->")||t.arrow.includes(".-."));let r=c(t.fromPort)??c(t.toPort);const{flow:n,label:o}=p(t.arrow);!r&&n&&(r=n);const i=t.linkLabel,s=o??i;e.addLink(t.from,t.to,a,s,r)})),t.evolves.forEach((t=>{const a=e.getNode(t.component);if(void 0!==a?.y){const r=d(t.target,`Evolve target for "${t.component}"`);e.addTrend(t.component,r,a.y)}})),t.annotations.length>0){const a=t.annotations[0],r=l(a.x,a.y,"Annotations box");e.setAnnotationsBox(r.x,r.y)}t.annotation.forEach((t=>{const a=l(t.x,t.y,`Annotation ${t.number}`);e.addAnnotation(t.number,[{x:a.x,y:a.y}],t.text)})),t.accelerators.forEach((t=>{const a=l(t.x,t.y,`Accelerator "${t.name}"`);e.addAccelerator(t.name,a.x,a.y)})),t.deaccelerators.forEach((t=>{const a=l(t.x,t.y,`Deaccelerator "${t.name}"`);e.addDeaccelerator(t.name,a.x,a.y)}))}),"populateDb"),x={parser:{yy:void 0},parse:(0,i.K2)((async t=>{const e=await(0,s.qg)("wardley",t);i.Rm.debug(e);const a=x.parser?.yy;if(!a||"function"!=typeof a.addNode)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.");h(e,a)}),"parse")},g=new 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{(0,i.K2)(this,"WardleyBuilder")}addNode(t){const e=this.nodes.get(t.id)??{id:t.id,label:t.label},a={...e,...t,className:t.className??e.className,labelOffsetX:t.labelOffsetX??e.labelOffsetX,labelOffsetY:t.labelOffsetY??e.labelOffsetY};this.nodes.set(t.id,a)}addLink(t){this.links.push(t)}addTrend(t){this.trends.set(t.nodeId,t)}startPipeline(t){this.pipelines.set(t,{nodeId:t,componentIds:[]});const e=this.nodes.get(t);e&&(e.isPipelineParent=!0)}addPipelineComponent(t,e){const a=this.pipelines.get(t);a&&a.componentIds.push(e);const r=this.nodes.get(e);r&&(r.inPipeline=!0)}addAnnotation(t){this.annotations.push(t)}addNote(t){this.notes.push(t)}addAccelerator(t){this.accelerators.push(t)}addDeaccelerator(t){this.deaccelerators.push(t)}setAnnotationsBox(t,e){this.annotationsBox={x:t,y:e}}setAxes(t){this.axes={...this.axes,...t}}setSize(t,e){this.size={width:t,height:e}}getNode(t){return this.nodes.get(t)}build(){const t=[];for(const e of this.nodes.values()){if("number"!=typeof e.x||"number"!=typeof e.y)throw new Error(`Node "${e.label}" is missing coordinates`);t.push(e)}return{nodes:t,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}};function y(t){const e=(0,o.D7)();return(0,o.jZ)(t.trim(),e)}function f(){return(0,o.D7)()["wardley-beta"]}function u(t,e,a,r,n,o,i,s,d){g.addNode({id:t,label:y(e),x:a,y:r,className:n,labelOffsetX:o,labelOffsetY:i,inertia:s,sourceStrategy:d})}function m(t,e,a=!1,r,n){g.addLink({source:t,target:e,dashed:a,label:r,flow:n})}function w(t,e,a){g.addTrend({nodeId:t,targetX:e,targetY:a})}function k(t,e,a){g.addAnnotation({number:t,coordinates:e,text:a?y(a):void 0})}function b(t,e,a){g.addNote({text:y(t),x:e,y:a})}function $(t,e,a){g.addAccelerator({name:y(t),x:e,y:a})}function M(t,e,a){g.addDeaccelerator({name:y(t),x:e,y:a})}function S(t,e){g.setAnnotationsBox(t,e)}function v(t,e){g.setSize(t,e)}function P(t){g.startPipeline(t)}function C(t,e){g.addPipelineComponent(t,e)}function L(t){const e={};t.xLabel&&(e.xLabel=y(t.xLabel)),t.yLabel&&(e.yLabel=y(t.yLabel)),t.stages&&(e.stages=t.stages.map((t=>y(t)))),t.stageBoundaries&&(e.stageBoundaries=t.stageBoundaries),g.setAxes(e)}function z(t){return g.getNode(t)}function N(){return g.build()}function A(){g.clear(),(0,o.IU)()}(0,i.K2)(y,"textSanitizer"),(0,i.K2)(f,"getConfig"),(0,i.K2)(u,"addNode"),(0,i.K2)(m,"addLink"),(0,i.K2)(w,"addTrend"),(0,i.K2)(k,"addAnnotation"),(0,i.K2)(b,"addNote"),(0,i.K2)($,"addAccelerator"),(0,i.K2)(M,"addDeaccelerator"),(0,i.K2)(S,"setAnnotationsBox"),(0,i.K2)(v,"setSize"),(0,i.K2)(P,"startPipeline"),(0,i.K2)(C,"addPipelineComponent"),(0,i.K2)(L,"updateAxes"),(0,i.K2)(z,"getNode"),(0,i.K2)(N,"getWardleyData"),(0,i.K2)(A,"clear");var T={getConfig:f,addNode:u,addLink:m,addTrend:w,addAnnotation:k,addNote:b,addAccelerator:$,addDeaccelerator:M,setAnnotationsBox:S,setSize:v,startPipeline:P,addPipelineComponent:C,updateAxes:L,getNode:z,getWardleyData:N,clear:A,setAccTitle:o.SV,getAccTitle:o.iN,setDiagramTitle:o.ke,getDiagramTitle:o.ab,getAccDescription:o.m7,setAccDescription:o.EI},E=["Genesis","Custom Built","Product","Commodity"],K=(0,i.K2)((()=>{const{themeVariables:t}=(0,o.D7)();return{backgroundColor:t.wardley?.backgroundColor??t.background??"#fff",axisColor:t.wardley?.axisColor??"#000",axisTextColor:t.wardley?.axisTextColor??t.primaryTextColor??"#222",gridColor:t.wardley?.gridColor??"rgba(100, 100, 100, 0.2)",componentFill:t.wardley?.componentFill??"#fff",componentStroke:t.wardley?.componentStroke??"#000",componentLabelColor:t.wardley?.componentLabelColor??t.primaryTextColor??"#222",linkStroke:t.wardley?.linkStroke??"#000",evolutionStroke:t.wardley?.evolutionStroke??"#dc3545",annotationStroke:t.wardley?.annotationStroke??"#000",annotationTextColor:t.wardley?.annotationTextColor??t.primaryTextColor??"#222",annotationFill:t.wardley?.annotationFill??t.background??"#fff"}}),"getTheme"),B=(0,i.K2)((()=>{const t=(0,o.D7)()["wardley-beta"];return{width:t?.width??900,height:t?.height??600,padding:t?.padding??48,nodeRadius:t?.nodeRadius??6,nodeLabelOffset:t?.nodeLabelOffset??8,axisFontSize:t?.axisFontSize??12,labelFontSize:t?.labelFontSize??10,showGrid:t?.showGrid??!1,useMaxWidth:t?.useMaxWidth??!0}}),"getConfigValues"),I={parser:x,db:T,renderer:{draw:(0,i.K2)(((t,e,a,n)=>{i.Rm.debug("Rendering Wardley map\n"+t);const s=B(),d=K(),l=1.6*s.nodeRadius,c=n.db,p=c.getWardleyData(),h=c.getDiagramTitle(),x=p.size?.width??s.width,g=p.size?.height??s.height,y=(0,r.D)(e);y.selectAll("*").remove(),(0,o.a$)(y,g,x,s.useMaxWidth),y.attr("viewBox",`0 0 ${x} ${g}`);const f=y.append("g").attr("class","wardley-map"),u=y.append("defs");u.append("marker").attr("id",`arrow-${e}`).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"),u.append("marker").attr("id",`link-arrow-end-${e}`).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"),u.append("marker").attr("id",`link-arrow-start-${e}`).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"),f.append("rect").attr("class","wardley-background").attr("width",x).attr("height",g).attr("fill",d.backgroundColor);const m=x-2*s.padding,w=g-2*s.padding;h&&f.append("text").attr("class","wardley-title").attr("x",x/2).attr("y",s.padding/2).attr("fill",d.axisTextColor).attr("font-size",1.05*s.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);const k=(0,i.K2)((t=>s.padding+t/100*m),"projectX"),b=(0,i.K2)((t=>g-s.padding-t/100*w),"projectY"),$=f.append("g").attr("class","wardley-axes");$.append("line").attr("x1",s.padding).attr("x2",x-s.padding).attr("y1",g-s.padding).attr("y2",g-s.padding).attr("stroke",d.axisColor).attr("stroke-width",1),$.append("line").attr("x1",s.padding).attr("x2",s.padding).attr("y1",s.padding).attr("y2",g-s.padding).attr("stroke",d.axisColor).attr("stroke-width",1);const M=p.axes.xLabel??"Evolution",S=p.axes.yLabel??"Visibility";$.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",s.padding+m/2).attr("y",g-s.padding/4).attr("fill",d.axisTextColor).attr("font-size",s.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(M),$.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",s.padding/3).attr("y",s.padding+w/2).attr("fill",d.axisTextColor).attr("font-size",s.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${s.padding/3} ${s.padding+w/2})`).text(S);const v=p.axes.stages&&p.axes.stages.length>0?p.axes.stages:E;if(v.length>0){const t=f.append("g").attr("class","wardley-stages"),e=p.axes.stageBoundaries,a=[];if(e&&e.length===v.length){let t=0;e.forEach((e=>{a.push({start:t,end:e}),t=e}))}else{const t=1/v.length;v.forEach(((e,r)=>{a.push({start:r*t,end:(r+1)*t})}))}v.forEach(((e,r)=>{const n=a[r],o=s.padding+n.start*m,i=(o+(s.padding+n.end*m))/2;r>0&&t.append("line").attr("x1",o).attr("x2",o).attr("y1",s.padding).attr("y2",g-s.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",i).attr("y",g-s.padding/1.5).attr("fill",d.axisTextColor).attr("font-size",s.axisFontSize-2).attr("text-anchor","middle").text(e)}))}if(s.showGrid){const t=f.append("g").attr("class","wardley-grid");for(let e=1;e<4;e++){const a=e/4,r=s.padding+m*a;t.append("line").attr("x1",r).attr("x2",r).attr("y1",s.padding).attr("y2",g-s.padding).attr("stroke",d.gridColor).attr("stroke-dasharray","2 6"),t.append("line").attr("x1",s.padding).attr("x2",x-s.padding).attr("y1",g-s.padding-w*a).attr("y2",g-s.padding-w*a).attr("stroke",d.gridColor).attr("stroke-dasharray","2 6")}}const P=new Map;if(p.nodes.forEach((t=>{P.set(t.id,{x:k(t.x),y:b(t.y),node:t})})),p.pipelines.length>0){const t=f.append("g").attr("class","wardley-pipelines"),e=f.append("g").attr("class","wardley-pipeline-links");p.pipelines.forEach((a=>{if(0===a.componentIds.length)return;const r=a.componentIds.map((t=>({id:t,pos:P.get(t),node:p.nodes.find((e=>e.id===t))}))).filter((t=>t.pos&&t.node)).sort(((t,e)=>t.node.x-e.node.x));for(let t=0;t<r.length-1;t++){const a=r[t],n=r[t+1];e.append("line").attr("class","wardley-pipeline-evolution-link").attr("x1",a.pos.x).attr("y1",a.pos.y).attr("x2",n.pos.x).attr("y2",n.pos.y).attr("stroke",d.linkStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4")}let n=1/0,o=-1/0,i=0;if(a.componentIds.forEach((t=>{const e=P.get(t);e&&(n=Math.min(n,e.x),o=Math.max(o,e.x),i=e.y)})),n!==1/0&&o!==-1/0){const e=15,r=4*s.nodeRadius,c=i-r/2,p=P.get(a.nodeId);if(p){const t=(n+o)/2;p.x=t,p.y=c-l/6}t.append("rect").attr("class","wardley-pipeline-box").attr("x",n-e).attr("y",c).attr("width",o-n+2*e).attr("height",r).attr("fill","none").attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}))}const C=f.append("g").attr("class","wardley-links"),L=new Map;p.pipelines.forEach((t=>{L.set(t.nodeId,new Set(t.componentIds))}));const z=p.links.filter((t=>{if(!P.has(t.source)||!P.has(t.target))return!1;const e=L.get(t.target);return!e?.has(t.source)}));C.selectAll("line").data(z).enter().append("line").attr("class",(t=>"wardley-link"+(t.dashed?" wardley-link--dashed":""))).attr("x1",(t=>{const e=P.get(t.source),a=P.get(t.target),r=p.nodes.find((e=>e.id===t.source)).isPipelineParent?l/Math.sqrt(2):s.nodeRadius,n=a.x-e.x,o=a.y-e.y,i=Math.sqrt(n*n+o*o);return e.x+n/i*r})).attr("y1",(t=>{const e=P.get(t.source),a=P.get(t.target),r=p.nodes.find((e=>e.id===t.source)).isPipelineParent?l/Math.sqrt(2):s.nodeRadius,n=a.x-e.x,o=a.y-e.y,i=Math.sqrt(n*n+o*o);return e.y+o/i*r})).attr("x2",(t=>{const e=P.get(t.source),a=P.get(t.target),r=p.nodes.find((e=>e.id===t.target)).isPipelineParent?l/Math.sqrt(2):s.nodeRadius,n=e.x-a.x,o=e.y-a.y,i=Math.sqrt(n*n+o*o);return a.x+n/i*r})).attr("y2",(t=>{const e=P.get(t.source),a=P.get(t.target),r=p.nodes.find((e=>e.id===t.target)).isPipelineParent?l/Math.sqrt(2):s.nodeRadius,n=e.x-a.x,o=e.y-a.y,i=Math.sqrt(n*n+o*o);return a.y+o/i*r})).attr("stroke",d.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",(t=>t.dashed?"6 6":null)).attr("marker-end",(t=>"forward"===t.flow||"bidirectional"===t.flow?`url(#link-arrow-end-${e})`:null)).attr("marker-start",(t=>"backward"===t.flow||"bidirectional"===t.flow?`url(#link-arrow-start-${e})`:null)),C.selectAll("text").data(z.filter((t=>t.label))).enter().append("text").attr("class","wardley-link-label").attr("x",(t=>{const e=P.get(t.source),a=P.get(t.target),r=(e.x+a.x)/2,n=a.y-e.y,o=a.x-e.x;return r+8*(n/Math.sqrt(o*o+n*n))})).attr("y",(t=>{const e=P.get(t.source),a=P.get(t.target),r=(e.y+a.y)/2,n=a.x-e.x,o=a.y-e.y;return r+8*(-n/Math.sqrt(n*n+o*o))})).attr("fill",d.axisTextColor).attr("font-size",s.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",(t=>{const e=P.get(t.source),a=P.get(t.target),r=(e.x+a.x)/2,n=(e.y+a.y)/2,o=a.x-e.x,i=a.y-e.y,s=Math.sqrt(o*o+i*i),d=r+8*(i/s),l=n+8*(-o/s);let c=180*Math.atan2(i,o)/Math.PI;return(c>90||c<-90)&&(c+=180),`rotate(${c} ${d} ${l})`})).text((t=>t.label));const N=f.append("g").attr("class","wardley-trends"),A=p.trends.map((t=>{const e=P.get(t.nodeId);if(!e)return null;const a=k(t.targetX),r=b(t.targetY),n=a-e.x,o=r-e.y,i=Math.sqrt(n*n+o*o),d=s.nodeRadius+2;return{origin:e,targetX:a,targetY:r,adjustedX2:i>d?a-n/i*d:a,adjustedY2:i>d?r-o/i*d:r}})).filter((t=>null!==t));N.selectAll("line").data(A).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-${e})`);const T=f.append("g").attr("class","wardley-nodes").selectAll("g").data(p.nodes).enter().append("g").attr("class",(t=>["wardley-node",t.className?`wardley-node--${t.className}`:""].filter(Boolean).join(" ")));T.filter((t=>"outsource"===t.sourceStrategy)).append("circle").attr("class","wardley-outsource-overlay").attr("cx",(t=>P.get(t.id).x)).attr("cy",(t=>P.get(t.id).y)).attr("r",2*s.nodeRadius).attr("fill","#666").attr("stroke",d.componentStroke).attr("stroke-width",1),T.filter((t=>"buy"===t.sourceStrategy)).append("circle").attr("class","wardley-buy-overlay").attr("cx",(t=>P.get(t.id).x)).attr("cy",(t=>P.get(t.id).y)).attr("r",2*s.nodeRadius).attr("fill","#ccc").attr("stroke",d.componentStroke).attr("stroke-width",1),T.filter((t=>"build"===t.sourceStrategy)).append("circle").attr("class","wardley-build-overlay").attr("cx",(t=>P.get(t.id).x)).attr("cy",(t=>P.get(t.id).y)).attr("r",2*s.nodeRadius).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);const I=T.filter((t=>"market"===t.sourceStrategy));I.append("circle").attr("class","wardley-market-overlay").attr("cx",(t=>P.get(t.id).x)).attr("cy",(t=>P.get(t.id).y)).attr("r",2*s.nodeRadius).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",1),T.filter((t=>!t.isPipelineParent&&"market"!==t.sourceStrategy&&"anchor"!==t.className)).append("circle").attr("cx",(t=>P.get(t.id).x)).attr("cy",(t=>P.get(t.id).y)).attr("r",s.nodeRadius).attr("fill",d.componentFill).attr("stroke",d.componentStroke).attr("stroke-width",1);const D=.7*s.nodeRadius,R=1.2*s.nodeRadius;if(I.append("line").attr("class","wardley-market-line").attr("x1",(t=>P.get(t.id).x)).attr("y1",(t=>P.get(t.id).y-R)).attr("x2",(t=>P.get(t.id).x-R*Math.cos(Math.PI/6))).attr("y2",(t=>P.get(t.id).y+R*Math.sin(Math.PI/6))).attr("stroke",d.componentStroke).attr("stroke-width",1),I.append("line").attr("class","wardley-market-line").attr("x1",(t=>P.get(t.id).x-R*Math.cos(Math.PI/6))).attr("y1",(t=>P.get(t.id).y+R*Math.sin(Math.PI/6))).attr("x2",(t=>P.get(t.id).x+R*Math.cos(Math.PI/6))).attr("y2",(t=>P.get(t.id).y+R*Math.sin(Math.PI/6))).attr("stroke",d.componentStroke).attr("stroke-width",1),I.append("line").attr("class","wardley-market-line").attr("x1",(t=>P.get(t.id).x+R*Math.cos(Math.PI/6))).attr("y1",(t=>P.get(t.id).y+R*Math.sin(Math.PI/6))).attr("x2",(t=>P.get(t.id).x)).attr("y2",(t=>P.get(t.id).y-R)).attr("stroke",d.componentStroke).attr("stroke-width",1),I.append("circle").attr("class","wardley-market-dot").attr("cx",(t=>P.get(t.id).x)).attr("cy",(t=>P.get(t.id).y-R)).attr("r",D).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),I.append("circle").attr("class","wardley-market-dot").attr("cx",(t=>P.get(t.id).x-R*Math.cos(Math.PI/6))).attr("cy",(t=>P.get(t.id).y+R*Math.sin(Math.PI/6))).attr("r",D).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),I.append("circle").attr("class","wardley-market-dot").attr("cx",(t=>P.get(t.id).x+R*Math.cos(Math.PI/6))).attr("cy",(t=>P.get(t.id).y+R*Math.sin(Math.PI/6))).attr("r",D).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),T.filter((t=>!0===t.isPipelineParent)).append("rect").attr("x",(t=>P.get(t.id).x-l/2)).attr("y",(t=>P.get(t.id).y-l/2)).attr("width",l).attr("height",l).attr("fill",d.componentFill).attr("stroke",d.componentStroke).attr("stroke-width",1),T.filter((t=>!0===t.inertia)).append("line").attr("class","wardley-inertia").attr("x1",(t=>{const e=P.get(t.id);let a=t.isPipelineParent?l/2+15:s.nodeRadius+15;return t.sourceStrategy&&(a+=s.nodeRadius+10),e.x+a})).attr("y1",(t=>{const e=P.get(t.id),a=t.isPipelineParent?l:2*s.nodeRadius;return e.y-a/2})).attr("x2",(t=>{const e=P.get(t.id);let a=t.isPipelineParent?l/2+15:s.nodeRadius+15;return t.sourceStrategy&&(a+=s.nodeRadius+10),e.x+a})).attr("y2",(t=>{const e=P.get(t.id),a=t.isPipelineParent?l:2*s.nodeRadius;return e.y+a/2})).attr("stroke",d.componentStroke).attr("stroke-width",6),T.append("text").attr("x",(t=>{const e=P.get(t.id);if("anchor"===t.className)return void 0!==t.labelOffsetX?e.x+t.labelOffsetX:e.x;let a=s.nodeLabelOffset;t.sourceStrategy&&void 0===t.labelOffsetX&&(a+=10);const r=t.labelOffsetX??a;return e.x+r})).attr("y",(t=>{const e=P.get(t.id);if("anchor"===t.className)return void 0!==t.labelOffsetY?e.y+t.labelOffsetY:e.y-3;let a=-s.nodeLabelOffset;t.sourceStrategy&&void 0===t.labelOffsetY&&(a-=10);const r=t.labelOffsetY??a;return e.y+r})).attr("class","wardley-node-label").attr("fill",(t=>"evolved"===t.className?d.evolutionStroke:"anchor"===t.className?"#000":d.componentLabelColor)).attr("font-size",s.labelFontSize).attr("font-weight",(t=>"anchor"===t.className?"bold":"normal")).attr("text-anchor",(t=>"anchor"===t.className?"middle":"start")).attr("dominant-baseline",(t=>"anchor"===t.className?"middle":"auto")).text((t=>t.label)),p.annotations.length>0){const t=f.append("g").attr("class","wardley-annotations");if(p.annotations.forEach((e=>{const a=e.coordinates.map((t=>({x:k(t.x),y:b(t.y)})));if(a.length>1)for(let r=0;r<a.length-1;r++)t.append("line").attr("class","wardley-annotation-line").attr("x1",a[r].x).attr("y1",a[r].y).attr("x2",a[r+1].x).attr("y2",a[r+1].y).attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("stroke-dasharray","4 4");a.forEach((a=>{const r=t.append("g").attr("class","wardley-annotation");r.append("circle").attr("cx",a.x).attr("cy",a.y).attr("r",10).attr("fill","white").attr("stroke",d.axisColor).attr("stroke-width",1.5),r.append("text").attr("x",a.x).attr("y",a.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",d.axisTextColor).attr("font-weight","bold").text(e.number)}))})),p.annotationsBox){let e=k(p.annotationsBox.x),a=b(p.annotationsBox.y);const r=10,n=16,o=11,i=t.append("g").attr("class","wardley-annotations-box"),l=[...p.annotations].filter((t=>t.text)).sort(((t,e)=>t.number-e.number)),c=[];if(l.forEach(((t,s)=>{const l=i.append("text").attr("x",e+r).attr("y",a+r+(s+1)*n).attr("font-size",o).attr("fill",d.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${t.number}. ${t.text}`);c.push(l)})),c.length>0){let t=0,o=0;c.forEach((e=>{const a=e.node(),r=a.getComputedTextLength();t=Math.max(t,r);const n=a.getBBox();o=Math.max(o,n.height)}));const p=t+2*r+105,h=l.length*n+2*r+o/2,y=s.padding,f=x-s.padding-p,u=s.padding,m=g-s.padding-h;e=Math.max(y,Math.min(e,f)),a=Math.max(u,Math.min(a,m)),c.forEach(((t,o)=>{t.attr("x",e+r).attr("y",a+r+(o+1)*n)})),i.insert("rect","text").attr("x",e).attr("y",a).attr("width",p).attr("height",h).attr("fill","white").attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(p.notes.length>0){const t=f.append("g").attr("class","wardley-notes");p.notes.forEach((e=>{const a=k(e.x),r=b(e.y);t.append("text").attr("x",a).attr("y",r).attr("text-anchor","start").attr("font-size",11).attr("fill",d.axisTextColor).attr("font-weight","bold").text(e.text)}))}if(p.accelerators.length>0){const t=f.append("g").attr("class","wardley-accelerators");p.accelerators.forEach((e=>{const a=k(e.x),r=b(e.y),n=60,o=`\n M ${a} ${r-15}\n L ${a+n-20} ${r-15}\n L ${a+n-20} ${r-15-8}\n L ${a+n} ${r}\n L ${a+n-20} ${r+15+8}\n L ${a+n-20} ${r+15}\n L ${a} ${r+15}\n Z\n `;t.append("path").attr("d",o).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",1),t.append("text").attr("x",a+30).attr("y",r+15+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",d.axisTextColor).attr("font-weight","bold").text(e.name)}))}if(p.deaccelerators.length>0){const t=f.append("g").attr("class","wardley-deaccelerators");p.deaccelerators.forEach((e=>{const a=k(e.x),r=b(e.y),n=`\n M ${a+60} ${r-15}\n L ${a+20} ${r-15}\n L ${a+20} ${r-15-8}\n L ${a} ${r}\n L ${a+20} ${r+15+8}\n L ${a+20} ${r+15}\n L ${a+60} ${r+15}\n Z\n `;t.append("path").attr("d",n).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",1),t.append("text").attr("x",a+30).attr("y",r+15+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",d.axisTextColor).attr("font-weight","bold").text(e.name)}))}}),"draw")},styles:(0,i.K2)((()=>""),"styles")}}}]);