1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8255],{78255:(e,t,r)=>{r.r(t),r.d(t,{applyDagreLayoutResult:()=>N,getEdgesToRender:()=>b,measureDagreLayout:()=>K,prepareLayoutForDagre:()=>v,render:()=>k,runDagreLayoutCore:()=>P});var a=r(80915),i=r(1627),d=r(4117),n=r(42625),o=r(83200);r(10969),r(69123),r(2401),r(52691);var l=r(31775),s=r(56037),g=r(89851),h=r(52768),u=r(92821),p=(0,g.K)((e,t,r)=>Math.max(t,Math.min(r,e)),"clamp"),f=(0,g.K)((e="TB")=>{switch(e){case"BT":return"bottom";case"LR":return"right";case"RL":return"left";default:return"top"}},"getDefaultSelfLoopSide"),c=(0,g.K)(e=>"flowchart"===e||"flowchart-v2"===e||"stateDiagram"===e||"er"===e||"classDiagram"===e,"shouldMergeSelfLoopSegments"),y=["x","y","width","height","labelBBox","intersect","calcIntersect","diff","clusterNode"],L=(0,g.K)((e,t,r,a,i)=>{let d=[],n=new Set;if(r.forEach(({start:e,end:t})=>{e!==a&&n.add(e),t!==a&&n.add(t)}),n.forEach(t=>{let r=e.node(t);"number"==typeof r?.x&&"number"==typeof r?.y&&d.push(r)}),0===d.length&&r.forEach(({edge:e})=>{(e.points??[]).forEach(e=>{"number"==typeof e?.x&&"number"==typeof e?.y&&d.push(e)})}),0===d.length)return f(i);let o=d.reduce((e,t)=>({x:e.x+t.x/d.length,y:e.y+t.y/d.length}),{x:0,y:0}),l=o.x-t.x,s=o.y-t.y;return Math.abs(l)>Math.abs(s)?l>0?"right":"left":Math.abs(s)>0?s>0?"bottom":"top":f(i)},"getSelfLoopSide"),m=(0,g.K)((e,t="top",r=0,a=0)=>{let i=e.x,d=e.y-r,n=e.width/2,o=e.height/2,l=Math.max(36,Math.min(100,.8*e.width)),s=p(Math.max(a,.35*e.width),36,l),g=p(.45*Math.min(e.width,e.height),24,48);switch(t){case"bottom":{let e=d+o;return[{x:i-s/2,y:e},{x:i-s/2,y:e+g},{x:i+s/2,y:e+g},{x:i+s/2,y:e}]}case"right":{let e=i+n;return[{x:e,y:d-s/2},{x:e+g,y:d-s/2},{x:e+g,y:d+s/2},{x:e,y:d+s/2}]}case"left":{let e=i-n;return[{x:e,y:d-s/2},{x:e-g,y:d-s/2},{x:e-g,y:d+s/2},{x:e,y:d+s/2}]}default:{let e=d-o;return[{x:i-s/2,y:e},{x:i-s/2,y:e-g},{x:i+s/2,y:e-g},{x:i+s/2,y:e}]}}},"getSelfLoopPoints"),w=(0,g.K)((e,t,r="top",a=0,i={})=>{let d=e.x,n=e.y-a,o=i.width??0,l=i.height??0;switch(r){case"bottom":return{x:d,y:Math.max(...t.map(e=>e.y))+l/2+4};case"right":return{x:Math.max(...t.map(e=>e.x))+o/2+4,y:n};case"left":return{x:Math.min(...t.map(e=>e.x))-o/2-4,y:n};default:return{x:d,y:Math.min(...t.map(e=>e.y))-l/2-4}}},"getSelfLoopLabelPosition"),b=(0,g.K)((e,t=0,{mergeSelfLoops:r=!0}={})=>{let a=new Map,i=[],d=e.graph()?.rankdir;
1return e.edges().forEach(t=>{let d=e.edge(t);if(r&&d.selfLoop){let e=d.selfLoop.id;a.has(e)||a.set(e,[]),a.get(e).push({edge:d,start:t.v,end:t.w})}else i.push({edge:d,start:t.v,end:t.w})}),a.forEach(r=>{if(3!==r.length)return void r.forEach(e=>i.push(e));r.sort((e,t)=>e.edge.selfLoop.order-t.edge.selfLoop.order);let[a,n,o]=r,l=a.edge.originalEdge??n.edge.originalEdge??o.edge.originalEdge??n.edge,s=e.node(l.start);if(!s)return void r.forEach(e=>i.push(e));let g={width:n.edge.width,height:n.edge.height},h=L(e,s,r,l.start,d),u=m(s,h,t,g.width??0),p=w(s,u,h,t,g),f={...n.edge,...l,id:l.id,points:u,start:l.start,end:l.end,x:p.x,y:p.y,width:g.width,height:g.height,labelStyle:n.edge.labelStyle,fromCluster:a.edge.fromCluster??n.edge.fromCluster??o.edge.fromCluster,toCluster:a.edge.toCluster??n.edge.toCluster??o.edge.toCluster};delete f.selfLoop,delete f.originalEdge,i.push({edge:f,start:f.start,end:f.end})}),i},"getEdgesToRender"),R=(0,g.K)(async({element:e,graph:t,diagramType:r,id:i,parentCluster:l,siteConfig:h})=>{let u=t.graph().rankdir;s.R.trace("Dir in recursive render - dir:",u);let{clusters:p,edgePaths:f,edgeLabels:y,nodes:L,rootGroups:m}=(0,a.B)(e,{edgePathsClass:"edgePaths"});t.nodes()?s.R.info("Recursive render XXX",t.nodes()):s.R.info("No nodes found for",t),t.edges().length>0&&s.R.info("Recursive edges",t.edge(t.edges()[0]));let w=c(r);await Promise.all(t.nodes().map(async function(e){let d=t.node(e);if(void 0!==l){let r=JSON.parse(JSON.stringify(l.clusterData));s.R.trace("Setting data for parent cluster XXX\n Node.id = ",e,"\n data=",r.height,"\nParent cluster",l.height),t.setNode(l.id,r),t.parent(e)||(s.R.trace("Setting parent",e,l.id),t.setParent(e,l.id,r))}if(s.R.info("(Insert) Node XXX"+e+": "+JSON.stringify(t.node(e))),d?.clusterNode){s.R.info("Cluster identified XBX",e,d.width,t.node(e));let{ranksep:a,nodesep:l}=t.graph();d.graph.setGraph({...d.graph.graph(),ranksep:a+25,nodesep:l});let g=await D({element:L,graph:d.graph,diagramType:r,id:i,parentCluster:t.node(e),siteConfig:h}),u=g.elem;(0,o.lC)(d,u),d.diff=g.diff||0,s.R.info("New compound node after recursive render XAX",e,"width",d.width,"height",d.height),(0,n.U7)(u,d)}else t.children(e).length>0?(s.R.trace("Cluster - the non recursive path XBX",e,d.id,d,d.width,"Graph:",t),s.R.trace((0,a.dc)(d.id,t)),a.ju.set(d.id,{id:(0,a.dc)(d.id,t),node:d})):(s.R.trace("Node - the non recursive path XAX",e,L,t.node(e),u),await (0,a.sv)(L,t.node(e),{config:h,dir:u}))}));let b=(0,g.K)(async()=>{let e=t.edges().map(async function(e){let r=t.edge(e.v,e.w,e.name);if(s.R.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),s.R.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(t.edge(e))),s.R.info("Fix",a.ju,"ids:",e.v,e.w,"Translating: ",a.ju.get(e.v),a.ju.get(e.w)),w&&r.selfLoop){if(1!==r.selfLoop.order)return;let e={...r.originalEdge,...r,id:r.selfLoop.id,startLabelLeft:r.originalEdge?.startLabelLeft??r.startLabelLeft,startLabelRight:r.originalEdge?.startLabelRight??r.startLabelRight,endLabelLeft:r.originalEdge?.endLabelLeft??r.endLabelLeft,endLabelRight:r.originalEdge?.endLabelRight??r.endLabelRight};await (0,d.jP)(y,e),r.width=e.width,r.height=e.height,r.labelStyle=e.labelStyle;return}await (0,d.jP)(y,r)});await Promise.all(e)},"processEdges");await b();let{subGraphTitleTotalMargin:R}=(0,n.Oi)(h);return{elem:m,graph:t,groups:{clusters:p,edgePaths:f,edgeLabels:y,nodes:L,rootGroups:m},diagramType:r,id:i,mergeSelfLoops:w,subGraphTitleTotalMargin:R}},"measureDagreGraph"),x=(0,g.K)(e=>{s.R.info("############################################# XXX"),s.R.info("### Layout ### XXX"),s.R.info("############################################# XXX"),(0,h.Zp)(e)},"runDagreGraphLayout"),E=(0,g.K)((e,t,r)=>{let a=e.node(t);if(!a)return;let i={...a};return a?.clusterNode?i.y=(a.y??0)+r:e.children(t).length>0?i.height=(a.height??0)+r:i.y=(a.y??0)+r/2,i},"normalizeDagreNode"),X=(0,g.K)((e,t)=>{y.forEach(r=>{void 0!==t[r]&&(e[r]=t[r])})},"applyDagreNodeLayout"),S=(0,g.K)((e,t,r,a)=>({...e,start:e.start??t,end:e.end??r,points:(e.points??[]).map(e=>({...e,y:"number"==typeof e.y?e.y+a:e.y}))}),"normalizeDagreEdge"),N=(0,g.K)((e,t)=>{let{graph:r,mergeSelfLoops:i,subGraphTitleTotalMargin:d=0}
1=t,n=new Map(e.nodes.map(e=>[e.id,e]));(0,a.sc)(r).forEach(e=>{let t=E(r,e,d);if(!t)return;X(r.node(e),t);let a=n.get(e);a&&X(a,t)});let o=d/2;return e.edges=b(r,o,{mergeSelfLoops:i}).map(({edge:e,start:t,end:r})=>S(e,t,r,o)),e},"applyDagreLayoutResult"),C=(0,g.K)(async({elem:e,graph:t,groups:{clusters:r,edgePaths:o},diagramType:l,id:g,mergeSelfLoops:h,subGraphTitleTotalMargin:u})=>{let p=0;await Promise.all((0,a.sc)(t).map(async function(e){let d=t.node(e);if(s.R.info("Position XBX => "+e+": ("+d.x,","+d.y,") width: ",d.width," height: ",d.height),d?.clusterNode)d.y+=u,s.R.info("A tainted cluster node XBX1",e,d.id,d.width,d.height,d.x,d.y,t.parent(e)),a.ju.get(d.id).node=d,(0,n.U_)(d);else if(t.children(e).length>0){s.R.info("A pure cluster node XBX1",e,d.id,d.x,d.y,d.width,d.height,t.parent(e)),d.height+=u,t.node(d.parentId);let n=d?.padding/2||0,o=d?.labelBBox?.height||0;s.R.debug("OffsetY",o-n||0,"labelHeight",o,"halfPadding",n),await (0,i.U)(r,d),a.ju.get(d.id).node=d}else{let e=t.node(d.parentId);d.y+=u/2,s.R.info("A regular node XBX1 - using the padding",d.id,"parent",d.parentId,d.width,d.height,d.x,d.y,"offsetY",d.offsetY,"parent",e,e?.offsetY,d),(0,n.U_)(d)}}));let f=u/2;return b(t,f,{mergeSelfLoops:h}).forEach(function({edge:e,start:r,end:i}){s.R.info("Edge "+r+" -> "+i+": "+JSON.stringify(e),e),e.points.forEach(e=>e.y+=f);let n=t.node(r),h=t.node(i),u=(0,d.Jo)(o,e,a.ju,l,n,h,g);(0,d.T_)(e,u)}),t.nodes().forEach(function(e){let r=t.node(e);s.R.info(e,r.type,r.diff),r.isGroup&&(p=r.diff)}),s.R.warn("Returning from recursive render XAX",e,p),{elem:e,diff:p}},"paintDagreLayoutCore"),D=(0,g.K)(async e=>{let t=await R(e);return x(t.graph),await C(t)},"renderDagreSubgraph"),v=(0,g.K)(e=>{let t=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.nodeSpacing||e.config?.flowchart?.nodeSpacing,ranksep:e.config?.rankSpacing||e.rankSpacing||e.config?.flowchart?.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});return e.nodes.forEach(e=>{t.setNode(e.id,{...e}),e.parentId&&t.setParent(e.id,e.parentId)}
1),s.R.debug("Edges:",e.edges),e.edges.forEach(e=>{if(e.start===e.end){let r=e.start,a=r+"---"+r+"---1",i=r+"---"+r+"---2",d=t.node(r);t.setNode(a,{domId:a,id:a,parentId:d.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),t.setParent(a,d.parentId),t.setNode(i,{domId:i,id:i,parentId:d.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),t.setParent(i,d.parentId);let n=structuredClone(e),o=structuredClone(e),l=structuredClone(e),s=structuredClone(e);o.originalEdge=n,o.selfLoop={id:n.id,order:0},l.originalEdge=n,l.selfLoop={id:n.id,order:1},s.originalEdge=n,s.selfLoop={id:n.id,order:2},o.label="",o.arrowTypeEnd="none",o.endLabelLeft="",o.endLabelRight="",o.startLabelLeft="",o.id=r+"-cyclic-special-1",l.startLabelRight="",l.startLabelLeft="",l.endLabelLeft="",l.endLabelRight="",l.arrowTypeStart="none",l.arrowTypeEnd="none",l.id=r+"-cyclic-special-mid",s.label="",s.startLabelRight="",s.startLabelLeft="",s.arrowTypeStart="none",d.isGroup&&(o.fromCluster=r,s.toCluster=r),s.id=r+"-cyclic-special-2",s.arrowTypeStart="none",t.setEdge(r,a,o,r+"-cyclic-special-0"),t.setEdge(a,i,l,r+"-cyclic-special-1"),t.setEdge(i,r,s,r+"-cyclic-special-2")}else t.setEdge(e.start,e.end,{...e},e.id)}),(0,a.OS)(t),{graph:t}},"prepareLayoutForDagre"),K=(0,g.K)(async(e,{element:t,preparedLayout:r})=>{let a=r??v(e),i=(0,l.D7)(),d=await R({element:t,graph:a.graph,diagramType:e.type,id:e.diagramId,parentCluster:void 0,siteConfig:i});return a.measuredLayout=d,d},"measureDagreLayout"),P=(0,g.K)((e,t)=>{let r=t.preparedLayout?.measuredLayout;if(!r)throw Error("runDagreLayoutCore requires measureDagreLayout to run first");return x(r.graph),N(e,r),r},"runDagreLayoutCore"),I=(0,g.K)((e,{measure:t})=>(0,a.sc)(t.graph).map(e=>t.graph.node(e)).filter(Boolean),"getDagrePaintNodes"),M=(0,g.K)((e,t,{measure:r})=>e?r.graph.node(e):void 0,"getDagreEdgeNode"),k=(0,a.xY)({prepareLayout:v,measureLayout:K,runLayoutCore:P,paintOptions:{clusterDb:a.ju,getNodes:I,getEdgeNode:M,skipNode:(0,g.K)((e,{measure:t})=>
1!t.graph.hasNode(e.id),"skipNode"),isCluster:(0,g.K)((e,{measure:t})=>t.graph.hasNode(e.id)&&(t.graph.children(e.id)??[]).length>0,"isCluster")}})}}]);
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.