/* Highcharts Gantt JS v11.1.0 (2023-06-05) Tree Grid (c) 2016-2021 Jon Arild Nygard License: www.highcharts.com/license */ 'use strict';(function(g){"object"===typeof module&&module.exports?(g["default"]=g,module.exports=g):"function"===typeof define&&define.amd?define("highcharts/modules/treegrid",["highcharts"],function(z){g(z);g.Highcharts=z;return g}):g("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(g){function z(g,v,t,L){g.hasOwnProperty(v)||(g[v]=L.apply(null,t),"function"===typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:v,module:g[v]}})))}g=g?g._modules: {};z(g,"Core/Axis/BrokenAxis.js",[g["Core/Axis/Stacking/StackItem.js"],g["Core/Utilities.js"]],function(g,v){const {addEvent:t,find:L,fireEvent:F,isArray:B,isNumber:n,pick:u}=v;var x;(function(a){function y(){"undefined"!==typeof this.brokenAxis&&this.brokenAxis.setBreaks(this.options.breaks,!1)}function G(){this.brokenAxis&&this.brokenAxis.hasBreaks&&(this.options.ordinal=!1)}function r(){const k=this.brokenAxis;if(k&&k.hasBreaks){const b=this.tickPositions,a=this.tickPositions.info,d=[];for(let a= 0;aa.to||e>a.from&&wa.from&&wa.from&&w>a.to&&wd&&b>=this.basePointRange&&(d=b);f--;)e&&!1!==e.visible||(e=a[f+1]),b=a[f],!1!==e.visible&&!1!==b.visible&&(e.x-b.x>d&&(e=(b.x+e.x)/2,a.splice(f+1,0,{isNull:!0,x:e}),c.stacking&&this.options.stacking&&(e=c.stacking.stacks[this.stackKey][e]=new g(c, c.options.stackLabels,!1,e,this.stack),e.total=0)),e=b);return this.getGraphPath(a)}const p=[];a.compose=function(a,b){v.pushUnique(p,a)&&(a.keepProps.push("brokenAxis"),t(a,"init",c),t(a,"afterInit",y),t(a,"afterSetTickPositions",r),t(a,"afterSetOptions",G));if(v.pushUnique(p,b)){const a=b.prototype;a.drawBreaks=f;a.gappedPath=l;t(b,"afterGeneratePoints",I);t(b,"afterRender",q)}return a};class E{static isInBreak(a,b){const c=a.repeat||Infinity,d=a.from,k=a.to-a.from;b=b>=d?(b-d)%c:c-(d-b)%c;return a.inclusive? b<=k:b=a);d++)c.to=a)break;else if(E.isInBreak(d,a)){c-=a-d.from;break}return c}constructor(a){this.hasBreaks=!1;this.axis=a}findBreakAt(a,b){return L(b,function(b){return b.from< a&&ak;)h-=p;for(;ha.render());if(!this.horiz&&this.chart.hasRendered&&(this.scrollbar||this.linkedParent&&this.linkedParent.scrollbar)){a=this.tickmarkOffset;b=this.tickPositions[this.tickPositions.length-1];d=this.tickPositions[0];let e,f;for(;(e=this.hiddenLabels.pop())&&e.element;)e.show();for(;(f=this.hiddenMarks.pop())&&f.element;)f.show();(e=this.ticks[d].label)&&(c-d>a?this.hiddenLabels.push(e.hide()):e.show()); (e=this.ticks[b].label)&&(b-h>a?this.hiddenLabels.push(e.hide()):e.show());(c=this.ticks[b].mark)&&b-h{a.options.pointRange=0}),a&&b.dateTimeLabelFormats&&b.labels&&!D(c.align)&&(!1===b.dateTimeLabelFormats[a.unitName].range||1a.setScale())}function r(a){const {horiz:h,maxLabelDimensions:b,options:{grid:c={}}}=this;if(c.enabled&&b){var d=2*this.options.labels.distance;d=h?c.cellHeight||d+b.height:d+b.width;e(a.tickSize)?a.tickSize[0]=d:a.tickSize=[d,0]}}function c(){this.axes.forEach(a=>{(a.grid&&a.grid.columns||[]).forEach(a=>{a.setAxisSize();a.setAxisTranslation()})})}function I(a){const {grid:h}= this;(h.columns||[]).forEach(h=>h.destroy(a.keepEvents));h.columns=void 0}function q(a){a=a.userOptions||{};const h=a.grid||{};h.enabled&&D(h.borderColor)&&(a.tickColor=a.lineColor=h.borderColor);this.grid||(this.grid=new P(this));this.hiddenLabels=[];this.hiddenMarks=[]}function f(a){var h=this.label;const b=this.axis;var c=b.reversed,e=b.chart,d=b.options.grid||{};const f=b.options.labels,C=f.align;var l=H[b.side],k=a.tickmarkOffset,p=b.tickPositions;const r=this.pos-k;p=m(p[a.index+1])?p[a.index+ 1]-k:(b.max||0)+k;var w=b.tickSize("tick");k=w?w[0]:0;w=w?w[1]/2:0;if(!0===d.enabled){let m;"top"===l?(d=b.top+b.offset,m=d-k):"bottom"===l?(m=e.chartHeight-b.bottom+b.offset,d=m+k):(d=b.top+b.len-(b.translate(c?p:r)||0),m=b.top+b.len-(b.translate(c?r:p)||0));"right"===l?(l=e.chartWidth-b.right+b.offset,c=l+k):"left"===l?(c=b.left+b.offset,l=c-k):(l=Math.round(b.left+(b.translate(c?p:r)||0))-w,c=Math.min(Math.round(b.left+(b.translate(c?r:p)||0))-w,b.left+b.len));this.slotWidth=c-l;a.pos.x="left"=== C?l:"right"===C?c:l+(c-l)/2;a.pos.y=m+(d-m)/2;h&&(e=e.renderer.fontMetrics(h),h=h.getBBox().height,a.pos.y=f.useHTML?a.pos.y+(e.b+-(h/2)):a.pos.y+((e.b-(e.h-e.f))/2+-((Math.round(h/e.h)-1)*e.h/2)));a.pos.x+=b.horiz&&f.x||0}}function l(a){const {axis:b,value:h}=a;if(b.options.grid&&b.options.grid.enabled){var c=b.tickPositions;const e=(b.linkedParent||b).series[0],d=h===c[0];c=h===c[c.length-1];const f=e&&J(e.options.data,function(a){return a[b.isXAxis?"x":"y"]===h});let m;f&&e.is("gantt")&&(m=w(f), v.seriesTypes.gantt.prototype.pointClass.setGanttPointAliases(m));a.isFirst=d;a.isLast=c;a.point=m}}function p(){const a=this.options,b=this.categories,c=this.tickPositions,e=c[0],d=c[c.length-1],f=this.linkedParent&&this.linkedParent.min||this.min,m=this.linkedParent&&this.linkedParent.max||this.max,l=this.tickInterval;!0!==(a.grid||{}).enabled||b||!this.horiz&&!this.isLinked||(ef&&!a.startOnTick&&(c[0]=f),d>m&&d-l{b.side!==a.side||b.options.isInternal||(f=c,b===e&&(d=c))});return f===d&&(m(b)?c.length===b:!0)}renderBorder(a){const b=this.axis,c=b.chart.renderer,e=b.options;a=c.path(a).addClass("highcharts-axis-line").add(b.axisBorder);c.styledMode||a.attr({stroke:e.lineColor,"stroke-width":e.lineWidth,zIndex:7});return a}}k.E=function(a){return this.dateFormat("%a",a,!0).charAt(0)};k.W=function(a){const b=this,c=new this.Date(a);["Hours", "Milliseconds","Minutes","Seconds"].forEach(function(a){b.set(a,c,0)});var e=(this.get("Day",c)+6)%7;a=new this.Date(c.valueOf());this.set("Date",a,this.get("Date",c)-e+3);e=new this.Date(this.get("FullYear",a),0,1);4!==this.get("Day",e)&&(this.set("Month",c,0),this.set("Date",c,1+(11-this.get("Day",e))%7));return(1+Math.floor((a.valueOf()-e.valueOf())/6048E5)).toString()};"";return{compose:function(e,d,m){t.pushUnique(M,e)&&(e.keepProps.push("grid"),e.prototype.getMaxLabelDimensions=F,O(e.prototype, "unsquish",E),b(e,"init",q),b(e,"afterGetOffset",z),b(e,"afterGetTitlePosition",B),b(e,"afterInit",n),b(e,"afterRender",u),b(e,"afterSetAxisTranslation",x),b(e,"afterSetOptions",a),b(e,"afterSetOptions",y),b(e,"afterSetScale",G),b(e,"afterTickSize",r),b(e,"trimTicks",p),b(e,"destroy",I));t.pushUnique(M,d)&&b(d,"afterSetChartSize",c);t.pushUnique(M,m)&&(b(m,"afterGetLabelPosition",f),b(m,"labelFormat",l));return e}}});z(g,"Gantt/Tree.js",[g["Core/Utilities.js"]],function(g){const {extend:v,isNumber:t, pick:F}=g,z=function(g,u){const n=g.reduce(function(a,g){const n=F(g.parent,"");"undefined"===typeof a[n]&&(a[n]=[]);a[n].push(g);return a},{});Object.keys(n).forEach(function(a,g){const y=n[a];""!==a&&-1===u.indexOf(a)&&(y.forEach(function(a){g[""].push(a)}),delete g[a])});return n},B=function(g,u,x,a,y,G){let r=0,c=0,n=G&&G.after;var q=G&&G.before;u={data:a,depth:x-1,id:g,level:x,parent:u};let f,l;"function"===typeof q&&q(u,G);q=(y[g]||[]).map(function(a){const p=B(a.id,g,x+1,a,y,G),k=a.start;a= !0===a.milestone?k:a.end;f=!t(f)||kl?a:l;r=r+1+p.descendants;c=Math.max(p.height+1,c);return p});a&&(a.start=F(a.start,f),a.end=F(a.end,l));v(u,{children:q,descendants:r,height:c});"function"===typeof n&&n(u,G);return u};return{getListOfParents:z,getNode:B,getTree:function(g,u){const n=g.map(function(a){return a.id});g=z(g,n);return B("",null,1,null,g,u)}}});z(g,"Core/Axis/TreeGrid/TreeGridTick.js",[g["Core/Utilities.js"]],function(g){function v(){this.treeGrid||(this.treeGrid=new G(this))} function t(a,c){a=a.treeGrid;const g=!a.labelIcon,q=c.renderer;var f=c.xy;const l=c.options,p=l.width||0,r=l.height||0;var k=f.x-p/2-(l.padding||0);f=f.y-r/2;const b=c.collapsed?90:180,n=c.show&&u(f);let d=a.labelIcon;d||(a.labelIcon=d=q.path(q.symbols[l.type](l.x||0,l.y||0,p,r)).addClass("highcharts-label-icon").add(c.group));d[n?"show":"hide"]();q.styledMode||d.attr({cursor:"pointer",fill:x(c.color,"#666666"),"stroke-width":1,stroke:l.lineColor,strokeWidth:l.lineWidth||0});d[g?"attr":"animate"]({translateX:k, translateY:f,rotation:b})}function F(a,c,g,q,f,l,p,y,k){var b=x(this.options&&this.options.labels,l);l=this.pos;var r=this.axis;const d="treegrid"===r.options.type;a=a.apply(this,[c,g,q,f,b,p,y,k]);d&&(c=b&&n(b.symbol,!0)?b.symbol:{},b=b&&u(b.indentation)?b.indentation:0,l=(l=(r=r.treeGrid.mapOfPosToGridNode)&&r[l])&&l.depth||1,a.x+=(c.width||0)+2*(c.padding||0)+(l-1)*b);return a}function z(a){const c=this;var g=c.pos,q=c.axis;const f=c.label;var l=q.treeGrid.mapOfPosToGridNode,p=q.options;const r= x(c.options&&c.options.labels,p&&p.labels);var k=r&&n(r.symbol,!0)?r.symbol:{};const b=(l=l&&l[g])&&l.depth;p="treegrid"===p.type;const y=-1{a&&!a.attachedTreeGridEvents&&(B(a.element,"mouseover",function(){f.addClass("highcharts-treegrid-node-active");f.renderer.styledMode||f.css({textDecoration:"underline"})}),B(a.element,"mouseout",function(){{const a=n(r.style)?r.style:{};f.removeClass("highcharts-treegrid-node-active"); f.renderer.styledMode||f.css({textDecoration:a.textDecoration})}}),B(a.element,"click",function(){c.treeGrid.toggleCollapse()}),a.attachedTreeGridEvents=!0)}))}const {addEvent:B,isObject:n,isNumber:u,pick:x,wrap:a}=g,y=[];class G{static compose(r){g.pushUnique(y,r)&&(B(r,"init",v),a(r.prototype,"getLabelPosition",F),a(r.prototype,"renderLabel",z),r.prototype.collapse=function(a){this.treeGrid.collapse(a)},r.prototype.expand=function(a){this.treeGrid.expand(a)},r.prototype.toggleCollapse=function(a){this.treeGrid.toggleCollapse(a)})}constructor(a){this.tick= a}collapse(a){var c=this.tick;const g=c.axis,q=g.brokenAxis;q&&g.treeGrid.mapOfPosToGridNode&&(c=g.treeGrid.collapse(g.treeGrid.mapOfPosToGridNode[c.pos]),q.setBreaks(c,x(a,!0)))}destroy(){this.labelIcon&&this.labelIcon.destroy()}expand(a){var c=this.tick;const g=c.axis,q=g.brokenAxis;q&&g.treeGrid.mapOfPosToGridNode&&(c=g.treeGrid.expand(g.treeGrid.mapOfPosToGridNode[c.pos]),q.setBreaks(c,x(a,!0)))}toggleCollapse(a){var c=this.tick;const g=c.axis,q=g.brokenAxis;q&&g.treeGrid.mapOfPosToGridNode&& (c=g.treeGrid.toggleCollapse(g.treeGrid.mapOfPosToGridNode[c.pos]),q.setBreaks(c,x(a,!0)))}}return G});z(g,"Series/TreeUtilities.js",[g["Core/Color/Color.js"],g["Core/Utilities.js"]],function(g,v){function t(a,g){var n=g.before;const r=g.idRoot,c=g.mapIdToNode[r],y=g.points[a.i],q=y&&y.options||{},f=[];let l=0;a.levelDynamic=a.level-(!1!==g.levelIsConstant?0:c.level);a.name=x(y&&y.name,"");a.visible=r===a.id||!0===g.visible;"function"===typeof n&&(a=n(a,g));a.children.forEach((c,q)=>{const k=z({}, g);z(k,{index:q,siblings:a.children.length,visible:a.visible});c=t(c,k);f.push(c);c.visible&&(l+=c.val)});n=x(q.value,l);a.visible=0<=n&&(0{let g,p;n(f)&&B(f.level)&&(p=u({},f),g=x(p.levelIsConstant,t.levelIsConstant),delete p.levelIsConstant,delete p.level,f=f.level+(g?0:c-1),n(a[f])?u(!0,a[f],p):a[f]=p);return a},{}));v=B(a.to)?a.to:1;for(a=0;a<=v;a++)g[a]=u({},t,n(r[a])?r[a]:{})}return g},setTreeValues:t,updateRootId:function(a){if(n(a)){var g=n(a.options)?a.options:{};g=x(a.rootNode,g.rootId,"");n(a.userOptions)&&(a.userOptions.rootId=g);a.rootNode=g}return g}}});z(g,"Core/Axis/TreeGrid/TreeGridAxis.js", [g["Core/Axis/BrokenAxis.js"],g["Core/Axis/GridAxis.js"],g["Gantt/Tree.js"],g["Core/Axis/TreeGrid/TreeGridTick.js"],g["Series/TreeUtilities.js"],g["Core/Utilities.js"]],function(g,v,t,z,N,B){function n(a,b){const c=a.collapseEnd||0;a=a.collapseStart||0;c>=b&&(a-=.5);return{from:a,to:c,showPoints:!1}}function u(a,b,c){const e=[],d=[],f={},g="boolean"===typeof b?b:!1;let m={},k=-1;a=t.getTree(a,{after:function(a){a=m[a.pos];let b=0,c=0;a.children.forEach(function(a){c+=(a.descendants||0)+1;b=Math.max((a.height|| 0)+1,b)});a.descendants=c;a.height=b;a.collapsed&&d.push(a)},before:function(a){const b=l(a.data,!0)?a.data:{},c=p(b.name)?b.name:"";var d=f[a.parent];d=l(d,!0)?m[d.pos]:null;var h=function(a){return a.name===c};let C;g&&l(d,!0)&&(C=I(d.children,h))?(h=C.pos,C.nodes.push(a)):h=k++;m[h]||(m[h]=C={depth:d?d.depth+1:0,name:c,id:b.id,nodes:[a],children:[],pos:h},-1!==h&&e.push(c),l(d,!0)&&d.children.push(C));p(a.id)&&(f[a.id]=a);C&&!0===b.collapsed&&(C.collapsed=!0);a.pos=h}});m=function(a,b){const c= function(a,e,d){let f=e+(-1===e?0:b-1);const g=(f-e)/2,h=e+g;a.nodes.forEach(function(a){const b=a.data;l(b,!0)&&(b.y=e+(b.seriesIndex||0),delete b.seriesIndex);a.pos=h});d[h]=a;a.pos=h;a.tickmarkOffset=g+.5;a.collapseStart=f+.5;a.children.forEach(function(a){c(a,f+1,d);f=(a.collapseEnd||0)-.5});a.collapseEnd=f+.5;return d};return c(a["-1"],-1,{})}(m,c);return{categories:e,mapOfIdToNode:f,mapOfPosToGridNode:m,collapsedNodes:d,tree:a}}function x(a){a.target.axes.filter(function(a){return"treegrid"=== a.options.type}).forEach(function(b){var c=b.options||{};const e=c.labels,d=c.uniqueNames;c=c.max;let g=0,m;if(!b.treeGrid.mapOfPosToGridNode||b.series.some(function(a){return!a.hasRendered||a.isDirtyData||a.isDirty})){m=b.series.reduce(function(a,b){b.visible&&((b.options.data||[]).forEach(function(c){b.options.keys&&b.options.keys.length&&(c=b.pointClass.prototype.optionsToObject.call({series:b},c),b.pointClass.setGanttPointAliases(c));l(c,!0)&&(c.seriesIndex=g,a.push(c))}),!0===d&&g++);return a}, []);if(c&&m.lengtha.collapseStart!==b.collapseStart||a.collapseEnd!==b.collapseEnd)))})}),c(e,"afterBreaks",function(){"yAxis"===e.coll&&!e.staticScale&&e.chart.options.chart.height&&(e.isDirty=!0)}),d=E({grid:{enabled:!0},labels:{align:"left",levels:[{level:void 0},{level:1,style:{fontWeight:"bold"}}],symbol:{type:"triangle",x:-5,y:-5,height:10,width:10,padding:5}},uniqueNames:!1}, d,{reversed:!0,grid:{columns:void 0}}));a.apply(e,[b,d,f]);g&&(e.hasNames=!0,e.options.showLastLabel=!0)}function F(a){const b=this.options;"treegrid"===b.type?(this.min=k(this.userMin,b.min,this.dataMin),this.max=k(this.userMax,b.max,this.dataMax),q(this,"foundExtremes"),this.setAxisTranslation(),this.tickmarkOffset=.5,this.tickInterval=1,this.tickPositions=this.treeGrid.mapOfPosToGridNode?this.treeGrid.getTickPositions():[]):a.apply(this,Array.prototype.slice.call(arguments,1))}const {getLevelOptions:r}= N,{addEvent:c,find:I,fireEvent:q,isArray:f,isObject:l,isString:p,merge:E,pick:k,wrap:b}=B,D=[];let d;class J{static compose(c,f,l,k){if(B.pushUnique(D,c)){-1===c.keepProps.indexOf("treeGrid")&&c.keepProps.push("treeGrid");const e=c.prototype;b(e,"generateTick",a);b(e,"init",y);b(e,"setTickInterval",F);e.utils={getNode:t.getNode}}B.pushUnique(D,k)&&(d||(d=k));v.compose(c,f,k);g.compose(c,l);z.compose(k);return c}constructor(a){this.axis=a}setCollapsedStatus(a){const b=this.axis,c=b.chart;b.series.forEach(function(b){const e= b.options.data;if(a.id&&e){const d=c.get(a.id);b=e[b.data.indexOf(d)];d&&b&&(d.collapsed=a.collapsed,b.collapsed=a.collapsed)}})}collapse(a){const b=this.axis,c=b.options.breaks||[],e=n(a,b.max);c.push(e);a.collapsed=!0;b.treeGrid.setCollapsedStatus(a);return c}expand(a){const b=this.axis,c=b.options.breaks||[],e=n(a,b.max);a.collapsed=!1;b.treeGrid.setCollapsedStatus(a);return c.reduce(function(a,b){b.to===e.to&&b.from===e.from||a.push(b);return a},[])}getTickPositions(){const a=this.axis,b=Math.floor(a.min/ a.tickInterval)*a.tickInterval,c=Math.ceil(a.max/a.tickInterval)*a.tickInterval;return Object.keys(a.treeGrid.mapOfPosToGridNode||{}).reduce(function(e,d){d=+d;!(d>=b&&d<=c)||a.brokenAxis&&a.brokenAxis.isInAnyBreak(d)||e.push(d);return e},[])}isCollapsed(a){const b=this.axis,c=b.options.breaks||[],d=n(a,b.max);return c.some(function(a){return a.from===d.from&&a.to===d.to})}toggleCollapse(a){return this.isCollapsed(a)?this.expand(a):this.collapse(a)}}return J});z(g,"masters/modules/treegrid.src.js", [g["Core/Globals.js"],g["Core/Axis/TreeGrid/TreeGridAxis.js"]],function(g,v){v.compose(g.Axis,g.Chart,g.Series,g.Tick)})}); //# sourceMappingURL=treegrid.js.map