781 lines
386 KiB
JavaScript
781 lines
386 KiB
JavaScript
/*
|
|
Highcharts Gantt JS v11.1.0 (2023-06-05)
|
|
|
|
(c) 2017-2021 Lars Cabrera, Torstein Honsi, Jon Arild Nygard & Oystein Moseng
|
|
|
|
License: www.highcharts.com/license
|
|
*/
|
|
'use strict';(function(T,M){"object"===typeof module&&module.exports?(M["default"]=M,module.exports=T.document?M(T):M):"function"===typeof define&&define.amd?define("highcharts/highcharts-gantt",function(){return M(T)}):(T.Highcharts&&T.Highcharts.error(16,!0),T.Highcharts=M(T))})("undefined"!==typeof window?window:this,function(T){function M(a,z,H,K){a.hasOwnProperty(z)||(a[z]=K.apply(null,H),"function"===typeof CustomEvent&&T.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:z,
|
|
module:a[z]}})))}var a={};M(a,"Core/Globals.js",[],function(){var a;(function(a){a.SVG_NS="http://www.w3.org/2000/svg";a.product="Highcharts";a.version="11.1.0";a.win="undefined"!==typeof T?T:{};a.doc=a.win.document;a.svg=a.doc&&a.doc.createElementNS&&!!a.doc.createElementNS(a.SVG_NS,"svg").createSVGRect;a.userAgent=a.win.navigator&&a.win.navigator.userAgent||"";a.isChrome=-1!==a.userAgent.indexOf("Chrome");a.isFirefox=-1!==a.userAgent.indexOf("Firefox");a.isMS=/(edge|msie|trident)/i.test(a.userAgent)&&
|
|
!a.win.opera;a.isSafari=!a.isChrome&&-1!==a.userAgent.indexOf("Safari");a.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(a.userAgent);a.isWebKit=-1!==a.userAgent.indexOf("AppleWebKit");a.deg2rad=2*Math.PI/360;a.hasBidiBug=a.isFirefox&&4>parseInt(a.userAgent.split("Firefox/")[1],10);a.hasTouch=!!a.win.TouchEvent;a.marginNames=["plotTop","marginRight","marginBottom","plotLeft"];a.noop=function(){};a.supportsPassiveEvents=function(){let y=!1;if(!a.isMS){const z=Object.defineProperty({},"passive",
|
|
{get:function(){y=!0}});a.win.addEventListener&&a.win.removeEventListener&&(a.win.addEventListener("testPassive",a.noop,z),a.win.removeEventListener("testPassive",a.noop,z))}return y}();a.charts=[];a.dateFormats={};a.seriesTypes={};a.symbolSizes={};a.chartCount=0})(a||(a={}));"";return a});M(a,"Core/Utilities.js",[a["Core/Globals.js"]],function(a){function y(c,b,e,h){const n=b?"Highcharts error":"Highcharts warning";32===c&&(c=`${n}: Deprecated member`);const J=t(c);let g=J?`${n} #${c}: www.highcharts.com/errors/${c}/`:
|
|
c.toString();if("undefined"!==typeof h){let c="";J&&(g+="?");I(h,function(b,e){c+=`\n - ${e}: ${b}`;J&&(g+=encodeURI(e)+"="+encodeURI(b))});g+=c}d(a,"displayError",{chart:e,code:c,message:g,params:h},function(){if(b)throw Error(g);q.console&&-1===y.messages.indexOf(g)&&console.warn(g)});y.messages.push(g)}function H(c,b){return parseInt(c,b||10)}function K(c){return"string"===typeof c}function A(c){c=Object.prototype.toString.call(c);return"[object Array]"===c||"[object Array Iterator]"===c}function C(c,
|
|
b){return!!c&&"object"===typeof c&&(!b||!A(c))}function E(c){return C(c)&&"number"===typeof c.nodeType}function B(c){const b=c&&c.constructor;return!(!C(c,!0)||E(c)||!b||!b.name||"Object"===b.name)}function t(c){return"number"===typeof c&&!isNaN(c)&&Infinity>c&&-Infinity<c}function r(c){return"undefined"!==typeof c&&null!==c}function k(c,b,e){const n=K(b)&&!r(e);let d;const h=(b,e)=>{r(b)?c.setAttribute(e,b):n?(d=c.getAttribute(e))||"class"!==e||(d=c.getAttribute(e+"Name")):c.removeAttribute(e)};
|
|
K(b)?h(e,b):I(b,h);return d}function p(c){return A(c)?c:[c]}function x(c,b){let e;c||(c={});for(e in b)c[e]=b[e];return c}function m(){const c=arguments,b=c.length;for(let e=0;e<b;e++){const b=c[e];if("undefined"!==typeof b&&null!==b)return b}}function l(c,b){a.isMS&&!a.svg&&b&&r(b.opacity)&&(b.filter=`alpha(opacity=${100*b.opacity})`);x(c.style,b)}function f(c){return Math.pow(10,Math.floor(Math.log(c)/Math.LN10))}function g(c,b){return 1E14<c?c:parseFloat(c.toPrecision(b||14))}function w(c,b,e){let n;
|
|
if("width"===b)return b=Math.min(c.offsetWidth,c.scrollWidth),e=c.getBoundingClientRect&&c.getBoundingClientRect().width,e<b&&e>=b-1&&(b=Math.floor(e)),Math.max(0,b-(w(c,"padding-left",!0)||0)-(w(c,"padding-right",!0)||0));if("height"===b)return Math.max(0,Math.min(c.offsetHeight,c.scrollHeight)-(w(c,"padding-top",!0)||0)-(w(c,"padding-bottom",!0)||0));if(c=q.getComputedStyle(c,void 0))n=c.getPropertyValue(b),m(e,"opacity"!==b)&&(n=H(n));return n}function I(c,b,e){for(const n in c)Object.hasOwnProperty.call(c,
|
|
n)&&b.call(e||c[n],c[n],n,c)}function D(c,b,e){function n(b,e){const n=c.removeEventListener;n&&n.call(c,b,e,!1)}function d(e){let d,h;c.nodeName&&(b?(d={},d[b]=!0):d=e,I(d,function(c,b){if(e[b])for(h=e[b].length;h--;)n(b,e[b][h].fn)}))}var h="function"===typeof c&&c.prototype||c;if(Object.hasOwnProperty.call(h,"hcEvents")){const c=h.hcEvents;b?(h=c[b]||[],e?(c[b]=h.filter(function(c){return e!==c.fn}),n(b,e)):(d(c),c[b]=[])):(d(c),delete h.hcEvents)}}function d(c,b,e,d){e=e||{};if(v.createEvent&&
|
|
(c.dispatchEvent||c.fireEvent&&c!==a)){var n=v.createEvent("Events");n.initEvent(b,!0,!0);e=x(n,e);c.dispatchEvent?c.dispatchEvent(e):c.fireEvent(b,e)}else if(c.hcEvents){e.target||x(e,{preventDefault:function(){e.defaultPrevented=!0},target:c,type:b});n=[];let d=c,h=!1;for(;d.hcEvents;)Object.hasOwnProperty.call(d,"hcEvents")&&d.hcEvents[b]&&(n.length&&(h=!0),n.unshift.apply(n,d.hcEvents[b])),d=Object.getPrototypeOf(d);h&&n.sort((c,b)=>c.order-b.order);n.forEach(b=>{!1===b.fn.call(c,e)&&e.preventDefault()})}d&&
|
|
!e.defaultPrevented&&d.call(c,e)}const {charts:h,doc:v,win:q}=a;(y||(y={})).messages=[];Math.easeInOutSine=function(c){return-.5*(Math.cos(Math.PI*c)-1)};var u=Array.prototype.find?function(c,b){return c.find(b)}:function(c,b){let e;const n=c.length;for(e=0;e<n;e++)if(b(c[e],e))return c[e]};I({map:"map",each:"forEach",grep:"filter",reduce:"reduce",some:"some"},function(c,b){a[b]=function(e){y(32,!1,void 0,{[`Highcharts.${b}`]:`use Array.${c}`});return Array.prototype[c].apply(e,[].slice.call(arguments,
|
|
1))}});let e;const b=function(){const c=Math.random().toString(36).substring(2,9)+"-";let b=0;return function(){return"highcharts-"+(e?"":c)+b++}}();q.jQuery&&(q.jQuery.fn.highcharts=function(){const c=[].slice.call(arguments);if(this[0])return c[0]?(new (a[K(c[0])?c.shift():"Chart"])(this[0],c[0],c[1]),this):h[k(this[0],"data-highcharts-chart")]});u={addEvent:function(c,b,e,d={}){var n="function"===typeof c&&c.prototype||c;Object.hasOwnProperty.call(n,"hcEvents")||(n.hcEvents={});n=n.hcEvents;a.Point&&
|
|
c instanceof a.Point&&c.series&&c.series.chart&&(c.series.chart.runTrackerClick=!0);const h=c.addEventListener;h&&h.call(c,b,e,a.supportsPassiveEvents?{passive:void 0===d.passive?-1!==b.indexOf("touch"):d.passive,capture:!1}:!1);n[b]||(n[b]=[]);n[b].push({fn:e,order:"number"===typeof d.order?d.order:Infinity});n[b].sort((c,b)=>c.order-b.order);return function(){D(c,b,e)}},arrayMax:function(c){let b=c.length,e=c[0];for(;b--;)c[b]>e&&(e=c[b]);return e},arrayMin:function(c){let b=c.length,e=c[0];for(;b--;)c[b]<
|
|
e&&(e=c[b]);return e},attr:k,clamp:function(c,b,e){return c>b?c<e?c:e:b},clearTimeout:function(c){r(c)&&clearTimeout(c)},correctFloat:g,createElement:function(c,b,e,d,h){c=v.createElement(c);b&&x(c,b);h&&l(c,{padding:"0",border:"none",margin:"0"});e&&l(c,e);d&&d.appendChild(c);return c},css:l,defined:r,destroyObjectProperties:function(c,b){I(c,function(e,n){e&&e!==b&&e.destroy&&e.destroy();delete c[n]})},diffObjects:function(c,b,e,d){function n(c,b,h,L){const G=e?b:c;I(c,function(e,q){if(!L&&d&&-1<
|
|
d.indexOf(q)&&b[q]){e=p(e);h[q]=[];for(let c=0;c<Math.max(e.length,b[q].length);c++)b[q][c]&&(void 0===e[c]?h[q][c]=b[q][c]:(h[q][c]={},n(e[c],b[q][c],h[q][c],L+1)))}else if(C(e,!0)&&!e.nodeType)h[q]=A(e)?[]:{},n(e,b[q]||{},h[q],L+1),0!==Object.keys(h[q]).length||"colorAxis"===q&&0===L||delete h[q];else if(c[q]!==b[q]||q in c&&!(q in b))h[q]=G[q]})}const h={};n(c,b,h,0);return h},discardElement:function(c){c&&c.parentElement&&c.parentElement.removeChild(c)},erase:function(c,b){let e=c.length;for(;e--;)if(c[e]===
|
|
b){c.splice(e,1);break}},error:y,extend:x,extendClass:function(c,b){const e=function(){};e.prototype=new c;x(e.prototype,b);return e},find:u,fireEvent:d,getClosestDistance:function(c,b){const e=!b;let n,d,h,q;c.forEach(c=>{if(1<c.length)for(q=d=c.length-1;0<q;q--)h=c[q]-c[q-1],0>h&&!e?(null===b||void 0===b?void 0:b(),b=void 0):h&&("undefined"===typeof n||h<n)&&(n=h)});return n},getMagnitude:f,getNestedProperty:function(c,b){for(c=c.split(".");c.length&&r(b);){const e=c.shift();if("undefined"===typeof e||
|
|
"__proto__"===e)return;if("this"===e){let c;C(b)&&(c=b["@this"]);return null!==c&&void 0!==c?c:b}b=b[e];if(!r(b)||"function"===typeof b||"number"===typeof b.nodeType||b===q)return}return b},getStyle:w,inArray:function(c,b,e){y(32,!1,void 0,{"Highcharts.inArray":"use Array.indexOf"});return b.indexOf(c,e)},insertItem:function(c,b){const e=c.options.index,n=b.length;let d;for(d=c.options.isInternal?n:0;d<n+1;d++)if(!b[d]||t(e)&&e<m(b[d].options.index,b[d]._i)||b[d].options.isInternal){b.splice(d,0,
|
|
c);break}return d},isArray:A,isClass:B,isDOMElement:E,isFunction:function(c){return"function"===typeof c},isNumber:t,isObject:C,isString:K,keys:function(c){y(32,!1,void 0,{"Highcharts.keys":"use Object.keys"});return Object.keys(c)},merge:function(){let c,b=arguments,e={};const d=function(c,b){"object"!==typeof c&&(c={});I(b,function(e,n){"__proto__"!==n&&"constructor"!==n&&(!C(e,!0)||B(e)||E(e)?c[n]=b[n]:c[n]=d(c[n]||{},e))});return c};!0===b[0]&&(e=b[1],b=Array.prototype.slice.call(b,2));const h=
|
|
b.length;for(c=0;c<h;c++)e=d(e,b[c]);return e},normalizeTickInterval:function(c,b,e,d,h){let n=c;e=m(e,f(c));const q=c/e;b||(b=h?[1,1.2,1.5,2,2.5,3,4,5,6,8,10]:[1,2,2.5,5,10],!1===d&&(1===e?b=b.filter(function(c){return 0===c%1}):.1>=e&&(b=[1/e])));for(d=0;d<b.length&&!(n=b[d],h&&n*e>=c||!h&&q<=(b[d]+(b[d+1]||b[d]))/2);d++);return n=g(n*e,-Math.round(Math.log(.001)/Math.LN10))},objectEach:I,offset:function(c){const b=v.documentElement;c=c.parentElement||c.parentNode?c.getBoundingClientRect():{top:0,
|
|
left:0,width:0,height:0};return{top:c.top+(q.pageYOffset||b.scrollTop)-(b.clientTop||0),left:c.left+(q.pageXOffset||b.scrollLeft)-(b.clientLeft||0),width:c.width,height:c.height}},pad:function(c,b,e){return Array((b||2)+1-String(c).replace("-","").length).join(e||"0")+c},pick:m,pInt:H,pushUnique:function(c,b){return 0>c.indexOf(b)&&!!c.push(b)},relativeLength:function(b,e,d){return/%$/.test(b)?e*parseFloat(b)/100+(d||0):parseFloat(b)},removeEvent:D,splat:p,stableSort:function(b,e){const c=b.length;
|
|
let n,d;for(d=0;d<c;d++)b[d].safeI=d;b.sort(function(b,c){n=e(b,c);return 0===n?b.safeI-c.safeI:n});for(d=0;d<c;d++)delete b[d].safeI},syncTimeout:function(b,e,d){if(0<e)return setTimeout(b,e,d);b.call(0,d);return-1},timeUnits:{millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5},uniqueKey:b,useSerialIds:function(b){return e=m(b,e)},wrap:function(b,e,d){const c=b[e];b[e]=function(){const b=arguments,e=this;return d.apply(this,[function(){return c.apply(e,
|
|
arguments.length?arguments:b)}].concat([].slice.call(arguments)))}}};"";return u});M(a,"Core/Chart/ChartDefaults.js",[],function(){return{alignThresholds:!1,panning:{enabled:!1,type:"x"},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{zIndex:6},position:{align:"right",x:-10,y:10}},reflow:!0,type:"line",zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:"right",x:-10,y:10}}},width:null,height:null,
|
|
borderColor:"#334eff",backgroundColor:"#ffffff",plotBorderColor:"#cccccc"}});M(a,"Core/Color/Color.js",[a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z){const {isNumber:y,merge:K,pInt:A}=z;class C{static parse(a){return a?new C(a):C.None}constructor(E){this.rgba=[NaN,NaN,NaN,NaN];this.input=E;const B=a.Color;if(B&&B!==C)return new B(E);this.init(E)}init(a){let B;let t;if("object"===typeof a&&"undefined"!==typeof a.stops)this.stops=a.stops.map(k=>new C(k[1]));else if("string"===typeof a){this.input=
|
|
a=C.names[a.toLowerCase()]||a;if("#"===a.charAt(0)){var r=a.length;var k=parseInt(a.substr(1),16);7===r?B=[(k&16711680)>>16,(k&65280)>>8,k&255,1]:4===r&&(B=[(k&3840)>>4|(k&3840)>>8,(k&240)>>4|k&240,(k&15)<<4|k&15,1])}if(!B)for(k=C.parsers.length;k--&&!B;)t=C.parsers[k],(r=t.regex.exec(a))&&(B=t.parse(r))}B&&(this.rgba=B)}get(a){const B=this.input,t=this.rgba;if("object"===typeof B&&"undefined"!==typeof this.stops){const r=K(B);r.stops=[].slice.call(r.stops);this.stops.forEach((k,p)=>{r.stops[p]=[r.stops[p][0],
|
|
k.get(a)]});return r}return t&&y(t[0])?"rgb"===a||!a&&1===t[3]?"rgb("+t[0]+","+t[1]+","+t[2]+")":"a"===a?`${t[3]}`:"rgba("+t.join(",")+")":B}brighten(a){const B=this.rgba;if(this.stops)this.stops.forEach(function(t){t.brighten(a)});else if(y(a)&&0!==a)for(let t=0;3>t;t++)B[t]+=A(255*a),0>B[t]&&(B[t]=0),255<B[t]&&(B[t]=255);return this}setOpacity(a){this.rgba[3]=a;return this}tweenTo(a,B){const t=this.rgba,r=a.rgba;if(!y(t[0])||!y(r[0]))return a.input||"none";a=1!==r[3]||1!==t[3];return(a?"rgba(":
|
|
"rgb(")+Math.round(r[0]+(t[0]-r[0])*(1-B))+","+Math.round(r[1]+(t[1]-r[1])*(1-B))+","+Math.round(r[2]+(t[2]-r[2])*(1-B))+(a?","+(r[3]+(t[3]-r[3])*(1-B)):"")+")"}}C.names={white:"#ffffff",black:"#000000"};C.parsers=[{regex:/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,parse:function(a){return[A(a[1]),A(a[2]),A(a[3]),parseFloat(a[4],10)]}},{regex:/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,parse:function(a){return[A(a[1]),A(a[2]),
|
|
A(a[3]),1]}}];C.None=new C("");"";return C});M(a,"Core/Color/Palettes.js",[],function(){return{colors:"#2caffe #544fc5 #00e272 #fe6a35 #6b8abc #d568fb #2ee0ca #fa4b42 #feb56a #91e8e1".split(" ")}});M(a,"Core/Time.js",[a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z){const {win:y}=a,{defined:K,error:A,extend:C,isObject:E,merge:B,objectEach:t,pad:r,pick:k,splat:p,timeUnits:x}=z,m=a.isSafari&&y.Intl&&y.Intl.DateTimeFormat.prototype.formatRange,l=a.isSafari&&y.Intl&&!y.Intl.DateTimeFormat.prototype.formatRange;
|
|
class f{constructor(g){this.options={};this.variableTimezone=this.useUTC=!1;this.Date=y.Date;this.getTimezoneOffset=this.timezoneOffsetFunction();this.update(g)}get(g,f){if(this.variableTimezone||this.timezoneOffset){const w=f.getTime(),l=w-this.getTimezoneOffset(f);f.setTime(l);g=f["getUTC"+g]();f.setTime(w);return g}return this.useUTC?f["getUTC"+g]():f["get"+g]()}set(g,f,l){if(this.variableTimezone||this.timezoneOffset){if("Milliseconds"===g||"Seconds"===g||"Minutes"===g&&0===this.getTimezoneOffset(f)%
|
|
36E5)return f["setUTC"+g](l);var w=this.getTimezoneOffset(f);w=f.getTime()-w;f.setTime(w);f["setUTC"+g](l);g=this.getTimezoneOffset(f);w=f.getTime()+g;return f.setTime(w)}return this.useUTC||m&&"FullYear"===g?f["setUTC"+g](l):f["set"+g](l)}update(g={}){const f=k(g.useUTC,!0);this.options=g=B(!0,this.options,g);this.Date=g.Date||y.Date||Date;this.timezoneOffset=(this.useUTC=f)&&g.timezoneOffset||void 0;this.getTimezoneOffset=this.timezoneOffsetFunction();this.variableTimezone=f&&!(!g.getTimezoneOffset&&
|
|
!g.timezone)}makeTime(g,f,m,p,d,h){let v,q,u;this.useUTC?(v=this.Date.UTC.apply(0,arguments),q=this.getTimezoneOffset(v),v+=q,u=this.getTimezoneOffset(v),q!==u?v+=u-q:q-36E5!==this.getTimezoneOffset(v-36E5)||l||(v-=36E5)):v=(new this.Date(g,f,k(m,1),k(p,0),k(d,0),k(h,0))).getTime();return v}timezoneOffsetFunction(){const g=this,f=this.options,l=f.getTimezoneOffset,m=f.moment||y.moment;if(!this.useUTC)return function(d){return 6E4*(new Date(d.toString())).getTimezoneOffset()};if(f.timezone){if(m)return function(d){return 6E4*
|
|
-m.tz(d,f.timezone).utcOffset()};A(25)}return this.useUTC&&l?function(d){return 6E4*l(d.valueOf())}:function(){return 6E4*(g.timezoneOffset||0)}}dateFormat(g,f,l){if(!K(f)||isNaN(f))return a.defaultOptions.lang&&a.defaultOptions.lang.invalidDate||"";g=k(g,"%Y-%m-%d %H:%M:%S");const m=this;var d=new this.Date(f);const h=this.get("Hours",d),v=this.get("Day",d),q=this.get("Date",d),u=this.get("Month",d),e=this.get("FullYear",d),b=a.defaultOptions.lang,c=b&&b.weekdays,n=b&&b.shortWeekdays;d=C({a:n?n[v]:
|
|
c[v].substr(0,3),A:c[v],d:r(q),e:r(q,2," "),w:v,b:b.shortMonths[u],B:b.months[u],m:r(u+1),o:u+1,y:e.toString().substr(2,2),Y:e,H:r(h),k:h,I:r(h%12||12),l:h%12||12,M:r(this.get("Minutes",d)),p:12>h?"AM":"PM",P:12>h?"am":"pm",S:r(d.getSeconds()),L:r(Math.floor(f%1E3),3)},a.dateFormats);t(d,function(b,c){for(;-1!==g.indexOf("%"+c);)g=g.replace("%"+c,"function"===typeof b?b.call(m,f):b)});return l?g.substr(0,1).toUpperCase()+g.substr(1):g}resolveDTLFormat(f){return E(f,!0)?f:(f=p(f),{main:f[0],from:f[1],
|
|
to:f[2]})}getTimeTicks(f,l,m,p){const d=this,h=[],g={};var q=new d.Date(l);const u=f.unitRange,e=f.count||1;let b;p=k(p,1);if(K(l)){d.set("Milliseconds",q,u>=x.second?0:e*Math.floor(d.get("Milliseconds",q)/e));u>=x.second&&d.set("Seconds",q,u>=x.minute?0:e*Math.floor(d.get("Seconds",q)/e));u>=x.minute&&d.set("Minutes",q,u>=x.hour?0:e*Math.floor(d.get("Minutes",q)/e));u>=x.hour&&d.set("Hours",q,u>=x.day?0:e*Math.floor(d.get("Hours",q)/e));u>=x.day&&d.set("Date",q,u>=x.month?1:Math.max(1,e*Math.floor(d.get("Date",
|
|
q)/e)));if(u>=x.month){d.set("Month",q,u>=x.year?0:e*Math.floor(d.get("Month",q)/e));var c=d.get("FullYear",q)}u>=x.year&&d.set("FullYear",q,c-c%e);u===x.week&&(c=d.get("Day",q),d.set("Date",q,d.get("Date",q)-c+p+(c<p?-7:0)));c=d.get("FullYear",q);p=d.get("Month",q);const n=d.get("Date",q),f=d.get("Hours",q);l=q.getTime();!d.variableTimezone&&d.useUTC||!K(m)||(b=m-l>4*x.month||d.getTimezoneOffset(l)!==d.getTimezoneOffset(m));l=q.getTime();for(q=1;l<m;)h.push(l),l=u===x.year?d.makeTime(c+q*e,0):u===
|
|
x.month?d.makeTime(c,p+q*e):!b||u!==x.day&&u!==x.week?b&&u===x.hour&&1<e?d.makeTime(c,p,n,f+q*e):l+u*e:d.makeTime(c,p,n+q*e*(u===x.day?1:7)),q++;h.push(l);u<=x.hour&&1E4>h.length&&h.forEach(function(b){0===b%18E5&&"000000000"===d.dateFormat("%H%M%S%L",b)&&(g[b]="day")})}h.info=C(f,{higherRanks:g,totalRange:u*e});return h}getDateFormat(f,l,m,k){const d=this.dateFormat("%m-%d %H:%M:%S.%L",l),h={millisecond:15,second:12,minute:9,hour:6,day:3};let g,q="millisecond";for(g in x){if(f===x.week&&+this.dateFormat("%w",
|
|
l)===m&&"00:00:00.000"===d.substr(6)){g="week";break}if(x[g]>f){g=q;break}if(h[g]&&d.substr(h[g])!=="01-01 00:00:00.000".substr(h[g]))break;"week"!==g&&(q=g)}return this.resolveDTLFormat(k[g]).main}}"";return f});M(a,"Core/Defaults.js",[a["Core/Chart/ChartDefaults.js"],a["Core/Color/Color.js"],a["Core/Globals.js"],a["Core/Color/Palettes.js"],a["Core/Time.js"],a["Core/Utilities.js"]],function(a,z,H,K,A,C){const {isTouchDevice:y,svg:B}=H,{merge:t}=C,r={colors:K.colors,symbols:["circle","diamond","square",
|
|
"triangle","triangle-down"],lang:{loading:"Loading...",months:"January February March April May June July August September October November December".split(" "),shortMonths:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),weekdays:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),decimalPoint:".",numericSymbols:"kMGTPE".split(""),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:" "},global:{},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,
|
|
timezoneOffset:0,useUTC:!0},chart:a,title:{style:{color:"#333333",fontWeight:"bold"},text:"Chart title",align:"center",margin:15,widthAdjust:-44},subtitle:{style:{color:"#666666",fontSize:"0.8em"},text:"",align:"center",widthAdjust:-44},caption:{margin:15,style:{color:"#666666",fontSize:"0.8em"},text:"",align:"left",verticalAlign:"bottom"},plotOptions:{},legend:{enabled:!0,align:"center",alignColumns:!0,className:"highcharts-no-tooltip",layout:"horizontal",itemMarginBottom:2,itemMarginTop:2,labelFormatter:function(){return this.name},
|
|
borderColor:"#999999",borderRadius:0,navigation:{style:{fontSize:"0.8em"},activeColor:"#0022ff",inactiveColor:"#cccccc"},itemStyle:{color:"#333333",cursor:"pointer",fontSize:"0.8em",textDecoration:"none",textOverflow:"ellipsis"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#666666",textDecoration:"line-through"},shadow:!1,itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},squareSymbol:!0,symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontSize:"0.8em",fontWeight:"bold"}}},
|
|
loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:B,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %e %b, %H:%M:%S.%L",second:"%A, %e %b, %H:%M:%S",minute:"%A, %e %b, %H:%M",hour:"%A, %e %b, %H:%M",day:"%A, %e %b %Y",week:"Week from %A, %e %b %Y",month:"%B %Y",year:"%Y"},footerFormat:"",headerShape:"callout",hideDelay:500,padding:8,shape:"callout",shared:!1,
|
|
snap:y?25:10,headerFormat:'<span style="font-size: 0.8em">{point.key}</span><br/>',pointFormat:'<span style="color:{point.color}">\u25cf</span> {series.name}: <b>{point.y}</b><br/>',backgroundColor:"#ffffff",borderWidth:void 0,shadow:!0,stickOnContact:!1,style:{color:"#333333",cursor:"default",fontSize:"0.8em"},useHTML:!1},credits:{enabled:!0,href:"https://www.highcharts.com?credits",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#999999",fontSize:"0.6em"},
|
|
text:"Highcharts.com"}};r.chart.styledMode=!1;"";const k=new A(r.time);a={defaultOptions:r,defaultTime:k,getOptions:function(){return r},setOptions:function(p){t(!0,r,p);if(p.time||p.global)H.time?H.time.update(t(r.global,r.time,p.global,p.time)):H.time=k;return r}};"";return a});M(a,"Core/Animation/Fx.js",[a["Core/Color/Color.js"],a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z,H){const {parse:y}=a,{win:A}=z,{isNumber:C,objectEach:E}=H;class B{constructor(a,r,k){this.pos=NaN;this.options=
|
|
r;this.elem=a;this.prop=k}dSetter(){var a=this.paths;const r=a&&a[0];a=a&&a[1];const k=this.now||0;let p=[];if(1!==k&&r&&a)if(r.length===a.length&&1>k)for(let x=0;x<a.length;x++){const m=r[x],l=a[x],f=[];for(let g=0;g<l.length;g++){const w=m[g],p=l[g];C(w)&&C(p)&&("A"!==l[0]||4!==g&&5!==g)?f[g]=w+k*(p-w):f[g]=p}p.push(f)}else p=a;else p=this.toD||[];this.elem.attr("d",p,void 0,!0)}update(){const a=this.elem,r=this.prop,k=this.now,p=this.options.step;if(this[r+"Setter"])this[r+"Setter"]();else a.attr?
|
|
a.element&&a.attr(r,k,null,!0):a.style[r]=k+this.unit;p&&p.call(a,k,this)}run(a,r,k){const p=this,x=p.options,m=function(f){return m.stopped?!1:p.step(f)},l=A.requestAnimationFrame||function(f){setTimeout(f,13)},f=function(){for(let f=0;f<B.timers.length;f++)B.timers[f]()||B.timers.splice(f--,1);B.timers.length&&l(f)};a!==r||this.elem["forceAnimate:"+this.prop]?(this.startTime=+new Date,this.start=a,this.end=r,this.unit=k,this.now=this.start,this.pos=0,m.elem=this.elem,m.prop=this.prop,m()&&1===B.timers.push(m)&&
|
|
l(f)):(delete x.curAnim[this.prop],x.complete&&0===Object.keys(x.curAnim).length&&x.complete.call(this.elem))}step(a){const r=+new Date,k=this.options,p=this.elem,x=k.complete,m=k.duration,l=k.curAnim;let f;p.attr&&!p.element?a=!1:a||r>=m+this.startTime?(this.now=this.end,this.pos=1,this.update(),f=l[this.prop]=!0,E(l,function(g){!0!==g&&(f=!1)}),f&&x&&x.call(p),a=!1):(this.pos=k.easing((r-this.startTime)/m),this.now=this.start+(this.end-this.start)*this.pos,this.update(),a=!0);return a}initPath(a,
|
|
r,k){function p(d,h){for(;d.length<I;){var g=d[0];const q=h[I-d.length];q&&"M"===g[0]&&(d[0]="C"===q[0]?["C",g[1],g[2],g[1],g[2],g[1],g[2]]:["L",g[1],g[2]]);d.unshift(g);f&&(g=d.pop(),d.push(d[d.length-1],g))}}function x(d,h){for(;d.length<I;)if(h=d[Math.floor(d.length/g)-1].slice(),"C"===h[0]&&(h[1]=h[5],h[2]=h[6]),f){const f=d[Math.floor(d.length/g)].slice();d.splice(d.length/2,0,h,f)}else d.push(h)}const m=a.startX,l=a.endX;k=k.slice();const f=a.isArea,g=f?2:1;let w,I,D;r=r&&r.slice();if(!r)return[k,
|
|
k];if(m&&l&&l.length){for(a=0;a<m.length;a++)if(m[a]===l[0]){w=a;break}else if(m[0]===l[l.length-m.length+a]){w=a;D=!0;break}else if(m[m.length-1]===l[l.length-m.length+a]){w=m.length-a;break}"undefined"===typeof w&&(r=[])}r.length&&C(w)&&(I=k.length+w*g,D?(p(r,k),x(k,r)):(p(k,r),x(r,k)));return[r,k]}fillSetter(){B.prototype.strokeSetter.apply(this,arguments)}strokeSetter(){this.elem.attr(this.prop,y(this.start).tweenTo(y(this.end),this.pos),void 0,!0)}}B.timers=[];return B});M(a,"Core/Animation/AnimationUtilities.js",
|
|
[a["Core/Animation/Fx.js"],a["Core/Utilities.js"]],function(a,z){function y(k){return t(k)?r({duration:500,defer:0},k):{duration:k?500:0,defer:0}}function K(k,m){let l=a.timers.length;for(;l--;)a.timers[l].elem!==k||m&&m!==a.timers[l].prop||(a.timers[l].stopped=!0)}const {defined:A,getStyle:C,isArray:E,isNumber:B,isObject:t,merge:r,objectEach:k,pick:p}=z;return{animate:function(p,m,l){let f,g="",w,x,D;t(l)||(D=arguments,l={duration:D[2],easing:D[3],complete:D[4]});B(l.duration)||(l.duration=400);
|
|
l.easing="function"===typeof l.easing?l.easing:Math[l.easing]||Math.easeInOutSine;l.curAnim=r(m);k(m,function(d,h){K(p,h);x=new a(p,l,h);w=void 0;"d"===h&&E(m.d)?(x.paths=x.initPath(p,p.pathArray,m.d),x.toD=m.d,f=0,w=1):p.attr?f=p.attr(h):(f=parseFloat(C(p,h))||0,"opacity"!==h&&(g="px"));w||(w=d);"string"===typeof w&&w.match("px")&&(w=w.replace(/px/g,""));x.run(f,w,g)})},animObject:y,getDeferredAnimation:function(k,m,l){const f=y(m);let g=0,w=0;(l?[l]:k.series).forEach(l=>{l=y(l.options.animation);
|
|
g=m&&A(m.defer)?f.defer:Math.max(g,l.duration+l.defer);w=Math.min(f.duration,l.duration)});k.renderer.forExport&&(g=0);return{defer:Math.max(0,g-w),duration:Math.min(g,w)}},setAnimation:function(k,m){m.renderer.globalAnimation=p(k,m.options.chart.animation,!0)},stop:K}});M(a,"Core/Renderer/HTML/AST.js",[a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z){const {SVG_NS:y,win:K}=a,{attr:A,createElement:C,css:E,error:B,isFunction:t,isString:r,objectEach:k,splat:p}=z;({trustedTypes:z}=K);const x=
|
|
z&&t(z.createPolicy)&&z.createPolicy("highcharts",{createHTML:f=>f});z=x?x.createHTML(""):"";try{var m=!!(new DOMParser).parseFromString(z,"text/html")}catch(g){m=!1}const l=m;class f{static filterUserAttributes(g){k(g,(l,m)=>{let w=!0;-1===f.allowedAttributes.indexOf(m)&&(w=!1);-1!==["background","dynsrc","href","lowsrc","src"].indexOf(m)&&(w=r(l)&&f.allowedReferences.some(d=>0===l.indexOf(d)));w||(B(33,!1,void 0,{"Invalid attribute in config":`${m}`}),delete g[m]);r(l)&&g[m]&&(g[m]=l.replace(/</g,
|
|
"<"))});return g}static parseStyle(f){return f.split(";").reduce((f,g)=>{g=g.split(":").map(d=>d.trim());const l=g.shift();l&&g.length&&(f[l.replace(/-([a-z])/g,d=>d[1].toUpperCase())]=g.join(":"));return f},{})}static setElementHTML(g,l){g.innerHTML=f.emptyHTML;l&&(new f(l)).addToDOM(g)}constructor(f){this.nodes="string"===typeof f?this.parseMarkup(f):f}addToDOM(g){function l(g,m){let d;p(g).forEach(function(h){var g=h.tagName;const q=h.textContent?a.doc.createTextNode(h.textContent):void 0,u=
|
|
f.bypassHTMLFiltering;let e;if(g)if("#text"===g)e=q;else if(-1!==f.allowedTags.indexOf(g)||u){g=a.doc.createElementNS("svg"===g?y:m.namespaceURI||y,g);const b=h.attributes||{};k(h,function(c,e){"tagName"!==e&&"attributes"!==e&&"children"!==e&&"style"!==e&&"textContent"!==e&&(b[e]=c)});A(g,u?b:f.filterUserAttributes(b));h.style&&E(g,h.style);q&&g.appendChild(q);l(h.children||[],g);e=g}else B(33,!1,void 0,{"Invalid tagName in config":g});e&&m.appendChild(e);d=e});return d}return l(this.nodes,g)}parseMarkup(g){const m=
|
|
[];g=g.trim().replace(/ style=(["'])/g," data-style=$1");if(l)g=(new DOMParser).parseFromString(x?x.createHTML(g):g,"text/html");else{const f=C("div");f.innerHTML=g;g={body:f}}const k=(g,d)=>{var h=g.nodeName.toLowerCase();const v={tagName:h};"#text"===h&&(v.textContent=g.textContent||"");if(h=g.attributes){const d={};[].forEach.call(h,h=>{"data-style"===h.name?v.style=f.parseStyle(h.value):d[h.name]=h.value});v.attributes=d}if(g.childNodes.length){const d=[];[].forEach.call(g.childNodes,h=>{k(h,
|
|
d)});d.length&&(v.children=d)}d.push(v)};[].forEach.call(g.body.childNodes,f=>k(f,m));return m}}f.allowedAttributes="alt aria-controls aria-describedby aria-expanded aria-haspopup aria-hidden aria-label aria-labelledby aria-live aria-pressed aria-readonly aria-roledescription aria-selected class clip-path color colspan cx cy d dx dy disabled fill flood-color flood-opacity height href id in markerHeight markerWidth offset opacity orient padding paddingLeft paddingRight patternUnits r refX refY role scope slope src startOffset stdDeviation stroke stroke-linecap stroke-width style tableValues result rowspan summary target tabindex text-align text-anchor textAnchor textLength title type valign width x x1 x2 xlink:href y y1 y2 zIndex".split(" ");
|
|
f.allowedReferences="https:// http:// mailto: / ../ ./ #".split(" ");f.allowedTags="a abbr b br button caption circle clipPath code dd defs div dl dt em feComponentTransfer feDropShadow feFuncA feFuncB feFuncG feFuncR feGaussianBlur feOffset feMerge feMergeNode filter h1 h2 h3 h4 h5 h6 hr i img li linearGradient marker ol p path pattern pre rect small span stop strong style sub sup svg table text textPath thead title tbody tspan td th tr u ul #text".split(" ");f.emptyHTML=z;f.bypassHTMLFiltering=
|
|
!1;"";return f});M(a,"Core/Templating.js",[a["Core/Defaults.js"],a["Core/Utilities.js"]],function(a,z){function y(l="",f,g){const w=/\{([a-zA-Z0-9:\.,;\-\/<>%_@"'= #\(\)]+)\}/g,k=/\(([a-zA-Z0-9:\.,;\-\/<>%_@"'= ]+)\)/g,a=[],d=/f$/,h=/\.([0-9])/,v=A.lang,q=g&&g.time||C,u=g&&g.numberFormatter||K,e=(b="")=>{let c;return"true"===b?!0:"false"===b?!1:(c=Number(b)).toString()===b?c:B(b,f)};let b,c,n=0,J;for(;null!==(b=w.exec(l));){const e=k.exec(b[1]);e&&(b=e,J=!0);c&&c.isBlock||(c={ctx:f,expression:b[1],
|
|
find:b[0],isBlock:"#"===b[1].charAt(0),start:b.index,startInner:b.index+b[0].length,length:b[0].length});var F=b[1].split(" ")[0].replace("#","");m[F]&&(c.isBlock&&F===c.fn&&n++,c.fn||(c.fn=F));F="else"===b[1];if(c.isBlock&&c.fn&&(b[1]===`/${c.fn}`||F))if(n)F||n--;else{var L=c.startInner;L=l.substr(L,b.index-L);void 0===c.body?(c.body=L,c.startInner=b.index+b[0].length):c.elseBody=L;c.find+=L+b[0];F||(a.push(c),c=void 0)}else c.isBlock||a.push(c);if(e&&(null===c||void 0===c||!c.isBlock))break}a.forEach(b=>
|
|
{const {body:c,elseBody:n,expression:L,fn:g}=b;var G;if(g){var J=[b],F=L.split(" ");for(G=m[g].length;G--;)J.unshift(e(F[G+1]));G=m[g].apply(f,J);b.isBlock&&"boolean"===typeof G&&(G=y(G?c:n,f))}else J=L.split(":"),G=e(J.shift()||""),J.length&&"number"===typeof G&&(J=J.join(":"),d.test(J)?(F=parseInt((J.match(h)||["","-1"])[1],10),null!==G&&(G=u(G,F,v.decimalPoint,-1<J.indexOf(",")?v.thousandsSep:""))):G=q.dateFormat(J,G));l=l.replace(b.find,p(G,""))});return J?y(l,f,g):l}function K(l,f,g,m){l=+l||
|
|
0;f=+f;const k=A.lang;var w=(l.toString().split(".")[1]||"").split("e")[0].length;const d=l.toString().split("e"),h=f;if(-1===f)f=Math.min(w,20);else if(!r(f))f=2;else if(f&&d[1]&&0>d[1]){var v=f+ +d[1];0<=v?(d[0]=(+d[0]).toExponential(v).split("e")[0],f=v):(d[0]=d[0].split(".")[0]||0,l=20>f?(d[0]*Math.pow(10,d[1])).toFixed(f):0,d[1]=0)}v=(Math.abs(d[1]?d[0]:l)+Math.pow(10,-Math.max(f,w)-1)).toFixed(f);w=String(x(v));const q=3<w.length?w.length%3:0;g=p(g,k.decimalPoint);m=p(m,k.thousandsSep);l=(0>
|
|
l?"-":"")+(q?w.substr(0,q)+m:"");l=0>+d[1]&&!h?"0":l+w.substr(q).replace(/(\d{3})(?=\d)/g,"$1"+m);f&&(l+=g+v.slice(-f));d[1]&&0!==+l&&(l+="e"+d[1]);return l}const {defaultOptions:A,defaultTime:C}=a,{extend:E,getNestedProperty:B,isArray:t,isNumber:r,isObject:k,pick:p,pInt:x}=z,m={add:(l,f)=>l+f,divide:(l,f)=>0!==f?l/f:"",eq:(l,f)=>l==f,each:function(l){const f=arguments[arguments.length-1];return t(l)?l.map((g,m)=>y(f.body,E(k(g)?g:{"@this":g},{"@index":m,"@first":0===m,"@last":m===l.length-1}))).join(""):
|
|
!1},ge:(l,f)=>l>=f,gt:(l,f)=>l>f,"if":l=>!!l,le:(l,f)=>l<=f,lt:(l,f)=>l<f,multiply:(l,f)=>l*f,ne:(l,f)=>l!=f,subtract:(l,f)=>l-f,unless:l=>!l};return{dateFormat:function(l,f,g){return C.dateFormat(l,f,g)},format:y,helpers:m,numberFormat:K}});M(a,"Core/Renderer/RendererUtilities.js",[a["Core/Utilities.js"]],function(a){const {clamp:y,pick:H,stableSort:K}=a;var A;(function(a){function E(a,t,r){const k=a;var p=k.reducedLen||t,x=(f,g)=>(g.rank||0)-(f.rank||0);const m=(f,g)=>f.target-g.target;let l,f=
|
|
!0,g=[],w=0;for(l=a.length;l--;)w+=a[l].size;if(w>p){K(a,x);for(w=l=0;w<=p;)w+=a[l].size,l++;g=a.splice(l-1,a.length)}K(a,m);for(a=a.map(f=>({size:f.size,targets:[f.target],align:H(f.align,.5)}));f;){for(l=a.length;l--;)p=a[l],x=(Math.min.apply(0,p.targets)+Math.max.apply(0,p.targets))/2,p.pos=y(x-p.size*p.align,0,t-p.size);l=a.length;for(f=!1;l--;)0<l&&a[l-1].pos+a[l-1].size>a[l].pos&&(a[l-1].size+=a[l].size,a[l-1].targets=a[l-1].targets.concat(a[l].targets),a[l-1].align=.5,a[l-1].pos+a[l-1].size>
|
|
t&&(a[l-1].pos=t-a[l-1].size),a.splice(l,1),f=!0)}k.push.apply(k,g);l=0;a.some(f=>{let g=0;return(f.targets||[]).some(()=>{k[l].pos=f.pos+g;if("undefined"!==typeof r&&Math.abs(k[l].pos-k[l].target)>r)return k.slice(0,l+1).forEach(d=>delete d.pos),k.reducedLen=(k.reducedLen||t)-.1*t,k.reducedLen>.1*t&&E(k,t,r),!0;g+=k[l].size;l++;return!1})});K(k,m);return k}a.distribute=E})(A||(A={}));return A});M(a,"Core/Renderer/SVG/SVGElement.js",[a["Core/Animation/AnimationUtilities.js"],a["Core/Color/Color.js"],
|
|
a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z,H,K){const {animate:y,animObject:C,stop:E}=a,{deg2rad:B,doc:t,svg:r,SVG_NS:k,win:p}=H,{addEvent:x,attr:m,createElement:l,css:f,defined:g,erase:w,extend:I,fireEvent:D,isArray:d,isFunction:h,isObject:v,isString:q,merge:u,objectEach:e,pick:b,pInt:c,syncTimeout:n,uniqueKey:J}=K;class F{constructor(){this.element=void 0;this.onEvents={};this.opacity=1;this.renderer=void 0;this.SVG_NS=k}_defaultGetter(c){c=b(this[c+"Value"],this[c],this.element?
|
|
this.element.getAttribute(c):null,0);/^[\-0-9\.]+$/.test(c)&&(c=parseFloat(c));return c}_defaultSetter(b,c,e){e.setAttribute(c,b)}add(b){const c=this.renderer,e=this.element;let n;b&&(this.parentGroup=b);"undefined"!==typeof this.textStr&&"text"===this.element.nodeName&&c.buildText(this);this.added=!0;if(!b||b.handleZ||this.zIndex)n=this.zIndexSetter();n||(b?b.element:c.box).appendChild(e);if(this.onAdd)this.onAdd();return this}addClass(b,c){const e=c?"":this.attr("class")||"";b=(b||"").split(/ /g).reduce(function(b,
|
|
c){-1===e.indexOf(c)&&b.push(c);return b},e?[e]:[]).join(" ");b!==e&&this.attr("class",b);return this}afterSetters(){this.doTransform&&(this.updateTransform(),this.doTransform=!1)}align(c,e,n){const d={};var h=this.renderer,f=h.alignedObjects,G;let g,L;if(c){if(this.alignOptions=c,this.alignByTranslate=e,!n||q(n))this.alignTo=G=n||"renderer",w(f,this),f.push(this),n=void 0}else c=this.alignOptions,e=this.alignByTranslate,G=this.alignTo;n=b(n,h[G],"scrollablePlotBox"===G?h.plotBox:void 0,h);G=c.align;
|
|
const u=c.verticalAlign;h=(n.x||0)+(c.x||0);f=(n.y||0)+(c.y||0);"right"===G?g=1:"center"===G&&(g=2);g&&(h+=(n.width-(c.width||0))/g);d[e?"translateX":"x"]=Math.round(h);"bottom"===u?L=1:"middle"===u&&(L=2);L&&(f+=(n.height-(c.height||0))/L);d[e?"translateY":"y"]=Math.round(f);this[this.placed?"animate":"attr"](d);this.placed=!0;this.alignAttr=d;return this}alignSetter(b){const c={left:"start",center:"middle",right:"end"};c[b]&&(this.alignValue=b,this.element.setAttribute("text-anchor",c[b]))}animate(c,
|
|
d,h){const f=C(b(d,this.renderer.globalAnimation,!0));d=f.defer;t.hidden&&(f.duration=0);0!==f.duration?(h&&(f.complete=h),n(()=>{this.element&&y(this,c,f)},d)):(this.attr(c,void 0,h||f.complete),e(c,function(b,c){f.step&&f.step.call(this,b,{prop:c,pos:1,elem:this})},this));return this}applyTextOutline(b){const c=this.element;-1!==b.indexOf("contrast")&&(b=b.replace(/contrast/g,this.renderer.getContrast(c.style.fill)));var e=b.split(" ");b=e[e.length-1];if((e=e[0])&&"none"!==e&&H.svg){this.fakeTS=
|
|
!0;e=e.replace(/(^[\d\.]+)(.*?)$/g,function(b,c,e){return 2*Number(c)+e});this.removeTextOutline();const n=t.createElementNS(k,"tspan");m(n,{"class":"highcharts-text-outline",fill:b,stroke:b,"stroke-width":e,"stroke-linejoin":"round"});b=c.querySelector("textPath")||c;[].forEach.call(b.childNodes,b=>{const c=b.cloneNode(!0);c.removeAttribute&&["fill","stroke","stroke-width","stroke"].forEach(b=>c.removeAttribute(b));n.appendChild(c)});let d=0;[].forEach.call(b.querySelectorAll("text tspan"),b=>{d+=
|
|
Number(b.getAttribute("dy"))});e=t.createElementNS(k,"tspan");e.textContent="\u200b";m(e,{x:Number(c.getAttribute("x")),dy:-d});n.appendChild(e);b.insertBefore(n,b.firstChild)}}attr(b,c,n,d){const h=this.element,f=F.symbolCustomAttribs;let G,q,g=this,L,u;"string"===typeof b&&"undefined"!==typeof c&&(G=b,b={},b[G]=c);"string"===typeof b?g=(this[b+"Getter"]||this._defaultGetter).call(this,b,h):(e(b,function(c,e){L=!1;d||E(this,e);this.symbolName&&-1!==f.indexOf(e)&&(q||(this.symbolAttr(b),q=!0),L=!0);
|
|
!this.rotation||"x"!==e&&"y"!==e||(this.doTransform=!0);L||(u=this[e+"Setter"]||this._defaultSetter,u.call(this,c,e,h))},this),this.afterSetters());n&&n.call(this);return g}clip(b){return this.attr("clip-path",b?"url("+this.renderer.url+"#"+b.id+")":"none")}crisp(b,c){c=c||b.strokeWidth||0;const e=Math.round(c)%2/2;b.x=Math.floor(b.x||this.x||0)+e;b.y=Math.floor(b.y||this.y||0)+e;b.width=Math.floor((b.width||this.width||0)-2*e);b.height=Math.floor((b.height||this.height||0)-2*e);g(b.strokeWidth)&&
|
|
(b.strokeWidth=c);return b}complexColor(b,c,n){const h=this.renderer;let f,q,G,L,v,l,m,N,F,a,k=[],w;D(this.renderer,"complexColor",{args:arguments},function(){b.radialGradient?q="radialGradient":b.linearGradient&&(q="linearGradient");if(q){G=b[q];v=h.gradients;l=b.stops;F=n.radialReference;d(G)&&(b[q]=G={x1:G[0],y1:G[1],x2:G[2],y2:G[3],gradientUnits:"userSpaceOnUse"});"radialGradient"===q&&F&&!g(G.gradientUnits)&&(L=G,G=u(G,h.getRadialAttr(F,L),{gradientUnits:"userSpaceOnUse"}));e(G,function(b,c){"id"!==
|
|
c&&k.push(c,b)});e(l,function(b){k.push(b)});k=k.join(",");if(v[k])a=v[k].attr("id");else{G.id=a=J();const b=v[k]=h.createElement(q).attr(G).add(h.defs);b.radAttr=L;b.stops=[];l.forEach(function(c){0===c[1].indexOf("rgba")?(f=z.parse(c[1]),m=f.get("rgb"),N=f.get("a")):(m=c[1],N=1);c=h.createElement("stop").attr({offset:c[0],"stop-color":m,"stop-opacity":N}).add(b);b.stops.push(c)})}w="url("+h.url+"#"+a+")";n.setAttribute(c,w);n.gradient=k;b.toString=function(){return w}}})}css(b){const n=this.styles,
|
|
d={},h=this.element;let q,g=!n;n&&e(b,function(b,c){n&&n[c]!==b&&(d[c]=b,g=!0)});if(g){n&&(b=I(n,d));null===b.width||"auto"===b.width?delete this.textWidth:"text"===h.nodeName.toLowerCase()&&b.width&&(q=this.textWidth=c(b.width));this.styles=b;q&&!r&&this.renderer.forExport&&delete b.width;const e=u(b);h.namespaceURI===this.SVG_NS&&(["textOutline","textOverflow","width"].forEach(b=>e&&delete e[b]),e.color&&(e.fill=e.color));f(h,e)}this.added&&("text"===this.element.nodeName&&this.renderer.buildText(this),
|
|
b.textOutline&&this.applyTextOutline(b.textOutline));return this}dashstyleSetter(e){let n=this["stroke-width"];"inherit"===n&&(n=1);if(e=e&&e.toLowerCase()){const d=e.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");for(e=d.length;e--;)d[e]=""+c(d[e])*b(n,NaN);e=d.join(",").replace(/NaN/g,"none");this.element.setAttribute("stroke-dasharray",
|
|
e)}}destroy(){const b=this;var c=b.element||{};const n=b.renderer;var d=c.ownerSVGElement;let h="SPAN"===c.nodeName&&b.parentGroup||void 0;c.onclick=c.onmouseout=c.onmouseover=c.onmousemove=c.point=null;E(b);if(b.clipPath&&d){const c=b.clipPath;[].forEach.call(d.querySelectorAll("[clip-path],[CLIP-PATH]"),function(b){-1<b.getAttribute("clip-path").indexOf(c.element.id)&&b.removeAttribute("clip-path")});b.clipPath=c.destroy()}if(b.stops){for(d=0;d<b.stops.length;d++)b.stops[d].destroy();b.stops.length=
|
|
0;b.stops=void 0}for(b.safeRemoveChild(c);h&&h.div&&0===h.div.childNodes.length;)c=h.parentGroup,b.safeRemoveChild(h.div),delete h.div,h=c;b.alignTo&&w(n.alignedObjects,b);e(b,function(c,e){b[e]&&b[e].parentGroup===b&&b[e].destroy&&b[e].destroy();delete b[e]})}dSetter(b,c,e){d(b)&&("string"===typeof b[0]&&(b=this.renderer.pathToSegments(b)),this.pathArray=b,b=b.reduce((b,c,e)=>c&&c.join?(e?b+" ":"")+c.join(" "):(c||"").toString(),""));/(NaN| {2}|^$)/.test(b)&&(b="M 0 0");this[c]!==b&&(e.setAttribute(c,
|
|
b),this[c]=b)}fadeOut(c){const e=this;e.animate({opacity:0},{duration:b(c,150),complete:function(){e.hide()}})}fillSetter(b,c,e){"string"===typeof b?e.setAttribute(c,b):b&&this.complexColor(b,c,e)}getBBox(c,e){const {alignValue:n,element:d,renderer:q,styles:u,textStr:G}=this,{cache:J,cacheKeys:v}=q;var l=d.namespaceURI===this.SVG_NS;e=b(e,this.rotation,0);var m=q.styledMode?d&&F.prototype.getStyle.call(d,"font-size"):u&&u.fontSize;let N;let L;g(G)&&(L=G.toString(),-1===L.indexOf("<")&&(L=L.replace(/[0-9]/g,
|
|
"0")),L+=["",q.rootFontSize,m,e,this.textWidth,n,u&&u.textOverflow,u&&u.fontWeight].join());L&&!c&&(N=J[L]);if(!N){if(l||q.forExport){try{var k=this.fakeTS&&function(b){const c=d.querySelector(".highcharts-text-outline");c&&f(c,{display:b})};h(k)&&k("none");N=d.getBBox?I({},d.getBBox()):{width:d.offsetWidth,height:d.offsetHeight,x:0,y:0};h(k)&&k("")}catch(da){""}if(!N||0>N.width)N={x:0,y:0,width:0,height:0}}else N=this.htmlGetBBox();k=N.width;c=N.height;l&&(N.height=c={"11px,17":14,"13px,20":16}[`${m||
|
|
""},${Math.round(c)}`]||c);if(e){l=Number(d.getAttribute("y")||0)-N.y;m={right:1,center:.5}[n||0]||0;var a=e*B,w=(e-90)*B,p=k*Math.cos(a);e=k*Math.sin(a);var r=Math.cos(w);a=Math.sin(w);k=N.x+m*(k-p)+l*r;w=k+p;r=w-c*r;p=r-p;l=N.y+l-m*e+l*a;m=l+e;c=m-c*a;e=c-e;N.x=Math.min(k,w,r,p);N.y=Math.min(l,m,c,e);N.width=Math.max(k,w,r,p)-N.x;N.height=Math.max(l,m,c,e)-N.y}}if(L&&(""===G||0<N.height)){for(;250<v.length;)delete J[v.shift()];J[L]||v.push(L);J[L]=N}return N}getStyle(b){return p.getComputedStyle(this.element||
|
|
this,"").getPropertyValue(b)}hasClass(b){return-1!==(""+this.attr("class")).split(" ").indexOf(b)}hide(){return this.attr({visibility:"hidden"})}htmlGetBBox(){return{height:0,width:0,x:0,y:0}}init(b,c){this.element="span"===c?l(c):t.createElementNS(this.SVG_NS,c);this.renderer=b;D(this,"afterInit")}on(b,c){const {onEvents:e}=this;if(e[b])e[b]();e[b]=x(this.element,b,c);return this}opacitySetter(b,c,e){this.opacity=b=Number(Number(b).toFixed(3));e.setAttribute(c,b)}removeClass(b){return this.attr("class",
|
|
(""+this.attr("class")).replace(q(b)?new RegExp(`(^| )${b}( |$)`):b," ").replace(/ +/g," ").trim())}removeTextOutline(){const b=this.element.querySelector("tspan.highcharts-text-outline");b&&this.safeRemoveChild(b)}safeRemoveChild(b){const c=b.parentNode;c&&c.removeChild(b)}setRadialReference(b){const c=this.element.gradient&&this.renderer.gradients[this.element.gradient];this.element.radialReference=b;c&&c.radAttr&&c.animate(this.renderer.getRadialAttr(b,c.radAttr));return this}setTextPath(b,c){c=
|
|
u(!0,{enabled:!0,attributes:{dy:-5,startOffset:"50%",textAnchor:"middle"}},c);const e=this.renderer.url,n=this.text||this,d=n.textPath,{attributes:h,enabled:G}=c;b=b||d&&d.path;d&&d.undo();b&&G?(c=x(n,"afterModifyTree",c=>{if(b&&G){let G=b.attr("id");G||b.attr("id",G=J());var d={x:0,y:0};g(h.dx)&&(d.dx=h.dx,delete h.dx);g(h.dy)&&(d.dy=h.dy,delete h.dy);n.attr(d);this.attr({transform:""});this.box&&(this.box=this.box.destroy());d=c.nodes.slice(0);c.nodes.length=0;c.nodes[0]={tagName:"textPath",attributes:I(h,
|
|
{"text-anchor":h.textAnchor,href:`${e}#${G}`}),children:d}}}),n.textPath={path:b,undo:c}):(n.attr({dx:0,dy:0}),delete n.textPath);this.added&&(n.textCache="",this.renderer.buildText(n));return this}shadow(b){var c;const {renderer:e}=this,n=u(90===(null===(c=this.parentGroup)||void 0===c?void 0:c.rotation)?{offsetX:-1,offsetY:-1}:{},v(b)?b:{});c=e.shadowDefinition(n);return this.attr({filter:b?`url(${e.url}#${c})`:"none"})}show(b=!0){return this.attr({visibility:b?"inherit":"visible"})}["stroke-widthSetter"](b,
|
|
c,e){this[c]=b;e.setAttribute(c,b)}strokeWidth(){if(!this.renderer.styledMode)return this["stroke-width"]||0;const b=this.getStyle("stroke-width");let e=0,n;b.indexOf("px")===b.length-2?e=c(b):""!==b&&(n=t.createElementNS(k,"rect"),m(n,{width:b,"stroke-width":0}),this.element.parentNode.appendChild(n),e=n.getBBox().width,n.parentNode.removeChild(n));return e}symbolAttr(c){const e=this;F.symbolCustomAttribs.forEach(function(n){e[n]=b(c[n],e[n])});e.attr({d:e.renderer.symbols[e.symbolName](e.x,e.y,
|
|
e.width,e.height,e)})}textSetter(b){b!==this.textStr&&(delete this.textPxLength,this.textStr=b,this.added&&this.renderer.buildText(this))}titleSetter(c){const e=this.element,n=e.getElementsByTagName("title")[0]||t.createElementNS(this.SVG_NS,"title");e.insertBefore?e.insertBefore(n,e.firstChild):e.appendChild(n);n.textContent=String(b(c,"")).replace(/<[^>]*>/g,"").replace(/</g,"<").replace(/>/g,">")}toFront(){const b=this.element;b.parentNode.appendChild(b);return this}translate(b,c){return this.attr({translateX:b,
|
|
translateY:c})}updateTransform(){const {element:c,matrix:e,rotation:n=0,scaleX:d,scaleY:h,translateX:f=0,translateY:G=0}=this,q=["translate("+f+","+G+")"];g(e)&&q.push("matrix("+e.join(",")+")");n&&q.push("rotate("+n+" "+b(this.rotationOriginX,c.getAttribute("x"),0)+" "+b(this.rotationOriginY,c.getAttribute("y")||0)+")");(g(d)||g(h))&&q.push("scale("+b(d,1)+" "+b(h,1)+")");q.length&&!(this.text||this).textPath&&c.setAttribute("transform",q.join(" "))}visibilitySetter(b,c,e){"inherit"===b?e.removeAttribute(c):
|
|
this[c]!==b&&e.setAttribute(c,b);this[c]=b}xGetter(b){"circle"===this.element.nodeName&&("x"===b?b="cx":"y"===b&&(b="cy"));return this._defaultGetter(b)}zIndexSetter(b,e){var n=this.renderer,d=this.parentGroup;const h=(d||n).element||n.box,f=this.element;n=h===n.box;let G=!1,q;var u=this.added;let J;g(b)?(f.setAttribute("data-z-index",b),b=+b,this[e]===b&&(u=!1)):g(this[e])&&f.removeAttribute("data-z-index");this[e]=b;if(u){(b=this.zIndex)&&d&&(d.handleZ=!0);e=h.childNodes;for(J=e.length-1;0<=J&&
|
|
!G;J--)if(d=e[J],u=d.getAttribute("data-z-index"),q=!g(u),d!==f)if(0>b&&q&&!n&&!J)h.insertBefore(f,e[J]),G=!0;else if(c(u)<=b||q&&(!g(b)||0<=b))h.insertBefore(f,e[J+1]),G=!0;G||(h.insertBefore(f,e[n?3:0]),G=!0)}return G}}F.symbolCustomAttribs="anchorX anchorY clockwise end height innerR r start width x y".split(" ");F.prototype.strokeSetter=F.prototype.fillSetter;F.prototype.yGetter=F.prototype.xGetter;F.prototype.matrixSetter=F.prototype.rotationOriginXSetter=F.prototype.rotationOriginYSetter=F.prototype.rotationSetter=
|
|
F.prototype.scaleXSetter=F.prototype.scaleYSetter=F.prototype.translateXSetter=F.prototype.translateYSetter=F.prototype.verticalAlignSetter=function(b,c){this[c]=b;this.doTransform=!0};"";return F});M(a,"Core/Renderer/RendererRegistry.js",[a["Core/Globals.js"]],function(a){var y;(function(y){y.rendererTypes={};let z;y.getRendererType=function(a=z){return y.rendererTypes[a]||y.rendererTypes[z]};y.registerRendererType=function(A,C,E){y.rendererTypes[A]=C;if(!z||E)z=A,a.Renderer=C}})(y||(y={}));return y});
|
|
M(a,"Core/Renderer/SVG/SVGLabel.js",[a["Core/Renderer/SVG/SVGElement.js"],a["Core/Utilities.js"]],function(a,z){const {defined:y,extend:K,isNumber:A,merge:C,pick:E,removeEvent:B}=z;class t extends a{constructor(a,k,p,x,m,l,f,g,w,I){super();this.paddingRightSetter=this.paddingLeftSetter=this.paddingSetter;this.init(a,"g");this.textStr=k;this.x=p;this.y=x;this.anchorX=l;this.anchorY=f;this.baseline=w;this.className=I;this.addClass("button"===I?"highcharts-no-tooltip":"highcharts-label");I&&this.addClass("highcharts-"+
|
|
I);this.text=a.text(void 0,0,0,g).attr({zIndex:1});let r;"string"===typeof m&&((r=/^url\((.*?)\)$/.test(m))||this.renderer.symbols[m])&&(this.symbolKey=m);this.bBox=t.emptyBBox;this.padding=3;this.baselineOffset=0;this.needsBox=a.styledMode||r;this.deferredAttr={};this.alignFactor=0}alignSetter(a){a={left:0,center:.5,right:1}[a];a!==this.alignFactor&&(this.alignFactor=a,this.bBox&&A(this.xSetting)&&this.attr({x:this.xSetting}))}anchorXSetter(a,k){this.anchorX=a;this.boxAttr(k,Math.round(a)-this.getCrispAdjust()-
|
|
this.xSetting)}anchorYSetter(a,k){this.anchorY=a;this.boxAttr(k,a-this.ySetting)}boxAttr(a,k){this.box?this.box.attr(a,k):this.deferredAttr[a]=k}css(r){if(r){const a={};r=C(r);t.textProps.forEach(k=>{"undefined"!==typeof r[k]&&(a[k]=r[k],delete r[k])});this.text.css(a);"fontSize"in a||"fontWeight"in a?this.updateTextPadding():("width"in a||"textOverflow"in a)&&this.updateBoxSize()}return a.prototype.css.call(this,r)}destroy(){B(this.element,"mouseenter");B(this.element,"mouseleave");this.text&&this.text.destroy();
|
|
this.box&&(this.box=this.box.destroy());a.prototype.destroy.call(this)}fillSetter(a,k){a&&(this.needsBox=!0);this.fill=a;this.boxAttr(k,a)}getBBox(){this.textStr&&0===this.bBox.width&&0===this.bBox.height&&this.updateBoxSize();const a=this.padding,k=E(this.paddingLeft,a);return{width:this.width,height:this.height,x:this.bBox.x-k,y:this.bBox.y-a}}getCrispAdjust(){return this.renderer.styledMode&&this.box?this.box.strokeWidth()%2/2:(this["stroke-width"]?parseInt(this["stroke-width"],10):0)%2/2}heightSetter(a){this.heightSetting=
|
|
a}onAdd(){this.text.add(this);this.attr({text:E(this.textStr,""),x:this.x||0,y:this.y||0});this.box&&y(this.anchorX)&&this.attr({anchorX:this.anchorX,anchorY:this.anchorY})}paddingSetter(a,k){A(a)?a!==this[k]&&(this[k]=a,this.updateTextPadding()):this[k]=void 0}rSetter(a,k){this.boxAttr(k,a)}strokeSetter(a,k){this.stroke=a;this.boxAttr(k,a)}["stroke-widthSetter"](a,k){a&&(this.needsBox=!0);this["stroke-width"]=a;this.boxAttr(k,a)}["text-alignSetter"](a){this.textAlign=a}textSetter(a){"undefined"!==
|
|
typeof a&&this.text.attr({text:a});this.updateTextPadding()}updateBoxSize(){var a=this.text;const k={},p=this.padding,x=this.bBox=A(this.widthSetting)&&A(this.heightSetting)&&!this.textAlign||!y(a.textStr)?t.emptyBBox:a.getBBox();this.width=this.getPaddedWidth();this.height=(this.heightSetting||x.height||0)+2*p;const m=this.renderer.fontMetrics(a);this.baselineOffset=p+Math.min((this.text.firstLineMetrics||m).b,x.height||Infinity);this.heightSetting&&(this.baselineOffset+=(this.heightSetting-m.h)/
|
|
2);this.needsBox&&!a.textPath&&(this.box||(a=this.box=this.symbolKey?this.renderer.symbol(this.symbolKey):this.renderer.rect(),a.addClass(("button"===this.className?"":"highcharts-label-box")+(this.className?" highcharts-"+this.className+"-box":"")),a.add(this)),a=this.getCrispAdjust(),k.x=a,k.y=(this.baseline?-this.baselineOffset:0)+a,k.width=Math.round(this.width),k.height=Math.round(this.height),this.box.attr(K(k,this.deferredAttr)),this.deferredAttr={})}updateTextPadding(){const a=this.text;if(!a.textPath){this.updateBoxSize();
|
|
const k=this.baseline?0:this.baselineOffset;let p=E(this.paddingLeft,this.padding);y(this.widthSetting)&&this.bBox&&("center"===this.textAlign||"right"===this.textAlign)&&(p+={center:.5,right:1}[this.textAlign]*(this.widthSetting-this.bBox.width));if(p!==a.x||k!==a.y)a.attr("x",p),a.hasBoxWidthChanged&&(this.bBox=a.getBBox(!0)),"undefined"!==typeof k&&a.attr("y",k);a.x=p;a.y=k}}widthSetter(a){this.widthSetting=A(a)?a:void 0}getPaddedWidth(){var a=this.padding;const k=E(this.paddingLeft,a);a=E(this.paddingRight,
|
|
a);return(this.widthSetting||this.bBox.width||0)+k+a}xSetter(a){this.x=a;this.alignFactor&&(a-=this.alignFactor*this.getPaddedWidth(),this["forceAnimate:x"]=!0);this.xSetting=Math.round(a);this.attr("translateX",this.xSetting)}ySetter(a){this.ySetting=this.y=Math.round(a);this.attr("translateY",this.ySetting)}}t.emptyBBox={width:0,height:0,x:0,y:0};t.textProps="color direction fontFamily fontSize fontStyle fontWeight lineHeight textAlign textDecoration textOutline textOverflow whiteSpace width".split(" ");
|
|
return t});M(a,"Core/Renderer/SVG/Symbols.js",[a["Core/Utilities.js"]],function(a){function y(a,t,r,k,p){const x=[];if(p){const m=p.start||0,l=E(p.r,r);r=E(p.r,k||r);k=(p.end||0)-.001;const f=p.innerR,g=E(p.open,.001>Math.abs((p.end||0)-m-2*Math.PI)),w=Math.cos(m),I=Math.sin(m),D=Math.cos(k),d=Math.sin(k),h=E(p.longArc,.001>k-m-Math.PI?0:1);let v=["A",l,r,0,h,E(p.clockwise,1),a+l*D,t+r*d];v.params={start:m,end:k,cx:a,cy:t};x.push(["M",a+l*w,t+r*I],v);A(f)&&(v=["A",f,f,0,h,A(p.clockwise)?1-p.clockwise:
|
|
0,a+f*w,t+f*I],v.params={start:k,end:m,cx:a,cy:t},x.push(g?["M",a+f*D,t+f*d]:["L",a+f*D,t+f*d],v));g||x.push(["Z"])}return x}function H(a,t,r,k,p){return p&&p.r?K(a,t,r,k,p):[["M",a,t],["L",a+r,t],["L",a+r,t+k],["L",a,t+k],["Z"]]}function K(a,t,r,k,p){p=(null===p||void 0===p?void 0:p.r)||0;return[["M",a+p,t],["L",a+r-p,t],["A",p,p,0,0,1,a+r,t+p],["L",a+r,t+k-p],["A",p,p,0,0,1,a+r-p,t+k],["L",a+p,t+k],["A",p,p,0,0,1,a,t+k-p],["L",a,t+p],["A",p,p,0,0,1,a+p,t],["Z"]]}const {defined:A,isNumber:C,pick:E}=
|
|
a;return{arc:y,callout:function(a,t,r,k,p){const x=Math.min(p&&p.r||0,r,k),m=x+6,l=p&&p.anchorX;p=p&&p.anchorY||0;const f=K(a,t,r,k,{r:x});if(!C(l))return f;a+l>=r?p>t+m&&p<t+k-m?f.splice(3,1,["L",a+r,p-6],["L",a+r+6,p],["L",a+r,p+6],["L",a+r,t+k-x]):f.splice(3,1,["L",a+r,k/2],["L",l,p],["L",a+r,k/2],["L",a+r,t+k-x]):0>=a+l?p>t+m&&p<t+k-m?f.splice(7,1,["L",a,p+6],["L",a-6,p],["L",a,p-6],["L",a,t+x]):f.splice(7,1,["L",a,k/2],["L",l,p],["L",a,k/2],["L",a,t+x]):p&&p>k&&l>a+m&&l<a+r-m?f.splice(5,1,["L",
|
|
l+6,t+k],["L",l,t+k+6],["L",l-6,t+k],["L",a+x,t+k]):p&&0>p&&l>a+m&&l<a+r-m&&f.splice(1,1,["L",l-6,t],["L",l,t-6],["L",l+6,t],["L",r-x,t]);return f},circle:function(a,t,r,k){return y(a+r/2,t+k/2,r/2,k/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1})},diamond:function(a,t,r,k){return[["M",a+r/2,t],["L",a+r,t+k/2],["L",a+r/2,t+k],["L",a,t+k/2],["Z"]]},rect:H,roundedRect:K,square:H,triangle:function(a,t,r,k){return[["M",a+r/2,t],["L",a+r,t+k],["L",a,t+k],["Z"]]},"triangle-down":function(a,t,r,k){return[["M",
|
|
a,t],["L",a+r,t],["L",a+r/2,t+k],["Z"]]}}});M(a,"Core/Renderer/SVG/TextBuilder.js",[a["Core/Renderer/HTML/AST.js"],a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z,H){const {doc:y,SVG_NS:A,win:C}=z,{attr:E,extend:B,fireEvent:t,isString:r,objectEach:k,pick:p}=H;class x{constructor(a){const l=a.styles;this.renderer=a.renderer;this.svgElement=a;this.width=a.textWidth;this.textLineHeight=l&&l.lineHeight;this.textOutline=l&&l.textOutline;this.ellipsis=!(!l||"ellipsis"!==l.textOverflow);this.noWrap=
|
|
!(!l||"nowrap"!==l.whiteSpace)}buildSVG(){const m=this.svgElement,l=m.element;var f=m.renderer,g=p(m.textStr,"").toString();const k=-1!==g.indexOf("<"),x=l.childNodes;f=!m.added&&f.box;const D=/<br.*?>/g;var d=[g,this.ellipsis,this.noWrap,this.textLineHeight,this.textOutline,m.getStyle("font-size"),this.width].join();if(d!==m.textCache){m.textCache=d;delete m.actualWidth;for(d=x.length;d--;)l.removeChild(x[d]);k||this.ellipsis||this.width||m.textPath||-1!==g.indexOf(" ")&&(!this.noWrap||D.test(g))?
|
|
""!==g&&(f&&f.appendChild(l),g=new a(g),this.modifyTree(g.nodes),g.addToDOM(l),this.modifyDOM(),this.ellipsis&&-1!==(l.textContent||"").indexOf("\u2026")&&m.attr("title",this.unescapeEntities(m.textStr||"",["<",">"])),f&&f.removeChild(l)):l.appendChild(y.createTextNode(this.unescapeEntities(g)));r(this.textOutline)&&m.applyTextOutline&&m.applyTextOutline(this.textOutline)}}modifyDOM(){const a=this.svgElement,l=E(a.element,"x");a.firstLineMetrics=void 0;let f;for(;f=a.element.firstChild;)if(/^[\s\u200B]*$/.test(f.textContent||
|
|
" "))a.element.removeChild(f);else break;[].forEach.call(a.element.querySelectorAll("tspan.highcharts-br"),(f,d)=>{f.nextSibling&&f.previousSibling&&(0===d&&1===f.previousSibling.nodeType&&(a.firstLineMetrics=a.renderer.fontMetrics(f.previousSibling)),E(f,{dy:this.getLineHeight(f.nextSibling),x:l}))});const g=this.width||0;if(g){var k=(f,d)=>{var h=f.textContent||"";const v=h.replace(/([^\^])-/g,"$1- ").split(" ");var q=!this.noWrap&&(1<v.length||1<a.element.childNodes.length);const u=this.getLineHeight(d);
|
|
let e=0,b=a.actualWidth;if(this.ellipsis)h&&this.truncate(f,h,void 0,0,Math.max(0,g-.8*u),(b,e)=>b.substring(0,e)+"\u2026");else if(q){h=[];for(q=[];d.firstChild&&d.firstChild!==f;)q.push(d.firstChild),d.removeChild(d.firstChild);for(;v.length;)v.length&&!this.noWrap&&0<e&&(h.push(f.textContent||""),f.textContent=v.join(" ").replace(/- /g,"-")),this.truncate(f,void 0,v,0===e?b||0:0,g,(b,e)=>v.slice(0,e).join(" ").replace(/- /g,"-")),b=a.actualWidth,e++;q.forEach(b=>{d.insertBefore(b,f)});h.forEach(b=>
|
|
{d.insertBefore(y.createTextNode(b),f);b=y.createElementNS(A,"tspan");b.textContent="\u200b";E(b,{dy:u,x:l});d.insertBefore(b,f)})}},p=f=>{[].slice.call(f.childNodes).forEach(d=>{d.nodeType===C.Node.TEXT_NODE?k(d,f):(-1!==d.className.baseVal.indexOf("highcharts-br")&&(a.actualWidth=0),p(d))})};p(a.element)}}getLineHeight(a){a=a.nodeType===C.Node.TEXT_NODE?a.parentElement:a;return this.textLineHeight?parseInt(this.textLineHeight.toString(),10):this.renderer.fontMetrics(a||this.svgElement.element).h}modifyTree(a){const l=
|
|
(f,g)=>{const {attributes:m={},children:k,style:p={},tagName:d}=f,h=this.renderer.styledMode;if("b"===d||"strong"===d)h?m["class"]="highcharts-strong":p.fontWeight="bold";else if("i"===d||"em"===d)h?m["class"]="highcharts-emphasized":p.fontStyle="italic";p&&p.color&&(p.fill=p.color);"br"===d?(m["class"]="highcharts-br",f.textContent="\u200b",(g=a[g+1])&&g.textContent&&(g.textContent=g.textContent.replace(/^ +/gm,""))):"a"===d&&k&&k.some(d=>"#text"===d.tagName)&&(f.children=[{children:k,tagName:"tspan"}]);
|
|
"#text"!==d&&"a"!==d&&(f.tagName="tspan");B(f,{attributes:m,style:p});k&&k.filter(d=>"#text"!==d.tagName).forEach(l)};a.forEach(l);t(this.svgElement,"afterModifyTree",{nodes:a})}truncate(a,l,f,g,k,p){const m=this.svgElement,{rotation:d}=m,h=[];let v=f?1:0,q=(l||f||"").length,u=q,e,b;const c=function(b,c){b=c||b;if((c=a.parentNode)&&"undefined"===typeof h[b]&&c.getSubStringLength)try{h[b]=g+c.getSubStringLength(0,f?b+1:b)}catch(F){""}return h[b]};m.rotation=0;b=c(a.textContent.length);if(g+b>k){for(;v<=
|
|
q;)u=Math.ceil((v+q)/2),f&&(e=p(f,u)),b=c(u,e&&e.length-1),v===q?v=q+1:b>k?q=u-1:v=u;0===q?a.textContent="":l&&q===l.length-1||(a.textContent=e||p(l||f,u))}f&&f.splice(0,u);m.actualWidth=b;m.rotation=d}unescapeEntities(a,l){k(this.renderer.escapes,function(f,g){l&&-1!==l.indexOf(f)||(a=a.toString().replace(new RegExp(f,"g"),g))});return a}}return x});M(a,"Core/Renderer/SVG/SVGRenderer.js",[a["Core/Renderer/HTML/AST.js"],a["Core/Color/Color.js"],a["Core/Globals.js"],a["Core/Renderer/RendererRegistry.js"],
|
|
a["Core/Renderer/SVG/SVGElement.js"],a["Core/Renderer/SVG/SVGLabel.js"],a["Core/Renderer/SVG/Symbols.js"],a["Core/Renderer/SVG/TextBuilder.js"],a["Core/Utilities.js"]],function(a,z,H,K,A,C,E,B,t){const {charts:r,deg2rad:k,doc:p,isFirefox:x,isMS:m,isWebKit:l,noop:f,SVG_NS:g,symbolSizes:w,win:I}=H,{addEvent:D,attr:d,createElement:h,css:v,defined:q,destroyObjectProperties:u,extend:e,isArray:b,isNumber:c,isObject:n,isString:J,merge:F,pick:L,pInt:S,uniqueKey:P}=t;let O;class Q{constructor(b,c,e,n,d,h,
|
|
f){this.width=this.url=this.style=this.imgCount=this.height=this.gradients=this.globalAnimation=this.defs=this.chartIndex=this.cacheKeys=this.cache=this.boxWrapper=this.box=this.alignedObjects=void 0;this.init(b,c,e,n,d,h,f)}init(b,c,e,n,h,f,q){const G=this.createElement("svg").attr({version:"1.1","class":"highcharts-root"}),a=G.element;q||G.css(this.getStyle(n));b.appendChild(a);d(b,"dir","ltr");-1===b.innerHTML.indexOf("xmlns")&&d(a,"xmlns",this.SVG_NS);this.box=a;this.boxWrapper=G;this.alignedObjects=
|
|
[];this.url=this.getReferenceURL();this.createElement("desc").add().element.appendChild(p.createTextNode("Created with Highcharts 11.1.0"));this.defs=this.createElement("defs").add();this.allowHTML=f;this.forExport=h;this.styledMode=q;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.rootFontSize=G.getStyle("font-size");this.setSize(c,e,!1);let g;x&&b.getBoundingClientRect&&(c=function(){v(b,{left:0,top:0});g=b.getBoundingClientRect();v(b,{left:Math.ceil(g.left)-g.left+"px",top:Math.ceil(g.top)-
|
|
g.top+"px"})},c(),this.unSubPixelFix=D(I,"resize",c))}definition(b){return(new a([b])).addToDOM(this.defs.element)}getReferenceURL(){if((x||l)&&p.getElementsByTagName("base").length){if(!q(O)){var b=P();b=(new a([{tagName:"svg",attributes:{width:8,height:8},children:[{tagName:"defs",children:[{tagName:"clipPath",attributes:{id:b},children:[{tagName:"rect",attributes:{width:4,height:4}}]}]},{tagName:"rect",attributes:{id:"hitme",width:8,height:8,"clip-path":`url(#${b})`,fill:"rgba(0,0,0,0.001)"}}]}])).addToDOM(p.body);
|
|
v(b,{position:"fixed",top:0,left:0,zIndex:9E5});const c=p.elementFromPoint(6,6);O="hitme"===(c&&c.id);p.body.removeChild(b)}if(O)return I.location.href.split("#")[0].replace(/<[^>]*>/g,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20")}return""}getStyle(b){return this.style=e({fontFamily:"Helvetica, Arial, sans-serif",fontSize:"1rem"},b)}setStyle(b){this.boxWrapper.css(this.getStyle(b))}isHidden(){return!this.boxWrapper.getBBox().width}destroy(){const b=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();
|
|
u(this.gradients||{});this.gradients=null;this.defs=b.destroy();this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null}createElement(b){const c=new this.Element;c.init(this,b);return c}getRadialAttr(b,c){return{cx:b[0]-b[2]/2+(c.cx||0)*b[2],cy:b[1]-b[2]/2+(c.cy||0)*b[2],r:(c.r||0)*b[2]}}shadowDefinition(b){const c=[`highcharts-drop-shadow-${this.chartIndex}`,...Object.keys(b).map(c=>b[c])].join("-").replace(/[^a-z0-9\-]/g,""),e=F({color:"#000000",offsetX:1,offsetY:1,opacity:.15,
|
|
width:5},b);this.defs.element.querySelector(`#${c}`)||this.definition({tagName:"filter",attributes:{id:c},children:[{tagName:"feDropShadow",attributes:{dx:e.offsetX,dy:e.offsetY,"flood-color":e.color,"flood-opacity":Math.min(5*e.opacity,1),stdDeviation:e.width/2}}]});return c}buildText(b){(new B(b)).buildSVG()}getContrast(b){b=z.parse(b).rgba.map(b=>{b/=255;return.03928>=b?b/12.92:Math.pow((b+.055)/1.055,2.4)});b=.2126*b[0]+.7152*b[1]+.0722*b[2];return 1.05/(b+.05)>(b+.05)/.05?"#FFFFFF":"#000000"}button(b,
|
|
c,d,h,f={},q,g,u,J,v){const G=this.label(b,c,d,J,void 0,void 0,v,void 0,"button"),N=this.styledMode;b=f.states||{};let l=0;f=F(f);delete f.states;const k=F({color:"#333333",cursor:"pointer",fontSize:"0.8em",fontWeight:"normal"},f.style);delete f.style;let w=a.filterUserAttributes(f);G.attr(F({padding:8,r:2},w));let p,L,x;N||(w=F({fill:"#f7f7f7",stroke:"#cccccc","stroke-width":1},w),q=F(w,{fill:"#e6e6e6"},a.filterUserAttributes(q||b.hover||{})),p=q.style,delete q.style,g=F(w,{fill:"#e6e9ff",style:{color:"#000000",
|
|
fontWeight:"bold"}},a.filterUserAttributes(g||b.select||{})),L=g.style,delete g.style,u=F(w,{style:{color:"#cccccc"}},a.filterUserAttributes(u||b.disabled||{})),x=u.style,delete u.style);D(G.element,m?"mouseover":"mouseenter",function(){3!==l&&G.setState(1)});D(G.element,m?"mouseout":"mouseleave",function(){3!==l&&G.setState(l)});G.setState=function(b){1!==b&&(G.state=l=b);G.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-"+["normal","hover","pressed",
|
|
"disabled"][b||0]);N||(G.attr([w,q,g,u][b||0]),b=[k,p,L,x][b||0],n(b)&&G.css(b))};N||(G.attr(w).css(e({cursor:"default"},k)),v&&G.text.css({pointerEvents:"none"}));return G.on("touchstart",b=>b.stopPropagation()).on("click",function(b){3!==l&&h.call(G,b)})}crispLine(b,c,e="round"){const n=b[0],d=b[1];q(n[1])&&n[1]===d[1]&&(n[1]=d[1]=Math[e](n[1])-c%2/2);q(n[2])&&n[2]===d[2]&&(n[2]=d[2]=Math[e](n[2])+c%2/2);return b}path(c){const d=this.styledMode?{}:{fill:"none"};b(c)?d.d=c:n(c)&&e(d,c);return this.createElement("path").attr(d)}circle(b,
|
|
c,e){b=n(b)?b:"undefined"===typeof b?{}:{x:b,y:c,r:e};c=this.createElement("circle");c.xSetter=c.ySetter=function(b,c,e){e.setAttribute("c"+c,b)};return c.attr(b)}arc(b,c,e,d,h,f){n(b)?(d=b,c=d.y,e=d.r,b=d.x):d={innerR:d,start:h,end:f};b=this.symbol("arc",b,c,e,e,d);b.r=e;return b}rect(b,c,h,f,q,g){b=n(b)?b:"undefined"===typeof b?{}:{x:b,y:c,r:q,width:Math.max(h||0,0),height:Math.max(f||0,0)};const G=this.createElement("rect");this.styledMode||("undefined"!==typeof g&&(b["stroke-width"]=g,e(b,G.crisp(b))),
|
|
b.fill="none");G.rSetter=function(b,c,e){G.r=b;d(e,{rx:b,ry:b})};G.rGetter=function(){return G.r||0};return G.attr(b)}roundedRect(b){return this.symbol("roundedRect").attr(b)}setSize(b,c,e){this.width=b;this.height=c;this.boxWrapper.animate({width:b,height:c},{step:function(){this.attr({viewBox:"0 0 "+this.attr("width")+" "+this.attr("height")})},duration:L(e,!0)?void 0:0});this.alignElements()}g(b){const c=this.createElement("g");return b?c.attr({"class":"highcharts-"+b}):c}image(b,e,d,n,h,f){const G=
|
|
{preserveAspectRatio:"none"};c(e)&&(G.x=e);c(d)&&(G.y=d);c(n)&&(G.width=n);c(h)&&(G.height=h);const q=this.createElement("image").attr(G);e=function(c){q.attr({href:b});f.call(q,c)};f?(q.attr({href:"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}),d=new I.Image,D(d,"load",e),d.src=b,d.complete&&e({})):q.attr({href:b});return q}symbol(b,c,n,f,g,a){const G=this,u=/^url\((.*?)\)$/,J=u.test(b),l=!J&&(this.symbols[b]?b:"circle"),F=l&&this.symbols[l];let m,k,x,O;if(F)"number"===
|
|
typeof c&&(k=F.call(this.symbols,Math.round(c||0),Math.round(n||0),f||0,g||0,a)),m=this.path(k),G.styledMode||m.attr("fill","none"),e(m,{symbolName:l||void 0,x:c,y:n,width:f,height:g}),a&&e(m,a);else if(J){x=b.match(u)[1];const e=m=this.image(x);e.imgwidth=L(a&&a.width,w[x]&&w[x].width);e.imgheight=L(a&&a.height,w[x]&&w[x].height);O=b=>b.attr({width:b.width,height:b.height});["width","height"].forEach(function(b){e[b+"Setter"]=function(b,c){this[c]=b;const {alignByTranslate:e,element:n,width:h,height:f,
|
|
imgwidth:G,imgheight:g}=this;b=this["img"+c];if(q(b)){let q=1;a&&"within"===a.backgroundSize&&h&&f?(q=Math.min(h/G,f/g),d(n,{width:Math.round(G*q),height:Math.round(g*q)})):n&&n.setAttribute(c,b);e||this.translate(((h||0)-G*q)/2,((f||0)-g*q)/2)}}});q(c)&&e.attr({x:c,y:n});e.isImg=!0;q(e.imgwidth)&&q(e.imgheight)?O(e):(e.attr({width:0,height:0}),h("img",{onload:function(){const b=r[G.chartIndex];0===this.width&&(v(this,{position:"absolute",top:"-999em"}),p.body.appendChild(this));w[x]={width:this.width,
|
|
height:this.height};e.imgwidth=this.width;e.imgheight=this.height;e.element&&O(e);this.parentNode&&this.parentNode.removeChild(this);G.imgCount--;if(!G.imgCount&&b&&!b.hasLoaded)b.onload()},src:x}),this.imgCount++)}return m}clipRect(b,c,e,n){const d=P()+"-",h=this.createElement("clipPath").attr({id:d}).add(this.defs);b=this.rect(b,c,e,n,0).add(h);b.id=d;b.clipPath=h;b.count=0;return b}text(b,c,e,n){const d={};if(n&&(this.allowHTML||!this.forExport))return this.html(b,c,e);d.x=Math.round(c||0);e&&
|
|
(d.y=Math.round(e));q(b)&&(d.text=b);b=this.createElement("text").attr(d);if(!n||this.forExport&&!this.allowHTML)b.xSetter=function(b,c,e){const d=e.getElementsByTagName("tspan"),n=e.getAttribute(c);for(let e=0,h;e<d.length;e++)h=d[e],h.getAttribute(c)===n&&h.setAttribute(c,b);e.setAttribute(c,b)};return b}fontMetrics(b){b=S(A.prototype.getStyle.call(b,"font-size")||0);const c=24>b?b+3:Math.round(1.2*b);return{h:c,b:Math.round(.8*c),f:b}}rotCorr(b,c,e){let d=b;c&&e&&(d=Math.max(d*Math.cos(c*k),4));
|
|
return{x:-b/3*Math.sin(c*k),y:d}}pathToSegments(b){const e=[],d=[],n={A:8,C:7,H:2,L:3,M:3,Q:5,S:5,T:3,V:2};for(let h=0;h<b.length;h++)J(d[0])&&c(b[h])&&d.length===n[d[0].toUpperCase()]&&b.splice(h,0,d[0].replace("M","L").replace("m","l")),"string"===typeof b[h]&&(d.length&&e.push(d.slice(0)),d.length=0),d.push(b[h]);e.push(d.slice(0));return e}label(b,c,e,d,n,h,f,q,g){return new C(this,b,c,e,d,n,h,f,q,g)}alignElements(){this.alignedObjects.forEach(b=>b.align())}}e(Q.prototype,{Element:A,SVG_NS:g,
|
|
escapes:{"&":"&","<":"<",">":">","'":"'",'"':"""},symbols:E,draw:f});K.registerRendererType("svg",Q,!0);"";return Q});M(a,"Core/Renderer/HTML/HTMLElement.js",[a["Core/Globals.js"],a["Core/Renderer/SVG/SVGElement.js"],a["Core/Utilities.js"]],function(a,z,H){const {isFirefox:y,isMS:A,isWebKit:C,win:E}=a,{css:B,defined:t,extend:r,pick:k,pInt:p}=H,x=[];class m extends z{static compose(a){if(H.pushUnique(x,a)){const f=m.prototype,g=a.prototype;g.getSpanCorrection=f.getSpanCorrection;
|
|
g.htmlCss=f.htmlCss;g.htmlGetBBox=f.htmlGetBBox;g.htmlUpdateTransform=f.htmlUpdateTransform;g.setSpanRotation=f.setSpanRotation}return a}getSpanCorrection(a,f,g){this.xCorr=-a*g;this.yCorr=-f}htmlCss(a){const f="SPAN"===this.element.tagName&&a&&"width"in a,g=k(f&&a.width,void 0);let l;f&&(delete a.width,this.textWidth=g,l=!0);a&&"ellipsis"===a.textOverflow&&(a.whiteSpace="nowrap",a.overflow="hidden");this.styles=r(this.styles,a);B(this.element,a);l&&this.htmlUpdateTransform();return this}htmlGetBBox(){const a=
|
|
this.element;return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}}htmlUpdateTransform(){if(this.added){var a=this.renderer,f=this.element,g=this.x||0,m=this.y||0,k=this.textAlign||"left",x={left:0,center:.5,right:1}[k],d=this.styles,h=d&&d.whiteSpace;B(f,{marginLeft:this.translateX||0,marginTop:this.translateY||0});if("SPAN"===f.tagName){d=this.rotation;const q=this.textWidth&&p(this.textWidth),u=[d,k,f.innerHTML,this.textWidth,this.textAlign].join();let e=!1;if(q!==this.oldTextWidth){if(this.textPxLength)var v=
|
|
this.textPxLength;else B(f,{width:"",whiteSpace:h||"nowrap"}),v=f.offsetWidth;(q>this.oldTextWidth||v>q)&&(/[ \-]/.test(f.textContent||f.innerText)||"ellipsis"===f.style.textOverflow)&&(B(f,{width:v>q||d?q+"px":"auto",display:"block",whiteSpace:h||"normal"}),this.oldTextWidth=q,e=!0)}this.hasBoxWidthChanged=e;u!==this.cTT&&(a=a.fontMetrics(f).b,!t(d)||d===(this.oldRotation||0)&&k===this.oldAlign||this.setSpanRotation(d,x,a),this.getSpanCorrection(!t(d)&&this.textPxLength||f.offsetWidth,a,x,d,k));
|
|
B(f,{left:g+(this.xCorr||0)+"px",top:m+(this.yCorr||0)+"px"});this.cTT=u;this.oldRotation=d;this.oldAlign=k}}else this.alignOnAdd=!0}setSpanRotation(a,f,g){const l={},m=A&&!/Edge/.test(E.navigator.userAgent)?"-ms-transform":C?"-webkit-transform":y?"MozTransform":E.opera?"-o-transform":void 0;m&&(l[m]=l.transform="rotate("+a+"deg)",l[m+(y?"Origin":"-origin")]=l.transformOrigin=100*f+"% "+g+"px",B(this.element,l))}}return m});M(a,"Core/Renderer/HTML/HTMLRenderer.js",[a["Core/Renderer/HTML/AST.js"],
|
|
a["Core/Renderer/SVG/SVGElement.js"],a["Core/Renderer/SVG/SVGRenderer.js"],a["Core/Utilities.js"]],function(a,z,H,K){const {attr:y,createElement:C,extend:E,pick:B}=K,t=[];class r extends H{static compose(a){K.pushUnique(t,a)&&(a.prototype.html=r.prototype.html);return a}html(k,p,x){const m=this.createElement("span"),l=m.element,f=m.renderer,g=function(f,a){["opacity","visibility"].forEach(function(g){f[g+"Setter"]=function(d,h,v){const q=f.div?f.div.style:a;z.prototype[g+"Setter"].call(this,d,h,v);
|
|
q&&(q[h]=d)}});f.addedSetters=!0};m.textSetter=function(f){f!==this.textStr&&(delete this.bBox,delete this.oldTextWidth,a.setElementHTML(this.element,B(f,"")),this.textStr=f,m.doTransform=!0)};g(m,m.element.style);m.xSetter=m.ySetter=m.alignSetter=m.rotationSetter=function(f,a){"align"===a?m.alignValue=m.textAlign=f:m[a]=f;m.doTransform=!0};m.afterSetters=function(){this.doTransform&&(this.htmlUpdateTransform(),this.doTransform=!1)};m.attr({text:k,x:Math.round(p),y:Math.round(x)}).css({position:"absolute"});
|
|
f.styledMode||m.css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});l.style.whiteSpace="nowrap";m.css=m.htmlCss;m.add=function(a){const k=f.box.parentNode,p=[];let d;if(this.parentGroup=a){if(d=a.div,!d){for(;a;)p.push(a),a=a.parentGroup;p.reverse().forEach(function(h){function f(b,c){h[c]=b;"translateX"===c?e.left=b+"px":e.top=b+"px";h.doTransform=!0}const a=y(h.element,"class"),u=h.styles||{};d=h.div=h.div||C("div",a?{className:a}:void 0,{position:"absolute",left:(h.translateX||
|
|
0)+"px",top:(h.translateY||0)+"px",display:h.display,opacity:h.opacity,visibility:h.visibility},d||k);const e=d.style;E(h,{classSetter:function(b){return function(c){this.element.setAttribute("class",c);b.className=c}}(d),css:function(b){m.css.call(h,b);["cursor","pointerEvents"].forEach(c=>{b[c]&&(e[c]=b[c])});return h},on:function(){p[0].div&&m.on.apply({element:p[0].div,onEvents:h.onEvents},arguments);return h},translateXSetter:f,translateYSetter:f});h.addedSetters||g(h);h.css(u)})}}else d=k;d.appendChild(l);
|
|
m.added=!0;m.alignOnAdd&&m.htmlUpdateTransform();return m};return m}}return r});M(a,"Core/Axis/AxisDefaults.js",[],function(){var a;(function(a){a.defaultXAxisOptions={alignTicks:!0,allowDecimals:void 0,panningEnabled:!0,zIndex:2,zoomEnabled:!0,dateTimeLabelFormats:{millisecond:{main:"%H:%M:%S.%L",range:!1},second:{main:"%H:%M:%S",range:!1},minute:{main:"%H:%M",range:!1},hour:{main:"%H:%M",range:!1},day:{main:"%e %b"},week:{main:"%e %b"},month:{main:"%b '%y"},year:{main:"%Y"}},endOnTick:!1,gridLineDashStyle:"Solid",
|
|
gridZIndex:1,labels:{autoRotation:void 0,autoRotationLimit:80,distance:15,enabled:!0,indentation:10,overflow:"justify",padding:5,reserveSpace:void 0,rotation:void 0,staggerLines:0,step:0,useHTML:!1,zIndex:7,style:{color:"#333333",cursor:"default",fontSize:"0.8em"}},maxPadding:.01,minorGridLineDashStyle:"Solid",minorTickLength:2,minorTickPosition:"outside",minorTicksPerMajor:5,minPadding:.01,offset:void 0,opposite:!1,reversed:void 0,reversedStacks:!1,showEmpty:!0,showFirstLabel:!0,showLastLabel:!0,
|
|
startOfWeek:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickmarkPlacement:"between",tickPosition:"outside",title:{align:"middle",rotation:0,useHTML:!1,x:0,y:0,style:{color:"#666666",fontSize:"0.8em"}},type:"linear",uniqueNames:!0,visible:!0,minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999",lineColor:"#333333",lineWidth:1,gridLineColor:"#e6e6e6",gridLineWidth:void 0,tickColor:"#333333"};a.defaultYAxisOptions={reversedStacks:!0,endOnTick:!0,maxPadding:.05,minPadding:.05,
|
|
tickPixelInterval:72,showLastLabel:!0,labels:{x:void 0},startOnTick:!0,title:{rotation:270,text:"Values"},stackLabels:{animation:{},allowOverlap:!1,enabled:!1,crop:!0,overflow:"justify",formatter:function(){const {numberFormatter:a}=this.axis.chart;return a(this.total||0,-1)},style:{color:"#000000",fontSize:"0.7em",fontWeight:"bold",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0};a.defaultLeftAxisOptions={title:{rotation:270}};a.defaultRightAxisOptions={title:{rotation:90}};a.defaultBottomAxisOptions=
|
|
{labels:{autoRotation:[-45]},margin:15,title:{rotation:0}};a.defaultTopAxisOptions={labels:{autoRotation:[-45]},margin:15,title:{rotation:0}}})(a||(a={}));return a});M(a,"Core/Foundation.js",[a["Core/Utilities.js"]],function(a){const {addEvent:y,isFunction:H,objectEach:K,removeEvent:A}=a;var C;(function(a){a.registerEventOptions=function(a,t){a.eventOptions=a.eventOptions||{};K(t.events,function(r,k){a.eventOptions[k]!==r&&(a.eventOptions[k]&&(A(a,k,a.eventOptions[k]),delete a.eventOptions[k]),H(r)&&
|
|
(a.eventOptions[k]=r,y(a,k,r,{order:0})))})}})(C||(C={}));return C});M(a,"Core/Axis/Tick.js",[a["Core/Templating.js"],a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z,H){const {deg2rad:y}=z,{clamp:A,correctFloat:C,defined:E,destroyObjectProperties:B,extend:t,fireEvent:r,isNumber:k,merge:p,objectEach:x,pick:m}=H;class l{constructor(f,a,l,m,k){this.isNewLabel=this.isNew=!0;this.axis=f;this.pos=a;this.type=l||"";this.parameters=k||{};this.tickmarkOffset=this.parameters.tickmarkOffset;this.options=
|
|
this.parameters.options;r(this,"init");l||m||this.addLabel()}addLabel(){const f=this,g=f.axis;var l=g.options;const p=g.chart;var x=g.categories;const d=g.logarithmic,h=g.names,v=f.pos,q=m(f.options&&f.options.labels,l.labels);var u=g.tickPositions;const e=v===u[0],b=v===u[u.length-1],c=(!q.step||1===q.step)&&1===g.tickInterval;u=u.info;let n=f.label,J,F,L;x=this.parameters.category||(x?m(x[v],h[v],v):v);d&&k(x)&&(x=C(d.lin2log(x)));g.dateTime&&(u?(F=p.time.resolveDTLFormat(l.dateTimeLabelFormats[!l.grid&&
|
|
u.higherRanks[v]||u.unitName]),J=F.main):k(x)&&(J=g.dateTime.getXDateFormat(x,l.dateTimeLabelFormats||{})));f.isFirst=e;f.isLast=b;const S={axis:g,chart:p,dateTimeLabelFormat:J,isFirst:e,isLast:b,pos:v,tick:f,tickPositionInfo:u,value:x};r(this,"labelFormat",S);const P=b=>q.formatter?q.formatter.call(b,b):q.format?(b.text=g.defaultLabelFormatter.call(b,b),a.format(q.format,b,p)):g.defaultLabelFormatter.call(b,b);l=P.call(S,S);const O=F&&F.list;f.shortenLabel=O?function(){for(L=0;L<O.length;L++)if(t(S,
|
|
{dateTimeLabelFormat:O[L]}),n.attr({text:P.call(S,S)}),n.getBBox().width<g.getSlotWidth(f)-2*q.padding)return;n.attr({text:""})}:void 0;c&&g._addedPlotLB&&f.moveLabel(l,q);E(n)||f.movedLabel?n&&n.textStr!==l&&!c&&(!n.textWidth||q.style.width||n.styles.width||n.css({width:null}),n.attr({text:l}),n.textPxLength=n.getBBox().width):(f.label=n=f.createLabel({x:0,y:0},l,q),f.rotation=0)}createLabel(f,a,l){const g=this.axis,m=g.chart;if(f=E(a)&&l.enabled?m.renderer.text(a,f.x,f.y,l.useHTML).add(g.labelGroup):
|
|
null)m.styledMode||f.css(p(l.style)),f.textPxLength=f.getBBox().width;return f}destroy(){B(this,this.axis)}getPosition(f,a,l,m){const g=this.axis,d=g.chart,h=m&&d.oldChartHeight||d.chartHeight;f={x:f?C(g.translate(a+l,void 0,void 0,m)+g.transB):g.left+g.offset+(g.opposite?(m&&d.oldChartWidth||d.chartWidth)-g.right-g.left:0),y:f?h-g.bottom+g.offset-(g.opposite?g.height:0):C(h-g.translate(a+l,void 0,void 0,m)-g.transB)};f.y=A(f.y,-1E5,1E5);r(this,"afterGetPosition",{pos:f});return f}getLabelPosition(a,
|
|
g,l,k,p,d,h,v){const f=this.axis,u=f.transA,e=f.isLinked&&f.linkedParent?f.linkedParent.reversed:f.reversed,b=f.staggerLines,c=f.tickRotCorr||{x:0,y:0},n=k||f.reserveSpaceDefault?0:-f.labelOffset*("center"===f.labelAlign?.5:1),J=p.distance,F={};l=0===f.side?l.rotation?-J:-l.getBBox().height:2===f.side?c.y+J:Math.cos(l.rotation*y)*(c.y-l.getBBox(!1,0).height/2);E(p.y)&&(l=0===f.side&&f.horiz?p.y+l:p.y);a=a+m(p.x,[0,1,0,-1][f.side]*J)+n+c.x-(d&&k?d*u*(e?-1:1):0);g=g+l-(d&&!k?d*u*(e?1:-1):0);b&&(k=h/
|
|
(v||1)%b,f.opposite&&(k=b-k-1),g+=f.labelOffset/b*k);F.x=a;F.y=Math.round(g);r(this,"afterGetLabelPosition",{pos:F,tickmarkOffset:d,index:h});return F}getLabelSize(){return this.label?this.label.getBBox()[this.axis.horiz?"height":"width"]:0}getMarkPath(f,a,l,m,k,d){return d.crispLine([["M",f,a],["L",f+(k?0:-l),a+(k?l:0)]],m)}handleOverflow(f){const a=this.axis,l=a.options.labels,k=f.x;var p=a.chart.chartWidth,d=a.chart.spacing;const h=m(a.labelLeft,Math.min(a.pos,d[3]));d=m(a.labelRight,Math.max(a.isRadial?
|
|
0:a.pos+a.len,p-d[1]));const v=this.label,q=this.rotation,u={left:0,center:.5,right:1}[a.labelAlign||v.attr("align")],e=v.getBBox().width,b=a.getSlotWidth(this),c={};let n=b,J=1,F;if(q||"justify"!==l.overflow)0>q&&k-u*e<h?F=Math.round(k/Math.cos(q*y)-h):0<q&&k+u*e>d&&(F=Math.round((p-k)/Math.cos(q*y)));else if(p=k+(1-u)*e,k-u*e<h?n=f.x+n*(1-u)-h:p>d&&(n=d-f.x+n*u,J=-1),n=Math.min(b,n),n<b&&"center"===a.labelAlign&&(f.x+=J*(b-n-u*(b-Math.min(e,n)))),e>n||a.autoRotation&&(v.styles||{}).width)F=n;F&&
|
|
(this.shortenLabel?this.shortenLabel():(c.width=Math.floor(F)+"px",(l.style||{}).textOverflow||(c.textOverflow="ellipsis"),v.css(c)))}moveLabel(a,g){const f=this;var l=f.label;const m=f.axis;let d=!1;l&&l.textStr===a?(f.movedLabel=l,d=!0,delete f.label):x(m.ticks,function(h){d||h.isNew||h===f||!h.label||h.label.textStr!==a||(f.movedLabel=h.label,d=!0,h.labelPos=f.movedLabel.xy,delete h.label)});d||!f.labelPos&&!l||(l=f.labelPos||l.xy,f.movedLabel=f.createLabel(l,a,g),f.movedLabel&&f.movedLabel.attr({opacity:0}))}render(a,
|
|
g,l){var f=this.axis,k=f.horiz,d=this.pos,h=m(this.tickmarkOffset,f.tickmarkOffset);d=this.getPosition(k,d,h,g);h=d.x;const v=d.y;f=k&&h===f.pos+f.len||!k&&v===f.pos?-1:1;k=m(l,this.label&&this.label.newOpacity,1);l=m(l,1);this.isActive=!0;this.renderGridLine(g,l,f);this.renderMark(d,l,f);this.renderLabel(d,g,k,a);this.isNew=!1;r(this,"afterRender")}renderGridLine(f,a,l){const g=this.axis,k=g.options,d={},h=this.pos,v=this.type,q=m(this.tickmarkOffset,g.tickmarkOffset),u=g.chart.renderer;let e=this.gridLine,
|
|
b=k.gridLineWidth,c=k.gridLineColor,n=k.gridLineDashStyle;"minor"===this.type&&(b=k.minorGridLineWidth,c=k.minorGridLineColor,n=k.minorGridLineDashStyle);e||(g.chart.styledMode||(d.stroke=c,d["stroke-width"]=b||0,d.dashstyle=n),v||(d.zIndex=1),f&&(a=0),this.gridLine=e=u.path().attr(d).addClass("highcharts-"+(v?v+"-":"")+"grid-line").add(g.gridGroup));if(e&&(l=g.getPlotLinePath({value:h+q,lineWidth:e.strokeWidth()*l,force:"pass",old:f,acrossPanes:!1})))e[f||this.isNew?"attr":"animate"]({d:l,opacity:a})}renderMark(a,
|
|
g,l){const f=this.axis;var k=f.options;const d=f.chart.renderer,h=this.type,v=f.tickSize(h?h+"Tick":"tick"),q=a.x;a=a.y;const u=m(k["minor"!==h?"tickWidth":"minorTickWidth"],!h&&f.isXAxis?1:0);k=k["minor"!==h?"tickColor":"minorTickColor"];let e=this.mark;const b=!e;v&&(f.opposite&&(v[0]=-v[0]),e||(this.mark=e=d.path().addClass("highcharts-"+(h?h+"-":"")+"tick").add(f.axisGroup),f.chart.styledMode||e.attr({stroke:k,"stroke-width":u})),e[b?"attr":"animate"]({d:this.getMarkPath(q,a,v[0],e.strokeWidth()*
|
|
l,f.horiz,d),opacity:g}))}renderLabel(a,g,l,p){var f=this.axis;const d=f.horiz,h=f.options,v=this.label,q=h.labels,u=q.step;f=m(this.tickmarkOffset,f.tickmarkOffset);const e=a.x;a=a.y;let b=!0;v&&k(e)&&(v.xy=a=this.getLabelPosition(e,a,v,d,q,f,p,u),this.isFirst&&!this.isLast&&!h.showFirstLabel||this.isLast&&!this.isFirst&&!h.showLastLabel?b=!1:!d||q.step||q.rotation||g||0===l||this.handleOverflow(a),u&&p%u&&(b=!1),b&&k(a.y)?(a.opacity=l,v[this.isNewLabel?"attr":"animate"](a).show(!0),this.isNewLabel=
|
|
!1):(v.hide(),this.isNewLabel=!0))}replaceMovedLabel(){const a=this.label,g=this.axis;a&&!this.isNew&&(a.animate({opacity:0},void 0,a.destroy),delete this.label);g.isDirty=!0;this.label=this.movedLabel;delete this.movedLabel}}"";return l});M(a,"Core/Axis/Axis.js",[a["Core/Animation/AnimationUtilities.js"],a["Core/Axis/AxisDefaults.js"],a["Core/Color/Color.js"],a["Core/Defaults.js"],a["Core/Foundation.js"],a["Core/Globals.js"],a["Core/Axis/Tick.js"],a["Core/Utilities.js"]],function(a,z,H,K,A,C,E,B){const {animObject:t}=
|
|
a,{defaultOptions:r}=K,{registerEventOptions:k}=A,{deg2rad:p}=C,{arrayMax:x,arrayMin:m,clamp:l,correctFloat:f,defined:g,destroyObjectProperties:w,erase:I,error:D,extend:d,fireEvent:h,getClosestDistance:v,insertItem:q,isArray:u,isNumber:e,isString:b,merge:c,normalizeTickInterval:n,objectEach:J,pick:F,relativeLength:L,removeEvent:S,splat:P,syncTimeout:O}=B,Q=(b,c)=>n(c,void 0,void 0,F(b.options.allowDecimals,.5>c||void 0!==b.tickAmount),!!b.tickAmount);class V{constructor(b,c,e){this.zoomEnabled=this.width=
|
|
this.visible=this.userOptions=this.translationSlope=this.transB=this.transA=this.top=this.ticks=this.tickRotCorr=this.tickPositions=this.tickmarkOffset=this.tickInterval=this.tickAmount=this.side=this.series=this.right=this.positiveValuesOnly=this.pos=this.pointRangePadding=this.pointRange=this.plotLinesAndBandsGroups=this.plotLinesAndBands=this.paddedTicks=this.overlap=this.options=this.offset=this.names=this.minPixelPadding=this.minorTicks=this.minorTickInterval=this.min=this.maxLabelLength=this.max=
|
|
this.len=this.left=this.labelFormatter=this.labelEdge=this.isLinked=this.index=this.height=this.hasVisibleSeries=this.hasNames=this.eventOptions=this.coll=this.closestPointRange=this.chart=this.bottom=this.alternateBands=void 0;this.init(b,c,e)}init(b,c,d=this.coll){const n="xAxis"===d;this.chart=b;this.horiz=this.isZAxis||(b.inverted?!n:n);this.isXAxis=n;this.coll=d;h(this,"init",{userOptions:c});this.opposite=F(c.opposite,this.opposite);this.side=F(c.side,this.side,this.horiz?this.opposite?0:2:
|
|
this.opposite?1:3);this.setOptions(c);d=this.options;const a=d.labels,f=d.type;this.userOptions=c;this.minPixelPadding=0;this.reversed=F(d.reversed,this.reversed);this.visible=d.visible;this.zoomEnabled=d.zoomEnabled;this.hasNames="category"===f||!0===d.categories;this.categories=d.categories||(this.hasNames?[]:void 0);this.names||(this.names=[],this.names.keys={});this.plotLinesAndBandsGroups={};this.positiveValuesOnly=!!this.logarithmic;this.isLinked=g(d.linkedTo);this.ticks={};this.labelEdge=[];
|
|
this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0;this.min=this.max=null;c=F(d.crosshair,P(b.options.tooltip.crosshairs)[n?0:1]);this.crosshair=!0===c?{}:c;-1===b.axes.indexOf(this)&&(n?b.axes.splice(b.xAxis.length,0,this):b.axes.push(this),q(this,b[this.coll]));b.orderItems(this.coll);this.series=this.series||[];b.inverted&&!this.isZAxis&&n&&"undefined"===typeof this.reversed&&
|
|
(this.reversed=!0);this.labelRotation=e(a.rotation)?a.rotation:void 0;k(this,d);h(this,"afterInit")}setOptions(b){this.options=c(z.defaultXAxisOptions,"yAxis"===this.coll&&z.defaultYAxisOptions,[z.defaultTopAxisOptions,z.defaultRightAxisOptions,z.defaultBottomAxisOptions,z.defaultLeftAxisOptions][this.side],c(r[this.coll],b));h(this,"afterSetOptions",{userOptions:b})}defaultLabelFormatter(b){var c=this.axis;({numberFormatter:b}=this.chart);const d=e(this.value)?this.value:NaN,n=c.chart.time,h=this.dateTimeLabelFormat;
|
|
var a=r.lang;const f=a.numericSymbols;a=a.numericSymbolMagnitude||1E3;const G=c.logarithmic?Math.abs(d):c.tickInterval;let q=f&&f.length,g;if(c.categories)g=`${this.value}`;else if(h)g=n.dateFormat(h,d);else if(q&&1E3<=G)for(;q--&&"undefined"===typeof g;)c=Math.pow(a,q+1),G>=c&&0===10*d%c&&null!==f[q]&&0!==d&&(g=b(d/c,-1)+f[q]);"undefined"===typeof g&&(g=1E4<=Math.abs(d)?b(d,-1):b(d,-1,void 0,""));return g}getSeriesExtremes(){const b=this,c=b.chart;let d;h(this,"getSeriesExtremes",null,function(){b.hasVisibleSeries=
|
|
!1;b.dataMin=b.dataMax=b.threshold=null;b.softThreshold=!b.isXAxis;b.series.forEach(function(n){if(n.visible||!c.options.chart.ignoreHiddenSeries){var h=n.options;let c=h.threshold,a,f;b.hasVisibleSeries=!0;b.positiveValuesOnly&&0>=c&&(c=null);if(b.isXAxis)(h=n.xData)&&h.length&&(h=b.logarithmic?h.filter(b=>0<b):h,d=n.getXExtremes(h),a=d.min,f=d.max,e(a)||a instanceof Date||(h=h.filter(e),d=n.getXExtremes(h),a=d.min,f=d.max),h.length&&(b.dataMin=Math.min(F(b.dataMin,a),a),b.dataMax=Math.max(F(b.dataMax,
|
|
f),f)));else if(n=n.applyExtremes(),e(n.dataMin)&&(a=n.dataMin,b.dataMin=Math.min(F(b.dataMin,a),a)),e(n.dataMax)&&(f=n.dataMax,b.dataMax=Math.max(F(b.dataMax,f),f)),g(c)&&(b.threshold=c),!h.softThreshold||b.positiveValuesOnly)b.softThreshold=!1}})});h(this,"afterGetSeriesExtremes")}translate(b,c,d,n,h,a){const q=this.linkedParent||this,g=n&&q.old?q.old.min:q.min;if(!e(g))return NaN;const G=q.minPixelPadding;h=(q.isOrdinal||q.brokenAxis&&q.brokenAxis.hasBreaks||q.logarithmic&&h)&&q.lin2val;let u=
|
|
1,l=0;n=n&&q.old?q.old.transA:q.transA;n||(n=q.transA);d&&(u*=-1,l=q.len);q.reversed&&(u*=-1,l-=u*(q.sector||q.len));c?(a=(b*u+l-G)/n+g,h&&(a=q.lin2val(a))):(h&&(b=q.val2lin(b)),b=u*(b-g)*n,a=(q.isRadial?b:f(b))+l+u*G+(e(a)?n*a:0));return a}toPixels(b,c){return this.translate(b,!1,!this.horiz,void 0,!0)+(c?0:this.pos)}toValue(b,c){return this.translate(b-(c?0:this.pos),!0,!this.horiz,void 0,!0)}getPlotLinePath(b){function c(b,c,e){"pass"!==m&&(b<c||b>e)&&(m?b=l(b,c,e):r=!0);return b}const d=this,
|
|
n=d.chart,a=d.left,f=d.top,q=b.old,g=b.value,G=b.lineWidth,u=q&&n.oldChartHeight||n.chartHeight,J=q&&n.oldChartWidth||n.chartWidth,v=d.transB;let k=b.translatedValue,m=b.force,p,L,x,w,r;b={value:g,lineWidth:G,old:q,force:m,acrossPanes:b.acrossPanes,translatedValue:k};h(this,"getPlotLinePath",b,function(b){k=F(k,d.translate(g,void 0,void 0,q));k=l(k,-1E5,1E5);p=x=Math.round(k+v);L=w=Math.round(u-k-v);e(k)?d.horiz?(L=f,w=u-d.bottom,p=x=c(p,a,a+d.width)):(p=a,x=J-d.right,L=w=c(L,f,f+d.height)):(r=!0,
|
|
m=!1);b.path=r&&!m?null:n.renderer.crispLine([["M",p,L],["L",x,w]],G||1)});return b.path}getLinearTickPositions(b,c,e){const d=f(Math.floor(c/b)*b);e=f(Math.ceil(e/b)*b);const n=[];let h,a;f(d+b)===d&&(a=20);if(this.single)return[c];for(c=d;c<=e;){n.push(c);c=f(c+b,a);if(c===h)break;h=c}return n}getMinorTickInterval(){const b=this.options;return!0===b.minorTicks?F(b.minorTickInterval,"auto"):!1===b.minorTicks?null:b.minorTickInterval}getMinorTickPositions(){var b=this.options;const c=this.tickPositions,
|
|
e=this.minorTickInterval;var d=this.pointRangePadding||0;const n=this.min-d;d=this.max+d;const h=d-n;let a=[];if(h&&h/e<this.len/3){const h=this.logarithmic;if(h)this.paddedTicks.forEach(function(b,c,d){c&&a.push.apply(a,h.getLogTickPositions(e,d[c-1],d[c],!0))});else if(this.dateTime&&"auto"===this.getMinorTickInterval())a=a.concat(this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(e),n,d,b.startOfWeek));else for(b=n+(c[0]-n)%e;b<=d&&b!==a[0];b+=e)a.push(b)}0!==a.length&&this.trimTicks(a);
|
|
return a}adjustForMinRange(){const b=this.options,c=this.logarithmic;let e=this.min;var d=this.max;let n,h;if(this.isXAxis&&"undefined"===typeof this.minRange&&!c)if(g(b.min)||g(b.max)||g(b.floor)||g(b.ceiling))this.minRange=null;else{var a=v(this.series.map(b=>{var c;return(b.xIncrement?null===(c=b.xData)||void 0===c?void 0:c.slice(0,2):b.xData)||[]}))||0;this.minRange=Math.min(5*a,this.dataMax-this.dataMin)}d-e<this.minRange&&(a=this.dataMax-this.dataMin>=this.minRange,h=this.minRange,d=(h-d+e)/
|
|
2,n=[e-d,F(b.min,e-d)],a&&(n[2]=c?c.log2lin(this.dataMin):this.dataMin),e=x(n),d=[e+h,F(b.max,e+h)],a&&(d[2]=c?c.log2lin(this.dataMax):this.dataMax),d=m(d),d-e<h&&(n[0]=d-h,n[1]=F(b.min,d-h),e=x(n)));this.min=e;this.max=d}getClosest(){let b,c;if(this.categories)c=1;else{const e=[];this.series.forEach(function(b){var d;const n=b.closestPointRange,h=b.visible||!b.chart.options.chart.ignoreHiddenSeries;1===(null===(d=b.xData)||void 0===d?void 0:d.length)?e.push(b.xData[0]):!b.noSharedTooltip&&g(n)&&
|
|
h&&(c=g(c)?Math.min(c,n):n)});e.length&&(e.sort((b,c)=>b-c),b=v([e]))}return b&&c?Math.min(b,c):b||c}nameToX(b){const c=u(this.options.categories),e=c?this.categories:this.names;let d=b.options.x,n;b.series.requireSorting=!1;g(d)||(d=this.options.uniqueNames&&e?c?e.indexOf(b.name):F(e.keys[b.name],-1):b.series.autoIncrement());-1===d?!c&&e&&(n=e.length):n=d;"undefined"!==typeof n?(this.names[n]=b.name,this.names.keys[b.name]=n):b.x&&(n=b.x);return n}updateNames(){const b=this,c=this.names;0<c.length&&
|
|
(Object.keys(c.keys).forEach(function(b){delete c.keys[b]}),c.length=0,this.minRange=this.userMinRange,(this.series||[]).forEach(function(c){c.xIncrement=null;if(!c.points||c.isDirtyData)b.max=Math.max(b.max,c.xData.length-1),c.processData(),c.generatePoints();c.data.forEach(function(e,d){let n;e&&e.options&&"undefined"!==typeof e.name&&(n=b.nameToX(e),"undefined"!==typeof n&&n!==e.x&&(e.x=n,c.xData[d]=n))})}))}setAxisTranslation(){const c=this,e=c.max-c.min;var d=c.linkedParent;const n=!!c.categories,
|
|
a=c.isXAxis;let f=c.axisPointRange||0,q,g=0,u=0,l=c.transA;if(a||n||f)q=c.getClosest(),d?(g=d.minPointOffset,u=d.pointRangePadding):c.series.forEach(function(e){const d=n?1:a?F(e.options.pointRange,q,0):c.axisPointRange||0,h=e.options.pointPlacement;f=Math.max(f,d);if(!c.single||n)e=e.is("xrange")?!a:a,g=Math.max(g,e&&b(h)?0:d/2),u=Math.max(u,e&&"on"===h?0:d)}),d=c.ordinal&&c.ordinal.slope&&q?c.ordinal.slope/q:1,c.minPointOffset=g*=d,c.pointRangePadding=u*=d,c.pointRange=Math.min(f,c.single&&n?1:
|
|
e),a&&q&&(c.closestPointRange=q);c.translationSlope=c.transA=l=c.staticScale||c.len/(e+u||1);c.transB=c.horiz?c.left:c.bottom;c.minPixelPadding=l*g;h(this,"afterSetAxisTranslation")}minFromRange(){return this.max-this.range}setTickInterval(b){var c=this.chart;const d=this.logarithmic,n=this.options,a=this.isXAxis,q=this.isLinked,u=n.tickPixelInterval,l=this.categories,J=this.softThreshold;let G=n.maxPadding,v=n.minPadding;let k=e(n.tickInterval)&&0<=n.tickInterval?n.tickInterval:void 0,m=e(this.threshold)?
|
|
this.threshold:null,p,L,x;this.dateTime||l||q||this.getTickAmount();L=F(this.userMin,n.min);x=F(this.userMax,n.max);if(q){this.linkedParent=c[this.coll][n.linkedTo];var w=this.linkedParent.getExtremes();this.min=F(w.min,w.dataMin);this.max=F(w.max,w.dataMax);n.type!==this.linkedParent.options.type&&D(11,1,c)}else J&&g(m)&&(this.dataMin>=m?(w=m,v=0):this.dataMax<=m&&(p=m,G=0)),this.min=F(L,w,this.dataMin),this.max=F(x,p,this.dataMax);d&&(this.positiveValuesOnly&&!b&&0>=Math.min(this.min,F(this.dataMin,
|
|
this.min))&&D(10,1,c),this.min=f(d.log2lin(this.min),16),this.max=f(d.log2lin(this.max),16));this.range&&g(this.max)&&(this.userMin=this.min=L=Math.max(this.dataMin,this.minFromRange()),this.userMax=x=this.max,this.range=null);h(this,"foundExtremes");this.beforePadding&&this.beforePadding();this.adjustForMinRange();!e(this.userMin)&&e(n.softMin)&&n.softMin<this.min&&(this.min=L=n.softMin);!e(this.userMax)&&e(n.softMax)&&n.softMax>this.max&&(this.max=x=n.softMax);!(l||this.axisPointRange||this.stacking&&
|
|
this.stacking.usePercentage||q)&&g(this.min)&&g(this.max)&&(c=this.max-this.min)&&(!g(L)&&v&&(this.min-=c*v),!g(x)&&G&&(this.max+=c*G));!e(this.userMin)&&e(n.floor)&&(this.min=Math.max(this.min,n.floor));!e(this.userMax)&&e(n.ceiling)&&(this.max=Math.min(this.max,n.ceiling));J&&g(this.dataMin)&&(m=m||0,!g(L)&&this.min<m&&this.dataMin>=m?this.min=this.options.minRange?Math.min(m,this.max-this.minRange):m:!g(x)&&this.max>m&&this.dataMax<=m&&(this.max=this.options.minRange?Math.max(m,this.min+this.minRange):
|
|
m));e(this.min)&&e(this.max)&&!this.chart.polar&&this.min>this.max&&(g(this.options.min)?this.max=this.min:g(this.options.max)&&(this.min=this.max));this.tickInterval=this.min===this.max||"undefined"===typeof this.min||"undefined"===typeof this.max?1:q&&this.linkedParent&&!k&&u===this.linkedParent.options.tickPixelInterval?k=this.linkedParent.tickInterval:F(k,this.tickAmount?(this.max-this.min)/Math.max(this.tickAmount-1,1):void 0,l?1:(this.max-this.min)*u/Math.max(this.len,u));if(a&&!b){const b=
|
|
this.min!==(this.old&&this.old.min)||this.max!==(this.old&&this.old.max);this.series.forEach(function(c){c.forceCrop=c.forceCropping&&c.forceCropping();c.processData(b)});h(this,"postProcessData",{hasExtremesChanged:b})}this.setAxisTranslation();h(this,"initialAxisTranslation");this.pointRange&&!k&&(this.tickInterval=Math.max(this.pointRange,this.tickInterval));b=F(n.minTickInterval,this.dateTime&&!this.series.some(b=>b.noSharedTooltip)?this.closestPointRange:0);!k&&this.tickInterval<b&&(this.tickInterval=
|
|
b);this.dateTime||this.logarithmic||k||(this.tickInterval=Q(this,this.tickInterval));this.tickAmount||(this.tickInterval=this.unsquish());this.setTickPositions()}setTickPositions(){var b=this.options;const c=b.tickPositions,d=b.tickPositioner;var n=this.getMinorTickInterval(),a=this.hasVerticalPanning(),f="colorAxis"===this.coll;const q=(f||!a)&&b.startOnTick;a=(f||!a)&&b.endOnTick;f=[];let u;this.tickmarkOffset=this.categories&&"between"===b.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval=
|
|
"auto"===n&&this.tickInterval?this.tickInterval/b.minorTicksPerMajor:n;this.single=this.min===this.max&&g(this.min)&&!this.tickAmount&&(parseInt(this.min,10)===this.min||!1!==b.allowDecimals);if(c)f=c.slice();else if(e(this.min)&&e(this.max)){if(this.ordinal&&this.ordinal.positions||!((this.max-this.min)/this.tickInterval>Math.max(2*this.len,200)))if(this.dateTime)f=this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,b.units),this.min,this.max,b.startOfWeek,this.ordinal&&this.ordinal.positions,
|
|
this.closestPointRange,!0);else if(this.logarithmic)f=this.logarithmic.getLogTickPositions(this.tickInterval,this.min,this.max);else for(n=b=this.tickInterval;n<=2*b;)if(f=this.getLinearTickPositions(this.tickInterval,this.min,this.max),this.tickAmount&&f.length>this.tickAmount)this.tickInterval=Q(this,n*=1.1);else break;else f=[this.min,this.max],D(19,!1,this.chart);f.length>this.len&&(f=[f[0],f[f.length-1]],f[0]===f[1]&&(f.length=1));d&&(this.tickPositions=f,(u=d.apply(this,[this.min,this.max]))&&
|
|
(f=u))}this.tickPositions=f;this.paddedTicks=f.slice(0);this.trimTicks(f,q,a);!this.isLinked&&e(this.min)&&e(this.max)&&(this.single&&2>f.length&&!this.categories&&!this.series.some(b=>b.is("heatmap")&&"between"===b.options.pointPlacement)&&(this.min-=.5,this.max+=.5),c||u||this.adjustTickAmount());h(this,"afterSetTickPositions")}trimTicks(b,c,e){const d=b[0],n=b[b.length-1],a=!this.isOrdinal&&this.minPointOffset||0;h(this,"trimTicks");if(!this.isLinked){if(c&&-Infinity!==d)this.min=d;else for(;this.min-
|
|
a>b[0];)b.shift();if(e)this.max=n;else for(;this.max+a<b[b.length-1];)b.pop();0===b.length&&g(d)&&!this.options.tickPositions&&b.push((n+d)/2)}}alignToOthers(){const b=this,c=[this],d=b.options,n="yAxis"===this.coll&&this.chart.options.chart.alignThresholds,h=[];let a;b.thresholdAlignment=void 0;if((!1!==this.chart.options.chart.alignTicks&&d.alignTicks||n)&&!1!==d.startOnTick&&!1!==d.endOnTick&&!b.logarithmic){const e=b=>{const {horiz:c,options:e}=b;return[c?e.left:e.top,e.width,e.height,e.pane].join()},
|
|
d=e(this);this.chart[this.coll].forEach(function(n){const {series:h}=n;h.length&&h.some(b=>b.visible)&&n!==b&&e(n)===d&&(a=!0,c.push(n))})}if(a&&n){c.forEach(c=>{c=c.getThresholdAlignment(b);e(c)&&h.push(c)});const d=1<h.length?h.reduce((b,c)=>b+c,0)/h.length:void 0;c.forEach(b=>{b.thresholdAlignment=d})}return a}getThresholdAlignment(b){(!e(this.dataMin)||this!==b&&this.series.some(b=>b.isDirty||b.isDirtyData))&&this.getSeriesExtremes();if(e(this.threshold))return b=l((this.threshold-(this.dataMin||
|
|
0))/((this.dataMax||0)-(this.dataMin||0)),0,1),this.options.reversed&&(b=1-b),b}getTickAmount(){const b=this.options,c=b.tickPixelInterval;let e=b.tickAmount;!g(b.tickInterval)&&!e&&this.len<c&&!this.isRadial&&!this.logarithmic&&b.startOnTick&&b.endOnTick&&(e=2);!e&&this.alignToOthers()&&(e=Math.ceil(this.len/c)+1);4>e&&(this.finalTickAmt=e,e=5);this.tickAmount=e}adjustTickAmount(){const b=this,{finalTickAmt:c,max:d,min:n,options:h,tickPositions:a,tickAmount:q,thresholdAlignment:u}=b,l=a&&a.length;
|
|
var J=F(b.threshold,b.softThreshold?0:null);var v=b.tickInterval;let k;e(u)&&(k=.5>u?Math.ceil(u*(q-1)):Math.floor(u*(q-1)),h.reversed&&(k=q-1-k));if(b.hasData()&&e(n)&&e(d)){const u=()=>{b.transA*=(l-1)/(q-1);b.min=h.startOnTick?a[0]:Math.min(n,a[0]);b.max=h.endOnTick?a[a.length-1]:Math.max(d,a[a.length-1])};if(e(k)&&e(b.threshold)){for(;a[k]!==J||a.length!==q||a[0]>n||a[a.length-1]<d;){a.length=0;for(a.push(b.threshold);a.length<q;)void 0===a[k]||a[k]>b.threshold?a.unshift(f(a[0]-v)):a.push(f(a[a.length-
|
|
1]+v));if(v>8*b.tickInterval)break;v*=2}u()}else if(l<q){for(;a.length<q;)a.length%2||n===J?a.push(f(a[a.length-1]+v)):a.unshift(f(a[0]-v));u()}if(g(c)){for(v=J=a.length;v--;)(3===c&&1===v%2||2>=c&&0<v&&v<J-1)&&a.splice(v,1);b.finalTickAmt=void 0}}}setScale(){let b=!1,c=!1;this.series.forEach(function(e){b=b||e.isDirtyData||e.isDirty;c=c||e.xAxis&&e.xAxis.isDirty||!1});this.setAxisSize();const e=this.len!==(this.old&&this.old.len);e||b||c||this.isLinked||this.forceRedraw||this.userMin!==(this.old&&
|
|
this.old.userMin)||this.userMax!==(this.old&&this.old.userMax)||this.alignToOthers()?(this.stacking&&(this.stacking.resetStacks(),this.stacking.buildStacks()),this.forceRedraw=!1,this.userMinRange||(this.minRange=void 0),this.getSeriesExtremes(),this.setTickInterval(),this.isDirty||(this.isDirty=e||this.min!==(this.old&&this.old.min)||this.max!==(this.old&&this.old.max))):this.stacking&&this.stacking.cleanStacks();b&&this.panningState&&(this.panningState.isDirty=!0);h(this,"afterSetScale")}setExtremes(b,
|
|
c,e,n,a){const f=this,q=f.chart;e=F(e,!0);f.series.forEach(function(b){delete b.kdTree});a=d(a,{min:b,max:c});h(f,"setExtremes",a,function(){f.userMin=b;f.userMax=c;f.eventArgs=a;e&&q.redraw(n)})}zoom(b,c){const e=this,d=this.dataMin,n=this.dataMax,a=this.options,f=Math.min(d,F(a.min,d)),q=Math.max(n,F(a.max,n));b={newMin:b,newMax:c};h(this,"zoom",b,function(b){let c=b.newMin,a=b.newMax;if(c!==e.min||a!==e.max)e.allowZoomOutside||(g(d)&&(c<f&&(c=f),c>q&&(c=q)),g(n)&&(a<f&&(a=f),a>q&&(a=q))),e.displayBtn=
|
|
"undefined"!==typeof c||"undefined"!==typeof a,e.setExtremes(c,a,!1,void 0,{trigger:"zoom"});b.zoomed=!0});return b.zoomed}setAxisSize(){const b=this.chart;var c=this.options;const e=c.offsets||[0,0,0,0],d=this.horiz,n=this.width=Math.round(L(F(c.width,b.plotWidth-e[3]+e[1]),b.plotWidth)),a=this.height=Math.round(L(F(c.height,b.plotHeight-e[0]+e[2]),b.plotHeight)),h=this.top=Math.round(L(F(c.top,b.plotTop+e[0]),b.plotHeight,b.plotTop));c=this.left=Math.round(L(F(c.left,b.plotLeft+e[3]),b.plotWidth,
|
|
b.plotLeft));this.bottom=b.chartHeight-a-h;this.right=b.chartWidth-n-c;this.len=Math.max(d?n:a,0);this.pos=d?c:h}getExtremes(){const b=this.logarithmic;return{min:b?f(b.lin2log(this.min)):this.min,max:b?f(b.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}}getThreshold(b){var c=this.logarithmic;const e=c?c.lin2log(this.min):this.min;c=c?c.lin2log(this.max):this.max;null===b||-Infinity===b?b=e:Infinity===b?b=c:e>b?b=e:c<b&&(b=c);return this.translate(b,
|
|
0,1,0,1)}autoLabelAlign(b){const c=(F(b,0)-90*this.side+720)%360;b={align:"center"};h(this,"autoLabelAlign",b,function(b){15<c&&165>c?b.align="right":195<c&&345>c&&(b.align="left")});return b.align}tickSize(b){const c=this.options,e=F(c["tick"===b?"tickWidth":"minorTickWidth"],"tick"===b&&this.isXAxis&&!this.categories?1:0);let d=c["tick"===b?"tickLength":"minorTickLength"],n;e&&d&&("inside"===c[b+"Position"]&&(d=-d),n=[d,e]);b={tickSize:n};h(this,"afterTickSize",b);return b.tickSize}labelMetrics(){const b=
|
|
this.chart.renderer;var c=this.ticks;c=c[Object.keys(c)[0]]||{};return this.chart.renderer.fontMetrics(c.label||c.movedLabel||b.box)}unsquish(){const b=this.options.labels;var c=this.horiz;const d=this.tickInterval,n=this.len/(((this.categories?1:0)+this.max-this.min)/d),a=b.rotation,h=.75*this.labelMetrics().h,q=Math.max(this.max-this.min,0),g=function(b){let c=b/(n||1);c=1<c?Math.ceil(c):1;c*d>q&&Infinity!==b&&Infinity!==n&&q&&(c=Math.ceil(q/d));return f(c*d)};let u=d,l,J=Number.MAX_VALUE,v;if(c){if(b.staggerLines||
|
|
(e(a)?v=[a]:n<b.autoRotationLimit&&(v=b.autoRotation)),v){let b;for(const e of v)if(e===a||e&&-90<=e&&90>=e)c=g(Math.abs(h/Math.sin(p*e))),b=c+Math.abs(e/360),b<J&&(J=b,l=e,u=c)}}else u=g(h);this.autoRotation=v;this.labelRotation=F(l,e(a)?a:0);return b.step?d:u}getSlotWidth(b){const c=this.chart,d=this.horiz,n=this.options.labels,a=Math.max(this.tickPositions.length-(this.categories?0:1),1),h=c.margin[3];if(b&&e(b.slotWidth))return b.slotWidth;if(d&&2>n.step)return n.rotation?0:(this.staggerLines||
|
|
1)*this.len/a;if(!d){b=n.style.width;if(void 0!==b)return parseInt(String(b),10);if(h)return h-c.spacing[3]}return.33*c.chartWidth}renderUnsquish(){const c=this.chart,e=c.renderer,d=this.tickPositions,n=this.ticks,a=this.options.labels,h=a.style,f=this.horiz,q=this.getSlotWidth();var g=Math.max(1,Math.round(q-2*a.padding));const u={},l=this.labelMetrics(),J=h.textOverflow;let v,k,m=0;b(a.rotation)||(u.rotation=a.rotation||0);d.forEach(function(b){b=n[b];b.movedLabel&&b.replaceMovedLabel();b&&b.label&&
|
|
b.label.textPxLength>m&&(m=b.label.textPxLength)});this.maxLabelLength=m;if(this.autoRotation)m>g&&m>l.h?u.rotation=this.labelRotation:this.labelRotation=0;else if(q&&(v=g,!J))for(k="clip",g=d.length;!f&&g--;){var F=d[g];if(F=n[F].label)F.styles&&"ellipsis"===F.styles.textOverflow?F.css({textOverflow:"clip"}):F.textPxLength>q&&F.css({width:q+"px"}),F.getBBox().height>this.len/d.length-(l.h-l.f)&&(F.specificTextOverflow="ellipsis")}u.rotation&&(v=m>.5*c.chartHeight?.33*c.chartHeight:m,J||(k="ellipsis"));
|
|
if(this.labelAlign=a.align||this.autoLabelAlign(this.labelRotation))u.align=this.labelAlign;d.forEach(function(b){const c=(b=n[b])&&b.label,e=h.width,d={};c&&(c.attr(u),b.shortenLabel?b.shortenLabel():v&&!e&&"nowrap"!==h.whiteSpace&&(v<c.textPxLength||"SPAN"===c.element.tagName)?(d.width=v+"px",J||(d.textOverflow=c.specificTextOverflow||k),c.css(d)):c.styles&&c.styles.width&&!d.width&&!e&&c.css({width:null}),delete c.specificTextOverflow,b.rotation=u.rotation)},this);this.tickRotCorr=e.rotCorr(l.b,
|
|
this.labelRotation||0,0!==this.side)}hasData(){return this.series.some(function(b){return b.hasData()})||this.options.showEmpty&&g(this.min)&&g(this.max)}addTitle(b){const e=this.chart.renderer,d=this.horiz,n=this.opposite,a=this.options.title,h=this.chart.styledMode;let f;this.axisTitle||((f=a.textAlign)||(f=(d?{low:"left",middle:"center",high:"right"}:{low:n?"right":"left",middle:"center",high:n?"left":"right"})[a.align]),this.axisTitle=e.text(a.text||"",0,0,a.useHTML).attr({zIndex:7,rotation:a.rotation,
|
|
align:f}).addClass("highcharts-axis-title"),h||this.axisTitle.css(c(a.style)),this.axisTitle.add(this.axisGroup),this.axisTitle.isNew=!0);h||a.style.width||this.isRadial||this.axisTitle.css({width:this.len+"px"});this.axisTitle[b?"show":"hide"](b)}generateTick(b){const c=this.ticks;c[b]?c[b].addLabel():c[b]=new E(this,b)}getOffset(){const b=this,{chart:c,horiz:d,options:n,side:a,ticks:f,tickPositions:q,coll:u,axisParent:l}=b,v=c.renderer,k=c.inverted&&!b.isZAxis?[1,0,3,2][a]:a;var m=b.hasData();const p=
|
|
n.title;var L=n.labels;const x=e(n.crossing);var w=c.axisOffset;const r=c.clipOffset,O=[-1,1,1,-1][a],S=n.className;let t,I=0,V;var Q=0;let D=0;b.showAxis=t=m||n.showEmpty;b.staggerLines=b.horiz&&L.staggerLines||void 0;if(!b.axisGroup){const c=(b,c,e)=>v.g(b).attr({zIndex:e}).addClass(`highcharts-${u.toLowerCase()}${c} `+(this.isRadial?`highcharts-radial-axis${c} `:"")+(S||"")).add(l);b.gridGroup=c("grid","-grid",n.gridZIndex);b.axisGroup=c("axis","",n.zIndex);b.labelGroup=c("axis-labels","-labels",
|
|
L.zIndex)}m||b.isLinked?(q.forEach(function(c){b.generateTick(c)}),b.renderUnsquish(),b.reserveSpaceDefault=0===a||2===a||{1:"left",3:"right"}[a]===b.labelAlign,F(L.reserveSpace,x?!1:null,"center"===b.labelAlign?!0:null,b.reserveSpaceDefault)&&q.forEach(function(b){D=Math.max(f[b].getLabelSize(),D)}),b.staggerLines&&(D*=b.staggerLines),b.labelOffset=D*(b.opposite?-1:1)):J(f,function(b,c){b.destroy();delete f[c]});p&&p.text&&!1!==p.enabled&&(b.addTitle(t),t&&!x&&!1!==p.reserveSpace&&(b.titleOffset=
|
|
I=b.axisTitle.getBBox()[d?"height":"width"],V=p.offset,Q=g(V)?0:F(p.margin,d?5:10)));b.renderLine();b.offset=O*F(n.offset,w[a]?w[a]+(n.margin||0):0);b.tickRotCorr=b.tickRotCorr||{x:0,y:0};m=0===a?-b.labelMetrics().h:2===a?b.tickRotCorr.y:0;Q=Math.abs(D)+Q;D&&(Q=Q-m+O*(d?F(L.y,b.tickRotCorr.y+O*L.distance):F(L.x,O*L.distance)));b.axisTitleMargin=F(V,Q);b.getMaxLabelDimensions&&(b.maxLabelDimensions=b.getMaxLabelDimensions(f,q));"colorAxis"!==u&&(L=this.tickSize("tick"),w[a]=Math.max(w[a],(b.axisTitleMargin||
|
|
0)+I+O*b.offset,Q,q&&q.length&&L?L[0]+O*b.offset:0),w=!b.axisLine||n.offset?0:2*Math.floor(b.axisLine.strokeWidth()/2),r[k]=Math.max(r[k],w));h(this,"afterGetOffset")}getLinePath(b){const c=this.chart,e=this.opposite;var d=this.offset;const n=this.horiz,a=this.left+(e?this.width:0)+d;d=c.chartHeight-this.bottom-(e?this.height:0)+d;e&&(b*=-1);return c.renderer.crispLine([["M",n?this.left:a,n?d:this.top],["L",n?c.chartWidth-this.right:a,n?d:c.chartHeight-this.bottom]],b)}renderLine(){this.axisLine||
|
|
(this.axisLine=this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup),this.chart.styledMode||this.axisLine.attr({stroke:this.options.lineColor,"stroke-width":this.options.lineWidth,zIndex:7}))}getTitlePosition(b){var c=this.horiz,e=this.left;const d=this.top;var n=this.len;const a=this.options.title,f=c?e:d,q=this.opposite,g=this.offset,u=a.x,l=a.y,J=this.chart.renderer.fontMetrics(b);b=b?Math.max(b.getBBox(!1,0).height-J.h-1,0):0;n={low:f+(c?0:n),middle:f+n/2,high:f+(c?n:
|
|
0)}[a.align];e=(c?d+this.height:e)+(c?1:-1)*(q?-1:1)*(this.axisTitleMargin||0)+[-b,b,J.f,-b][this.side];c={x:c?n+u:e+(q?this.width:0)+g+u,y:c?e+l-(q?this.height:0)+g:n+l};h(this,"afterGetTitlePosition",{titlePosition:c});return c}renderMinorTick(b,c){const e=this.minorTicks;e[b]||(e[b]=new E(this,b,"minor"));c&&e[b].isNew&&e[b].render(null,!0);e[b].render(null,!1,1)}renderTick(b,c,e){const d=this.ticks;if(!this.isLinked||b>=this.min&&b<=this.max||this.grid&&this.grid.isColumn)d[b]||(d[b]=new E(this,
|
|
b)),e&&d[b].isNew&&d[b].render(c,!0,-1),d[b].render(c)}render(){const b=this,c=b.chart,d=b.logarithmic,n=b.options,a=b.isLinked,f=b.tickPositions,q=b.axisTitle,g=b.ticks,u=b.minorTicks,l=b.alternateBands,v=n.stackLabels,k=n.alternateGridColor;var m=n.crossing;const F=b.tickmarkOffset,p=b.axisLine,L=b.showAxis,x=t(c.renderer.globalAnimation);let w,r;b.labelEdge.length=0;b.overlap=!1;[g,u,l].forEach(function(b){J(b,function(b){b.isActive=!1})});if(e(m)){const e=this.isXAxis?c.yAxis[0]:c.xAxis[0],d=
|
|
[1,-1,-1,1][this.side];e&&(m=e.toPixels(m,!0),b.horiz&&(m=e.len-m),b.offset=d*m)}if(b.hasData()||a){const a=b.chart.hasRendered&&b.old&&e(b.old.min);b.minorTickInterval&&!b.categories&&b.getMinorTickPositions().forEach(function(c){b.renderMinorTick(c,a)});f.length&&(f.forEach(function(c,e){b.renderTick(c,e,a)}),F&&(0===b.min||b.single)&&(g[-1]||(g[-1]=new E(b,-1,null,!0)),g[-1].render(-1)));k&&f.forEach(function(e,n){r="undefined"!==typeof f[n+1]?f[n+1]+F:b.max-F;0===n%2&&e<b.max&&r<=b.max+(c.polar?
|
|
-F:F)&&(l[e]||(l[e]=new C.PlotLineOrBand(b)),w=e+F,l[e].options={from:d?d.lin2log(w):w,to:d?d.lin2log(r):r,color:k,className:"highcharts-alternate-grid"},l[e].render(),l[e].isActive=!0)});b._addedPlotLB||(b._addedPlotLB=!0,(n.plotLines||[]).concat(n.plotBands||[]).forEach(function(c){b.addPlotBandOrLine(c)}))}[g,u,l].forEach(function(b){const e=[],d=x.duration;J(b,function(b,c){b.isActive||(b.render(c,!1,0),b.isActive=!1,e.push(c))});O(function(){let c=e.length;for(;c--;)b[e[c]]&&!b[e[c]].isActive&&
|
|
(b[e[c]].destroy(),delete b[e[c]])},b!==l&&c.hasRendered&&d?d:0)});p&&(p[p.isPlaced?"animate":"attr"]({d:this.getLinePath(p.strokeWidth())}),p.isPlaced=!0,p[L?"show":"hide"](L));q&&L&&(q[q.isNew?"attr":"animate"](b.getTitlePosition(q)),q.isNew=!1);v&&v.enabled&&b.stacking&&b.stacking.renderStackTotals();b.old={len:b.len,max:b.max,min:b.min,transA:b.transA,userMax:b.userMax,userMin:b.userMin};b.isDirty=!1;h(this,"afterRender")}redraw(){this.visible&&(this.render(),this.plotLinesAndBands.forEach(function(b){b.render()}));
|
|
this.series.forEach(function(b){b.isDirty=!0})}getKeepProps(){return this.keepProps||V.keepProps}destroy(b){const c=this,e=c.plotLinesAndBands,d=this.eventOptions;h(this,"destroy",{keepEvents:b});b||S(c);[c.ticks,c.minorTicks,c.alternateBands].forEach(function(b){w(b)});if(e)for(b=e.length;b--;)e[b].destroy();"axisLine axisTitle axisGroup gridGroup labelGroup cross scrollbar".split(" ").forEach(function(b){c[b]&&(c[b]=c[b].destroy())});for(const b in c.plotLinesAndBandsGroups)c.plotLinesAndBandsGroups[b]=
|
|
c.plotLinesAndBandsGroups[b].destroy();J(c,function(b,e){-1===c.getKeepProps().indexOf(e)&&delete c[e]});this.eventOptions=d}drawCrosshair(b,c){const e=this.crosshair;var n=F(e&&e.snap,!0);const a=this.chart;let f,q=this.cross;h(this,"drawCrosshair",{e:b,point:c});b||(b=this.cross&&this.cross.e);if(e&&!1!==(g(c)||!n)){n?g(c)&&(f=F("colorAxis"!==this.coll?c.crosshairPos:null,this.isXAxis?c.plotX:this.len-c.plotY)):f=b&&(this.horiz?b.chartX-this.pos:this.len-b.chartY+this.pos);if(g(f)){var u={value:c&&
|
|
(this.isXAxis?c.x:F(c.stackY,c.y)),translatedValue:f};a.polar&&d(u,{isCrosshair:!0,chartX:b&&b.chartX,chartY:b&&b.chartY,point:c});u=this.getPlotLinePath(u)||null}if(!g(u)){this.hideCrosshair();return}n=this.categories&&!this.isRadial;q||(this.cross=q=a.renderer.path().addClass("highcharts-crosshair highcharts-crosshair-"+(n?"category ":"thin ")+(e.className||"")).attr({zIndex:F(e.zIndex,2)}).add(),a.styledMode||(q.attr({stroke:e.color||(n?H.parse("#ccd3ff").setOpacity(.25).get():"#cccccc"),"stroke-width":F(e.width,
|
|
1)}).css({"pointer-events":"none"}),e.dashStyle&&q.attr({dashstyle:e.dashStyle})));q.show().attr({d:u});n&&!e.width&&q.attr({"stroke-width":this.transA});this.cross.e=b}else this.hideCrosshair();h(this,"afterDrawCrosshair",{e:b,point:c})}hideCrosshair(){this.cross&&this.cross.hide();h(this,"afterHideCrosshair")}hasVerticalPanning(){const b=this.chart.options.chart.panning;return!!(b&&b.enabled&&/y/.test(b.type))}update(b,e){const d=this.chart;b=c(this.userOptions,b);this.destroy(!0);this.init(d,b);
|
|
d.isDirtyBox=!0;F(e,!0)&&d.redraw()}remove(b){const c=this.chart,e=this.coll,d=this.series;let n=d.length;for(;n--;)d[n]&&d[n].remove(!1);I(c.axes,this);I(c[e]||[],this);c.orderItems(e);this.destroy();c.isDirtyBox=!0;F(b,!0)&&c.redraw()}setTitle(b,c){this.update({title:b},c)}setCategories(b,c){this.update({categories:b},c)}}V.defaultOptions=z.defaultXAxisOptions;V.keepProps="coll extKey hcEvents names series userMax userMin".split(" ");"";return V});M(a,"Core/Axis/DateTimeAxis.js",[a["Core/Utilities.js"]],
|
|
function(a){const {addEvent:y,getMagnitude:H,normalizeTickInterval:K,timeUnits:A}=a;var C;(function(E){function B(){return this.chart.time.getTimeTicks.apply(this.chart.time,arguments)}function t(a){"datetime"!==a.userOptions.type?this.dateTime=void 0:this.dateTime||(this.dateTime=new k(this))}const r=[];E.compose=function(k){a.pushUnique(r,k)&&(k.keepProps.push("dateTime"),k.prototype.getTimeTicks=B,y(k,"init",t));return k};class k{constructor(a){this.axis=a}normalizeTimeTickInterval(a,k){const m=
|
|
k||[["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]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]];k=m[m.length-1];let l=A[k[0]],f=k[1],g;for(g=0;g<m.length&&!(k=m[g],l=A[k[0]],f=k[1],m[g+1]&&a<=(l*f[f.length-1]+A[m[g+1][0]])/2);g++);l===A.year&&a<5*l&&(f=[1,2,5]);a=K(a/l,f,"year"===k[0]?Math.max(H(a/l),1):1);return{unitRange:l,count:a,unitName:k[0]}}getXDateFormat(a,k){const {axis:m}=this,l=m.chart.time;
|
|
return m.closestPointRange?l.getDateFormat(m.closestPointRange,a,m.options.startOfWeek,k)||l.resolveDTLFormat(k.year).main:l.resolveDTLFormat(k.day).main}}E.Additions=k})(C||(C={}));return C});M(a,"Core/Axis/LogarithmicAxis.js",[a["Core/Utilities.js"]],function(a){const {addEvent:y,normalizeTickInterval:H,pick:K}=a;var A;(function(z){function E(a){let k=this.logarithmic;"logarithmic"!==a.userOptions.type?this.logarithmic=void 0:k||(this.logarithmic=new r(this))}function B(){const a=this.logarithmic;
|
|
a&&(this.lin2val=function(k){return a.lin2log(k)},this.val2lin=function(k){return a.log2lin(k)})}const t=[];z.compose=function(k){a.pushUnique(t,k)&&(k.keepProps.push("logarithmic"),y(k,"init",E),y(k,"afterInit",B));return k};class r{constructor(a){this.axis=a}getLogTickPositions(a,p,x,m){const l=this.axis;var f=l.len,g=l.options;let k=[];m||(this.minorAutoInterval=void 0);if(.5<=a)a=Math.round(a),k=l.getLinearTickPositions(a,p,x);else if(.08<=a){g=Math.floor(p);let l,w,d,h,v;for(f=.3<a?[1,2,4]:.15<
|
|
a?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];g<x+1&&!v;g++)for(w=f.length,l=0;l<w&&!v;l++)d=this.log2lin(this.lin2log(g)*f[l]),d>p&&(!m||h<=x)&&"undefined"!==typeof h&&k.push(h),h>x&&(v=!0),h=d}else p=this.lin2log(p),x=this.lin2log(x),a=m?l.getMinorTickInterval():g.tickInterval,a=K("auto"===a?null:a,this.minorAutoInterval,g.tickPixelInterval/(m?5:1)*(x-p)/((m?f/l.tickPositions.length:f)||1)),a=H(a),k=l.getLinearTickPositions(a,p,x).map(this.log2lin),m||(this.minorAutoInterval=a/5);m||(l.tickInterval=a);return k}lin2log(a){return Math.pow(10,
|
|
a)}log2lin(a){return Math.log(a)/Math.LN10}}z.Additions=r})(A||(A={}));return A});M(a,"Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js",[a["Core/Utilities.js"]],function(a){const {erase:y,extend:H,isNumber:K}=a;var A;(function(z){function E(a){return this.addPlotBandOrLine(a,"plotBands")}function B(a,g){const f=this.userOptions;let k=new l(this,a);this.visible&&(k=k.render());if(k){this._addedPlotLB||(this._addedPlotLB=!0,(f.plotLines||[]).concat(f.plotBands||[]).forEach(a=>{this.addPlotBandOrLine(a)}));
|
|
if(g){const l=f[g]||[];l.push(a);f[g]=l}this.plotLinesAndBands.push(k)}return k}function t(a){return this.addPlotBandOrLine(a,"plotLines")}function r(a,g,l=this.options){const f=this.getPlotLinePath({value:g,force:!0,acrossPanes:l.acrossPanes}),k=[],d=this.horiz;g=!K(this.min)||!K(this.max)||a<this.min&&g<this.min||a>this.max&&g>this.max;a=this.getPlotLinePath({value:a,force:!0,acrossPanes:l.acrossPanes});l=1;let h;if(a&&f)for(g&&(h=a.toString()===f.toString(),l=0),g=0;g<a.length;g+=2){const v=a[g],
|
|
q=a[g+1],u=f[g],e=f[g+1];"M"!==v[0]&&"L"!==v[0]||"M"!==q[0]&&"L"!==q[0]||"M"!==u[0]&&"L"!==u[0]||"M"!==e[0]&&"L"!==e[0]||(d&&u[1]===v[1]?(u[1]+=l,e[1]+=l):d||u[2]!==v[2]||(u[2]+=l,e[2]+=l),k.push(["M",v[1],v[2]],["L",q[1],q[2]],["L",e[1],e[2]],["L",u[1],u[2]],["Z"]));k.isFlat=h}return k}function k(a){this.removePlotBandOrLine(a)}function p(a){const f=this.plotLinesAndBands,l=this.options,k=this.userOptions;if(f){let g=f.length;for(;g--;)f[g].id===a&&f[g].destroy();[l.plotLines||[],k.plotLines||[],
|
|
l.plotBands||[],k.plotBands||[]].forEach(function(d){for(g=d.length;g--;)(d[g]||{}).id===a&&y(d,d[g])})}}function x(a){this.removePlotBandOrLine(a)}const m=[];let l;z.compose=function(f,g){l||(l=f);a.pushUnique(m,g)&&H(g.prototype,{addPlotBand:E,addPlotLine:t,addPlotBandOrLine:B,getPlotBandPath:r,removePlotBand:k,removePlotLine:x,removePlotBandOrLine:p});return g}})(A||(A={}));return A});M(a,"Core/Axis/PlotLineOrBand/PlotLineOrBand.js",[a["Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js"],a["Core/Utilities.js"]],
|
|
function(a,z){const {arrayMax:y,arrayMin:K,defined:A,destroyObjectProperties:C,erase:E,fireEvent:B,merge:t,objectEach:r,pick:k}=z;class p{static compose(k){return a.compose(p,k)}constructor(a,k){this.axis=a;k&&(this.options=k,this.id=k.id)}render(){B(this,"render");const a=this,m=a.axis,l=m.horiz;var f=m.logarithmic;const g=a.options,p=g.color,I=k(g.zIndex,0),D=g.events,d={},h=m.chart.renderer;let v=g.label,q=a.label,u=g.to,e=g.from,b=g.value,c=a.svgElem;var n=[];const J=A(e)&&A(u);n=A(b);const F=
|
|
!c,L={"class":"highcharts-plot-"+(J?"band ":"line ")+(g.className||"")};let S=J?"bands":"lines";f&&(e=f.log2lin(e),u=f.log2lin(u),b=f.log2lin(b));m.chart.styledMode||(n?(L.stroke=p||"#999999",L["stroke-width"]=k(g.width,1),g.dashStyle&&(L.dashstyle=g.dashStyle)):J&&(L.fill=p||"#e6e9ff",g.borderWidth&&(L.stroke=g.borderColor,L["stroke-width"]=g.borderWidth)));d.zIndex=I;S+="-"+I;(f=m.plotLinesAndBandsGroups[S])||(m.plotLinesAndBandsGroups[S]=f=h.g("plot-"+S).attr(d).add());F&&(a.svgElem=c=h.path().attr(L).add(f));
|
|
if(n)n=m.getPlotLinePath({value:b,lineWidth:c.strokeWidth(),acrossPanes:g.acrossPanes});else if(J)n=m.getPlotBandPath(e,u,g);else return;!a.eventsAdded&&D&&(r(D,function(b,e){c.on(e,function(b){D[e].apply(a,[b])})}),a.eventsAdded=!0);(F||!c.d)&&n&&n.length?c.attr({d:n}):c&&(n?(c.show(),c.animate({d:n})):c.d&&(c.hide(),q&&(a.label=q=q.destroy())));v&&(A(v.text)||A(v.formatter))&&n&&n.length&&0<m.width&&0<m.height&&!n.isFlat?(v=t({align:l&&J&&"center",x:l?!J&&4:10,verticalAlign:!l&&J&&"middle",y:l?
|
|
J?16:10:J?6:-4,rotation:l&&!J&&90},v),this.renderLabel(v,n,J,I)):q&&q.hide();return a}renderLabel(a,k,l,f){const g=this.axis;var m=g.chart.renderer;let p=this.label;p||(this.label=p=m.text(this.getLabelText(a),0,0,a.useHTML).attr({align:a.textAlign||a.align,rotation:a.rotation,"class":"highcharts-plot-"+(l?"band":"line")+"-label "+(a.className||""),zIndex:f}).add(),g.chart.styledMode||p.css(t({fontSize:"0.8em",textOverflow:"ellipsis"},a.style)));f=k.xBounds||[k[0][1],k[1][1],l?k[2][1]:k[0][1]];k=
|
|
k.yBounds||[k[0][2],k[1][2],l?k[2][2]:k[0][2]];l=K(f);m=K(k);p.align(a,!1,{x:l,y:m,width:y(f)-l,height:y(k)-m});p.alignValue&&"left"!==p.alignValue||(a=a.clip?g.width:g.chart.chartWidth,p.css({width:(90===p.rotation?g.height-(p.alignAttr.y-g.top):a-(p.alignAttr.x-g.left))+"px"}));p.show(!0)}getLabelText(a){return A(a.formatter)?a.formatter.call(this):a.text}destroy(){E(this.axis.plotLinesAndBands,this);delete this.axis;C(this)}}"";"";return p});M(a,"Core/Tooltip.js",[a["Core/Templating.js"],a["Core/Globals.js"],
|
|
a["Core/Renderer/RendererUtilities.js"],a["Core/Renderer/RendererRegistry.js"],a["Core/Utilities.js"]],function(a,z,H,K,A){const {format:y}=a,{doc:E,isSafari:B}=z,{distribute:t}=H,{addEvent:r,clamp:k,css:p,discardElement:x,extend:m,fireEvent:l,isArray:f,isNumber:g,isString:w,merge:I,pick:D,splat:d,syncTimeout:h}=A;class v{constructor(d,a){this.allowShared=!0;this.container=void 0;this.crosshairs=[];this.distance=0;this.isHidden=!0;this.isSticky=!1;this.now={};this.options={};this.outside=!1;this.chart=
|
|
d;this.init(d,a)}bodyFormatter(d){return d.map(function(d){const e=d.series.tooltipOptions;return(e[(d.point.formatPrefix||"point")+"Formatter"]||d.point.tooltipFormatter).call(d.point,e[(d.point.formatPrefix||"point")+"Format"]||"")})}cleanSplit(d){this.chart.series.forEach(function(a){const e=a&&a.tt;e&&(!e.isActive||d?a.tt=e.destroy():e.isActive=!1)})}defaultFormatter(a){const h=this.points||d(this);let e;e=[a.tooltipFooterHeaderFormatter(h[0])];e=e.concat(a.bodyFormatter(h));e.push(a.tooltipFooterHeaderFormatter(h[0],
|
|
!0));return e}destroy(){this.label&&(this.label=this.label.destroy());this.split&&(this.cleanSplit(!0),this.tt&&(this.tt=this.tt.destroy()));this.renderer&&(this.renderer=this.renderer.destroy(),x(this.container));A.clearTimeout(this.hideTimer);A.clearTimeout(this.tooltipTimeout)}getAnchor(a,h){var e=this.chart;const b=e.pointer,c=e.inverted,n=e.plotTop;e=e.plotLeft;a=d(a);a[0].series&&a[0].series.yAxis&&!a[0].series.yAxis.options.reversedStacks&&(a=a.slice().reverse());if(this.followPointer&&h)"undefined"===
|
|
typeof h.chartX&&(h=b.normalize(h)),a=[h.chartX-e,h.chartY-n];else if(a[0].tooltipPos)a=a[0].tooltipPos;else{let b=0,d=0;a.forEach(function(c){if(c=c.pos(!0))b+=c[0],d+=c[1]});b/=a.length;d/=a.length;this.shared&&1<a.length&&h&&(c?b=h.chartX:d=h.chartY);a=[b-e,d-n]}return a.map(Math.round)}getClassName(d,a,e){const b=d.series,c=b.options;return[this.options.className,"highcharts-label",e&&"highcharts-tooltip-header",a?"highcharts-tooltip-box":"highcharts-tooltip",!e&&"highcharts-color-"+D(d.colorIndex,
|
|
b.colorIndex),c&&c.className].filter(w).join(" ")}getLabel(){const d=this,a=this.chart.styledMode,e=this.options,b=this.split&&this.allowShared,c=e.style.pointerEvents||(this.shouldStickOnContact()?"auto":"none");let n,h=this.chart.renderer;if(this.label){var f=!this.label.hasClass("highcharts-label");(!b&&f||b&&!f)&&this.destroy()}if(!this.label){if(this.outside){f=this.chart.options.chart.style;const b=K.getRendererType();this.container=n=z.doc.createElement("div");n.className="highcharts-tooltip-container";
|
|
p(n,{position:"absolute",top:"1px",pointerEvents:c,zIndex:Math.max(this.options.style.zIndex||0,(f&&f.zIndex||0)+3)});z.doc.body.appendChild(n);this.renderer=h=new b(n,0,0,f,void 0,void 0,h.styledMode)}b?this.label=h.g("tooltip"):(this.label=h.label("",0,0,e.shape,void 0,void 0,e.useHTML,void 0,"tooltip").attr({padding:e.padding,r:e.borderRadius}),a||this.label.attr({fill:e.backgroundColor,"stroke-width":e.borderWidth||0}).css(e.style).css({pointerEvents:c}));if(d.outside){const b=this.label,{xSetter:c,
|
|
ySetter:e}=b;b.xSetter=function(e){c.call(b,d.distance);n.style.left=e+"px"};b.ySetter=function(c){e.call(b,d.distance);n.style.top=c+"px"}}this.label.attr({zIndex:8}).shadow(e.shadow).add()}return this.label}getPlayingField(){const {body:d,documentElement:a}=E,{chart:e,distance:b,outside:c}=this;return{width:c?Math.max(d.scrollWidth,a.scrollWidth,d.offsetWidth,a.offsetWidth,a.clientWidth)-2*b:e.chartWidth,height:c?Math.max(d.scrollHeight,a.scrollHeight,d.offsetHeight,a.offsetHeight,a.clientHeight):
|
|
e.chartHeight}}getPosition(d,a,e){const b=this.chart,c=this.distance,n={},h=b.inverted&&e.h||0,f=this.outside;var q=this.getPlayingField();const g=q.width,l=q.height,u=b.pointer.getChartPosition();q=n=>{const h="x"===n;return[n,h?g:l,h?d:a].concat(f?[h?d*u.scaleX:a*u.scaleY,h?u.left-c+(e.plotX+b.plotLeft)*u.scaleX:u.top-c+(e.plotY+b.plotTop)*u.scaleY,0,h?g:l]:[h?d:a,h?e.plotX+b.plotLeft:e.plotY+b.plotTop,h?b.plotLeft:b.plotTop,h?b.plotLeft+b.plotWidth:b.plotTop+b.plotHeight])};let k=q("y"),v=q("x"),
|
|
m;q=!!e.negative;!b.polar&&b.hoverSeries&&b.hoverSeries.yAxis&&b.hoverSeries.yAxis.reversed&&(q=!q);const p=!this.followPointer&&D(e.ttBelow,!b.inverted===q),x=function(b,e,d,a,q,g,l){const k=f?"y"===b?c*u.scaleY:c*u.scaleX:c,v=(d-a)/2,J=a<q-c,m=q+c+a<e,F=q-k-d+v;q=q+k-v;if(p&&m)n[b]=q;else if(!p&&J)n[b]=F;else if(J)n[b]=Math.min(l-a,0>F-h?F:F-h);else if(m)n[b]=Math.max(g,q+h+d>e?q:q+h);else return!1},w=function(b,e,d,a,h){let f;h<c||h>e-c?f=!1:n[b]=h<d/2?1:h>e-a/2?e-a-2:h-d/2;return f},r=function(b){const c=
|
|
k;k=v;v=c;m=b},N=function(){!1!==x.apply(0,k)?!1!==w.apply(0,v)||m||(r(!0),N()):m?n.x=n.y=0:(r(!0),N())};(b.inverted||1<this.len)&&r();N();return n}hide(d){const a=this;A.clearTimeout(this.hideTimer);d=D(d,this.options.hideDelay);this.isHidden||(this.hideTimer=h(function(){a.getLabel().fadeOut(d?void 0:d);a.isHidden=!0},d))}init(d,a){this.chart=d;this.options=a;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.split=a.split&&!d.inverted&&!d.polar;this.shared=a.shared||this.split;this.outside=
|
|
D(a.outside,!(!d.scrollablePixelsX&&!d.scrollablePixelsY))}shouldStickOnContact(d){return!(this.followPointer||!this.options.stickOnContact||d&&!this.chart.pointer.inClass(d.target,"highcharts-tooltip"))}move(d,a,e,b){const c=this,n=c.now,h=!1!==c.options.animation&&!c.isHidden&&(1<Math.abs(d-n.x)||1<Math.abs(a-n.y)),f=c.followPointer||1<c.len;m(n,{x:h?(2*n.x+d)/3:d,y:h?(n.y+a)/2:a,anchorX:f?void 0:h?(2*n.anchorX+e)/3:e,anchorY:f?void 0:h?(n.anchorY+b)/2:b});c.getLabel().attr(n);c.drawTracker();h&&
|
|
(A.clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){c&&c.move(d,a,e,b)},32))}refresh(a,h){const e=this.chart,b=this.options,c=e.pointer,n=d(a),q=n[0],g=[];var u=b.format,k=b.formatter||this.defaultFormatter;const v=this.shared,m=e.styledMode;let p={};if(b.enabled&&q.series){A.clearTimeout(this.hideTimer);this.allowShared=!(!f(a)&&a.series&&a.series.noSharedTooltip);this.followPointer=!this.split&&q.series.tooltipOptions.followPointer;a=this.getAnchor(a,h);var x=a[0],r=a[1];
|
|
v&&this.allowShared?(c.applyInactiveState(n),n.forEach(function(b){b.setState("hover");g.push(b.getLabelConfig())}),p=q.getLabelConfig(),p.points=g):p=q.getLabelConfig();this.len=g.length;u=w(u)?y(u,p,e):k.call(p,this);k=q.series;this.distance=D(k.tooltipOptions.distance,16);if(!1===u)this.hide();else{if(this.split&&this.allowShared)this.renderSplit(u,n);else{let d=x,f=r;h&&c.isDirectTouch&&(d=h.chartX-e.plotLeft,f=h.chartY-e.plotTop);if(e.polar||!1===k.options.clip||n.some(b=>c.isDirectTouch||b.series.shouldShowTooltip(d,
|
|
f)))h=this.getLabel(),b.style.width&&!m||h.css({width:(this.outside?this.getPlayingField():e.spacingBox).width+"px"}),h.attr({text:u&&u.join?u.join(""):u}),h.addClass(this.getClassName(q),!0),m||h.attr({stroke:b.borderColor||q.color||k.color||"#666666"}),this.updatePosition({plotX:x,plotY:r,negative:q.negative,ttBelow:q.ttBelow,h:a[2]||0});else{this.hide();return}}this.isHidden&&this.label&&this.label.attr({opacity:1}).show();this.isHidden=!1}l(this,"refresh")}}renderSplit(d,a){function e(c,e,d,a,
|
|
n=!0){d?(e=R?0:K,c=k(c-a/2,N.left,N.right-a-(b.outside?W:0))):(e-=C,c=n?c-a-I:c+I,c=k(c,n?c:N.left,N.right));return{x:c,y:e}}const b=this,{chart:c,chart:{chartWidth:n,chartHeight:h,plotHeight:f,plotLeft:g,plotTop:q,pointer:l,scrollablePixelsY:u=0,scrollablePixelsX:v,scrollingContainer:{scrollLeft:p,scrollTop:x}={scrollLeft:0,scrollTop:0},styledMode:r},distance:I,options:y,options:{positioner:z}}=b,N=b.outside&&"number"!==typeof v?E.documentElement.getBoundingClientRect():{left:p,right:p+n,top:x,bottom:x+
|
|
h},X=b.getLabel(),U=this.renderer||c.renderer,R=!(!c.xAxis[0]||!c.xAxis[0].opposite),{left:W,top:A}=l.getChartPosition();let C=q+x,H=0,K=f-u;w(d)&&(d=[!1,d]);d=d.slice(0,a.length+1).reduce(function(c,d,n){if(!1!==d&&""!==d){n=a[n-1]||{isHeader:!0,plotX:a[0].plotX,plotY:f,series:{}};const m=n.isHeader;var h=m?b:n.series,l;{var u=n;d=d.toString();var v=h.tt;const {isHeader:c,series:e}=u;v||(v={padding:y.padding,r:y.borderRadius},r||(v.fill=y.backgroundColor,v["stroke-width"]=null!==(l=y.borderWidth)&&
|
|
void 0!==l?l:1),v=U.label("",0,0,y[c?"headerShape":"shape"],void 0,void 0,y.useHTML).addClass(b.getClassName(u,!0,c)).attr(v).add(X));v.isActive=!0;v.attr({text:d});r||v.css(y.style).attr({stroke:y.borderColor||u.color||e.color||"#333333"});l=v}l=h.tt=l;u=l.getBBox();h=u.width+l.strokeWidth();m&&(H=u.height,K+=H,R&&(C-=H));{const {isHeader:b,plotX:c=0,plotY:e=0,series:a}=n;if(b){d=g+c;var J=q+f/2}else{const {xAxis:b,yAxis:n}=a;d=b.pos+k(c,-I,b.len+I);a.shouldShowTooltip(0,n.pos-q+e,{ignoreX:!0})&&
|
|
(J=n.pos+e)}d=k(d,N.left-I,N.right+I);J={anchorX:d,anchorY:J}}const {anchorX:F,anchorY:p}=J;"number"===typeof p?(J=u.height+1,u=z?z.call(b,h,J,n):e(F,p,m,h),c.push({align:z?0:void 0,anchorX:F,anchorY:p,boxWidth:h,point:n,rank:D(u.rank,m?1:0),size:J,target:u.y,tt:l,x:u.x})):l.isActive=!1}return c},[]);!z&&d.some(c=>{var {outside:e}=b;e=(e?W:0)+c.anchorX;return e<N.left&&e+c.boxWidth<N.right?!0:e<W-N.left+c.boxWidth&&N.right-e>e})&&(d=d.map(b=>{const {x:c,y:d}=e(b.anchorX,b.anchorY,b.point.isHeader,
|
|
b.boxWidth,!1);return m(b,{target:d,x:c})}));b.cleanSplit();t(d,K);var ba=W,M=W;d.forEach(function(c){const {x:e,boxWidth:d,isHeader:a}=c;a||(b.outside&&W+e<ba&&(ba=W+e),!a&&b.outside&&ba+d>M&&(M=W+e))});d.forEach(function(c){const {x:e,anchorX:d,anchorY:a,pos:n,point:{isHeader:h}}=c,f={visibility:"undefined"===typeof n?"hidden":"inherit",x:e,y:(n||0)+C,anchorX:d,anchorY:a};if(b.outside&&e<d){const b=W-ba;0<b&&(h||(f.x=e+b,f.anchorX=d+b),h&&(f.x=(M-ba)/2,f.anchorX=d+b))}c.tt.attr(f)});const {container:fa,
|
|
outside:ka,renderer:ja}=b;if(ka&&fa&&ja){const {width:b,height:c,x:e,y:d}=X.getBBox();ja.setSize(b+e,c+d,!1);fa.style.left=ba+"px";fa.style.top=A+"px"}B&&X.attr({opacity:1===X.opacity?.999:1})}drawTracker(){if(this.shouldStickOnContact()){var d=this.chart,a=this.label,e=this.shared?d.hoverPoints:d.hoverPoint;if(a&&e){var b={x:0,y:0,width:0,height:0};e=this.getAnchor(e);var c=a.getBBox();e[0]+=d.plotLeft-a.translateX;e[1]+=d.plotTop-a.translateY;b.x=Math.min(0,e[0]);b.y=Math.min(0,e[1]);b.width=0>
|
|
e[0]?Math.max(Math.abs(e[0]),c.width-e[0]):Math.max(Math.abs(e[0]),c.width);b.height=0>e[1]?Math.max(Math.abs(e[1]),c.height-Math.abs(e[1])):Math.max(Math.abs(e[1]),c.height);this.tracker?this.tracker.attr(b):(this.tracker=a.renderer.rect(b).addClass("highcharts-tracker").add(a),d.styledMode||this.tracker.attr({fill:"rgba(0,0,0,0)"}))}}else this.tracker&&(this.tracker=this.tracker.destroy())}styledModeFormat(d){return d.replace('style="font-size: 0.8em"','class="highcharts-header"').replace(/style="color:{(point|series)\.color}"/g,
|
|
'class="highcharts-color-{$1.colorIndex} {series.options.className} {point.options.className}"')}tooltipFooterHeaderFormatter(d,a){const e=d.series,b=e.tooltipOptions;var c=e.xAxis;const n=c&&c.dateTime;c={isFooter:a,labelConfig:d};let h=b.xDateFormat,f=b[a?"footerFormat":"headerFormat"];l(this,"headerFormatter",c,function(c){n&&!h&&g(d.key)&&(h=n.getXDateFormat(d.key,b.dateTimeLabelFormats));n&&h&&(d.point&&d.point.tooltipDateKeys||["key"]).forEach(function(b){f=f.replace("{point."+b+"}","{point."+
|
|
b+":"+h+"}")});e.chart.styledMode&&(f=this.styledModeFormat(f));c.text=y(f,{point:d,series:e},this.chart)});return c.text}update(d){this.destroy();this.init(this.chart,I(!0,this.options,d))}updatePosition(d){const {chart:a,distance:e,options:b}=this;var c=a.pointer;const n=this.getLabel(),{left:h,top:f,scaleX:g,scaleY:q}=c.getChartPosition();c=(b.positioner||this.getPosition).call(this,n.width,n.height,d);let l=(d.plotX||0)+a.plotLeft;d=(d.plotY||0)+a.plotTop;let v;if(this.outside){b.positioner&&
|
|
(c.x+=h-e,c.y+=f-e);v=(b.borderWidth||0)+2*e;this.renderer.setSize(n.width+v,n.height+v,!1);if(1!==g||1!==q)p(this.container,{transform:`scale(${g}, ${q})`}),l*=g,d*=q;l+=h-c.x;d+=f-c.y}this.move(Math.round(c.x),Math.round(c.y||0),l,d)}}(function(d){const a=[];d.compose=function(e){A.pushUnique(a,e)&&r(e,"afterInit",function(){const b=this.chart;b.options.tooltip&&(b.tooltip=new d(b,b.options.tooltip))})}})(v||(v={}));"";return v});M(a,"Core/Series/Point.js",[a["Core/Renderer/HTML/AST.js"],a["Core/Animation/AnimationUtilities.js"],
|
|
a["Core/Defaults.js"],a["Core/Templating.js"],a["Core/Utilities.js"]],function(a,z,H,K,A){const {animObject:y}=z,{defaultOptions:E}=H,{format:B}=K,{addEvent:t,defined:r,erase:k,extend:p,fireEvent:x,getNestedProperty:m,isArray:l,isFunction:f,isNumber:g,isObject:w,merge:I,objectEach:D,pick:d,syncTimeout:h,removeEvent:v,uniqueKey:q}=A;class u{constructor(){this.category=void 0;this.destroyed=!1;this.formatPrefix="point";this.id=void 0;this.isNull=!1;this.percentage=this.options=this.name=void 0;this.selected=
|
|
!1;this.total=this.shapeArgs=this.series=void 0;this.visible=!0;this.x=void 0}animateBeforeDestroy(){const e=this,b={x:e.startXPos,opacity:0},c=e.getGraphicalProps();c.singular.forEach(function(c){e[c]=e[c].animate("dataLabel"===c?{x:e[c].startXPos,y:e[c].startYPos,opacity:0}:b)});c.plural.forEach(function(b){e[b].forEach(function(b){b.element&&b.animate(p({x:e.startXPos},b.startYPos?{x:b.startXPos,y:b.startYPos}:{}))})})}applyOptions(e,b){const c=this.series,d=c.options.pointValKey||c.pointValKey;
|
|
e=u.prototype.optionsToObject.call(this,e);p(this,e);this.options=this.options?p(this.options,e):e;e.group&&delete this.group;e.dataLabels&&delete this.dataLabels;d&&(this.y=u.prototype.getNestedProperty.call(this,d));this.formatPrefix=(this.isNull=this.isValid&&!this.isValid())?"null":"point";this.selected&&(this.state="select");"name"in this&&"undefined"===typeof b&&c.xAxis&&c.xAxis.hasNames&&(this.x=c.xAxis.nameToX(this));"undefined"===typeof this.x&&c?this.x="undefined"===typeof b?c.autoIncrement():
|
|
b:g(e.x)&&c.options.relativeXValue&&(this.x=c.autoIncrement(e.x));return this}destroy(){if(!this.destroyed){const b=this;var e=b.series;const c=e.chart;e=e.options.dataSorting;const d=c.hoverPoints,a=y(b.series.chart.renderer.globalAnimation),f=()=>{if(b.graphic||b.graphics||b.dataLabel||b.dataLabels)v(b),b.destroyElements();for(const c in b)delete b[c]};b.legendItem&&c.legend.destroyItem(b);d&&(b.setState(),k(d,b),d.length||(c.hoverPoints=null));if(b===c.hoverPoint)b.onMouseOut();e&&e.enabled?(this.animateBeforeDestroy(),
|
|
h(f,a.duration)):f();c.pointCount--}this.destroyed=!0}destroyElements(e){const b=this;e=b.getGraphicalProps(e);e.singular.forEach(function(c){b[c]=b[c].destroy()});e.plural.forEach(function(c){b[c].forEach(function(b){b&&b.element&&b.destroy()});delete b[c]})}firePointEvent(e,b,c){const d=this,a=this.series.options;(a.point.events[e]||d.options&&d.options.events&&d.options.events[e])&&d.importEvents();"click"===e&&a.allowPointSelect&&(c=function(b){d.select&&d.select(null,b.ctrlKey||b.metaKey||b.shiftKey)});
|
|
x(d,e,b,c)}getClassName(){return"highcharts-point"+(this.selected?" highcharts-point-select":"")+(this.negative?" highcharts-negative":"")+(this.isNull?" highcharts-null-point":"")+("undefined"!==typeof this.colorIndex?" highcharts-color-"+this.colorIndex:"")+(this.options.className?" "+this.options.className:"")+(this.zone&&this.zone.className?" "+this.zone.className.replace("highcharts-negative",""):"")}getGraphicalProps(e){const b=this,c=[],d={singular:[],plural:[]};let a,h;e=e||{graphic:1,dataLabel:1};
|
|
e.graphic&&c.push("graphic");e.dataLabel&&c.push("dataLabel","dataLabelPath","dataLabelUpper","connector");for(h=c.length;h--;)a=c[h],b[a]&&d.singular.push(a);["graphic","dataLabel","connector"].forEach(function(c){const a=c+"s";e[c]&&b[a]&&d.plural.push(a)});return d}getLabelConfig(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}}getNestedProperty(e){if(e)return 0===
|
|
e.indexOf("custom.")?m(e,this.options):this[e]}getZone(){var e=this.series;const b=e.zones;e=e.zoneAxis||"y";let c,d=0;for(c=b[d];this[e]>=c.value;)c=b[++d];this.nonZonedColor||(this.nonZonedColor=this.color);this.color=c&&c.color&&!this.options.color?c.color:this.nonZonedColor;return c}hasNewShapeType(){return(this.graphic&&(this.graphic.symbolName||this.graphic.element.nodeName))!==this.shapeType}init(e,b,c){this.series=e;this.applyOptions(b,c);this.id=r(this.id)?this.id:q();this.resolveColor();
|
|
e.chart.pointCount++;x(this,"afterInit");return this}isValid(){return null!==this.x&&g(this.y)}optionsToObject(e){var b=this.series;const c=b.options.keys,d=c||b.pointArrayMap||["y"],a=d.length;let h={},f=0,q=0;if(g(e)||null===e)h[d[0]]=e;else if(l(e))for(!c&&e.length>a&&(b=typeof e[0],"string"===b?h.name=e[0]:"number"===b&&(h.x=e[0]),f++);q<a;)c&&"undefined"===typeof e[f]||(0<d[q].indexOf(".")?u.prototype.setNestedProperty(h,e[f],d[q]):h[d[q]]=e[f]),f++,q++;else"object"===typeof e&&(h=e,e.dataLabels&&
|
|
(b._hasPointLabels=!0),e.marker&&(b._hasPointMarkers=!0));return h}pos(e,b=this.plotY){if(!this.destroyed){const {plotX:c,series:d}=this,{chart:a,xAxis:h,yAxis:f}=d;let q=0,l=0;if(g(c)&&g(b))return e&&(q=h?h.pos:a.plotLeft,l=f?f.pos:a.plotTop),a.inverted&&h&&f?[f.len-b+l,h.len-c+q]:[c+q,b+l]}}resolveColor(){const e=this.series;var b=e.chart.styledMode;let c;var a=e.chart.options.chart.colorCount;delete this.nonZonedColor;e.options.colorByPoint?(b||(a=e.options.colors||e.chart.options.colors,c=a[e.colorCounter],
|
|
a=a.length),b=e.colorCounter,e.colorCounter++,e.colorCounter===a&&(e.colorCounter=0)):(b||(c=e.color),b=e.colorIndex);this.colorIndex=d(this.options.colorIndex,b);this.color=d(this.options.color,c)}setNestedProperty(e,b,c){c.split(".").reduce(function(c,e,d,a){c[e]=a.length-1===d?b:w(c[e],!0)?c[e]:{};return c[e]},e);return e}shouldDraw(){return!this.isNull}tooltipFormatter(e){const b=this.series,c=b.tooltipOptions,a=d(c.valueDecimals,""),h=c.valuePrefix||"",f=c.valueSuffix||"";b.chart.styledMode&&
|
|
(e=b.chart.tooltip.styledModeFormat(e));(b.pointArrayMap||["y"]).forEach(function(b){b="{point."+b;if(h||f)e=e.replace(RegExp(b+"}","g"),h+b+"}"+f);e=e.replace(RegExp(b+"}","g"),b+":,."+a+"f}")});return B(e,{point:this,series:this.series},b.chart)}update(e,b,c,a){function n(){h.applyOptions(e);var a=g&&h.hasMockGraphic;a=null===h.y?!a:a;g&&a&&(h.graphic=g.destroy(),delete h.hasMockGraphic);w(e,!0)&&(g&&g.element&&e&&e.marker&&"undefined"!==typeof e.marker.symbol&&(h.graphic=g.destroy()),e&&e.dataLabels&&
|
|
h.dataLabel&&(h.dataLabel=h.dataLabel.destroy()),h.connector&&(h.connector=h.connector.destroy()));v=h.index;f.updateParallelArrays(h,v);l.data[v]=w(l.data[v],!0)||w(e,!0)?h.options:d(e,l.data[v]);f.isDirty=f.isDirtyData=!0;!f.fixedBox&&f.hasCartesianSeries&&(q.isDirtyBox=!0);"point"===l.legendType&&(q.isDirtyLegend=!0);b&&q.redraw(c)}const h=this,f=h.series,g=h.graphic,q=f.chart,l=f.options;let v;b=d(b,!0);!1===a?n():h.firePointEvent("update",{options:e},n)}remove(e,b){this.series.removePoint(this.series.data.indexOf(this),
|
|
e,b)}select(e,b){const c=this,a=c.series,h=a.chart;this.selectedStaging=e=d(e,!c.selected);c.firePointEvent(e?"select":"unselect",{accumulate:b},function(){c.selected=c.options.selected=e;a.options.data[a.data.indexOf(c)]=c.options;c.setState(e&&"select");b||h.getSelectedPoints().forEach(function(b){const e=b.series;b.selected&&b!==c&&(b.selected=b.options.selected=!1,e.options.data[e.data.indexOf(b)]=b.options,b.setState(h.hoverPoints&&e.options.inactiveOtherPoints?"inactive":""),b.firePointEvent("unselect"))})});
|
|
delete this.selectedStaging}onMouseOver(e){const b=this.series.chart,c=b.pointer;e=e?c.normalize(e):c.getChartCoordinatesFromPoint(this,b.inverted);c.runPointActions(e,this)}onMouseOut(){const e=this.series.chart;this.firePointEvent("mouseOut");this.series.options.inactiveOtherPoints||(e.hoverPoints||[]).forEach(function(b){b.setState()});e.hoverPoints=e.hoverPoint=null}importEvents(){if(!this.hasImportedEvents){const e=this,b=I(e.series.options.point,e.options).events;e.events=b;D(b,function(b,d){f(b)&&
|
|
t(e,d,b)});this.hasImportedEvents=!0}}setState(e,b){const c=this.series;var n=this.state,h=c.options.states[e||"normal"]||{},f=E.plotOptions[c.type].marker&&c.options.marker;const q=f&&!1===f.enabled,l=f&&f.states&&f.states[e||"normal"]||{},v=!1===l.enabled,u=this.marker||{},k=c.chart,m=f&&c.markerAttribs;let w=c.halo;var r;let t;var I=c.stateMarkerGraphic;e=e||"";if(!(e===this.state&&!b||this.selected&&"select"!==e||!1===h.enabled||e&&(v||q&&!1===l.enabled)||e&&u.states&&u.states[e]&&!1===u.states[e].enabled)){this.state=
|
|
e;m&&(r=c.markerAttribs(this,e));if(this.graphic&&!this.hasMockGraphic){n&&this.graphic.removeClass("highcharts-point-"+n);e&&this.graphic.addClass("highcharts-point-"+e);if(!k.styledMode){n=c.pointAttribs(this,e);t=d(k.options.chart.animation,h.animation);const b=n.opacity;c.options.inactiveOtherPoints&&g(b)&&((this.dataLabels||[]).forEach(function(c){c&&!c.hasClass("highcharts-data-label-hidden")&&c.animate({opacity:b},t)}),this.connector&&this.connector.animate({opacity:b},t));this.graphic.animate(n,
|
|
t)}r&&this.graphic.animate(r,d(k.options.chart.animation,l.animation,f.animation));I&&I.hide()}else{if(e&&l){f=u.symbol||c.symbol;I&&I.currentSymbol!==f&&(I=I.destroy());if(r)if(I)I[b?"animate":"attr"]({x:r.x,y:r.y});else f&&(c.stateMarkerGraphic=I=k.renderer.symbol(f,r.x,r.y,r.width,r.height).add(c.markerGroup),I.currentSymbol=f);!k.styledMode&&I&&"inactive"!==this.state&&I.attr(c.pointAttribs(this,e))}I&&(I[e&&this.isInside?"show":"hide"](),I.element.point=this,I.addClass(this.getClassName(),!0))}h=
|
|
h.halo;r=(I=this.graphic||I)&&I.visibility||"inherit";h&&h.size&&I&&"hidden"!==r&&!this.isCluster?(w||(c.halo=w=k.renderer.path().add(I.parentGroup)),w.show()[b?"animate":"attr"]({d:this.haloPath(h.size)}),w.attr({"class":"highcharts-halo highcharts-color-"+d(this.colorIndex,c.colorIndex)+(this.className?" "+this.className:""),visibility:r,zIndex:-1}),w.point=this,k.styledMode||w.attr(p({fill:this.color||c.color,"fill-opacity":h.opacity},a.filterUserAttributes(h.attributes||{})))):w&&w.point&&w.point.haloPath&&
|
|
w.animate({d:w.point.haloPath(0)},null,w.hide);x(this,"afterSetState",{state:e})}}haloPath(e){const b=this.pos();return b?this.series.chart.renderer.symbols.circle(Math.floor(b[0])-e,b[1]-e,2*e,2*e):[]}}"";return u});M(a,"Core/Pointer.js",[a["Core/Color/Color.js"],a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z,H){const {parse:y}=a,{charts:A,noop:C}=z,{addEvent:E,attr:B,css:t,defined:r,extend:k,find:p,fireEvent:x,isNumber:m,isObject:l,objectEach:f,offset:g,pick:w,splat:I}=H;class D{constructor(d,
|
|
a){this.lastValidTouch={};this.pinchDown=[];this.runChartClick=!1;this.eventsToUnbind=[];this.chart=d;this.hasDragged=!1;this.options=a;this.init(d,a)}applyInactiveState(d){let a=[],f;(d||[]).forEach(function(d){f=d.series;a.push(f);f.linkedParent&&a.push(f.linkedParent);f.linkedSeries&&(a=a.concat(f.linkedSeries));f.navigatorSeries&&a.push(f.navigatorSeries)});this.chart.series.forEach(function(d){-1===a.indexOf(d)?d.setState("inactive",!0):d.options.inactiveOtherPoints&&d.setAllPointsToState("inactive")})}destroy(){const d=
|
|
this;this.eventsToUnbind.forEach(d=>d());this.eventsToUnbind=[];z.chartCount||(D.unbindDocumentMouseUp&&(D.unbindDocumentMouseUp=D.unbindDocumentMouseUp()),D.unbindDocumentTouchEnd&&(D.unbindDocumentTouchEnd=D.unbindDocumentTouchEnd()));clearInterval(d.tooltipTimeout);f(d,function(a,f){d[f]=void 0})}getSelectionMarkerAttrs(d,a){const h={args:{chartX:d,chartY:a},attrs:{},shapeType:"rect"};x(this,"getSelectionMarkerAttrs",h,h=>{const {chart:f,mouseDownX:e=0,mouseDownY:b=0,zoomHor:c,zoomVert:n}=this;
|
|
h=h.attrs;let g;h.x=f.plotLeft;h.y=f.plotTop;h.width=c?1:f.plotWidth;h.height=n?1:f.plotHeight;c&&(g=d-e,h.width=Math.abs(g),h.x=(0<g?0:g)+e);n&&(g=a-b,h.height=Math.abs(g),h.y=(0<g?0:g)+b)});return h}drag(d){const a=this.chart,f=a.options.chart;var g=a.plotLeft;const u=a.plotTop,e=a.plotWidth,b=a.plotHeight,c=this.mouseDownX||0,n=this.mouseDownY||0,k=l(f.panning)?f.panning&&f.panning.enabled:f.panning,m=f.panKey&&d[f.panKey+"Key"];let p=d.chartX,x=d.chartY,w=this.selectionMarker;if(!w||!w.touch)if(p<
|
|
g?p=g:p>g+e&&(p=g+e),x<u?x=u:x>u+b&&(x=u+b),this.hasDragged=Math.sqrt(Math.pow(c-p,2)+Math.pow(n-x,2)),10<this.hasDragged){g=a.isInsidePlot(c-g,n-u,{visiblePlotOnly:!0});const {shapeType:b,attrs:e}=this.getSelectionMarkerAttrs(p,x);!a.hasCartesianSeries&&!a.mapView||!this.zoomX&&!this.zoomY||!g||m||w||(this.selectionMarker=w=a.renderer[b](),w.attr({"class":"highcharts-selection-marker",zIndex:7}).add(),a.styledMode||w.attr({fill:f.selectionMarkerFill||y("#334eff").setOpacity(.25).get()}));w&&w.attr(e);
|
|
g&&!w&&k&&a.pan(d,f.panning)}}dragStart(d){const a=this.chart;a.mouseIsDown=d.type;a.cancelClick=!1;a.mouseDownX=this.mouseDownX=d.chartX;a.mouseDownY=this.mouseDownY=d.chartY}getSelectionBox(d){const a={args:{marker:d},result:{}};x(this,"getSelectionBox",a,a=>{a.result={x:d.attr?+d.attr("x"):d.x,y:d.attr?+d.attr("y"):d.y,width:d.attr?d.attr("width"):d.width,height:d.attr?d.attr("height"):d.height}});return a.result}drop(d){const a=this,f=this.chart,g=this.hasPinched;if(this.selectionMarker){const {x:h,
|
|
y:e,width:b,height:c}=this.getSelectionBox(this.selectionMarker),n={originalEvent:d,xAxis:[],yAxis:[],x:h,y:e,width:b,height:c};let q=!!f.mapView;if(this.hasDragged||g)f.axes.forEach(function(f){if(f.zoomEnabled&&r(f.min)&&(g||a[{xAxis:"zoomX",yAxis:"zoomY"}[f.coll]])&&m(h)&&m(e)&&m(b)&&m(c)){var l=f.horiz;const a="touchend"===d.type?f.minPixelPadding:0,g=f.toValue((l?h:e)+a);l=f.toValue((l?h+b:e+c)-a);n[f.coll].push({axis:f,min:Math.min(g,l),max:Math.max(g,l)});q=!0}}),q&&x(f,"selection",n,function(b){f.zoom(k(b,
|
|
g?{animation:!1}:null))});m(f.index)&&(this.selectionMarker=this.selectionMarker.destroy());g&&this.scaleGroups()}f&&m(f.index)&&(t(f.container,{cursor:f._cursor}),f.cancelClick=10<this.hasDragged,f.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[])}findNearestKDPoint(d,a,f){let h;d.forEach(function(d){var e=!(d.noSharedTooltip&&a)&&0>d.options.findNearestPointBy.indexOf("y");d=d.searchPoint(f,e);if((e=l(d,!0)&&d.series)&&!(e=!l(h,!0))){{e=h.distX-d.distX;const b=h.dist-d.dist,c=(d.series.group&&
|
|
d.series.group.zIndex)-(h.series.group&&h.series.group.zIndex);e=0!==e&&a?e:0!==b?b:0!==c?c:h.series.index>d.series.index?-1:1}e=0<e}e&&(h=d)});return h}getChartCoordinatesFromPoint(d,a){var h=d.series;const f=h.xAxis;h=h.yAxis;const g=d.shapeArgs;if(f&&h){let e=w(d.clientX,d.plotX),b=d.plotY||0;d.isNode&&g&&m(g.x)&&m(g.y)&&(e=g.x,b=g.y);return a?{chartX:h.len+h.pos-b,chartY:f.len+f.pos-e}:{chartX:e+f.pos,chartY:b+h.pos}}if(g&&g.x&&g.y)return{chartX:g.x,chartY:g.y}}getChartPosition(){if(this.chartPosition)return this.chartPosition;
|
|
var {container:d}=this.chart;const a=g(d);this.chartPosition={left:a.left,top:a.top,scaleX:1,scaleY:1};const f=d.offsetWidth;d=d.offsetHeight;2<f&&2<d&&(this.chartPosition.scaleX=a.width/f,this.chartPosition.scaleY=a.height/d);return this.chartPosition}getCoordinates(d){const a={xAxis:[],yAxis:[]};this.chart.axes.forEach(function(h){a[h.isXAxis?"xAxis":"yAxis"].push({axis:h,value:h.toValue(d[h.horiz?"chartX":"chartY"])})});return a}getHoverData(d,a,f,g,k,e){const b=[];g=!(!g||!d);const c=function(b){return b.visible&&
|
|
!(!k&&b.directTouch)&&w(b.options.enableMouseTracking,!0)};let n,h={chartX:e?e.chartX:void 0,chartY:e?e.chartY:void 0,shared:k};x(this,"beforeGetHoverData",h);n=a&&!a.stickyTracking?[a]:f.filter(b=>b.stickyTracking&&(h.filter||c)(b));const q=g||!e?d:this.findNearestKDPoint(n,k,e);a=q&&q.series;q&&(k&&!a.noSharedTooltip?(n=f.filter(function(b){return h.filter?h.filter(b):c(b)&&!b.noSharedTooltip}),n.forEach(function(c){let e=p(c.points,function(b){return b.x===q.x&&!b.isNull});l(e)&&(c.boosted&&c.boost&&
|
|
(e=c.boost.getPoint(e)),b.push(e))})):b.push(q));h={hoverPoint:q};x(this,"afterGetHoverData",h);return{hoverPoint:h.hoverPoint,hoverSeries:a,hoverPoints:b}}getPointFromEvent(a){a=a.target;let d;for(;a&&!d;)d=a.point,a=a.parentNode;return d}onTrackerMouseOut(a){a=a.relatedTarget;const d=this.chart.hoverSeries;this.isDirectTouch=!1;if(!(!d||!a||d.stickyTracking||this.inClass(a,"highcharts-tooltip")||this.inClass(a,"highcharts-series-"+d.index)&&this.inClass(a,"highcharts-tracker")))d.onMouseOut()}inClass(a,
|
|
h){let d;for(;a;){if(d=B(a,"class")){if(-1!==d.indexOf(h))return!0;if(-1!==d.indexOf("highcharts-container"))return!1}a=a.parentElement}}init(a,h){this.options=h;this.chart=a;this.runChartClick=!(!h.chart.events||!h.chart.events.click);this.pinchDown=[];this.lastValidTouch={};this.setDOMEvents();x(this,"afterInit")}normalize(a,h){var d=a.touches,f=d?d.length?d.item(0):w(d.changedTouches,a.changedTouches)[0]:a;h||(h=this.getChartPosition());d=f.pageX-h.left;f=f.pageY-h.top;d/=h.scaleX;f/=h.scaleY;
|
|
return k(a,{chartX:Math.round(d),chartY:Math.round(f)})}onContainerClick(a){const d=this.chart,f=d.hoverPoint;a=this.normalize(a);const g=d.plotLeft,l=d.plotTop;d.cancelClick||(f&&this.inClass(a.target,"highcharts-tracker")?(x(f.series,"click",k(a,{point:f})),d.hoverPoint&&f.firePointEvent("click",a)):(k(a,this.getCoordinates(a)),d.isInsidePlot(a.chartX-g,a.chartY-l,{visiblePlotOnly:!0})&&x(d,"click",a)))}onContainerMouseDown(a){const d=1===((a.buttons||a.button)&1);a=this.normalize(a);if(z.isFirefox&&
|
|
0!==a.button)this.onContainerMouseMove(a);if("undefined"===typeof a.button||d)this.zoomOption(a),d&&a.preventDefault&&a.preventDefault(),this.dragStart(a)}onContainerMouseLeave(a){const d=A[w(D.hoverChartIndex,-1)];a=this.normalize(a);d&&a.relatedTarget&&!this.inClass(a.relatedTarget,"highcharts-tooltip")&&(d.pointer.reset(),d.pointer.chartPosition=void 0)}onContainerMouseEnter(a){delete this.chartPosition}onContainerMouseMove(a){const d=this.chart,f=d.tooltip;a=this.normalize(a);this.setHoverChartIndex();
|
|
("mousedown"===d.mouseIsDown||this.touchSelect(a))&&this.drag(a);d.openMenu||!this.inClass(a.target,"highcharts-tracker")&&!d.isInsidePlot(a.chartX-d.plotLeft,a.chartY-d.plotTop,{visiblePlotOnly:!0})||f&&f.shouldStickOnContact(a)||(this.inClass(a.target,"highcharts-no-tooltip")?this.reset(!1,0):this.runPointActions(a))}onDocumentTouchEnd(a){const d=A[w(D.hoverChartIndex,-1)];d&&d.pointer.drop(a)}onContainerTouchMove(a){if(this.touchSelect(a))this.onContainerMouseMove(a);else this.touch(a)}onContainerTouchStart(a){if(this.touchSelect(a))this.onContainerMouseDown(a);
|
|
else this.zoomOption(a),this.touch(a,!0)}onDocumentMouseMove(a){const d=this.chart,f=d.tooltip,g=this.chartPosition;a=this.normalize(a,g);!g||d.isInsidePlot(a.chartX-d.plotLeft,a.chartY-d.plotTop,{visiblePlotOnly:!0})||f&&f.shouldStickOnContact(a)||this.inClass(a.target,"highcharts-tracker")||this.reset()}onDocumentMouseUp(a){const d=A[w(D.hoverChartIndex,-1)];d&&d.pointer.drop(a)}pinch(a){const d=this,f=d.chart,g=d.pinchDown,l=a.touches||[],e=l.length,b=d.lastValidTouch,c=d.hasZoom,n={},m=1===e&&
|
|
(d.inClass(a.target,"highcharts-tracker")&&f.runTrackerClick||d.runChartClick),p={};var r=d.chart.tooltip;r=1===e&&w(r&&r.options.followTouchMove,!0);let t=d.selectionMarker;1<e?d.initiated=!0:r&&(d.initiated=!1);c&&d.initiated&&!m&&!1!==a.cancelable&&a.preventDefault();[].map.call(l,function(b){return d.normalize(b)});"touchstart"===a.type?([].forEach.call(l,function(b,c){g[c]={chartX:b.chartX,chartY:b.chartY}}),b.x=[g[0].chartX,g[1]&&g[1].chartX],b.y=[g[0].chartY,g[1]&&g[1].chartY],f.axes.forEach(function(b){if(b.zoomEnabled){const c=
|
|
f.bounds[b.horiz?"h":"v"],e=b.minPixelPadding,a=b.toPixels(Math.min(w(b.options.min,b.dataMin),b.dataMin)),d=b.toPixels(Math.max(w(b.options.max,b.dataMax),b.dataMax)),n=Math.max(a,d);c.min=Math.min(b.pos,Math.min(a,d)-e);c.max=Math.max(b.pos+b.len,n+e)}}),d.res=!0):r?this.runPointActions(d.normalize(a)):g.length&&(x(f,"touchpan",{originalEvent:a},()=>{t||(d.selectionMarker=t=k({destroy:C,touch:!0},f.plotBox));d.pinchTranslate(g,l,n,t,p,b);d.hasPinched=c;d.scaleGroups(n,p)}),d.res&&(d.res=!1,this.reset(!1,
|
|
0)))}pinchTranslate(a,f,g,l,k,e){this.zoomHor&&this.pinchTranslateDirection(!0,a,f,g,l,k,e);this.zoomVert&&this.pinchTranslateDirection(!1,a,f,g,l,k,e)}pinchTranslateDirection(a,f,g,l,k,e,b,c){const d=this.chart,h=a?"x":"y",q=a?"X":"Y",u="chart"+q,m=a?"width":"height",v=d["plot"+(a?"Left":"Top")],p=d.inverted,x=d.bounds[a?"h":"v"],w=1===f.length,r=f[0][u],t=!w&&f[1][u];f=function(){"number"===typeof X&&20<Math.abs(r-t)&&(y=c||Math.abs(N-X)/Math.abs(r-t));D=(v-N)/y+r;I=d["plot"+(a?"Width":"Height")]/
|
|
y};let I,D,y=c||1,N=g[0][u],X=!w&&g[1][u],U;f();g=D;g<x.min?(g=x.min,U=!0):g+I>x.max&&(g=x.max-I,U=!0);U?(N-=.8*(N-b[h][0]),"number"===typeof X&&(X-=.8*(X-b[h][1])),f()):b[h]=[N,X];p||(e[h]=D-v,e[m]=I);e=p?1/y:y;k[m]=I;k[h]=g;l[p?a?"scaleY":"scaleX":"scale"+q]=y;l["translate"+q]=e*v+(N-e*r)}reset(a,f){const d=this.chart,h=d.hoverSeries,g=d.hoverPoint,e=d.hoverPoints,b=d.tooltip,c=b&&b.shared?e:g;a&&c&&I(c).forEach(function(b){b.series.isCartesian&&"undefined"===typeof b.plotX&&(a=!1)});if(a)b&&c&&
|
|
I(c).length&&(b.refresh(c),b.shared&&e?e.forEach(function(b){b.setState(b.state,!0);b.series.isCartesian&&(b.series.xAxis.crosshair&&b.series.xAxis.drawCrosshair(null,b),b.series.yAxis.crosshair&&b.series.yAxis.drawCrosshair(null,b))}):g&&(g.setState(g.state,!0),d.axes.forEach(function(b){b.crosshair&&g.series[b.coll]===b&&b.drawCrosshair(null,g)})));else{if(g)g.onMouseOut();e&&e.forEach(function(b){b.setState()});if(h)h.onMouseOut();b&&b.hide(f);this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove());
|
|
d.axes.forEach(function(b){b.hideCrosshair()});this.hoverX=d.hoverPoints=d.hoverPoint=null}}runPointActions(a,f,g){const d=this.chart,h=d.tooltip&&d.tooltip.options.enabled?d.tooltip:void 0,e=h?h.shared:!1;let b=f||d.hoverPoint,c=b&&b.series||d.hoverSeries;f=this.getHoverData(b,c,d.series,(!a||"touchmove"!==a.type)&&(!!f||c&&c.directTouch&&this.isDirectTouch),e,a);b=f.hoverPoint;c=f.hoverSeries;const n=f.hoverPoints;f=c&&c.tooltipOptions.followPointer&&!c.tooltipOptions.split;const l=e&&c&&!c.noSharedTooltip;
|
|
if(b&&(g||b!==d.hoverPoint||h&&h.isHidden)){(d.hoverPoints||[]).forEach(function(b){-1===n.indexOf(b)&&b.setState()});if(d.hoverSeries!==c)c.onMouseOver();this.applyInactiveState(n);(n||[]).forEach(function(b){b.setState("hover")});d.hoverPoint&&d.hoverPoint.firePointEvent("mouseOut");if(!b.series)return;d.hoverPoints=n;d.hoverPoint=b;b.firePointEvent("mouseOver",void 0,()=>{h&&b&&h.refresh(l?n:b,a)})}else f&&h&&!h.isHidden&&(g=h.getAnchor([{}],a),d.isInsidePlot(g[0],g[1],{visiblePlotOnly:!0})&&h.updatePosition({plotX:g[0],
|
|
plotY:g[1]}));this.unDocMouseMove||(this.unDocMouseMove=E(d.container.ownerDocument,"mousemove",function(b){const c=A[D.hoverChartIndex];if(c)c.pointer.onDocumentMouseMove(b)}),this.eventsToUnbind.push(this.unDocMouseMove));d.axes.forEach(function(b){const c=w((b.crosshair||{}).snap,!0);let e;c&&((e=d.hoverPoint)&&e.series[b.coll]===b||(e=p(n,c=>c.series&&c.series[b.coll]===b)));e||!c?b.drawCrosshair(a,e):b.hideCrosshair()})}scaleGroups(a,f){const d=this.chart;d.series.forEach(function(h){const g=
|
|
a||h.getPlotBox();h.group&&(h.xAxis&&h.xAxis.zoomEnabled||d.mapView)&&(h.group.attr(g),h.markerGroup&&(h.markerGroup.attr(g),h.markerGroup.clip(f?d.clipRect:null)),h.dataLabelsGroup&&h.dataLabelsGroup.attr(g))});d.clipRect.attr(f||d.clipBox)}setDOMEvents(){const a=this.chart.container,f=a.ownerDocument;a.onmousedown=this.onContainerMouseDown.bind(this);a.onmousemove=this.onContainerMouseMove.bind(this);a.onclick=this.onContainerClick.bind(this);this.eventsToUnbind.push(E(a,"mouseenter",this.onContainerMouseEnter.bind(this)));
|
|
this.eventsToUnbind.push(E(a,"mouseleave",this.onContainerMouseLeave.bind(this)));D.unbindDocumentMouseUp||(D.unbindDocumentMouseUp=E(f,"mouseup",this.onDocumentMouseUp.bind(this)));let g=this.chart.renderTo.parentElement;for(;g&&"BODY"!==g.tagName;)this.eventsToUnbind.push(E(g,"scroll",()=>{delete this.chartPosition})),g=g.parentElement;z.hasTouch&&(this.eventsToUnbind.push(E(a,"touchstart",this.onContainerTouchStart.bind(this),{passive:!1})),this.eventsToUnbind.push(E(a,"touchmove",this.onContainerTouchMove.bind(this),
|
|
{passive:!1})),D.unbindDocumentTouchEnd||(D.unbindDocumentTouchEnd=E(f,"touchend",this.onDocumentTouchEnd.bind(this),{passive:!1})))}setHoverChartIndex(){const a=this.chart,f=z.charts[w(D.hoverChartIndex,-1)];if(f&&f!==a)f.pointer.onContainerMouseLeave({relatedTarget:a.container});f&&f.mouseIsDown||(D.hoverChartIndex=a.index)}touch(a,f){const d=this.chart;let h,g;this.setHoverChartIndex();1===a.touches.length?(a=this.normalize(a),(g=d.isInsidePlot(a.chartX-d.plotLeft,a.chartY-d.plotTop,{visiblePlotOnly:!0}))&&
|
|
!d.openMenu?(f&&this.runPointActions(a),"touchmove"===a.type&&(f=this.pinchDown,h=f[0]?4<=Math.sqrt(Math.pow(f[0].chartX-a.chartX,2)+Math.pow(f[0].chartY-a.chartY,2)):!1),w(h,!0)&&this.pinch(a)):f&&this.reset()):2===a.touches.length&&this.pinch(a)}touchSelect(a){return!(!this.chart.zooming.singleTouch||!a.touches||1!==a.touches.length)}zoomOption(a){const d=this.chart,f=d.inverted;var g=d.zooming.type||"";/touch/.test(a.type)&&(g=w(d.zooming.pinchType,g));this.zoomX=a=/x/.test(g);this.zoomY=g=/y/.test(g);
|
|
this.zoomHor=a&&!f||g&&f;this.zoomVert=g&&!f||a&&f;this.hasZoom=a||g}}(function(a){const d=[],f=[];a.compose=function(d){H.pushUnique(f,d)&&E(d,"beforeRender",function(){this.pointer=new a(this,this.options)})};a.dissolve=function(){for(let a=0,f=d.length;a<f;++a)d[a]();d.length=0}})(D||(D={}));"";return D});M(a,"Core/Legend/Legend.js",[a["Core/Animation/AnimationUtilities.js"],a["Core/Templating.js"],a["Core/Globals.js"],a["Core/Series/Point.js"],a["Core/Renderer/RendererUtilities.js"],a["Core/Utilities.js"]],
|
|
function(a,z,H,K,A,C){const {animObject:y,setAnimation:B}=a,{format:t}=z,{marginNames:r}=H,{distribute:k}=A,{addEvent:p,createElement:x,css:m,defined:l,discardElement:f,find:g,fireEvent:w,isNumber:I,merge:D,pick:d,relativeLength:h,stableSort:v,syncTimeout:q}=C;class u{constructor(e,b){this.allItems=[];this.contentGroup=this.box=void 0;this.display=!1;this.group=void 0;this.offsetWidth=this.maxLegendWidth=this.maxItemWidth=this.legendWidth=this.legendHeight=this.lastLineHeight=this.lastItemY=this.itemY=
|
|
this.itemX=this.itemMarginTop=this.itemMarginBottom=this.itemHeight=this.initialItemY=0;this.options=void 0;this.padding=0;this.pages=[];this.proximate=!1;this.scrollGroup=void 0;this.widthOption=this.totalItemWidth=this.titleHeight=this.symbolWidth=this.symbolHeight=0;this.chart=e;this.init(e,b)}init(e,b){this.chart=e;this.setOptions(b);b.enabled&&(this.render(),p(this.chart,"endResize",function(){this.legend.positionCheckboxes()}),p(this.chart,"render",()=>{this.proximate&&(this.proximatePositions(),
|
|
this.positionItems())}))}setOptions(e){const b=d(e.padding,8);this.options=e;this.chart.styledMode||(this.itemStyle=e.itemStyle,this.itemHiddenStyle=D(this.itemStyle,e.itemHiddenStyle));this.itemMarginTop=e.itemMarginTop;this.itemMarginBottom=e.itemMarginBottom;this.padding=b;this.initialItemY=b-5;this.symbolWidth=d(e.symbolWidth,16);this.pages=[];this.proximate="proximate"===e.layout&&!this.chart.inverted;this.baseline=void 0}update(e,b){const c=this.chart;this.setOptions(D(!0,this.options,e));this.destroy();
|
|
c.isDirtyLegend=c.isDirtyBox=!0;d(b,!0)&&c.redraw();w(this,"afterUpdate")}colorizeItem(e,b){const {group:c,label:a,line:d,symbol:f}=e.legendItem||{};if(c)c[b?"removeClass":"addClass"]("highcharts-legend-item-hidden");if(!this.chart.styledMode){const {itemHiddenStyle:c}=this,n=c.color,h=b?e.color||n:n,g=e.options&&e.options.marker;let l={fill:h};null===a||void 0===a?void 0:a.css(D(b?this.itemStyle:c));null===d||void 0===d?void 0:d.attr({stroke:h});f&&(g&&f.isMarker&&(l=e.pointAttribs(),b||(l.stroke=
|
|
l.fill=n)),f.attr(l))}w(this,"afterColorizeItem",{item:e,visible:b})}positionItems(){this.allItems.forEach(this.positionItem,this);this.chart.isResizing||this.positionCheckboxes()}positionItem(e){const {group:b,x:c=0,y:a=0}=e.legendItem||{};var d=this.options,f=d.symbolPadding;const h=!d.rtl;d=e.checkbox;b&&b.element&&(f={translateX:h?c:this.legendWidth-c-2*f-4,translateY:a},b[l(b.translateY)?"animate":"attr"](f,void 0,()=>{w(this,"afterPositionItem",{item:e})}));d&&(d.x=c,d.y=a)}destroyItem(e){const b=
|
|
e.checkbox,c=e.legendItem||{};for(const b of["group","label","line","symbol"])c[b]&&(c[b]=c[b].destroy());b&&f(b);e.legendItem=void 0}destroy(){for(const e of this.getAllItems())this.destroyItem(e);for(const e of"clipRect up down pager nav box title group".split(" "))this[e]&&(this[e]=this[e].destroy());this.display=null}positionCheckboxes(){const e=this.group&&this.group.alignAttr,b=this.clipHeight||this.legendHeight,c=this.titleHeight;let a;e&&(a=e.translateY,this.allItems.forEach(function(d){const f=
|
|
d.checkbox;let n;f&&(n=a+c+f.y+(this.scrollOffset||0)+3,m(f,{left:e.translateX+d.checkboxOffset+f.x-20+"px",top:n+"px",display:this.proximate||n>a-6&&n<a+b-6?"":"none"}))},this))}renderTitle(){var e=this.options;const b=this.padding,c=e.title;let a=0;c.text&&(this.title||(this.title=this.chart.renderer.label(c.text,b-3,b-4,void 0,void 0,void 0,e.useHTML,void 0,"legend-title").attr({zIndex:1}),this.chart.styledMode||this.title.css(c.style),this.title.add(this.group)),c.width||this.title.css({width:this.maxLegendWidth+
|
|
"px"}),e=this.title.getBBox(),a=e.height,this.offsetWidth=e.width,this.contentGroup.attr({translateY:a}));this.titleHeight=a}setText(e){const b=this.options;e.legendItem.label.attr({text:b.labelFormat?t(b.labelFormat,e,this.chart):b.labelFormatter.call(e)})}renderItem(e){const b=e.legendItem=e.legendItem||{};var c=this.chart,a=c.renderer;const f=this.options,h=this.symbolWidth,g=f.symbolPadding||0,l=this.itemStyle,k=this.itemHiddenStyle,q="horizontal"===f.layout?d(f.itemDistance,20):0,m=!f.rtl,u=
|
|
!e.series,p=!u&&e.series.drawLegendSymbol?e.series:e;var v=p.options;const x=this.createCheckboxForItem&&v&&v.showCheckbox,w=f.useHTML,r=e.options.className;let N=b.label;v=h+g+q+(x?20:0);N||(b.group=a.g("legend-item").addClass("highcharts-"+p.type+"-series highcharts-color-"+e.colorIndex+(r?" "+r:"")+(u?" highcharts-series-"+e.index:"")).attr({zIndex:1}).add(this.scrollGroup),b.label=N=a.text("",m?h+g:-g,this.baseline||0,w),c.styledMode||N.css(D(e.visible?l:k)),N.attr({align:m?"left":"right",zIndex:2}).add(b.group),
|
|
this.baseline||(this.fontMetrics=a.fontMetrics(N),this.baseline=this.fontMetrics.f+3+this.itemMarginTop,N.attr("y",this.baseline),this.symbolHeight=d(f.symbolHeight,this.fontMetrics.f),f.squareSymbol&&(this.symbolWidth=d(f.symbolWidth,Math.max(this.symbolHeight,16)),v=this.symbolWidth+g+q+(x?20:0),m&&N.attr("x",this.symbolWidth+g))),p.drawLegendSymbol(this,e),this.setItemEvents&&this.setItemEvents(e,N,w));x&&!e.checkbox&&this.createCheckboxForItem&&this.createCheckboxForItem(e);this.colorizeItem(e,
|
|
e.visible);!c.styledMode&&l.width||N.css({width:(f.itemWidth||this.widthOption||c.spacingBox.width)-v+"px"});this.setText(e);c=N.getBBox();a=this.fontMetrics&&this.fontMetrics.h||0;e.itemWidth=e.checkboxOffset=f.itemWidth||b.labelWidth||c.width+v;this.maxItemWidth=Math.max(this.maxItemWidth,e.itemWidth);this.totalItemWidth+=e.itemWidth;this.itemHeight=e.itemHeight=Math.round(b.labelHeight||(c.height>1.5*a?c.height:a))}layoutItem(e){var b=this.options;const c=this.padding,a="horizontal"===b.layout,
|
|
f=e.itemHeight,h=this.itemMarginBottom,g=this.itemMarginTop,l=a?d(b.itemDistance,20):0,k=this.maxLegendWidth;b=b.alignColumns&&this.totalItemWidth>k?this.maxItemWidth:e.itemWidth;const q=e.legendItem||{};a&&this.itemX-c+b>k&&(this.itemX=c,this.lastLineHeight&&(this.itemY+=g+this.lastLineHeight+h),this.lastLineHeight=0);this.lastItemY=g+this.itemY+h;this.lastLineHeight=Math.max(f,this.lastLineHeight);q.x=this.itemX;q.y=this.itemY;a?this.itemX+=b:(this.itemY+=g+f+h,this.lastLineHeight=f);this.offsetWidth=
|
|
this.widthOption||Math.max((a?this.itemX-c-(e.checkbox?0:l):b)+c,this.offsetWidth)}getAllItems(){let e=[];this.chart.series.forEach(function(b){const c=b&&b.options;b&&d(c.showInLegend,l(c.linkedTo)?!1:void 0,!0)&&(e=e.concat((b.legendItem||{}).labels||("point"===c.legendType?b.data:b)))});w(this,"afterGetAllItems",{allItems:e});return e}getAlignment(){const e=this.options;return this.proximate?e.align.charAt(0)+"tv":e.floating?"":e.align.charAt(0)+e.verticalAlign.charAt(0)+e.layout.charAt(0)}adjustMargins(e,
|
|
b){const c=this.chart,a=this.options,f=this.getAlignment();f&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(n,h){n.test(f)&&!l(e[h])&&(c[r[h]]=Math.max(c[r[h]],c.legend[(h+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][h]*a[h%2?"x":"y"]+d(a.margin,12)+b[h]+(c.titleOffset[h]||0)))})}proximatePositions(){const e=this.chart,b=[],c="left"===this.options.align;this.allItems.forEach(function(a){var d;var f=c;let n;a.yAxis&&(a.xAxis.options.reversed&&(f=!f),a.points&&(d=
|
|
g(f?a.points:a.points.slice(0).reverse(),function(b){return I(b.plotY)})),f=this.itemMarginTop+a.legendItem.label.getBBox().height+this.itemMarginBottom,n=a.yAxis.top-e.plotTop,a.visible?(d=d?d.plotY:a.yAxis.height,d+=n-.3*f):d=n+a.yAxis.height,b.push({target:d,size:f,item:a}))},this);let a;for(const c of k(b,e.plotHeight))a=c.item.legendItem||{},I(c.pos)&&(a.y=e.plotTop-e.spacing[0]+c.pos)}render(){const e=this.chart,b=e.renderer,c=this.options,a=this.padding;var d=this.getAllItems();let f,g=this.group,
|
|
l=this.box;this.itemX=a;this.itemY=this.initialItemY;this.lastItemY=this.offsetWidth=0;this.widthOption=h(c.width,e.spacingBox.width-a);var k=e.spacingBox.width-2*a-c.x;-1<["rm","lm"].indexOf(this.getAlignment().substring(0,2))&&(k/=2);this.maxLegendWidth=this.widthOption||k;g||(this.group=g=b.g("legend").addClass(c.className||"").attr({zIndex:7}).add(),this.contentGroup=b.g().attr({zIndex:1}).add(g),this.scrollGroup=b.g().add(this.contentGroup));this.renderTitle();v(d,(b,c)=>(b.options&&b.options.legendIndex||
|
|
0)-(c.options&&c.options.legendIndex||0));c.reversed&&d.reverse();this.allItems=d;this.display=k=!!d.length;this.itemHeight=this.totalItemWidth=this.maxItemWidth=this.lastLineHeight=0;d.forEach(this.renderItem,this);d.forEach(this.layoutItem,this);d=(this.widthOption||this.offsetWidth)+a;f=this.lastItemY+this.lastLineHeight+this.titleHeight;f=this.handleOverflow(f);f+=a;l||(this.box=l=b.rect().addClass("highcharts-legend-box").attr({r:c.borderRadius}).add(g));e.styledMode||l.attr({stroke:c.borderColor,
|
|
"stroke-width":c.borderWidth||0,fill:c.backgroundColor||"none"}).shadow(c.shadow);if(0<d&&0<f)l[l.placed?"animate":"attr"](l.crisp.call({},{x:0,y:0,width:d,height:f},l.strokeWidth()));g[k?"show":"hide"]();e.styledMode&&"none"===g.getStyle("display")&&(d=f=0);this.legendWidth=d;this.legendHeight=f;k&&this.align();this.proximate||this.positionItems();w(this,"afterRender")}align(e=this.chart.spacingBox){const b=this.chart,c=this.options;let a=e.y;/(lth|ct|rth)/.test(this.getAlignment())&&0<b.titleOffset[0]?
|
|
a+=b.titleOffset[0]:/(lbh|cb|rbh)/.test(this.getAlignment())&&0<b.titleOffset[2]&&(a-=b.titleOffset[2]);a!==e.y&&(e=D(e,{y:a}));b.hasRendered||(this.group.placed=!1);this.group.align(D(c,{width:this.legendWidth,height:this.legendHeight,verticalAlign:this.proximate?"top":c.verticalAlign}),!0,e)}handleOverflow(e){const b=this,c=this.chart,a=c.renderer,f=this.options;var h=f.y;const g="top"===f.verticalAlign,l=this.padding,k=f.maxHeight,q=f.navigation,m=d(q.animation,!0),u=q.arrowSize||12,p=this.pages,
|
|
v=this.allItems,x=function(c){"number"===typeof c?I.attr({height:c}):I&&(b.clipRect=I.destroy(),b.contentGroup.clip());b.contentGroup.div&&(b.contentGroup.div.style.clip=c?"rect("+l+"px,9999px,"+(l+c)+"px,0)":"auto")},w=function(e){b[e]=a.circle(0,0,1.3*u).translate(u/2,u/2).add(U);c.styledMode||b[e].attr("fill","rgba(0,0,0,0.0001)");return b[e]};let r,N,t;h=c.spacingBox.height+(g?-h:h)-l;let U=this.nav,I=this.clipRect;"horizontal"!==f.layout||"middle"===f.verticalAlign||f.floating||(h/=2);k&&(h=
|
|
Math.min(h,k));p.length=0;e&&0<h&&e>h&&!1!==q.enabled?(this.clipHeight=r=Math.max(h-20-this.titleHeight-l,0),this.currentPage=d(this.currentPage,1),this.fullHeight=e,v.forEach((b,c)=>{t=b.legendItem||{};b=t.y||0;const e=Math.round(t.label.getBBox().height);let a=p.length;if(!a||b-p[a-1]>r&&(N||b)!==p[a-1])p.push(N||b),a++;t.pageIx=a-1;N&&((v[c-1].legendItem||{}).pageIx=a-1);c===v.length-1&&b+e-p[a-1]>r&&b>p[a-1]&&(p.push(b),t.pageIx=a);b!==N&&(N=b)}),I||(I=b.clipRect=a.clipRect(0,l-2,9999,0),b.contentGroup.clip(I)),
|
|
x(r),U||(this.nav=U=a.g().attr({zIndex:1}).add(this.group),this.up=a.symbol("triangle",0,0,u,u).add(U),w("upTracker").on("click",function(){b.scroll(-1,m)}),this.pager=a.text("",15,10).addClass("highcharts-legend-navigation"),!c.styledMode&&q.style&&this.pager.css(q.style),this.pager.add(U),this.down=a.symbol("triangle-down",0,0,u,u).add(U),w("downTracker").on("click",function(){b.scroll(1,m)})),b.scroll(0),e=h):U&&(x(),this.nav=U.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0);
|
|
return e}scroll(e,b){const c=this.chart,a=this.pages,f=a.length,h=this.clipHeight,g=this.options.navigation,l=this.pager,k=this.padding;let m=this.currentPage+e;m>f&&(m=f);0<m&&("undefined"!==typeof b&&B(b,c),this.nav.attr({translateX:k,translateY:h+this.padding+7+this.titleHeight,visibility:"inherit"}),[this.up,this.upTracker].forEach(function(b){b.attr({"class":1===m?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"})}),l.attr({text:m+"/"+f}),[this.down,this.downTracker].forEach(function(b){b.attr({x:18+
|
|
this.pager.getBBox().width,"class":m===f?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"})},this),c.styledMode||(this.up.attr({fill:1===m?g.inactiveColor:g.activeColor}),this.upTracker.css({cursor:1===m?"default":"pointer"}),this.down.attr({fill:m===f?g.inactiveColor:g.activeColor}),this.downTracker.css({cursor:m===f?"default":"pointer"})),this.scrollOffset=-a[m-1]+this.initialItemY,this.scrollGroup.animate({translateY:this.scrollOffset}),this.currentPage=m,this.positionCheckboxes(),
|
|
e=y(d(b,c.renderer.globalAnimation,!0)),q(()=>{w(this,"afterScroll",{currentPage:m})},e.duration))}setItemEvents(e,b,c){const a=this,d=e.legendItem||{},f=a.chart.renderer.boxWrapper,h=e instanceof K,g="highcharts-legend-"+(h?"point":"series")+"-active",l=a.chart.styledMode;c=c?[b,d.symbol]:[d.group];const k=b=>{a.allItems.forEach(c=>{e!==c&&[c].concat(c.linkedSeries||[]).forEach(c=>{c.setState(b,!h)})})};for(const d of c)if(d)d.on("mouseover",function(){e.visible&&k("inactive");e.setState("hover");
|
|
e.visible&&f.addClass(g);l||b.css(a.options.itemHoverStyle)}).on("mouseout",function(){a.chart.styledMode||b.css(D(e.visible?a.itemStyle:a.itemHiddenStyle));k("");f.removeClass(g);e.setState()}).on("click",function(b){const c=function(){e.setVisible&&e.setVisible();k(e.visible?"inactive":"")};f.removeClass(g);b={browserEvent:b};e.firePointEvent?e.firePointEvent("legendItemClick",b,c):w(e,"legendItemClick",b,c)})}createCheckboxForItem(a){a.checkbox=x("input",{type:"checkbox",className:"highcharts-legend-checkbox",
|
|
checked:a.selected,defaultChecked:a.selected},this.options.itemCheckboxStyle,this.chart.container);p(a.checkbox,"click",function(b){w(a.series||a,"checkboxClick",{checked:b.target.checked,item:a},function(){a.select()})})}}(function(a){const b=[];a.compose=function(c){C.pushUnique(b,c)&&p(c,"beforeMargins",function(){this.legend=new a(this,this.options.legend)})}})(u||(u={}));"";return u});M(a,"Core/Legend/LegendSymbol.js",[a["Core/Utilities.js"]],function(a){const {extend:y,merge:H,pick:K}=a;var A;
|
|
(function(a){a.lineMarker=function(a,B){B=this.legendItem=this.legendItem||{};var t=this.options;const r=a.symbolWidth,k=a.symbolHeight,p=k/2,x=this.chart.renderer,m=B.group;a=a.baseline-Math.round(.3*a.fontMetrics.b);let l={},f=t.marker,g=0;this.chart.styledMode||(l={"stroke-width":Math.min(t.lineWidth||0,24)},t.dashStyle?l.dashstyle=t.dashStyle:"square"!==t.linecap&&(l["stroke-linecap"]="round"));B.line=x.path().addClass("highcharts-graph").attr(l).add(m);l["stroke-linecap"]&&(g=Math.min(B.line.strokeWidth(),
|
|
r)/2);r&&B.line.attr({d:[["M",g,a],["L",r-g,a]]});f&&!1!==f.enabled&&r&&(t=Math.min(K(f.radius,p),p),0===this.symbol.indexOf("url")&&(f=H(f,{width:k,height:k}),t=0),B.symbol=B=x.symbol(this.symbol,r/2-t,a-t,2*t,2*t,y({context:"legend"},f)).addClass("highcharts-point").add(m),B.isMarker=!0)};a.rectangle=function(a,y){y=y.legendItem||{};const t=a.symbolHeight,r=a.options.squareSymbol;y.symbol=this.chart.renderer.rect(r?(a.symbolWidth-t)/2:0,a.baseline-t+1,r?t:a.symbolWidth,t,K(a.options.symbolRadius,
|
|
t/2)).addClass("highcharts-point").attr({zIndex:3}).add(y.group)}})(A||(A={}));return A});M(a,"Core/Series/SeriesDefaults.js",[],function(){return{lineWidth:1,allowPointSelect:!1,crisp:!0,showCheckbox:!1,animation:{duration:1E3},enableMouseTracking:!0,events:{},marker:{enabledThreshold:2,lineColor:"#ffffff",lineWidth:0,radius:4,states:{normal:{animation:!0},hover:{animation:{duration:150},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc",lineColor:"#000000",lineWidth:2}}},point:{events:{}},
|
|
dataLabels:{animation:{},align:"center",borderWidth:0,defer:!0,formatter:function(){const {numberFormatter:a}=this.series.chart;return"number"!==typeof this.y?"":a(this.y,-1)},padding:5,style:{fontSize:"0.7em",fontWeight:"bold",color:"contrast",textOutline:"1px contrast"},verticalAlign:"bottom",x:0,y:0},cropThreshold:300,opacity:1,pointRange:0,softThreshold:!0,states:{normal:{animation:!0},hover:{animation:{duration:150},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},
|
|
inactive:{animation:{duration:150},opacity:.2}},stickyTracking:!0,turboThreshold:1E3,findNearestPointBy:"x"}});M(a,"Core/Series/SeriesRegistry.js",[a["Core/Globals.js"],a["Core/Defaults.js"],a["Core/Series/Point.js"],a["Core/Utilities.js"]],function(a,z,H,K){const {defaultOptions:y}=z,{extendClass:C,merge:E}=K;var B;(function(t){function r(a,p){const k=y.plotOptions||{},m=p.defaultOptions,l=p.prototype;l.type=a;l.pointClass||(l.pointClass=H);m&&(k[a]=m);t.seriesTypes[a]=p}t.seriesTypes=a.seriesTypes;
|
|
t.registerSeriesType=r;t.seriesType=function(a,p,x,m,l){const f=y.plotOptions||{};p=p||"";f[a]=E(f[p],x);r(a,C(t.seriesTypes[p]||function(){},m));t.seriesTypes[a].prototype.type=a;l&&(t.seriesTypes[a].prototype.pointClass=C(H,l));return t.seriesTypes[a]}})(B||(B={}));return B});M(a,"Core/Series/Series.js",[a["Core/Animation/AnimationUtilities.js"],a["Core/Defaults.js"],a["Core/Foundation.js"],a["Core/Globals.js"],a["Core/Legend/LegendSymbol.js"],a["Core/Series/Point.js"],a["Core/Series/SeriesDefaults.js"],
|
|
a["Core/Series/SeriesRegistry.js"],a["Core/Renderer/SVG/SVGElement.js"],a["Core/Utilities.js"]],function(a,z,H,K,A,C,E,B,t,r){const {animObject:k,setAnimation:p}=a,{defaultOptions:x}=z,{registerEventOptions:m}=H,{hasTouch:l,svg:f,win:g}=K,{seriesTypes:w}=B,{arrayMax:I,arrayMin:D,clamp:d,correctFloat:h,defined:v,diffObjects:q,erase:u,error:e,extend:b,find:c,fireEvent:n,getClosestDistance:J,getNestedProperty:F,insertItem:L,isArray:y,isNumber:P,isString:O,merge:Q,objectEach:V,pick:G,removeEvent:ca,splat:ea,
|
|
syncTimeout:aa}=r;class Y{constructor(){this.zones=this.yAxis=this.xAxis=this.userOptions=this.tooltipOptions=this.processedYData=this.processedXData=this.points=this.options=this.linkedSeries=this.index=this.eventsToUnbind=this.eventOptions=this.data=this.chart=this._i=void 0}init(c,a){n(this,"init",{options:a});const e=this,d=c.series;this.eventsToUnbind=[];e.chart=c;e.options=e.setOptions(a);a=e.options;e.linkedSeries=[];e.bindAxes();b(e,{name:a.name,state:"",visible:!1!==a.visible,selected:!0===
|
|
a.selected});m(this,a);const f=a.events;if(f&&f.click||a.point&&a.point.events&&a.point.events.click||a.allowPointSelect)c.runTrackerClick=!0;e.getColor();e.getSymbol();e.parallelArrays.forEach(function(b){e[b+"Data"]||(e[b+"Data"]=[])});e.isCartesian&&(c.hasCartesianSeries=!0);let h;d.length&&(h=d[d.length-1]);e._i=G(h&&h._i,-1)+1;e.opacity=e.options.opacity;c.orderItems("series",L(this,d));a.dataSorting&&a.dataSorting.enabled?e.setDataSortingOptions():e.points||e.data||e.setData(a.data,!1);n(this,
|
|
"afterInit")}is(b){return w[b]&&this instanceof w[b]}bindAxes(){const b=this,c=b.options,a=b.chart;let d;n(this,"bindAxes",null,function(){(b.axisTypes||[]).forEach(function(f){a[f].forEach(function(a){d=a.options;if(G(c[f],0)===a.index||"undefined"!==typeof c[f]&&c[f]===d.id)L(b,a.series),b[f]=a,a.isDirty=!0});b[f]||b.optionalAxis===f||e(18,!0,a)})});n(this,"afterBindAxes")}updateParallelArrays(b,c,a){const e=b.series,d=P(c)?function(a){const d="y"===a&&e.toYData?e.toYData(b):b[a];e[a+"Data"][c]=
|
|
d}:function(b){Array.prototype[c].apply(e[b+"Data"],a)};e.parallelArrays.forEach(d)}hasData(){return this.visible&&"undefined"!==typeof this.dataMax&&"undefined"!==typeof this.dataMin||this.visible&&this.yData&&0<this.yData.length}autoIncrement(b){var c=this.options;const a=c.pointIntervalUnit,e=c.relativeXValue,d=this.chart.time;let f=this.xIncrement,h;f=G(f,c.pointStart,0);this.pointInterval=h=G(this.pointInterval,c.pointInterval,1);e&&P(b)&&(h*=b);a&&(c=new d.Date(f),"day"===a?d.set("Date",c,d.get("Date",
|
|
c)+h):"month"===a?d.set("Month",c,d.get("Month",c)+h):"year"===a&&d.set("FullYear",c,d.get("FullYear",c)+h),h=c.getTime()-f);if(e&&P(b))return f+h;this.xIncrement=f+h;return f}setDataSortingOptions(){const c=this.options;b(this,{requireSorting:!1,sorted:!1,enabledDataSorting:!0,allowDG:!1});v(c.pointRange)||(c.pointRange=1)}setOptions(b){var c,a;const e=this.chart;var d=e.options.plotOptions,f=e.userOptions||{};const h=Q(b);b=e.styledMode;const g={plotOptions:d,userOptions:h};n(this,"setOptions",
|
|
g);const l=g.plotOptions[this.type];f=f.plotOptions||{};const k=f.series||{},q=x.plotOptions[this.type]||{},m=f[this.type]||{};this.userOptions=g.userOptions;d=Q(l,d.series,m,h);this.tooltipOptions=Q(x.tooltip,null===(c=x.plotOptions.series)||void 0===c?void 0:c.tooltip,null===q||void 0===q?void 0:q.tooltip,e.userOptions.tooltip,null===(a=f.series)||void 0===a?void 0:a.tooltip,m.tooltip,h.tooltip);this.stickyTracking=G(h.stickyTracking,m.stickyTracking,k.stickyTracking,this.tooltipOptions.shared&&
|
|
!this.noSharedTooltip?!0:d.stickyTracking);null===l.marker&&delete d.marker;this.zoneAxis=d.zoneAxis;a=this.zones=(d.zones||[]).slice();!d.negativeColor&&!d.negativeFillColor||d.zones||(c={value:d[this.zoneAxis+"Threshold"]||d.threshold||0,className:"highcharts-negative"},b||(c.color=d.negativeColor,c.fillColor=d.negativeFillColor),a.push(c));a.length&&v(a[a.length-1].value)&&a.push(b?{}:{color:this.color,fillColor:this.fillColor});n(this,"afterSetOptions",{options:d});return d}getName(){return G(this.options.name,
|
|
"Series "+(this.index+1))}getCyclic(b,c,a){const e=this.chart,d=`${b}Index`,f=`${b}Counter`,h=(null===a||void 0===a?void 0:a.length)||e.options.chart.colorCount;if(!c){var n=G("color"===b?this.options.colorIndex:void 0,this[d]);v(n)||(e.series.length||(e[f]=0),n=e[f]%h,e[f]+=1);a&&(c=a[n])}"undefined"!==typeof n&&(this[d]=n);this[b]=c}getColor(){this.chart.styledMode?this.getCyclic("color"):this.options.colorByPoint?this.color="#cccccc":this.getCyclic("color",this.options.color||x.plotOptions[this.type].color,
|
|
this.chart.options.colors)}getPointsCollection(){return(this.hasGroupedData?this.points:this.data)||[]}getSymbol(){this.getCyclic("symbol",this.options.marker.symbol,this.chart.options.symbols)}findPointIndex(b,a){const e=b.id,d=b.x,f=this.points;var h=this.options.dataSorting,n;let g,l;if(e)h=this.chart.get(e),h instanceof C&&(n=h);else if(this.linkedParent||this.enabledDataSorting||this.options.relativeXValue)if(n=c=>!c.touched&&c.index===b.index,h&&h.matchByName?n=c=>!c.touched&&c.name===b.name:
|
|
this.options.relativeXValue&&(n=c=>!c.touched&&c.options.x===b.x),n=c(f,n),!n)return;n&&(l=n&&n.index,"undefined"!==typeof l&&(g=!0));"undefined"===typeof l&&P(d)&&(l=this.xData.indexOf(d,a));-1!==l&&"undefined"!==typeof l&&this.cropped&&(l=l>=this.cropStart?l-this.cropStart:l);!g&&P(l)&&f[l]&&f[l].touched&&(l=void 0);return l}updateData(b,c){const a=this.options,e=a.dataSorting,d=this.points,f=[],h=this.requireSorting,n=b.length===d.length;let g,l,k,q=!0;this.xIncrement=null;b.forEach(function(b,
|
|
c){var l=v(b)&&this.pointClass.prototype.optionsToObject.call({series:this},b)||{};const q=l.x;if(l.id||P(q)){if(l=this.findPointIndex(l,k),-1===l||"undefined"===typeof l?f.push(b):d[l]&&b!==a.data[l]?(d[l].update(b,!1,null,!1),d[l].touched=!0,h&&(k=l+1)):d[l]&&(d[l].touched=!0),!n||c!==l||e&&e.enabled||this.hasDerivedData)g=!0}else f.push(b)},this);if(g)for(b=d.length;b--;)(l=d[b])&&!l.touched&&l.remove&&l.remove(!1,c);else!n||e&&e.enabled?q=!1:(b.forEach(function(b,c){b===d[c].y||d[c].destroyed||
|
|
d[c].update(b,!1,null,!1)}),f.length=0);d.forEach(function(b){b&&(b.touched=!1)});if(!q)return!1;f.forEach(function(b){this.addPoint(b,!1,null,null,!1)},this);null===this.xIncrement&&this.xData&&this.xData.length&&(this.xIncrement=I(this.xData),this.autoIncrement());return!0}setData(b,c=!0,a,d){var f;const h=this,n=h.points,g=n&&n.length||0,l=h.options,k=h.chart,q=l.dataSorting,m=h.xAxis,u=l.turboThreshold,p=this.xData,v=this.yData;var J=h.pointArrayMap;J=J&&J.length;const x=l.keys;let w,r=0,F=1,
|
|
N=null;if(!k.options.chart.allowMutatingData){l.data&&delete h.options.data;h.userOptions.data&&delete h.userOptions.data;var L=Q(!0,b)}b=L||b||[];L=b.length;q&&q.enabled&&(b=this.sortData(b));k.options.chart.allowMutatingData&&!1!==d&&L&&g&&!h.cropped&&!h.hasGroupedData&&h.visible&&!h.boosted&&(w=this.updateData(b,a));if(!w){h.xIncrement=null;h.colorCounter=0;this.parallelArrays.forEach(function(b){h[b+"Data"].length=0});if(u&&L>u)if(N=h.getFirstValidPoint(b),P(N))for(a=0;a<L;a++)p[a]=this.autoIncrement(),
|
|
v[a]=b[a];else if(y(N))if(J)if(N.length===J)for(a=0;a<L;a++)p[a]=this.autoIncrement(),v[a]=b[a];else for(a=0;a<L;a++)d=b[a],p[a]=d[0],v[a]=d.slice(1,J+1);else if(x&&(r=x.indexOf("x"),F=x.indexOf("y"),r=0<=r?r:0,F=0<=F?F:1),1===N.length&&(F=0),r===F)for(a=0;a<L;a++)p[a]=this.autoIncrement(),v[a]=b[a][F];else for(a=0;a<L;a++)d=b[a],p[a]=d[r],v[a]=d[F];else e(12,!1,k);else for(a=0;a<L;a++)d={series:h},h.pointClass.prototype.applyOptions.apply(d,[b[a]]),h.updateParallelArrays(d,a);v&&O(v[0])&&e(14,!0,
|
|
k);h.data=[];h.options.data=h.userOptions.data=b;for(a=g;a--;)null===(f=n[a])||void 0===f?void 0:f.destroy();m&&(m.minRange=m.userMinRange);h.isDirty=k.isDirtyBox=!0;h.isDirtyData=!!n;a=!1}"point"===l.legendType&&(this.processData(),this.generatePoints());c&&k.redraw(a)}sortData(b){const c=this,a=c.options.dataSorting.sortKey||"y",e=function(b,c){return v(c)&&b.pointClass.prototype.optionsToObject.call({series:b},c)||{}};b.forEach(function(a,d){b[d]=e(c,a);b[d].index=d},this);b.concat().sort((b,c)=>
|
|
{b=F(a,b);c=F(a,c);return c<b?-1:c>b?1:0}).forEach(function(b,c){b.x=c},this);c.linkedSeries&&c.linkedSeries.forEach(function(c){const a=c.options,d=a.data;a.dataSorting&&a.dataSorting.enabled||!d||(d.forEach(function(a,f){d[f]=e(c,a);b[f]&&(d[f].x=b[f].x,d[f].index=f)}),c.setData(d,!1))});return b}getProcessedData(b){const c=this;var a=c.xAxis,d=c.options;const f=d.cropThreshold,h=b||c.getExtremesFromAll||d.getExtremesFromAll,n=null===a||void 0===a?void 0:a.logarithmic,g=c.isCartesian;let l=0;let k;
|
|
b=c.xData;d=c.yData;let q=!1;const m=b.length;if(a){var u=a.getExtremes();k=u.min;u=u.max;q=!(!a.categories||a.names.length)}if(g&&c.sorted&&!h&&(!f||m>f||c.forceCrop))if(b[m-1]<k||b[0]>u)b=[],d=[];else if(c.yData&&(b[0]<k||b[m-1]>u)){var p=this.cropData(c.xData,c.yData,k,u);b=p.xData;d=p.yData;l=p.start;p=!0}a=J([n?b.map(n.log2lin):b],()=>c.requireSorting&&!q&&e(15,!1,c.chart));return{xData:b,yData:d,cropped:p,cropStart:l,closestPointRange:a}}processData(b){const c=this.xAxis;if(this.isCartesian&&
|
|
!this.isDirty&&!c.isDirty&&!this.yAxis.isDirty&&!b)return!1;b=this.getProcessedData();this.cropped=b.cropped;this.cropStart=b.cropStart;this.processedXData=b.xData;this.processedYData=b.yData;this.closestPointRange=this.basePointRange=b.closestPointRange;n(this,"afterProcessData")}cropData(b,c,a,e,d){const f=b.length;let h,n=0,g=f;d=G(d,this.cropShoulder);for(h=0;h<f;h++)if(b[h]>=a){n=Math.max(0,h-d);break}for(a=h;a<f;a++)if(b[a]>e){g=a+d;break}return{xData:b.slice(n,g),yData:c.slice(n,g),start:n,
|
|
end:g}}generatePoints(){var c=this.options;const a=this.processedData||c.data,e=this.processedXData,d=this.processedYData,f=this.pointClass,h=e.length,g=this.cropStart||0,l=this.hasGroupedData,k=c.keys,q=[];c=c.dataGrouping&&c.dataGrouping.groupAll?g:0;let m;let u,p,v=this.data;if(!v&&!l){var J=[];J.length=a.length;v=this.data=J}k&&l&&(this.options.keys=!1);for(p=0;p<h;p++)J=g+p,l?(u=(new f).init(this,[e[p]].concat(ea(d[p]))),u.dataGroup=this.groupMap[c+p],u.dataGroup.options&&(u.options=u.dataGroup.options,
|
|
b(u,u.dataGroup.options),delete u.dataLabels)):(u=v[J])||"undefined"===typeof a[J]||(v[J]=u=(new f).init(this,a[J],e[p])),u&&(u.index=l?c+p:J,q[p]=u);this.options.keys=k;if(v&&(h!==(m=v.length)||l))for(p=0;p<m;p++)p!==g||l||(p+=h),v[p]&&(v[p].destroyElements(),v[p].plotX=void 0);this.data=v;this.points=q;n(this,"afterGeneratePoints")}getXExtremes(b){return{min:D(b),max:I(b)}}getExtremes(b,c){const a=this.xAxis;var e=this.yAxis;const d=this.processedXData||this.xData,f=[],h=this.requireSorting?this.cropShoulder:
|
|
0;e=e?e.positiveValuesOnly:!1;let g,l=0,k=0,q=0;b=b||this.stackedYData||this.processedYData||[];const m=b.length;if(a){var u=a.getExtremes();l=u.min;k=u.max}for(g=0;g<m;g++){var p=d[g];u=b[g];var v=(P(u)||y(u))&&(u.length||0<u||!e);p=c||this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||!a||(d[g+h]||p)>=l&&(d[g-h]||p)<=k;if(v&&p)if(v=u.length)for(;v--;)P(u[v])&&(f[q++]=u[v]);else f[q++]=u}b={activeYData:f,dataMin:D(f),dataMax:I(f)};n(this,"afterGetExtremes",{dataExtremes:b});
|
|
return b}applyExtremes(){const b=this.getExtremes();this.dataMin=b.dataMin;this.dataMax=b.dataMax;return b}getFirstValidPoint(b){const c=b.length;let a=0,e=null;for(;null===e&&a<c;)e=b[a],a++;return e}translate(){var b;this.processedXData||this.processData();this.generatePoints();var c=this.options;const a=c.stacking,e=this.xAxis,f=e.categories,g=this.enabledDataSorting,l=this.yAxis,k=this.points,q=k.length,m=this.pointPlacementToXValue(),u=!!m,p=c.threshold;c=c.startFromThreshold?p:0;let J,x,w,r,
|
|
F=Number.MAX_VALUE;for(J=0;J<q;J++){const n=k[J],q=n.x;let L,t,O=n.y,N=n.low;const I=a&&(null===(b=l.stacking)||void 0===b?void 0:b.stacks[(this.negStacks&&O<(c?0:p)?"-":"")+this.stackKey]);x=e.translate(q,!1,!1,!1,!0,m);n.plotX=P(x)?h(d(x,-1E5,1E5)):void 0;a&&this.visible&&I&&I[q]&&(r=this.getStackIndicator(r,q,this.index),!n.isNull&&r.key&&(L=I[q],t=L.points[r.key]),L&&y(t)&&(N=t[0],O=t[1],N===c&&r.key===I[q].base&&(N=G(P(p)?p:l.min)),l.positiveValuesOnly&&v(N)&&0>=N&&(N=void 0),n.total=n.stackTotal=
|
|
G(L.total),n.percentage=v(n.y)&&L.total?n.y/L.total*100:void 0,n.stackY=O,this.irregularWidths||L.setOffset(this.pointXOffset||0,this.barW||0,void 0,void 0,void 0,this.xAxis)));n.yBottom=v(N)?d(l.translate(N,!1,!0,!1,!0),-1E5,1E5):void 0;this.dataModify&&(O=this.dataModify.modifyValue(O,J));let D;P(O)&&void 0!==n.plotX&&(D=l.translate(O,!1,!0,!1,!0),D=P(D)?d(D,-1E5,1E5):void 0);n.plotY=D;n.isInside=this.isPointInside(n);n.clientX=u?h(e.translate(q,!1,!1,!1,!0,m)):x;n.negative=(n.y||0)<(p||0);n.category=
|
|
G(f&&f[n.x],n.x);n.isNull||!1===n.visible||("undefined"!==typeof w&&(F=Math.min(F,Math.abs(x-w))),w=x);n.zone=this.zones.length?n.getZone():void 0;!n.graphic&&this.group&&g&&(n.isNew=!0)}this.closestPointRangePx=F;n(this,"afterTranslate")}getValidPoints(b,c,a){const e=this.chart;return(b||this.points||[]).filter(function(b){const {plotX:d,plotY:f}=b;return!a&&(b.isNull||!P(f))||c&&!e.isInsidePlot(d,f,{inverted:e.inverted})?!1:!1!==b.visible})}getClipBox(){const {chart:b,xAxis:c,yAxis:a}=this,e=Q(b.clipBox);
|
|
c&&c.len!==b.plotSizeX&&(e.width=c.len);a&&a.len!==b.plotSizeY&&(e.height=a.len);return e}getSharedClipKey(){return this.sharedClipKey=(this.options.xAxis||0)+","+(this.options.yAxis||0)}setClip(){const {chart:b,group:c,markerGroup:a}=this,e=b.sharedClips,d=b.renderer,f=this.getClipBox(),h=this.getSharedClipKey();let n=e[h];n?n.animate(f):e[h]=n=d.clipRect(f);c&&c.clip(!1===this.options.clip?void 0:n);a&&a.clip()}animate(b){const {chart:c,group:a,markerGroup:e}=this,d=c.inverted;var f=k(this.options.animation),
|
|
h=[this.getSharedClipKey(),f.duration,f.easing,f.defer].join();let n=c.sharedClips[h],g=c.sharedClips[h+"m"];if(b&&a)f=this.getClipBox(),n?n.attr("height",f.height):(f.width=0,d&&(f.x=c.plotHeight),n=c.renderer.clipRect(f),c.sharedClips[h]=n,g=c.renderer.clipRect({x:-99,y:-99,width:d?c.plotWidth+199:99,height:d?99:c.plotHeight+199}),c.sharedClips[h+"m"]=g),a.clip(n),e&&e.clip(g);else if(n&&!n.hasClass("highcharts-animating")){h=this.getClipBox();const b=f.step;e&&e.element.childNodes.length&&(f.step=
|
|
function(c,a){b&&b.apply(a,arguments);"width"===a.prop&&g&&g.element&&g.attr(d?"height":"width",c+99)});n.addClass("highcharts-animating").animate(h,f)}}afterAnimate(){this.setClip();V(this.chart.sharedClips,(b,c,a)=>{b&&!this.chart.container.querySelector(`[clip-path="url(#${b.id})"]`)&&(b.destroy(),delete a[c])});this.finishedAnimating=!0;n(this,"afterAnimate")}drawPoints(b=this.points){const c=this.chart,a=c.styledMode,{colorAxis:e,options:d}=this,f=d.marker,h=this[this.specialGroup||"markerGroup"],
|
|
n=this.xAxis,g=G(f.enabled,!n||n.isRadial?!0:null,this.closestPointRangePx>=f.enabledThreshold*f.radius);let l,k,q,m;let u,p;if(!1!==f.enabled||this._hasPointMarkers)for(l=0;l<b.length;l++){k=b[l];m=(q=k.graphic)?"animate":"attr";var v=k.marker||{};u=!!k.marker;if((g&&"undefined"===typeof v.enabled||v.enabled)&&!k.isNull&&!1!==k.visible){const b=G(v.symbol,this.symbol,"rect");p=this.markerAttribs(k,k.selected&&"select");this.enabledDataSorting&&(k.startXPos=n.reversed?-(p.width||0):n.width);const d=
|
|
!1!==k.isInside;!q&&d&&(0<(p.width||0)||k.hasImage)&&(k.graphic=q=c.renderer.symbol(b,p.x,p.y,p.width,p.height,u?v:f).add(h),this.enabledDataSorting&&c.hasRendered&&(q.attr({x:k.startXPos}),m="animate"));q&&"animate"===m&&q[d?"show":"hide"](d).animate(p);if(q)if(v=this.pointAttribs(k,a||!k.selected?void 0:"select"),a)e&&q.css({fill:v.fill});else q[m](v);q&&q.addClass(k.getClassName(),!0)}else q&&(k.graphic=q.destroy())}}markerAttribs(b,c){const a=this.options;var e=a.marker;const d=b.marker||{},f=
|
|
d.symbol||e.symbol,h={};let n=G(d.radius,e&&e.radius);c&&(e=e.states[c],c=d.states&&d.states[c],n=G(c&&c.radius,e&&e.radius,n&&n+(e&&e.radiusPlus||0)));b.hasImage=f&&0===f.indexOf("url");b.hasImage&&(n=0);b=b.pos();P(n)&&b&&(h.x=b[0]-n,h.y=b[1]-n,a.crisp&&(h.x=Math.floor(h.x)));n&&(h.width=h.height=2*n);return h}pointAttribs(b,c){var a=this.options.marker,e=b&&b.options;const d=e&&e.marker||{};var f=e&&e.color,h=b&&b.color;const n=b&&b.zone&&b.zone.color;let g=this.color;b=G(d.lineWidth,a.lineWidth);
|
|
e=1;g=f||n||h||g;f=d.fillColor||a.fillColor||g;h=d.lineColor||a.lineColor||g;c=c||"normal";a=a.states[c]||{};c=d.states&&d.states[c]||{};b=G(c.lineWidth,a.lineWidth,b+G(c.lineWidthPlus,a.lineWidthPlus,0));f=c.fillColor||a.fillColor||f;h=c.lineColor||a.lineColor||h;e=G(c.opacity,a.opacity,e);return{stroke:h,"stroke-width":b,fill:f,opacity:e}}destroy(b){const c=this,a=c.chart,e=/AppleWebKit\/533/.test(g.navigator.userAgent),d=c.data||[];let f,h,l,k;n(c,"destroy",{keepEventsForUpdate:b});this.removeEvents(b);
|
|
(c.axisTypes||[]).forEach(function(b){(k=c[b])&&k.series&&(u(k.series,c),k.isDirty=k.forceRedraw=!0)});c.legendItem&&c.chart.legend.destroyItem(c);for(h=d.length;h--;)(l=d[h])&&l.destroy&&l.destroy();c.clips&&c.clips.forEach(b=>b.destroy());r.clearTimeout(c.animationTimeout);V(c,function(b,c){b instanceof t&&!b.survive&&(f=e&&"group"===c?"hide":"destroy",b[f]())});a.hoverSeries===c&&(a.hoverSeries=void 0);u(a.series,c);a.orderItems("series");V(c,function(a,e){b&&"hcEvents"===e||delete c[e]})}applyZones(){const b=
|
|
this,c=this.chart,a=c.renderer,e=this.zones,f=this.clips||[],h=this.graph,n=this.area,g=Math.max(c.plotWidth,c.plotHeight),l=this[(this.zoneAxis||"y")+"Axis"],k=c.inverted;let q,m,u,p,v,J,x,w,r,F,L,t=!1;e.length&&(h||n)&&l&&"undefined"!==typeof l.min?(v=l.reversed,J=l.horiz,h&&!this.showLine&&h.hide(),n&&n.hide(),p=l.getExtremes(),e.forEach(function(e,O){q=v?J?c.plotWidth:0:J?0:l.toPixels(p.min)||0;q=d(G(m,q),0,g);m=d(Math.round(l.toPixels(G(e.value,p.max),!0)||0),0,g);t&&(q=m=l.toPixels(p.max));
|
|
x=Math.abs(q-m);w=Math.min(q,m);r=Math.max(q,m);l.isXAxis?(u={x:k?r:w,y:0,width:x,height:g},J||(u.x=c.plotHeight-u.x)):(u={x:0,y:k?r:w,width:g,height:x},J&&(u.y=c.plotWidth-u.y));f[O]?f[O].animate(u):f[O]=a.clipRect(u);F=b["zone-area-"+O];L=b["zone-graph-"+O];h&&L&&L.clip(f[O]);n&&F&&F.clip(f[O]);t=e.value>p.max;b.resetZones&&0===m&&(m=void 0)}),this.clips=f):b.visible&&(h&&h.show(),n&&n.show())}plotGroup(b,c,a,e,d){let f=this[b];const h=!f;a={visibility:a,zIndex:e||.1};"undefined"===typeof this.opacity||
|
|
this.chart.styledMode||"inactive"===this.state||(a.opacity=this.opacity);h&&(this[b]=f=this.chart.renderer.g().add(d));f.addClass("highcharts-"+c+" highcharts-series-"+this.index+" highcharts-"+this.type+"-series "+(v(this.colorIndex)?"highcharts-color-"+this.colorIndex+" ":"")+(this.options.className||"")+(f.hasClass("highcharts-tracker")?" highcharts-tracker":""),!0);f.attr(a)[h?"attr":"animate"](this.getPlotBox(c));return f}getPlotBox(b){let c=this.xAxis,a=this.yAxis;const e=this.chart;b=e.inverted&&
|
|
!e.polar&&c&&!1!==this.invertible&&"series"===b;e.inverted&&(c=a,a=this.xAxis);return{translateX:c?c.left:e.plotLeft,translateY:a?a.top:e.plotTop,rotation:b?90:0,rotationOriginX:b?(c.len-a.len)/2:0,rotationOriginY:b?(c.len+a.len)/2:0,scaleX:b?-1:1,scaleY:1}}removeEvents(b){b||ca(this);this.eventsToUnbind.length&&(this.eventsToUnbind.forEach(function(b){b()}),this.eventsToUnbind.length=0)}render(){const b=this;var c=b.chart;const a=b.options,e=k(a.animation),d=b.visible?"inherit":"hidden",f=a.zIndex,
|
|
h=b.hasRendered;c=c.seriesGroup;let g=b.finishedAnimating?0:e.duration;n(this,"render");b.plotGroup("group","series",d,f,c);b.markerGroup=b.plotGroup("markerGroup","markers",d,f,c);!1!==a.clip&&b.setClip();b.animate&&g&&b.animate(!0);b.drawGraph&&(b.drawGraph(),b.applyZones());b.visible&&b.drawPoints();b.drawDataLabels&&b.drawDataLabels();b.redrawPoints&&b.redrawPoints();b.drawTracker&&a.enableMouseTracking&&b.drawTracker();b.animate&&g&&b.animate();h||(g&&e.defer&&(g+=e.defer),b.animationTimeout=
|
|
aa(function(){b.afterAnimate()},g||0));b.isDirty=!1;b.hasRendered=!0;n(b,"afterRender")}redraw(){const b=this.isDirty||this.isDirtyData;this.translate();this.render();b&&delete this.kdTree}searchPoint(b,c){const a=this.xAxis,e=this.yAxis,d=this.chart.inverted;return this.searchKDTree({clientX:d?a.len-b.chartY+a.pos:b.chartX-a.pos,plotY:d?e.len-b.chartX+e.pos:b.chartY-e.pos},c,b)}buildKDTree(b){function c(b,e,d){var f=b&&b.length;let h;if(f)return h=a.kdAxisArray[e%d],b.sort(function(b,c){return b[h]-
|
|
c[h]}),f=Math.floor(f/2),{point:b[f],left:c(b.slice(0,f),e+1,d),right:c(b.slice(f+1),e+1,d)}}this.buildingKdTree=!0;const a=this,e=-1<a.options.findNearestPointBy.indexOf("y")?2:1;delete a.kdTree;aa(function(){a.kdTree=c(a.getValidPoints(null,!a.directTouch),e,e);a.buildingKdTree=!1},a.options.kdNow||b&&"touchstart"===b.type?0:1)}searchKDTree(b,c,a){function e(b,c,a,g){const l=c.point;var k=d.kdAxisArray[a%g];let q=l;var m=v(b[f])&&v(l[f])?Math.pow(b[f]-l[f],2):null;var u=v(b[h])&&v(l[h])?Math.pow(b[h]-
|
|
l[h],2):null;u=(m||0)+(u||0);l.dist=v(u)?Math.sqrt(u):Number.MAX_VALUE;l.distX=v(m)?Math.sqrt(m):Number.MAX_VALUE;k=b[k]-l[k];u=0>k?"left":"right";m=0>k?"right":"left";c[u]&&(u=e(b,c[u],a+1,g),q=u[n]<q[n]?u:l);c[m]&&Math.sqrt(k*k)<q[n]&&(b=e(b,c[m],a+1,g),q=b[n]<q[n]?b:q);return q}const d=this,f=this.kdAxisArray[0],h=this.kdAxisArray[1],n=c?"distX":"dist";c=-1<d.options.findNearestPointBy.indexOf("y")?2:1;this.kdTree||this.buildingKdTree||this.buildKDTree(a);if(this.kdTree)return e(b,this.kdTree,
|
|
c,c)}pointPlacementToXValue(){const {options:{pointPlacement:b,pointRange:c},xAxis:a}=this;let e=b;"between"===e&&(e=a.reversed?-.5:.5);return P(e)?e*(c||a.pointRange):0}isPointInside(b){const {chart:c,xAxis:a,yAxis:e}=this;return"undefined"!==typeof b.plotY&&"undefined"!==typeof b.plotX&&0<=b.plotY&&b.plotY<=(e?e.len:c.plotHeight)&&0<=b.plotX&&b.plotX<=(a?a.len:c.plotWidth)}drawTracker(){const b=this,c=b.options,a=c.trackByArea,e=[].concat(a?b.areaPath:b.graphPath),d=b.chart,h=d.pointer,g=d.renderer,
|
|
k=d.options.tooltip.snap,q=b.tracker,m=function(a){if(c.enableMouseTracking&&d.hoverSeries!==b)b.onMouseOver()},u="rgba(192,192,192,"+(f?.0001:.002)+")";q?q.attr({d:e}):b.graph&&(b.tracker=g.path(e).attr({visibility:b.visible?"inherit":"hidden",zIndex:2}).addClass(a?"highcharts-tracker-area":"highcharts-tracker-line").add(b.group),d.styledMode||b.tracker.attr({"stroke-linecap":"round","stroke-linejoin":"round",stroke:u,fill:a?u:"none","stroke-width":b.graph.strokeWidth()+(a?0:2*k)}),[b.tracker,b.markerGroup,
|
|
b.dataLabelsGroup].forEach(function(b){if(b&&(b.addClass("highcharts-tracker").on("mouseover",m).on("mouseout",function(b){h.onTrackerMouseOut(b)}),c.cursor&&!d.styledMode&&b.css({cursor:c.cursor}),l))b.on("touchstart",m)}));n(this,"afterDrawTracker")}addPoint(b,c,a,e,d){const f=this.options,h=this.data,g=this.chart;var l=this.xAxis;l=l&&l.hasNames&&l.names;const k=f.data,q=this.xData;let m,u;c=G(c,!0);const p={series:this};this.pointClass.prototype.applyOptions.apply(p,[b]);const v=p.x;u=q.length;
|
|
if(this.requireSorting&&v<q[u-1])for(m=!0;u&&q[u-1]>v;)u--;this.updateParallelArrays(p,"splice",[u,0,0]);this.updateParallelArrays(p,u);l&&p.name&&(l[v]=p.name);k.splice(u,0,b);if(m||this.processedData)this.data.splice(u,0,null),this.processData();"point"===f.legendType&&this.generatePoints();a&&(h[0]&&h[0].remove?h[0].remove(!1):(h.shift(),this.updateParallelArrays(p,"shift"),k.shift()));!1!==d&&n(this,"addPoint",{point:p});this.isDirtyData=this.isDirty=!0;c&&g.redraw(e)}removePoint(b,c,a){const e=
|
|
this,d=e.data,f=d[b],h=e.points,n=e.chart,g=function(){h&&h.length===d.length&&h.splice(b,1);d.splice(b,1);e.options.data.splice(b,1);e.updateParallelArrays(f||{series:e},"splice",[b,1]);f&&f.destroy();e.isDirty=!0;e.isDirtyData=!0;c&&n.redraw()};p(a,n);c=G(c,!0);f?f.firePointEvent("remove",null,g):g()}remove(b,c,a,e){function d(){f.destroy(e);h.isDirtyLegend=h.isDirtyBox=!0;h.linkSeries(e);G(b,!0)&&h.redraw(c)}const f=this,h=f.chart;!1!==a?n(f,"remove",null,d):d()}update(c,a){c=q(c,this.userOptions);
|
|
n(this,"update",{options:c});const d=this,f=d.chart;var h=d.userOptions;const g=d.initialType||d.type;var l=f.options.plotOptions;const k=w[g].prototype;var m=d.finishedAnimating&&{animation:!1};const u={};let p,v=["colorIndex","eventOptions","navigatorSeries","symbolIndex","baseSeries"],J=c.type||h.type||f.options.chart.type;const x=!(this.hasDerivedData||J&&J!==this.type||"undefined"!==typeof c.pointStart||"undefined"!==typeof c.pointInterval||"undefined"!==typeof c.relativeXValue||c.joinBy||c.mapData||
|
|
d.hasOptionChanged("dataGrouping")||d.hasOptionChanged("pointStart")||d.hasOptionChanged("pointInterval")||d.hasOptionChanged("pointIntervalUnit")||d.hasOptionChanged("keys"));J=J||g;x&&(v.push("data","isDirtyData","points","processedData","processedXData","processedYData","xIncrement","cropped","_hasPointMarkers","_hasPointLabels","clips","nodes","layout","level","mapMap","mapData","minY","maxY","minX","maxX"),!1!==c.visible&&v.push("area","graph"),d.parallelArrays.forEach(function(b){v.push(b+"Data")}),
|
|
c.data&&(c.dataSorting&&b(d.options.dataSorting,c.dataSorting),this.setData(c.data,!1)));c=Q(h,m,{index:"undefined"===typeof h.index?d.index:h.index,pointStart:G(l&&l.series&&l.series.pointStart,h.pointStart,d.xData[0])},!x&&{data:d.options.data},c);x&&c.data&&(c.data=d.options.data);v=["group","markerGroup","dataLabelsGroup","transformGroup"].concat(v);v.forEach(function(b){v[b]=d[b];delete d[b]});l=!1;if(w[J]){if(l=J!==d.type,d.remove(!1,!1,!1,!0),l)if(Object.setPrototypeOf)Object.setPrototypeOf(d,
|
|
w[J].prototype);else{m=Object.hasOwnProperty.call(d,"hcEvents")&&d.hcEvents;for(p in k)d[p]=void 0;b(d,w[J].prototype);m?d.hcEvents=m:delete d.hcEvents}}else e(17,!0,f,{missingModuleFor:J});v.forEach(function(b){d[b]=v[b]});d.init(f,c);if(x&&this.points){c=d.options;if(!1===c.visible)u.graphic=1,u.dataLabel=1;else if(!d._hasPointLabels){const {marker:b,dataLabels:a}=c;h=h.marker||{};!b||!1!==b.enabled&&h.symbol===b.symbol&&h.height===b.height&&h.width===b.width||(u.graphic=1);a&&!1===a.enabled&&(u.dataLabel=
|
|
1)}for(const b of this.points)b&&b.series&&(b.resolveColor(),Object.keys(u).length&&b.destroyElements(u),!1===c.showInLegend&&b.legendItem&&f.legend.destroyItem(b))}d.initialType=g;f.linkSeries();l&&d.linkedSeries.length&&(d.isDirtyData=!0);n(this,"afterUpdate");G(a,!0)&&f.redraw(x?void 0:!1)}setName(b){this.name=this.options.name=this.userOptions.name=b;this.chart.isDirtyLegend=!0}hasOptionChanged(b){const c=this.options[b],a=this.chart.options.plotOptions,e=this.userOptions[b];return e?c!==e:c!==
|
|
G(a&&a[this.type]&&a[this.type][b],a&&a.series&&a.series[b],c)}onMouseOver(){const b=this.chart,c=b.hoverSeries;b.pointer.setHoverChartIndex();if(c&&c!==this)c.onMouseOut();this.options.events.mouseOver&&n(this,"mouseOver");this.setState("hover");b.hoverSeries=this}onMouseOut(){const b=this.options,c=this.chart,a=c.tooltip,e=c.hoverPoint;c.hoverSeries=null;if(e)e.onMouseOut();this&&b.events.mouseOut&&n(this,"mouseOut");!a||this.stickyTracking||a.shared&&!this.noSharedTooltip||a.hide();c.series.forEach(function(b){b.setState("",
|
|
!0)})}setState(b,c){const a=this;var e=a.options;const d=a.graph,f=e.inactiveOtherPoints,h=e.states,n=G(h[b||"normal"]&&h[b||"normal"].animation,a.chart.options.chart.animation);let g=e.lineWidth,l=0,k=e.opacity;b=b||"";if(a.state!==b&&([a.group,a.markerGroup,a.dataLabelsGroup].forEach(function(c){c&&(a.state&&c.removeClass("highcharts-series-"+a.state),b&&c.addClass("highcharts-series-"+b))}),a.state=b,!a.chart.styledMode)){if(h[b]&&!1===h[b].enabled)return;b&&(g=h[b].lineWidth||g+(h[b].lineWidthPlus||
|
|
0),k=G(h[b].opacity,k));if(d&&!d.dashstyle&&P(g))for(e={"stroke-width":g},d.animate(e,n);a["zone-graph-"+l];)a["zone-graph-"+l].animate(e,n),l+=1;f||[a.group,a.markerGroup,a.dataLabelsGroup,a.labelBySeries].forEach(function(b){b&&b.animate({opacity:k},n)})}c&&f&&a.points&&a.setAllPointsToState(b||void 0)}setAllPointsToState(b){this.points.forEach(function(c){c.setState&&c.setState(b)})}setVisible(b,c){const a=this,e=a.chart,d=e.options.chart.ignoreHiddenSeries,f=a.visible,h=(a.visible=b=a.options.visible=
|
|
a.userOptions.visible="undefined"===typeof b?!f:b)?"show":"hide";["group","dataLabelsGroup","markerGroup","tracker","tt"].forEach(function(b){if(a[b])a[b][h]()});if(e.hoverSeries===a||(e.hoverPoint&&e.hoverPoint.series)===a)a.onMouseOut();a.legendItem&&e.legend.colorizeItem(a,b);a.isDirty=!0;a.options.stacking&&e.series.forEach(function(b){b.options.stacking&&b.visible&&(b.isDirty=!0)});a.linkedSeries.forEach(function(c){c.setVisible(b,!1)});d&&(e.isDirtyBox=!0);n(a,h);!1!==c&&e.redraw()}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}select(b){this.selected=
|
|
b=this.options.selected="undefined"===typeof b?!this.selected:b;this.checkbox&&(this.checkbox.checked=b);n(this,b?"select":"unselect")}shouldShowTooltip(b,c,a={}){a.series=this;a.visiblePlotOnly=!0;return this.chart.isInsidePlot(b,c,a)}drawLegendSymbol(b,c){var a;null===(a=A[this.options.legendSymbol||"rectangle"])||void 0===a?void 0:a.call(this,b,c)}}Y.defaultOptions=E;Y.types=B.seriesTypes;Y.registerType=B.registerSeriesType;b(Y.prototype,{axisTypes:["xAxis","yAxis"],coll:"series",colorCounter:0,
|
|
cropShoulder:1,directTouch:!1,isCartesian:!0,kdAxisArray:["clientX","plotY"],parallelArrays:["x","y"],pointClass:C,requireSorting:!0,sorted:!0});B.series=Y;"";"";return Y});M(a,"Core/Chart/Chart.js",[a["Core/Animation/AnimationUtilities.js"],a["Core/Axis/Axis.js"],a["Core/Defaults.js"],a["Core/Templating.js"],a["Core/Foundation.js"],a["Core/Globals.js"],a["Core/Renderer/RendererRegistry.js"],a["Core/Series/Series.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Renderer/SVG/SVGRenderer.js"],a["Core/Time.js"],
|
|
a["Core/Utilities.js"],a["Core/Renderer/HTML/AST.js"]],function(a,z,H,K,A,C,E,B,t,r,k,p,x){const {animate:m,animObject:l,setAnimation:f}=a,{defaultOptions:g,defaultTime:w}=H,{numberFormat:I}=K,{registerEventOptions:D}=A,{charts:d,doc:h,marginNames:v,svg:q,win:u}=C,{seriesTypes:e}=t,{addEvent:b,attr:c,createElement:n,css:J,defined:F,diffObjects:L,discardElement:y,erase:P,error:O,extend:Q,find:V,fireEvent:G,getStyle:ca,isArray:ea,isNumber:aa,isObject:Y,isString:N,merge:M,objectEach:U,pick:R,pInt:W,
|
|
relativeLength:Z,removeEvent:ha,splat:da,syncTimeout:ia,uniqueKey:ba}=p;class T{static chart(b,c,a){return new T(b,c,a)}constructor(b,c,a){this.series=this.renderTo=this.renderer=this.pointer=this.pointCount=this.plotWidth=this.plotTop=this.plotLeft=this.plotHeight=this.plotBox=this.options=this.numberFormatter=this.margin=this.labelCollectors=this.isResizing=this.index=this.eventOptions=this.container=this.colorCounter=this.clipBox=this.chartWidth=this.chartHeight=this.bounds=this.axisOffset=this.axes=
|
|
void 0;this.sharedClips={};this.zooming=this.yAxis=this.xAxis=this.userOptions=this.titleOffset=this.time=this.symbolCounter=this.spacingBox=this.spacing=void 0;this.getArgs(b,c,a)}getArgs(b,c,a){N(b)||b.nodeName?(this.renderTo=b,this.init(c,a)):this.init(b,c)}setZoomOptions(){const b=this.options.chart,c=b.zooming;this.zooming=Object.assign(Object.assign({},c),{type:R(b.zoomType,c.type),key:R(b.zoomKey,c.key),pinchType:R(b.pinchType,c.pinchType),singleTouch:R(b.zoomBySingleTouch,c.singleTouch,!1),
|
|
resetButton:M(c.resetButton,b.resetZoomButton)})}init(b,c){G(this,"init",{args:arguments},function(){const a=M(g,b),e=a.chart;this.userOptions=Q({},b);this.margin=[];this.spacing=[];this.bounds={h:{},v:{}};this.labelCollectors=[];this.callback=c;this.isResizing=0;this.options=a;this.axes=[];this.series=[];this.time=b.time&&Object.keys(b.time).length?new k(b.time):C.time;this.numberFormatter=e.numberFormatter||I;this.styledMode=e.styledMode;this.hasCartesianSeries=e.showAxes;this.index=d.length;d.push(this);
|
|
C.chartCount++;D(this,e);this.xAxis=[];this.yAxis=[];this.pointCount=this.colorCounter=this.symbolCounter=0;this.setZoomOptions();G(this,"afterInit");this.firstRender()})}initSeries(b){var c=this.options.chart;c=b.type||c.type;const a=e[c];a||O(17,!0,this,{missingModuleFor:c});c=new a;"function"===typeof c.init&&c.init(this,b);return c}setSeriesData(){this.getSeriesOrderByLinks().forEach(function(b){b.points||b.data||!b.enabledDataSorting||b.setData(b.options.data,!1)})}getSeriesOrderByLinks(){return this.series.concat().sort(function(b,
|
|
c){return b.linkedSeries.length||c.linkedSeries.length?c.linkedSeries.length-b.linkedSeries.length:0})}orderItems(b,c=0){const a=this[b],e=this.options[b]=da(this.options[b]).slice();b=this.userOptions[b]=this.userOptions[b]?da(this.userOptions[b]).slice():[];this.hasRendered&&(e.splice(c),b.splice(c));if(a)for(let d=c,f=a.length;d<f;++d)if(c=a[d])c.index=d,c instanceof B&&(c.name=c.getName()),c.options.isInternal||(e[d]=c.options,b[d]=c.userOptions)}isInsidePlot(b,c,a={}){const {inverted:e,plotBox:d,
|
|
plotLeft:f,plotTop:h,scrollablePlotBox:n}=this;var g=0;let l=0;a.visiblePlotOnly&&this.scrollingContainer&&({scrollLeft:g,scrollTop:l}=this.scrollingContainer);const k=a.series,q=a.visiblePlotOnly&&n||d;var m=a.inverted?c:b;c=a.inverted?b:c;b={x:m,y:c,isInsidePlot:!0,options:a};if(!a.ignoreX){const c=k&&(e&&!this.polar?k.yAxis:k.xAxis)||{pos:f,len:Infinity};m=a.paneCoordinates?c.pos+m:f+m;m>=Math.max(g+f,c.pos)&&m<=Math.min(g+f+q.width,c.pos+c.len)||(b.isInsidePlot=!1)}!a.ignoreY&&b.isInsidePlot&&
|
|
(g=!e&&a.axis&&!a.axis.isXAxis&&a.axis||k&&(e?k.xAxis:k.yAxis)||{pos:h,len:Infinity},a=a.paneCoordinates?g.pos+c:h+c,a>=Math.max(l+h,g.pos)&&a<=Math.min(l+h+q.height,g.pos+g.len)||(b.isInsidePlot=!1));G(this,"afterIsInsidePlot",b);return b.isInsidePlot}redraw(b){G(this,"beforeRedraw");const c=this.hasCartesianSeries?this.axes:this.colorAxis||[],a=this.series,e=this.pointer,d=this.legend,h=this.userOptions.legend,n=this.renderer,g=n.isHidden(),l=[];let k,q,m=this.isDirtyBox,u=this.isDirtyLegend,p;
|
|
n.rootFontSize=n.boxWrapper.getStyle("font-size");this.setResponsive&&this.setResponsive(!1);f(this.hasRendered?b:!1,this);g&&this.temporaryDisplay();this.layOutTitles(!1);for(b=a.length;b--;)if(p=a[b],p.options.stacking||p.options.centerInCategory)if(q=!0,p.isDirty){k=!0;break}if(k)for(b=a.length;b--;)p=a[b],p.options.stacking&&(p.isDirty=!0);a.forEach(function(b){b.isDirty&&("point"===b.options.legendType?("function"===typeof b.updateTotals&&b.updateTotals(),u=!0):h&&(h.labelFormatter||h.labelFormat)&&
|
|
(u=!0));b.isDirtyData&&G(b,"updatedData")});u&&d&&d.options.enabled&&(d.render(),this.isDirtyLegend=!1);q&&this.getStacks();c.forEach(function(b){b.updateNames();b.setScale()});this.getMargins();c.forEach(function(b){b.isDirty&&(m=!0)});c.forEach(function(b){const c=b.min+","+b.max;b.extKey!==c&&(b.extKey=c,l.push(function(){G(b,"afterSetExtremes",Q(b.eventArgs,b.getExtremes()));delete b.eventArgs}));(m||q)&&b.redraw()});m&&this.drawChartBox();G(this,"predraw");a.forEach(function(b){(m||b.isDirty)&&
|
|
b.visible&&b.redraw();b.isDirtyData=!1});e&&e.reset(!0);n.draw();G(this,"redraw");G(this,"render");g&&this.temporaryDisplay(!0);l.forEach(function(b){b.call()})}get(b){function c(c){return c.id===b||c.options&&c.options.id===b}const a=this.series;let e=V(this.axes,c)||V(this.series,c);for(let b=0;!e&&b<a.length;b++)e=V(a[b].points||[],c);return e}getAxes(){const b=this.options;G(this,"getAxes");for(const c of["xAxis","yAxis"]){const a=b[c]=da(b[c]||{});for(const b of a)new z(this,b,c)}G(this,"afterGetAxes")}getSelectedPoints(){return this.series.reduce((b,
|
|
c)=>{c.getPointsCollection().forEach(c=>{R(c.selectedStaging,c.selected)&&b.push(c)});return b},[])}getSelectedSeries(){return this.series.filter(function(b){return b.selected})}setTitle(b,c,a){this.applyDescription("title",b);this.applyDescription("subtitle",c);this.applyDescription("caption",void 0);this.layOutTitles(a)}applyDescription(b,c){const a=this,e=this.options[b]=M(this.options[b],c);let d=this[b];d&&c&&(this[b]=d=d.destroy());e&&!d&&(d=this.renderer.text(e.text,0,0,e.useHTML).attr({align:e.align,
|
|
"class":"highcharts-"+b,zIndex:e.zIndex||4}).add(),d.update=function(c,e){a.applyDescription(b,c);a.layOutTitles(e)},this.styledMode||d.css(Q("title"===b?{fontSize:this.options.isStock?"1em":"1.2em"}:{},e.style)),this[b]=d)}layOutTitles(b=!0){const c=[0,0,0],a=this.renderer,e=this.spacingBox;["title","subtitle","caption"].forEach(function(b){const d=this[b],f=this.options[b],h=f.verticalAlign||"top";b="title"===b?"top"===h?-3:0:"top"===h?c[0]+2:0;if(d){d.css({width:(f.width||e.width+(f.widthAdjust||
|
|
0))+"px"});const n=a.fontMetrics(d).b,g=Math.round(d.getBBox(f.useHTML).height);d.align(Q({y:"bottom"===h?n:b+n,height:g},f),!1,"spacingBox");f.floating||("top"===h?c[0]=Math.ceil(c[0]+g):"bottom"===h&&(c[2]=Math.ceil(c[2]+g)))}},this);c[0]&&"top"===(this.options.title.verticalAlign||"top")&&(c[0]+=this.options.title.margin);c[2]&&"bottom"===this.options.caption.verticalAlign&&(c[2]+=this.options.caption.margin);const d=!this.titleOffset||this.titleOffset.join(",")!==c.join(",");this.titleOffset=
|
|
c;G(this,"afterLayOutTitles");!this.isDirtyBox&&d&&(this.isDirtyBox=this.isDirtyLegend=d,this.hasRendered&&b&&this.isDirtyBox&&this.redraw())}getContainerBox(){return{width:ca(this.renderTo,"width",!0)||0,height:ca(this.renderTo,"height",!0)||0}}getChartSize(){var b=this.options.chart;const c=b.width;b=b.height;const a=this.getContainerBox();this.chartWidth=Math.max(0,c||a.width||600);this.chartHeight=Math.max(0,Z(b,this.chartWidth)||(1<a.height?a.height:400));this.containerBox=a}temporaryDisplay(b){let c=
|
|
this.renderTo;if(b)for(;c&&c.style;)c.hcOrigStyle&&(J(c,c.hcOrigStyle),delete c.hcOrigStyle),c.hcOrigDetached&&(h.body.removeChild(c),c.hcOrigDetached=!1),c=c.parentNode;else for(;c&&c.style;){h.body.contains(c)||c.parentNode||(c.hcOrigDetached=!0,h.body.appendChild(c));if("none"===ca(c,"display",!1)||c.hcOricDetached)c.hcOrigStyle={display:c.style.display,height:c.style.height,overflow:c.style.overflow},b={display:"block",overflow:"hidden"},c!==this.renderTo&&(b.height=0),J(c,b),c.offsetWidth||c.style.setProperty("display",
|
|
"block","important");c=c.parentNode;if(c===h.body)break}}setClassName(b){this.container.className="highcharts-container "+(b||"")}getContainer(){const b=this.options,a=b.chart;var e=ba();let g,l=this.renderTo;l||(this.renderTo=l=a.renderTo);N(l)&&(this.renderTo=l=h.getElementById(l));l||O(13,!0,this);var k=W(c(l,"data-highcharts-chart"));aa(k)&&d[k]&&d[k].hasRendered&&d[k].destroy();c(l,"data-highcharts-chart",this.index);l.innerHTML=x.emptyHTML;a.skipClone||l.offsetWidth||this.temporaryDisplay();
|
|
this.getChartSize();k=this.chartWidth;const m=this.chartHeight;J(l,{overflow:"hidden"});this.styledMode||(g=Q({position:"relative",overflow:"hidden",width:k+"px",height:m+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)",userSelect:"none","touch-action":"manipulation",outline:"none"},a.style||{}));this.container=e=n("div",{id:e},g,l);this._cursor=e.style.cursor;this.renderer=new (a.renderer||!q?E.getRendererType(a.renderer):r)(e,k,m,void 0,a.forExport,
|
|
b.exporting&&b.exporting.allowHTML,this.styledMode);this.containerBox=this.getContainerBox();f(void 0,this);this.setClassName(a.className);if(this.styledMode)for(const c in b.defs)this.renderer.definition(b.defs[c]);else this.renderer.setStyle(a.style);this.renderer.chartIndex=this.index;G(this,"afterGetContainer")}getMargins(b){const {spacing:c,margin:a,titleOffset:e}=this;this.resetMargins();e[0]&&!F(a[0])&&(this.plotTop=Math.max(this.plotTop,e[0]+c[0]));e[2]&&!F(a[2])&&(this.marginBottom=Math.max(this.marginBottom,
|
|
e[2]+c[2]));this.legend&&this.legend.display&&this.legend.adjustMargins(a,c);G(this,"getMargins");b||this.getAxisMargins()}getAxisMargins(){const b=this,c=b.axisOffset=[0,0,0,0],a=b.colorAxis,e=b.margin,d=function(b){b.forEach(function(b){b.visible&&b.getOffset()})};b.hasCartesianSeries?d(b.axes):a&&a.length&&d(a);v.forEach(function(a,d){F(e[d])||(b[a]+=c[d])});b.setChartSize()}getOptions(){return L(this.userOptions,g)}reflow(b){const c=this;var a=c.options.chart;a=F(a.width)&&F(a.height);const e=
|
|
c.containerBox,d=c.getContainerBox();delete c.pointer.chartPosition;if(!a&&!c.isPrinting&&e&&d.width){if(d.width!==e.width||d.height!==e.height)p.clearTimeout(c.reflowTimeout),c.reflowTimeout=ia(function(){c.container&&c.setSize(void 0,void 0,!1)},b?100:0);c.containerBox=d}}setReflow(){const c=this;var a=b=>{var a;(null===(a=c.options)||void 0===a?0:a.chart.reflow)&&c.hasLoaded&&c.reflow(b)};"function"===typeof ResizeObserver?(new ResizeObserver(a)).observe(c.renderTo):(a=b(u,"resize",a),b(this,"destroy",
|
|
a))}setSize(b,c,a){const e=this,d=e.renderer;e.isResizing+=1;f(a,e);a=d.globalAnimation;e.oldChartHeight=e.chartHeight;e.oldChartWidth=e.chartWidth;"undefined"!==typeof b&&(e.options.chart.width=b);"undefined"!==typeof c&&(e.options.chart.height=c);e.getChartSize();e.styledMode||(a?m:J)(e.container,{width:e.chartWidth+"px",height:e.chartHeight+"px"},a);e.setChartSize(!0);d.setSize(e.chartWidth,e.chartHeight,a);e.axes.forEach(function(b){b.isDirty=!0;b.setScale()});e.isDirtyLegend=!0;e.isDirtyBox=
|
|
!0;e.layOutTitles();e.getMargins();e.redraw(a);e.oldChartHeight=null;G(e,"resize");ia(function(){e&&G(e,"endResize",null,function(){--e.isResizing})},l(a).duration)}setChartSize(b){var c=this.inverted;const a=this.renderer;var e=this.chartWidth,d=this.chartHeight;const f=this.options.chart,h=this.spacing,n=this.clipOffset;let g,l,k,q;this.plotLeft=g=Math.round(this.plotLeft);this.plotTop=l=Math.round(this.plotTop);this.plotWidth=k=Math.max(0,Math.round(e-g-this.marginRight));this.plotHeight=q=Math.max(0,
|
|
Math.round(d-l-this.marginBottom));this.plotSizeX=c?q:k;this.plotSizeY=c?k:q;this.plotBorderWidth=f.plotBorderWidth||0;this.spacingBox=a.spacingBox={x:h[3],y:h[0],width:e-h[3]-h[1],height:d-h[0]-h[2]};this.plotBox=a.plotBox={x:g,y:l,width:k,height:q};c=2*Math.floor(this.plotBorderWidth/2);e=Math.ceil(Math.max(c,n[3])/2);d=Math.ceil(Math.max(c,n[0])/2);this.clipBox={x:e,y:d,width:Math.floor(this.plotSizeX-Math.max(c,n[1])/2-e),height:Math.max(0,Math.floor(this.plotSizeY-Math.max(c,n[2])/2-d))};b||
|
|
(this.axes.forEach(function(b){b.setAxisSize();b.setAxisTranslation()}),a.alignElements());G(this,"afterSetChartSize",{skipAxes:b})}resetMargins(){G(this,"resetMargins");const b=this,c=b.options.chart;["margin","spacing"].forEach(function(a){const e=c[a],d=Y(e)?e:[e,e,e,e];["Top","Right","Bottom","Left"].forEach(function(e,f){b[a][f]=R(c[a+e],d[f])})});v.forEach(function(c,a){b[c]=R(b.margin[a],b.spacing[a])});b.axisOffset=[0,0,0,0];b.clipOffset=[0,0,0,0]}drawChartBox(){const b=this.options.chart,
|
|
c=this.renderer,a=this.chartWidth,e=this.chartHeight,d=this.styledMode,f=this.plotBGImage;var h=b.backgroundColor;const n=b.plotBackgroundColor,g=b.plotBackgroundImage,l=this.plotLeft,k=this.plotTop,q=this.plotWidth,m=this.plotHeight,u=this.plotBox,p=this.clipRect,v=this.clipBox;let J=this.chartBackground,x=this.plotBackground,w=this.plotBorder,r,F,L="animate";J||(this.chartBackground=J=c.rect().addClass("highcharts-background").add(),L="attr");if(d)r=F=J.strokeWidth();else{r=b.borderWidth||0;F=r+
|
|
(b.shadow?8:0);h={fill:h||"none"};if(r||J["stroke-width"])h.stroke=b.borderColor,h["stroke-width"]=r;J.attr(h).shadow(b.shadow)}J[L]({x:F/2,y:F/2,width:a-F-r%2,height:e-F-r%2,r:b.borderRadius});L="animate";x||(L="attr",this.plotBackground=x=c.rect().addClass("highcharts-plot-background").add());x[L](u);d||(x.attr({fill:n||"none"}).shadow(b.plotShadow),g&&(f?(g!==f.attr("href")&&f.attr("href",g),f.animate(u)):this.plotBGImage=c.image(g,l,k,q,m).add()));p?p.animate({width:v.width,height:v.height}):
|
|
this.clipRect=c.clipRect(v);L="animate";w||(L="attr",this.plotBorder=w=c.rect().addClass("highcharts-plot-border").attr({zIndex:1}).add());d||w.attr({stroke:b.plotBorderColor,"stroke-width":b.plotBorderWidth||0,fill:"none"});w[L](w.crisp({x:l,y:k,width:q,height:m},-w.strokeWidth()));this.isDirtyBox=!1;G(this,"afterDrawChartBox")}propFromSeries(){const b=this,c=b.options.chart,a=b.options.series;let d,f,h;["inverted","angular","polar"].forEach(function(n){f=e[c.type];h=c[n]||f&&f.prototype[n];for(d=
|
|
a&&a.length;!h&&d--;)(f=e[a[d].type])&&f.prototype[n]&&(h=!0);b[n]=h})}linkSeries(b){const c=this,a=c.series;a.forEach(function(b){b.linkedSeries.length=0});a.forEach(function(b){let a=b.options.linkedTo;N(a)&&(a=":previous"===a?c.series[b.index-1]:c.get(a))&&a.linkedParent!==b&&(a.linkedSeries.push(b),b.linkedParent=a,a.enabledDataSorting&&b.setDataSortingOptions(),b.visible=R(b.options.visible,a.options.visible,b.visible))});G(this,"afterLinkSeries",{isUpdating:b})}renderSeries(){this.series.forEach(function(b){b.translate();
|
|
b.render()})}render(){const b=this.axes,c=this.colorAxis,a=this.renderer,e=function(b){b.forEach(function(b){b.visible&&b.render()})};let d=0;this.setTitle();G(this,"beforeMargins");this.getStacks&&this.getStacks();this.getMargins(!0);this.setChartSize();const f=this.plotWidth;b.some(function(b){if(b.horiz&&b.visible&&b.options.labels.enabled&&b.series.length)return d=21,!0});const h=this.plotHeight=Math.max(this.plotHeight-d,0);b.forEach(function(b){b.setScale()});this.getAxisMargins();const n=1.1<
|
|
f/this.plotWidth,g=1.05<h/this.plotHeight;if(n||g)b.forEach(function(b){(b.horiz&&n||!b.horiz&&g)&&b.setTickInterval(!0)}),this.getMargins();this.drawChartBox();this.hasCartesianSeries?e(b):c&&c.length&&e(c);this.seriesGroup||(this.seriesGroup=a.g("series-group").attr({zIndex:3}).shadow(this.options.chart.seriesGroupShadow).add());this.renderSeries();this.addCredits();this.setResponsive&&this.setResponsive();this.hasRendered=!0}addCredits(b){const c=this,a=M(!0,this.options.credits,b);a.enabled&&
|
|
!this.credits&&(this.credits=this.renderer.text(a.text+(this.mapCredits||""),0,0).addClass("highcharts-credits").on("click",function(){a.href&&(u.location.href=a.href)}).attr({align:a.position.align,zIndex:8}),c.styledMode||this.credits.css(a.style),this.credits.add().align(a.position),this.credits.update=function(b){c.credits=c.credits.destroy();c.addCredits(b)})}destroy(){const b=this,c=b.axes,a=b.series,e=b.container,f=e&&e.parentNode;let h;G(b,"destroy");b.renderer.forExport?P(d,b):d[b.index]=
|
|
void 0;C.chartCount--;b.renderTo.removeAttribute("data-highcharts-chart");ha(b);for(h=c.length;h--;)c[h]=c[h].destroy();this.scroller&&this.scroller.destroy&&this.scroller.destroy();for(h=a.length;h--;)a[h]=a[h].destroy();"title subtitle chartBackground plotBackground plotBGImage plotBorder seriesGroup clipRect credits pointer rangeSelector legend resetZoomButton tooltip renderer".split(" ").forEach(function(c){const a=b[c];a&&a.destroy&&(b[c]=a.destroy())});e&&(e.innerHTML=x.emptyHTML,ha(e),f&&y(e));
|
|
U(b,function(c,a){delete b[a]})}firstRender(){const b=this,c=b.options;b.getContainer();b.resetMargins();b.setChartSize();b.propFromSeries();b.getAxes();const a=ea(c.series)?c.series:[];c.series=[];a.forEach(function(c){b.initSeries(c)});b.linkSeries();b.setSeriesData();G(b,"beforeRender");b.render();b.pointer.getChartPosition();if(!b.renderer.imgCount&&!b.hasLoaded)b.onload();b.temporaryDisplay(!0)}onload(){this.callbacks.concat([this.callback]).forEach(function(b){b&&"undefined"!==typeof this.index&&
|
|
b.apply(this,[this])},this);G(this,"load");G(this,"render");F(this.index)&&this.setReflow();this.warnIfA11yModuleNotLoaded();this.hasLoaded=!0}warnIfA11yModuleNotLoaded(){const {options:b,title:c}=this;b&&!this.accessibility&&(this.renderer.boxWrapper.attr({role:"img","aria-label":(c&&c.element.textContent||"").replace(/</g,"<")}),b.accessibility&&!1===b.accessibility.enabled||O('Highcharts warning: Consider including the "accessibility.js" module to make your chart more usable for people with disabilities. Set the "accessibility.enabled" option to false to remove this warning. See https://www.highcharts.com/docs/accessibility/accessibility-module.',
|
|
!1,this))}addSeries(b,c,a){const e=this;let d;b&&(c=R(c,!0),G(e,"addSeries",{options:b},function(){d=e.initSeries(b);e.isDirtyLegend=!0;e.linkSeries();d.enabledDataSorting&&d.setData(b.data,!1);G(e,"afterAddSeries",{series:d});c&&e.redraw(a)}));return d}addAxis(b,c,a,e){return this.createAxis(c?"xAxis":"yAxis",{axis:b,redraw:a,animation:e})}addColorAxis(b,c,a){return this.createAxis("colorAxis",{axis:b,redraw:c,animation:a})}createAxis(b,c){b=new z(this,c.axis,b);R(c.redraw,!0)&&this.redraw(c.animation);
|
|
return b}showLoading(c){const a=this,e=a.options,d=e.loading,f=function(){h&&J(h,{left:a.plotLeft+"px",top:a.plotTop+"px",width:a.plotWidth+"px",height:a.plotHeight+"px"})};let h=a.loadingDiv,g=a.loadingSpan;h||(a.loadingDiv=h=n("div",{className:"highcharts-loading highcharts-loading-hidden"},null,a.container));g||(a.loadingSpan=g=n("span",{className:"highcharts-loading-inner"},null,h),b(a,"redraw",f));h.className="highcharts-loading";x.setElementHTML(g,R(c,e.lang.loading,""));a.styledMode||(J(h,
|
|
Q(d.style,{zIndex:10})),J(g,d.labelStyle),a.loadingShown||(J(h,{opacity:0,display:""}),m(h,{opacity:d.style.opacity||.5},{duration:d.showDuration||0})));a.loadingShown=!0;f()}hideLoading(){const b=this.options,c=this.loadingDiv;c&&(c.className="highcharts-loading highcharts-loading-hidden",this.styledMode||m(c,{opacity:0},{duration:b.loading.hideDuration||100,complete:function(){J(c,{display:"none"})}}));this.loadingShown=!1}update(b,c,a,e){const d=this,f={credits:"addCredits",title:"setTitle",subtitle:"setSubtitle",
|
|
caption:"setCaption"},h=b.isResponsiveOptions,n=[];let g,l;G(d,"update",{options:b});h||d.setResponsive(!1,!0);b=L(b,d.options);d.userOptions=M(d.userOptions,b);var q=b.chart;if(q){M(!0,d.options.chart,q);this.setZoomOptions();"className"in q&&d.setClassName(q.className);if("inverted"in q||"polar"in q||"type"in q){d.propFromSeries();var m=!0}"alignTicks"in q&&(m=!0);"events"in q&&D(this,q);U(q,function(b,c){-1!==d.propsRequireUpdateSeries.indexOf("chart."+c)&&(g=!0);-1!==d.propsRequireDirtyBox.indexOf(c)&&
|
|
(d.isDirtyBox=!0);-1!==d.propsRequireReflow.indexOf(c)&&(h?d.isDirtyBox=!0:l=!0)});!d.styledMode&&q.style&&d.renderer.setStyle(d.options.chart.style||{})}!d.styledMode&&b.colors&&(this.options.colors=b.colors);b.time&&(this.time===w&&(this.time=new k(b.time)),M(!0,d.options.time,b.time));U(b,function(c,a){if(d[a]&&"function"===typeof d[a].update)d[a].update(c,!1);else if("function"===typeof d[f[a]])d[f[a]](c);else"colors"!==a&&-1===d.collectionsWithUpdate.indexOf(a)&&M(!0,d.options[a],b[a]);"chart"!==
|
|
a&&-1!==d.propsRequireUpdateSeries.indexOf(a)&&(g=!0)});this.collectionsWithUpdate.forEach(function(c){b[c]&&(da(b[c]).forEach(function(b,e){const f=F(b.id);let h;f&&(h=d.get(b.id));!h&&d[c]&&(h=d[c][R(b.index,e)])&&(f&&F(h.options.id)||h.options.isInternal)&&(h=void 0);h&&h.coll===c&&(h.update(b,!1),a&&(h.touched=!0));!h&&a&&d.collectionsWithInit[c]&&(d.collectionsWithInit[c][0].apply(d,[b].concat(d.collectionsWithInit[c][1]||[]).concat([!1])).touched=!0)}),a&&d[c].forEach(function(b){b.touched||
|
|
b.options.isInternal?delete b.touched:n.push(b)}))});n.forEach(function(b){b.chart&&b.remove&&b.remove(!1)});m&&d.axes.forEach(function(b){b.update({},!1)});g&&d.getSeriesOrderByLinks().forEach(function(b){b.chart&&b.update({},!1)},this);m=q&&q.width;q=q&&(N(q.height)?Z(q.height,m||d.chartWidth):q.height);l||aa(m)&&m!==d.chartWidth||aa(q)&&q!==d.chartHeight?d.setSize(m,q,e):R(c,!0)&&d.redraw(e);G(d,"afterUpdate",{options:b,redraw:c,animation:e})}setSubtitle(b,c){this.applyDescription("subtitle",b);
|
|
this.layOutTitles(c)}setCaption(b,c){this.applyDescription("caption",b);this.layOutTitles(c)}showResetZoom(){function b(){c.zoomOut()}const c=this,a=g.lang,e=c.zooming.resetButton,d=e.theme,f="chart"===e.relativeTo||"spacingBox"===e.relativeTo?null:"scrollablePlotBox";G(this,"beforeShowResetZoom",null,function(){c.resetZoomButton=c.renderer.button(a.resetZoom,null,null,b,d).attr({align:e.position.align,title:a.resetZoomTitle}).addClass("highcharts-reset-zoom").add().align(e.position,!1,f)});G(this,
|
|
"afterShowResetZoom")}zoomOut(){G(this,"selection",{resetSelection:!0},this.zoom)}zoom(b){const c=this,a=c.pointer;let e=!1,d;!b||b.resetSelection?(c.axes.forEach(function(b){d=b.zoom()}),a.initiated=!1):b.xAxis.concat(b.yAxis).forEach(function(b){const f=b.axis;if(a[f.isXAxis?"zoomX":"zoomY"]&&F(a.mouseDownX)&&F(a.mouseDownY)&&c.isInsidePlot(a.mouseDownX-c.plotLeft,a.mouseDownY-c.plotTop,{axis:f})||!F(c.inverted?a.mouseDownX:a.mouseDownY))d=f.zoom(b.min,b.max),f.displayBtn&&(e=!0)});const f=c.resetZoomButton;
|
|
e&&!f?c.showResetZoom():!e&&Y(f)&&(c.resetZoomButton=f.destroy());d&&c.redraw(R(c.options.chart.animation,b&&b.animation,100>c.pointCount))}pan(b,c){const a=this,e=a.hoverPoints;c="object"===typeof c?c:{enabled:c,type:"x"};const d=a.options.chart;d&&d.panning&&(d.panning=c);const f=c.type;let h;G(this,"pan",{originalEvent:b},function(){e&&e.forEach(function(b){b.setState()});let c=a.xAxis;"xy"===f?c=c.concat(a.yAxis):"y"===f&&(c=a.yAxis);const d={};c.forEach(function(c){if(c.options.panningEnabled&&
|
|
!c.options.isInternal){var e=c.horiz,n=b[e?"chartX":"chartY"];e=e?"mouseDownX":"mouseDownY";var g=a[e],l=c.minPointOffset||0,k=c.reversed&&!a.inverted||!c.reversed&&a.inverted?-1:1,q=c.getExtremes(),m=c.toValue(g-n,!0)+l*k,u=c.toValue(g+c.len-n,!0)-(l*k||c.isXAxis&&c.pointRangePadding||0),p=u<m;k=c.hasVerticalPanning();g=p?u:m;m=p?m:u;var v=c.panningState;!k||c.isXAxis||v&&!v.isDirty||c.series.forEach(function(b){var c=b.getProcessedData(!0);c=b.getExtremes(c.yData,!0);v||(v={startMin:Number.MAX_VALUE,
|
|
startMax:-Number.MAX_VALUE});aa(c.dataMin)&&aa(c.dataMax)&&(v.startMin=Math.min(R(b.options.threshold,Infinity),c.dataMin,v.startMin),v.startMax=Math.max(R(b.options.threshold,-Infinity),c.dataMax,v.startMax))});k=Math.min(R(v&&v.startMin,q.dataMin),l?q.min:c.toValue(c.toPixels(q.min)-c.minPixelPadding));u=Math.max(R(v&&v.startMax,q.dataMax),l?q.max:c.toValue(c.toPixels(q.max)+c.minPixelPadding));c.panningState=v;c.isOrdinal||(l=k-g,0<l&&(m+=l,g=k),l=m-u,0<l&&(m=u,g-=l),c.series.length&&g!==q.min&&
|
|
m!==q.max&&g>=k&&m<=u&&(c.setExtremes(g,m,!1,!1,{trigger:"pan"}),!a.resetZoomButton&&g!==k&&m!==u&&f.match("y")&&(a.showResetZoom(),c.displayBtn=!1),h=!0),d[e]=n)}});U(d,(b,c)=>{a[c]=b});h&&a.redraw(!1);J(a.container,{cursor:"move"})})}}Q(T.prototype,{callbacks:[],collectionsWithInit:{xAxis:[T.prototype.addAxis,[!0]],yAxis:[T.prototype.addAxis,[!1]],series:[T.prototype.addSeries]},collectionsWithUpdate:["xAxis","yAxis","series"],propsRequireDirtyBox:"backgroundColor borderColor borderWidth borderRadius plotBackgroundColor plotBackgroundImage plotBorderColor plotBorderWidth plotShadow shadow".split(" "),
|
|
propsRequireReflow:"margin marginTop marginRight marginBottom marginLeft spacing spacingTop spacingRight spacingBottom spacingLeft".split(" "),propsRequireUpdateSeries:"chart.inverted chart.polar chart.ignoreHiddenSeries chart.type colors plotOptions time tooltip".split(" ")});"";return T});M(a,"Extensions/ScrollablePlotArea.js",[a["Core/Animation/AnimationUtilities.js"],a["Core/Axis/Axis.js"],a["Core/Chart/Chart.js"],a["Core/Series/Series.js"],a["Core/Renderer/RendererRegistry.js"],a["Core/Utilities.js"]],
|
|
function(a,z,H,K,A,C){const {stop:y}=a,{addEvent:B,createElement:t,defined:r,merge:k,pick:p}=C;B(H,"afterSetChartSize",function(a){var m=this.options.chart.scrollablePlotArea,l=m&&m.minWidth;m=m&&m.minHeight;let f;if(!this.renderer.forExport){if(l){if(this.scrollablePixelsX=l=Math.max(0,l-this.chartWidth))this.scrollablePlotBox=this.renderer.scrollablePlotBox=k(this.plotBox),this.plotBox.width=this.plotWidth+=l,this.inverted?this.clipBox.height+=l:this.clipBox.width+=l,f={1:{name:"right",value:l}}}else m&&
|
|
(this.scrollablePixelsY=l=Math.max(0,m-this.chartHeight),r(l)&&(this.scrollablePlotBox=this.renderer.scrollablePlotBox=k(this.plotBox),this.plotBox.height=this.plotHeight+=l,this.inverted?this.clipBox.width+=l:this.clipBox.height+=l,f={2:{name:"bottom",value:l}}));f&&!a.skipAxes&&this.axes.forEach(function(a){f[a.side]?a.getPlotLinePath=function(){let g=f[a.side].name,l=this[g],k;this[g]=l-f[a.side].value;k=z.prototype.getPlotLinePath.apply(this,arguments);this[g]=l;return k}:(a.setAxisSize(),a.setAxisTranslation())})}});
|
|
B(H,"render",function(){this.scrollablePixelsX||this.scrollablePixelsY?(this.setUpScrolling&&this.setUpScrolling(),this.applyFixed()):this.fixedDiv&&this.applyFixed()});H.prototype.setUpScrolling=function(){const a={WebkitOverflowScrolling:"touch",overflowX:"hidden",overflowY:"hidden"};this.scrollablePixelsX&&(a.overflowX="auto");this.scrollablePixelsY&&(a.overflowY="auto");this.scrollingParent=t("div",{className:"highcharts-scrolling-parent"},{position:"relative"},this.renderTo);this.scrollingContainer=
|
|
t("div",{className:"highcharts-scrolling"},a,this.scrollingParent);let k;B(this.scrollingContainer,"scroll",()=>{this.pointer&&(delete this.pointer.chartPosition,this.hoverPoint&&(k=this.hoverPoint),this.pointer.runPointActions(void 0,k,!0))});this.innerContainer=t("div",{className:"highcharts-inner-container"},null,this.scrollingContainer);this.innerContainer.appendChild(this.container);this.setUpScrolling=null};H.prototype.moveFixedElements=function(){let a=this.container,k=this.fixedRenderer,l=
|
|
".highcharts-breadcrumbs-group .highcharts-contextbutton .highcharts-credits .highcharts-legend .highcharts-legend-checkbox .highcharts-navigator-series .highcharts-navigator-xaxis .highcharts-navigator-yaxis .highcharts-navigator .highcharts-reset-zoom .highcharts-drillup-button .highcharts-scrollbar .highcharts-subtitle .highcharts-title".split(" "),f;this.scrollablePixelsX&&!this.inverted?f=".highcharts-yaxis":this.scrollablePixelsX&&this.inverted?f=".highcharts-xaxis":this.scrollablePixelsY&&
|
|
!this.inverted?f=".highcharts-xaxis":this.scrollablePixelsY&&this.inverted&&(f=".highcharts-yaxis");f&&l.push(`${f}:not(.highcharts-radial-axis)`,`${f}-labels:not(.highcharts-radial-axis-labels)`);l.forEach(function(f){[].forEach.call(a.querySelectorAll(f),function(a){(a.namespaceURI===k.SVG_NS?k.box:k.box.parentNode).appendChild(a);a.style.pointerEvents="auto"})})};H.prototype.applyFixed=function(){var a=!this.fixedDiv,k=this.options.chart,l=k.scrollablePlotArea,f=A.getRendererType();a?(this.fixedDiv=
|
|
t("div",{className:"highcharts-fixed"},{position:"absolute",overflow:"hidden",pointerEvents:"none",zIndex:(k.style&&k.style.zIndex||0)+2,top:0},null,!0),this.scrollingContainer&&this.scrollingContainer.parentNode.insertBefore(this.fixedDiv,this.scrollingContainer),this.renderTo.style.overflow="visible",this.fixedRenderer=k=new f(this.fixedDiv,this.chartWidth,this.chartHeight,this.options.chart.style),this.scrollableMask=k.path().attr({fill:this.options.chart.backgroundColor||"#fff","fill-opacity":p(l.opacity,
|
|
.85),zIndex:-1}).addClass("highcharts-scrollable-mask").add(),B(this,"afterShowResetZoom",this.moveFixedElements),B(this,"afterApplyDrilldown",this.moveFixedElements),B(this,"afterLayOutTitles",this.moveFixedElements)):this.fixedRenderer.setSize(this.chartWidth,this.chartHeight);if(this.scrollableDirty||a)this.scrollableDirty=!1,this.moveFixedElements();k=this.chartWidth+(this.scrollablePixelsX||0);f=this.chartHeight+(this.scrollablePixelsY||0);y(this.container);this.container.style.width=k+"px";
|
|
this.container.style.height=f+"px";this.renderer.boxWrapper.attr({width:k,height:f,viewBox:[0,0,k,f].join(" ")});this.chartBackground.attr({width:k,height:f});this.scrollingContainer.style.height=this.chartHeight+"px";a&&(l.scrollPositionX&&(this.scrollingContainer.scrollLeft=this.scrollablePixelsX*l.scrollPositionX),l.scrollPositionY&&(this.scrollingContainer.scrollTop=this.scrollablePixelsY*l.scrollPositionY));f=this.axisOffset;a=this.plotTop-f[0]-1;l=this.plotLeft-f[3]-1;k=this.plotTop+this.plotHeight+
|
|
f[2]+1;f=this.plotLeft+this.plotWidth+f[1]+1;let g=this.plotLeft+this.plotWidth-(this.scrollablePixelsX||0),r=this.plotTop+this.plotHeight-(this.scrollablePixelsY||0);a=this.scrollablePixelsX?[["M",0,a],["L",this.plotLeft-1,a],["L",this.plotLeft-1,k],["L",0,k],["Z"],["M",g,a],["L",this.chartWidth,a],["L",this.chartWidth,k],["L",g,k],["Z"]]:this.scrollablePixelsY?[["M",l,0],["L",l,this.plotTop-1],["L",f,this.plotTop-1],["L",f,0],["Z"],["M",l,r],["L",l,this.chartHeight],["L",f,this.chartHeight],["L",
|
|
f,r],["Z"]]:[["M",0,0]];"adjustHeight"!==this.redrawTrigger&&this.scrollableMask.attr({d:a})};B(z,"afterInit",function(){this.chart.scrollableDirty=!0});B(K,"show",function(){this.chart.scrollableDirty=!0});""});M(a,"Core/Axis/Stacking/StackItem.js",[a["Core/Templating.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],function(a,z,H){const {format:y}=a,{series:A}=z,{destroyObjectProperties:C,fireEvent:E,isNumber:B,pick:t}=H;class r{constructor(a,p,r,m,l){const f=a.chart.inverted,g=a.reversed;
|
|
this.axis=a;a=this.isNegative=!!r!==!!g;this.options=p=p||{};this.x=m;this.cumulative=this.total=null;this.points={};this.hasValidPoints=!1;this.stack=l;this.rightCliff=this.leftCliff=0;this.alignOptions={align:p.align||(f?a?"left":"right":"center"),verticalAlign:p.verticalAlign||(f?"middle":a?"bottom":"top"),y:p.y,x:p.x};this.textAlign=p.textAlign||(f?a?"right":"left":"center")}destroy(){C(this,this.axis)}render(a){const k=this.axis.chart,r=this.options;var m=r.format;m=m?y(m,this,k):r.formatter.call(this);
|
|
this.label?this.label.attr({text:m,visibility:"hidden"}):(this.label=k.renderer.label(m,null,void 0,r.shape,void 0,void 0,r.useHTML,!1,"stack-labels"),m={r:r.borderRadius||0,text:m,padding:t(r.padding,5),visibility:"hidden"},k.styledMode||(m.fill=r.backgroundColor,m.stroke=r.borderColor,m["stroke-width"]=r.borderWidth,this.label.css(r.style||{})),this.label.attr(m),this.label.added||this.label.add(a));this.label.labelrank=k.plotSizeY;E(this,"afterRender")}setOffset(a,p,r,m,l,f){const {alignOptions:g,
|
|
axis:k,label:x,options:D,textAlign:d}=this,h=k.chart;r=this.getStackBox({xOffset:a,width:p,boxBottom:r,boxTop:m,defaultX:l,xAxis:f});var {verticalAlign:v}=g;if(x&&r){m=x.getBBox();l=x.padding;f="justify"===t(D.overflow,"justify");g.x=D.x||0;g.y=D.y||0;const {x:a,y:u}=this.adjustStackPosition({labelBox:m,verticalAlign:v,textAlign:d});r.x-=a;r.y-=u;x.align(g,!1,r);(v=h.isInsidePlot(x.alignAttr.x+g.x+a,x.alignAttr.y+g.y+u))||(f=!1);f&&A.prototype.justifyDataLabel.call(k,x,g,x.alignAttr,m,r);x.attr({x:x.alignAttr.x,
|
|
y:x.alignAttr.y,rotation:D.rotation,rotationOriginX:m.width/2,rotationOriginY:m.height/2});t(!f&&D.crop,!0)&&(v=B(x.x)&&B(x.y)&&h.isInsidePlot(x.x-l+x.width,x.y)&&h.isInsidePlot(x.x+l,x.y));x[v?"show":"hide"]()}E(this,"afterSetOffset",{xOffset:a,width:p})}adjustStackPosition({labelBox:a,verticalAlign:p,textAlign:r}){const k={bottom:0,middle:1,top:2,right:1,center:0,left:-1};return{x:a.width/2+a.width/2*k[r],y:a.height/2*k[p]}}getStackBox(a){var k=this.axis;const r=k.chart,{boxTop:m,defaultX:l,xOffset:f,
|
|
width:g,boxBottom:w}=a;var I=k.stacking.usePercentage?100:t(m,this.total,0);I=k.toPixels(I);a=a.xAxis||r.xAxis[0];const D=t(l,a.translate(this.x))+f;k=k.toPixels(w||B(k.min)&&k.logarithmic&&k.logarithmic.lin2log(k.min)||0);k=Math.abs(I-k);const d=this.isNegative;return r.inverted?{x:(d?I:I-k)-r.plotLeft,y:a.height-D-g,width:k,height:g}:{x:D+a.transB-r.plotLeft,y:(d?I-k:I)-r.plotTop,width:g,height:k}}}"";return r});M(a,"Core/Axis/Stacking/StackingAxis.js",[a["Core/Animation/AnimationUtilities.js"],
|
|
a["Core/Axis/Axis.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Axis/Stacking/StackItem.js"],a["Core/Utilities.js"]],function(a,z,H,K,A){function y(){const b=this,c=b.inverted;b.yAxis.forEach(b=>{b.stacking&&b.stacking.stacks&&b.hasVisibleSeries&&(b.stacking.oldStacks=b.stacking.stacks)});b.series.forEach(a=>{const e=a.xAxis&&a.xAxis.options||{};!a.options.stacking||!0!==a.visible&&!1!==b.options.chart.ignoreHiddenSeries||(a.stackKey=[a.type,q(a.options.stack,""),c?e.top:e.left,c?e.height:e.width].join())})}
|
|
function E(){const b=this.stacking;if(b){var c=b.stacks;v(c,function(b,a){I(b);c[a]=null});b&&b.stackTotalGroup&&b.stackTotalGroup.destroy()}}function B(){"yAxis"!==this.coll||this.stacking||(this.stacking=new u(this))}function t(b,c,a,e){!w(b)||b.x!==c||e&&b.stackKey!==e?b={x:c,index:0,key:e,stackKey:e}:b.index++;b.key=[a,c,b.index].join();return b}function r(){const b=this,c=b.stackKey,a=b.yAxis.stacking.stacks,e=b.processedXData,d=b[b.options.stacking+"Stacker"];let f;d&&[c,"-"+c].forEach(c=>{let h=
|
|
e.length;let n;for(;h--;){var g=e[h];f=b.getStackIndicator(f,g,b.index,c);(n=(g=a[c]&&a[c][g])&&g.points[f.key])&&d.call(b,n,g,h)}})}function k(b,c,a){c=c.total?100/c.total:0;b[0]=g(b[0]*c);b[1]=g(b[1]*c);this.stackedYData[a]=b[1]}function p(){const b=this.yAxis.stacking;this.options.centerInCategory&&(this.is("column")||this.is("columnrange"))&&!this.options.stacking&&1<this.chart.series.length?l.setStackedPoints.call(this,"group"):b&&v(b.stacks,(c,a)=>{"group"===a.slice(-5)&&(v(c,b=>b.destroy()),
|
|
delete b.stacks[a])})}function x(b){var c=this.chart;const a=b||this.options.stacking;if(a&&(!0===this.visible||!1===c.options.chart.ignoreHiddenSeries)){var e=this.processedXData,f=this.processedYData,h=[],l=f.length,k=this.options,m=k.threshold,u=q(k.startFromThreshold&&m,0);k=k.stack;b=b?`${this.type},${a}`:this.stackKey;var p="-"+b,v=this.negStacks;c="group"===a?c.yAxis[0]:this.yAxis;var r=c.stacking.stacks,x=c.stacking.oldStacks,t,I;c.stacking.stacksTouched+=1;for(I=0;I<l;I++){var D=e[I];var y=
|
|
f[I];var B=this.getStackIndicator(B,D,this.index);var E=B.key;var z=(t=v&&y<(u?0:m))?p:b;r[z]||(r[z]={});r[z][D]||(x[z]&&x[z][D]?(r[z][D]=x[z][D],r[z][D].total=null):r[z][D]=new K(c,c.options.stackLabels,!!t,D,k));z=r[z][D];null!==y?(z.points[E]=z.points[this.index]=[q(z.cumulative,u)],w(z.cumulative)||(z.base=E),z.touched=c.stacking.stacksTouched,0<B.index&&!1===this.singleStacks&&(z.points[E][0]=z.points[this.index+","+D+",0"][0])):z.points[E]=z.points[this.index]=null;"percent"===a?(t=t?b:p,v&&
|
|
r[t]&&r[t][D]?(t=r[t][D],z.total=t.total=Math.max(t.total,z.total)+Math.abs(y)||0):z.total=g(z.total+(Math.abs(y)||0))):"group"===a?(d(y)&&(y=y[0]),null!==y&&(z.total=(z.total||0)+1)):z.total=g(z.total+(y||0));z.cumulative="group"===a?(z.total||1)-1:g(q(z.cumulative,u)+(y||0));null!==y&&(z.points[E].push(z.cumulative),h[I]=z.cumulative,z.hasValidPoints=!0)}"percent"===a&&(c.stacking.usePercentage=!0);"group"!==a&&(this.stackedYData=h);c.stacking.oldStacks={}}}const {getDeferredAnimation:m}=a,{series:{prototype:l}}=
|
|
H,{addEvent:f,correctFloat:g,defined:w,destroyObjectProperties:I,fireEvent:D,isArray:d,isNumber:h,objectEach:v,pick:q}=A;class u{constructor(b){this.oldStacks={};this.stacks={};this.stacksTouched=0;this.axis=b}buildStacks(){const b=this.axis,c=b.series,a=b.options.reversedStacks,e=c.length;let d,f;this.usePercentage=!1;for(f=e;f--;)d=c[a?f:e-f-1],d.setStackedPoints(),d.setGroupedPoints();for(f=0;f<e;f++)c[f].modifyStacks();D(b,"afterBuildStacks")}cleanStacks(){let b;this.oldStacks&&(b=this.stacks=
|
|
this.oldStacks);v(b,function(b){v(b,function(b){b.cumulative=b.total})})}resetStacks(){v(this.stacks,b=>{v(b,(c,a)=>{h(c.touched)&&c.touched<this.stacksTouched?(c.destroy(),delete b[a]):(c.total=null,c.cumulative=null)})})}renderStackTotals(){var b=this.axis;const c=b.chart,a=c.renderer,e=this.stacks;b=m(c,b.options.stackLabels&&b.options.stackLabels.animation||!1);const d=this.stackTotalGroup=this.stackTotalGroup||a.g("stack-labels").attr({zIndex:6,opacity:0}).add();d.translate(c.plotLeft,c.plotTop);
|
|
v(e,function(b){v(b,function(b){b.render(d)})});d.animate({opacity:1},b)}}var e;(function(b){const c=[];b.compose=function(b,a,e){A.pushUnique(c,b)&&(f(b,"init",B),f(b,"destroy",E));A.pushUnique(c,a)&&(a.prototype.getStacks=y);A.pushUnique(c,e)&&(b=e.prototype,b.getStackIndicator=t,b.modifyStacks=r,b.percentStacker=k,b.setGroupedPoints=p,b.setStackedPoints=x)}})(e||(e={}));return e});M(a,"Series/Line/LineSeries.js",[a["Core/Series/Series.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],
|
|
function(a,z,H){const {defined:y,merge:A}=H;class C extends a{constructor(){super(...arguments);this.points=this.options=this.data=void 0}drawGraph(){const a=this,y=this.options,t=(this.gappedPath||this.getGraphPath).call(this),r=this.chart.styledMode;let k=[["graph","highcharts-graph"]];r||k[0].push(y.lineColor||this.color||"#cccccc",y.dashStyle);k=a.getZonesGraphs(k);k.forEach(function(k,x){var m=k[0];let l=a[m];const f=l?"animate":"attr";l?(l.endX=a.preventGraphAnimation?null:t.xMap,l.animate({d:t})):
|
|
t.length&&(a[m]=l=a.chart.renderer.path(t).addClass(k[1]).attr({zIndex:1}).add(a.group));l&&!r&&(m={stroke:k[2],"stroke-width":y.lineWidth||0,fill:a.fillGraph&&a.color||"none"},k[3]?m.dashstyle=k[3]:"square"!==y.linecap&&(m["stroke-linecap"]=m["stroke-linejoin"]="round"),l[f](m).shadow(2>x&&y.shadow));l&&(l.startX=t.xMap,l.isArea=t.isArea)})}getGraphPath(a,B,t){const r=this,k=r.options,p=[],x=[];let m,l=k.step;a=a||r.points;const f=a.reversed;f&&a.reverse();(l={right:1,center:2}[l]||l&&3)&&f&&(l=
|
|
4-l);a=this.getValidPoints(a,!1,!(k.connectNulls&&!B&&!t));a.forEach(function(f,w){const g=f.plotX,D=f.plotY,d=a[w-1],h=f.isNull||"number"!==typeof D;(f.leftCliff||d&&d.rightCliff)&&!t&&(m=!0);h&&!y(B)&&0<w?m=!k.connectNulls:h&&!B?m=!0:(0===w||m?w=[["M",f.plotX,f.plotY]]:r.getPointSpline?w=[r.getPointSpline(a,f,w)]:l?(w=1===l?[["L",d.plotX,D]]:2===l?[["L",(d.plotX+g)/2,d.plotY],["L",(d.plotX+g)/2,D]]:[["L",g,d.plotY]],w.push(["L",g,D])):w=[["L",g,D]],x.push(f.x),l&&(x.push(f.x),2===l&&x.push(f.x)),
|
|
p.push.apply(p,w),m=!1)});p.xMap=x;return r.graphPath=p}getZonesGraphs(a){this.zones.forEach(function(y,t){t=["zone-graph-"+t,"highcharts-graph highcharts-zone-graph-"+t+" "+(y.className||"")];this.chart.styledMode||t.push(y.color||this.color,y.dashStyle||this.options.dashStyle);a.push(t)},this);return a}}C.defaultOptions=A(a.defaultOptions,{legendSymbol:"lineMarker"});z.registerSeriesType("line",C);"";return C});M(a,"Series/Area/AreaSeries.js",[a["Core/Color/Color.js"],a["Core/Series/SeriesRegistry.js"],
|
|
a["Core/Utilities.js"]],function(a,z,H){const {seriesTypes:{line:y}}=z,{extend:A,merge:C,objectEach:E,pick:B}=H;class t extends y{constructor(){super(...arguments);this.points=this.options=this.data=void 0}drawGraph(){this.areaPath=[];super.drawGraph.apply(this);const a=this,k=this.areaPath,p=this.options,x=[["area","highcharts-area",this.color,p.fillColor]];this.zones.forEach(function(k,l){x.push(["zone-area-"+l,"highcharts-area highcharts-zone-area-"+l+" "+k.className,k.color||a.color,k.fillColor||
|
|
p.fillColor])});x.forEach(function(m){const l=m[0],f={};let g=a[l];const r=g?"animate":"attr";g?(g.endX=a.preventGraphAnimation?null:k.xMap,g.animate({d:k})):(f.zIndex=0,g=a[l]=a.chart.renderer.path(k).addClass(m[1]).add(a.group),g.isArea=!0);a.chart.styledMode||(m[3]?f.fill=m[3]:(f.fill=m[2],f["fill-opacity"]=B(p.fillOpacity,.75)));g[r](f);g.startX=k.xMap;g.shiftUnit=p.step?2:1})}getGraphPath(a){var k=y.prototype.getGraphPath,p=this.options;const r=p.stacking,m=this.yAxis,l=[],f=[],g=this.index,
|
|
w=m.stacking.stacks[this.stackKey],t=p.threshold,D=Math.round(m.getThreshold(p.threshold));p=B(p.connectNulls,"percent"===r);var d=function(d,e,b){var c=a[d];d=r&&w[c.x].points[g];const n=c[b+"Null"]||0;b=c[b+"Cliff"]||0;let k,q;c=!0;b||n?(k=(n?d[0]:d[1])+b,q=d[0]+b,c=!!n):!r&&a[e]&&a[e].isNull&&(k=q=t);"undefined"!==typeof k&&(f.push({plotX:h,plotY:null===k?D:m.getThreshold(k),isNull:c,isCliff:!0}),l.push({plotX:h,plotY:null===q?D:m.getThreshold(q),doCurve:!1}))};let h;a=a||this.points;r&&(a=this.getStackPoints(a));
|
|
for(let g=0,e=a.length;g<e;++g){r||(a[g].leftCliff=a[g].rightCliff=a[g].leftNull=a[g].rightNull=void 0);var v=a[g].isNull;h=B(a[g].rectPlotX,a[g].plotX);var q=r?B(a[g].yBottom,D):D;if(!v||p)p||d(g,g-1,"left"),v&&!r&&p||(f.push(a[g]),l.push({x:g,plotX:h,plotY:q})),p||d(g,g+1,"right")}d=k.call(this,f,!0,!0);l.reversed=!0;v=k.call(this,l,!0,!0);(q=v[0])&&"M"===q[0]&&(v[0]=["L",q[1],q[2]]);v=d.concat(v);v.length&&v.push(["Z"]);k=k.call(this,f,!1,p);v.xMap=d.xMap;this.areaPath=v;return k}getStackPoints(a){const k=
|
|
this,p=[],r=[],m=this.xAxis,l=this.yAxis,f=l.stacking.stacks[this.stackKey],g={},w=l.series,t=w.length,y=l.options.reversedStacks?1:-1,d=w.indexOf(k);a=a||this.points;if(this.options.stacking){for(let d=0;d<a.length;d++)a[d].leftNull=a[d].rightNull=void 0,g[a[d].x]=a[d];E(f,function(a,d){null!==a.total&&r.push(d)});r.sort(function(a,d){return a-d});const h=w.map(a=>a.visible);r.forEach(function(a,q){let u=0,e,b;if(g[a]&&!g[a].isNull)p.push(g[a]),[-1,1].forEach(function(c){const n=1===c?"rightNull":
|
|
"leftNull",l=f[r[q+c]];let m=0;if(l){let c=d;for(;0<=c&&c<t;){const d=w[c].index;e=l.points[d];e||(d===k.index?g[a][n]=!0:h[c]&&(b=f[a].points[d])&&(m-=b[1]-b[0]));c+=y}}g[a][1===c?"rightCliff":"leftCliff"]=m});else{let b=d;for(;0<=b&&b<t;){if(e=f[a].points[w[b].index]){u=e[1];break}b+=y}u=B(u,0);u=l.translate(u,0,1,0,1);p.push({isNull:!0,plotX:m.translate(a,0,0,0,1),x:a,plotY:u,yBottom:u})}})}return p}}t.defaultOptions=C(y.defaultOptions,{threshold:0,legendSymbol:"rectangle"});A(t.prototype,{singleStacks:!1});
|
|
z.registerSeriesType("area",t);"";return t});M(a,"Series/Spline/SplineSeries.js",[a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],function(a,z){const {line:y}=a.seriesTypes,{merge:K,pick:A}=z;class C extends y{constructor(){super(...arguments);this.points=this.options=this.data=void 0}getPointSpline(a,y,t){const r=y.plotX||0,k=y.plotY||0,p=a[t-1];t=a[t+1];let x,m;let l;if(p&&!p.isNull&&!1!==p.doCurve&&!y.isCliff&&t&&!t.isNull&&!1!==t.doCurve&&!y.isCliff){a=p.plotY||0;var f=t.plotX||0;t=
|
|
t.plotY||0;let g=0;x=(1.5*r+(p.plotX||0))/2.5;m=(1.5*k+a)/2.5;f=(1.5*r+f)/2.5;l=(1.5*k+t)/2.5;f!==x&&(g=(l-m)*(f-r)/(f-x)+k-l);m+=g;l+=g;m>a&&m>k?(m=Math.max(a,k),l=2*k-m):m<a&&m<k&&(m=Math.min(a,k),l=2*k-m);l>t&&l>k?(l=Math.max(t,k),m=2*k-l):l<t&&l<k&&(l=Math.min(t,k),m=2*k-l);y.rightContX=f;y.rightContY=l}y=["C",A(p.rightContX,p.plotX,0),A(p.rightContY,p.plotY,0),A(x,r,0),A(m,k,0),r,k];p.rightContX=p.rightContY=void 0;return y}}C.defaultOptions=K(y.defaultOptions);a.registerSeriesType("spline",
|
|
C);"";return C});M(a,"Series/AreaSpline/AreaSplineSeries.js",[a["Series/Spline/SplineSeries.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],function(a,z,H){const {area:y,area:{prototype:A}}=z.seriesTypes,{extend:C,merge:E}=H;class B extends a{constructor(){super(...arguments);this.options=this.points=this.data=void 0}}B.defaultOptions=E(a.defaultOptions,y.defaultOptions);C(B.prototype,{getGraphPath:A.getGraphPath,getStackPoints:A.getStackPoints,drawGraph:A.drawGraph});z.registerSeriesType("areaspline",
|
|
B);"";return B});M(a,"Series/Column/ColumnSeriesDefaults.js",[],function(){"";return{borderRadius:3,centerInCategory:!1,groupPadding:.2,marker:null,pointPadding:.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{halo:!1,brightness:.1},select:{color:"#cccccc",borderColor:"#000000"}},dataLabels:{align:void 0,verticalAlign:void 0,y:void 0},startFromThreshold:!0,stickyTracking:!1,tooltip:{distance:6},threshold:0,borderColor:"#ffffff"}});M(a,"Series/Column/ColumnSeries.js",[a["Core/Animation/AnimationUtilities.js"],
|
|
a["Core/Color/Color.js"],a["Series/Column/ColumnSeriesDefaults.js"],a["Core/Globals.js"],a["Core/Series/Series.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],function(a,z,H,K,A,C,E){const {animObject:y}=a,{parse:t}=z,{hasTouch:r,noop:k}=K,{clamp:p,defined:x,extend:m,fireEvent:l,isArray:f,isNumber:g,merge:w,pick:I,objectEach:D}=E;class d extends A{constructor(){super(...arguments);this.points=this.options=this.group=this.data=this.borderWidth=void 0}animate(a){const d=this,f=this.yAxis,
|
|
h=f.pos,e=d.options,b=this.chart.inverted,c={},n=b?"translateX":"translateY";let g;a?(c.scaleY=.001,a=p(f.toPixels(e.threshold),h,h+f.len),b?c.translateX=a-f.len:c.translateY=a,d.clipBox&&d.setClip(),d.group.attr(c)):(g=Number(d.group.attr(n)),d.group.animate({scaleY:1},m(y(d.options.animation),{step:function(b,a){d.group&&(c[n]=g+a.pos*(h-g),d.group.attr(c))}})))}init(a,d){super.init.apply(this,arguments);const f=this;a=f.chart;a.hasRendered&&a.series.forEach(function(a){a.type===f.type&&(a.isDirty=
|
|
!0)})}getColumnMetrics(){const a=this;var d=a.options;const f=a.xAxis,g=a.yAxis;var e=f.options.reversedStacks;e=f.reversed&&!e||!f.reversed&&e;const b={};let c,n=0;!1===d.grouping?n=1:a.chart.series.forEach(function(e){const d=e.yAxis,f=e.options;let h;e.type!==a.type||!e.visible&&a.chart.options.chart.ignoreHiddenSeries||g.len!==d.len||g.pos!==d.pos||(f.stacking&&"group"!==f.stacking?(c=e.stackKey,"undefined"===typeof b[c]&&(b[c]=n++),h=b[c]):!1!==f.grouping&&(h=n++),e.columnIndex=h)});const l=
|
|
Math.min(Math.abs(f.transA)*(f.ordinal&&f.ordinal.slope||d.pointRange||f.closestPointRange||f.tickInterval||1),f.len),k=l*d.groupPadding,m=(l-2*k)/(n||1);d=Math.min(d.maxPointWidth||f.len,I(d.pointWidth,m*(1-2*d.pointPadding)));a.columnMetrics={width:d,offset:(m-d)/2+(k+((a.columnIndex||0)+(e?1:0))*m-l/2)*(e?-1:1),paddedWidth:m,columnCount:n};return a.columnMetrics}crispCol(a,d,f,g){var e=this.borderWidth,b=-(e%2?.5:0);e=e%2?.5:1;this.options.crisp&&(f=Math.round(a+f)+b,a=Math.round(a)+b,f-=a);g=
|
|
Math.round(d+g)+e;b=.5>=Math.abs(d)&&.5<g;d=Math.round(d)+e;g-=d;b&&g&&(--d,g+=1);return{x:a,y:d,width:f,height:g}}adjustForMissingColumns(a,d,g,l){const e=this.options.stacking;if(!g.isNull&&1<l.columnCount){const b=this.yAxis.options.reversedStacks;let c=0,h=b?0:-l.columnCount;D(this.yAxis.stacking&&this.yAxis.stacking.stacks,a=>{if("number"===typeof g.x){const d=a[g.x.toString()];d&&(a=d.points[this.index],e?(a&&(c=h),d.hasValidPoints&&(b?h++:h--)):f(a)&&(a=Object.keys(d.points).filter(b=>!b.match(",")&&
|
|
d.points[b]&&1<d.points[b].length).map(parseFloat).sort((b,c)=>c-b),c=a.indexOf(this.index),h=a.length))}});a=(g.plotX||0)+((h-1)*l.paddedWidth+d)/2-d-c*l.paddedWidth}return a}translate(){const a=this,d=a.chart,f=a.options;var k=a.dense=2>a.closestPointRange*a.xAxis.transA;k=a.borderWidth=I(f.borderWidth,k?0:1);const e=a.xAxis,b=a.yAxis,c=f.threshold,n=I(f.minPointLength,5),m=a.getColumnMetrics(),r=m.width,w=a.pointXOffset=m.offset,t=a.dataMin,y=a.dataMax;let O=a.barW=Math.max(r,1+2*k),D=a.translatedThreshold=
|
|
b.getThreshold(c);d.inverted&&(D-=.5);f.pointPadding&&(O=Math.ceil(O));A.prototype.translate.apply(a);a.points.forEach(function(h){const l=I(h.yBottom,D);var k=999+Math.abs(l),q=h.plotX||0;k=p(h.plotY,-k,b.len+k);let u=Math.min(k,l),v=Math.max(k,l)-u,J=r,F=q+w,L=O;n&&Math.abs(v)<n&&(v=n,q=!b.reversed&&!h.negative||b.reversed&&h.negative,g(c)&&g(y)&&h.y===c&&y<=c&&(b.min||0)<c&&(t!==y||(b.max||0)<=c)&&(q=!q,h.negative=!h.negative),u=Math.abs(u-D)>n?l-n:D-(q?n:0));x(h.options.pointWidth)&&(J=L=Math.ceil(h.options.pointWidth),
|
|
F-=Math.round((J-r)/2));f.centerInCategory&&(F=a.adjustForMissingColumns(F,J,h,m));h.barX=F;h.pointWidth=J;h.tooltipPos=d.inverted?[p(b.len+b.pos-d.plotLeft-k,b.pos-d.plotLeft,b.len+b.pos-d.plotLeft),e.len+e.pos-d.plotTop-F-L/2,v]:[e.left-d.plotLeft+F+L/2,p(k+b.pos-d.plotTop,b.pos-d.plotTop,b.len+b.pos-d.plotTop),v];h.shapeType=a.pointClass.prototype.shapeType||"roundedRect";h.shapeArgs=a.crispCol(F,h.isNull?D:u,L,h.isNull?0:v)});l(this,"afterColumnTranslate")}drawGraph(){this.group[this.dense?"addClass":
|
|
"removeClass"]("highcharts-dense-data")}pointAttribs(a,d){const f=this.options;var h=this.pointAttrToOptions||{},e=h.stroke||"borderColor";const b=h["stroke-width"]||"borderWidth";let c,n=a&&a.color||this.color,g=a&&a[e]||f[e]||n;h=a&&a.options.dashStyle||f.dashStyle;let l=a&&a[b]||f[b]||this[b]||0,k=I(a&&a.opacity,f.opacity,1);a&&this.zones.length&&(c=a.getZone(),n=a.options.color||c&&(c.color||a.nonZonedColor)||this.color,c&&(g=c.borderColor||g,h=c.dashStyle||h,l=c.borderWidth||l));d&&a&&(a=w(f.states[d],
|
|
a.options.states&&a.options.states[d]||{}),d=a.brightness,n=a.color||"undefined"!==typeof d&&t(n).brighten(a.brightness).get()||n,g=a[e]||g,l=a[b]||l,h=a.dashStyle||h,k=I(a.opacity,k));e={fill:n,stroke:g,"stroke-width":l,opacity:k};h&&(e.dashstyle=h);return e}drawPoints(a=this.points){const d=this,f=this.chart,h=d.options,e=f.renderer,b=h.animationLimit||250;let c;a.forEach(function(a){let n=a.graphic,l=!!n,k=n&&f.pointCount<b?"animate":"attr";if(g(a.plotY)&&null!==a.y){c=a.shapeArgs;n&&a.hasNewShapeType()&&
|
|
(n=n.destroy());d.enabledDataSorting&&(a.startXPos=d.xAxis.reversed?-(c?c.width||0:0):d.xAxis.width);n||(a.graphic=n=e[a.shapeType](c).add(a.group||d.group))&&d.enabledDataSorting&&f.hasRendered&&f.pointCount<b&&(n.attr({x:a.startXPos}),l=!0,k="animate");if(n&&l)n[k](w(c));f.styledMode||n[k](d.pointAttribs(a,a.selected&&"select")).shadow(!1!==a.allowShadow&&h.shadow);n&&(n.addClass(a.getClassName(),!0),n.attr({visibility:a.visible?"inherit":"hidden"}))}else n&&(a.graphic=n.destroy())})}drawTracker(a=
|
|
this.points){const d=this,h=d.chart,g=h.pointer,e=function(b){const c=g.getPointFromEvent(b);"undefined"!==typeof c&&d.options.enableMouseTracking&&(g.isDirectTouch=!0,c.onMouseOver(b))};let b;a.forEach(function(c){b=f(c.dataLabels)?c.dataLabels:c.dataLabel?[c.dataLabel]:[];c.graphic&&(c.graphic.element.point=c);b.forEach(function(b){b.div?b.div.point=c:b.element.point=c})});d._hasTracking||(d.trackerGroups.forEach(function(b){if(d[b]){d[b].addClass("highcharts-tracker").on("mouseover",e).on("mouseout",
|
|
function(b){g.onTrackerMouseOut(b)});if(r)d[b].on("touchstart",e);!h.styledMode&&d.options.cursor&&d[b].css({cursor:d.options.cursor})}}),d._hasTracking=!0);l(this,"afterDrawTracker")}remove(){const a=this,d=a.chart;d.hasRendered&&d.series.forEach(function(d){d.type===a.type&&(d.isDirty=!0)});A.prototype.remove.apply(a,arguments)}}d.defaultOptions=w(A.defaultOptions,H);m(d.prototype,{cropShoulder:0,directTouch:!0,getSymbol:k,negStacks:!0,trackerGroups:["group","dataLabelsGroup"]});C.registerSeriesType("column",
|
|
d);"";return d});M(a,"Core/Series/DataLabel.js",[a["Core/Animation/AnimationUtilities.js"],a["Core/Templating.js"],a["Core/Utilities.js"]],function(a,z,H){const {getDeferredAnimation:y}=a,{format:A}=z,{defined:C,extend:E,fireEvent:B,isArray:t,isString:r,merge:k,objectEach:p,pick:x,splat:m}=H;var l;(function(a){function f(a,b,c,d,f){const e=this.chart;var h=this.isCartesian&&e.inverted;const g=this.enabledDataSorting;var n=a.plotX,l=a.plotY;const k=c.rotation;var q=c.align;l=C(n)&&C(l)&&e.isInsidePlot(n,
|
|
Math.round(l),{inverted:h,paneCoordinates:!0,series:this});let m="justify"===x(c.overflow,g?"none":"justify");h=this.visible&&!1!==a.visible&&C(n)&&(a.series.forceDL||g&&!m||l||x(c.inside,!!this.options.stacking)&&d&&e.isInsidePlot(n,h?d.x+1:d.y+d.height-1,{inverted:h,paneCoordinates:!0,series:this}));n=a.pos();if(h&&n){k&&b.attr({align:q});q=b.getBBox(!0);var u=[0,0];var p=e.renderer.fontMetrics(b).b;d=E({x:n[0],y:Math.round(n[1]),width:0,height:0},d);E(c,{width:q.width,height:q.height});k?(m=!1,
|
|
u=e.renderer.rotCorr(p,k),p={x:d.x+(c.x||0)+d.width/2+u.x,y:d.y+(c.y||0)+{top:0,middle:.5,bottom:1}[c.verticalAlign]*d.height},u=[q.x-Number(b.attr("x")),q.y-Number(b.attr("y"))],g&&this.xAxis&&!m&&this.setDataLabelStartPos(a,b,f,l,p),b[f?"attr":"animate"](p)):(g&&this.xAxis&&!m&&this.setDataLabelStartPos(a,b,f,l,d),b.align(c,void 0,d),p=b.alignAttr);if(m&&0<=d.height)this.justifyDataLabel(b,c,p,q,d,f);else if(x(c.crop,!0)){let {x:b,y:c}=p;b+=u[0];c+=u[1];h=e.isInsidePlot(b,c,{paneCoordinates:!0,
|
|
series:this})&&e.isInsidePlot(b+q.width,c+q.height,{paneCoordinates:!0,series:this})}if(c.shape&&!k)b[f?"attr":"animate"]({anchorX:n[0],anchorY:n[1]})}f&&g&&(b.placed=!1);h||g&&!m?b.show():(b.hide(),b.placed=!1)}function l(a,b){var c=b.filter;return c?(b=c.operator,a=a[c.property],c=c.value,">"===b&&a>c||"<"===b&&a<c||">="===b&&a>=c||"<="===b&&a<=c||"=="===b&&a==c||"==="===b&&a===c?!0:!1):!0}function I(){return this.plotGroup("dataLabelsGroup","data-labels",this.hasRendered?"inherit":"hidden",this.options.dataLabels.zIndex||
|
|
6)}function D(a){const b=this.hasRendered||0,c=this.initDataLabelsGroup().attr({opacity:+b});!b&&c&&(this.visible&&c.show(),this.options.animation?c.animate({opacity:1},a):c.attr({opacity:1}));return c}function d(a=this.points){var b,c;const e=this,d=e.chart,f=e.options,h=d.renderer,{backgroundColor:g,plotBackgroundColor:k}=d.options.chart,q=d.options.plotOptions,u=h.getContrast(r(k)&&k||r(g)&&g||"#000000");let w=f.dataLabels,G,I;var D=m(w)[0];const z=D.animation;D=D.defer?y(d,z,e):{defer:0,duration:0};
|
|
w=v(v(null===(b=null===q||void 0===q?void 0:q.series)||void 0===b?void 0:b.dataLabels,null===(c=null===q||void 0===q?void 0:q[e.type])||void 0===c?void 0:c.dataLabels),w);B(this,"drawDataLabels");if(t(w)||w.enabled||e._hasPointLabels)I=this.initDataLabels(D),a.forEach(b=>{var c;const a=b.dataLabels||[];G=m(v(w,b.dlOptions||(null===(c=b.options)||void 0===c?void 0:c.dataLabels)));G.forEach((c,g)=>{var n,k=c.enabled&&(!b.isNull||b.dataLabelOnNull)&&l(b,c);const q=b.connectors?b.connectors[g]:b.connector,
|
|
m=c.style||{};let v={},w=a[g],J=!w;const F=x(c.distance,b.labelDistance);if(k){var t=x(c[b.formatPrefix+"Format"],c.format);var L=b.getLabelConfig();L=C(t)?A(t,L,d):(c[b.formatPrefix+"Formatter"]||c.formatter).call(L,c);t=c.rotation;d.styledMode||(m.color=x(c.color,m.color,r(e.color)?e.color:void 0,"#000000"),"contrast"===m.color?(b.contrastColor=h.getContrast(b.color||e.color),m.color=!C(F)&&c.inside||0>(F||0)||f.stacking?b.contrastColor:u):delete b.contrastColor,f.cursor&&(m.cursor=f.cursor));v=
|
|
{r:c.borderRadius||0,rotation:t,padding:c.padding,zIndex:1};if(!d.styledMode){const {backgroundColor:a,borderColor:e}=c;v.fill="auto"===a?b.color:a;v.stroke="auto"===e?b.color:e;v["stroke-width"]=c.borderWidth}p(v,(b,c)=>{"undefined"===typeof b&&delete v[c]})}!w||k&&C(L)&&!!w.div===!!c.useHTML&&(w.rotation&&c.rotation||w.rotation===c.rotation)||(w=void 0,J=!0,q&&b.connector&&(b.connector=b.connector.destroy(),b.connectors&&(1===b.connectors.length?delete b.connectors:delete b.connectors[g])));k&&
|
|
C(L)&&(w?v.text=L:(w=t?h.text(L,0,0,c.useHTML).addClass("highcharts-data-label"):h.label(L,0,0,c.shape,void 0,void 0,c.useHTML,void 0,"data-label"))&&w.addClass(" highcharts-data-label-color-"+b.colorIndex+" "+(c.className||"")+(c.useHTML?" highcharts-tracker":"")),w&&(w.options=c,w.attr(v),d.styledMode||w.css(m).shadow(c.shadow),(k=c[b.formatPrefix+"TextPath"]||c.textPath)&&!c.useHTML&&(w.setTextPath((null===(n=b.getDataLabelPath)||void 0===n?void 0:n.call(b,w))||b.graphic,k),b.dataLabelPath&&!k.enabled&&
|
|
(b.dataLabelPath=b.dataLabelPath.destroy())),w.added||w.add(I),e.alignDataLabel(b,w,c,void 0,J),w.isActive=!0,a[g]&&a[g]!==w&&a[g].destroy(),a[g]=w))});for(c=a.length;c--;)a[c].isActive?a[c].isActive=!1:(a[c].destroy(),a.splice(c,1));b.dataLabel=a[0];b.dataLabels=a});B(this,"afterDrawDataLabels")}function h(a,b,c,d,f,h){const e=this.chart,g=b.align,n=b.verticalAlign,l=a.box?0:a.padding||0;let {x:k=0,y:q=0}=b,m,u;m=(c.x||0)+l;0>m&&("right"===g&&0<=k?(b.align="left",b.inside=!0):k-=m,u=!0);m=(c.x||
|
|
0)+d.width-l;m>e.plotWidth&&("left"===g&&0>=k?(b.align="right",b.inside=!0):k+=e.plotWidth-m,u=!0);m=c.y+l;0>m&&("bottom"===n&&0<=q?(b.verticalAlign="top",b.inside=!0):q-=m,u=!0);m=(c.y||0)+d.height-l;m>e.plotHeight&&("top"===n&&0>=q?(b.verticalAlign="bottom",b.inside=!0):q+=e.plotHeight-m,u=!0);u&&(b.x=k,b.y=q,a.placed=!h,a.align(b,void 0,f));return u}function v(a,b){let c=[],e;if(t(a)&&!t(b))c=a.map(function(c){return k(c,b)});else if(t(b)&&!t(a))c=b.map(function(b){return k(a,b)});else if(!t(a)&&
|
|
!t(b))c=k(a,b);else if(t(a)&&t(b))for(e=Math.max(a.length,b.length);e--;)c[e]=k(a[e],b[e]);return c}function q(a,b,c,d,f){const e=this.chart,h=e.inverted,g=this.xAxis,n=g.reversed,l=h?b.height/2:b.width/2;a=(a=a.pointWidth)?a/2:0;b.startXPos=h?f.x:n?-l-a:g.width-l+a;b.startYPos=h?n?this.yAxis.height-l+a:-l-a:f.y;d?"hidden"===b.visibility&&(b.show(),b.attr({opacity:0}).animate({opacity:1})):b.attr({opacity:1}).animate({opacity:0},void 0,b.hide);e.hasRendered&&(c&&b.attr({x:b.startXPos,y:b.startYPos}),
|
|
b.placed=!0)}const u=[];a.compose=function(a){H.pushUnique(u,a)&&(a=a.prototype,a.initDataLabelsGroup=I,a.initDataLabels=D,a.alignDataLabel=f,a.drawDataLabels=d,a.justifyDataLabel=h,a.setDataLabelStartPos=q)}})(l||(l={}));"";return l});M(a,"Series/Column/ColumnDataLabel.js",[a["Core/Series/DataLabel.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],function(a,z,H){const {series:y}=z,{merge:A,pick:C}=H;var E;(function(z){function t(a,p,r,m,l){let f=this.chart.inverted;var g=a.series;
|
|
let k=(g.xAxis?g.xAxis.len:this.chart.plotSizeX)||0;g=(g.yAxis?g.yAxis.len:this.chart.plotSizeY)||0;var x=a.dlBox||a.shapeArgs;let t=C(a.below,a.plotY>C(this.translatedThreshold,g)),d=C(r.inside,!!this.options.stacking);x&&(m=A(x),0>m.y&&(m.height+=m.y,m.y=0),x=m.y+m.height-g,0<x&&x<m.height&&(m.height-=x),f&&(m={x:g-m.y-m.height,y:k-m.x-m.width,width:m.height,height:m.width}),d||(f?(m.x+=t?0:m.width,m.width=0):(m.y+=t?m.height:0,m.height=0)));r.align=C(r.align,!f||d?"center":t?"right":"left");r.verticalAlign=
|
|
C(r.verticalAlign,f||d?"middle":t?"top":"bottom");y.prototype.alignDataLabel.call(this,a,p,r,m,l);r.inside&&a.contrastColor&&p.css({color:a.contrastColor})}const r=[];z.compose=function(k){a.compose(y);H.pushUnique(r,k)&&(k.prototype.alignDataLabel=t)}})(E||(E={}));return E});M(a,"Series/Bar/BarSeries.js",[a["Series/Column/ColumnSeries.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],function(a,z,H){const {extend:y,merge:A}=H;class C extends a{constructor(){super(...arguments);this.points=
|
|
this.options=this.data=void 0}}C.defaultOptions=A(a.defaultOptions,{});y(C.prototype,{inverted:!0});z.registerSeriesType("bar",C);"";return C});M(a,"Series/Scatter/ScatterSeriesDefaults.js",[],function(){"";return{lineWidth:0,findNearestPointBy:"xy",jitter:{x:0,y:0},marker:{enabled:!0},tooltip:{headerFormat:'<span style="color:{point.color}">\u25cf</span> <span style="font-size: 0.8em"> {series.name}</span><br/>',pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"}}});M(a,"Series/Scatter/ScatterSeries.js",
|
|
[a["Series/Scatter/ScatterSeriesDefaults.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],function(a,z,H){const {column:y,line:A}=z.seriesTypes,{addEvent:C,extend:E,merge:B}=H;class t extends A{constructor(){super(...arguments);this.points=this.options=this.data=void 0}applyJitter(){const a=this,k=this.options.jitter,p=this.points.length;k&&this.points.forEach(function(r,m){["x","y"].forEach(function(l,f){let g="plot"+l.toUpperCase(),w,x;if(k[l]&&!r.isNull){var t=a[l+"Axis"];x=k[l]*
|
|
t.transA;t&&!t.isLog&&(w=Math.max(0,r[g]-x),t=Math.min(t.len,r[g]+x),f=1E4*Math.sin(m+f*p),f-=Math.floor(f),r[g]=w+(t-w)*f,"x"===l&&(r.clientX=r.plotX))}})})}drawGraph(){this.options.lineWidth?super.drawGraph():this.graph&&(this.graph=this.graph.destroy())}}t.defaultOptions=B(A.defaultOptions,a);E(t.prototype,{drawTracker:y.prototype.drawTracker,sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","markerGroup","dataLabelsGroup"],takeOrdinalPosition:!1});C(t,"afterTranslate",function(){this.applyJitter()});
|
|
z.registerSeriesType("scatter",t);return t});M(a,"Series/CenteredUtilities.js",[a["Core/Globals.js"],a["Core/Series/Series.js"],a["Core/Utilities.js"]],function(a,z,H){const {deg2rad:y}=a,{fireEvent:A,isNumber:C,pick:E,relativeLength:B}=H;var t;(function(a){a.getCenter=function(){var a=this.options,p=this.chart;const r=2*(a.slicedOffset||0),m=p.plotWidth-2*r,l=p.plotHeight-2*r;var f=a.center;const g=Math.min(m,l),w=a.thickness;var t=a.size;let y=a.innerSize||0;"string"===typeof t&&(t=parseFloat(t));
|
|
"string"===typeof y&&(y=parseFloat(y));a=[E(f[0],"50%"),E(f[1],"50%"),E(t&&0>t?void 0:a.size,"100%"),E(y&&0>y?void 0:a.innerSize||0,"0%")];!p.angular||this instanceof z||(a[3]=0);for(f=0;4>f;++f)t=a[f],p=2>f||2===f&&/%$/.test(t),a[f]=B(t,[m,l,g,a[2]][f])+(p?r:0);a[3]>a[2]&&(a[3]=a[2]);C(w)&&2*w<a[2]&&0<w&&(a[3]=a[2]-2*w);A(this,"afterGetCenter",{positions:a});return a};a.getStartAndEndRadians=function(a,p){a=C(a)?a:0;p=C(p)&&p>a&&360>p-a?p:a+360;return{start:y*(a+-90),end:y*(p+-90)}}})(t||(t={}));
|
|
"";return t});M(a,"Series/Pie/PiePoint.js",[a["Core/Animation/AnimationUtilities.js"],a["Core/Series/Point.js"],a["Core/Utilities.js"]],function(a,z,H){const {setAnimation:y}=a,{addEvent:A,defined:C,extend:E,isNumber:B,pick:t,relativeLength:r}=H;class k extends z{constructor(){super(...arguments);this.series=this.options=this.labelDistance=void 0}getConnectorPath(){const a=this.labelPosition,k=this.series.options.dataLabels,m=this.connectorShapes;let l=k.connectorShape;m[l]&&(l=m[l]);return l.call(this,
|
|
{x:a.computed.x,y:a.computed.y,alignment:a.alignment},a.connectorPosition,k)}getTranslate(){return this.sliced?this.slicedTranslation:{translateX:0,translateY:0}}haloPath(a){const k=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(k.x,k.y,k.r+a,k.r+a,{innerR:k.r-1,start:k.start,end:k.end,borderRadius:k.borderRadius})}init(){super.init.apply(this,arguments);this.name=t(this.name,"Slice");const a=a=>{this.slice("select"===a.type)};A(this,"select",a);A(this,
|
|
"unselect",a);return this}isValid(){return B(this.y)&&0<=this.y}setVisible(a,k){const m=this.series,l=m.chart,f=m.options.ignoreHiddenPoint;k=t(k,f);a!==this.visible&&(this.visible=this.options.visible=a="undefined"===typeof a?!this.visible:a,m.options.data[m.data.indexOf(this)]=this.options,["graphic","dataLabel","connector"].forEach(f=>{if(this[f])this[f][a?"show":"hide"](a)}),this.legendItem&&l.legend.colorizeItem(this,a),a||"hover"!==this.state||this.setState(""),f&&(m.isDirty=!0),k&&l.redraw())}slice(a,
|
|
k,m){const l=this.series;y(m,l.chart);t(k,!0);this.sliced=this.options.sliced=C(a)?a:!this.sliced;l.options.data[l.data.indexOf(this)]=this.options;this.graphic&&this.graphic.animate(this.getTranslate())}}E(k.prototype,{connectorShapes:{fixedOffset:function(a,k,m){const l=k.breakAt;k=k.touchingSliceAt;return[["M",a.x,a.y],m.softConnector?["C",a.x+("left"===a.alignment?-5:5),a.y,2*l.x-k.x,2*l.y-k.y,l.x,l.y]:["L",l.x,l.y],["L",k.x,k.y]]},straight:function(a,k){k=k.touchingSliceAt;return[["M",a.x,a.y],
|
|
["L",k.x,k.y]]},crookedLine:function(a,k,m){const {breakAt:l,touchingSliceAt:f}=k;({series:k}=this);const [g,p,x]=k.center,t=x/2,d=k.chart.plotWidth,h=k.chart.plotLeft;k="left"===a.alignment;const {x:v,y:q}=a;m.crookDistance?(a=r(m.crookDistance,1),a=k?g+t+(d+h-g-t)*(1-a):h+(g-t)*a):a=g+(p-q)*Math.tan((this.angle||0)-Math.PI/2);m=[["M",v,q]];(k?a<=v&&a>=l.x:a>=v&&a<=l.x)&&m.push(["L",a,q]);m.push(["L",l.x,l.y],["L",f.x,f.y]);return m}}});return k});M(a,"Series/Pie/PieSeriesDefaults.js",[],function(){"";
|
|
return{borderRadius:3,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{allowOverlap:!0,connectorPadding:5,connectorShape:"crookedLine",crookDistance:void 0,distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},softConnector:!0,x:0},fillColor:void 0,ignoreHiddenPoint:!0,inactiveOtherPoints:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:"#ffffff",borderWidth:1,lineWidth:void 0,
|
|
states:{hover:{brightness:.1}}}});M(a,"Series/Pie/PieSeries.js",[a["Series/CenteredUtilities.js"],a["Series/Column/ColumnSeries.js"],a["Core/Globals.js"],a["Series/Pie/PiePoint.js"],a["Series/Pie/PieSeriesDefaults.js"],a["Core/Series/Series.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Renderer/SVG/Symbols.js"],a["Core/Utilities.js"]],function(a,z,H,K,A,C,E,B,t){const {getStartAndEndRadians:r}=a;({noop:H}=H);const {clamp:k,extend:p,fireEvent:x,merge:m,pick:l,relativeLength:f}=t;class g extends C{constructor(){super(...arguments);
|
|
this.points=this.options=this.maxLabelDistance=this.data=this.center=void 0}animate(a){const f=this,g=f.points,d=f.startAngleRad;a||g.forEach(function(a){const h=a.graphic,g=a.shapeArgs;h&&g&&(h.attr({r:l(a.startR,f.center&&f.center[3]/2),start:d,end:d}),h.animate({r:g.r,start:g.start,end:g.end},f.options.animation))})}drawEmpty(){const a=this.startAngleRad,f=this.endAngleRad,g=this.options;let d,h;0===this.total&&this.center?(d=this.center[0],h=this.center[1],this.graph||(this.graph=this.chart.renderer.arc(d,
|
|
h,this.center[1]/2,0,a,f).addClass("highcharts-empty-series").add(this.group)),this.graph.attr({d:B.arc(d,h,this.center[2]/2,0,{start:a,end:f,innerR:this.center[3]/2})}),this.chart.styledMode||this.graph.attr({"stroke-width":g.borderWidth,fill:g.fillColor||"none",stroke:g.color||"#cccccc"})):this.graph&&(this.graph=this.graph.destroy())}drawPoints(){const a=this.chart.renderer;this.points.forEach(function(f){f.graphic&&f.hasNewShapeType()&&(f.graphic=f.graphic.destroy());f.graphic||(f.graphic=a[f.shapeType](f.shapeArgs).add(f.series.group),
|
|
f.delayedRendering=!0)})}generatePoints(){super.generatePoints();this.updateTotals()}getX(a,f,g){const d=this.center,h=this.radii?this.radii[g.index]||0:d[2]/2;a=Math.asin(k((a-d[1])/(h+g.labelDistance),-1,1));return d[0]+(f?-1:1)*Math.cos(a)*(h+g.labelDistance)+(0<g.labelDistance?(f?-1:1)*this.options.dataLabels.padding:0)}hasData(){return!!this.processedXData.length}redrawPoints(){const a=this,f=a.chart;let g,d,h,l;this.drawEmpty();a.group&&!f.styledMode&&a.group.shadow(a.options.shadow);a.points.forEach(function(k){const q=
|
|
{};d=k.graphic;!k.isNull&&d?(l=k.shapeArgs,g=k.getTranslate(),f.styledMode||(h=a.pointAttribs(k,k.selected&&"select")),k.delayedRendering?(d.setRadialReference(a.center).attr(l).attr(g),f.styledMode||d.attr(h).attr({"stroke-linejoin":"round"}),k.delayedRendering=!1):(d.setRadialReference(a.center),f.styledMode||m(!0,q,h),m(!0,q,l,g),d.animate(q)),d.attr({visibility:k.visible?"inherit":"hidden"}),d.addClass(k.getClassName(),!0)):d&&(k.graphic=d.destroy())})}sortByAngle(a,f){a.sort(function(a,d){return"undefined"!==
|
|
typeof a.angle&&(d.angle-a.angle)*f})}translate(a){x(this,"translate");this.generatePoints();var g=this.options;const k=g.slicedOffset,d=k+(g.borderWidth||0);var h=r(g.startAngle,g.endAngle);const m=this.startAngleRad=h.start;h=(this.endAngleRad=h.end)-m;const q=this.points,u=g.dataLabels.distance;g=g.ignoreHiddenPoint;const e=q.length;let b,c,n,p=0;a||(this.center=a=this.getCenter());for(c=0;c<e;c++){n=q[c];var w=m+p*h;!n.isValid()||g&&!n.visible||(p+=n.percentage/100);var t=m+p*h;var y={x:a[0],
|
|
y:a[1],r:a[2]/2,innerR:a[3]/2,start:Math.round(1E3*w)/1E3,end:Math.round(1E3*t)/1E3};n.shapeType="arc";n.shapeArgs=y;n.labelDistance=l(n.options.dataLabels&&n.options.dataLabels.distance,u);n.labelDistance=f(n.labelDistance,y.r);this.maxLabelDistance=Math.max(this.maxLabelDistance||0,n.labelDistance);t=(t+w)/2;t>1.5*Math.PI?t-=2*Math.PI:t<-Math.PI/2&&(t+=2*Math.PI);n.slicedTranslation={translateX:Math.round(Math.cos(t)*k),translateY:Math.round(Math.sin(t)*k)};y=Math.cos(t)*a[2]/2;b=Math.sin(t)*a[2]/
|
|
2;n.tooltipPos=[a[0]+.7*y,a[1]+.7*b];n.half=t<-Math.PI/2||t>Math.PI/2?1:0;n.angle=t;w=Math.min(d,n.labelDistance/5);n.labelPosition={natural:{x:a[0]+y+Math.cos(t)*n.labelDistance,y:a[1]+b+Math.sin(t)*n.labelDistance},computed:{},alignment:0>n.labelDistance?"center":n.half?"right":"left",connectorPosition:{breakAt:{x:a[0]+y+Math.cos(t)*w,y:a[1]+b+Math.sin(t)*w},touchingSliceAt:{x:a[0]+y,y:a[1]+b}}}}x(this,"afterTranslate")}updateTotals(){const a=this.points,f=a.length,g=this.options.ignoreHiddenPoint;
|
|
let d,h,l=0;for(d=0;d<f;d++)h=a[d],!h.isValid()||g&&!h.visible||(l+=h.y);this.total=l;for(d=0;d<f;d++)h=a[d],h.percentage=0<l&&(h.visible||!g)?h.y/l*100:0,h.total=l}}g.defaultOptions=m(C.defaultOptions,A);p(g.prototype,{axisTypes:[],directTouch:!0,drawGraph:void 0,drawTracker:z.prototype.drawTracker,getCenter:a.getCenter,getSymbol:H,isCartesian:!1,noSharedTooltip:!0,pointAttribs:z.prototype.pointAttribs,pointClass:K,requireSorting:!1,searchPoint:H,trackerGroups:["group","dataLabelsGroup"]});E.registerSeriesType("pie",
|
|
g);return g});M(a,"Series/Pie/PieDataLabel.js",[a["Core/Series/DataLabel.js"],a["Core/Globals.js"],a["Core/Renderer/RendererUtilities.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],function(a,z,H,K,A){const {noop:y}=z,{distribute:E}=H,{series:B}=K,{arrayMax:t,clamp:r,defined:k,merge:p,pick:x,relativeLength:m}=A;var l;(function(f){function g(){const a=this,d=a.data,f=a.chart,g=a.options.dataLabels||{},e=g.connectorPadding,b=f.plotWidth,c=f.plotHeight,n=f.plotLeft,l=Math.round(f.chartWidth/
|
|
3),m=a.center,r=m[2]/2,w=m[1],y=[[],[]],O=[0,0,0,0],D=a.dataLabelPositioners;let I,G,z,A,C,H,N,K,M,R,W,Z;a.visible&&(g.enabled||a._hasPointLabels)&&(d.forEach(function(b){b.dataLabel&&b.visible&&b.dataLabel.shortened&&(b.dataLabel.attr({width:"auto"}).css({width:"auto",textOverflow:"clip"}),b.dataLabel.shortened=!1)}),B.prototype.drawDataLabels.apply(a),d.forEach(function(b){b.dataLabel&&(b.visible?(y[b.half].push(b),b.dataLabel._pos=null,!k(g.style.width)&&!k(b.options.dataLabels&&b.options.dataLabels.style&&
|
|
b.options.dataLabels.style.width)&&b.dataLabel.getBBox().width>l&&(b.dataLabel.css({width:Math.round(.7*l)+"px"}),b.dataLabel.shortened=!0)):(b.dataLabel=b.dataLabel.destroy(),b.dataLabels&&1===b.dataLabels.length&&delete b.dataLabels))}),y.forEach((d,h)=>{const l=d.length,q=[];let u,p=0;if(l){a.sortByAngle(d,h-.5);if(0<a.maxLabelDistance){var v=Math.max(0,w-r-a.maxLabelDistance);u=Math.min(w+r+a.maxLabelDistance,f.plotHeight);d.forEach(function(b){0<b.labelDistance&&b.dataLabel&&(b.top=Math.max(0,
|
|
w-r-b.labelDistance),b.bottom=Math.min(w+r+b.labelDistance,f.plotHeight),p=b.dataLabel.getBBox().height||21,b.distributeBox={target:b.labelPosition.natural.y-b.top+p/2,size:p,rank:b.y},q.push(b.distributeBox))});v=u+p-v;E(q,v,v/5)}for(W=0;W<l;W++){I=d[W];H=I.labelPosition;A=I.dataLabel;R=!1===I.visible?"hidden":"inherit";M=v=H.natural.y;q&&k(I.distributeBox)&&("undefined"===typeof I.distributeBox.pos?R="hidden":(N=I.distributeBox.size,M=D.radialDistributionY(I)));delete I.positionIndex;if(g.justify)K=
|
|
D.justify(I,r,m);else switch(g.alignTo){case "connectors":K=D.alignToConnectors(d,h,b,n);break;case "plotEdges":K=D.alignToPlotEdges(A,h,b,n);break;default:K=D.radialDistributionX(a,I,M,v)}A._attr={visibility:R,align:H.alignment};Z=I.options.dataLabels||{};A._pos={x:K+x(Z.x,g.x)+({left:e,right:-e}[H.alignment]||0),y:M+x(Z.y,g.y)-A.getBBox().height/2};H&&(H.computed.x=K,H.computed.y=M);x(g.crop,!0)&&(C=A.getBBox().width,v=null,K-C<e&&1===h?(v=Math.round(C-K+e),O[3]=Math.max(v,O[3])):K+C>b-e&&0===h&&
|
|
(v=Math.round(K+C-b+e),O[1]=Math.max(v,O[1])),0>M-N/2?O[0]=Math.max(Math.round(-M+N/2),O[0]):M+N/2>c&&(O[2]=Math.max(Math.round(M+N/2-c),O[2])),A.sideOverflow=v)}}}),0===t(O)||this.verifyDataLabelOverflow(O))&&(this.placeDataLabels(),this.points.forEach(function(b){Z=p(g,b.options.dataLabels);if(G=x(Z.connectorWidth,1)){let c;z=b.connector;if((A=b.dataLabel)&&A._pos&&b.visible&&0<b.labelDistance){R=A._attr.visibility;if(c=!z)b.connector=z=f.renderer.path().addClass("highcharts-data-label-connector highcharts-color-"+
|
|
b.colorIndex+(b.className?" "+b.className:"")).add(a.dataLabelsGroup),f.styledMode||z.attr({"stroke-width":G,stroke:Z.connectorColor||b.color||"#666666"});z[c?"attr":"animate"]({d:b.getConnectorPath()});z.attr("visibility",R)}else z&&(b.connector=z.destroy())}}))}function l(){this.points.forEach(function(a){let d=a.dataLabel,f;d&&a.visible&&((f=d._pos)?(d.sideOverflow&&(d._attr.width=Math.max(d.getBBox().width-d.sideOverflow,0),d.css({width:d._attr.width+"px",textOverflow:(this.options.dataLabels.style||
|
|
{}).textOverflow||"ellipsis"}),d.shortened=!0),d.attr(d._attr),d[d.moved?"animate":"attr"](f),d.moved=!0):d&&d.attr({y:-9999}));delete a.distributeBox},this)}function I(a){let d=this.center,f=this.options,h=f.center,e=f.minSize||80,b,c=null!==f.size;c||(null!==h[0]?b=Math.max(d[2]-Math.max(a[1],a[3]),e):(b=Math.max(d[2]-a[1]-a[3],e),d[0]+=(a[3]-a[1])/2),null!==h[1]?b=r(b,e,d[2]-Math.max(a[0],a[2])):(b=r(b,e,d[2]-a[0]-a[2]),d[1]+=(a[0]-a[2])/2),b<d[2]?(d[2]=b,d[3]=Math.min(f.thickness?Math.max(0,b-
|
|
2*f.thickness):Math.max(0,m(f.innerSize||0,b)),b),this.translate(d),this.drawDataLabels&&this.drawDataLabels()):c=!0);return c}const D=[],d={radialDistributionY:function(a){return a.top+a.distributeBox.pos},radialDistributionX:function(a,d,f,g){return a.getX(f<d.top+2||f>d.bottom-2?g:f,d.half,d)},justify:function(a,d,f){return f[0]+(a.half?-1:1)*(d+a.labelDistance)},alignToPlotEdges:function(a,d,f,g){a=a.getBBox().width;return d?a+g:f-a-g},alignToConnectors:function(a,d,f,g){let e=0,b;a.forEach(function(a){b=
|
|
a.dataLabel.getBBox().width;b>e&&(e=b)});return d?e+g:f-e-g}};f.compose=function(f){a.compose(B);A.pushUnique(D,f)&&(f=f.prototype,f.dataLabelPositioners=d,f.alignDataLabel=y,f.drawDataLabels=g,f.placeDataLabels=l,f.verifyDataLabelOverflow=I)}})(l||(l={}));return l});M(a,"Extensions/OverlappingDataLabels.js",[a["Core/Chart/Chart.js"],a["Core/Utilities.js"]],function(a,z){function y(a,k){let p,r=!1;a&&(p=a.newOpacity,a.oldOpacity!==p&&(a.alignAttr&&a.placed?(a[p?"removeClass":"addClass"]("highcharts-data-label-hidden"),
|
|
r=!0,a.alignAttr.opacity=p,a[a.isOld?"animate":"attr"](a.alignAttr,null,function(){k.styledMode||a.css({pointerEvents:p?"auto":"none"})}),A(k,"afterHideOverlappingLabel")):a.attr({opacity:p})),a.isOld=!0);return r}const {addEvent:K,fireEvent:A,isArray:C,isNumber:E,objectEach:B,pick:t}=z;K(a,"render",function(){let a=this,k=[];(this.labelCollectors||[]).forEach(function(a){k=k.concat(a())});(this.yAxis||[]).forEach(function(a){a.stacking&&a.options.stackLabels&&!a.options.stackLabels.allowOverlap&&
|
|
B(a.stacking.stacks,function(a){B(a,function(a){a.label&&k.push(a.label)})})});(this.series||[]).forEach(function(p){var r=p.options.dataLabels;p.visible&&(!1!==r.enabled||p._hasPointLabels)&&(r=m=>m.forEach(l=>{l.visible&&(C(l.dataLabels)?l.dataLabels:l.dataLabel?[l.dataLabel]:[]).forEach(function(f){const g=f.options;f.labelrank=t(g.labelrank,l.labelrank,l.shapeArgs&&l.shapeArgs.height);g.allowOverlap?(f.oldOpacity=f.opacity,f.newOpacity=1,y(f,a)):k.push(f)})}),r(p.nodes||[]),r(p.points))});this.hideOverlappingLabels(k)});
|
|
a.prototype.hideOverlappingLabels=function(a){let k=this,p=a.length,r=k.renderer;var m;let l;let f,g,w,t=!1;var D=function(a){let d,f;var g;let l=a.box?0:a.padding||0,e=g=0,b,c;if(a&&(!a.alignAttr||a.placed))return d=a.alignAttr||{x:a.attr("x"),y:a.attr("y")},f=a.parentGroup,a.width||(g=a.getBBox(),a.width=g.width,a.height=g.height,g=r.fontMetrics(a.element).h),b=a.width-2*l,(c={left:"0",center:"0.5",right:"1"}[a.alignValue])?e=+c*b:E(a.x)&&Math.round(a.x)!==a.translateX&&(e=a.x-a.translateX),{x:d.x+
|
|
(f.translateX||0)+l-(e||0),y:d.y+(f.translateY||0)+l-g,width:a.width-2*l,height:a.height-2*l}};for(l=0;l<p;l++)if(m=a[l])m.oldOpacity=m.opacity,m.newOpacity=1,m.absoluteBox=D(m);a.sort(function(a,f){return(f.labelrank||0)-(a.labelrank||0)});for(l=0;l<p;l++)for(g=(D=a[l])&&D.absoluteBox,m=l+1;m<p;++m)w=(f=a[m])&&f.absoluteBox,!g||!w||D===f||0===D.newOpacity||0===f.newOpacity||"hidden"===D.visibility||"hidden"===f.visibility||w.x>=g.x+g.width||w.x+w.width<=g.x||w.y>=g.y+g.height||w.y+w.height<=g.y||
|
|
((D.labelrank<f.labelrank?D:f).newOpacity=0);a.forEach(function(a){y(a,k)&&(t=!0)});t&&A(k,"afterHideAllOverlappingLabels")}});M(a,"Extensions/BorderRadius.js",[a["Core/Defaults.js"],a["Core/Series/Series.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Renderer/SVG/SVGElement.js"],a["Core/Renderer/SVG/SVGRenderer.js"],a["Core/Utilities.js"]],function(a,z,H,K,A,C){const {defaultOptions:y}=a;({seriesTypes:a}=H);const {addEvent:B,extend:t,isObject:r,merge:k,relativeLength:p}=C,x={radius:0,scope:"stack",
|
|
where:void 0},m=(a,f)=>{r(a)||(a={radius:a||0});return k(x,f,a)};if(-1===K.symbolCustomAttribs.indexOf("borderRadius")){K.symbolCustomAttribs.push("borderRadius","brBoxHeight","brBoxY");const l=A.prototype.symbols.arc;A.prototype.symbols.arc=function(a,f,k,m,d={}){a=l(a,f,k,m,d);const {innerR:h=0,r:g=k,start:q=0,end:u=0}=d;if(d.open||!d.borderRadius)return a;k=u-q;f=Math.sin(k/2);d=Math.max(Math.min(p(d.borderRadius||0,g-h),(g-h)/2,g*f/(1+f)),0);k=Math.min(d,k/Math.PI*2*h);for(f=a.length-1;f--;){{let h=
|
|
void 0,g=void 0,l=void 0;m=a;var e=f,b=1<f?k:d,c=m[e],n=m[e+1];"Z"===n[0]&&(n=m[0]);"M"!==c[0]&&"L"!==c[0]||"A"!==n[0]?"A"!==c[0]||"M"!==n[0]&&"L"!==n[0]||(l=n,g=c):(l=c,g=n,h=!0);if(l&&g&&g.params){c=g[1];var r=g[5];n=g.params;const {start:a,end:d,cx:f,cy:k}=n;var w=r?c-b:c+b;const q=w?Math.asin(b/w):0;r=r?q:-q;w*=Math.cos(q);h?(n.start=a+r,l[1]=f+w*Math.cos(a),l[2]=k+w*Math.sin(a),m.splice(e+1,0,["A",b,b,0,0,1,f+c*Math.cos(n.start),k+c*Math.sin(n.start)])):(n.end=d-r,g[6]=f+c*Math.cos(n.end),g[7]=
|
|
k+c*Math.sin(n.end),m.splice(e+1,0,["A",b,b,0,0,1,f+w*Math.cos(d),k+w*Math.sin(d)]));g[4]=Math.abs(n.end-n.start)<Math.PI?0:1}}}return a};const f=A.prototype.symbols.roundedRect;A.prototype.symbols.roundedRect=function(a,l,k,m,d={}){const h=f(a,l,k,m,d),{r:g=0,brBoxHeight:q=m,brBoxY:u=l}=d;var e=l-u,b=u+q-(l+m);d=-.1<e-g?0:g;const c=-.1<b-g?0:g;var n=Math.max(d&&e,0);const p=Math.max(c&&b,0);b=[a+d,l];e=[a+k-d,l];const r=[a+k,l+d],w=[a+k,l+m-c],t=[a+k-c,l+m],x=[a+c,l+m],y=[a,l+m-c],I=[a,l+d];if(n){const a=
|
|
Math.sqrt(Math.pow(d,2)-Math.pow(d-n,2));b[0]-=a;e[0]+=a;r[1]=I[1]=l+d-n}m<d-n&&(n=Math.sqrt(Math.pow(d,2)-Math.pow(d-n-m,2)),r[0]=w[0]=a+k-d+n,t[0]=Math.min(r[0],t[0]),x[0]=Math.max(w[0],x[0]),y[0]=I[0]=a+d-n,r[1]=I[1]=l+m);p&&(n=Math.sqrt(Math.pow(c,2)-Math.pow(c-p,2)),t[0]+=n,x[0]-=n,w[1]=y[1]=l+m-c+p);m<c-p&&(m=Math.sqrt(Math.pow(c,2)-Math.pow(c-p-m,2)),r[0]=w[0]=a+k-c+m,e[0]=Math.min(r[0],e[0]),b[0]=Math.max(w[0],b[0]),y[0]=I[0]=a+c-m,w[1]=y[1]=l);h.length=0;h.push(["M",...b],["L",...e],["A",
|
|
d,d,0,0,1,...r],["L",...w],["A",c,c,0,0,1,...t],["L",...x],["A",c,c,0,0,1,...y],["L",...I],["A",d,d,0,0,1,...b],["Z"]);return h};B(a.pie,"afterTranslate",function(){const a=m(this.options.borderRadius);for(const f of this.points){const g=f.shapeArgs;g&&(g.borderRadius=p(a.radius,(g.r||0)-(g.innerR||0)))}});B(z,"afterColumnTranslate",function(){var a,f;if(this.options.borderRadius&&(!this.chart.is3d||!this.chart.is3d())){const {options:h,yAxis:g}=this,q="percent"===h.stacking;var l=null===(f=null===
|
|
(a=y.plotOptions)||void 0===a?void 0:a[this.type])||void 0===f?void 0:f.borderRadius;a=m(h.borderRadius,r(l)?l:{});f=g.options.reversed;for(const m of this.points)if({shapeArgs:l}=m,"roundedRect"===m.shapeType&&l){const {width:e=0,height:b=0,y:c=0}=l;var k=c,d=b;"stack"===a.scope&&m.stackTotal&&(k=g.translate(q?100:m.stackTotal,!1,!0,!1,!0),d=g.translate(h.threshold||0,!1,!0,!1,!0),d=this.crispCol(0,Math.min(k,d),0,Math.abs(k-d)),k=d.y,d=d.height);const n=-1===(m.negative?-1:1)*(f?-1:1);let u=a.where;
|
|
!u&&this.is("waterfall")&&Math.abs((m.yBottom||0)-(this.translatedThreshold||0))>this.borderWidth&&(u="all");u||(u="end");const r=Math.min(p(a.radius,e),e/2,"all"===u?b/2:Infinity)||0;"end"===u&&(n&&(k-=r),d+=r);t(l,{brBoxHeight:d,brBoxY:k,r})}}},{order:9})}z={optionsToObject:m};"";return z});M(a,"Core/Responsive.js",[a["Core/Utilities.js"]],function(a){const {diffObjects:y,extend:H,find:K,merge:A,pick:C,uniqueKey:E}=a;var B;(function(t){function r(a,k){const l=a.condition;(l.callback||function(){return this.chartWidth<=
|
|
C(l.maxWidth,Number.MAX_VALUE)&&this.chartHeight<=C(l.maxHeight,Number.MAX_VALUE)&&this.chartWidth>=C(l.minWidth,0)&&this.chartHeight>=C(l.minHeight,0)}).call(this)&&k.push(a._id)}function k(a,k){const l=this.options.responsive;var f=this.currentResponsive;let g=[];!k&&l&&l.rules&&l.rules.forEach(a=>{"undefined"===typeof a._id&&(a._id=E());this.matchResponsiveRule(a,g)},this);k=A(...g.map(a=>K((l||{}).rules||[],f=>f._id===a)).map(a=>a&&a.chartOptions));k.isResponsiveOptions=!0;g=g.toString()||void 0;
|
|
g!==(f&&f.ruleIds)&&(f&&this.update(f.undoOptions,a,!0),g?(f=y(k,this.options,!0,this.collectionsWithUpdate),f.isResponsiveOptions=!0,this.currentResponsive={ruleIds:g,mergedOptions:k,undoOptions:f},this.update(k,a,!0)):this.currentResponsive=void 0)}const p=[];t.compose=function(t){a.pushUnique(p,t)&&H(t.prototype,{matchResponsiveRule:r,setResponsive:k});return t}})(B||(B={}));"";"";return B});M(a,"masters/highcharts.src.js",[a["Core/Globals.js"],a["Core/Utilities.js"],a["Core/Defaults.js"],a["Core/Animation/Fx.js"],
|
|
a["Core/Animation/AnimationUtilities.js"],a["Core/Renderer/HTML/AST.js"],a["Core/Templating.js"],a["Core/Renderer/RendererUtilities.js"],a["Core/Renderer/SVG/SVGElement.js"],a["Core/Renderer/SVG/SVGRenderer.js"],a["Core/Renderer/HTML/HTMLElement.js"],a["Core/Renderer/HTML/HTMLRenderer.js"],a["Core/Axis/Axis.js"],a["Core/Axis/DateTimeAxis.js"],a["Core/Axis/LogarithmicAxis.js"],a["Core/Axis/PlotLineOrBand/PlotLineOrBand.js"],a["Core/Axis/Tick.js"],a["Core/Tooltip.js"],a["Core/Series/Point.js"],a["Core/Pointer.js"],
|
|
a["Core/Legend/Legend.js"],a["Core/Chart/Chart.js"],a["Core/Axis/Stacking/StackingAxis.js"],a["Core/Axis/Stacking/StackItem.js"],a["Core/Series/Series.js"],a["Core/Series/SeriesRegistry.js"],a["Series/Column/ColumnSeries.js"],a["Series/Column/ColumnDataLabel.js"],a["Series/Pie/PieSeries.js"],a["Series/Pie/PieDataLabel.js"],a["Core/Series/DataLabel.js"],a["Core/Responsive.js"],a["Core/Color/Color.js"],a["Core/Time.js"]],function(a,z,H,K,A,C,E,B,t,r,k,p,x,m,l,f,g,w,I,D,d,h,v,q,u,e,b,c,n,J,F,L,S,P){a.animate=
|
|
A.animate;a.animObject=A.animObject;a.getDeferredAnimation=A.getDeferredAnimation;a.setAnimation=A.setAnimation;a.stop=A.stop;a.timers=K.timers;a.AST=C;a.Axis=x;a.Chart=h;a.chart=h.chart;a.Fx=K;a.Legend=d;a.PlotLineOrBand=f;a.Point=I;a.Pointer=D;a.Series=u;a.StackItem=q;a.SVGElement=t;a.SVGRenderer=r;a.Templating=E;a.Tick=g;a.Time=P;a.Tooltip=w;a.Color=S;a.color=S.parse;p.compose(r);k.compose(t);D.compose(h);d.compose(h);a.defaultOptions=H.defaultOptions;a.getOptions=H.getOptions;a.time=H.defaultTime;
|
|
a.setOptions=H.setOptions;a.dateFormat=E.dateFormat;a.format=E.format;a.numberFormat=E.numberFormat;a.addEvent=z.addEvent;a.arrayMax=z.arrayMax;a.arrayMin=z.arrayMin;a.attr=z.attr;a.clearTimeout=z.clearTimeout;a.correctFloat=z.correctFloat;a.createElement=z.createElement;a.css=z.css;a.defined=z.defined;a.destroyObjectProperties=z.destroyObjectProperties;a.discardElement=z.discardElement;a.distribute=B.distribute;a.erase=z.erase;a.error=z.error;a.extend=z.extend;a.extendClass=z.extendClass;a.find=
|
|
z.find;a.fireEvent=z.fireEvent;a.getMagnitude=z.getMagnitude;a.getStyle=z.getStyle;a.inArray=z.inArray;a.isArray=z.isArray;a.isClass=z.isClass;a.isDOMElement=z.isDOMElement;a.isFunction=z.isFunction;a.isNumber=z.isNumber;a.isObject=z.isObject;a.isString=z.isString;a.keys=z.keys;a.merge=z.merge;a.normalizeTickInterval=z.normalizeTickInterval;a.objectEach=z.objectEach;a.offset=z.offset;a.pad=z.pad;a.pick=z.pick;a.pInt=z.pInt;a.relativeLength=z.relativeLength;a.removeEvent=z.removeEvent;a.seriesType=
|
|
e.seriesType;a.splat=z.splat;a.stableSort=z.stableSort;a.syncTimeout=z.syncTimeout;a.timeUnits=z.timeUnits;a.uniqueKey=z.uniqueKey;a.useSerialIds=z.useSerialIds;a.wrap=z.wrap;c.compose(b);F.compose(u);m.compose(x);l.compose(x);J.compose(n);f.compose(x);L.compose(h);v.compose(x,h,u);w.compose(D);return a});M(a,"Core/Axis/NavigatorAxisComposition.js",[a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z){function y(){this.navigatorAxis||(this.navigatorAxis=new p(this))}function K(a){var k=this.chart,
|
|
l=k.options,f=l.navigator;const g=this.navigatorAxis,p=k.zooming.pinchType;l=l.rangeSelector;k=k.zooming.type;this.isXAxis&&(f&&f.enabled||l&&l.enabled)&&("y"===k?a.zoomed=!1:(!A&&"xy"===k||A&&"xy"===p)&&this.options.range&&(f=g.previousZoom,B(a.newMin)?g.previousZoom=[this.min,this.max]:f&&(a.newMin=f[0],a.newMax=f[1],g.previousZoom=void 0)));"undefined"!==typeof a.zoomed&&a.preventDefault()}const {isTouchDevice:A}=a,{addEvent:C,correctFloat:E,defined:B,isNumber:t,pick:r}=z,k=[];class p{static compose(a){z.pushUnique(k,
|
|
a)&&(a.keepProps.push("navigatorAxis"),C(a,"init",y),C(a,"zoom",K))}constructor(a){this.axis=a}destroy(){this.axis=void 0}toFixedRange(a,k,l,f){const g=this.axis;var m=g.chart;a=r(l,g.translate(a,!0,!g.horiz));k=r(f,g.translate(k,!0,!g.horiz));m=m&&m.fixedRange;const p=(g.pointRange||0)/2;B(l)||(a=E(a+p));B(f)||(k=E(k-p));m&&g.dataMin&&g.dataMax&&(k>=g.dataMax&&(a=E(g.dataMax-m)),a<=g.dataMin&&(k=E(g.dataMin+m)));t(a)&&t(k)||(a=k=void 0);return{min:a,max:k}}}return p});M(a,"Stock/Navigator/NavigatorDefaults.js",
|
|
[a["Core/Color/Color.js"],a["Core/Series/SeriesRegistry.js"]],function(a,z){({parse:a}=a);({seriesTypes:z}=z);z={height:40,margin:25,maskInside:!0,handles:{width:7,height:15,symbols:["navigator-handle","navigator-handle"],enabled:!0,lineWidth:1,backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:a("#667aff").setOpacity(.3).get(),outlineColor:"#999999",outlineWidth:1,series:{type:"undefined"===typeof z.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:{overscroll:0,
|
|
className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"#e6e6e6",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,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}};"";return z});M(a,"Stock/Navigator/NavigatorSymbols.js",
|
|
[],function(){return{"navigator-handle":function(a,z,H,K,A={}){a=A.width?A.width/2:H;z=Math.round(a/3)+.5;K=A.height||K;return[["M",-a-1,.5],["L",a,.5],["L",a,K+.5],["L",-a-1,K+.5],["L",-a-1,.5],["M",-z,4],["L",-z,K-3],["M",z-1,4],["L",z-1,K-3]]}}});M(a,"Stock/Navigator/NavigatorComposition.js",[a["Core/Defaults.js"],a["Core/Globals.js"],a["Core/Axis/NavigatorAxisComposition.js"],a["Stock/Navigator/NavigatorDefaults.js"],a["Stock/Navigator/NavigatorSymbols.js"],a["Core/Renderer/RendererRegistry.js"],
|
|
a["Core/Utilities.js"]],function(a,z,H,K,A,C,E){function y(){this.navigator&&this.navigator.setBaseSeries(null,!1)}function t(){var a;const b=this.legend,c=this.navigator;let d,f,h;if(c){d=b&&b.options;f=c.xAxis;h=c.yAxis;const {scrollbarHeight:e,scrollButtonSize:g}=c;this.inverted?(c.left=c.opposite?this.chartWidth-e-c.height:this.spacing[3]+e,c.top=this.plotTop+g):(c.left=v(f.left,this.plotLeft+g),c.top=c.navigatorOptions.top||this.chartHeight-c.height-e-((null===(a=this.scrollbar)||void 0===a?
|
|
void 0:a.options.margin)||0)-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(d&&"bottom"===d.verticalAlign&&"proximate"!==d.layout&&d.enabled&&!d.floating?b.legendHeight+v(d.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0));f&&h&&(this.inverted?f.options.left=h.options.left=c.left:f.options.top=h.options.top=c.top,f.setAxisSize(),h.setAxisSize())}}function r(a){this.navigator||this.scroller||!this.options.navigator.enabled&&!this.options.scrollbar.enabled||
|
|
(this.scroller=this.navigator=new u(this),v(a.redraw,!0)&&this.redraw(a.animation))}function k(){const a=this.options;if(a.navigator.enabled||a.scrollbar.enabled)this.scroller=this.navigator=new u(this)}function p(){var a=this.options;const b=a.navigator;a=a.rangeSelector;if((b&&b.enabled||a&&a.enabled)&&(!w&&"x"===this.zooming.type||w&&"x"===this.zooming.pinchType))return!1}function x(a){const b=a.navigator;b&&a.xAxis[0]&&(a=a.xAxis[0].getExtremes(),b.render(a.min,a.max))}function m(a){const b=a.options.navigator||
|
|
{},c=a.options.scrollbar||{};this.navigator||this.scroller||!b.enabled&&!c.enabled||(h(!0,this.options.navigator,b),h(!0,this.options.scrollbar,c),delete a.options.navigator,delete a.options.scrollbar)}function l(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}const {defaultOptions:f,setOptions:g}=a,{isTouchDevice:w}=z,{getRendererType:I}=C,{addEvent:D,extend:d,merge:h,pick:v}=E,q=[];let u;return{compose:function(a,b,c,h){H.compose(a);u=c;E.pushUnique(q,
|
|
b)&&(b.prototype.callbacks.push(x),D(b,"afterAddSeries",y),D(b,"afterSetChartSize",t),D(b,"afterUpdate",r),D(b,"beforeRender",k),D(b,"beforeShowResetZoom",p),D(b,"update",m));E.pushUnique(q,h)&&D(h,"afterUpdate",l);E.pushUnique(q,I)&&d(I().prototype.symbols,A);E.pushUnique(q,g)&&d(f,{navigator:K})}}});M(a,"Core/Axis/ScrollbarAxis.js",[a["Core/Utilities.js"]],function(a){const {addEvent:y,defined:H,pick:K}=a,A=[];class C{static compose(z,B){if(!a.pushUnique(A,z))return z;const t=a=>{const k=K(a.options&&
|
|
a.options.min,a.min),p=K(a.options&&a.options.max,a.max);return{axisMin:k,axisMax:p,scrollMin:H(a.dataMin)?Math.min(k,a.min,a.dataMin,K(a.threshold,Infinity)):k,scrollMax:H(a.dataMax)?Math.max(p,a.max,a.dataMax,K(a.threshold,-Infinity)):p}};y(z,"afterInit",function(){const a=this;a.options&&a.options.scrollbar&&a.options.scrollbar.enabled&&(a.options.scrollbar.vertical=!a.horiz,a.options.startOnTick=a.options.endOnTick=!1,a.scrollbar=new B(a.chart.renderer,a.options.scrollbar,a.chart),y(a.scrollbar,
|
|
"changed",function(k){let {axisMin:p,axisMax:r,scrollMin:m,scrollMax:l}=t(a);var f=l-m;let g;H(p)&&H(r)&&(a.horiz&&!a.reversed||!a.horiz&&a.reversed?(g=m+f*this.to,f=m+f*this.from):(g=m+f*(1-this.from),f=m+f*(1-this.to)),this.shouldUpdateExtremes(k.DOMType)?a.setExtremes(f,g,!0,"mousemove"===k.DOMType||"touchmove"===k.DOMType?!1:void 0,k):this.setRange(this.from,this.to))}))});y(z,"afterRender",function(){let {scrollMin:a,scrollMax:k}=t(this),p=this.scrollbar;var x=this.axisTitleMargin+(this.titleOffset||
|
|
0),m=this.chart.scrollbarsOffsets;let l=this.options.margin||0;p&&(this.horiz?(this.opposite||(m[1]+=x),p.position(this.left,this.top+this.height+2+m[1]-(this.opposite?l:0),this.width,this.height),this.opposite||(m[1]+=l),x=1):(this.opposite&&(m[0]+=x),p.position(p.options.opposite?this.left+this.width+2+m[0]-(this.opposite?0:l):this.opposite?0:l,this.top,this.width,this.height),this.opposite&&(m[0]+=l),x=0),m[x]+=p.size+(p.options.margin||0),isNaN(a)||isNaN(k)||!H(this.min)||!H(this.max)||this.min===
|
|
this.max?p.setRange(0,1):(m=(this.min-a)/(k-a),x=(this.max-a)/(k-a),this.horiz&&!this.reversed||!this.horiz&&this.reversed?p.setRange(m,x):p.setRange(1-x,1-m)))});y(z,"afterGetOffset",function(){const a=this.scrollbar;var k=a&&!a.options.opposite;k=this.horiz?2:k?3:1;a&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[k]+=a.size+(a.options.margin||0))});return z}}return C});M(a,"Stock/Scrollbar/ScrollbarDefaults.js",[a["Core/Globals.js"]],function(a){return{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}});M(a,"Stock/Scrollbar/Scrollbar.js",[a["Core/Defaults.js"],a["Core/Globals.js"],a["Core/Axis/ScrollbarAxis.js"],
|
|
a["Stock/Scrollbar/ScrollbarDefaults.js"],a["Core/Utilities.js"]],function(a,z,H,K,A){const {defaultOptions:y}=a,{addEvent:E,correctFloat:B,defined:t,destroyObjectProperties:r,fireEvent:k,merge:p,pick:x,removeEvent:m}=A;class l{static compose(a){H.compose(a,l)}static swapXY(a,g){g&&a.forEach(a=>{const f=a.length;let g;for(let d=0;d<f;d+=2)g=a[d+1],"number"===typeof g&&(a[d+1]=a[d+2],a[d+2]=g)});return a}constructor(a,g,l){this._events=[];this.chart=void 0;this.from=this.chartY=this.chartX=0;this.scrollbar=
|
|
this.renderer=this.options=this.group=void 0;this.scrollbarButtons=[];this.scrollbarGroup=void 0;this.scrollbarLeft=0;this.scrollbarRifles=void 0;this.scrollbarStrokeWidth=1;this.to=this.size=this.scrollbarTop=0;this.track=void 0;this.trackBorderWidth=1;this.userOptions=void 0;this.y=this.x=0;this.init(a,g,l)}addEvents(){var a=this.options.inverted?[1,0]:[0,1];const g=this.scrollbarButtons,l=this.scrollbarGroup.element,k=this.track.element,m=this.mouseDownHandler.bind(this),d=this.mouseMoveHandler.bind(this),
|
|
h=this.mouseUpHandler.bind(this);a=[[g[a[0]].element,"click",this.buttonToMinClick.bind(this)],[g[a[1]].element,"click",this.buttonToMaxClick.bind(this)],[k,"click",this.trackClick.bind(this)],[l,"mousedown",m],[l.ownerDocument,"mousemove",d],[l.ownerDocument,"mouseup",h]];z.hasTouch&&a.push([l,"touchstart",m],[l.ownerDocument,"touchmove",d],[l.ownerDocument,"touchend",h]);a.forEach(function(a){E.apply(null,a)});this._events=a}buttonToMaxClick(a){const f=(this.to-this.from)*x(this.options.step,.2);
|
|
this.updatePosition(this.from+f,this.to+f);k(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:a})}buttonToMinClick(a){const f=B(this.to-this.from)*x(this.options.step,.2);this.updatePosition(B(this.from-f),B(this.to-f));k(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:a})}cursorToScrollbarPosition(a){var f=this.options;f=f.minWidth>this.calculatedWidth?f.minWidth:0;return{chartX:(a.chartX-this.x-this.xOffset)/(this.barWidth-f),chartY:(a.chartY-this.y-
|
|
this.yOffset)/(this.barWidth-f)}}destroy(){const a=this,g=a.chart.scroller;a.removeEvents();["track","scrollbarRifles","scrollbar","scrollbarGroup","group"].forEach(function(f){a[f]&&a[f].destroy&&(a[f]=a[f].destroy())});g&&a===g.scrollbar&&(g.scrollbar=null,r(g.scrollbarButtons))}drawScrollbarButton(a){const f=this.renderer,k=this.scrollbarButtons,m=this.options,p=this.size;var d=f.g().add(this.group);k.push(d);m.buttonsEnabled&&(d=f.rect().addClass("highcharts-scrollbar-button").add(d),this.chart.styledMode||
|
|
d.attr({stroke:m.buttonBorderColor,"stroke-width":m.buttonBorderWidth,fill:m.buttonBackgroundColor}),d.attr(d.crisp({x:-.5,y:-.5,width:p+1,height:p+1,r:m.buttonBorderRadius},d.strokeWidth())),a=f.path(l.swapXY([["M",p/2+(a?-1:1),p/2-3],["L",p/2+(a?-1:1),p/2+3],["L",p/2+(a?2:-2),p/2]],m.vertical)).addClass("highcharts-scrollbar-arrow").add(k[a]),this.chart.styledMode||a.attr({fill:m.buttonArrowColor}))}init(a,g,l){this.scrollbarButtons=[];this.renderer=a;this.userOptions=g;this.options=p(K,y.scrollbar,
|
|
g);this.options.margin=x(this.options.margin,10);this.chart=l;this.size=x(this.options.size,this.options.height);g.enabled&&(this.render(),this.addEvents())}mouseDownHandler(a){a=this.chart.pointer.normalize(a);a=this.cursorToScrollbarPosition(a);this.chartX=a.chartX;this.chartY=a.chartY;this.initPositions=[this.from,this.to];this.grabbedCenter=!0}mouseMoveHandler(a){var f=this.chart.pointer.normalize(a),l=this.options.vertical?"chartY":"chartX";const m=this.initPositions||[];!this.grabbedCenter||
|
|
a.touches&&0===a.touches[0][l]||(f=this.cursorToScrollbarPosition(f)[l],l=this[l],l=f-l,this.hasDragged=!0,this.updatePosition(m[0]+l,m[1]+l),this.hasDragged&&k(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:a.type,DOMEvent:a}))}mouseUpHandler(a){this.hasDragged&&k(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:a.type,DOMEvent:a});this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null}position(a,g,l,k){const {buttonsEnabled:f,margin:d=0,vertical:h}=
|
|
this.options,m=this.rendered?"animate":"attr";let q=k,u=0;this.group.show();this.x=a;this.y=g+this.trackBorderWidth;this.width=l;this.height=k;this.xOffset=q;this.yOffset=u;h?(this.width=this.yOffset=l=this.size,this.xOffset=q=0,this.yOffset=u=f?this.size:0,this.barWidth=k-(f?2*l:0),this.x=a+=d):(this.height=k=this.size,this.xOffset=q=f?this.size:0,this.barWidth=l-(f?2*k:0),this.y+=d);this.group[m]({translateX:a,translateY:this.y});this.track[m]({width:l,height:k});this.scrollbarButtons[1][m]({translateX:h?
|
|
0:l-q,translateY:h?k-u:0})}removeEvents(){this._events.forEach(function(a){m.apply(null,a)});this._events.length=0}render(){const a=this.renderer,g=this.options,k=this.size,m=this.chart.styledMode,p=a.g("scrollbar").attr({zIndex:g.zIndex}).hide().add();this.group=p;this.track=a.rect().addClass("highcharts-scrollbar-track").attr({r:g.trackBorderRadius||0,height:k,width:k}).add(p);m||this.track.attr({fill:g.trackBackgroundColor,stroke:g.trackBorderColor,"stroke-width":g.trackBorderWidth});const d=this.trackBorderWidth=
|
|
this.track.strokeWidth();this.track.attr({x:-d%2/2,y:-d%2/2});this.scrollbarGroup=a.g().add(p);this.scrollbar=a.rect().addClass("highcharts-scrollbar-thumb").attr({height:k-d,width:k-d,r:g.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=a.path(l.swapXY([["M",-3,k/4],["L",-3,2*k/3],["M",0,k/4],["L",0,2*k/3],["M",3,k/4],["L",3,2*k/3]],g.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup);m||(this.scrollbar.attr({fill:g.barBackgroundColor,stroke:g.barBorderColor,
|
|
"stroke-width":g.barBorderWidth}),this.scrollbarRifles.attr({stroke:g.rifleColor,"stroke-width":1}));this.scrollbarStrokeWidth=this.scrollbar.strokeWidth();this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2);this.drawScrollbarButton(0);this.drawScrollbarButton(1)}setRange(a,g){const f=this.options,l=f.vertical;var k=f.minWidth,d=this.barWidth;const h=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";if(t(d)){var m=
|
|
d*Math.min(g,1);a=Math.max(a,0);var q=Math.ceil(d*a);this.calculatedWidth=m=B(m-q);m<k&&(q=(d-k+m)*a,m=k);k=Math.floor(q+this.xOffset+this.yOffset);d=m/2-.5;this.from=a;this.to=g;l?(this.scrollbarGroup[h]({translateY:k}),this.scrollbar[h]({height:m}),this.scrollbarRifles[h]({translateY:d}),this.scrollbarTop=k,this.scrollbarLeft=0):(this.scrollbarGroup[h]({translateX:k}),this.scrollbar[h]({width:m}),this.scrollbarRifles[h]({translateX:d}),this.scrollbarLeft=k,this.scrollbarTop=0);12>=m?this.scrollbarRifles.hide():
|
|
this.scrollbarRifles.show();!1===f.showFull&&(0>=a&&1<=g?this.group.hide():this.group.show());this.rendered=!0}}shouldUpdateExtremes(a){return x(this.options.liveRedraw,z.svg&&!z.isTouchDevice&&!this.chart.boosted)||"mouseup"===a||"touchend"===a||!t(a)}trackClick(a){const f=this.chart.pointer.normalize(a),l=this.to-this.from,m=this.y+this.scrollbarTop,p=this.x+this.scrollbarLeft;this.options.vertical&&f.chartY>m||!this.options.vertical&&f.chartX>p?this.updatePosition(this.from+l,this.to+l):this.updatePosition(this.from-
|
|
l,this.to-l);k(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:a})}update(a){this.destroy();this.init(this.chart.renderer,p(!0,this.options,a),this.chart)}updatePosition(a,g){1<g&&(a=B(1-B(g-a)),g=1);0>a&&(g=B(g-a),a=0);this.from=a;this.to=g}}l.defaultOptions=K;y.scrollbar=p(!0,l.defaultOptions,y.scrollbar);return l});M(a,"Stock/Navigator/Navigator.js",[a["Core/Axis/Axis.js"],a["Core/Defaults.js"],a["Core/Globals.js"],a["Core/Axis/NavigatorAxisComposition.js"],a["Stock/Navigator/NavigatorComposition.js"],
|
|
a["Stock/Scrollbar/Scrollbar.js"],a["Core/Utilities.js"]],function(a,z,H,K,A,C,E){function y(b,...a){a=[].filter.call(a,d);if(a.length)return Math[b].apply(0,a)}const {defaultOptions:t}=z,{hasTouch:r,isTouchDevice:k}=H,{addEvent:p,clamp:x,correctFloat:m,defined:l,destroyObjectProperties:f,erase:g,extend:w,find:I,isArray:D,isNumber:d,merge:h,pick:v,removeEvent:q,splat:u}=E;class e{static compose(b,a,d){A.compose(b,a,e,d)}constructor(b){this.rendered=this.range=this.outline=this.opposite=this.navigatorSize=
|
|
this.navigatorSeries=this.navigatorOptions=this.navigatorGroup=this.navigatorEnabled=this.left=this.height=this.handles=this.chart=this.baseSeries=void 0;this.scrollbarHeight=0;this.zoomedMin=this.zoomedMax=this.yAxis=this.xAxis=this.top=this.size=this.shades=this.scrollButtonSize=void 0;this.init(b)}drawHandle(b,a,e,d){const c=this.navigatorOptions.handles.height;this.handles[a][d](e?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(b,10)+.5-c)}:{translateX:Math.round(this.left+
|
|
parseInt(b,10)),translateY:Math.round(this.top+this.height/2-c/2-1)})}drawOutline(b,a,e,d){const c=this.navigatorOptions.maskInside;var f=this.outline.strokeWidth();const h=f/2;var g=f%2/2;const n=this.scrollButtonSize,l=this.size,k=this.top;f=this.height;const m=k-h,q=k+f;let u=this.left;e?(e=k+a+g,a=k+b+g,g=[["M",u+f,k-n-g],["L",u+f,e],["L",u,e],["M",u,a],["L",u+f,a],["L",u+f,k+l+n]],c&&g.push(["M",u+f,e-h],["L",u+f,a+h])):(u-=n,b+=u+n-g,a+=u+n-g,g=[["M",u,m],["L",b,m],["L",b,q],["M",a,q],["L",
|
|
a,m],["L",u+l+2*n,k+h]],c&&g.push(["M",b-h,m],["L",a+h,m]));this.outline[d]({d:g})}drawMasks(b,a,e,d){const c=this.left,f=this.top,h=this.height;let g,n,l,k;e?(l=[c,c,c],k=[f,f+b,f+a],n=[h,h,h],g=[b,a-b,this.size-a]):(l=[c,c+b,c+a],k=[f,f,f],n=[b,a-b,this.size-a],g=[h,h,h]);this.shades.forEach((b,a)=>{b[d]({x:l[a],y:k[a],width:n[a],height:g[a]})})}renderElements(){const b=this,a=b.navigatorOptions,e=a.maskInside,d=b.chart,f=d.renderer,h={cursor:d.inverted?"ns-resize":"ew-resize"},g=b.navigatorGroup=
|
|
f.g("navigator").attr({zIndex:8,visibility:"hidden"}).add();[!e,e,!e].forEach((c,e)=>{const n=f.rect().addClass("highcharts-navigator-mask"+(1===e?"-inside":"-outside")).add(g);d.styledMode||(n.attr({fill:c?a.maskFill:"rgba(0,0,0,0)"}),1===e&&n.css(h));b.shades[e]=n});b.outline=f.path().addClass("highcharts-navigator-outline").add(g);d.styledMode||b.outline.attr({"stroke-width":a.outlineWidth,stroke:a.outlineColor});if(a.handles&&a.handles.enabled){const c=a.handles,{height:e,width:n}=c;[0,1].forEach(a=>
|
|
{b.handles[a]=f.symbol(c.symbols[a],-n/2-1,0,n,e,c);d.inverted&&b.handles[a].attr({rotation:90,rotationOriginX:Math.floor(-n/2),rotationOriginY:(e+n)/2});b.handles[a].attr({zIndex:7-a}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][a]).add(g);d.styledMode||b.handles[a].attr({fill:c.backgroundColor,stroke:c.borderColor,"stroke-width":c.lineWidth}).css(h)})}}update(b){(this.series||[]).forEach(b=>{b.baseSeries&&delete b.baseSeries.navigatorSeries});this.destroy();
|
|
h(!0,this.chart.options.navigator,b);this.init(this.chart)}render(b,a,e,f){var c=this.chart;const h=this.xAxis,g=h.pointRange||0;var n=h.navigatorAxis.fake?c.xAxis[0]:h;const k=this.navigatorEnabled;var q=this.rendered,u=c.inverted;const p=c.xAxis[0].minRange,r=c.xAxis[0].options.maxRange,t=this.scrollButtonSize;let J=this.scrollbarHeight,w;if(!this.hasDragged||l(e)){b=m(b-g/2);a=m(a+g/2);if(!d(b)||!d(a))if(q)e=0,f=v(h.width,n.width);else return;this.left=v(h.left,c.plotLeft+t+(u?c.plotWidth:0));
|
|
var y=this.size=w=v(h.len,(u?c.plotHeight:c.plotWidth)-2*t);c=u?J:w+2*t;e=v(e,h.toPixels(b,!0));f=v(f,h.toPixels(a,!0));d(e)&&Infinity!==Math.abs(e)||(e=0,f=c);b=h.toValue(e,!0);a=h.toValue(f,!0);var z=Math.abs(m(a-b));z<p?this.grabbedLeft?e=h.toPixels(a-p-g,!0):this.grabbedRight&&(f=h.toPixels(b+p+g,!0)):l(r)&&m(z-g)>r&&(this.grabbedLeft?e=h.toPixels(a-r-g,!0):this.grabbedRight&&(f=h.toPixels(b+r+g,!0)));this.zoomedMax=x(Math.max(e,f),0,y);this.zoomedMin=x(this.fixedWidth?this.zoomedMax-this.fixedWidth:
|
|
Math.min(e,f),0,y);this.range=this.zoomedMax-this.zoomedMin;y=Math.round(this.zoomedMax);e=Math.round(this.zoomedMin);k&&(this.navigatorGroup.attr({visibility:"inherit"}),q=q&&!this.hasDragged?"animate":"attr",this.drawMasks(e,y,u,q),this.drawOutline(e,y,u,q),this.navigatorOptions.handles.enabled&&(this.drawHandle(e,0,u,q),this.drawHandle(y,1,u,q)));this.scrollbar&&(u?(u=this.top-t,n=this.left-J+(k||!n.opposite?0:(n.titleOffset||0)+n.axisTitleMargin),J=w+2*t):(u=this.top+(k?this.height:-J),n=this.left-
|
|
t),this.scrollbar.position(n,u,c,J),this.scrollbar.setRange(this.zoomedMin/(w||1),this.zoomedMax/(w||1)));this.rendered=!0}}addMouseEvents(){const b=this,a=b.chart,e=a.container;let d=[],f,h;b.mouseMoveHandler=f=function(a){b.onMouseMove(a)};b.mouseUpHandler=h=function(a){b.onMouseUp(a)};d=b.getPartsEvents("mousedown");d.push(p(a.renderTo,"mousemove",f),p(e.ownerDocument,"mouseup",h));r&&(d.push(p(a.renderTo,"touchmove",f),p(e.ownerDocument,"touchend",h)),d.concat(b.getPartsEvents("touchstart")));
|
|
b.eventsToUnbind=d;b.series&&b.series[0]&&d.push(p(b.series[0].xAxis,"foundExtremes",function(){a.navigator.modifyNavigatorAxisExtremes()}))}getPartsEvents(b){const a=this,e=[];["shades","handles"].forEach(function(c){a[c].forEach(function(d,f){e.push(p(d.element,b,function(b){a[c+"Mousedown"](b,f)}))})});return e}shadesMousedown(b,a){b=this.chart.pointer.normalize(b);const c=this.chart,e=this.xAxis,d=this.zoomedMin,f=this.size,h=this.range;let g=this.left,k=b.chartX,m,q;c.inverted&&(k=b.chartY,g=
|
|
this.top);1===a?(this.grabbedCenter=k,this.fixedWidth=h,this.dragOffset=k-d):(b=k-g-h/2,0===a?b=Math.max(0,b):2===a&&b+h>=f&&(b=f-h,this.reversedExtremes?(b-=h,q=this.getUnionExtremes().dataMin):m=this.getUnionExtremes().dataMax),b!==d&&(this.fixedWidth=h,a=e.navigatorAxis.toFixedRange(b,b+h,q,m),l(a.min)&&c.xAxis[0].setExtremes(Math.min(a.min,a.max),Math.max(a.min,a.max),!0,null,{trigger:"navigator"})))}handlesMousedown(b,a){this.chart.pointer.normalize(b);b=this.chart;const c=b.xAxis[0],e=this.reversedExtremes;
|
|
0===a?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=e?c.min:c.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=e?c.max:c.min);b.fixedRange=null}onMouseMove(b){const a=this;var e=a.chart;const d=a.navigatorSize,f=a.range,h=a.dragOffset,g=e.inverted;let l=a.left;b.touches&&0===b.touches[0].pageX||(b=e.pointer.normalize(b),e=b.chartX,g&&(l=a.top,e=b.chartY),a.grabbedLeft?(a.hasDragged=!0,a.render(0,0,e-l,a.otherHandlePos)):a.grabbedRight?(a.hasDragged=
|
|
!0,a.render(0,0,a.otherHandlePos,e-l)):a.grabbedCenter&&(a.hasDragged=!0,e<h?e=h:e>d+h-f&&(e=d+h-f),a.render(0,0,e-h,e-h+f)),a.hasDragged&&a.scrollbar&&v(a.scrollbar.options.liveRedraw,!k&&!this.chart.boosted)&&(b.DOMType=b.type,setTimeout(function(){a.onMouseUp(b)},0)))}onMouseUp(b){var a=this.chart,e=this.xAxis,f=this.scrollbar;const h=b.DOMEvent||b,g=a.inverted,k=this.rendered&&!this.hasDragged?"animate":"attr";let m,q;(!this.hasDragged||f&&f.hasDragged)&&"scrollbar"!==b.trigger||(f=this.getUnionExtremes(),
|
|
this.zoomedMin===this.otherHandlePos?m=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(q=this.fixedExtreme),this.zoomedMax===this.size&&(q=this.reversedExtremes?f.dataMin:f.dataMax),0===this.zoomedMin&&(m=this.reversedExtremes?f.dataMax:f.dataMin),e=e.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,m,q),l(e.min)&&a.xAxis[0].setExtremes(Math.min(e.min,e.max),Math.max(e.min,e.max),!0,this.hasDragged?!1:null,{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:h}));"mousemove"!==
|
|
b.DOMType&&"touchmove"!==b.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null);this.navigatorEnabled&&d(this.zoomedMin)&&d(this.zoomedMax)&&(a=Math.round(this.zoomedMin),b=Math.round(this.zoomedMax),this.shades&&this.drawMasks(a,b,g,k),this.outline&&this.drawOutline(a,b,g,k),this.navigatorOptions.handles.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(a,0,g,k),
|
|
this.drawHandle(b,1,g,k)))}removeEvents(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(b){b()}),this.eventsToUnbind=void 0);this.removeBaseSeriesEvents()}removeBaseSeriesEvents(){const b=this.baseSeries||[];this.navigatorEnabled&&b[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&b.forEach(function(b){q(b,"updatedData",this.updatedDataHandler)},this),b[0].xAxis&&q(b[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))}init(b){var c=b.options,e=c.navigator||{},f=e.enabled,g=c.scrollbar||
|
|
{},l=g.enabled;c=f&&e.height||0;var k=l&&g.height||0;const m=g.buttonsEnabled&&k||0;this.handles=[];this.shades=[];this.chart=b;this.setBaseSeries();this.height=c;this.scrollbarHeight=k;this.scrollButtonSize=m;this.scrollbarEnabled=l;this.navigatorEnabled=f;this.navigatorOptions=e;this.scrollbarOptions=g;this.opposite=v(e.opposite,!(f||!b.inverted));const q=this;f=q.baseSeries;g=b.xAxis.length;l=b.yAxis.length;k=f&&f[0]&&f[0].xAxis||b.xAxis[0]||{options:{}};b.isDirtyBox=!0;q.navigatorEnabled?(q.xAxis=
|
|
new a(b,h({breaks:k.options.breaks,ordinal:k.options.ordinal},e.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",type:"datetime",index:g,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},b.inverted?{offsets:[m,0,-m,0],width:c}:{offsets:[0,-m,0,m],height:c}),"xAxis"),q.yAxis=new a(b,h(e.yAxis,{id:"navigator-y-axis",alignTicks:!1,offset:0,index:l,isInternal:!0,reversed:v(e.yAxis&&e.yAxis.reversed,b.yAxis[0]&&b.yAxis[0].reversed,!1),
|
|
zoomEnabled:!1},b.inverted?{width:c}:{height:c}),"yAxis"),f||e.series.data?q.updateNavigatorSeries(!1):0===b.series.length&&(q.unbindRedraw=p(b,"beforeRedraw",function(){0<b.series.length&&!q.series&&(q.setBaseSeries(),q.unbindRedraw())})),q.reversedExtremes=b.inverted&&!q.xAxis.reversed||!b.inverted&&q.xAxis.reversed,q.renderElements(),q.addMouseEvents()):(q.xAxis={chart:b,navigatorAxis:{fake:!0},translate:function(a,c){var e=b.xAxis[0];const d=e.getExtremes(),f=e.len-2*m,h=y("min",e.options.min,
|
|
d.dataMin);e=y("max",e.options.max,d.dataMax)-h;return c?a*e/f+h:f*(a-h)/e},toPixels:function(b){return this.translate(b)},toValue:function(b){return this.translate(b,!0)}},q.xAxis.navigatorAxis.axis=q.xAxis,q.xAxis.navigatorAxis.toFixedRange=K.prototype.toFixedRange.bind(q.xAxis.navigatorAxis));b.options.scrollbar.enabled&&(e=h(b.options.scrollbar,{vertical:b.inverted}),!d(e.margin)&&q.navigatorEnabled&&(e.margin=b.inverted?-3:3),b.scrollbar=q.scrollbar=new C(b.renderer,e,b),p(q.scrollbar,"changed",
|
|
function(b){var a=q.size;const c=a*this.to;a*=this.from;q.hasDragged=q.scrollbar.hasDragged;q.render(0,0,a,c);this.shouldUpdateExtremes(b.DOMType)&&setTimeout(function(){q.onMouseUp(b)})}));q.addBaseSeriesEvents();q.addChartEvents()}getUnionExtremes(b){const a=this.chart.xAxis[0],e=this.xAxis,d=e.options,f=a.options;let h;b&&null===a.dataMin||(h={dataMin:v(d&&d.min,y("min",f.min,a.dataMin,e.dataMin,e.min)),dataMax:v(d&&d.max,y("max",f.max,a.dataMax,e.dataMax,e.max))});return h}setBaseSeries(b,a){const c=
|
|
this.chart,e=this.baseSeries=[];b=b||c.options&&c.options.navigator.baseSeries||(c.series.length?I(c.series,b=>!b.options.isInternal).index:0);(c.series||[]).forEach((a,c)=>{a.options.isInternal||!a.options.showInNavigator&&(c!==b&&a.options.id!==b||!1===a.options.showInNavigator)||e.push(a)});this.xAxis&&!this.xAxis.navigatorAxis.fake&&this.updateNavigatorSeries(!0,a)}updateNavigatorSeries(b,a){const c=this,e=c.chart,d=c.baseSeries,f={enableMouseTracking:!1,index:null,linkedTo:null,group:"nav",padXAxis:!1,
|
|
xAxis:"navigator-x-axis",yAxis:"navigator-y-axis",showInLegend:!1,stacking:void 0,isInternal:!0,states:{inactive:{opacity:1}}},g=c.series=(c.series||[]).filter(b=>{const a=b.baseSeries;return 0>d.indexOf(a)?(a&&(q(a,"updatedData",c.updatedDataHandler),delete a.navigatorSeries),b.chart&&b.destroy(),!1):!0});let l,k,m=c.navigatorOptions.series,p;d&&d.length&&d.forEach(b=>{const n=b.navigatorSeries;var q=w({color:b.color,visible:b.visible},D(m)?t.navigator.series:m);n&&!1===c.navigatorOptions.adaptToUpdatedData||
|
|
(f.name="Navigator "+d.length,l=b.options||{},p=l.navigatorOptions||{},q.dataLabels=u(q.dataLabels),k=h(l,f,q,p),k.pointRange=v(q.pointRange,p.pointRange,t.plotOptions[k.type||"line"].pointRange),q=p.data||q.data,c.hasNavigatorData=c.hasNavigatorData||!!q,k.data=q||l.data&&l.data.slice(0),n&&n.options?n.update(k,a):(b.navigatorSeries=e.initSeries(k),b.navigatorSeries.baseSeries=b,g.push(b.navigatorSeries)))});if(m.data&&(!d||!d.length)||D(m))c.hasNavigatorData=!1,m=u(m),m.forEach((b,a)=>{f.name="Navigator "+
|
|
(g.length+1);k=h(t.navigator.series,{color:e.series[a]&&!e.series[a].options.isInternal&&e.series[a].color||e.options.colors[a]||e.options.colors[0]},f,b);k.data=b.data;k.data&&(c.hasNavigatorData=!0,g.push(e.initSeries(k)))});b&&this.addBaseSeriesEvents()}addBaseSeriesEvents(){const b=this,a=b.baseSeries||[];a[0]&&a[0].xAxis&&a[0].eventsToUnbind.push(p(a[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes));a.forEach(a=>{a.eventsToUnbind.push(p(a,"show",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,
|
|
!1)}));a.eventsToUnbind.push(p(a,"hide",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)}));!1!==this.navigatorOptions.adaptToUpdatedData&&a.xAxis&&a.eventsToUnbind.push(p(a,"updatedData",this.updatedDataHandler));a.eventsToUnbind.push(p(a,"remove",function(){this.navigatorSeries&&(g(b.series,this.navigatorSeries),l(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)}))})}getBaseSeriesMin(b){return this.baseSeries.reduce(function(b,a){return Math.min(b,
|
|
a.xData&&a.xData.length?a.xData[0]:b)},b)}modifyNavigatorAxisExtremes(){const b=this.xAxis;if("undefined"!==typeof b.getExtremes){const a=this.getUnionExtremes(!0);!a||a.dataMin===b.min&&a.dataMax===b.max||(b.min=a.dataMin,b.max=a.dataMax)}}modifyBaseAxisExtremes(){const b=this.chart.navigator;var a=this.getExtremes();const e=a.dataMin,f=a.dataMax;a=a.max-a.min;const h=b.stickToMin,g=b.stickToMax,l=v(this.options.overscroll,0),k=b.series&&b.series[0],m=!!this.setExtremes;let q,u;this.eventArgs&&"rangeSelectorButton"===
|
|
this.eventArgs.trigger||(h&&(u=e,q=u+a),g&&(q=f+l,h||(u=Math.max(e,q-a,b.getBaseSeriesMin(k&&k.xData?k.xData[0]:-Number.MAX_VALUE)))),m&&(h||g)&&d(u)&&(this.min=this.userMin=u,this.max=this.userMax=q));b.stickToMin=b.stickToMax=null}updatedDataHandler(){const b=this.chart.navigator,a=this.navigatorSeries;b.stickToMax=v(this.chart.options.navigator&&this.chart.options.navigator.stickToMax,b.reversedExtremes?0===Math.round(b.zoomedMin):Math.round(b.zoomedMax)>=Math.round(b.size));b.stickToMin=b.shouldStickToMin(this,
|
|
b);a&&!b.hasNavigatorData&&(a.options.pointStart=this.xData[0],a.setData(this.options.data,!1,null,!1))}shouldStickToMin(b,a){a=a.getBaseSeriesMin(b.xData[0]);var c=b.xAxis;b=c.max;const e=c.min;c=c.options.range;return d(b)&&d(e)?c&&0<b-a?b-a<c:e<=a:!1}addChartEvents(){this.eventsToUnbind||(this.eventsToUnbind=[]);this.eventsToUnbind.push(p(this.chart,"redraw",function(){const b=this.navigator,a=b&&(b.baseSeries&&b.baseSeries[0]&&b.baseSeries[0].xAxis||this.xAxis[0]);a&&b.render(a.min,a.max)}),p(this.chart,
|
|
"getMargins",function(){let a=this.navigator,c=a.opposite?"plotTop":"marginBottom";this.inverted&&(c=a.opposite?"marginRight":"plotLeft");this[c]=(this[c]||0)+(a.navigatorEnabled||!this.inverted?a.height+a.scrollbarHeight:0)+a.navigatorOptions.margin}))}destroy(){this.removeEvents();this.xAxis&&(g(this.chart.xAxis,this.xAxis),g(this.chart.axes,this.xAxis));this.yAxis&&(g(this.chart.yAxis,this.yAxis),g(this.chart.axes,this.yAxis));(this.series||[]).forEach(a=>{a.destroy&&a.destroy()});"series xAxis yAxis shades outline scrollbarTrack scrollbarRifles scrollbarGroup scrollbar navigatorGroup rendered".split(" ").forEach(a=>
|
|
{this[a]&&this[a].destroy&&this[a].destroy();this[a]=null});[this.handles].forEach(a=>{f(a)})}}return e});M(a,"Stock/RangeSelector/RangeSelectorDefaults.js",[],function(){return{lang:{rangeSelectorZoom:"Zoom",rangeSelectorFrom:"",rangeSelectorTo:"\u2192"},rangeSelector:{allButtonsEnabled:!1,buttons:void 0,buttonSpacing:5,dropdown:"responsive",enabled:void 0,verticalAlign:"top",buttonTheme:{width:28,height:18,padding:2,zIndex:7},floating:!1,x:0,y:0,height:void 0,inputBoxBorderColor:"none",inputBoxHeight:17,
|
|
inputBoxWidth:void 0,inputDateFormat:"%e %b %Y",inputDateParser:void 0,inputEditDateFormat:"%Y-%m-%d",inputEnabled:!0,inputPosition:{align:"right",x:0,y:0},inputSpacing:5,selected:void 0,buttonPosition:{align:"left",x:0,y:0},inputStyle:{color:"#334eff",cursor:"pointer",fontSize:"0.8em"},labelStyle:{color:"#666666",fontSize:"0.8em"}}}});M(a,"Stock/RangeSelector/RangeSelectorComposition.js",[a["Core/Defaults.js"],a["Stock/RangeSelector/RangeSelectorDefaults.js"],a["Core/Utilities.js"]],function(a,z,
|
|
H){function y(){const a=this.range,d=a.type,e=this.max,b=this.chart.time,c=function(a,c){const e="year"===d?"FullYear":"Month",f=new b.Date(a),h=b.get(e,f);b.set(e,f,h+c);h===b.get(e,f)&&b.set("Date",f,0);return f.getTime()-a};let f,h;w(a)?(f=e-a,h=a):a&&(f=e+c(e,-(a.count||1)),this.chart&&(this.chart.fixedRange=e-f));const g=D(this.dataMin,Number.MIN_VALUE);w(f)||(f=g);f<=g&&(f=g,"undefined"===typeof h&&(h=c(f,a.count)),this.newMax=Math.min(f+h,D(this.dataMax,Number.MAX_VALUE)));w(e)?!w(a)&&a&&a._offsetMin&&
|
|
(f+=a._offsetMin):f=void 0;return f}function A(){this.options.rangeSelector&&this.options.rangeSelector.enabled&&(this.rangeSelector=new v(this))}function C(){var a=this.axes;const d=this.rangeSelector;d&&(w(d.deferredYTDClick)&&(d.clickButton(d.deferredYTDClick),delete d.deferredYTDClick),a.forEach(a=>{a.updateNames();a.setScale()}),this.getAxisMargins(),d.render(),a=d.options.verticalAlign,d.options.floating||("bottom"===a?this.extraBottomMargin=!0:"middle"!==a&&(this.extraTopMargin=!0)))}function E(a){let f,
|
|
e,b,c;const h=a.rangeSelector,l=()=>{h&&(f=a.xAxis[0].getExtremes(),e=a.legend,c=h&&h.options.verticalAlign,w(f.min)&&h.render(f.min,f.max),e.display&&"top"===c&&c===e.options.verticalAlign&&(b=I(a.spacingBox),b.y="vertical"===e.options.layout?a.plotTop:b.y+h.getHeight(),e.group.placed=!1,e.align(b)))};h&&(g(d,b=>b[0]===a)||d.push([a,[m(a.xAxis[0],"afterSetExtremes",function(a){h&&h.render(a.min,a.max)}),m(a,"redraw",l)]]),l())}function B(){for(let a=0,f=d.length;a<f;++a){const e=d[a];if(e[0]===this){e[1].forEach(a=>
|
|
a());d.splice(a,1);break}}}function t(){var a=this.rangeSelector;a&&(a=a.getHeight(),this.extraTopMargin&&(this.plotTop+=a),this.extraBottomMargin&&(this.marginBottom+=a))}function r(){var a=this.rangeSelector;a&&!a.options.floating&&(a.render(),a=a.options.verticalAlign,"bottom"===a?this.extraBottomMargin=!0:"middle"!==a&&(this.extraTopMargin=!0))}function k(a){var d=a.options.rangeSelector;a=this.extraBottomMargin;const e=this.extraTopMargin;let b=this.rangeSelector;d&&d.enabled&&!l(b)&&this.options.rangeSelector&&
|
|
(this.options.rangeSelector.enabled=!0,this.rangeSelector=b=new v(this));this.extraTopMargin=this.extraBottomMargin=!1;b&&(E(this),d=d&&d.verticalAlign||b.options&&b.options.verticalAlign,b.options.floating||("bottom"===d?this.extraBottomMargin=!0:"middle"!==d&&(this.extraTopMargin=!0)),this.extraBottomMargin!==a||this.extraTopMargin!==e)&&(this.isDirtyBox=!0)}const {defaultOptions:p,setOptions:x}=a,{addEvent:m,defined:l,extend:f,find:g,isNumber:w,merge:I,pick:D}=H,d=[],h=[];let v;return{compose:function(a,
|
|
d,e){v=e;H.pushUnique(h,a)&&(a.prototype.minFromRange=y);H.pushUnique(h,d)&&(m(d,"afterGetContainer",A),m(d,"beforeRender",C),m(d,"destroy",B),m(d,"getMargins",t),m(d,"render",r),m(d,"update",k),d.prototype.callbacks.push(E));H.pushUnique(h,x)&&(f(p,{rangeSelector:z.rangeSelector}),f(p.lang,z.lang))}}});M(a,"Stock/RangeSelector/RangeSelector.js",[a["Core/Axis/Axis.js"],a["Core/Defaults.js"],a["Core/Globals.js"],a["Stock/RangeSelector/RangeSelectorComposition.js"],a["Core/Renderer/SVG/SVGElement.js"],
|
|
a["Core/Utilities.js"]],function(a,z,H,K,A,C){function y(a){if(-1!==a.indexOf("%L"))return"text";const e="aAdewbBmoyY".split("").some(b=>-1!==a.indexOf("%"+b)),b="HkIlMS".split("").some(b=>-1!==a.indexOf("%"+b));return e&&b?"datetime-local":e?"date":b?"time":"text"}const {defaultOptions:B}=z,{addEvent:t,createElement:r,css:k,defined:p,destroyObjectProperties:x,discardElement:m,extend:l,fireEvent:f,isNumber:g,merge:w,objectEach:I,pad:D,pick:d,pInt:h,splat:v}=C;class q{static compose(a,e){K.compose(a,
|
|
e,q)}constructor(a){this.buttons=void 0;this.buttonOptions=q.prototype.defaultButtons;this.initialButtonGroupWidth=0;this.options=void 0;this.chart=a;this.init(a)}clickButton(h,e){const b=this.chart,c=this.buttonOptions[h],l=b.xAxis[0];var k=b.scroller&&b.scroller.getUnionExtremes()||l||{},m=c.type;const q=c.dataGrouping;let u=k.dataMin,r=k.dataMax,x,w=l&&Math.round(Math.min(l.max,d(r,l.max))),y;k=c._range;let G,z,B,I=!0;if(null!==u&&null!==r){b.fixedRange=k;this.setSelected(h);q&&(this.forcedDataGrouping=
|
|
!0,a.prototype.setDataGrouping.call(l||{chart:this.chart},q,!1),this.frozenStates=c.preserveDataGrouping);if("month"===m||"year"===m)l?(m={range:c,max:w,chart:b,dataMin:u,dataMax:r},x=l.minFromRange.call(m),g(m.newMax)&&(w=m.newMax),I=!1):k=c;else if(k)x=Math.max(w-k,u),w=Math.min(x+k,r),I=!1;else if("ytd"===m)if(l){if("undefined"===typeof r||"undefined"===typeof u)u=Number.MAX_VALUE,r=Number.MIN_VALUE,b.series.forEach(a=>{if(a=a.xData)u=Math.min(a[0],u),r=Math.max(a[a.length-1],r)}),e=!1;m=this.getYTDExtremes(r,
|
|
u,b.time.useUTC);x=G=m.min;w=m.max}else{this.deferredYTDClick=h;return}else"all"===m&&l&&(b.navigator&&b.navigator.baseSeries[0]&&(b.navigator.baseSeries[0].xAxis.options.range=void 0),x=u,w=r);I&&c._offsetMin&&p(x)&&(x+=c._offsetMin);c._offsetMax&&p(w)&&(w+=c._offsetMax);this.dropdown&&(this.dropdown.selectedIndex=h+1);l?l.setExtremes(x,w,d(e,!0),void 0,{trigger:"rangeSelectorButton",rangeSelectorButton:c}):(y=v(b.options.xAxis)[0],B=y.range,y.range=k,z=y.min,y.min=G,t(b,"load",function(){y.range=
|
|
B;y.min=z}));f(this,"afterBtnClick")}}setSelected(a){this.selected=this.options.selected=a}init(a){const e=this,b=a.options.rangeSelector,c=b.buttons||e.defaultButtons.slice(),d=b.selected,h=function(){const a=e.minInput,b=e.maxInput;a&&a.blur&&f(a,"blur");b&&b.blur&&f(b,"blur")};e.chart=a;e.options=b;e.buttons=[];e.buttonOptions=c;this.eventsToUnbind=[];this.eventsToUnbind.push(t(a.container,"mousedown",h));this.eventsToUnbind.push(t(a,"resize",h));c.forEach(e.computeButtonRange);"undefined"!==typeof d&&
|
|
c[d]&&this.clickButton(d,!1);this.eventsToUnbind.push(t(a,"load",function(){a.xAxis&&a.xAxis[0]&&t(a.xAxis[0],"setExtremes",function(b){this.max-this.min!==a.fixedRange&&"rangeSelectorButton"!==b.trigger&&"updatedData"!==b.trigger&&e.forcedDataGrouping&&!e.frozenStates&&this.setDataGrouping(!1,!1)})}))}updateButtonStates(){const a=this;var e=this.chart;const b=this.dropdown,c=e.xAxis[0],d=Math.round(c.max-c.min),f=!c.hasVisibleSeries,h=e.scroller&&e.scroller.getUnionExtremes()||c,l=h.dataMin,k=h.dataMax;
|
|
e=a.getYTDExtremes(k,l,e.time.useUTC);const m=e.min,q=e.max,p=a.selected,r=a.options.allButtonsEnabled,v=a.buttons;let t=g(p);a.buttonOptions.forEach((e,h)=>{var g=e._range,n=e.type,u=e.count||1;const x=v[h],w=e._offsetMax-e._offsetMin,J=h===p,G=g>k-l,y=g<c.minRange;e=0;let F=!1,z=!1;g=g===d;("month"===n||"year"===n)&&d+36E5>=864E5*{month:28,year:365}[n]*u-w&&d-36E5<=864E5*{month:31,year:366}[n]*u+w?g=!0:"ytd"===n?(g=q-m+w===d,F=!J):"all"===n&&(g=c.max-c.min>=k-l,z=!J&&t&&g);n=!r&&(G||y||z||f);u=
|
|
J&&g||g&&!t&&!F||J&&a.frozenStates;n?e=3:u&&(t=!0,e=2);x.state!==e&&(x.setState(e),b&&(b.options[h+1].disabled=n,2===e&&(b.selectedIndex=h+1)),0===e&&p===h&&a.setSelected())})}computeButtonRange(a){const e=a.type,b=a.count||1,c={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5};if(c[e])a._range=c[e]*b;else if("month"===e||"year"===e)a._range=864E5*{month:30,year:365}[e]*b;a._offsetMin=d(a.offsetMin,0);a._offsetMax=d(a.offsetMax,0);a._range+=a._offsetMax-a._offsetMin}getInputValue(a){a=
|
|
"min"===a?this.minInput:this.maxInput;const e=this.chart.options.rangeSelector,b=this.chart.time;return a?("text"===a.type&&e.inputDateParser||this.defaultInputDateParser)(a.value,b.useUTC,b):0}setInputValue(a,e){const b=this.options,c=this.chart.time,d="min"===a?this.minInput:this.maxInput;a="min"===a?this.minDateBox:this.maxDateBox;if(d){var f=d.getAttribute("data-hc-time");f=p(f)?Number(f):void 0;p(e)&&(p(f)&&d.setAttribute("data-hc-time-previous",f),d.setAttribute("data-hc-time",e),f=e);d.value=
|
|
c.dateFormat(this.inputTypeFormats[d.type]||b.inputEditDateFormat,f);a&&a.attr({text:c.dateFormat(b.inputDateFormat,f)})}}setInputExtremes(a,e,b){if(a="min"===a?this.minInput:this.maxInput){const c=this.inputTypeFormats[a.type],d=this.chart.time;c&&(e=d.dateFormat(c,e),a.min!==e&&(a.min=e),b=d.dateFormat(c,b),a.max!==b&&(a.max=b))}}showInput(a){const e="min"===a?this.minDateBox:this.maxDateBox;if((a="min"===a?this.minInput:this.maxInput)&&e&&this.inputGroup){const b="text"===a.type,{translateX:c,
|
|
translateY:d}=this.inputGroup,{inputBoxWidth:f}=this.options;k(a,{width:b?e.width+(f?-2:20)+"px":"auto",height:e.height-2+"px",border:"2px solid silver"});b&&f?k(a,{left:c+e.x+"px",top:d+"px"}):k(a,{left:Math.min(Math.round(e.x+c-(a.offsetWidth-e.width)/2),this.chart.chartWidth-a.offsetWidth)+"px",top:d-(a.offsetHeight-e.height)/2+"px"})}}hideInput(a){(a="min"===a?this.minInput:this.maxInput)&&k(a,{top:"-9999em",border:0,width:"1px",height:"1px"})}defaultInputDateParser(a,e,b){var c=a.split("/").join("-").split(" ").join("T");
|
|
-1===c.indexOf("T")&&(c+="T00:00");if(e)c+="Z";else{var d;if(d=H.isSafari)d=c,d=!(6<d.length&&(d.lastIndexOf("-")===d.length-6||d.lastIndexOf("+")===d.length-6));d&&(d=(new Date(c)).getTimezoneOffset()/60,c+=0>=d?`+${D(-d)}:00`:`-${D(d)}:00`)}c=Date.parse(c);g(c)||(a=a.split("-"),c=Date.UTC(h(a[0]),h(a[1])-1,h(a[2])));b&&e&&g(c)&&(c+=b.getTimezoneOffset(c));return c}drawInput(a){function e(){const {maxInput:c,minInput:e}=f,d=b.xAxis[0];var h=b.scroller&&b.scroller.xAxis?b.scroller.xAxis:d;const l=
|
|
h.dataMin;h=h.dataMax;let k=f.getInputValue(a);k!==Number(v.getAttribute("data-hc-time-previous"))&&g(k)&&(v.setAttribute("data-hc-time-previous",k),p&&c&&g(l)?k>Number(c.getAttribute("data-hc-time"))?k=void 0:k<l&&(k=l):e&&g(h)&&(k<Number(e.getAttribute("data-hc-time"))?k=void 0:k>h&&(k=h)),"undefined"!==typeof k&&d.setExtremes(p?k:d.min,p?d.max:k,void 0,void 0,{trigger:"rangeSelectorInput"}))}const {chart:b,div:c,inputGroup:d}=this,f=this,h=b.renderer.style||{};var m=b.renderer;const q=b.options.rangeSelector,
|
|
p="min"===a;var u=B.lang[p?"rangeSelectorFrom":"rangeSelectorTo"]||"";u=m.label(u,0).addClass("highcharts-range-label").attr({padding:u?2:0,height:u?q.inputBoxHeight:0}).add(d);m=m.label("",0).addClass("highcharts-range-input").attr({padding:2,width:q.inputBoxWidth,height:q.inputBoxHeight,"text-align":"center"}).on("click",function(){f.showInput(a);f[a+"Input"].focus()});b.styledMode||m.attr({stroke:q.inputBoxBorderColor,"stroke-width":1});m.add(d);const v=r("input",{name:a,className:"highcharts-range-selector"},
|
|
void 0,c);v.setAttribute("type",y(q.inputDateFormat||"%e %b %Y"));b.styledMode||(u.css(w(h,q.labelStyle)),m.css(w({color:"#333333"},h,q.inputStyle)),k(v,l({position:"absolute",border:0,boxShadow:"0 0 15px rgba(0,0,0,0.3)",width:"1px",height:"1px",padding:0,textAlign:"center",fontSize:h.fontSize,fontFamily:h.fontFamily,top:"-9999em"},q.inputStyle)));v.onfocus=()=>{f.showInput(a)};v.onblur=()=>{v===H.doc.activeElement&&e();f.hideInput(a);f.setInputValue(a);v.blur()};let t=!1;v.onchange=()=>{t||(e(),
|
|
f.hideInput(a),v.blur())};v.onkeypress=a=>{13===a.keyCode&&e()};v.onkeydown=a=>{t=!0;38!==a.keyCode&&40!==a.keyCode||e()};v.onkeyup=()=>{t=!1};return{dateBox:m,input:v,label:u}}getPosition(){var a=this.chart;const e=a.options.rangeSelector;a="top"===e.verticalAlign?a.plotTop-a.axisOffset[0]:0;return{buttonTop:a+e.buttonPosition.y,inputTop:a+e.inputPosition.y-10}}getYTDExtremes(a,e,b){const c=this.chart.time;var d=new c.Date(a);const f=c.get("FullYear",d);b=b?c.Date.UTC(f,0,1):+new c.Date(f,0,1);e=
|
|
Math.max(e,b);d=d.getTime();return{max:Math.min(a||d,d),min:e}}render(a,e){var b=this.chart,c=b.renderer;const f=b.container;var h=b.options;const g=h.rangeSelector,l=d(h.chart.style&&h.chart.style.zIndex,0)+1;h=g.inputEnabled;if(!1!==g.enabled){this.rendered||(this.group=c.g("range-selector-group").attr({zIndex:7}).add(),this.div=r("div",void 0,{position:"relative",height:0,zIndex:l}),this.buttonOptions.length&&this.renderButtons(),f.parentNode&&f.parentNode.insertBefore(this.div,f),h&&(this.inputGroup=
|
|
c.g("input-group").add(this.group),c=this.drawInput("min"),this.minDateBox=c.dateBox,this.minLabel=c.label,this.minInput=c.input,c=this.drawInput("max"),this.maxDateBox=c.dateBox,this.maxLabel=c.label,this.maxInput=c.input));if(h&&(this.setInputValue("min",a),this.setInputValue("max",e),a=b.scroller&&b.scroller.getUnionExtremes()||b.xAxis[0]||{},p(a.dataMin)&&p(a.dataMax)&&(b=b.xAxis[0].minRange||0,this.setInputExtremes("min",a.dataMin,Math.min(a.dataMax,this.getInputValue("max"))-b),this.setInputExtremes("max",
|
|
Math.max(a.dataMin,this.getInputValue("min"))+b,a.dataMax)),this.inputGroup)){let a=0;[this.minLabel,this.minDateBox,this.maxLabel,this.maxDateBox].forEach(b=>{if(b){const {width:c}=b.getBBox();c&&(b.attr({x:a}),a+=c+g.inputSpacing)}})}this.alignElements();this.rendered=!0}}renderButtons(){const {buttons:a,chart:e,options:b}=this,c=B.lang,h=e.renderer,g=w(b.buttonTheme),l=g&&g.states,k=g.width||28;delete g.width;delete g.states;this.buttonGroup=h.g("range-selector-buttons").add(this.group);const m=
|
|
this.dropdown=r("select",void 0,{position:"absolute",width:"1px",height:"1px",padding:0,border:0,top:"-9999em",cursor:"pointer",opacity:.0001},this.div);t(m,"touchstart",()=>{m.style.fontSize="16px"});[[H.isMS?"mouseover":"mouseenter"],[H.isMS?"mouseout":"mouseleave"],["change","click"]].forEach(([b,c])=>{t(m,b,()=>{const e=a[this.currentButtonIndex()];e&&f(e.element,c||b)})});this.zoomText=h.label(c&&c.rangeSelectorZoom||"",0).attr({padding:b.buttonTheme.padding,height:b.buttonTheme.height,paddingLeft:0,
|
|
paddingRight:0}).add(this.buttonGroup);this.chart.styledMode||(this.zoomText.css(b.labelStyle),g["stroke-width"]=d(g["stroke-width"],0));r("option",{textContent:this.zoomText.textStr,disabled:!0},void 0,m);this.buttonOptions.forEach((b,c)=>{r("option",{textContent:b.title||b.text},void 0,m);a[c]=h.button(b.text,0,0,a=>{const e=b.events&&b.events.click;let d;e&&(d=e.call(b,a));!1!==d&&this.clickButton(c);this.isActive=!0},g,l&&l.hover,l&&l.select,l&&l.disabled).attr({"text-align":"center",width:k}).add(this.buttonGroup);
|
|
b.title&&a[c].attr("title",b.title)})}alignElements(){const {buttonGroup:a,buttons:e,chart:b,group:c,inputGroup:f,options:h,zoomText:g}=this;var l=b.options;const k=l.exporting&&!1!==l.exporting.enabled&&l.navigation&&l.navigation.buttonOptions,{buttonPosition:m,inputPosition:q,verticalAlign:p}=h;l=(a,c)=>k&&this.titleCollision(b)&&"top"===p&&"right"===c.align&&c.y-a.getBBox().height-12<(k.y||0)+(k.height||0)+b.spacing[0]?-40:0;var r=b.plotLeft;if(c&&m&&q){var v=m.x-b.spacing[3];if(a){this.positionButtons();
|
|
if(!this.initialButtonGroupWidth){let a=0;g&&(a+=g.getBBox().width+5);e.forEach((b,c)=>{a+=b.width;c!==e.length-1&&(a+=h.buttonSpacing)});this.initialButtonGroupWidth=a}r-=b.spacing[3];this.updateButtonStates();var t=l(a,m);this.alignButtonGroup(t);c.placed=a.placed=b.hasLoaded}t=0;f&&(t=l(f,q),"left"===q.align?v=r:"right"===q.align&&(v=-Math.max(b.axisOffset[1],-t)),f.align({y:q.y,width:f.getBBox().width,align:q.align,x:q.x+v-2},!0,b.spacingBox),f.placed=b.hasLoaded);this.handleCollision(t);c.align({verticalAlign:p},
|
|
!0,b.spacingBox);l=c.alignAttr.translateY;r=c.getBBox().height+20;v=0;"bottom"===p&&(v=(v=b.legend&&b.legend.options)&&"bottom"===v.verticalAlign&&v.enabled&&!v.floating?b.legend.legendHeight+d(v.margin,10):0,r=r+v-20,v=l-r-(h.floating?0:h.y)-(b.titleOffset?b.titleOffset[2]:0)-10);if("top"===p)h.floating&&(v=0),b.titleOffset&&b.titleOffset[0]&&(v=b.titleOffset[0]),v+=b.margin[0]-b.spacing[0]||0;else if("middle"===p)if(q.y===m.y)v=l;else if(q.y||m.y)v=0>q.y||0>m.y?v-Math.min(q.y,m.y):l-r;c.translate(h.x,
|
|
h.y+Math.floor(v));const {minInput:k,maxInput:n,dropdown:u}=this;h.inputEnabled&&k&&n&&(k.style.marginTop=c.translateY+"px",n.style.marginTop=c.translateY+"px");u&&(u.style.marginTop=c.translateY+"px")}}alignButtonGroup(a,e){const {chart:b,options:c,buttonGroup:f}=this,{buttonPosition:h}=c,g=b.plotLeft-b.spacing[3];let l=h.x-b.spacing[3];"right"===h.align?l+=a-g:"center"===h.align&&(l-=g/2);f&&f.align({y:h.y,width:d(e,this.initialButtonGroupWidth),align:h.align,x:l},!0,b.spacingBox)}positionButtons(){const {buttons:a,
|
|
chart:e,options:b,zoomText:c}=this,f=e.hasLoaded?"animate":"attr",{buttonPosition:h}=b,g=e.plotLeft;let l=g;c&&"hidden"!==c.visibility&&(c[f]({x:d(g+h.x,g)}),l+=h.x+c.getBBox().width+5);for(let c=0,e=this.buttonOptions.length;c<e;++c)if("hidden"!==a[c].visibility)a[c][f]({x:l}),l+=a[c].width+b.buttonSpacing;else a[c][f]({x:g})}handleCollision(a){const {chart:e,buttonGroup:b,inputGroup:c}=this,{buttonPosition:d,dropdown:f,inputPosition:h}=this.options,g=()=>{let a=0;this.buttons.forEach(b=>{b=b.getBBox();
|
|
b.width>a&&(a=b.width)});return a},l=e=>{if(c&&b){const f=c.alignAttr.translateX+c.alignOptions.x-a+c.getBBox().x+2,g=c.alignOptions.width,l=b.alignAttr.translateX+b.getBBox().x;return l+e>f&&f+g>l&&d.y<h.y+c.getBBox().height}return!1},k=()=>{c&&b&&c.attr({translateX:c.alignAttr.translateX+(e.axisOffset[1]>=-a?0:-a),translateY:c.alignAttr.translateY+b.getBBox().height+10})};if(b){if("always"===f){this.collapseButtons(a);l(g())&&k();return}"never"===f&&this.expandButtons()}c&&b?h.align===d.align||
|
|
l(this.initialButtonGroupWidth+20)?"responsive"===f?(this.collapseButtons(a),l(g())&&k()):k():"responsive"===f&&this.expandButtons():b&&"responsive"===f&&(this.initialButtonGroupWidth>e.plotWidth?this.collapseButtons(a):this.expandButtons())}collapseButtons(a){const {buttons:e,buttonOptions:b,chart:c,dropdown:f,options:h,zoomText:g}=this,l=c.userOptions.rangeSelector&&c.userOptions.rangeSelector.buttonTheme||{},k=a=>({text:a?`${a} \u25be`:"\u25be",width:"auto",paddingLeft:d(h.buttonTheme.paddingLeft,
|
|
l.padding,8),paddingRight:d(h.buttonTheme.paddingRight,l.padding,8)});g&&g.hide();let m=!1;b.forEach((a,b)=>{b=e[b];2!==b.state?b.hide():(b.show(),b.attr(k(a.text)),m=!0)});m||(f&&(f.selectedIndex=0),e[0].show(),e[0].attr(k(this.zoomText&&this.zoomText.textStr)));const {align:q}=h.buttonPosition;this.positionButtons();"right"!==q&&"center"!==q||this.alignButtonGroup(a,e[this.currentButtonIndex()].getBBox().width);this.showDropdown()}expandButtons(){const {buttons:a,buttonOptions:e,options:b,zoomText:c}=
|
|
this;this.hideDropdown();c&&c.show();e.forEach((c,e)=>{e=a[e];e.show();e.attr({text:c.text,width:b.buttonTheme.width||28,paddingLeft:d(b.buttonTheme.paddingLeft,"unset"),paddingRight:d(b.buttonTheme.paddingRight,"unset")});2>e.state&&e.setState(0)});this.positionButtons()}currentButtonIndex(){const {dropdown:a}=this;return a&&0<a.selectedIndex?a.selectedIndex-1:0}showDropdown(){const {buttonGroup:a,buttons:e,chart:b,dropdown:c}=this;if(a&&c){const {translateX:d,translateY:f}=a,h=e[this.currentButtonIndex()].getBBox();
|
|
k(c,{left:b.plotLeft+d+"px",top:f+.5+"px",width:h.width+"px",height:h.height+"px"});this.hasVisibleDropdown=!0}}hideDropdown(){const {dropdown:a}=this;a&&(k(a,{top:"-9999em",width:"1px",height:"1px"}),this.hasVisibleDropdown=!1)}getHeight(){var a=this.options,e=this.group;const b=a.y,c=a.buttonPosition.y,d=a.inputPosition.y;if(a.height)return a.height;this.alignElements();a=e?e.getBBox(!0).height+13+b:0;e=Math.min(d,c);if(0>d&&0>c||0<d&&0<c)a+=Math.abs(e);return a}titleCollision(a){return!(a.options.title.text||
|
|
a.options.subtitle.text)}update(a){const e=this.chart;w(!0,e.options.rangeSelector,a);this.destroy();this.init(e);this.render()}destroy(){const a=this,e=a.minInput,b=a.maxInput;a.eventsToUnbind&&(a.eventsToUnbind.forEach(a=>a()),a.eventsToUnbind=void 0);x(a.buttons);e&&(e.onfocus=e.onblur=e.onchange=null);b&&(b.onfocus=b.onblur=b.onchange=null);I(a,function(b,e){b&&"chart"!==e&&(b instanceof A?b.destroy():b instanceof T.HTMLElement&&m(b));b!==q.prototype[e]&&(a[e]=null)},this)}}l(q.prototype,{defaultButtons:[{type:"month",
|
|
count:1,text:"1m",title:"View 1 month"},{type:"month",count:3,text:"3m",title:"View 3 months"},{type:"month",count:6,text:"6m",title:"View 6 months"},{type:"ytd",text:"YTD",title:"View year to date"},{type:"year",count:1,text:"1y",title:"View 1 year"},{type:"all",text:"All",title:"View all"}],inputTypeFormats:{"datetime-local":"%Y-%m-%dT%H:%M:%S",date:"%Y-%m-%d",time:"%H:%M:%S"}});"";return q});M(a,"Series/XRange/XRangeSeriesDefaults.js",[a["Core/Utilities.js"]],function(a){const {correctFloat:y,
|
|
isNumber:H,isObject:K}=a;"";return{colorByPoint:!0,dataLabels:{formatter:function(){let a=this.point.partialFill;K(a)&&(a=a.amount);if(H(a)&&0<a)return y(100*a)+"%"},inside:!0,verticalAlign:"middle"},tooltip:{headerFormat:'<span style="font-size: 0.8em">{point.x} - {point.x2}</span><br/>',pointFormat:'<span style="color:{point.color}">\u25cf</span> {series.name}: <b>{point.yCategory}</b><br/>'},borderRadius:3,pointRange:0}});M(a,"Series/XRange/XRangePoint.js",[a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],
|
|
function(a,z){const {series:{prototype:{pointClass:{prototype:y}}},seriesTypes:{column:{prototype:{pointClass:K}}}}=a;({extend:a}=z);class A extends K{constructor(){super(...arguments);this.series=this.options=void 0}static getColorByCategory(a,y){const z=a.options.colors||a.chart.options.colors;a=y.y%(z?z.length:a.chart.options.chart.colorCount);return{colorIndex:a,color:z&&z[a]}}resolveColor(){const a=this.series;if(a.options.colorByPoint&&!this.options.color){const y=A.getColorByCategory(a,this);
|
|
a.chart.styledMode||(this.color=y.color);this.options.colorIndex||(this.colorIndex=y.colorIndex)}else this.color||(this.color=a.color)}init(){y.init.apply(this,arguments);this.y||(this.y=0);return this}setState(){y.setState.apply(this,arguments);this.series.drawPoint(this,this.series.getAnimationVerb())}getLabelConfig(){const a=y.getLabelConfig.call(this),z=this.series.yAxis.categories;a.x2=this.x2;a.yCategory=this.yCategory=z&&z[this.y];return a}isValid(){return"number"===typeof this.x&&"number"===
|
|
typeof this.x2}}a(A.prototype,{ttBelow:!1,tooltipDateKeys:["x","x2"]});"";return A});M(a,"Series/XRange/XRangeSeries.js",[a["Core/Globals.js"],a["Core/Color/Color.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"],a["Series/XRange/XRangeSeriesDefaults.js"],a["Series/XRange/XRangePoint.js"]],function(a,z,H,K,A,C){function y(){let a,d;if(this.isXAxis){a=I(this.dataMax,-Number.MAX_VALUE);for(const f of this.series)if(f.x2Data)for(const h of f.x2Data)h&&h>a&&(a=h,d=!0);d&&(this.dataMax=a)}}
|
|
({noop:a}=a);const {parse:B}=z,{series:{prototype:t},seriesTypes:{column:r}}=H,{addEvent:k,clamp:p,defined:x,extend:m,find:l,isNumber:f,isObject:g,merge:w,pick:I}=K,D=[];class d extends r{constructor(){super(...arguments);this.points=this.options=this.data=void 0}static compose(a){K.pushUnique(D,a)&&k(a,"afterGetSeriesExtremes",y)}init(){super.init.apply(this,arguments);this.options.stacking=void 0}getColumnMetrics(){const a=()=>{for(const a of this.chart.series){const d=a.xAxis;a.xAxis=a.yAxis;a.yAxis=
|
|
d}};a();const d=super.getColumnMetrics();a();return d}cropData(a,d,f,g){d=t.cropData.call(this,this.x2Data,d,f,g);d.xData=a.slice(d.start,d.end);return d}findPointIndex(a){const {cropStart:d,points:h}=this,{id:g}=a;if(g)var e=(e=l(h,a=>a.id===g))?e.index:void 0;"undefined"===typeof e&&(e=(e=l(h,b=>b.x===a.x&&b.x2===a.x2&&!b.touched))?e.index:void 0);this.cropped&&f(e)&&f(d)&&e>=d&&(e-=d);return e}alignDataLabel(a){const d=a.plotX;a.plotX=I(a.dlBox&&a.dlBox.centerX,a.plotX);super.alignDataLabel.apply(this,
|
|
arguments);a.plotX=d}translatePoint(a){const d=this.xAxis;var h=this.yAxis,l=this.columnMetrics,e=this.options,{borderRadius:b}=e,c=e.minPointLength||0,k=(a.shapeArgs&&a.shapeArgs.width||0)/2,m=this.pointXOffset=l.offset,r=I(a.x2,a.x+(a.len||0));let t=a.plotX;var y=d.translate(r,0,0,0,1);r=Math.abs(y-t);const z=this.chart.inverted,B=I(e.borderWidth,1)%2/2;let D=l.offset,A=Math.round(l.width);c&&(c-=r,0>c&&(c=0),t-=c/2,y+=c/2);t=Math.max(t,-10);y=p(y,-10,d.len+10);x(a.options.pointWidth)&&(D-=(Math.ceil(a.options.pointWidth)-
|
|
A)/2,A=Math.ceil(a.options.pointWidth));e.pointPlacement&&f(a.plotY)&&h.categories&&(a.plotY=h.translate(a.y,0,1,0,1,e.pointPlacement));e=Math.floor(Math.min(t,y))+B;e={x:e,y:Math.floor(a.plotY+D)+B,width:Math.floor(Math.max(t,y))+B-e,height:A};a.shapeArgs=e;f(b)&&(a.shapeArgs.r=b);z?a.tooltipPos[1]+=m+k:a.tooltipPos[0]-=k+m-e.width/2;k=e.x;m=k+e.width;0>k||m>d.len?(k=p(k,0,d.len),m=p(m,0,d.len),y=m-k,a.dlBox=w(e,{x:k,width:m-k,centerX:y?y/2:null})):a.dlBox=null;k=a.tooltipPos;m=z?1:0;y=z?0:1;l=this.columnMetrics?
|
|
this.columnMetrics.offset:-l.width/2;k[m]=z?k[m]+e.width/2:p(k[m]+(d.reversed?-1:0)*e.width,0,d.len-1);k[y]=p(k[y]+(z?-1:1)*l,0,h.len-1);if(h=a.partialFill)g(h)&&(h=h.amount),f(h)||(h=0),f(b)&&(a.partShapeArgs=w(e,{r:b})),b=Math.max(Math.round(r*h+a.plotX-t),0),a.clipRectArgs={x:d.reversed?e.x+r-b:e.x,y:e.y,width:b,height:e.height}}translate(){super.translate.apply(this,arguments);for(const a of this.points)this.translatePoint(a)}drawPoint(a,d){const f=this.options,h=this.chart.renderer,e=a.shapeType,
|
|
b=a.shapeArgs,c=a.partShapeArgs,l=a.clipRectArgs;var k=a.state,m=f.states[k||"normal"]||{};const p="undefined"===typeof k?"attr":d;k=this.pointAttribs(a,k);m=I(this.chart.options.chart.animation,m.animation);let r=a.graphic,v=a.partialFill;if(a.isNull||!1===a.visible)r&&(a.graphic=r.destroy());else{if(r)r.rect[d](b);else a.graphic=r=h.g("point").addClass(a.getClassName()).add(a.group||this.group),r.rect=h[e](w(b)).addClass(a.getClassName()).addClass("highcharts-partfill-original").add(r);c&&(r.partRect?
|
|
(r.partRect[d](w(c)),r.partialClipRect[d](w(l))):(r.partialClipRect=h.clipRect(l.x,l.y,l.width,l.height),r.partRect=h[e](c).addClass("highcharts-partfill-overlay").add(r).clip(r.partialClipRect)));this.chart.styledMode||(r.rect[d](k,m).shadow(f.shadow),c&&(g(v)||(v={}),g(f.partialFill)&&(v=w(f.partialFill,v)),a=v.fill||B(k.fill).brighten(-.3).get()||B(a.color||this.color).brighten(-.3).get(),k.fill=a,r.partRect[p](k,m).shadow(f.shadow)))}}drawPoints(){const a=this.getAnimationVerb();for(const d of this.points)this.drawPoint(d,
|
|
a)}getAnimationVerb(){return this.chart.pointCount<(this.options.animationLimit||250)?"animate":"attr"}isPointInside(a){const d=a.shapeArgs,f=a.plotX,h=a.plotY;return d?"undefined"!==typeof f&&"undefined"!==typeof h&&0<=h&&h<=this.yAxis.len&&0<=(d.x||0)+(d.width||0)&&f<=this.xAxis.len:super.isPointInside.apply(this,arguments)}}d.defaultOptions=w(r.defaultOptions,A);m(d.prototype,{pointClass:C,cropShoulder:1,getExtremesFromAll:!0,parallelArrays:["x","x2","y"],requireSorting:!1,type:"xrange",animate:t.animate,
|
|
autoIncrement:a,buildKDTree:a});H.registerSeriesType("xrange",d);return d});M(a,"Series/Gantt/GanttPoint.js",[a["Core/Series/SeriesRegistry.js"],a["Core/Utilities.js"]],function(a,z){({seriesTypes:{xrange:{prototype:{pointClass:a}}}}=a);const {pick:y}=z;class K extends a{constructor(){super(...arguments);this.series=this.options=void 0}static setGanttPointAliases(a){function z(y,z){"undefined"!==typeof z&&(a[y]=z)}z("x",y(a.start,a.x));z("x2",y(a.end,a.x2));z("partialFill",y(a.completed,a.partialFill))}applyOptions(a,
|
|
y){a=super.applyOptions.call(this,a,y);K.setGanttPointAliases(a);return a}isValid(){return("number"===typeof this.start||"number"===typeof this.x)&&("number"===typeof this.end||"number"===typeof this.x2||this.milestone)}}return K});M(a,"Core/Axis/BrokenAxis.js",[a["Core/Axis/Stacking/StackItem.js"],a["Core/Utilities.js"]],function(a,z){const {addEvent:y,find:K,fireEvent:A,isArray:C,isNumber:E,pick:B}=z;var t;(function(r){function k(){"undefined"!==typeof this.brokenAxis&&this.brokenAxis.setBreaks(this.options.breaks,
|
|
!1)}function p(){this.brokenAxis&&this.brokenAxis.hasBreaks&&(this.options.ordinal=!1)}function t(){const a=this.brokenAxis;if(a&&a.hasBreaks){const d=this.tickPositions,f=this.tickPositions.info,g=[];for(let f=0;f<d.length;f++)a.isInAnyBreak(d[f])||g.push(d[f]);this.tickPositions=g;this.tickPositions.info=f}}function m(){this.brokenAxis||(this.brokenAxis=new D(this))}function l(){const {isDirty:a,options:{connectNulls:f},points:g,xAxis:l,yAxis:k}=this;if(a){let a=g.length;for(;a--;){const b=g[a],
|
|
c=!(null===b.y&&!1===f)&&(l&&l.brokenAxis&&l.brokenAxis.isInAnyBreak(b.x,!0)||k&&k.brokenAxis&&k.brokenAxis.isInAnyBreak(b.y,!0));b.visible=c?!1:!1!==b.options.visible}}}function f(){this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,B(this.pointArrayMap,["y"]))}function g(a,f){const d=this,h=d.points;let g,e,b,c;if(a&&a.brokenAxis&&a.brokenAxis.hasBreaks){const l=a.brokenAxis;f.forEach(function(f){g=l&&l.breakArray||[];e=a.isXAxis?a.min:B(d.options.threshold,a.min);h.forEach(function(d){c=
|
|
B(d["stack"+f.toUpperCase()],d[f]);g.forEach(function(f){if(E(e)&&E(c)){b=!1;if(e<f.from&&c>f.to||e>f.from&&c<f.from)b="pointBreak";else if(e<f.from&&c>f.from&&c<f.to||e>f.from&&c>f.to&&c<f.from)b="pointInBreak";b&&A(a,b,{point:d,brk:f})}})})})}}function w(){var d=this.currentDataGrouping,f=d&&d.gapSize;d=this.points.slice();const g=this.yAxis;let l=this.options.gapSize,k=d.length-1;var e;if(l&&0<k)for("value"!==this.options.gapUnit&&(l*=this.basePointRange),f&&f>l&&f>=this.basePointRange&&(l=f);k--;)e&&
|
|
!1!==e.visible||(e=d[k+1]),f=d[k],!1!==e.visible&&!1!==f.visible&&(e.x-f.x>l&&(e=(f.x+e.x)/2,d.splice(k+1,0,{isNull:!0,x:e}),g.stacking&&this.options.stacking&&(e=g.stacking.stacks[this.stackKey][e]=new a(g,g.options.stackLabels,!1,e,this.stack),e.total=0)),e=f);return this.getGraphPath(d)}const I=[];r.compose=function(a,h){z.pushUnique(I,a)&&(a.keepProps.push("brokenAxis"),y(a,"init",m),y(a,"afterInit",k),y(a,"afterSetTickPositions",t),y(a,"afterSetOptions",p));if(z.pushUnique(I,h)){const a=h.prototype;
|
|
a.drawBreaks=g;a.gappedPath=w;y(h,"afterGeneratePoints",l);y(h,"afterRender",f)}return a};class D{static isInBreak(a,f){const d=a.repeat||Infinity,h=a.from,g=a.to-a.from;f=f>=h?(f-h)%d:d-(h-f)%d;return a.inclusive?f<=g:f<g&&0!==f}static lin2Val(a){var d=this.brokenAxis;d=d&&d.breakArray;if(!d||!E(a))return a;let f,g;for(g=0;g<d.length&&!(f=d[g],f.from>=a);g++)f.to<a?a+=f.len:D.isInBreak(f,a)&&(a+=f.len);return a}static val2Lin(a){var d=this.brokenAxis;d=d&&d.breakArray;if(!d||!E(a))return a;let f=
|
|
a,g,l;for(l=0;l<d.length;l++)if(g=d[l],g.to<=a)f-=g.len;else if(g.from>=a)break;else if(D.isInBreak(g,a)){f-=a-g.from;break}return f}constructor(a){this.hasBreaks=!1;this.axis=a}findBreakAt(a,f){return K(f,function(d){return d.from<a&&a<d.to})}isInAnyBreak(a,f){const d=this.axis,h=d.options.breaks||[];let g=h.length,e,b,c;if(g&&E(a)){for(;g--;)D.isInBreak(h[g],a)&&(e=!0,b||(b=B(h[g].showPoints,!d.isXAxis)));c=e&&f?e&&!b:e}return c}setBreaks(a,f){const d=this,h=d.axis,g=C(a)&&!!a.length;h.isDirty=
|
|
d.hasBreaks!==g;d.hasBreaks=g;a!==h.options.breaks&&(h.options.breaks=h.userOptions.breaks=a);h.forceRedraw=!0;h.series.forEach(function(a){a.isDirty=!0});g||h.val2lin!==D.val2Lin||(delete h.val2lin,delete h.lin2val);g&&(h.userOptions.ordinal=!1,h.lin2val=D.lin2Val,h.val2lin=D.val2Lin,h.setExtremes=function(a,b,c,f,g){if(d.hasBreaks){const c=this.options.breaks||[];let e;for(;e=d.findBreakAt(a,c);)a=e.to;for(;e=d.findBreakAt(b,c);)b=e.from;b<a&&(b=a)}h.constructor.prototype.setExtremes.call(this,
|
|
a,b,c,f,g)},h.setAxisTranslation=function(){h.constructor.prototype.setAxisTranslation.call(this);d.unitLength=void 0;if(d.hasBreaks){const a=h.options.breaks||[],b=[],c=[],f=B(h.pointRangePadding,0);let g=0,l,k,m=h.userMin||h.min,q=h.userMax||h.max,p,r;a.forEach(function(a){k=a.repeat||Infinity;E(m)&&E(q)&&(D.isInBreak(a,m)&&(m+=a.to%k-m%k),D.isInBreak(a,q)&&(q-=q%k-a.from%k))});a.forEach(function(a){p=a.from;k=a.repeat||Infinity;if(E(m)&&E(q)){for(;p-k>m;)p-=k;for(;p<m;)p+=k;for(r=p;r<q;r+=k)b.push({value:r,
|
|
move:"in"}),b.push({value:r+a.to-a.from,move:"out",size:a.breakSize})}});b.sort(function(a,b){return a.value===b.value?("in"===a.move?0:1)-("in"===b.move?0:1):a.value-b.value});l=0;p=m;b.forEach(function(a){l+="in"===a.move?1:-1;1===l&&"in"===a.move&&(p=a.value);0===l&&E(p)&&(c.push({from:p,to:a.value,len:a.value-p-(a.size||0)}),g+=a.value-p-(a.size||0))});d.breakArray=c;E(m)&&E(q)&&E(h.min)&&(d.unitLength=q-m-g+f,A(h,"afterBreaks"),h.staticScale?h.transA=h.staticScale:d.unitLength&&(h.transA*=(q-
|
|
h.min+f)/d.unitLength),f&&(h.minPixelPadding=h.transA*(h.minPointOffset||0)),h.min=m,h.max=q)}});B(f,!0)&&h.chart.redraw()}}r.Additions=D})(t||(t={}));return t});M(a,"Core/Axis/GridAxis.js",[a["Core/Axis/Axis.js"],a["Core/Globals.js"],a["Core/Utilities.js"]],function(a,z,H){function y(a,c){const e={width:0,height:0};c.forEach(function(c){c=a[c];let d,f;H.isObject(c,!0)&&(f=H.isObject(c.label,!0)?c.label:{},c=f.getBBox?f.getBBox().height:0,f.textStr&&!b(f.textPxLength)&&(f.textPxLength=f.getBBox().width),
|
|
d=b(f.textPxLength)?Math.round(f.textPxLength):0,f.textStr&&(d=Math.round(f.getBBox().width)),e.height=Math.max(c,e.height),e.width=Math.max(d,e.width))});"treegrid"===this.options.type&&this.treeGrid&&this.treeGrid.mapOfPosToGridNode&&(e.width+=this.options.labels.indentation*((this.treeGrid.mapOfPosToGridNode[-1].height||0)-1));return e}function A(){const {grid:a}=this;(a&&a.columns||[]).forEach(function(a){a.getOffset()})}function C(a){if(!0===(this.options.grid||{}).enabled){const {axisTitle:c,
|
|
height:e,horiz:d,left:f,offset:h,opposite:g,options:l,top:k,width:m}=this;var b=this.tickSize();const q=c&&c.getBBox().width,p=l.title.x,r=l.title.y,u=n(l.title.margin,d?5:10),v=c?this.chart.renderer.fontMetrics(c).f:0;b=(d?k+e:f)+(d?1:-1)*(g?-1:1)*(b?b[0]/2:0)+(this.side===L.bottom?v:0);a.titlePosition.x=d?f-(q||0)/2-u+p:b+(g?m:0)+h+p;a.titlePosition.y=d?b-(g?e:0)+(g?v:-v)/2+h+r:k-u+r}}function E(){const {chart:b,options:{grid:e={}},userOptions:d}=this;if(e.enabled){var f=this.options;f.labels.align=
|
|
n(f.labels.align,"center");this.categories||(f.showLastLabel=!1);this.labelRotation=0;f.labels.rotation=0}if(e.columns){f=this.grid.columns=[];let g=this.grid.columnIndex=0;for(;++g<e.columns.length;){var h=c(d,e.columns[e.columns.length-g-1],{isInternal:!0,linkedTo:0,type:"category",scrollbar:{enabled:!1}});delete h.grid.columns;h=new a(this.chart,h,"yAxis");h.grid.isColumn=!0;h.grid.columnIndex=g;q(b.axes,h);q(b[this.coll]||[],h);f.push(h)}}}function B(){var a=this.grid,b=this.options;if(!0===(b.grid||
|
|
{}).enabled){var c=this.min||0;const g=this.max||0;this.maxLabelDimensions=this.getMaxLabelDimensions(this.ticks,this.tickPositions);this.rightWall&&this.rightWall.destroy();if(this.grid&&this.grid.isOuterAxis()&&this.axisLine){var e=b.lineWidth;if(e){e=this.getLinePath(e);var d=e[0],f=e[1],h=((this.tickSize("tick")||[1])[0]-1)*(this.side===L.top||this.side===L.left?-1:1);"M"===d[0]&&"L"===f[0]&&(this.horiz?(d[2]+=h,f[2]+=h):(d[1]+=h,f[1]+=h));!this.horiz&&this.chart.marginRight&&(d=[d,["L",this.left,
|
|
d[2]||0]],h=["L",this.chart.chartWidth-this.chart.marginRight,this.toPixels(g+this.tickmarkOffset)],f=[["M",f[1]||0,this.toPixels(g+this.tickmarkOffset)],h],this.grid.upperBorder||0===c%1||(this.grid.upperBorder=this.grid.renderBorder(d)),this.grid.upperBorder&&(this.grid.upperBorder.attr({stroke:b.lineColor,"stroke-width":b.lineWidth}),this.grid.upperBorder.animate({d})),this.grid.lowerBorder||0===g%1||(this.grid.lowerBorder=this.grid.renderBorder(f)),this.grid.lowerBorder&&(this.grid.lowerBorder.attr({stroke:b.lineColor,
|
|
"stroke-width":b.lineWidth}),this.grid.lowerBorder.animate({d:f})));this.grid.axisLineExtra?(this.grid.axisLineExtra.attr({stroke:b.lineColor,"stroke-width":b.lineWidth}),this.grid.axisLineExtra.animate({d:e})):this.grid.axisLineExtra=this.grid.renderBorder(e);this.axisLine[this.showAxis?"show":"hide"]()}}(a&&a.columns||[]).forEach(a=>a.render());if(!this.horiz&&this.chart.hasRendered&&(this.scrollbar||this.linkedParent&&this.linkedParent.scrollbar)){a=this.tickmarkOffset;b=this.tickPositions[this.tickPositions.length-
|
|
1];e=this.tickPositions[0];let d,f;for(;(d=this.hiddenLabels.pop())&&d.element;)d.show();for(;(f=this.hiddenMarks.pop())&&f.element;)f.show();(d=this.ticks[e].label)&&(c-e>a?this.hiddenLabels.push(d.hide()):d.show());(d=this.ticks[b].label)&&(b-g>a?this.hiddenLabels.push(d.hide()):d.show());(c=this.ticks[b].mark)&&b-g<a&&0<b-g&&this.ticks[b].isLast&&this.hiddenMarks.push(c.hide())}}}function t(){const a=this.tickPositions&&this.tickPositions.info,b=this.options,c=this.userOptions.labels||{};(b.grid||
|
|
{}).enabled&&(this.horiz?(this.series.forEach(a=>{a.options.pointRange=0}),a&&b.dateTimeLabelFormats&&b.labels&&!v(c.align)&&(!1===b.dateTimeLabelFormats[a.unitName].range||1<a.count)&&(b.labels.align="left",v(c.x)||(b.labels.x=3))):"treegrid"!==this.options.type&&this.grid&&this.grid.columns&&(this.minPointOffset=this.tickInterval))}function r(a){const e=this.options;a=a.userOptions;const d=e&&H.isObject(e.grid,!0)?e.grid:{};let f;!0===d.enabled&&(f=c(!0,{className:"highcharts-grid-axis "+(a.className||
|
|
""),dateTimeLabelFormats:{hour:{list:["%H:%M","%H"]},day:{list:["%A, %e. %B","%a, %e. %b","%E"]},week:{list:["Week %W","W%W"]},month:{list:["%B","%b","%o"]}},grid:{borderWidth:1},labels:{padding:2,style:{fontSize:"0.9em"}},margin:0,title:{text:null,reserveSpace:!1,rotation:0},units:[["millisecond",[1,10,100]],["second",[1,10]],["minute",[1,5,15]],["hour",[1,6]],["day",[1]],["week",[1]],["month",[1]],["year",null]]},a),"xAxis"===this.coll&&(v(a.linkedTo)&&!v(a.tickPixelInterval)&&(f.tickPixelInterval=
|
|
350),v(a.tickPixelInterval)||!v(a.linkedTo)||v(a.tickPositioner)||v(a.tickInterval)||(f.tickPositioner=function(a,c){var e=this.linkedParent&&this.linkedParent.tickPositions&&this.linkedParent.tickPositions.info;if(e){var d=f.units||[];let g;var h=1;let l="year";for(let a=0;a<d.length;a++){const b=d[a];if(b&&b[0]===e.unitName){g=a;break}}(d=b(g)&&d[g+1])?(l=d[0]||"year",h=(h=d[1])&&h[0]||1):"year"===e.unitName&&(h=10*e.count);e=J[l];this.tickInterval=e*h;return this.chart.time.getTimeTicks({unitRange:e,
|
|
count:h,unitName:l},a,c,this.options.startOfWeek)}})),c(!0,this.options,f),this.horiz&&(e.minPadding=n(a.minPadding,0),e.maxPadding=n(a.maxPadding,0)),b(e.grid.borderWidth)&&(e.tickWidth=e.lineWidth=d.borderWidth))}function k(a){a=(a=a.userOptions)&&a.grid||{};const b=a.columns;a.enabled&&b&&c(!0,this.options,b[b.length-1])}function p(){(this.grid.columns||[]).forEach(a=>a.setScale())}function x(a){const {horiz:b,maxLabelDimensions:c,options:{grid:d={}}}=this;if(d.enabled&&c){var f=2*this.options.labels.distance;
|
|
f=b?d.cellHeight||f+c.height:f+c.width;e(a.tickSize)?a.tickSize[0]=f:a.tickSize=[f,0]}}function m(){this.axes.forEach(a=>{(a.grid&&a.grid.columns||[]).forEach(a=>{a.setAxisSize();a.setAxisTranslation()})})}function l(a){const {grid:b}=this;(b.columns||[]).forEach(b=>b.destroy(a.keepEvents));b.columns=void 0}function f(a){a=a.userOptions||{};const b=a.grid||{};b.enabled&&v(b.borderColor)&&(a.tickColor=a.lineColor=b.borderColor);this.grid||(this.grid=new P(this));this.hiddenLabels=[];this.hiddenMarks=
|
|
[]}function g(a){var c=this.label;const e=this.axis;var d=e.reversed,f=e.chart,h=e.options.grid||{};const g=e.options.labels,l=g.align;var k=L[e.side],m=a.tickmarkOffset,n=e.tickPositions;const q=this.pos-m;n=b(n[a.index+1])?n[a.index+1]-m:(e.max||0)+m;var p=e.tickSize("tick");m=p?p[0]:0;p=p?p[1]/2:0;if(!0===h.enabled){let b;"top"===k?(h=e.top+e.offset,b=h-m):"bottom"===k?(b=f.chartHeight-e.bottom+e.offset,h=b+m):(h=e.top+e.len-(e.translate(d?n:q)||0),b=e.top+e.len-(e.translate(d?q:n)||0));"right"===
|
|
k?(k=f.chartWidth-e.right+e.offset,d=k+m):"left"===k?(d=e.left+e.offset,k=d-m):(k=Math.round(e.left+(e.translate(d?n:q)||0))-p,d=Math.min(Math.round(e.left+(e.translate(d?q:n)||0))-p,e.left+e.len));this.slotWidth=d-k;a.pos.x="left"===l?k:"right"===l?d:k+(d-k)/2;a.pos.y=b+(h-b)/2;c&&(f=f.renderer.fontMetrics(c),c=c.getBBox().height,a.pos.y=g.useHTML?a.pos.y+(f.b+-(c/2)):a.pos.y+((f.b-(f.h-f.f))/2+-((Math.round(c/f.h)-1)*f.h/2)));a.pos.x+=e.horiz&&g.x||0}}function w(a){const {axis:b,value:e}=a;if(b.options.grid&&
|
|
b.options.grid.enabled){var d=b.tickPositions;const f=(b.linkedParent||b).series[0],h=e===d[0];d=e===d[d.length-1];const g=f&&u(f.options.data,function(a){return a[b.isXAxis?"x":"y"]===e});let l;g&&f.is("gantt")&&(l=c(g),z.seriesTypes.gantt.prototype.pointClass.setGanttPointAliases(l));a.isFirst=h;a.isLast=d;a.point=l}}function I(){const a=this.options,b=this.categories,c=this.tickPositions,e=c[0],d=c[c.length-1],f=this.linkedParent&&this.linkedParent.min||this.min,h=this.linkedParent&&this.linkedParent.max||
|
|
this.max,g=this.tickInterval;!0!==(a.grid||{}).enabled||b||!this.horiz&&!this.isLinked||(e<f&&e+g>f&&!a.startOnTick&&(c[0]=f),d>h&&d-g<h&&!a.endOnTick&&(c[c.length-1]=h))}function D(a){const {options:{grid:b={}}}=this;return!0===b.enabled&&this.categories?this.tickInterval:a.apply(this,Array.prototype.slice.call(arguments,1))}const {dateFormats:d}=z,{addEvent:h,defined:v,erase:q,find:u,isArray:e,isNumber:b,merge:c,pick:n,timeUnits:J,wrap:F}=H;var L;(function(a){a[a.top=0]="top";a[a.right=1]="right";
|
|
a[a.bottom=2]="bottom";a[a.left=3]="left"})(L||(L={}));const M=[];class P{constructor(a){this.axis=a}isOuterAxis(){const a=this.axis,c=a.grid.columnIndex,e=a.linkedParent&&a.linkedParent.grid.columns||a.grid.columns,d=c?a.linkedParent:a;let f=-1,h=0;(a.chart[a.coll]||[]).forEach((b,c)=>{b.side!==a.side||b.options.isInternal||(h=c,b===d&&(f=c))});return h===f&&(b(c)?e.length===c:!0)}renderBorder(a){const b=this.axis,c=b.chart.renderer,e=b.options;a=c.path(a).addClass("highcharts-axis-line").add(b.axisBorder);
|
|
c.styledMode||a.attr({stroke:e.lineColor,"stroke-width":e.lineWidth,zIndex:7});return a}}d.E=function(a){return this.dateFormat("%a",a,!0).charAt(0)};d.W=function(a){const b=this,c=new this.Date(a);["Hours","Milliseconds","Minutes","Seconds"].forEach(function(a){b.set(a,c,0)});var e=(this.get("Day",c)+6)%7;a=new this.Date(c.valueOf());this.set("Date",a,this.get("Date",c)-e+3);e=new this.Date(this.get("FullYear",a),0,1);4!==this.get("Day",e)&&(this.set("Month",c,0),this.set("Date",c,1+(11-this.get("Day",
|
|
e))%7));return(1+Math.floor((a.valueOf()-e.valueOf())/6048E5)).toString()};"";return{compose:function(a,b,c){H.pushUnique(M,a)&&(a.keepProps.push("grid"),a.prototype.getMaxLabelDimensions=y,F(a.prototype,"unsquish",D),h(a,"init",f),h(a,"afterGetOffset",A),h(a,"afterGetTitlePosition",C),h(a,"afterInit",E),h(a,"afterRender",B),h(a,"afterSetAxisTranslation",t),h(a,"afterSetOptions",r),h(a,"afterSetOptions",k),h(a,"afterSetScale",p),h(a,"afterTickSize",x),h(a,"trimTicks",I),h(a,"destroy",l));H.pushUnique(M,
|
|
b)&&h(b,"afterSetChartSize",m);H.pushUnique(M,c)&&(h(c,"afterGetLabelPosition",g),h(c,"labelFormat",w));return a}}});M(a,"Gantt/Tree.js",[a["Core/Utilities.js"]],function(a){const {extend:y,isNumber:H,pick:K}=a,A=function(a,y){const t=a.reduce(function(a,k){const p=K(k.parent,"");"undefined"===typeof a[p]&&(a[p]=[]);a[p].push(k);return a},{});Object.keys(t).forEach(function(a,k){const p=t[a];""!==a&&-1===y.indexOf(a)&&(p.forEach(function(a){k[""].push(a)}),delete k[a])});return t},C=function(a,z,
|
|
t,r,k,p){let x=0,m=0,l=p&&p.after;var f=p&&p.before;z={data:r,depth:t-1,id:a,level:t,parent:z};let g,w;"function"===typeof f&&f(z,p);f=(k[a]||[]).map(function(f){const l=C(f.id,a,t+1,f,k,p),d=f.start;f=!0===f.milestone?d:f.end;g=!H(g)||d<g?d:g;w=!H(w)||f>w?f:w;x=x+1+l.descendants;m=Math.max(l.height+1,m);return l});r&&(r.start=K(r.start,g),r.end=K(r.end,w));y(z,{children:f,descendants:x,height:m});"function"===typeof l&&l(z,p);return z};return{getListOfParents:A,getNode:C,getTree:function(a,y){const t=
|
|
a.map(function(a){return a.id});a=A(a,t);return C("",null,1,null,a,y)}}});M(a,"Core/Axis/TreeGrid/TreeGridTick.js",[a["Core/Utilities.js"]],function(a){function y(){this.treeGrid||(this.treeGrid=new p(this))}function H(a,k){a=a.treeGrid;const l=!a.labelIcon,f=k.renderer;var g=k.xy;const m=k.options,p=m.width||0,r=m.height||0;var d=g.x-p/2-(m.padding||0);g=g.y-r/2;const h=k.collapsed?90:180,v=k.show&&B(g);let q=a.labelIcon;q||(a.labelIcon=q=f.path(f.symbols[m.type](m.x||0,m.y||0,p,r)).addClass("highcharts-label-icon").add(k.group));
|
|
q[v?"show":"hide"]();f.styledMode||q.attr({cursor:"pointer",fill:t(k.color,"#666666"),"stroke-width":1,stroke:m.lineColor,strokeWidth:m.lineWidth||0});q[l?"attr":"animate"]({translateX:d,translateY:g,rotation:h})}function K(a,k,l,f,g,p,r,y,d){var h=t(this.options&&this.options.labels,p);p=this.pos;var m=this.axis;const q="treegrid"===m.options.type;a=a.apply(this,[k,l,f,g,h,r,y,d]);q&&(k=h&&E(h.symbol,!0)?h.symbol:{},h=h&&B(h.indentation)?h.indentation:0,p=(p=(m=m.treeGrid.mapOfPosToGridNode)&&m[p])&&
|
|
p.depth||1,a.x+=(k.width||0)+2*(k.padding||0)+(p-1)*h);return a}function A(a){const k=this;var l=k.pos,f=k.axis;const g=k.label;var p=f.treeGrid.mapOfPosToGridNode,r=f.options;const x=t(k.options&&k.options.labels,r&&r.labels);var d=x&&E(x.symbol,!0)?x.symbol:{};const h=(p=p&&p[l])&&p.depth;r="treegrid"===r.type;const v=-1<f.tickPositions.indexOf(l);l=f.chart.styledMode;r&&p&&g&&g.element&&g.addClass("highcharts-treegrid-node-level-"+h);a.apply(k,Array.prototype.slice.call(arguments,1));r&&g&&g.element&&
|
|
p&&p.descendants&&0<p.descendants&&(f=f.treeGrid.isCollapsed(p),H(k,{color:!l&&g.styles&&g.styles.color||"",collapsed:f,group:g.parentGroup,options:d,renderer:g.renderer,show:v,xy:g.xy}),d="highcharts-treegrid-node-"+(f?"expanded":"collapsed"),g.addClass("highcharts-treegrid-node-"+(f?"collapsed":"expanded")).removeClass(d),l||g.css({cursor:"pointer"}),[g,k.treeGrid.labelIcon].forEach(a=>{a&&!a.attachedTreeGridEvents&&(C(a.element,"mouseover",function(){g.addClass("highcharts-treegrid-node-active");
|
|
g.renderer.styledMode||g.css({textDecoration:"underline"})}),C(a.element,"mouseout",function(){{const a=E(x.style)?x.style:{};g.removeClass("highcharts-treegrid-node-active");g.renderer.styledMode||g.css({textDecoration:a.textDecoration})}}),C(a.element,"click",function(){k.treeGrid.toggleCollapse()}),a.attachedTreeGridEvents=!0)}))}const {addEvent:C,isObject:E,isNumber:B,pick:t,wrap:r}=a,k=[];class p{static compose(p){a.pushUnique(k,p)&&(C(p,"init",y),r(p.prototype,"getLabelPosition",K),r(p.prototype,
|
|
"renderLabel",A),p.prototype.collapse=function(a){this.treeGrid.collapse(a)},p.prototype.expand=function(a){this.treeGrid.expand(a)},p.prototype.toggleCollapse=function(a){this.treeGrid.toggleCollapse(a)})}constructor(a){this.tick=a}collapse(a){var k=this.tick;const l=k.axis,f=l.brokenAxis;f&&l.treeGrid.mapOfPosToGridNode&&(k=l.treeGrid.collapse(l.treeGrid.mapOfPosToGridNode[k.pos]),f.setBreaks(k,t(a,!0)))}destroy(){this.labelIcon&&this.labelIcon.destroy()}expand(a){var k=this.tick;const l=k.axis,
|
|
f=l.brokenAxis;f&&l.treeGrid.mapOfPosToGridNode&&(k=l.treeGrid.expand(l.treeGrid.mapOfPosToGridNode[k.pos]),f.setBreaks(k,t(a,!0)))}toggleCollapse(a){var k=this.tick;const l=k.axis,f=l.brokenAxis;f&&l.treeGrid.mapOfPosToGridNode&&(k=l.treeGrid.toggleCollapse(l.treeGrid.mapOfPosToGridNode[k.pos]),f.setBreaks(k,t(a,!0)))}}return p});M(a,"Series/TreeUtilities.js",[a["Core/Color/Color.js"],a["Core/Utilities.js"]],function(a,z){function y(a,k){var p=k.before;const r=k.idRoot,m=k.mapIdToNode[r],l=k.points[a.i],
|
|
f=l&&l.options||{},g=[];let w=0;a.levelDynamic=a.level-(!1!==k.levelIsConstant?0:m.level);a.name=t(l&&l.name,"");a.visible=r===a.id||!0===k.visible;"function"===typeof p&&(a=p(a,k));a.children.forEach((f,l)=>{const d=K({},k);K(d,{index:l,siblings:a.children.length,visible:a.visible});f=y(f,d);g.push(f);f.visible&&(w+=f.val)});p=t(f.value,w);a.visible=0<=p&&(0<w||a.visible);a.children=g;a.childrenTotal=w;a.isLeaf=a.visible&&!w;a.val=p;return a}const {extend:K,isArray:A,isNumber:C,isObject:E,merge:B,
|
|
pick:t}=z;return{getColor:function(r,k){const p=k.index;var x=k.mapOptionsToLevel;const m=k.parentColor,l=k.parentColorIndex,f=k.series;var g=k.colors;const w=k.siblings;var y=f.points,z=f.chart.options.chart;let d;var h;let v;if(r){y=y[r.i];r=x[r.level]||{};if(x=y&&r.colorByPoint){d=y.index%(g?g.length:z.colorCount);var q=g&&g[d]}if(!f.chart.styledMode){g=y&&y.options.color;z=r&&r.color;if(h=m)h=(h=r&&r.colorVariation)&&"brightness"===h.key&&p&&w?a.parse(m).brighten(p/w*h.to).get():m;h=t(g,z,q,h,
|
|
f.color)}v=t(y&&y.options.colorIndex,r&&r.colorIndex,d,l,k.colorIndex)}return{color:h,colorIndex:v}},getLevelOptions:function(a){let k={},p,r,m;if(E(a)){m=C(a.from)?a.from:1;var l=a.levels;r={};p=E(a.defaults)?a.defaults:{};A(l)&&(r=l.reduce((a,g)=>{let f,l;E(g)&&C(g.level)&&(l=B({},g),f=t(l.levelIsConstant,p.levelIsConstant),delete l.levelIsConstant,delete l.level,g=g.level+(f?0:m-1),E(a[g])?B(!0,a[g],l):a[g]=l);return a},{}));l=C(a.to)?a.to:1;for(a=0;a<=l;a++)k[a]=B({},p,E(r[a])?r[a]:{})}return k},
|
|
setTreeValues:y,updateRootId:function(a){if(E(a)){var k=E(a.options)?a.options:{};k=t(a.rootNode,k.rootId,"");E(a.userOptions)&&(a.userOptions.rootId=k);a.rootNode=k}return k}}});M(a,"Core/Axis/TreeGrid/TreeGridAxis.js",[a["Core/Axis/BrokenAxis.js"],a["Core/Axis/GridAxis.js"],a["Gantt/Tree.js"],a["Core/Axis/TreeGrid/TreeGridTick.js"],a["Series/TreeUtilities.js"],a["Core/Utilities.js"]],function(a,z,H,K,A,C){function y(a,b){const c=a.collapseEnd||0;a=a.collapseStart||0;c>=b&&(a-=.5);return{from:a,
|
|
to:c,showPoints:!1}}function B(a,b,c){const e=[],d=[],f={},h="boolean"===typeof b?b:!1;let g={},k=-1;a=H.getTree(a,{after:function(a){a=g[a.pos];let b=0,c=0;a.children.forEach(function(a){c+=(a.descendants||0)+1;b=Math.max((a.height||0)+1,b)});a.descendants=c;a.height=b;a.collapsed&&d.push(a)},before:function(a){const b=w(a.data,!0)?a.data:{},c=I(b.name)?b.name:"";var d=f[a.parent];d=w(d,!0)?g[d.pos]:null;var m=function(a){return a.name===c};let n;h&&w(d,!0)&&(n=l(d.children,m))?(m=n.pos,n.nodes.push(a)):
|
|
m=k++;g[m]||(g[m]=n={depth:d?d.depth+1:0,name:c,id:b.id,nodes:[a],children:[],pos:m},-1!==m&&e.push(c),w(d,!0)&&d.children.push(n));I(a.id)&&(f[a.id]=a);n&&!0===b.collapsed&&(n.collapsed=!0);a.pos=m}});g=function(a,b){const c=function(a,e,d){let f=e+(-1===e?0:b-1);const h=(f-e)/2,g=e+h;a.nodes.forEach(function(a){const b=a.data;w(b,!0)&&(b.y=e+(b.seriesIndex||0),delete b.seriesIndex);a.pos=g});d[g]=a;a.pos=g;a.tickmarkOffset=h+.5;a.collapseStart=f+.5;a.children.forEach(function(a){c(a,f+1,d);f=(a.collapseEnd||
|
|
0)-.5});a.collapseEnd=f+.5;return d};return c(a["-1"],-1,{})}(g,c);return{categories:e,mapOfIdToNode:f,mapOfPosToGridNode:g,collapsedNodes:d,tree:a}}function t(a){a.target.axes.filter(function(a){return"treegrid"===a.options.type}).forEach(function(b){var c=b.options||{};const e=c.labels,d=c.uniqueNames;c=c.max;let f=0,h;if(!b.treeGrid.mapOfPosToGridNode||b.series.some(function(a){return!a.hasRendered||a.isDirtyData||a.isDirty})){h=b.series.reduce(function(a,b){b.visible&&((b.options.data||[]).forEach(function(c){b.options.keys&&
|
|
b.options.keys.length&&(c=b.pointClass.prototype.optionsToObject.call({series:b},c),b.pointClass.setGanttPointAliases(c));w(c,!0)&&(c.seriesIndex=f,a.push(c))}),!0===d&&f++);return a},[]);if(c&&h.length<c)for(let a=h.length;a<=c;a++)h.push({name:a+"\u200b"});c=B(h,d||!1,!0===d?f:1);b.categories=c.categories;b.treeGrid.mapOfPosToGridNode=c.mapOfPosToGridNode;b.hasNames=!0;b.treeGrid.tree=c.tree;b.series.forEach(function(a){const b=(a.options.data||[]).map(function(b){g(b)&&a.options.keys&&a.options.keys.length&&
|
|
h.forEach(function(a){0<=b.indexOf(a.x)&&0<=b.indexOf(a.x2)&&(b=a)});return w(b,!0)?D(b):b});a.visible&&a.setData(b,!1)});b.treeGrid.mapOptionsToLevel=x({defaults:e,from:1,levels:e&&e.levels,to:b.treeGrid.tree&&b.treeGrid.tree.height});"beforeRender"===a.type&&(b.treeGrid.collapsedNodes=c.collapsedNodes)}})}function r(a,b){var c=this.treeGrid.mapOptionsToLevel||{};const e=this.ticks;let d=e[b],f,h;"treegrid"===this.options.type&&this.treeGrid.mapOfPosToGridNode?(h=this.treeGrid.mapOfPosToGridNode[b],
|
|
(c=c[h.depth])&&(f={labels:c}),!d&&q?e[b]=new q(this,b,void 0,void 0,{category:h.name,tickmarkOffset:h.tickmarkOffset,options:f}):(d.parameters.category=h.name,d.options=f,d.addLabel())):a.apply(this,Array.prototype.slice.call(arguments,1))}function k(a,b,c,d){const e=this,f="treegrid"===c.type;e.treeGrid||(e.treeGrid=new u(e));f&&(m(b,"beforeRender",t),m(b,"beforeRedraw",t),m(b,"addSeries",function(a){a.options.data&&(a=B(a.options.data,c.uniqueNames||!1,1),e.treeGrid.collapsedNodes=(e.treeGrid.collapsedNodes||
|
|
[]).concat(a.collapsedNodes))}),m(e,"foundExtremes",function(){e.treeGrid.collapsedNodes&&e.treeGrid.collapsedNodes.forEach(function(a){const b=e.treeGrid.collapse(a);e.brokenAxis&&(e.brokenAxis.setBreaks(b,!1),e.treeGrid.collapsedNodes&&(e.treeGrid.collapsedNodes=e.treeGrid.collapsedNodes.filter(b=>a.collapseStart!==b.collapseStart||a.collapseEnd!==b.collapseEnd)))})}),m(e,"afterBreaks",function(){"yAxis"===e.coll&&!e.staticScale&&e.chart.options.chart.height&&(e.isDirty=!0)}),c=D({grid:{enabled:!0},
|
|
labels:{align:"left",levels:[{level:void 0},{level:1,style:{fontWeight:"bold"}}],symbol:{type:"triangle",x:-5,y:-5,height:10,width:10,padding:5}},uniqueNames:!1},c,{reversed:!0,grid:{columns:void 0}}));a.apply(e,[b,c,d]);f&&(e.hasNames=!0,e.options.showLastLabel=!0)}function p(a){const b=this.options;"treegrid"===b.type?(this.min=d(this.userMin,b.min,this.dataMin),this.max=d(this.userMax,b.max,this.dataMax),f(this,"foundExtremes"),this.setAxisTranslation(),this.tickmarkOffset=.5,this.tickInterval=
|
|
1,this.tickPositions=this.treeGrid.mapOfPosToGridNode?this.treeGrid.getTickPositions():[]):a.apply(this,Array.prototype.slice.call(arguments,1))}const {getLevelOptions:x}=A,{addEvent:m,find:l,fireEvent:f,isArray:g,isObject:w,isString:I,merge:D,pick:d,wrap:h}=C,v=[];let q;class u{static compose(e,b,c,d){if(C.pushUnique(v,e)){-1===e.keepProps.indexOf("treeGrid")&&e.keepProps.push("treeGrid");const a=e.prototype;h(a,"generateTick",r);h(a,"init",k);h(a,"setTickInterval",p);a.utils={getNode:H.getNode}}C.pushUnique(v,
|
|
d)&&(q||(q=d));z.compose(e,b,d);a.compose(e,c);K.compose(d);return e}constructor(a){this.axis=a}setCollapsedStatus(a){const b=this.axis,c=b.chart;b.series.forEach(function(b){const e=b.options.data;if(a.id&&e){const d=c.get(a.id);b=e[b.data.indexOf(d)];d&&b&&(d.collapsed=a.collapsed,b.collapsed=a.collapsed)}})}collapse(a){const b=this.axis,c=b.options.breaks||[],e=y(a,b.max);c.push(e);a.collapsed=!0;b.treeGrid.setCollapsedStatus(a);return c}expand(a){const b=this.axis,c=b.options.breaks||[],e=y(a,
|
|
b.max);a.collapsed=!1;b.treeGrid.setCollapsedStatus(a);return c.reduce(function(a,b){b.to===e.to&&b.from===e.from||a.push(b);return a},[])}getTickPositions(){const a=this.axis,b=Math.floor(a.min/a.tickInterval)*a.tickInterval,c=Math.ceil(a.max/a.tickInterval)*a.tickInterval;return Object.keys(a.treeGrid.mapOfPosToGridNode||{}).reduce(function(d,e){e=+e;!(e>=b&&e<=c)||a.brokenAxis&&a.brokenAxis.isInAnyBreak(e)||d.push(e);return d},[])}isCollapsed(a){const b=this.axis,c=b.options.breaks||[],d=y(a,b.max);
|
|
return c.some(function(a){return a.from===d.from&&a.to===d.to})}toggleCollapse(a){return this.isCollapsed(a)?this.expand(a):this.collapse(a)}}return u});M(a,"Extensions/StaticScale.js",[a["Core/Axis/Axis.js"],a["Core/Chart/Chart.js"],a["Core/Utilities.js"]],function(a,z,H){const {addEvent:y,defined:A,isNumber:C,pick:E}=H;y(a,"afterSetOptions",function(){const a=this.chart.options.chart;!this.horiz&&C(this.options.staticScale)&&(!a.height||a.scrollablePlotArea&&a.scrollablePlotArea.minHeight)&&(this.staticScale=
|
|
this.options.staticScale)});z.prototype.adjustHeight=function(){"adjustHeight"!==this.redrawTrigger&&((this.axes||[]).forEach(function(a){let t=a.chart,r=!!t.initiatedScale&&t.options.animation;var k=a.options.staticScale;let p;a.staticScale&&A(a.min)&&(p=E(a.brokenAxis&&a.brokenAxis.unitLength,a.max+a.tickInterval-a.min)*k,p=Math.max(p,k),k=p-t.plotHeight,!t.scrollablePixelsY&&1<=Math.abs(k)&&(t.plotHeight=p,t.redrawTrigger="adjustHeight",t.setSize(void 0,t.chartHeight+k,r)),a.series.forEach(function(a){(a=
|
|
a.sharedClipKey&&t.sharedClips[a.sharedClipKey])&&a.attr(t.inverted?{width:t.plotHeight}:{height:t.plotHeight})}))}),this.initiatedScale=!0);this.redrawTrigger=null};y(z,"render",z.prototype.adjustHeight)});M(a,"Gantt/Connection.js",[a["Core/Defaults.js"],a["Core/Globals.js"],a["Core/Series/Point.js"],a["Core/Utilities.js"]],function(a,z,H,K){function y(a){var f=a.shapeArgs;return f?{xMin:f.x||0,xMax:(f.x||0)+(f.width||0),yMin:f.y||0,yMax:(f.y||0)+(f.height||0)}:(f=a.graphic&&a.graphic.getBBox())?
|
|
{xMin:a.plotX-f.width/2,xMax:a.plotX+f.width/2,yMin:a.plotY-f.height/2,yMax:a.plotY+f.height/2}:null}({defaultOptions:a}=a);const {defined:C,error:E,extend:B,merge:t,objectEach:r}=K;"";const k=z.deg2rad,p=Math.max,x=Math.min;B(a,{connectors:{type:"straight",lineWidth:1,marker:{enabled:!1,align:"center",verticalAlign:"middle",inside:!1,lineWidth:1},startMarker:{symbol:"diamond"},endMarker:{symbol:"arrow-filled"}}});class m{constructor(a,f,g){this.toPoint=this.pathfinder=this.graphics=this.fromPoint=
|
|
this.chart=void 0;this.init(a,f,g)}init(a,f,g){this.fromPoint=a;this.toPoint=f;this.options=g;this.chart=a.series.chart;this.pathfinder=this.chart.pathfinder}renderPath(a,f,g){let l=this.chart,k=l.styledMode,m=l.pathfinder,d=!l.options.chart.forExport&&!1!==g,h=this.graphics&&this.graphics.path;m.group||(m.group=l.renderer.g().addClass("highcharts-pathfinder-group").attr({zIndex:-1}).add(l.seriesGroup));m.group.translate(l.plotLeft,l.plotTop);h&&h.renderer||(h=l.renderer.path().add(m.group),k||h.attr({opacity:0}));
|
|
h.attr(f);a={d:a};k||(a.opacity=1);h[d?"animate":"attr"](a,g);this.graphics=this.graphics||{};this.graphics.path=h}addMarker(a,f,g){var l=this.fromPoint.series.chart;let m=l.pathfinder;l=l.renderer;let p="start"===a?this.fromPoint:this.toPoint;var d=p.getPathfinderAnchorPoint(f);let h,r;f.enabled&&((g="start"===a?g[1]:g[g.length-2])&&"M"===g[0]||"L"===g[0])&&(g={x:g[1],y:g[2]},g=p.getRadiansToVector(g,d),d=p.getMarkerVector(g,f.radius,d),g=-g/k,f.width&&f.height?(h=f.width,r=f.height):h=r=2*f.radius,
|
|
this.graphics=this.graphics||{},d={x:d.x-h/2,y:d.y-r/2,width:h,height:r,rotation:g,rotationOriginX:d.x,rotationOriginY:d.y},this.graphics[a]?this.graphics[a].animate(d):(this.graphics[a]=l.symbol(f.symbol).addClass("highcharts-point-connecting-path-"+a+"-marker highcharts-color-"+this.fromPoint.colorIndex).attr(d).add(m.group),l.styledMode||this.graphics[a].attr({fill:f.color||this.fromPoint.color,stroke:f.lineColor,"stroke-width":f.lineWidth,opacity:0}).animate({opacity:1},p.series.options.animation)))}getPath(a){let f=
|
|
this.pathfinder,g=this.chart,k=f.algorithms[a.type],l=f.chartObstacles;if("function"!==typeof k)return E('"'+a.type+'" is not a Pathfinder algorithm.'),{path:[],obstacles:[]};k.requiresObstacles&&!l&&(l=f.chartObstacles=f.getChartObstacles(a),g.options.connectors.algorithmMargin=a.algorithmMargin,f.chartObstacleMetrics=f.getObstacleMetrics(l));return k(this.fromPoint.getPathfinderAnchorPoint(a.startMarker),this.toPoint.getPathfinderAnchorPoint(a.endMarker),t({chartObstacles:l,lineObstacles:f.lineObstacles||
|
|
[],obstacleMetrics:f.chartObstacleMetrics,hardBounds:{xMin:0,xMax:g.plotWidth,yMin:0,yMax:g.plotHeight},obstacleOptions:{margin:a.algorithmMargin},startDirectionX:f.getAlgorithmStartDirection(a.startMarker)},a))}render(){var a=this.fromPoint;let f=a.series;var g=f.chart;let k=g.pathfinder,m=t(g.options.connectors,f.options.connectors,a.options.connectors,this.options),r={};g.styledMode||(r.stroke=m.lineColor||a.color,r["stroke-width"]=m.lineWidth,m.dashStyle&&(r.dashstyle=m.dashStyle));r["class"]=
|
|
"highcharts-point-connecting-path highcharts-color-"+a.colorIndex;m=t(r,m);C(m.marker.radius)||(m.marker.radius=x(p(Math.ceil((m.algorithmMargin||8)/2)-1,1),5));a=this.getPath(m);g=a.path;a.obstacles&&(k.lineObstacles=k.lineObstacles||[],k.lineObstacles=k.lineObstacles.concat(a.obstacles));this.renderPath(g,r,f.options.animation);this.addMarker("start",t(m.marker,m.startMarker),g);this.addMarker("end",t(m.marker,m.endMarker),g)}destroy(){this.graphics&&(r(this.graphics,function(a){a.destroy()}),delete this.graphics)}}
|
|
z.Connection=m;B(H.prototype,{getPathfinderAnchorPoint:function(a){let f=y(this),g,k;switch(a.align){case "right":g="xMax";break;case "left":g="xMin"}switch(a.verticalAlign){case "top":k="yMin";break;case "bottom":k="yMax"}return{x:g?f[g]:(f.xMin+f.xMax)/2,y:k?f[k]:(f.yMin+f.yMax)/2}},getRadiansToVector:function(a,f){let g;C(f)||(g=y(this))&&(f={x:(g.xMin+g.xMax)/2,y:(g.yMin+g.yMax)/2});return Math.atan2(f.y-a.y,a.x-f.x)},getMarkerVector:function(a,f,g){var k=2*Math.PI,l=y(this),m=l.xMax-l.xMin;let d=
|
|
l.yMax-l.yMin,h=Math.atan2(d,m),p=!1;m/=2;let q=d/2,r=l.xMin+m;l=l.yMin+q;var e=r,b=l;let c=1,n=1;for(;a<-Math.PI;)a+=k;for(;a>Math.PI;)a-=k;k=Math.tan(a);a>-h&&a<=h?(n=-1,p=!0):a>h&&a<=Math.PI-h?n=-1:a>Math.PI-h||a<=-(Math.PI-h)?(c=-1,p=!0):c=-1;p?(e+=c*m,b+=n*m*k):(e+=d/(2*k)*c,b+=n*q);g.x!==r&&(e=g.x);g.y!==l&&(b=g.y);return{x:e+f*Math.cos(a),y:b-f*Math.sin(a)}}});return m});M(a,"Gantt/PathfinderAlgorithms.js",[a["Core/Utilities.js"]],function(a){function y(a,p,r){r=r||0;let k=a.length-1;p-=1e-7;
|
|
let l,f;for(;r<=k;)if(l=k+r>>1,f=p-a[l].xMin,0<f)r=l+1;else if(0>f)k=l-1;else return l;return 0<r?r-1:0}function H(a,p){let k=y(a,p.x+1)+1;for(;k--;){var m;if(m=a[k].xMax>=p.x)m=a[k],m=p.x<=m.xMax&&p.x>=m.xMin&&p.y<=m.yMax&&p.y>=m.yMin;if(m)return k}return-1}function K(a){const k=[];if(a.length){k.push(["M",a[0].start.x,a[0].start.y]);for(let p=0;p<a.length;++p)k.push(["L",a[p].end.x,a[p].end.y])}return k}function A(a,p){a.yMin=B(a.yMin,p.yMin);a.yMax=E(a.yMax,p.yMax);a.xMin=B(a.xMin,p.xMin);a.xMax=
|
|
E(a.xMax,p.xMax)}const {pick:C}=a,{min:E,max:B,abs:t}=Math;a=function(a,p,r){function k(a,d,f,g,e){a={x:a.x,y:a.y};a[d]=f[g||d]+(e||0);return a}function l(a,d,f){const h=t(d[f]-a[f+"Min"])>t(d[f]-a[f+"Max"]);return k(d,f,a,f+(h?"Max":"Min"),h?1:-1)}let f=[];var g=C(r.startDirectionX,t(p.x-a.x)>t(p.y-a.y))?"x":"y",w=r.chartObstacles;let x=H(w,a);r=H(w,p);let y;if(-1<r){var d=w[r];r=l(d,p,g);d={start:r,end:p};y=r}else y=p;-1<x&&(w=w[x],r=l(w,a,g),f.push({start:a,end:r}),r[g]>=a[g]===r[g]>=y[g]&&(g=
|
|
"y"===g?"x":"y",p=a[g]<p[g],f.push({start:r,end:k(r,g,w,g+(p?"Max":"Min"),p?1:-1)}),g="y"===g?"x":"y"));a=f.length?f[f.length-1].end:a;r=k(a,g,y);f.push({start:a,end:r});g=k(r,"y"===g?"x":"y",y);f.push({start:r,end:g});f.push(d);return{path:K(f),obstacles:f}};a.requiresObstacles=!0;const r=function(a,p,r){function k(a,b,d){let e,f,h,g,k,l=a.x<b.x?1:-1;a.x<b.x?(e=a,f=b):(e=b,f=a);a.y<b.y?(g=a,h=b):(g=b,h=a);for(k=0>l?E(y(c,f.x),c.length-1):0;c[k]&&(0<l&&c[k].xMin<=f.x||0>l&&c[k].xMax>=e.x);){if(c[k].xMin<=
|
|
f.x&&c[k].xMax>=e.x&&c[k].yMin<=h.y&&c[k].yMax>=g.y)return d?{y:a.y,x:a.x<b.x?c[k].xMin-1:c[k].xMax+1,obstacle:c[k]}:{x:a.x,y:a.y<b.y?c[k].yMin-1:c[k].yMax+1,obstacle:c[k]};k+=l}return b}function l(a,b,c,d,e){var f=e.soft,h=e.hard;let g=d?"x":"y",l={x:b.x,y:b.y},m={x:b.x,y:b.y};e=a[g+"Max"]>=f[g+"Max"];f=a[g+"Min"]<=f[g+"Min"];let n=a[g+"Max"]>=h[g+"Max"];h=a[g+"Min"]<=h[g+"Min"];let p=t(a[g+"Min"]-b[g]),q=t(a[g+"Max"]-b[g]);c=10>t(p-q)?b[g]<c[g]:q<p;m[g]=a[g+"Min"];l[g]=a[g+"Max"];a=k(b,m,d)[g]!==
|
|
m[g];b=k(b,l,d)[g]!==l[g];c=a?b?c:!0:b?!1:c;c=f?e?c:!0:e?!1:c;return h?n?c:!0:n?!1:c}function f(a,d,g){if(a.x===d.x&&a.y===d.y)return[];var m=g?"x":"y";let n,p,t,v=r.obstacleOptions.margin;var w={soft:{xMin:q,xMax:u,yMin:e,yMax:b},hard:r.hardBounds};n=H(c,a);-1<n?(n=c[n],w=l(n,a,d,g,w),A(n,r.hardBounds),t=g?{y:a.y,x:n[w?"xMax":"xMin"]+(w?1:-1)}:{x:a.x,y:n[w?"yMax":"yMin"]+(w?1:-1)},p=H(c,t),-1<p&&(p=c[p],A(p,r.hardBounds),t[m]=w?B(n[m+"Max"]-v+1,(p[m+"Min"]+n[m+"Max"])/2):E(n[m+"Min"]+v-1,(p[m+"Max"]+
|
|
n[m+"Min"])/2),a.x===t.x&&a.y===t.y?(h&&(t[m]=w?B(n[m+"Max"],p[m+"Max"])+1:E(n[m+"Min"],p[m+"Min"])-1),h=!h):h=!1),a=[{start:a,end:t}]):(m=k(a,{x:g?d.x:a.x,y:g?a.y:d.y},g),a=[{start:a,end:{x:m.x,y:m.y}}],m[g?"x":"y"]!==d[g?"x":"y"]&&(w=l(m.obstacle,m,d,!g,w),A(m.obstacle,r.hardBounds),w={x:g?m.x:m.obstacle[w?"xMax":"xMin"]+(w?1:-1),y:g?m.obstacle[w?"yMax":"yMin"]+(w?1:-1):m.y},g=!g,a=a.concat(f({x:m.x,y:m.y},w,g))));return a=a.concat(f(a[a.length-1].end,d,!g))}function g(a,b,c){const d=E(a.xMax-b.x,
|
|
b.x-a.xMin)<E(a.yMax-b.y,b.y-a.yMin);c=l(a,b,c,d,{soft:r.hardBounds,hard:r.hardBounds});return d?{y:b.y,x:a[c?"xMax":"xMin"]+(c?1:-1)}:{x:b.x,y:a[c?"yMax":"yMin"]+(c?1:-1)}}let w=C(r.startDirectionX,t(p.x-a.x)>t(p.y-a.y)),x=w?"x":"y";let z,d=[],h=!1;var v=r.obstacleMetrics;let q=E(a.x,p.x)-v.maxWidth-10,u=B(a.x,p.x)+v.maxWidth+10,e=E(a.y,p.y)-v.maxHeight-10,b=B(a.y,p.y)+v.maxHeight+10,c=r.chartObstacles;var n=y(c,q);v=y(c,u);c=c.slice(n,v+1);-1<(v=H(c,p))&&(z=g(c[v],p,a),d.push({end:p,start:z}),p=
|
|
z);for(;-1<(v=H(c,p));)n=0>p[x]-a[x],z={x:p.x,y:p.y},z[x]=c[v][n?x+"Max":x+"Min"]+(n?1:-1),d.push({end:p,start:z}),p=z;a=f(a,p,w);a=a.concat(d.reverse());return{path:K(a),obstacles:a}};r.requiresObstacles=!0;return{fastAvoid:r,straight:function(a,p){return{path:[["M",a.x,a.y],["L",p.x,p.y]],obstacles:[{start:a,end:p}]}},simpleConnect:a}});M(a,"Gantt/Pathfinder.js",[a["Gantt/Connection.js"],a["Core/Chart/Chart.js"],a["Core/Defaults.js"],a["Core/Globals.js"],a["Core/Series/Point.js"],a["Core/Utilities.js"],
|
|
a["Gantt/PathfinderAlgorithms.js"]],function(a,z,H,K,A,C,E){function y(a){var d=a.shapeArgs;return d?{xMin:d.x||0,xMax:(d.x||0)+(d.width||0),yMin:d.y||0,yMax:(d.y||0)+(d.height||0)}:(d=a.graphic&&a.graphic.getBBox())?{xMin:a.plotX-d.width/2,xMax:a.plotX+d.width/2,yMin:a.plotY-d.height/2,yMax:a.plotY+d.height/2}:null}function t(a){let d=a.length,g=0,k,l,e=[],b=function(a,d,e){e=f(e,10);const c=a.yMax+e>d.yMin-e&&a.yMin-e<d.yMax+e,g=a.xMax+e>d.xMin-e&&a.xMin-e<d.xMax+e,h=c?a.xMin>d.xMax?a.xMin-d.xMax:
|
|
d.xMin-a.xMax:Infinity,k=g?a.yMin>d.yMax?a.yMin-d.yMax:d.yMin-a.yMax:Infinity;return g&&c?e?b(a,d,Math.floor(e/2)):Infinity:I(h,k)};for(;g<d;++g)for(k=g+1;k<d;++k)l=b(a[g],a[k]),80>l&&e.push(l);e.push(80);return w(Math.floor(e.sort(function(a,b){return a-b})[Math.floor(e.length/10)]/2-1),1)}function r(a){if(a.options.pathfinder||a.series.reduce(function(a,d){d.options&&l(!0,d.options.connectors=d.options.connectors||{},d.options.pathfinder);return a||d.options&&d.options.pathfinder},!1))l(!0,a.options.connectors=
|
|
a.options.connectors||{},a.options.pathfinder),x('WARNING: Pathfinder options have been renamed. Use "chart.connectors" or "series.connectors" instead.')}({defaultOptions:H}=H);const {addEvent:k,defined:p,error:x,extend:m,merge:l,pick:f,splat:g}=C;"";const w=Math.max,I=Math.min;m(H,{connectors:{type:"straight",lineWidth:1,marker:{enabled:!1,align:"center",verticalAlign:"middle",inside:!1,lineWidth:1},startMarker:{symbol:"diamond"},endMarker:{symbol:"arrow-filled"}}});class D{constructor(a){this.lineObstacles=
|
|
this.group=this.connections=this.chartObstacleMetrics=this.chartObstacles=this.chart=void 0;this.init(a)}init(a){this.chart=a;this.connections=[];k(a,"redraw",function(){this.pathfinder.update()})}update(d){const f=this.chart,k=this,l=k.connections;k.connections=[];f.series.forEach(function(d){d.visible&&!d.options.isInternal&&d.points.forEach(function(d){var b=d.options;b&&b.dependency&&(b.connect=b.dependency);let c;b=d.options&&d.options.connect&&g(d.options.connect);d.visible&&!1!==d.isInside&&
|
|
b&&b.forEach(function(b){c=f.get("string"===typeof b?b:b.to);c instanceof A&&c.series.visible&&c.visible&&!1!==c.isInside&&k.connections.push(new a(d,c,"string"===typeof b?{}:b))})})});for(let a=0,d,b,c=l.length,f=k.connections.length;a<c;++a){b=!1;const c=l[a];for(d=0;d<f;++d){const a=k.connections[d];if((c.options&&c.options.type)===(a.options&&a.options.type)&&c.fromPoint===a.fromPoint&&c.toPoint===a.toPoint){a.graphics=c.graphics;b=!0;break}}b||c.destroy()}delete this.chartObstacles;delete this.lineObstacles;
|
|
k.renderConnections(d)}renderConnections(a){a?this.chart.series.forEach(function(a){const d=function(){const d=a.chart.pathfinder;(d&&d.connections||[]).forEach(function(d){d.fromPoint&&d.fromPoint.series===a&&d.render()});a.pathfinderRemoveRenderEvent&&(a.pathfinderRemoveRenderEvent(),delete a.pathfinderRemoveRenderEvent)};!1===a.options.animation?d():a.pathfinderRemoveRenderEvent=k(a,"afterAnimate",d)}):this.connections.forEach(function(a){a.render()})}getChartObstacles(a){let d=[],g=this.chart.series,
|
|
k=f(a.algorithmMargin,0),l;for(let a=0,b=g.length;a<b;++a)if(g[a].visible&&!g[a].options.isInternal)for(let b=0,e=g[a].points.length,f,h;b<e;++b)h=g[a].points[b],h.visible&&(f=y(h))&&d.push({xMin:f.xMin-k,xMax:f.xMax+k,yMin:f.yMin-k,yMax:f.yMax+k});d=d.sort(function(a,b){return a.xMin-b.xMin});p(a.algorithmMargin)||(l=a.algorithmMargin=t(d),d.forEach(function(a){a.xMin-=l;a.xMax+=l;a.yMin-=l;a.yMax+=l}));return d}getObstacleMetrics(a){let d=0,f=0,g,k,e=a.length;for(;e--;)g=a[e].xMax-a[e].xMin,k=a[e].yMax-
|
|
a[e].yMin,d<g&&(d=g),f<k&&(f=k);return{maxHeight:f,maxWidth:d}}getAlgorithmStartDirection(a){let d="top"!==a.verticalAlign&&"bottom"!==a.verticalAlign;return"left"!==a.align&&"right"!==a.align?d?void 0:!1:d?!0:void 0}}D.prototype.algorithms=E;K.Pathfinder=D;m(A.prototype,{getPathfinderAnchorPoint:function(a){let d=y(this),f,g;switch(a.align){case "right":f="xMax";break;case "left":f="xMin"}switch(a.verticalAlign){case "top":g="yMin";break;case "bottom":g="yMax"}return{x:f?d[f]:(d.xMin+d.xMax)/2,y:g?
|
|
d[g]:(d.yMin+d.yMax)/2}},getRadiansToVector:function(a,f){let d;p(f)||(d=y(this))&&(f={x:(d.xMin+d.xMax)/2,y:(d.yMin+d.yMax)/2});return Math.atan2(f.y-a.y,a.x-f.x)},getMarkerVector:function(a,f,g){var d=2*Math.PI,h=y(this),e=h.xMax-h.xMin;let b=h.yMax-h.yMin,c=Math.atan2(b,e),k=!1;e/=2;let l=b/2,m=h.xMin+e;h=h.yMin+l;var p=m,r=h;let t=1,v=1;for(;a<-Math.PI;)a+=d;for(;a>Math.PI;)a-=d;d=Math.tan(a);a>-c&&a<=c?(v=-1,k=!0):a>c&&a<=Math.PI-c?v=-1:a>Math.PI-c||a<=-(Math.PI-c)?(t=-1,k=!0):t=-1;k?(p+=t*e,
|
|
r+=v*e*d):(p+=b/(2*d)*t,r+=v*l);g.x!==m&&(p=g.x);g.y!==h&&(r=g.y);return{x:p+f*Math.cos(a),y:r-f*Math.sin(a)}}});z.prototype.callbacks.push(function(a){!1!==a.options.connectors.enabled&&(r(a),this.pathfinder=new D(this),this.pathfinder.update(!0))});return D});M(a,"Series/Gantt/GanttSeries.js",[a["Core/Axis/Axis.js"],a["Core/Chart/Chart.js"],a["Series/Gantt/GanttPoint.js"],a["Core/Series/SeriesRegistry.js"],a["Core/Axis/Tick.js"],a["Core/Utilities.js"],a["Core/Axis/TreeGrid/TreeGridAxis.js"]],function(a,
|
|
z,H,K,A,C,E){const {series:y,seriesTypes:{xrange:t}}=K,{extend:r,isNumber:k,merge:p}=C;E.compose(a,z,y,A);class x extends t{constructor(){super(...arguments);this.points=this.options=this.data=void 0}drawPoint(a,l){let f=this.options,g=this.chart.renderer;var m=a.shapeArgs;let p=a.plotY,r=a.graphic,d=a.selected&&"select",h=f.stacking&&!f.borderRadius;if(a.options.milestone)if(k(p)&&null!==a.y&&!1!==a.visible){m=g.symbols.diamond(m.x||0,m.y||0,m.width||0,m.height||0);if(r)r[l]({d:m});else a.graphic=
|
|
g.path(m).addClass(a.getClassName(),!0).add(a.group||this.group);this.chart.styledMode||a.graphic.attr(this.pointAttribs(a,d)).shadow(f.shadow,null,h)}else r&&(a.graphic=r.destroy());else t.prototype.drawPoint.call(this,a,l)}translatePoint(a){let k,f;t.prototype.translatePoint.call(this,a);a.options.milestone&&(k=a.shapeArgs,f=k.height||0,a.shapeArgs={x:(k.x||0)-f/2,y:k.y,width:f,height:f})}}x.defaultOptions=p(t.defaultOptions,{grouping:!1,dataLabels:{enabled:!0},tooltip:{headerFormat:'<span style="font-size: 0.8em">{series.name}</span><br/>',
|
|
pointFormat:null,pointFormatter:function(){var a=this.series,l=a.xAxis;let f=a.tooltipOptions.dateTimeLabelFormats,g=l.options.startOfWeek,p=a.tooltipOptions,r=p.xDateFormat,t=this.options.milestone,d="<b>"+(this.name||this.yCategory)+"</b>";if(p.pointFormat)return this.tooltipFormatter(p.pointFormat);!r&&k(this.start)&&(r=a.chart.time.getDateFormat(l.closestPointRange,this.start,g,f||{}));l=a.chart.time.dateFormat(r,this.start);a=a.chart.time.dateFormat(r,this.end);d+="<br/>";return t?d+(l+"<br/>"):
|
|
d+("Start: "+l+"<br/>End: ")+(a+"<br/>")}},connectors:{type:"simpleConnect",animation:{reversed:!0},startMarker:{enabled:!0,symbol:"arrow-filled",radius:4,fill:"#fa0",align:"left"},endMarker:{enabled:!1,align:"right"}}});r(x.prototype,{pointArrayMap:["start","end","y"],pointClass:H,setData:y.prototype.setData});K.registerSeriesType("gantt",x);"";return x});M(a,"Core/Chart/GanttChart.js",[a["Core/Chart/Chart.js"],a["Core/Defaults.js"],a["Core/Utilities.js"]],function(a,z,H){const {getOptions:y}=z,
|
|
{isArray:A,merge:C,splat:E}=H;class B extends a{init(a,r){const k=y(),p=a.xAxis,t=a.yAxis;let m;a.xAxis=a.yAxis=void 0;const l=C(!0,{chart:{type:"gantt"},title:{text:null},legend:{enabled:!1},navigator:{series:{type:"gantt"},yAxis:{type:"category"}}},a,{isGantt:!0});a.xAxis=p;a.yAxis=t;l.xAxis=(A(a.xAxis)?a.xAxis:[a.xAxis||{},{}]).map(function(a,g){1===g&&(m=0);return C(k.xAxis,{grid:{enabled:!0},opposite:!0,linkedTo:m},a,{type:"datetime"})});l.yAxis=E(a.yAxis||{}).map(function(a){return C(k.yAxis,
|
|
{grid:{enabled:!0},staticScale:50,reversed:!0,type:a.categories?a.type:"treegrid"},a)});super.init(l,r)}}(function(a){a.ganttChart=function(r,k,p){return new a(r,k,p)}})(B||(B={}));return B});M(a,"Extensions/ArrowSymbols.js",[a["Core/Utilities.js"]],function(a){function y(a,y,t,r){return[["M",a,y+r/2],["L",a+t,y],["L",a,y+r/2],["L",a+t,y+r]]}function H(a,z,t,r){return y(a,z,t/2,r)}function K(a,y,t,r){return[["M",a+t,y],["L",a,y+r/2],["L",a+t,y+r],["Z"]]}function A(a,y,t,r){return K(a,y,t/2,r)}const C=
|
|
[];return{compose:function(z){a.pushUnique(C,z)&&(z=z.prototype.symbols,z.arrow=y,z["arrow-filled"]=K,z["arrow-filled-half"]=A,z["arrow-half"]=H,z["triangle-left"]=K,z["triangle-left-half"]=A)}}});M(a,"Extensions/CurrentDateIndication.js",[a["Core/Utilities.js"]],function(a){function y(){const a=this.options;var k=a.currentDateIndicator;k&&(k="object"===typeof k?C(t,k):C(t),k.value=Date.now(),k.className="highcharts-current-date-indicator",a.plotLines||(a.plotLines=[]),a.plotLines.push(k))}function H(){this.label&&
|
|
this.label.attr({text:this.getLabelText(this.options.label)})}function K(a,k){const p=this.options;return p&&p.className&&-1!==p.className.indexOf("highcharts-current-date-indicator")&&p.label&&"function"===typeof p.label.formatter?(p.value=Date.now(),p.label.formatter.call(this,p.value,p.label.format)):a.call(this,k)}const {addEvent:A,merge:C,wrap:E}=a,B=[],t={color:"#ccd3ff",width:2,label:{format:"%a, %b %d %Y, %H:%M",formatter:function(a,k){return this.axis.chart.time.dateFormat(k||"",a)},rotation:0,
|
|
style:{fontSize:"0.7em"}}};return{compose:function(r,k){a.pushUnique(B,r)&&A(r,"afterSetOptions",y);a.pushUnique(B,k)&&(A(k,"render",H),E(k.prototype,"getLabelText",K))}}});M(a,"masters/modules/gantt.src.js",[a["Core/Globals.js"],a["Stock/Navigator/Navigator.js"],a["Stock/Scrollbar/Scrollbar.js"],a["Stock/RangeSelector/RangeSelector.js"],a["Series/XRange/XRangeSeries.js"],a["Core/Chart/GanttChart.js"],a["Extensions/ArrowSymbols.js"],a["Extensions/CurrentDateIndication.js"]],function(a,z,H,K,A,C,E,
|
|
B){a.GanttChart=C;a.ganttChart=C.ganttChart;a.Navigator=z;a.RangeSelector=K;a.Scrollbar=H;E.compose(a.SVGRenderer);B.compose(a.Axis,a.PlotLineOrBand);z.compose(a.Axis,a.Chart,a.Series);K.compose(a.Axis,a.Chart);H.compose(a.Axis);A.compose(a.Axis)});M(a,"masters/highcharts-gantt.src.js",[a["masters/highcharts.src.js"]],function(a){a.product="Highcharts Gantt";return a});a["masters/highcharts-gantt.src.js"]._modules=a;return a["masters/highcharts-gantt.src.js"]});
|
|
//# sourceMappingURL=highcharts-gantt.js.map
|