highcharts
Version:
JavaScript charting framework
13 lines • 112 kB
JavaScript
!/**
* Highstock JS v12.6.0 (2026-04-13)
* @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
*/function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(t._Highcharts,t._Highcharts.Point,t._Highcharts.Series,t._Highcharts.Axis,t._Highcharts.Color,t._Highcharts.SeriesRegistry,t._Highcharts.RendererRegistry,t._Highcharts.SVGElement,t._Highcharts.Templating,t._Highcharts.Chart,t._Highcharts.Series.types.column,t._Highcharts.StackItem):"function"==typeof define&&define.amd?define("highcharts/modules/stock",["highcharts/highcharts"],function(t){return e(t,t.Point,t.Series,t.Axis,t.Color,t.SeriesRegistry,t.RendererRegistry,t.SVGElement,t.Templating,t.Chart,t.Series,["types"],["column"],t.StackItem)}):"object"==typeof exports?exports["highcharts/modules/stock"]=e(t._Highcharts,t._Highcharts.Point,t._Highcharts.Series,t._Highcharts.Axis,t._Highcharts.Color,t._Highcharts.SeriesRegistry,t._Highcharts.RendererRegistry,t._Highcharts.SVGElement,t._Highcharts.Templating,t._Highcharts.Chart,t._Highcharts.Series.types.column,t._Highcharts.StackItem):t.Highcharts=e(t.Highcharts,t.Highcharts.Point,t.Highcharts.Series,t.Highcharts.Axis,t.Highcharts.Color,t.Highcharts.SeriesRegistry,t.Highcharts.RendererRegistry,t.Highcharts.SVGElement,t.Highcharts.Templating,t.Highcharts.Chart,t.Highcharts.Series.types.column,t.Highcharts.StackItem)}("u"<typeof window?this:window,(t,e,i,s,o,n,r,a,l,h,d,p)=>(()=>{"use strict";let c,u,g,f;var m,x,b,v,y,M,A,k={28:t=>{t.exports=a},184:t=>{t.exports=p},260:t=>{t.exports=e},448:t=>{t.exports=d},512:t=>{t.exports=n},532:t=>{t.exports=s},608:t=>{t.exports=r},620:t=>{t.exports=o},820:t=>{t.exports=i},944:e=>{e.exports=t},960:t=>{t.exports=h},984:t=>{t.exports=l}},w={};function S(t){var e=w[t];if(void 0!==e)return e.exports;var i=w[t]={exports:{}};return k[t](i,i.exports,S),i.exports}S.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return S.d(e,{a:e}),e},S.d=(t,e)=>{for(var i in e)S.o(e,i)&&!S.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},S.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var O={};S.d(O,{default:()=>iB});var T=S(944),E=S.n(T),C=S(260),B=S.n(C),P=S(820),D=S.n(P);let{doc:R,win:I}=E();function G(t,e,i,s={}){let o="function"==typeof t&&t.prototype||t;Object.hasOwnProperty.call(o,"hcEvents")||(o.hcEvents={});let n=o.hcEvents;E().Point&&t instanceof E().Point&&t.series&&t.series.chart&&(t.series.chart.runTrackerClick=!0);let r=t.addEventListener;r&&r.call(t,e,i,!!E().supportsPassiveEvents&&{passive:void 0===s.passive?-1!==e.indexOf("touch"):s.passive,capture:!1}),n[e]||(n[e]=[]);let a={fn:i,order:"number"==typeof s.order?s.order:1/0};return n[e].push(a),n[e].sort((t,e)=>t.order-e.order),function(){tn(t,e,i)}}function L(t){let e=t.length,i=t[0];for(;e--;)t[e]<i&&(i=t[e]);return i}function z(t){let e=t.length,i=t[0];for(;e--;)t[e]>i&&(i=t[e]);return i}function W(t,e,i){return t>e?t<i?t:i:e}function H(t,e){return t>1e14?t:parseFloat(t.toPrecision(e||14))}function X(t,e,i,s,o){let n=R.createElement(t);return e&&V(n,e),o&&F(n,{padding:"0",border:"none",margin:"0"}),i&&F(n,i),s&&s.appendChild(n),n}function Y(t,e=0,i){let s=e%2/2,o=i?-1:1;return(Math.round(t*o-s)+s)*o}function F(t,e){V(t.style,e)}function N(t){return null!=t}function U(t,e,i){ti(t,function(s,o){s!==e&&s?.destroy&&s.destroy(),(s?.destroy||!i)&&delete t[o]})}function _(t,e){let i=t.length;for(;i--;)if(t[i]===e){t.splice(i,1);break}}function V(t,e){let i;for(i in t||(t={}),e)t[i]=e[i];return t}function j(t,e,i,s){if(i=i||{},R?.createEvent&&(t.dispatchEvent||t.fireEvent&&t!==E())){let s=R.createEvent("Events");s.initEvent(e,!0,!0),i=V(s,i),t.dispatchEvent?t.dispatchEvent(i):t.fireEvent(e,i)}else if(t.hcEvents){i.target||V(i,{preventDefault:function(){i.defaultPrevented=!0},target:t,type:e});let s=[],o=t,n=!1;for(;o.hcEvents;)Object.hasOwnProperty.call(o,"hcEvents")&&o.hcEvents[e]&&(s.length&&(n=!0),s.unshift.apply(s,o.hcEvents[e])),o=Object.getPrototypeOf(o);n&&s.sort((t,e)=>t.order-e.order),s.forEach(e=>{!1===e.fn.call(t,i,t)&&i.preventDefault()})}s&&!i.defaultPrevented&&s.call(t,i)}function Z(t){return Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}let K=Array.prototype.find?function(t,e){return t.find(e)}:function(t,e){let i,s=t.length;for(i=0;i<s;i++)if(e(t[i],i))return t[i]};function q(t){return tt(t)&&"number"==typeof t.nodeType}function $(t){return"number"==typeof t&&!isNaN(t)&&t<1/0&&t>-1/0}function J(t){return"string"==typeof t}function Q(t){let e=Object.prototype.toString.call(t);return"[object Array]"===e||"[object Array Iterator]"===e}function tt(t,e){return!!t&&"object"==typeof t&&(!e||!Q(t))}function te(t,...e){let i,s=[t,...e],o={},n=function(t,e){return"object"!=typeof t&&(t={}),ti(e,function(i,s){if("__proto__"!==s&&"constructor"!==s){let o;!tt(i,!0)||(o=i?.constructor,tt(i,!0)&&!q(i)&&o?.name&&"Object"!==o.name)||q(i)?t[s]=e[s]:t[s]=n(t[s]||{},i)}}),t};!0===t&&(o=s[1],s=Array.prototype.slice.call(s,2));let r=s.length;for(i=0;i<r;i++)o=n(o,s[i]);return o}function ti(t,e,i){for(let s in t)Object.hasOwnProperty.call(t,s)&&e.call(i||t[s],t[s],s,t)}function ts(){let t=arguments,e=t.length;for(let i=0;i<e;i++){let e=t[i];if(null!=e)return e}}function to(t,e){return 0>t.indexOf(e)&&!!t.push(e)}function tn(t,e,i){function s(e,i){let s=t.removeEventListener;s&&s.call(t,e,i,!1)}function o(i){let o,n;t.nodeName&&(e?(o={})[e]=!0:o=i,ti(o,function(t,e){if(i[e])for(n=i[e].length;n--;)s(e,i[e][n].fn)}))}let n="function"==typeof t&&t.prototype||t;if(Object.hasOwnProperty.call(n,"hcEvents")){let t=n.hcEvents;if(e){let n=t[e]||[];i?(t[e]=n.filter(function(t){return i!==t.fn}),s(e,i)):(o(t),t[e]=[])}else o(t),delete n.hcEvents}}function tr(t){return Q(t)?t:[t]}let{tooltipFormatter:ta}=B().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||J(e)||i.setCumulative(e,!1)}),ts(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],ts(e.series.tooltipOptions.changeDecimals,2)))};return N(e.change)&&s("change"),N(e.cumulativeSum)&&s("cumulativeSum"),ta.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 D()&&(this.options.compare=ts(this.userOptions.compare,t.options.compare))}let s=this.options.compare;("percent"===s||"value"===s||this.options.cumulative)&&(t=new d(this),"percent"===s||"value"===s?t.initCompare(s):t.initCumulative()),this.dataModify=t}function o(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&&Q(i)&&i.length>=2&&(t=d.getCumulativeExtremes(i)),t&&(e.dataMin=L(t),e.dataMax=z(t))}}function n(t,e){this.options.compare=this.userOptions.compare=t,this.update({},ts(e,!0)),this.dataModify&&("value"===t||"percent"===t)?this.dataModify.initCompare(t):this.points.forEach(t=>{delete t.change})}function r(){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 o=0;o<i-s;o++){let i=t[o];if($(i)&&0!==i&&e[o+s]>=(this.xAxis.min||0)){this.dataModify.compareValue=i;break}}}}function a(t,e){this.setModifier("compare",t,e)}function l(t,e){t=ts(t,!1),this.options.cumulative=this.userOptions.cumulative=t,this.update({},ts(e,!0)),this.dataModify?this.dataModify.initCumulative():this.points.forEach(t=>{delete t.cumulativeSum})}function h(t,e){this.setModifier("cumulative",t,e)}t.compose=function(t,d,p){let c=d.prototype,u=p.prototype,g=t.prototype;return g.setCompare||(g.setCompare=n,g.setCumulative=l,G(t,"afterInit",s),G(t,"afterGetExtremes",o),G(t,"afterProcessData",r)),c.setCompare||(c.setCompare=a,c.setModifier=e,c.setCumulative=h,u.tooltipFormatter=i),t};class d{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=H(i.cumulativeSum+t));let s=this.series.points[e],o=s.series.options.cumulativeStart,n=s.x<=this.series.xAxis.max&&s.x>=this.series.xAxis.min;return s&&(!o||n?s.cumulativeSum=t:s.cumulativeSum=void 0),t}return 0}}}t.Additions=d}(m||(m={}));let tl=m;var th=S(532),td=S.n(th);let{isTouchDevice:tp}=E(),tc=[];function tu(){this.navigator&&this.navigator.setBaseSeries(null,!1)}function tg(){let t,e,i,s=this.legend,o=this.navigator;if(o){t=s&&s.options,e=o.xAxis,i=o.yAxis;let{scrollbarHeight:n,scrollButtonSize:r}=o;this.inverted?(o.left=o.opposite?this.chartWidth-n-o.height:this.spacing[3]+n,o.top=this.plotTop+r):(o.left=ts(e.left,this.plotLeft+r),o.top=o.navigatorOptions.top||this.chartHeight-o.height-n-(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+ts(t.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0)),e&&i&&(this.inverted?e.options.left=i.options.left=o.left:e.options.top=i.options.top=o.top,e.setAxisSize(),i.setAxisSize())}}function tf(t){!this.navigator&&!this.scroller&&(this.options.navigator.enabled||this.options.scrollbar.enabled)&&(this.scroller=this.navigator=new c(this),ts(t.redraw,!0)&&this.redraw(t.animation))}function tm(){let t=this.options;(t.navigator.enabled||t.scrollbar.enabled)&&(this.scroller=this.navigator=new c(this))}function tx(){let t=this.options,e=t.navigator,i=t.rangeSelector;if((e&&e.enabled||i&&i.enabled)&&(!tp&&"x"===this.zooming.type||tp&&"x"===this.zooming.pinchType))return!1}function tb(t){let e=t.navigator;if(e&&t.xAxis[0]){let i=t.xAxis[0].getExtremes();e.render(i.min,i.max)}}function tv(t){let e=t.options.navigator||{},i=t.options.scrollbar||{};!this.navigator&&!this.scroller&&(e.enabled||i.enabled)&&(te(!0,this.options.navigator,e),te(!0,this.options.scrollbar,i),delete t.options.navigator,delete t.options.scrollbar)}let ty=function(t,e){if(to(tc,t)){let i=t.prototype;c=e,i.callbacks.push(tb),G(t,"afterAddSeries",tu),G(t,"afterSetChartSize",tg),G(t,"afterUpdate",tf),G(t,"beforeRender",tm),G(t,"beforeShowResetZoom",tx),G(t,"update",tv)}},{isTouchDevice:tM}=E();function tA(){this.navigatorAxis||(this.navigatorAxis=new tw(this))}function tk(t){let e,i=this.chart,s=i.options,o=s.navigator,n=this.navigatorAxis,r=i.zooming.pinchType,a=s.rangeSelector,l=i.zooming.type;if(this.isXAxis&&(o?.enabled||a?.enabled)){if("y"===l&&"zoom"===t.trigger)e=!1;else if(("zoom"===t.trigger&&"xy"===l||tM&&"xy"===r)&&this.options.range){let e=n.previousZoom;N(t.min)?n.previousZoom=[this.min,this.max]:e&&(t.min=e[0],t.max=e[1],n.previousZoom=void 0)}}void 0!==e&&t.preventDefault()}class tw{static compose(t){t.keepProps.includes("navigatorAxis")||(t.keepProps.push("navigatorAxis"),G(t,"init",tA),G(t,"setExtremes",tk))}constructor(t){this.axis=t}destroy(){this.axis=void 0}toFixedRange(t,e,i,s){let o=this.axis,n=(o.pointRange||0)/2,r=ts(i,o.translate(t,!0,!o.horiz)),a=ts(s,o.translate(e,!0,!o.horiz));return N(i)||(r=H(r+n)),N(s)||(a=H(a-n)),$(r)&&$(a)||(r=a=void 0),{min:r,max:a}}}var tS=S(620),tO=S.n(tS),tT=S(512),tE=S.n(tT);let{parse:tC}=tO(),{seriesTypes:tB}=tE(),tP={height:40,margin:22,maskInside:!0,handles:{width:7,borderRadius:0,height:15,symbols:["navigator-handle","navigator-handle"],enabled:!0,lineWidth:1,backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:tC("#667aff").setOpacity(.3).get(),outlineColor:"#999999",outlineWidth:1,series:{type:void 0===tB.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:"#e6e6e6",id:"navigator-x-axis",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"#000000",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}},tD={"navigator-handle":function(t,e,i,s,o={}){var n,r,a,l,h,d,p;let c=o.width?o.width/2:i,u=(n=o.borderRadius||0,r=Math.min(2*c,s),/%$/.test(n)?r*parseFloat(n)/100+0:parseFloat(n));return[["M",-1.5,(s=o.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,l=.5,h=2*c+1,d=s,p={r:u},p?.r?function(t,e,i,s,o){let n=o?.r||0;return[["M",t+n,e],["L",t+i-n,e],["A",n,n,0,0,1,t+i,e+n],["L",t+i,e+s-n],["A",n,n,0,0,1,t+i-n,e+s],["L",t+n,e+s],["A",n,n,0,0,1,t,e+s-n],["L",t,e+n],["A",n,n,0,0,1,t+n,e],["Z"]]}(a,.5,h,d,p):[["M",a,.5],["L",a+h,.5],["L",a+h,.5+d],["L",a,.5+d],["Z"]])]}};var tR=S(608),tI=S.n(tR);let tG={setFixedRange:function(t){let e=this.xAxis[0];N(e.dataMax)&&N(e.dataMin)&&t?this.fixedRange=Math.min(t,e.dataMax-e.dataMin):this.fixedRange=t}},{defaultOptions:tL}=E(),{composed:tz}=E(),{getRendererType:tW}=tI(),{setFixedRange:tH}=tG;function tX(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}let tY=function(t,e,i){tw.compose(e),to(tz,"Navigator")&&(t.prototype.setFixedRange=tH,V(tW().prototype.symbols,tD),V(tL,{navigator:tP}),G(i,"afterUpdate",tX))},{composed:tF}=E();!function(t){let e;function i(t){let e=ts(t.options?.min,t.min),i=ts(t.options?.max,t.max);return{axisMin:e,axisMax:i,scrollMin:N(t.dataMin)?Math.min(e,t.min??1/0,t.dataMin,t.threshold??1/0):e,scrollMax:t.treeGrid?.adjustedMax??(N(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 o(){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),G(t.scrollbar,"changed",function(e){let s,o,{axisMin:n,axisMax:r,scrollMin:a,scrollMax:l}=i(t),h=t.toPixels(a),d=t.toPixels(l)-h;if(N(n)&&N(r))if(t.horiz&&!t.reversed||!t.horiz&&t.reversed?(s=Math.min(l,t.toValue(h+d*this.to)),o=Math.max(a,t.toValue(h+d*this.from))):(s=Math.min(l,t.toValue(h+d*(1-this.from))),o=Math.max(a,t.toValue(h+d*(1-this.to)))),this.shouldUpdateExtremes(e.DOMType)){let i="mousemove"!==e.DOMType&&"touchmove"!==e.DOMType&&void 0;t.setExtremes(H(o),H(s),!0,i,e)}else this.setRange(this.from,this.to)}))}function n(){let t,e,s,{scrollMin:o,scrollMax:n}=i(this),r=this.scrollbar,a=(this.axisTitleMargin||0)+(this.titleOffset||0),l=this.chart.scrollbarsOffsets,h=this.options.margin||0;if(r&&l){if(this.horiz)this.opposite||(l[1]+=a),r.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]+=a),e=r.options.opposite?this.left+this.width+2+l[0]-(this.opposite?0:h):this.opposite?0:h,r.position(e,this.top,this.width,this.height),this.opposite&&(l[0]+=h),t=0}if(l[t]+=r.size+(r.options.margin||0),isNaN(o)||isNaN(n)||!N(this.min)||!N(this.max)||N(this.dataMin)&&this.dataMin===this.dataMax)r.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),r.setRange(e,s)}else e=(this.toPixels(this.min)-this.toPixels(o))/(this.toPixels(n)-this.toPixels(o)),s=(this.toPixels(this.max)-this.toPixels(o))/(this.toPixels(n)-this.toPixels(o)),this.horiz&&!this.reversed||!this.horiz&&this.reversed?r.setRange(e,s):r.setRange(1-s,1-e)}}t.compose=function(t,i){to(tF,"Axis.Scrollbar")&&(e=i,G(t,"afterGetOffset",s),G(t,"afterInit",o),G(t,"afterRender",n))}}(x||(x={}));let tN=x,tU={height:10,barBorderRadius:5,buttonBorderRadius:0,buttonsEnabled:!1,liveRedraw:void 0,margin:void 0,minWidth:6,opposite:!0,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:0,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"none",trackBackgroundColor:"rgba(255, 255, 255, 0.001)",trackBorderColor:"#cccccc",trackBorderRadius:5,trackBorderWidth:1},{defaultOptions:t_}=E(),{composed:tV}=E();class tj{static compose(t){tN.compose(t,tj),to(tV,"Scrollbar")&&V(t_,{scrollbar:tU})}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,o=this.mouseDownHandler.bind(this),n=this.mouseMoveHandler.bind(this),r=this.mouseUpHandler.bind(this),a=[[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",o],[i.ownerDocument,"mousemove",n],[i.ownerDocument,"mouseup",r],[i,"touchstart",o],[i.ownerDocument,"touchmove",n],[i.ownerDocument,"touchend",r]];a.forEach(function(t){G.apply(null,t)}),this._events=a}buttonToMaxClick(t){let e=(this.to-this.from)*ts(this.options.step,.2);this.updatePosition(this.from+e,this.to+e),j(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}buttonToMinClick(t){let e=H(this.to-this.from)*ts(this.options.step,.2);this.updatePosition(H(this.from-e),H(this.to-e)),j(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,U(e.scrollbarButtons))}drawScrollbarButton(t){let e=this.renderer,i=this.scrollbarButtons,s=this.options,o=this.size,n=e.g().add(this.group);if(i.push(n),s.buttonsEnabled){let r=e.rect().addClass("highcharts-scrollbar-button").add(n);this.chart.styledMode||r.attr({stroke:s.buttonBorderColor,"stroke-width":s.buttonBorderWidth,fill:s.buttonBackgroundColor}),r.attr(r.crisp({x:-.5,y:-.5,width:o,height:o,r:s.buttonBorderRadius},r.strokeWidth()));let a=e.path(tj.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||a.attr({fill:s.buttonArrowColor})}}init(t,e,i){this.scrollbarButtons=[],this.renderer=t,this.userOptions=e,this.options=te(tU,t_.scrollbar,e),this.options.margin=ts(this.options.margin,10),this.chart=i,this.size=ts(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",o=this.initPositions||[];this.grabbedCenter&&(!t.touches||0!==t.touches[0][s])&&(e=this.cursorToScrollbarPosition(i)[s]-this[s],this.hasDragged=!0,this.updatePosition(o[0]+e,o[1]+e),this.hasDragged&&j(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:t.type,DOMEvent:t}))}mouseUpHandler(t){this.hasDragged&&j(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:n=0,vertical:r}=this.options,a=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,r?(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+=n):(this.height=s=this.size,this.xOffset=l=o?this.size:0,this.barWidth=i-(o?2*s:0),this.y=this.y+n),this.group[a]({translateX:t,translateY:this.y}),this.track[a]({width:i,height:s}),this.scrollbarButtons[1][a]({translateX:r?0:i-l,translateY:r?s-h:0})}removeEvents(){this._events.forEach(function(t){tn.apply(null,t)}),this._events.length=0}render(){let t=this.renderer,e=this.options,i=this.size,s=this.chart.styledMode,o=t.g("scrollbar").attr({zIndex:e.zIndex}).hide().add();this.group=o,this.track=t.rect().addClass("highcharts-scrollbar-track").attr({r:e.trackBorderRadius||0,height:i,width:i}).add(o),s||this.track.attr({fill:e.trackBackgroundColor,stroke:e.trackBorderColor,"stroke-width":e.trackBorderWidth});let n=this.trackBorderWidth=this.track.strokeWidth();this.track.attr({x:-Y(0,n),y:-Y(0,n)}),this.scrollbarGroup=t.g().add(o),this.scrollbar=t.rect().addClass("highcharts-scrollbar-thumb").attr({height:i-n,width:i-n,r:e.barBorderRadius||0}).add(this.scrollbarGroup),this.scrollbarRifles=t.path(tj.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(-Y(0,this.scrollbarStrokeWidth),-Y(0,this.scrollbarStrokeWidth)),this.drawScrollbarButton(0),this.drawScrollbarButton(1)}setRange(t,e){let i,s,o=this.options,n=o.vertical,r=o.minWidth,a=this.barWidth,l=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";if(!N(a))return;let h=a*Math.min(e,1);i=Math.ceil(a*(t=Math.max(t,0))),this.calculatedWidth=s=H(h-i),s<r&&(i=(a-r+s)*t,s=r);let d=Math.floor(i+this.xOffset+this.yOffset),p=s/2-.5;this.from=t,this.to=e,n?(this.scrollbarGroup[l]({translateY:d}),this.scrollbar[l]({height:s}),this.scrollbarRifles[l]({translateY:p}),this.scrollbarTop=d,this.scrollbarLeft=0):(this.scrollbarGroup[l]({translateX:d}),this.scrollbar[l]({width:s}),this.scrollbarRifles[l]({translateX:p}),this.scrollbarLeft=d,this.scrollbarTop=0),s<=12?this.scrollbarRifles.hide():this.scrollbarRifles.show(),!1===o.showFull&&(t<=0&&e>=1?this.group.hide():this.group.show()),this.rendered=!0}shouldUpdateExtremes(t){return ts(this.options.liveRedraw,E().svg&&!E().isTouchDevice&&!this.chart.boosted)||"mouseup"===t||"touchend"===t||!N(t)}trackClick(t){let e=this.chart.pointer?.normalize(t)||t,i=this.to-this.from,s=this.y+this.scrollbarTop,o=this.x+this.scrollbarLeft;this.options.vertical&&e.chartY>s||!this.options.vertical&&e.chartX>o?this.updatePosition(this.from+i,this.to+i):this.updatePosition(this.from-i,this.to-i),j(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}update(t){this.destroy(),this.init(this.chart.renderer,te(!0,this.options,t),this.chart)}updatePosition(t,e){e>1&&(t=H(1-H(e-t)),e=1),t<0&&(e=H(e-t),t=0),this.from=t,this.to=e}}tj.defaultOptions=tU;let{defaultOptions:tZ}=E(),{isTouchDevice:tK}=E();function tq(t,...e){let i=[].filter.call(e,$);if(i.length)return Math[t].apply(0,i)}class t${static compose(t,e,i){ty(t,t$),tY(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,n=this.outline.strokeWidth(),r=n/2,a=n%2/2,l=this.scrollButtonSize,h=this.size,d=this.top,p=this.height,c=d-r,u=d+p,g=this.left,f,m;i?(f=d+e+a,e=d+t+a,m=[["M",g+p,d-l-a],["L",g+p,f],["L",g,f],["M",g,e],["L",g+p,e],["L",g+p,d+h+l]],o&&m.push(["M",g+p,f-r],["L",g+p,e+r])):(g-=l,t+=g+l-a,e+=g+l-a,m=[["M",g,c],["L",t,c],["L",t,u],["M",e,u],["L",e,c],["L",g+h+2*l,c]],o&&m.push(["M",t-r,c],["L",e+r,c])),this.outline[s]({d:m})}drawMasks(t,e,i,s){let o,n,r,a,l=this.left,h=this.top,d=this.height;i?(r=[l,l,l],a=[h,h+t,h+e],n=[d,d,d],o=[t,e-t,this.size-e]):(r=[l,l+t,l+e],a=[h,h,h],n=[t,e-t,this.size-e],o=[d,d,d]),this.shades.forEach((t,e)=>{t[s]({x:r[e],y:a[e],width:n[e],height:o[e]})})}renderElements(){let t=this,e=t.navigatorOptions,i=e.maskInside,s=t.chart,o=s.inverted,n=s.renderer,r={cursor:o?"ns-resize":"ew-resize"},a=t.navigatorGroup??(t.navigatorGroup=n.g("navigator").attr({zIndex:8,visibility:"hidden"}).add());if([!i,i,!i].forEach((i,o)=>{let l=t.shades[o]??(t.shades[o]=n.rect().addClass("highcharts-navigator-mask"+(1===o?"-inside":"-outside")).add(a));s.styledMode||(l.attr({fill:i?e.maskFill:"rgba(0,0,0,0)"}),1===o&&l.css(r))}),t.outline||(t.outline=n.path().addClass("highcharts-navigator-outline").add(a)),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]=n.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(a)),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(r)}),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(te(!0,i.options.navigator,t),this.navigatorOptions=i.options.navigator||{},this.setOpposite(),N(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=>{tn(t,"updatedData",this.updatedDataHandler)},this),t.adaptToUpdatedData&&this.baseSeries.forEach(t=>{t.eventsToUnbind.push(G(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 o=this.chart,n=this.xAxis,r=n.pointRange||0,a=n.navigatorAxis.fake?o.xAxis[0]:n,l=this.navigatorEnabled,h=this.rendered,d=o.inverted,p=o.xAxis[0].minRange,c=o.xAxis[0].options.maxRange,u=this.scrollButtonSize,g,f,m,x=this.scrollbarHeight,b,v;if(this.hasDragged&&!N(i))return;if(this.isDirty&&this.renderElements(),t=H(t-r/2),e=H(e+r/2),!$(t)||!$(e))if(!h)return;else i=0,s=ts(n.width,a.width);this.left=ts(n.left,o.plotLeft+u+(d?o.plotWidth:0));let y=this.size=b=ts(n.len,(d?o.plotHeight:o.plotWidth)-2*u);g=d?x:b+2*u,i=ts(i,n.toPixels(t,!0)),s=ts(s,n.toPixels(e,!0)),$(i)&&Math.abs(i)!==1/0||(i=0,s=g);let M=n.toValue(i,!0),A=n.toValue(s,!0),k=Math.abs(H(A-M));N(p)&&k<p?this.grabbedLeft?i=n.toPixels(A-p-r,!0):this.grabbedRight&&(s=n.toPixels(M+p+r,!0)):N(c)&&H(k-r)>c&&(this.grabbedLeft?i=n.toPixels(A-c-r,!0):this.grabbedRight&&(s=n.toPixels(M+c+r,!0))),this.zoomedMax=W(Math.max(i,s),0,y),this.zoomedMin=W(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(i,s),0,y),this.range=this.zoomedMax-this.zoomedMin,y=Math.round(this.zoomedMax);let w=Math.round(this.zoomedMin);l&&(this.navigatorGroup.attr({visibility:"inherit"}),v=h&&!this.hasDragged?"animate":"attr",this.drawMasks(w,y,d,v),this.drawOutline(w,y,d,v),this.navigatorOptions.handles?.enabled&&(this.drawHandle(w,0,d,v),this.drawHandle(y,1,d,v))),this.scrollbar&&(d?(m=this.top-u,f=this.left-x+(l||!a.opposite?0:(a.titleOffset||0)+a.axisTitleMargin),x=b+2*u):(m=this.top+(l?this.height:-x),f=this.left-u),this.scrollbar.position(f,m,g,x),this.scrollbar.setRange(this.zoomedMin/(b||1),this.zoomedMax/(b||1))),this.rendered=!0,this.isDirty=!1,j(this,"afterRender")}addMouseEvents(){let t,e,i=this,s=i.chart,o=s.container,n=[];i.mouseMoveHandler=t=function(t){i.onMouseMove(t)},i.mouseUpHandler=e=function(t){i.onMouseUp(t)},n.push(G(s.renderTo,"mousemove",t),G(o.ownerDocument,"mouseup",e),G(s.renderTo,"touchmove",t),G(o.ownerDocument,"touchend",e)),i.eventsToUnbind=n,i.series&&i.series[0]&&n.push(G(i.series[0].xAxis,"foundExtremes",function(){s.navigator?.modifyNavigatorAxisExtremes()}))}getPartsEvents(t){let e=this,i=[];return["shades","handles"].forEach(s=>{e[s].forEach(function(o,n){i.push(G(o.element,t,function(t){e[`${s}Mousedown`](t,n)}))})}),i}shadesMousedown(t,e){t=this.chart.pointer?.normalize(t)||t;let i=this.chart,s=this.xAxis,o=this.zoomedMin,n=this.size,r=this.range,a=this.left,l=t.chartX,h,d,p,c;i.inverted&&(l=t.chartY,a=this.top),1===e?(this.grabbedCenter=l,this.fixedWidth=r,this.dragOffset=l-o):(c=l-a-r/2,0===e?c=Math.max(0,c):2===e&&c+r>=n&&(c=n-r,this.reversedExtremes?(c-=r,d=this.getUnionExtremes()?.dataMin):h=this.getUnionExtremes()?.dataMax),c!==o&&(this.fixedWidth=r,N((p=s.navigatorAxis.toFixedRange(c,c+r,d,h)).min)&&j(this,"setRange",{min:Math.min(p.min,p.max),max:Math.max(p.min,p.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,o=e.range,n=e.dragOffset,r=i.inverted,a=e.left,l;(!t.touches||0!==t.touches[0].pageX)&&(l=(t=i.pointer?.normalize(t)||t).chartX,r&&(a=e.top,l=t.chartY),e.grabbedLeft?(e.hasDragged=!0,e.render(0,0,l-a,e.otherHandlePos)):e.grabbedRight?(e.hasDragged=!0,e.render(0,0,e.otherHandlePos,l-a)):e.grabbedCenter&&n&&(e.hasDragged=!0,l<n?l=n:l>s+n-o&&(l=s+n-o),e.render(0,0,l-n,l-n+o)),e.hasDragged&&ts(e.scrollbarOptions?.liveRedraw,!tK&&!this.chart.boosted)&&(t.DOMType=t.type,setTimeout(function(){e.onMouseUp(t)},0)))}onMouseUp(t){let e,i,s,o,n,r,a=this.chart,l=this.xAxis,h=this.scrollbar,d=t.DOMEvent||t,p=a.inverted,c=this.rendered&&!this.hasDragged?"animate":"attr";(this.hasDragged&&(!h||!h.hasDragged)||"scrollbar"===t.trigger)&&(s=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?o=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(n=this.fixedExtreme),this.zoomedMax===this.size&&(n=this.reversedExtremes?s.dataMin:s.dataMax),0===this.zoomedMin&&(o=this.reversedExtremes?s.dataMax:s.dataMin),N((r=l.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,o,n)).min)&&j(this,"setRange",{min:Math.min(r.min,r.max),max:Math.max(r.min,r.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&&$(this.zoomedMin)&&$(this.zoomedMax)&&(i=Math.round(this.zoomedMin),e=Math.round(this.zoomedMax),this.shades&&this.drawMasks(i,e,p,c),this.outline&&this.drawOutline(i,e,p,c),this.navigatorOptions.handles?.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(i,0,p,c),this.drawHandle(e,1,p,c)))}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){tn(t,"updatedData",this.updatedDataHandler)},this),t[0].xAxis&&tn(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,o=e.scrollbar||{},n=o.enabled,r=s&&i.height||0,a=n&&o.height||0,l=o.buttonsEnabled&&a||0;this.handles=[],this.shades=[],this.chart=t,this.setBaseSeries(),this.height=r,this.scrollbarHeight=a,this.scrollButtonSize=l,this.scrollbarEnabled=n,this.navigatorEnabled=!!s,this.navigatorOptions=i,this.scrollbarOptions=o,this.setOpposite();let h=this,d=h.baseSeries,p=t.xAxis.length,c=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(td())(t,te({breaks:u.options.breaks,ordinal:u.options.ordinal,overscroll:u.options.overscroll},i.xAxis,{type:"datetime",yAxis:i.yAxis?.id,index:p,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:r}:{offsets:e,height:r}),"xAxis"),h.yAxis=new(td())(t,te(i.yAxis,{alignTicks:!1,offset:0,index:c,isInternal:!0,reversed:ts(i.yAxis&&i.yAxis.reversed,t.yAxis[0]&&t.yAxis[0].reversed,!1),zoomEnabled:!1},t.inverted?{width:r}:{height:r}),"yAxis"),d||i.series?.data?h.updateNavigatorSeries(!1):0===t.series.length&&(h.unbindRedraw=G(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],o=s.getExtremes(),n=s.len-2*l,r=tq("min",s.options.min,o.dataMin),a=tq("max",s.options.max,o.dataMax)-r;return i?e*a/n+r:n*(e-r)/a},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=tw.prototype.toFixedRange.bind(h.xAxis.navigatorAxis);if(t.options.scrollbar?.enabled){let e=te(t.options.scrollbar,{vertical:t.inverted});$(e.margin)||(e.margin=t.inverted?-3:3),t.scrollbar=h.scrollbar=new tj(t.renderer,e,t),G(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=ts(t.opposite,!!(!e&&i.inverted))}getUnionExtremes(t){let e,i=this.chart.xAxis[0],s=this.chart.time,o=this.xAxis,n=o.options,r=i.options;return t&&null===i.dataMin||(e={dataMin:ts(s.parse(n?.min),tq("min",s.parse(r.min),i.dataMin,o.dataMin,o.min)),dataMax:ts(s.parse(n?.max),tq("max",s.parse(r.max),i.dataMax,o.dataMax,o.max))}),e}setBaseSeries(t,e){let i=this.chart,s=this.baseSeries=[];t=t||i.options.navigator?.baseSeries||(i.series.length?K(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,o=i.baseSeries,n={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}}},r=i.series=(i.series||[]).filter(t=>{let e=t.baseSeries;return!(e&&0>o.indexOf(e))||(e&&(tn(e,"updatedData",i.updatedDataHandler),delete e.navigatorSeries),t.chart&&t.destroy(),!1)}),a,l,h=i.navigatorOptions.series,d;o&&o.length&&o.forEach(t=>{let p=t.navigatorSeries,c=V({color:t.color,visible:t.visible},Q(h)?tZ.navigator.series:h);if(p&&!1===i.navigatorOptions.adaptToUpdatedData)return;n.name="Navigator "+o.length,d=(a=t.options||{}).navigatorOptions||{},c.dataLabels=tr(c.dataLabels),(l=te(a,n,c,d)).pointRange=ts(c.pointRange,d.pointRange,tZ.plotOptions[l.type||"line"]?.pointRange);let u=d.data||c.data;i.hasNavigatorData=i.hasNavigatorData||!!u,l.data=u||a.data?.slice(0),p&&p.options?p.update(l,e):(t.navigatorSeries=s.initSeries(l),s.setSortedData(),t.navigatorSeries.baseSeries=t,r.push(t.navigatorSeries))}),(h?.data&&!(o&&o.length)||Q(h))&&(i.hasNavigatorData=!1,(h=tr(h)).forEach((t,e)=>{n.name="Navigator "+(r.length+1),(l=te(tZ.navigator?.series,{color:s.series[e]&&!s.series[e].options.isInternal&&s.series[e].color||s.options.colors?.[e]||s.options.colors?.[0]},n,t)).data=t.data,l.data&&(i.hasNavigatorData=!0,r.push(s.initSeries(l)))})),t&&this.addBaseSeriesEvents()}addBaseSeriesEvents(){let t=this,e=t.baseSeries||[];e[0]&&e[0].xAxis&&e[0].eventsToUnbind.push(G(e[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes)),e.forEach(i=>{i.eventsToUnbind.push(G(i,"show",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)})),i.eventsToUnbind.push(G(i,"hide",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)})),!1!==this.navigatorOptions.adaptToUpdatedData&&i.xAxis&&i.eventsToUnbind.push(G(i,"updatedData",this.updatedDataHandler)),i.eventsToUnbind.push(G(i,"remove",function(){e&&_(e,i),this.navigatorSeries&&t.series&&(_(t.series,this.navigatorSeries),N(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(),o=s.min,n=s.max,r=s.dataMin,a=s.dataMax,l=n-o,h=i?.stickToMin,d=i?.stickToMax,p=ts(this.ordinal?.convertOverscroll(this.options.overscroll),0),c=i.series&&i.series[0],u=!!this.setExtremes;!(this.eventArgs&&"rangeSelectorButton"===this.eventArgs.trigger)&&(h&&(t=(e=r)+l),d&&(t=a+p,h||(e=Math.max(r,t-l,i.getBaseSeriesMin(c&&c.xData?c.xData[0]:-Number.MAX_VALUE)))),u&&(h||d)&&$(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=ts(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,!1,void 0,!1))}shouldStickToMin(t,e){let i=e.getBaseSeriesMin(t.getColumn("x")[0]),s=t.xAxis,o=s.max,n=s.min,r=s.options.range;return!!($(o)&&$(n))&&(r&&o-i>0?o-i<r:n<=i)}addChartEvents(){this.eventsToUnbind||(this.eventsToUnbind=[]),this.eventsToUnbind.push(G(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)}),G(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)}),G(this,"setRange",function(t){this.chart.xAxis[0].setExtremes(t.min,t.max,t.redraw,t.animation,t.eventArguments)}))}destroy(){this.removeEvents(),this.xAxis&&(_(this.chart.xAxis,this.xAxis),_(this.chart.axes,this.xAxis)),this.yAxis&&(_(this.chart.yAxis,this.yAxis),_(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=>{U(t)}),this.baseSeries.forEach(t=>{t.navigatorSeries=void 0}),this.navigatorEnabled=!1}}let{setLength:tJ,splice:tQ}={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 n=Object.getPrototypeOf(t).constructor,r=t[s?"subarray":"slice"](e,e+i),a=new n(t.length-i+o.length);return a.set(t.subarray(0,e),0),a.set(o,e),a.set(t.subarray(e+i),e+o.length),{removed:r,array:a}}},t0=class{constructor(t={}){this.autoId=!t.id,this.columns={},this.id=t.id||(0,T.uniqueKey)(),this.rowCount=0,this.versionTag=(0,T.uniqueKey)();let e=0;ti(t.columns||{},(t,i)=>{this.columns[i]=t.slice(),e=Math.max(e,t.length)}),this.applyRowCount(e)}applyRowCount(t){this.rowCount=t,ti(this.columns,(e,i)=>{e.length!==t&&(this.columns[i]=tJ(e,t))})}deleteRows(t,e=1){if(e>0&&t<this.rowCount){let i=0;ti(this.columns,(s,o)=>{this.columns[o]=tQ(s,t,e).array,i=s.length}),this.rowCount=i}j(this,"afterDeleteRows",{rowIndex:t,rowCount:e}),this.versionTag=(0,T.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),{})}getRow(t,e){return(e||Object.keys(this.columns)).map(e=>this.columns[e]?.[t])}setColumn(t,e=[],i=0,s){this.setColumns({[t]:e},i,s)}setColumns(t,e,i){let s=this.rowCount;ti(t,(t,e)=>{this.columns[e]=t.slice(),s=t.length}),this.applyRowCount(s),i?.silent||(j(this,"afterSetColumns"),this.versionTag=(0,T.uniqueKey)())}setRow(t,e=this.rowCount,i,s){let{columns:o}=this,n=i?this.rowCount+1:e+1,r=Object.keys(t);if(s?.addColumns!==!1)for(let t=0,e=r.length;t<e;t++){let e=r[t];o[e]||(o[e]=[])}ti(o,(r,a)=>{r||s?.addColumns===!1||(r=Array(n)),r&&(i?r=tQ(r,e,0,!0,[t[a]??null]).array:r[e]=t[a]??null,o[a]=r)}),n>this.rowCount&&this.applyRowCount(n),s?.silent||(j(this,"afterSetRows"),this.versionTag=(0,T.uniqueKey)())}getModified(){return this.modified||this}};!function(t){function e(t,i,s,o,n=[],r=0,a){let l={},h=this.options.tickPixelInterval,d=this.chart.time,p=[],c,u,g,f,m,x=0,b=[],v=-Number.MAX_VALUE;if(!this.options.ordinal&&!this.options.breaks||!n||n.length<3||void 0===i)return d.getTimeTicks.apply(d,arguments);let y=n.length;for(c=0;c<y;c++){if(m=c&&n[c-1]>s,n[c]<i&&(x=c),c===y-1||n[c+1]-n[c]>5*r||m){if(n[c]>v){for(u=d.getTimeTicks(t,n[x],n[c],o);u.length&&u[0]<=v;)u.shift();u.length&&(v=u[u.length-1]),p.push(b.length),b=b.concat(u)}x=c+1}if(m)break}if(u){if(f=u.info,a&&f.unitRange<=T.timeUnits.hour){for(x=1,c=b.length-1;x<c;x++)d.dateFormat("%d",b[x])!==d.dateFormat("%d",b[x-1])&&(l[b[x]]="day",g=!0);g&&(l[b[0]]="day"),f.higherRanks=l}f.segmentStarts=p,b.info=f}else(0,T.error)(12,!1,this.chart);if(a&&N(h)){let t=b.length,e=[],i=[],o,n,r,a,d,p=t;for(;p--;)n=this.translate(b[p]),r&&(i[p]=r-n),e[p]=r=n;for(i.sort((t,e)=>t-e),(a=i[Math.floor(i.length/2)])<.6*h&&(a=null),p=b[t-1]>s?t-1:t,r=void 0;p--;)d=Math.abs(r-(n=e[p])),r&&d<.8*h&&(null===a||d<.8*a)?(l[b[p]]&&!l[b[p+1]]?(o=p+1,r=n):o=p,b.splice(o,1)):r=n}return b}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,o=e.getExtendedPositions();if(o?.length){let n=H((t-i)*s+this.minPixelPadding),r=H(e.getIndexOfPoint(n,o)),a=H(r%1);if(r>=0&&r<=o.length-1){let t=o[Math.floor(r)],e=o[Math.ceil(r)];return o[Math.floor(r)]+a*(e-t)}}return t}function o(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 n(){this.ordinal||(this.ordinal=new t.Additions(this))}function r(){let{eventArgs:t,options:e}=this;if(this.isXAxis&&N(e.overscroll)&&0!==e.overscroll&&$(this.max)&&$(this.min)&&(this.options.ordinal&&!this.ordinal.originalOrdinalRange&&this.ordinal.getExtendedPositions(!1),this.isFullRange=N(this.dataMin)&&N(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&&N(this.userMin)&&t?.trigger!=="mousewheel"&&(this.min+=i)}}function a(){this.horiz&&!this.isDirty&&(this.isDirty=this.isOrdinal&&this.chart.navigator&&!this.chart.navigator.adaptToUpdatedData)}function l(){this.ordinal&&(this.ordinal.beforeSetTickPositions(),this.tickInterval=this.ordinal.postProcessTickInterval(this.tickInterval))}function h(t){let e=this.xAxis[0],i=e.ordinal.convertOverscroll(e.options.overscroll),s=t.originalEvent.chartX,o=this.options.chart.panning,n=!1;if(o?.type!=="y"&&e.options.ordinal&&e.series.length&&(!t.touches||t.touches.length<=1)){let o,r,a=this.mouseDownX,l=e.getExtremes(),h=l.dataMin,d=l.dataMax,p=l.min,c=l.max,u=this.hoverPoints,g=e.closestPointRange||e.ordinal?.overscrollPointsRange,f=Math.round((a-s)/(e.translationSlope*(e.ordinal.slope||g))),m=e.ordinal.getExtendedPositions(),x={ordinal:{positions:m,extendedOrdinalPositions:m}},b=e.index2val,v=e.val2lin;if(p<=h&&f<=0||c>=d+i&&f>=0)return void t.preventDefault();x.ordinal.positions?Math.abs(f)>1&&(u&&u.forEach(function(t){t.setState()}),r=x.ordinal.positions,i&&(r=x.ordinal.positions=r.concat(e.ordinal.getOverscrollPositions())),d>r[r.length-1]&&r.push(d),this.setFixedRange(c-p),(o=e.navigatorAxis.toFixedRange(void 0,void 0,b.apply(x,[v.apply(x,[p,!0])+f]),b.apply(x,[v.apply(x,[c,!0])+f]))).min>=Math.min(r[0],p)&&o.max<=Math.max(r[r.length-1],c)+i&&e.setExtremes(o.min,o.max,!0,!1,{trigger:"pan"}),this.mouseDownX=s,F(this.container,{cursor:"move"})):n=!0}else n=!0;n||o&&/y/.test(o.type)?i&&$(e.dataMax)&&(e.max=e.dataMax+i):t.preventDefault()}function d(){let t=this.xAxis;t?.options.ordinal&&(delete t.ordinal.index,delete t.ordinal.originalOrdinalRange)}function p(t,e){let i,s=this.ordinal,n=s.positions,r=s.slope,a;if(!n)return t;let l=n.length;if(n[0]<=t&&n[l-1]>=t)i=o(n,t);else{if(a=s.getExtendedPositions?.(),!a?.length)return t;let l=a.length;r||(r=(a[l-1]-a[0])/l);let h=o(a,n[0]);if(t>=a[0]&&t<=a[l-1])i=o(a,t)-h;else{if(!e)return t;i=t<a[0]?-h-(a[0]-t)/r:(t-a[l-1])/r+l-h}}return e?i:r*(i||0)+s.offset}t.compose=function(t,o,c){let u=t.prototype;return u.ordinal2lin||(u.getTimeTicks=e,u.index2val=i,u.lin2val=s,u.val2lin=p,u.ordinal2lin=u.val2lin,G(t,"afterInit",n),G(t,"foundExtremes",r),G(t,"afterSetScale",a),G(t,"initialAxisTranslation",l),G(c,"pan",h),G(c,"touchpan",h),G(o,"updatedData",d)),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,o=i.max,n=t.brokenAxis?.hasBreaks,r=t.options.ordinal,a=t.options.overscroll&&t.ordinal.convertOverscroll(t.options.overscroll)||0,l,h,d,p,c,u,g,f=[],m=Number.MAX_VALUE,x=!1,b=!1,v=!1;if(r||n){let i=0;if(t.series.forEach(function(t,e){let s=t.getColumn("x",!0);if(h=[],e>0&&"highcharts-navigator-series"!==t.options.id&&s.length>1&&(b=i!==s[1]-s[0]),i=s[1]-s[0],t.boosted&&(v=t.boosted),t.reserveSpace()&&(!1!==t.takeOrdinalPosition||n)&&(l=(f=f.concat(s)).length,f.sort(function(t,e){return t-e}),m=Math.min(m,ts(t.closestPointRange,m)),l)){for(e=0;e<l-1;)f[e]!==f[e+1]&&h.push(f[e+1]),e++;h[0]!==f[0]&&h.unshift(f[0]),f=h}}),t.ordinal.originalOrdinalRange||(t.ordinal.originalOrdinalRange=(f.length-1)*m),b&&v&&(f.pop(),f.shift()),(l=f.length)>2){for(d=f[1]-f[0],g=l-1;g--&&!x;)f[g+1]-f[g]!==d&&(x=!0);!t.options.keepOrdinalPadding&&(f[0]-s>d||o-a-f[l-1]>d)&&(x=!0)}else t.options.overscroll&&(2===l?m=f[1]-f[0]:1===l?(m=a,f=[f[0],f[0]+m]):m=e.overscrollPointsRange);x||t.forceOrdinal?(t.options.overscroll&&(e.overscrollPointsRange=m,f=f.concat(e.getOverscrollPositions())),e.positions=f,p=t.ordinal2lin(Math.max(s,f[0]),!0),c=Math.max(t.ordinal2lin(Math.min(o,f[f.length-1]),!0),1),e.slope=u=(o-s)/(c-p),e.offset=s-p*u):(e.overscrollPointsRange=ts(t.closestPointRange,e.overscrollPointsRange),e.positions=t.ordinal.slope=e.offset=void 0)}t.isOrdinal=r&&x,e.groupIntervalFactor=null}static findIndexOf(t,e