highcharts
Version:
JavaScript charting framework
13 lines • 117 kB
JavaScript
!/**
* Highcharts Gantt JS v13.0.1 (2026-08-17)
* @module highcharts/modules/gantt
* @requires highcharts
*
* Gantt series
*
* (c) 2016-2026 Highsoft AS
* Author: Lars A. V. Cabrera
*
* A commercial license may be required depending on use,
* see www.highcharts.com/license
*/function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(t._Highcharts,t._Highcharts.Chart,t._Highcharts.Axis,t._Highcharts.SeriesRegistry,t._Highcharts.SVGRenderer,t._Highcharts.SVGElement,t._Highcharts.Templating,t._Highcharts.Point,t._Highcharts.Color,t._Highcharts.StackItem):"function"==typeof define&&define.amd?define("highcharts/modules/gantt",["highcharts/highcharts"],function(t){return e(t,t.Chart,t.Axis,t.SeriesRegistry,t.SVGRenderer,t.SVGElement,t.Templating,t.Point,t.Color,t.StackItem)}):"object"==typeof exports?exports["highcharts/modules/gantt"]=e(t._Highcharts,t._Highcharts.Chart,t._Highcharts.Axis,t._Highcharts.SeriesRegistry,t._Highcharts.SVGRenderer,t._Highcharts.SVGElement,t._Highcharts.Templating,t._Highcharts.Point,t._Highcharts.Color,t._Highcharts.StackItem):t.Highcharts=e(t.Highcharts,t.Highcharts.Chart,t.Highcharts.Axis,t.Highcharts.SeriesRegistry,t.Highcharts.SVGRenderer,t.Highcharts.SVGElement,t.Highcharts.Templating,t.Highcharts.Point,t.Highcharts.Color,t.Highcharts.StackItem)}("u"<typeof window?this:window,(t,e,i,s,r,o,a,n,l,h)=>(()=>{"use strict";let d,c,p;var u,g,x,m,f,b,y,v,M={532(t){t.exports=i},960(t){t.exports=e},620(t){t.exports=l},260(t){t.exports=n},28(t){t.exports=o},540(t){t.exports=r},512(t){t.exports=s},184(t){t.exports=h},984(t){t.exports=a},944(e){e.exports=t}};let k={};function E(t){let e=k[t];if(void 0!==e)return e.exports;let i=k[t]={exports:{}};return M[t](i,i.exports,E),i.exports}E.n=t=>{let e=t&&t.__esModule?()=>t.default:()=>t;return E.d(e,{a:e}),e},E.d=(t,e)=>{if(Array.isArray(e))for(var i=0;i<e.length;){var s=e[i++],r=e[i++];E.o(t,s)?0===r&&i++:0===r?Object.defineProperty(t,s,{enumerable:!0,value:e[i++]}):Object.defineProperty(t,s,{enumerable:!0,get:r})}else for(var s in e)E.o(e,s)&&!E.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},E.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let A={};E.d(A,{default:()=>io});var w=E(944),S=E.n(w);function O(t,e,i,s){return[["M",t,e+s/2],["L",t+i,e],["L",t,e+s/2],["L",t+i,e+s]]}function B(t,e,i,s){return O(t,e,i/2,s)}function P(t){let e=t.prototype.symbols;e.arrow=O,e["arrow-filled"]=T,e["arrow-filled-half"]=C,e["arrow-half"]=B,e["triangle-left"]=T,e["triangle-left-half"]=C}function T(t,e,i,s){return[["M",t+i,e],["L",t,e+s/2],["L",t+i,e+s],["Z"]]}function C(t,e,i,s){return T(t,e,i/2,s)}let N=S().deg2rad,I=Math.max,D=Math.min,L=class{constructor(t,e,i){this.init(t,e,i)}init(t,e,i){this.fromPoint=t,this.toPoint=e,this.options=i,this.chart=t.series.chart,this.pathfinder=this.chart.pathfinder}renderPath(t,e){let i=this.chart,s=i.styledMode,r=this.pathfinder,o={},a=this.graphics&&this.graphics.path;r.group||(r.group=i.renderer.g().addClass("highcharts-pathfinder-group").attr({zIndex:-1}).add(i.seriesGroup)),r.group.translate(i.plotLeft,i.plotTop),!(a&&a.renderer)&&(a=i.renderer.path().add(r.group),s||a.attr({opacity:0})),a.attr(e),o.d=t,s||(o.opacity=1),a.animate(o),this.graphics=this.graphics||{},this.graphics.path=a}addMarker(t,e,i){let s,r,o,a,n,l,h,d=this.fromPoint.series.chart,c=d.pathfinder,p=d.renderer,u="start"===t?this.fromPoint:this.toPoint,g=u.getPathfinderAnchorPoint(e);e.enabled&&((h="start"===t?i[1]:i[i.length-2])&&"M"===h[0]||"L"===h[0])&&(l={x:h[1],y:h[2]},r=u.getRadiansToVector(l,g),s=u.getMarkerVector(r,e.radius,g),e.width&&e.height?(a=e.width,n=e.height):a=n=2*e.radius,this.graphics=this.graphics||{},o={x:s.x-a/2,y:s.y-n/2,width:a,height:n,rotation:-r/N,rotationOriginX:s.x,rotationOriginY:s.y},this.graphics[t]?this.graphics[t].animate(o):(this.graphics[t]=p.symbol(e.symbol).addClass("highcharts-point-connecting-path-"+t+"-marker highcharts-color-"+this.fromPoint.colorIndex).attr(o).add(c.group),p.styledMode||this.graphics[t].attr({fill:e.color||this.fromPoint.color,stroke:e.lineColor,"stroke-width":e.lineWidth,opacity:0}).animate({opacity:1},u.series.options.animation)))}getPath(t){let e=this.pathfinder,i=this.chart,s=e.algorithms[t.type],r=e.chartObstacles;return"function"!=typeof s?((0,w.error)('"'+t.type+'" is not a Pathfinder algorithm.'),{path:[],obstacles:[]}):(s.requiresObstacles&&!r&&(r=e.chartObstacles=e.getChartObstacles(t),i.options.connectors.algorithmMargin=t.algorithmMargin,e.chartObstacleMetrics=e.getObstacleMetrics(r)),s(this.fromPoint.getPathfinderAnchorPoint(t.startMarker),this.toPoint.getPathfinderAnchorPoint(t.endMarker),(0,w.merge)({chartObstacles:r,lineObstacles:e.lineObstacles||[],obstacleMetrics:e.chartObstacleMetrics,hardBounds:{xMin:0,xMax:i.plotWidth,yMin:0,yMax:i.plotHeight},obstacleOptions:{margin:t.algorithmMargin},startDirectionX:e.getAlgorithmStartDirection(t.startMarker)},t)))}render(){let t=this.fromPoint,e=t.series,i=e.chart,s=i.pathfinder,r={},o=(0,w.merge)(i.options.connectors,e.options.connectors,t.options.connectors,this.options);!i.styledMode&&(r.stroke=o.lineColor||t.color,r["stroke-width"]=o.lineWidth,o.dashStyle&&(r.dashstyle=o.dashStyle)),r.class="highcharts-point-connecting-path highcharts-color-"+t.colorIndex,o=(0,w.merge)(r,o),(0,w.defined)(o.marker.radius)||(o.marker.radius=D(I(Math.ceil((o.algorithmMargin||8)/2)-1,1),5));let a=this.getPath(o),n=a.path;a.obstacles&&(s.lineObstacles=s.lineObstacles||[],s.lineObstacles=s.lineObstacles.concat(a.obstacles)),this.renderPath(n,r),this.addMarker("start",(0,w.merge)(o.marker,o.startMarker),n),this.addMarker("end",(0,w.merge)(o.marker,o.endMarker),n)}destroy(){this.graphics&&((0,w.objectEach)(this.graphics,function(t){t.destroy()}),delete this.graphics)}},{composed:R}=S(),z={color:"var(--highcharts-highlight-color-20)",width:2,label:{format:"%[abdYHM]",formatter:function(t,e){return this.axis.chart.time.dateFormat(e||"",t,!0)},rotation:0,style:{fontSize:"0.7em"}}};var G=E(960),W=E.n(G);let{defaultOptions:H}=S();class F extends W(){init(t,e){let i,s=t.xAxis,r=t.yAxis;t.xAxis=t.yAxis=void 0;let o=(0,w.merge)(!0,{chart:{type:"gantt"},title:{text:""},legend:{enabled:!1},navigator:{series:{type:"gantt"},yAxis:{type:"category"}}},t,{isGantt:!0});t.xAxis=s,t.yAxis=r,o.xAxis=(!(0,w.isArray)(t.xAxis)?[t.xAxis||{},{}]:t.xAxis).map((t,e)=>(1===e&&(i=0),(0,w.merge)({grid:{enabled:!0},opposite:H.xAxis?.opposite??t.opposite??!0,linkedTo:i},t,{type:"datetime"}))),o.yAxis=(0,w.splat)(t.yAxis||{}).map(t=>(0,w.merge)({grid:{enabled:!0},staticScale:50,reversed:!0,type:t.categories?t.type:"treegrid"},t)),super.init(o,e)}}(u=F||(F={})).ganttChart=function(t,e,i){let s=new u(t,e,i);return s.promise||s};let U=F;var V=E(532),X=E.n(V);let{isTouchDevice:Y}=S(),j=[];function _(){this.navigator&&this.navigator.setBaseSeries(null,!1)}function q(){let t,e,i,s=this.legend,r=this.navigator;if(r){t=s&&s.options,e=r.xAxis,i=r.yAxis;let{scrollbarHeight:o,scrollButtonSize:a}=r;this.inverted?(r.left=r.opposite?this.chartWidth-o-r.height:this.spacing[3]+o,r.top=this.plotTop+a):(r.left=(0,w.pick)(e.left,this.plotLeft+a),r.top=r.navigatorOptions.top||this.chartHeight-r.height-o-(this.scrollbar?.options.margin||0)-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(t&&"bottom"===t.verticalAlign&&"proximate"!==t.layout&&t.enabled&&!t.floating?s.legendHeight+(0,w.pick)(t.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0)),e&&i&&(this.inverted?e.options.left=i.options.left=r.left:e.options.top=i.options.top=r.top,e.setAxisSize(),i.setAxisSize())}}function Z(t){!this.navigator&&!this.scroller&&(this.options.navigator.enabled||this.options.scrollbar.enabled)&&(this.scroller=this.navigator=new d(this),(0,w.pick)(t.redraw,!0)&&this.redraw(t.animation))}function $(){let t=this.options;(t.navigator.enabled||t.scrollbar.enabled)&&(this.scroller=this.navigator=new d(this))}function K(){let t=this.options,e=t.navigator,i=t.rangeSelector;if((e&&e.enabled||i&&i.enabled)&&(!Y&&"x"===this.zooming.type||Y&&"x"===this.zooming.pinchType))return!1}function J(t){let e=t.navigator;if(e&&t.xAxis[0]){let i=t.xAxis[0].getExtremes();e.render(i.min,i.max)}}function Q(t){let e=t.options.navigator||{},i=t.options.scrollbar||{};!this.navigator&&!this.scroller&&(e.enabled||i.enabled)&&((0,w.merge)(!0,this.options.navigator,e),(0,w.merge)(!0,this.options.scrollbar,i),delete t.options.navigator,delete t.options.scrollbar)}let tt=function(t,e){if((0,w.pushUnique)(j,t)){let i=t.prototype;d=e,i.callbacks.push(J),(0,w.addEvent)(t,"afterAddSeries",_),(0,w.addEvent)(t,"afterSetChartSize",q),(0,w.addEvent)(t,"afterUpdate",Z),(0,w.addEvent)(t,"beforeRender",$),(0,w.addEvent)(t,"beforeShowResetZoom",K),(0,w.addEvent)(t,"update",Q)}},{isTouchDevice:te}=S();function ti(){this.navigatorAxis||(this.navigatorAxis=new tr(this))}function ts(t){let e,i=this.chart,s=i.options,r=s.navigator,o=this.navigatorAxis,a=i.zooming.pinchType,n=s.rangeSelector,l=i.zooming.type;if(this.isXAxis&&(r?.enabled||n?.enabled)){if("y"===l&&"zoom"===t.trigger)e=!1;else if(("zoom"===t.trigger&&"xy"===l||te&&"xy"===a)&&this.options.range){let e=o.previousZoom;(0,w.defined)(t.min)?o.previousZoom=[this.min,this.max]:e&&(t.min=e[0],t.max=e[1],o.previousZoom=void 0)}}void 0!==e&&t.preventDefault()}class tr{static compose(t){t.keepProps.includes("navigatorAxis")||(t.keepProps.push("navigatorAxis"),(0,w.addEvent)(t,"init",ti),(0,w.addEvent)(t,"setExtremes",ts))}constructor(t){this.axis=t}destroy(){this.axis=void 0}toFixedRange(t,e,i,s){let r=this.axis,o=(r.pointRange||0)/2,a=(0,w.pick)(i,r.translate(t,!0,!r.horiz)),n=(0,w.pick)(s,r.translate(e,!0,!r.horiz));return(0,w.defined)(i)||(a=(0,w.correctFloat)(a+o)),(0,w.defined)(s)||(n=(0,w.correctFloat)(n-o)),(0,w.isNumber)(a)&&(0,w.isNumber)(n)||(a=n=void 0),{min:a,max:n}}}var to=E(512),ta=E.n(to);let{seriesTypes:tn}=ta(),tl={height:40,margin:22,maskInside:!0,handles:{width:7,borderRadius:0,height:15,symbols:["navigator-handle","navigator-handle"],enabled:!0,lineWidth:1,backgroundColor:"var(--highcharts-neutral-color-5)",borderColor:"var(--highcharts-neutral-color-40)"},maskFill:"color-mix(in srgb, var(--highcharts-highlight-color-60) 30%, transparent)",outlineColor:"var(--highcharts-neutral-color-40)",outlineWidth:1,series:{type:void 0===tn.areaspline?"line":"areaspline",fillOpacity:.05,lineWidth:1,compare:null,sonification:{enabled:!1},dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,firstAnchor:"firstPoint",anchor:"middle",lastAnchor:"lastPoint",units:[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2,3,4]],["week",[1,2,3]],["month",[1,3,6]],["year",null]]},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series",className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},threshold:null},xAxis:{className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"var(--highcharts-neutral-color-10)",id:"navigator-x-axis",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"var(--highcharts-neutral-color-100)",fontSize:"0.7em",opacity:.6,textOutline:"2px contrast"},x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,id:"navigator-y-axis",maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:void 0},tickLength:0,tickWidth:0}},{defaultOptions:th}=S(),{noop:td}=S(),tc={radius:0,scope:"stack",where:void 0},tp={"navigator-handle":function(t,e,i,s,r={}){var o,a,n,l,h,d;let c=r.width?r.width/2:i,p=(0,w.relativeLength)((o=r.borderRadius,!(0,w.isObject)(o)&&(o={radius:o||0}),(0,w.merge)(tc,void 0,o)).radius,Math.min(2*c,s));return[["M",-1.5,(s=r.height||s)/2-3.5],["L",-1.5,s/2+4.5],["M",.5,s/2-3.5],["L",.5,s/2+4.5],...(a=-c-1,n=.5,l=2*c+1,h=s,d={r:p},d?.r?function(t,e,i,s,r){let o=r?.r||0;return[["M",t+o,e],["L",t+i-o,e],["A",o,o,0,0,1,t+i,e+o],["L",t+i,e+s-o],["A",o,o,0,0,1,t+i-o,e+s],["L",t+o,e+s],["A",o,o,0,0,1,t,e+s-o],["L",t,e+o],["A",o,o,0,0,1,t+o,e],["Z"]]}(a,.5,l,h,d):[["M",a,.5],["L",a+l,.5],["L",a+l,.5+h],["L",a,.5+h],["Z"]])]}};var tu=E(540),tg=E.n(tu);let{defaultOptions:tx}=S(),{composed:tm}=S(),{setFixedRange:tf}={setFixedRange:function(t){let e=this.xAxis[0];(0,w.defined)(e.dataMax)&&(0,w.defined)(e.dataMin)&&t?this.fixedRange=Math.min(t,e.dataMax-e.dataMin):this.fixedRange=t}};function tb(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}let ty=function(t,e,i){tr.compose(e),(0,w.pushUnique)(tm,"Navigator")&&(t.prototype.setFixedRange=tf,(0,w.extend)(tg().prototype.symbols,tp),(0,w.extend)(tx,{navigator:tl}),(0,w.addEvent)(i,"afterUpdate",tb))},{composed:tv}=S();!function(t){let e;function i(t){let e=(0,w.pick)(t.options?.min,t.min),i=(0,w.pick)(t.options?.max,t.max);return{axisMin:e,axisMax:i,scrollMin:(0,w.defined)(t.dataMin)?Math.min(e,t.min??1/0,t.dataMin,t.threshold??1/0):e,scrollMax:t.treeGrid?.adjustedMax??((0,w.defined)(t.dataMax)?Math.max(i,t.max??-1/0,t.dataMax,t.threshold??-1/0):i)}}function s(){let t=this.scrollbar,e=t&&!t.options.opposite,i=this.horiz?2:e?3:1;t&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[i]+=t.size+(t.options.margin||0))}function r(){let t=this;t.options?.scrollbar?.enabled&&(t.options.scrollbar.vertical=!t.horiz,t.options.startOnTick=t.options.endOnTick=!1,t.scrollbar=new e(t.chart.renderer,t.options.scrollbar,t.chart),(0,w.addEvent)(t.scrollbar,"changed",function(e){let s,r,{axisMin:o,axisMax:a,scrollMin:n,scrollMax:l}=i(t),h=t.toPixels(n),d=t.toPixels(l)-h;if((0,w.defined)(o)&&(0,w.defined)(a))if(t.horiz&&!t.reversed||!t.horiz&&t.reversed?(s=Math.min(l,t.toValue(h+d*this.to)),r=Math.max(n,t.toValue(h+d*this.from))):(s=Math.min(l,t.toValue(h+d*(1-this.from))),r=Math.max(n,t.toValue(h+d*(1-this.to)))),this.shouldUpdateExtremes(e.DOMType)){let i="mousemove"!==e.DOMType&&"touchmove"!==e.DOMType&&void 0;t.setExtremes((0,w.correctFloat)(r),(0,w.correctFloat)(s),!0,i,e)}else this.setRange(this.from,this.to)}))}function o(){let t,e,s,{scrollMin:r,scrollMax:o}=i(this),a=this.scrollbar,n=(this.axisTitleMargin||0)+(this.titleOffset||0),l=this.chart.scrollbarsOffsets,h=this.options.margin||0;if(a&&l){if(this.horiz)this.opposite||(l[1]+=n),a.position(this.left,this.top+this.height+2+l[1]-(this.opposite?h:0),this.width,this.height),this.opposite||(l[1]+=h),t=1;else{let e;this.opposite&&(l[0]+=n),e=a.options.opposite?this.left+this.width+2+l[0]-(this.opposite?0:h):this.opposite?0:h,a.position(e,this.top,this.width,this.height),this.opposite&&(l[0]+=h),t=0}if(l[t]+=a.size+(a.options.margin||0),isNaN(r)||isNaN(o)||!(0,w.defined)(this.min)||!(0,w.defined)(this.max)||(0,w.defined)(this.dataMin)&&this.dataMin===this.dataMax)a.setRange(0,1);else if(this.min===this.max){let t=this.pointRange/(this.dataMax+1);e=t*this.min,s=t*(this.max+1),a.setRange(e,s)}else e=(this.toPixels(this.min)-this.toPixels(r))/(this.toPixels(o)-this.toPixels(r)),s=(this.toPixels(this.max)-this.toPixels(r))/(this.toPixels(o)-this.toPixels(r)),this.horiz&&!this.reversed||!this.horiz&&this.reversed?a.setRange(e,s):a.setRange(1-s,1-e)}}t.compose=function(t,i){(0,w.pushUnique)(tv,"Axis.Scrollbar")&&(e=i,(0,w.addEvent)(t,"afterGetOffset",s),(0,w.addEvent)(t,"afterInit",r),(0,w.addEvent)(t,"afterRender",o))}}(f||(f={}));let tM=f,tk={height:10,barBorderRadius:5,buttonBorderRadius:0,buttonsEnabled:!1,liveRedraw:void 0,margin:void 0,minWidth:6,opposite:!0,step:.2,zIndex:3,barBackgroundColor:"var(--highcharts-neutral-color-20)",barBorderWidth:0,barBorderColor:"var(--highcharts-neutral-color-20)",buttonArrowColor:"var(--highcharts-neutral-color-80)",buttonBackgroundColor:"var(--highcharts-neutral-color-10)",buttonBorderColor:"var(--highcharts-neutral-color-20)",buttonBorderWidth:1,rifleColor:"none",trackBackgroundColor:"rgba(255, 255, 255, 0.001)",trackBorderColor:"var(--highcharts-neutral-color-20)",trackBorderRadius:5,trackBorderWidth:1},{defaultOptions:tE}=S(),{composed:tA}=S();class tw{static compose(t){tM.compose(t,tw),(0,w.pushUnique)(tA,"Scrollbar")&&(0,w.extend)(tE,{scrollbar:tk})}static swapXY(t,e){return e&&t.forEach(t=>{let e,i=t.length;for(let s=0;s<i;s+=2)"number"==typeof(e=t[s+1])&&(t[s+1]=t[s+2],t[s+2]=e)}),t}constructor(t,e,i){this._events=[],this.chartX=0,this.chartY=0,this.from=0,this.scrollbarButtons=[],this.scrollbarLeft=0,this.scrollbarStrokeWidth=1,this.scrollbarTop=0,this.size=0,this.to=0,this.trackBorderWidth=1,this.x=0,this.y=0,this.init(t,e,i)}addEvents(){let t=this.options.inverted?[1,0]:[0,1],e=this.scrollbarButtons,i=this.scrollbarGroup.element,s=this.track.element,r=this.mouseDownHandler.bind(this),o=this.mouseMoveHandler.bind(this),a=this.mouseUpHandler.bind(this),n=[[e[t[0]].element,"click",this.buttonToMinClick.bind(this)],[e[t[1]].element,"click",this.buttonToMaxClick.bind(this)],[s,"click",this.trackClick.bind(this)],[i,"mousedown",r],[i.ownerDocument,"mousemove",o],[i.ownerDocument,"mouseup",a],[i,"touchstart",r],[i.ownerDocument,"touchmove",o],[i.ownerDocument,"touchend",a]];n.forEach(function(t){w.addEvent.apply(null,t)}),this._events=n}buttonToMaxClick(t){let e=(this.to-this.from)*(0,w.pick)(this.options.step,.2);this.updatePosition(this.from+e,this.to+e),(0,w.fireEvent)(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}buttonToMinClick(t){let e=(0,w.correctFloat)(this.to-this.from)*(0,w.pick)(this.options.step,.2);this.updatePosition((0,w.correctFloat)(this.from-e),(0,w.correctFloat)(this.to-e)),(0,w.fireEvent)(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}cursorToScrollbarPosition(t){let e=this.options,i=e.minWidth>this.calculatedWidth?e.minWidth:0;return{chartX:(t.chartX-this.x-this.xOffset)/(this.barWidth-i),chartY:(t.chartY-this.y-this.yOffset)/(this.barWidth-i)}}destroy(){let t=this,e=t.chart.scroller;t.removeEvents(),["track","scrollbarRifles","scrollbar","scrollbarGroup","group"].forEach(function(e){t[e]&&t[e].destroy&&(t[e]=t[e].destroy())}),e&&t===e.scrollbar&&(e.scrollbar=null,(0,w.destroyObjectProperties)(e.scrollbarButtons))}drawScrollbarButton(t){let e=this.renderer,i=this.scrollbarButtons,s=this.options,r=this.size,o=e.g().add(this.group);if(i.push(o),s.buttonsEnabled){let a=e.rect().addClass("highcharts-scrollbar-button").add(o);this.chart.styledMode||a.attr({stroke:s.buttonBorderColor,"stroke-width":s.buttonBorderWidth,fill:s.buttonBackgroundColor}),a.attr(a.crisp({x:-.5,y:-.5,width:r,height:r,r:s.buttonBorderRadius},a.strokeWidth()));let n=e.path(tw.swapXY([["M",r/2+(t?-1:1),r/2-3],["L",r/2+(t?-1:1),r/2+3],["L",r/2+(t?2:-2),r/2]],s.vertical)).addClass("highcharts-scrollbar-arrow").add(i[t]);this.chart.styledMode||n.attr({fill:s.buttonArrowColor})}}init(t,e,i){this.scrollbarButtons=[],this.renderer=t,this.userOptions=e,this.options=(0,w.merge)(tk,tE.scrollbar,e),this.options.margin=(0,w.pick)(this.options.margin,10),this.chart=i,this.size=(0,w.pick)(this.options.size,this.options.height),e.enabled&&(this.render(),this.addEvents())}mouseDownHandler(t){let e=this.chart.pointer?.normalize(t)||t,i=this.cursorToScrollbarPosition(e);this.chartX=i.chartX,this.chartY=i.chartY,this.initPositions=[this.from,this.to],this.grabbedCenter=!0}mouseMoveHandler(t){let e,i=this.chart.pointer?.normalize(t)||t,s=this.options.vertical?"chartY":"chartX",r=this.initPositions||[];this.grabbedCenter&&(!t.touches||0!==t.touches[0][s])&&(e=this.cursorToScrollbarPosition(i)[s]-this[s],this.hasDragged=!0,this.updatePosition(r[0]+e,r[1]+e),this.hasDragged&&(0,w.fireEvent)(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:t.type,DOMEvent:t}))}mouseUpHandler(t){this.hasDragged&&(0,w.fireEvent)(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:t.type,DOMEvent:t}),this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null}position(t,e,i,s){let{buttonsEnabled:r,margin:o=0,vertical:a}=this.options,n=this.rendered?"animate":"attr",l=s,h=0;this.group.show(),this.x=t,this.y=e+this.trackBorderWidth,this.width=i,this.height=s,this.xOffset=l,this.yOffset=h,a?(this.width=this.yOffset=i=h=this.size,this.xOffset=l=0,this.yOffset=h=r?this.size:0,this.barWidth=s-(r?2*i:0),this.x=t+=o):(this.height=s=this.size,this.xOffset=l=r?this.size:0,this.barWidth=i-(r?2*s:0),this.y=this.y+o),this.group[n]({translateX:t,translateY:this.y}),this.track[n]({width:i,height:s}),this.scrollbarButtons[1][n]({translateX:a?0:i-l,translateY:a?s-h:0})}removeEvents(){this._events.forEach(function(t){w.removeEvent.apply(null,t)}),this._events.length=0}render(){let t=this.renderer,e=this.options,i=this.size,s=this.chart.styledMode,r=t.g("scrollbar").attr({zIndex:e.zIndex}).hide().add();this.group=r,this.track=t.rect().addClass("highcharts-scrollbar-track").attr({r:e.trackBorderRadius||0,height:i,width:i}).add(r),s||this.track.attr({fill:e.trackBackgroundColor,stroke:e.trackBorderColor,"stroke-width":e.trackBorderWidth});let o=this.trackBorderWidth=this.track.strokeWidth();this.track.attr({x:-(0,w.crisp)(0,o),y:-(0,w.crisp)(0,o)}),this.scrollbarGroup=t.g().add(r),this.scrollbar=t.rect().addClass("highcharts-scrollbar-thumb").attr({height:i-o,width:i-o,r:e.barBorderRadius||0}).add(this.scrollbarGroup),this.scrollbarRifles=t.path(tw.swapXY([["M",-3,i/4],["L",-3,2*i/3],["M",0,i/4],["L",0,2*i/3],["M",3,i/4],["L",3,2*i/3]],e.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup),s||(this.scrollbar.attr({fill:e.barBackgroundColor,stroke:e.barBorderColor,"stroke-width":e.barBorderWidth}),this.scrollbarRifles.attr({stroke:e.rifleColor,"stroke-width":1})),this.scrollbarStrokeWidth=this.scrollbar.strokeWidth(),this.scrollbarGroup.translate(-(0,w.crisp)(0,this.scrollbarStrokeWidth),-(0,w.crisp)(0,this.scrollbarStrokeWidth)),this.drawScrollbarButton(0),this.drawScrollbarButton(1)}setRange(t,e){let i,s,r=this.options,o=r.vertical,a=r.minWidth,n=this.barWidth,l=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";if(!(0,w.defined)(n))return;let h=n*Math.min(e,1);i=Math.ceil(n*(t=Math.max(t,0))),this.calculatedWidth=s=(0,w.correctFloat)(h-i),s<a&&(i=(n-a+s)*t,s=a);let d=Math.floor(i+this.xOffset+this.yOffset),c=s/2-.5;this.from=t,this.to=e,o?(this.scrollbarGroup[l]({translateY:d}),this.scrollbar[l]({height:s}),this.scrollbarRifles[l]({translateY:c}),this.scrollbarTop=d,this.scrollbarLeft=0):(this.scrollbarGroup[l]({translateX:d}),this.scrollbar[l]({width:s}),this.scrollbarRifles[l]({translateX:c}),this.scrollbarLeft=d,this.scrollbarTop=0),s<=12?this.scrollbarRifles.hide():this.scrollbarRifles.show(),!1===r.showFull&&(t<=0&&e>=1?this.group.hide():this.group.show()),this.rendered=!0}shouldUpdateExtremes(t){return(0,w.pick)(this.options.liveRedraw,S().svg&&!S().isTouchDevice&&!this.chart.boosted)||"mouseup"===t||"touchend"===t||!(0,w.defined)(t)}trackClick(t){let e=this.chart.pointer?.normalize(t)||t,i=this.to-this.from,s=this.y+this.scrollbarTop,r=this.x+this.scrollbarLeft;this.options.vertical&&e.chartY>s||!this.options.vertical&&e.chartX>r?this.updatePosition(this.from+i,this.to+i):this.updatePosition(this.from-i,this.to-i),(0,w.fireEvent)(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}update(t){this.destroy(),this.init(this.chart.renderer,(0,w.merge)(!0,this.options,t),this.chart)}updatePosition(t,e){e>1&&(t=(0,w.correctFloat)(1-(0,w.correctFloat)(e-t)),e=1),t<0&&(e=(0,w.correctFloat)(e-t),t=0),this.from=t,this.to=e}}tw.defaultOptions=tk;let{defaultOptions:tS}=S(),{isTouchDevice:tO}=S();function tB(t,...e){let i=[].filter.call(e,w.isNumber);if(i.length)return Math[t].apply(0,i)}class tP{static compose(t,e,i){tt(t,tP),ty(t,e,i)}constructor(t){this.isDirty=!1,this.scrollbarHeight=0,this.init(t)}drawHandle(t,e,i,s){let r=this.navigatorOptions.handles.height;this.handles[e][s](i?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(t,10)+.5-r)}:{translateX:Math.round(this.left+parseInt(t,10)),translateY:Math.round(this.top+this.height/2-r/2-1)})}drawOutline(t,e,i,s){let r=this.navigatorOptions.maskInside,o=this.outline.strokeWidth(),a=o/2,n=o%2/2,l=this.scrollButtonSize,h=this.size,d=this.top,c=this.height,p=d-a,u=d+c,g=this.left,x,m;i?(x=d+e+n,e=d+t+n,m=[["M",g+c,d-l-n],["L",g+c,x],["L",g,x],["M",g,e],["L",g+c,e],["L",g+c,d+h+l]],r&&m.push(["M",g+c,x-a],["L",g+c,e+a])):(g-=l,t+=g+l-n,e+=g+l-n,m=[["M",g,p],["L",t,p],["L",t,u],["M",e,u],["L",e,p],["L",g+h+2*l,p]],r&&m.push(["M",t-a,p],["L",e+a,p])),this.outline[s]({d:m})}drawMasks(t,e,i,s){let r,o,a,n,l=this.left,h=this.top,d=this.height;i?(a=[l,l,l],n=[h,h+t,h+e],o=[d,d,d],r=[t,e-t,this.size-e]):(a=[l,l+t,l+e],n=[h,h,h],o=[t,e-t,this.size-e],r=[d,d,d]),this.shades.forEach((t,e)=>{t[s]({x:a[e],y:n[e],width:o[e],height:r[e]})})}renderElements(){let t=this,e=t.navigatorOptions,i=e.maskInside,s=t.chart,r=s.inverted,o=s.renderer,a={cursor:r?"ns-resize":"ew-resize"},n=t.navigatorGroup??(t.navigatorGroup=o.g("navigator").attr({zIndex:8,visibility:"hidden"}).add());if([!i,i,!i].forEach((i,r)=>{let l=t.shades[r]??(t.shades[r]=o.rect().addClass("highcharts-navigator-mask"+(1===r?"-inside":"-outside")).add(n));s.styledMode||(l.attr({fill:i?e.maskFill:"rgba(0,0,0,0)"}),1===r&&l.css(a))}),t.outline||(t.outline=o.path().addClass("highcharts-navigator-outline").add(n)),s.styledMode||t.outline.attr({"stroke-width":e.outlineWidth,stroke:e.outlineColor}),e.handles?.enabled){let i=!1,r=e.handles,{height:l,width:h}=r;[0,1].forEach(e=>{let d=r.symbols[e];(i=i||t.handles[e]?.symbolName!==d)&&(t.handles[e]?.destroy(),t.handles[e]=o.symbol(d,-h/2-1,0,h,l,r),t.handles[e].attr({zIndex:7-e}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][e]).add(n)),s.inverted&&t.handles[e].attr({rotation:90,rotationOriginX:Math.floor(-h/2),rotationOriginY:(l+h)/2}),s.styledMode||t.handles[e].attr({fill:r.backgroundColor,stroke:r.borderColor,"stroke-width":r.lineWidth,width:r.width,height:r.height,x:-h/2-1,y:0}).css(a)}),i&&(t.partsEventsToUnbind?.forEach(t=>{t()}),t.partsEventsToUnbind=[...t.getPartsEvents("mousedown"),...t.getPartsEvents("touchstart")])}}update(t,e=!1){let i=this.chart,s=i.options.chart.inverted!==i.scrollbar?.options.vertical;if((0,w.merge)(!0,i.options.navigator,t),this.navigatorOptions=i.options.navigator||{},this.setOpposite(),(0,w.defined)(t.enabled)||s)return this.destroy(),this.navigatorEnabled=t.enabled||this.navigatorEnabled,this.init(i);if(this.navigatorEnabled&&(this.isDirty=!0,!1===t.adaptToUpdatedData&&this.baseSeries.forEach(t=>{(0,w.removeEvent)(t,"updatedData",this.updatedDataHandler)},this),t.adaptToUpdatedData&&this.baseSeries.forEach(t=>{t.eventsToUnbind.push((0,w.addEvent)(t,"updatedData",this.updatedDataHandler))},this),(t.series||t.baseSeries)&&this.setBaseSeries(void 0,!1),t.height||t.xAxis||t.yAxis)){this.height=t.height??this.height;let e=this.getXAxisOffsets();this.xAxis.update({...t.xAxis,offsets:e,[i.inverted?"width":"height"]:this.height,[i.inverted?"height":"width"]:void 0},!1),this.yAxis.update({...t.yAxis,[i.inverted?"width":"height"]:this.height},!1)}e&&i.redraw()}render(t,e,i,s){let r=this.chart,o=this.xAxis,a=o.pointRange||0,n=o.navigatorAxis.fake?r.xAxis[0]:o,l=this.navigatorEnabled,h=this.rendered,d=r.inverted,c=r.xAxis[0].minRange,p=r.xAxis[0].options.maxRange,u=this.scrollButtonSize,g,x,m,f=this.scrollbarHeight,b,y;if(this.hasDragged&&!(0,w.defined)(i))return;if(this.isDirty&&this.renderElements(),t=(0,w.correctFloat)(t-a/2),e=(0,w.correctFloat)(e+a/2),!(0,w.isNumber)(t)||!(0,w.isNumber)(e))if(!h)return;else i=0,s=(0,w.pick)(o.width,n.width);this.left=(0,w.pick)(o.left,r.plotLeft+u+(d?r.plotWidth:0));let v=this.size=b=(0,w.pick)(o.len,(d?r.plotHeight:r.plotWidth)-2*u);g=d?f:b+2*u,i=(0,w.pick)(i,o.toPixels(t,!0)),s=(0,w.pick)(s,o.toPixels(e,!0)),(0,w.isNumber)(i)&&Math.abs(i)!==1/0||(i=0,s=g);let M=o.toValue(i,!0),k=o.toValue(s,!0),E=Math.abs((0,w.correctFloat)(k-M));(0,w.defined)(c)&&E<c?this.grabbedLeft?i=o.toPixels(k-c-a,!0):this.grabbedRight&&(s=o.toPixels(M+c+a,!0)):(0,w.defined)(p)&&(0,w.correctFloat)(E-a)>p&&(this.grabbedLeft?i=o.toPixels(k-p-a,!0):this.grabbedRight&&(s=o.toPixels(M+p+a,!0))),this.zoomedMax=(0,w.clamp)(Math.max(i,s),0,v),this.zoomedMin=(0,w.clamp)(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(i,s),0,v),this.range=this.zoomedMax-this.zoomedMin,v=Math.round(this.zoomedMax);let A=Math.round(this.zoomedMin);l&&(this.navigatorGroup.attr({visibility:"inherit"}),y=h&&!this.hasDragged?"animate":"attr",this.drawMasks(A,v,d,y),this.drawOutline(A,v,d,y),this.navigatorOptions.handles?.enabled&&(this.drawHandle(A,0,d,y),this.drawHandle(v,1,d,y))),this.scrollbar&&(d?(m=this.top-u,x=this.left-f+(l||!n.opposite?0:(n.titleOffset||0)+n.axisTitleMargin),f=b+2*u):(m=this.top+(l?this.height:-f),x=this.left-u),this.scrollbar.position(x,m,g,f),this.scrollbar.setRange(this.zoomedMin/(b||1),this.zoomedMax/(b||1))),this.rendered=!0,this.isDirty=!1,(0,w.fireEvent)(this,"afterRender")}addMouseEvents(){let t,e,i=this,s=i.chart,r=s.container,o=[];i.mouseMoveHandler=t=function(t){i.onMouseMove(t)},i.mouseUpHandler=e=function(t){i.onMouseUp(t)},o.push((0,w.addEvent)(s.renderTo,"mousemove",t),(0,w.addEvent)(r.ownerDocument,"mouseup",e),(0,w.addEvent)(s.renderTo,"touchmove",t),(0,w.addEvent)(r.ownerDocument,"touchend",e)),i.eventsToUnbind=o,i.series&&i.series[0]&&o.push((0,w.addEvent)(i.series[0].xAxis,"foundExtremes",function(){s.navigator?.modifyNavigatorAxisExtremes()}))}getPartsEvents(t){let e=this,i=[];return["shades","handles"].forEach(s=>{e[s].forEach(function(r,o){i.push((0,w.addEvent)(r.element,t,function(t){e[`${s}Mousedown`](t,o)}))})}),i}shadesMousedown(t,e){t=this.chart.pointer?.normalize(t)||t;let i=this.chart,s=this.xAxis,r=this.zoomedMin,o=this.size,a=this.range,n=this.left,l=t.chartX,h,d,c,p;i.inverted&&(l=t.chartY,n=this.top),1===e?(this.grabbedCenter=l,this.fixedWidth=a,this.dragOffset=l-r):(p=l-n-a/2,0===e?p=Math.max(0,p):2===e&&p+a>=o&&(p=o-a,this.reversedExtremes?(p-=a,d=this.getUnionExtremes()?.dataMin):h=this.getUnionExtremes()?.dataMax),p!==r&&(this.fixedWidth=a,c=s.navigatorAxis.toFixedRange(p,p+a,d,h),(0,w.defined)(c.min)&&(0,w.fireEvent)(this,"setRange",{min:Math.min(c.min,c.max),max:Math.max(c.min,c.max),redraw:!0,eventArguments:{trigger:"navigator"}})))}handlesMousedown(t,e){t=this.chart.pointer?.normalize(t)||t;let i=this.chart,s=i.xAxis[0],r=this.reversedExtremes;0===e?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=r?s.min:s.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=r?s.max:s.min),i.setFixedRange(void 0)}onMouseMove(t){let e=this,i=e.chart,s=e.navigatorSize,r=e.range,o=e.dragOffset,a=i.inverted,n=e.left,l;(!t.touches||0!==t.touches[0].pageX)&&(l=(t=i.pointer?.normalize(t)||t).chartX,a&&(n=e.top,l=t.chartY),e.grabbedLeft?(e.hasDragged=!0,e.render(0,0,l-n,e.otherHandlePos)):e.grabbedRight?(e.hasDragged=!0,e.render(0,0,e.otherHandlePos,l-n)):e.grabbedCenter&&o&&(e.hasDragged=!0,l<o?l=o:l>s+o-r&&(l=s+o-r),e.render(0,0,l-o,l-o+r)),e.hasDragged&&(0,w.pick)(e.scrollbarOptions?.liveRedraw,!tO&&!this.chart.boosted)&&(t.DOMType=t.type,setTimeout(function(){e.onMouseUp(t)},0)))}onMouseUp(t){let e,i,s,r,o,a,n=this.chart,l=this.xAxis,h=this.scrollbar,d=t.DOMEvent||t,c=n.inverted,p=this.rendered&&!this.hasDragged?"animate":"attr";(this.hasDragged&&(!h||!h.hasDragged)||"scrollbar"===t.trigger)&&(s=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?r=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(o=this.fixedExtreme),this.zoomedMax===this.size&&(o=this.reversedExtremes?s.dataMin:s.dataMax),0===this.zoomedMin&&(r=this.reversedExtremes?s.dataMax:s.dataMin),a=l.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,r,o),(0,w.defined)(a.min)&&(0,w.fireEvent)(this,"setRange",{min:Math.min(a.min,a.max),max:Math.max(a.min,a.max),redraw:!0,animation:!this.hasDragged&&null,eventArguments:{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:d}})),"mousemove"!==t.DOMType&&"touchmove"!==t.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null),this.navigatorEnabled&&(0,w.isNumber)(this.zoomedMin)&&(0,w.isNumber)(this.zoomedMax)&&(i=Math.round(this.zoomedMin),e=Math.round(this.zoomedMax),this.shades&&this.drawMasks(i,e,c,p),this.outline&&this.drawOutline(i,e,c,p),this.navigatorOptions.handles?.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(i,0,c,p),this.drawHandle(e,1,c,p)))}removeEvents(){this.eventsToUnbind?.forEach(t=>{t()}),this.eventsToUnbind=void 0,this.removeBaseSeriesEvents()}removeBaseSeriesEvents(){let t=this.baseSeries||[];this.navigatorEnabled&&t[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&t.forEach(function(t){(0,w.removeEvent)(t,"updatedData",this.updatedDataHandler)},this),t[0].xAxis&&(0,w.removeEvent)(t[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))}getXAxisOffsets(){return this.chart.inverted?[this.scrollButtonSize,0,-this.scrollButtonSize,0]:[0,-this.scrollButtonSize,0,this.scrollButtonSize]}init(t){let e=t.options,i=e.navigator||{},s=i.enabled,r=e.scrollbar||{},o=r.enabled,a=s&&i.height||0,n=o&&r.height||0,l=r.buttonsEnabled&&n||0;this.handles=[],this.shades=[],this.chart=t,this.setBaseSeries(),this.height=a,this.scrollbarHeight=n,this.scrollButtonSize=l,this.scrollbarEnabled=o,this.navigatorEnabled=!!s,this.navigatorOptions=i,this.scrollbarOptions=r,this.setOpposite();let h=this,d=h.baseSeries,c=t.xAxis.length,p=t.yAxis.length,u=d&&d[0]&&d[0].xAxis||t.xAxis[0]||{options:{}};if(t.isDirtyBox=!0,h.navigatorEnabled){let e=this.getXAxisOffsets();h.xAxis=new(X())(t,(0,w.merge)({breaks:u.options.breaks,ordinal:u.options.ordinal,overscroll:u.options.overscroll},i.xAxis,{type:"datetime",yAxis:i.yAxis?.id,index:c,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:u.options.ordinal?0:u.options.minPadding,maxPadding:u.options.ordinal?0:u.options.maxPadding,zoomEnabled:!1},t.inverted?{offsets:e,width:a}:{offsets:e,height:a}),"xAxis"),h.yAxis=new(X())(t,(0,w.merge)(i.yAxis,{alignTicks:!1,offset:0,index:p,isInternal:!0,reversed:(0,w.pick)(i.yAxis&&i.yAxis.reversed,t.yAxis[0]&&t.yAxis[0].reversed,!1),zoomEnabled:!1},t.inverted?{width:a}:{height:a}),"yAxis"),h.xAxis.clippable=!1,h.yAxis.clippable=!1,d||i.series?.data||i.series?.dataTable?h.updateNavigatorSeries(!1):0===t.series.length&&(h.unbindRedraw=(0,w.addEvent)(t,"beforeRedraw",function(){t.series.length>0&&!h.series&&(h.setBaseSeries(),h.unbindRedraw?.())})),h.reversedExtremes=t.inverted&&!h.xAxis.reversed||!t.inverted&&h.xAxis.reversed,h.renderElements(),h.addMouseEvents()}else h.xAxis={chart:t,navigatorAxis:{fake:!0},translate:function(e,i){let s=t.xAxis[0],r=s.getExtremes(),o=s.len-2*l,a=tB("min",s.options.min,r.dataMin),n=tB("max",s.options.max,r.dataMax)-a;return i?e*n/o+a:o*(e-a)/n},toPixels:function(t){return this.translate(t)},toValue:function(t){return this.translate(t,!0)}},h.xAxis.navigatorAxis.axis=h.xAxis,h.xAxis.navigatorAxis.toFixedRange=tr.prototype.toFixedRange.bind(h.xAxis.navigatorAxis);if(t.options.scrollbar?.enabled){let e=(0,w.merge)(t.options.scrollbar,{vertical:t.inverted});(0,w.isNumber)(e.margin)||(e.margin=t.inverted?-3:3),t.scrollbar=h.scrollbar=new tw(t.renderer,e,t),(0,w.addEvent)(h.scrollbar,"changed",function(t){let e=h.size,i=e*this.to,s=e*this.from;h.hasDragged=h.scrollbar?.hasDragged,h.render(0,0,s,i),this.shouldUpdateExtremes(t.DOMType)&&setTimeout(function(){h.onMouseUp(t)})})}h.addBaseSeriesEvents(),h.addChartEvents()}setOpposite(){let t=this.navigatorOptions,e=this.navigatorEnabled,i=this.chart;this.opposite=(0,w.pick)(t.opposite,!!(!e&&i.inverted))}getUnionExtremes(t){let e,i=this.chart.xAxis[0],s=this.chart.time,r=this.xAxis,o=r.options,a=i.options;return t&&null===i.dataMin||(e={dataMin:(0,w.pick)(s.parse(o?.min),tB("min",s.parse(a.min),i.dataMin,r.dataMin,r.min)),dataMax:(0,w.pick)(s.parse(o?.max),tB("max",s.parse(a.max),i.dataMax,r.dataMax,r.max))}),e}setBaseSeries(t,e){let i=this.chart,s=this.baseSeries=[];t=t||i.options.navigator?.baseSeries||(i.series.length?(0,w.find)(i.series,t=>!t.options.isInternal).index:0),(i.series||[]).forEach((e,i)=>{!e.options.isInternal&&(e.options.showInNavigator||(i===t||e.options.id===t)&&!1!==e.options.showInNavigator)&&s.push(e)}),this.xAxis&&!this.xAxis.navigatorAxis.fake&&this.updateNavigatorSeries(!0,e)}updateNavigatorSeries(t,e){let i=this,s=i.chart,r=i.baseSeries,o={enableMouseTracking:!1,index:null,linkedTo:null,group:"nav",padXAxis:!1,xAxis:this.navigatorOptions.xAxis?.id,yAxis:this.navigatorOptions.yAxis?.id,showInLegend:!1,stacking:void 0,isInternal:!0,states:{inactive:{opacity:1}}},a=i.series=(i.series||[]).filter(t=>{let e=t.baseSeries;return!(e&&0>r.indexOf(e))||(e&&((0,w.removeEvent)(e,"updatedData",i.updatedDataHandler),delete e.navigatorSeries),t.chart&&t.destroy(),!1)}),n,l,h=i.navigatorOptions.series,d;if(r&&r.length&&r.forEach(t=>{let c=t.navigatorSeries,p=(0,w.extend)({color:t.color,visible:t.visible},(0,w.isArray)(h)?tS.navigator.series:h);if(c&&!1===i.navigatorOptions.adaptToUpdatedData)return;o.name="Navigator "+r.length,d=(n=t.options||{}).navigatorOptions||{},p.dataLabels=(0,w.splat)(p.dataLabels),(l=(0,w.merge)(n,o,p,d)).pointRange=(0,w.pick)(p.pointRange,d.pointRange,tS.plotOptions[l.type||"line"]?.pointRange);let u=d.data||p.data,g=d.dataTable||p.dataTable;i.hasNavigatorData=i.hasNavigatorData||!!u||!!g,l.data=u||n.data?.slice(0),l.dataTable=g||n.dataTable,c&&c.options?c.update(l,e):(t.navigatorSeries=s.initSeries(l),(0,w.fireEvent)(t.navigatorSeries,"afterUpdate"),t.navigatorSeries.baseSeries=t,a.push(t.navigatorSeries))}),(h?.data||h?.dataTable)&&!(r&&r.length)||(0,w.isArray)(h)){let t=s.options.colors||[];i.hasNavigatorData=!1,(h=(0,w.splat)(h)).forEach((e,r)=>{o.name="Navigator "+(a.length+1),(l=(0,w.merge)(tS.navigator?.series,{color:s.series[r]&&!s.series[r].options.isInternal&&s.series[r].color||t[r]||t[0]},o,e)).data=e.data,l.dataTable=e.dataTable,(l.data||l.dataTable)&&(i.hasNavigatorData=!0,a.push(s.initSeries(l)))})}t&&this.addBaseSeriesEvents()}addBaseSeriesEvents(){let t=this,e=t.baseSeries||[];e[0]&&e[0].xAxis&&e[0].eventsToUnbind.push((0,w.addEvent)(e[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes)),e.forEach(i=>{i.eventsToUnbind.push((0,w.addEvent)(i,"show",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)})),i.eventsToUnbind.push((0,w.addEvent)(i,"hide",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)})),!1!==this.navigatorOptions.adaptToUpdatedData&&i.xAxis&&i.eventsToUnbind.push((0,w.addEvent)(i,"updatedData",this.updatedDataHandler)),i.eventsToUnbind.push((0,w.addEvent)(i,"remove",function(){e&&(0,w.erase)(e,i),this.navigatorSeries&&t.series&&((0,w.erase)(t.series,this.navigatorSeries),(0,w.defined)(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)}))})}getBaseSeriesMin(t){return this.baseSeries.reduce(function(t,e){return Math.min(t,e.getColumn("x")[0]??t)},t)}modifyNavigatorAxisExtremes(){let t=this.xAxis;if(void 0!==t.getExtremes){let e=this.getUnionExtremes(!0);e&&(e.dataMin!==t.min||e.dataMax!==t.max)&&(t.min=e.dataMin,t.max=e.dataMax)}}modifyBaseAxisExtremes(){let t,e,i=this.chart.navigator,s=this.getExtremes(),r=s.min,o=s.max,a=s.dataMin,n=s.dataMax,l=o-r,h=i?.stickToMin,d=i?.stickToMax,c=(0,w.pick)(this.ordinal?.convertOverscroll(this.options.overscroll),0),p=i.series&&i.series[0],u=!!this.setExtremes;!(this.eventArgs&&"rangeSelectorButton"===this.eventArgs.trigger)&&(h&&(t=(e=a)+l),d&&(t=n+c,h||(e=Math.max(a,t-l,i.getBaseSeriesMin(p&&p.xData?p.xData[0]:-Number.MAX_VALUE)))),u&&(h||d)&&(0,w.isNumber)(e)&&(this.min=this.userMin=e,this.max=this.userMax=t)),i.stickToMin=i.stickToMax=null}updatedDataHandler(){let t=this.chart.navigator,e=this.navigatorSeries,i=t.reversedExtremes?0===Math.round(t.zoomedMin):Math.round(t.zoomedMax)>=Math.round(t.size);t.stickToMax=(0,w.pick)(this.chart.options.navigator&&this.chart.options.navigator.stickToMax,i),t.stickToMin=t.shouldStickToMin(this,t),e&&!t.hasNavigatorData&&(e.options.pointStart=this.getColumn("x")[0],e.setData(this.options.data||this.options.dataTable,!1,void 0,!1))}shouldStickToMin(t,e){let i=e.getBaseSeriesMin(t.getColumn("x")[0]),s=t.xAxis,r=s.max,o=s.min,a=s.options.range;return!!((0,w.isNumber)(r)&&(0,w.isNumber)(o))&&(a&&r-i>0?r-i<a:o<=i)}addChartEvents(){this.eventsToUnbind||(this.eventsToUnbind=[]),this.eventsToUnbind.push((0,w.addEvent)(this.chart,"redraw",function(){let t=this.navigator,e=t&&(t.baseSeries&&t.baseSeries[0]&&t.baseSeries[0].xAxis||this.xAxis[0]);e&&t.render(e.min,e.max)}),(0,w.addEvent)(this.chart,"getMargins",function(){let t=this.navigator,e=t.opposite?"plotTop":"marginBottom";this.inverted&&(e=t.opposite?"marginRight":"plotLeft"),this[e]=(this[e]||0)+(t.navigatorEnabled||!this.inverted?t.height+(this.scrollbar?.options.margin||0)+t.scrollbarHeight:0)+(t.navigatorOptions.margin||0)}),(0,w.addEvent)(this,"setRange",function(t){this.chart.xAxis[0].setExtremes(t.min,t.max,t.redraw,t.animation,t.eventArguments)}))}destroy(){this.removeEvents(),this.xAxis&&((0,w.erase)(this.chart.xAxis,this.xAxis),(0,w.erase)(this.chart.axes,this.xAxis)),this.yAxis&&((0,w.erase)(this.chart.yAxis,this.yAxis),(0,w.erase)(this.chart.axes,this.yAxis)),(this.series||[]).forEach(t=>{t.destroy&&t.destroy()}),["series","xAxis","yAxis","shades","outline","scrollbarTrack","scrollbarRifles","scrollbarGroup","scrollbar","navigatorGroup","rendered"].forEach(t=>{this[t]&&this[t].destroy&&this[t].destroy(),this[t]=null}),[this.handles].forEach(t=>{(0,w.destroyObjectProperties)(t)}),this.baseSeries.forEach(t=>{t.navigatorSeries=void 0}),this.navigatorEnabled=!1}}let tT={rangeSelectorZoom:"Zoom",rangeSelectorFrom:"",rangeSelectorTo:"→",rangeSelector:{allText:"All",allTitle:"View all",monthText:"{count}m",monthTitle:"View {count} {#eq count 1}month{else}months{/eq}",yearText:"{count}y",yearTitle:"View {count} {#eq count 1}year{else}years{/eq}",ytdText:"YTD",ytdTitle:"View year to date"}},tC={allButtonsEnabled:!1,buttons:[{type:"month",count:1},{type:"month",count:3},{type:"month",count:6},{type:"ytd"},{type:"year",count:1},{type:"all"}],buttonSpacing:5,dropdown:"responsive",enabled:void 0,verticalAlign:"top",buttonTheme:{width:28,height:18,padding:2,zIndex:7},floating:!1,x:0,y:0,height:void 0,inputBoxBorderColor:"none",inputBoxHeight:17,inputBoxWidth:void 0,inputDateFormat:"%[ebY]",inputDateParser:void 0,inputEditDateFormat:"%Y-%m-%d",inputEnabled:!0,inputPosition:{align:"right",x:0,y:0},inputSpacing:5,selected:void 0,buttonPosition:{align:"left",x:0,y:0},inputStyle:{color:"var(--highcharts-highlight-color-80)",cursor:"pointer",fontSize:"0.8em"},labelStyle:{color:"var(--highcharts-neutral-color-60)",fontSize:"0.8em"}},{defaultOptions:tN}=S(),{composed:tI}=S(),tD=[];function tL(){let t,e,i=this.range,s=i.type,r=this.max,o=this.chart.time,a=function(t,e){let i=o.toParts(t),r=i.slice();"year"===s?r[0]+=e:r[1]+=e;let a=o.makeTime.apply(o,r),n=o.toParts(a);return"month"===s&&i[1]===n[1]&&1===Math.abs(e)&&(r[0]=i[0],r[1]=i[1],r[2]=0),(a=o.makeTime.apply(o,r))-t};(0,w.isNumber)(i)?(t=r-i,e=i):i&&(t=r+a(r,-(i.count||1)),this.chart&&this.chart.setFixedRange(r-t));let n=(0,w.pick)(this.dataMin,5e-324);return(0,w.isNumber)(t)||(t=n),t<=n&&(t=n,void 0===e&&(e=a(t,i.count)),this.newMax=Math.min(t+e,(0,w.pick)(this.dataMax,Number.MAX_VALUE))),(0,w.isNumber)(r)?!(0,w.isNumber)(i)&&i&&i._offsetMin&&(t+=i._offsetMin):t=void 0,t}function tR(){this.rangeSelector?.redrawElements()}function tz(){this.options.rangeSelector&&this.options.rangeSelector.enabled&&(this.rangeSelector=new c(this))}function tG(){let t=this.rangeSelector;if(t){(0,w.isNumber)(t.deferredYTDClick)&&(t.clickButton(t.deferredYTDClick),delete t.deferredYTDClick);let e=t.options.verticalAlign;t.options.floating||("bottom"===e?this.extraBottomMargin=!0:"top"===e&&(this.extraTopMargin=!0))}}function tW(){let t,e=this.rangeSelector;if(!e)return;let i=this.xAxis[0].getExtremes(),s=this.legend,r=e&&e.options.verticalAlign;(0,w.isNumber)(i.min)&&e.render(i.min,i.max),s?.display&&"top"===r&&r===s.options.verticalAlign&&(t=(0,w.merge)(this.spacingBox),"vertical"===s.options.layout?t.y=this.plotTop:t.y+=e.getHeight(),s.group.placed=!1,s.align(t))}function tH(){for(let t=0,e=tD.length;t<e;++t){let e=tD[t];if(e[0]===this){e[1].forEach(t=>t()),tD.splice(t,1);return}}}function tF(){let t=this.rangeSelector;if(t?.options?.enabled){let{min:e,max:i}=this.xAxis[0].getExtremes();(0,w.isNumber)(e)&&t.inputGroup&&t.inputGroup.getBBox().width<20&&t.render(e,i);let s=t.getHeight(),r=t.options.verticalAlign;t.options.floating||("bottom"===r?this.marginBottom+=s:"middle"!==r&&(this.plotTop+=s))}}function tU(t){let e=t.options.rangeSelector,i=this.extraBottomMargin,s=this.extraTopMargin,r=this.rangeSelector;if(e&&e.enabled&&!(0,w.defined)(r)&&this.options.rangeSelector&&(this.options.rangeSelector.enabled=!0,this.rangeSelector=r=new c(this)),this.extraBottomMargin=!1,this.extraTopMargin=!1,r){let t=e&&e.verticalAlign||r.options&&r.options.verticalAlign;r.options.floating||("bottom"===t?this.extraBottomMargin=!0:"middle"!==t&&(this.extraTopMargin=!0)),(this.extraBottomMargin!==i||this.extraTopMargin!==s)&&(this.isDirtyBox=!0)}}let tV=function(t,e,i){if(c=i,(0,w.pushUnique)(tI,"RangeSelector")){let i=e.prototype;t.prototype.minFromRange=tL,(0,w.addEvent)(e,"afterGetContainer",tz),(0,w.addEvent)(e,"beforeRender",tG),(0,w.addEvent)(e,"destroy",tH),(0,w.addEvent)(e,"getMargins",tF),(0,w.addEvent)(e,"redraw",tW),(0,w.addEvent)(e,"update",tU),(0,w.addEvent)(e,"beforeRedraw",tR),i.callbacks.push(tW),(0,w.extend)(tN,{rangeSelector:tC}),(0,w.extend)(tN.lang,tT)}};var tX=E(28),tY=E.n(tX),tj=E(984),t_=E.n(tj);let{defaultOptions:tq}=S(),{format:tZ}=t_();function t$(t){let e=e=>RegExp(`%[[a-zA-Z]*${e}`).test(t);if((0,w.isString)(t)?-1!==t.indexOf("%L"):t.fractionalSecondDigits)return"text";let i=(0,w.isString)(t)?["a","A","d","e","w","b","B","m","o","y","Y"].some(e):t.dateStyle||t.day||t.month||t.year,s=(0,w.isString)(t)?["H","k","I","l","M","S"].some(e):t.timeStyle||t.hour||t.minute||t.second;return i&&s?"datetime-local":i?"date":s?"time":"text"}class tK{static compose(t,e){tV(t,e,tK)}constructor(t){this.isDirty=!1,this.buttonOptions=[],this.initialButtonGroupWidth=0,this.maxButtonWidth=()=>{let t=0;return this.buttons.forEach(e=>{let i=e.getBBox();i.width>t&&(t=i.width)}),t},this.init(t)}clickButton(t,e){let i=this.chart,s=this.buttonOptions[t],r=i.xAxis[0],o=i.scroller&&i.scroller.getUnionExtremes()||r||{},a=s.type,n=s.dataGrouping,l=o.dataMin,h=o.dataMax,d,c=(0,w.isNumber)(r?.max)?Math.round(Math.min(r.max,h??r.max)):void 0,p,u=s._range,g,x,m,f=!0;if(null!==l&&null!==h){if(this.setSelected(t),n&&(this.forcedDataGrouping=!0,X().prototype.setDataGrouping.call(r||{chart:this.chart},n,!1),this.frozenStates=s.preserveDataGrouping),"month"===a||"year"===a)r?(x={range:s,max:c,chart:i,dataMin:l,dataMax:h},d=r.minFromRange.call(x),(0,w.isNumber)(x.newMax)&&(c=x.newMax),f=!1):u=s;else if(u)(0,w.isNumber)(c)&&(c=Math.min((d=Math.max(c-u,l))+u,h),f=!1);else if("ytd"===a)if(r)!r.hasData()||(0,w.isNumber)(h)&&(0,w.isNumber)(l)||(l=Number.MAX_VALUE,h=-Number.MAX_VALUE,i.series.forEach(t=>{let e=t.getColumn("x");e.length&&(l=Math.min(e[0],l),h=Math.max(e[e.length-1],h))}),e=!1),(0,w.isNumber)(h)&&(0,w.isNumber)(l)&&(d=g=(m=this.getYTDExtremes(h,l)).min,c=m.max);else{this.deferredYTDClick=t;return}else"all"===a&&r&&(i.navigator&&i.navigator.baseSeries[0]&&(i.navigator.baseSeries[0].xAxis.options.range=void 0),d=l,c=h);if(f&&s._offsetMin&&(0,w.defined)(d)&&(d+=s._offsetMin),s._offsetMax&&(0,w.defined)(c)&&(c+=s._offsetMax),this.dropdown&&(this.dropdown.selectedIndex=t+1),r)((0,w.isNumber)(d)||(0,w.isNumber)(c))&&(r.setExtremes(d,c,(0,w.pick)(e,!0),void 0,{trigger:"rangeSelectorButton",rangeSelectorButton:s}),i.setFixedRange(s._range));else{p=(0,w.splat)(i.options.xAxis||{})[0];let t=(0,w.addEvent)(i,"afterCreateAxes",function(){let t=i.xAxis[0];t.range=t.options.range=u,t.min=t.options.min=g});(0,w.addEvent)(i,"load",function(){let e=i.xAxis[0];i.setFixedRange(s._range),e.options.range=p.range,e.options.min=p.min,t()})}(0,w.fireEvent)(this,"afterBtnClick")}}setSelected(t){this.selected=this.options.selected=t}init(t){let e=this,i=t.options.rangeSelector,s=t.options.lang,r=i.buttons,o=i.selected,a=function(){let t=e.minInput,i=e.maxInput;t&&t.blur&&(0,w.fireEvent)(t,"blur"),i&&i.blur&&(0,w.fireEvent)(i,"blur")};e.chart=t,e.options=i,e.buttons=[],e.buttonOptions=r.map(t=>(t.type&&s.rangeSelector&&(t.text??(t.text=s.rangeSelector[`${t.type}Text`]),t.title??(t.title=s.rangeSelector[`${t.type}Title`])),t.text=tZ(t.text,{count:t.count||1}),t.title=tZ(t.title,{count:t.count||1}),t)),this.eventsToUnbind=[],this.eventsToUnbind.push((0,w.addEvent)(t.container,"mousedown",a)),this.eventsToUnbind.push((0,w.addEvent)(t,"resize",a)),r.forEach(e.computeButtonRange),void 0!==o&&r[o]&&this.clickButton(o,!1),this.eventsToUnbind.push((0,w.addEvent)(t,"load",function(){t.xAxis&&t.xAxis[0]&&(0,w.addEvent)(t.xAxis[0],"setExtremes",function(i){(0,w.isNumber)(this.max)&&(0,w.isNumber)(this.min)&&this.max-this.min!==t.fixedRange&&"rangeSelectorButton"!==i.trigger&&"updatedData"!==i.trigger&&e.forcedDataGrouping&&!e.frozenStates&&this.setDataGrouping(!1,!1)})})),this.createElements()}updateButtonStates(){let t=this,e=this.chart,i=this.dropdown,s=this.dropdownLabel,r=e.xAxis[0],o=Math.round(r.max-r.min),a=!r.hasVisibleSeries,n=24*36e5,l=e.scroller&&e.scroller.getUnionExtremes()||r,h=l.dataMin,d=l.dataMax,c=t.getYTDExtremes(d,h),p=c.min,u=c.max,g=t.selected,x=t.options.allButtonsEnabled,m=Array(t.buttonOptions.length).fill(0),f=(0,w.isNumber)(g),b=t.buttons,y=!1,v=null;t.buttonOptions.forEach((e,i)=>{let s=e._range,l=e.type,c=e.count||1,b=e._offsetMax-e._offsetMin,M=i===g,k=s>d-h,E=s<r.minRange,A=!1,w=s===o;if(M&&