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