ruru
Version:
Grafast-flavoured GraphiQL distribution
2 lines • 11.6 kB
JavaScript
export const __webpack_esm_id__=27;export const __webpack_esm_ids__=[27];export const __webpack_esm_modules__={90027(e,t,r){r.r(t),r.d(t,{applyDagreLayoutResult:()=>C,getEdgesToRender:()=>w,measureDagreLayout:()=>v,prepareLayoutForDagre:()=>T,render:()=>B,runDagreLayoutCore:()=>M});var a=r(79528),o=r(75972),n=r(41298),d=r(6342),i=r(51752),s=(r(48550),r(77948),r(56350),r(70848),r(39989)),g=r(27166),l=r(79456),h=r(71514),p=r(58558),c=(0,l.__name)((e,t,r)=>Math.max(t,Math.min(r,e)),"clamp"),u=(0,l.__name)((e="TB")=>{switch(e){case"BT":return"bottom";case"LR":return"right";case"RL":return"left";default:return"top"}},"getDefaultSelfLoopSide"),f=(0,l.__name)(e=>"flowchart"===e||"flowchart-v2"===e||"stateDiagram"===e||"er"===e||"classDiagram"===e,"shouldMergeSelfLoopSegments"),y=["x","y","width","height","labelBBox","intersect","calcIntersect","diff","clusterNode"],m=(0,l.__name)((e,t,r,a,o)=>{const n=[],d=new Set;if(r.forEach(({start:e,end:t})=>{e!==a&&d.add(e),t!==a&&d.add(t)}),d.forEach(t=>{const r=e.node(t);"number"==typeof r?.x&&"number"==typeof r?.y&&n.push(r)}),0===n.length&&r.forEach(({edge:e})=>{(e.points??[]).forEach(e=>{"number"==typeof e?.x&&"number"==typeof e?.y&&n.push(e)})}),0===n.length)return u(o);const i=n.reduce((e,t)=>({x:e.x+t.x/n.length,y:e.y+t.y/n.length}),{x:0,y:0}),s=i.x-t.x,g=i.y-t.y;return Math.abs(s)>Math.abs(g)?s>0?"right":"left":Math.abs(g)>0?g>0?"bottom":"top":u(o)},"getSelfLoopSide"),L=(0,l.__name)((e,t="top",r=0,a=0)=>{const o=e.x,n=e.y-r,d=e.width/2,i=e.height/2,s=Math.max(36,Math.min(100,.8*e.width)),g=c(Math.max(a,.35*e.width),36,s),l=c(.45*Math.min(e.width,e.height),24,48);switch(t){case"bottom":{const e=n+i;return[{x:o-g/2,y:e},{x:o-g/2,y:e+l},{x:o+g/2,y:e+l},{x:o+g/2,y:e}]}case"right":{const e=o+d;return[{x:e,y:n-g/2},{x:e+l,y:n-g/2},{x:e+l,y:n+g/2},{x:e,y:n+g/2}]}case"left":{const e=o-d;return[{x:e,y:n-g/2},{x:e-l,y:n-g/2},{x:e-l,y:n+g/2},{x:e,y:n+g/2}]}default:{const e=n-i;return[{x:o-g/2,y:e},{x:o-g/2,y:e-l},{x:o+g/2,y:e-l},{x:o+g/2,y:e}]}}},"getSelfLoopPoints"),b=(0,l.__name)((e,t,r="top",a=0,o={})=>{const n=e.x,d=e.y-a,i=o.width??0,s=o.height??0;switch(r){case"bottom":return{x:n,y:Math.max(...t.map(e=>e.y))+s/2+4};case"right":return{x:Math.max(...t.map(e=>e.x))+i/2+4,y:d};case"left":return{x:Math.min(...t.map(e=>e.x))-i/2-4,y:d};default:return{x:n,y:Math.min(...t.map(e=>e.y))-s/2-4}}},"getSelfLoopLabelPosition"),w=(0,l.__name)((e,t=0,{mergeSelfLoops:r=!0}={})=>{const a=new Map,o=[],n=e.graph()?.rankdir;return e.edges().forEach(t=>{const n=e.edge(t);if(r&&n.selfLoop){const e=n.selfLoop.id;a.has(e)||a.set(e,[]),a.get(e).push({edge:n,start:t.v,end:t.w})}else o.push({edge:n,start:t.v,end:t.w})}),a.forEach(r=>{if(3!==r.length)return void r.forEach(e=>o.push(e));r.sort((e,t)=>e.edge.selfLoop.order-t.edge.selfLoop.order);const[a,d,i]=r,s=a.edge.originalEdge??d.edge.originalEdge??i.edge.originalEdge??d.edge,g=e.node(s.start);if(!g)return void r.forEach(e=>o.push(e));const l={width:d.edge.width,height:d.edge.height},h=m(e,g,r,s.start,n),p=L(g,h,t,l.width??0),c=b(g,p,h,t,l),u={...d.edge,...s,id:s.id,points:p,start:s.start,end:s.end,x:c.x,y:c.y,width:l.width,height:l.height,labelStyle:d.edge.labelStyle,fromCluster:a.edge.fromCluster??d.edge.fromCluster??i.edge.fromCluster,toCluster:a.edge.toCluster??d.edge.toCluster??i.edge.toCluster};delete u.selfLoop,delete u.originalEdge,o.push({edge:u,start:u.start,end:u.end})}),o},"getEdgesToRender"),_=(0,l.__name)(async({element:e,graph:t,diagramType:r,id:o,parentCluster:s,siteConfig:h})=>{const p=t.graph().rankdir;g.log.trace("Dir in recursive render - dir:",p);const{clusters:c,edgePaths:u,edgeLabels:y,nodes:m,rootGroups:L}=(0,a.createLayoutElementGroups)(e,{edgePathsClass:"edgePaths"});t.nodes()?g.log.info("Recursive render XXX",t.nodes()):g.log.info("No nodes found for",t),t.edges().length>0&&g.log.info("Recursive edges",t.edge(t.edges()[0]));const b=f(r);await Promise.all(t.nodes().map(async function(e){const n=t.node(e);if(void 0!==s){const r=JSON.parse(JSON.stringify(s.clusterData));g.log.trace("Setting data for parent cluster XXX\n Node.id = ",e,"\n data=",r.height,"\nParent cluster",s.height),t.setNode(s.id,r),t.parent(e)||(g.log.trace("Setting parent",e,s.id),t.setParent(e,s.id,r))}if(g.log.info("(Insert) Node XXX"+e+": "+JSON.stringify(t.node(e))),n?.clusterNode){g.log.info("Cluster identified XBX",e,n.width,t.node(e));const{ranksep:a,nodesep:s}=t.graph();n.graph.setGraph({...n.graph.graph(),ranksep:a+25,nodesep:s});const l=await D({element:m,graph:n.graph,diagramType:r,id:o,parentCluster:t.node(e),siteConfig:h}),p=l.elem;(0,i.updateNodeBounds)(n,p),n.diff=l.diff||0,g.log.info("New compound node after recursive render XAX",e,"width",n.width,"height",n.height),(0,d.setNodeElem)(p,n)}else t.children(e).length>0?(g.log.trace("Cluster - the non recursive path XBX",e,n.id,n,n.width,"Graph:",t),g.log.trace((0,a.findNonClusterChild)(n.id,t)),a.clusterDb.set(n.id,{id:(0,a.findNonClusterChild)(n.id,t),node:n})):(g.log.trace("Node - the non recursive path XAX",e,m,t.node(e),p),await(0,a.insertMeasuredNode)(m,t.node(e),{config:h,dir:p}))}));const w=(0,l.__name)(async()=>{const e=t.edges().map(async function(e){const r=t.edge(e.v,e.w,e.name);if(g.log.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),g.log.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(t.edge(e))),g.log.info("Fix",a.clusterDb,"ids:",e.v,e.w,"Translating: ",a.clusterDb.get(e.v),a.clusterDb.get(e.w)),b&&r.selfLoop){if(1!==r.selfLoop.order)return;const 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};return await(0,n.insertEdgeLabel)(y,e),r.width=e.width,r.height=e.height,void(r.labelStyle=e.labelStyle)}await(0,n.insertEdgeLabel)(y,r)});await Promise.all(e)},"processEdges");await w();const{subGraphTitleTotalMargin:_}=(0,d.getSubGraphTitleMargins)(h);return{elem:L,graph:t,groups:{clusters:c,edgePaths:u,edgeLabels:y,nodes:m,rootGroups:L},diagramType:r,id:o,mergeSelfLoops:b,subGraphTitleTotalMargin:_}},"measureDagreGraph"),E=(0,l.__name)(e=>{g.log.info("############################################# XXX"),g.log.info("### Layout ### XXX"),g.log.info("############################################# XXX"),(0,h.layout)(e)},"runDagreGraphLayout"),x=(0,l.__name)((e,t,r)=>{const a=e.node(t);if(!a)return;const o={...a};return a?.clusterNode?o.y=(a.y??0)+r:e.children(t).length>0?o.height=(a.height??0)+r:o.y=(a.y??0)+r/2,o},"normalizeDagreNode"),S=(0,l.__name)((e,t)=>{y.forEach(r=>{void 0!==t[r]&&(e[r]=t[r])})},"applyDagreNodeLayout"),N=(0,l.__name)((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"),C=(0,l.__name)((e,t)=>{const{graph:r,mergeSelfLoops:o,subGraphTitleTotalMargin:n=0}=t,d=new Map(e.nodes.map(e=>[e.id,e]));(0,a.sortNodesByHierarchy)(r).forEach(e=>{const t=x(r,e,n);if(!t)return;S(r.node(e),t);const a=d.get(e);a&&S(a,t)});const i=n/2;return e.edges=w(r,i,{mergeSelfLoops:o}).map(({edge:e,start:t,end:r})=>N(e,t,r,i)),e},"applyDagreLayoutResult"),X=(0,l.__name)(async({elem:e,graph:t,groups:{clusters:r,edgePaths:i},diagramType:s,id:l,mergeSelfLoops:h,subGraphTitleTotalMargin:p})=>{let c=0;await Promise.all((0,a.sortNodesByHierarchy)(t).map(async function(e){const n=t.node(e);if(g.log.info("Position XBX => "+e+": ("+n.x,","+n.y,") width: ",n.width," height: ",n.height),n?.clusterNode)n.y+=p,g.log.info("A tainted cluster node XBX1",e,n.id,n.width,n.height,n.x,n.y,t.parent(e)),a.clusterDb.get(n.id).node=n,(0,d.positionNode)(n);else if(t.children(e).length>0){g.log.info("A pure cluster node XBX1",e,n.id,n.x,n.y,n.width,n.height,t.parent(e)),n.height+=p,t.node(n.parentId);const d=n?.padding/2||0,i=n?.labelBBox?.height||0,s=i-d||0;g.log.debug("OffsetY",s,"labelHeight",i,"halfPadding",d),await(0,o.insertCluster)(r,n),a.clusterDb.get(n.id).node=n}else{const e=t.node(n.parentId);n.y+=p/2,g.log.info("A regular node XBX1 - using the padding",n.id,"parent",n.parentId,n.width,n.height,n.x,n.y,"offsetY",n.offsetY,"parent",e,e?.offsetY,n),(0,d.positionNode)(n)}}));const u=p/2;return w(t,u,{mergeSelfLoops:h}).forEach(function({edge:e,start:r,end:o}){g.log.info("Edge "+r+" -> "+o+": "+JSON.stringify(e),e),e.points.forEach(e=>e.y+=u);const d=t.node(r),h=t.node(o),p=(0,n.insertEdge)(i,e,a.clusterDb,s,d,h,l);(0,n.positionEdgeLabel)(e,p)}),t.nodes().forEach(function(e){const r=t.node(e);g.log.info(e,r.type,r.diff),r.isGroup&&(c=r.diff)}),g.log.warn("Returning from recursive render XAX",e,c),{elem:e,diff:c}},"paintDagreLayoutCore"),D=(0,l.__name)(async e=>{const t=await _(e);return E(t.graph),await X(t)},"renderDagreSubgraph"),T=(0,l.__name)(e=>{const t=new p.Graph({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)}),g.log.debug("Edges:",e.edges),e.edges.forEach(e=>{if(e.start===e.end){const r=e.start,a=r+"---"+r+"---1",o=r+"---"+r+"---2",n=t.node(r);t.setNode(a,{domId:a,id:a,parentId:n.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),t.setParent(a,n.parentId),t.setNode(o,{domId:o,id:o,parentId:n.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),t.setParent(o,n.parentId);const d=structuredClone(e),i=structuredClone(e),s=structuredClone(e),g=structuredClone(e);i.originalEdge=d,i.selfLoop={id:d.id,order:0},s.originalEdge=d,s.selfLoop={id:d.id,order:1},g.originalEdge=d,g.selfLoop={id:d.id,order:2},i.label="",i.arrowTypeEnd="none",i.endLabelLeft="",i.endLabelRight="",i.startLabelLeft="",i.id=r+"-cyclic-special-1",s.startLabelRight="",s.startLabelLeft="",s.endLabelLeft="",s.endLabelRight="",s.arrowTypeStart="none",s.arrowTypeEnd="none",s.id=r+"-cyclic-special-mid",g.label="",g.startLabelRight="",g.startLabelLeft="",g.arrowTypeStart="none",n.isGroup&&(i.fromCluster=r,g.toCluster=r),g.id=r+"-cyclic-special-2",g.arrowTypeStart="none",t.setEdge(r,a,i,r+"-cyclic-special-0"),t.setEdge(a,o,s,r+"-cyclic-special-1"),t.setEdge(o,r,g,r+"-cyclic-special-2")}else t.setEdge(e.start,e.end,{...e},e.id)}),(0,a.adjustClustersAndEdges)(t),{graph:t}},"prepareLayoutForDagre"),v=(0,l.__name)(async(e,{element:t,preparedLayout:r})=>{const a=r??T(e),o=(0,s.getConfig2)(),n=await _({element:t,graph:a.graph,diagramType:e.type,id:e.diagramId,parentCluster:void 0,siteConfig:o});return a.measuredLayout=n,n},"measureDagreLayout"),M=(0,l.__name)((e,t)=>{const r=t.preparedLayout?.measuredLayout;if(!r)throw new Error("runDagreLayoutCore requires measureDagreLayout to run first");return E(r.graph),C(e,r),r},"runDagreLayoutCore"),R=(0,l.__name)((e,{measure:t})=>(0,a.sortNodesByHierarchy)(t.graph).map(e=>t.graph.node(e)).filter(Boolean),"getDagrePaintNodes"),P=(0,l.__name)((e,t,{measure:r})=>e?r.graph.node(e):void 0,"getDagreEdgeNode"),B=(0,a.createCommonLayoutRenderer)({prepareLayout:T,measureLayout:v,runLayoutCore:M,paintOptions:{clusterDb:a.clusterDb,getNodes:R,getEdgeNode:P,skipNode:(0,l.__name)((e,{measure:t})=>!t.graph.hasNode(e.id),"skipNode"),isCluster:(0,l.__name)((e,{measure:t})=>t.graph.hasNode(e.id)&&(t.graph.children(e.id)??[]).length>0,"isCluster")}})}};
//# sourceMappingURL=27.js.map