文件过大分5部分
highcharts.js 0-3000_spencer_tseng的博客-CSDN博客
highcharts.js 3001-6000_spencer_tseng的博客-CSDN博客
highcharts.js 6001-9000_spencer_tseng的博客-CSDN博客
highcharts.js 9001-12000_spencer_tseng的博客-CSDN博客
highcharts.js 12001-12677_spencer_tseng的博客-CSDN博客
highcharts.js 9001-12000
return y(c, a.length - 1)
};
a.prototype.bindAxes = function() {
var a = this,
c = a.options,
d = a.chart,
e;
w(this, "bindAxes", null,
function() { (a.axisTypes || []).forEach(function(h) {
var f = 0;
d[h].forEach(function(b) {
e = b.options;
if (c[h] === f && !e.isInternal || "undefined" !== typeof c[h] && c[h] === e.id || "undefined" === typeof c[h] && 0 === e.index) a.insert(b.series),
a[h] = b,
b.isDirty = !0;
e.isInternal || f++
});
a[h] || a.optionalAxis === h || b(18, !0, d)
})
});
w(this, "afterBindAxes")
};
a.prototype.updateParallelArrays = function(a, b) {
var c = a.series,
d = arguments,
e = O(b) ?
function(d) {
var e = "y" === d && c.toYData ? c.toYData(a) : a[d];
c[d + "Data"][b] = e
}: function(a) {
Array.prototype[b].apply(c[a + "Data"], Array.prototype.slice.call(d, 2))
};
c.parallelArrays.forEach(e)
};
a.prototype.hasData = function() {
return this.visible && "undefined" !== typeof this.dataMax && "undefined" !== typeof this.dataMin || this.visible && this.yData && 0 < this.yData.length
};
a.prototype.autoIncrement = function(a) {
var b = this.options,
c = b.pointIntervalUnit,
d = b.relativeXValue,
e = this.chart.time,
h = this.xIncrement,
f;
h = y(h, b.pointStart, 0);
this.pointInterval = f = y(this.pointInterval, b.pointInterval, 1);
d && O(a) && (f *= a);
c && (b = new e.Date(h), "day" === c ? e.set("Date", b, e.get("Date", b) + f) : "month" === c ? e.set("Month", b, e.get("Month", b) + f) : "year" === c && e.set("FullYear", b, e.get("FullYear", b) + f), f = b.getTime() - h);
if (d && O(a)) return h + f;
this.xIncrement = h + f;
return h
};
a.prototype.setDataSortingOptions = function() {
var a = this.options;
p(this, {
requireSorting: !1,
sorted: !1,
enabledDataSorting: !0,
allowDG: !1
});
h(a.pointRange) || (a.pointRange = 1)
};
a.prototype.setOptions = function(a) {
var b = this.chart,
c = b.options,
d = c.plotOptions,
e = b.userOptions || {};
a = S(a);
b = b.styledMode;
var f = {
plotOptions: d,
userOptions: a
};
w(this, "setOptions", f);
var g = f.plotOptions[this.type],
k = e.plotOptions || {};
this.userOptions = f.userOptions;
e = S(g, d.series, e.plotOptions && e.plotOptions[this.type], a);
this.tooltipOptions = S(l.tooltip, l.plotOptions.series && l.plotOptions.series.tooltip, l.plotOptions[this.type].tooltip, c.tooltip.userOptions, d.series && d.series.tooltip, d[this.type].tooltip, a.tooltip);
this.stickyTracking = y(a.stickyTracking, k[this.type] && k[this.type].stickyTracking, k.series && k.series.stickyTracking, this.tooltipOptions.shared && !this.noSharedTooltip ? !0 : e.stickyTracking);
null === g.marker && delete e.marker;
this.zoneAxis = e.zoneAxis;
d = this.zones = (e.zones || []).slice(); ! e.negativeColor && !e.negativeFillColor || e.zones || (c = {
value: e[this.zoneAxis + "Threshold"] || e.threshold || 0,
className: "highcharts-negative"
},
b || (c.color = e.negativeColor, c.fillColor = e.negativeFillColor), d.push(c));
d.length && h(d[d.length - 1].value) && d.push(b ? {}: {
color: this.color,
fillColor: this.fillColor
});
w(this, "afterSetOptions", {
options: e
});
return e
};
a.prototype.getName = function() {
return y(this.options.name, "Series " + (this.index + 1))
};
a.prototype.getCyclic = function(a, b, c) {
var d = this.chart,
e = this.userOptions,
f = a + "Index",
g = a + "Counter",
k = c ? c.length: y(d.options.chart[a + "Count"], d[a + "Count"]);
if (!b) {
var l = y(e[f], e["_" + f]);
h(l) || (d.series.length || (d[g] = 0), e["_" + f] = l = d[g] % k, d[g] += 1);
c && (b = c[l])
}
"undefined" !== typeof l && (this[f] = l);
this[a] = b
};
a.prototype.getColor = function() {
this.chart.styledMode ? this.getCyclic("color") : this.options.colorByPoint ? this.color = "#cccccc": this.getCyclic("color", this.options.color || l.plotOptions[this.type].color, this.chart.options.colors)
};
a.prototype.getPointsCollection = function() {
return (this.hasGroupedData ? this.points: this.data) || []
};
a.prototype.getSymbol = function() {
this.getCyclic("symbol", this.options.marker.symbol, this.chart.options.symbols)
};
a.prototype.findPointIndex = function(a, b) {
var c = a.id,
d = a.x,
e = this.points,
h = this.options.dataSorting,
f, g;
if (c) h = this.chart.get(c),
h instanceof B && (f = h);
else if (this.linkedParent || this.enabledDataSorting || this.options.relativeXValue) if (f = function(b) {
return ! b.touched && b.index === a.index
},
h && h.matchByName ? f = function(b) {
return ! b.touched && b.name === a.name
}: this.options.relativeXValue && (f = function(b) {
return ! b.touched && b.options.x === a.x
}), f = z(e, f), !f) return;
if (f) {
var k = f && f.index;
"undefined" !== typeof k && (g = !0)
}
"undefined" === typeof k && O(d) && (k = this.xData.indexOf(d, b)); - 1 !== k && "undefined" !== typeof k && this.cropped && (k = k >= this.cropStart ? k - this.cropStart: k); ! g && O(k) && e[k] && e[k].touched && (k = void 0);
return k
};
a.prototype.updateData = function(a, b) {
var c = this.options,
d = c.dataSorting,
e = this.points,
f = [],
g = this.requireSorting,
k = a.length === e.length,
l,
m,
p,
n = !0;
this.xIncrement = null;
a.forEach(function(a, b) {
var m = h(a) && this.pointClass.prototype.optionsToObject.call({
series: this
},
a) || {},
n = m.x;
if (m.id || O(n)) {
if (m = this.findPointIndex(m, p), -1 === m || "undefined" === typeof m ? f.push(a) : e[m] && a !== c.data[m] ? (e[m].update(a, !1, null, !1), e[m].touched = !0, g && (p = m + 1)) : e[m] && (e[m].touched = !0), !k || b !== m || d && d.enabled || this.hasDerivedData) l = !0
} else f.push(a)
},
this);
if (l) for (a = e.length; a--;)(m = e[a]) && !m.touched && m.remove && m.remove(!1, b);
else ! k || d && d.enabled ? n = !1 : (a.forEach(function(a, b) {
a !== e[b].y && e[b].update && e[b].update(a, !1, null, !1)
}), f.length = 0);
e.forEach(function(a) {
a && (a.touched = !1)
});
if (!n) return ! 1;
f.forEach(function(a) {
this.addPoint(a, !1, null, null, !1)
},
this);
null === this.xIncrement && this.xData && this.xData.length && (this.xIncrement = I(this.xData), this.autoIncrement());
return ! 0
};
a.prototype.setData = function(a, c, d, e) {
void 0 === c && (c = !0);
var h = this,
f = h.points,
g = f && f.length || 0,
k = h.options,
l = h.chart,
m = k.dataSorting,
p = h.xAxis,
n = k.turboThreshold,
F = this.xData,
q = this.yData,
u = h.pointArrayMap;
u = u && u.length;
var w = k.keys,
z, y = 0,
t = 1,
r = null;
if (!l.options.chart.allowMutatingData) {
k.data && delete h.options.data;
h.userOptions.data && delete h.userOptions.data;
var A = S(!0, a)
}
a = A || a || [];
A = a.length;
m && m.enabled && (a = this.sortData(a));
l.options.chart.allowMutatingData && !1 !== e && A && g && !h.cropped && !h.hasGroupedData && h.visible && !h.boosted && (z = this.updateData(a, d));
if (!z) {
h.xIncrement = null;
h.colorCounter = 0;
this.parallelArrays.forEach(function(a) {
h[a + "Data"].length = 0
});
if (n && A > n) if (r = h.getFirstValidPoint(a), O(r)) for (d = 0; d < A; d++) F[d] = this.autoIncrement(),
q[d] = a[d];
else if (H(r)) if (u) if (r.length === u) for (d = 0; d < A; d++) F[d] = this.autoIncrement(),
q[d] = a[d];
else for (d = 0; d < A; d++) e = a[d],
F[d] = e[0],
q[d] = e.slice(1, u + 1);
else if (w && (y = w.indexOf("x"), t = w.indexOf("y"), y = 0 <= y ? y: 0, t = 0 <= t ? t: 1), 1 === r.length && (t = 0), y === t) for (d = 0; d < A; d++) F[d] = this.autoIncrement(),
q[d] = a[d][t];
else for (d = 0; d < A; d++) e = a[d],
F[d] = e[y],
q[d] = e[t];
else b(12, !1, l);
else for (d = 0; d < A; d++)"undefined" !== typeof a[d] && (e = {
series: h
},
h.pointClass.prototype.applyOptions.apply(e, [a[d]]), h.updateParallelArrays(e, d));
q && Q(q[0]) && b(14, !0, l);
h.data = [];
h.options.data = h.userOptions.data = a;
for (d = g; d--;) f[d] && f[d].destroy && f[d].destroy();
p && (p.minRange = p.userMinRange);
h.isDirty = l.isDirtyBox = !0;
h.isDirtyData = !!f;
d = !1
}
"point" === k.legendType && (this.processData(), this.generatePoints());
c && l.redraw(d)
};
a.prototype.sortData = function(a) {
var b = this,
c = b.options.dataSorting.sortKey || "y",
d = function(a, b) {
return h(b) && a.pointClass.prototype.optionsToObject.call({
series: a
},
b) || {}
};
a.forEach(function(c, e) {
a[e] = d(b, c);
a[e].index = e
},
this);
a.concat().sort(function(a, b) {
a = N(c, a);
b = N(c, b);
return b < a ? -1 : b > a ? 1 : 0
}).forEach(function(a, b) {
a.x = b
},
this);
b.linkedSeries && b.linkedSeries.forEach(function(b) {
var c = b.options,
e = c.data;
c.dataSorting && c.dataSorting.enabled || !e || (e.forEach(function(c, h) {
e[h] = d(b, c);
a[h] && (e[h].x = a[h].x, e[h].index = h)
}), b.setData(e, !1))
});
return a
};
a.prototype.getProcessedData = function(a) {
var c = this.xAxis,
d = this.options,
e = d.cropThreshold,
h = a || this.getExtremesFromAll || d.getExtremesFromAll,
f = this.isCartesian;
a = c && c.val2lin;
d = !(!c || !c.logarithmic);
var g = 0,
k = this.xData,
l = this.yData,
m = this.requireSorting;
var p = !1;
var n = k.length;
if (c) {
p = c.getExtremes();
var F = p.min;
var q = p.max;
p = !(!c.categories || c.names.length)
}
if (f && this.sorted && !h && (!e || n > e || this.forceCrop)) if (k[n - 1] < F || k[0] > q) k = [],
l = [];
else if (this.yData && (k[0] < F || k[n - 1] > q)) {
var u = this.cropData(this.xData, this.yData, F, q);
k = u.xData;
l = u.yData;
g = u.start;
u = !0
}
for (e = k.length || 1; --e;) if (c = d ? a(k[e]) - a(k[e - 1]) : k[e] - k[e - 1], 0 < c && ("undefined" === typeof w || c < w)) var w = c;
else 0 > c && m && !p && (b(15, !1, this.chart), m = !1);
return {
xData: k,
yData: l,
cropped: u,
cropStart: g,
closestPointRange: w
}
};
a.prototype.processData = function(a) {
var b = this.xAxis;
if (this.isCartesian && !this.isDirty && !b.isDirty && !this.yAxis.isDirty && !a) return ! 1;
a = this.getProcessedData();
this.cropped = a.cropped;
this.cropStart = a.cropStart;
this.processedXData = a.xData;
this.processedYData = a.yData;
this.closestPointRange = this.basePointRange = a.closestPointRange;
w(this, "afterProcessData")
};
a.prototype.cropData = function(a, b, c, d, e) {
var h = a.length,
f, g = 0,
k = h;
e = y(e, this.cropShoulder);
for (f = 0; f < h; f++) if (a[f] >= c) {
g = Math.max(0, f - e);
break
}
for (c = f; c < h; c++) if (a[c] > d) {
k = c + e;
break
}
return {
xData: a.slice(g, k),
yData: b.slice(g, k),
start: g,
end: k
}
};
a.prototype.generatePoints = function() {
var a = this.options,
b = this.processedData || a.data,
c = this.processedXData,
d = this.processedYData,
e = this.pointClass,
h = c.length,
f = this.cropStart || 0,
g = this.hasGroupedData,
k = a.keys,
l = [];
a = a.dataGrouping && a.dataGrouping.groupAll ? f: 0;
var m, n, q = this.data;
if (!q && !g) {
var u = [];
u.length = b.length;
q = this.data = u
}
k && g && (this.options.keys = !1);
for (n = 0; n < h; n++) {
u = f + n;
if (g) {
var z = (new e).init(this, [c[n]].concat(K(d[n])));
z.dataGroup = this.groupMap[a + n];
z.dataGroup.options && (z.options = z.dataGroup.options, p(z, z.dataGroup.options), delete z.dataLabels)
} else(z = q[u]) || "undefined" === typeof b[u] || (q[u] = z = (new e).init(this, b[u], c[n]));
z && (z.index = g ? a + n: u, l[n] = z)
}
this.options.keys = k;
if (q && (h !== (m = q.length) || g)) for (n = 0; n < m; n++) n !== f || g || (n += h),
q[n] && (q[n].destroyElements(), q[n].plotX = void 0);
this.data = q;
this.points = l;
w(this, "afterGeneratePoints")
};
a.prototype.getXExtremes = function(a) {
return {
min: L(a),
max: I(a)
}
};
a.prototype.getExtremes = function(a, b) {
var c = this.xAxis,
d = this.yAxis,
e = this.processedXData || this.xData,
h = [],
f = this.requireSorting ? this.cropShoulder: 0;
d = d ? d.positiveValuesOnly: !1;
var g, k = 0,
l = 0,
m = 0;
a = a || this.stackedYData || this.processedYData || [];
var p = a.length;
if (c) {
var n = c.getExtremes();
k = n.min;
l = n.max
}
for (g = 0; g < p; g++) {
var q = e[g];
n = a[g];
var u = (O(n) || H(n)) && (n.length || 0 < n || !d);
q = b || this.getExtremesFromAll || this.options.getExtremesFromAll || this.cropped || !c || (e[g + f] || q) >= k && (e[g - f] || q) <= l;
if (u && q) if (u = n.length) for (; u--;) O(n[u]) && (h[m++] = n[u]);
else h[m++] = n
}
a = {
activeYData: h,
dataMin: L(h),
dataMax: I(h)
};
w(this, "afterGetExtremes", {
dataExtremes: a
});
return a
};
a.prototype.applyExtremes = function() {
var a = this.getExtremes();
this.dataMin = a.dataMin;
this.dataMax = a.dataMax;
return a
};
a.prototype.getFirstValidPoint = function(a) {
for (var b = a.length,
c = 0,
d = null; null === d && c < b;) d = a[c],
c++;
return d
};
a.prototype.translate = function() {
this.processedXData || this.processData();
this.generatePoints();
var a = this.options,
b = a.stacking,
c = this.xAxis,
d = c.categories,
e = this.enabledDataSorting,
f = this.yAxis,
g = this.points,
k = g.length,
l = this.pointPlacementToXValue(),
m = !!l,
p = a.threshold,
n = a.startFromThreshold ? p: 0,
u = this.zoneAxis || "y",
z,
t,
r = Number.MAX_VALUE;
for (z = 0; z < k; z++) {
var C = g[z],
v = C.x,
x = void 0,
I = void 0,
N = C.y,
J = C.low,
D = b && f.stacking && f.stacking.stacks[(this.negStacks && N < (n ? 0 : p) ? "-": "") + this.stackKey];
if (f.positiveValuesOnly && !f.validatePositiveValue(N) || c.positiveValuesOnly && !c.validatePositiveValue(v)) C.isNull = !0;
C.plotX = t = q(A(c.translate(v, 0, 0, 0, 1, l, "flags" === this.type), -1E5, 1E5));
if (b && this.visible && D && D[v]) {
var B = this.getStackIndicator(B, v, this.index);
C.isNull || (x = D[v], I = x.points[B.key])
}
H(I) && (J = I[0], N = I[1], J === n && B.key === D[v].base && (J = y(O(p) && p, f.min)), f.positiveValuesOnly && 0 >= J && (J = null), C.total = C.stackTotal = x.total, C.percentage = x.total && C.y / x.total * 100, C.stackY = N, this.irregularWidths || x.setOffset(this.pointXOffset || 0, this.barW || 0));
C.yBottom = h(J) ? A(f.translate(J, 0, 1, 0, 1), -1E5, 1E5) : null;
this.dataModify && (N = this.dataModify.modifyValue(N, z));
C.plotY = void 0;
O(N) && (x = f.translate(N, !1, !0, !1, !0), "undefined" !== typeof x && (C.plotY = A(x, -1E5, 1E5)));
C.isInside = this.isPointInside(C);
C.clientX = m ? q(c.translate(v, 0, 0, 0, 1, l)) : t;
C.negative = C[u] < (a[u + "Threshold"] || p || 0);
C.category = y(d && d[C.x], C.x);
if (!C.isNull && !1 !== C.visible) {
"undefined" !== typeof E && (r = Math.min(r, Math.abs(t - E)));
var E = t
}
C.zone = this.zones.length ? C.getZone() : void 0; ! C.graphic && this.group && e && (C.isNew = !0)
}
this.closestPointRangePx = r;
w(this, "afterTranslate")
};
a.prototype.getValidPoints = function(a, b, c) {
var d = this.chart;
return (a || this.points || []).filter(function(a) {
return b && !d.isInsidePlot(a.plotX, a.plotY, {
inverted: d.inverted
}) ? !1 : !1 !== a.visible && (c || !a.isNull)
})
};
a.prototype.getClipBox = function() {
var a = this.chart,
b = this.xAxis,
c = this.yAxis,
d = S(a.clipBox);
b && b.len !== a.plotSizeX && (d.width = b.len);
c && c.len !== a.plotSizeY && (d.height = c.len);
return d
};
a.prototype.getSharedClipKey = function() {
return this.sharedClipKey = (this.options.xAxis || 0) + "," + (this.options.yAxis || 0)
};
a.prototype.setClip = function() {
var a = this.chart,
b = this.group,
c = this.markerGroup,
d = a.sharedClips;
a = a.renderer;
var e = this.getClipBox(),
h = this.getSharedClipKey(),
f = d[h];
f ? f.animate(e) : d[h] = f = a.clipRect(e);
b && b.clip(!1 === this.options.clip ? void 0 : f);
c && c.clip()
};
a.prototype.animate = function(a) {
var b = this.chart,
c = this.group,
d = this.markerGroup,
e = b.inverted,
h = f(this.options.animation),
g = [this.getSharedClipKey(), h.duration, h.easing, h.defer].join(),
k = b.sharedClips[g],
l = b.sharedClips[g + "m"];
if (a && c) h = this.getClipBox(),
k ? k.attr("height", h.height) : (h.width = 0, e && (h.x = b.plotHeight), k = b.renderer.clipRect(h), b.sharedClips[g] = k, l = b.renderer.clipRect({
x: e ? (b.plotSizeX || 0) + 99 : -99,
y: e ? -b.plotLeft: -b.plotTop,
width: 99,
height: e ? b.chartWidth: b.chartHeight
}), b.sharedClips[g + "m"] = l),
c.clip(k),
d && d.clip(l);
else if (k && !k.hasClass("highcharts-animating")) {
b = this.getClipBox();
var m = h.step;
d && d.element.childNodes.length && (h.step = function(a, b) {
m && m.apply(b, arguments);
l && l.element && l.attr(b.prop, "width" === b.prop ? a + 99 : a)
});
k.addClass("highcharts-animating").animate(b, h)
}
};
a.prototype.afterAnimate = function() {
var a = this;
this.setClip();
Y(this.chart.sharedClips,
function(b, c, d) {
b && !a.chart.container.querySelector('[clip-path="url(#'.concat(b.id, ')"]')) && (b.destroy(), delete d[c])
});
this.finishedAnimating = !0;
w(this, "afterAnimate")
};
a.prototype.drawPoints = function(a) {
void 0 === a && (a = this.points);
var b = this.chart,
c = this.options.marker,
d = this[this.specialGroup] || this.markerGroup,
e = this.xAxis,
h = y(c.enabled, !e || e.isRadial ? !0 : null, this.closestPointRangePx >= c.enabledThreshold * c.radius),
f,
g;
if (!1 !== c.enabled || this._hasPointMarkers) for (f = 0; f < a.length; f++) {
var k = a[f];
var l = (g = k.graphic) ? "animate": "attr";
var m = k.marker || {};
var p = !!k.marker;
if ((h && "undefined" === typeof m.enabled || m.enabled) && !k.isNull && !1 !== k.visible) {
var n = y(m.symbol, this.symbol, "rect");
var q = this.markerAttribs(k, k.selected && "select");
this.enabledDataSorting && (k.startXPos = e.reversed ? -(q.width || 0) : e.width);
var u = !1 !== k.isInside;
g ? g[u ? "show": "hide"](u).animate(q) : u && (0 < (q.width || 0) || k.hasImage) && (k.graphic = g = b.renderer.symbol(n, q.x, q.y, q.width, q.height, p ? m: c).add(d), this.enabledDataSorting && b.hasRendered && (g.attr({
x: k.startXPos
}), l = "animate"));
g && "animate" === l && g[u ? "show": "hide"](u).animate(q);
if (g && !b.styledMode) g[l](this.pointAttribs(k, k.selected && "select"));
g && g.addClass(k.getClassName(), !0)
} else g && (k.graphic = g.destroy())
}
};
a.prototype.markerAttribs = function(a, b) {
var c = this.options,
d = c.marker,
e = a.marker || {},
h = e.symbol || d.symbol,
f = y(e.radius, d && d.radius);
b && (d = d.states[b], b = e.states && e.states[b], f = y(b && b.radius, d && d.radius, f && f + (d && d.radiusPlus || 0)));
a.hasImage = h && 0 === h.indexOf("url");
a.hasImage && (f = 0);
a = O(f) ? {
x: c.crisp ? Math.floor(a.plotX - f) : a.plotX - f,
y: a.plotY - f
}: {};
f && (a.width = a.height = 2 * f);
return a
};
a.prototype.pointAttribs = function(a, b) {
var c = this.options.marker,
d = a && a.options,
e = d && d.marker || {},
h = d && d.color,
f = a && a.color,
g = a && a.zone && a.zone.color,
k = this.color;
a = y(e.lineWidth, c.lineWidth);
d = 1;
k = h || g || f || k;
h = e.fillColor || c.fillColor || k;
f = e.lineColor || c.lineColor || k;
b = b || "normal";
c = c.states[b] || {};
b = e.states && e.states[b] || {};
a = y(b.lineWidth, c.lineWidth, a + y(b.lineWidthPlus, c.lineWidthPlus, 0));
h = b.fillColor || c.fillColor || h;
f = b.lineColor || c.lineColor || f;
d = y(b.opacity, c.opacity, d);
return {
stroke: f,
"stroke-width": a,
fill: h,
opacity: d
}
};
a.prototype.destroy = function(a) {
var b = this,
c = b.chart,
d = /AppleWebKit\/533/.test(C.navigator.userAgent),
e = b.data || [],
h,
f,
g,
l;
w(b, "destroy", {
keepEventsForUpdate: a
});
this.removeEvents(a); (b.axisTypes || []).forEach(function(a) { (l = b[a]) && l.series && (k(l.series, b), l.isDirty = l.forceRedraw = !0)
});
b.legendItem && b.chart.legend.destroyItem(b);
for (f = e.length; f--;)(g = e[f]) && g.destroy && g.destroy();
b.clips && b.clips.forEach(function(a) {
return a.destroy()
});
n.clearTimeout(b.animationTimeout);
Y(b,
function(a, b) {
a instanceof t && !a.survive && (h = d && "group" === b ? "hide": "destroy", a[h]())
});
c.hoverSeries === b && (c.hoverSeries = void 0);
k(c.series, b);
c.orderSeries();
Y(b,
function(c, d) {
a && "hcEvents" === d || delete b[d]
})
};
a.prototype.applyZones = function() {
var a = this,
b = this.chart,
c = b.renderer,
d = this.zones,
e = this.clips || [],
h = this.graph,
f = this.area,
g = Math.max(b.plotWidth, b.plotHeight),
k = this[(this.zoneAxis || "y") + "Axis"],
l = b.inverted,
m,
p,
n,
q,
u,
w,
z,
t,
r = !1;
if (d.length && (h || f) && k && "undefined" !== typeof k.min) {
var C = k.reversed;
var v = k.horiz;
h && !this.showLine && h.hide();
f && f.hide();
var H = k.getExtremes();
d.forEach(function(d, F) {
m = C ? v ? b.plotWidth: 0 : v ? 0 : k.toPixels(H.min) || 0;
m = A(y(p, m), 0, g);
p = A(Math.round(k.toPixels(y(d.value, H.max), !0) || 0), 0, g);
r && (m = p = k.toPixels(H.max));
q = Math.abs(m - p);
u = Math.min(m, p);
w = Math.max(m, p);
k.isXAxis ? (n = {
x: l ? w: u,
y: 0,
width: q,
height: g
},
v || (n.x = b.plotHeight - n.x)) : (n = {
x: 0,
y: l ? w: u,
width: g,
height: q
},
v && (n.y = b.plotWidth - n.y));
l && c.isVML && (n = k.isXAxis ? {
x: 0,
y: C ? u: w,
height: n.width,
width: b.chartWidth
}: {
x: n.y - b.plotLeft - b.spacingBox.x,
y: 0,
width: n.height,
height: b.chartHeight
});
e[F] ? e[F].animate(n) : e[F] = c.clipRect(n);
z = a["zone-area-" + F];
t = a["zone-graph-" + F];
h && t && t.clip(e[F]);
f && z && z.clip(e[F]);
r = d.value > H.max;
a.resetZones && 0 === p && (p = void 0)
});
this.clips = e
} else a.visible && (h && h.show(), f && f.show())
};
a.prototype.plotGroup = function(a, b, c, d, e) {
var f = this[a],
g = !f;
c = {
visibility: c,
zIndex: d || .1
};
"undefined" === typeof this.opacity || this.chart.styledMode || "inactive" === this.state || (c.opacity = this.opacity);
g && (this[a] = f = this.chart.renderer.g().add(e));
f.addClass("highcharts-" + b + " highcharts-series-" + this.index + " highcharts-" + this.type + "-series " + (h(this.colorIndex) ? "highcharts-color-" + this.colorIndex + " ": "") + (this.options.className || "") + (f.hasClass("highcharts-tracker") ? " highcharts-tracker": ""), !0);
f.attr(c)[g ? "attr": "animate"](this.getPlotBox(b));
return f
};
a.prototype.getPlotBox = function(a) {
var b = this.xAxis,
c = this.yAxis,
d = this.chart;
a = d.inverted && !d.polar && b && !1 !== this.invertible && ("markers" === a || "series" === a);
d.inverted && (b = c, c = this.xAxis);
return {
translateX: b ? b.left: d.plotLeft,
translateY: c ? c.top: d.plotTop,
rotation: a ? 90 : 0,
rotationOriginX: a ? (b.len - c.len) / 2 : 0,
rotationOriginY: a ? (b.len + c.len) / 2 : 0,
scaleX: a ? -1 : 1,
scaleY: 1
}
};
a.prototype.removeEvents = function(a) {
a || T(this);
this.eventsToUnbind.length && (this.eventsToUnbind.forEach(function(a) {
a()
}), this.eventsToUnbind.length = 0)
};
a.prototype.render = function() {
var a = this,
b = a.chart,
c = a.options,
d = f(c.animation),
e = a.visible ? "inherit": "hidden",
h = c.zIndex,
g = a.hasRendered,
k = b.seriesGroup;
b = !a.finishedAnimating && b.renderer.isSVG ? d.duration: 0;
w(this, "render");
a.plotGroup("group", "series", e, h, k);
a.markerGroup = a.plotGroup("markerGroup", "markers", e, h, k); ! 1 !== c.clip && a.setClip();
a.animate && b && a.animate(!0);
a.drawGraph && (a.drawGraph(), a.applyZones());
a.visible && a.drawPoints();
a.drawDataLabels && a.drawDataLabels();
a.redrawPoints && a.redrawPoints();
a.drawTracker && !1 !== a.options.enableMouseTracking && a.drawTracker();
a.animate && b && a.animate();
g || (b && d.defer && (b += d.defer), a.animationTimeout = ca(function() {
a.afterAnimate()
},
b || 0));
a.isDirty = !1;
a.hasRendered = !0;
w(a, "afterRender")
};
a.prototype.redraw = function() {
var a = this.isDirty || this.isDirtyData;
this.translate();
this.render();
a && delete this.kdTree
};
a.prototype.searchPoint = function(a, b) {
var c = this.xAxis,
d = this.yAxis,
e = this.chart.inverted;
return this.searchKDTree({
clientX: e ? c.len - a.chartY + c.pos: a.chartX - c.pos,
plotY: e ? d.len - a.chartX + d.pos: a.chartY - d.pos
},
b, a)
};
a.prototype.buildKDTree = function(a) {
function b(a, d, e) {
var h = a && a.length;
if (h) {
var f = c.kdAxisArray[d % e];
a.sort(function(a, b) {
return a[f] - b[f]
});
h = Math.floor(h / 2);
return {
point: a[h],
left: b(a.slice(0, h), d + 1, e),
right: b(a.slice(h + 1), d + 1, e)
}
}
}
this.buildingKdTree = !0;
var c = this,
d = -1 < c.options.findNearestPointBy.indexOf("y") ? 2 : 1;
delete c.kdTree;
ca(function() {
c.kdTree = b(c.getValidPoints(null, !c.directTouch), d, d);
c.buildingKdTree = !1
},
c.options.kdNow || a && "touchstart" === a.type ? 0 : 1)
};
a.prototype.searchKDTree = function(a, b, c) {
function d(a, b, c, l) {
var m = b.point,
p = e.kdAxisArray[c % l],
n = m,
q = h(a[f]) && h(m[f]) ? Math.pow(a[f] - m[f], 2) : null;
var u = h(a[g]) && h(m[g]) ? Math.pow(a[g] - m[g], 2) : null;
u = (q || 0) + (u || 0);
m.dist = h(u) ? Math.sqrt(u) : Number.MAX_VALUE;
m.distX = h(q) ? Math.sqrt(q) : Number.MAX_VALUE;
p = a[p] - m[p];
u = 0 > p ? "left": "right";
q = 0 > p ? "right": "left";
b[u] && (u = d(a, b[u], c + 1, l), n = u[k] < n[k] ? u: m);
b[q] && Math.sqrt(p * p) < n[k] && (a = d(a, b[q], c + 1, l), n = a[k] < n[k] ? a: n);
return n
}
var e = this,
f = this.kdAxisArray[0],
g = this.kdAxisArray[1],
k = b ? "distX": "dist";
b = -1 < e.options.findNearestPointBy.indexOf("y") ? 2 : 1;
this.kdTree || this.buildingKdTree || this.buildKDTree(c);
if (this.kdTree) return d(a, this.kdTree, b, b)
};
a.prototype.pointPlacementToXValue = function() {
var a = this.options,
b = a.pointRange,
c = this.xAxis;
a = a.pointPlacement;
"between" === a && (a = c.reversed ? -.5 : .5);
return O(a) ? a * (b || c.pointRange) : 0
};
a.prototype.isPointInside = function(a) {
var b = this.chart,
c = this.xAxis,
d = this.yAxis;
return "undefined" !== typeof a.plotY && "undefined" !== typeof a.plotX && 0 <= a.plotY && a.plotY <= (d ? d.len: b.plotHeight) && 0 <= a.plotX && a.plotX <= (c ? c.len: b.plotWidth)
};
a.prototype.drawTracker = function() {
var a = this,
b = a.options,
c = b.trackByArea,
d = [].concat(c ? a.areaPath: a.graphPath),
h = a.chart,
f = h.pointer,
g = h.renderer,
k = h.options.tooltip.snap,
l = a.tracker,
m = function(b) {
if (h.hoverSeries !== a) a.onMouseOver()
},
p = "rgba(192,192,192," + (u ? .0001 : .002) + ")";
l ? l.attr({
d: d
}) : a.graph && (a.tracker = g.path(d).attr({
visibility: a.visible ? "inherit": "hidden",
zIndex: 2
}).addClass(c ? "highcharts-tracker-area": "highcharts-tracker-line").add(a.group), h.styledMode || a.tracker.attr({
"stroke-linecap": "round",
"stroke-linejoin": "round",
stroke: p,
fill: c ? p: "none",
"stroke-width": a.graph.strokeWidth() + (c ? 0 : 2 * k)
}), [a.tracker, a.markerGroup, a.dataLabelsGroup].forEach(function(a) {
if (a && (a.addClass("highcharts-tracker").on("mouseover", m).on("mouseout",
function(a) {
f.onTrackerMouseOut(a)
}), b.cursor && !h.styledMode && a.css({
cursor: b.cursor
}), e)) a.on("touchstart", m)
}));
w(this, "afterDrawTracker")
};
a.prototype.addPoint = function(a, b, c, d, e) {
var h = this.options,
f = this.data,
g = this.chart,
k = this.xAxis;
k = k && k.hasNames && k.names;
var l = h.data,
m = this.xData,
p;
b = y(b, !0);
var n = {
series: this
};
this.pointClass.prototype.applyOptions.apply(n, [a]);
var u = n.x;
var q = m.length;
if (this.requireSorting && u < m[q - 1]) for (p = !0; q && m[q - 1] > u;) q--;
this.updateParallelArrays(n, "splice", q, 0, 0);
this.updateParallelArrays(n, q);
k && n.name && (k[u] = n.name);
l.splice(q, 0, a);
if (p || this.processedData) this.data.splice(q, 0, null),
this.processData();
"point" === h.legendType && this.generatePoints();
c && (f[0] && f[0].remove ? f[0].remove(!1) : (f.shift(), this.updateParallelArrays(n, "shift"), l.shift())); ! 1 !== e && w(this, "addPoint", {
point: n
});
this.isDirtyData = this.isDirty = !0;
b && g.redraw(d)
};
a.prototype.removePoint = function(a, b, d) {
var e = this,
h = e.data,
f = h[a],
g = e.points,
k = e.chart,
l = function() {
g && g.length === h.length && g.splice(a, 1);
h.splice(a, 1);
e.options.data.splice(a, 1);
e.updateParallelArrays(f || {
series: e
},
"splice", a, 1);
f && f.destroy();
e.isDirty = !0;
e.isDirtyData = !0;
b && k.redraw()
};
c(d, k);
b = y(b, !0);
f ? f.firePointEvent("remove", null, l) : l()
};
a.prototype.remove = function(a, b, c, d) {
function e() {
h.destroy(d);
f.isDirtyLegend = f.isDirtyBox = !0;
f.linkSeries();
y(a, !0) && f.redraw(b)
}
var h = this,
f = h.chart; ! 1 !== c ? w(h, "remove", null, e) : e()
};
a.prototype.update = function(a, c) {
a = d(a, this.userOptions);
w(this, "update", {
options: a
});
var e = this,
h = e.chart,
f = e.userOptions,
g = e.initialType || e.type,
k = h.options.plotOptions,
l = v[g].prototype,
m = e.finishedAnimating && {
animation: !1
},
n = {},
q = ["eventOptions", "navigatorSeries", "baseSeries"],
u = a.type || f.type || h.options.chart.type,
z = !(this.hasDerivedData || u && u !== this.type || "undefined" !== typeof a.pointStart || "undefined" !== typeof a.pointInterval || "undefined" !== typeof a.relativeXValue || a.joinBy || a.mapData || e.hasOptionChanged("dataGrouping") || e.hasOptionChanged("pointStart") || e.hasOptionChanged("pointInterval") || e.hasOptionChanged("pointIntervalUnit") || e.hasOptionChanged("keys"));
u = u || g;
z && (q.push("data", "isDirtyData", "points", "processedData", "processedXData", "processedYData", "xIncrement", "cropped", "_hasPointMarkers", "_hasPointLabels", "clips", "nodes", "layout", "level", "mapMap", "mapData", "minY", "maxY", "minX", "maxX"), !1 !== a.visible && q.push("area", "graph"), e.parallelArrays.forEach(function(a) {
q.push(a + "Data")
}), a.data && (a.dataSorting && p(e.options.dataSorting, a.dataSorting), this.setData(a.data, !1)));
a = S(f, m, {
index: "undefined" === typeof f.index ? e.index: f.index,
pointStart: y(k && k.series && k.series.pointStart, f.pointStart, e.xData[0])
},
!z && {
data: e.options.data
},
a);
z && a.data && (a.data = e.options.data);
q = ["group", "markerGroup", "dataLabelsGroup", "transformGroup", "shadowGroup"].concat(q);
q.forEach(function(a) {
q[a] = e[a];
delete e[a]
});
k = !1;
if (v[u]) {
if (k = u !== e.type, e.remove(!1, !1, !1, !0), k) if (Object.setPrototypeOf) Object.setPrototypeOf(e, v[u].prototype);
else {
m = Object.hasOwnProperty.call(e, "hcEvents") && e.hcEvents;
for (t in l) e[t] = void 0;
p(e, v[u].prototype);
m ? e.hcEvents = m: delete e.hcEvents
}
} else b(17, !0, h, {
missingModuleFor: u
});
q.forEach(function(a) {
e[a] = q[a]
});
e.init(h, a);
if (z && this.points) {
a = e.options;
if (!1 === a.visible) n.graphic = 1,
n.dataLabel = 1;
else if (!e._hasPointLabels) {
l = a.marker;
var t = a.dataLabels; ! l || !1 !== l.enabled && (f.marker && f.marker.symbol) === l.symbol || (n.graphic = 1);
t && !1 === t.enabled && (n.dataLabel = 1)
}
f = 0;
for (l = this.points; f < l.length; f++)(t = l[f]) && t.series && (t.resolveColor(), Object.keys(n).length && t.destroyElements(n), !1 === a.showInLegend && t.legendItem && h.legend.destroyItem(t))
}
e.initialType = g;
h.linkSeries();
k && e.linkedSeries.length && (e.isDirtyData = !0);
w(this, "afterUpdate");
y(c, !0) && h.redraw(z ? void 0 : !1)
};
a.prototype.setName = function(a) {
this.name = this.options.name = this.userOptions.name = a;
this.chart.isDirtyLegend = !0
};
a.prototype.hasOptionChanged = function(a) {
var b = this.options[a],
c = this.chart.options.plotOptions,
d = this.userOptions[a];
return d ? b !== d: b !== y(c && c[this.type] && c[this.type][a], c && c.series && c.series[a], b)
};
a.prototype.onMouseOver = function() {
var a = this.chart,
b = a.hoverSeries;
a.pointer.setHoverChartIndex();
if (b && b !== this) b.onMouseOut();
this.options.events.mouseOver && w(this, "mouseOver");
this.setState("hover");
a.hoverSeries = this
};
a.prototype.onMouseOut = function() {
var a = this.options,
b = this.chart,
c = b.tooltip,
d = b.hoverPoint;
b.hoverSeries = null;
if (d) d.onMouseOut();
this && a.events.mouseOut && w(this, "mouseOut"); ! c || this.stickyTracking || c.shared && !this.noSharedTooltip || c.hide();
b.series.forEach(function(a) {
a.setState("", !0)
})
};
a.prototype.setState = function(a, b) {
var c = this,
d = c.options,
e = c.graph,
h = d.inactiveOtherPoints,
f = d.states,
g = y(f[a || "normal"] && f[a || "normal"].animation, c.chart.options.chart.animation),
k = d.lineWidth,
l = 0,
m = d.opacity;
a = a || "";
if (c.state !== a && ([c.group, c.markerGroup, c.dataLabelsGroup].forEach(function(b) {
b && (c.state && b.removeClass("highcharts-series-" + c.state), a && b.addClass("highcharts-series-" + a))
}), c.state = a, !c.chart.styledMode)) {
if (f[a] && !1 === f[a].enabled) return;
a && (k = f[a].lineWidth || k + (f[a].lineWidthPlus || 0), m = y(f[a].opacity, m));
if (e && !e.dashstyle && O(k)) for (d = {
"stroke-width": k
},
e.animate(d, g); c["zone-graph-" + l];) c["zone-graph-" + l].animate(d, g),
l += 1;
h || [c.group, c.markerGroup, c.dataLabelsGroup, c.labelBySeries].forEach(function(a) {
a && a.animate({
opacity: m
},
g)
})
}
b && h && c.points && c.setAllPointsToState(a || void 0)
};
a.prototype.setAllPointsToState = function(a) {
this.points.forEach(function(b) {
b.setState && b.setState(a)
})
};
a.prototype.setVisible = function(a, b) {
var c = this,
d = c.chart,
e = d.options.chart.ignoreHiddenSeries,
h = c.visible,
f = (c.visible = a = c.options.visible = c.userOptions.visible = "undefined" === typeof a ? !h: a) ? "show": "hide"; ["group", "dataLabelsGroup", "markerGroup", "tracker", "tt"].forEach(function(a) {
if (c[a]) c[a][f]()
});
if (d.hoverSeries === c || (d.hoverPoint && d.hoverPoint.series) === c) c.onMouseOut();
c.legendItem && d.legend.colorizeItem(c, a);
c.isDirty = !0;
c.options.stacking && d.series.forEach(function(a) {
a.options.stacking && a.visible && (a.isDirty = !0)
});
c.linkedSeries.forEach(function(b) {
b.setVisible(a, !1)
});
e && (d.isDirtyBox = !0);
w(c, f); ! 1 !== b && d.redraw()
};
a.prototype.show = function() {
this.setVisible(!0)
};
a.prototype.hide = function() {
this.setVisible(!1)
};
a.prototype.select = function(a) {
this.selected = a = this.options.selected = "undefined" === typeof a ? !this.selected: a;
this.checkbox && (this.checkbox.checked = a);
w(this, a ? "select": "unselect")
};
a.prototype.shouldShowTooltip = function(a, b, c) {
void 0 === c && (c = {});
c.series = this;
c.visiblePlotOnly = !0;
return this.chart.isInsidePlot(a, b, c)
};
a.defaultOptions = G;
a.types = r.seriesTypes;
a.registerType = r.registerSeriesType;
return a
} ();
p(a.prototype, {
axisTypes: ["xAxis", "yAxis"],
coll: "series",
colorCounter: 0,
cropShoulder: 1,
directTouch: !1,
drawLegendSymbol: D.drawLineMarker,
isCartesian: !0,
kdAxisArray: ["clientX", "plotY"],
parallelArrays: ["x", "y"],
pointClass: B,
requireSorting: !0,
sorted: !0
});
r.series = a;
"";
"";
return a
});
K(g, "Extensions/ScrollablePlotArea.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Axis/Axis.js"], g["Core/Chart/Chart.js"], g["Core/Series/Series.js"], g["Core/Renderer/RendererRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x, E, D, B) {
var v = a.stop,
r = B.addEvent,
t = B.createElement,
n = B.defined,
f = B.merge,
c = B.pick;
r(x, "afterSetChartSize",
function(a) {
var c = this.options.chart.scrollablePlotArea,
e = c && c.minWidth;
c = c && c.minHeight;
if (!this.renderer.forExport) {
if (e) {
if (this.scrollablePixelsX = e = Math.max(0, e - this.chartWidth)) {
this.scrollablePlotBox = this.renderer.scrollablePlotBox = f(this.plotBox);
this.plotBox.width = this.plotWidth += e;
this.inverted ? this.clipBox.height += e: this.clipBox.width += e;
var l = {
1 : {
name: "right",
value: e
}
}
}
} else c && (this.scrollablePixelsY = e = Math.max(0, c - this.chartHeight), n(e) && (this.scrollablePlotBox = this.renderer.scrollablePlotBox = f(this.plotBox), this.plotBox.height = this.plotHeight += e, this.inverted ? this.clipBox.width += e: this.clipBox.height += e, l = {
2 : {
name: "bottom",
value: e
}
}));
l && !a.skipAxes && this.axes.forEach(function(a) {
l[a.side] ? a.getPlotLinePath = function() {
var c = l[a.side].name,
e = this[c];
this[c] = e - l[a.side].value;
var f = g.prototype.getPlotLinePath.apply(this, arguments);
this[c] = e;
return f
}: (a.setAxisSize(), a.setAxisTranslation())
})
}
});
r(x, "render",
function() {
this.scrollablePixelsX || this.scrollablePixelsY ? (this.setUpScrolling && this.setUpScrolling(), this.applyFixed()) : this.fixedDiv && this.applyFixed()
});
x.prototype.setUpScrolling = function() {
var a = this,
c = {
WebkitOverflowScrolling: "touch",
overflowX: "hidden",
overflowY: "hidden"
};
this.scrollablePixelsX && (c.overflowX = "auto");
this.scrollablePixelsY && (c.overflowY = "auto");
this.scrollingParent = t("div", {
className: "highcharts-scrolling-parent"
},
{
position: "relative"
},
this.renderTo);
this.scrollingContainer = t("div", {
className: "highcharts-scrolling"
},
c, this.scrollingParent);
var e;
r(this.scrollingContainer, "scroll",
function() {
a.pointer && (delete a.pointer.chartPosition, a.hoverPoint && (e = a.hoverPoint), a.pointer.runPointActions(void 0, e, !0))
});
this.innerContainer = t("div", {
className: "highcharts-inner-container"
},
null, this.scrollingContainer);
this.innerContainer.appendChild(this.container);
this.setUpScrolling = null
};
x.prototype.moveFixedElements = function() {
var a = this.container,
c = this.fixedRenderer,
e = ".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 && e.push("" + f + ":not(.highcharts-radial-axis)", "" + f + "-labels:not(.highcharts-radial-axis-labels)");
e.forEach(function(e) { [].forEach.call(a.querySelectorAll(e),
function(a) { (a.namespaceURI === c.SVG_NS ? c.box: c.box.parentNode).appendChild(a);
a.style.pointerEvents = "auto"
})
})
};
x.prototype.applyFixed = function() {
var a = !this.fixedDiv,
f = this.options.chart,
e = f.scrollablePlotArea,
g = D.getRendererType();
a ? (this.fixedDiv = t("div", {
className: "highcharts-fixed"
},
{
position: "absolute",
overflow: "hidden",
pointerEvents: "none",
zIndex: (f.style && f.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 = f = new g(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style), this.scrollableMask = f.path().attr({
fill: this.options.chart.backgroundColor || "#fff",
"fill-opacity": c(e.opacity, .85),
zIndex: -1
}).addClass("highcharts-scrollable-mask").add(), r(this, "afterShowResetZoom", this.moveFixedElements), r(this, "afterApplyDrilldown", this.moveFixedElements), r(this, "afterLayOutTitles", this.moveFixedElements)) : this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);
if (this.scrollableDirty || a) this.scrollableDirty = !1,
this.moveFixedElements();
f = this.chartWidth + (this.scrollablePixelsX || 0);
g = this.chartHeight + (this.scrollablePixelsY || 0);
v(this.container);
this.container.style.width = f + "px";
this.container.style.height = g + "px";
this.renderer.boxWrapper.attr({
width: f,
height: g,
viewBox: [0, 0, f, g].join(" ")
});
this.chartBackground.attr({
width: f,
height: g
});
this.scrollingContainer.style.height = this.chartHeight + "px";
a && (e.scrollPositionX && (this.scrollingContainer.scrollLeft = this.scrollablePixelsX * e.scrollPositionX), e.scrollPositionY && (this.scrollingContainer.scrollTop = this.scrollablePixelsY * e.scrollPositionY));
g = this.axisOffset;
a = this.plotTop - g[0] - 1;
e = this.plotLeft - g[3] - 1;
f = this.plotTop + this.plotHeight + g[2] + 1;
g = this.plotLeft + this.plotWidth + g[1] + 1;
var n = this.plotLeft + this.plotWidth - (this.scrollablePixelsX || 0),
x = this.plotTop + this.plotHeight - (this.scrollablePixelsY || 0);
a = this.scrollablePixelsX ? [["M", 0, a], ["L", this.plotLeft - 1, a], ["L", this.plotLeft - 1, f], ["L", 0, f], ["Z"], ["M", n, a], ["L", this.chartWidth, a], ["L", this.chartWidth, f], ["L", n, f], ["Z"]] : this.scrollablePixelsY ? [["M", e, 0], ["L", e, this.plotTop - 1], ["L", g, this.plotTop - 1], ["L", g, 0], ["Z"], ["M", e, x], ["L", e, this.chartHeight], ["L", g, this.chartHeight], ["L", g, x], ["Z"]] : [["M", 0, 0]];
"adjustHeight" !== this.redrawTrigger && this.scrollableMask.attr({
d: a
})
};
r(g, "afterInit",
function() {
this.chart.scrollableDirty = !0
});
r(E, "show",
function() {
this.chart.scrollableDirty = !0
});
""
});
K(g, "Core/Axis/Stacking/StackItem.js", [g["Core/FormatUtilities.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = a.format,
D = g.series,
B = x.defined,
G = x.destroyObjectProperties,
r = x.isNumber,
t = x.pick;
a = function() {
function a(a, c, g, m, e) {
var f = a.chart.inverted;
this.axis = a;
this.isNegative = g;
this.options = c = c || {};
this.x = m;
this.cumulative = this.total = null;
this.points = {};
this.hasValidPoints = !1;
this.stack = e;
this.rightCliff = this.leftCliff = 0;
this.alignOptions = {
align: c.align || (f ? g ? "left": "right": "center"),
verticalAlign: c.verticalAlign || (f ? "middle": g ? "bottom": "top"),
y: c.y,
x: c.x
};
this.textAlign = c.textAlign || (f ? g ? "right": "left": "center")
}
a.prototype.destroy = function() {
G(this, this.axis)
};
a.prototype.render = function(a) {
var c = this.axis.chart,
f = this.options,
g = f.format;
g = g ? v(g, this, c) : f.formatter.call(this);
this.label ? this.label.attr({
text: g,
visibility: "hidden"
}) : (this.label = c.renderer.label(g, null, null, f.shape, null, null, f.useHTML, !1, "stack-labels"), g = {
r: f.borderRadius || 0,
text: g,
rotation: f.rotation,
padding: t(f.padding, 5),
visibility: "hidden"
},
c.styledMode || (g.fill = f.backgroundColor, g.stroke = f.borderColor, g["stroke-width"] = f.borderWidth, this.label.css(f.style)), this.label.attr(g), this.label.added || this.label.add(a));
this.label.labelrank = c.plotSizeY
};
a.prototype.setOffset = function(a, c, g, m, e) {
var f = this.axis,
l = f.chart;
m = f.translate(f.stacking.usePercentage ? 100 : m ? m: this.total, 0, 0, 0, 1);
g = f.translate(g ? g: 0);
a = t(e, l.xAxis[0].translate(this.x)) + a;
f = B(m) && this.getStackBox(l, this, a, m, c, Math.abs(m - g), f);
c = this.label;
g = this.isNegative;
var n = this.textAlign;
c && f && (a = c.getBBox(), e = c.padding, m = "justify" === t(this.options.overflow, "justify"), n = "left" === n ? l.inverted ? -e: e: "right" === n ? a.width: l.inverted && "center" === n ? a.width / 2 : l.inverted ? g ? a.width + e: -e: a.width / 2, g = l.inverted ? a.height / 2 : g ? -e: a.height, this.alignOptions.x = t(this.options.x, 0), this.alignOptions.y = t(this.options.y, 0), f.x -= n, f.y -= g, c.align(this.alignOptions, null, f), l.isInsidePlot(c.alignAttr.x + n - this.alignOptions.x, c.alignAttr.y + g - this.alignOptions.y) ? c.show() : (c.hide(), m = !1), m && D.prototype.justifyDataLabel.call(this.axis, c, this.alignOptions, c.alignAttr, a, f), c.attr({
x: c.alignAttr.x,
y: c.alignAttr.y
}), t(!m && this.options.crop, !0) && ((l = r(c.x) && r(c.y) && l.isInsidePlot(c.x - e + c.width, c.y) && l.isInsidePlot(c.x + e, c.y)) || c.hide()))
};
a.prototype.getStackBox = function(a, c, g, m, e, n, t) {
var f = c.axis.reversed,
l = a.inverted,
u = t.height + t.pos - (l ? a.plotLeft: a.plotTop);
c = c.isNegative && !f || !c.isNegative && f;
return {
x: l ? c ? m - t.right: m - n + t.pos - a.plotLeft: g + a.xAxis[0].transB - a.plotLeft,
y: l ? t.height - g - e: c ? u - m - n: u - m,
width: l ? n: e,
height: l ? e: n
}
};
return a
} ();
"";
return a
});
K(g, "Core/Axis/Stacking/StackingAxis.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Axis/Axis.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Axis/Stacking/StackItem.js"], g["Core/Utilities.js"]],
function(a, g, x, E, D) {
function v() {
var a = this,
b = a.inverted;
a.yAxis.forEach(function(a) {
a.stacking && a.stacking.stacks && a.hasVisibleSeries && (a.stacking.oldStacks = a.stacking.stacks)
});
a.series.forEach(function(c) {
var d = c.xAxis && c.xAxis.options || {}; ! c.options.stacking || !0 !== c.visible && !1 !== a.options.chart.ignoreHiddenSeries || (c.stackKey = [c.type, h(c.options.stack, ""), b ? d.top: d.left, b ? d.height: d.width].join())
})
}
function G() {
var a = this.stacking;
if (a) {
var b = a.stacks;
q(b,
function(a, c) {
I(a);
b[c] = null
});
a && a.stackTotalGroup && a.stackTotalGroup.destroy()
}
}
function r() {
this.stacking || (this.stacking = new k(this))
}
function t(a, b, c, d) { ! J(a) || a.x !== b || d && a.stackKey !== d ? a = {
x: b,
index: 0,
key: d,
stackKey: d
}: a.index++;
a.key = [c, b, a.index].join();
return a
}
function n() {
var a = this,
b = a.stackKey,
c = a.yAxis.stacking.stacks,
d = a.processedXData,
e = a[a.options.stacking + "Stacker"],
h;
e && [b, "-" + b].forEach(function(b) {
for (var f = d.length,
g, k; f--;) g = d[f],
h = a.getStackIndicator(h, g, a.index, b),
(k = (g = c[b] && c[b][g]) && g.points[h.key]) && e.call(a, k, g, f)
})
}
function f(a, b, c) {
b = b.total ? 100 / b.total: 0;
a[0] = C(a[0] * b);
a[1] = C(a[1] * b);
this.stackedYData[c] = a[1]
}
function c() {
var a = this.yAxis.stacking;
this.options.centerInCategory && (this.is("column") || this.is("columnrange")) && !this.options.stacking && 1 < this.chart.series.length ? e.setStackedPoints.call(this, "group") : a && q(a.stacks,
function(b, c) {
"group" === c.slice( - 5) && (q(b,
function(a) {
return a.destroy()
}), delete a.stacks[c])
})
}
function l(a) {
var b = this.chart,
c = a || this.options.stacking;
if (c && (!0 === this.visible || !1 === b.options.chart.ignoreHiddenSeries)) {
var d = this.processedXData,
e = this.processedYData,
f = [],
g = e.length,
k = this.options,
l = k.threshold,
m = h(k.startFromThreshold && l, 0);
k = k.stack;
a = a ? "" + this.type + ",".concat(c) : this.stackKey;
var n = "-" + a,
p = this.negStacks;
b = "group" === c ? b.yAxis[0] : this.yAxis;
var q = b.stacking.stacks,
u = b.stacking.oldStacks,
t, r;
b.stacking.stacksTouched += 1;
for (r = 0; r < g; r++) {
var v = d[r];
var x = e[r];
var I = this.getStackIndicator(I, v, this.index);
var D = I.key;
var B = (t = p && x < (m ? 0 : l)) ? n: a;
q[B] || (q[B] = {});
q[B][v] || (u[B] && u[B][v] ? (q[B][v] = u[B][v], q[B][v].total = null) : q[B][v] = new E(b, b.options.stackLabels, !!t, v, k));
B = q[B][v];
null !== x ? (B.points[D] = B.points[this.index] = [h(B.cumulative, m)], J(B.cumulative) || (B.base = D), B.touched = b.stacking.stacksTouched, 0 < I.index && !1 === this.singleStacks && (B.points[D][0] = B.points[this.index + "," + v + ",0"][0])) : B.points[D] = B.points[this.index] = null;
"percent" === c ? (t = t ? a: n, p && q[t] && q[t][v] ? (t = q[t][v], B.total = t.total = Math.max(t.total, B.total) + Math.abs(x) || 0) : B.total = C(B.total + (Math.abs(x) || 0))) : "group" === c ? (A(x) && (x = x[0]), null !== x && (B.total = (B.total || 0) + 1)) : B.total = C(B.total + (x || 0));
B.cumulative = "group" === c ? (B.total || 1) - 1 : h(B.cumulative, m) + (x || 0);
null !== x && (B.points[D].push(B.cumulative), f[r] = B.cumulative, B.hasValidPoints = !0)
}
"percent" === c && (b.stacking.usePercentage = !0);
"group" !== c && (this.stackedYData = f);
b.stacking.oldStacks = {}
}
}
var m = a.getDeferredAnimation,
e = x.series.prototype,
u = D.addEvent,
C = D.correctFloat,
J = D.defined,
I = D.destroyObjectProperties,
L = D.fireEvent,
A = D.isArray,
d = D.isNumber,
q = D.objectEach,
h = D.pick,
k = function() {
function a(a) {
this.oldStacks = {};
this.stacks = {};
this.stacksTouched = 0;
this.axis = a
}
a.prototype.buildStacks = function() {
var a = this.axis,
b = a.series,
c = a.options.reversedStacks,
d = b.length,
e;
if (!a.isXAxis) {
this.usePercentage = !1;
for (e = d; e--;) {
var h = b[c ? e: d - e - 1];
h.setStackedPoints();
h.setGroupedPoints()
}
for (e = 0; e < d; e++) b[e].modifyStacks();
L(a, "afterBuildStacks")
}
};
a.prototype.cleanStacks = function() {
if (!this.axis.isXAxis) {
if (this.oldStacks) var a = this.stacks = this.oldStacks;
q(a,
function(a) {
q(a,
function(a) {
a.cumulative = a.total
})
})
}
};
a.prototype.resetStacks = function() {
var a = this,
b = a.stacks;
a.axis.isXAxis || q(b,
function(b) {
q(b,
function(c, e) {
d(c.touched) && c.touched < a.stacksTouched ? (c.destroy(), delete b[e]) : (c.total = null, c.cumulative = null)
})
})
};
a.prototype.renderStackTotals = function() {
var a = this.axis,
b = a.chart,
c = b.renderer,
d = this.stacks;
a = m(b, a.options.stackLabels && a.options.stackLabels.animation || !1);
var e = this.stackTotalGroup = this.stackTotalGroup || c.g("stack-labels").attr({
zIndex: 6,
opacity: 0
}).add();
e.translate(b.plotLeft, b.plotTop);
q(d,
function(a) {
q(a,
function(a) {
a.render(e)
})
});
e.animate({
opacity: 1
},
a)
};
return a
} (),
b; (function(a) {
var b = [];
a.compose = function(a, d, e) { - 1 === b.indexOf(a) && (b.push(a), u(a, "init", r), u(a, "destroy", G)); - 1 === b.indexOf(d) && (b.push(d), d.prototype.getStacks = v); - 1 === b.indexOf(e) && (b.push(e), a = e.prototype, a.getStackIndicator = t, a.modifyStacks = n, a.percentStacker = f, a.setGroupedPoints = c, a.setStackedPoints = l)
}
})(b || (b = {}));
return b
});
K(g, "Series/Line/LineSeries.js", [g["Core/Series/Series.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = this && this.__extends ||
function() {
var a = function(g, t) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(a, f) {
a.__proto__ = f
} ||
function(a, f) {
for (var c in f) f.hasOwnProperty(c) && (a[c] = f[c])
};
return a(g, t)
};
return function(g, t) {
function n() {
this.constructor = g
}
a(g, t);
g.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
}
} (),
D = x.defined,
B = x.merge;
x = function(g) {
function r() {
var a = null !== g && g.apply(this, arguments) || this;
a.data = void 0;
a.options = void 0;
a.points = void 0;
return a
}
v(r, g);
r.prototype.drawGraph = function() {
var a = this,
g = this.options,
f = (this.gappedPath || this.getGraphPath).call(this),
c = this.chart.styledMode,
l = [["graph", "highcharts-graph"]];
c || l[0].push(g.lineColor || this.color || "#cccccc", g.dashStyle);
l = a.getZonesGraphs(l);
l.forEach(function(l, e) {
var m = l[0],
n = a[m],
t = n ? "animate": "attr";
n ? (n.endX = a.preventGraphAnimation ? null: f.xMap, n.animate({
d: f
})) : f.length && (a[m] = n = a.chart.renderer.path(f).addClass(l[1]).attr({
zIndex: 1
}).add(a.group));
n && !c && (m = {
stroke: l[2],
"stroke-width": g.lineWidth || 0,
fill: a.fillGraph && a.color || "none"
},
l[3] ? m.dashstyle = l[3] : "square" !== g.linecap && (m["stroke-linecap"] = m["stroke-linejoin"] = "round"), n[t](m).shadow(2 > e && g.shadow));
n && (n.startX = f.xMap, n.isArea = f.isArea)
})
};
r.prototype.getGraphPath = function(a, g, f) {
var c = this,
l = c.options,
m = [],
e = [],
n,
t = l.step;
a = a || c.points;
var r = a.reversed;
r && a.reverse(); (t = {
right: 1,
center: 2
} [t] || t && 3) && r && (t = 4 - t);
a = this.getValidPoints(a, !1, !(l.connectNulls && !g && !f));
a.forEach(function(u, r) {
var A = u.plotX,
d = u.plotY,
q = a[r - 1]; (u.leftCliff || q && q.rightCliff) && !f && (n = !0);
u.isNull && !D(g) && 0 < r ? n = !l.connectNulls: u.isNull && !g ? n = !0 : (0 === r || n ? r = [["M", u.plotX, u.plotY]] : c.getPointSpline ? r = [c.getPointSpline(a, u, r)] : t ? (r = 1 === t ? [["L", q.plotX, d]] : 2 === t ? [["L", (q.plotX + A) / 2, q.plotY], ["L", (q.plotX + A) / 2, d]] : [["L", A, q.plotY]], r.push(["L", A, d])) : r = [["L", A, d]], e.push(u.x), t && (e.push(u.x), 2 === t && e.push(u.x)), m.push.apply(m, r), n = !1)
});
m.xMap = e;
return c.graphPath = m
};
r.prototype.getZonesGraphs = function(a) {
this.zones.forEach(function(g, f) {
f = ["zone-graph-" + f, "highcharts-graph highcharts-zone-graph-" + f + " " + (g.className || "")];
this.chart.styledMode || f.push(g.color || this.color, g.dashStyle || this.options.dashStyle);
a.push(f)
},
this);
return a
};
r.defaultOptions = B(a.defaultOptions, {});
return r
} (a);
g.registerSeriesType("line", x);
"";
return x
});
K(g, "Series/Area/AreaSeries.js", [g["Core/Color/Color.js"], g["Core/Legend/LegendSymbol.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x, E) {
var v = this && this.__extends ||
function() {
var a = function(c, f) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(a, c) {
a.__proto__ = c
} ||
function(a, c) {
for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e])
};
return a(c, f)
};
return function(c, f) {
function g() {
this.constructor = c
}
a(c, f);
c.prototype = null === f ? Object.create(f) : (g.prototype = f.prototype, new g)
}
} (),
B = a.parse,
G = x.seriesTypes.line;
a = E.extend;
var r = E.merge,
t = E.objectEach,
n = E.pick;
E = function(a) {
function c() {
var c = null !== a && a.apply(this, arguments) || this;
c.data = void 0;
c.options = void 0;
c.points = void 0;
return c
}
v(c, a);
c.prototype.drawGraph = function() {
this.areaPath = [];
a.prototype.drawGraph.apply(this);
var c = this,
f = this.areaPath,
e = this.options,
g = [["area", "highcharts-area", this.color, e.fillColor]];
this.zones.forEach(function(a, f) {
g.push(["zone-area-" + f, "highcharts-area highcharts-zone-area-" + f + " " + a.className, a.color || c.color, a.fillColor || e.fillColor])
});
g.forEach(function(a) {
var g = a[0],
l = {},
m = c[g],
u = m ? "animate": "attr";
m ? (m.endX = c.preventGraphAnimation ? null: f.xMap, m.animate({
d: f
})) : (l.zIndex = 0, m = c[g] = c.chart.renderer.path(f).addClass(a[1]).add(c.group), m.isArea = !0);
c.chart.styledMode || (l.fill = n(a[3], B(a[2]).setOpacity(n(e.fillOpacity, .75)).get()));
m[u](l);
m.startX = f.xMap;
m.shiftUnit = e.step ? 2 : 1
})
};
c.prototype.getGraphPath = function(a) {
var c = G.prototype.getGraphPath,
e = this.options,
f = e.stacking,
g = this.yAxis,
l = [],
t = [],
r = this.index,
A = g.stacking.stacks[this.stackKey],
d = e.threshold,
q = Math.round(g.getThreshold(e.threshold));
e = n(e.connectNulls, "percent" === f);
var h = function(b, c, e) {
var h = a[b];
b = f && A[h.x].points[r];
var k = h[e + "Null"] || 0;
e = h[e + "Cliff"] || 0;
h = !0;
if (e || k) {
var m = (k ? b[0] : b[1]) + e;
var n = b[0] + e;
h = !!k
} else ! f && a[c] && a[c].isNull && (m = n = d);
"undefined" !== typeof m && (t.push({
plotX: z,
plotY: null === m ? q: g.getThreshold(m),
isNull: h,
isCliff: !0
}), l.push({
plotX: z,
plotY: null === n ? q: g.getThreshold(n),
doCurve: !1
}))
};
a = a || this.points;
f && (a = this.getStackPoints(a));
for (var k = 0,
b = a.length; k < b; ++k) {
f || (a[k].leftCliff = a[k].rightCliff = a[k].leftNull = a[k].rightNull = void 0);
var p = a[k].isNull;
var z = n(a[k].rectPlotX, a[k].plotX);
var w = f ? n(a[k].yBottom, q) : q;
if (!p || e) e || h(k, k - 1, "left"),
p && !f && e || (t.push(a[k]), l.push({
x: k,
plotX: z,
plotY: w
})),
e || h(k, k + 1, "right")
}
h = c.call(this, t, !0, !0);
l.reversed = !0;
p = c.call(this, l, !0, !0); (w = p[0]) && "M" === w[0] && (p[0] = ["L", w[1], w[2]]);
p = h.concat(p);
p.length && p.push(["Z"]);
c = c.call(this, t, !1, e);
p.xMap = h.xMap;
this.areaPath = p;
return c
};
c.prototype.getStackPoints = function(a) {
var c = this,
e = [],
f = [],
g = this.xAxis,
l = this.yAxis,
r = l.stacking.stacks[this.stackKey],
v = {},
A = l.series,
d = A.length,
q = l.options.reversedStacks ? 1 : -1,
h = A.indexOf(c);
a = a || this.points;
if (this.options.stacking) {
for (var k = 0; k < a.length; k++) a[k].leftNull = a[k].rightNull = void 0,
v[a[k].x] = a[k];
t(r,
function(a, b) {
null !== a.total && f.push(b)
});
f.sort(function(a, b) {
return a - b
});
var b = A.map(function(a) {
return a.visible
});
f.forEach(function(a, k) {
var m = 0,
p, u;
if (v[a] && !v[a].isNull) e.push(v[a]),
[ - 1, 1].forEach(function(e) {
var g = 1 === e ? "rightNull": "leftNull",
l = r[f[k + e]],
m = 0;
if (l) for (var n = h; 0 <= n && n < d;) {
var t = A[n].index;
p = l.points[t];
p || (t === c.index ? v[a][g] = !0 : b[n] && (u = r[a].points[t]) && (m -= u[1] - u[0]));
n += q
}
v[a][1 === e ? "rightCliff": "leftCliff"] = m
});
else {
for (var t = h; 0 <= t && t < d;) {
if (p = r[a].points[A[t].index]) {
m = p[1];
break
}
t += q
}
m = n(m, 0);
m = l.translate(m, 0, 1, 0, 1);
e.push({
isNull: !0,
plotX: g.translate(a, 0, 0, 0, 1),
x: a,
plotY: m,
yBottom: m
})
}
})
}
return e
};
c.defaultOptions = r(G.defaultOptions, {
threshold: 0
});
return c
} (G);
a(E.prototype, {
singleStacks: !1,
drawLegendSymbol: g.drawRectangle
});
x.registerSeriesType("area", E);
"";
return E
});
K(g, "Series/Spline/SplineSeries.js", [g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
function(a, g) {
var v = this && this.__extends ||
function() {
var a = function(g, t) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(a, f) {
a.__proto__ = f
} ||
function(a, f) {
for (var c in f) f.hasOwnProperty(c) && (a[c] = f[c])
};
return a(g, t)
};
return function(g, t) {
function n() {
this.constructor = g
}
a(g, t);
g.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
}
} (),
E = a.seriesTypes.line,
D = g.merge,
B = g.pick;
g = function(a) {
function g() {
var g = null !== a && a.apply(this, arguments) || this;
g.data = void 0;
g.options = void 0;
g.points = void 0;
return g
}
v(g, a);
g.prototype.getPointSpline = function(a, g, f) {
var c = g.plotX || 0,
l = g.plotY || 0,
m = a[f - 1];
f = a[f + 1];
if (m && !m.isNull && !1 !== m.doCurve && !g.isCliff && f && !f.isNull && !1 !== f.doCurve && !g.isCliff) {
a = m.plotY || 0;
var e = f.plotX || 0;
f = f.plotY || 0;
var n = 0;
var t = (1.5 * c + (m.plotX || 0)) / 2.5;
var r = (1.5 * l + a) / 2.5;
e = (1.5 * c + e) / 2.5;
var v = (1.5 * l + f) / 2.5;
e !== t && (n = (v - r) * (e - c) / (e - t) + l - v);
r += n;
v += n;
r > a && r > l ? (r = Math.max(a, l), v = 2 * l - r) : r < a && r < l && (r = Math.min(a, l), v = 2 * l - r);
v > f && v > l ? (v = Math.max(f, l), r = 2 * l - v) : v < f && v < l && (v = Math.min(f, l), r = 2 * l - v);
g.rightContX = e;
g.rightContY = v
}
g = ["C", B(m.rightContX, m.plotX, 0), B(m.rightContY, m.plotY, 0), B(t, c, 0), B(r, l, 0), c, l];
m.rightContX = m.rightContY = void 0;
return g
};
g.defaultOptions = D(E.defaultOptions);
return g
} (E);
a.registerSeriesType("spline", g);
"";
return g
});
K(g, "Series/AreaSpline/AreaSplineSeries.js", [g["Series/Spline/SplineSeries.js"], g["Core/Legend/LegendSymbol.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x, E) {
var v = this && this.__extends ||
function() {
var a = function(f, c) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(a, c) {
a.__proto__ = c
} ||
function(a, c) {
for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e])
};
return a(f, c)
};
return function(f, c) {
function g() {
this.constructor = f
}
a(f, c);
f.prototype = null === c ? Object.create(c) : (g.prototype = c.prototype, new g)
}
} (),
B = x.seriesTypes,
G = B.area;
B = B.area.prototype;
var r = E.extend,
t = E.merge;
E = function(g) {
function f() {
var a = null !== g && g.apply(this, arguments) || this;
a.data = void 0;
a.points = void 0;
a.options = void 0;
return a
}
v(f, g);
f.defaultOptions = t(a.defaultOptions, G.defaultOptions);
return f
} (a);
r(E.prototype, {
getGraphPath: B.getGraphPath,
getStackPoints: B.getStackPoints,
drawGraph: B.drawGraph,
drawLegendSymbol: g.drawRectangle
});
x.registerSeriesType("areaspline", E);
"";
return E
});
K(g, "Series/Column/ColumnSeriesDefaults.js", [],
function() {
"";
return {
borderRadius: 0,
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"
}
});
K(g, "Series/Column/ColumnSeries.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Color/Color.js"], g["Series/Column/ColumnSeriesDefaults.js"], g["Core/Globals.js"], g["Core/Legend/LegendSymbol.js"], g["Core/Series/Series.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x, E, D, B, G, r) {
var t = this && this.__extends ||
function() {
var a = function(c, d) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(a, b) {
a.__proto__ = b
} ||
function(a, b) {
for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c])
};
return a(c, d)
};
return function(c, d) {
function e() {
this.constructor = c
}
a(c, d);
c.prototype = null === d ? Object.create(d) : (e.prototype = d.prototype, new e)
}
} (),
n = a.animObject,
f = g.parse,
c = E.hasTouch;
a = E.noop;
var l = r.clamp,
m = r.defined,
e = r.extend,
u = r.fireEvent,
v = r.isArray,
J = r.isNumber,
I = r.merge,
L = r.pick,
A = r.objectEach;
r = function(a) {
function d() {
var c = null !== a && a.apply(this, arguments) || this;
c.borderWidth = void 0;
c.data = void 0;
c.group = void 0;
c.options = void 0;
c.points = void 0;
return c
}
t(d, a);
d.prototype.animate = function(a) {
var c = this,
b = this.yAxis,
d = c.options,
h = this.chart.inverted,
f = {},
g = h ? "translateX": "translateY";
if (a) f.scaleY = .001,
a = l(b.toPixels(d.threshold), b.pos, b.pos + b.len),
h ? f.translateX = a - b.len: f.translateY = a,
c.clipBox && c.setClip(),
c.group.attr(f);
else {
var m = Number(c.group.attr(g));
c.group.animate({
scaleY: 1
},
e(n(c.options.animation), {
step: function(a, d) {
c.group && (f[g] = m + d.pos * (b.pos - m), c.group.attr(f))
}
}))
}
};
d.prototype.init = function(c, d) {
a.prototype.init.apply(this, arguments);
var b = this;
c = b.chart;
c.hasRendered && c.series.forEach(function(a) {
a.type === b.type && (a.isDirty = !0)
})
};
d.prototype.getColumnMetrics = function() {
var a = this,
c = a.options,
b = a.xAxis,
d = a.yAxis,
e = b.options.reversedStacks;
e = b.reversed && !e || !b.reversed && e;
var f = {},
g, l = 0; ! 1 === c.grouping ? l = 1 : a.chart.series.forEach(function(b) {
var c = b.yAxis,
e = b.options;
if (b.type === a.type && (b.visible || !a.chart.options.chart.ignoreHiddenSeries) && d.len === c.len && d.pos === c.pos) {
if (e.stacking && "group" !== e.stacking) {
g = b.stackKey;
"undefined" === typeof f[g] && (f[g] = l++);
var h = f[g]
} else ! 1 !== e.grouping && (h = l++);
b.columnIndex = h
}
});
var m = Math.min(Math.abs(b.transA) * (b.ordinal && b.ordinal.slope || c.pointRange || b.closestPointRange || b.tickInterval || 1), b.len),
n = m * c.groupPadding,
q = (m - 2 * n) / (l || 1);
c = Math.min(c.maxPointWidth || b.len, L(c.pointWidth, q * (1 - 2 * c.pointPadding)));
a.columnMetrics = {
width: c,
offset: (q - c) / 2 + (n + ((a.columnIndex || 0) + (e ? 1 : 0)) * q - m / 2) * (e ? -1 : 1),
paddedWidth: q,
columnCount: l
};
return a.columnMetrics
};
d.prototype.crispCol = function(a, c, b, d) {
var e = this.chart,
h = this.borderWidth,
f = -(h % 2 ? .5 : 0);
h = h % 2 ? .5 : 1;
e.inverted && e.renderer.isVML && (h += 1);
this.options.crisp && (b = Math.round(a + b) + f, a = Math.round(a) + f, b -= a);
d = Math.round(c + d) + h;
f = .5 >= Math.abs(c) && .5 < d;
c = Math.round(c) + h;
d -= c;
f && d && (--c, d += 1);
return {
x: a,
y: c,
width: b,
height: d
}
};
d.prototype.adjustForMissingColumns = function(a, c, b, d) {
var e = this,
h = this.options.stacking;
if (!b.isNull && 1 < d.columnCount) {
var f = this.yAxis.options.reversedStacks,
g = 0,
k = f ? 0 : -d.columnCount;
A(this.yAxis.stacking && this.yAxis.stacking.stacks,
function(a) {
if ("number" === typeof b.x) {
var c = a[b.x.toString()];
c && (a = c.points[e.index], h ? (a && (g = k), c.hasValidPoints && (f ? k++:k--)) : v(a) && (a = Object.keys(c.points).filter(function(a) {
return ! a.match(",") && c.points[a] && 1 < c.points[a].length
}).map(parseFloat).sort(function(a, b) {
return b - a
}), g = a.indexOf(e.index), k = a.length))
}
});
a = (b.plotX || 0) + ((k - 1) * d.paddedWidth + c) / 2 - c - g * d.paddedWidth
}
return a
};
d.prototype.translate = function() {
var a = this,
c = a.chart,
b = a.options,
d = a.dense = 2 > a.closestPointRange * a.xAxis.transA;
d = a.borderWidth = L(b.borderWidth, d ? 0 : 1);
var e = a.xAxis,
f = a.yAxis,
g = b.threshold,
n = a.translatedThreshold = f.getThreshold(g),
q = L(b.minPointLength, 5),
u = a.getColumnMetrics(),
t = u.width,
r = a.pointXOffset = u.offset,
y = a.dataMin,
A = a.dataMax,
v = a.barW = Math.max(t, 1 + 2 * d);
c.inverted && (n -= .5);
b.pointPadding && (v = Math.ceil(v));
B.prototype.translate.apply(a);
a.points.forEach(function(d) {
var h = L(d.yBottom, n),
k = 999 + Math.abs(h),
p = d.plotX || 0;
k = l(d.plotY, -k, f.len + k);
var w = Math.min(k, h),
z = Math.max(k, h) - w,
C = t,
x = p + r,
B = v;
q && Math.abs(z) < q && (z = q, p = !f.reversed && !d.negative || f.reversed && d.negative, J(g) && J(A) && d.y === g && A <= g && (f.min || 0) < g && (y !== A || (f.max || 0) <= g) && (p = !p), w = Math.abs(w - n) > q ? h - q: n - (p ? q: 0));
m(d.options.pointWidth) && (C = B = Math.ceil(d.options.pointWidth), x -= Math.round((C - t) / 2));
b.centerInCategory && (x = a.adjustForMissingColumns(x, C, d, u));
d.barX = x;
d.pointWidth = C;
d.tooltipPos = c.inverted ? [l(f.len + f.pos - c.plotLeft - k, f.pos - c.plotLeft, f.len + f.pos - c.plotLeft), e.len + e.pos - c.plotTop - x - B / 2, z] : [e.left - c.plotLeft + x + B / 2, l(k + f.pos - c.plotTop, f.pos - c.plotTop, f.len + f.pos - c.plotTop), z];
d.shapeType = a.pointClass.prototype.shapeType || "rect";
d.shapeArgs = a.crispCol.apply(a, d.isNull ? [x, n, B, 0] : [x, w, B, z])
})
};
d.prototype.drawGraph = function() {
this.group[this.dense ? "addClass": "removeClass"]("highcharts-dense-data")
};
d.prototype.pointAttribs = function(a, c) {
var b = this.options,
d = this.pointAttrToOptions || {},
e = d.stroke || "borderColor",
h = d["stroke-width"] || "borderWidth",
g = a && a.color || this.color,
k = a && a[e] || b[e] || g;
d = a && a.options.dashStyle || b.dashStyle;
var l = a && a[h] || b[h] || this[h] || 0,
m = L(a && a.opacity, b.opacity, 1);
if (a && this.zones.length) {
var n = a.getZone();
g = a.options.color || n && (n.color || a.nonZonedColor) || this.color;
n && (k = n.borderColor || k, d = n.dashStyle || d, l = n.borderWidth || l)
}
c && a && (a = I(b.states[c], a.options.states && a.options.states[c] || {}), c = a.brightness, g = a.color || "undefined" !== typeof c && f(g).brighten(a.brightness).get() || g, k = a[e] || k, l = a[h] || l, d = a.dashStyle || d, m = L(a.opacity, m));
e = {
fill: g,
stroke: k,
"stroke-width": l,
opacity: m
};
d && (e.dashstyle = d);
return e
};
d.prototype.drawPoints = function(a) {
void 0 === a && (a = this.points);
var c = this,
b = this.chart,
d = c.options,
e = b.renderer,
f = d.animationLimit || 250,
h;
a.forEach(function(a) {
var g = a.graphic,
k = !!g,
l = g && b.pointCount < f ? "animate": "attr";
if (J(a.plotY) && null !== a.y) {
h = a.shapeArgs;
g && a.hasNewShapeType() && (g = g.destroy());
c.enabledDataSorting && (a.startXPos = c.xAxis.reversed ? -(h ? h.width || 0 : 0) : c.xAxis.width);
g || (a.graphic = g = e[a.shapeType](h).add(a.group || c.group)) && c.enabledDataSorting && b.hasRendered && b.pointCount < f && (g.attr({
x: a.startXPos
}), k = !0, l = "animate");
if (g && k) g[l](I(h));
if (d.borderRadius) g[l]({
r: d.borderRadius
});
b.styledMode || g[l](c.pointAttribs(a, a.selected && "select")).shadow(!1 !== a.allowShadow && d.shadow, null, d.stacking && !d.borderRadius);
g && (g.addClass(a.getClassName(), !0), g.attr({
visibility: a.visible ? "inherit": "hidden"
}))
} else g && (a.graphic = g.destroy())
})
};
d.prototype.drawTracker = function(a) {
void 0 === a && (a = this.points);
var d = this,
b = d.chart,
e = b.pointer,
f = function(a) {
var b = e.getPointFromEvent(a);
"undefined" !== typeof b && (e.isDirectTouch = !0, b.onMouseOver(a))
},
h;
a.forEach(function(a) {
h = v(a.dataLabels) ? a.dataLabels: a.dataLabel ? [a.dataLabel] : [];
a.graphic && (a.graphic.element.point = a);
h.forEach(function(b) {
b.div ? b.div.point = a: b.element.point = a
})
});
d._hasTracking || (d.trackerGroups.forEach(function(a) {
if (d[a]) {
d[a].addClass("highcharts-tracker").on("mouseover", f).on("mouseout",
function(a) {
e.onTrackerMouseOut(a)
});
if (c) d[a].on("touchstart", f); ! b.styledMode && d.options.cursor && d[a].css({
cursor: d.options.cursor
})
}
}), d._hasTracking = !0);
u(this, "afterDrawTracker")
};
d.prototype.remove = function() {
var a = this,
c = a.chart;
c.hasRendered && c.series.forEach(function(b) {
b.type === a.type && (b.isDirty = !0)
});
B.prototype.remove.apply(a, arguments)
};
d.defaultOptions = I(B.defaultOptions, x);
return d
} (B);
e(r.prototype, {
cropShoulder: 0,
directTouch: !0,
drawLegendSymbol: D.drawRectangle,
getSymbol: a,
negStacks: !0,
trackerGroups: ["group", "dataLabelsGroup"]
});
G.registerSeriesType("column", r);
"";
return r
});
K(g, "Core/Series/DataLabel.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/FormatUtilities.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = a.getDeferredAnimation,
D = g.format,
B = x.defined,
G = x.extend,
r = x.fireEvent,
t = x.isArray,
n = x.isString,
f = x.merge,
c = x.objectEach,
l = x.pick,
m = x.splat,
e; (function(a) {
function e(a, c, b, d, e) {
var f = this,
h = this.chart,
g = this.isCartesian && h.inverted,
k = this.enabledDataSorting,
m = a.plotX,
n = a.plotY,
q = b.rotation,
p = b.align,
u = B(m) && B(n) && h.isInsidePlot(m, Math.round(n), {
inverted: g,
paneCoordinates: !0,
series: f
}),
t = function(b) {
k && f.xAxis && !r && f.setDataLabelStartPos(a, c, e, u, b)
},
r = "justify" === l(b.overflow, k ? "none": "justify"),
A = this.visible && !1 !== a.visible && B(m) && (a.series.forceDL || k && !r || u || l(b.inside, !!this.options.stacking) && d && h.isInsidePlot(m, g ? d.x + 1 : d.y + d.height - 1, {
inverted: g,
paneCoordinates: !0,
series: f
}));
if (A && B(m) && B(n)) {
q && c.attr({
align: p
});
p = c.getBBox(!0);
var v = [0, 0];
var z = h.renderer.fontMetrics(h.styledMode ? void 0 : b.style.fontSize, c).b;
d = G({
x: g ? this.yAxis.len - n: m,
y: Math.round(g ? this.xAxis.len - m: n),
width: 0,
height: 0
},
d);
G(b, {
width: p.width,
height: p.height
});
q ? (r = !1, v = h.renderer.rotCorr(z, q), z = {
x: d.x + (b.x || 0) + d.width / 2 + v.x,
y: d.y + (b.y || 0) + {
top: 0,
middle: .5,
bottom: 1
} [b.verticalAlign] * d.height
},
v = [p.x - Number(c.attr("x")), p.y - Number(c.attr("y"))], t(z), c[e ? "attr": "animate"](z)) : (t(d), c.align(b, void 0, d), z = c.alignAttr);
r && 0 <= d.height ? this.justifyDataLabel(c, b, z, p, d, e) : l(b.crop, !0) && (d = z.x, t = z.y, d += v[0], t += v[1], A = h.isInsidePlot(d, t, {
paneCoordinates: !0,
series: f
}) && h.isInsidePlot(d + p.width, t + p.height, {
paneCoordinates: !0,
series: f
}));
if (b.shape && !q) c[e ? "attr": "animate"]({
anchorX: g ? h.plotWidth - n: m,
anchorY: g ? h.plotHeight - m: n
})
}
e && k && (c.placed = !1);
A || k && !r ? c.show() : (c.hide(), c.placed = !1)
}
function g(a, c) {
var b = c.filter;
return b ? (c = b.operator, a = a[b.property], b = b.value, ">" === c && a > b || "<" === c && a < b || ">=" === c && a >= b || "<=" === c && a <= b || "==" === c && a == b || "===" === c && a === b ? !0 : !1) : !0
}
function u(a) {
void 0 === a && (a = this.points);
var d = this,
b = d.chart,
e = d.options,
f = d.hasRendered || 0,
h = b.renderer,
q = b.options.chart,
u = q.backgroundColor;
q = q.plotBackgroundColor;
var C = h.getContrast(n(q) && q || n(u) && u || "#000000"),
x = e.dataLabels,
E;
u = x.animation;
u = x.defer ? v(b, u, d) : {
defer: 0,
duration: 0
};
x = A(A(b.options.plotOptions && b.options.plotOptions.series && b.options.plotOptions.series.dataLabels, b.options.plotOptions && b.options.plotOptions[d.type] && b.options.plotOptions[d.type].dataLabels), x);
r(this, "drawDataLabels");
if (t(x) || x.enabled || d._hasPointLabels) {
var I = d.plotGroup("dataLabelsGroup", "data-labels", f ? "inherit": "hidden", x.zIndex || 6);
I.attr({
opacity: +f
}); ! f && (f = d.dataLabelsGroup) && (d.visible && I.show(), f[e.animation ? "animate": "attr"]({
opacity: 1
},
u));
a.forEach(function(a) {
E = m(A(x, a.dlOptions || a.options && a.options.dataLabels));
E.forEach(function(f, k) {
var m = f.enabled && (!a.isNull || a.dataLabelOnNull) && g(a, f),
n = a.connectors ? a.connectors[k] : a.connector,
q = a.dataLabels ? a.dataLabels[k] : a.dataLabel,
p = !q,
u = l(f.distance, a.labelDistance);
if (m) {
var t = a.getLabelConfig();
var r = l(f[a.formatPrefix + "Format"], f.format);
t = B(r) ? D(r, t, b) : (f[a.formatPrefix + "Formatter"] || f.formatter).call(t, f);
r = f.style;
var A = f.rotation;
b.styledMode || (r.color = l(f.color, r.color, d.color, "#000000"), "contrast" === r.color ? (a.contrastColor = h.getContrast(a.color || d.color), r.color = !B(u) && f.inside || 0 > u || e.stacking ? a.contrastColor: C) : delete a.contrastColor, e.cursor && (r.cursor = e.cursor));
var v = {
r: f.borderRadius || 0,
rotation: A,
padding: f.padding,
zIndex: 1
};
b.styledMode || (v.fill = f.backgroundColor, v.stroke = f.borderColor, v["stroke-width"] = f.borderWidth);
c(v,
function(a, b) {
"undefined" === typeof a && delete v[b]
})
} ! q || m && B(t) && !!q.div === !!f.useHTML && (q.rotation && f.rotation || q.rotation === f.rotation) || (p = !0, a.dataLabel = q = a.dataLabel && a.dataLabel.destroy(), a.dataLabels && (1 === a.dataLabels.length ? delete a.dataLabels: delete a.dataLabels[k]), k || delete a.dataLabel, n && (a.connector = a.connector.destroy(), a.connectors && (1 === a.connectors.length ? delete a.connectors: delete a.connectors[k])));
m && B(t) ? (q ? v.text = t: (a.dataLabels = a.dataLabels || [], q = a.dataLabels[k] = A ? h.text(t, 0, 0, f.useHTML).addClass("highcharts-data-label") : h.label(t, 0, 0, f.shape, null, null, f.useHTML, null, "data-label"), k || (a.dataLabel = q), q.addClass(" highcharts-data-label-color-" + a.colorIndex + " " + (f.className || "") + (f.useHTML ? " highcharts-tracker": ""))), q.options = f, q.attr(v), b.styledMode || q.css(r).shadow(f.shadow), (k = f[a.formatPrefix + "TextPath"] || f.textPath) && !f.useHTML && (q.setTextPath(a.getDataLabelPath && a.getDataLabelPath(q) || a.graphic, k), a.dataLabelPath && !k.enabled && (a.dataLabelPath = a.dataLabelPath.destroy())), q.added || q.add(I), d.alignDataLabel(a, q, f, null, p)) : q && q.hide()
})
})
}
r(this, "afterDrawDataLabels")
}
function x(a, c, b, d, e, f) {
var h = this.chart,
g = c.align,
k = c.verticalAlign,
l = a.box ? 0 : a.padding || 0,
m = c.x;
m = void 0 === m ? 0 : m;
var n = c.y;
n = void 0 === n ? 0 : n;
var q = (b.x || 0) + l;
if (0 > q) {
"right" === g && 0 <= m ? (c.align = "left", c.inside = !0) : m -= q;
var p = !0
}
q = (b.x || 0) + d.width - l;
q > h.plotWidth && ("left" === g && 0 >= m ? (c.align = "right", c.inside = !0) : m += h.plotWidth - q, p = !0);
q = b.y + l;
0 > q && ("bottom" === k && 0 <= n ? (c.verticalAlign = "top", c.inside = !0) : n -= q, p = !0);
q = (b.y || 0) + d.height - l;
q > h.plotHeight && ("top" === k && 0 >= n ? (c.verticalAlign = "bottom", c.inside = !0) : n += h.plotHeight - q, p = !0);
p && (c.x = m, c.y = n, a.placed = !f, a.align(c, void 0, e));
return p
}
function A(a, c) {
var b = [],
d;
if (t(a) && !t(c)) b = a.map(function(a) {
return f(a, c)
});
else if (t(c) && !t(a)) b = c.map(function(b) {
return f(a, b)
});
else if (t(a) || t(c)) for (d = Math.max(a.length, c.length); d--;) b[d] = f(a[d], c[d]);
else b = f(a, c);
return b
}
function d(a, c, b, d, e) {
var f = this.chart,
h = f.inverted,
g = this.xAxis,
k = g.reversed,
l = h ? c.height / 2 : c.width / 2;
a = (a = a.pointWidth) ? a / 2 : 0;
c.startXPos = h ? e.x: k ? -l - a: g.width - l + a;
c.startYPos = h ? k ? this.yAxis.height - l + a: -l - a: e.y;
d ? "hidden" === c.visibility && (c.show(), c.attr({
opacity: 0
}).animate({
opacity: 1
})) : c.attr({
opacity: 1
}).animate({
opacity: 0
},
void 0, c.hide);
f.hasRendered && (b && c.attr({
x: c.startXPos,
y: c.startYPos
}), c.placed = !0)
}
var q = [];
a.compose = function(a) {
if ( - 1 === q.indexOf(a)) {
var c = a.prototype;
q.push(a);
c.alignDataLabel = e;
c.drawDataLabels = u;
c.justifyDataLabel = x;
c.setDataLabelStartPos = d
}
}
})(e || (e = {}));
"";
return e
});
K(g, "Series/Column/ColumnDataLabel.js", [g["Core/Series/DataLabel.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = g.series,
D = x.merge,
B = x.pick,
G; (function(g) {
function t(a, c, g, m, e) {
var f = this.chart.inverted,
l = a.series,
n = (l.xAxis ? l.xAxis.len: this.chart.plotSizeX) || 0;
l = (l.yAxis ? l.yAxis.len: this.chart.plotSizeY) || 0;
var t = a.dlBox || a.shapeArgs,
r = B(a.below, a.plotY > B(this.translatedThreshold, l)),
A = B(g.inside, !!this.options.stacking);
t && (m = D(t), 0 > m.y && (m.height += m.y, m.y = 0), t = m.y + m.height - l, 0 < t && t < m.height && (m.height -= t), f && (m = {
x: l - m.y - m.height,
y: n - m.x - m.width,
width: m.height,
height: m.width
}), A || (f ? (m.x += r ? 0 : m.width, m.width = 0) : (m.y += r ? m.height: 0, m.height = 0)));
g.align = B(g.align, !f || A ? "center": r ? "right": "left");
g.verticalAlign = B(g.verticalAlign, f || A ? "middle": r ? "top": "bottom");
v.prototype.alignDataLabel.call(this, a, c, g, m, e);
g.inside && a.contrastColor && c.css({
color: a.contrastColor
})
}
var n = [];
g.compose = function(f) {
a.compose(v); - 1 === n.indexOf(f) && (n.push(f), f.prototype.alignDataLabel = t)
}
})(G || (G = {}));
return G
});
K(g, "Series/Bar/BarSeries.js", [g["Series/Column/ColumnSeries.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = this && this.__extends ||
function() {
var a = function(g, t) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(a, f) {
a.__proto__ = f
} ||
function(a, f) {
for (var c in f) f.hasOwnProperty(c) && (a[c] = f[c])
};
return a(g, t)
};
return function(g, t) {
function n() {
this.constructor = g
}
a(g, t);
g.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
}
} (),
D = x.extend,
B = x.merge;
x = function(g) {
function r() {
var a = null !== g && g.apply(this, arguments) || this;
a.data = void 0;
a.options = void 0;
a.points = void 0;
return a
}
v(r, g);
r.defaultOptions = B(a.defaultOptions, {});
return r
} (a);
D(x.prototype, {
inverted: !0
});
g.registerSeriesType("bar", x);
"";
return x
});
K(g, "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: 10px"> {series.name}</span><br/>',
pointFormat: "x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"
}
}
});
K(g, "Series/Scatter/ScatterSeries.js", [g["Series/Scatter/ScatterSeriesDefaults.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = this && this.__extends ||
function() {
var a = function(f, c) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(a, c) {
a.__proto__ = c
} ||
function(a, c) {
for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e])
};
return a(f, c)
};
return function(f, c) {
function g() {
this.constructor = f
}
a(f, c);
f.prototype = null === c ? Object.create(c) : (g.prototype = c.prototype, new g)
}
} (),
D = g.seriesTypes,
B = D.column,
G = D.line;
D = x.addEvent;
var r = x.extend,
t = x.merge;
x = function(g) {
function f() {
var a = null !== g && g.apply(this, arguments) || this;
a.data = void 0;
a.options = void 0;
a.points = void 0;
return a
}
v(f, g);
f.prototype.applyJitter = function() {
var a = this,
f = this.options.jitter,
g = this.points.length;
f && this.points.forEach(function(c, l) { ["x", "y"].forEach(function(e, m) {
var n = "plot" + e.toUpperCase();
if (f[e] && !c.isNull) {
var u = a[e + "Axis"];
var t = f[e] * u.transA;
if (u && !u.isLog) {
var d = Math.max(0, c[n] - t);
u = Math.min(u.len, c[n] + t);
m = 1E4 * Math.sin(l + m * g);
c[n] = d + (u - d) * (m - Math.floor(m));
"x" === e && (c.clientX = c.plotX)
}
}
})
})
};
f.prototype.drawGraph = function() {
this.options.lineWidth ? g.prototype.drawGraph.call(this) : this.graph && (this.graph = this.graph.destroy())
};
f.defaultOptions = t(G.defaultOptions, a);
return f
} (G);
r(x.prototype, {
drawTracker: B.prototype.drawTracker,
sorted: !1,
requireSorting: !1,
noSharedTooltip: !0,
trackerGroups: ["group", "markerGroup", "dataLabelsGroup"],
takeOrdinalPosition: !1
});
D(x, "afterTranslate",
function() {
this.applyJitter()
});
g.registerSeriesType("scatter", x);
return x
});
K(g, "Series/CenteredUtilities.js", [g["Core/Globals.js"], g["Core/Series/Series.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = a.deg2rad,
D = x.fireEvent,
B = x.isNumber,
G = x.pick,
r = x.relativeLength,
t; (function(a) {
a.getCenter = function() {
var a = this.options,
c = this.chart,
l = 2 * (a.slicedOffset || 0),
m = c.plotWidth - 2 * l,
e = c.plotHeight - 2 * l,
n = a.center,
t = Math.min(m, e),
v = a.thickness,
x = a.size,
E = a.innerSize || 0;
"string" === typeof x && (x = parseFloat(x));
"string" === typeof E && (E = parseFloat(E));
a = [G(n[0], "50%"), G(n[1], "50%"), G(x && 0 > x ? void 0 : a.size, "100%"), G(E && 0 > E ? void 0 : a.innerSize || 0, "0%")]; ! c.angular || this instanceof g || (a[3] = 0);
for (n = 0; 4 > n; ++n) x = a[n],
c = 2 > n || 2 === n && /%$/.test(x),
a[n] = r(x, [m, e, t, a[2]][n]) + (c ? l: 0);
a[3] > a[2] && (a[3] = a[2]);
B(v) && 2 * v < a[2] && 0 < v && (a[3] = a[2] - 2 * v);
D(this, "afterGetCenter", {
positions: a
});
return a
};
a.getStartAndEndRadians = function(a, c) {
a = B(a) ? a: 0;
c = B(c) && c > a && 360 > c - a ? c: a + 360;
return {
start: v * (a + -90),
end: v * (c + -90)
}
}
})(t || (t = {}));
"";
return t
});
K(g, "Series/Pie/PiePoint.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Series/Point.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = this && this.__extends ||
function() {
var a = function(c, f) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(a, c) {
a.__proto__ = c
} ||
function(a, c) {
for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e])
};
return a(c, f)
};
return function(c, f) {
function g() {
this.constructor = c
}
a(c, f);
c.prototype = null === f ? Object.create(f) : (g.prototype = f.prototype, new g)
}
} (),
D = a.setAnimation,
B = x.addEvent,
G = x.defined;
a = x.extend;
var r = x.isNumber,
t = x.pick,
n = x.relativeLength;
g = function(a) {
function c() {
var c = null !== a && a.apply(this, arguments) || this;
c.labelDistance = void 0;
c.options = void 0;
c.series = void 0;
return c
}
v(c, a);
c.prototype.getConnectorPath = function() {
var a = this.labelPosition,
c = this.series.options.dataLabels,
e = this.connectorShapes,
f = c.connectorShape;
e[f] && (f = e[f]);
return f.call(this, {
x: a.final.x,
y: a.final.y,
alignment: a.alignment
},
a.connectorPosition, c)
};
c.prototype.getTranslate = function() {
return this.sliced ? this.slicedTranslation: {
translateX: 0,
translateY: 0
}
};
c.prototype.haloPath = function(a) {
var c = this.shapeArgs;
return this.sliced || !this.visible ? [] : this.series.chart.renderer.symbols.arc(c.x, c.y, c.r + a, c.r + a, {
innerR: c.r - 1,
start: c.start,
end: c.end
})
};
c.prototype.init = function() {
var c = this;
a.prototype.init.apply(this, arguments);
this.name = t(this.name, "Slice");
var f = function(a) {
c.slice("select" === a.type)
};
B(this, "select", f);
B(this, "unselect", f);
return this
};
c.prototype.isValid = function() {
return r(this.y) && 0 <= this.y
};
c.prototype.setVisible = function(a, c) {
var e = this,
f = this.series,
g = f.chart,
l = f.options.ignoreHiddenPoint;
c = t(c, l);
a !== this.visible && (this.visible = this.options.visible = a = "undefined" === typeof a ? !this.visible: a, f.options.data[f.data.indexOf(this)] = this.options, ["graphic", "dataLabel", "connector", "shadowGroup"].forEach(function(c) {
if (e[c]) e[c][a ? "show": "hide"](a)
}), this.legendItem && g.legend.colorizeItem(this, a), a || "hover" !== this.state || this.setState(""), l && (f.isDirty = !0), c && g.redraw())
};
c.prototype.slice = function(a, c, e) {
var f = this.series;
D(e, f.chart);
t(c, !0);
this.sliced = this.options.sliced = G(a) ? a: !this.sliced;
f.options.data[f.data.indexOf(this)] = this.options;
this.graphic && this.graphic.animate(this.getTranslate());
this.shadowGroup && this.shadowGroup.animate(this.getTranslate())
};
return c
} (g);
a(g.prototype, {
connectorShapes: {
fixedOffset: function(a, c, g) {
var f = c.breakAt;
c = c.touchingSliceAt;
return [["M", a.x, a.y], g.softConnector ? ["C", a.x + ("left" === a.alignment ? -5 : 5), a.y, 2 * f.x - c.x, 2 * f.y - c.y, f.x, f.y] : ["L", f.x, f.y], ["L", c.x, c.y]]
},
straight: function(a, c) {
c = c.touchingSliceAt;
return [["M", a.x, a.y], ["L", c.x, c.y]]
},
crookedLine: function(a, c, g) {
c = c.touchingSliceAt;
var f = this.series,
e = f.center[0],
l = f.chart.plotWidth,
t = f.chart.plotLeft;
f = a.alignment;
var r = this.shapeArgs.r;
g = n(g.crookDistance, 1);
l = "left" === f ? e + r + (l + t - e - r) * (1 - g) : t + (e - r) * g;
g = ["L", l, a.y];
e = !0;
if ("left" === f ? l > a.x || l < c.x: l < a.x || l > c.x) e = !1;
a = [["M", a.x, a.y]];
e && a.push(g);
a.push(["L", c.x, c.y]);
return a
}
}
});
return g
});
K(g, "Series/Pie/PieSeriesDefaults.js", [],
function() {
"";
return {
center: [null, null],
clip: !1,
colorByPoint: !0,
dataLabels: {
allowOverlap: !0,
connectorPadding: 5,
connectorShape: "fixedOffset",
crookDistance: "70%",
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
}
}
}
});
K(g, "Series/Pie/PieSeries.js", [g["Series/CenteredUtilities.js"], g["Series/Column/ColumnSeries.js"], g["Core/Globals.js"], g["Core/Legend/LegendSymbol.js"], g["Series/Pie/PiePoint.js"], g["Series/Pie/PieSeriesDefaults.js"], g["Core/Series/Series.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Renderer/SVG/Symbols.js"], g["Core/Utilities.js"]],
function(a, g, x, E, D, B, G, r, t, n) {
var f = this && this.__extends ||
function() {
var a = function(c, e) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(a, c) {
a.__proto__ = c
} ||
function(a, c) {
for (var d in c) c.hasOwnProperty(d) && (a[d] = c[d])
};
return a(c, e)