@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
1 lines • 46.9 kB
JavaScript
module.exports=function(i){var n={};function r(t){if(n[t])return n[t].exports;var e=n[t]={exports:{},id:t,loaded:!1};return i[t].call(e.exports,e,e.exports,r),e.loaded=!0,e.exports}return r.m=i,r.c=n,r.p="",r(0)}({0:function(t,e,i){t.exports=i(910)},3:function(t,e){t.exports=function(){throw Error("define cannot be used indirect")}},910:function(t,e,i){var n;i(3),i=[i(911)],void 0===(e="function"==typeof(n=function(){var t=window.kendo.jQuery,n=void 0,e=window.kendo,u=e.dataviz.diagram,r=u.Graph,x=u.Node,C=u.Link,s=e.deepExtend,d=u.Size,g=u.Rect,P=u.Dictionary,f=u.Set,a=u.Graph,T=u.Utils,v=u.Point,c=1e-6,o=Math.PI/180,p=T.contains,h=t.grep,i=e.Class.extend({defaultOptions:{type:"Tree",subtype:"Down",roots:null,animate:false,limitToView:false,friction:.9,nodeDistance:50,iterations:300,horizontalSeparation:90,verticalSeparation:50,underneathVerticalTopOffset:15,underneathHorizontalOffset:15,underneathVerticalSeparation:15,grid:{width:1500,offsetX:50,offsetY:50,componentSpacingX:20,componentSpacingY:20},layerSeparation:50,layeredIterations:2,startRadialAngle:0,endRadialAngle:360,radialSeparation:150,radialFirstLevelSeparation:200,keepComponentsInOneRadialLayout:false,ignoreContainers:true,layoutContainerChildren:false,ignoreInvisible:true,animateTransitions:false},init:function(){},gridLayoutComponents:function(t){if(!t)throw"No components supplied.";T.forEach(t,function(t){t.calcBounds()});t.sort(function(t,e){return e.bounds.width-t.bounds.width});var u=this.options.grid.width,f=this.options.grid.componentSpacingX,d=this.options.grid.componentSpacingY,e=0,i=this.options.grid.offsetX,g=this.options.grid.offsetY,n=i,r=g,s,a=[],c=[];while(t.length>0){if(n>=u){n=i;r+=e+d;e=0}var o=t.pop();this.moveToOffset(o,new v(n,r));for(s=0;s<o.nodes.length;s++)c.push(o.nodes[s]);for(s=0;s<o.links.length;s++)a.push(o.links[s]);var p=o.bounds;var h=p.height;if(h<=0||isNaN(h))h=0;var l=p.width;if(l<=0||isNaN(l))l=0;if(h>=e)e=h;n+=l+f}return{nodes:c,links:a}},moveToOffset:function(t,e){var i,n,r=t.bounds,s=e.x-r.x,a=e.y-r.y;for(i=0;i<t.nodes.length;i++){var u=t.nodes[i];var o=u.bounds();if(o.width===0&&o.height===0&&o.x===0&&o.y===0)o=new g(0,0,0,0);o.x+=s;o.y+=a;u.bounds(o)}for(i=0;i<t.links.length;i++){var h=t.links[i];if(h.points){var f=[];var d=h.points;for(n=0;n<d.length;n++){var l=d[n];l.x+=s;l.y+=a;f.push(l)}h.points=f}}this.currentHorizontalOffset+=r.width+this.options.grid.offsetX;return new v(s,a)},transferOptions:function(t){this.options=e.deepExtend({},this.defaultOptions);if(T.isUndefined(t))return;this.options=e.deepExtend(this.options,t||{})}}),l=e.Class.extend({init:function(t){this.nodeMap=new P;this.shapeMap=new P;this.nodes=[];this.edges=[];this.edgeMap=new P;this.finalNodes=[];this.finalLinks=[];this.ignoredConnections=[];this.ignoredShapes=[];this.hyperMap=new P;this.hyperTree=new r;this.finalGraph=null;this.diagram=t},convert:function(t){if(T.isUndefined(this.diagram))throw"No diagram to convert.";this.options=e.deepExtend({ignoreInvisible:true,ignoreContainers:true,layoutContainerChildren:false},t||{});this.clear();this._renormalizeShapes();this._renormalizeConnections();this.finalNodes=new P(this.nodes);this.finalLinks=new P(this.edges);this.finalGraph=new r;this.finalNodes.forEach(function(t){this.finalGraph.addNode(t)},this);this.finalLinks.forEach(function(t){this.finalGraph.addExistingLink(t)},this);return this.finalGraph},mapConnection:function(t){return this.edgeMap.get(t.id)},mapShape:function(t){return this.nodeMap.get(t.id)},getEdge:function(e,i){return T.first(e.links,function(t){return t.getComplement(e)===i})},clear:function(){this.finalGraph=null;this.hyperTree=!this.options.ignoreContainers&&this.options.layoutContainerChildren?new a:null;this.hyperMap=!this.options.ignoreContainers&&this.options.layoutContainerChildren?new P:null;this.nodeMap=new P;this.shapeMap=new P;this.nodes=[];this.edges=[];this.edgeMap=new P;this.ignoredConnections=[];this.ignoredShapes=[];this.finalNodes=[];this.finalLinks=[]},listToRoot:function(t){var e=[];var i=t.container;if(!i)return e;e.push(i);while(i.parentContainer){i=i.parentContainer;e.push(i)}e.reverse();return e},firstNonIgnorableContainer:function(t){if(t.isContainer&&!this._isIgnorableItem(t))return t;return!t.parentContainer?null:this.firstNonIgnorableContainer(t.parentContainer)},isContainerConnection:function(t,e){if(t.isContainer&&this.isDescendantOf(t,e))return true;return e.isContainer&&this.isDescendantOf(e,t)},isDescendantOf:function(t,e){if(!t.isContainer)throw"Expecting a container.";if(t===e)return false;if(p(t.children,e))return true;var i=[];for(var n=0,r=t.children.length;n<r;n++){var s=t.children[n];if(s.isContainer&&this.isDescendantOf(s,e))i.push(s)}return i.length>0},isIgnorableItem:function(t){if(this.options.ignoreInvisible){if(t.isCollapsed&&this._isVisible(t))return false;if(!t.isCollapsed&&this._isVisible(t))return false;return true}else return t.isCollapsed&&!this._isTop(t)},isShapeMapped:function(t){return t.isCollapsed&&!this._isVisible(t)&&!this._isTop(t)},leastCommonAncestor:function(t,e){if(!t)throw"Parameter should not be null.";if(!e)throw"Parameter should not be null.";if(!this.hyperTree)throw"No hypertree available.";var i=this.listToRoot(t);var n=this.listToRoot(e);var r=null;if(T.isEmpty(i)||T.isEmpty(n))return this.hyperTree.root.data;var s=i[0];var a=n[0];var o=0;while(s===a){r=i[o];o++;if(o>=i.length||o>=n.length)break;s=i[o];a=n[o]}if(!r)return this.hyperTree.root.data;else return h(this.hyperTree.nodes,function(t){return t.data.container===r})},_isTop:function(t){return!t.parentContainer},_isVisible:function(t){if(!t.visible())return false;return!t.parentContainer?t.visible():this._isVisible(t.parentContainer)},_isCollapsed:function(t){if(t.isContainer&&t.isCollapsed)return true;return t.parentContainer&&this._isCollapsed(t.parentContainer)},_renormalizeShapes:function(){if(this.options.ignoreContainers)for(var t=0,e=this.diagram.shapes.length;t<e;t++){var i=this.diagram.shapes[t];if(this.options.ignoreInvisible&&!this._isVisible(i)||i.isContainer){this.ignoredShapes.push(i);continue}var n=new x(i.id,i);n.isVirtual=false;this.nodeMap.add(i.id,n);this.nodes.push(n)}else throw"Containers are not supported yet, but stay tuned."},_renormalizeConnections:function(){if(this.diagram.connections.length===0)return;for(var t=0,e=this.diagram.connections.length;t<e;t++){var i=this.diagram.connections[t];if(this.isIgnorableItem(i)){this.ignoredConnections.push(i);continue}var n=!i.sourceConnector?null:i.sourceConnector.shape;var r=!i.targetConnector?null:i.targetConnector.shape;if(!n||!r){this.ignoredConnections.push(i);continue}if(p(this.ignoredShapes,n)&&!this.shapeMap.containsKey(n)){this.ignoredConnections.push(i);continue}if(p(this.ignoredShapes,r)&&!this.shapeMap.containsKey(r)){this.ignoredConnections.push(i);continue}if(this.shapeMap.containsKey(n))n=this.shapeMap[n];if(this.shapeMap.containsKey(r))r=this.shapeMap[r];var s=this.mapShape(n);var a=this.mapShape(r);if(s===a||this.areConnectedAlready(s,a)){this.ignoredConnections.push(i);continue}if(s===null||a===null)throw"A shape was not mapped to a node.";if(this.options.ignoreContainers){if(s.isVirtual||a.isVirtual){this.ignoredConnections.push(i);continue}var o=new C(s,a,i.id,i);this.edgeMap.add(i.id,o);this.edges.push(o)}else throw"Containers are not supported yet, but stay tuned."}},areConnectedAlready:function(e,i){return T.any(this.edges,function(t){return t.source===e&&t.target===i||t.source===i&&t.target===e})}}),y=i.extend({init:function(t){var e=this;i.fn.init.call(e);if(T.isUndefined(t))throw"Diagram is not specified.";this.diagram=t},layout:function(t){this.transferOptions(t);var e=new l(this.diagram);var i=e.convert(t);if(i.isEmpty())return;var n=i.getConnectedComponents();if(T.isEmpty(n))return;for(var r=0;r<n.length;r++){var s=n[r];this.layoutGraph(s,t)}var a=this.gridLayoutComponents(n);return new u.LayoutState(this.diagram,a)},layoutGraph:function(t,e){if(T.isDefined(e))this.transferOptions(e);this.graph=t;var i=this.options.nodeDistance*9;this.temperature=i;var n=this._expectedBounds();this.width=n.width;this.height=n.height;for(var r=0;r<this.options.iterations;r++){this.refineStage=r>=this.options.iterations*5/6;this.tick();this.temperature=this.refineStage?i/30:i*(1-r/(2*this.options.iterations))}},tick:function(){var t;for(t=0;t<this.graph.nodes.length;t++)this._repulsion(this.graph.nodes[t]);for(t=0;t<this.graph.links.length;t++)this._attraction(this.graph.links[t]);for(t=0;t<this.graph.nodes.length;t++){var e=this.graph.nodes[t];var i=Math.sqrt(e.dx*e.dx+e.dy*e.dy);if(i===0)return;e.x+=Math.min(i,this.temperature)*e.dx/i;e.y+=Math.min(i,this.temperature)*e.dy/i;if(this.options.limitToView){e.x=Math.min(this.width,Math.max(e.width/2,e.x));e.y=Math.min(this.height,Math.max(e.height/2,e.y))}}},_shake:function(t){var e=Math.random()*this.options.nodeDistance/4;var i=Math.random()*2*Math.PI;t.x+=e*Math.cos(i);t.y-=e*Math.sin(i)},_InverseSquareForce:function(t,e,i){var n;if(!this.refineStage)n=Math.pow(t,2)/Math.pow(this.options.nodeDistance,2);else{var r=e.x-i.x;var s=e.y-i.y;var a=e.width/2;var o=e.height/2;var h=i.width/2;var l=i.height/2;n=Math.pow(r,2)/Math.pow(a+h+this.options.nodeDistance,2)+Math.pow(s,2)/Math.pow(o+l+this.options.nodeDistance,2)}return n*4/3},_SquareForce:function(t,e,i){return 1/this._InverseSquareForce(t,e,i)},_repulsion:function(s){s.dx=0;s.dy=0;T.forEach(this.graph.nodes,function(t){if(t===s)return;while(s.x===t.x&&s.y===t.y)this._shake(t);var e=s.x-t.x;var i=s.y-t.y;var n=Math.sqrt(e*e+i*i);var r=this._SquareForce(n,s,t)*2;s.dx+=e/n*r;s.dy+=i/n*r},this)},_attraction:function(t){var e=t.target;var i=t.source;if(i===e)return;while(i.x===e.x&&i.y===e.y)this._shake(e);var n=i.x-e.x;var r=i.y-e.y;var s=Math.sqrt(n*n+r*r);var a=this._InverseSquareForce(s,i,e)*5;var o=n/s*a;var h=r/s*a;e.dx+=o;e.dy+=h;i.dx-=o;i.dy-=h},_expectedBounds:function(){var t,e=this.graph.nodes.length,i=1.5,n=4;if(e===0)return t;t=T.fold(this.graph.nodes,function(t,e){var i=e.width*e.height;if(i>0){t+=Math.sqrt(i);return t}return 0},0,this);var r=t/e;var s=r*Math.ceil(Math.sqrt(e));var a=s*Math.sqrt(i);var o=s/Math.sqrt(i);return{width:a*n,height:o*n}}}),w=e.Class.extend({init:function(t){this.center=null;this.options=t},layout:function(t,e){this.graph=t;if(!this.graph.nodes||this.graph.nodes.length===0)return;if(!p(this.graph.nodes,e))throw"The given root is not in the graph.";this.center=e;this.graph.cacheRelationships();this.layoutSwitch()},layoutLeft:function(t){this.setChildrenDirection(this.center,"Left",false);this.setChildrenLayout(this.center,"Default",false);var e=0,i=0,n,r,s;for(r=0;r<t.length;r++){s=t[r];s.TreeDirection="Left";var a=this.measure(s,d.Empty);i=Math.max(i,a.Width);e+=a.height+this.options.verticalSeparation}e-=this.options.verticalSeparation;var o=this.center.x-this.options.horizontalSeparation;n=this.center.y+(this.center.height-e)/2;for(r=0;r<t.length;r++){s=t[r];var h=new v(o-s.Size.width,n);this.arrange(s,h);n+=s.Size.height+this.options.verticalSeparation}},layoutRight:function(t){this.setChildrenDirection(this.center,"Right",false);this.setChildrenLayout(this.center,"Default",false);var e=0,i=0,n,r,s;for(r=0;r<t.length;r++){s=t[r];s.TreeDirection="Right";var a=this.measure(s,d.Empty);i=Math.max(i,a.Width);e+=a.height+this.options.verticalSeparation}e-=this.options.verticalSeparation;var o=this.center.x+this.options.horizontalSeparation+this.center.width;n=this.center.y+(this.center.height-e)/2;for(r=0;r<t.length;r++){s=t[r];var h=new v(o,n);this.arrange(s,h);n+=s.Size.height+this.options.verticalSeparation}},layoutUp:function(t){this.setChildrenDirection(this.center,"Up",false);this.setChildrenLayout(this.center,"Default",false);var e=0,i,n,r;for(r=0;r<t.length;r++){n=t[r];n.TreeDirection="Up";var s=this.measure(n,d.Empty);e+=s.width+this.options.horizontalSeparation}e-=this.options.horizontalSeparation;var a=this.center.x+this.center.width/2-e/2;for(r=0;r<t.length;r++){n=t[r];i=this.center.y-this.options.verticalSeparation-n.Size.height;var o=new v(a,i);this.arrange(n,o);a+=n.Size.width+this.options.horizontalSeparation}},layoutDown:function(t){var e,i;this.setChildrenDirection(this.center,"Down",false);this.setChildrenLayout(this.center,"Default",false);var n=0,r;for(i=0;i<t.length;i++){e=t[i];e.treeDirection="Down";var s=this.measure(e,d.Empty);n+=s.width+this.options.horizontalSeparation}n-=this.options.horizontalSeparation;var a=this.center.x+this.center.width/2-n/2;r=this.center.y+this.options.verticalSeparation+this.center.height;for(i=0;i<t.length;i++){e=t[i];var o=new v(a,r);this.arrange(e,o);a+=e.Size.width+this.options.horizontalSeparation}},layoutRadialTree:function(){this.setChildrenDirection(this.center,"Radial",false);this.setChildrenLayout(this.center,"Default",false);this.previousRoot=null;var t=this.options.startRadialAngle*o;var e=this.options.endRadialAngle*o;if(e<=t)throw"Final angle should not be less than the start angle.";this.maxDepth=0;this.origin=new v(this.center.x,this.center.y);this.calculateAngularWidth(this.center,0);if(this.maxDepth>0)this.radialLayout(this.center,this.options.radialFirstLevelSeparation,t,e);this.center.Angle=e-t},tipOverTree:function(t,e){if(T.isUndefined(e))e=0;this.setChildrenDirection(this.center,"Down",false);this.setChildrenLayout(this.center,"Default",false);this.setChildrenLayout(this.center,"Underneath",false,e);var i=0,n,r,s;for(s=0;s<t.length;s++){r=t[s];r.TreeDirection="Down";var a=this.measure(r,d.Empty);i+=a.width+this.options.horizontalSeparation}i-=this.options.horizontalSeparation;i-=t[t.length-1].width;i+=t[t.length-1].associatedShape.bounds().width;var o=this.center.x+this.center.width/2-i/2;n=this.center.y+this.options.verticalSeparation+this.center.height;for(s=0;s<t.length;s++){r=t[s];var h=new v(o,n);this.arrange(r,h);o+=r.Size.width+this.options.horizontalSeparation}},calculateAngularWidth:function(t,e){if(e>this.maxDepth)this.maxDepth=e;var i=0,n=1e3,r=1e3,s=e===0?0:Math.sqrt(n*n+r*r)/e;if(t.children.length>0){for(var a=0,o=t.children.length;a<o;a++){var h=t.children[a];i+=this.calculateAngularWidth(h,e+1)}i=Math.max(s,i)}else i=s;t.sectorAngle=i;return i},sortChildren:function(t){var e=0,i;if(t.parents.length>1)throw"Node is not part of a tree.";var n=t.parents[0];if(n){var r=new v(n.x,n.y);var s=new v(t.x,t.y);e=this.normalizeAngle(Math.atan2(r.y-s.y,r.x-s.x))}var a=t.children.length;if(a===0)return null;var o=[];var h=[];for(i=0;i<a;++i){var u=t.children[i];var l=new v(u.x,u.y);h[i]=i;o[i]=this.normalizeAngle(-e+Math.atan2(l.y-l.y,l.x-l.x))}T.bisort(o,h);var f=[];var d=t.children;for(i=0;i<a;++i)f.push(d[h[i]]);return f},normalizeAngle:function(t){while(t>Math.PI*2)t-=2*Math.PI;while(t<0)t+=Math.PI*2;return t},radialLayout:function(t,e,i,u){var n=u-i;var f=n/2;var d=t.sectorAngle;var r=0;var s=this.sortChildren(t);for(var a=0,g=s.length;a<g;a++){var o=s[a];var h=o;var l=h.sectorAngle/d;if(o.children.length>0)this.radialLayout(o,e+this.options.radialSeparation,i+r*n,i+(r+l)*n);this.setPolarLocation(o,e,i+r*n+l*f);h.angle=l*n;r+=l}},setPolarLocation:function(t,e,i){t.x=this.origin.x+e*Math.cos(i);t.y=this.origin.y+e*Math.sin(i);t.BoundingRectangle=new g(t.x,t.y,t.width,t.height)},setChildrenDirection:function(t,e,i){var n=t.treeDirection;this.graph.depthFirstTraversal(t,function(t){t.treeDirection=e});if(!i)t.treeDirection=n},setChildrenLayout:function(t,e,i,n){if(T.isUndefined(n))n=0;var r=t.childrenLayout;if(n>0){this.graph.assignLevels(t);this.graph.depthFirstTraversal(t,function(t){if(t.level>=n+1)t.childrenLayout=e})}else{this.graph.depthFirstTraversal(t,function(t){t.childrenLayout=e});if(!i)t.childrenLayout=r}},measure:function(t,e){var i=0,n=0,r;var s=new d(0,0);if(!t)throw"";var u=t.associatedShape.bounds();var a=u.width;var o=u.height;if(t.parents.length!==1)throw"Node not in a spanning tree.";var f=t.parents[0];if(t.treeDirection==="Undefined")t.treeDirection=f.treeDirection;if(T.isEmpty(t.children))s=new d(Math.abs(a)<c?50:a,Math.abs(o)<c?25:o);else if(t.children.length===1){switch(t.treeDirection){case"Radial":r=this.measure(t.children[0],e);i=a+this.options.radialSeparation*Math.cos(t.AngleToParent)+r.width;n=o+Math.abs(this.options.radialSeparation*Math.sin(t.AngleToParent))+r.height;break;case"Left":case"Right":switch(t.childrenLayout){case"TopAlignedWithParent":break;case"BottomAlignedWithParent":break;case"Underneath":r=this.measure(t.children[0],e);i=a+r.width+this.options.underneathHorizontalOffset;n=o+this.options.underneathVerticalTopOffset+r.height;break;case"Default":r=this.measure(t.children[0],e);i=a+this.options.horizontalSeparation+r.width;n=Math.max(o,r.height);break;default:throw"Unhandled TreeDirection in the Radial layout measuring."}break;case"Up":case"Down":switch(t.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":r=this.measure(t.children[0],e);i=Math.max(a,r.width+this.options.underneathHorizontalOffset);n=o+this.options.underneathVerticalTopOffset+r.height;break;case"Default":r=this.measure(t.children[0],e);n=o+this.options.verticalSeparation+r.height;i=Math.max(a,r.width);break;default:throw"Unhandled TreeDirection in the Down layout measuring."}break;default:throw"Unhandled TreeDirection in the layout measuring."}s=new d(i,n)}else{var h,l;switch(t.treeDirection){case"Left":case"Right":switch(t.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":i=a;n=o+this.options.underneathVerticalTopOffset;for(h=0;h<t.children.length;h++){l=t.children[h];r=this.measure(l,e);i=Math.max(i,r.width+this.options.underneathHorizontalOffset);n+=r.height+this.options.underneathVerticalSeparation}n-=this.options.underneathVerticalSeparation;break;case"Default":i=a;n=0;for(h=0;h<t.children.length;h++){l=t.children[h];r=this.measure(l,e);i=Math.max(i,a+this.options.horizontalSeparation+r.width);n+=r.height+this.options.verticalSeparation}n-=this.options.verticalSeparation;break;default:throw"Unhandled TreeDirection in the Right layout measuring."}break;case"Up":case"Down":switch(t.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":i=a;n=o+this.options.underneathVerticalTopOffset;for(h=0;h<t.children.length;h++){l=t.children[h];r=this.measure(l,e);i=Math.max(i,r.width+this.options.underneathHorizontalOffset);n+=r.height+this.options.underneathVerticalSeparation}n-=this.options.underneathVerticalSeparation;break;case"Default":i=0;n=0;for(h=0;h<t.children.length;h++){l=t.children[h];r=this.measure(l,e);i+=r.width+this.options.horizontalSeparation;n=Math.max(n,r.height+this.options.verticalSeparation+o)}i-=this.options.horizontalSeparation;break;default:throw"Unhandled TreeDirection in the Down layout measuring."}break;default:throw"Unhandled TreeDirection in the layout measuring."}s=new d(i,n)}t.SectorAngle=Math.sqrt(i*i/4+n*n/4);t.Size=s;return s},arrange:function(t,e){var i,n,u,r,s,f=t.associatedShape.bounds();var a=f.width;var d=f.height;if(T.isEmpty(t.children)){t.x=e.x;t.y=e.y;t.BoundingRectangle=new g(e.x,e.y,a,d)}else{var o,h;var l;switch(t.treeDirection){case"Left":switch(t.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":l=e;t.x=l.x;t.y=l.y;t.BoundingRectangle=new g(t.x,t.y,t.width,t.height);h=e.y+d+this.options.underneathVerticalTopOffset;for(i=0;i<r.children.length;i++){r=r.children[i];o=l.x-r.associatedShape.width-this.options.underneathHorizontalOffset;n=new v(o,h);this.arrange(r,n);h+=r.Size.height+this.options.underneathVerticalSeparation}break;case"Default":l=new v(e.x+t.Size.width-a,e.y+(t.Size.height-d)/2);t.x=l.x;t.y=l.y;t.BoundingRectangle=new g(t.x,t.y,t.width,t.height);o=l.x-this.options.horizontalSeparation;h=e.y;for(i=0;i<t.children.length;i++){r=t.children[i];n=new v(o-r.Size.width,h);this.arrange(r,n);h+=r.Size.height+this.options.verticalSeparation}break;default:throw"Unsupported TreeDirection"}break;case"Right":switch(t.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":l=e;t.x=l.x;t.y=l.y;t.BoundingRectangle=new g(t.x,t.y,t.width,t.height);o=e.x+a+this.options.underneathHorizontalOffset;h=e.y+d+this.options.underneathVerticalTopOffset;for(i=0;i<t.children.length;i++){r=t.children[i];n=new v(o,h);this.arrange(r,n);h+=r.Size.height+this.options.underneathVerticalSeparation}break;case"Default":l=new v(e.x,e.y+(t.Size.height-d)/2);t.x=l.x;t.y=l.y;t.BoundingRectangle=new g(t.x,t.y,t.width,t.height);o=e.x+a+this.options.horizontalSeparation;h=e.y;for(i=0;i<t.children.length;i++){r=t.children[i];n=new v(o,h);this.arrange(r,n);h+=r.Size.height+this.options.verticalSeparation}break;default:throw"Unsupported TreeDirection"}break;case"Up":l=new v(e.x+(t.Size.width-a)/2,e.y+t.Size.height-d);t.x=l.x;t.y=l.y;t.BoundingRectangle=new g(t.x,t.y,t.width,t.height);if(Math.abs(l.x-e.x)<c){s=0;for(i=0;i<t.children.length;i++){u=t.children[i];s+=u.Size.width+this.options.horizontalSeparation}s-=this.options.horizontalSeparation;o=e.x+(a-s)/2}else o=e.x;for(i=0;i<t.children.length;i++){r=t.children[i];h=l.y-this.options.verticalSeparation-r.Size.height;n=new v(o,h);this.arrange(r,n);o+=r.Size.width+this.options.horizontalSeparation}break;case"Down":switch(t.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":l=e;t.x=l.x;t.y=l.y;t.BoundingRectangle=new g(t.x,t.y,t.width,t.height);o=e.x+this.options.underneathHorizontalOffset;h=e.y+d+this.options.underneathVerticalTopOffset;for(i=0;i<t.children.length;i++){r=t.children[i];n=new v(o,h);this.arrange(r,n);h+=r.Size.height+this.options.underneathVerticalSeparation}break;case"Default":l=new v(e.x+(t.Size.width-a)/2,e.y);t.x=l.x;t.y=l.y;t.BoundingRectangle=new g(t.x,t.y,t.width,t.height);if(Math.abs(l.x-e.x)<c){s=0;for(i=0;i<t.children.length;i++){u=t.children[i];s+=u.Size.width+this.options.horizontalSeparation}s-=this.options.horizontalSeparation;o=e.x+(a-s)/2}else o=e.x;for(i=0;i<t.children.length;i++){r=t.children[i];h=l.y+this.options.verticalSeparation+d;n=new v(o,h);this.arrange(r,n);o+=r.Size.width+this.options.horizontalSeparation}break;default:throw"Unsupported TreeDirection"}break;case"None":break;default:throw"Unsupported TreeDirection"}}},layoutSwitch:function(){if(!this.center)return;if(T.isEmpty(this.center.children))return;var t=this.options.subtype;if(T.isUndefined(t))t="Down";var e,i,n,r;var s=this.center.children;switch(t.toLowerCase()){case"radial":case"radialtree":this.layoutRadialTree();break;case"mindmaphorizontal":case"mindmap":e=this.center.children;if(this.center.children.length===1)this.layoutRight(e);else{r=s.length/2;i=h(this.center.children,function(t){return T.indexOf(s,t)<r});n=h(this.center.children,function(t){return T.indexOf(s,t)>=r});this.layoutLeft(i);this.layoutRight(n)}break;case"mindmapvertical":e=this.center.children;if(this.center.children.length===1)this.layoutDown(e);else{r=s.length/2;i=h(this.center.children,function(t){return T.indexOf(s,t)<r});n=h(this.center.children,function(t){return T.indexOf(s,t)>=r});this.layoutUp(i);this.layoutDown(n)}break;case"right":this.layoutRight(this.center.children);break;case"left":this.layoutLeft(this.center.children);break;case"up":case"bottom":this.layoutUp(this.center.children);break;case"down":case"top":this.layoutDown(this.center.children);break;case"tipover":case"tipovertree":if(this.options.tipOverTreeStartLevel<0)throw"The tip-over level should be a positive integer.";this.tipOverTree(this.center.children,this.options.tipOverTreeStartLevel);break;case"undefined":case"none":break}}}),m=i.extend({init:function(t){var e=this;i.fn.init.call(e);if(T.isUndefined(t))throw"No diagram specified.";this.diagram=t},layout:function(t){this.transferOptions(t);var e=new l(this.diagram);this.graph=e.convert();var i=this.layoutComponents();return new u.LayoutState(this.diagram,i)},layoutComponents:function(){if(this.graph.isEmpty())return;var t=this.graph.getConnectedComponents();if(T.isEmpty(t))return;var e=new w(this.options);var i=[];for(var n=0;n<t.length;n++){var r=t[n];var s=this.getTree(r);if(!s)throw"Failed to find a spanning tree for the component.";var a=s.root;var o=s.tree;e.layout(o,a);i.push(o)}return this.gridLayoutComponents(i)},getTree:function(t){var e=null;if(this.options.roots&&this.options.roots.length>0)for(var i=0,n=t.nodes.length;i<n;i++){var r=t.nodes[i];for(var s=0;s<this.options.roots.length;s++){var a=this.options.roots[s];if(a===r.associatedShape){e=r;break}}}if(!e){e=t.root();if(!e)throw"Unable to find a root for the tree."}return this.getTreeForRoot(t,e)},getTreeForRoot:function(t,e){var i=t.getSpanningTree(e);if(T.isUndefined(i)||i.isEmpty())return null;return{tree:i,root:i.root}}}),S=i.extend({init:function(t){var e=this;i.fn.init.call(e);if(T.isUndefined(t))throw"Diagram is not specified.";this.diagram=t},layout:function(t){this.transferOptions(t);var e=new l(this.diagram);var i=e.convert(t);if(i.isEmpty())return;var n=i.getConnectedComponents();if(T.isEmpty(n))return;for(var r=0;r<n.length;r++){var s=n[r];this.layoutGraph(s,t)}var a=this.gridLayoutComponents(n);return new u.LayoutState(this.diagram,a)},_initRuntimeProperties:function(){for(var t=0;t<this.graph.nodes.length;t++){var e=this.graph.nodes[t];e.layer=-1;e.downstreamLinkCount=0;e.upstreamLinkCount=0;e.isVirtual=false;e.uBaryCenter=0;e.dBaryCenter=0;e.upstreamPriority=0;e.downstreamPriority=0;e.gridPosition=0}},_prepare:function(u){var e=[],t,i,n;var r=new P;var f=0;var s,a,o;T.forEach(u.nodes,function(t){if(t.incoming.length===0){r.set(t,0);e.push(t)}});while(e.length>0){a=e.shift();for(t=0;t<a.outgoing.length;t++){n=a.outgoing[t];o=n.target;if(r.containsKey(o))s=Math.max(r.get(a)+1,r.get(o));else s=r.get(a)+1;r.set(o,s);if(s>f)f=s;if(!p(e,o))e.push(o)}}var d=r.keys();d.sort(function(t,e){var i=r.get(t);var n=r.get(e);return T.sign(n-i)});for(var g=0;g<d.length;++g){var h=d[g];var c=Number.MAX_VALUE;if(h.outgoing.length===0)continue;for(i=0;i<h.outgoing.length;++i){n=h.outgoing[i];c=Math.min(c,r.get(n.target))}if(c>1)r.set(h,c-1)}this.layers=[];var l;for(t=0;t<f+1;t++){l=[];l.linksTo={};this.layers.push(l)}r.forEach(function(t,e){t.layer=e;this.layers[e].push(t)},this);for(i=0;i<this.layers.length;i++){l=this.layers[i];for(t=0;t<l.length;t++)l[t].gridPosition=t}},layoutGraph:function(t,e){if(T.isUndefined(t))throw"No graph given or graph analysis of the diagram failed.";if(T.isDefined(e))this.transferOptions(e);this.graph=t;t.setItemIndices();var i=t.makeAcyclic();this._initRuntimeProperties();this._prepare(t,e);this._dummify();this._optimizeCrossings();this._swapPairs();this.arrangeNodes();this._moveThingsAround();this._dedummify();T.forEach(i,function(t){if(t.points)t.points.reverse()})},setMinDist:function(t,e,i){var n=t.layer;var r=t.layerIndex;this.minDistances[n][r]=i},getMinDist:function(t,e){var i=0,n=t.layerIndex,r=e.layerIndex,s=t.layer,a=Math.min(n,r),o=Math.max(n,r);for(var h=a;h<o;++h)i+=this.minDistances[s][h];return i},placeLeftToRight:function(u){var t=new P,e,i;for(var n=0;n<this.layers.length;++n){var r=u[n];if(!r)continue;for(e=0;e<r.length;e++){i=r[e];if(!t.containsKey(i))this.placeLeft(i,t,n)}var s=Number.POSITIVE_INFINITY;for(e=0;e<r.length;e++){i=r[e];var a=this.rightSibling(i);if(a&&this.nodeLeftClass.get(a)!==n)s=Math.min(s,t.get(a)-t.get(i)-this.getMinDist(i,a))}if(s===Number.POSITIVE_INFINITY){var o=[];for(e=0;e<r.length;e++){i=r[e];var h=[];T.addRange(h,this.upNodes.get(i));T.addRange(h,this.downNodes.get(i));for(var l=0;l<h.length;l++){var f=h[l];if(this.nodeLeftClass.get(f)<n)o.push(t.get(f)-t.get(i))}}o.sort();if(o.length===0)s=0;else if(o.length%2===1)s=o[this.intDiv(o.length,2)];else s=(o[this.intDiv(o.length,2)-1]+o[this.intDiv(o.length,2)])/2}for(e=0;e<r.length;e++){i=r[e];t.set(i,t.get(i)+s)}}return t},placeRightToLeft:function(u){var t=new P,e,i;for(var n=0;n<this.layers.length;++n){var r=u[n];if(!r)continue;for(e=0;e<r.length;e++){i=r[e];if(!t.containsKey(i))this.placeRight(i,t,n)}var s=Number.NEGATIVE_INFINITY;for(e=0;e<r.length;e++){i=r[e];var a=this.leftSibling(i);if(a&&this.nodeRightClass.get(a)!==n)s=Math.max(s,t.get(a)-t.get(i)+this.getMinDist(a,i))}if(s===Number.NEGATIVE_INFINITY){var o=[];for(e=0;e<r.length;e++){i=r[e];var h=[];T.addRange(h,this.upNodes.get(i));T.addRange(h,this.downNodes.get(i));for(var l=0;l<h.length;l++){var f=h[l];if(this.nodeRightClass.get(f)<n)o.push(t.get(i)-t.get(f))}}o.sort();if(o.length===0)s=0;else if(o.length%2===1)s=o[this.intDiv(o.length,2)];else s=(o[this.intDiv(o.length,2)-1]+o[this.intDiv(o.length,2)])/2}for(e=0;e<r.length;e++){i=r[e];t.set(i,t.get(i)+s)}}return t},_getLeftWing:function(){var t={value:null};var e=this.computeClasses(t,1);this.nodeLeftClass=t.value;return e},_getRightWing:function(){var t={value:null};var e=this.computeClasses(t,-1);this.nodeRightClass=t.value;return e},computeClasses:function(u,t){var e=0,i=u.value=new P;for(var n=0;n<this.layers.length;++n){e=n;var r=this.layers[n];for(var s=t===1?0:r.length-1;s>=0&&s<r.length;s+=t){var a=r[s];if(!i.containsKey(a)){i.set(a,e);if(a.isVirtual){var o=this._nodesInLink(a);for(var h=0;h<o.length;h++){var f=o[h];i.set(f,e)}}}else e=i.get(a)}}var l=[];for(var d=0;d<this.layers.length;d++)l.push(null);i.forEach(function(t,e){if(l[e]===null)l[e]=[];l[e].push(t)});return l},_isVerticalLayout:function(){return this.options.subtype.toLowerCase()==="up"||this.options.subtype.toLowerCase()==="down"||this.options.subtype.toLowerCase()==="vertical"},_isHorizontalLayout:function(){return this.options.subtype.toLowerCase()==="right"||this.options.subtype.toLowerCase()==="left"||this.options.subtype.toLowerCase()==="horizontal"},_isIncreasingLayout:function(){return this.options.subtype.toLowerCase()==="right"||this.options.subtype.toLowerCase()==="down"},_moveThingsAround:function(){var l,t,e,i,n,r;for(t=0;t<this.layers.length;++t){i=this.layers[t];i.sort(this._gridPositionComparer)}this.minDistances=[];for(t=0;t<this.layers.length;++t){i=this.layers[t];this.minDistances[t]=[];for(n=0;n<i.length;++n){e=i[n];e.layerIndex=n;this.minDistances[t][n]=this.options.nodeDistance;if(n<i.length-1)if(this._isVerticalLayout())this.minDistances[t][n]+=(e.width+i[n+1].width)/2;else this.minDistances[t][n]+=(e.height+i[n+1].height)/2}}this.downNodes=new P;this.upNodes=new P;T.forEach(this.graph.nodes,function(t){this.downNodes.set(t,[]);this.upNodes.set(t,[])},this);T.forEach(this.graph.links,function(t){var e=t.source;var i=t.target;var n=null,r=null;if(e.layer>i.layer){n=t.source;r=t.target}else{r=t.source;n=t.target}this.downNodes.get(r).push(n);this.upNodes.get(n).push(r)},this);this.downNodes.forEachValue(function(t){t.sort(this._gridPositionComparer)},this);this.upNodes.forEachValue(function(t){t.sort(this._gridPositionComparer)},this);for(t=0;t<this.layers.length-1;++t){i=this.layers[t];for(r=0;r<i.length-1;r++){var h=i[r];if(!h.isVirtual)continue;var s=this.downNodes.get(h)[0];if(!s.isVirtual)continue;for(n=r+1;n<i.length;++n){e=i[n];if(!e.isVirtual)continue;var a=this.downNodes.get(e)[0];if(!a.isVirtual)continue;if(s.gridPosition>a.gridPosition){var f=s.gridPosition;s.gridPosition=a.gridPosition;a.gridPosition=f;var d=s.layerIndex;var g=a.layerIndex;this.layers[t+1][d]=a;this.layers[t+1][g]=s;s.layerIndex=g;a.layerIndex=d}}}}var c=this._getLeftWing();var p=this._getRightWing();var v=this.placeLeftToRight(c);var y=this.placeRightToLeft(p);var u=new P;T.forEach(this.graph.nodes,function(t){u.set(t,(v.get(t)+y.get(t))/2)});var w=new P;var m=new P;for(t=0;t<this.layers.length;++t){i=this.layers[t];var o=-1,x=-1;for(n=0;n<i.length;++n){e=i[n];w.set(e,0);m.set(e,false);if(e.isVirtual)if(o===-1)o=n;else if(o===n-1)o=n;else{x=n;w.set(i[o],0);if(u.get(e)-u.get(i[o])===this.getMinDist(i[o],e))m.set(i[o],true);else m.set(i[o],false);o=n}}}var C=[1,-1];T.forEach(C,function(t){var e=t===1?0:this.layers.length-1;for(var i=e;i>=0&&i<this.layers.length;i+=t){var n=this.layers[i];var r=this._firstVirtualNode(n);var s=null;var a=null;if(r!==-1){s=n[r];a=[];for(l=0;l<r;l++)a.push(n[l])}else{s=null;a=n}if(a.length>0){this._sequencer(u,null,s,t,a);for(l=0;l<a.length-1;++l)this.setMinDist(a[l],a[l+1],u.get(a[l+1])-u.get(a[l]));if(s)this.setMinDist(a[a.length-1],s,u.get(s)-u.get(a[a.length-1]))}while(s){var o=this.nextVirtualNode(n,s);if(!o){r=s.layerIndex;a=[];for(l=r+1;l<n.length;l++)a.push(n[l]);if(a.length>0){this._sequencer(u,s,null,t,a);for(l=0;l<a.length-1;++l)this.setMinDist(a[l],a[l+1],u.get(a[l+1])-u.get(a[l]));this.setMinDist(s,a[0],u.get(a[0])-u.get(s))}}else if(w.get(s)===t){r=s.layerIndex;var h=o.layerIndex;a=[];for(l=r+1;l<h;l++)a.push(n[l]);if(a.length>0)this._sequencer(u,s,o,t,a);m.set(s,true)}s=o}this.adjustDirections(i,t,w,m)}},this);var S=this._isIncreasingLayout()?0:this.layers.length-1;var D=function(t,e){if(e._isIncreasingLayout())return t<e.layers.length;else return t>=0};var k=this._isIncreasingLayout()?+1:-1,M=0;function L(t,e){var i=Number.MIN_VALUE;for(var n=0;n<t.length;++n){var r=t[n];if(e._isVerticalLayout())i=Math.max(i,r.height);else i=Math.max(i,r.width)}return i}for(l=S;D(l,this);l+=k){i=this.layers[l];var b=L(i,this);for(n=0;n<i.length;++n){e=i[n];if(this._isVerticalLayout()){e.x=u.get(e);e.y=M+b/2}else{e.x=M+b/2;e.y=u.get(e)}}M+=this.options.layerSeparation+b}},adjustDirections:function(t,e,u,f){if(t+e<0||t+e>=this.layers.length)return;var i=null,n=null;var r=this.layers[t+e];for(var s=0;s<r.length;++s){var a=r[s];if(a.isVirtual){var o=this.getNeighborOnLayer(a,t);if(o.isVirtual){if(i){var d=f.get(n);var g=this.layers[t];var c=n.layerIndex;var p=o.layerIndex;for(var h=c+1;h<p;++h)if(g[h].isVirtual)d=d&&f.get(g[h]);if(d){u.set(i,e);var v=i.layerIndex;var y=a.layerIndex;for(var l=v+1;l<y;++l)if(r[l].isVirtual)u.set(r[l],e)}}i=a;n=o}}}},getNeighborOnLayer:function(t,e){var i=this.upNodes.get(t)[0];if(i.layer===e)return i;i=this.downNodes.get(t)[0];if(i.layer===e)return i;return null},_sequencer:function(t,e,i,n,r){if(r.length===1)this._sequenceSingle(t,e,i,n,r[0]);if(r.length>1){var s=r.length,a=this.intDiv(s,2);this._sequencer(t,e,i,n,r.slice(0,a));this._sequencer(t,e,i,n,r.slice(a));this.combineSequences(t,e,i,n,r)}},_sequenceSingle:function(t,e,i,n,r){var s=n===-1?this.downNodes.get(r):this.upNodes.get(r);var a=s.length;if(a!==0){if(a%2===1)t.set(r,t.get(s[this.intDiv(a,2)]));else t.set(r,(t.get(s[this.intDiv(a,2)-1])+t.get(s[this.intDiv(a,2)]))/2);if(e)t.set(r,Math.max(t.get(r),t.get(e)+this.getMinDist(e,r)));if(i)t.set(r,Math.min(t.get(r),t.get(i)-this.getMinDist(r,i)))}},combineSequences:function(t,u,f,d,e){var g=e.length,i=this.intDiv(g,2);var n=[],r,s,a,o,h,l;for(r=0;r<i;++r){s=0;o=d===-1?this.downNodes.get(e[r]):this.upNodes.get(e[r]);for(a=0;a<o.length;++a){h=o[a];if(t.get(h)>=t.get(e[r]))s++;else{s--;n.push({k:t.get(h)+this.getMinDist(e[r],e[i-1]),v:2})}}n.push({k:t.get(e[r])+this.getMinDist(e[r],e[i-1]),v:s})}if(u)n.push({k:t.get(u)+this.getMinDist(u,e[i-1]),v:Number.MAX_VALUE});n.sort(this._positionDescendingComparer);var c=[];for(r=i;r<g;++r){s=0;o=d===-1?this.downNodes.get(e[r]):this.upNodes.get(e[r]);for(a=0;a<o.length;++a){h=o[a];if(t.get(h)<=t.get(e[r]))s++;else{s--;c.push({k:t.get(h)-this.getMinDist(e[r],e[i]),v:2})}}c.push({k:t.get(e[r])-this.getMinDist(e[r],e[i]),v:s})}if(f)c.push({k:t.get(f)-this.getMinDist(f,e[i]),v:Number.MAX_VALUE});c.sort(this._positionAscendingComparer);var p=0,v=0;var y=this.getMinDist(e[i-1],e[i]);while(t.get(e[i])-t.get(e[i-1])<y)if(p<v)if(n.length===0){t.set(e[i-1],t.get(e[i])-y);break}else{l=n.shift();p=p+l.v;t.set(e[i-1],l.k);t.set(e[i-1],Math.max(t.get(e[i-1]),t.get(e[i])-y))}else if(c.length===0){t.set(e[i],t.get(e[i-1])+y);break}else{l=c.shift();v=v+l.v;t.set(e[i],l.k);t.set(e[i],Math.min(t.get(e[i]),t.get(e[i-1])+y))}for(r=i-2;r>=0;r--)t.set(e[r],Math.min(t.get(e[r]),t.get(e[i-1])-this.getMinDist(e[r],e[i-1])));for(r=i+1;r<g;r++)t.set(e[r],Math.max(t.get(e[r]),t.get(e[i])+this.getMinDist(e[r],e[i])))},placeLeft:function(t,i,n){var r=Number.NEGATIVE_INFINITY;T.forEach(this._getComposite(t),function(t){var e=this.leftSibling(t);if(e&&this.nodeLeftClass.get(e)===this.nodeLeftClass.get(t)){if(!i.containsKey(e))this.placeLeft(e,i,n);r=Math.max(r,i.get(e)+this.getMinDist(e,t))}},this);if(r===Number.NEGATIVE_INFINITY)r=0;T.forEach(this._getComposite(t),function(t){i.set(t,r)})},placeRight:function(t,i,n){var r=Number.POSITIVE_INFINITY;T.forEach(this._getComposite(t),function(t){var e=this.rightSibling(t);if(e&&this.nodeRightClass.get(e)===this.nodeRightClass.get(t)){if(!i.containsKey(e))this.placeRight(e,i,n);r=Math.min(r,i.get(e)-this.getMinDist(t,e))}},this);if(r===Number.POSITIVE_INFINITY)r=0;T.forEach(this._getComposite(t),function(t){i.set(t,r)})},leftSibling:function(t){var e=this.layers[t.layer],i=t.layerIndex;return i===0?null:e[i-1]},rightSibling:function(t){var e=this.layers[t.layer];var i=t.layerIndex;return i===e.length-1?null:e[i+1]},_getComposite:function(t){return t.isVirtual?this._nodesInLink(t):[t]},arrangeNodes:function(){var t,e,i,n,r;for(e=0;e<this.layers.length;e++){n=this.layers[e];for(i=0;i<n.length;i++){r=n[i];r.upstreamPriority=r.upstreamLinkCount;r.downstreamPriority=r.downstreamLinkCount}}var s=2;for(var a=0;a<s;a++){for(t=this.layers.length-1;t>=1;t--)this.layoutLayer(false,t);for(t=0;t<this.layers.length-1;t++)this.layoutLayer(true,t)}var o=Number.MAX_VALUE;for(e=0;e<this.layers.length;e++){n=this.layers[e];for(i=0;i<n.length;i++){r=n[i];o=Math.min(o,r.gridPosition)}}if(o<0)for(e=0;e<this.layers.length;e++){n=this.layers[e];for(i=0;i<n.length;i++){r=n[i];r.gridPosition=r.gridPosition-o}}},layoutLayer:function(t,e){var i;var r;if(t)r=this.layers[i=e+1];else r=this.layers[i=e-1];var n=[];for(var s=0;s<r.length;s++)n.push(r[s]);n.sort(function(t,e){var i=(t.upstreamPriority+t.downstreamPriority)/2;var n=(e.upstreamPriority+e.downstreamPriority)/2;if(Math.abs(i-n)<1e-4)return 0;if(i<n)return 1;return-1});T.forEach(n,function(t){var e=t.gridPosition;var i=this.calcBaryCenter(t);var n=(t.upstreamPriority+t.downstreamPriority)/2;if(Math.abs(e-i)<1e-4)return;if(Math.abs(e-i)<.25+1e-4)return;if(e<i)while(e<i){if(!this.moveRight(t,r,n))break;e=t.gridPosition}else while(e>i){if(!this.moveLeft(t,r,n))break;e=t.gridPosition}},this);if(i>0)this.calcDownData(i-1);if(i<this.layers.length-1)this.calcUpData(i+1)},moveRight:function(t,e,i){var n=T.indexOf(e,t);if(n===e.length-1){t.gridPosition=t.gridPosition+.5;return true}var r=e[n+1];var s=(r.upstreamPriority+r.downstreamPriority)/2;if(r.gridPosition>t.gridPosition+1){t.gridPosition=t.gridPosition+.5;return true}if(s>i||Math.abs(s-i)<1e-4)return false;if(this.moveRight(r,e,i)){t.gridPosition=t.gridPosition+.5;return true}return false},moveLeft:function(t,e,i){var n=T.indexOf(e,t);if(n===0){t.gridPosition=t.gridPosition-.5;return true}var r=e[n-1];var s=(r.upstreamPriority+r.downstreamPriority)/2;if(r.gridPosition<t.gridPosition-1){t.gridPosition=t.gridPosition-.5;return true}if(s>i||Math.abs(s-i)<1e-4)return false;if(this.moveLeft(r,e,i)){t.gridPosition=t.gridPosition-.5;return true}return false},mapVirtualNode:function(t,e){this.nodeToLinkMap.set(t,e);if(!this.linkToNodeMap.containsKey(e))this.linkToNodeMap.set(e,[]);this.linkToNodeMap.get(e).push(t)},_nodesInLink:function(t){return this.linkToNodeMap.get(this.nodeToLinkMap.get(t))},_dummify:function(){this.linkToNodeMap=new P;this.nodeToLinkMap=new P;var t,e,i,u,f,n,r,d,g=this.graph.links.slice(0);var s=this.layers;var c=function(t,e,i){s[t].linksTo[e]=s[t].linksTo[e]||[];s[t].linksTo[e].push(i)};for(d=0;d<g.length;d++){var a=g[d];var o=a.source;var p=a.target;var h=o.layer;var l=p.layer;var v=o.gridPosition;var y=p.gridPosition;var w=(y-v)/Math.abs(l-h);var m=o;if(h-l>1){for(r=h-1;r>l;r--){i=new x;i.x=o.x;i.y=o.y;i.width=o.width/100;i.height=o.height/100;t=s[r];e=(r-l)*w+v;if(e>t.length)e=t.length;if(v>=s[h].length-1&&y>=s[l].length-1)e=t.length;else if(v===0&&y===0)e=0;i.layer=r;i.uBaryCenter=0;i.dBaryCenter=0;i.upstreamLinkCount=0;i.downstreamLinkCount=0;i.gridPosition=e;i.isVirtual=true;T.insert(t,i,e);for(f=e+1;f<t.length;f++){u=t[f];u.gridPosition=u.gridPosition+1}n=new C(m,i);n.depthOfDumminess=0;c(r-1,r,n);m=i;this.graph._addNode(i);this.graph.addLink(n);i.index=this.graph.nodes.length-1;this.mapVirtualNode(i,a)}c(l-1,l,n);a.changeSource(m);a.depthOfDumminess=h-l-1}else if(h-l<-1){for(r=h+1;r<l;r++){i=new x;i.x=o.x;i.y=o.y;i.width=o.width/100;i.height=o.height/100;t=s[r];e=(r-h)*w+v;if(e>t.length)e=t.length;if(v>=s[h].length-1&&y>=s[l].length-1)e=t.length;else if(v===0&&y===0)e=0;i.layer=r;i.uBaryCenter=0;i.dBaryCenter=0;i.upstreamLinkCount=0;i.downstreamLinkCount=0;i.gridPosition=e;i.isVirtual=true;e&=e;T.insert(t,i,e);for(f=e+1;f<t.length;f++){u=t[f];u.gridPosition=u.gridPosition+1}n=new C(m,i);n.depthOfDumminess=0;c(r-1,r,n);m=i;this.graph._addNode(i);this.graph.addLink(n);i.index=this.graph.nodes.length-1;this.mapVirtualNode(i,a)}c(l-1,l,a);a.changeSource(m);a.depthOfDumminess=l-h-1}else c(h,l,a)}},_dedummify:function(){var t=true;while(t){t=false;for(var e=0;e<this.graph.links.length;e++){var i=this.graph.links[e];if(!i.depthOfDumminess)continue;var n=[];n.unshift({x:i.target.x,y:i.target.y});n.unshift({x:i.source.x,y:i.source.y});var r=i;var s=i.depthOfDumminess;for(var a=0;a<s;a++){var o=r.source;var h=o.incoming[0];n.unshift({x:h.source.x,y:h.source.y});r=h}i.changeSource(r.source);i.depthOfDumminess=0;if(n.length>2){n.splice(0,1);n.splice(n.length-1);i.points=n}else i.points=[];t=true;break}}},_optimizeCrossings:function(){var t=-1,e;var i=3;var n=0;while(t!==0){if(n++>i)break;t=0;for(e=this.layers.length-1;e>=1;e--)t+=this.optimizeLayerCrossings(false,e);for(e=0;e<this.layers.length-1;e++)t+=this.optimizeLayerCrossings(true,e)}},calcUpData:function(t){if(t===0)return;var e=this.layers[t],i,n,r;var s=new f;var a=this.layers[t-1];for(i=0;i<a.length;i++)s.add(a[i]);for(i=0;i<e.length;i++){var o=e[i];var h=0;var l=0;for(n=0;n<o.incoming.length;n++){r=o.incoming[n];if(s.contains(r.source)){l++;h+=r.source.gridPosition}}for(n=0;n<o.outgoing.length;n++){r=o.outgoing[n];if(s.contains(r.target)){l++;h+=r.target.gridPosition}}if(l>0){o.uBaryCenter=h/l;o.upstreamLinkCount=l}else{o.uBaryCenter=i;o.upstreamLinkCount=0}}},calcDownData:function(t){if(t===this.layers.length-1)return;var e=this.layers[t],i,n,r;var s=new f;var a=this.layers[t+1];for(i=0;i<a.length;i++)s.add(a[i]);for(i=0;i<e.length;i++){var o=e[i];var h=0;var l=0;for(n=0;n<o.incoming.length;n++){r=o.incoming[n];if(s.contains(r.source)){l++;h+=r.source.gridPosition}}for(n=0;n<o.outgoing.length;n++){r=o.outgoing[n];if(s.contains(r.target)){l++;h+=r.target.gridPosition}}if(l>0){o.dBaryCenter=h/l;o.downstreamLinkCount=l}else{o.dBaryCenter=i;o.downstreamLinkCount=0}}},optimizeLayerCrossings:function(t,e){var i;var n;if(t)n=this.layers[i=e+1];else n=this.layers[i=e-1];var r=n.slice(0);if(t)this.calcUpData(i);else this.calcDownData(i);var s=this;n.sort(function(t,e){var i=s.calcBaryCenter(t),n=s.calcBaryCenter(e);if(Math.abs(i-n)<1e-4){if(t.degree()===e.degree())return s.compareByIndex(t,e);else if(t.degree()<e.degree())return 1;return-1}var r=(n-i)*1e3;if(r>0)return-1;else if(r<0)return 1;return s.compareByIndex(t,e)});var a,o=0;for(a=0;a<n.length;a++)if(n[a]!==r[a])o++;if(o>0){var h=0;for(a=0;a<n.length;a++){var l=n[a];l.gridPosition=h++}}return o},_swapPairs:function(){var u=this.options.layeredIterations;var t=0;while(true){if(t++>u)break;var e=t%4<=1;var f=t%4===1;for(var i=e?0:this.layers.length-1;e?i<=this.layers.length-1:i>=0;i+=e?1:-1){var n=this.layers[i];var d=false;var g=true;var c=0;for(var r=0;r<n.length-1;r++){var s=0;var a=0;var o=0;if(g){if(i!==0)s=this.countLinksCrossingBetweenTwoLayers(i-1,i);if(i!==this.layers.length-1)a=this.countLinksCrossingBetweenTwoLayers(i,i+1);if(e)s*=2;else a*=2;o=s+a}else o=c;if(o===0)continue;var h=n[r];var l=n[r+1];var p=h.gridPosition;var v=l.gridPosition;n[r]=l;n[r+1]=h;h.gridPosition=v;l.gridPosition=p;s=0;if(i!==0)s=this.countLinksCrossingBetweenTwoLayers(i-1,i);a=0;if(i!==this.layers.length-1)a=this.countLinksCrossingBetweenTwoLayers(i,i+1);if(e)s*=2;else a*=2;var y=s+a;var w=false;if(f)w=y>=o;else w=y>o;if(w){h=n[r];l=n[r+1];p=h.gridPosition;v=l.gridPosition;n[r]=l;n[r+1]=h;h.gridPosition=v;l.gridPosition=p;c=o;g=false}else{d=true;g=true}}if(d){if(i!==this.layers.length-1)this.calcUpData(i+1);if(i!==0)this.calcDownData(i-1)}}}},countLinksCrossingBetweenTwoLayers:function(u,t){var e=this.layers[u].linksTo[t];var i,n,r,s,a,o,h,l;var f=0;var d=e.length;for(h=0;h<d;h++){i=e[h];for(l=h+1;l<d;l++){n=e[l];if(i.target.layer===t){r=i.source;s=i.target}else{r=i.target;s=i.source}if(n.target.layer===t){a=n.source;o=n.target}else{a=n.target;o=n.source}var g=r.gridPosition;var c=s.gridPosition;var p=a.gridPosition;var v=o.gridPosition;if((g-p)*(c-v)<0)f++}}return f},calcBaryCenter:function(t){var e=t.upstreamLinkCount;var i=t.downstreamLinkCount;var n=t.uBaryCenter;var r=t.dBaryCenter;if(e>0&&i>0)return(n+r)/2;if(e>0)return n;if(i>0)return r;return 0},_gridPositionComparer:function(t,e){if(t.gridPosition<e.gridPosition)return-1;if(t.gridPosition>e.gridPosition)return 1;return 0},_positionAscendingComparer:function(t,e){return t.k<e.k?-1:t.k>e.k?1:0},_positionDescendingComparer:function(t,e){return t.k<e.k?1:t.k>e.k?-1:0},_firstVirtualNode:function(t){for(var e=0;e<t.length;e++)if(t[e].isVirtual)return e;return-1},compareByIndex:function(t,e){var i=t.index;var n=e.index;if(i<n)return 1;if(i>n)return-1;return 0},intDiv:function(t,e){return(t-t%e)/e},nextVirtualNode:function(t,e){var i=e.layerIndex;for(var n=i+1;n<t.length;++n)if(t[n].isVirtual)return t[n];return null}}),D=e.Class.extend({init:function(t,e){if(T.isUndefined(t))throw"No diagram given";this.diagram=t;this.nodeMap=new P;this.linkMap=new P;this.capture(e?e:t)},capture:function(t){var e,i,n,r,s,a,o;if(t instanceof u.Graph){for(r=0;r<t.nodes.length;r++){e=t.nodes[r];n=e.associatedShape;this.nodeMap.set(n.visual.id,new g(e.x,e.y,e.width,e.height))}for(r=0;r<t.links.length;r++){a=t.links[r];s=a.associatedConnection;this.linkMap.set(s.visual.id,a.points())}}else if(t instanceof Array){i=t;for(r=0;r<i.length;r++){e=i[r];n=e.associatedShape;if(n)this.nodeMap.set(n.visual.id,new g(e.x,e.y,e.width,e.height))}}else if(t.hasOwnProperty("links")&&t.hasOwnProperty("nodes")){i=t.nodes;o=t.links;for(r=0;r<i.length;r++){e=i[r];n=e.associatedShape;if(n)this.nodeMap.set(n.visual.id,new g(e.x,e.y,e.width,e.height))}for(r=0;r<o.length;r++){a=o[r];s=a.associatedConnection;if(s)this.linkMap.set(s.visual.id,a.points)}}else{var h=this.diagram.shapes;var l=this.diagram.connections;for(r=0;r<h.length;r++){n=h[r];this.nodeMap.set(n.visual.id,n.bounds())}for(r=0;r<l.length;r++){s=l[r];this.linkMap.set(s.visual.id,s.points())}}}});s(u,{init:function(t){e.init(t,u.ui)},SpringLayout:y,TreeLayout:m,GraphAdapter:l,LayeredLayout:S,LayoutBase:i,LayoutState:D})})?n.apply(e,i):n)||(t.exports=e)},911:function(t,e){t.exports=require("./math")}});