UNPKG

@eventcatalogtest/studio

Version:

A drag and drop UI for distributed systems that keeps your diagrams where they belong – in your repo

1 lines 11.3 kB
"use strict";exports.id=7528,exports.ids=[7528],exports.modules={67645:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(48241);let e=function(a){return(0,d.A)(a,4)}},77528:(a,b,c)=>{c.r(b),c.d(b,{render:()=>D});var d=c(44514);c(96005);var e=c(8837),f=c(4740);c(8688),c(7827),c(65299);var g=c(32892),h=c(43644),i=c(39760),j=c(67645),k=c(49174);function l(a){var b,c,d={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:(b=a,k.A(b.nodes(),function(a){var c=b.node(a),d=b.parent(a),e={v:a};return i.A(c)||(e.value=c),i.A(d)||(e.parent=d),e})),edges:(c=a,k.A(c.edges(),function(a){var b=c.edge(a),d={v:a.v,w:a.w};return i.A(a.name)||(d.name=a.name),i.A(b)||(d.value=b),d}))};return i.A(a.graph())||(d.value=j.A(a.graph())),d}c(73651);var m=c(77275),n=new Map,o=new Map,p=new Map,q=(0,g.K2)(()=>{o.clear(),p.clear(),n.clear()},"clear"),r=(0,g.K2)((a,b)=>{let c=o.get(b)||[];return g.Rm.trace("In isDescendant",b," ",a," = ",c.includes(a)),c.includes(a)},"isDescendant"),s=(0,g.K2)((a,b)=>{let c=o.get(b)||[];return g.Rm.info("Descendants of ",b," is ",c),g.Rm.info("Edge is ",a),a.v!==b&&a.w!==b&&(c?c.includes(a.v)||r(a.v,b)||r(a.w,b)||c.includes(a.w):(g.Rm.debug("Tilt, ",b,",not in descendants"),!1))},"edgeInCluster"),t=(0,g.K2)((a,b,c,d)=>{g.Rm.warn("Copying children of ",a,"root",d,"data",b.node(a),d);let e=b.children(a)||[];a!==d&&e.push(a),g.Rm.warn("Copying (nodes) clusterId",a,"nodes",e),e.forEach(e=>{if(b.children(e).length>0)t(e,b,c,d);else{let f=b.node(e);g.Rm.info("cp ",e," to ",d," with parent ",a),c.setNode(e,f),d!==b.parent(e)&&(g.Rm.warn("Setting parent",e,b.parent(e)),c.setParent(e,b.parent(e))),a!==d&&e!==a?(g.Rm.debug("Setting parent",e,a),c.setParent(e,a)):(g.Rm.info("In copy ",a,"root",d,"data",b.node(a),d),g.Rm.debug("Not Setting parent for node=",e,"cluster!==rootId",a!==d,"node!==clusterId",e!==a));let h=b.edges(e);g.Rm.debug("Copying Edges",h),h.forEach(e=>{g.Rm.info("Edge",e);let f=b.edge(e.v,e.w,e.name);g.Rm.info("Edge data",f,d);try{s(e,d)?(g.Rm.info("Copying as ",e.v,e.w,f,e.name),c.setEdge(e.v,e.w,f,e.name),g.Rm.info("newGraph edges ",c.edges(),c.edge(c.edges()[0]))):g.Rm.info("Skipping copy of edge ",e.v,"--\x3e",e.w," rootId: ",d," clusterId:",a)}catch(a){g.Rm.error(a)}})}g.Rm.debug("Removing node",e),b.removeNode(e)})},"copy"),u=(0,g.K2)((a,b)=>{let c=b.children(a),d=[...c];for(let e of c)p.set(e,a),d=[...d,...u(e,b)];return d},"extractDescendants"),v=(0,g.K2)((a,b,c)=>{let d=a.edges().filter(a=>a.v===b||a.w===b),e=a.edges().filter(a=>a.v===c||a.w===c),f=d.map(a=>({v:a.v===b?c:a.v,w:a.w===b?b:a.w})),g=e.map(a=>({v:a.v,w:a.w}));return f.filter(a=>g.some(b=>a.v===b.v&&a.w===b.w))},"findCommonEdges"),w=(0,g.K2)((a,b,c)=>{let d,e=b.children(a);if(g.Rm.trace("Searching children of id ",a,e),e.length<1)return a;for(let a of e){let e=w(a,b,c),f=v(b,c,e);if(e)if(!(f.length>0))return e;else d=e}return d},"findNonClusterChild"),x=(0,g.K2)(a=>n.has(a)&&n.get(a).externalConnections&&n.has(a)?n.get(a).id:a,"getAnchorId"),y=(0,g.K2)((a,b)=>{if(!a||b>10)return void g.Rm.debug("Opting out, no graph ");for(let b of(g.Rm.debug("Opting in, graph "),a.nodes().forEach(function(b){a.children(b).length>0&&(g.Rm.warn("Cluster identified",b," Replacement id in edges: ",w(b,a,b)),o.set(b,u(b,a)),n.set(b,{id:w(b,a,b),clusterData:a.node(b)}))}),a.nodes().forEach(function(b){let c=a.children(b),d=a.edges();c.length>0?(g.Rm.debug("Cluster identified",b,o),d.forEach(a=>{r(a.v,b)^r(a.w,b)&&(g.Rm.warn("Edge: ",a," leaves cluster ",b),g.Rm.warn("Descendants of XXX ",b,": ",o.get(b)),n.get(b).externalConnections=!0)})):g.Rm.debug("Not a cluster ",b,o)}),n.keys())){let c=n.get(b).id,d=a.parent(c);d!==b&&n.has(d)&&!n.get(d).externalConnections&&(n.get(b).id=d)}a.edges().forEach(function(b){let c=a.edge(b);g.Rm.warn("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(b)),g.Rm.warn("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(a.edge(b)));let d=b.v,e=b.w;if(g.Rm.warn("Fix XXX",n,"ids:",b.v,b.w,"Translating: ",n.get(b.v)," --- ",n.get(b.w)),n.get(b.v)||n.get(b.w)){if(g.Rm.warn("Fixing and trying - removing XXX",b.v,b.w,b.name),d=x(b.v),e=x(b.w),a.removeEdge(b.v,b.w,b.name),d!==b.v){let e=a.parent(d);n.get(e).externalConnections=!0,c.fromCluster=b.v}if(e!==b.w){let d=a.parent(e);n.get(d).externalConnections=!0,c.toCluster=b.w}g.Rm.warn("Fix Replacing with XXX",d,e,b.name),a.setEdge(d,e,c,b.name)}}),g.Rm.warn("Adjusted Graph",l(a)),z(a,0),g.Rm.trace(n)},"adjustClustersAndEdges"),z=(0,g.K2)((a,b)=>{if(g.Rm.warn("extractor - ",b,l(a),a.children("D")),b>10)return void g.Rm.error("Bailing out");let c=a.nodes(),d=!1;for(let b of c){let c=a.children(b);d=d||c.length>0}if(!d)return void g.Rm.debug("Done, no node has children",a.nodes());for(let d of(g.Rm.debug("Nodes = ",c,b),c))if(g.Rm.debug("Extracting node",d,n,n.has(d)&&!n.get(d).externalConnections,!a.parent(d),a.node(d),a.children("D")," Depth ",b),n.has(d))if(!n.get(d).externalConnections&&a.children(d)&&a.children(d).length>0){g.Rm.warn("Cluster without external connections, without a parent and with children",d,b);let c="TB"===a.graph().rankdir?"LR":"TB";n.get(d)?.clusterData?.dir&&(c=n.get(d).clusterData.dir,g.Rm.warn("Fixing dir",n.get(d).clusterData.dir,c));let e=new m.T({multigraph:!0,compound:!0}).setGraph({rankdir:c,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});g.Rm.warn("Old graph before copy",l(a)),t(d,a,e,d),a.setNode(d,{clusterNode:!0,id:d,clusterData:n.get(d).clusterData,label:n.get(d).label,graph:e}),g.Rm.warn("New graph after copy node: (",d,")",l(e)),g.Rm.debug("Old graph after copy",l(a))}else g.Rm.warn("Cluster ** ",d," **not meeting the criteria !externalConnections:",!n.get(d).externalConnections," no parent: ",!a.parent(d)," children ",a.children(d)&&a.children(d).length>0,a.children("D"),b),g.Rm.debug(n);else g.Rm.debug("Not a cluster",d,b);for(let d of(c=a.nodes(),g.Rm.warn("New list of nodes",c),c)){let c=a.node(d);g.Rm.warn(" Now next level",d,c),c?.clusterNode&&z(c.graph,b+1)}},"extractor"),A=(0,g.K2)((a,b)=>{if(0===b.length)return[];let c=Object.assign([],b);return b.forEach(b=>{let d=a.children(b),e=A(a,d);c=[...c,...e]}),c},"sorter"),B=(0,g.K2)(a=>A(a,a.children()),"sortNodesByHierarchy"),C=(0,g.K2)(async(a,b,c,i,j,k)=>{g.Rm.warn("Graph in recursive render:XAX",l(b),j);let m=b.graph().rankdir;g.Rm.trace("Dir in recursive render - dir:",m);let o=a.insert("g").attr("class","root");b.nodes()?g.Rm.info("Recursive render XXX",b.nodes()):g.Rm.info("No nodes found for",b),b.edges().length>0&&g.Rm.info("Recursive edges",b.edge(b.edges()[0]));let p=o.insert("g").attr("class","clusters"),q=o.insert("g").attr("class","edgePaths"),r=o.insert("g").attr("class","edgeLabels"),s=o.insert("g").attr("class","nodes");await Promise.all(b.nodes().map(async function(a){let d=b.node(a);if(void 0!==j){let c=JSON.parse(JSON.stringify(j.clusterData));g.Rm.trace("Setting data for parent cluster XXX\n Node.id = ",a,"\n data=",c.height,"\nParent cluster",j.height),b.setNode(j.id,c),b.parent(a)||(g.Rm.trace("Setting parent",a,j.id),b.setParent(a,j.id,c))}if(g.Rm.info("(Insert) Node XXX"+a+": "+JSON.stringify(b.node(a))),d?.clusterNode){g.Rm.info("Cluster identified XBX",a,d.width,b.node(a));let{ranksep:f,nodesep:h}=b.graph();d.graph.setGraph({...d.graph.graph(),ranksep:f+25,nodesep:h});let j=await C(s,d.graph,c,i,b.node(a),k),l=j.elem;(0,e.lC)(d,l),d.diff=j.diff||0,g.Rm.info("New compound node after recursive render XAX",a,"width",d.width,"height",d.height),(0,e.U7)(l,d)}else b.children(a).length>0?(g.Rm.trace("Cluster - the non recursive path XBX",a,d.id,d,d.width,"Graph:",b),g.Rm.trace(w(d.id,b)),n.set(d.id,{id:w(d.id,b),node:d})):(g.Rm.trace("Node - the non recursive path XAX",a,s,b.node(a),m),await (0,e.on)(s,b.node(a),{config:k,dir:m}))}));let t=(0,g.K2)(async()=>{let a=b.edges().map(async function(a){let c=b.edge(a.v,a.w,a.name);g.Rm.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(a)),g.Rm.info("Edge "+a.v+" -> "+a.w+": ",a," ",JSON.stringify(b.edge(a))),g.Rm.info("Fix",n,"ids:",a.v,a.w,"Translating: ",n.get(a.v),n.get(a.w)),await (0,d.jP)(r,c)});await Promise.all(a)},"processEdges");await t(),g.Rm.info("Graph before layout:",JSON.stringify(l(b))),g.Rm.info("############################################# XXX"),g.Rm.info("### Layout ### XXX"),g.Rm.info("############################################# XXX"),(0,h.Zp)(b),g.Rm.info("Graph after layout:",JSON.stringify(l(b)));let u=0,{subGraphTitleTotalMargin:v}=(0,f.O)(k);return await Promise.all(B(b).map(async function(a){let c=b.node(a);if(g.Rm.info("Position XBX => "+a+": ("+c.x,","+c.y,") width: ",c.width," height: ",c.height),c?.clusterNode)c.y+=v,g.Rm.info("A tainted cluster node XBX1",a,c.id,c.width,c.height,c.x,c.y,b.parent(a)),n.get(c.id).node=c,(0,e.U_)(c);else if(b.children(a).length>0){g.Rm.info("A pure cluster node XBX1",a,c.id,c.x,c.y,c.width,c.height,b.parent(a)),c.height+=v,b.node(c.parentId);let d=c?.padding/2||0,f=c?.labelBBox?.height||0;g.Rm.debug("OffsetY",f-d||0,"labelHeight",f,"halfPadding",d),await (0,e.U)(p,c),n.get(c.id).node=c}else{let a=b.node(c.parentId);c.y+=v/2,g.Rm.info("A regular node XBX1 - using the padding",c.id,"parent",c.parentId,c.width,c.height,c.x,c.y,"offsetY",c.offsetY,"parent",a,a?.offsetY,c),(0,e.U_)(c)}})),b.edges().forEach(function(a){let e=b.edge(a);g.Rm.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(e),e),e.points.forEach(a=>a.y+=v/2);let f=b.node(a.v);var h=b.node(a.w);let j=(0,d.Jo)(q,e,n,c,f,h,i);(0,d.T_)(e,j)}),b.nodes().forEach(function(a){let c=b.node(a);g.Rm.info(a,c.type,c.diff),c.isGroup&&(u=c.diff)}),g.Rm.warn("Returning from recursive render XAX",o,u),{elem:o,diff:u}},"recursiveRender"),D=(0,g.K2)(async(a,b)=>{let c=new m.T({multigraph:!0,compound:!0}).setGraph({rankdir:a.direction,nodesep:a.config?.nodeSpacing||a.config?.flowchart?.nodeSpacing||a.nodeSpacing,ranksep:a.config?.rankSpacing||a.config?.flowchart?.rankSpacing||a.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),f=b.select("g");(0,d.g0)(f,a.markers,a.type,a.diagramId),(0,e.gh)(),(0,d.IU)(),(0,e.IU)(),q(),a.nodes.forEach(a=>{c.setNode(a.id,{...a}),a.parentId&&c.setParent(a.id,a.parentId)}),g.Rm.debug("Edges:",a.edges),a.edges.forEach(a=>{if(a.start===a.end){let b=a.start,d=b+"---"+b+"---1",e=b+"---"+b+"---2",f=c.node(b);c.setNode(d,{domId:d,id:d,parentId:f.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),c.setParent(d,f.parentId),c.setNode(e,{domId:e,id:e,parentId:f.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),c.setParent(e,f.parentId);let g=structuredClone(a),h=structuredClone(a),i=structuredClone(a);g.label="",g.arrowTypeEnd="none",g.id=b+"-cyclic-special-1",h.arrowTypeStart="none",h.arrowTypeEnd="none",h.id=b+"-cyclic-special-mid",i.label="",f.isGroup&&(g.fromCluster=b,i.toCluster=b),i.id=b+"-cyclic-special-2",i.arrowTypeStart="none",c.setEdge(b,d,g,b+"-cyclic-special-0"),c.setEdge(d,e,h,b+"-cyclic-special-1"),c.setEdge(e,b,i,b+"-cyc<lic-special-2")}else c.setEdge(a.start,a.end,{...a},a.id)}),g.Rm.warn("Graph at first:",JSON.stringify(l(c))),y(c),g.Rm.warn("Graph after XAX:",JSON.stringify(l(c)));let h=(0,g.D7)();await C(f,c,a.type,a.diagramId,void 0,h)},"render")}};