1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5491],{18126:function(t,e,a){function populateCommonDb(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{A:function(){return populateCommonDb}}),(0,a(2486).e)(populateCommonDb,"populateCommonDb")},15491:function(t,e,a){a.d(e,{diagram:function(){return b}});var r=a(18126),o=a(80275),n=a(28174),i=a(82289),l=a(85995),d=a(2486),s=a(4346),c=(0,d.e)((t,e)=>{let a=t<=1?100*t:t;if(a<0||a>100)throw Error(`${e} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${t}`);return a},"toPercent"),p=(0,d.e)((t,e,a)=>({x:c(e,`${a} evolution`),y:c(t,`${a} visibility`)}),"toCoordinates"),x=(0,d.e)(t=>t?"+<>"===t?"bidirectional":"+<"===t?"backward":"+>"===t?"forward":void 0:void 0,"getFlowFromPort"),h=(0,d.e)(t=>{if(!t?.startsWith("+"))return{};let 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"),y=(0,d.e)((t,e)=>{if((0,r.A)(t,e),t.size&&e.setSize(t.size.width,t.size.height),t.evolution){let 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=>{let a=p(t.visibility,t.evolution,`Anchor "${t.name}"`);e.addNode(t.name,t.name,a.x,a.y,"anchor")}),t.components.forEach(t=>{let a=p(t.visibility,t.evolution,`Component "${t.name}"`),r=t.label?(t.label.negX?-1:1)*t.label.offsetX:void 0,o=t.label?(t.label.negY?-1:1)*t.label.offsetY:void 0,n=t.decorator?.strategy;e.addNode(t.name,t.name,a.x,a.y,"component",r,o,t.inertia,n)}),t.notes.forEach(t=>{let a=p(t.visibility,t.evolution,`Note "${t.text}"`);e.addNote(t.text,a.x,a.y)}),t.pipelines.forEach(t=>{let a=e.getNode(t.parent);if(!a||"number"!=typeof a.y)throw Error(`Pipeline "${t.parent}" must reference an existing component with coordinates.`);let r=a.y;e.startPipeline(t.parent),t.components.forEach(a=>{let o=`${t.parent}_${a.name}`,n=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,l=c(a.evolution,`Pipeline component "${a.name}" evolution`);e.addNode(o,a.name,l,r,"pipeline-component",n,i),e.addPipelineComponent(t.parent,o)})}),t.links.forEach(t=>{let a=!!t.arrow&&(t.arrow.includes("-.->")||t.arrow.includes(".-.")),r=x(t.fromPort)??x(t.toPort),{flow:o,label:n}=h(t.arrow);!r&&o&&(r=o);let i=t.linkLabel,l=n??i;e.addLink(e.resolveNodeId(t.from),e.resolveNodeId(t.to),a,l,r)}),t.evolves.forEach(t=>{let a=e.getNode(t.component);if(a?.y!==void 0){let r=c(t.target,`Evolve target for "${t.component}"`);e.addTrend(t.component,r,a.y)}}),t.annotations.length>0){let a=t.annotations[0],r=p(a.x,a.y,"Annotations box");e.setAnnotationsBox(r.x,r.y)}t.annotation.forEach(t=>{let a=p(t.x,t.y,`Annotation ${t.number}`);e.addAnnotation(t.number,[{x:a.x,y:a.y}],t.text)}),t.accelerators.forEach(t=>{let a=p(t.x,t.y,`Accelerator "${t.name}"`);e.addAccelerator(t.name,a.x,a.y)}),t.deaccelerators.forEach(t=>{let a=p(t.x,t.y,`Deaccelerator "${t.name}"`);e.addDeaccelerator(t.name,a.x,a.y)})},"populateDb"),g={parser:{yy:void 0},parse:(0,d.e)(async t=>{let e=await (0,s.Qc)("wardley",t);l.c.debug(e);let a=g.parser?.yy;if(!a||"function"!=typeof a.addNode)throw 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.");y(e,a)},"parse")},f=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,d.e)(this,"WardleyBuilder")}addNode(t){let 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:[]});let e=this.nodes.get(t);e&&(e.isPipelineParent=!0)}addPipelineComponent(t,e){let a=this.pipelines.get(t);a&&a.componentIds.push(e);let r=this.nodes.get(e);r&&(r.inPipeline=!0)}
1addAnnotation(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)}resolveNodeId(t){if(this.nodes.has(t))return t;for(let[e,a]of this.nodes)if(a.label===t)return e;return t}build(){let t=[];for(let e of this.nodes.values()){if("number"!=typeof e.x||"number"!=typeof e.y)throw 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 getConfig3(){return(0,i.nV)()["wardley-beta"]}function addNode(t,e,a,r,o,n,i,l,d){f.addNode({id:t,label:e,x:a,y:r,className:o,labelOffsetX:n,labelOffsetY:i,inertia:l,sourceStrategy:d})}function addLink(t,e,a=!1,r,o){f.addLink({source:t,target:e,dashed:a,label:r,flow:o})}function addTrend(t,e,a){f.addTrend({nodeId:t,targetX:e,targetY:a})}function addAnnotation(t,e,a){f.addAnnotation({number:t,coordinates:e,text:a})}function addNote(t,e,a){f.addNote({text:t,x:e,y:a})}function addAccelerator(t,e,a){f.addAccelerator({name:t,x:e,y:a})}function addDeaccelerator(t,e,a){f.addDeaccelerator({name:t,x:e,y:a})}function setAnnotationsBox(t,e){f.setAnnotationsBox(t,e)}function setSize(t,e){f.setSize(t,e)}function startPipeline(t){f.startPipeline(t)}function addPipelineComponent(t,e){f.addPipelineComponent(t,e)}function updateAxes(t){f.setAxes(t)}function getNode(t){return f.getNode(t)}function resolveNodeId(t){return f.resolveNodeId(t)}function getWardleyData(){return f.build()}function clear2(){f.clear(),(0,i.ZH)()}(0,d.e)(getConfig3,"getConfig"),(0,d.e)(addNode,"addNode"),(0,d.e)(addLink,"addLink"),(0,d.e)(addTrend,"addTrend"),(0,d.e)(addAnnotation,"addAnnotation"),(0,d.e)(addNote,"addNote"),(0,d.e)(addAccelerator,"addAccelerator"),(0,d.e)(addDeaccelerator,"addDeaccelerator"),(0,d.e)(setAnnotationsBox,"setAnnotationsBox"),(0,d.e)(setSize,"setSize"),(0,d.e)(startPipeline,"startPipeline"),(0,d.e)(addPipelineComponent,"addPipelineComponent"),(0,d.e)(updateAxes,"updateAxes"),(0,d.e)(getNode,"getNode"),(0,d.e)(resolveNodeId,"resolveNodeId"),(0,d.e)(getWardleyData,"getWardleyData"),(0,d.e)(clear2,"clear");var u={getConfig:getConfig3,addNode,addLink,addTrend,addAnnotation,addNote,addAccelerator,addDeaccelerator,setAnnotationsBox,setSize,startPipeline,addPipelineComponent,updateAxes,getNode,resolveNodeId,getWardleyData,clear:clear2,setAccTitle:i.GN,getAccTitle:i.eu,setDiagramTitle:i.g2,getDiagramTitle:i.Kr,getAccDescription:i.Mx,setAccDescription:i.U$},m=["Genesis","Custom Built","Product","Commodity"],w=(0,d.e)(()=>{let{themeVariables:t}=(0,i.nV)();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"),k=(0,d.e)(()=>{let t=(0,i.nV)()["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"),b={parser:g,db:u,renderer:{draw:(0,d.e)((t,e,a,r)=>{l.c.debug("Rendering Wardley map\n"+t);let n=k(),s=w(),c=1.6*n.nodeRadius,p=r.db,x=p.getWardleyData(),h=p.getDiagramTitle(),y=x.size?.width??n.width,g=x.size?.height??n.height,f=(0,o.P)(e);f.selectAll("*").remove(),(0,i.v2)(f,g,y,n.useMaxWidth),f.attr("viewBox",`0 0 ${y} ${g}`);let u=f.append("g").attr("class","wardley-map"),b=f.append("defs");b.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",s.evolutionStroke).attr("stroke","none"),b.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",s.linkStroke).attr("stroke","none"),b.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",s.linkStroke).attr("stroke","none"),u.append("rect").attr("class","wardley-background").attr("width",y).attr("height",g).attr("fill",s.backgroundColor);let $=y-2*n.padding,C=g-2*n.padding;h&&u.append("text").attr("class","wardley-title").attr("x",y/2).attr("y",n.padding/2).attr("fill",s.axisTextColor).attr("font-size",1.05*n.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);let v=(0,d.e)(t=>n.padding+t/100*$,"projectX"),S=(0,d.e)(t=>g-n.padding-t/100*C,"projectY"),M=u.append("g").attr("class","wardley-axes");M.append("line").attr("x1",n.padding).attr("x2",y-n.padding).attr("y1",g-n.padding).attr("y2",g-n.padding).attr("stroke",s.axisColor).attr("stroke-width",1),M.append("line").attr("x1",n.padding).attr("x2",n.padding).attr("y1",n.padding).attr("y2",g-n.padding).attr("stroke",s.axisColor).attr("stroke-width",1);let P=x.axes.xLabel??"Evolution",N=x.axes.yLabel??"Visibility";M.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",
1n.padding+$/2).attr("y",g-n.padding/4).attr("fill",s.axisTextColor).attr("font-size",n.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(P),M.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",n.padding/3).attr("y",n.padding+C/2).attr("fill",s.axisTextColor).attr("font-size",n.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${n.padding/3} ${n.padding+C/2})`).text(N);let A=x.axes.stages&&x.axes.stages.length>0?x.axes.stages:m;if(A.length>0){let t=u.append("g").attr("class","wardley-stages"),e=x.axes.stageBoundaries,a=[];if(e&&e.length===A.length){let t=0;e.forEach(e=>{a.push({start:t,end:e}),t=e})}else{let t=1/A.length;A.forEach((e,r)=>{a.push({start:r*t,end:(r+1)*t})})}A.forEach((e,r)=>{let o=a[r],i=n.padding+o.start*$,l=n.padding+o.end*$,d=(i+l)/2;r>0&&t.append("line").attr("x1",i).attr("x2",i).attr("y1",n.padding).attr("y2",g-n.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",d).attr("y",g-n.padding/1.5).attr("fill",s.axisTextColor).attr("font-size",n.axisFontSize-2).attr("text-anchor","middle").text(e)})}if(n.showGrid){let t=u.append("g").attr("class","wardley-grid");for(let e=1;e<4;e++){let a=e/4,r=n.padding+$*a;t.append("line").attr("x1",r).attr("x2",r).attr("y1",n.padding).attr("y2",g-n.padding).attr("stroke",s.gridColor).attr("stroke-dasharray","2 6"),t.append("line").attr("x1",n.padding).attr("x2",y-n.padding).attr("y1",g-n.padding-C*a).attr("y2",g-n.padding-C*a).attr("stroke",s.gridColor).attr("stroke-dasharray","2 6")}}let T=new Map;if(x.nodes.forEach(t=>{T.set(t.id,{x:v(t.x),y:S(t.y),node:t})}),x.pipelines.length>0){let t=u.append("g").attr("class","wardley-pipelines"),e=u.append("g").attr("class","wardley-pipeline-links");x.pipelines.forEach(a=>{if(0===a.componentIds.length)return;let r=a.componentIds.map(t=>({id:t,pos:T.get(t),node:x.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++){let a=r[t],o=r[t+1];e.append("line").attr("class","wardley-pipeline-evolution-link").attr("x1",a.pos.x).attr("y1",a.pos.y).attr("x2",o.pos.x).attr("y2",o.pos.y).attr("stroke",s.linkStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4")}let o=1/0,i=-1/0,l=0;if(a.componentIds.forEach(t=>{let e=T.get(t);e&&(o=Math.min(o,e.x),i=Math.max(i,e.x),l=e.y)}),o!==1/0&&i!==-1/0){let e=4*n.nodeRadius,r=l-e/2,d=T.get(a.nodeId);if(d){let t=(o+i)/2;d.x=t,d.y=r-c/6}t.append("rect").attr("class","wardley-pipeline-box").attr("x",o-15).attr("y",r).attr("width",i-o+30).attr("height",e).attr("fill","none").attr("stroke",s.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}let z=u.append("g").attr("class","wardley-links"),L=new Map;x.pipelines.forEach(t=>{L.set(t.nodeId,new Set(t.componentIds))});let E=x.links.filter(t=>{if(!T.has(t.source)||!T.has(t.target))return!1;let e=L.get(t.target);return!e?.has(t.source)});z.selectAll("line").data(E).enter().append("line").attr("class",t=>`wardley-link${t.dashed?" wardley-link--dashed":""}`).attr("x1",t=>{let e=T.get(t.source),a=T.get(t.target),r=x.nodes.find(e=>e.id===t.source),o=r.isPipelineParent?c/Math.sqrt(2):n.nodeRadius,i=a.x-e.x,l=a.y-e.y;return e.x+i/Math.sqrt(i*i+l*l)*o}).attr("y1",t=>{let e=T.get(t.source),a=T.get(t.target),r=x.nodes.find(e=>e.id===t.source),o=r.isPipelineParent?c/Math.sqrt(2):n.nodeRadius,i=a.x-e.x,l=a.y-e.y;return e.y+l/Math.sqrt(i*i+l*l)*o}).attr("x2",t=>{let e=T.get(t.source),a=T.get(t.target),r=x.nodes.find(e=>e.id===t.target),o=r.isPipelineParent?c/Math.sqrt(2):n.nodeRadius,i=e.x-a.x,l=e.y-a.y;return a.x+i/Math.sqrt(i*i+l*l)*o}).attr("y2",t=>{let e=T.get(t.source),a=T.get(t.target),r=x.nodes.find(e=>e.id===t.target),o=r.isPipelineParent?c/Math.sqrt(2):n.nodeRadius,i=e.x-a.x,l=e.y-a.y;return a.y+l/Math.sqrt(i*i+l*l)*o}).attr("stroke",s.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),z.selectAll("text").data(E.filter(t=>t.label)).enter().append("text").attr("class","wardley-link-label").attr("x",t=>
1{let e=T.get(t.source),a=T.get(t.target),r=(e.x+a.x)/2,o=a.y-e.y,n=a.x-e.x;return r+o/Math.sqrt(n*n+o*o)*8}).attr("y",t=>{let e=T.get(t.source),a=T.get(t.target),r=(e.y+a.y)/2,o=a.x-e.x,n=a.y-e.y;return r+-o/Math.sqrt(o*o+n*n)*8}).attr("fill",s.axisTextColor).attr("font-size",n.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",t=>{let e=T.get(t.source),a=T.get(t.target),r=(e.x+a.x)/2,o=(e.y+a.y)/2,n=a.x-e.x,i=a.y-e.y,l=Math.sqrt(n*n+i*i),d=180*Math.atan2(i,n)/Math.PI;return(d>90||d<-90)&&(d+=180),`rotate(${d} ${r+i/l*8} ${o+-n/l*8})`}).text(t=>t.label);let I=u.append("g").attr("class","wardley-trends"),D=x.trends.map(t=>{let e=T.get(t.nodeId);if(!e)return null;let a=v(t.targetX),r=S(t.targetY),o=a-e.x,i=r-e.y,l=Math.sqrt(o*o+i*i),d=n.nodeRadius+2;return{origin:e,targetX:a,targetY:r,adjustedX2:l>d?a-o/l*d:a,adjustedY2:l>d?r-i/l*d:r}}).filter(t=>null!==t);I.selectAll("line").data(D).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",s.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${e})`);let R=u.append("g").attr("class","wardley-nodes"),B=R.selectAll("g").data(x.nodes).enter().append("g").attr("class",t=>["wardley-node",t.className?`wardley-node--${t.className}`:""].filter(Boolean).join(" "));B.filter(t=>"outsource"===t.sourceStrategy).append("circle").attr("class","wardley-outsource-overlay").attr("cx",t=>T.get(t.id).x).attr("cy",t=>T.get(t.id).y).attr("r",2*n.nodeRadius).attr("fill","#666").attr("stroke",s.componentStroke).attr("stroke-width",1),B.filter(t=>"buy"===t.sourceStrategy).append("circle").attr("class","wardley-buy-overlay").attr("cx",t=>T.get(t.id).x).attr("cy",t=>T.get(t.id).y).attr("r",2*n.nodeRadius).attr("fill","#ccc").attr("stroke",s.componentStroke).attr("stroke-width",1),B.filter(t=>"build"===t.sourceStrategy).append("circle").attr("class","wardley-build-overlay").attr("cx",t=>T.get(t.id).x).attr("cy",t=>T.get(t.id).y).attr("r",2*n.nodeRadius).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);let F=B.filter(t=>"market"===t.sourceStrategy);F.append("circle").attr("class","wardley-market-overlay").attr("cx",t=>T.get(t.id).x).attr("cy",t=>T.get(t.id).y).attr("r",2*n.nodeRadius).attr("fill","white").attr("stroke",s.componentStroke).attr("stroke-width",1),B.filter(t=>!t.isPipelineParent&&"market"!==t.sourceStrategy&&"anchor"!==t.className).append("circle").attr("cx",t=>T.get(t.id).x).attr("cy",t=>T.get(t.id).y).attr("r",n.nodeRadius).attr("fill",s.componentFill).attr("stroke",s.componentStroke).attr("stroke-width",1);let O=.7*n.nodeRadius,X=1.2*n.nodeRadius;if(F.append("line").attr("class","wardley-market-line").attr("x1",t=>T.get(t.id).x).attr("y1",t=>T.get(t.id).y-X).attr("x2",t=>T.get(t.id).x-X*Math.cos(Math.PI/6)).attr("y2",t=>T.get(t.id).y+X*Math.sin(Math.PI/6)).attr("stroke",s.componentStroke).attr("stroke-width",1),F.append("line").attr("class","wardley-market-line").attr("x1",t=>T.get(t.id).x-X*Math.cos(Math.PI/6)).attr("y1",t=>T.get(t.id).y+X*Math.sin(Math.PI/6)).attr("x2",t=>T.get(t.id).x+X*Math.cos(Math.PI/6)).attr("y2",t=>T.get(t.id).y+X*Math.sin(Math.PI/6)).attr("stroke",s.componentStroke).attr("stroke-width",1),F.append("line").attr("class","wardley-market-line").attr("x1",t=>T.get(t.id).x+X*Math.cos(Math.PI/6)).attr("y1",t=>T.get(t.id).y+X*Math.sin(Math.PI/6)).attr("x2",t=>T.get(t.id).x).attr("y2",t=>T.get(t.id).y-X).attr("stroke",s.componentStroke).attr("stroke-width",1),F.append("circle").attr("class","wardley-market-dot").attr("cx",t=>T.get(t.id).x).attr("cy",t=>T.get(t.id).y-X).attr("r",O).attr("fill","white").attr("stroke",s.componentStroke).attr("stroke-width",2),F.append("circle").attr("class","wardley-market-dot").attr("cx",t=>T.get(t.id).x-X*Math.cos(Math.PI/6)).attr("cy",t=>T.get(t.id).y+X*Math.sin(Math.PI/6)).attr("r",O).attr("fill","white").attr("stroke",s.componentStroke).attr("stroke-width",2),F.append("circle").attr("class","wardley-market-dot").attr("cx",t=>T.get(t.id).x+X*Math.cos(Math.PI/6)).attr("cy",t=>T.get(t.id).y+X*Math.sin(Math.PI/6)).attr("r",O).attr("fill","white").attr("stroke",s.componentStroke).attr("stroke-width",2),B.filter(t=>!0===t.isPipelineParent).append("rect").attr("x",t=>T.get(t.id).x-c/2).attr("y",t=>T.get(t.id).y-c/2).attr("width",c).attr("height",c).attr("fill",s.componentFill).attr("stroke",s.componentStroke).attr("stroke-width",1),B.filter(t=>!0===t.inertia).append("line").attr("class","wardley-inertia").attr("x1",t=>{let e=T.get(t.id),a=t.isPipelineParent?c/2+15:n.nodeRadius+15;return t.sourceStrategy&&(a+=n.nodeRadius+10),e.x+a}).attr("y1",t=>{let e=T.get(t.id),a=t.isPipelineParent?c:2*n.nodeRadius;return e.y-a/2}).attr("x2",t=>{let e=T.get(t.id),a=t.isPipelineParent?c/2+15:n.nodeRadius+15;return t.sourceStrategy&&(a+=n.nodeRadius+10),e.x+a}).attr("y2",t=>{let e=T.get(t.id),a=t.isPipelineParent?c:2*n.nodeRadius;return e.y+a/2}).attr("stroke",s.componentStroke).attr("stroke-width",6),B.append("text").attr("x",t=>{let e=T.get(t.id);if("anchor"===t.className)return void 0!==t.labelOffsetX?e.x+t.labelOffsetX:e.x;let a=n.nodeLabelOffset;t.sourceStrategy&&void 0===t.labelOffsetX&&(a+=10);let r=t.labelOffsetX??a;return e.x+r}).attr("y",t=>{let e=T.get(t.id);if("anchor"===t.className)return void 0!==t.labelOffsetY?e.y+t.labelOffsetY:e.y-3;let a=-n.nodeLabelOffset;t.sourceStrategy&&void 0===t.labelOffsetY&&(a-=10);let r=t.labelOffsetY??a;return e.y+r}).attr("class","wardley-node-label").attr("fill",t=>"evolved"===t.className?s.evolutionStroke:"anchor"===t.className?"#000":s.componentLabelColor).attr("font-size",n.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),x.annotations.length>0){let t=u.append("g").attr("class","wardley-annotations");
1if(x.annotations.forEach(e=>{let a=e.coordinates.map(t=>({x:v(t.x),y:S(t.y)}));if(a.length>1)for(let e=0;e<a.length-1;e++)t.append("line").attr("class","wardley-annotation-line").attr("x1",a[e].x).attr("y1",a[e].y).attr("x2",a[e+1].x).attr("y2",a[e+1].y).attr("stroke",s.axisColor).attr("stroke-width",1.5).attr("stroke-dasharray","4 4");a.forEach(a=>{let 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",s.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",s.axisTextColor).attr("font-weight","bold").text(e.number)})}),x.annotationsBox){let e=v(x.annotationsBox.x),a=S(x.annotationsBox.y),r=t.append("g").attr("class","wardley-annotations-box"),o=[...x.annotations].filter(t=>t.text).sort((t,e)=>t.number-e.number),i=[];if(o.forEach((t,o)=>{let n=r.append("text").attr("x",e+10).attr("y",a+10+(o+1)*16).attr("font-size",11).attr("fill",s.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${t.number}. ${t.text}`);i.push(n)}),i.length>0){let t=0,l=0;i.forEach(e=>{let a=e.node(),r=a.getComputedTextLength();t=Math.max(t,r);let o=a.getBBox();l=Math.max(l,o.height)});let d=t+20+105,c=16*o.length+20+l/2,p=n.padding,x=y-n.padding-d,h=n.padding,f=g-n.padding-c;e=Math.max(p,Math.min(e,x)),a=Math.max(h,Math.min(a,f)),i.forEach((t,r)=>{t.attr("x",e+10).attr("y",a+10+(r+1)*16)}),r.insert("rect","text").attr("x",e).attr("y",a).attr("width",d).attr("height",c).attr("fill","white").attr("stroke",s.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(x.notes.length>0){let t=u.append("g").attr("class","wardley-notes");x.notes.forEach(e=>{let a=v(e.x),r=S(e.y);t.append("text").attr("x",a).attr("y",r).attr("text-anchor","start").attr("font-size",11).attr("fill",s.axisTextColor).attr("font-weight","bold").text(e.text)})}if(x.accelerators.length>0){let t=u.append("g").attr("class","wardley-accelerators");x.accelerators.forEach(e=>{let a=v(e.x),r=S(e.y),o=` 2 M ${a} ${r-15} 3 L ${a+60-20} ${r-15} 4 L ${a+60-20} ${r-15-8} 5 L ${a+60} ${r} 6 L ${a+60-20} ${r+15+8} 7 L ${a+60-20} ${r+15} 8 L ${a} ${r+15} 9 Z 10 `;t.append("path").attr("d",o).attr("fill","white").attr("stroke",s.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",s.axisTextColor).attr("font-weight","bold").text(e.name)})}if(x.deaccelerators.length>0){let t=u.append("g").attr("class","wardley-deaccelerators");x.deaccelerators.forEach(e=>{let a=v(e.x),r=S(e.y),o=` 11 M ${a+60} ${r-15} 12 L ${a+20} ${r-15} 13 L ${a+20} ${r-15-8} 14 L ${a} ${r} 15 L ${a+20} ${r+15+8} 16 L ${a+20} ${r+15} 17 L ${a+60} ${r+15} 18 Z 19 `;t.append("path").attr("d",o).attr("fill","white").attr("stroke",s.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",s.axisTextColor).attr("font-weight","bold").text(e.name)})}},"draw")},styles:(0,d.e)(({wardley:t}={})=>{let e=(0,i.xN)(),a=(0,i.iE)(),r=(0,n.Rb)(e,a.themeVariables),o=(0,n.Rb)(r.wardley,t);return` 20 .wardley-background { 21 fill: ${o.backgroundColor}; 22 } 23 .wardley-axes line, .wardley-axes path { 24 stroke: ${o.axisColor}; 25 } 26 .wardley-axis-label { 27 fill: ${o.axisTextColor}; 28 } 29 .wardley-stage-label { 30 fill: ${o.axisTextColor}; 31 } 32 .wardley-grid line { 33 stroke: ${o.gridColor}; 34 } 35 .wardley-node circle { 36 fill: ${o.componentFill}; 37 stroke: ${o.componentStroke}; 38 } 39 .wardley-node-label { 40 fill: ${o.componentLabelColor}; 41 } 42 .wardley-link { 43 stroke: ${o.linkStroke}; 44 } 45 .wardley-link--dashed { 46 stroke-dasharray: 4 4; 47 } 48 .wardley-link-label { 49 fill: ${o.axisTextColor}; 50 } 51 .wardley-trend line { 52 stroke: ${o.evolutionStroke}; 53 } 54 .wardley-annotation-line { 55 stroke: ${o.annotationStroke}; 56 } 57 .wardley-annotation circle { 58 fill: ${o.annotationFill}; 59 stroke: ${o.annotationStroke}; 60 } 61 .wardley-annotation text { 62 fill: ${o.annotationTextColor}; 63 } 64 .wardley-annotations-box rect { 65 fill: ${o.annotationFill}; 66 stroke: ${o.annotationStroke}; 67 } 68 .wardley-annotations-box text { 69 fill: ${o.annotationTextColor}; 70 } 71 .wardley-pipeline-box { 72 stroke: ${o.componentStroke}; 73 } 74 .wardley-notes text { 75 fill: ${o.axisTextColor}; 76 } 77 `},"styles")}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.