highcharts
Version:
JavaScript charting framework
13 lines • 94.7 kB
JavaScript
let t,e;/**
* Highstock JS v13.0.1 (2026-08-17)
* @module highcharts/modules/stock
* @requires highcharts
*
* Highcharts Stock as a plugin for Highcharts
*
* (c) 2010-2026 Highsoft AS
* Author: Torstein Hønsi
*
* A commercial license may be required depending on use,
* see www.highcharts.com/license
*/import*as i from"../highcharts.js";import"./broken-axis.js";import"./datagrouping.js";import"./mouse-wheel-zoom.js";let s={};s.n=t=>{let e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{if(Array.isArray(e))for(var i=0;i<e.length;){var o=e[i++],r=e[i++];s.o(t,o)?0===r&&i++:0===r?Object.defineProperty(t,o,{enumerable:!0,value:e[i++]}):Object.defineProperty(t,o,{enumerable:!0,get:r})}else for(var o in e)s.o(e,o)&&!s.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let o=i.default;var r,a,n,l,h,d,p=s.n(o);let c=i.default.Point;var u=s.n(c);let g=i.default.Series;var m=s.n(g);let{tooltipFormatter:x}=u().prototype;!function(t){function e(t,e,i){!this.isXAxis&&(this.series.forEach(function(i){"compare"===t&&"boolean"!=typeof e?i.setCompare(e,!1):"cumulative"!==t||(0,o.isString)(e)||i.setCumulative(e,!1)}),(0,o.pick)(i,!0)&&this.chart.redraw())}function i(t){let e=this,{numberFormatter:i}=e.series.chart,s=function(s){t=t.replace("{point."+s+"}",(e[s]>0&&"change"===s?"+":"")+i(e[s],(0,o.pick)(e.series.tooltipOptions.changeDecimals,2)))};return(0,o.defined)(e.change)&&s("change"),(0,o.defined)(e.cumulativeSum)&&s("cumulativeSum"),x.apply(this,[t])}function s(){let t,e=this.options.linkedTo,i=this.chart;if(e){let t=":previous"===e?i.series[this.index-1]:i.get(e);t instanceof m()&&(this.options.compare=(0,o.pick)(this.userOptions.compare,t.options.compare))}let s=this.options.compare;("percent"===s||"value"===s||this.options.cumulative)&&(t=new p(this),"percent"===s||"value"===s?t.initCompare(s):t.initCumulative()),this.dataModify=t}function r(t){let e=t.dataExtremes,i=e.activeYData;if(this.dataModify&&e){let t;this.options.compare?t=[this.dataModify.modifyValue(e.dataMin),this.dataModify.modifyValue(e.dataMax)]:this.options.cumulative&&(0,o.isArray)(i)&&i.length>=2&&(t=p.getCumulativeExtremes(i)),t&&(e.dataMin=(0,o.arrayMin)(t),e.dataMax=(0,o.arrayMax)(t))}}function a(t,e){this.options.compare=this.userOptions.compare=t,this.update({},(0,o.pick)(e,!0)),this.dataModify&&("value"===t||"percent"===t)?this.dataModify.initCompare(t):this.points.forEach(t=>{delete t.change})}function n(){let t=this.getColumn(this.pointArrayMap&&(this.options.pointValKey||this.pointValKey)||"y",!0);if(this.xAxis&&t.length&&this.dataModify){let e=this.getColumn("x",!0),i=this.dataTable.rowCount,s=+(!0!==this.options.compareStart);for(let r=0;r<i-s;r++){let i=t[r];if((0,o.isNumber)(i)&&0!==i&&e[r+s]>=(this.xAxis.min||0)){this.dataModify.compareValue=i;break}}}}function l(t,e){this.setModifier("compare",t,e)}function h(t,e){t=(0,o.pick)(t,!1),this.options.cumulative=this.userOptions.cumulative=t,this.update({},(0,o.pick)(e,!0)),this.dataModify?this.dataModify.initCumulative():this.points.forEach(t=>{delete t.cumulativeSum})}function d(t,e){this.setModifier("cumulative",t,e)}t.compose=function(t,p,c){let u=p.prototype,g=c.prototype,m=t.prototype;return m.setCompare||(m.setCompare=a,m.setCumulative=h,(0,o.addEvent)(t,"afterInit",s),(0,o.addEvent)(t,"afterGetExtremes",r),(0,o.addEvent)(t,"afterProcessData",n)),u.setCompare||(u.setCompare=l,u.setModifier=e,u.setCumulative=d,g.tooltipFormatter=i),t};class p{constructor(t){this.series=t}modifyValue(){return 0}static getCumulativeExtremes(t){let e=1/0,i=-1/0;return t.reduce((t,s)=>{let o=t+s;return e=Math.min(e,o,t),i=Math.max(i,o,t),o}),[e,i]}initCompare(t){this.modifyValue=function(e,i){null===e&&(e=0);let s=this.compareValue;if(void 0!==e&&void 0!==s){if("value"===t?e-=s:e=e/Math.abs(s)*100-100*(100!==this.series.options.compareBase),void 0!==i){let t=this.series.points[i];t&&(t.change=e)}return e}return 0}}initCumulative(){this.modifyValue=function(t,e){if(null===t&&(t=0),void 0!==t&&void 0!==e){let i=e>0?this.series.points[e-1]:null;i&&i.cumulativeSum&&(t=(0,o.correctFloat)(i.cumulativeSum+t));let s=this.series.points[e],r=s.series.options.cumulativeStart,a=s.x<=this.series.xAxis.max&&s.x>=this.series.xAxis.min;return s&&(!r||a?s.cumulativeSum=t:s.cumulativeSum=void 0),t}return 0}}}t.Additions=p}(r||(r={}));let f=r,b=i.default.Axis;var v=s.n(b);let{isTouchDevice:y}=p(),M=[];function k(){this.navigator&&this.navigator.setBaseSeries(null,!1)}function A(){let t,e,i,s=this.legend,r=this.navigator;if(r){t=s&&s.options,e=r.xAxis,i=r.yAxis;let{scrollbarHeight:a,scrollButtonSize:n}=r;this.inverted?(r.left=r.opposite?this.chartWidth-a-r.height:this.spacing[3]+a,r.top=this.plotTop+n):(r.left=(0,o.pick)(e.left,this.plotLeft+n),r.top=r.navigatorOptions.top||this.chartHeight-r.height-a-(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,o.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 E(e){!this.navigator&&!this.scroller&&(this.options.navigator.enabled||this.options.scrollbar.enabled)&&(this.scroller=this.navigator=new t(this),(0,o.pick)(e.redraw,!0)&&this.redraw(e.animation))}function w(){let e=this.options;(e.navigator.enabled||e.scrollbar.enabled)&&(this.scroller=this.navigator=new t(this))}function S(){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 O(t){let e=t.navigator;if(e&&t.xAxis[0]){let i=t.xAxis[0].getExtremes();e.render(i.min,i.max)}}function T(t){let e=t.options.navigator||{},i=t.options.scrollbar||{};!this.navigator&&!this.scroller&&(e.enabled||i.enabled)&&((0,o.merge)(!0,this.options.navigator,e),(0,o.merge)(!0,this.options.scrollbar,i),delete t.options.navigator,delete t.options.scrollbar)}let C=function(e,i){if((0,o.pushUnique)(M,e)){let s=e.prototype;t=i,s.callbacks.push(O),(0,o.addEvent)(e,"afterAddSeries",k),(0,o.addEvent)(e,"afterSetChartSize",A),(0,o.addEvent)(e,"afterUpdate",E),(0,o.addEvent)(e,"beforeRender",w),(0,o.addEvent)(e,"beforeShowResetZoom",S),(0,o.addEvent)(e,"update",T)}},{isTouchDevice:B}=p();function D(){this.navigatorAxis||(this.navigatorAxis=new R(this))}function P(t){let e,i=this.chart,s=i.options,r=s.navigator,a=this.navigatorAxis,n=i.zooming.pinchType,l=s.rangeSelector,h=i.zooming.type;if(this.isXAxis&&(r?.enabled||l?.enabled)){if("y"===h&&"zoom"===t.trigger)e=!1;else if(("zoom"===t.trigger&&"xy"===h||B&&"xy"===n)&&this.options.range){let e=a.previousZoom;(0,o.defined)(t.min)?a.previousZoom=[this.min,this.max]:e&&(t.min=e[0],t.max=e[1],a.previousZoom=void 0)}}void 0!==e&&t.preventDefault()}class R{static compose(t){t.keepProps.includes("navigatorAxis")||(t.keepProps.push("navigatorAxis"),(0,o.addEvent)(t,"init",D),(0,o.addEvent)(t,"setExtremes",P))}constructor(t){this.axis=t}destroy(){this.axis=void 0}toFixedRange(t,e,i,s){let r=this.axis,a=(r.pointRange||0)/2,n=(0,o.pick)(i,r.translate(t,!0,!r.horiz)),l=(0,o.pick)(s,r.translate(e,!0,!r.horiz));return(0,o.defined)(i)||(n=(0,o.correctFloat)(n+a)),(0,o.defined)(s)||(l=(0,o.correctFloat)(l-a)),(0,o.isNumber)(n)&&(0,o.isNumber)(l)||(n=l=void 0),{min:n,max:l}}}let L=i.default.SeriesRegistry;var z=s.n(L);let{seriesTypes:I}=z(),N={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===I.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:W}=p(),{noop:X}=p(),G={radius:0,scope:"stack",where:void 0},F={"navigator-handle":function(t,e,i,s,r={}){var a,n,l,h,d;let p=r.width?r.width/2:i,c=(0,o.relativeLength)((a=r.borderRadius,!(0,o.isObject)(a)&&(a={radius:a||0}),(0,o.merge)(G,void 0,a)).radius,Math.min(2*p,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],...(n=-p-1,l=2*p+1,h=s,d={r:c},d?.r?function(t,e,i,s,o){let r=o?.r||0;return[["M",t+r,e],["L",t+i-r,e],["A",r,r,0,0,1,t+i,e+r],["L",t+i,e+s-r],["A",r,r,0,0,1,t+i-r,e+s],["L",t+r,e+s],["A",r,r,0,0,1,t,e+s-r],["L",t,e+r],["A",r,r,0,0,1,t+r,e],["Z"]]}(n,.5,l,h,d):[["M",n,.5],["L",n+l,.5],["L",n+l,.5+h],["L",n,.5+h],["Z"]])]}},U=i.default.SVGRenderer;var Y=s.n(U);let H={setFixedRange:function(t){let e=this.xAxis[0];(0,o.defined)(e.dataMax)&&(0,o.defined)(e.dataMin)&&t?this.fixedRange=Math.min(t,e.dataMax-e.dataMin):this.fixedRange=t}},{defaultOptions:V}=p(),{composed:_}=p(),{setFixedRange:j}=H;function q(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}let K=function(t,e,i){R.compose(e),(0,o.pushUnique)(_,"Navigator")&&(t.prototype.setFixedRange=j,(0,o.extend)(Y().prototype.symbols,F),(0,o.extend)(V,{navigator:N}),(0,o.addEvent)(i,"afterUpdate",q))},{composed:Z}=p();!function(t){let e;function i(t){let e=(0,o.pick)(t.options?.min,t.min),i=(0,o.pick)(t.options?.max,t.max);return{axisMin:e,axisMax:i,scrollMin:(0,o.defined)(t.dataMin)?Math.min(e,t.min??1/0,t.dataMin,t.threshold??1/0):e,scrollMax:t.treeGrid?.adjustedMax??((0,o.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,o.addEvent)(t.scrollbar,"changed",function(e){let s,r,{axisMin:a,axisMax:n,scrollMin:l,scrollMax:h}=i(t),d=t.toPixels(l),p=t.toPixels(h)-d;if((0,o.defined)(a)&&(0,o.defined)(n))if(t.horiz&&!t.reversed||!t.horiz&&t.reversed?(s=Math.min(h,t.toValue(d+p*this.to)),r=Math.max(l,t.toValue(d+p*this.from))):(s=Math.min(h,t.toValue(d+p*(1-this.from))),r=Math.max(l,t.toValue(d+p*(1-this.to)))),this.shouldUpdateExtremes(e.DOMType)){let i="mousemove"!==e.DOMType&&"touchmove"!==e.DOMType&&void 0;t.setExtremes((0,o.correctFloat)(r),(0,o.correctFloat)(s),!0,i,e)}else this.setRange(this.from,this.to)}))}function a(){let t,e,s,{scrollMin:r,scrollMax:a}=i(this),n=this.scrollbar,l=(this.axisTitleMargin||0)+(this.titleOffset||0),h=this.chart.scrollbarsOffsets,d=this.options.margin||0;if(n&&h){if(this.horiz)this.opposite||(h[1]+=l),n.position(this.left,this.top+this.height+2+h[1]-(this.opposite?d:0),this.width,this.height),this.opposite||(h[1]+=d),t=1;else{let e;this.opposite&&(h[0]+=l),e=n.options.opposite?this.left+this.width+2+h[0]-(this.opposite?0:d):this.opposite?0:d,n.position(e,this.top,this.width,this.height),this.opposite&&(h[0]+=d),t=0}if(h[t]+=n.size+(n.options.margin||0),isNaN(r)||isNaN(a)||!(0,o.defined)(this.min)||!(0,o.defined)(this.max)||(0,o.defined)(this.dataMin)&&this.dataMin===this.dataMax)n.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),n.setRange(e,s)}else e=(this.toPixels(this.min)-this.toPixels(r))/(this.toPixels(a)-this.toPixels(r)),s=(this.toPixels(this.max)-this.toPixels(r))/(this.toPixels(a)-this.toPixels(r)),this.horiz&&!this.reversed||!this.horiz&&this.reversed?n.setRange(e,s):n.setRange(1-s,1-e)}}t.compose=function(t,i){(0,o.pushUnique)(Z,"Axis.Scrollbar")&&(e=i,(0,o.addEvent)(t,"afterGetOffset",s),(0,o.addEvent)(t,"afterInit",r),(0,o.addEvent)(t,"afterRender",a))}}(a||(a={}));let $=a,J={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:Q}=p(),{composed:tt}=p();class te{static compose(t){$.compose(t,te),(0,o.pushUnique)(tt,"Scrollbar")&&(0,o.extend)(Q,{scrollbar:J})}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),a=this.mouseMoveHandler.bind(this),n=this.mouseUpHandler.bind(this),l=[[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",a],[i.ownerDocument,"mouseup",n],[i,"touchstart",r],[i.ownerDocument,"touchmove",a],[i.ownerDocument,"touchend",n]];l.forEach(function(t){o.addEvent.apply(null,t)}),this._events=l}buttonToMaxClick(t){let e=(this.to-this.from)*(0,o.pick)(this.options.step,.2);this.updatePosition(this.from+e,this.to+e),(0,o.fireEvent)(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}buttonToMinClick(t){let e=(0,o.correctFloat)(this.to-this.from)*(0,o.pick)(this.options.step,.2);this.updatePosition((0,o.correctFloat)(this.from-e),(0,o.correctFloat)(this.to-e)),(0,o.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,o.destroyObjectProperties)(e.scrollbarButtons))}drawScrollbarButton(t){let e=this.renderer,i=this.scrollbarButtons,s=this.options,o=this.size,r=e.g().add(this.group);if(i.push(r),s.buttonsEnabled){let a=e.rect().addClass("highcharts-scrollbar-button").add(r);this.chart.styledMode||a.attr({stroke:s.buttonBorderColor,"stroke-width":s.buttonBorderWidth,fill:s.buttonBackgroundColor}),a.attr(a.crisp({x:-.5,y:-.5,width:o,height:o,r:s.buttonBorderRadius},a.strokeWidth()));let n=e.path(te.swapXY([["M",o/2+(t?-1:1),o/2-3],["L",o/2+(t?-1:1),o/2+3],["L",o/2+(t?2:-2),o/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,o.merge)(J,Q.scrollbar,e),this.options.margin=(0,o.pick)(this.options.margin,10),this.chart=i,this.size=(0,o.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,o.fireEvent)(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:t.type,DOMEvent:t}))}mouseUpHandler(t){this.hasDragged&&(0,o.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:o,margin:r=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=o?this.size:0,this.barWidth=s-(o?2*i:0),this.x=t+=r):(this.height=s=this.size,this.xOffset=l=o?this.size:0,this.barWidth=i-(o?2*s:0),this.y=this.y+r),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){o.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 a=this.trackBorderWidth=this.track.strokeWidth();this.track.attr({x:-(0,o.crisp)(0,a),y:-(0,o.crisp)(0,a)}),this.scrollbarGroup=t.g().add(r),this.scrollbar=t.rect().addClass("highcharts-scrollbar-thumb").attr({height:i-a,width:i-a,r:e.barBorderRadius||0}).add(this.scrollbarGroup),this.scrollbarRifles=t.path(te.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,o.crisp)(0,this.scrollbarStrokeWidth),-(0,o.crisp)(0,this.scrollbarStrokeWidth)),this.drawScrollbarButton(0),this.drawScrollbarButton(1)}setRange(t,e){let i,s,r=this.options,a=r.vertical,n=r.minWidth,l=this.barWidth,h=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";if(!(0,o.defined)(l))return;let d=l*Math.min(e,1);i=Math.ceil(l*(t=Math.max(t,0))),this.calculatedWidth=s=(0,o.correctFloat)(d-i),s<n&&(i=(l-n+s)*t,s=n);let p=Math.floor(i+this.xOffset+this.yOffset),c=s/2-.5;this.from=t,this.to=e,a?(this.scrollbarGroup[h]({translateY:p}),this.scrollbar[h]({height:s}),this.scrollbarRifles[h]({translateY:c}),this.scrollbarTop=p,this.scrollbarLeft=0):(this.scrollbarGroup[h]({translateX:p}),this.scrollbar[h]({width:s}),this.scrollbarRifles[h]({translateX:c}),this.scrollbarLeft=p,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,o.pick)(this.options.liveRedraw,p().svg&&!p().isTouchDevice&&!this.chart.boosted)||"mouseup"===t||"touchend"===t||!(0,o.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,o.fireEvent)(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}update(t){this.destroy(),this.init(this.chart.renderer,(0,o.merge)(!0,this.options,t),this.chart)}updatePosition(t,e){e>1&&(t=(0,o.correctFloat)(1-(0,o.correctFloat)(e-t)),e=1),t<0&&(e=(0,o.correctFloat)(e-t),t=0),this.from=t,this.to=e}}te.defaultOptions=J;let{defaultOptions:ti}=p(),{isTouchDevice:ts}=p();function to(t,...e){let i=[].filter.call(e,o.isNumber);if(i.length)return Math[t].apply(0,i)}class tr{static compose(t,e,i){C(t,tr),K(t,e,i)}constructor(t){this.isDirty=!1,this.scrollbarHeight=0,this.init(t)}drawHandle(t,e,i,s){let o=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-o)}:{translateX:Math.round(this.left+parseInt(t,10)),translateY:Math.round(this.top+this.height/2-o/2-1)})}drawOutline(t,e,i,s){let o=this.navigatorOptions.maskInside,r=this.outline.strokeWidth(),a=r/2,n=r%2/2,l=this.scrollButtonSize,h=this.size,d=this.top,p=this.height,c=d-a,u=d+p,g=this.left,m,x;i?(m=d+e+n,e=d+t+n,x=[["M",g+p,d-l-n],["L",g+p,m],["L",g,m],["M",g,e],["L",g+p,e],["L",g+p,d+h+l]],o&&x.push(["M",g+p,m-a],["L",g+p,e+a])):(g-=l,t+=g+l-n,e+=g+l-n,x=[["M",g,c],["L",t,c],["L",t,u],["M",e,u],["L",e,c],["L",g+h+2*l,c]],o&&x.push(["M",t-a,c],["L",e+a,c])),this.outline[s]({d:x})}drawMasks(t,e,i,s){let o,r,a,n,l=this.left,h=this.top,d=this.height;i?(a=[l,l,l],n=[h,h+t,h+e],r=[d,d,d],o=[t,e-t,this.size-e]):(a=[l,l+t,l+e],n=[h,h,h],r=[t,e-t,this.size-e],o=[d,d,d]),this.shades.forEach((t,e)=>{t[s]({x:a[e],y:n[e],width:r[e],height:o[e]})})}renderElements(){let t=this,e=t.navigatorOptions,i=e.maskInside,s=t.chart,o=s.inverted,r=s.renderer,a={cursor:o?"ns-resize":"ew-resize"},n=t.navigatorGroup??(t.navigatorGroup=r.g("navigator").attr({zIndex:8,visibility:"hidden"}).add());if([!i,i,!i].forEach((i,o)=>{let l=t.shades[o]??(t.shades[o]=r.rect().addClass("highcharts-navigator-mask"+(1===o?"-inside":"-outside")).add(n));s.styledMode||(l.attr({fill:i?e.maskFill:"rgba(0,0,0,0)"}),1===o&&l.css(a))}),t.outline||(t.outline=r.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,o=e.handles,{height:l,width:h}=o;[0,1].forEach(e=>{let d=o.symbols[e];(i=i||t.handles[e]?.symbolName!==d)&&(t.handles[e]?.destroy(),t.handles[e]=r.symbol(d,-h/2-1,0,h,l,o),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:o.backgroundColor,stroke:o.borderColor,"stroke-width":o.lineWidth,width:o.width,height:o.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,o.merge)(!0,i.options.navigator,t),this.navigatorOptions=i.options.navigator||{},this.setOpposite(),(0,o.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,o.removeEvent)(t,"updatedData",this.updatedDataHandler)},this),t.adaptToUpdatedData&&this.baseSeries.forEach(t=>{t.eventsToUnbind.push((0,o.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,a=this.xAxis,n=a.pointRange||0,l=a.navigatorAxis.fake?r.xAxis[0]:a,h=this.navigatorEnabled,d=this.rendered,p=r.inverted,c=r.xAxis[0].minRange,u=r.xAxis[0].options.maxRange,g=this.scrollButtonSize,m,x,f,b=this.scrollbarHeight,v,y;if(this.hasDragged&&!(0,o.defined)(i))return;if(this.isDirty&&this.renderElements(),t=(0,o.correctFloat)(t-n/2),e=(0,o.correctFloat)(e+n/2),!(0,o.isNumber)(t)||!(0,o.isNumber)(e))if(!d)return;else i=0,s=(0,o.pick)(a.width,l.width);this.left=(0,o.pick)(a.left,r.plotLeft+g+(p?r.plotWidth:0));let M=this.size=v=(0,o.pick)(a.len,(p?r.plotHeight:r.plotWidth)-2*g);m=p?b:v+2*g,i=(0,o.pick)(i,a.toPixels(t,!0)),s=(0,o.pick)(s,a.toPixels(e,!0)),(0,o.isNumber)(i)&&Math.abs(i)!==1/0||(i=0,s=m);let k=a.toValue(i,!0),A=a.toValue(s,!0),E=Math.abs((0,o.correctFloat)(A-k));(0,o.defined)(c)&&E<c?this.grabbedLeft?i=a.toPixels(A-c-n,!0):this.grabbedRight&&(s=a.toPixels(k+c+n,!0)):(0,o.defined)(u)&&(0,o.correctFloat)(E-n)>u&&(this.grabbedLeft?i=a.toPixels(A-u-n,!0):this.grabbedRight&&(s=a.toPixels(k+u+n,!0))),this.zoomedMax=(0,o.clamp)(Math.max(i,s),0,M),this.zoomedMin=(0,o.clamp)(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(i,s),0,M),this.range=this.zoomedMax-this.zoomedMin,M=Math.round(this.zoomedMax);let w=Math.round(this.zoomedMin);h&&(this.navigatorGroup.attr({visibility:"inherit"}),y=d&&!this.hasDragged?"animate":"attr",this.drawMasks(w,M,p,y),this.drawOutline(w,M,p,y),this.navigatorOptions.handles?.enabled&&(this.drawHandle(w,0,p,y),this.drawHandle(M,1,p,y))),this.scrollbar&&(p?(f=this.top-g,x=this.left-b+(h||!l.opposite?0:(l.titleOffset||0)+l.axisTitleMargin),b=v+2*g):(f=this.top+(h?this.height:-b),x=this.left-g),this.scrollbar.position(x,f,m,b),this.scrollbar.setRange(this.zoomedMin/(v||1),this.zoomedMax/(v||1))),this.rendered=!0,this.isDirty=!1,(0,o.fireEvent)(this,"afterRender")}addMouseEvents(){let t,e,i=this,s=i.chart,r=s.container,a=[];i.mouseMoveHandler=t=function(t){i.onMouseMove(t)},i.mouseUpHandler=e=function(t){i.onMouseUp(t)},a.push((0,o.addEvent)(s.renderTo,"mousemove",t),(0,o.addEvent)(r.ownerDocument,"mouseup",e),(0,o.addEvent)(s.renderTo,"touchmove",t),(0,o.addEvent)(r.ownerDocument,"touchend",e)),i.eventsToUnbind=a,i.series&&i.series[0]&&a.push((0,o.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,a){i.push((0,o.addEvent)(r.element,t,function(t){e[`${s}Mousedown`](t,a)}))})}),i}shadesMousedown(t,e){t=this.chart.pointer?.normalize(t)||t;let i=this.chart,s=this.xAxis,r=this.zoomedMin,a=this.size,n=this.range,l=this.left,h=t.chartX,d,p,c,u;i.inverted&&(h=t.chartY,l=this.top),1===e?(this.grabbedCenter=h,this.fixedWidth=n,this.dragOffset=h-r):(u=h-l-n/2,0===e?u=Math.max(0,u):2===e&&u+n>=a&&(u=a-n,this.reversedExtremes?(u-=n,p=this.getUnionExtremes()?.dataMin):d=this.getUnionExtremes()?.dataMax),u!==r&&(this.fixedWidth=n,c=s.navigatorAxis.toFixedRange(u,u+n,p,d),(0,o.defined)(c.min)&&(0,o.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],o=this.reversedExtremes;0===e?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=o?s.min:s.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=o?s.max:s.min),i.setFixedRange(void 0)}onMouseMove(t){let e=this,i=e.chart,s=e.navigatorSize,r=e.range,a=e.dragOffset,n=i.inverted,l=e.left,h;(!t.touches||0!==t.touches[0].pageX)&&(h=(t=i.pointer?.normalize(t)||t).chartX,n&&(l=e.top,h=t.chartY),e.grabbedLeft?(e.hasDragged=!0,e.render(0,0,h-l,e.otherHandlePos)):e.grabbedRight?(e.hasDragged=!0,e.render(0,0,e.otherHandlePos,h-l)):e.grabbedCenter&&a&&(e.hasDragged=!0,h<a?h=a:h>s+a-r&&(h=s+a-r),e.render(0,0,h-a,h-a+r)),e.hasDragged&&(0,o.pick)(e.scrollbarOptions?.liveRedraw,!ts&&!this.chart.boosted)&&(t.DOMType=t.type,setTimeout(function(){e.onMouseUp(t)},0)))}onMouseUp(t){let e,i,s,r,a,n,l=this.chart,h=this.xAxis,d=this.scrollbar,p=t.DOMEvent||t,c=l.inverted,u=this.rendered&&!this.hasDragged?"animate":"attr";(this.hasDragged&&(!d||!d.hasDragged)||"scrollbar"===t.trigger)&&(s=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?r=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(a=this.fixedExtreme),this.zoomedMax===this.size&&(a=this.reversedExtremes?s.dataMin:s.dataMax),0===this.zoomedMin&&(r=this.reversedExtremes?s.dataMax:s.dataMin),n=h.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,r,a),(0,o.defined)(n.min)&&(0,o.fireEvent)(this,"setRange",{min:Math.min(n.min,n.max),max:Math.max(n.min,n.max),redraw:!0,animation:!this.hasDragged&&null,eventArguments:{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:p}})),"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,o.isNumber)(this.zoomedMin)&&(0,o.isNumber)(this.zoomedMax)&&(i=Math.round(this.zoomedMin),e=Math.round(this.zoomedMax),this.shades&&this.drawMasks(i,e,c,u),this.outline&&this.drawOutline(i,e,c,u),this.navigatorOptions.handles?.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(i,0,c,u),this.drawHandle(e,1,c,u)))}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,o.removeEvent)(t,"updatedData",this.updatedDataHandler)},this),t[0].xAxis&&(0,o.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||{},a=r.enabled,n=s&&i.height||0,l=a&&r.height||0,h=r.buttonsEnabled&&l||0;this.handles=[],this.shades=[],this.chart=t,this.setBaseSeries(),this.height=n,this.scrollbarHeight=l,this.scrollButtonSize=h,this.scrollbarEnabled=a,this.navigatorEnabled=!!s,this.navigatorOptions=i,this.scrollbarOptions=r,this.setOpposite();let d=this,p=d.baseSeries,c=t.xAxis.length,u=t.yAxis.length,g=p&&p[0]&&p[0].xAxis||t.xAxis[0]||{options:{}};if(t.isDirtyBox=!0,d.navigatorEnabled){let e=this.getXAxisOffsets();d.xAxis=new(v())(t,(0,o.merge)({breaks:g.options.breaks,ordinal:g.options.ordinal,overscroll:g.options.overscroll},i.xAxis,{type:"datetime",yAxis:i.yAxis?.id,index:c,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:g.options.ordinal?0:g.options.minPadding,maxPadding:g.options.ordinal?0:g.options.maxPadding,zoomEnabled:!1},t.inverted?{offsets:e,width:n}:{offsets:e,height:n}),"xAxis"),d.yAxis=new(v())(t,(0,o.merge)(i.yAxis,{alignTicks:!1,offset:0,index:u,isInternal:!0,reversed:(0,o.pick)(i.yAxis&&i.yAxis.reversed,t.yAxis[0]&&t.yAxis[0].reversed,!1),zoomEnabled:!1},t.inverted?{width:n}:{height:n}),"yAxis"),d.xAxis.clippable=!1,d.yAxis.clippable=!1,p||i.series?.data||i.series?.dataTable?d.updateNavigatorSeries(!1):0===t.series.length&&(d.unbindRedraw=(0,o.addEvent)(t,"beforeRedraw",function(){t.series.length>0&&!d.series&&(d.setBaseSeries(),d.unbindRedraw?.())})),d.reversedExtremes=t.inverted&&!d.xAxis.reversed||!t.inverted&&d.xAxis.reversed,d.renderElements(),d.addMouseEvents()}else d.xAxis={chart:t,navigatorAxis:{fake:!0},translate:function(e,i){let s=t.xAxis[0],o=s.getExtremes(),r=s.len-2*h,a=to("min",s.options.min,o.dataMin),n=to("max",s.options.max,o.dataMax)-a;return i?e*n/r+a:r*(e-a)/n},toPixels:function(t){return this.translate(t)},toValue:function(t){return this.translate(t,!0)}},d.xAxis.navigatorAxis.axis=d.xAxis,d.xAxis.navigatorAxis.toFixedRange=R.prototype.toFixedRange.bind(d.xAxis.navigatorAxis);if(t.options.scrollbar?.enabled){let e=(0,o.merge)(t.options.scrollbar,{vertical:t.inverted});(0,o.isNumber)(e.margin)||(e.margin=t.inverted?-3:3),t.scrollbar=d.scrollbar=new te(t.renderer,e,t),(0,o.addEvent)(d.scrollbar,"changed",function(t){let e=d.size,i=e*this.to,s=e*this.from;d.hasDragged=d.scrollbar?.hasDragged,d.render(0,0,s,i),this.shouldUpdateExtremes(t.DOMType)&&setTimeout(function(){d.onMouseUp(t)})})}d.addBaseSeriesEvents(),d.addChartEvents()}setOpposite(){let t=this.navigatorOptions,e=this.navigatorEnabled,i=this.chart;this.opposite=(0,o.pick)(t.opposite,!!(!e&&i.inverted))}getUnionExtremes(t){let e,i=this.chart.xAxis[0],s=this.chart.time,r=this.xAxis,a=r.options,n=i.options;return t&&null===i.dataMin||(e={dataMin:(0,o.pick)(s.parse(a?.min),to("min",s.parse(n.min),i.dataMin,r.dataMin,r.min)),dataMax:(0,o.pick)(s.parse(a?.max),to("max",s.parse(n.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,o.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,a={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}}},n=i.series=(i.series||[]).filter(t=>{let e=t.baseSeries;return!(e&&0>r.indexOf(e))||(e&&((0,o.removeEvent)(e,"updatedData",i.updatedDataHandler),delete e.navigatorSeries),t.chart&&t.destroy(),!1)}),l,h,d=i.navigatorOptions.series,p;if(r&&r.length&&r.forEach(t=>{let c=t.navigatorSeries,u=(0,o.extend)({color:t.color,visible:t.visible},(0,o.isArray)(d)?ti.navigator.series:d);if(c&&!1===i.navigatorOptions.adaptToUpdatedData)return;a.name="Navigator "+r.length,p=(l=t.options||{}).navigatorOptions||{},u.dataLabels=(0,o.splat)(u.dataLabels),(h=(0,o.merge)(l,a,u,p)).pointRange=(0,o.pick)(u.pointRange,p.pointRange,ti.plotOptions[h.type||"line"]?.pointRange);let g=p.data||u.data,m=p.dataTable||u.dataTable;i.hasNavigatorData=i.hasNavigatorData||!!g||!!m,h.data=g||l.data?.slice(0),h.dataTable=m||l.dataTable,c&&c.options?c.update(h,e):(t.navigatorSeries=s.initSeries(h),(0,o.fireEvent)(t.navigatorSeries,"afterUpdate"),t.navigatorSeries.baseSeries=t,n.push(t.navigatorSeries))}),(d?.data||d?.dataTable)&&!(r&&r.length)||(0,o.isArray)(d)){let t=s.options.colors||[];i.hasNavigatorData=!1,(d=(0,o.splat)(d)).forEach((e,r)=>{a.name="Navigator "+(n.length+1),(h=(0,o.merge)(ti.navigator?.series,{color:s.series[r]&&!s.series[r].options.isInternal&&s.series[r].color||t[r]||t[0]},a,e)).data=e.data,h.dataTable=e.dataTable,(h.data||h.dataTable)&&(i.hasNavigatorData=!0,n.push(s.initSeries(h)))})}t&&this.addBaseSeriesEvents()}addBaseSeriesEvents(){let t=this,e=t.baseSeries||[];e[0]&&e[0].xAxis&&e[0].eventsToUnbind.push((0,o.addEvent)(e[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes)),e.forEach(i=>{i.eventsToUnbind.push((0,o.addEvent)(i,"show",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)})),i.eventsToUnbind.push((0,o.addEvent)(i,"hide",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)})),!1!==this.navigatorOptions.adaptToUpdatedData&&i.xAxis&&i.eventsToUnbind.push((0,o.addEvent)(i,"updatedData",this.updatedDataHandler)),i.eventsToUnbind.push((0,o.addEvent)(i,"remove",function(){e&&(0,o.erase)(e,i),this.navigatorSeries&&t.series&&((0,o.erase)(t.series,this.navigatorSeries),(0,o.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,a=s.max,n=s.dataMin,l=s.dataMax,h=a-r,d=i?.stickToMin,p=i?.stickToMax,c=(0,o.pick)(this.ordinal?.convertOverscroll(this.options.overscroll),0),u=i.series&&i.series[0],g=!!this.setExtremes;!(this.eventArgs&&"rangeSelectorButton"===this.eventArgs.trigger)&&(d&&(t=(e=n)+h),p&&(t=l+c,d||(e=Math.max(n,t-h,i.getBaseSeriesMin(u&&u.xData?u.xData[0]:-Number.MAX_VALUE)))),g&&(d||p)&&(0,o.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,o.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,a=s.min,n=s.options.range;return!!((0,o.isNumber)(r)&&(0,o.isNumber)(a))&&(n&&r-i>0?r-i<n:a<=i)}addChartEvents(){this.eventsToUnbind||(this.eventsToUnbind=[]),this.eventsToUnbind.push((0,o.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,o.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,o.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,o.erase)(this.chart.xAxis,this.xAxis),(0,o.erase)(this.chart.axes,this.xAxis)),this.yAxis&&((0,o.erase)(this.chart.yAxis,this.yAxis),(0,o.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,o.destroyObjectProperties)(t)}),this.baseSeries.forEach(t=>{t.navigatorSeries=void 0}),this.navigatorEnabled=!1}}let{setLength:ta,splice:tn}={convertToNumber:function(t,e){switch(typeof t){case"boolean":return+!!t;case"number":return isNaN(t)&&!e?null:t;default:return isNaN(t=parseFloat(`${t??""}`))&&!e?null:t}},setLength:function(t,e,i){return Array.isArray(t)?(t.length=e,t):t[i?"subarray":"slice"](0,e)},splice:function(t,e,i,s,o=[]){if(Array.isArray(t))return Array.isArray(o)||(o=Array.from(o)),{removed:t.splice(e,i,...o),array:t};let r=Object.getPrototypeOf(t).constructor,a=t[s?"subarray":"slice"](e,e+i),n=new r(t.length-i+o.length);return n.set(t.subarray(0,e),0),n.set(o,e),n.set(t.subarray(e+i),e+o.length),{removed:a,array:n}}},tl=class{constructor(t={}){this.isDataTable=!0,this.autoId=!t.id,this.columns={},this.id=t.id||(0,o.uniqueKey)(),this.rowCount=0,this.versionTag=(0,o.uniqueKey)();let e=0;(0,o.objectEach)(t.columns||{},(t,i)=>{this.columns[i]=t.slice(),e=Math.max(e,t.length)}),this.applyRowCount(e)}applyRowCount(t){this.rowCount=t,(0,o.objectEach)(this.columns,(e,i)=>{e.length!==t&&(this.columns[i]=ta(e,t))})}deleteRows(t,e=1){if(e>0&&t<this.rowCount){let i=0;(0,o.objectEach)(this.columns,(s,o)=>{this.columns[o]=tn(s,t,e).array,i=s.length}),this.rowCount=i}(0,o.fireEvent)(this,"afterDeleteRows",{rowIndex:t,rowCount:e}),this.versionTag=(0,o.uniqueKey)()}getColumn(t,e){return this.columns[t]}getColumns(t,e){return(t||Object.keys(this.columns)).reduce((t,e)=>(t[e]=this.columns[e],t),{})}getRowObject(t,e){let i={},s=this.columns;for(let o of(e??(e=Object.keys(this.columns)),e))i[o]=s[o]?.[t];return i}setColumn(t,e=[],i=0,s){this.setColumns({[t]:e},i,s)}setColumns(t,e,i){let s=this.rowCount;(0,o.objectEach)(t,(t,e)=>{this.columns[e]=t.slice(),s=t.length}),this.applyRowCount(s),i?.silent||((0,o.fireEvent)(this,"afterSetColumns"),this.versionTag=(0,o.uniqueKey)())}setRow(t,e=this.rowCount,i,s){var r;let{columns:a}=this,n=i?this.rowCount+1:e+1,l=Object.keys(t);if(s?.addColumns!==!1)for(let t=0,e=l.length;t<e;t++)a[r=l[t]]||(a[r]=Array(this.rowCount));(0,o.objectEach)(a,(s,o)=>{s&&(i?s=tn(s,e,0,!0,[t[o]]).array:s[e]=o in t?t[o]:s[e],a[o]=s)}),this.applyRowCount(Math.max(n,this.rowCount)),s?.silent||((0,o.fireEvent)(this,"afterSetRows",{rowIndex:e}),this.versionTag=(0,o.uniqueKey)())}getModified(){return this.modified||this}};!function(t){function e(t,i,s,r,a=[],n=0,l){let h={},d=this.options.tickPixelInterval,p=this.chart.time,c=[],u,g,m,x,f,b=0,v=[],y=-Number.MAX_VALUE;if(!this.options.ordinal&&!this.options.breaks||!a||a.length<3||void 0===i)return p.getTimeTicks.apply(p,arguments);let M=a.length;for(u=0;u<M;u++){if(f=u&&a[u-1]>s,a[u]<i&&(b=u),u===M-1||a[u+1]-a[u]>5*n||f){if(a[u]>y){for(g=p.getTimeTicks(t,a[b],a[u],r);g.length&&g[0]<=y;)g.shift();g.length&&(y=g[g.length-1]),c.push(v.length),v=v.concat(g)}b=u+1}if(f)break}if(g){if(x=g.info,l&&x.unitRange<=o.timeUnits.hour){for(b=1,u=v.length-1;b<u;b++)p.dateFormat("%d",v[b])!==p.dateFormat("%d",v[b-1])&&(h[v[b]]="day",m=!0);m&&(h[v[0]]="day"),x.boundaryTicks=h}x.segmentStarts=c,v.info=x}else(0,o.error)(12,!1,this.chart);if(l&&(0,o.defined)(d)){let t=v.length,e=[],i=[],o,r,a,n,l,p=t;for(;p--;)r=this.translate(v[p]),a&&(i[p]=a-r),e[p]=a=r;for(i.sort((t,e)=>t-e),(n=i[Math.floor(i.length/2)])<.6*d&&(n=null),p=v[t-1]>s?t-1:t,a=void 0;p--;)l=Math.abs(a-(r=e[p])),a&&l<.8*d&&(null===n||l<.8*n)?(h[v[p]]&&!h[v[p+1]]?(o=p+1,a=r):o=p,v.splice(o,1)):a=r}return v}function i(t){let e=this.ordinal.positions;if(!e)return t;let i=e.length-1,s;return(t<0?t=e[0]:t>i?t=e[i]:(i=Math.floor(t),s=t-i),void 0!==s&&void 0!==e[i])?e[i]+(s?s*(e[i+1]-e[i]):0):t}function s(t){let e=this.ordinal,i=this.old?this.old.min:this.min,s=this.old?this.old.transA:this.transA,r=e.getExtendedPositions();if(r?.length){let a=(0,o.correctFloat)((t-i)*s+this.minPixelPadding),n=(0,o.correctFloat)(e.getIndexOfPoint(a,r)),l=(0,o.correctFloat)(n%1);if(n>=0&&n<=r.length-1){let t=r[Math.floor(n)],e=r[Math.ceil(n)];return r[Math.floor(n)]+l*(e-t)}}return t}function r(e,i){let s=t.Additions.findIndexOf(e,i,!0);if(e[s]===i)return s;let o=(i-e[s])/(e[s+1]-e[s]);return s+o}function a(){this.ordinal||(this.ordinal=new t.Additions(this))}function n(){let{eventArgs:t,options:e}=this;if(this.isXAxis&&(0,o.defined)(e.overscroll)&&0!==e.overscroll&&(0,o.isNumber)(this.max)&&(0,o.isNumber)(this.min)&&(this.options.ordinal&&!this.ordinal.originalOrdinalRange&&this.ordinal.getExtendedPositions(!1),this.isFullRange=(0,o.defined)(this.dataMin)&&(0,o.defined)(this.dataMax)&&this.max-this.min==this.dataMax-this.dataMin,this.max===this.dataMax&&(t?.trigger!=="pan"||this.isInternal)&&t?.trigger!=="navigator")){let i=this.ordinal.convertOverscroll(e.overscroll);this.max+=i,!this.isInternal&&(0,o.defined)(this.userMin)&&t?.trigger!=="mousewheel"&&(this.min+=i)}}function l(){this.horiz&&!this.isDirty&&(this.isDirty=this.isOrdinal&&this.chart.navigator&&!this.chart.navigator.adaptToUpdatedData)}function h(){this.ordinal&&(this.ordinal.beforeSetTickPositions(),this.tickInterval=this.ordinal.postProcessTickInterval(this.tickInterval))}function d(t){let e=this.xAxis[0],i=e.ordinal.convertOverscroll(e.options.overscroll),s=t.originalEvent.chartX,r=this.options.chart.panning,a=!1;if(r?.type!=="y"&&e.options.ordinal&&e.series.length&&(!t.touches||t.touches.length<=1)){let n,l,h=this.mouseDownX,d=e.getExtremes(),p=d.dataMin,c=d.dataMax,u=d.min,g=d.max,m=this.hoverPoints,x=e.closestPointRange||e.ordinal?.overscrollPointsRange,f=Math.round((h-s)/(e.translationSlope*(e.ordinal.slope||x))),b=e.ordinal.getExtendedPositions(),v={ordinal:{positions:b,extendedOrdinalPositions:b}},y=e.index2val,M=e.val2lin;if(u<=p&&f<=0||g>=c+i&&f>=0)if(!(r&&/y/.test(r.type)))return void t.preventDefault();else a=!0;else v.ordinal.positions?Math.abs(f)>1&&(m&&m.forEach(function(t){t.setState()}),l=v.ordinal.positions,i&&(l=v.ordinal.positions=l.concat(e.ordinal.getOverscrollPositions())),c>l[l.length-1]&&l.push(c),this.setFixedRange(g-u),(n=e.navigatorAxis.toFixedRange(void 0,void 0,y.apply(v,[M.apply(v,[u,!0])+f]),y.apply(v,[M.apply(v,[g,!0])+f]))).min>=Math.min(l[0],u)&&n.max<=Math.max(l[l.length-1],g)+i&&e.setExtremes(n.min,n.max,!0,!1,{trigger:"pan"}),this.mouseDownX=s,(0,o.css)(this.container,{cursor:"move"})):a=!0}else a=!0;a||r&&/y/.test(r.type)?i&&(0,o.isNumber)(e.dataMax)&&(e.max=e.dataMax+i):t.preventDefault()}function c(){let t=this.xAxis;t?.options.ordinal&&(delete t.ordinal.index,delete t.ordinal.originalOrdinalRange)}function u(t,e){let i,s=this.ordinal,o=s.positions,a=s.slope,n;if(!o)return t;let l=o.length;if(o[0]<=t&&o[l-1]>=t)i=r(o,t);else{if(n=s.getExtendedPositions?.(),!n?.length)return t;let l=n.length;a||(a=(n[l-1]-n[0])/l);let h=r(n,o[0]);if(t>=n[0]&&t<=n[l-1])i=r(n,t)-h;else{if(!e)return t;i=t<n[0]?-h-(n[0]-t)/a:(t-n[l-1])/a+l-h}}return e?i:a*(i||0)+s.offset}t.compose=function(t,r,p){let g=t.prototype;return g.ordinal2lin||(g.getTimeTicks=e,g.index2val=i,g.lin2val=s,g.val2lin=u,g.ordinal2lin=g.val2lin,(0,o.addEvent)(t,"afterInit",a),(0,o.addEvent)(t,"foundExtremes",n),(0,o.addEvent)(t,"afterSetScale",l),(0,o.addEvent)(t,"initialAxisTranslation",h),(0,o.addEvent)(p,"pan",d),(0,o.addEvent)(p,"touchpan",d),(0,o.addEvent)(r,"updatedData",c)),t},t.Additions=class{constructor(t){this.index={},this.axis=t}beforeSetTickPositions(){let t=this.axis,e=t.ordinal,i=t.getExtremes(),s=i.min,r=i.max,a=t.brokenAxis?.hasBreaks,n=t.options.ordinal,l=t.options.overscroll&&t.ordinal.convertOverscroll(t.options.overscroll)||0,h,d,p,c,u,g,m,x=[],f=Number.MAX_VALUE,b=!1,v=!1,y=!1;if(n||a){let i=0;if(t.series.forEach(function(t,e){let s=t.getColumn("x",!0);if(d=[],e>0&&"highcharts-navigator-series"!==t.options.id&&s.length>1&&(v=i!==s[1]-s[0]),i=s[1]-s[0],t.boosted&&(y=t.boosted),t.reserveSpace()&&(!1!==t.takeOrdinalPosition||a)&&(h=(x=x.concat(s)).length,x.sort(function(t,e){return t-e}),f=Math.min(f,(0,o.pick)(t.closestPointRange,f)),h)){for(e=0;e<h-1;)x[e]!==x[e+1]&&d.push(x[e+1]),e++;d[0]!==x[0]&&d.unshift(x[0]),x=d}}),t.ordinal.originalOrdinalRange||(t.ordinal.originalOrdinalRange=(x.length-1)*f),v&&y&&(x.pop(),x.shift()),(h=x.length)>2){for(p=x[1]-x[0],m=h-1;m--&&!b;)x[m+1]-x[m]!==p&&(b=!0);!t.options.keepOrdinalPadding&&(x[0]-s>p||r-l-x[h-1]>p)&&(b=!0)}else t.options.overscroll&&(2===h?f=x[1]-x[0]:1===h?(f=l,x=[x[0],x[0]+f]):f=e.overscrollPointsRange);b||t.forceOrdinal?(t.options.overscroll&&(e.overscrollPointsRange=f,x=x.concat(e.getOverscrollPositions())),e.positions=x,c=t.ordinal2lin(Math.max(s,x[0]),!0),u=Math.max(t.ordinal2lin(Math.min(r,x[x.length-1]),!0),1),e.slope=g=(r-s)/(u-c),e.offset=s-c*g):(e.overscrollPointsRange=(0,o.pick)(t.closestPointRange,e.overscrollPointsRange),e.positions=t.ordinal.slope=e.offset=void 0)}t.isOrdinal=n&&b,e.groupIntervalFactor=null}static findIndexOf(t,e,i){let s=0,o=t.length-1,r;for(;s<o;)t[r=Math.ceil((s+o)/2)]<=e?s=r:o=r-1;return t[s]===e||i?s:-1}getExtendedPositions(t=!0){let e=this,i=e.axis,s=i.constructor.prototype,o=i.chart,r=i.series.reduce((t,e)=>{let i=e.currentDataGrouping;return t+(i?i.count+i.unitName:"raw")},""),a=t?i.ordinal.convertOverscroll(i.options.overscroll):0,n=i.getExtremes(),l,h,d=e.index;return d||(d=e.index={}),!d[r]&&((l={series:[],chart:o,forceOrdinal:!1,getExtremes:function(){return{min:n.dataMin,max:n.dataMax+a}},applyGrouping:s.applyGrouping,getGroupPixelWidth:s.getGroupPixelWidth,getTimeTicks:s.getTimeTicks,options:{ordinal:!0},ordinal:{getGroupIntervalFactor:this.getGroupIntervalFactor},ordinal2lin:s.ordinal2lin,getIndexOfPoint:s.getIndexOfPoint,val2lin:s.val2lin}).ordinal.axis=l,i.series.forEach(i=>{if(!1===i.takeOrdinalPosition)return;h={xAxis:l,chart:o,groupPixelWidth:i.groupPixelWidth,destroyGroupedData:p().noop,getColumn:i.getColumn,getX:p().noop,applyGrouping:i.applyGrouping,getProcessedData:i.getProcessedData,reserveSpace:i.reserveSpace,visible:i.visible};let s=i.getColumn("x"),r=(Array.isArray(s)?s:Array.from(s)).concat(t?e.getOverscrollPositions():[]);h.dataTable=new tl({columns:{x:r}}),h.options={...i.options,dataGrouping:i.currentDataGrouping?{firstAnchor:i.options.dataGrouping?.firstAnchor,anchor:i.options.dataGrouping?.anchor,lastAnchor:i.options.dataGrouping?.firstAnchor,enabled:!0,forced:!0,approximation:"open",units:[[i.currentDataGrouping.unitName,[i.currentDataGrouping.count]]]}:{enabled:!1}},l.series.push(h),i.processData.apply(h)}),l.applyGrouping({hasExtremesChanged:!0}),h?.closestPointRange!==h?.basePointRange&&h.currentDataGrouping&&(l.forceOrdinal=!0),i.ordinal.beforeSetTickPositions.apply({axis:l}),!i.ordinal.originalOrdinalRange&&l.ordinal.originalOrdinalRange&&(i.ordinal.