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