/* Highcharts Gantt JS v9.1.0 (2021-05-03) Pathfinder (c) 2016-2021 ystein Moseng License: www.highcharts.com/license */ (function(a){"object"===typeof module&&module.exports?(a["default"]=a,module.exports=a):"function"===typeof define&&define.amd?define("highcharts/modules/pathfinder",["highcharts"],function(q){a(q);a.Highcharts=q;return a}):a("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(a){function q(a,r,m,t){a.hasOwnProperty(r)||(a[r]=t.apply(null,m))}a=a?a._modules:{};q(a,"Extensions/ArrowSymbols.js",[a["Core/Renderer/SVG/SVGRenderer.js"]],function(a){a.prototype.symbols.arrow=function(a,m,t,n){return[["M", a,m+n/2],["L",a+t,m],["L",a,m+n/2],["L",a+t,m+n]]};a.prototype.symbols["arrow-half"]=function(r,m,t,n){return a.prototype.symbols.arrow(r,m,t/2,n)};a.prototype.symbols["triangle-left"]=function(a,m,t,n){return[["M",a+t,m],["L",a,m+n/2],["L",a+t,m+n],["Z"]]};a.prototype.symbols["arrow-filled"]=a.prototype.symbols["triangle-left"];a.prototype.symbols["triangle-left-half"]=function(r,m,t,n){return a.prototype.symbols["triangle-left"](r,m,t/2,n)};a.prototype.symbols["arrow-filled-half"]=a.prototype.symbols["triangle-left-half"]}); q(a,"Gantt/Connection.js",[a["Core/Globals.js"],a["Core/Options.js"],a["Core/Series/Point.js"],a["Core/Utilities.js"]],function(a,r,m,t){function n(b){var e=b.shapeArgs;return e?{xMin:e.x||0,xMax:(e.x||0)+(e.width||0),yMin:e.y||0,yMax:(e.y||0)+(e.height||0)}:(e=b.graphic&&b.graphic.getBBox())?{xMin:b.plotX-e.width/2,xMax:b.plotX+e.width/2,yMin:b.plotY-e.height/2,yMax:b.plotY+e.height/2}:null}"";var E=t.defined,A=t.error,z=t.extend,y=t.merge,q=t.objectEach,h=a.deg2rad,c=Math.max,l=Math.min;z(r.defaultOptions, {connectors:{type:"straight",lineWidth:1,marker:{enabled:!1,align:"center",verticalAlign:"middle",inside:!1,lineWidth:1},startMarker:{symbol:"diamond"},endMarker:{symbol:"arrow-filled"}}});r=function(){function b(e,v,g){this.toPoint=this.pathfinder=this.graphics=this.fromPoint=this.chart=void 0;this.init(e,v,g)}b.prototype.init=function(e,v,g){this.fromPoint=e;this.toPoint=v;this.options=g;this.chart=e.series.chart;this.pathfinder=this.chart.pathfinder};b.prototype.renderPath=function(e,v,g){var b= this.chart,h=b.styledMode,c=b.pathfinder,d=!b.options.chart.forExport&&!1!==g,f=this.graphics&&this.graphics.path;c.group||(c.group=b.renderer.g().addClass("highcharts-pathfinder-group").attr({zIndex:-1}).add(b.seriesGroup));c.group.translate(b.plotLeft,b.plotTop);f&&f.renderer||(f=b.renderer.path().add(c.group),h||f.attr({opacity:0}));f.attr(v);e={d:e};h||(e.opacity=1);f[d?"animate":"attr"](e,g);this.graphics=this.graphics||{};this.graphics.path=f};b.prototype.addMarker=function(e,b,g){var c=this.fromPoint.series.chart, v=c.pathfinder;c=c.renderer;var a="start"===e?this.fromPoint:this.toPoint,d=a.getPathfinderAnchorPoint(b);if(b.enabled&&((g="start"===e?g[1]:g[g.length-2])&&"M"===g[0]||"L"===g[0])){g={x:g[1],y:g[2]};g=a.getRadiansToVector(g,d);d=a.getMarkerVector(g,b.radius,d);g=-g/h;if(b.width&&b.height){var f=b.width;var x=b.height}else f=x=2*b.radius;this.graphics=this.graphics||{};d={x:d.x-f/2,y:d.y-x/2,width:f,height:x,rotation:g,rotationOriginX:d.x,rotationOriginY:d.y};this.graphics[e]?this.graphics[e].animate(d): (this.graphics[e]=c.symbol(b.symbol).addClass("highcharts-point-connecting-path-"+e+"-marker").attr(d).add(v.group),c.styledMode||this.graphics[e].attr({fill:b.color||this.fromPoint.color,stroke:b.lineColor,"stroke-width":b.lineWidth,opacity:0}).animate({opacity:1},a.series.options.animation))}};b.prototype.getPath=function(b){var e=this.pathfinder,c=this.chart,h=e.algorithms[b.type],a=e.chartObstacles;if("function"!==typeof h)return A('"'+b.type+'" is not a Pathfinder algorithm.'),{path:[],obstacles:[]}; h.requiresObstacles&&!a&&(a=e.chartObstacles=e.getChartObstacles(b),c.options.connectors.algorithmMargin=b.algorithmMargin,e.chartObstacleMetrics=e.getObstacleMetrics(a));return h(this.fromPoint.getPathfinderAnchorPoint(b.startMarker),this.toPoint.getPathfinderAnchorPoint(b.endMarker),y({chartObstacles:a,lineObstacles:e.lineObstacles||[],obstacleMetrics:e.chartObstacleMetrics,hardBounds:{xMin:0,xMax:c.plotWidth,yMin:0,yMax:c.plotHeight},obstacleOptions:{margin:b.algorithmMargin},startDirectionX:e.getAlgorithmStartDirection(b.startMarker)}, b))};b.prototype.render=function(){var b=this.fromPoint,a=b.series,h=a.chart,F=h.pathfinder,p=y(h.options.connectors,a.options.connectors,b.options.connectors,this.options),m={};h.styledMode||(m.stroke=p.lineColor||b.color,m["stroke-width"]=p.lineWidth,p.dashStyle&&(m.dashstyle=p.dashStyle));m["class"]="highcharts-point-connecting-path highcharts-color-"+b.colorIndex;p=y(m,p);E(p.marker.radius)||(p.marker.radius=l(c(Math.ceil((p.algorithmMargin||8)/2)-1,1),5));b=this.getPath(p);h=b.path;b.obstacles&& (F.lineObstacles=F.lineObstacles||[],F.lineObstacles=F.lineObstacles.concat(b.obstacles));this.renderPath(h,m,a.options.animation);this.addMarker("start",y(p.marker,p.startMarker),h);this.addMarker("end",y(p.marker,p.endMarker),h)};b.prototype.destroy=function(){this.graphics&&(q(this.graphics,function(b){b.destroy()}),delete this.graphics)};return b}();a.Connection=r;z(m.prototype,{getPathfinderAnchorPoint:function(b){var h=n(this);switch(b.align){case "right":var c="xMax";break;case "left":c="xMin"}switch(b.verticalAlign){case "top":var a= "yMin";break;case "bottom":a="yMax"}return{x:c?h[c]:(h.xMin+h.xMax)/2,y:a?h[a]:(h.yMin+h.yMax)/2}},getRadiansToVector:function(b,h){var c;E(h)||(c=n(this))&&(h={x:(c.xMin+c.xMax)/2,y:(c.yMin+c.yMax)/2});return Math.atan2(h.y-b.y,b.x-h.x)},getMarkerVector:function(b,h,c){var a=2*Math.PI,e=n(this),l=e.xMax-e.xMin,m=e.yMax-e.yMin,d=Math.atan2(m,l),f=!1;l/=2;var x=m/2,J=e.xMin+l;e=e.yMin+x;for(var G=J,H=e,k=1,u=1;b<-Math.PI;)b+=a;for(;b>Math.PI;)b-=a;a=Math.tan(b);b>-d&&b<=d?(u=-1,f=!0):b>d&&b<=Math.PI- d?u=-1:b>Math.PI-d||b<=-(Math.PI-d)?(k=-1,f=!0):k=-1;f?(G+=k*l,H+=u*l*a):(G+=m/(2*a)*k,H+=u*x);c.x!==J&&(G=c.x);c.y!==e&&(H=c.y);return{x:G+h*Math.cos(b),y:H-h*Math.sin(b)}}});return r});q(a,"Gantt/PathfinderAlgorithms.js",[a["Core/Utilities.js"]],function(a){function r(h,c,a){a=a||0;var b=h.length-1;c-=1e-7;for(var e,l;a<=b;)if(e=b+a>>1,l=c-h[e].xMin,0l)b=e-1;else return e;return 0=c.x)b=a[h],b=c.x<=b.xMax&& c.x>=b.xMin&&c.y<=b.yMax&&c.y>=b.yMin;if(b)return h}return-1}function t(a){var c=[];if(a.length){c.push(["M",a[0].start.x,a[0].start.y]);for(var h=0;hy(c[d]- a[d+"Max"]);return b(c,d,a,d+(f?"Max":"Min"),f?1:-1)}var v=[],g=E(l.startDirectionX,y(c.x-a.x)>y(c.y-a.y))?"x":"y",n=l.chartObstacles,p=m(n,a);l=m(n,c);if(-1=a[g]===l[g]>=d[g]&&(g="y"===g?"x":"y",c=a[g]f?A(r(k,e.x),k.length-1):0;k[d]&&(0f&&k[d].xMax>=x.x);){if(k[d].xMin<=e.x&&k[d].xMax>=x.x&&k[d].yMin<=w.y&&k[d].yMax>=h.y)return c?{y:a.y,x:a.x=x[k+"Max"];x=a[k+"Min"]<=x[k+"Min"];var g=a[k+"Max"]>=h[k+"Max"];h=a[k+"Min"]<=h[k+"Min"];var K=y(a[k+"Min"]-d[k]),l=y(a[k+"Max"]-d[k]);c=10>y(K-l)?d[k]y(c.y-a.y)),p=q?"x":"y",C=[],d=!1,f=l.obstacleMetrics,x=A(a.x,c.x)-f.maxWidth-10,J=z(a.x,c.x)+f.maxWidth+10,G=A(a.y,c.y)-f.maxHeight-10,H=z(a.y,c.y)+f.maxHeight+10,k=l.chartObstacles;var u=r(k,x);f=r(k,J);k=k.slice(u,f+1);if(-1<(f=m(k,c))){var B=g(k[f],c,a);C.push({end:c,start:B});c=B}for(;-1<(f=m(k,c));)u=0>c[p]-a[p],B={x:c.x,y:c.y},B[p]=k[f][u?p+"Max":p+"Min"]+(u?1:-1),C.push({end:c,start:B}),c=B;a=h(a,c,q);a=a.concat(C.reverse());return{path:t(a),obstacles:a}};q.requiresObstacles=!0; return{fastAvoid:q,straight:function(a,c){return{path:[["M",a.x,a.y],["L",c.x,c.y]],obstacles:[{start:a,end:c}]}},simpleConnect:a}});q(a,"Gantt/Pathfinder.js",[a["Gantt/Connection.js"],a["Core/Chart/Chart.js"],a["Core/Globals.js"],a["Core/Options.js"],a["Core/Series/Point.js"],a["Core/Utilities.js"],a["Gantt/PathfinderAlgorithms.js"]],function(a,r,m,t,n,q,A){function z(a){var b=a.shapeArgs;return b?{xMin:b.x||0,xMax:(b.x||0)+(b.width||0),yMin:b.y||0,yMax:(b.y||0)+(b.height||0)}:(b=a.graphic&&a.graphic.getBBox())? {xMin:a.plotX-b.width/2,xMax:a.plotX+b.width/2,yMin:a.plotY-b.height/2,yMax:a.plotY+b.height/2}:null}function y(a){for(var b=a.length,c=0,d,e,g=[],k=function(a,b,c){c=v(c,10);var d=a.yMax+c>b.yMin-c&&a.yMin-cb.xMin-c&&a.xMin-cb.xMax?a.xMin-b.xMax:b.xMin-a.xMax:Infinity,e=f?a.yMin>b.yMax?a.yMin-b.yMax:b.yMin-a.yMax:Infinity;return f&&d?c?k(a,b,Math.floor(c/2)):Infinity:p(g,e)};ce&&g.push(e);g.push(80);return F(Math.floor(g.sort(function(a, b){return a-b})[Math.floor(g.length/10)]/2-1),1)}function E(a){if(a.options.pathfinder||a.series.reduce(function(a,b){b.options&&e(!0,b.options.connectors=b.options.connectors||{},b.options.pathfinder);return a||b.options&&b.options.pathfinder},!1))e(!0,a.options.connectors=a.options.connectors||{},a.options.pathfinder),l('WARNING: Pathfinder options have been renamed. Use "chart.connectors" or "series.connectors" instead.')}"";var h=q.addEvent,c=q.defined,l=q.error,b=q.extend,e=q.merge,v=q.pick, g=q.splat,F=Math.max,p=Math.min;b(t.defaultOptions,{connectors:{type:"straight",lineWidth:1,marker:{enabled:!1,align:"center",verticalAlign:"middle",inside:!1,lineWidth:1},startMarker:{symbol:"diamond"},endMarker:{symbol:"arrow-filled"}}});var C=function(){function b(a){this.lineObstacles=this.group=this.connections=this.chartObstacleMetrics=this.chartObstacles=this.chart=void 0;this.init(a)}b.prototype.init=function(a){this.chart=a;this.connections=[];h(a,"redraw",function(){this.pathfinder.update()})}; b.prototype.update=function(b){var c=this.chart,d=this,f=d.connections;d.connections=[];c.series.forEach(function(b){b.visible&&!b.options.isInternal&&b.points.forEach(function(b){var f=b.options;f&&f.dependency&&(f.connect=f.dependency);var e;f=b.options&&b.options.connect&&g(b.options.connect);b.visible&&!1!==b.isInside&&f&&f.forEach(function(f){e=c.get("string"===typeof f?f:f.to);e instanceof n&&e.series.visible&&e.visible&&!1!==e.isInside&&d.connections.push(new a(b,e,"string"===typeof f?{}:f))})})}); for(var e=0,k=void 0,h=void 0,l=f.length,m=d.connections.length;eMath.PI;)a-=d;d=Math.tan(a);a>-h&&a<=h?(t=-1,l=!0):a>h&&a<=Math.PI-h?t=-1:a>Math.PI-h||a<=-(Math.PI-h)?(r=-1,l=!0):r=-1;l?(p+=r*f,q+=t*f*d):(p+=g/(2*d)*r,q+=t*m);c.x!==n&&(p=c.x);c.y!==e&&(q=c.y);return{x:p+b*Math.cos(a), y:q-b*Math.sin(a)}}});r.prototype.callbacks.push(function(a){!1!==a.options.connectors.enabled&&(E(a),this.pathfinder=new C(this),this.pathfinder.update(!0))});return C});q(a,"masters/modules/pathfinder.src.js",[],function(){})}); //# sourceMappingURL=pathfinder.js.map