markdown-flow-ui 0.2.35-dev.2 → 0.2.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("../../_virtual/cose-base.cjs"),Q=require("../layout-base/layout-base.cjs");var $=I.__module.exports,X;function J(){return X||(X=1,(function(W,k){(function(y,w){W.exports=w(Q.__require())})($,function(x){return(function(y){var w={};function l(n){if(w[n])return w[n].exports;var g=w[n]={i:n,l:!1,exports:{}};return y[n].call(g.exports,g,g.exports,l),g.l=!0,g.exports}return l.m=y,l.c=w,l.i=function(n){return n},l.d=function(n,g,p){l.o(n,g)||Object.defineProperty(n,g,{configurable:!1,enumerable:!0,get:p})},l.n=function(n){var g=n&&n.__esModule?function(){return n.default}:function(){return n};return l.d(g,"a",g),g},l.o=function(n,g){return Object.prototype.hasOwnProperty.call(n,g)},l.p="",l(l.s=7)})([(function(y,w){y.exports=x}),(function(y,w,l){var n=l(0).FDLayoutConstants;function g(){}for(var p in n)g[p]=n[p];g.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,g.DEFAULT_RADIAL_SEPARATION=n.DEFAULT_EDGE_LENGTH,g.DEFAULT_COMPONENT_SEPERATION=60,g.TILE=!0,g.TILING_PADDING_VERTICAL=10,g.TILING_PADDING_HORIZONTAL=10,g.TREE_REDUCTION_ON_INCREMENTAL=!1,y.exports=g}),(function(y,w,l){var n=l(0).FDLayoutEdge;function g(G,u,E){n.call(this,G,u,E)}g.prototype=Object.create(n.prototype);for(var p in n)g[p]=n[p];y.exports=g}),(function(y,w,l){var n=l(0).LGraph;function g(G,u,E){n.call(this,G,u,E)}g.prototype=Object.create(n.prototype);for(var p in n)g[p]=n[p];y.exports=g}),(function(y,w,l){var n=l(0).LGraphManager;function g(G){n.call(this,G)}g.prototype=Object.create(n.prototype);for(var p in n)g[p]=n[p];y.exports=g}),(function(y,w,l){var n=l(0).FDLayoutNode,g=l(0).IMath;function p(u,E,T,L){n.call(this,u,E,T,L)}p.prototype=Object.create(n.prototype);for(var G in n)p[G]=n[G];p.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*g.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*g.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},p.prototype.propogateDisplacementToChildren=function(u,E){for(var T=this.getChild().getNodes(),L,P=0;P<T.length;P++)L=T[P],L.getChild()==null?(L.moveBy(u,E),L.displacementX+=u,L.displacementY+=E):L.propogateDisplacementToChildren(u,E)},p.prototype.setPred1=function(u){this.pred1=u},p.prototype.getPred1=function(){return pred1},p.prototype.getPred2=function(){return pred2},p.prototype.setNext=function(u){this.next=u},p.prototype.getNext=function(){return next},p.prototype.setProcessed=function(u){this.processed=u},p.prototype.isProcessed=function(){return processed},y.exports=p}),(function(y,w,l){var n=l(0).FDLayout,g=l(4),p=l(3),G=l(5),u=l(2),E=l(1),T=l(0).FDLayoutConstants,L=l(0).LayoutConstants,P=l(0).Point,R=l(0).PointD,V=l(0).Layout,B=l(0).Integer,Z=l(0).IGeometry,j=l(0).LGraph,_=l(0).Transform;function d(){n.call(this),this.toBeTiled={}}d.prototype=Object.create(n.prototype);for(var U in n)d[U]=n[U];d.prototype.newGraphManager=function(){var t=new g(this);return this.graphManager=t,t},d.prototype.newGraph=function(t){return new p(null,this.graphManager,t)},d.prototype.newNode=function(t){return new G(this.graphManager,t)},d.prototype.newEdge=function(t){return new u(null,null,t)},d.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.isSubLayout||(E.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=E.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=E.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.springConstant=T.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=T.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=T.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=T.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=T.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=T.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1,this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/T.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=T.CONVERGENCE_CHECK_PERIOD/this.maxIterations,this.coolingAdjuster=1)},d.prototype.layout=function(){var t=L.DEFAULT_CREATE_BENDS_AS_NEEDED;return t&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},d.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(E.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),r=this.nodesWithGravity.filter(function(a){return e.has(a)});this.graphManager.setAllNodesToApplyGravitation(r)}}else{var t=this.getFlatForest();if(t.length>0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),r=this.nodesWithGravity.filter(function(i){return e.has(i)});this.graphManager.setAllNodesToApplyGravitation(r),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},d.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%T.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(o){return t.has(o)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=T.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=T.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var r=!this.isTreeGrowing&&!this.isGrowthFinished,i=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(r,i),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},d.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},r=0;r<t.length;r++){var i=t[r].rect,o=t[r].id;e[o]={id:o,x:i.getCenterX(),y:i.getCenterY(),w:i.width,h:i.height}}return e},d.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var t=!1;if(T.ANIMATE==="during")this.emit("layoutstarted");else{for(;!t;)t=this.tick();this.graphManager.updateBounds()}},d.prototype.calculateNodesToApplyGravitationTo=function(){var t=[],e,r=this.graphManager.getGraphs(),i=r.length,o;for(o=0;o<i;o++)e=r[o],e.updateConnected(),e.isConnected||(t=t.concat(e.getNodes()));return t},d.prototype.createBendpoints=function(){var t=[];t=t.concat(this.graphManager.getAllEdges());var e=new Set,r;for(r=0;r<t.length;r++){var i=t[r];if(!e.has(i)){var o=i.getSource(),a=i.getTarget();if(o==a)i.getBendpoints().push(new R),i.getBendpoints().push(new R),this.createDummyNodesForBendpoints(i),e.add(i);else{var s=[];if(s=s.concat(o.getEdgeListToNode(a)),s=s.concat(a.getEdgeListToNode(o)),!e.has(s[0])){if(s.length>1){var h;for(h=0;h<s.length;h++){var f=s[h];f.getBendpoints().push(new R),this.createDummyNodesForBendpoints(f)}}s.forEach(function(C){e.add(C)})}}}if(e.size==t.length)break}},d.prototype.positionNodesRadially=function(t){for(var e=new P(0,0),r=Math.ceil(Math.sqrt(t.length)),i=0,o=0,a=0,s=new R(0,0),h=0;h<t.length;h++){h%r==0&&(a=0,o=i,h!=0&&(o+=E.DEFAULT_COMPONENT_SEPERATION),i=0);var f=t[h],C=V.findCenterOfTree(f);e.x=a,e.y=o,s=d.radialLayout(f,C,e),s.y>i&&(i=Math.floor(s.y)),a=Math.floor(s.x+E.DEFAULT_COMPONENT_SEPERATION)}this.transform(new R(L.WORLD_CENTER_X-s.x/2,L.WORLD_CENTER_Y-s.y/2))},d.radialLayout=function(t,e,r){var i=Math.max(this.maxDiagonalInTree(t),E.DEFAULT_RADIAL_SEPARATION);d.branchRadialLayout(e,null,0,359,0,i);var o=j.calculateBounds(t),a=new _;a.setDeviceOrgX(o.getMinX()),a.setDeviceOrgY(o.getMinY()),a.setWorldOrgX(r.x),a.setWorldOrgY(r.y);for(var s=0;s<t.length;s++){var h=t[s];h.transform(a)}var f=new R(o.getMaxX(),o.getMaxY());return a.inverseTransformPoint(f)},d.branchRadialLayout=function(t,e,r,i,o,a){var s=(i-r+1)/2;s<0&&(s+=180);var h=(s+r)%360,f=h*Z.TWO_PI/360,C=o*Math.cos(f),m=o*Math.sin(f);t.setCenter(C,m);var N=[];N=N.concat(t.getEdges());var c=N.length;e!=null&&c--;for(var v=0,A=N.length,D,O=t.getEdgesBetween(e);O.length>1;){var F=O[0];O.splice(0,1);var M=N.indexOf(F);M>=0&&N.splice(M,1),A--,c--}e!=null?D=(N.indexOf(O[0])+1)%A:D=0;for(var b=Math.abs(i-r)/c,S=D;v!=c;S=++S%A){var Y=N[S].getOtherEnd(t);if(Y!=e){var H=(r+v*b)%360,K=(H+b)%360;d.branchRadialLayout(Y,t,H,K,o+a,a),v++}}},d.maxDiagonalInTree=function(t){for(var e=B.MIN_VALUE,r=0;r<t.length;r++){var i=t[r],o=i.getDiagonal();o>e&&(e=o)}return e},d.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},d.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var r=[],i=this.graphManager.getAllNodes(),o=0;o<i.length;o++){var a=i[o],s=a.getParent();this.getNodeDegreeWithChildren(a)===0&&(s.id==null||!this.getToBeTiled(s))&&r.push(a)}for(var o=0;o<r.length;o++){var a=r[o],h=a.getParent().id;typeof e[h]>"u"&&(e[h]=[]),e[h]=e[h].concat(a)}Object.keys(e).forEach(function(f){if(e[f].length>1){var C="DummyCompound_"+f;t.memberGroups[C]=e[f];var m=e[f][0].getParent(),N=new G(t.graphManager);N.id=C,N.paddingLeft=m.paddingLeft||0,N.paddingRight=m.paddingRight||0,N.paddingBottom=m.paddingBottom||0,N.paddingTop=m.paddingTop||0,t.idToDummyNode[C]=N;var c=t.getGraphManager().add(t.newGraph(),N),v=m.getChild();v.add(N);for(var A=0;A<e[f].length;A++){var D=e[f][A];v.remove(D),c.add(D)}}})},d.prototype.clearCompounds=function(){var t={},e={};this.performDFSOnCompounds();for(var r=0;r<this.compoundOrder.length;r++)e[this.compoundOrder[r].id]=this.compoundOrder[r],t[this.compoundOrder[r].id]=[].concat(this.compoundOrder[r].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[r].getChild()),this.compoundOrder[r].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(t,e)},d.prototype.clearZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(r){var i=t.idToDummyNode[r];e[r]=t.tileNodes(t.memberGroups[r],i.paddingLeft+i.paddingRight),i.rect.width=e[r].width,i.rect.height=e[r].height})},d.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;t>=0;t--){var e=this.compoundOrder[t],r=e.id,i=e.paddingLeft,o=e.paddingTop;this.adjustLocations(this.tiledMemberPack[r],e.rect.x,e.rect.y,i,o)}},d.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(r){var i=t.idToDummyNode[r],o=i.paddingLeft,a=i.paddingTop;t.adjustLocations(e[r],i.rect.x,i.rect.y,o,a)})},d.prototype.getToBeTiled=function(t){var e=t.id;if(this.toBeTiled[e]!=null)return this.toBeTiled[e];var r=t.getChild();if(r==null)return this.toBeTiled[e]=!1,!1;for(var i=r.getNodes(),o=0;o<i.length;o++){var a=i[o];if(this.getNodeDegree(a)>0)return this.toBeTiled[e]=!1,!1;if(a.getChild()==null){this.toBeTiled[a.id]=!1;continue}if(!this.getToBeTiled(a))return this.toBeTiled[e]=!1,!1}return this.toBeTiled[e]=!0,!0},d.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),r=0,i=0;i<e.length;i++){var o=e[i];o.getSource().id!==o.getTarget().id&&(r=r+1)}return r},d.prototype.getNodeDegreeWithChildren=function(t){var e=this.getNodeDegree(t);if(t.getChild()==null)return e;for(var r=t.getChild().getNodes(),i=0;i<r.length;i++){var o=r[i];e+=this.getNodeDegreeWithChildren(o)}return e},d.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},d.prototype.fillCompexOrderByDFS=function(t){for(var e=0;e<t.length;e++){var r=t[e];r.getChild()!=null&&this.fillCompexOrderByDFS(r.getChild().getNodes()),this.getToBeTiled(r)&&this.compoundOrder.push(r)}},d.prototype.adjustLocations=function(t,e,r,i,o){e+=i,r+=o;for(var a=e,s=0;s<t.rows.length;s++){var h=t.rows[s];e=a;for(var f=0,C=0;C<h.length;C++){var m=h[C];m.rect.x=e,m.rect.y=r,e+=m.rect.width+t.horizontalPadding,m.rect.height>f&&(f=m.rect.height)}r+=f+t.verticalPadding}},d.prototype.tileCompoundMembers=function(t,e){var r=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(i){var o=e[i];r.tiledMemberPack[i]=r.tileNodes(t[i],o.paddingLeft+o.paddingRight),o.rect.width=r.tiledMemberPack[i].width,o.rect.height=r.tiledMemberPack[i].height})},d.prototype.tileNodes=function(t,e){var r=E.TILING_PADDING_VERTICAL,i=E.TILING_PADDING_HORIZONTAL,o={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:r,horizontalPadding:i};t.sort(function(h,f){return h.rect.width*h.rect.height>f.rect.width*f.rect.height?-1:h.rect.width*h.rect.height<f.rect.width*f.rect.height?1:0});for(var a=0;a<t.length;a++){var s=t[a];o.rows.length==0?this.insertNodeToRow(o,s,0,e):this.canAddHorizontal(o,s.rect.width,s.rect.height)?this.insertNodeToRow(o,s,this.getShortestRowIndex(o),e):this.insertNodeToRow(o,s,o.rows.length,e),this.shiftToLastRow(o)}return o},d.prototype.insertNodeToRow=function(t,e,r,i){var o=i;if(r==t.rows.length){var a=[];t.rows.push(a),t.rowWidth.push(o),t.rowHeight.push(0)}var s=t.rowWidth[r]+e.rect.width;t.rows[r].length>0&&(s+=t.horizontalPadding),t.rowWidth[r]=s,t.width<s&&(t.width=s);var h=e.rect.height;r>0&&(h+=t.verticalPadding);var f=0;h>t.rowHeight[r]&&(f=t.rowHeight[r],t.rowHeight[r]=h,f=t.rowHeight[r]-f),t.height+=f,t.rows[r].push(e)},d.prototype.getShortestRowIndex=function(t){for(var e=-1,r=Number.MAX_VALUE,i=0;i<t.rows.length;i++)t.rowWidth[i]<r&&(e=i,r=t.rowWidth[i]);return e},d.prototype.getLongestRowIndex=function(t){for(var e=-1,r=Number.MIN_VALUE,i=0;i<t.rows.length;i++)t.rowWidth[i]>r&&(e=i,r=t.rowWidth[i]);return e},d.prototype.canAddHorizontal=function(t,e,r){var i=this.getShortestRowIndex(t);if(i<0)return!0;var o=t.rowWidth[i];if(o+t.horizontalPadding+e<=t.width)return!0;var a=0;t.rowHeight[i]<r&&i>0&&(a=r+t.verticalPadding-t.rowHeight[i]);var s;t.width-o>=e+t.horizontalPadding?s=(t.height+a)/(o+e+t.horizontalPadding):s=(t.height+a)/t.width,a=r+t.verticalPadding;var h;return t.width<e?h=(t.height+a)/e:h=(t.height+a)/t.width,h<1&&(h=1/h),s<1&&(s=1/s),s<h},d.prototype.shiftToLastRow=function(t){var e=this.getLongestRowIndex(t),r=t.rowWidth.length-1,i=t.rows[e],o=i[i.length-1],a=o.width+t.horizontalPadding;if(t.width-t.rowWidth[r]>a&&e!=r){i.splice(-1,1),t.rows[r].push(o),t.rowWidth[e]=t.rowWidth[e]-a,t.rowWidth[r]=t.rowWidth[r]+a,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,h=0;h<i.length;h++)i[h].height>s&&(s=i[h].height);e>0&&(s+=t.verticalPadding);var f=t.rowHeight[e]+t.rowHeight[r];t.rowHeight[e]=s,t.rowHeight[r]<o.height+t.verticalPadding&&(t.rowHeight[r]=o.height+t.verticalPadding);var C=t.rowHeight[e]+t.rowHeight[r];t.height+=C-f,this.shiftToLastRow(t)}},d.prototype.tilingPreLayout=function(){E.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},d.prototype.tilingPostLayout=function(){E.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},d.prototype.reduceTrees=function(){for(var t=[],e=!0,r;e;){var i=this.graphManager.getAllNodes(),o=[];e=!1;for(var a=0;a<i.length;a++)r=i[a],r.getEdges().length==1&&!r.getEdges()[0].isInterGraph&&r.getChild()==null&&(o.push([r,r.getEdges()[0],r.getOwner()]),e=!0);if(e==!0){for(var s=[],h=0;h<o.length;h++)o[h][0].getEdges().length==1&&(s.push(o[h]),o[h][0].getOwner().remove(o[h][0]));t.push(s),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=t},d.prototype.growTree=function(t){for(var e=t.length,r=t[e-1],i,o=0;o<r.length;o++)i=r[o],this.findPlaceforPrunedNode(i),i[2].add(i[0]),i[2].add(i[1],i[1].source,i[1].target);t.splice(t.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},d.prototype.findPlaceforPrunedNode=function(t){var e,r,i=t[0];i==t[1].source?r=t[1].target:r=t[1].source;var o=r.startX,a=r.finishX,s=r.startY,h=r.finishY,f=0,C=0,m=0,N=0,c=[f,m,C,N];if(s>0)for(var v=o;v<=a;v++)c[0]+=this.grid[v][s-1].length+this.grid[v][s].length-1;if(a<this.grid.length-1)for(var v=s;v<=h;v++)c[1]+=this.grid[a+1][v].length+this.grid[a][v].length-1;if(h<this.grid[0].length-1)for(var v=o;v<=a;v++)c[2]+=this.grid[v][h+1].length+this.grid[v][h].length-1;if(o>0)for(var v=s;v<=h;v++)c[3]+=this.grid[o-1][v].length+this.grid[o][v].length-1;for(var A=B.MAX_VALUE,D,O,F=0;F<c.length;F++)c[F]<A?(A=c[F],D=1,O=F):c[F]==A&&D++;if(D==3&&A==0)c[0]==0&&c[1]==0&&c[2]==0?e=1:c[0]==0&&c[1]==0&&c[3]==0?e=0:c[0]==0&&c[2]==0&&c[3]==0?e=3:c[1]==0&&c[2]==0&&c[3]==0&&(e=2);else if(D==2&&A==0){var M=Math.floor(Math.random()*2);c[0]==0&&c[1]==0?M==0?e=0:e=1:c[0]==0&&c[2]==0?M==0?e=0:e=2:c[0]==0&&c[3]==0?M==0?e=0:e=3:c[1]==0&&c[2]==0?M==0?e=1:e=2:c[1]==0&&c[3]==0?M==0?e=1:e=3:M==0?e=2:e=3}else if(D==4&&A==0){var M=Math.floor(Math.random()*4);e=M}else e=O;e==0?i.setCenter(r.getCenterX(),r.getCenterY()-r.getHeight()/2-T.DEFAULT_EDGE_LENGTH-i.getHeight()/2):e==1?i.setCenter(r.getCenterX()+r.getWidth()/2+T.DEFAULT_EDGE_LENGTH+i.getWidth()/2,r.getCenterY()):e==2?i.setCenter(r.getCenterX(),r.getCenterY()+r.getHeight()/2+T.DEFAULT_EDGE_LENGTH+i.getHeight()/2):i.setCenter(r.getCenterX()-r.getWidth()/2-T.DEFAULT_EDGE_LENGTH-i.getWidth()/2,r.getCenterY())},y.exports=d}),(function(y,w,l){var n={};n.layoutBase=l(0),n.CoSEConstants=l(1),n.CoSEEdge=l(2),n.CoSEGraph=l(3),n.CoSEGraphManager=l(4),n.CoSELayout=l(6),n.CoSENode=l(5),y.exports=n})])})})(I.__module)),I.__module.exports}exports.__require=J;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("../../_virtual/cose-base2.cjs"),Q=require("../layout-base/layout-base.cjs");var $=I.__module.exports,X;function J(){return X||(X=1,(function(W,k){(function(y,w){W.exports=w(Q.__require())})($,function(x){return(function(y){var w={};function l(n){if(w[n])return w[n].exports;var g=w[n]={i:n,l:!1,exports:{}};return y[n].call(g.exports,g,g.exports,l),g.l=!0,g.exports}return l.m=y,l.c=w,l.i=function(n){return n},l.d=function(n,g,p){l.o(n,g)||Object.defineProperty(n,g,{configurable:!1,enumerable:!0,get:p})},l.n=function(n){var g=n&&n.__esModule?function(){return n.default}:function(){return n};return l.d(g,"a",g),g},l.o=function(n,g){return Object.prototype.hasOwnProperty.call(n,g)},l.p="",l(l.s=7)})([(function(y,w){y.exports=x}),(function(y,w,l){var n=l(0).FDLayoutConstants;function g(){}for(var p in n)g[p]=n[p];g.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,g.DEFAULT_RADIAL_SEPARATION=n.DEFAULT_EDGE_LENGTH,g.DEFAULT_COMPONENT_SEPERATION=60,g.TILE=!0,g.TILING_PADDING_VERTICAL=10,g.TILING_PADDING_HORIZONTAL=10,g.TREE_REDUCTION_ON_INCREMENTAL=!1,y.exports=g}),(function(y,w,l){var n=l(0).FDLayoutEdge;function g(G,u,E){n.call(this,G,u,E)}g.prototype=Object.create(n.prototype);for(var p in n)g[p]=n[p];y.exports=g}),(function(y,w,l){var n=l(0).LGraph;function g(G,u,E){n.call(this,G,u,E)}g.prototype=Object.create(n.prototype);for(var p in n)g[p]=n[p];y.exports=g}),(function(y,w,l){var n=l(0).LGraphManager;function g(G){n.call(this,G)}g.prototype=Object.create(n.prototype);for(var p in n)g[p]=n[p];y.exports=g}),(function(y,w,l){var n=l(0).FDLayoutNode,g=l(0).IMath;function p(u,E,T,L){n.call(this,u,E,T,L)}p.prototype=Object.create(n.prototype);for(var G in n)p[G]=n[G];p.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*g.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*g.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},p.prototype.propogateDisplacementToChildren=function(u,E){for(var T=this.getChild().getNodes(),L,P=0;P<T.length;P++)L=T[P],L.getChild()==null?(L.moveBy(u,E),L.displacementX+=u,L.displacementY+=E):L.propogateDisplacementToChildren(u,E)},p.prototype.setPred1=function(u){this.pred1=u},p.prototype.getPred1=function(){return pred1},p.prototype.getPred2=function(){return pred2},p.prototype.setNext=function(u){this.next=u},p.prototype.getNext=function(){return next},p.prototype.setProcessed=function(u){this.processed=u},p.prototype.isProcessed=function(){return processed},y.exports=p}),(function(y,w,l){var n=l(0).FDLayout,g=l(4),p=l(3),G=l(5),u=l(2),E=l(1),T=l(0).FDLayoutConstants,L=l(0).LayoutConstants,P=l(0).Point,R=l(0).PointD,V=l(0).Layout,B=l(0).Integer,Z=l(0).IGeometry,j=l(0).LGraph,_=l(0).Transform;function d(){n.call(this),this.toBeTiled={}}d.prototype=Object.create(n.prototype);for(var U in n)d[U]=n[U];d.prototype.newGraphManager=function(){var t=new g(this);return this.graphManager=t,t},d.prototype.newGraph=function(t){return new p(null,this.graphManager,t)},d.prototype.newNode=function(t){return new G(this.graphManager,t)},d.prototype.newEdge=function(t){return new u(null,null,t)},d.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.isSubLayout||(E.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=E.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=E.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.springConstant=T.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=T.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=T.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=T.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=T.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=T.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1,this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/T.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=T.CONVERGENCE_CHECK_PERIOD/this.maxIterations,this.coolingAdjuster=1)},d.prototype.layout=function(){var t=L.DEFAULT_CREATE_BENDS_AS_NEEDED;return t&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},d.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(E.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),r=this.nodesWithGravity.filter(function(a){return e.has(a)});this.graphManager.setAllNodesToApplyGravitation(r)}}else{var t=this.getFlatForest();if(t.length>0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),r=this.nodesWithGravity.filter(function(i){return e.has(i)});this.graphManager.setAllNodesToApplyGravitation(r),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},d.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%T.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(o){return t.has(o)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=T.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=T.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var r=!this.isTreeGrowing&&!this.isGrowthFinished,i=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(r,i),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},d.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},r=0;r<t.length;r++){var i=t[r].rect,o=t[r].id;e[o]={id:o,x:i.getCenterX(),y:i.getCenterY(),w:i.width,h:i.height}}return e},d.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var t=!1;if(T.ANIMATE==="during")this.emit("layoutstarted");else{for(;!t;)t=this.tick();this.graphManager.updateBounds()}},d.prototype.calculateNodesToApplyGravitationTo=function(){var t=[],e,r=this.graphManager.getGraphs(),i=r.length,o;for(o=0;o<i;o++)e=r[o],e.updateConnected(),e.isConnected||(t=t.concat(e.getNodes()));return t},d.prototype.createBendpoints=function(){var t=[];t=t.concat(this.graphManager.getAllEdges());var e=new Set,r;for(r=0;r<t.length;r++){var i=t[r];if(!e.has(i)){var o=i.getSource(),a=i.getTarget();if(o==a)i.getBendpoints().push(new R),i.getBendpoints().push(new R),this.createDummyNodesForBendpoints(i),e.add(i);else{var s=[];if(s=s.concat(o.getEdgeListToNode(a)),s=s.concat(a.getEdgeListToNode(o)),!e.has(s[0])){if(s.length>1){var h;for(h=0;h<s.length;h++){var f=s[h];f.getBendpoints().push(new R),this.createDummyNodesForBendpoints(f)}}s.forEach(function(C){e.add(C)})}}}if(e.size==t.length)break}},d.prototype.positionNodesRadially=function(t){for(var e=new P(0,0),r=Math.ceil(Math.sqrt(t.length)),i=0,o=0,a=0,s=new R(0,0),h=0;h<t.length;h++){h%r==0&&(a=0,o=i,h!=0&&(o+=E.DEFAULT_COMPONENT_SEPERATION),i=0);var f=t[h],C=V.findCenterOfTree(f);e.x=a,e.y=o,s=d.radialLayout(f,C,e),s.y>i&&(i=Math.floor(s.y)),a=Math.floor(s.x+E.DEFAULT_COMPONENT_SEPERATION)}this.transform(new R(L.WORLD_CENTER_X-s.x/2,L.WORLD_CENTER_Y-s.y/2))},d.radialLayout=function(t,e,r){var i=Math.max(this.maxDiagonalInTree(t),E.DEFAULT_RADIAL_SEPARATION);d.branchRadialLayout(e,null,0,359,0,i);var o=j.calculateBounds(t),a=new _;a.setDeviceOrgX(o.getMinX()),a.setDeviceOrgY(o.getMinY()),a.setWorldOrgX(r.x),a.setWorldOrgY(r.y);for(var s=0;s<t.length;s++){var h=t[s];h.transform(a)}var f=new R(o.getMaxX(),o.getMaxY());return a.inverseTransformPoint(f)},d.branchRadialLayout=function(t,e,r,i,o,a){var s=(i-r+1)/2;s<0&&(s+=180);var h=(s+r)%360,f=h*Z.TWO_PI/360,C=o*Math.cos(f),m=o*Math.sin(f);t.setCenter(C,m);var N=[];N=N.concat(t.getEdges());var c=N.length;e!=null&&c--;for(var v=0,A=N.length,D,O=t.getEdgesBetween(e);O.length>1;){var F=O[0];O.splice(0,1);var M=N.indexOf(F);M>=0&&N.splice(M,1),A--,c--}e!=null?D=(N.indexOf(O[0])+1)%A:D=0;for(var b=Math.abs(i-r)/c,S=D;v!=c;S=++S%A){var Y=N[S].getOtherEnd(t);if(Y!=e){var H=(r+v*b)%360,K=(H+b)%360;d.branchRadialLayout(Y,t,H,K,o+a,a),v++}}},d.maxDiagonalInTree=function(t){for(var e=B.MIN_VALUE,r=0;r<t.length;r++){var i=t[r],o=i.getDiagonal();o>e&&(e=o)}return e},d.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},d.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var r=[],i=this.graphManager.getAllNodes(),o=0;o<i.length;o++){var a=i[o],s=a.getParent();this.getNodeDegreeWithChildren(a)===0&&(s.id==null||!this.getToBeTiled(s))&&r.push(a)}for(var o=0;o<r.length;o++){var a=r[o],h=a.getParent().id;typeof e[h]>"u"&&(e[h]=[]),e[h]=e[h].concat(a)}Object.keys(e).forEach(function(f){if(e[f].length>1){var C="DummyCompound_"+f;t.memberGroups[C]=e[f];var m=e[f][0].getParent(),N=new G(t.graphManager);N.id=C,N.paddingLeft=m.paddingLeft||0,N.paddingRight=m.paddingRight||0,N.paddingBottom=m.paddingBottom||0,N.paddingTop=m.paddingTop||0,t.idToDummyNode[C]=N;var c=t.getGraphManager().add(t.newGraph(),N),v=m.getChild();v.add(N);for(var A=0;A<e[f].length;A++){var D=e[f][A];v.remove(D),c.add(D)}}})},d.prototype.clearCompounds=function(){var t={},e={};this.performDFSOnCompounds();for(var r=0;r<this.compoundOrder.length;r++)e[this.compoundOrder[r].id]=this.compoundOrder[r],t[this.compoundOrder[r].id]=[].concat(this.compoundOrder[r].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[r].getChild()),this.compoundOrder[r].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(t,e)},d.prototype.clearZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(r){var i=t.idToDummyNode[r];e[r]=t.tileNodes(t.memberGroups[r],i.paddingLeft+i.paddingRight),i.rect.width=e[r].width,i.rect.height=e[r].height})},d.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;t>=0;t--){var e=this.compoundOrder[t],r=e.id,i=e.paddingLeft,o=e.paddingTop;this.adjustLocations(this.tiledMemberPack[r],e.rect.x,e.rect.y,i,o)}},d.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(r){var i=t.idToDummyNode[r],o=i.paddingLeft,a=i.paddingTop;t.adjustLocations(e[r],i.rect.x,i.rect.y,o,a)})},d.prototype.getToBeTiled=function(t){var e=t.id;if(this.toBeTiled[e]!=null)return this.toBeTiled[e];var r=t.getChild();if(r==null)return this.toBeTiled[e]=!1,!1;for(var i=r.getNodes(),o=0;o<i.length;o++){var a=i[o];if(this.getNodeDegree(a)>0)return this.toBeTiled[e]=!1,!1;if(a.getChild()==null){this.toBeTiled[a.id]=!1;continue}if(!this.getToBeTiled(a))return this.toBeTiled[e]=!1,!1}return this.toBeTiled[e]=!0,!0},d.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),r=0,i=0;i<e.length;i++){var o=e[i];o.getSource().id!==o.getTarget().id&&(r=r+1)}return r},d.prototype.getNodeDegreeWithChildren=function(t){var e=this.getNodeDegree(t);if(t.getChild()==null)return e;for(var r=t.getChild().getNodes(),i=0;i<r.length;i++){var o=r[i];e+=this.getNodeDegreeWithChildren(o)}return e},d.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},d.prototype.fillCompexOrderByDFS=function(t){for(var e=0;e<t.length;e++){var r=t[e];r.getChild()!=null&&this.fillCompexOrderByDFS(r.getChild().getNodes()),this.getToBeTiled(r)&&this.compoundOrder.push(r)}},d.prototype.adjustLocations=function(t,e,r,i,o){e+=i,r+=o;for(var a=e,s=0;s<t.rows.length;s++){var h=t.rows[s];e=a;for(var f=0,C=0;C<h.length;C++){var m=h[C];m.rect.x=e,m.rect.y=r,e+=m.rect.width+t.horizontalPadding,m.rect.height>f&&(f=m.rect.height)}r+=f+t.verticalPadding}},d.prototype.tileCompoundMembers=function(t,e){var r=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(i){var o=e[i];r.tiledMemberPack[i]=r.tileNodes(t[i],o.paddingLeft+o.paddingRight),o.rect.width=r.tiledMemberPack[i].width,o.rect.height=r.tiledMemberPack[i].height})},d.prototype.tileNodes=function(t,e){var r=E.TILING_PADDING_VERTICAL,i=E.TILING_PADDING_HORIZONTAL,o={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:r,horizontalPadding:i};t.sort(function(h,f){return h.rect.width*h.rect.height>f.rect.width*f.rect.height?-1:h.rect.width*h.rect.height<f.rect.width*f.rect.height?1:0});for(var a=0;a<t.length;a++){var s=t[a];o.rows.length==0?this.insertNodeToRow(o,s,0,e):this.canAddHorizontal(o,s.rect.width,s.rect.height)?this.insertNodeToRow(o,s,this.getShortestRowIndex(o),e):this.insertNodeToRow(o,s,o.rows.length,e),this.shiftToLastRow(o)}return o},d.prototype.insertNodeToRow=function(t,e,r,i){var o=i;if(r==t.rows.length){var a=[];t.rows.push(a),t.rowWidth.push(o),t.rowHeight.push(0)}var s=t.rowWidth[r]+e.rect.width;t.rows[r].length>0&&(s+=t.horizontalPadding),t.rowWidth[r]=s,t.width<s&&(t.width=s);var h=e.rect.height;r>0&&(h+=t.verticalPadding);var f=0;h>t.rowHeight[r]&&(f=t.rowHeight[r],t.rowHeight[r]=h,f=t.rowHeight[r]-f),t.height+=f,t.rows[r].push(e)},d.prototype.getShortestRowIndex=function(t){for(var e=-1,r=Number.MAX_VALUE,i=0;i<t.rows.length;i++)t.rowWidth[i]<r&&(e=i,r=t.rowWidth[i]);return e},d.prototype.getLongestRowIndex=function(t){for(var e=-1,r=Number.MIN_VALUE,i=0;i<t.rows.length;i++)t.rowWidth[i]>r&&(e=i,r=t.rowWidth[i]);return e},d.prototype.canAddHorizontal=function(t,e,r){var i=this.getShortestRowIndex(t);if(i<0)return!0;var o=t.rowWidth[i];if(o+t.horizontalPadding+e<=t.width)return!0;var a=0;t.rowHeight[i]<r&&i>0&&(a=r+t.verticalPadding-t.rowHeight[i]);var s;t.width-o>=e+t.horizontalPadding?s=(t.height+a)/(o+e+t.horizontalPadding):s=(t.height+a)/t.width,a=r+t.verticalPadding;var h;return t.width<e?h=(t.height+a)/e:h=(t.height+a)/t.width,h<1&&(h=1/h),s<1&&(s=1/s),s<h},d.prototype.shiftToLastRow=function(t){var e=this.getLongestRowIndex(t),r=t.rowWidth.length-1,i=t.rows[e],o=i[i.length-1],a=o.width+t.horizontalPadding;if(t.width-t.rowWidth[r]>a&&e!=r){i.splice(-1,1),t.rows[r].push(o),t.rowWidth[e]=t.rowWidth[e]-a,t.rowWidth[r]=t.rowWidth[r]+a,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,h=0;h<i.length;h++)i[h].height>s&&(s=i[h].height);e>0&&(s+=t.verticalPadding);var f=t.rowHeight[e]+t.rowHeight[r];t.rowHeight[e]=s,t.rowHeight[r]<o.height+t.verticalPadding&&(t.rowHeight[r]=o.height+t.verticalPadding);var C=t.rowHeight[e]+t.rowHeight[r];t.height+=C-f,this.shiftToLastRow(t)}},d.prototype.tilingPreLayout=function(){E.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},d.prototype.tilingPostLayout=function(){E.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},d.prototype.reduceTrees=function(){for(var t=[],e=!0,r;e;){var i=this.graphManager.getAllNodes(),o=[];e=!1;for(var a=0;a<i.length;a++)r=i[a],r.getEdges().length==1&&!r.getEdges()[0].isInterGraph&&r.getChild()==null&&(o.push([r,r.getEdges()[0],r.getOwner()]),e=!0);if(e==!0){for(var s=[],h=0;h<o.length;h++)o[h][0].getEdges().length==1&&(s.push(o[h]),o[h][0].getOwner().remove(o[h][0]));t.push(s),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=t},d.prototype.growTree=function(t){for(var e=t.length,r=t[e-1],i,o=0;o<r.length;o++)i=r[o],this.findPlaceforPrunedNode(i),i[2].add(i[0]),i[2].add(i[1],i[1].source,i[1].target);t.splice(t.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},d.prototype.findPlaceforPrunedNode=function(t){var e,r,i=t[0];i==t[1].source?r=t[1].target:r=t[1].source;var o=r.startX,a=r.finishX,s=r.startY,h=r.finishY,f=0,C=0,m=0,N=0,c=[f,m,C,N];if(s>0)for(var v=o;v<=a;v++)c[0]+=this.grid[v][s-1].length+this.grid[v][s].length-1;if(a<this.grid.length-1)for(var v=s;v<=h;v++)c[1]+=this.grid[a+1][v].length+this.grid[a][v].length-1;if(h<this.grid[0].length-1)for(var v=o;v<=a;v++)c[2]+=this.grid[v][h+1].length+this.grid[v][h].length-1;if(o>0)for(var v=s;v<=h;v++)c[3]+=this.grid[o-1][v].length+this.grid[o][v].length-1;for(var A=B.MAX_VALUE,D,O,F=0;F<c.length;F++)c[F]<A?(A=c[F],D=1,O=F):c[F]==A&&D++;if(D==3&&A==0)c[0]==0&&c[1]==0&&c[2]==0?e=1:c[0]==0&&c[1]==0&&c[3]==0?e=0:c[0]==0&&c[2]==0&&c[3]==0?e=3:c[1]==0&&c[2]==0&&c[3]==0&&(e=2);else if(D==2&&A==0){var M=Math.floor(Math.random()*2);c[0]==0&&c[1]==0?M==0?e=0:e=1:c[0]==0&&c[2]==0?M==0?e=0:e=2:c[0]==0&&c[3]==0?M==0?e=0:e=3:c[1]==0&&c[2]==0?M==0?e=1:e=2:c[1]==0&&c[3]==0?M==0?e=1:e=3:M==0?e=2:e=3}else if(D==4&&A==0){var M=Math.floor(Math.random()*4);e=M}else e=O;e==0?i.setCenter(r.getCenterX(),r.getCenterY()-r.getHeight()/2-T.DEFAULT_EDGE_LENGTH-i.getHeight()/2):e==1?i.setCenter(r.getCenterX()+r.getWidth()/2+T.DEFAULT_EDGE_LENGTH+i.getWidth()/2,r.getCenterY()):e==2?i.setCenter(r.getCenterX(),r.getCenterY()+r.getHeight()/2+T.DEFAULT_EDGE_LENGTH+i.getHeight()/2):i.setCenter(r.getCenterX()-r.getWidth()/2-T.DEFAULT_EDGE_LENGTH-i.getWidth()/2,r.getCenterY())},y.exports=d}),(function(y,w,l){var n={};n.layoutBase=l(0),n.CoSEConstants=l(1),n.CoSEEdge=l(2),n.CoSEGraph=l(3),n.CoSEGraphManager=l(4),n.CoSELayout=l(6),n.CoSENode=l(5),y.exports=n})])})})(I.__module)),I.__module.exports}exports.__require=J;
2
2
  //# sourceMappingURL=cose-base.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"cose-base.cjs","sources":["../../../node_modules/cose-base/cose-base.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"layout-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"layout-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"coseBase\"] = factory(require(\"layout-base\"));\n\telse\n\t\troot[\"coseBase\"] = factory(root[\"layoutBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutConstants = __webpack_require__(0).FDLayoutConstants;\n\nfunction CoSEConstants() {}\n\n//CoSEConstants inherits static props in FDLayoutConstants\nfor (var prop in FDLayoutConstants) {\n CoSEConstants[prop] = FDLayoutConstants[prop];\n}\n\nCoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false;\nCoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\nCoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60;\nCoSEConstants.TILE = true;\nCoSEConstants.TILING_PADDING_VERTICAL = 10;\nCoSEConstants.TILING_PADDING_HORIZONTAL = 10;\nCoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false; // make this true when cose is used incrementally as a part of other non-incremental layout\n\nmodule.exports = CoSEConstants;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutEdge = __webpack_require__(0).FDLayoutEdge;\n\nfunction CoSEEdge(source, target, vEdge) {\n FDLayoutEdge.call(this, source, target, vEdge);\n}\n\nCoSEEdge.prototype = Object.create(FDLayoutEdge.prototype);\nfor (var prop in FDLayoutEdge) {\n CoSEEdge[prop] = FDLayoutEdge[prop];\n}\n\nmodule.exports = CoSEEdge;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraph = __webpack_require__(0).LGraph;\n\nfunction CoSEGraph(parent, graphMgr, vGraph) {\n LGraph.call(this, parent, graphMgr, vGraph);\n}\n\nCoSEGraph.prototype = Object.create(LGraph.prototype);\nfor (var prop in LGraph) {\n CoSEGraph[prop] = LGraph[prop];\n}\n\nmodule.exports = CoSEGraph;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphManager = __webpack_require__(0).LGraphManager;\n\nfunction CoSEGraphManager(layout) {\n LGraphManager.call(this, layout);\n}\n\nCoSEGraphManager.prototype = Object.create(LGraphManager.prototype);\nfor (var prop in LGraphManager) {\n CoSEGraphManager[prop] = LGraphManager[prop];\n}\n\nmodule.exports = CoSEGraphManager;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutNode = __webpack_require__(0).FDLayoutNode;\nvar IMath = __webpack_require__(0).IMath;\n\nfunction CoSENode(gm, loc, size, vNode) {\n FDLayoutNode.call(this, gm, loc, size, vNode);\n}\n\nCoSENode.prototype = Object.create(FDLayoutNode.prototype);\nfor (var prop in FDLayoutNode) {\n CoSENode[prop] = FDLayoutNode[prop];\n}\n\nCoSENode.prototype.move = function () {\n var layout = this.graphManager.getLayout();\n this.displacementX = layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren;\n this.displacementY = layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren;\n\n if (Math.abs(this.displacementX) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementX = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementX);\n }\n\n if (Math.abs(this.displacementY) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementY = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementY);\n }\n\n // a simple node, just move it\n if (this.child == null) {\n this.moveBy(this.displacementX, this.displacementY);\n }\n // an empty compound node, again just move it\n else if (this.child.getNodes().length == 0) {\n this.moveBy(this.displacementX, this.displacementY);\n }\n // non-empty compound node, propogate movement to children as well\n else {\n this.propogateDisplacementToChildren(this.displacementX, this.displacementY);\n }\n\n layout.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY);\n\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n this.displacementX = 0;\n this.displacementY = 0;\n};\n\nCoSENode.prototype.propogateDisplacementToChildren = function (dX, dY) {\n var nodes = this.getChild().getNodes();\n var node;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n node.moveBy(dX, dY);\n node.displacementX += dX;\n node.displacementY += dY;\n } else {\n node.propogateDisplacementToChildren(dX, dY);\n }\n }\n};\n\nCoSENode.prototype.setPred1 = function (pred1) {\n this.pred1 = pred1;\n};\n\nCoSENode.prototype.getPred1 = function () {\n return pred1;\n};\n\nCoSENode.prototype.getPred2 = function () {\n return pred2;\n};\n\nCoSENode.prototype.setNext = function (next) {\n this.next = next;\n};\n\nCoSENode.prototype.getNext = function () {\n return next;\n};\n\nCoSENode.prototype.setProcessed = function (processed) {\n this.processed = processed;\n};\n\nCoSENode.prototype.isProcessed = function () {\n return processed;\n};\n\nmodule.exports = CoSENode;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayout = __webpack_require__(0).FDLayout;\nvar CoSEGraphManager = __webpack_require__(4);\nvar CoSEGraph = __webpack_require__(3);\nvar CoSENode = __webpack_require__(5);\nvar CoSEEdge = __webpack_require__(2);\nvar CoSEConstants = __webpack_require__(1);\nvar FDLayoutConstants = __webpack_require__(0).FDLayoutConstants;\nvar LayoutConstants = __webpack_require__(0).LayoutConstants;\nvar Point = __webpack_require__(0).Point;\nvar PointD = __webpack_require__(0).PointD;\nvar Layout = __webpack_require__(0).Layout;\nvar Integer = __webpack_require__(0).Integer;\nvar IGeometry = __webpack_require__(0).IGeometry;\nvar LGraph = __webpack_require__(0).LGraph;\nvar Transform = __webpack_require__(0).Transform;\n\nfunction CoSELayout() {\n FDLayout.call(this);\n\n this.toBeTiled = {}; // Memorize if a node is to be tiled or is tiled\n}\n\nCoSELayout.prototype = Object.create(FDLayout.prototype);\n\nfor (var prop in FDLayout) {\n CoSELayout[prop] = FDLayout[prop];\n}\n\nCoSELayout.prototype.newGraphManager = function () {\n var gm = new CoSEGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nCoSELayout.prototype.newGraph = function (vGraph) {\n return new CoSEGraph(null, this.graphManager, vGraph);\n};\n\nCoSELayout.prototype.newNode = function (vNode) {\n return new CoSENode(this.graphManager, vNode);\n};\n\nCoSELayout.prototype.newEdge = function (vEdge) {\n return new CoSEEdge(null, null, vEdge);\n};\n\nCoSELayout.prototype.initParameters = function () {\n FDLayout.prototype.initParameters.call(this, arguments);\n if (!this.isSubLayout) {\n if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) {\n this.idealEdgeLength = 10;\n } else {\n this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH;\n }\n\n this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n\n // variables for tree reduction support\n this.prunedNodesAll = [];\n this.growTreeIterations = 0;\n this.afterGrowthIterations = 0;\n this.isTreeGrowing = false;\n this.isGrowthFinished = false;\n\n // variables for cooling\n this.coolingCycle = 0;\n this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD;\n this.finalTemperature = FDLayoutConstants.CONVERGENCE_CHECK_PERIOD / this.maxIterations;\n this.coolingAdjuster = 1;\n }\n};\n\nCoSELayout.prototype.layout = function () {\n var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n if (createBendsAsNeeded) {\n this.createBendpoints();\n this.graphManager.resetAllEdges();\n }\n\n this.level = 0;\n return this.classicLayout();\n};\n\nCoSELayout.prototype.classicLayout = function () {\n this.nodesWithGravity = this.calculateNodesToApplyGravitationTo();\n this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity);\n this.calcNoOfChildrenForAllNodes();\n this.graphManager.calcLowestCommonAncestors();\n this.graphManager.calcInclusionTreeDepths();\n this.graphManager.getRoot().calcEstimatedSize();\n this.calcIdealEdgeLengths();\n\n if (!this.incremental) {\n var forest = this.getFlatForest();\n\n // The graph associated with this layout is flat and a forest\n if (forest.length > 0) {\n this.positionNodesRadially(forest);\n }\n // The graph associated with this layout is not flat or a forest\n else {\n // Reduce the trees when incremental mode is not enabled and graph is not a forest \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.positionNodesRandomly();\n }\n } else {\n if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) {\n // Reduce the trees in incremental mode if only this constant is set to true \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n }\n }\n\n this.initSpringEmbedder();\n this.runSpringEmbedder();\n\n return true;\n};\n\nCoSELayout.prototype.tick = function () {\n this.totalIterations++;\n\n if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.isConverged()) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n this.coolingCycle++;\n\n if (this.layoutQuality == 0) {\n // quality - \"draft\"\n this.coolingAdjuster = this.coolingCycle;\n } else if (this.layoutQuality == 1) {\n // quality - \"default\"\n this.coolingAdjuster = this.coolingCycle / 3;\n }\n\n // cooling schedule is based on http://www.btluke.com/simanf1.html -> cooling schedule 3\n this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature);\n this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor));\n }\n // Operations while tree is growing again \n if (this.isTreeGrowing) {\n if (this.growTreeIterations % 10 == 0) {\n if (this.prunedNodesAll.length > 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n this.growTree(this.prunedNodesAll);\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.graphManager.updateBounds();\n this.updateGrid();\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n } else {\n this.isTreeGrowing = false;\n this.isGrowthFinished = true;\n }\n }\n this.growTreeIterations++;\n }\n // Operations after growth is finished\n if (this.isGrowthFinished) {\n if (this.isConverged()) {\n return true;\n }\n if (this.afterGrowthIterations % 10 == 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n }\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100);\n this.afterGrowthIterations++;\n }\n\n var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished;\n var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished;\n\n this.totalDisplacement = 0;\n this.graphManager.updateBounds();\n this.calcSpringForces();\n this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate);\n this.calcGravitationalForces();\n this.moveNodes();\n this.animate();\n\n return false; // Layout is not ended yet return false\n};\n\nCoSELayout.prototype.getPositionsData = function () {\n var allNodes = this.graphManager.getAllNodes();\n var pData = {};\n for (var i = 0; i < allNodes.length; i++) {\n var rect = allNodes[i].rect;\n var id = allNodes[i].id;\n pData[id] = {\n id: id,\n x: rect.getCenterX(),\n y: rect.getCenterY(),\n w: rect.width,\n h: rect.height\n };\n }\n\n return pData;\n};\n\nCoSELayout.prototype.runSpringEmbedder = function () {\n this.initialAnimationPeriod = 25;\n this.animationPeriod = this.initialAnimationPeriod;\n var layoutEnded = false;\n\n // If aminate option is 'during' signal that layout is supposed to start iterating\n if (FDLayoutConstants.ANIMATE === 'during') {\n this.emit('layoutstarted');\n } else {\n // If aminate option is 'during' tick() function will be called on index.js\n while (!layoutEnded) {\n layoutEnded = this.tick();\n }\n\n this.graphManager.updateBounds();\n }\n};\n\nCoSELayout.prototype.calculateNodesToApplyGravitationTo = function () {\n var nodeList = [];\n var graph;\n\n var graphs = this.graphManager.getGraphs();\n var size = graphs.length;\n var i;\n for (i = 0; i < size; i++) {\n graph = graphs[i];\n\n graph.updateConnected();\n\n if (!graph.isConnected) {\n nodeList = nodeList.concat(graph.getNodes());\n }\n }\n\n return nodeList;\n};\n\nCoSELayout.prototype.createBendpoints = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n var visited = new Set();\n var i;\n for (i = 0; i < edges.length; i++) {\n var edge = edges[i];\n\n if (!visited.has(edge)) {\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if (source == target) {\n edge.getBendpoints().push(new PointD());\n edge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(edge);\n visited.add(edge);\n } else {\n var edgeList = [];\n\n edgeList = edgeList.concat(source.getEdgeListToNode(target));\n edgeList = edgeList.concat(target.getEdgeListToNode(source));\n\n if (!visited.has(edgeList[0])) {\n if (edgeList.length > 1) {\n var k;\n for (k = 0; k < edgeList.length; k++) {\n var multiEdge = edgeList[k];\n multiEdge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(multiEdge);\n }\n }\n edgeList.forEach(function (edge) {\n visited.add(edge);\n });\n }\n }\n }\n\n if (visited.size == edges.length) {\n break;\n }\n }\n};\n\nCoSELayout.prototype.positionNodesRadially = function (forest) {\n // We tile the trees to a grid row by row; first tree starts at (0,0)\n var currentStartingPoint = new Point(0, 0);\n var numberOfColumns = Math.ceil(Math.sqrt(forest.length));\n var height = 0;\n var currentY = 0;\n var currentX = 0;\n var point = new PointD(0, 0);\n\n for (var i = 0; i < forest.length; i++) {\n if (i % numberOfColumns == 0) {\n // Start of a new row, make the x coordinate 0, increment the\n // y coordinate with the max height of the previous row\n currentX = 0;\n currentY = height;\n\n if (i != 0) {\n currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION;\n }\n\n height = 0;\n }\n\n var tree = forest[i];\n\n // Find the center of the tree\n var centerNode = Layout.findCenterOfTree(tree);\n\n // Set the staring point of the next tree\n currentStartingPoint.x = currentX;\n currentStartingPoint.y = currentY;\n\n // Do a radial layout starting with the center\n point = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint);\n\n if (point.y > height) {\n height = Math.floor(point.y);\n }\n\n currentX = Math.floor(point.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION);\n }\n\n this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point.x / 2, LayoutConstants.WORLD_CENTER_Y - point.y / 2));\n};\n\nCoSELayout.radialLayout = function (tree, centerNode, startingPoint) {\n var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION);\n CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep);\n var bounds = LGraph.calculateBounds(tree);\n\n var transform = new Transform();\n transform.setDeviceOrgX(bounds.getMinX());\n transform.setDeviceOrgY(bounds.getMinY());\n transform.setWorldOrgX(startingPoint.x);\n transform.setWorldOrgY(startingPoint.y);\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n node.transform(transform);\n }\n\n var bottomRight = new PointD(bounds.getMaxX(), bounds.getMaxY());\n\n return transform.inverseTransformPoint(bottomRight);\n};\n\nCoSELayout.branchRadialLayout = function (node, parentOfNode, startAngle, endAngle, distance, radialSeparation) {\n // First, position this node by finding its angle.\n var halfInterval = (endAngle - startAngle + 1) / 2;\n\n if (halfInterval < 0) {\n halfInterval += 180;\n }\n\n var nodeAngle = (halfInterval + startAngle) % 360;\n var teta = nodeAngle * IGeometry.TWO_PI / 360;\n\n // Make polar to java cordinate conversion.\n var cos_teta = Math.cos(teta);\n var x_ = distance * Math.cos(teta);\n var y_ = distance * Math.sin(teta);\n\n node.setCenter(x_, y_);\n\n // Traverse all neighbors of this node and recursively call this\n // function.\n var neighborEdges = [];\n neighborEdges = neighborEdges.concat(node.getEdges());\n var childCount = neighborEdges.length;\n\n if (parentOfNode != null) {\n childCount--;\n }\n\n var branchCount = 0;\n\n var incEdgesCount = neighborEdges.length;\n var startIndex;\n\n var edges = node.getEdgesBetween(parentOfNode);\n\n // If there are multiple edges, prune them until there remains only one\n // edge.\n while (edges.length > 1) {\n //neighborEdges.remove(edges.remove(0));\n var temp = edges[0];\n edges.splice(0, 1);\n var index = neighborEdges.indexOf(temp);\n if (index >= 0) {\n neighborEdges.splice(index, 1);\n }\n incEdgesCount--;\n childCount--;\n }\n\n if (parentOfNode != null) {\n //assert edges.length == 1;\n startIndex = (neighborEdges.indexOf(edges[0]) + 1) % incEdgesCount;\n } else {\n startIndex = 0;\n }\n\n var stepAngle = Math.abs(endAngle - startAngle) / childCount;\n\n for (var i = startIndex; branchCount != childCount; i = ++i % incEdgesCount) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(node);\n\n // Don't back traverse to root node in current tree.\n if (currentNeighbor == parentOfNode) {\n continue;\n }\n\n var childStartAngle = (startAngle + branchCount * stepAngle) % 360;\n var childEndAngle = (childStartAngle + stepAngle) % 360;\n\n CoSELayout.branchRadialLayout(currentNeighbor, node, childStartAngle, childEndAngle, distance + radialSeparation, radialSeparation);\n\n branchCount++;\n }\n};\n\nCoSELayout.maxDiagonalInTree = function (tree) {\n var maxDiagonal = Integer.MIN_VALUE;\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n var diagonal = node.getDiagonal();\n\n if (diagonal > maxDiagonal) {\n maxDiagonal = diagonal;\n }\n }\n\n return maxDiagonal;\n};\n\nCoSELayout.prototype.calcRepulsionRange = function () {\n // formula is 2 x (level + 1) x idealEdgeLength\n return 2 * (this.level + 1) * this.idealEdgeLength;\n};\n\n// Tiling methods\n\n// Group zero degree members whose parents are not to be tiled, create dummy parents where needed and fill memberGroups by their dummp parent id's\nCoSELayout.prototype.groupZeroDegreeMembers = function () {\n var self = this;\n // array of [parent_id x oneDegreeNode_id]\n var tempMemberGroups = {}; // A temporary map of parent node and its zero degree members\n this.memberGroups = {}; // A map of dummy parent node and its zero degree members whose parents are not to be tiled\n this.idToDummyNode = {}; // A map of id to dummy node \n\n var zeroDegree = []; // List of zero degree nodes whose parents are not to be tiled\n var allNodes = this.graphManager.getAllNodes();\n\n // Fill zero degree list\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n var parent = node.getParent();\n // If a node has zero degree and its parent is not to be tiled if exists add that node to zeroDegres list\n if (this.getNodeDegreeWithChildren(node) === 0 && (parent.id == undefined || !this.getToBeTiled(parent))) {\n zeroDegree.push(node);\n }\n }\n\n // Create a map of parent node and its zero degree members\n for (var i = 0; i < zeroDegree.length; i++) {\n var node = zeroDegree[i]; // Zero degree node itself\n var p_id = node.getParent().id; // Parent id\n\n if (typeof tempMemberGroups[p_id] === \"undefined\") tempMemberGroups[p_id] = [];\n\n tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node); // Push node to the list belongs to its parent in tempMemberGroups\n }\n\n // If there are at least two nodes at a level, create a dummy compound for them\n Object.keys(tempMemberGroups).forEach(function (p_id) {\n if (tempMemberGroups[p_id].length > 1) {\n var dummyCompoundId = \"DummyCompound_\" + p_id; // The id of dummy compound which will be created soon\n self.memberGroups[dummyCompoundId] = tempMemberGroups[p_id]; // Add dummy compound to memberGroups\n\n var parent = tempMemberGroups[p_id][0].getParent(); // The parent of zero degree nodes will be the parent of new dummy compound\n\n // Create a dummy compound with calculated id\n var dummyCompound = new CoSENode(self.graphManager);\n dummyCompound.id = dummyCompoundId;\n dummyCompound.paddingLeft = parent.paddingLeft || 0;\n dummyCompound.paddingRight = parent.paddingRight || 0;\n dummyCompound.paddingBottom = parent.paddingBottom || 0;\n dummyCompound.paddingTop = parent.paddingTop || 0;\n\n self.idToDummyNode[dummyCompoundId] = dummyCompound;\n\n var dummyParentGraph = self.getGraphManager().add(self.newGraph(), dummyCompound);\n var parentGraph = parent.getChild();\n\n // Add dummy compound to parent the graph\n parentGraph.add(dummyCompound);\n\n // For each zero degree node in this level remove it from its parent graph and add it to the graph of dummy parent\n for (var i = 0; i < tempMemberGroups[p_id].length; i++) {\n var node = tempMemberGroups[p_id][i];\n\n parentGraph.remove(node);\n dummyParentGraph.add(node);\n }\n }\n });\n};\n\nCoSELayout.prototype.clearCompounds = function () {\n var childGraphMap = {};\n var idToNode = {};\n\n // Get compound ordering by finding the inner one first\n this.performDFSOnCompounds();\n\n for (var i = 0; i < this.compoundOrder.length; i++) {\n\n idToNode[this.compoundOrder[i].id] = this.compoundOrder[i];\n childGraphMap[this.compoundOrder[i].id] = [].concat(this.compoundOrder[i].getChild().getNodes());\n\n // Remove children of compounds\n this.graphManager.remove(this.compoundOrder[i].getChild());\n this.compoundOrder[i].child = null;\n }\n\n this.graphManager.resetAllNodes();\n\n // Tile the removed children\n this.tileCompoundMembers(childGraphMap, idToNode);\n};\n\nCoSELayout.prototype.clearZeroDegreeMembers = function () {\n var self = this;\n var tiledZeroDegreePack = this.tiledZeroDegreePack = [];\n\n Object.keys(this.memberGroups).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound\n\n tiledZeroDegreePack[id] = self.tileNodes(self.memberGroups[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n // Set the width and height of the dummy compound as calculated\n compoundNode.rect.width = tiledZeroDegreePack[id].width;\n compoundNode.rect.height = tiledZeroDegreePack[id].height;\n });\n};\n\nCoSELayout.prototype.repopulateCompounds = function () {\n for (var i = this.compoundOrder.length - 1; i >= 0; i--) {\n var lCompoundNode = this.compoundOrder[i];\n var id = lCompoundNode.id;\n var horizontalMargin = lCompoundNode.paddingLeft;\n var verticalMargin = lCompoundNode.paddingTop;\n\n this.adjustLocations(this.tiledMemberPack[id], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin);\n }\n};\n\nCoSELayout.prototype.repopulateZeroDegreeMembers = function () {\n var self = this;\n var tiledPack = this.tiledZeroDegreePack;\n\n Object.keys(tiledPack).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound by its id\n var horizontalMargin = compoundNode.paddingLeft;\n var verticalMargin = compoundNode.paddingTop;\n\n // Adjust the positions of nodes wrt its compound\n self.adjustLocations(tiledPack[id], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin);\n });\n};\n\nCoSELayout.prototype.getToBeTiled = function (node) {\n var id = node.id;\n //firstly check the previous results\n if (this.toBeTiled[id] != null) {\n return this.toBeTiled[id];\n }\n\n //only compound nodes are to be tiled\n var childGraph = node.getChild();\n if (childGraph == null) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n var children = childGraph.getNodes(); // Get the children nodes\n\n //a compound node is not to be tiled if all of its compound children are not to be tiled\n for (var i = 0; i < children.length; i++) {\n var theChild = children[i];\n\n if (this.getNodeDegree(theChild) > 0) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n //pass the children not having the compound structure\n if (theChild.getChild() == null) {\n this.toBeTiled[theChild.id] = false;\n continue;\n }\n\n if (!this.getToBeTiled(theChild)) {\n this.toBeTiled[id] = false;\n return false;\n }\n }\n this.toBeTiled[id] = true;\n return true;\n};\n\n// Get degree of a node depending of its edges and independent of its children\nCoSELayout.prototype.getNodeDegree = function (node) {\n var id = node.id;\n var edges = node.getEdges();\n var degree = 0;\n\n // For the edges connected\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n if (edge.getSource().id !== edge.getTarget().id) {\n degree = degree + 1;\n }\n }\n return degree;\n};\n\n// Get degree of a node with its children\nCoSELayout.prototype.getNodeDegreeWithChildren = function (node) {\n var degree = this.getNodeDegree(node);\n if (node.getChild() == null) {\n return degree;\n }\n var children = node.getChild().getNodes();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n degree += this.getNodeDegreeWithChildren(child);\n }\n return degree;\n};\n\nCoSELayout.prototype.performDFSOnCompounds = function () {\n this.compoundOrder = [];\n this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes());\n};\n\nCoSELayout.prototype.fillCompexOrderByDFS = function (children) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.getChild() != null) {\n this.fillCompexOrderByDFS(child.getChild().getNodes());\n }\n if (this.getToBeTiled(child)) {\n this.compoundOrder.push(child);\n }\n }\n};\n\n/**\n* This method places each zero degree member wrt given (x,y) coordinates (top left).\n*/\nCoSELayout.prototype.adjustLocations = function (organization, x, y, compoundHorizontalMargin, compoundVerticalMargin) {\n x += compoundHorizontalMargin;\n y += compoundVerticalMargin;\n\n var left = x;\n\n for (var i = 0; i < organization.rows.length; i++) {\n var row = organization.rows[i];\n x = left;\n var maxHeight = 0;\n\n for (var j = 0; j < row.length; j++) {\n var lnode = row[j];\n\n lnode.rect.x = x; // + lnode.rect.width / 2;\n lnode.rect.y = y; // + lnode.rect.height / 2;\n\n x += lnode.rect.width + organization.horizontalPadding;\n\n if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height;\n }\n\n y += maxHeight + organization.verticalPadding;\n }\n};\n\nCoSELayout.prototype.tileCompoundMembers = function (childGraphMap, idToNode) {\n var self = this;\n this.tiledMemberPack = [];\n\n Object.keys(childGraphMap).forEach(function (id) {\n // Get the compound node\n var compoundNode = idToNode[id];\n\n self.tiledMemberPack[id] = self.tileNodes(childGraphMap[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n compoundNode.rect.width = self.tiledMemberPack[id].width;\n compoundNode.rect.height = self.tiledMemberPack[id].height;\n });\n};\n\nCoSELayout.prototype.tileNodes = function (nodes, minWidth) {\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n var organization = {\n rows: [],\n rowWidth: [],\n rowHeight: [],\n width: 0,\n height: minWidth, // assume minHeight equals to minWidth\n verticalPadding: verticalPadding,\n horizontalPadding: horizontalPadding\n };\n\n // Sort the nodes in ascending order of their areas\n nodes.sort(function (n1, n2) {\n if (n1.rect.width * n1.rect.height > n2.rect.width * n2.rect.height) return -1;\n if (n1.rect.width * n1.rect.height < n2.rect.width * n2.rect.height) return 1;\n return 0;\n });\n\n // Create the organization -> tile members\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n if (organization.rows.length == 0) {\n this.insertNodeToRow(organization, lNode, 0, minWidth);\n } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) {\n this.insertNodeToRow(organization, lNode, this.getShortestRowIndex(organization), minWidth);\n } else {\n this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth);\n }\n\n this.shiftToLastRow(organization);\n }\n\n return organization;\n};\n\nCoSELayout.prototype.insertNodeToRow = function (organization, node, rowIndex, minWidth) {\n var minCompoundSize = minWidth;\n\n // Add new row if needed\n if (rowIndex == organization.rows.length) {\n var secondDimension = [];\n\n organization.rows.push(secondDimension);\n organization.rowWidth.push(minCompoundSize);\n organization.rowHeight.push(0);\n }\n\n // Update row width\n var w = organization.rowWidth[rowIndex] + node.rect.width;\n\n if (organization.rows[rowIndex].length > 0) {\n w += organization.horizontalPadding;\n }\n\n organization.rowWidth[rowIndex] = w;\n // Update compound width\n if (organization.width < w) {\n organization.width = w;\n }\n\n // Update height\n var h = node.rect.height;\n if (rowIndex > 0) h += organization.verticalPadding;\n\n var extraHeight = 0;\n if (h > organization.rowHeight[rowIndex]) {\n extraHeight = organization.rowHeight[rowIndex];\n organization.rowHeight[rowIndex] = h;\n extraHeight = organization.rowHeight[rowIndex] - extraHeight;\n }\n\n organization.height += extraHeight;\n\n // Insert node\n organization.rows[rowIndex].push(node);\n};\n\n//Scans the rows of an organization and returns the one with the min width\nCoSELayout.prototype.getShortestRowIndex = function (organization) {\n var r = -1;\n var min = Number.MAX_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n if (organization.rowWidth[i] < min) {\n r = i;\n min = organization.rowWidth[i];\n }\n }\n return r;\n};\n\n//Scans the rows of an organization and returns the one with the max width\nCoSELayout.prototype.getLongestRowIndex = function (organization) {\n var r = -1;\n var max = Number.MIN_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n\n if (organization.rowWidth[i] > max) {\n r = i;\n max = organization.rowWidth[i];\n }\n }\n\n return r;\n};\n\n/**\n* This method checks whether adding extra width to the organization violates\n* the aspect ratio(1) or not.\n*/\nCoSELayout.prototype.canAddHorizontal = function (organization, extraWidth, extraHeight) {\n\n var sri = this.getShortestRowIndex(organization);\n\n if (sri < 0) {\n return true;\n }\n\n var min = organization.rowWidth[sri];\n\n if (min + organization.horizontalPadding + extraWidth <= organization.width) return true;\n\n var hDiff = 0;\n\n // Adding to an existing row\n if (organization.rowHeight[sri] < extraHeight) {\n if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri];\n }\n\n var add_to_row_ratio;\n if (organization.width - min >= extraWidth + organization.horizontalPadding) {\n add_to_row_ratio = (organization.height + hDiff) / (min + extraWidth + organization.horizontalPadding);\n } else {\n add_to_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n // Adding a new row for this node\n hDiff = extraHeight + organization.verticalPadding;\n var add_new_row_ratio;\n if (organization.width < extraWidth) {\n add_new_row_ratio = (organization.height + hDiff) / extraWidth;\n } else {\n add_new_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio;\n\n if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio;\n\n return add_to_row_ratio < add_new_row_ratio;\n};\n\n//If moving the last node from the longest row and adding it to the last\n//row makes the bounding box smaller, do it.\nCoSELayout.prototype.shiftToLastRow = function (organization) {\n var longest = this.getLongestRowIndex(organization);\n var last = organization.rowWidth.length - 1;\n var row = organization.rows[longest];\n var node = row[row.length - 1];\n\n var diff = node.width + organization.horizontalPadding;\n\n // Check if there is enough space on the last row\n if (organization.width - organization.rowWidth[last] > diff && longest != last) {\n // Remove the last element of the longest row\n row.splice(-1, 1);\n\n // Push it to the last row\n organization.rows[last].push(node);\n\n organization.rowWidth[longest] = organization.rowWidth[longest] - diff;\n organization.rowWidth[last] = organization.rowWidth[last] + diff;\n organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)];\n\n // Update heights of the organization\n var maxHeight = Number.MIN_VALUE;\n for (var i = 0; i < row.length; i++) {\n if (row[i].height > maxHeight) maxHeight = row[i].height;\n }\n if (longest > 0) maxHeight += organization.verticalPadding;\n\n var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n\n organization.rowHeight[longest] = maxHeight;\n if (organization.rowHeight[last] < node.height + organization.verticalPadding) organization.rowHeight[last] = node.height + organization.verticalPadding;\n\n var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n organization.height += finalTotal - prevTotal;\n\n this.shiftToLastRow(organization);\n }\n};\n\nCoSELayout.prototype.tilingPreLayout = function () {\n if (CoSEConstants.TILE) {\n // Find zero degree nodes and create a compound for each level\n this.groupZeroDegreeMembers();\n // Tile and clear children of each compound\n this.clearCompounds();\n // Separately tile and clear zero degree nodes for each level\n this.clearZeroDegreeMembers();\n }\n};\n\nCoSELayout.prototype.tilingPostLayout = function () {\n if (CoSEConstants.TILE) {\n this.repopulateZeroDegreeMembers();\n this.repopulateCompounds();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Tree Reduction methods\n// -----------------------------------------------------------------------------\n// Reduce trees \nCoSELayout.prototype.reduceTrees = function () {\n var prunedNodesAll = [];\n var containsLeaf = true;\n var node;\n\n while (containsLeaf) {\n var allNodes = this.graphManager.getAllNodes();\n var prunedNodesInStepTemp = [];\n containsLeaf = false;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getEdges().length == 1 && !node.getEdges()[0].isInterGraph && node.getChild() == null) {\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner()]);\n containsLeaf = true;\n }\n }\n if (containsLeaf == true) {\n var prunedNodesInStep = [];\n for (var j = 0; j < prunedNodesInStepTemp.length; j++) {\n if (prunedNodesInStepTemp[j][0].getEdges().length == 1) {\n prunedNodesInStep.push(prunedNodesInStepTemp[j]);\n prunedNodesInStepTemp[j][0].getOwner().remove(prunedNodesInStepTemp[j][0]);\n }\n }\n prunedNodesAll.push(prunedNodesInStep);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n }\n }\n this.prunedNodesAll = prunedNodesAll;\n};\n\n// Grow tree one step \nCoSELayout.prototype.growTree = function (prunedNodesAll) {\n var lengthOfPrunedNodesInStep = prunedNodesAll.length;\n var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1];\n\n var nodeData;\n for (var i = 0; i < prunedNodesInStep.length; i++) {\n nodeData = prunedNodesInStep[i];\n\n this.findPlaceforPrunedNode(nodeData);\n\n nodeData[2].add(nodeData[0]);\n nodeData[2].add(nodeData[1], nodeData[1].source, nodeData[1].target);\n }\n\n prunedNodesAll.splice(prunedNodesAll.length - 1, 1);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n};\n\n// Find an appropriate position to replace pruned node, this method can be improved\nCoSELayout.prototype.findPlaceforPrunedNode = function (nodeData) {\n\n var gridForPrunedNode;\n var nodeToConnect;\n var prunedNode = nodeData[0];\n if (prunedNode == nodeData[1].source) {\n nodeToConnect = nodeData[1].target;\n } else {\n nodeToConnect = nodeData[1].source;\n }\n var startGridX = nodeToConnect.startX;\n var finishGridX = nodeToConnect.finishX;\n var startGridY = nodeToConnect.startY;\n var finishGridY = nodeToConnect.finishY;\n\n var upNodeCount = 0;\n var downNodeCount = 0;\n var rightNodeCount = 0;\n var leftNodeCount = 0;\n var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount];\n\n if (startGridY > 0) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[0] += this.grid[i][startGridY - 1].length + this.grid[i][startGridY].length - 1;\n }\n }\n if (finishGridX < this.grid.length - 1) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[1] += this.grid[finishGridX + 1][i].length + this.grid[finishGridX][i].length - 1;\n }\n }\n if (finishGridY < this.grid[0].length - 1) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[2] += this.grid[i][finishGridY + 1].length + this.grid[i][finishGridY].length - 1;\n }\n }\n if (startGridX > 0) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[3] += this.grid[startGridX - 1][i].length + this.grid[startGridX][i].length - 1;\n }\n }\n var min = Integer.MAX_VALUE;\n var minCount;\n var minIndex;\n for (var j = 0; j < controlRegions.length; j++) {\n if (controlRegions[j] < min) {\n min = controlRegions[j];\n minCount = 1;\n minIndex = j;\n } else if (controlRegions[j] == min) {\n minCount++;\n }\n }\n\n if (minCount == 3 && min == 0) {\n if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) {\n gridForPrunedNode = 1;\n } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 0;\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 3;\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 2;\n }\n } else if (minCount == 2 && min == 0) {\n var random = Math.floor(Math.random() * 2);\n if (controlRegions[0] == 0 && controlRegions[1] == 0) {\n ;\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 1;\n }\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[0] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 3;\n }\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[1] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 3;\n }\n } else {\n if (random == 0) {\n gridForPrunedNode = 2;\n } else {\n gridForPrunedNode = 3;\n }\n }\n } else if (minCount == 4 && min == 0) {\n var random = Math.floor(Math.random() * 4);\n gridForPrunedNode = random;\n } else {\n gridForPrunedNode = minIndex;\n }\n\n if (gridForPrunedNode == 0) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2);\n } else if (gridForPrunedNode == 1) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n } else if (gridForPrunedNode == 2) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2);\n } else {\n prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n }\n};\n\nmodule.exports = CoSELayout;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coseBase = {};\n\ncoseBase.layoutBase = __webpack_require__(0);\ncoseBase.CoSEConstants = __webpack_require__(1);\ncoseBase.CoSEEdge = __webpack_require__(2);\ncoseBase.CoSEGraph = __webpack_require__(3);\ncoseBase.CoSEGraphManager = __webpack_require__(4);\ncoseBase.CoSELayout = __webpack_require__(6);\ncoseBase.CoSENode = __webpack_require__(5);\n\nmodule.exports = coseBase;\n\n/***/ })\n/******/ ]);\n});"],"names":["root","factory","module","require$$0","this","__WEBPACK_EXTERNAL_MODULE_0__","modules","installedModules","__webpack_require__","moduleId","value","exports","name","getter","object","property","FDLayoutConstants","CoSEConstants","prop","FDLayoutEdge","CoSEEdge","source","target","vEdge","LGraph","CoSEGraph","parent","graphMgr","vGraph","LGraphManager","CoSEGraphManager","layout","FDLayoutNode","IMath","CoSENode","gm","loc","size","vNode","dX","dY","nodes","node","i","pred1","next","processed","FDLayout","LayoutConstants","Point","PointD","Layout","Integer","IGeometry","Transform","CoSELayout","createBendsAsNeeded","allNodes","intersection","x","forest","gridUpdateAllowed","forceToNodeSurroundingUpdate","pData","rect","id","layoutEnded","nodeList","graph","graphs","edges","visited","edge","edgeList","k","multiEdge","currentStartingPoint","numberOfColumns","height","currentY","currentX","point","tree","centerNode","startingPoint","radialSep","bounds","transform","bottomRight","parentOfNode","startAngle","endAngle","distance","radialSeparation","halfInterval","nodeAngle","teta","x_","y_","neighborEdges","childCount","branchCount","incEdgesCount","startIndex","temp","index","stepAngle","currentNeighbor","childStartAngle","childEndAngle","maxDiagonal","diagonal","self","tempMemberGroups","zeroDegree","p_id","dummyCompoundId","dummyCompound","dummyParentGraph","parentGraph","childGraphMap","idToNode","tiledZeroDegreePack","compoundNode","lCompoundNode","horizontalMargin","verticalMargin","tiledPack","childGraph","children","theChild","degree","child","organization","y","compoundHorizontalMargin","compoundVerticalMargin","left","row","maxHeight","j","lnode","minWidth","verticalPadding","horizontalPadding","n1","n2","lNode","rowIndex","minCompoundSize","secondDimension","w","extraHeight","r","min","max","extraWidth","sri","hDiff","add_to_row_ratio","add_new_row_ratio","longest","last","diff","prevTotal","finalTotal","prunedNodesAll","containsLeaf","prunedNodesInStepTemp","prunedNodesInStep","lengthOfPrunedNodesInStep","nodeData","gridForPrunedNode","nodeToConnect","prunedNode","startGridX","finishGridX","startGridY","finishGridY","upNodeCount","downNodeCount","rightNodeCount","leftNodeCount","controlRegions","minCount","minIndex","random","coseBase"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"cose-base.cjs","sources":["../../../node_modules/cose-base/cose-base.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"layout-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"layout-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"coseBase\"] = factory(require(\"layout-base\"));\n\telse\n\t\troot[\"coseBase\"] = factory(root[\"layoutBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutConstants = __webpack_require__(0).FDLayoutConstants;\n\nfunction CoSEConstants() {}\n\n//CoSEConstants inherits static props in FDLayoutConstants\nfor (var prop in FDLayoutConstants) {\n CoSEConstants[prop] = FDLayoutConstants[prop];\n}\n\nCoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false;\nCoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\nCoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60;\nCoSEConstants.TILE = true;\nCoSEConstants.TILING_PADDING_VERTICAL = 10;\nCoSEConstants.TILING_PADDING_HORIZONTAL = 10;\nCoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false; // make this true when cose is used incrementally as a part of other non-incremental layout\n\nmodule.exports = CoSEConstants;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutEdge = __webpack_require__(0).FDLayoutEdge;\n\nfunction CoSEEdge(source, target, vEdge) {\n FDLayoutEdge.call(this, source, target, vEdge);\n}\n\nCoSEEdge.prototype = Object.create(FDLayoutEdge.prototype);\nfor (var prop in FDLayoutEdge) {\n CoSEEdge[prop] = FDLayoutEdge[prop];\n}\n\nmodule.exports = CoSEEdge;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraph = __webpack_require__(0).LGraph;\n\nfunction CoSEGraph(parent, graphMgr, vGraph) {\n LGraph.call(this, parent, graphMgr, vGraph);\n}\n\nCoSEGraph.prototype = Object.create(LGraph.prototype);\nfor (var prop in LGraph) {\n CoSEGraph[prop] = LGraph[prop];\n}\n\nmodule.exports = CoSEGraph;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphManager = __webpack_require__(0).LGraphManager;\n\nfunction CoSEGraphManager(layout) {\n LGraphManager.call(this, layout);\n}\n\nCoSEGraphManager.prototype = Object.create(LGraphManager.prototype);\nfor (var prop in LGraphManager) {\n CoSEGraphManager[prop] = LGraphManager[prop];\n}\n\nmodule.exports = CoSEGraphManager;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutNode = __webpack_require__(0).FDLayoutNode;\nvar IMath = __webpack_require__(0).IMath;\n\nfunction CoSENode(gm, loc, size, vNode) {\n FDLayoutNode.call(this, gm, loc, size, vNode);\n}\n\nCoSENode.prototype = Object.create(FDLayoutNode.prototype);\nfor (var prop in FDLayoutNode) {\n CoSENode[prop] = FDLayoutNode[prop];\n}\n\nCoSENode.prototype.move = function () {\n var layout = this.graphManager.getLayout();\n this.displacementX = layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren;\n this.displacementY = layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren;\n\n if (Math.abs(this.displacementX) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementX = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementX);\n }\n\n if (Math.abs(this.displacementY) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementY = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementY);\n }\n\n // a simple node, just move it\n if (this.child == null) {\n this.moveBy(this.displacementX, this.displacementY);\n }\n // an empty compound node, again just move it\n else if (this.child.getNodes().length == 0) {\n this.moveBy(this.displacementX, this.displacementY);\n }\n // non-empty compound node, propogate movement to children as well\n else {\n this.propogateDisplacementToChildren(this.displacementX, this.displacementY);\n }\n\n layout.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY);\n\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n this.displacementX = 0;\n this.displacementY = 0;\n};\n\nCoSENode.prototype.propogateDisplacementToChildren = function (dX, dY) {\n var nodes = this.getChild().getNodes();\n var node;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n node.moveBy(dX, dY);\n node.displacementX += dX;\n node.displacementY += dY;\n } else {\n node.propogateDisplacementToChildren(dX, dY);\n }\n }\n};\n\nCoSENode.prototype.setPred1 = function (pred1) {\n this.pred1 = pred1;\n};\n\nCoSENode.prototype.getPred1 = function () {\n return pred1;\n};\n\nCoSENode.prototype.getPred2 = function () {\n return pred2;\n};\n\nCoSENode.prototype.setNext = function (next) {\n this.next = next;\n};\n\nCoSENode.prototype.getNext = function () {\n return next;\n};\n\nCoSENode.prototype.setProcessed = function (processed) {\n this.processed = processed;\n};\n\nCoSENode.prototype.isProcessed = function () {\n return processed;\n};\n\nmodule.exports = CoSENode;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayout = __webpack_require__(0).FDLayout;\nvar CoSEGraphManager = __webpack_require__(4);\nvar CoSEGraph = __webpack_require__(3);\nvar CoSENode = __webpack_require__(5);\nvar CoSEEdge = __webpack_require__(2);\nvar CoSEConstants = __webpack_require__(1);\nvar FDLayoutConstants = __webpack_require__(0).FDLayoutConstants;\nvar LayoutConstants = __webpack_require__(0).LayoutConstants;\nvar Point = __webpack_require__(0).Point;\nvar PointD = __webpack_require__(0).PointD;\nvar Layout = __webpack_require__(0).Layout;\nvar Integer = __webpack_require__(0).Integer;\nvar IGeometry = __webpack_require__(0).IGeometry;\nvar LGraph = __webpack_require__(0).LGraph;\nvar Transform = __webpack_require__(0).Transform;\n\nfunction CoSELayout() {\n FDLayout.call(this);\n\n this.toBeTiled = {}; // Memorize if a node is to be tiled or is tiled\n}\n\nCoSELayout.prototype = Object.create(FDLayout.prototype);\n\nfor (var prop in FDLayout) {\n CoSELayout[prop] = FDLayout[prop];\n}\n\nCoSELayout.prototype.newGraphManager = function () {\n var gm = new CoSEGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nCoSELayout.prototype.newGraph = function (vGraph) {\n return new CoSEGraph(null, this.graphManager, vGraph);\n};\n\nCoSELayout.prototype.newNode = function (vNode) {\n return new CoSENode(this.graphManager, vNode);\n};\n\nCoSELayout.prototype.newEdge = function (vEdge) {\n return new CoSEEdge(null, null, vEdge);\n};\n\nCoSELayout.prototype.initParameters = function () {\n FDLayout.prototype.initParameters.call(this, arguments);\n if (!this.isSubLayout) {\n if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) {\n this.idealEdgeLength = 10;\n } else {\n this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH;\n }\n\n this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n\n // variables for tree reduction support\n this.prunedNodesAll = [];\n this.growTreeIterations = 0;\n this.afterGrowthIterations = 0;\n this.isTreeGrowing = false;\n this.isGrowthFinished = false;\n\n // variables for cooling\n this.coolingCycle = 0;\n this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD;\n this.finalTemperature = FDLayoutConstants.CONVERGENCE_CHECK_PERIOD / this.maxIterations;\n this.coolingAdjuster = 1;\n }\n};\n\nCoSELayout.prototype.layout = function () {\n var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n if (createBendsAsNeeded) {\n this.createBendpoints();\n this.graphManager.resetAllEdges();\n }\n\n this.level = 0;\n return this.classicLayout();\n};\n\nCoSELayout.prototype.classicLayout = function () {\n this.nodesWithGravity = this.calculateNodesToApplyGravitationTo();\n this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity);\n this.calcNoOfChildrenForAllNodes();\n this.graphManager.calcLowestCommonAncestors();\n this.graphManager.calcInclusionTreeDepths();\n this.graphManager.getRoot().calcEstimatedSize();\n this.calcIdealEdgeLengths();\n\n if (!this.incremental) {\n var forest = this.getFlatForest();\n\n // The graph associated with this layout is flat and a forest\n if (forest.length > 0) {\n this.positionNodesRadially(forest);\n }\n // The graph associated with this layout is not flat or a forest\n else {\n // Reduce the trees when incremental mode is not enabled and graph is not a forest \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.positionNodesRandomly();\n }\n } else {\n if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) {\n // Reduce the trees in incremental mode if only this constant is set to true \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n }\n }\n\n this.initSpringEmbedder();\n this.runSpringEmbedder();\n\n return true;\n};\n\nCoSELayout.prototype.tick = function () {\n this.totalIterations++;\n\n if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.isConverged()) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n this.coolingCycle++;\n\n if (this.layoutQuality == 0) {\n // quality - \"draft\"\n this.coolingAdjuster = this.coolingCycle;\n } else if (this.layoutQuality == 1) {\n // quality - \"default\"\n this.coolingAdjuster = this.coolingCycle / 3;\n }\n\n // cooling schedule is based on http://www.btluke.com/simanf1.html -> cooling schedule 3\n this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature);\n this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor));\n }\n // Operations while tree is growing again \n if (this.isTreeGrowing) {\n if (this.growTreeIterations % 10 == 0) {\n if (this.prunedNodesAll.length > 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n this.growTree(this.prunedNodesAll);\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.graphManager.updateBounds();\n this.updateGrid();\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n } else {\n this.isTreeGrowing = false;\n this.isGrowthFinished = true;\n }\n }\n this.growTreeIterations++;\n }\n // Operations after growth is finished\n if (this.isGrowthFinished) {\n if (this.isConverged()) {\n return true;\n }\n if (this.afterGrowthIterations % 10 == 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n }\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100);\n this.afterGrowthIterations++;\n }\n\n var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished;\n var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished;\n\n this.totalDisplacement = 0;\n this.graphManager.updateBounds();\n this.calcSpringForces();\n this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate);\n this.calcGravitationalForces();\n this.moveNodes();\n this.animate();\n\n return false; // Layout is not ended yet return false\n};\n\nCoSELayout.prototype.getPositionsData = function () {\n var allNodes = this.graphManager.getAllNodes();\n var pData = {};\n for (var i = 0; i < allNodes.length; i++) {\n var rect = allNodes[i].rect;\n var id = allNodes[i].id;\n pData[id] = {\n id: id,\n x: rect.getCenterX(),\n y: rect.getCenterY(),\n w: rect.width,\n h: rect.height\n };\n }\n\n return pData;\n};\n\nCoSELayout.prototype.runSpringEmbedder = function () {\n this.initialAnimationPeriod = 25;\n this.animationPeriod = this.initialAnimationPeriod;\n var layoutEnded = false;\n\n // If aminate option is 'during' signal that layout is supposed to start iterating\n if (FDLayoutConstants.ANIMATE === 'during') {\n this.emit('layoutstarted');\n } else {\n // If aminate option is 'during' tick() function will be called on index.js\n while (!layoutEnded) {\n layoutEnded = this.tick();\n }\n\n this.graphManager.updateBounds();\n }\n};\n\nCoSELayout.prototype.calculateNodesToApplyGravitationTo = function () {\n var nodeList = [];\n var graph;\n\n var graphs = this.graphManager.getGraphs();\n var size = graphs.length;\n var i;\n for (i = 0; i < size; i++) {\n graph = graphs[i];\n\n graph.updateConnected();\n\n if (!graph.isConnected) {\n nodeList = nodeList.concat(graph.getNodes());\n }\n }\n\n return nodeList;\n};\n\nCoSELayout.prototype.createBendpoints = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n var visited = new Set();\n var i;\n for (i = 0; i < edges.length; i++) {\n var edge = edges[i];\n\n if (!visited.has(edge)) {\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if (source == target) {\n edge.getBendpoints().push(new PointD());\n edge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(edge);\n visited.add(edge);\n } else {\n var edgeList = [];\n\n edgeList = edgeList.concat(source.getEdgeListToNode(target));\n edgeList = edgeList.concat(target.getEdgeListToNode(source));\n\n if (!visited.has(edgeList[0])) {\n if (edgeList.length > 1) {\n var k;\n for (k = 0; k < edgeList.length; k++) {\n var multiEdge = edgeList[k];\n multiEdge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(multiEdge);\n }\n }\n edgeList.forEach(function (edge) {\n visited.add(edge);\n });\n }\n }\n }\n\n if (visited.size == edges.length) {\n break;\n }\n }\n};\n\nCoSELayout.prototype.positionNodesRadially = function (forest) {\n // We tile the trees to a grid row by row; first tree starts at (0,0)\n var currentStartingPoint = new Point(0, 0);\n var numberOfColumns = Math.ceil(Math.sqrt(forest.length));\n var height = 0;\n var currentY = 0;\n var currentX = 0;\n var point = new PointD(0, 0);\n\n for (var i = 0; i < forest.length; i++) {\n if (i % numberOfColumns == 0) {\n // Start of a new row, make the x coordinate 0, increment the\n // y coordinate with the max height of the previous row\n currentX = 0;\n currentY = height;\n\n if (i != 0) {\n currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION;\n }\n\n height = 0;\n }\n\n var tree = forest[i];\n\n // Find the center of the tree\n var centerNode = Layout.findCenterOfTree(tree);\n\n // Set the staring point of the next tree\n currentStartingPoint.x = currentX;\n currentStartingPoint.y = currentY;\n\n // Do a radial layout starting with the center\n point = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint);\n\n if (point.y > height) {\n height = Math.floor(point.y);\n }\n\n currentX = Math.floor(point.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION);\n }\n\n this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point.x / 2, LayoutConstants.WORLD_CENTER_Y - point.y / 2));\n};\n\nCoSELayout.radialLayout = function (tree, centerNode, startingPoint) {\n var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION);\n CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep);\n var bounds = LGraph.calculateBounds(tree);\n\n var transform = new Transform();\n transform.setDeviceOrgX(bounds.getMinX());\n transform.setDeviceOrgY(bounds.getMinY());\n transform.setWorldOrgX(startingPoint.x);\n transform.setWorldOrgY(startingPoint.y);\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n node.transform(transform);\n }\n\n var bottomRight = new PointD(bounds.getMaxX(), bounds.getMaxY());\n\n return transform.inverseTransformPoint(bottomRight);\n};\n\nCoSELayout.branchRadialLayout = function (node, parentOfNode, startAngle, endAngle, distance, radialSeparation) {\n // First, position this node by finding its angle.\n var halfInterval = (endAngle - startAngle + 1) / 2;\n\n if (halfInterval < 0) {\n halfInterval += 180;\n }\n\n var nodeAngle = (halfInterval + startAngle) % 360;\n var teta = nodeAngle * IGeometry.TWO_PI / 360;\n\n // Make polar to java cordinate conversion.\n var cos_teta = Math.cos(teta);\n var x_ = distance * Math.cos(teta);\n var y_ = distance * Math.sin(teta);\n\n node.setCenter(x_, y_);\n\n // Traverse all neighbors of this node and recursively call this\n // function.\n var neighborEdges = [];\n neighborEdges = neighborEdges.concat(node.getEdges());\n var childCount = neighborEdges.length;\n\n if (parentOfNode != null) {\n childCount--;\n }\n\n var branchCount = 0;\n\n var incEdgesCount = neighborEdges.length;\n var startIndex;\n\n var edges = node.getEdgesBetween(parentOfNode);\n\n // If there are multiple edges, prune them until there remains only one\n // edge.\n while (edges.length > 1) {\n //neighborEdges.remove(edges.remove(0));\n var temp = edges[0];\n edges.splice(0, 1);\n var index = neighborEdges.indexOf(temp);\n if (index >= 0) {\n neighborEdges.splice(index, 1);\n }\n incEdgesCount--;\n childCount--;\n }\n\n if (parentOfNode != null) {\n //assert edges.length == 1;\n startIndex = (neighborEdges.indexOf(edges[0]) + 1) % incEdgesCount;\n } else {\n startIndex = 0;\n }\n\n var stepAngle = Math.abs(endAngle - startAngle) / childCount;\n\n for (var i = startIndex; branchCount != childCount; i = ++i % incEdgesCount) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(node);\n\n // Don't back traverse to root node in current tree.\n if (currentNeighbor == parentOfNode) {\n continue;\n }\n\n var childStartAngle = (startAngle + branchCount * stepAngle) % 360;\n var childEndAngle = (childStartAngle + stepAngle) % 360;\n\n CoSELayout.branchRadialLayout(currentNeighbor, node, childStartAngle, childEndAngle, distance + radialSeparation, radialSeparation);\n\n branchCount++;\n }\n};\n\nCoSELayout.maxDiagonalInTree = function (tree) {\n var maxDiagonal = Integer.MIN_VALUE;\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n var diagonal = node.getDiagonal();\n\n if (diagonal > maxDiagonal) {\n maxDiagonal = diagonal;\n }\n }\n\n return maxDiagonal;\n};\n\nCoSELayout.prototype.calcRepulsionRange = function () {\n // formula is 2 x (level + 1) x idealEdgeLength\n return 2 * (this.level + 1) * this.idealEdgeLength;\n};\n\n// Tiling methods\n\n// Group zero degree members whose parents are not to be tiled, create dummy parents where needed and fill memberGroups by their dummp parent id's\nCoSELayout.prototype.groupZeroDegreeMembers = function () {\n var self = this;\n // array of [parent_id x oneDegreeNode_id]\n var tempMemberGroups = {}; // A temporary map of parent node and its zero degree members\n this.memberGroups = {}; // A map of dummy parent node and its zero degree members whose parents are not to be tiled\n this.idToDummyNode = {}; // A map of id to dummy node \n\n var zeroDegree = []; // List of zero degree nodes whose parents are not to be tiled\n var allNodes = this.graphManager.getAllNodes();\n\n // Fill zero degree list\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n var parent = node.getParent();\n // If a node has zero degree and its parent is not to be tiled if exists add that node to zeroDegres list\n if (this.getNodeDegreeWithChildren(node) === 0 && (parent.id == undefined || !this.getToBeTiled(parent))) {\n zeroDegree.push(node);\n }\n }\n\n // Create a map of parent node and its zero degree members\n for (var i = 0; i < zeroDegree.length; i++) {\n var node = zeroDegree[i]; // Zero degree node itself\n var p_id = node.getParent().id; // Parent id\n\n if (typeof tempMemberGroups[p_id] === \"undefined\") tempMemberGroups[p_id] = [];\n\n tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node); // Push node to the list belongs to its parent in tempMemberGroups\n }\n\n // If there are at least two nodes at a level, create a dummy compound for them\n Object.keys(tempMemberGroups).forEach(function (p_id) {\n if (tempMemberGroups[p_id].length > 1) {\n var dummyCompoundId = \"DummyCompound_\" + p_id; // The id of dummy compound which will be created soon\n self.memberGroups[dummyCompoundId] = tempMemberGroups[p_id]; // Add dummy compound to memberGroups\n\n var parent = tempMemberGroups[p_id][0].getParent(); // The parent of zero degree nodes will be the parent of new dummy compound\n\n // Create a dummy compound with calculated id\n var dummyCompound = new CoSENode(self.graphManager);\n dummyCompound.id = dummyCompoundId;\n dummyCompound.paddingLeft = parent.paddingLeft || 0;\n dummyCompound.paddingRight = parent.paddingRight || 0;\n dummyCompound.paddingBottom = parent.paddingBottom || 0;\n dummyCompound.paddingTop = parent.paddingTop || 0;\n\n self.idToDummyNode[dummyCompoundId] = dummyCompound;\n\n var dummyParentGraph = self.getGraphManager().add(self.newGraph(), dummyCompound);\n var parentGraph = parent.getChild();\n\n // Add dummy compound to parent the graph\n parentGraph.add(dummyCompound);\n\n // For each zero degree node in this level remove it from its parent graph and add it to the graph of dummy parent\n for (var i = 0; i < tempMemberGroups[p_id].length; i++) {\n var node = tempMemberGroups[p_id][i];\n\n parentGraph.remove(node);\n dummyParentGraph.add(node);\n }\n }\n });\n};\n\nCoSELayout.prototype.clearCompounds = function () {\n var childGraphMap = {};\n var idToNode = {};\n\n // Get compound ordering by finding the inner one first\n this.performDFSOnCompounds();\n\n for (var i = 0; i < this.compoundOrder.length; i++) {\n\n idToNode[this.compoundOrder[i].id] = this.compoundOrder[i];\n childGraphMap[this.compoundOrder[i].id] = [].concat(this.compoundOrder[i].getChild().getNodes());\n\n // Remove children of compounds\n this.graphManager.remove(this.compoundOrder[i].getChild());\n this.compoundOrder[i].child = null;\n }\n\n this.graphManager.resetAllNodes();\n\n // Tile the removed children\n this.tileCompoundMembers(childGraphMap, idToNode);\n};\n\nCoSELayout.prototype.clearZeroDegreeMembers = function () {\n var self = this;\n var tiledZeroDegreePack = this.tiledZeroDegreePack = [];\n\n Object.keys(this.memberGroups).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound\n\n tiledZeroDegreePack[id] = self.tileNodes(self.memberGroups[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n // Set the width and height of the dummy compound as calculated\n compoundNode.rect.width = tiledZeroDegreePack[id].width;\n compoundNode.rect.height = tiledZeroDegreePack[id].height;\n });\n};\n\nCoSELayout.prototype.repopulateCompounds = function () {\n for (var i = this.compoundOrder.length - 1; i >= 0; i--) {\n var lCompoundNode = this.compoundOrder[i];\n var id = lCompoundNode.id;\n var horizontalMargin = lCompoundNode.paddingLeft;\n var verticalMargin = lCompoundNode.paddingTop;\n\n this.adjustLocations(this.tiledMemberPack[id], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin);\n }\n};\n\nCoSELayout.prototype.repopulateZeroDegreeMembers = function () {\n var self = this;\n var tiledPack = this.tiledZeroDegreePack;\n\n Object.keys(tiledPack).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound by its id\n var horizontalMargin = compoundNode.paddingLeft;\n var verticalMargin = compoundNode.paddingTop;\n\n // Adjust the positions of nodes wrt its compound\n self.adjustLocations(tiledPack[id], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin);\n });\n};\n\nCoSELayout.prototype.getToBeTiled = function (node) {\n var id = node.id;\n //firstly check the previous results\n if (this.toBeTiled[id] != null) {\n return this.toBeTiled[id];\n }\n\n //only compound nodes are to be tiled\n var childGraph = node.getChild();\n if (childGraph == null) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n var children = childGraph.getNodes(); // Get the children nodes\n\n //a compound node is not to be tiled if all of its compound children are not to be tiled\n for (var i = 0; i < children.length; i++) {\n var theChild = children[i];\n\n if (this.getNodeDegree(theChild) > 0) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n //pass the children not having the compound structure\n if (theChild.getChild() == null) {\n this.toBeTiled[theChild.id] = false;\n continue;\n }\n\n if (!this.getToBeTiled(theChild)) {\n this.toBeTiled[id] = false;\n return false;\n }\n }\n this.toBeTiled[id] = true;\n return true;\n};\n\n// Get degree of a node depending of its edges and independent of its children\nCoSELayout.prototype.getNodeDegree = function (node) {\n var id = node.id;\n var edges = node.getEdges();\n var degree = 0;\n\n // For the edges connected\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n if (edge.getSource().id !== edge.getTarget().id) {\n degree = degree + 1;\n }\n }\n return degree;\n};\n\n// Get degree of a node with its children\nCoSELayout.prototype.getNodeDegreeWithChildren = function (node) {\n var degree = this.getNodeDegree(node);\n if (node.getChild() == null) {\n return degree;\n }\n var children = node.getChild().getNodes();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n degree += this.getNodeDegreeWithChildren(child);\n }\n return degree;\n};\n\nCoSELayout.prototype.performDFSOnCompounds = function () {\n this.compoundOrder = [];\n this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes());\n};\n\nCoSELayout.prototype.fillCompexOrderByDFS = function (children) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.getChild() != null) {\n this.fillCompexOrderByDFS(child.getChild().getNodes());\n }\n if (this.getToBeTiled(child)) {\n this.compoundOrder.push(child);\n }\n }\n};\n\n/**\n* This method places each zero degree member wrt given (x,y) coordinates (top left).\n*/\nCoSELayout.prototype.adjustLocations = function (organization, x, y, compoundHorizontalMargin, compoundVerticalMargin) {\n x += compoundHorizontalMargin;\n y += compoundVerticalMargin;\n\n var left = x;\n\n for (var i = 0; i < organization.rows.length; i++) {\n var row = organization.rows[i];\n x = left;\n var maxHeight = 0;\n\n for (var j = 0; j < row.length; j++) {\n var lnode = row[j];\n\n lnode.rect.x = x; // + lnode.rect.width / 2;\n lnode.rect.y = y; // + lnode.rect.height / 2;\n\n x += lnode.rect.width + organization.horizontalPadding;\n\n if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height;\n }\n\n y += maxHeight + organization.verticalPadding;\n }\n};\n\nCoSELayout.prototype.tileCompoundMembers = function (childGraphMap, idToNode) {\n var self = this;\n this.tiledMemberPack = [];\n\n Object.keys(childGraphMap).forEach(function (id) {\n // Get the compound node\n var compoundNode = idToNode[id];\n\n self.tiledMemberPack[id] = self.tileNodes(childGraphMap[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n compoundNode.rect.width = self.tiledMemberPack[id].width;\n compoundNode.rect.height = self.tiledMemberPack[id].height;\n });\n};\n\nCoSELayout.prototype.tileNodes = function (nodes, minWidth) {\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n var organization = {\n rows: [],\n rowWidth: [],\n rowHeight: [],\n width: 0,\n height: minWidth, // assume minHeight equals to minWidth\n verticalPadding: verticalPadding,\n horizontalPadding: horizontalPadding\n };\n\n // Sort the nodes in ascending order of their areas\n nodes.sort(function (n1, n2) {\n if (n1.rect.width * n1.rect.height > n2.rect.width * n2.rect.height) return -1;\n if (n1.rect.width * n1.rect.height < n2.rect.width * n2.rect.height) return 1;\n return 0;\n });\n\n // Create the organization -> tile members\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n if (organization.rows.length == 0) {\n this.insertNodeToRow(organization, lNode, 0, minWidth);\n } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) {\n this.insertNodeToRow(organization, lNode, this.getShortestRowIndex(organization), minWidth);\n } else {\n this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth);\n }\n\n this.shiftToLastRow(organization);\n }\n\n return organization;\n};\n\nCoSELayout.prototype.insertNodeToRow = function (organization, node, rowIndex, minWidth) {\n var minCompoundSize = minWidth;\n\n // Add new row if needed\n if (rowIndex == organization.rows.length) {\n var secondDimension = [];\n\n organization.rows.push(secondDimension);\n organization.rowWidth.push(minCompoundSize);\n organization.rowHeight.push(0);\n }\n\n // Update row width\n var w = organization.rowWidth[rowIndex] + node.rect.width;\n\n if (organization.rows[rowIndex].length > 0) {\n w += organization.horizontalPadding;\n }\n\n organization.rowWidth[rowIndex] = w;\n // Update compound width\n if (organization.width < w) {\n organization.width = w;\n }\n\n // Update height\n var h = node.rect.height;\n if (rowIndex > 0) h += organization.verticalPadding;\n\n var extraHeight = 0;\n if (h > organization.rowHeight[rowIndex]) {\n extraHeight = organization.rowHeight[rowIndex];\n organization.rowHeight[rowIndex] = h;\n extraHeight = organization.rowHeight[rowIndex] - extraHeight;\n }\n\n organization.height += extraHeight;\n\n // Insert node\n organization.rows[rowIndex].push(node);\n};\n\n//Scans the rows of an organization and returns the one with the min width\nCoSELayout.prototype.getShortestRowIndex = function (organization) {\n var r = -1;\n var min = Number.MAX_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n if (organization.rowWidth[i] < min) {\n r = i;\n min = organization.rowWidth[i];\n }\n }\n return r;\n};\n\n//Scans the rows of an organization and returns the one with the max width\nCoSELayout.prototype.getLongestRowIndex = function (organization) {\n var r = -1;\n var max = Number.MIN_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n\n if (organization.rowWidth[i] > max) {\n r = i;\n max = organization.rowWidth[i];\n }\n }\n\n return r;\n};\n\n/**\n* This method checks whether adding extra width to the organization violates\n* the aspect ratio(1) or not.\n*/\nCoSELayout.prototype.canAddHorizontal = function (organization, extraWidth, extraHeight) {\n\n var sri = this.getShortestRowIndex(organization);\n\n if (sri < 0) {\n return true;\n }\n\n var min = organization.rowWidth[sri];\n\n if (min + organization.horizontalPadding + extraWidth <= organization.width) return true;\n\n var hDiff = 0;\n\n // Adding to an existing row\n if (organization.rowHeight[sri] < extraHeight) {\n if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri];\n }\n\n var add_to_row_ratio;\n if (organization.width - min >= extraWidth + organization.horizontalPadding) {\n add_to_row_ratio = (organization.height + hDiff) / (min + extraWidth + organization.horizontalPadding);\n } else {\n add_to_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n // Adding a new row for this node\n hDiff = extraHeight + organization.verticalPadding;\n var add_new_row_ratio;\n if (organization.width < extraWidth) {\n add_new_row_ratio = (organization.height + hDiff) / extraWidth;\n } else {\n add_new_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio;\n\n if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio;\n\n return add_to_row_ratio < add_new_row_ratio;\n};\n\n//If moving the last node from the longest row and adding it to the last\n//row makes the bounding box smaller, do it.\nCoSELayout.prototype.shiftToLastRow = function (organization) {\n var longest = this.getLongestRowIndex(organization);\n var last = organization.rowWidth.length - 1;\n var row = organization.rows[longest];\n var node = row[row.length - 1];\n\n var diff = node.width + organization.horizontalPadding;\n\n // Check if there is enough space on the last row\n if (organization.width - organization.rowWidth[last] > diff && longest != last) {\n // Remove the last element of the longest row\n row.splice(-1, 1);\n\n // Push it to the last row\n organization.rows[last].push(node);\n\n organization.rowWidth[longest] = organization.rowWidth[longest] - diff;\n organization.rowWidth[last] = organization.rowWidth[last] + diff;\n organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)];\n\n // Update heights of the organization\n var maxHeight = Number.MIN_VALUE;\n for (var i = 0; i < row.length; i++) {\n if (row[i].height > maxHeight) maxHeight = row[i].height;\n }\n if (longest > 0) maxHeight += organization.verticalPadding;\n\n var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n\n organization.rowHeight[longest] = maxHeight;\n if (organization.rowHeight[last] < node.height + organization.verticalPadding) organization.rowHeight[last] = node.height + organization.verticalPadding;\n\n var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n organization.height += finalTotal - prevTotal;\n\n this.shiftToLastRow(organization);\n }\n};\n\nCoSELayout.prototype.tilingPreLayout = function () {\n if (CoSEConstants.TILE) {\n // Find zero degree nodes and create a compound for each level\n this.groupZeroDegreeMembers();\n // Tile and clear children of each compound\n this.clearCompounds();\n // Separately tile and clear zero degree nodes for each level\n this.clearZeroDegreeMembers();\n }\n};\n\nCoSELayout.prototype.tilingPostLayout = function () {\n if (CoSEConstants.TILE) {\n this.repopulateZeroDegreeMembers();\n this.repopulateCompounds();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Tree Reduction methods\n// -----------------------------------------------------------------------------\n// Reduce trees \nCoSELayout.prototype.reduceTrees = function () {\n var prunedNodesAll = [];\n var containsLeaf = true;\n var node;\n\n while (containsLeaf) {\n var allNodes = this.graphManager.getAllNodes();\n var prunedNodesInStepTemp = [];\n containsLeaf = false;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getEdges().length == 1 && !node.getEdges()[0].isInterGraph && node.getChild() == null) {\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner()]);\n containsLeaf = true;\n }\n }\n if (containsLeaf == true) {\n var prunedNodesInStep = [];\n for (var j = 0; j < prunedNodesInStepTemp.length; j++) {\n if (prunedNodesInStepTemp[j][0].getEdges().length == 1) {\n prunedNodesInStep.push(prunedNodesInStepTemp[j]);\n prunedNodesInStepTemp[j][0].getOwner().remove(prunedNodesInStepTemp[j][0]);\n }\n }\n prunedNodesAll.push(prunedNodesInStep);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n }\n }\n this.prunedNodesAll = prunedNodesAll;\n};\n\n// Grow tree one step \nCoSELayout.prototype.growTree = function (prunedNodesAll) {\n var lengthOfPrunedNodesInStep = prunedNodesAll.length;\n var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1];\n\n var nodeData;\n for (var i = 0; i < prunedNodesInStep.length; i++) {\n nodeData = prunedNodesInStep[i];\n\n this.findPlaceforPrunedNode(nodeData);\n\n nodeData[2].add(nodeData[0]);\n nodeData[2].add(nodeData[1], nodeData[1].source, nodeData[1].target);\n }\n\n prunedNodesAll.splice(prunedNodesAll.length - 1, 1);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n};\n\n// Find an appropriate position to replace pruned node, this method can be improved\nCoSELayout.prototype.findPlaceforPrunedNode = function (nodeData) {\n\n var gridForPrunedNode;\n var nodeToConnect;\n var prunedNode = nodeData[0];\n if (prunedNode == nodeData[1].source) {\n nodeToConnect = nodeData[1].target;\n } else {\n nodeToConnect = nodeData[1].source;\n }\n var startGridX = nodeToConnect.startX;\n var finishGridX = nodeToConnect.finishX;\n var startGridY = nodeToConnect.startY;\n var finishGridY = nodeToConnect.finishY;\n\n var upNodeCount = 0;\n var downNodeCount = 0;\n var rightNodeCount = 0;\n var leftNodeCount = 0;\n var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount];\n\n if (startGridY > 0) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[0] += this.grid[i][startGridY - 1].length + this.grid[i][startGridY].length - 1;\n }\n }\n if (finishGridX < this.grid.length - 1) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[1] += this.grid[finishGridX + 1][i].length + this.grid[finishGridX][i].length - 1;\n }\n }\n if (finishGridY < this.grid[0].length - 1) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[2] += this.grid[i][finishGridY + 1].length + this.grid[i][finishGridY].length - 1;\n }\n }\n if (startGridX > 0) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[3] += this.grid[startGridX - 1][i].length + this.grid[startGridX][i].length - 1;\n }\n }\n var min = Integer.MAX_VALUE;\n var minCount;\n var minIndex;\n for (var j = 0; j < controlRegions.length; j++) {\n if (controlRegions[j] < min) {\n min = controlRegions[j];\n minCount = 1;\n minIndex = j;\n } else if (controlRegions[j] == min) {\n minCount++;\n }\n }\n\n if (minCount == 3 && min == 0) {\n if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) {\n gridForPrunedNode = 1;\n } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 0;\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 3;\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 2;\n }\n } else if (minCount == 2 && min == 0) {\n var random = Math.floor(Math.random() * 2);\n if (controlRegions[0] == 0 && controlRegions[1] == 0) {\n ;\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 1;\n }\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[0] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 3;\n }\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[1] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 3;\n }\n } else {\n if (random == 0) {\n gridForPrunedNode = 2;\n } else {\n gridForPrunedNode = 3;\n }\n }\n } else if (minCount == 4 && min == 0) {\n var random = Math.floor(Math.random() * 4);\n gridForPrunedNode = random;\n } else {\n gridForPrunedNode = minIndex;\n }\n\n if (gridForPrunedNode == 0) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2);\n } else if (gridForPrunedNode == 1) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n } else if (gridForPrunedNode == 2) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2);\n } else {\n prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n }\n};\n\nmodule.exports = CoSELayout;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coseBase = {};\n\ncoseBase.layoutBase = __webpack_require__(0);\ncoseBase.CoSEConstants = __webpack_require__(1);\ncoseBase.CoSEEdge = __webpack_require__(2);\ncoseBase.CoSEGraph = __webpack_require__(3);\ncoseBase.CoSEGraphManager = __webpack_require__(4);\ncoseBase.CoSELayout = __webpack_require__(6);\ncoseBase.CoSENode = __webpack_require__(5);\n\nmodule.exports = coseBase;\n\n/***/ })\n/******/ ]);\n});"],"names":["root","factory","module","require$$0","this","__WEBPACK_EXTERNAL_MODULE_0__","modules","installedModules","__webpack_require__","moduleId","value","exports","name","getter","object","property","FDLayoutConstants","CoSEConstants","prop","FDLayoutEdge","CoSEEdge","source","target","vEdge","LGraph","CoSEGraph","parent","graphMgr","vGraph","LGraphManager","CoSEGraphManager","layout","FDLayoutNode","IMath","CoSENode","gm","loc","size","vNode","dX","dY","nodes","node","i","pred1","next","processed","FDLayout","LayoutConstants","Point","PointD","Layout","Integer","IGeometry","Transform","CoSELayout","createBendsAsNeeded","allNodes","intersection","x","forest","gridUpdateAllowed","forceToNodeSurroundingUpdate","pData","rect","id","layoutEnded","nodeList","graph","graphs","edges","visited","edge","edgeList","k","multiEdge","currentStartingPoint","numberOfColumns","height","currentY","currentX","point","tree","centerNode","startingPoint","radialSep","bounds","transform","bottomRight","parentOfNode","startAngle","endAngle","distance","radialSeparation","halfInterval","nodeAngle","teta","x_","y_","neighborEdges","childCount","branchCount","incEdgesCount","startIndex","temp","index","stepAngle","currentNeighbor","childStartAngle","childEndAngle","maxDiagonal","diagonal","self","tempMemberGroups","zeroDegree","p_id","dummyCompoundId","dummyCompound","dummyParentGraph","parentGraph","childGraphMap","idToNode","tiledZeroDegreePack","compoundNode","lCompoundNode","horizontalMargin","verticalMargin","tiledPack","childGraph","children","theChild","degree","child","organization","y","compoundHorizontalMargin","compoundVerticalMargin","left","row","maxHeight","j","lnode","minWidth","verticalPadding","horizontalPadding","n1","n2","lNode","rowIndex","minCompoundSize","secondDimension","w","extraHeight","r","min","max","extraWidth","sri","hDiff","add_to_row_ratio","add_new_row_ratio","longest","last","diff","prevTotal","finalTotal","prunedNodesAll","containsLeaf","prunedNodesInStepTemp","prunedNodesInStep","lengthOfPrunedNodesInStep","nodeData","gridForPrunedNode","nodeToConnect","prunedNode","startGridX","finishGridX","startGridY","finishGridY","upNodeCount","downNodeCount","rightNodeCount","leftNodeCount","controlRegions","minCount","minIndex","random","coseBase"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import { __module as I } from "../../_virtual/cose-base.es.js";
1
+ import { __module as I } from "../../_virtual/cose-base.es2.js";
2
2
  import { __require as $ } from "../layout-base/layout-base.es.js";
3
3
  var J = I.exports, X;
4
4
  function z() {