corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 /**
2 * @license Highmaps JS v5.0.12 (2017-05-24)
3 * Highmaps as a plugin for Highcharts 4.1.x or Highstock 2.1.x (x being the patch version of this file)
4 *
5 * (c) 2011-2017 Torstein Honsi
6 *
7 * License: www.highcharts.com/license
8 */
9 'use strict';
10 (function(factory) {
11 if (typeof module === 'object' && module.exports) {
12 module.exports = factory;
13 } else {
14 factory(Highcharts);
15 }
16 }(function(Highcharts) {
17 (function(H) {
18 /**
19 * (c) 2010-2017 Torstein Honsi
20 *
21 * License: www.highcharts.com/license
22 */
23 var Axis = H.Axis,
24 each = H.each,
25 pick = H.pick,
26 wrap = H.wrap;
27 /**
28 * Override to use the extreme coordinates from the SVG shape, not the
29 * data values
30 */
31 wrap(Axis.prototype, 'getSeriesExtremes', function(proceed) {
32 var isXAxis = this.isXAxis,
33 dataMin,
34 dataMax,
35 xData = [],
36 useMapGeometry;
37  
38 // Remove the xData array and cache it locally so that the proceed method doesn't use it
39 if (isXAxis) {
40 each(this.series, function(series, i) {
41 if (series.useMapGeometry) {
42 xData[i] = series.xData;
43 series.xData = [];
44 }
45 });
46 }
47  
48 // Call base to reach normal cartesian series (like mappoint)
49 proceed.call(this);
50  
51 // Run extremes logic for map and mapline
52 if (isXAxis) {
53 dataMin = pick(this.dataMin, Number.MAX_VALUE);
54 dataMax = pick(this.dataMax, -Number.MAX_VALUE);
55 each(this.series, function(series, i) {
56 if (series.useMapGeometry) {
57 dataMin = Math.min(dataMin, pick(series.minX, dataMin));
58 dataMax = Math.max(dataMax, pick(series.maxX, dataMin));
59 series.xData = xData[i]; // Reset xData array
60 useMapGeometry = true;
61 }
62 });
63 if (useMapGeometry) {
64 this.dataMin = dataMin;
65 this.dataMax = dataMax;
66 }
67 }
68 });
69  
70 /**
71 * Override axis translation to make sure the aspect ratio is always kept
72 */
73 wrap(Axis.prototype, 'setAxisTranslation', function(proceed) {
74 var chart = this.chart,
75 mapRatio,
76 plotRatio = chart.plotWidth / chart.plotHeight,
77 adjustedAxisLength,
78 xAxis = chart.xAxis[0],
79 padAxis,
80 fixTo,
81 fixDiff,
82 preserveAspectRatio;
83  
84  
85 // Run the parent method
86 proceed.call(this);
87  
88 // Check for map-like series
89 if (this.coll === 'yAxis' && xAxis.transA !== undefined) {
90 each(this.series, function(series) {
91 if (series.preserveAspectRatio) {
92 preserveAspectRatio = true;
93 }
94 });
95 }
96  
97 // On Y axis, handle both
98 if (preserveAspectRatio) {
99  
100 // Use the same translation for both axes
101 this.transA = xAxis.transA = Math.min(this.transA, xAxis.transA);
102  
103 mapRatio = plotRatio / ((xAxis.max - xAxis.min) / (this.max - this.min));
104  
105 // What axis to pad to put the map in the middle
106 padAxis = mapRatio < 1 ? this : xAxis;
107  
108 < 1 ? this : xAxis; // Pad it
109 < 1 ? this : xAxis; adjustedAxisLength = (padAxis.max - padAxis.min) * padAxis.transA;
110 < 1 ? this : xAxis; padAxis.pixelPadding = padAxis.len - adjustedAxisLength;
111 < 1 ? this : xAxis; padAxis.minPixelPadding = padAxis.pixelPadding / 2;
112  
113 < 1 ? this : xAxis; fixTo = padAxis.fixTo;
114 < 1 ? this : xAxis; if (fixTo) {
115 < 1 ? this : xAxis; fixDiff = fixTo[1] - padAxis.toValue(fixTo[0], true);
116 < 1 ? this : xAxis; fixDiff *= padAxis.transA;
117 < 1 ? this : xAxis; if (Math.abs(fixDiff) > padAxis.minPixelPadding || (padAxis.min === padAxis.dataMin && padAxis.max === padAxis.dataMax)) { // zooming out again, keep within restricted area
118 < 1 ? this : xAxis; fixDiff = 0;
119 < 1 ? this : xAxis; }
120 < 1 ? this : xAxis; padAxis.minPixelPadding -= fixDiff;
121 < 1 ? this : xAxis; }
122 < 1 ? this : xAxis; }
123 < 1 ? this : xAxis; });
124  
125 < 1 ? this : xAxis; /**
126 < 1 ? this : xAxis; * Override Axis.render in order to delete the fixTo prop
127 < 1 ? this : xAxis; */
128 < 1 ? this : xAxis; wrap(Axis.prototype, 'render', function(proceed) {
129 < 1 ? this : xAxis; proceed.call(this);
130 < 1 ? this : xAxis; this.fixTo = null;
131 < 1 ? this : xAxis; });
132  
133 < 1 ? this : xAxis; }(Highcharts));
134 < 1 ? this : xAxis; (function(H) {
135 < 1 ? this : xAxis; /**
136 < 1 ? this : xAxis; * (c) 2010-2017 Torstein Honsi
137 < 1 ? this : xAxis; *
138 < 1 ? this : xAxis; * License: www.highcharts.com/license
139 < 1 ? this : xAxis; */
140 < 1 ? this : xAxis; var Axis = H.Axis,
141 < 1 ? this : xAxis; Chart = H.Chart,
142 < 1 ? this : xAxis; color = H.color,
143 < 1 ? this : xAxis; ColorAxis,
144 < 1 ? this : xAxis; each = H.each,
145 < 1 ? this : xAxis; extend = H.extend,
146 < 1 ? this : xAxis; isNumber = H.isNumber,
147 < 1 ? this : xAxis; Legend = H.Legend,
148 < 1 ? this : xAxis; LegendSymbolMixin = H.LegendSymbolMixin,
149 < 1 ? this : xAxis; noop = H.noop,
150 < 1 ? this : xAxis; merge = H.merge,
151 < 1 ? this : xAxis; pick = H.pick,
152 < 1 ? this : xAxis; wrap = H.wrap;
153  
154 < 1 ? this : xAxis; /**
155 < 1 ? this : xAxis; * The ColorAxis object for inclusion in gradient legends
156 < 1 ? this : xAxis; */
157 < 1 ? this : xAxis; ColorAxis = H.ColorAxis = function() {
158 < 1 ? this : xAxis; this.init.apply(this, arguments);
159 < 1 ? this : xAxis; };
160 < 1 ? this : xAxis; extend(ColorAxis.prototype, Axis.prototype);
161 < 1 ? this : xAxis; extend(ColorAxis.prototype, {
162 < 1 ? this : xAxis; defaultColorAxisOptions: {
163 < 1 ? this : xAxis; lineWidth: 0,
164 < 1 ? this : xAxis; minPadding: 0,
165 < 1 ? this : xAxis; maxPadding: 0,
166 < 1 ? this : xAxis; gridLineWidth: 1,
167 < 1 ? this : xAxis; tickPixelInterval: 72,
168 < 1 ? this : xAxis; startOnTick: true,
169 < 1 ? this : xAxis; endOnTick: true,
170 < 1 ? this : xAxis; offset: 0,
171 < 1 ? this : xAxis; marker: {
172 < 1 ? this : xAxis; animation: {
173 < 1 ? this : xAxis; duration: 50
174 < 1 ? this : xAxis; },
175 < 1 ? this : xAxis; width: 0.01
176  
177 < 1 ? this : xAxis; },
178 < 1 ? this : xAxis; labels: {
179 < 1 ? this : xAxis; overflow: 'justify',
180 < 1 ? this : xAxis; rotation: 0
181 < 1 ? this : xAxis; },
182 < 1 ? this : xAxis; minColor: '#e6ebf5',
183 < 1 ? this : xAxis; maxColor: '#003399',
184 < 1 ? this : xAxis; tickLength: 5,
185 < 1 ? this : xAxis; showInLegend: true
186 < 1 ? this : xAxis; },
187  
188 < 1 ? this : xAxis; // Properties to preserve after destroy, for Axis.update (#5881, #6025)
189 < 1 ? this : xAxis; keepProps: [
190 < 1 ? this : xAxis; 'legendGroup',
191 < 1 ? this : xAxis; 'legendItemHeight',
192 < 1 ? this : xAxis; 'legendItemWidth',
193 < 1 ? this : xAxis; 'legendItem',
194 < 1 ? this : xAxis; 'legendSymbol'
195 < 1 ? this : xAxis; ].concat(Axis.prototype.keepProps),
196  
197 < 1 ? this : xAxis; /**
198 < 1 ? this : xAxis; * Initialize the color axis
199 < 1 ? this : xAxis; */
200 < 1 ? this : xAxis; init: function(chart, userOptions) {
201 < 1 ? this : xAxis; var horiz = chart.options.legend.layout !== 'vertical',
202 < 1 ? this : xAxis; options;
203  
204 < 1 ? this : xAxis; this.coll = 'colorAxis';
205  
206 < 1 ? this : xAxis; // Build the options
207 < 1 ? this : xAxis; options = merge(this.defaultColorAxisOptions, {
208 < 1 ? this : xAxis; side: horiz ? 2 : 1,
209 < 1 ? this : xAxis; reversed: !horiz
210 < 1 ? this : xAxis; }, userOptions, {
211 < 1 ? this : xAxis; opposite: !horiz,
212 < 1 ? this : xAxis; showEmpty: false,
213 < 1 ? this : xAxis; title: null
214 < 1 ? this : xAxis; });
215  
216 < 1 ? this : xAxis; Axis.prototype.init.call(this, chart, options);
217  
218 < 1 ? this : xAxis; // Base init() pushes it to the xAxis array, now pop it again
219 < 1 ? this : xAxis; //chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
220  
221 < 1 ? this : xAxis; // Prepare data classes
222 < 1 ? this : xAxis; if (userOptions.dataClasses) {
223 < 1 ? this : xAxis; this.initDataClasses(userOptions);
224 < 1 ? this : xAxis; }
225 < 1 ? this : xAxis; this.initStops();
226  
227 < 1 ? this : xAxis; // Override original axis properties
228 < 1 ? this : xAxis; this.horiz = horiz;
229 < 1 ? this : xAxis; this.zoomEnabled = false;
230  
231 < 1 ? this : xAxis; // Add default values
232 < 1 ? this : xAxis; this.defaultLegendLength = 200;
233 < 1 ? this : xAxis; },
234  
235 < 1 ? this : xAxis; initDataClasses: function(userOptions) {
236 < 1 ? this : xAxis; var chart = this.chart,
237 < 1 ? this : xAxis; dataClasses,
238 < 1 ? this : xAxis; colorCounter = 0,
239 < 1 ? this : xAxis; colorCount = chart.options.chart.colorCount,
240 < 1 ? this : xAxis; options = this.options,
241 < 1 ? this : xAxis; len = userOptions.dataClasses.length;
242 < 1 ? this : xAxis; this.dataClasses = dataClasses = [];
243 < 1 ? this : xAxis; this.legendItems = [];
244  
245 < 1 ? this : xAxis; each(userOptions.dataClasses, function(dataClass, i) {
246 < 1 ? this : xAxis; var colors;
247  
248 < 1 ? this : xAxis; dataClass = merge(dataClass);
249 < 1 ? this : xAxis; dataClasses.push(dataClass);
250 < 1 ? this : xAxis; if (!dataClass.color) {
251 < 1 ? this : xAxis; if (options.dataClassColor === 'category') {
252  
253 < 1 ? this : xAxis; dataClass.colorIndex = colorCounter;
254  
255 < 1 ? this : xAxis; // increase and loop back to zero
256 < 1 ? this : xAxis; colorCounter++;
257 < 1 ? this : xAxis; if (colorCounter === colorCount) {
258 < 1 ? this : xAxis; colorCounter = 0;
259 < 1 ? this : xAxis; }
260 < 1 ? this : xAxis; } else {
261 < 1 ? this : xAxis; dataClass.color = color(options.minColor).tweenTo(
262 < 1 ? this : xAxis; color(options.maxColor),
263 < 1 ? this : xAxis; len < 2 ? 0.5 : i / (len - 1) // #3219
264 < 1 ? this : xAxis; );
265 < 1 ? this : xAxis; }
266 < 1 ? this : xAxis; }
267 < 1 ? this : xAxis; });
268 < 1 ? this : xAxis; },
269  
270 < 1 ? this : xAxis; initStops: function() {
271 < 1 ? this : xAxis; this.stops = this.options.stops || [
272 < 1 ? this : xAxis; [0, this.options.minColor],
273 < 1 ? this : xAxis; [1, this.options.maxColor]
274 < 1 ? this : xAxis; ];
275 < 1 ? this : xAxis; each(this.stops, function(stop) {
276 < 1 ? this : xAxis; stop.color = color(stop[1]);
277 < 1 ? this : xAxis; });
278 < 1 ? this : xAxis; },
279  
280 < 1 ? this : xAxis; /**
281 < 1 ? this : xAxis; * Extend the setOptions method to process extreme colors and color
282 < 1 ? this : xAxis; * stops.
283 < 1 ? this : xAxis; */
284 < 1 ? this : xAxis; setOptions: function(userOptions) {
285 < 1 ? this : xAxis; Axis.prototype.setOptions.call(this, userOptions);
286  
287 < 1 ? this : xAxis; this.options.crosshair = this.options.marker;
288 < 1 ? this : xAxis; },
289  
290 < 1 ? this : xAxis; setAxisSize: function() {
291 < 1 ? this : xAxis; var symbol = this.legendSymbol,
292 < 1 ? this : xAxis; chart = this.chart,
293 < 1 ? this : xAxis; legendOptions = chart.options.legend || {},
294 < 1 ? this : xAxis; x,
295 < 1 ? this : xAxis; y,
296 < 1 ? this : xAxis; width,
297 < 1 ? this : xAxis; height;
298  
299 < 1 ? this : xAxis; if (symbol) {
300 < 1 ? this : xAxis; this.left = x = symbol.attr('x');
301 < 1 ? this : xAxis; this.top = y = symbol.attr('y');
302 < 1 ? this : xAxis; this.width = width = symbol.attr('width');
303 < 1 ? this : xAxis; this.height = height = symbol.attr('height');
304 < 1 ? this : xAxis; this.right = chart.chartWidth - x - width;
305 < 1 ? this : xAxis; this.bottom = chart.chartHeight - y - height;
306  
307 < 1 ? this : xAxis; this.len = this.horiz ? width : height;
308 < 1 ? this : xAxis; this.pos = this.horiz ? x : y;
309 < 1 ? this : xAxis; } else {
310 < 1 ? this : xAxis; // Fake length for disabled legend to avoid tick issues and such (#5205)
311 < 1 ? this : xAxis; this.len = (this.horiz ? legendOptions.symbolWidth : legendOptions.symbolHeight) || this.defaultLegendLength;
312 < 1 ? this : xAxis; }
313 < 1 ? this : xAxis; },
314  
315 < 1 ? this : xAxis; normalizedValue: function(value) {
316 < 1 ? this : xAxis; if (this.isLog) {
317 < 1 ? this : xAxis; value = this.val2lin(value);
318 < 1 ? this : xAxis; }
319 < 1 ? this : xAxis; return 1 - ((this.max - value) / ((this.max - this.min) || 1));
320 < 1 ? this : xAxis; },
321  
322 < 1 ? this : xAxis; /**
323 < 1 ? this : xAxis; * Translate from a value to a color
324 < 1 ? this : xAxis; */
325 < 1 ? this : xAxis; toColor: function(value, point) {
326 < 1 ? this : xAxis; var pos,
327 < 1 ? this : xAxis; stops = this.stops,
328 < 1 ? this : xAxis; from,
329 < 1 ? this : xAxis; to,
330 < 1 ? this : xAxis; color,
331 < 1 ? this : xAxis; dataClasses = this.dataClasses,
332 < 1 ? this : xAxis; dataClass,
333 < 1 ? this : xAxis; i;
334  
335 < 1 ? this : xAxis; if (dataClasses) {
336 < 1 ? this : xAxis; i = dataClasses.length;
337 < 1 ? this : xAxis; while (i--) {
338 < 1 ? this : xAxis; dataClass = dataClasses[i];
339 < 1 ? this : xAxis; from = dataClass.from;
340 < 1 ? this : xAxis; to = dataClass.to;
341 < 1 ? this : xAxis; if ((from === undefined || value >= from) && (to === undefined || value <= to)) {
342 < 1 ? this : xAxis; color = dataClass.color;
343 < 1 ? this : xAxis; if (point) {
344 < 1 ? this : xAxis; point.dataClass = i;
345 < 1 ? this : xAxis; point.colorIndex = dataClass.colorIndex;
346 < 1 ? this : xAxis; }
347 < 1 ? this : xAxis; break;
348 < 1 ? this : xAxis; }
349 < 1 ? this : xAxis; }
350  
351 < 1 ? this : xAxis; } else {
352  
353 < 1 ? this : xAxis; pos = this.normalizedValue(value);
354 < 1 ? this : xAxis; i = stops.length;
355 < 1 ? this : xAxis; while (i--) {
356 < 1 ? this : xAxis; if (pos > stops[i][0]) {
357 < 1 ? this : xAxis; break;
358 < 1 ? this : xAxis; }
359 < 1 ? this : xAxis; }
360 < 1 ? this : xAxis; from = stops[i] || stops[i + 1];
361 < 1 ? this : xAxis; to = stops[i + 1] || from;
362  
363 < 1 ? this : xAxis; // The position within the gradient
364 < 1 ? this : xAxis; pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
365  
366 < 1 ? this : xAxis; color = from.color.tweenTo(
367 < 1 ? this : xAxis; to.color,
368 < 1 ? this : xAxis; pos
369 < 1 ? this : xAxis; );
370 < 1 ? this : xAxis; }
371 < 1 ? this : xAxis; return color;
372 < 1 ? this : xAxis; },
373  
374 < 1 ? this : xAxis; /**
375 < 1 ? this : xAxis; * Override the getOffset method to add the whole axis groups inside the legend.
376 < 1 ? this : xAxis; */
377 < 1 ? this : xAxis; getOffset: function() {
378 < 1 ? this : xAxis; var group = this.legendGroup,
379 < 1 ? this : xAxis; sideOffset = this.chart.axisOffset[this.side];
380  
381 < 1 ? this : xAxis; if (group) {
382  
383 < 1 ? this : xAxis; // Hook for the getOffset method to add groups to this parent group
384 < 1 ? this : xAxis; this.axisParent = group;
385  
386 < 1 ? this : xAxis; // Call the base
387 < 1 ? this : xAxis; Axis.prototype.getOffset.call(this);
388  
389 < 1 ? this : xAxis; // First time only
390 < 1 ? this : xAxis; if (!this.added) {
391  
392 < 1 ? this : xAxis; this.added = true;
393  
394 < 1 ? this : xAxis; this.labelLeft = 0;
395 < 1 ? this : xAxis; this.labelRight = this.width;
396 < 1 ? this : xAxis; }
397 < 1 ? this : xAxis; // Reset it to avoid color axis reserving space
398 < 1 ? this : xAxis; this.chart.axisOffset[this.side] = sideOffset;
399 < 1 ? this : xAxis; }
400 < 1 ? this : xAxis; },
401  
402 < 1 ? this : xAxis; /**
403 < 1 ? this : xAxis; * Create the color gradient
404 < 1 ? this : xAxis; */
405 < 1 ? this : xAxis; setLegendColor: function() {
406 < 1 ? this : xAxis; var grad,
407 < 1 ? this : xAxis; horiz = this.horiz,
408 < 1 ? this : xAxis; reversed = this.reversed,
409 < 1 ? this : xAxis; one = reversed ? 1 : 0,
410 < 1 ? this : xAxis; zero = reversed ? 0 : 1;
411  
412 < 1 ? this : xAxis; grad = horiz ? [one, 0, zero, 0] : [0, zero, 0, one]; // #3190
413 < 1 ? this : xAxis; this.legendColor = {
414 < 1 ? this : xAxis; linearGradient: {
415 < 1 ? this : xAxis; x1: grad[0],
416 < 1 ? this : xAxis; y1: grad[1],
417 < 1 ? this : xAxis; x2: grad[2],
418 < 1 ? this : xAxis; y2: grad[3]
419 < 1 ? this : xAxis; },
420 < 1 ? this : xAxis; stops: this.stops
421 < 1 ? this : xAxis; };
422 < 1 ? this : xAxis; },
423  
424 < 1 ? this : xAxis; /**
425 < 1 ? this : xAxis; * The color axis appears inside the legend and has its own legend symbol
426 < 1 ? this : xAxis; */
427 < 1 ? this : xAxis; drawLegendSymbol: function(legend, item) {
428 < 1 ? this : xAxis; var padding = legend.padding,
429 < 1 ? this : xAxis; legendOptions = legend.options,
430 < 1 ? this : xAxis; horiz = this.horiz,
431 < 1 ? this : xAxis; width = pick(legendOptions.symbolWidth, horiz ? this.defaultLegendLength : 12),
432 < 1 ? this : xAxis; height = pick(legendOptions.symbolHeight, horiz ? 12 : this.defaultLegendLength),
433 < 1 ? this : xAxis; labelPadding = pick(legendOptions.labelPadding, horiz ? 16 : 30),
434 < 1 ? this : xAxis; itemDistance = pick(legendOptions.itemDistance, 10);
435  
436 < 1 ? this : xAxis; this.setLegendColor();
437  
438 < 1 ? this : xAxis; // Create the gradient
439 < 1 ? this : xAxis; item.legendSymbol = this.chart.renderer.rect(
440 < 1 ? this : xAxis; 0,
441 < 1 ? this : xAxis; legend.baseline - 11,
442 < 1 ? this : xAxis; width,
443 < 1 ? this : xAxis; height
444 < 1 ? this : xAxis; ).attr({
445 < 1 ? this : xAxis; zIndex: 1
446 < 1 ? this : xAxis; }).add(item.legendGroup);
447  
448 < 1 ? this : xAxis; // Set how much space this legend item takes up
449 < 1 ? this : xAxis; this.legendItemWidth = width + padding + (horiz ? itemDistance : labelPadding);
450 < 1 ? this : xAxis; this.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
451 < 1 ? this : xAxis; },
452 < 1 ? this : xAxis; /**
453 < 1 ? this : xAxis; * Fool the legend
454 < 1 ? this : xAxis; */
455 < 1 ? this : xAxis; setState: noop,
456 < 1 ? this : xAxis; visible: true,
457 < 1 ? this : xAxis; setVisible: noop,
458 < 1 ? this : xAxis; getSeriesExtremes: function() {
459 < 1 ? this : xAxis; var series = this.series,
460 < 1 ? this : xAxis; i = series.length;
461 < 1 ? this : xAxis; this.dataMin = Infinity;
462 < 1 ? this : xAxis; this.dataMax = -Infinity;
463 < 1 ? this : xAxis; while (i--) {
464 < 1 ? this : xAxis; if (series[i].valueMin !== undefined) {
465 < 1 ? this : xAxis; this.dataMin = Math.min(this.dataMin, series[i].valueMin);
466 < 1 ? this : xAxis; this.dataMax = Math.max(this.dataMax, series[i].valueMax);
467 < 1 ? this : xAxis; }
468 < 1 ? this : xAxis; }
469 < 1 ? this : xAxis; },
470 < 1 ? this : xAxis; drawCrosshair: function(e, point) {
471 < 1 ? this : xAxis; var plotX = point && point.plotX,
472 < 1 ? this : xAxis; plotY = point && point.plotY,
473 < 1 ? this : xAxis; crossPos,
474 < 1 ? this : xAxis; axisPos = this.pos,
475 < 1 ? this : xAxis; axisLen = this.len;
476  
477 < 1 ? this : xAxis; if (point) {
478 < 1 ? this : xAxis; crossPos = this.toPixels(point[point.series.colorKey]);
479 < 1 ? this : xAxis; if (crossPos < axisPos) {
480 < 1 ? this : xAxis;< axisPos) { crossPos = axisPos - 2;
481 < 1 ? this : xAxis;< axisPos) { } else if (crossPos > axisPos + axisLen) {
482 < 1 ? this : xAxis;< axisPos) { crossPos = axisPos + axisLen + 2;
483 < 1 ? this : xAxis;< axisPos) { }
484  
485 < 1 ? this : xAxis;< axisPos) { point.plotX = crossPos;
486 < 1 ? this : xAxis;< axisPos) { point.plotY = this.len - crossPos;
487 < 1 ? this : xAxis;< axisPos) { Axis.prototype.drawCrosshair.call(this, e, point);
488 < 1 ? this : xAxis;< axisPos) { point.plotX = plotX;
489 < 1 ? this : xAxis;< axisPos) { point.plotY = plotY;
490  
491 < 1 ? this : xAxis;< axisPos) { if (this.cross) {
492 < 1 ? this : xAxis;< axisPos) { this.cross
493 < 1 ? this : xAxis;< axisPos) { .addClass('highcharts-coloraxis-marker')
494 < 1 ? this : xAxis;< axisPos) { .add(this.legendGroup);
495  
496  
497  
498 < 1 ? this : xAxis;< axisPos) { }
499 < 1 ? this : xAxis;< axisPos) { }
500 < 1 ? this : xAxis;< axisPos) { },
501 < 1 ? this : xAxis;< axisPos) { getPlotLinePath: function(a, b, c, d, pos) {
502 < 1 ? this : xAxis;< axisPos) { return isNumber(pos) ? // crosshairs only // #3969 pos can be 0 !!
503 < 1 ? this : xAxis;< axisPos) { (this.horiz ? ['M', pos - 4, this.top - 6, 'L', pos + 4, this.top - 6, pos, this.top, 'Z'] : ['M', this.left, pos, 'L', this.left - 6, pos + 6, this.left - 6, pos - 6, 'Z']) :
504 < 1 ? this : xAxis;< axisPos) { Axis.prototype.getPlotLinePath.call(this, a, b, c, d);
505 < 1 ? this : xAxis;< axisPos) { },
506  
507 < 1 ? this : xAxis;< axisPos) { update: function(newOptions, redraw) {
508 < 1 ? this : xAxis;< axisPos) { var chart = this.chart,
509 < 1 ? this : xAxis;< axisPos) { legend = chart.legend;
510  
511 < 1 ? this : xAxis;< axisPos) { each(this.series, function(series) {
512 < 1 ? this : xAxis;< axisPos) { series.isDirtyData = true; // Needed for Axis.update when choropleth colors change
513 < 1 ? this : xAxis;< axisPos) { });
514  
515 < 1 ? this : xAxis;< axisPos) { // When updating data classes, destroy old items and make sure new ones are created (#3207)
516 < 1 ? this : xAxis;< axisPos) { if (newOptions.dataClasses && legend.allItems) {
517 < 1 ? this : xAxis;< axisPos) { each(legend.allItems, function(item) {
518 < 1 ? this : xAxis;< axisPos) { if (item.isDataClass && item.legendGroup) {
519 < 1 ? this : xAxis;< axisPos) { item.legendGroup.destroy();
520 < 1 ? this : xAxis;< axisPos) { }
521 < 1 ? this : xAxis;< axisPos) { });
522 < 1 ? this : xAxis;< axisPos) { chart.isDirtyLegend = true;
523 < 1 ? this : xAxis;< axisPos) { }
524  
525 < 1 ? this : xAxis;< axisPos) { // Keep the options structure updated for export. Unlike xAxis and yAxis, the colorAxis is
526 < 1 ? this : xAxis;< axisPos) { // not an array. (#3207)
527 < 1 ? this : xAxis;< axisPos) { chart.options[this.coll] = merge(this.userOptions, newOptions);
528  
529 < 1 ? this : xAxis;< axisPos) { Axis.prototype.update.call(this, newOptions, redraw);
530 < 1 ? this : xAxis;< axisPos) { if (this.legendItem) {
531 < 1 ? this : xAxis;< axisPos) { this.setLegendColor();
532 < 1 ? this : xAxis;< axisPos) { legend.colorizeItem(this, true);
533 < 1 ? this : xAxis;< axisPos) { }
534 < 1 ? this : xAxis;< axisPos) { },
535  
536 < 1 ? this : xAxis;< axisPos) { /**
537 < 1 ? this : xAxis;< axisPos) { * Extend basic axis remove by also removing the legend item.
538 < 1 ? this : xAxis;< axisPos) { */
539 < 1 ? this : xAxis;< axisPos) { remove: function() {
540 < 1 ? this : xAxis;< axisPos) { if (this.legendItem) {
541 < 1 ? this : xAxis;< axisPos) { this.chart.legend.destroyItem(this);
542 < 1 ? this : xAxis;< axisPos) { }
543 < 1 ? this : xAxis;< axisPos) { Axis.prototype.remove.call(this);
544 < 1 ? this : xAxis;< axisPos) { },
545  
546 < 1 ? this : xAxis;< axisPos) { /**
547 < 1 ? this : xAxis;< axisPos) { * Get the legend item symbols for data classes
548 < 1 ? this : xAxis;< axisPos) { */
549 < 1 ? this : xAxis;< axisPos) { getDataClassLegendSymbols: function() {
550 < 1 ? this : xAxis;< axisPos) { var axis = this,
551 < 1 ? this : xAxis;< axisPos) { chart = this.chart,
552 < 1 ? this : xAxis;< axisPos) { legendItems = this.legendItems,
553 < 1 ? this : xAxis;< axisPos) { legendOptions = chart.options.legend,
554 < 1 ? this : xAxis;< axisPos) { valueDecimals = legendOptions.valueDecimals,
555 < 1 ? this : xAxis;< axisPos) { valueSuffix = legendOptions.valueSuffix || '',
556 < 1 ? this : xAxis;< axisPos) { name;
557  
558 < 1 ? this : xAxis;< axisPos) { if (!legendItems.length) {
559 < 1 ? this : xAxis;< axisPos) { each(this.dataClasses, function(dataClass, i) {
560 < 1 ? this : xAxis;< axisPos) { var vis = true,
561 < 1 ? this : xAxis;< axisPos) { from = dataClass.from,
562 < 1 ? this : xAxis;< axisPos) { to = dataClass.to;
563  
564 < 1 ? this : xAxis;< axisPos) { // Assemble the default name. This can be overridden by legend.options.labelFormatter
565 < 1 ? this : xAxis;< axisPos) { name = '';
566 < 1 ? this : xAxis;< axisPos) { if (from === undefined) {
567 < 1 ? this : xAxis;< axisPos) { name = '< ';
568 < 1 ? this : xAxis;< axisPos) {< '; } else if (to === undefined) {
569 < 1 ? this : xAxis;< axisPos) {< '; name = '> ';
570 < 1 ? this : xAxis;< axisPos) {< '; }
571 < 1 ? this : xAxis;< axisPos) {< '; if (from !== undefined) {
572 < 1 ? this : xAxis;< axisPos) {< '; name += H.numberFormat(from, valueDecimals) + valueSuffix;
573 < 1 ? this : xAxis;< axisPos) {< '; }
574 < 1 ? this : xAxis;< axisPos) {< '; if (from !== undefined && to !== undefined) {
575 < 1 ? this : xAxis;< axisPos) {< '; name += ' - ';
576 < 1 ? this : xAxis;< axisPos) {< '; }
577 < 1 ? this : xAxis;< axisPos) {< '; if (to !== undefined) {
578 < 1 ? this : xAxis;< axisPos) {< '; name += H.numberFormat(to, valueDecimals) + valueSuffix;
579 < 1 ? this : xAxis;< axisPos) {< '; }
580 < 1 ? this : xAxis;< axisPos) {< '; // Add a mock object to the legend items
581 < 1 ? this : xAxis;< axisPos) {< '; legendItems.push(extend({
582 < 1 ? this : xAxis;< axisPos) {< '; chart: chart,
583 < 1 ? this : xAxis;< axisPos) {< '; name: name,
584 < 1 ? this : xAxis;< axisPos) {< '; options: {},
585 < 1 ? this : xAxis;< axisPos) {< '; drawLegendSymbol: LegendSymbolMixin.drawRectangle,
586 < 1 ? this : xAxis;< axisPos) {< '; visible: true,
587 < 1 ? this : xAxis;< axisPos) {< '; setState: noop,
588 < 1 ? this : xAxis;< axisPos) {< '; isDataClass: true,
589 < 1 ? this : xAxis;< axisPos) {< '; setVisible: function() {
590 < 1 ? this : xAxis;< axisPos) {< '; vis = this.visible = !vis;
591 < 1 ? this : xAxis;< axisPos) {< '; each(axis.series, function(series) {
592 < 1 ? this : xAxis;< axisPos) {< '; each(series.points, function(point) {
593 < 1 ? this : xAxis;< axisPos) {< '; if (point.dataClass === i) {
594 < 1 ? this : xAxis;< axisPos) {< '; point.setVisible(vis);
595 < 1 ? this : xAxis;< axisPos) {< '; }
596 < 1 ? this : xAxis;< axisPos) {< '; });
597 < 1 ? this : xAxis;< axisPos) {< '; });
598  
599 < 1 ? this : xAxis;< axisPos) {< '; chart.legend.colorizeItem(this, vis);
600 < 1 ? this : xAxis;< axisPos) {< '; }
601 < 1 ? this : xAxis;< axisPos) {< '; }, dataClass));
602 < 1 ? this : xAxis;< axisPos) {< '; });
603 < 1 ? this : xAxis;< axisPos) {< '; }
604 < 1 ? this : xAxis;< axisPos) {< '; return legendItems;
605 < 1 ? this : xAxis;< axisPos) {< '; },
606 < 1 ? this : xAxis;< axisPos) {< '; name: '' // Prevents 'undefined' in legend in IE8
607 < 1 ? this : xAxis;< axisPos) {< '; });
608  
609 < 1 ? this : xAxis;< axisPos) {< '; /**
610 < 1 ? this : xAxis;< axisPos) {< '; * Handle animation of the color attributes directly
611 < 1 ? this : xAxis;< axisPos) {< '; */
612 < 1 ? this : xAxis;< axisPos) {< '; each(['fill', 'stroke'], function(prop) {
613 < 1 ? this : xAxis;< axisPos) {< '; H.Fx.prototype[prop + 'Setter'] = function() {
614 < 1 ? this : xAxis;< axisPos) {< '; this.elem.attr(
615 < 1 ? this : xAxis;< axisPos) {< '; prop,
616 < 1 ? this : xAxis;< axisPos) {< '; color(this.start).tweenTo(
617 < 1 ? this : xAxis;< axisPos) {< '; color(this.end),
618 < 1 ? this : xAxis;< axisPos) {< '; this.pos
619 < 1 ? this : xAxis;< axisPos) {< '; ),
620 < 1 ? this : xAxis;< axisPos) {< '; null,
621 < 1 ? this : xAxis;< axisPos) {< '; true
622 < 1 ? this : xAxis;< axisPos) {< '; );
623 < 1 ? this : xAxis;< axisPos) {< '; };
624 < 1 ? this : xAxis;< axisPos) {< '; });
625  
626 < 1 ? this : xAxis;< axisPos) {< '; /**
627 < 1 ? this : xAxis;< axisPos) {< '; * Extend the chart getAxes method to also get the color axis
628 < 1 ? this : xAxis;< axisPos) {< '; */
629 < 1 ? this : xAxis;< axisPos) {< '; wrap(Chart.prototype, 'getAxes', function(proceed) {
630  
631 < 1 ? this : xAxis;< axisPos) {< '; var options = this.options,
632 < 1 ? this : xAxis;< axisPos) {< '; colorAxisOptions = options.colorAxis;
633  
634 < 1 ? this : xAxis;< axisPos) {< '; proceed.call(this);
635  
636 < 1 ? this : xAxis;< axisPos) {< '; this.colorAxis = [];
637 < 1 ? this : xAxis;< axisPos) {< '; if (colorAxisOptions) {
638 < 1 ? this : xAxis;< axisPos) {< '; new ColorAxis(this, colorAxisOptions); // eslint-disable-line no-new
639 < 1 ? this : xAxis;< axisPos) {< '; }
640 < 1 ? this : xAxis;< axisPos) {< '; });
641  
642  
643 < 1 ? this : xAxis;< axisPos) {< '; /**
644 < 1 ? this : xAxis;< axisPos) {< '; * Wrap the legend getAllItems method to add the color axis. This also removes the
645 < 1 ? this : xAxis;< axisPos) {< '; * axis' own series to prevent them from showing up individually.
646 < 1 ? this : xAxis;< axisPos) {< '; */
647 < 1 ? this : xAxis;< axisPos) {< '; wrap(Legend.prototype, 'getAllItems', function(proceed) {
648 < 1 ? this : xAxis;< axisPos) {< '; var allItems = [],
649 < 1 ? this : xAxis;< axisPos) {< '; colorAxis = this.chart.colorAxis[0];
650  
651 < 1 ? this : xAxis;< axisPos) {< '; if (colorAxis && colorAxis.options) {
652 < 1 ? this : xAxis;< axisPos) {< '; if (colorAxis.options.showInLegend) {
653 < 1 ? this : xAxis;< axisPos) {< '; // Data classes
654 < 1 ? this : xAxis;< axisPos) {< '; if (colorAxis.options.dataClasses) {
655 < 1 ? this : xAxis;< axisPos) {< '; allItems = allItems.concat(colorAxis.getDataClassLegendSymbols());
656 < 1 ? this : xAxis;< axisPos) {< '; // Gradient legend
657 < 1 ? this : xAxis;< axisPos) {< '; } else {
658 < 1 ? this : xAxis;< axisPos) {< '; // Add this axis on top
659 < 1 ? this : xAxis;< axisPos) {< '; allItems.push(colorAxis);
660 < 1 ? this : xAxis;< axisPos) {< '; }
661 < 1 ? this : xAxis;< axisPos) {< '; }
662  
663 < 1 ? this : xAxis;< axisPos) {< '; // Don't add the color axis' series
664 < 1 ? this : xAxis;< axisPos) {< '; each(colorAxis.series, function(series) {
665 < 1 ? this : xAxis;< axisPos) {< '; series.options.showInLegend = false;
666 < 1 ? this : xAxis;< axisPos) {< '; });
667 < 1 ? this : xAxis;< axisPos) {< '; }
668  
669 < 1 ? this : xAxis;< axisPos) {< '; return allItems.concat(proceed.call(this));
670 < 1 ? this : xAxis;< axisPos) {< '; });
671  
672 < 1 ? this : xAxis;< axisPos) {< '; wrap(Legend.prototype, 'colorizeItem', function(proceed, item, visible) {
673 < 1 ? this : xAxis;< axisPos) {< '; proceed.call(this, item, visible);
674 < 1 ? this : xAxis;< axisPos) {< '; if (visible && item.legendColor) {
675 < 1 ? this : xAxis;< axisPos) {< '; item.legendSymbol.attr({
676 < 1 ? this : xAxis;< axisPos) {< '; fill: item.legendColor
677 < 1 ? this : xAxis;< axisPos) {< '; });
678 < 1 ? this : xAxis;< axisPos) {< '; }
679 < 1 ? this : xAxis;< axisPos) {< '; });
680  
681 < 1 ? this : xAxis;< axisPos) {< '; }(Highcharts));
682 < 1 ? this : xAxis;< axisPos) {< '; (function(H) {
683 < 1 ? this : xAxis;< axisPos) {< '; /**
684 < 1 ? this : xAxis;< axisPos) {< '; * (c) 2010-2017 Torstein Honsi
685 < 1 ? this : xAxis;< axisPos) {< '; *
686 < 1 ? this : xAxis;< axisPos) {< '; * License: www.highcharts.com/license
687 < 1 ? this : xAxis;< axisPos) {< '; */
688 < 1 ? this : xAxis;< axisPos) {< '; var defined = H.defined,
689 < 1 ? this : xAxis;< axisPos) {< '; each = H.each,
690 < 1 ? this : xAxis;< axisPos) {< '; noop = H.noop,
691 < 1 ? this : xAxis;< axisPos) {< '; seriesTypes = H.seriesTypes;
692  
693 < 1 ? this : xAxis;< axisPos) {< '; /**
694 < 1 ? this : xAxis;< axisPos) {< '; * Mixin for maps and heatmaps
695 < 1 ? this : xAxis;< axisPos) {< '; */
696 < 1 ? this : xAxis;< axisPos) {< '; H.colorPointMixin = {
697 < 1 ? this : xAxis;< axisPos) {< '; /**
698 < 1 ? this : xAxis;< axisPos) {< '; * Color points have a value option that determines whether or not it is a null point
699 < 1 ? this : xAxis;< axisPos) {< '; */
700 < 1 ? this : xAxis;< axisPos) {< '; isValid: function() {
701 < 1 ? this : xAxis;< axisPos) {< '; return this.value !== null;
702 < 1 ? this : xAxis;< axisPos) {< '; },
703  
704 < 1 ? this : xAxis;< axisPos) {< '; /**
705 < 1 ? this : xAxis;< axisPos) {< '; * Set the visibility of a single point
706 < 1 ? this : xAxis;< axisPos) {< '; */
707 < 1 ? this : xAxis;< axisPos) {< '; setVisible: function(vis) {
708 < 1 ? this : xAxis;< axisPos) {< '; var point = this,
709 < 1 ? this : xAxis;< axisPos) {< '; method = vis ? 'show' : 'hide';
710  
711 < 1 ? this : xAxis;< axisPos) {< '; // Show and hide associated elements
712 < 1 ? this : xAxis;< axisPos) {< '; each(['graphic', 'dataLabel'], function(key) {
713 < 1 ? this : xAxis;< axisPos) {< '; if (point[key]) {
714 < 1 ? this : xAxis;< axisPos) {< '; point[key][method]();
715 < 1 ? this : xAxis;< axisPos) {< '; }
716 < 1 ? this : xAxis;< axisPos) {< '; });
717 < 1 ? this : xAxis;< axisPos) {< '; },
718 < 1 ? this : xAxis;< axisPos) {< '; setState: function(state) {
719 < 1 ? this : xAxis;< axisPos) {< '; H.Point.prototype.setState.call(this, state);
720 < 1 ? this : xAxis;< axisPos) {< '; if (this.graphic) {
721 < 1 ? this : xAxis;< axisPos) {< '; this.graphic.attr({
722 < 1 ? this : xAxis;< axisPos) {< '; zIndex: state === 'hover' ? 1 : 0
723 < 1 ? this : xAxis;< axisPos) {< '; });
724 < 1 ? this : xAxis;< axisPos) {< '; }
725 < 1 ? this : xAxis;< axisPos) {< '; }
726 < 1 ? this : xAxis;< axisPos) {< '; };
727  
728 < 1 ? this : xAxis;< axisPos) {< '; H.colorSeriesMixin = {
729 < 1 ? this : xAxis;< axisPos) {< '; pointArrayMap: ['value'],
730 < 1 ? this : xAxis;< axisPos) {< '; axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
731 < 1 ? this : xAxis;< axisPos) {< '; optionalAxis: 'colorAxis',
732 < 1 ? this : xAxis;< axisPos) {< '; trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
733 < 1 ? this : xAxis;< axisPos) {< '; getSymbol: noop,
734 < 1 ? this : xAxis;< axisPos) {< '; parallelArrays: ['x', 'y', 'value'],
735 < 1 ? this : xAxis;< axisPos) {< '; colorKey: 'value',
736  
737  
738  
739 < 1 ? this : xAxis;< axisPos) {< '; /**
740 < 1 ? this : xAxis;< axisPos) {< '; * In choropleth maps, the color is a result of the value, so this needs translation too
741 < 1 ? this : xAxis;< axisPos) {< '; */
742 < 1 ? this : xAxis;< axisPos) {< '; translateColors: function() {
743 < 1 ? this : xAxis;< axisPos) {< '; var series = this,
744 < 1 ? this : xAxis;< axisPos) {< '; nullColor = this.options.nullColor,
745 < 1 ? this : xAxis;< axisPos) {< '; colorAxis = this.colorAxis,
746 < 1 ? this : xAxis;< axisPos) {< '; colorKey = this.colorKey;
747  
748 < 1 ? this : xAxis;< axisPos) {< '; each(this.data, function(point) {
749 < 1 ? this : xAxis;< axisPos) {< '; var value = point[colorKey],
750 < 1 ? this : xAxis;< axisPos) {< '; color;
751  
752 < 1 ? this : xAxis;< axisPos) {< '; color = point.options.color ||
753 < 1 ? this : xAxis;< axisPos) {< '; (point.isNull ? nullColor : (colorAxis && value !== undefined) ? colorAxis.toColor(value, point) : point.color || series.color);
754  
755 < 1 ? this : xAxis;< axisPos) {< '; if (color) {
756 < 1 ? this : xAxis;< axisPos) {< '; point.color = color;
757 < 1 ? this : xAxis;< axisPos) {< '; }
758 < 1 ? this : xAxis;< axisPos) {< '; });
759 < 1 ? this : xAxis;< axisPos) {< '; },
760  
761 < 1 ? this : xAxis;< axisPos) {< '; /**
762 < 1 ? this : xAxis;< axisPos) {< '; * Get the color attibutes to apply on the graphic
763 < 1 ? this : xAxis;< axisPos) {< '; */
764 < 1 ? this : xAxis;< axisPos) {< '; colorAttribs: function(point) {
765 < 1 ? this : xAxis;< axisPos) {< '; var ret = {};
766 < 1 ? this : xAxis;< axisPos) {< '; if (defined(point.color)) {
767 < 1 ? this : xAxis;< axisPos) {< '; ret[this.colorProp || 'fill'] = point.color;
768 < 1 ? this : xAxis;< axisPos) {< '; }
769 < 1 ? this : xAxis;< axisPos) {< '; return ret;
770 < 1 ? this : xAxis;< axisPos) {< '; }
771 < 1 ? this : xAxis;< axisPos) {< '; };
772  
773 < 1 ? this : xAxis;< axisPos) {< '; }(Highcharts));
774 < 1 ? this : xAxis;< axisPos) {< '; (function(H) {
775 < 1 ? this : xAxis;< axisPos) {< '; /**
776 < 1 ? this : xAxis;< axisPos) {< '; * (c) 2010-2017 Torstein Honsi
777 < 1 ? this : xAxis;< axisPos) {< '; *
778 < 1 ? this : xAxis;< axisPos) {< '; * License: www.highcharts.com/license
779 < 1 ? this : xAxis;< axisPos) {< '; */
780 < 1 ? this : xAxis;< axisPos) {< '; var addEvent = H.addEvent,
781 < 1 ? this : xAxis;< axisPos) {< '; Chart = H.Chart,
782 < 1 ? this : xAxis;< axisPos) {< '; doc = H.doc,
783 < 1 ? this : xAxis;< axisPos) {< '; each = H.each,
784 < 1 ? this : xAxis;< axisPos) {< '; extend = H.extend,
785 < 1 ? this : xAxis;< axisPos) {< '; merge = H.merge,
786 < 1 ? this : xAxis;< axisPos) {< '; pick = H.pick,
787 < 1 ? this : xAxis;< axisPos) {< '; wrap = H.wrap;
788  
789 < 1 ? this : xAxis;< axisPos) {< '; function stopEvent(e) {
790 < 1 ? this : xAxis;< axisPos) {< '; if (e) {
791 < 1 ? this : xAxis;< axisPos) {< '; if (e.preventDefault) {
792 < 1 ? this : xAxis;< axisPos) {< '; e.preventDefault();
793 < 1 ? this : xAxis;< axisPos) {< '; }
794 < 1 ? this : xAxis;< axisPos) {< '; if (e.stopPropagation) {
795 < 1 ? this : xAxis;< axisPos) {< '; e.stopPropagation();
796 < 1 ? this : xAxis;< axisPos) {< '; }
797 < 1 ? this : xAxis;< axisPos) {< '; e.cancelBubble = true;
798 < 1 ? this : xAxis;< axisPos) {< '; }
799 < 1 ? this : xAxis;< axisPos) {< '; }
800  
801 < 1 ? this : xAxis;< axisPos) {< '; /**
802 < 1 ? this : xAxis;< axisPos) {< '; * The MapNavigation handles buttons for navigation in addition to mousewheel
803 < 1 ? this : xAxis;< axisPos) {< '; * and doubleclick handlers for chart zooming.
804 < 1 ? this : xAxis;< axisPos) {< '; * @param {Chart} chart The Chart instance.
805 < 1 ? this : xAxis;< axisPos) {< '; */
806 < 1 ? this : xAxis;< axisPos) {< '; function MapNavigation(chart) {
807 < 1 ? this : xAxis;< axisPos) {< '; this.init(chart);
808 < 1 ? this : xAxis;< axisPos) {< '; }
809  
810 < 1 ? this : xAxis;< axisPos) {< '; /**
811 < 1 ? this : xAxis;< axisPos) {< '; * Initiator function.
812 < 1 ? this : xAxis;< axisPos) {< '; * @param {Chart} chart The Chart instance.
813 < 1 ? this : xAxis;< axisPos) {< '; */
814 < 1 ? this : xAxis;< axisPos) {< '; MapNavigation.prototype.init = function(chart) {
815 < 1 ? this : xAxis;< axisPos) {< '; this.chart = chart;
816 < 1 ? this : xAxis;< axisPos) {< '; chart.mapNavButtons = [];
817 < 1 ? this : xAxis;< axisPos) {< '; };
818  
819 < 1 ? this : xAxis;< axisPos) {< '; /**
820 < 1 ? this : xAxis;< axisPos) {< '; * Update the map navigation with new options. Calling this is the same as
821 < 1 ? this : xAxis;< axisPos) {< '; * calling `chart.update({ mapNavigation: {} })`.
822 < 1 ? this : xAxis;< axisPos) {< '; * @param {Object} options New options for the map navigation.
823 < 1 ? this : xAxis;< axisPos) {< '; */
824 < 1 ? this : xAxis;< axisPos) {< '; MapNavigation.prototype.update = function(options) {
825 < 1 ? this : xAxis;< axisPos) {< '; var chart = this.chart,
826 < 1 ? this : xAxis;< axisPos) {< '; o = chart.options.mapNavigation,
827 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions,
828 < 1 ? this : xAxis;< axisPos) {< '; attr,
829 < 1 ? this : xAxis;< axisPos) {< '; states,
830 < 1 ? this : xAxis;< axisPos) {< '; hoverStates,
831 < 1 ? this : xAxis;< axisPos) {< '; selectStates,
832 < 1 ? this : xAxis;< axisPos) {< '; outerHandler = function(e) {
833 < 1 ? this : xAxis;< axisPos) {< '; this.handler.call(chart, e);
834 < 1 ? this : xAxis;< axisPos) {< '; stopEvent(e); // Stop default click event (#4444)
835 < 1 ? this : xAxis;< axisPos) {< '; },
836 < 1 ? this : xAxis;< axisPos) {< '; mapNavButtons = chart.mapNavButtons;
837  
838 < 1 ? this : xAxis;< axisPos) {< '; // Merge in new options in case of update, and register back to chart
839 < 1 ? this : xAxis;< axisPos) {< '; // options.
840 < 1 ? this : xAxis;< axisPos) {< '; if (options) {
841 < 1 ? this : xAxis;< axisPos) {< '; o = chart.options.mapNavigation =
842 < 1 ? this : xAxis;< axisPos) {< '; merge(chart.options.mapNavigation, options);
843 < 1 ? this : xAxis;< axisPos) {< '; }
844  
845 < 1 ? this : xAxis;< axisPos) {< '; // Destroy buttons in case of dynamic update
846 < 1 ? this : xAxis;< axisPos) {< '; while (mapNavButtons.length) {
847 < 1 ? this : xAxis;< axisPos) {< '; mapNavButtons.pop().destroy();
848 < 1 ? this : xAxis;< axisPos) {< '; }
849  
850 < 1 ? this : xAxis;< axisPos) {< '; if (pick(o.enableButtons, o.enabled) && !chart.renderer.forExport) {
851  
852 < 1 ? this : xAxis;< axisPos) {< '; H.objectEach(o.buttons, function(button, n) {
853 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions = merge(o.buttonOptions, button);
854  
855  
856  
857 < 1 ? this : xAxis;< axisPos) {< '; button = chart.renderer.button(
858 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions.text,
859 < 1 ? this : xAxis;< axisPos) {< '; 0,
860 < 1 ? this : xAxis;< axisPos) {< '; 0,
861 < 1 ? this : xAxis;< axisPos) {< '; outerHandler,
862 < 1 ? this : xAxis;< axisPos) {< '; attr,
863 < 1 ? this : xAxis;< axisPos) {< '; hoverStates,
864 < 1 ? this : xAxis;< axisPos) {< '; selectStates,
865 < 1 ? this : xAxis;< axisPos) {< '; 0,
866 < 1 ? this : xAxis;< axisPos) {< '; n === 'zoomIn' ? 'topbutton' : 'bottombutton'
867 < 1 ? this : xAxis;< axisPos) {< '; )
868 < 1 ? this : xAxis;< axisPos) {< '; .addClass('highcharts-map-navigation')
869 < 1 ? this : xAxis;< axisPos) {< '; .attr({
870 < 1 ? this : xAxis;< axisPos) {< '; width: buttonOptions.width,
871 < 1 ? this : xAxis;< axisPos) {< '; height: buttonOptions.height,
872 < 1 ? this : xAxis;< axisPos) {< '; title: chart.options.lang[n],
873 < 1 ? this : xAxis;< axisPos) {< '; padding: buttonOptions.padding,
874 < 1 ? this : xAxis;< axisPos) {< '; zIndex: 5
875 < 1 ? this : xAxis;< axisPos) {< '; })
876 < 1 ? this : xAxis;< axisPos) {< '; .add();
877 < 1 ? this : xAxis;< axisPos) {< '; button.handler = buttonOptions.onclick;
878 < 1 ? this : xAxis;< axisPos) {< '; button.align(
879 < 1 ? this : xAxis;< axisPos) {< '; extend(buttonOptions, {
880 < 1 ? this : xAxis;< axisPos) {< '; width: button.width,
881 < 1 ? this : xAxis;< axisPos) {< '; height: 2 * button.height
882 < 1 ? this : xAxis;< axisPos) {< '; }),
883 < 1 ? this : xAxis;< axisPos) {< '; null,
884 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions.alignTo
885 < 1 ? this : xAxis;< axisPos) {< '; );
886 < 1 ? this : xAxis;< axisPos) {< '; // Stop double click event (#4444)
887 < 1 ? this : xAxis;< axisPos) {< '; addEvent(button.element, 'dblclick', stopEvent);
888  
889 < 1 ? this : xAxis;< axisPos) {< '; mapNavButtons.push(button);
890  
891 < 1 ? this : xAxis;< axisPos) {< '; });
892 < 1 ? this : xAxis;< axisPos) {< '; }
893  
894 < 1 ? this : xAxis;< axisPos) {< '; this.updateEvents(o);
895 < 1 ? this : xAxis;< axisPos) {< '; };
896  
897 < 1 ? this : xAxis;< axisPos) {< '; /**
898 < 1 ? this : xAxis;< axisPos) {< '; * Update events, called internally from the update function. Add new event
899 < 1 ? this : xAxis;< axisPos) {< '; * handlers, or unbinds events if disabled.
900 < 1 ? this : xAxis;< axisPos) {< '; * @param {Object} options Options for map navigation.
901 < 1 ? this : xAxis;< axisPos) {< '; */
902 < 1 ? this : xAxis;< axisPos) {< '; MapNavigation.prototype.updateEvents = function(options) {
903 < 1 ? this : xAxis;< axisPos) {< '; var chart = this.chart;
904  
905 < 1 ? this : xAxis;< axisPos) {< '; // Add the double click event
906 < 1 ? this : xAxis;< axisPos) {< '; if (
907 < 1 ? this : xAxis;< axisPos) {< '; pick(options.enableDoubleClickZoom, options.enabled) ||
908 < 1 ? this : xAxis;< axisPos) {< '; options.enableDoubleClickZoomTo
909 < 1 ? this : xAxis;< axisPos) {< '; ) {
910 < 1 ? this : xAxis;< axisPos) {< '; this.unbindDblClick = this.unbindDblClick || addEvent(
911 < 1 ? this : xAxis;< axisPos) {< '; chart.container,
912 < 1 ? this : xAxis;< axisPos) {< '; 'dblclick',
913 < 1 ? this : xAxis;< axisPos) {< '; function(e) {
914 < 1 ? this : xAxis;< axisPos) {< '; chart.pointer.onContainerDblClick(e);
915 < 1 ? this : xAxis;< axisPos) {< '; }
916 < 1 ? this : xAxis;< axisPos) {< '; );
917 < 1 ? this : xAxis;< axisPos) {< '; } else if (this.unbindDblClick) {
918 < 1 ? this : xAxis;< axisPos) {< '; // Unbind and set unbinder to undefined
919 < 1 ? this : xAxis;< axisPos) {< '; this.unbindDblClick = this.unbindDblClick();
920 < 1 ? this : xAxis;< axisPos) {< '; }
921  
922 < 1 ? this : xAxis;< axisPos) {< '; // Add the mousewheel event
923 < 1 ? this : xAxis;< axisPos) {< '; if (pick(options.enableMouseWheelZoom, options.enabled)) {
924 < 1 ? this : xAxis;< axisPos) {< '; this.unbindMouseWheel = this.unbindMouseWheel || addEvent(
925 < 1 ? this : xAxis;< axisPos) {< '; chart.container,
926 < 1 ? this : xAxis;< axisPos) {< '; doc.onmousewheel === undefined ? 'DOMMouseScroll' : 'mousewheel',
927 < 1 ? this : xAxis;< axisPos) {< '; function(e) {
928 < 1 ? this : xAxis;< axisPos) {< '; chart.pointer.onContainerMouseWheel(e);
929 < 1 ? this : xAxis;< axisPos) {< '; // Issue #5011, returning false from non-jQuery event does
930 < 1 ? this : xAxis;< axisPos) {< '; // not prevent default
931 < 1 ? this : xAxis;< axisPos) {< '; stopEvent(e);
932 < 1 ? this : xAxis;< axisPos) {< '; return false;
933 < 1 ? this : xAxis;< axisPos) {< '; }
934 < 1 ? this : xAxis;< axisPos) {< '; );
935 < 1 ? this : xAxis;< axisPos) {< '; } else if (this.unbindMouseWheel) {
936 < 1 ? this : xAxis;< axisPos) {< '; // Unbind and set unbinder to undefined
937 < 1 ? this : xAxis;< axisPos) {< '; this.unbindMouseWheel = this.unbindMouseWheel();
938 < 1 ? this : xAxis;< axisPos) {< '; }
939  
940 < 1 ? this : xAxis;< axisPos) {< '; };
941  
942 < 1 ? this : xAxis;< axisPos) {< '; // Add events to the Chart object itself
943 < 1 ? this : xAxis;< axisPos) {< '; extend(Chart.prototype, /** @lends Chart.prototype */ {
944  
945 < 1 ? this : xAxis;< axisPos) {< '; /**
946 < 1 ? this : xAxis;< axisPos) {< '; * Fit an inner box to an outer. If the inner box overflows left or right, align it to the sides of the
947 < 1 ? this : xAxis;< axisPos) {< '; * outer. If it overflows both sides, fit it within the outer. This is a pattern that occurs more places
948 < 1 ? this : xAxis;< axisPos) {< '; * in Highcharts, perhaps it should be elevated to a common utility function.
949 < 1 ? this : xAxis;< axisPos) {< '; */
950 < 1 ? this : xAxis;< axisPos) {< '; fitToBox: function(inner, outer) {
951 < 1 ? this : xAxis;< axisPos) {< '; each([
952 < 1 ? this : xAxis;< axisPos) {< '; ['x', 'width'],
953 < 1 ? this : xAxis;< axisPos) {< '; ['y', 'height']
954 < 1 ? this : xAxis;< axisPos) {< '; ], function(dim) {
955 < 1 ? this : xAxis;< axisPos) {< '; var pos = dim[0],
956 < 1 ? this : xAxis;< axisPos) {< '; size = dim[1];
957  
958 < 1 ? this : xAxis;< axisPos) {< '; if (inner[pos] + inner[size] > outer[pos] + outer[size]) { // right overflow
959 < 1 ? this : xAxis;< axisPos) {< '; if (inner[size] > outer[size]) { // the general size is greater, fit fully to outer
960 < 1 ? this : xAxis;< axisPos) {< '; inner[size] = outer[size];
961 < 1 ? this : xAxis;< axisPos) {< '; inner[pos] = outer[pos];
962 < 1 ? this : xAxis;< axisPos) {< '; } else { // align right
963 < 1 ? this : xAxis;< axisPos) {< '; inner[pos] = outer[pos] + outer[size] - inner[size];
964 < 1 ? this : xAxis;< axisPos) {< '; }
965 < 1 ? this : xAxis;< axisPos) {< '; }
966 < 1 ? this : xAxis;< axisPos) {< '; if (inner[size] > outer[size]) {
967 < 1 ? this : xAxis;< axisPos) {< '; inner[size] = outer[size];
968 < 1 ? this : xAxis;< axisPos) {< '; }
969 < 1 ? this : xAxis;< axisPos) {< '; if (inner[pos] < outer[pos]) {
970 < 1 ? this : xAxis;< axisPos) {< '; inner[pos] = outer[pos];
971 < 1 ? this : xAxis;< axisPos) {< '; }
972 < 1 ? this : xAxis;< axisPos) {< '; });
973  
974  
975 < 1 ? this : xAxis;< axisPos) {< '; return inner;
976 < 1 ? this : xAxis;< axisPos) {< '; },
977  
978 < 1 ? this : xAxis;< axisPos) {< '; /**
979 < 1 ? this : xAxis;< axisPos) {< '; * Highmaps only. Zoom in or out of the map. See also {@link Point#zoomTo}.
980 < 1 ? this : xAxis;< axisPos) {< '; * See {@link Chart#fromLatLonToPoint} for how to get the `centerX` and
981 < 1 ? this : xAxis;< axisPos) {< '; * `centerY` parameters for a geographic location.
982 < 1 ? this : xAxis;< axisPos) {< '; *
983 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [howMuch]
984 < 1 ? this : xAxis;< axisPos) {< '; * How much to zoom the map. Values less than 1 zooms in. 0.5 zooms
985 < 1 ? this : xAxis;< axisPos) {< '; * in to half the current view. 2 zooms to twice the current view.
986 < 1 ? this : xAxis;< axisPos) {< '; * If omitted, the zoom is reset.
987 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [centerX]
988 < 1 ? this : xAxis;< axisPos) {< '; * The X axis position to center around if available space.
989 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [centerY]
990 < 1 ? this : xAxis;< axisPos) {< '; * The Y axis position to center around if available space.
991 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [mouseX]
992 < 1 ? this : xAxis;< axisPos) {< '; * Fix the zoom to this position if possible. This is used for
993 < 1 ? this : xAxis;< axisPos) {< '; * example in mousewheel events, where the area under the mouse
994 < 1 ? this : xAxis;< axisPos) {< '; * should be fixed as we zoom in.
995 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [mouseY]
996 < 1 ? this : xAxis;< axisPos) {< '; * Fix the zoom to this position if possible.
997 < 1 ? this : xAxis;< axisPos) {< '; */
998 < 1 ? this : xAxis;< axisPos) {< '; mapZoom: function(howMuch, centerXArg, centerYArg, mouseX, mouseY) {
999 < 1 ? this : xAxis;< axisPos) {< '; /*if (this.isMapZooming) {
1000 < 1 ? this : xAxis;< axisPos) {< '; this.mapZoomQueue = arguments;
1001 < 1 ? this : xAxis;< axisPos) {< '; return;
1002 < 1 ? this : xAxis;< axisPos) {< '; }*/
1003  
1004 < 1 ? this : xAxis;< axisPos) {< '; var chart = this,
1005 < 1 ? this : xAxis;< axisPos) {< '; xAxis = chart.xAxis[0],
1006 < 1 ? this : xAxis;< axisPos) {< '; xRange = xAxis.max - xAxis.min,
1007 < 1 ? this : xAxis;< axisPos) {< '; centerX = pick(centerXArg, xAxis.min + xRange / 2),
1008 < 1 ? this : xAxis;< axisPos) {< '; newXRange = xRange * howMuch,
1009 < 1 ? this : xAxis;< axisPos) {< '; yAxis = chart.yAxis[0],
1010 < 1 ? this : xAxis;< axisPos) {< '; yRange = yAxis.max - yAxis.min,
1011 < 1 ? this : xAxis;< axisPos) {< '; centerY = pick(centerYArg, yAxis.min + yRange / 2),
1012 < 1 ? this : xAxis;< axisPos) {< '; newYRange = yRange * howMuch,
1013 < 1 ? this : xAxis;< axisPos) {< '; fixToX = mouseX ? ((mouseX - xAxis.pos) / xAxis.len) : 0.5,
1014 < 1 ? this : xAxis;< axisPos) {< '; fixToY = mouseY ? ((mouseY - yAxis.pos) / yAxis.len) : 0.5,
1015 < 1 ? this : xAxis;< axisPos) {< '; newXMin = centerX - newXRange * fixToX,
1016 < 1 ? this : xAxis;< axisPos) {< '; newYMin = centerY - newYRange * fixToY,
1017 < 1 ? this : xAxis;< axisPos) {< '; newExt = chart.fitToBox({
1018 < 1 ? this : xAxis;< axisPos) {< '; x: newXMin,
1019 < 1 ? this : xAxis;< axisPos) {< '; y: newYMin,
1020 < 1 ? this : xAxis;< axisPos) {< '; width: newXRange,
1021 < 1 ? this : xAxis;< axisPos) {< '; height: newYRange
1022 < 1 ? this : xAxis;< axisPos) {< '; }, {
1023 < 1 ? this : xAxis;< axisPos) {< '; x: xAxis.dataMin,
1024 < 1 ? this : xAxis;< axisPos) {< '; y: yAxis.dataMin,
1025 < 1 ? this : xAxis;< axisPos) {< '; width: xAxis.dataMax - xAxis.dataMin,
1026 < 1 ? this : xAxis;< axisPos) {< '; height: yAxis.dataMax - yAxis.dataMin
1027 < 1 ? this : xAxis;< axisPos) {< '; }),
1028 < 1 ? this : xAxis;< axisPos) {< '; zoomOut = newExt.x <= xAxis.dataMin &&
1029 < 1 ? this : xAxis;< axisPos) {< '; newExt.width >= xAxis.dataMax - xAxis.dataMin &&
1030 < 1 ? this : xAxis;< axisPos) {< '; newExt.y <= yAxis.dataMin &&
1031 < 1 ? this : xAxis;< axisPos) {< '; newExt.height >= yAxis.dataMax - yAxis.dataMin;
1032  
1033 < 1 ? this : xAxis;< axisPos) {< '; // When mousewheel zooming, fix the point under the mouse
1034 < 1 ? this : xAxis;< axisPos) {< '; if (mouseX) {
1035 < 1 ? this : xAxis;< axisPos) {< '; xAxis.fixTo = [mouseX - xAxis.pos, centerXArg];
1036 < 1 ? this : xAxis;< axisPos) {< '; }
1037 < 1 ? this : xAxis;< axisPos) {< '; if (mouseY) {
1038 < 1 ? this : xAxis;< axisPos) {< '; yAxis.fixTo = [mouseY - yAxis.pos, centerYArg];
1039 < 1 ? this : xAxis;< axisPos) {< '; }
1040  
1041 < 1 ? this : xAxis;< axisPos) {< '; // Zoom
1042 < 1 ? this : xAxis;< axisPos) {< '; if (howMuch !== undefined && !zoomOut) {
1043 < 1 ? this : xAxis;< axisPos) {< '; xAxis.setExtremes(newExt.x, newExt.x + newExt.width, false);
1044 < 1 ? this : xAxis;< axisPos) {< '; yAxis.setExtremes(newExt.y, newExt.y + newExt.height, false);
1045  
1046 < 1 ? this : xAxis;< axisPos) {< '; // Reset zoom
1047 < 1 ? this : xAxis;< axisPos) {< '; } else {
1048 < 1 ? this : xAxis;< axisPos) {< '; xAxis.setExtremes(undefined, undefined, false);
1049 < 1 ? this : xAxis;< axisPos) {< '; yAxis.setExtremes(undefined, undefined, false);
1050 < 1 ? this : xAxis;< axisPos) {< '; }
1051  
1052 < 1 ? this : xAxis;< axisPos) {< '; // Prevent zooming until this one is finished animating
1053 < 1 ? this : xAxis;< axisPos) {< '; /*chart.holdMapZoom = true;
1054 < 1 ? this : xAxis;< axisPos) {< '; setTimeout(function () {
1055 < 1 ? this : xAxis;< axisPos) {< '; chart.holdMapZoom = false;
1056 < 1 ? this : xAxis;< axisPos) {< '; }, 200);*/
1057 < 1 ? this : xAxis;< axisPos) {< '; /*delay = animation ? animation.duration || 500 : 0;
1058 < 1 ? this : xAxis;< axisPos) {< '; if (delay) {
1059 < 1 ? this : xAxis;< axisPos) {< '; chart.isMapZooming = true;
1060 < 1 ? this : xAxis;< axisPos) {< '; setTimeout(function () {
1061 < 1 ? this : xAxis;< axisPos) {< '; chart.isMapZooming = false;
1062 < 1 ? this : xAxis;< axisPos) {< '; if (chart.mapZoomQueue) {
1063 < 1 ? this : xAxis;< axisPos) {< '; chart.mapZoom.apply(chart, chart.mapZoomQueue);
1064 < 1 ? this : xAxis;< axisPos) {< '; }
1065 < 1 ? this : xAxis;< axisPos) {< '; chart.mapZoomQueue = null;
1066 < 1 ? this : xAxis;< axisPos) {< '; }, delay);
1067 < 1 ? this : xAxis;< axisPos) {< '; }*/
1068  
1069 < 1 ? this : xAxis;< axisPos) {< '; chart.redraw();
1070 < 1 ? this : xAxis;< axisPos) {< '; }
1071 < 1 ? this : xAxis;< axisPos) {< '; });
1072  
1073 < 1 ? this : xAxis;< axisPos) {< '; /**
1074 < 1 ? this : xAxis;< axisPos) {< '; * Extend the Chart.render method to add zooming and panning
1075 < 1 ? this : xAxis;< axisPos) {< '; */
1076 < 1 ? this : xAxis;< axisPos) {< '; wrap(Chart.prototype, 'render', function(proceed) {
1077 < 1 ? this : xAxis;< axisPos) {< '; // Render the plus and minus buttons. Doing this before the shapes makes getBBox much quicker, at least in Chrome.
1078 < 1 ? this : xAxis;< axisPos) {< '; this.mapNavigation = new MapNavigation(this);
1079 < 1 ? this : xAxis;< axisPos) {< '; this.mapNavigation.update();
1080  
1081 < 1 ? this : xAxis;< axisPos) {< '; proceed.call(this);
1082 < 1 ? this : xAxis;< axisPos) {< '; });
1083  
1084 < 1 ? this : xAxis;< axisPos) {< '; }(Highcharts));
1085 < 1 ? this : xAxis;< axisPos) {< '; (function(H) {
1086 < 1 ? this : xAxis;< axisPos) {< '; /**
1087 < 1 ? this : xAxis;< axisPos) {< '; * (c) 2010-2017 Torstein Honsi
1088 < 1 ? this : xAxis;< axisPos) {< '; *
1089 < 1 ? this : xAxis;< axisPos) {< '; * License: www.highcharts.com/license
1090 < 1 ? this : xAxis;< axisPos) {< '; */
1091 < 1 ? this : xAxis;< axisPos) {< '; var extend = H.extend,
1092 < 1 ? this : xAxis;< axisPos) {< '; pick = H.pick,
1093 < 1 ? this : xAxis;< axisPos) {< '; Pointer = H.Pointer,
1094 < 1 ? this : xAxis;< axisPos) {< '; wrap = H.wrap;
1095  
1096 < 1 ? this : xAxis;< axisPos) {< '; // Extend the Pointer
1097 < 1 ? this : xAxis;< axisPos) {< '; extend(Pointer.prototype, {
1098  
1099 < 1 ? this : xAxis;< axisPos) {< '; /**
1100 < 1 ? this : xAxis;< axisPos) {< '; * The event handler for the doubleclick event
1101 < 1 ? this : xAxis;< axisPos) {< '; */
1102 < 1 ? this : xAxis;< axisPos) {< '; onContainerDblClick: function(e) {
1103 < 1 ? this : xAxis;< axisPos) {< '; var chart = this.chart;
1104  
1105 < 1 ? this : xAxis;< axisPos) {< '; e = this.normalize(e);
1106  
1107 < 1 ? this : xAxis;< axisPos) {< '; if (chart.options.mapNavigation.enableDoubleClickZoomTo) {
1108 < 1 ? this : xAxis;< axisPos) {< '; if (chart.pointer.inClass(e.target, 'highcharts-tracker') && chart.hoverPoint) {
1109 < 1 ? this : xAxis;< axisPos) {< '; chart.hoverPoint.zoomTo();
1110 < 1 ? this : xAxis;< axisPos) {< '; }
1111 < 1 ? this : xAxis;< axisPos) {< '; } else if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
1112 < 1 ? this : xAxis;< axisPos) {< '; chart.mapZoom(
1113 < 1 ? this : xAxis;< axisPos) {< '; 0.5,
1114 < 1 ? this : xAxis;< axisPos) {< '; chart.xAxis[0].toValue(e.chartX),
1115 < 1 ? this : xAxis;< axisPos) {< '; chart.yAxis[0].toValue(e.chartY),
1116 < 1 ? this : xAxis;< axisPos) {< '; e.chartX,
1117 < 1 ? this : xAxis;< axisPos) {< '; e.chartY
1118 < 1 ? this : xAxis;< axisPos) {< '; );
1119 < 1 ? this : xAxis;< axisPos) {< '; }
1120 < 1 ? this : xAxis;< axisPos) {< '; },
1121  
1122 < 1 ? this : xAxis;< axisPos) {< '; /**
1123 < 1 ? this : xAxis;< axisPos) {< '; * The event handler for the mouse scroll event
1124 < 1 ? this : xAxis;< axisPos) {< '; */
1125 < 1 ? this : xAxis;< axisPos) {< '; onContainerMouseWheel: function(e) {
1126 < 1 ? this : xAxis;< axisPos) {< '; var chart = this.chart,
1127 < 1 ? this : xAxis;< axisPos) {< '; delta;
1128  
1129 < 1 ? this : xAxis;< axisPos) {< '; e = this.normalize(e);
1130  
1131 < 1 ? this : xAxis;< axisPos) {< '; // Firefox uses e.detail, WebKit and IE uses wheelDelta
1132 < 1 ? this : xAxis;< axisPos) {< '; delta = e.detail || -(e.wheelDelta / 120);
1133 < 1 ? this : xAxis;< axisPos) {< '; if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
1134 < 1 ? this : xAxis;< axisPos) {< '; chart.mapZoom(
1135 < 1 ? this : xAxis;< axisPos) {< '; Math.pow(chart.options.mapNavigation.mouseWheelSensitivity, delta),
1136 < 1 ? this : xAxis;< axisPos) {< '; chart.xAxis[0].toValue(e.chartX),
1137 < 1 ? this : xAxis;< axisPos) {< '; chart.yAxis[0].toValue(e.chartY),
1138 < 1 ? this : xAxis;< axisPos) {< '; e.chartX,
1139 < 1 ? this : xAxis;< axisPos) {< '; e.chartY
1140 < 1 ? this : xAxis;< axisPos) {< '; );
1141 < 1 ? this : xAxis;< axisPos) {< '; }
1142 < 1 ? this : xAxis;< axisPos) {< '; }
1143 < 1 ? this : xAxis;< axisPos) {< '; });
1144  
1145 < 1 ? this : xAxis;< axisPos) {< '; // The pinchType is inferred from mapNavigation options.
1146 < 1 ? this : xAxis;< axisPos) {< '; wrap(Pointer.prototype, 'zoomOption', function(proceed) {
1147  
1148  
1149 < 1 ? this : xAxis;< axisPos) {< '; var mapNavigation = this.chart.options.mapNavigation;
1150  
1151 < 1 ? this : xAxis;< axisPos) {< '; // Pinch status
1152 < 1 ? this : xAxis;< axisPos) {< '; if (pick(mapNavigation.enableTouchZoom, mapNavigation.enabled)) {
1153 < 1 ? this : xAxis;< axisPos) {< '; this.chart.options.chart.pinchType = 'xy';
1154 < 1 ? this : xAxis;< axisPos) {< '; }
1155  
1156 < 1 ? this : xAxis;< axisPos) {< '; proceed.apply(this, [].slice.call(arguments, 1));
1157  
1158 < 1 ? this : xAxis;< axisPos) {< '; });
1159  
1160 < 1 ? this : xAxis;< axisPos) {< '; // Extend the pinchTranslate method to preserve fixed ratio when zooming
1161 < 1 ? this : xAxis;< axisPos) {< '; wrap(Pointer.prototype, 'pinchTranslate', function(proceed, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {
1162 < 1 ? this : xAxis;< axisPos) {< '; var xBigger;
1163 < 1 ? this : xAxis;< axisPos) {< '; proceed.call(this, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);
1164  
1165 < 1 ? this : xAxis;< axisPos) {< '; // Keep ratio
1166 < 1 ? this : xAxis;< axisPos) {< '; if (this.chart.options.chart.type === 'map' && this.hasZoom) {
1167 < 1 ? this : xAxis;< axisPos) {< '; xBigger = transform.scaleX > transform.scaleY;
1168 < 1 ? this : xAxis;< axisPos) {< '; this.pinchTranslateDirection(!xBigger,
1169 < 1 ? this : xAxis;< axisPos) {< '; pinchDown,
1170 < 1 ? this : xAxis;< axisPos) {< '; touches,
1171 < 1 ? this : xAxis;< axisPos) {< '; transform,
1172 < 1 ? this : xAxis;< axisPos) {< '; selectionMarker,
1173 < 1 ? this : xAxis;< axisPos) {< '; clip,
1174 < 1 ? this : xAxis;< axisPos) {< '; lastValidTouch,
1175 < 1 ? this : xAxis;< axisPos) {< '; xBigger ? transform.scaleX : transform.scaleY
1176 < 1 ? this : xAxis;< axisPos) {< '; );
1177 < 1 ? this : xAxis;< axisPos) {< '; }
1178 < 1 ? this : xAxis;< axisPos) {< '; });
1179  
1180 < 1 ? this : xAxis;< axisPos) {< '; }(Highcharts));
1181 < 1 ? this : xAxis;< axisPos) {< '; (function(H) {
1182 < 1 ? this : xAxis;< axisPos) {< '; /**
1183 < 1 ? this : xAxis;< axisPos) {< '; * (c) 2010-2017 Torstein Honsi
1184 < 1 ? this : xAxis;< axisPos) {< '; *
1185 < 1 ? this : xAxis;< axisPos) {< '; * License: www.highcharts.com/license
1186 < 1 ? this : xAxis;< axisPos) {< '; */
1187 < 1 ? this : xAxis;< axisPos) {< '; var color = H.color,
1188 < 1 ? this : xAxis;< axisPos) {< '; colorPointMixin = H.colorPointMixin,
1189 < 1 ? this : xAxis;< axisPos) {< '; colorSeriesMixin = H.colorSeriesMixin,
1190 < 1 ? this : xAxis;< axisPos) {< '; doc = H.doc,
1191 < 1 ? this : xAxis;< axisPos) {< '; each = H.each,
1192 < 1 ? this : xAxis;< axisPos) {< '; extend = H.extend,
1193 < 1 ? this : xAxis;< axisPos) {< '; isNumber = H.isNumber,
1194 < 1 ? this : xAxis;< axisPos) {< '; LegendSymbolMixin = H.LegendSymbolMixin,
1195 < 1 ? this : xAxis;< axisPos) {< '; map = H.map,
1196 < 1 ? this : xAxis;< axisPos) {< '; merge = H.merge,
1197 < 1 ? this : xAxis;< axisPos) {< '; noop = H.noop,
1198 < 1 ? this : xAxis;< axisPos) {< '; pick = H.pick,
1199 < 1 ? this : xAxis;< axisPos) {< '; isArray = H.isArray,
1200 < 1 ? this : xAxis;< axisPos) {< '; Point = H.Point,
1201 < 1 ? this : xAxis;< axisPos) {< '; Series = H.Series,
1202 < 1 ? this : xAxis;< axisPos) {< '; seriesType = H.seriesType,
1203 < 1 ? this : xAxis;< axisPos) {< '; seriesTypes = H.seriesTypes,
1204 < 1 ? this : xAxis;< axisPos) {< '; splat = H.splat;
1205  
1206 < 1 ? this : xAxis;< axisPos) {< '; // The vector-effect attribute is not supported in IE <= 11 (at least), so we need
1207 < 1 ? this : xAxis;< axisPos) {< '; // diffent logic (#3218)
1208 < 1 ? this : xAxis;< axisPos) {< '; var supportsVectorEffect = doc.documentElement.style.vectorEffect !== undefined;
1209  
1210  
1211 < 1 ? this : xAxis;< axisPos) {< '; /**
1212 < 1 ? this : xAxis;< axisPos) {< '; * The MapAreaPoint object
1213 < 1 ? this : xAxis;< axisPos) {< '; */
1214 < 1 ? this : xAxis;< axisPos) {< '; /**
1215 < 1 ? this : xAxis;< axisPos) {< '; * Add the map series type
1216 < 1 ? this : xAxis;< axisPos) {< '; */
1217 < 1 ? this : xAxis;< axisPos) {< '; seriesType('map', 'scatter', {
1218 < 1 ? this : xAxis;< axisPos) {< '; allAreas: true,
1219  
1220 < 1 ? this : xAxis;< axisPos) {< '; animation: false, // makes the complex shapes slow
1221 < 1 ? this : xAxis;< axisPos) {< '; nullColor: '#f7f7f7',
1222 < 1 ? this : xAxis;< axisPos) {< '; borderColor: '#cccccc',
1223 < 1 ? this : xAxis;< axisPos) {< '; borderWidth: 1,
1224 < 1 ? this : xAxis;< axisPos) {< '; marker: null,
1225 < 1 ? this : xAxis;< axisPos) {< '; stickyTracking: false,
1226 < 1 ? this : xAxis;< axisPos) {< '; joinBy: 'hc-key',
1227 < 1 ? this : xAxis;< axisPos) {< '; dataLabels: {
1228 < 1 ? this : xAxis;< axisPos) {< '; formatter: function() { // #2945
1229 < 1 ? this : xAxis;< axisPos) {< '; return this.point.value;
1230 < 1 ? this : xAxis;< axisPos) {< '; },
1231 < 1 ? this : xAxis;< axisPos) {< '; inside: true, // for the color
1232 < 1 ? this : xAxis;< axisPos) {< '; verticalAlign: 'middle',
1233 < 1 ? this : xAxis;< axisPos) {< '; crop: false,
1234 < 1 ? this : xAxis;< axisPos) {< '; overflow: false,
1235 < 1 ? this : xAxis;< axisPos) {< '; padding: 0
1236 < 1 ? this : xAxis;< axisPos) {< '; },
1237 < 1 ? this : xAxis;< axisPos) {< '; turboThreshold: 0,
1238 < 1 ? this : xAxis;< axisPos) {< '; tooltip: {
1239 < 1 ? this : xAxis;< axisPos) {< '; followPointer: true,
1240 < 1 ? this : xAxis;< axisPos) {< '; pointFormat: '{point.name}: {point.value}<br/>'
1241 < 1 ? this : xAxis;< axisPos) {< '; },
1242 < 1 ? this : xAxis;< axisPos) {< '; states: {
1243 < 1 ? this : xAxis;< axisPos) {< '; normal: {
1244 < 1 ? this : xAxis;< axisPos) {< '; animation: true
1245 < 1 ? this : xAxis;< axisPos) {< '; },
1246 < 1 ? this : xAxis;< axisPos) {< '; hover: {
1247 < 1 ? this : xAxis;< axisPos) {< '; brightness: 0.2,
1248 < 1 ? this : xAxis;< axisPos) {< '; halo: null
1249 < 1 ? this : xAxis;< axisPos) {< '; },
1250 < 1 ? this : xAxis;< axisPos) {< '; select: {
1251 < 1 ? this : xAxis;< axisPos) {< '; color: '#cccccc'
1252 < 1 ? this : xAxis;< axisPos) {< '; }
1253 < 1 ? this : xAxis;< axisPos) {< '; }
1254  
1255 < 1 ? this : xAxis;< axisPos) {< '; // Prototype members
1256 < 1 ? this : xAxis;< axisPos) {< '; }, merge(colorSeriesMixin, {
1257 < 1 ? this : xAxis;< axisPos) {< '; type: 'map',
1258 < 1 ? this : xAxis;< axisPos) {< '; supportsDrilldown: true,
1259 < 1 ? this : xAxis;< axisPos) {< '; getExtremesFromAll: true,
1260 < 1 ? this : xAxis;< axisPos) {< '; useMapGeometry: true, // get axis extremes from paths, not values
1261 < 1 ? this : xAxis;< axisPos) {< '; forceDL: true,
1262 < 1 ? this : xAxis;< axisPos) {< '; searchPoint: noop,
1263 < 1 ? this : xAxis;< axisPos) {< '; directTouch: true, // When tooltip is not shared, this series (and derivatives) requires direct touch/hover. KD-tree does not apply.
1264 < 1 ? this : xAxis;< axisPos) {< '; preserveAspectRatio: true, // X axis and Y axis must have same translation slope
1265 < 1 ? this : xAxis;< axisPos) {< '; pointArrayMap: ['value'],
1266 < 1 ? this : xAxis;< axisPos) {< '; /**
1267 < 1 ? this : xAxis;< axisPos) {< '; * Get the bounding box of all paths in the map combined.
1268 < 1 ? this : xAxis;< axisPos) {< '; */
1269 < 1 ? this : xAxis;< axisPos) {< '; getBox: function(paths) {
1270 < 1 ? this : xAxis;< axisPos) {< '; var MAX_VALUE = Number.MAX_VALUE,
1271 < 1 ? this : xAxis;< axisPos) {< '; maxX = -MAX_VALUE,
1272 < 1 ? this : xAxis;< axisPos) {< '; minX = MAX_VALUE,
1273 < 1 ? this : xAxis;< axisPos) {< '; maxY = -MAX_VALUE,
1274 < 1 ? this : xAxis;< axisPos) {< '; minY = MAX_VALUE,
1275 < 1 ? this : xAxis;< axisPos) {< '; minRange = MAX_VALUE,
1276 < 1 ? this : xAxis;< axisPos) {< '; xAxis = this.xAxis,
1277 < 1 ? this : xAxis;< axisPos) {< '; yAxis = this.yAxis,
1278 < 1 ? this : xAxis;< axisPos) {< '; hasBox;
1279  
1280 < 1 ? this : xAxis;< axisPos) {< '; // Find the bounding box
1281 < 1 ? this : xAxis;< axisPos) {< '; each(paths || [], function(point) {
1282  
1283 < 1 ? this : xAxis;< axisPos) {< '; if (point.path) {
1284 < 1 ? this : xAxis;< axisPos) {< '; if (typeof point.path === 'string') {
1285 < 1 ? this : xAxis;< axisPos) {< '; point.path = H.splitPath(point.path);
1286 < 1 ? this : xAxis;< axisPos) {< '; }
1287  
1288 < 1 ? this : xAxis;< axisPos) {< '; var path = point.path || [],
1289 < 1 ? this : xAxis;< axisPos) {< '; i = path.length,
1290 < 1 ? this : xAxis;< axisPos) {< '; even = false, // while loop reads from the end
1291 < 1 ? this : xAxis;< axisPos) {< '; pointMaxX = -MAX_VALUE,
1292 < 1 ? this : xAxis;< axisPos) {< '; pointMinX = MAX_VALUE,
1293 < 1 ? this : xAxis;< axisPos) {< '; pointMaxY = -MAX_VALUE,
1294 < 1 ? this : xAxis;< axisPos) {< '; pointMinY = MAX_VALUE,
1295 < 1 ? this : xAxis;< axisPos) {< '; properties = point.properties;
1296  
1297 < 1 ? this : xAxis;< axisPos) {< '; // The first time a map point is used, analyze its box
1298 < 1 ? this : xAxis;< axisPos) {< '; if (!point._foundBox) {
1299 < 1 ? this : xAxis;< axisPos) {< '; while (i--) {
1300 < 1 ? this : xAxis;< axisPos) {< '; if (isNumber(path[i])) {
1301 < 1 ? this : xAxis;< axisPos) {< '; if (even) { // even = x
1302 < 1 ? this : xAxis;< axisPos) {< '; pointMaxX = Math.max(pointMaxX, path[i]);
1303 < 1 ? this : xAxis;< axisPos) {< '; pointMinX = Math.min(pointMinX, path[i]);
1304 < 1 ? this : xAxis;< axisPos) {< '; } else { // odd = Y
1305 < 1 ? this : xAxis;< axisPos) {< '; pointMaxY = Math.max(pointMaxY, path[i]);
1306 < 1 ? this : xAxis;< axisPos) {< '; pointMinY = Math.min(pointMinY, path[i]);
1307 < 1 ? this : xAxis;< axisPos) {< '; }
1308 < 1 ? this : xAxis;< axisPos) {< '; even = !even;
1309 < 1 ? this : xAxis;< axisPos) {< '; }
1310 < 1 ? this : xAxis;< axisPos) {< '; }
1311 < 1 ? this : xAxis;< axisPos) {< '; // Cache point bounding box for use to position data labels, bubbles etc
1312 < 1 ? this : xAxis;< axisPos) {< '; point._midX = pointMinX + (pointMaxX - pointMinX) *
1313 < 1 ? this : xAxis;< axisPos) {< '; (point.middleX || (properties && properties['hc-middle-x']) || 0.5); // pick is slower and very marginally needed
1314 < 1 ? this : xAxis;< axisPos) {< '; point._midY = pointMinY + (pointMaxY - pointMinY) *
1315 < 1 ? this : xAxis;< axisPos) {< '; (point.middleY || (properties && properties['hc-middle-y']) || 0.5);
1316 < 1 ? this : xAxis;< axisPos) {< '; point._maxX = pointMaxX;
1317 < 1 ? this : xAxis;< axisPos) {< '; point._minX = pointMinX;
1318 < 1 ? this : xAxis;< axisPos) {< '; point._maxY = pointMaxY;
1319 < 1 ? this : xAxis;< axisPos) {< '; point._minY = pointMinY;
1320 < 1 ? this : xAxis;< axisPos) {< '; point.labelrank = pick(point.labelrank, (pointMaxX - pointMinX) * (pointMaxY - pointMinY));
1321 < 1 ? this : xAxis;< axisPos) {< '; point._foundBox = true;
1322 < 1 ? this : xAxis;< axisPos) {< '; }
1323  
1324 < 1 ? this : xAxis;< axisPos) {< '; maxX = Math.max(maxX, point._maxX);
1325 < 1 ? this : xAxis;< axisPos) {< '; minX = Math.min(minX, point._minX);
1326 < 1 ? this : xAxis;< axisPos) {< '; maxY = Math.max(maxY, point._maxY);
1327 < 1 ? this : xAxis;< axisPos) {< '; minY = Math.min(minY, point._minY);
1328 < 1 ? this : xAxis;< axisPos) {< '; minRange = Math.min(point._maxX - point._minX, point._maxY - point._minY, minRange);
1329 < 1 ? this : xAxis;< axisPos) {< '; hasBox = true;
1330 < 1 ? this : xAxis;< axisPos) {< '; }
1331 < 1 ? this : xAxis;< axisPos) {< '; });
1332  
1333 < 1 ? this : xAxis;< axisPos) {< '; // Set the box for the whole series
1334 < 1 ? this : xAxis;< axisPos) {< '; if (hasBox) {
1335 < 1 ? this : xAxis;< axisPos) {< '; this.minY = Math.min(minY, pick(this.minY, MAX_VALUE));
1336 < 1 ? this : xAxis;< axisPos) {< '; this.maxY = Math.max(maxY, pick(this.maxY, -MAX_VALUE));
1337 < 1 ? this : xAxis;< axisPos) {< '; this.minX = Math.min(minX, pick(this.minX, MAX_VALUE));
1338 < 1 ? this : xAxis;< axisPos) {< '; this.maxX = Math.max(maxX, pick(this.maxX, -MAX_VALUE));
1339  
1340 < 1 ? this : xAxis;< axisPos) {< '; // If no minRange option is set, set the default minimum zooming range to 5 times the
1341 < 1 ? this : xAxis;< axisPos) {< '; // size of the smallest element
1342 < 1 ? this : xAxis;< axisPos) {< '; if (xAxis && xAxis.options.minRange === undefined) {
1343 < 1 ? this : xAxis;< axisPos) {< '; xAxis.minRange = Math.min(5 * minRange, (this.maxX - this.minX) / 5, xAxis.minRange || MAX_VALUE);
1344 < 1 ? this : xAxis;< axisPos) {< '; }
1345 < 1 ? this : xAxis;< axisPos) {< '; if (yAxis && yAxis.options.minRange === undefined) {
1346 < 1 ? this : xAxis;< axisPos) {< '; yAxis.minRange = Math.min(5 * minRange, (this.maxY - this.minY) / 5, yAxis.minRange || MAX_VALUE);
1347 < 1 ? this : xAxis;< axisPos) {< '; }
1348 < 1 ? this : xAxis;< axisPos) {< '; }
1349 < 1 ? this : xAxis;< axisPos) {< '; },
1350  
1351 < 1 ? this : xAxis;< axisPos) {< '; getExtremes: function() {
1352 < 1 ? this : xAxis;< axisPos) {< '; // Get the actual value extremes for colors
1353 < 1 ? this : xAxis;< axisPos) {< '; Series.prototype.getExtremes.call(this, this.valueData);
1354  
1355 < 1 ? this : xAxis;< axisPos) {< '; // Recalculate box on updated data
1356 < 1 ? this : xAxis;< axisPos) {< '; if (this.chart.hasRendered && this.isDirtyData) {
1357 < 1 ? this : xAxis;< axisPos) {< '; this.getBox(this.options.data);
1358 < 1 ? this : xAxis;< axisPos) {< '; }
1359  
1360 < 1 ? this : xAxis;< axisPos) {< '; this.valueMin = this.dataMin;
1361 < 1 ? this : xAxis;< axisPos) {< '; this.valueMax = this.dataMax;
1362  
1363 < 1 ? this : xAxis;< axisPos) {< '; // Extremes for the mock Y axis
1364 < 1 ? this : xAxis;< axisPos) {< '; this.dataMin = this.minY;
1365 < 1 ? this : xAxis;< axisPos) {< '; this.dataMax = this.maxY;
1366 < 1 ? this : xAxis;< axisPos) {< '; },
1367  
1368 < 1 ? this : xAxis;< axisPos) {< '; /**
1369 < 1 ? this : xAxis;< axisPos) {< '; * Translate the path so that it automatically fits into the plot area box
1370 < 1 ? this : xAxis;< axisPos) {< '; * @param {Object} path
1371 < 1 ? this : xAxis;< axisPos) {< '; */
1372 < 1 ? this : xAxis;< axisPos) {< '; translatePath: function(path) {
1373  
1374 < 1 ? this : xAxis;< axisPos) {< '; var series = this,
1375 < 1 ? this : xAxis;< axisPos) {< '; even = false, // while loop reads from the end
1376 < 1 ? this : xAxis;< axisPos) {< '; xAxis = series.xAxis,
1377 < 1 ? this : xAxis;< axisPos) {< '; yAxis = series.yAxis,
1378 < 1 ? this : xAxis;< axisPos) {< '; xMin = xAxis.min,
1379 < 1 ? this : xAxis;< axisPos) {< '; xTransA = xAxis.transA,
1380 < 1 ? this : xAxis;< axisPos) {< '; xMinPixelPadding = xAxis.minPixelPadding,
1381 < 1 ? this : xAxis;< axisPos) {< '; yMin = yAxis.min,
1382 < 1 ? this : xAxis;< axisPos) {< '; yTransA = yAxis.transA,
1383 < 1 ? this : xAxis;< axisPos) {< '; yMinPixelPadding = yAxis.minPixelPadding,
1384 < 1 ? this : xAxis;< axisPos) {< '; i,
1385 < 1 ? this : xAxis;< axisPos) {< '; ret = []; // Preserve the original
1386  
1387 < 1 ? this : xAxis;< axisPos) {< '; // Do the translation
1388 < 1 ? this : xAxis;< axisPos) {< '; if (path) {
1389 < 1 ? this : xAxis;< axisPos) {< '; i = path.length;
1390 < 1 ? this : xAxis;< axisPos) {< '; while (i--) {
1391 < 1 ? this : xAxis;< axisPos) {< '; if (isNumber(path[i])) {
1392 < 1 ? this : xAxis;< axisPos) {< '; ret[i] = even ?
1393 < 1 ? this : xAxis;< axisPos) {< '; (path[i] - xMin) * xTransA + xMinPixelPadding :
1394 < 1 ? this : xAxis;< axisPos) {< '; (path[i] - yMin) * yTransA + yMinPixelPadding;
1395 < 1 ? this : xAxis;< axisPos) {< '; even = !even;
1396 < 1 ? this : xAxis;< axisPos) {< '; } else {
1397 < 1 ? this : xAxis;< axisPos) {< '; ret[i] = path[i];
1398 < 1 ? this : xAxis;< axisPos) {< '; }
1399 < 1 ? this : xAxis;< axisPos) {< '; }
1400 < 1 ? this : xAxis;< axisPos) {< '; }
1401  
1402 < 1 ? this : xAxis;< axisPos) {< '; return ret;
1403 < 1 ? this : xAxis;< axisPos) {< '; },
1404  
1405 < 1 ? this : xAxis;< axisPos) {< '; /**
1406 < 1 ? this : xAxis;< axisPos) {< '; * Extend setData to join in mapData. If the allAreas option is true, all areas
1407 < 1 ? this : xAxis;< axisPos) {< '; * from the mapData are used, and those that don't correspond to a data value
1408 < 1 ? this : xAxis;< axisPos) {< '; * are given null values.
1409 < 1 ? this : xAxis;< axisPos) {< '; */
1410 < 1 ? this : xAxis;< axisPos) {< '; setData: function(data, redraw, animation, updatePoints) {
1411 < 1 ? this : xAxis;< axisPos) {< '; var options = this.options,
1412 < 1 ? this : xAxis;< axisPos) {< '; chartOptions = this.chart.options.chart,
1413 < 1 ? this : xAxis;< axisPos) {< '; globalMapData = chartOptions && chartOptions.map,
1414 < 1 ? this : xAxis;< axisPos) {< '; mapData = options.mapData,
1415 < 1 ? this : xAxis;< axisPos) {< '; joinBy = options.joinBy,
1416 < 1 ? this : xAxis;< axisPos) {< '; joinByNull = joinBy === null,
1417 < 1 ? this : xAxis;< axisPos) {< '; pointArrayMap = options.keys || this.pointArrayMap,
1418 < 1 ? this : xAxis;< axisPos) {< '; dataUsed = [],
1419 < 1 ? this : xAxis;< axisPos) {< '; mapMap = {},
1420 < 1 ? this : xAxis;< axisPos) {< '; mapPoint,
1421 < 1 ? this : xAxis;< axisPos) {< '; mapTransforms = this.chart.mapTransforms,
1422 < 1 ? this : xAxis;< axisPos) {< '; props,
1423 < 1 ? this : xAxis;< axisPos) {< '; i;
1424  
1425 < 1 ? this : xAxis;< axisPos) {< '; // Collect mapData from chart options if not defined on series
1426 < 1 ? this : xAxis;< axisPos) {< '; if (!mapData && globalMapData) {
1427 < 1 ? this : xAxis;< axisPos) {< '; mapData = typeof globalMapData === 'string' ? H.maps[globalMapData] : globalMapData;
1428 < 1 ? this : xAxis;< axisPos) {< '; }
1429  
1430 < 1 ? this : xAxis;< axisPos) {< '; if (joinByNull) {
1431 < 1 ? this : xAxis;< axisPos) {< '; joinBy = '_i';
1432 < 1 ? this : xAxis;< axisPos) {< '; }
1433 < 1 ? this : xAxis;< axisPos) {< '; joinBy = this.joinBy = splat(joinBy);
1434 < 1 ? this : xAxis;< axisPos) {< '; if (!joinBy[1]) {
1435 < 1 ? this : xAxis;< axisPos) {< '; joinBy[1] = joinBy[0];
1436 < 1 ? this : xAxis;< axisPos) {< '; }
1437  
1438 < 1 ? this : xAxis;< axisPos) {< '; // Pick up numeric values, add index
1439 < 1 ? this : xAxis;< axisPos) {< '; // Convert Array point definitions to objects using pointArrayMap
1440 < 1 ? this : xAxis;< axisPos) {< '; if (data) {
1441 < 1 ? this : xAxis;< axisPos) {< '; each(data, function(val, i) {
1442 < 1 ? this : xAxis;< axisPos) {< '; var ix = 0;
1443 < 1 ? this : xAxis;< axisPos) {< '; if (isNumber(val)) {
1444 < 1 ? this : xAxis;< axisPos) {< '; data[i] = {
1445 < 1 ? this : xAxis;< axisPos) {< '; value: val
1446 < 1 ? this : xAxis;< axisPos) {< '; };
1447 < 1 ? this : xAxis;< axisPos) {< '; } else if (isArray(val)) {
1448 < 1 ? this : xAxis;< axisPos) {< '; data[i] = {};
1449 < 1 ? this : xAxis;< axisPos) {< '; // Automatically copy first item to hc-key if there is an extra leading string
1450 < 1 ? this : xAxis;< axisPos) {< '; if (!options.keys && val.length > pointArrayMap.length && typeof val[0] === 'string') {
1451 < 1 ? this : xAxis;< axisPos) {< '; data[i]['hc-key'] = val[0];
1452 < 1 ? this : xAxis;< axisPos) {< '; ++ix;
1453 < 1 ? this : xAxis;< axisPos) {< '; }
1454 < 1 ? this : xAxis;< axisPos) {< '; // Run through pointArrayMap and what's left of the point data array in parallel, copying over the values
1455 < 1 ? this : xAxis;< axisPos) {< '; for (var j = 0; j < pointArrayMap.length; ++j, ++ix) {
1456 < 1 ? this : xAxis;< axisPos) {< '; if (pointArrayMap[j]) {
1457 < 1 ? this : xAxis;< axisPos) {< '; data[i][pointArrayMap[j]] = val[ix];
1458 < 1 ? this : xAxis;< axisPos) {< '; }
1459 < 1 ? this : xAxis;< axisPos) {< '; }
1460 < 1 ? this : xAxis;< axisPos) {< '; }
1461 < 1 ? this : xAxis;< axisPos) {< '; if (joinByNull) {
1462 < 1 ? this : xAxis;< axisPos) {< '; data[i]._i = i;
1463 < 1 ? this : xAxis;< axisPos) {< '; }
1464 < 1 ? this : xAxis;< axisPos) {< '; });
1465 < 1 ? this : xAxis;< axisPos) {< '; }
1466  
1467 < 1 ? this : xAxis;< axisPos) {< '; this.getBox(data);
1468  
1469 < 1 ? this : xAxis;< axisPos) {< '; // Pick up transform definitions for chart
1470 < 1 ? this : xAxis;< axisPos) {< '; this.chart.mapTransforms = mapTransforms = chartOptions && chartOptions.mapTransforms || mapData && mapData['hc-transform'] || mapTransforms;
1471  
1472 < 1 ? this : xAxis;< axisPos) {< '; // Cache cos/sin of transform rotation angle
1473 < 1 ? this : xAxis;< axisPos) {< '; if (mapTransforms) {
1474 < 1 ? this : xAxis;< axisPos) {< '; H.objectEach(mapTransforms, function(transform) {
1475 < 1 ? this : xAxis;< axisPos) {< '; if (transform.rotation) {
1476 < 1 ? this : xAxis;< axisPos) {< '; transform.cosAngle = Math.cos(transform.rotation);
1477 < 1 ? this : xAxis;< axisPos) {< '; transform.sinAngle = Math.sin(transform.rotation);
1478 < 1 ? this : xAxis;< axisPos) {< '; }
1479 < 1 ? this : xAxis;< axisPos) {< '; });
1480 < 1 ? this : xAxis;< axisPos) {< '; }
1481  
1482 < 1 ? this : xAxis;< axisPos) {< '; if (mapData) {
1483 < 1 ? this : xAxis;< axisPos) {< '; if (mapData.type === 'FeatureCollection') {
1484 < 1 ? this : xAxis;< axisPos) {< '; this.mapTitle = mapData.title;
1485 < 1 ? this : xAxis;< axisPos) {< '; mapData = H.geojson(mapData, this.type, this);
1486 < 1 ? this : xAxis;< axisPos) {< '; }
1487  
1488 < 1 ? this : xAxis;< axisPos) {< '; this.mapData = mapData;
1489 < 1 ? this : xAxis;< axisPos) {< '; this.mapMap = {};
1490  
1491 < 1 ? this : xAxis;< axisPos) {< '; for (i = 0; i < mapData.length; i++) {
1492 < 1 ? this : xAxis;< axisPos) {< '; mapPoint = mapData[i];
1493 < 1 ? this : xAxis;< axisPos) {< '; props = mapPoint.properties;
1494  
1495 < 1 ? this : xAxis;< axisPos) {< '; mapPoint._i = i;
1496 < 1 ? this : xAxis;< axisPos) {< '; // Copy the property over to root for faster access
1497 < 1 ? this : xAxis;< axisPos) {< '; if (joinBy[0] && props && props[joinBy[0]]) {
1498 < 1 ? this : xAxis;< axisPos) {< '; mapPoint[joinBy[0]] = props[joinBy[0]];
1499 < 1 ? this : xAxis;< axisPos) {< '; }
1500 < 1 ? this : xAxis;< axisPos) {< '; mapMap[mapPoint[joinBy[0]]] = mapPoint;
1501 < 1 ? this : xAxis;< axisPos) {< '; }
1502 < 1 ? this : xAxis;< axisPos) {< '; this.mapMap = mapMap;
1503  
1504 < 1 ? this : xAxis;< axisPos) {< '; // Registered the point codes that actually hold data
1505 < 1 ? this : xAxis;< axisPos) {< '; if (data && joinBy[1]) {
1506 < 1 ? this : xAxis;< axisPos) {< '; each(data, function(point) {
1507 < 1 ? this : xAxis;< axisPos) {< '; if (mapMap[point[joinBy[1]]]) {
1508 < 1 ? this : xAxis;< axisPos) {< '; dataUsed.push(mapMap[point[joinBy[1]]]);
1509 < 1 ? this : xAxis;< axisPos) {< '; }
1510 < 1 ? this : xAxis;< axisPos) {< '; });
1511 < 1 ? this : xAxis;< axisPos) {< '; }
1512  
1513 < 1 ? this : xAxis;< axisPos) {< '; if (options.allAreas) {
1514 < 1 ? this : xAxis;< axisPos) {< '; this.getBox(mapData);
1515 < 1 ? this : xAxis;< axisPos) {< '; data = data || [];
1516  
1517 < 1 ? this : xAxis;< axisPos) {< '; // Registered the point codes that actually hold data
1518 < 1 ? this : xAxis;< axisPos) {< '; if (joinBy[1]) {
1519 < 1 ? this : xAxis;< axisPos) {< '; each(data, function(point) {
1520 < 1 ? this : xAxis;< axisPos) {< '; dataUsed.push(point[joinBy[1]]);
1521 < 1 ? this : xAxis;< axisPos) {< '; });
1522 < 1 ? this : xAxis;< axisPos) {< '; }
1523  
1524 < 1 ? this : xAxis;< axisPos) {< '; // Add those map points that don't correspond to data, which will be drawn as null points
1525 < 1 ? this : xAxis;< axisPos) {< '; dataUsed = '|' + map(dataUsed, function(point) {
1526 < 1 ? this : xAxis;< axisPos) {< '; return point && point[joinBy[0]];
1527 < 1 ? this : xAxis;< axisPos) {< '; }).join('|') + '|'; // String search is faster than array.indexOf
1528  
1529 < 1 ? this : xAxis;< axisPos) {< '; each(mapData, function(mapPoint) {
1530 < 1 ? this : xAxis;< axisPos) {< '; if (!joinBy[0] || dataUsed.indexOf('|' + mapPoint[joinBy[0]] + '|') === -1) {
1531 < 1 ? this : xAxis;< axisPos) {< '; data.push(merge(mapPoint, {
1532 < 1 ? this : xAxis;< axisPos) {< '; value: null
1533 < 1 ? this : xAxis;< axisPos) {< '; }));
1534 < 1 ? this : xAxis;< axisPos) {< '; updatePoints = false; // #5050 - adding all areas causes the update optimization of setData to kick in, even though the point order has changed
1535 < 1 ? this : xAxis;< axisPos) {< '; }
1536 < 1 ? this : xAxis;< axisPos) {< '; });
1537 < 1 ? this : xAxis;< axisPos) {< '; } else {
1538 < 1 ? this : xAxis;< axisPos) {< '; this.getBox(dataUsed); // Issue #4784
1539 < 1 ? this : xAxis;< axisPos) {< '; }
1540 < 1 ? this : xAxis;< axisPos) {< '; }
1541 < 1 ? this : xAxis;< axisPos) {< '; Series.prototype.setData.call(this, data, redraw, animation, updatePoints);
1542 < 1 ? this : xAxis;< axisPos) {< '; },
1543  
1544  
1545 < 1 ? this : xAxis;< axisPos) {< '; /**
1546 < 1 ? this : xAxis;< axisPos) {< '; * No graph for the map series
1547 < 1 ? this : xAxis;< axisPos) {< '; */
1548 < 1 ? this : xAxis;< axisPos) {< '; drawGraph: noop,
1549  
1550 < 1 ? this : xAxis;< axisPos) {< '; /**
1551 < 1 ? this : xAxis;< axisPos) {< '; * We need the points' bounding boxes in order to draw the data labels, so
1552 < 1 ? this : xAxis;< axisPos) {< '; * we skip it now and call it from drawPoints instead.
1553 < 1 ? this : xAxis;< axisPos) {< '; */
1554 < 1 ? this : xAxis;< axisPos) {< '; drawDataLabels: noop,
1555  
1556 < 1 ? this : xAxis;< axisPos) {< '; /**
1557 < 1 ? this : xAxis;< axisPos) {< '; * Allow a quick redraw by just translating the area group. Used for zooming and panning
1558 < 1 ? this : xAxis;< axisPos) {< '; * in capable browsers.
1559 < 1 ? this : xAxis;< axisPos) {< '; */
1560 < 1 ? this : xAxis;< axisPos) {< '; doFullTranslate: function() {
1561 < 1 ? this : xAxis;< axisPos) {< '; return this.isDirtyData || this.chart.isResizing || this.chart.renderer.isVML || !this.baseTrans;
1562 < 1 ? this : xAxis;< axisPos) {< '; },
1563  
1564 < 1 ? this : xAxis;< axisPos) {< '; /**
1565 < 1 ? this : xAxis;< axisPos) {< '; * Add the path option for data points. Find the max value for color calculation.
1566 < 1 ? this : xAxis;< axisPos) {< '; */
1567 < 1 ? this : xAxis;< axisPos) {< '; translate: function() {
1568 < 1 ? this : xAxis;< axisPos) {< '; var series = this,
1569 < 1 ? this : xAxis;< axisPos) {< '; xAxis = series.xAxis,
1570 < 1 ? this : xAxis;< axisPos) {< '; yAxis = series.yAxis,
1571 < 1 ? this : xAxis;< axisPos) {< '; doFullTranslate = series.doFullTranslate();
1572  
1573 < 1 ? this : xAxis;< axisPos) {< '; series.generatePoints();
1574  
1575 < 1 ? this : xAxis;< axisPos) {< '; each(series.data, function(point) {
1576  
1577 < 1 ? this : xAxis;< axisPos) {< '; // Record the middle point (loosely based on centroid), determined
1578 < 1 ? this : xAxis;< axisPos) {< '; // by the middleX and middleY options.
1579 < 1 ? this : xAxis;< axisPos) {< '; point.plotX = xAxis.toPixels(point._midX, true);
1580 < 1 ? this : xAxis;< axisPos) {< '; point.plotY = yAxis.toPixels(point._midY, true);
1581  
1582 < 1 ? this : xAxis;< axisPos) {< '; if (doFullTranslate) {
1583  
1584 < 1 ? this : xAxis;< axisPos) {< '; point.shapeType = 'path';
1585 < 1 ? this : xAxis;< axisPos) {< '; point.shapeArgs = {
1586 < 1 ? this : xAxis;< axisPos) {< '; d: series.translatePath(point.path)
1587 < 1 ? this : xAxis;< axisPos) {< '; };
1588 < 1 ? this : xAxis;< axisPos) {< '; }
1589 < 1 ? this : xAxis;< axisPos) {< '; });
1590  
1591 < 1 ? this : xAxis;< axisPos) {< '; series.translateColors();
1592 < 1 ? this : xAxis;< axisPos) {< '; },
1593  
1594 < 1 ? this : xAxis;< axisPos) {< '; /**
1595 < 1 ? this : xAxis;< axisPos) {< '; * Get presentational attributes. In the maps series this runs in both
1596 < 1 ? this : xAxis;< axisPos) {< '; * styled and non-styled mode, because colors hold data when a colorAxis
1597 < 1 ? this : xAxis;< axisPos) {< '; * is used.
1598 < 1 ? this : xAxis;< axisPos) {< '; */
1599 < 1 ? this : xAxis;< axisPos) {< '; pointAttribs: function(point, state) {
1600 < 1 ? this : xAxis;< axisPos) {< '; var attr;
1601  
1602 < 1 ? this : xAxis;< axisPos) {< '; attr = this.colorAttribs(point);
1603  
1604  
1605 < 1 ? this : xAxis;< axisPos) {< '; // Prevent flickering whan called from setState
1606 < 1 ? this : xAxis;< axisPos) {< '; if (point.isFading) {
1607 < 1 ? this : xAxis;< axisPos) {< '; delete attr.fill;
1608 < 1 ? this : xAxis;< axisPos) {< '; }
1609  
1610 < 1 ? this : xAxis;< axisPos) {< '; // If vector-effect is not supported, we set the stroke-width on the group element
1611 < 1 ? this : xAxis;< axisPos) {< '; // and let all point graphics inherit. That way we don't have to iterate over all
1612 < 1 ? this : xAxis;< axisPos) {< '; // points to update the stroke-width on zooming. TODO: Check unstyled
1613 < 1 ? this : xAxis;< axisPos) {< '; if (supportsVectorEffect) {
1614 < 1 ? this : xAxis;< axisPos) {< '; attr['vector-effect'] = 'non-scaling-stroke';
1615 < 1 ? this : xAxis;< axisPos) {< '; } else {
1616 < 1 ? this : xAxis;< axisPos) {< '; attr['stroke-width'] = 'inherit';
1617 < 1 ? this : xAxis;< axisPos) {< '; }
1618  
1619 < 1 ? this : xAxis;< axisPos) {< '; return attr;
1620 < 1 ? this : xAxis;< axisPos) {< '; },
1621  
1622 < 1 ? this : xAxis;< axisPos) {< '; /**
1623 < 1 ? this : xAxis;< axisPos) {< '; * Use the drawPoints method of column, that is able to handle simple shapeArgs.
1624 < 1 ? this : xAxis;< axisPos) {< '; * Extend it by assigning the tooltip position.
1625 < 1 ? this : xAxis;< axisPos) {< '; */
1626 < 1 ? this : xAxis;< axisPos) {< '; drawPoints: function() {
1627 < 1 ? this : xAxis;< axisPos) {< '; var series = this,
1628 < 1 ? this : xAxis;< axisPos) {< '; xAxis = series.xAxis,
1629 < 1 ? this : xAxis;< axisPos) {< '; yAxis = series.yAxis,
1630 < 1 ? this : xAxis;< axisPos) {< '; group = series.group,
1631 < 1 ? this : xAxis;< axisPos) {< '; chart = series.chart,
1632 < 1 ? this : xAxis;< axisPos) {< '; renderer = chart.renderer,
1633 < 1 ? this : xAxis;< axisPos) {< '; scaleX,
1634 < 1 ? this : xAxis;< axisPos) {< '; scaleY,
1635 < 1 ? this : xAxis;< axisPos) {< '; translateX,
1636 < 1 ? this : xAxis;< axisPos) {< '; translateY,
1637 < 1 ? this : xAxis;< axisPos) {< '; baseTrans = this.baseTrans,
1638 < 1 ? this : xAxis;< axisPos) {< '; transformGroup,
1639 < 1 ? this : xAxis;< axisPos) {< '; startTranslateX,
1640 < 1 ? this : xAxis;< axisPos) {< '; startTranslateY,
1641 < 1 ? this : xAxis;< axisPos) {< '; startScaleX,
1642 < 1 ? this : xAxis;< axisPos) {< '; startScaleY;
1643  
1644 < 1 ? this : xAxis;< axisPos) {< '; // Set a group that handles transform during zooming and panning in order to preserve clipping
1645 < 1 ? this : xAxis;< axisPos) {< '; // on series.group
1646 < 1 ? this : xAxis;< axisPos) {< '; if (!series.transformGroup) {
1647 < 1 ? this : xAxis;< axisPos) {< '; series.transformGroup = renderer.g()
1648 < 1 ? this : xAxis;< axisPos) {< '; .attr({
1649 < 1 ? this : xAxis;< axisPos) {< '; scaleX: 1,
1650 < 1 ? this : xAxis;< axisPos) {< '; scaleY: 1
1651 < 1 ? this : xAxis;< axisPos) {< '; })
1652 < 1 ? this : xAxis;< axisPos) {< '; .add(group);
1653 < 1 ? this : xAxis;< axisPos) {< '; series.transformGroup.survive = true;
1654 < 1 ? this : xAxis;< axisPos) {< '; }
1655  
1656 < 1 ? this : xAxis;< axisPos) {< '; // Draw the shapes again
1657 < 1 ? this : xAxis;< axisPos) {< '; if (series.doFullTranslate()) {
1658  
1659 < 1 ? this : xAxis;< axisPos) {< '; // Individual point actions. TODO: Check unstyled.
1660  
1661  
1662 < 1 ? this : xAxis;< axisPos) {< '; // Draw them in transformGroup
1663 < 1 ? this : xAxis;< axisPos) {< '; series.group = series.transformGroup;
1664 < 1 ? this : xAxis;< axisPos) {< '; seriesTypes.column.prototype.drawPoints.apply(series);
1665 < 1 ? this : xAxis;< axisPos) {< '; series.group = group; // Reset
1666  
1667 < 1 ? this : xAxis;< axisPos) {< '; // Add class names
1668 < 1 ? this : xAxis;< axisPos) {< '; each(series.points, function(point) {
1669 < 1 ? this : xAxis;< axisPos) {< '; if (point.graphic) {
1670 < 1 ? this : xAxis;< axisPos) {< '; if (point.name) {
1671 < 1 ? this : xAxis;< axisPos) {< '; point.graphic.addClass('highcharts-name-' + point.name.replace(/ /g, '-').toLowerCase());
1672 < 1 ? this : xAxis;< axisPos) {< '; }
1673 < 1 ? this : xAxis;< axisPos) {< '; if (point.properties && point.properties['hc-key']) {
1674 < 1 ? this : xAxis;< axisPos) {< '; point.graphic.addClass('highcharts-key-' + point.properties['hc-key'].toLowerCase());
1675 < 1 ? this : xAxis;< axisPos) {< '; }
1676  
1677  
1678 < 1 ? this : xAxis;< axisPos) {< '; point.graphic.css(
1679 < 1 ? this : xAxis;< axisPos) {< '; series.pointAttribs(point, point.selected && 'select')
1680 < 1 ? this : xAxis;< axisPos) {< '; );
1681  
1682 < 1 ? this : xAxis;< axisPos) {< '; }
1683 < 1 ? this : xAxis;< axisPos) {< '; });
1684  
1685 < 1 ? this : xAxis;< axisPos) {< '; // Set the base for later scale-zooming. The originX and originY properties are the
1686 < 1 ? this : xAxis;< axisPos) {< '; // axis values in the plot area's upper left corner.
1687 < 1 ? this : xAxis;< axisPos) {< '; this.baseTrans = {
1688 < 1 ? this : xAxis;< axisPos) {< '; originX: xAxis.min - xAxis.minPixelPadding / xAxis.transA,
1689 < 1 ? this : xAxis;< axisPos) {< '; originY: yAxis.min - yAxis.minPixelPadding / yAxis.transA + (yAxis.reversed ? 0 : yAxis.len / yAxis.transA),
1690 < 1 ? this : xAxis;< axisPos) {< '; transAX: xAxis.transA,
1691 < 1 ? this : xAxis;< axisPos) {< '; transAY: yAxis.transA
1692 < 1 ? this : xAxis;< axisPos) {< '; };
1693  
1694 < 1 ? this : xAxis;< axisPos) {< '; // Reset transformation in case we're doing a full translate (#3789)
1695 < 1 ? this : xAxis;< axisPos) {< '; this.transformGroup.animate({
1696 < 1 ? this : xAxis;< axisPos) {< '; translateX: 0,
1697 < 1 ? this : xAxis;< axisPos) {< '; translateY: 0,
1698 < 1 ? this : xAxis;< axisPos) {< '; scaleX: 1,
1699 < 1 ? this : xAxis;< axisPos) {< '; scaleY: 1
1700 < 1 ? this : xAxis;< axisPos) {< '; });
1701  
1702 < 1 ? this : xAxis;< axisPos) {< '; // Just update the scale and transform for better performance
1703 < 1 ? this : xAxis;< axisPos) {< '; } else {
1704 < 1 ? this : xAxis;< axisPos) {< '; scaleX = xAxis.transA / baseTrans.transAX;
1705 < 1 ? this : xAxis;< axisPos) {< '; scaleY = yAxis.transA / baseTrans.transAY;
1706 < 1 ? this : xAxis;< axisPos) {< '; translateX = xAxis.toPixels(baseTrans.originX, true);
1707 < 1 ? this : xAxis;< axisPos) {< '; translateY = yAxis.toPixels(baseTrans.originY, true);
1708  
1709 < 1 ? this : xAxis;< axisPos) {< '; // Handle rounding errors in normal view (#3789)
1710 < 1 ? this : xAxis;< axisPos) {< '; if (scaleX > 0.99 && scaleX < 1.01 && scaleY > 0.99 && scaleY < 1.01) {
1711 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX = 1;
1712 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY = 1;
1713 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX = Math.round(translateX);
1714 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY = Math.round(translateY);
1715 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1716  
1717 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Animate or move to the new zoom level. In order to prevent
1718 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // flickering as the different transform components are set out of
1719 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // sync (#5991), we run a fake animator attribute and set scale and
1720 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // translation synchronously in the same step.
1721 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // A possible improvement to the API would be to handle this in the
1722 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // renderer or animation engine itself, to ensure that when we are
1723 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // animating multiple properties, we make sure that each step for
1724 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // each property is performed in the same step. Also, for symbols
1725 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // and for transform properties, it should induce a single
1726 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // updateTransform and symbolAttr call.
1727 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transformGroup = this.transformGroup;
1728 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (chart.renderer.globalAnimation) {
1729 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startTranslateX = transformGroup.attr('translateX');
1730 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startTranslateY = transformGroup.attr('translateY');
1731 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startScaleX = transformGroup.attr('scaleX');
1732 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startScaleY = transformGroup.attr('scaleY');
1733 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transformGroup
1734 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { .attr({
1735 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animator: 0
1736 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { })
1737 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { .animate({
1738 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animator: 1
1739 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
1740 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { step: function(now, fx) {
1741 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transformGroup.attr({
1742 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: startTranslateX +
1743 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (translateX - startTranslateX) * fx.pos,
1744 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: startTranslateY +
1745 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (translateY - startTranslateY) * fx.pos,
1746 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: startScaleX +
1747 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (scaleX - startScaleX) * fx.pos,
1748 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: startScaleY +
1749 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (scaleY - startScaleY) * fx.pos
1750 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
1751  
1752 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1753 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
1754  
1755 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // When dragging, animation is off.
1756 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
1757 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transformGroup.attr({
1758 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: translateX,
1759 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: translateY,
1760 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: scaleX,
1761 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: scaleY
1762 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
1763 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1764  
1765 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1766  
1767 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Set the stroke-width directly on the group element so the children inherit it. We need to use
1768 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // setAttribute directly, because the stroke-widthSetter method expects a stroke color also to be
1769 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // set.
1770 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!supportsVectorEffect) {
1771 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.group.element.setAttribute(
1772 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'stroke-width',
1773 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.options[
1774 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (series.pointAttrToOptions && series.pointAttrToOptions['stroke-width']) || 'borderWidth'
1775 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ] / (scaleX || 1)
1776 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
1777 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1778  
1779 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.drawMapDataLabels();
1780  
1781  
1782 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
1783  
1784 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1785 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Draw the data labels. Special for maps is the time that the data labels are drawn (after points),
1786 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * and the clipping of the dataLabelsGroup.
1787 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1788 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawMapDataLabels: function() {
1789  
1790 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series.prototype.drawDataLabels.call(this);
1791 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (this.dataLabelsGroup) {
1792 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.dataLabelsGroup.clip(this.chart.clipRect);
1793 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1794 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
1795  
1796 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1797 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Override render to throw in an async call in IE8. Otherwise it chokes on the US counties demo.
1798 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1799 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { render: function() {
1800 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var series = this,
1801 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { render = Series.prototype.render;
1802  
1803 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Give IE8 some time to breathe.
1804 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series.chart.renderer.isVML && series.data.length > 3000) {
1805 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { setTimeout(function() {
1806 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { render.call(series);
1807 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
1808 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
1809 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { render.call(series);
1810 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1811 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
1812  
1813 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1814 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The initial animation for the map series. By default, animation is disabled.
1815 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Animation of map shapes is not at all supported in VML browsers.
1816 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1817 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animate: function(init) {
1818 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var chart = this.chart,
1819 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animation = this.options.animation,
1820 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { group = this.group,
1821 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis = this.xAxis,
1822 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { yAxis = this.yAxis,
1823 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { left = xAxis.pos,
1824 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { top = yAxis.pos;
1825  
1826 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (chart.renderer.isSVG) {
1827  
1828 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (animation === true) {
1829 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animation = {
1830 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { duration: 1000
1831 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
1832 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1833  
1834 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Initialize the animation
1835 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (init) {
1836  
1837 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Scale down the group and place it in the center
1838 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { group.attr({
1839 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: left + xAxis.len / 2,
1840 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: top + yAxis.len / 2,
1841 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: 0.001, // #1499
1842 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: 0.001
1843 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
1844  
1845 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Run the animation
1846 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
1847 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { group.animate({
1848 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: left,
1849 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: top,
1850 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: 1,
1851 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: 1
1852 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, animation);
1853  
1854 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Delete this function to allow it only once
1855 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.animate = null;
1856 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1857 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1858 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
1859  
1860 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1861 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Animate in the new series from the clicked point in the old series.
1862 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Depends on the drilldown.js module
1863 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1864 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animateDrilldown: function(init) {
1865 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var toBox = this.chart.plotBox,
1866 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { level = this.chart.drilldownLevels[this.chart.drilldownLevels.length - 1],
1867 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { fromBox = level.bBox,
1868 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animationOptions = this.chart.options.drilldown.animation,
1869 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scale;
1870  
1871 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!init) {
1872  
1873 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scale = Math.min(fromBox.width / toBox.width, fromBox.height / toBox.height);
1874 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { level.shapeArgs = {
1875 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: scale,
1876 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: scale,
1877 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: fromBox.x,
1878 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: fromBox.y
1879 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
1880  
1881 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(this.points, function(point) {
1882 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (point.graphic) {
1883 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.graphic
1884 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { .attr(level.shapeArgs)
1885 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { .animate({
1886 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: 1,
1887 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: 1,
1888 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: 0,
1889 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: 0
1890 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, animationOptions);
1891 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1892 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
1893  
1894 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.animate = null;
1895 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1896  
1897 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
1898  
1899 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawLegendSymbol: LegendSymbolMixin.drawRectangle,
1900  
1901 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1902 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * When drilling up, pull out the individual point graphics from the lower series
1903 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * and animate them into the origin point in the upper series.
1904 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1905 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animateDrillupFrom: function(level) {
1906 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.column.prototype.animateDrillupFrom.call(this, level);
1907 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
1908  
1909  
1910 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1911 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * When drilling up, keep the upper series invisible until the lower series has
1912 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * moved into place
1913 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1914 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animateDrillupTo: function(init) {
1915 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.column.prototype.animateDrillupTo.call(this, init);
1916 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1917  
1918 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Point class
1919 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }), extend({
1920 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1921 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Extend the Point object to split paths
1922 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1923 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { applyOptions: function(options, x) {
1924  
1925 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var point = Point.prototype.applyOptions.call(this, options, x),
1926 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series = this.series,
1927 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { joinBy = series.joinBy,
1928 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapPoint;
1929  
1930 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series.mapData) {
1931 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapPoint = point[joinBy[1]] !== undefined && series.mapMap[point[joinBy[1]]];
1932 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (mapPoint) {
1933 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // This applies only to bubbles
1934 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series.xyFromShape) {
1935 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.x = mapPoint._midX;
1936 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.y = mapPoint._midY;
1937 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1938 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extend(point, mapPoint); // copy over properties
1939 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
1940 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.value = point.value || null;
1941 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1942 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1943  
1944 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return point;
1945 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
1946  
1947 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1948 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Stop the fade-out
1949 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1950 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { onMouseOver: function(e) {
1951 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { clearTimeout(this.colorInterval);
1952 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (this.value !== null || this.series.options.nullInteraction) {
1953 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Point.prototype.onMouseOver.call(this, e);
1954 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else { //#3401 Tooltip doesn't hide when hovering over null points
1955 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.series.onMouseOut(e);
1956 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1957 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
1958  
1959  
1960 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1961 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Zoom in on the point using the global animation.
1962 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
1963 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function #zoomTo
1964 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Point
1965 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/members/point-zoomto/
1966 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Zoom to points from butons
1967 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1968 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomTo: function() {
1969 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var point = this,
1970 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series = point.series;
1971  
1972 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.xAxis.setExtremes(
1973 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point._minX,
1974 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point._maxX,
1975 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { false
1976 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
1977 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.yAxis.setExtremes(
1978 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point._minY,
1979 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point._maxY,
1980 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { false
1981 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
1982 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.chart.redraw();
1983 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
1984 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, colorPointMixin));
1985  
1986 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
1987 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
1988 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
1989 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
1990 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
1991 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
1992 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
1993 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var seriesType = H.seriesType,
1994 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes = H.seriesTypes;
1995  
1996 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The mapline series type
1997 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('mapline', 'map', {
1998  
1999 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2000 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type: 'mapline',
2001 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { colorProp: 'stroke',
2002  
2003 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawLegendSymbol: seriesTypes.line.prototype.drawLegendSymbol
2004 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2005  
2006 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2007 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2008 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2009 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2010 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2011 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2012 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2013 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var merge = H.merge,
2014 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Point = H.Point,
2015 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType = H.seriesType;
2016  
2017 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The mappoint series type
2018 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('mappoint', 'scatter', {
2019 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { dataLabels: {
2020 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { enabled: true,
2021 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { formatter: function() { // #2945
2022 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.point.name;
2023 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2024 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { crop: false,
2025 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { defer: false,
2026 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { overflow: false,
2027 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { style: {
2028 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { color: '#000000'
2029 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2030 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2031  
2032 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Prototype members
2033 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2034 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type: 'mappoint',
2035 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { forceDL: true
2036  
2037 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Point class
2038 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2039 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { applyOptions: function(options, x) {
2040 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var mergedOptions = options.lat !== undefined && options.lon !== undefined ? merge(options, this.series.chart.fromLatLonToPoint(options)) : options;
2041 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return Point.prototype.applyOptions.call(this, mergedOptions, x);
2042 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2043 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2044  
2045 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2046 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2047 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2048 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2049 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2050 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2051 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2052 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var arrayMax = H.arrayMax,
2053 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { arrayMin = H.arrayMin,
2054 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Axis = H.Axis,
2055 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { color = H.color,
2056 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each = H.each,
2057 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { isNumber = H.isNumber,
2058 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { noop = H.noop,
2059 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pick = H.pick,
2060 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pInt = H.pInt,
2061 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Point = H.Point,
2062 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series = H.Series,
2063 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType = H.seriesType,
2064 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes = H.seriesTypes;
2065  
2066 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /* ****************************************************************************
2067 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Start Bubble series code *
2068 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *****************************************************************************/
2069  
2070 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('bubble', 'scatter', {
2071 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { dataLabels: {
2072 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { formatter: function() { // #2945
2073 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.point.z;
2074 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2075 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { inside: true,
2076 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { verticalAlign: 'middle'
2077 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2078 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // displayNegative: true,
2079 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { marker: {
2080  
2081 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Avoid offset in Point.setState
2082 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius: null,
2083 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { states: {
2084 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hover: {
2085 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radiusPlus: 0
2086 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2087 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2088 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { symbol: 'circle'
2089 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2090 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { minSize: 8,
2091 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { maxSize: '20%',
2092 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // negativeColor: null,
2093 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // sizeBy: 'area'
2094 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { softThreshold: false,
2095 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { states: {
2096 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hover: {
2097 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { halo: {
2098 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { size: 5
2099 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2100 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2101 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2102 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { tooltip: {
2103 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointFormat: '({point.x}, {point.y}), Size: {point.z}'
2104 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2105 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { turboThreshold: 0,
2106 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zThreshold: 0,
2107 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoneAxis: 'z'
2108  
2109 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Prototype members
2110 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2111 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointArrayMap: ['y', 'z'],
2112 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { parallelArrays: ['x', 'y', 'z'],
2113 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { trackerGroups: ['group', 'dataLabelsGroup'],
2114 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { specialGroup: 'group', // To allow clipping (#6296)
2115 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { bubblePadding: true,
2116 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoneAxis: 'z',
2117 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { directTouch: true,
2118  
2119  
2120  
2121 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2122 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Get the radius for each point based on the minSize, maxSize and each point's Z value. This
2123 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * must be done prior to Series.translate because the axis needs to add padding in
2124 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * accordance with the point sizes.
2125 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2126 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getRadii: function(zMin, zMax, minSize, maxSize) {
2127 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var len,
2128 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { i,
2129 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pos,
2130 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zData = this.zData,
2131 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radii = [],
2132 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = this.options,
2133 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { sizeByArea = options.sizeBy !== 'width',
2134 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zThreshold = options.zThreshold,
2135 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zRange = zMax - zMin,
2136 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { value,
2137 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius;
2138  
2139 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Set the shape type and arguments to be picked up in drawPoints
2140 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (i = 0, len = zData.length; i < len; i++) {
2141  
2142 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { value = zData[i];
2143  
2144 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // When sizing by threshold, the absolute value of z determines the size
2145 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // of the bubble.
2146 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (options.sizeByAbsoluteValue && value !== null) {
2147 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { value = Math.abs(value - zThreshold);
2148 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMax = Math.max(zMax - zThreshold, Math.abs(zMin - zThreshold));
2149 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMin = 0;
2150 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2151  
2152 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (value === null) {
2153 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = null;
2154 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Issue #4419 - if value is less than zMin, push a radius that's always smaller than the minimum size
2155 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (value < zMin) {
2156 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = minSize / 2 - 1;
2157 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
2158 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Relative size, a number between 0 and 1
2159 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pos = zRange > 0 ? (value - zMin) / zRange : 0.5;
2160  
2161 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (sizeByArea && pos >= 0) {
2162 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pos = Math.sqrt(pos);
2163 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2164 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = Math.ceil(minSize + pos * (maxSize - minSize)) / 2;
2165 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2166 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radii.push(radius);
2167 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2168 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.radii = radii;
2169 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2170  
2171 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2172 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Perform animation on the bubbles
2173 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2174 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animate: function(init) {
2175 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var animation = this.options.animation;
2176  
2177 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!init) { // run the animation
2178 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(this.points, function(point) {
2179 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var graphic = point.graphic,
2180 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animationTarget;
2181  
2182 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (graphic && graphic.width) { // URL symbols don't have width
2183 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animationTarget = {
2184 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: graphic.x,
2185 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: graphic.y,
2186 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: graphic.width,
2187 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: graphic.height
2188 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2189  
2190 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Start values
2191 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { graphic.attr({
2192 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: point.plotX,
2193 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: point.plotY,
2194 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: 1,
2195 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: 1
2196 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2197  
2198 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Run animation
2199 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { graphic.animate(animationTarget, animation);
2200 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2201 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2202  
2203 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // delete this function to allow it only once
2204 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.animate = null;
2205 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2206 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2207  
2208 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2209 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Extend the base translate method to handle bubble size
2210 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2211 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translate: function() {
2212  
2213 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var i,
2214 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { data = this.data,
2215 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point,
2216 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius,
2217 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radii = this.radii;
2218  
2219 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Run the parent method
2220 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.scatter.prototype.translate.call(this);
2221  
2222 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Set the shape type and arguments to be picked up in drawPoints
2223 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { i = data.length;
2224  
2225 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { while (i--) {
2226 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = data[i];
2227 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = radii ? radii[i] : 0; // #1737
2228  
2229 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (isNumber(radius) && radius >= this.minPxSize / 2) {
2230 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Shape arguments
2231 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.marker = H.extend(point.marker, {
2232 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius: radius,
2233 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: 2 * radius,
2234 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: 2 * radius
2235 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2236  
2237 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Alignment box for the data label
2238 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.dlBox = {
2239 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: point.plotX - radius,
2240 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: point.plotY - radius,
2241 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: 2 * radius,
2242 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: 2 * radius
2243 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2244 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else { // below zThreshold
2245 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.shapeArgs = point.plotY = point.dlBox = undefined; // #1691
2246 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2247 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2248 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2249  
2250 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
2251 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { buildKDTree: noop,
2252 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { applyZones: noop
2253  
2254 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Point class
2255 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2256 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { haloPath: function(size) {
2257 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return Point.prototype.haloPath.call(
2258 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this,
2259 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { size === 0 ? 0 : (this.marker ? this.marker.radius || 0 : 0) + size // #6067
2260 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
2261 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2262 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ttBelow: false
2263 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2264  
2265 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2266 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Add logic to pad each axis with the amount of pixels
2267 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * necessary to avoid the bubbles to overflow.
2268 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2269 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Axis.prototype.beforePadding = function() {
2270 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var axis = this,
2271 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { axisLength = this.len,
2272 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { chart = this.chart,
2273 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMin = 0,
2274 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMax = axisLength,
2275 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { isXAxis = this.isXAxis,
2276 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { dataKey = isXAxis ? 'xData' : 'yData',
2277 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { min = this.min,
2278 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extremes = {},
2279 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { smallestSize = Math.min(chart.plotWidth, chart.plotHeight),
2280 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMin = Number.MAX_VALUE,
2281 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMax = -Number.MAX_VALUE,
2282 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { range = this.max - min,
2283 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transA = axisLength / range,
2284 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { activeSeries = [];
2285  
2286 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Handle padding on the second pass, or on redraw
2287 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(this.series, function(series) {
2288  
2289 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var seriesOptions = series.options,
2290 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zData;
2291  
2292 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series.bubblePadding && (series.visible || !chart.options.chart.ignoreHiddenSeries)) {
2293  
2294 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Correction for #1673
2295 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { axis.allowZoomOutside = true;
2296  
2297 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Cache it
2298 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { activeSeries.push(series);
2299  
2300 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (isXAxis) { // because X axis is evaluated first
2301  
2302 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // For each series, translate the size extremes to pixel values
2303 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(['minSize', 'maxSize'], function(prop) {
2304 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var length = seriesOptions[prop],
2305 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { isPercent = /%$/.test(length);
2306  
2307 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { length = pInt(length);
2308 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extremes[prop] = isPercent ?
2309 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { smallestSize * length / 100 :
2310 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { length;
2311  
2312 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2313 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.minPxSize = extremes.minSize;
2314 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Prioritize min size if conflict to make sure bubbles are
2315 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // always visible. #5873
2316 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.maxPxSize = Math.max(extremes.maxSize, extremes.minSize);
2317  
2318 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Find the min and max Z
2319 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zData = series.zData;
2320 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (zData.length) { // #1735
2321 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMin = pick(seriesOptions.zMin, Math.min(
2322 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMin,
2323 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Math.max(
2324 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { arrayMin(zData),
2325 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesOptions.displayNegative === false ? seriesOptions.zThreshold : -Number.MAX_VALUE
2326 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { )
2327 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ));
2328 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMax = pick(seriesOptions.zMax, Math.max(zMax, arrayMax(zData)));
2329 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2330 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2331 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2332 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2333  
2334 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(activeSeries, function(series) {
2335  
2336 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var data = series[dataKey],
2337 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { i = data.length,
2338 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius;
2339  
2340 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (isXAxis) {
2341 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.getRadii(zMin, zMax, series.minPxSize, series.maxPxSize);
2342 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2343  
2344 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (range > 0) {
2345 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { while (i--) {
2346 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (isNumber(data[i]) && axis.dataMin <= data[i] && data[i] <= axis.dataMax) {
2347 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = series.radii[i];
2348 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMin = Math.min(((data[i] - min) * transA) - radius, pxMin);
2349 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMax = Math.max(((data[i] - min) * transA) + radius, pxMax);
2350 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2351 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2352 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2353 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2354  
2355 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (activeSeries.length && range > 0 && !this.isLog) {
2356 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMax -= axisLength;
2357 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transA *= (axisLength + pxMin - pxMax) / axisLength;
2358 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each([
2359 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ['min', 'userMin', pxMin],
2360 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ['max', 'userMax', pxMax]
2361 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ], function(keys) {
2362 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (pick(axis.options[keys[0]], axis[keys[1]]) === undefined) {
2363 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { axis[keys[0]] += keys[2] / transA;
2364 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2365 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2366 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2367 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2368  
2369 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /* ****************************************************************************
2370 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * End Bubble series code *
2371 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *****************************************************************************/
2372  
2373 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2374 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2375 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2376 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2377 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2378 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2379 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2380 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var merge = H.merge,
2381 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Point = H.Point,
2382 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType = H.seriesType,
2383 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes = H.seriesTypes;
2384  
2385 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The mapbubble series type
2386 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (seriesTypes.bubble) {
2387  
2388 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('mapbubble', 'bubble', {
2389 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animationLimit: 500,
2390 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { tooltip: {
2391 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointFormat: '{point.name}: {point.z}'
2392 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2393  
2394 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Prototype members
2395 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2396 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xyFromShape: true,
2397 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type: 'mapbubble',
2398 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointArrayMap: ['z'], // If one single value is passed, it is interpreted as z
2399 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2400 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Return the map area identified by the dataJoinBy option
2401 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2402 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getMapData: seriesTypes.map.prototype.getMapData,
2403 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getBox: seriesTypes.map.prototype.getBox,
2404 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { setData: seriesTypes.map.prototype.setData
2405  
2406 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Point class
2407 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2408 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { applyOptions: function(options, x) {
2409 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var point;
2410 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (options && options.lat !== undefined && options.lon !== undefined) {
2411 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = Point.prototype.applyOptions.call(
2412 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this,
2413 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { merge(options, this.series.chart.fromLatLonToPoint(options)),
2414 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x
2415 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
2416 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
2417 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = seriesTypes.map.prototype.pointClass.prototype.applyOptions.call(this, options, x);
2418 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2419 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return point;
2420 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2421 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ttBelow: false
2422 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2423 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2424  
2425 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2426 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2427 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2428 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2429 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2430 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2431 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2432 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var colorPointMixin = H.colorPointMixin,
2433 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { colorSeriesMixin = H.colorSeriesMixin,
2434 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each = H.each,
2435 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { LegendSymbolMixin = H.LegendSymbolMixin,
2436 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { merge = H.merge,
2437 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { noop = H.noop,
2438 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pick = H.pick,
2439 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series = H.Series,
2440 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType = H.seriesType,
2441 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes = H.seriesTypes;
2442  
2443 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The Heatmap series type
2444 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('heatmap', 'scatter', {
2445 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animation: false,
2446 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { borderWidth: 0,
2447  
2448 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { dataLabels: {
2449 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { formatter: function() { // #2945
2450 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.point.value;
2451 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2452 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { inside: true,
2453 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { verticalAlign: 'middle',
2454 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { crop: false,
2455 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { overflow: false,
2456 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { padding: 0 // #3837
2457 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2458 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { marker: null,
2459 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointRange: null, // dynamically set to colsize by default
2460 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { tooltip: {
2461 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointFormat: '{point.x}, {point.y}: {point.value}<br/>'
2462 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2463 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { states: {
2464 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { normal: {
2465 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animation: true
2466 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2467 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hover: {
2468 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { halo: false, // #3406, halo is not required on heatmaps
2469 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { brightness: 0.2
2470 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2471 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2472 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, merge(colorSeriesMixin, {
2473 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointArrayMap: ['y', 'value'],
2474 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hasPointSpecificOptions: true,
2475 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { supportsDrilldown: true,
2476 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getExtremesFromAll: true,
2477 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { directTouch: true,
2478  
2479 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2480 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Override the init method to add point ranges on both axes.
2481 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2482 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { init: function() {
2483 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var options;
2484 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.scatter.prototype.init.apply(this, arguments);
2485  
2486 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = this.options;
2487 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options.pointRange = pick(options.pointRange, options.colsize || 1); // #3758, prevent resetting in setData
2488 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.yAxis.axisPointRange = options.rowsize || 1; // general point range
2489 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2490 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translate: function() {
2491 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var series = this,
2492 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = series.options,
2493 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis = series.xAxis,
2494 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { yAxis = series.yAxis,
2495 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { between = function(x, a, b) {
2496 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return Math.min(Math.max(a, x), b);
2497 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2498  
2499 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.generatePoints();
2500  
2501 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(series.points, function(point) {
2502 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var xPad = (options.colsize || 1) / 2,
2503 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { yPad = (options.rowsize || 1) / 2,
2504 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x1 = between(Math.round(xAxis.len - xAxis.translate(point.x - xPad, 0, 1, 0, 1)), -xAxis.len, 2 * xAxis.len),
2505 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x2 = between(Math.round(xAxis.len - xAxis.translate(point.x + xPad, 0, 1, 0, 1)), -xAxis.len, 2 * xAxis.len),
2506 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y1 = between(Math.round(yAxis.translate(point.y - yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len),
2507 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y2 = between(Math.round(yAxis.translate(point.y + yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len);
2508  
2509 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Set plotX and plotY for use in K-D-Tree and more
2510 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.plotX = point.clientX = (x1 + x2) / 2;
2511 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.plotY = (y1 + y2) / 2;
2512  
2513 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.shapeType = 'rect';
2514 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.shapeArgs = {
2515 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: Math.min(x1, x2),
2516 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: Math.min(y1, y2),
2517 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: Math.abs(x2 - x1),
2518 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: Math.abs(y2 - y1)
2519 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2520 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2521  
2522 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.translateColors();
2523 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2524 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawPoints: function() {
2525 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.column.prototype.drawPoints.call(this);
2526  
2527 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(this.points, function(point) {
2528  
2529 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // In styled mode, use CSS, otherwise the fill used in the style
2530 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // sheet will take precesence over the fill attribute.
2531 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.graphic.css(this.colorAttribs(point));
2532  
2533 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, this);
2534 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2535 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animate: noop,
2536 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getBox: noop,
2537 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawLegendSymbol: LegendSymbolMixin.drawRectangle,
2538 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
2539 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getExtremes: function() {
2540 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Get the extremes from the value data
2541 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series.prototype.getExtremes.call(this, this.valueData);
2542 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.valueMin = this.dataMin;
2543 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.valueMax = this.dataMax;
2544  
2545 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Get the extremes from the y data
2546 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series.prototype.getExtremes.call(this);
2547 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2548  
2549 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }), colorPointMixin);
2550  
2551 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2552 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2553 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2554 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2555 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2556 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2557 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2558 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var Chart = H.Chart,
2559 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each = H.each,
2560 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extend = H.extend,
2561 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { format = H.format,
2562 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { merge = H.merge,
2563 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { win = H.win,
2564 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { wrap = H.wrap;
2565 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2566 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Test for point in polygon. Polygon defined as array of [x,y] points.
2567 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2568 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { function pointInPolygon(point, polygon) {
2569 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var i,
2570 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { j,
2571 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { rel1,
2572 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { rel2,
2573 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { c = false,
2574 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x = point.x,
2575 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y = point.y;
2576  
2577 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
2578 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { rel1 = polygon[i][1] > y;
2579 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { rel2 = polygon[j][1] > y;
2580 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (rel1 !== rel2 && (x < (polygon[j][0] - polygon[i][0]) * (y - polygon[i][1]) / (polygon[j][1] - polygon[i][1]) + polygon[i][0])) {
2581 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { c = !c;
2582 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2583 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2584  
2585 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return c;
2586 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2587  
2588 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2589 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Get point from latitude and longitude using specified
2590 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * transform definition.
2591 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2592 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function transformFromLatLon
2593 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Chart.prototype
2594 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2595 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} latLon
2596 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A latitude/longitude object.
2597 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Number} latLon.lat
2598 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The latitude.
2599 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Number} latLon.lon
2600 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The longitude.
2601 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} transform
2602 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The transform definition to use as explained in the {@link
2603 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * https://www.highcharts.com/docs/maps/latlon|documentation}.
2604 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2605 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
2606 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * An object with `x` and `y` properties.
2607 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2608 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/series/latlon-transform/
2609 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Use specific transformation for lat/lon
2610 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2611 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Chart.prototype.transformFromLatLon = function(latLon, transform) {
2612 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (win.proj4 === undefined) {
2613 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.error(21);
2614 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return {
2615 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: 0,
2616 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: null
2617 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2618 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2619  
2620 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var projected = win.proj4(transform.crs, [latLon.lon, latLon.lat]),
2621 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { cosAngle = transform.cosAngle || (transform.rotation && Math.cos(transform.rotation)),
2622 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { sinAngle = transform.sinAngle || (transform.rotation && Math.sin(transform.rotation)),
2623 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { rotated = transform.rotation ? [projected[0] * cosAngle + projected[1] * sinAngle, -projected[0] * sinAngle + projected[1] * cosAngle] : projected;
2624  
2625 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return {
2626 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: ((rotated[0] - (transform.xoffset || 0)) * (transform.scale || 1) + (transform.xpan || 0)) * (transform.jsonres || 1) + (transform.jsonmarginX || 0),
2627 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: (((transform.yoffset || 0) - rotated[1]) * (transform.scale || 1) + (transform.ypan || 0)) * (transform.jsonres || 1) - (transform.jsonmarginY || 0)
2628 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2629 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2630  
2631 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2632 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Get latLon from point using specified transform definition.
2633 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The method returns an object with the numeric properties `lat` and `lon`.
2634 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2635 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function transformToLatLon
2636 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Chart.prototype
2637 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2638 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Point|Object} point
2639 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A `Point` instance, or or any object containing the properties `x`
2640 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * and `y` with numeric values.
2641 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} transform
2642 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The transform definition to use as explained in the {@link
2643 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * https://www.highcharts.com/docs/maps/latlon|documentation}.
2644 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2645 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
2646 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * An object with `lat` and `lon` properties.
2647 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2648 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/series/latlon-transform/
2649 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Use specific transformation for lat/lon
2650 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2651 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2652 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Chart.prototype.transformToLatLon = function(point, transform) {
2653 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (win.proj4 === undefined) {
2654 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.error(21);
2655 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return;
2656 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2657  
2658 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var normalized = {
2659 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: ((point.x - (transform.jsonmarginX || 0)) / (transform.jsonres || 1) - (transform.xpan || 0)) / (transform.scale || 1) + (transform.xoffset || 0),
2660 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: ((-point.y - (transform.jsonmarginY || 0)) / (transform.jsonres || 1) + (transform.ypan || 0)) / (transform.scale || 1) + (transform.yoffset || 0)
2661 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2662 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { cosAngle = transform.cosAngle || (transform.rotation && Math.cos(transform.rotation)),
2663 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { sinAngle = transform.sinAngle || (transform.rotation && Math.sin(transform.rotation)),
2664 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Note: Inverted sinAngle to reverse rotation direction
2665 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { projected = win.proj4(transform.crs, 'WGS84', transform.rotation ? {
2666 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: normalized.x * cosAngle + normalized.y * -sinAngle,
2667 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: normalized.x * sinAngle + normalized.y * cosAngle
2668 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } : normalized);
2669  
2670 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return {
2671 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { lat: projected.y,
2672 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { lon: projected.x
2673 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2674 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2675  
2676 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2677 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Calculate latitude/longitude values for a point. Returns an
2678 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * object with the numeric properties `lat` and `lon`.
2679 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2680 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function fromPointToLatLon
2681 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Chart.prototype
2682 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2683 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Point|Object} point
2684 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A `Point` instance or anything containing `x` and `y` properties
2685 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * with numeric values
2686 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
2687 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * An object with `lat` and `lon` properties.
2688 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2689 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/demo/latlon-advanced/
2690 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Advanced lat/lon demo
2691 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2692 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Chart.prototype.fromPointToLatLon = function(point) {
2693 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var transforms = this.mapTransforms,
2694 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transform;
2695  
2696 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!transforms) {
2697 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.error(22);
2698 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return;
2699 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2700  
2701 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (transform in transforms) {
2702 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (transforms.hasOwnProperty(transform) && transforms[transform].hitZone &&
2703 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointInPolygon({
2704 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: point.x,
2705 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: -point.y
2706 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, transforms[transform].hitZone.coordinates[0])) {
2707 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.transformToLatLon(point, transforms[transform]);
2708 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2709 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2710  
2711 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.transformToLatLon(point, transforms['default']); // eslint-disable-line dot-notation
2712 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2713  
2714 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2715 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Get chart coordinates from latitude/longitude. Returns an
2716 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * object with x and y values corresponding to the `xAxis` and `yAxis`.
2717 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2718 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function fromLatLonToPoint
2719 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Chart.prototype
2720 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2721 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} latLon
2722 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Coordinates.
2723 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Number} latLon.lat
2724 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The latitude.
2725 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Number} latLon.lon
2726 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The longitude.
2727 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2728 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/series/latlon-to-point/
2729 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Find a point from lat/lon
2730 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2731 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
2732 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * X and Y coordinates in terms of chart axis values.
2733 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2734 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Chart.prototype.fromLatLonToPoint = function(latLon) {
2735 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var transforms = this.mapTransforms,
2736 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transform,
2737 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { coords;
2738  
2739 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!transforms) {
2740 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.error(22);
2741 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return {
2742 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: 0,
2743 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: null
2744 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2745 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2746  
2747 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (transform in transforms) {
2748 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (transforms.hasOwnProperty(transform) && transforms[transform].hitZone) {
2749 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { coords = this.transformFromLatLon(latLon, transforms[transform]);
2750 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (pointInPolygon({
2751 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: coords.x,
2752 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: -coords.y
2753 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, transforms[transform].hitZone.coordinates[0])) {
2754 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return coords;
2755 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2756 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2757 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2758  
2759 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.transformFromLatLon(latLon, transforms['default']); // eslint-disable-line dot-notation
2760 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2761  
2762 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2763 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Restructure a GeoJSON object in preparation to be read
2764 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * directly by the {@link
2765 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * https://api.highcharts.com/highmaps/plotOptions.series.mapData|
2766 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * series.mapData} option. The GeoJSON will be broken down to fit a specific
2767 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highcharts type, either `map`, `mapline` or `mappoint`. Meta data in
2768 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * GeoJSON's properties object will be copied directly over to
2769 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * {@link Point.properties} in Highmaps.
2770 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2771 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function #geojson
2772 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Highcharts
2773 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2774 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} geojson
2775 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The GeoJSON structure to parse, represented as a JavaScript object
2776 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * rather than a JSON string.
2777 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {String} [hType=map]
2778 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The Highmaps series type to prepare for. Setting "map" will return
2779 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * GeoJSON polygons and multipolygons. Setting "mapline" will return
2780 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * GeoJSON linestrings and multilinestrings. Setting "mappoint" will
2781 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * return GeoJSON points and multipoints.
2782 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2783 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
2784 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * An object ready for the `mapData` option.
2785 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2786 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample samples/maps/demo/geojson/
2787 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Simple areas
2788 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/demo/geojson-multiple-types/
2789 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Multiple types
2790 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2791 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2792 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.geojson = function(geojson, hType, series) {
2793 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var mapData = [],
2794 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = [],
2795 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { polygonToPath = function(polygon) {
2796 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var i,
2797 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { len = polygon.length;
2798 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push('M');
2799 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (i = 0; i < len; i++) {
2800 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (i === 1) {
2801 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push('L');
2802 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2803 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push(polygon[i][0], -polygon[i][1]);
2804 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2805 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2806  
2807 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hType = hType || 'map';
2808  
2809 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(geojson.features, function(feature) {
2810  
2811 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var geometry = feature.geometry,
2812 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type = geometry.type,
2813 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { coordinates = geometry.coordinates,
2814 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { properties = feature.properties,
2815 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point;
2816  
2817 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = [];
2818  
2819 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (hType === 'map' || hType === 'mapbubble') {
2820 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (type === 'Polygon') {
2821 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(coordinates, polygonToPath);
2822 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push('Z');
2823  
2824 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (type === 'MultiPolygon') {
2825 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(coordinates, function(items) {
2826 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(items, polygonToPath);
2827 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2828 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push('Z');
2829 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2830  
2831 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (path.length) {
2832 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = {
2833 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path: path
2834 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2835 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2836  
2837 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (hType === 'mapline') {
2838 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (type === 'LineString') {
2839 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { polygonToPath(coordinates);
2840 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (type === 'MultiLineString') {
2841 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(coordinates, polygonToPath);
2842 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2843  
2844 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (path.length) {
2845 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = {
2846 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path: path
2847 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2848 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2849  
2850 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (hType === 'mappoint') {
2851 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (type === 'Point') {
2852 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = {
2853 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: coordinates[0],
2854 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: -coordinates[1]
2855 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2856 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2857 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2858 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (point) {
2859 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapData.push(extend(point, {
2860 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { name: properties.name || properties.NAME,
2861  
2862 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2863 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * In Highmaps, when data is loaded from GeoJSON, the GeoJSON
2864 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * item's properies are copied over here.
2865 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2866 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @name #properties
2867 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Point
2868 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Object}
2869 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2870 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { properties: properties
2871 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }));
2872 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2873  
2874 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2875  
2876 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Create a credits text that includes map source, to be picked up in Chart.addCredits
2877 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series && geojson.copyrightShort) {
2878 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.chart.mapCredits = format(series.chart.options.credits.mapText, {
2879 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { geojson: geojson
2880 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2881 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.chart.mapCreditsFull = format(series.chart.options.credits.mapTextFull, {
2882 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { geojson: geojson
2883 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2884 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2885  
2886 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return mapData;
2887 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2888  
2889 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2890 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Override addCredits to include map source by default
2891 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2892 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { wrap(Chart.prototype, 'addCredits', function(proceed, credits) {
2893  
2894 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { credits = merge(true, this.options.credits, credits);
2895  
2896 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Disable credits link if map credits enabled. This to allow for in-text anchors.
2897 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (this.mapCredits) {
2898 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { credits.href = null;
2899 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2900  
2901 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { proceed.call(this, credits);
2902  
2903 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Add full map credits to hover
2904 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (this.credits && this.mapCreditsFull) {
2905 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.credits.attr({
2906 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { title: this.mapCreditsFull
2907 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2908 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2909 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2910  
2911 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2912 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2913 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2914 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2915 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2916 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2917 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2918 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var Chart = H.Chart,
2919 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { defaultOptions = H.defaultOptions,
2920 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each = H.each,
2921 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extend = H.extend,
2922 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { merge = H.merge,
2923 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pick = H.pick,
2924 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Renderer = H.Renderer,
2925 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { SVGRenderer = H.SVGRenderer,
2926 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { VMLRenderer = H.VMLRenderer;
2927  
2928  
2929 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Add language
2930 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extend(defaultOptions.lang, {
2931 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomIn: 'Zoom in',
2932 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomOut: 'Zoom out'
2933 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2934  
2935  
2936 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Set the default map navigation options
2937 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { defaultOptions.mapNavigation = {
2938 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { buttonOptions: {
2939 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { alignTo: 'plotBox',
2940 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { align: 'left',
2941 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { verticalAlign: 'top',
2942 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: 0,
2943 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: 18,
2944 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: 18,
2945 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { padding: 5
2946  
2947 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2948 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { buttons: {
2949 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomIn: {
2950 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { onclick: function() {
2951 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.mapZoom(0.5);
2952 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2953 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { text: '+',
2954 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: 0
2955 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2956 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomOut: {
2957 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { onclick: function() {
2958 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.mapZoom(2);
2959 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2960 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { text: '-',
2961 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: 28
2962 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2963 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2964 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mouseWheelSensitivity: 1.1
2965 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enabled: false,
2966 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableButtons: null, // inherit from enabled
2967 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableTouchZoom: null, // inherit from enabled
2968 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableDoubleClickZoom: null, // inherit from enabled
2969 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableDoubleClickZoomTo: false
2970 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableMouseWheelZoom: null, // inherit from enabled
2971 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2972  
2973 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2974 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Utility for reading SVG paths directly.
2975 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2976 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.splitPath = function(path) {
2977 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var i;
2978  
2979 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Move letters apart
2980 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = path.replace(/([A-Za-z])/g, ' $1 ');
2981 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Trim
2982 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = path.replace(/^\s*/, '').replace(/\s*$/, '');
2983  
2984 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Split on spaces and commas
2985 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = path.split(/[ ,]+/); // Extra comma to escape gulp.scripts task
2986  
2987 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Parse numbers
2988 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (i = 0; i < path.length; i++) {
2989 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!/[a-zA-Z]/.test(path[i])) {
2990 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path[i] = parseFloat(path[i]);
2991 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2992 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2993 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return path;
2994 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2995  
2996 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // A placeholder for map definitions
2997 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.maps = {};
2998  
2999  
3000  
3001  
3002  
3003 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Create symbols for the zoom buttons
3004 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { function selectiveRoundedRect(x, y, w, h, rTopLeft, rTopRight, rBottomRight, rBottomLeft) {
3005 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return [
3006 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'M', x + rTopLeft, y,
3007 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // top side
3008 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'L', x + w - rTopRight, y,
3009 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // top right corner
3010 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'C', x + w - rTopRight / 2,
3011 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y, x + w,
3012 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y + rTopRight / 2, x + w, y + rTopRight,
3013 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // right side
3014 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'L', x + w, y + h - rBottomRight,
3015 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // bottom right corner
3016 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'C', x + w, y + h - rBottomRight / 2,
3017 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x + w - rBottomRight / 2, y + h,
3018 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x + w - rBottomRight, y + h,
3019 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // bottom side
3020 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'L', x + rBottomLeft, y + h,
3021 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // bottom left corner
3022 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'C', x + rBottomLeft / 2, y + h,
3023 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x, y + h - rBottomLeft / 2,
3024 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x, y + h - rBottomLeft,
3025 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // left side
3026 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'L', x, y + rTopLeft,
3027 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // top left corner
3028 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'C', x, y + rTopLeft / 2,
3029 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x + rTopLeft / 2, y,
3030 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x + rTopLeft, y,
3031 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'Z'
3032 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ];
3033 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3034 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { SVGRenderer.prototype.symbols.topbutton = function(x, y, w, h, attr) {
3035 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return selectiveRoundedRect(x - 1, y - 1, w, h, attr.r, attr.r, 0, 0);
3036 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3037 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { SVGRenderer.prototype.symbols.bottombutton = function(x, y, w, h, attr) {
3038 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return selectiveRoundedRect(x - 1, y - 1, w, h, 0, 0, attr.r, attr.r);
3039 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3040 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The symbol callbacks are generated on the SVGRenderer object in all browsers. Even
3041 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // VML browsers need this in order to generate shapes in export. Now share
3042 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // them with the VMLRenderer.
3043 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (Renderer === VMLRenderer) {
3044 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(['topbutton', 'bottombutton'], function(shape) {
3045 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { VMLRenderer.prototype.symbols[shape] = SVGRenderer.prototype.symbols[shape];
3046 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3047 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3048  
3049  
3050 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3051 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The factory function for creating new map charts. Creates a new {@link
3052 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Chart|Chart} object with different default options than the basic Chart.
3053 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3054 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function #mapChart
3055 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Highcharts
3056 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3057 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {String|HTMLDOMElement} renderTo
3058 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The DOM element to render to, or its id.
3059 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Options} options
3060 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The chart options structure as described in the {@link
3061 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * https://api.highcharts.com/highstock|options reference}.
3062 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Function} callback
3063 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A function to execute when the chart object is finished loading and
3064 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * rendering. In most cases the chart is built in one thread, but in
3065 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Internet Explorer version 8 or less the chart is sometimes initiated
3066 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * before the document is ready, and in these cases the chart object
3067 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * will not be finished synchronously. As a consequence, code that
3068 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * relies on the newly built Chart object should always run in the
3069 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * callback. Defining a {@link https://api.highcharts.com/highstock/chart.events.load|
3070 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * chart.event.load} handler is equivalent.
3071 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3072 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Chart}
3073 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The chart object.
3074 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3075 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.Map = H.mapChart = function(a, b, c) {
3076  
3077 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var hasRenderToArg = typeof a === 'string' || a.nodeName,
3078 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = arguments[hasRenderToArg ? 1 : 0],
3079 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hiddenAxis = {
3080 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { endOnTick: false,
3081 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { visible: false,
3082 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { minPadding: 0,
3083 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { maxPadding: 0,
3084 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startOnTick: false
3085 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3086 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesOptions,
3087 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { defaultCreditsOptions = H.getOptions().credits;
3088  
3089 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /* For visual testing
3090 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hiddenAxis.gridLineWidth = 1;
3091 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hiddenAxis.gridZIndex = 10;
3092 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hiddenAxis.tickPositions = undefined;
3093 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // */
3094  
3095 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Don't merge the data
3096 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesOptions = options.series;
3097 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options.series = null;
3098  
3099 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = merge({
3100 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { chart: {
3101 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { panning: 'xy',
3102 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type: 'map'
3103 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3104 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { credits: {
3105 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapText: pick(defaultCreditsOptions.mapText, ' \u00a9 <a href="{geojson.copyrightUrl}">{geojson.copyrightShort}</a>'),
3106 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapTextFull: pick(defaultCreditsOptions.mapTextFull, '{geojson.copyright}')
3107 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3108 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { tooltip: {
3109 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { followTouchMove: false
3110 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3111 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis: hiddenAxis,
3112 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { yAxis: merge(hiddenAxis, {
3113 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { reversed: true
3114 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { })
3115 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3116 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options, // user's options
3117  
3118 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { { // forced options
3119 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { chart: {
3120 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { inverted: false,
3121 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { alignTicks: false
3122 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3123 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3124 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
3125  
3126 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options.series = seriesOptions;
3127  
3128  
3129 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return hasRenderToArg ?
3130 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { new Chart(a, options, c) :
3131 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { new Chart(options, b);
3132 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3133  
3134 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
3135 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) {}));