corrade-nucleus-nucleons – Blame information for rev 31

Subversion Repositories:
Rev:
Rev Author Line No. Line
31 office 1 /**
2 * @license Highmaps JS v5.0.14 (2017-07-28)
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, dataMax));
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; /**
163 < 1 ? this : xAxis; * @extends {xAxis}
164 < 1 ? this : xAxis; * @optionparent colorAxis
165 < 1 ? this : xAxis; */
166 < 1 ? this : xAxis; defaultColorAxisOptions: {
167  
168 < 1 ? this : xAxis; /**
169 < 1 ? this : xAxis; */
170 < 1 ? this : xAxis; lineWidth: 0,
171  
172 < 1 ? this : xAxis; /**
173 < 1 ? this : xAxis; * Padding of the min value relative to the length of the axis. A
174 < 1 ? this : xAxis; * padding of 0.05 will make a 100px axis 5px longer.
175 < 1 ? this : xAxis; *
176 < 1 ? this : xAxis; * @type {Number}
177 < 1 ? this : xAxis; * @product highmaps
178 < 1 ? this : xAxis; */
179 < 1 ? this : xAxis; minPadding: 0,
180  
181 < 1 ? this : xAxis; /**
182 < 1 ? this : xAxis; * Padding of the max value relative to the length of the axis. A
183 < 1 ? this : xAxis; * padding of 0.05 will make a 100px axis 5px longer.
184 < 1 ? this : xAxis; *
185 < 1 ? this : xAxis; * @type {Number}
186 < 1 ? this : xAxis; * @product highmaps
187 < 1 ? this : xAxis; */
188 < 1 ? this : xAxis; maxPadding: 0,
189  
190 < 1 ? this : xAxis; /**
191 < 1 ? this : xAxis; * The width of the grid lines extending from the axis across the
192 < 1 ? this : xAxis; * gradient of a scalar color axis.
193 < 1 ? this : xAxis; *
194 < 1 ? this : xAxis; * @type {Number}
195 < 1 ? this : xAxis; * @sample {highmaps} maps/coloraxis/gridlines/ Grid lines demonstrated
196 < 1 ? this : xAxis; * @default 1
197 < 1 ? this : xAxis; * @product highmaps
198 < 1 ? this : xAxis; */
199 < 1 ? this : xAxis; gridLineWidth: 1,
200  
201 < 1 ? this : xAxis; /**
202 < 1 ? this : xAxis; * If [tickInterval](#colorAxis.tickInterval) is `null` this option
203 < 1 ? this : xAxis; * sets the approximate pixel interval of the tick marks.
204 < 1 ? this : xAxis; *
205 < 1 ? this : xAxis; * @type {Number}
206 < 1 ? this : xAxis; * @default 72
207 < 1 ? this : xAxis; * @product highmaps
208 < 1 ? this : xAxis; */
209 < 1 ? this : xAxis; tickPixelInterval: 72,
210  
211 < 1 ? this : xAxis; /**
212 < 1 ? this : xAxis; * Whether to force the axis to start on a tick. Use this option with
213 < 1 ? this : xAxis; * the `maxPadding` option to control the axis start.
214 < 1 ? this : xAxis; *
215 < 1 ? this : xAxis; * @type {Boolean}
216 < 1 ? this : xAxis; * @default true
217 < 1 ? this : xAxis; * @product highmaps
218 < 1 ? this : xAxis; */
219 < 1 ? this : xAxis; startOnTick: true,
220  
221 < 1 ? this : xAxis; /**
222 < 1 ? this : xAxis; * Whether to force the axis to end on a tick. Use this option with
223 < 1 ? this : xAxis; * the [maxPadding](#colorAxis.maxPadding) option to control the axis
224 < 1 ? this : xAxis; * end.
225 < 1 ? this : xAxis; *
226 < 1 ? this : xAxis; * @type {Boolean}
227 < 1 ? this : xAxis; * @default true
228 < 1 ? this : xAxis; * @product highmaps
229 < 1 ? this : xAxis; */
230 < 1 ? this : xAxis; endOnTick: true,
231  
232 < 1 ? this : xAxis; /**
233 < 1 ? this : xAxis; */
234 < 1 ? this : xAxis; offset: 0,
235  
236 < 1 ? this : xAxis; /**
237 < 1 ? this : xAxis; * The triangular marker on a scalar color axis that points to the
238 < 1 ? this : xAxis; * value of the hovered area. To disable the marker, set `marker:
239 < 1 ? this : xAxis; * null`.
240 < 1 ? this : xAxis; *
241 < 1 ? this : xAxis; * @type {Object}
242 < 1 ? this : xAxis; * @sample {highmaps} maps/coloraxis/marker/ Black marker
243 < 1 ? this : xAxis; * @product highmaps
244 < 1 ? this : xAxis; */
245 < 1 ? this : xAxis; marker: {
246  
247 < 1 ? this : xAxis; /**
248 < 1 ? this : xAxis; * Animation for the marker as it moves between values. Set to `false`
249 < 1 ? this : xAxis; * to disable animation. Defaults to `{ duration: 50 }`.
250 < 1 ? this : xAxis; *
251 < 1 ? this : xAxis; * @type {Object|Boolean}
252 < 1 ? this : xAxis; * @product highmaps
253 < 1 ? this : xAxis; */
254 < 1 ? this : xAxis; animation: {
255  
256 < 1 ? this : xAxis; /**
257 < 1 ? this : xAxis; */
258 < 1 ? this : xAxis; duration: 50
259 < 1 ? this : xAxis; },
260  
261 < 1 ? this : xAxis; /**
262 < 1 ? this : xAxis; */
263 < 1 ? this : xAxis; width: 0.01,
264  
265  
266 < 1 ? this : xAxis; /**
267 < 1 ? this : xAxis; * The color of the marker.
268 < 1 ? this : xAxis; *
269 < 1 ? this : xAxis; * @type {Color}
270 < 1 ? this : xAxis; * @default #999999
271 < 1 ? this : xAxis; * @product highmaps
272 < 1 ? this : xAxis; */
273 < 1 ? this : xAxis; color: '#999999'
274  
275 < 1 ? this : xAxis; },
276  
277 < 1 ? this : xAxis; /**
278 < 1 ? this : xAxis; * The axis labels show the number for each tick.
279 < 1 ? this : xAxis; *
280 < 1 ? this : xAxis; * For more live examples on label options, see [xAxis.labels in the
281 < 1 ? this : xAxis; * Highcharts API.](/highcharts#xAxis.labels)
282 < 1 ? this : xAxis; *
283 < 1 ? this : xAxis; * @type {Object}
284 < 1 ? this : xAxis; * @extends xAxis.labels
285 < 1 ? this : xAxis; * @product highmaps
286 < 1 ? this : xAxis; */
287 < 1 ? this : xAxis; labels: {
288  
289 < 1 ? this : xAxis; /**
290 < 1 ? this : xAxis; * How to handle overflowing labels on horizontal axis. Can be undefined
291 < 1 ? this : xAxis; * or "justify". If "justify", labels will not render outside the
292 < 1 ? this : xAxis; * plot area. If there is room to move it, it will be aligned to
293 < 1 ? this : xAxis; * the edge, else it will be removed.
294 < 1 ? this : xAxis; *
295 < 1 ? this : xAxis; * @validvalue [null, "justify"]
296 < 1 ? this : xAxis; * @type {String}
297 < 1 ? this : xAxis; * @default justify
298 < 1 ? this : xAxis; * @product highmaps
299 < 1 ? this : xAxis; */
300 < 1 ? this : xAxis; overflow: 'justify',
301  
302 < 1 ? this : xAxis; /**
303 < 1 ? this : xAxis; */
304 < 1 ? this : xAxis; rotation: 0
305 < 1 ? this : xAxis; },
306  
307 < 1 ? this : xAxis; /**
308 < 1 ? this : xAxis; * The color to represent the minimum of the color axis. Unless [dataClasses](#colorAxis.
309 < 1 ? this : xAxis; * dataClasses) or [stops](#colorAxis.stops) are set, the gradient
310 < 1 ? this : xAxis; * starts at this value.
311 < 1 ? this : xAxis; *
312 < 1 ? this : xAxis; * If dataClasses are set, the color is based on minColor and maxColor
313 < 1 ? this : xAxis; * unless a color is set for each data class, or the [dataClassColor](#colorAxis.
314 < 1 ? this : xAxis; * dataClassColor) is set.
315 < 1 ? this : xAxis; *
316 < 1 ? this : xAxis; * @type {Color}
317 < 1 ? this : xAxis; * @sample {highmaps} maps/coloraxis/mincolor-maxcolor/ Min and max colors on scalar (gradient) axis
318 < 1 ? this : xAxis; * @sample {highmaps} maps/coloraxis/mincolor-maxcolor-dataclasses/ On data classes
319 < 1 ? this : xAxis; * @default #e6ebf5
320 < 1 ? this : xAxis; * @product highmaps
321 < 1 ? this : xAxis; */
322 < 1 ? this : xAxis; minColor: '#e6ebf5',
323  
324 < 1 ? this : xAxis; /**
325 < 1 ? this : xAxis; * The color to represent the maximum of the color axis. Unless [dataClasses](#colorAxis.
326 < 1 ? this : xAxis; * dataClasses) or [stops](#colorAxis.stops) are set, the gradient
327 < 1 ? this : xAxis; * ends at this value.
328 < 1 ? this : xAxis; *
329 < 1 ? this : xAxis; * If dataClasses are set, the color is based on minColor and maxColor
330 < 1 ? this : xAxis; * unless a color is set for each data class, or the [dataClassColor](#colorAxis.
331 < 1 ? this : xAxis; * dataClassColor) is set.
332 < 1 ? this : xAxis; *
333 < 1 ? this : xAxis; * @type {Color}
334 < 1 ? this : xAxis; * @sample {highmaps} maps/coloraxis/mincolor-maxcolor/ Min and max colors on scalar (gradient) axis
335 < 1 ? this : xAxis; * @sample {highmaps} maps/coloraxis/mincolor-maxcolor-dataclasses/ On data classes
336 < 1 ? this : xAxis; * @default #003399
337 < 1 ? this : xAxis; * @product highmaps
338 < 1 ? this : xAxis; */
339 < 1 ? this : xAxis; maxColor: '#003399',
340  
341 < 1 ? this : xAxis; /**
342 < 1 ? this : xAxis; */
343 < 1 ? this : xAxis; tickLength: 5,
344  
345 < 1 ? this : xAxis; /**
346 < 1 ? this : xAxis; * Whether to display the colorAxis in the legend.
347 < 1 ? this : xAxis; *
348 < 1 ? this : xAxis; * @type {Boolean}
349 < 1 ? this : xAxis; * @see [heatmap.showInLegend](#series<heatmap>.showInLegend)
350 < 1 ? this : xAxis; * @default true
351 < 1 ? this : xAxis; * @since 4.2.7
352 < 1 ? this : xAxis; * @product highmaps
353 < 1 ? this : xAxis; */
354 < 1 ? this : xAxis; showInLegend: true
355 < 1 ? this : xAxis; },
356  
357 < 1 ? this : xAxis; // Properties to preserve after destroy, for Axis.update (#5881, #6025)
358 < 1 ? this : xAxis; keepProps: [
359 < 1 ? this : xAxis; 'legendGroup',
360 < 1 ? this : xAxis; 'legendItemHeight',
361 < 1 ? this : xAxis; 'legendItemWidth',
362 < 1 ? this : xAxis; 'legendItem',
363 < 1 ? this : xAxis; 'legendSymbol'
364 < 1 ? this : xAxis; ].concat(Axis.prototype.keepProps),
365  
366 < 1 ? this : xAxis; /**
367 < 1 ? this : xAxis; * Initialize the color axis
368 < 1 ? this : xAxis; */
369 < 1 ? this : xAxis; init: function(chart, userOptions) {
370 < 1 ? this : xAxis; var horiz = chart.options.legend.layout !== 'vertical',
371 < 1 ? this : xAxis; options;
372  
373 < 1 ? this : xAxis; this.coll = 'colorAxis';
374  
375 < 1 ? this : xAxis; // Build the options
376 < 1 ? this : xAxis; options = merge(this.defaultColorAxisOptions, {
377 < 1 ? this : xAxis; side: horiz ? 2 : 1,
378 < 1 ? this : xAxis; reversed: !horiz
379 < 1 ? this : xAxis; }, userOptions, {
380 < 1 ? this : xAxis; opposite: !horiz,
381 < 1 ? this : xAxis; showEmpty: false,
382 < 1 ? this : xAxis; title: null
383 < 1 ? this : xAxis; });
384  
385 < 1 ? this : xAxis; Axis.prototype.init.call(this, chart, options);
386  
387 < 1 ? this : xAxis; // Base init() pushes it to the xAxis array, now pop it again
388 < 1 ? this : xAxis; // chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
389  
390 < 1 ? this : xAxis; // Prepare data classes
391 < 1 ? this : xAxis; if (userOptions.dataClasses) {
392 < 1 ? this : xAxis; this.initDataClasses(userOptions);
393 < 1 ? this : xAxis; }
394 < 1 ? this : xAxis; this.initStops();
395  
396 < 1 ? this : xAxis; // Override original axis properties
397 < 1 ? this : xAxis; this.horiz = horiz;
398 < 1 ? this : xAxis; this.zoomEnabled = false;
399  
400 < 1 ? this : xAxis; // Add default values
401 < 1 ? this : xAxis; this.defaultLegendLength = 200;
402 < 1 ? this : xAxis; },
403  
404 < 1 ? this : xAxis; initDataClasses: function(userOptions) {
405 < 1 ? this : xAxis; var chart = this.chart,
406 < 1 ? this : xAxis; dataClasses,
407 < 1 ? this : xAxis; colorCounter = 0,
408 < 1 ? this : xAxis; colorCount = chart.options.chart.colorCount,
409 < 1 ? this : xAxis; options = this.options,
410 < 1 ? this : xAxis; len = userOptions.dataClasses.length;
411 < 1 ? this : xAxis; this.dataClasses = dataClasses = [];
412 < 1 ? this : xAxis; this.legendItems = [];
413  
414 < 1 ? this : xAxis; each(userOptions.dataClasses, function(dataClass, i) {
415 < 1 ? this : xAxis; var colors;
416  
417 < 1 ? this : xAxis; dataClass = merge(dataClass);
418 < 1 ? this : xAxis; dataClasses.push(dataClass);
419  
420  
421 < 1 ? this : xAxis; if (dataClass.color) {
422 < 1 ? this : xAxis; return;
423 < 1 ? this : xAxis; }
424  
425 < 1 ? this : xAxis; if (options.dataClassColor === 'category') {
426  
427 < 1 ? this : xAxis; colors = chart.options.colors;
428 < 1 ? this : xAxis; colorCount = colors.length;
429 < 1 ? this : xAxis; dataClass.color = colors[colorCounter];
430  
431 < 1 ? this : xAxis; dataClass.colorIndex = colorCounter;
432  
433 < 1 ? this : xAxis; // increase and loop back to zero
434 < 1 ? this : xAxis; colorCounter++;
435 < 1 ? this : xAxis; if (colorCounter === colorCount) {
436 < 1 ? this : xAxis; colorCounter = 0;
437 < 1 ? this : xAxis; }
438 < 1 ? this : xAxis; } else {
439 < 1 ? this : xAxis; dataClass.color = color(options.minColor).tweenTo(
440 < 1 ? this : xAxis; color(options.maxColor),
441 < 1 ? this : xAxis; len < 2 ? 0.5 : i / (len - 1) // #3219
442 < 1 ? this : xAxis; );
443 < 1 ? this : xAxis; }
444 < 1 ? this : xAxis; });
445 < 1 ? this : xAxis; },
446  
447 < 1 ? this : xAxis; /**
448 < 1 ? this : xAxis; * Override so that ticks are not added in data class axes (#6914)
449 < 1 ? this : xAxis; */
450 < 1 ? this : xAxis; setTickPositions: function() {
451 < 1 ? this : xAxis; if (!this.dataClasses) {
452 < 1 ? this : xAxis; return Axis.prototype.setTickPositions.call(this);
453 < 1 ? this : xAxis; }
454 < 1 ? this : xAxis; },
455  
456  
457 < 1 ? this : xAxis; initStops: function() {
458 < 1 ? this : xAxis; this.stops = this.options.stops || [
459 < 1 ? this : xAxis; [0, this.options.minColor],
460 < 1 ? this : xAxis; [1, this.options.maxColor]
461 < 1 ? this : xAxis; ];
462 < 1 ? this : xAxis; each(this.stops, function(stop) {
463 < 1 ? this : xAxis; stop.color = color(stop[1]);
464 < 1 ? this : xAxis; });
465 < 1 ? this : xAxis; },
466  
467 < 1 ? this : xAxis; /**
468 < 1 ? this : xAxis; * Extend the setOptions method to process extreme colors and color
469 < 1 ? this : xAxis; * stops.
470 < 1 ? this : xAxis; */
471 < 1 ? this : xAxis; setOptions: function(userOptions) {
472 < 1 ? this : xAxis; Axis.prototype.setOptions.call(this, userOptions);
473  
474 < 1 ? this : xAxis; this.options.crosshair = this.options.marker;
475 < 1 ? this : xAxis; },
476  
477 < 1 ? this : xAxis; setAxisSize: function() {
478 < 1 ? this : xAxis; var symbol = this.legendSymbol,
479 < 1 ? this : xAxis; chart = this.chart,
480 < 1 ? this : xAxis; legendOptions = chart.options.legend || {},
481 < 1 ? this : xAxis; x,
482 < 1 ? this : xAxis; y,
483 < 1 ? this : xAxis; width,
484 < 1 ? this : xAxis; height;
485  
486 < 1 ? this : xAxis; if (symbol) {
487 < 1 ? this : xAxis; this.left = x = symbol.attr('x');
488 < 1 ? this : xAxis; this.top = y = symbol.attr('y');
489 < 1 ? this : xAxis; this.width = width = symbol.attr('width');
490 < 1 ? this : xAxis; this.height = height = symbol.attr('height');
491 < 1 ? this : xAxis; this.right = chart.chartWidth - x - width;
492 < 1 ? this : xAxis; this.bottom = chart.chartHeight - y - height;
493  
494 < 1 ? this : xAxis; this.len = this.horiz ? width : height;
495 < 1 ? this : xAxis; this.pos = this.horiz ? x : y;
496 < 1 ? this : xAxis; } else {
497 < 1 ? this : xAxis; // Fake length for disabled legend to avoid tick issues
498 < 1 ? this : xAxis; // and such (#5205)
499 < 1 ? this : xAxis; this.len = (
500 < 1 ? this : xAxis; this.horiz ?
501 < 1 ? this : xAxis; legendOptions.symbolWidth :
502 < 1 ? this : xAxis; legendOptions.symbolHeight
503 < 1 ? this : xAxis; ) || this.defaultLegendLength;
504 < 1 ? this : xAxis; }
505 < 1 ? this : xAxis; },
506  
507 < 1 ? this : xAxis; normalizedValue: function(value) {
508 < 1 ? this : xAxis; if (this.isLog) {
509 < 1 ? this : xAxis; value = this.val2lin(value);
510 < 1 ? this : xAxis; }
511 < 1 ? this : xAxis; return 1 - ((this.max - value) / ((this.max - this.min) || 1));
512 < 1 ? this : xAxis; },
513  
514 < 1 ? this : xAxis; /**
515 < 1 ? this : xAxis; * Translate from a value to a color
516 < 1 ? this : xAxis; */
517 < 1 ? this : xAxis; toColor: function(value, point) {
518 < 1 ? this : xAxis; var pos,
519 < 1 ? this : xAxis; stops = this.stops,
520 < 1 ? this : xAxis; from,
521 < 1 ? this : xAxis; to,
522 < 1 ? this : xAxis; color,
523 < 1 ? this : xAxis; dataClasses = this.dataClasses,
524 < 1 ? this : xAxis; dataClass,
525 < 1 ? this : xAxis; i;
526  
527 < 1 ? this : xAxis; if (dataClasses) {
528 < 1 ? this : xAxis; i = dataClasses.length;
529 < 1 ? this : xAxis; while (i--) {
530 < 1 ? this : xAxis; dataClass = dataClasses[i];
531 < 1 ? this : xAxis; from = dataClass.from;
532 < 1 ? this : xAxis; to = dataClass.to;
533 < 1 ? this : xAxis; if (
534 < 1 ? this : xAxis; (from === undefined || value >= from) &&
535 < 1 ? this : xAxis; (to === undefined || value <= to)
536 < 1 ? this : xAxis; ) {
537  
538 < 1 ? this : xAxis; color = dataClass.color;
539  
540 < 1 ? this : xAxis; if (point) {
541 < 1 ? this : xAxis; point.dataClass = i;
542 < 1 ? this : xAxis; point.colorIndex = dataClass.colorIndex;
543 < 1 ? this : xAxis; }
544 < 1 ? this : xAxis; break;
545 < 1 ? this : xAxis; }
546 < 1 ? this : xAxis; }
547  
548 < 1 ? this : xAxis; } else {
549  
550 < 1 ? this : xAxis; pos = this.normalizedValue(value);
551 < 1 ? this : xAxis; i = stops.length;
552 < 1 ? this : xAxis; while (i--) {
553 < 1 ? this : xAxis; if (pos > stops[i][0]) {
554 < 1 ? this : xAxis; break;
555 < 1 ? this : xAxis; }
556 < 1 ? this : xAxis; }
557 < 1 ? this : xAxis; from = stops[i] || stops[i + 1];
558 < 1 ? this : xAxis; to = stops[i + 1] || from;
559  
560 < 1 ? this : xAxis; // The position within the gradient
561 < 1 ? this : xAxis; pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
562  
563 < 1 ? this : xAxis; color = from.color.tweenTo(
564 < 1 ? this : xAxis; to.color,
565 < 1 ? this : xAxis; pos
566 < 1 ? this : xAxis; );
567 < 1 ? this : xAxis; }
568 < 1 ? this : xAxis; return color;
569 < 1 ? this : xAxis; },
570  
571 < 1 ? this : xAxis; /**
572 < 1 ? this : xAxis; * Override the getOffset method to add the whole axis groups inside
573 < 1 ? this : xAxis; * the legend.
574 < 1 ? this : xAxis; */
575 < 1 ? this : xAxis; getOffset: function() {
576 < 1 ? this : xAxis; var group = this.legendGroup,
577 < 1 ? this : xAxis; sideOffset = this.chart.axisOffset[this.side];
578  
579 < 1 ? this : xAxis; if (group) {
580  
581 < 1 ? this : xAxis; // Hook for the getOffset method to add groups to this parent group
582 < 1 ? this : xAxis; this.axisParent = group;
583  
584 < 1 ? this : xAxis; // Call the base
585 < 1 ? this : xAxis; Axis.prototype.getOffset.call(this);
586  
587 < 1 ? this : xAxis; // First time only
588 < 1 ? this : xAxis; if (!this.added) {
589  
590 < 1 ? this : xAxis; this.added = true;
591  
592 < 1 ? this : xAxis; this.labelLeft = 0;
593 < 1 ? this : xAxis; this.labelRight = this.width;
594 < 1 ? this : xAxis; }
595 < 1 ? this : xAxis; // Reset it to avoid color axis reserving space
596 < 1 ? this : xAxis; this.chart.axisOffset[this.side] = sideOffset;
597 < 1 ? this : xAxis; }
598 < 1 ? this : xAxis; },
599  
600 < 1 ? this : xAxis; /**
601 < 1 ? this : xAxis; * Create the color gradient
602 < 1 ? this : xAxis; */
603 < 1 ? this : xAxis; setLegendColor: function() {
604 < 1 ? this : xAxis; var grad,
605 < 1 ? this : xAxis; horiz = this.horiz,
606 < 1 ? this : xAxis; reversed = this.reversed,
607 < 1 ? this : xAxis; one = reversed ? 1 : 0,
608 < 1 ? this : xAxis; zero = reversed ? 0 : 1;
609  
610 < 1 ? this : xAxis; grad = horiz ? [one, 0, zero, 0] : [0, zero, 0, one]; // #3190
611 < 1 ? this : xAxis; this.legendColor = {
612 < 1 ? this : xAxis; linearGradient: {
613 < 1 ? this : xAxis; x1: grad[0],
614 < 1 ? this : xAxis; y1: grad[1],
615 < 1 ? this : xAxis; x2: grad[2],
616 < 1 ? this : xAxis; y2: grad[3]
617 < 1 ? this : xAxis; },
618 < 1 ? this : xAxis; stops: this.stops
619 < 1 ? this : xAxis; };
620 < 1 ? this : xAxis; },
621  
622 < 1 ? this : xAxis; /**
623 < 1 ? this : xAxis; * The color axis appears inside the legend and has its own legend symbol
624 < 1 ? this : xAxis; */
625 < 1 ? this : xAxis; drawLegendSymbol: function(legend, item) {
626 < 1 ? this : xAxis; var padding = legend.padding,
627 < 1 ? this : xAxis; legendOptions = legend.options,
628 < 1 ? this : xAxis; horiz = this.horiz,
629 < 1 ? this : xAxis; width = pick(
630 < 1 ? this : xAxis; legendOptions.symbolWidth,
631 < 1 ? this : xAxis; horiz ? this.defaultLegendLength : 12
632 < 1 ? this : xAxis; ),
633 < 1 ? this : xAxis; height = pick(
634 < 1 ? this : xAxis; legendOptions.symbolHeight,
635 < 1 ? this : xAxis; horiz ? 12 : this.defaultLegendLength
636 < 1 ? this : xAxis; ),
637 < 1 ? this : xAxis; labelPadding = pick(legendOptions.labelPadding, horiz ? 16 : 30),
638 < 1 ? this : xAxis; itemDistance = pick(legendOptions.itemDistance, 10);
639  
640 < 1 ? this : xAxis; this.setLegendColor();
641  
642 < 1 ? this : xAxis; // Create the gradient
643 < 1 ? this : xAxis; item.legendSymbol = this.chart.renderer.rect(
644 < 1 ? this : xAxis; 0,
645 < 1 ? this : xAxis; legend.baseline - 11,
646 < 1 ? this : xAxis; width,
647 < 1 ? this : xAxis; height
648 < 1 ? this : xAxis; ).attr({
649 < 1 ? this : xAxis; zIndex: 1
650 < 1 ? this : xAxis; }).add(item.legendGroup);
651  
652 < 1 ? this : xAxis; // Set how much space this legend item takes up
653 < 1 ? this : xAxis; this.legendItemWidth = width + padding +
654 < 1 ? this : xAxis; (horiz ? itemDistance : labelPadding);
655 < 1 ? this : xAxis; this.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
656 < 1 ? this : xAxis; },
657 < 1 ? this : xAxis; /**
658 < 1 ? this : xAxis; * Fool the legend
659 < 1 ? this : xAxis; */
660 < 1 ? this : xAxis; setState: noop,
661 < 1 ? this : xAxis; visible: true,
662 < 1 ? this : xAxis; setVisible: noop,
663 < 1 ? this : xAxis; getSeriesExtremes: function() {
664 < 1 ? this : xAxis; var series = this.series,
665 < 1 ? this : xAxis; i = series.length;
666 < 1 ? this : xAxis; this.dataMin = Infinity;
667 < 1 ? this : xAxis; this.dataMax = -Infinity;
668 < 1 ? this : xAxis; while (i--) {
669 < 1 ? this : xAxis; if (series[i].valueMin !== undefined) {
670 < 1 ? this : xAxis; this.dataMin = Math.min(this.dataMin, series[i].valueMin);
671 < 1 ? this : xAxis; this.dataMax = Math.max(this.dataMax, series[i].valueMax);
672 < 1 ? this : xAxis; }
673 < 1 ? this : xAxis; }
674 < 1 ? this : xAxis; },
675 < 1 ? this : xAxis; drawCrosshair: function(e, point) {
676 < 1 ? this : xAxis; var plotX = point && point.plotX,
677 < 1 ? this : xAxis; plotY = point && point.plotY,
678 < 1 ? this : xAxis; crossPos,
679 < 1 ? this : xAxis; axisPos = this.pos,
680 < 1 ? this : xAxis; axisLen = this.len;
681  
682 < 1 ? this : xAxis; if (point) {
683 < 1 ? this : xAxis; crossPos = this.toPixels(point[point.series.colorKey]);
684 < 1 ? this : xAxis; if (crossPos < axisPos) {
685 < 1 ? this : xAxis;< axisPos) { crossPos = axisPos - 2;
686 < 1 ? this : xAxis;< axisPos) { } else if (crossPos > axisPos + axisLen) {
687 < 1 ? this : xAxis;< axisPos) { crossPos = axisPos + axisLen + 2;
688 < 1 ? this : xAxis;< axisPos) { }
689  
690 < 1 ? this : xAxis;< axisPos) { point.plotX = crossPos;
691 < 1 ? this : xAxis;< axisPos) { point.plotY = this.len - crossPos;
692 < 1 ? this : xAxis;< axisPos) { Axis.prototype.drawCrosshair.call(this, e, point);
693 < 1 ? this : xAxis;< axisPos) { point.plotX = plotX;
694 < 1 ? this : xAxis;< axisPos) { point.plotY = plotY;
695  
696 < 1 ? this : xAxis;< axisPos) { if (this.cross) {
697 < 1 ? this : xAxis;< axisPos) { this.cross
698 < 1 ? this : xAxis;< axisPos) { .addClass('highcharts-coloraxis-marker')
699 < 1 ? this : xAxis;< axisPos) { .add(this.legendGroup);
700  
701  
702 < 1 ? this : xAxis;< axisPos) { this.cross.attr({
703 < 1 ? this : xAxis;< axisPos) { fill: this.crosshair.color
704 < 1 ? this : xAxis;< axisPos) { });
705  
706  
707 < 1 ? this : xAxis;< axisPos) { }
708 < 1 ? this : xAxis;< axisPos) { }
709 < 1 ? this : xAxis;< axisPos) { },
710 < 1 ? this : xAxis;< axisPos) { getPlotLinePath: function(a, b, c, d, pos) {
711 < 1 ? this : xAxis;< axisPos) { // crosshairs only
712 < 1 ? this : xAxis;< axisPos) { return isNumber(pos) ? // pos can be 0 (#3969)
713 < 1 ? this : xAxis;< axisPos) { (
714 < 1 ? this : xAxis;< axisPos) { this.horiz ? [
715 < 1 ? this : xAxis;< axisPos) { 'M',
716 < 1 ? this : xAxis;< axisPos) { pos - 4, this.top - 6,
717 < 1 ? this : xAxis;< axisPos) { 'L',
718 < 1 ? this : xAxis;< axisPos) { pos + 4, this.top - 6,
719 < 1 ? this : xAxis;< axisPos) { pos, this.top,
720 < 1 ? this : xAxis;< axisPos) { 'Z'
721 < 1 ? this : xAxis;< axisPos) { ] : [
722 < 1 ? this : xAxis;< axisPos) { 'M',
723 < 1 ? this : xAxis;< axisPos) { this.left, pos,
724 < 1 ? this : xAxis;< axisPos) { 'L',
725 < 1 ? this : xAxis;< axisPos) { this.left - 6, pos + 6,
726 < 1 ? this : xAxis;< axisPos) { this.left - 6, pos - 6,
727 < 1 ? this : xAxis;< axisPos) { 'Z'
728 < 1 ? this : xAxis;< axisPos) { ]
729 < 1 ? this : xAxis;< axisPos) { ) :
730 < 1 ? this : xAxis;< axisPos) { Axis.prototype.getPlotLinePath.call(this, a, b, c, d);
731 < 1 ? this : xAxis;< axisPos) { },
732  
733 < 1 ? this : xAxis;< axisPos) { update: function(newOptions, redraw) {
734 < 1 ? this : xAxis;< axisPos) { var chart = this.chart,
735 < 1 ? this : xAxis;< axisPos) { legend = chart.legend;
736  
737 < 1 ? this : xAxis;< axisPos) { each(this.series, function(series) {
738 < 1 ? this : xAxis;< axisPos) { // Needed for Axis.update when choropleth colors change
739 < 1 ? this : xAxis;< axisPos) { series.isDirtyData = true;
740 < 1 ? this : xAxis;< axisPos) { });
741  
742 < 1 ? this : xAxis;< axisPos) { // When updating data classes, destroy old items and make sure new ones
743 < 1 ? this : xAxis;< axisPos) { // are created (#3207)
744 < 1 ? this : xAxis;< axisPos) { if (newOptions.dataClasses && legend.allItems) {
745 < 1 ? this : xAxis;< axisPos) { each(legend.allItems, function(item) {
746 < 1 ? this : xAxis;< axisPos) { if (item.isDataClass && item.legendGroup) {
747 < 1 ? this : xAxis;< axisPos) { item.legendGroup.destroy();
748 < 1 ? this : xAxis;< axisPos) { }
749 < 1 ? this : xAxis;< axisPos) { });
750 < 1 ? this : xAxis;< axisPos) { chart.isDirtyLegend = true;
751 < 1 ? this : xAxis;< axisPos) { }
752  
753 < 1 ? this : xAxis;< axisPos) { // Keep the options structure updated for export. Unlike xAxis and
754 < 1 ? this : xAxis;< axisPos) { // yAxis, the colorAxis is not an array. (#3207)
755 < 1 ? this : xAxis;< axisPos) { chart.options[this.coll] = merge(this.userOptions, newOptions);
756  
757 < 1 ? this : xAxis;< axisPos) { Axis.prototype.update.call(this, newOptions, redraw);
758 < 1 ? this : xAxis;< axisPos) { if (this.legendItem) {
759 < 1 ? this : xAxis;< axisPos) { this.setLegendColor();
760 < 1 ? this : xAxis;< axisPos) { legend.colorizeItem(this, true);
761 < 1 ? this : xAxis;< axisPos) { }
762 < 1 ? this : xAxis;< axisPos) { },
763  
764 < 1 ? this : xAxis;< axisPos) { /**
765 < 1 ? this : xAxis;< axisPos) { * Extend basic axis remove by also removing the legend item.
766 < 1 ? this : xAxis;< axisPos) { */
767 < 1 ? this : xAxis;< axisPos) { remove: function() {
768 < 1 ? this : xAxis;< axisPos) { if (this.legendItem) {
769 < 1 ? this : xAxis;< axisPos) { this.chart.legend.destroyItem(this);
770 < 1 ? this : xAxis;< axisPos) { }
771 < 1 ? this : xAxis;< axisPos) { Axis.prototype.remove.call(this);
772 < 1 ? this : xAxis;< axisPos) { },
773  
774 < 1 ? this : xAxis;< axisPos) { /**
775 < 1 ? this : xAxis;< axisPos) { * Get the legend item symbols for data classes
776 < 1 ? this : xAxis;< axisPos) { */
777 < 1 ? this : xAxis;< axisPos) { getDataClassLegendSymbols: function() {
778 < 1 ? this : xAxis;< axisPos) { var axis = this,
779 < 1 ? this : xAxis;< axisPos) { chart = this.chart,
780 < 1 ? this : xAxis;< axisPos) { legendItems = this.legendItems,
781 < 1 ? this : xAxis;< axisPos) { legendOptions = chart.options.legend,
782 < 1 ? this : xAxis;< axisPos) { valueDecimals = legendOptions.valueDecimals,
783 < 1 ? this : xAxis;< axisPos) { valueSuffix = legendOptions.valueSuffix || '',
784 < 1 ? this : xAxis;< axisPos) { name;
785  
786 < 1 ? this : xAxis;< axisPos) { if (!legendItems.length) {
787 < 1 ? this : xAxis;< axisPos) { each(this.dataClasses, function(dataClass, i) {
788 < 1 ? this : xAxis;< axisPos) { var vis = true,
789 < 1 ? this : xAxis;< axisPos) { from = dataClass.from,
790 < 1 ? this : xAxis;< axisPos) { to = dataClass.to;
791  
792 < 1 ? this : xAxis;< axisPos) { // Assemble the default name. This can be overridden
793 < 1 ? this : xAxis;< axisPos) { // by legend.options.labelFormatter
794 < 1 ? this : xAxis;< axisPos) { name = '';
795 < 1 ? this : xAxis;< axisPos) { if (from === undefined) {
796 < 1 ? this : xAxis;< axisPos) { name = '< ';
797 < 1 ? this : xAxis;< axisPos) {< '; } else if (to === undefined) {
798 < 1 ? this : xAxis;< axisPos) {< '; name = '> ';
799 < 1 ? this : xAxis;< axisPos) {< '; }
800 < 1 ? this : xAxis;< axisPos) {< '; if (from !== undefined) {
801 < 1 ? this : xAxis;< axisPos) {< '; name += H.numberFormat(from, valueDecimals) + valueSuffix;
802 < 1 ? this : xAxis;< axisPos) {< '; }
803 < 1 ? this : xAxis;< axisPos) {< '; if (from !== undefined && to !== undefined) {
804 < 1 ? this : xAxis;< axisPos) {< '; name += ' - ';
805 < 1 ? this : xAxis;< axisPos) {< '; }
806 < 1 ? this : xAxis;< axisPos) {< '; if (to !== undefined) {
807 < 1 ? this : xAxis;< axisPos) {< '; name += H.numberFormat(to, valueDecimals) + valueSuffix;
808 < 1 ? this : xAxis;< axisPos) {< '; }
809 < 1 ? this : xAxis;< axisPos) {< '; // Add a mock object to the legend items
810 < 1 ? this : xAxis;< axisPos) {< '; legendItems.push(extend({
811 < 1 ? this : xAxis;< axisPos) {< '; chart: chart,
812 < 1 ? this : xAxis;< axisPos) {< '; name: name,
813 < 1 ? this : xAxis;< axisPos) {< '; options: {},
814 < 1 ? this : xAxis;< axisPos) {< '; drawLegendSymbol: LegendSymbolMixin.drawRectangle,
815 < 1 ? this : xAxis;< axisPos) {< '; visible: true,
816 < 1 ? this : xAxis;< axisPos) {< '; setState: noop,
817 < 1 ? this : xAxis;< axisPos) {< '; isDataClass: true,
818 < 1 ? this : xAxis;< axisPos) {< '; setVisible: function() {
819 < 1 ? this : xAxis;< axisPos) {< '; vis = this.visible = !vis;
820 < 1 ? this : xAxis;< axisPos) {< '; each(axis.series, function(series) {
821 < 1 ? this : xAxis;< axisPos) {< '; each(series.points, function(point) {
822 < 1 ? this : xAxis;< axisPos) {< '; if (point.dataClass === i) {
823 < 1 ? this : xAxis;< axisPos) {< '; point.setVisible(vis);
824 < 1 ? this : xAxis;< axisPos) {< '; }
825 < 1 ? this : xAxis;< axisPos) {< '; });
826 < 1 ? this : xAxis;< axisPos) {< '; });
827  
828 < 1 ? this : xAxis;< axisPos) {< '; chart.legend.colorizeItem(this, vis);
829 < 1 ? this : xAxis;< axisPos) {< '; }
830 < 1 ? this : xAxis;< axisPos) {< '; }, dataClass));
831 < 1 ? this : xAxis;< axisPos) {< '; });
832 < 1 ? this : xAxis;< axisPos) {< '; }
833 < 1 ? this : xAxis;< axisPos) {< '; return legendItems;
834 < 1 ? this : xAxis;< axisPos) {< '; },
835 < 1 ? this : xAxis;< axisPos) {< '; name: '' // Prevents 'undefined' in legend in IE8
836 < 1 ? this : xAxis;< axisPos) {< '; });
837  
838 < 1 ? this : xAxis;< axisPos) {< '; /**
839 < 1 ? this : xAxis;< axisPos) {< '; * Handle animation of the color attributes directly
840 < 1 ? this : xAxis;< axisPos) {< '; */
841 < 1 ? this : xAxis;< axisPos) {< '; each(['fill', 'stroke'], function(prop) {
842 < 1 ? this : xAxis;< axisPos) {< '; H.Fx.prototype[prop + 'Setter'] = function() {
843 < 1 ? this : xAxis;< axisPos) {< '; this.elem.attr(
844 < 1 ? this : xAxis;< axisPos) {< '; prop,
845 < 1 ? this : xAxis;< axisPos) {< '; color(this.start).tweenTo(
846 < 1 ? this : xAxis;< axisPos) {< '; color(this.end),
847 < 1 ? this : xAxis;< axisPos) {< '; this.pos
848 < 1 ? this : xAxis;< axisPos) {< '; ),
849 < 1 ? this : xAxis;< axisPos) {< '; null,
850 < 1 ? this : xAxis;< axisPos) {< '; true
851 < 1 ? this : xAxis;< axisPos) {< '; );
852 < 1 ? this : xAxis;< axisPos) {< '; };
853 < 1 ? this : xAxis;< axisPos) {< '; });
854  
855 < 1 ? this : xAxis;< axisPos) {< '; /**
856 < 1 ? this : xAxis;< axisPos) {< '; * Extend the chart getAxes method to also get the color axis
857 < 1 ? this : xAxis;< axisPos) {< '; */
858 < 1 ? this : xAxis;< axisPos) {< '; wrap(Chart.prototype, 'getAxes', function(proceed) {
859  
860 < 1 ? this : xAxis;< axisPos) {< '; var options = this.options,
861 < 1 ? this : xAxis;< axisPos) {< '; colorAxisOptions = options.colorAxis;
862  
863 < 1 ? this : xAxis;< axisPos) {< '; proceed.call(this);
864  
865 < 1 ? this : xAxis;< axisPos) {< '; this.colorAxis = [];
866 < 1 ? this : xAxis;< axisPos) {< '; if (colorAxisOptions) {
867 < 1 ? this : xAxis;< axisPos) {< '; new ColorAxis(this, colorAxisOptions); // eslint-disable-line no-new
868 < 1 ? this : xAxis;< axisPos) {< '; }
869 < 1 ? this : xAxis;< axisPos) {< '; });
870  
871  
872 < 1 ? this : xAxis;< axisPos) {< '; /**
873 < 1 ? this : xAxis;< axisPos) {< '; * Wrap the legend getAllItems method to add the color axis. This also removes
874 < 1 ? this : xAxis;< axisPos) {< '; * the axis' own series to prevent them from showing up individually.
875 < 1 ? this : xAxis;< axisPos) {< '; */
876 < 1 ? this : xAxis;< axisPos) {< '; wrap(Legend.prototype, 'getAllItems', function(proceed) {
877 < 1 ? this : xAxis;< axisPos) {< '; var allItems = [],
878 < 1 ? this : xAxis;< axisPos) {< '; colorAxis = this.chart.colorAxis[0];
879  
880 < 1 ? this : xAxis;< axisPos) {< '; if (colorAxis && colorAxis.options) {
881 < 1 ? this : xAxis;< axisPos) {< '; if (colorAxis.options.showInLegend) {
882 < 1 ? this : xAxis;< axisPos) {< '; // Data classes
883 < 1 ? this : xAxis;< axisPos) {< '; if (colorAxis.options.dataClasses) {
884 < 1 ? this : xAxis;< axisPos) {< '; allItems = allItems.concat(
885 < 1 ? this : xAxis;< axisPos) {< '; colorAxis.getDataClassLegendSymbols()
886 < 1 ? this : xAxis;< axisPos) {< '; );
887 < 1 ? this : xAxis;< axisPos) {< '; // Gradient legend
888 < 1 ? this : xAxis;< axisPos) {< '; } else {
889 < 1 ? this : xAxis;< axisPos) {< '; // Add this axis on top
890 < 1 ? this : xAxis;< axisPos) {< '; allItems.push(colorAxis);
891 < 1 ? this : xAxis;< axisPos) {< '; }
892 < 1 ? this : xAxis;< axisPos) {< '; }
893  
894 < 1 ? this : xAxis;< axisPos) {< '; // Don't add the color axis' series
895 < 1 ? this : xAxis;< axisPos) {< '; each(colorAxis.series, function(series) {
896 < 1 ? this : xAxis;< axisPos) {< '; series.options.showInLegend = false;
897 < 1 ? this : xAxis;< axisPos) {< '; });
898 < 1 ? this : xAxis;< axisPos) {< '; }
899  
900 < 1 ? this : xAxis;< axisPos) {< '; return allItems.concat(proceed.call(this));
901 < 1 ? this : xAxis;< axisPos) {< '; });
902  
903 < 1 ? this : xAxis;< axisPos) {< '; wrap(Legend.prototype, 'colorizeItem', function(proceed, item, visible) {
904 < 1 ? this : xAxis;< axisPos) {< '; proceed.call(this, item, visible);
905 < 1 ? this : xAxis;< axisPos) {< '; if (visible && item.legendColor) {
906 < 1 ? this : xAxis;< axisPos) {< '; item.legendSymbol.attr({
907 < 1 ? this : xAxis;< axisPos) {< '; fill: item.legendColor
908 < 1 ? this : xAxis;< axisPos) {< '; });
909 < 1 ? this : xAxis;< axisPos) {< '; }
910 < 1 ? this : xAxis;< axisPos) {< '; });
911  
912 < 1 ? this : xAxis;< axisPos) {< '; // Updates in the legend need to be reflected in the color axis (6888)
913 < 1 ? this : xAxis;< axisPos) {< '; wrap(Legend.prototype, 'update', function(proceed) {
914 < 1 ? this : xAxis;< axisPos) {< '; proceed.apply(this, [].slice.call(arguments, 1));
915  
916 < 1 ? this : xAxis;< axisPos) {< '; if (this.chart.colorAxis[0]) {
917 < 1 ? this : xAxis;< axisPos) {< '; this.chart.colorAxis[0].update({}, arguments[2]);
918 < 1 ? this : xAxis;< axisPos) {< '; }
919 < 1 ? this : xAxis;< axisPos) {< '; });
920  
921 < 1 ? this : xAxis;< axisPos) {< '; }(Highcharts));
922 < 1 ? this : xAxis;< axisPos) {< '; (function(H) {
923 < 1 ? this : xAxis;< axisPos) {< '; /**
924 < 1 ? this : xAxis;< axisPos) {< '; * (c) 2010-2017 Torstein Honsi
925 < 1 ? this : xAxis;< axisPos) {< '; *
926 < 1 ? this : xAxis;< axisPos) {< '; * License: www.highcharts.com/license
927 < 1 ? this : xAxis;< axisPos) {< '; */
928 < 1 ? this : xAxis;< axisPos) {< '; var defined = H.defined,
929 < 1 ? this : xAxis;< axisPos) {< '; each = H.each,
930 < 1 ? this : xAxis;< axisPos) {< '; noop = H.noop,
931 < 1 ? this : xAxis;< axisPos) {< '; seriesTypes = H.seriesTypes;
932  
933 < 1 ? this : xAxis;< axisPos) {< '; /**
934 < 1 ? this : xAxis;< axisPos) {< '; * Mixin for maps and heatmaps
935 < 1 ? this : xAxis;< axisPos) {< '; */
936 < 1 ? this : xAxis;< axisPos) {< '; H.colorPointMixin = {
937 < 1 ? this : xAxis;< axisPos) {< '; /**
938 < 1 ? this : xAxis;< axisPos) {< '; * Color points have a value option that determines whether or not it is
939 < 1 ? this : xAxis;< axisPos) {< '; * a null point
940 < 1 ? this : xAxis;< axisPos) {< '; */
941 < 1 ? this : xAxis;< axisPos) {< '; isValid: function() {
942 < 1 ? this : xAxis;< axisPos) {< '; return this.value !== null;
943 < 1 ? this : xAxis;< axisPos) {< '; },
944  
945 < 1 ? this : xAxis;< axisPos) {< '; /**
946 < 1 ? this : xAxis;< axisPos) {< '; * Set the visibility of a single point
947 < 1 ? this : xAxis;< axisPos) {< '; */
948 < 1 ? this : xAxis;< axisPos) {< '; setVisible: function(vis) {
949 < 1 ? this : xAxis;< axisPos) {< '; var point = this,
950 < 1 ? this : xAxis;< axisPos) {< '; method = vis ? 'show' : 'hide';
951  
952 < 1 ? this : xAxis;< axisPos) {< '; // Show and hide associated elements
953 < 1 ? this : xAxis;< axisPos) {< '; each(['graphic', 'dataLabel'], function(key) {
954 < 1 ? this : xAxis;< axisPos) {< '; if (point[key]) {
955 < 1 ? this : xAxis;< axisPos) {< '; point[key][method]();
956 < 1 ? this : xAxis;< axisPos) {< '; }
957 < 1 ? this : xAxis;< axisPos) {< '; });
958 < 1 ? this : xAxis;< axisPos) {< '; },
959 < 1 ? this : xAxis;< axisPos) {< '; setState: function(state) {
960 < 1 ? this : xAxis;< axisPos) {< '; H.Point.prototype.setState.call(this, state);
961 < 1 ? this : xAxis;< axisPos) {< '; if (this.graphic) {
962 < 1 ? this : xAxis;< axisPos) {< '; this.graphic.attr({
963 < 1 ? this : xAxis;< axisPos) {< '; zIndex: state === 'hover' ? 1 : 0
964 < 1 ? this : xAxis;< axisPos) {< '; });
965 < 1 ? this : xAxis;< axisPos) {< '; }
966 < 1 ? this : xAxis;< axisPos) {< '; }
967 < 1 ? this : xAxis;< axisPos) {< '; };
968  
969 < 1 ? this : xAxis;< axisPos) {< '; H.colorSeriesMixin = {
970 < 1 ? this : xAxis;< axisPos) {< '; pointArrayMap: ['value'],
971 < 1 ? this : xAxis;< axisPos) {< '; axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
972 < 1 ? this : xAxis;< axisPos) {< '; optionalAxis: 'colorAxis',
973 < 1 ? this : xAxis;< axisPos) {< '; trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
974 < 1 ? this : xAxis;< axisPos) {< '; getSymbol: noop,
975 < 1 ? this : xAxis;< axisPos) {< '; parallelArrays: ['x', 'y', 'value'],
976 < 1 ? this : xAxis;< axisPos) {< '; colorKey: 'value',
977  
978  
979 < 1 ? this : xAxis;< axisPos) {< '; pointAttribs: seriesTypes.column.prototype.pointAttribs,
980  
981  
982 < 1 ? this : xAxis;< axisPos) {< '; /**
983 < 1 ? this : xAxis;< axisPos) {< '; * In choropleth maps, the color is a result of the value, so this needs
984 < 1 ? this : xAxis;< axisPos) {< '; * translation too
985 < 1 ? this : xAxis;< axisPos) {< '; */
986 < 1 ? this : xAxis;< axisPos) {< '; translateColors: function() {
987 < 1 ? this : xAxis;< axisPos) {< '; var series = this,
988 < 1 ? this : xAxis;< axisPos) {< '; nullColor = this.options.nullColor,
989 < 1 ? this : xAxis;< axisPos) {< '; colorAxis = this.colorAxis,
990 < 1 ? this : xAxis;< axisPos) {< '; colorKey = this.colorKey;
991  
992 < 1 ? this : xAxis;< axisPos) {< '; each(this.data, function(point) {
993 < 1 ? this : xAxis;< axisPos) {< '; var value = point[colorKey],
994 < 1 ? this : xAxis;< axisPos) {< '; color;
995  
996 < 1 ? this : xAxis;< axisPos) {< '; color = point.options.color ||
997 < 1 ? this : xAxis;< axisPos) {< '; (
998 < 1 ? this : xAxis;< axisPos) {< '; point.isNull ?
999 < 1 ? this : xAxis;< axisPos) {< '; nullColor :
1000 < 1 ? this : xAxis;< axisPos) {< '; (colorAxis && value !== undefined) ?
1001 < 1 ? this : xAxis;< axisPos) {< '; colorAxis.toColor(value, point) :
1002 < 1 ? this : xAxis;< axisPos) {< '; point.color || series.color
1003 < 1 ? this : xAxis;< axisPos) {< '; );
1004  
1005 < 1 ? this : xAxis;< axisPos) {< '; if (color) {
1006 < 1 ? this : xAxis;< axisPos) {< '; point.color = color;
1007 < 1 ? this : xAxis;< axisPos) {< '; }
1008 < 1 ? this : xAxis;< axisPos) {< '; });
1009 < 1 ? this : xAxis;< axisPos) {< '; },
1010  
1011 < 1 ? this : xAxis;< axisPos) {< '; /**
1012 < 1 ? this : xAxis;< axisPos) {< '; * Get the color attibutes to apply on the graphic
1013 < 1 ? this : xAxis;< axisPos) {< '; */
1014 < 1 ? this : xAxis;< axisPos) {< '; colorAttribs: function(point) {
1015 < 1 ? this : xAxis;< axisPos) {< '; var ret = {};
1016 < 1 ? this : xAxis;< axisPos) {< '; if (defined(point.color)) {
1017 < 1 ? this : xAxis;< axisPos) {< '; ret[this.colorProp || 'fill'] = point.color;
1018 < 1 ? this : xAxis;< axisPos) {< '; }
1019 < 1 ? this : xAxis;< axisPos) {< '; return ret;
1020 < 1 ? this : xAxis;< axisPos) {< '; }
1021 < 1 ? this : xAxis;< axisPos) {< '; };
1022  
1023 < 1 ? this : xAxis;< axisPos) {< '; }(Highcharts));
1024 < 1 ? this : xAxis;< axisPos) {< '; (function(H) {
1025 < 1 ? this : xAxis;< axisPos) {< '; /**
1026 < 1 ? this : xAxis;< axisPos) {< '; * (c) 2010-2017 Torstein Honsi
1027 < 1 ? this : xAxis;< axisPos) {< '; *
1028 < 1 ? this : xAxis;< axisPos) {< '; * License: www.highcharts.com/license
1029 < 1 ? this : xAxis;< axisPos) {< '; */
1030 < 1 ? this : xAxis;< axisPos) {< '; var addEvent = H.addEvent,
1031 < 1 ? this : xAxis;< axisPos) {< '; Chart = H.Chart,
1032 < 1 ? this : xAxis;< axisPos) {< '; doc = H.doc,
1033 < 1 ? this : xAxis;< axisPos) {< '; each = H.each,
1034 < 1 ? this : xAxis;< axisPos) {< '; extend = H.extend,
1035 < 1 ? this : xAxis;< axisPos) {< '; merge = H.merge,
1036 < 1 ? this : xAxis;< axisPos) {< '; pick = H.pick,
1037 < 1 ? this : xAxis;< axisPos) {< '; wrap = H.wrap;
1038  
1039 < 1 ? this : xAxis;< axisPos) {< '; function stopEvent(e) {
1040 < 1 ? this : xAxis;< axisPos) {< '; if (e) {
1041 < 1 ? this : xAxis;< axisPos) {< '; if (e.preventDefault) {
1042 < 1 ? this : xAxis;< axisPos) {< '; e.preventDefault();
1043 < 1 ? this : xAxis;< axisPos) {< '; }
1044 < 1 ? this : xAxis;< axisPos) {< '; if (e.stopPropagation) {
1045 < 1 ? this : xAxis;< axisPos) {< '; e.stopPropagation();
1046 < 1 ? this : xAxis;< axisPos) {< '; }
1047 < 1 ? this : xAxis;< axisPos) {< '; e.cancelBubble = true;
1048 < 1 ? this : xAxis;< axisPos) {< '; }
1049 < 1 ? this : xAxis;< axisPos) {< '; }
1050  
1051 < 1 ? this : xAxis;< axisPos) {< '; /**
1052 < 1 ? this : xAxis;< axisPos) {< '; * The MapNavigation handles buttons for navigation in addition to mousewheel
1053 < 1 ? this : xAxis;< axisPos) {< '; * and doubleclick handlers for chart zooming.
1054 < 1 ? this : xAxis;< axisPos) {< '; * @param {Chart} chart The Chart instance.
1055 < 1 ? this : xAxis;< axisPos) {< '; */
1056 < 1 ? this : xAxis;< axisPos) {< '; function MapNavigation(chart) {
1057 < 1 ? this : xAxis;< axisPos) {< '; this.init(chart);
1058 < 1 ? this : xAxis;< axisPos) {< '; }
1059  
1060 < 1 ? this : xAxis;< axisPos) {< '; /**
1061 < 1 ? this : xAxis;< axisPos) {< '; * Initiator function.
1062 < 1 ? this : xAxis;< axisPos) {< '; * @param {Chart} chart The Chart instance.
1063 < 1 ? this : xAxis;< axisPos) {< '; */
1064 < 1 ? this : xAxis;< axisPos) {< '; MapNavigation.prototype.init = function(chart) {
1065 < 1 ? this : xAxis;< axisPos) {< '; this.chart = chart;
1066 < 1 ? this : xAxis;< axisPos) {< '; chart.mapNavButtons = [];
1067 < 1 ? this : xAxis;< axisPos) {< '; };
1068  
1069 < 1 ? this : xAxis;< axisPos) {< '; /**
1070 < 1 ? this : xAxis;< axisPos) {< '; * Update the map navigation with new options. Calling this is the same as
1071 < 1 ? this : xAxis;< axisPos) {< '; * calling `chart.update({ mapNavigation: {} })`.
1072 < 1 ? this : xAxis;< axisPos) {< '; * @param {Object} options New options for the map navigation.
1073 < 1 ? this : xAxis;< axisPos) {< '; */
1074 < 1 ? this : xAxis;< axisPos) {< '; MapNavigation.prototype.update = function(options) {
1075 < 1 ? this : xAxis;< axisPos) {< '; var chart = this.chart,
1076 < 1 ? this : xAxis;< axisPos) {< '; o = chart.options.mapNavigation,
1077 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions,
1078 < 1 ? this : xAxis;< axisPos) {< '; attr,
1079 < 1 ? this : xAxis;< axisPos) {< '; states,
1080 < 1 ? this : xAxis;< axisPos) {< '; hoverStates,
1081 < 1 ? this : xAxis;< axisPos) {< '; selectStates,
1082 < 1 ? this : xAxis;< axisPos) {< '; outerHandler = function(e) {
1083 < 1 ? this : xAxis;< axisPos) {< '; this.handler.call(chart, e);
1084 < 1 ? this : xAxis;< axisPos) {< '; stopEvent(e); // Stop default click event (#4444)
1085 < 1 ? this : xAxis;< axisPos) {< '; },
1086 < 1 ? this : xAxis;< axisPos) {< '; mapNavButtons = chart.mapNavButtons;
1087  
1088 < 1 ? this : xAxis;< axisPos) {< '; // Merge in new options in case of update, and register back to chart
1089 < 1 ? this : xAxis;< axisPos) {< '; // options.
1090 < 1 ? this : xAxis;< axisPos) {< '; if (options) {
1091 < 1 ? this : xAxis;< axisPos) {< '; o = chart.options.mapNavigation =
1092 < 1 ? this : xAxis;< axisPos) {< '; merge(chart.options.mapNavigation, options);
1093 < 1 ? this : xAxis;< axisPos) {< '; }
1094  
1095 < 1 ? this : xAxis;< axisPos) {< '; // Destroy buttons in case of dynamic update
1096 < 1 ? this : xAxis;< axisPos) {< '; while (mapNavButtons.length) {
1097 < 1 ? this : xAxis;< axisPos) {< '; mapNavButtons.pop().destroy();
1098 < 1 ? this : xAxis;< axisPos) {< '; }
1099  
1100 < 1 ? this : xAxis;< axisPos) {< '; if (pick(o.enableButtons, o.enabled) && !chart.renderer.forExport) {
1101  
1102 < 1 ? this : xAxis;< axisPos) {< '; H.objectEach(o.buttons, function(button, n) {
1103 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions = merge(o.buttonOptions, button);
1104  
1105  
1106 < 1 ? this : xAxis;< axisPos) {< '; // Presentational
1107 < 1 ? this : xAxis;< axisPos) {< '; attr = buttonOptions.theme;
1108 < 1 ? this : xAxis;< axisPos) {< '; attr.style = merge(
1109 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions.theme.style,
1110 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions.style // #3203
1111 < 1 ? this : xAxis;< axisPos) {< '; );
1112 < 1 ? this : xAxis;< axisPos) {< '; states = attr.states;
1113 < 1 ? this : xAxis;< axisPos) {< '; hoverStates = states && states.hover;
1114 < 1 ? this : xAxis;< axisPos) {< '; selectStates = states && states.select;
1115  
1116  
1117 < 1 ? this : xAxis;< axisPos) {< '; button = chart.renderer.button(
1118 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions.text,
1119 < 1 ? this : xAxis;< axisPos) {< '; 0,
1120 < 1 ? this : xAxis;< axisPos) {< '; 0,
1121 < 1 ? this : xAxis;< axisPos) {< '; outerHandler,
1122 < 1 ? this : xAxis;< axisPos) {< '; attr,
1123 < 1 ? this : xAxis;< axisPos) {< '; hoverStates,
1124 < 1 ? this : xAxis;< axisPos) {< '; selectStates,
1125 < 1 ? this : xAxis;< axisPos) {< '; 0,
1126 < 1 ? this : xAxis;< axisPos) {< '; n === 'zoomIn' ? 'topbutton' : 'bottombutton'
1127 < 1 ? this : xAxis;< axisPos) {< '; )
1128 < 1 ? this : xAxis;< axisPos) {< '; .addClass('highcharts-map-navigation')
1129 < 1 ? this : xAxis;< axisPos) {< '; .attr({
1130 < 1 ? this : xAxis;< axisPos) {< '; width: buttonOptions.width,
1131 < 1 ? this : xAxis;< axisPos) {< '; height: buttonOptions.height,
1132 < 1 ? this : xAxis;< axisPos) {< '; title: chart.options.lang[n],
1133 < 1 ? this : xAxis;< axisPos) {< '; padding: buttonOptions.padding,
1134 < 1 ? this : xAxis;< axisPos) {< '; zIndex: 5
1135 < 1 ? this : xAxis;< axisPos) {< '; })
1136 < 1 ? this : xAxis;< axisPos) {< '; .add();
1137 < 1 ? this : xAxis;< axisPos) {< '; button.handler = buttonOptions.onclick;
1138 < 1 ? this : xAxis;< axisPos) {< '; button.align(
1139 < 1 ? this : xAxis;< axisPos) {< '; extend(buttonOptions, {
1140 < 1 ? this : xAxis;< axisPos) {< '; width: button.width,
1141 < 1 ? this : xAxis;< axisPos) {< '; height: 2 * button.height
1142 < 1 ? this : xAxis;< axisPos) {< '; }),
1143 < 1 ? this : xAxis;< axisPos) {< '; null,
1144 < 1 ? this : xAxis;< axisPos) {< '; buttonOptions.alignTo
1145 < 1 ? this : xAxis;< axisPos) {< '; );
1146 < 1 ? this : xAxis;< axisPos) {< '; // Stop double click event (#4444)
1147 < 1 ? this : xAxis;< axisPos) {< '; addEvent(button.element, 'dblclick', stopEvent);
1148  
1149 < 1 ? this : xAxis;< axisPos) {< '; mapNavButtons.push(button);
1150  
1151 < 1 ? this : xAxis;< axisPos) {< '; });
1152 < 1 ? this : xAxis;< axisPos) {< '; }
1153  
1154 < 1 ? this : xAxis;< axisPos) {< '; this.updateEvents(o);
1155 < 1 ? this : xAxis;< axisPos) {< '; };
1156  
1157 < 1 ? this : xAxis;< axisPos) {< '; /**
1158 < 1 ? this : xAxis;< axisPos) {< '; * Update events, called internally from the update function. Add new event
1159 < 1 ? this : xAxis;< axisPos) {< '; * handlers, or unbinds events if disabled.
1160 < 1 ? this : xAxis;< axisPos) {< '; * @param {Object} options Options for map navigation.
1161 < 1 ? this : xAxis;< axisPos) {< '; */
1162 < 1 ? this : xAxis;< axisPos) {< '; MapNavigation.prototype.updateEvents = function(options) {
1163 < 1 ? this : xAxis;< axisPos) {< '; var chart = this.chart;
1164  
1165 < 1 ? this : xAxis;< axisPos) {< '; // Add the double click event
1166 < 1 ? this : xAxis;< axisPos) {< '; if (
1167 < 1 ? this : xAxis;< axisPos) {< '; pick(options.enableDoubleClickZoom, options.enabled) ||
1168 < 1 ? this : xAxis;< axisPos) {< '; options.enableDoubleClickZoomTo
1169 < 1 ? this : xAxis;< axisPos) {< '; ) {
1170 < 1 ? this : xAxis;< axisPos) {< '; this.unbindDblClick = this.unbindDblClick || addEvent(
1171 < 1 ? this : xAxis;< axisPos) {< '; chart.container,
1172 < 1 ? this : xAxis;< axisPos) {< '; 'dblclick',
1173 < 1 ? this : xAxis;< axisPos) {< '; function(e) {
1174 < 1 ? this : xAxis;< axisPos) {< '; chart.pointer.onContainerDblClick(e);
1175 < 1 ? this : xAxis;< axisPos) {< '; }
1176 < 1 ? this : xAxis;< axisPos) {< '; );
1177 < 1 ? this : xAxis;< axisPos) {< '; } else if (this.unbindDblClick) {
1178 < 1 ? this : xAxis;< axisPos) {< '; // Unbind and set unbinder to undefined
1179 < 1 ? this : xAxis;< axisPos) {< '; this.unbindDblClick = this.unbindDblClick();
1180 < 1 ? this : xAxis;< axisPos) {< '; }
1181  
1182 < 1 ? this : xAxis;< axisPos) {< '; // Add the mousewheel event
1183 < 1 ? this : xAxis;< axisPos) {< '; if (pick(options.enableMouseWheelZoom, options.enabled)) {
1184 < 1 ? this : xAxis;< axisPos) {< '; this.unbindMouseWheel = this.unbindMouseWheel || addEvent(
1185 < 1 ? this : xAxis;< axisPos) {< '; chart.container,
1186 < 1 ? this : xAxis;< axisPos) {< '; doc.onmousewheel === undefined ? 'DOMMouseScroll' : 'mousewheel',
1187 < 1 ? this : xAxis;< axisPos) {< '; function(e) {
1188 < 1 ? this : xAxis;< axisPos) {< '; chart.pointer.onContainerMouseWheel(e);
1189 < 1 ? this : xAxis;< axisPos) {< '; // Issue #5011, returning false from non-jQuery event does
1190 < 1 ? this : xAxis;< axisPos) {< '; // not prevent default
1191 < 1 ? this : xAxis;< axisPos) {< '; stopEvent(e);
1192 < 1 ? this : xAxis;< axisPos) {< '; return false;
1193 < 1 ? this : xAxis;< axisPos) {< '; }
1194 < 1 ? this : xAxis;< axisPos) {< '; );
1195 < 1 ? this : xAxis;< axisPos) {< '; } else if (this.unbindMouseWheel) {
1196 < 1 ? this : xAxis;< axisPos) {< '; // Unbind and set unbinder to undefined
1197 < 1 ? this : xAxis;< axisPos) {< '; this.unbindMouseWheel = this.unbindMouseWheel();
1198 < 1 ? this : xAxis;< axisPos) {< '; }
1199  
1200 < 1 ? this : xAxis;< axisPos) {< '; };
1201  
1202 < 1 ? this : xAxis;< axisPos) {< '; // Add events to the Chart object itself
1203 < 1 ? this : xAxis;< axisPos) {< '; extend(Chart.prototype, /** @lends Chart.prototype */ {
1204  
1205 < 1 ? this : xAxis;< axisPos) {< '; /**
1206 < 1 ? this : xAxis;< axisPos) {< '; * Fit an inner box to an outer. If the inner box overflows left or right,
1207 < 1 ? this : xAxis;< axisPos) {< '; * align it to the sides of the outer. If it overflows both sides, fit it
1208 < 1 ? this : xAxis;< axisPos) {< '; * within the outer. This is a pattern that occurs more places in
1209 < 1 ? this : xAxis;< axisPos) {< '; * Highcharts, perhaps it should be elevated to a common utility function.
1210 < 1 ? this : xAxis;< axisPos) {< '; *
1211 < 1 ? this : xAxis;< axisPos) {< '; * @private
1212 < 1 ? this : xAxis;< axisPos) {< '; */
1213 < 1 ? this : xAxis;< axisPos) {< '; fitToBox: function(inner, outer) {
1214 < 1 ? this : xAxis;< axisPos) {< '; each([
1215 < 1 ? this : xAxis;< axisPos) {< '; ['x', 'width'],
1216 < 1 ? this : xAxis;< axisPos) {< '; ['y', 'height']
1217 < 1 ? this : xAxis;< axisPos) {< '; ], function(dim) {
1218 < 1 ? this : xAxis;< axisPos) {< '; var pos = dim[0],
1219 < 1 ? this : xAxis;< axisPos) {< '; size = dim[1];
1220  
1221 < 1 ? this : xAxis;< axisPos) {< '; if (inner[pos] + inner[size] > outer[pos] + outer[size]) { // right overflow
1222 < 1 ? this : xAxis;< axisPos) {< '; if (inner[size] > outer[size]) { // the general size is greater, fit fully to outer
1223 < 1 ? this : xAxis;< axisPos) {< '; inner[size] = outer[size];
1224 < 1 ? this : xAxis;< axisPos) {< '; inner[pos] = outer[pos];
1225 < 1 ? this : xAxis;< axisPos) {< '; } else { // align right
1226 < 1 ? this : xAxis;< axisPos) {< '; inner[pos] = outer[pos] + outer[size] - inner[size];
1227 < 1 ? this : xAxis;< axisPos) {< '; }
1228 < 1 ? this : xAxis;< axisPos) {< '; }
1229 < 1 ? this : xAxis;< axisPos) {< '; if (inner[size] > outer[size]) {
1230 < 1 ? this : xAxis;< axisPos) {< '; inner[size] = outer[size];
1231 < 1 ? this : xAxis;< axisPos) {< '; }
1232 < 1 ? this : xAxis;< axisPos) {< '; if (inner[pos] < outer[pos]) {
1233 < 1 ? this : xAxis;< axisPos) {< '; inner[pos] = outer[pos];
1234 < 1 ? this : xAxis;< axisPos) {< '; }
1235 < 1 ? this : xAxis;< axisPos) {< '; });
1236  
1237  
1238 < 1 ? this : xAxis;< axisPos) {< '; return inner;
1239 < 1 ? this : xAxis;< axisPos) {< '; },
1240  
1241 < 1 ? this : xAxis;< axisPos) {< '; /**
1242 < 1 ? this : xAxis;< axisPos) {< '; * Highmaps only. Zoom in or out of the map. See also {@link Point#zoomTo}.
1243 < 1 ? this : xAxis;< axisPos) {< '; * See {@link Chart#fromLatLonToPoint} for how to get the `centerX` and
1244 < 1 ? this : xAxis;< axisPos) {< '; * `centerY` parameters for a geographic location.
1245 < 1 ? this : xAxis;< axisPos) {< '; *
1246 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [howMuch]
1247 < 1 ? this : xAxis;< axisPos) {< '; * How much to zoom the map. Values less than 1 zooms in. 0.5 zooms
1248 < 1 ? this : xAxis;< axisPos) {< '; * in to half the current view. 2 zooms to twice the current view.
1249 < 1 ? this : xAxis;< axisPos) {< '; * If omitted, the zoom is reset.
1250 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [centerX]
1251 < 1 ? this : xAxis;< axisPos) {< '; * The X axis position to center around if available space.
1252 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [centerY]
1253 < 1 ? this : xAxis;< axisPos) {< '; * The Y axis position to center around if available space.
1254 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [mouseX]
1255 < 1 ? this : xAxis;< axisPos) {< '; * Fix the zoom to this position if possible. This is used for
1256 < 1 ? this : xAxis;< axisPos) {< '; * example in mousewheel events, where the area under the mouse
1257 < 1 ? this : xAxis;< axisPos) {< '; * should be fixed as we zoom in.
1258 < 1 ? this : xAxis;< axisPos) {< '; * @param {Number} [mouseY]
1259 < 1 ? this : xAxis;< axisPos) {< '; * Fix the zoom to this position if possible.
1260 < 1 ? this : xAxis;< axisPos) {< '; */
1261 < 1 ? this : xAxis;< axisPos) {< '; mapZoom: function(howMuch, centerXArg, centerYArg, mouseX, mouseY) {
1262 < 1 ? this : xAxis;< axisPos) {< '; /*if (this.isMapZooming) {
1263 < 1 ? this : xAxis;< axisPos) {< '; this.mapZoomQueue = arguments;
1264 < 1 ? this : xAxis;< axisPos) {< '; return;
1265 < 1 ? this : xAxis;< axisPos) {< '; }*/
1266  
1267 < 1 ? this : xAxis;< axisPos) {< '; var chart = this,
1268 < 1 ? this : xAxis;< axisPos) {< '; xAxis = chart.xAxis[0],
1269 < 1 ? this : xAxis;< axisPos) {< '; xRange = xAxis.max - xAxis.min,
1270 < 1 ? this : xAxis;< axisPos) {< '; centerX = pick(centerXArg, xAxis.min + xRange / 2),
1271 < 1 ? this : xAxis;< axisPos) {< '; newXRange = xRange * howMuch,
1272 < 1 ? this : xAxis;< axisPos) {< '; yAxis = chart.yAxis[0],
1273 < 1 ? this : xAxis;< axisPos) {< '; yRange = yAxis.max - yAxis.min,
1274 < 1 ? this : xAxis;< axisPos) {< '; centerY = pick(centerYArg, yAxis.min + yRange / 2),
1275 < 1 ? this : xAxis;< axisPos) {< '; newYRange = yRange * howMuch,
1276 < 1 ? this : xAxis;< axisPos) {< '; fixToX = mouseX ? ((mouseX - xAxis.pos) / xAxis.len) : 0.5,
1277 < 1 ? this : xAxis;< axisPos) {< '; fixToY = mouseY ? ((mouseY - yAxis.pos) / yAxis.len) : 0.5,
1278 < 1 ? this : xAxis;< axisPos) {< '; newXMin = centerX - newXRange * fixToX,
1279 < 1 ? this : xAxis;< axisPos) {< '; newYMin = centerY - newYRange * fixToY,
1280 < 1 ? this : xAxis;< axisPos) {< '; newExt = chart.fitToBox({
1281 < 1 ? this : xAxis;< axisPos) {< '; x: newXMin,
1282 < 1 ? this : xAxis;< axisPos) {< '; y: newYMin,
1283 < 1 ? this : xAxis;< axisPos) {< '; width: newXRange,
1284 < 1 ? this : xAxis;< axisPos) {< '; height: newYRange
1285 < 1 ? this : xAxis;< axisPos) {< '; }, {
1286 < 1 ? this : xAxis;< axisPos) {< '; x: xAxis.dataMin,
1287 < 1 ? this : xAxis;< axisPos) {< '; y: yAxis.dataMin,
1288 < 1 ? this : xAxis;< axisPos) {< '; width: xAxis.dataMax - xAxis.dataMin,
1289 < 1 ? this : xAxis;< axisPos) {< '; height: yAxis.dataMax - yAxis.dataMin
1290 < 1 ? this : xAxis;< axisPos) {< '; }),
1291 < 1 ? this : xAxis;< axisPos) {< '; zoomOut = newExt.x <= xAxis.dataMin &&
1292 < 1 ? this : xAxis;< axisPos) {< '; newExt.width >= xAxis.dataMax - xAxis.dataMin &&
1293 < 1 ? this : xAxis;< axisPos) {< '; newExt.y <= yAxis.dataMin &&
1294 < 1 ? this : xAxis;< axisPos) {< '; newExt.height >= yAxis.dataMax - yAxis.dataMin;
1295  
1296 < 1 ? this : xAxis;< axisPos) {< '; // When mousewheel zooming, fix the point under the mouse
1297 < 1 ? this : xAxis;< axisPos) {< '; if (mouseX) {
1298 < 1 ? this : xAxis;< axisPos) {< '; xAxis.fixTo = [mouseX - xAxis.pos, centerXArg];
1299 < 1 ? this : xAxis;< axisPos) {< '; }
1300 < 1 ? this : xAxis;< axisPos) {< '; if (mouseY) {
1301 < 1 ? this : xAxis;< axisPos) {< '; yAxis.fixTo = [mouseY - yAxis.pos, centerYArg];
1302 < 1 ? this : xAxis;< axisPos) {< '; }
1303  
1304 < 1 ? this : xAxis;< axisPos) {< '; // Zoom
1305 < 1 ? this : xAxis;< axisPos) {< '; if (howMuch !== undefined && !zoomOut) {
1306 < 1 ? this : xAxis;< axisPos) {< '; xAxis.setExtremes(newExt.x, newExt.x + newExt.width, false);
1307 < 1 ? this : xAxis;< axisPos) {< '; yAxis.setExtremes(newExt.y, newExt.y + newExt.height, false);
1308  
1309 < 1 ? this : xAxis;< axisPos) {< '; // Reset zoom
1310 < 1 ? this : xAxis;< axisPos) {< '; } else {
1311 < 1 ? this : xAxis;< axisPos) {< '; xAxis.setExtremes(undefined, undefined, false);
1312 < 1 ? this : xAxis;< axisPos) {< '; yAxis.setExtremes(undefined, undefined, false);
1313 < 1 ? this : xAxis;< axisPos) {< '; }
1314  
1315 < 1 ? this : xAxis;< axisPos) {< '; // Prevent zooming until this one is finished animating
1316 < 1 ? this : xAxis;< axisPos) {< '; /*chart.holdMapZoom = true;
1317 < 1 ? this : xAxis;< axisPos) {< '; setTimeout(function () {
1318 < 1 ? this : xAxis;< axisPos) {< '; chart.holdMapZoom = false;
1319 < 1 ? this : xAxis;< axisPos) {< '; }, 200);*/
1320 < 1 ? this : xAxis;< axisPos) {< '; /*delay = animation ? animation.duration || 500 : 0;
1321 < 1 ? this : xAxis;< axisPos) {< '; if (delay) {
1322 < 1 ? this : xAxis;< axisPos) {< '; chart.isMapZooming = true;
1323 < 1 ? this : xAxis;< axisPos) {< '; setTimeout(function () {
1324 < 1 ? this : xAxis;< axisPos) {< '; chart.isMapZooming = false;
1325 < 1 ? this : xAxis;< axisPos) {< '; if (chart.mapZoomQueue) {
1326 < 1 ? this : xAxis;< axisPos) {< '; chart.mapZoom.apply(chart, chart.mapZoomQueue);
1327 < 1 ? this : xAxis;< axisPos) {< '; }
1328 < 1 ? this : xAxis;< axisPos) {< '; chart.mapZoomQueue = null;
1329 < 1 ? this : xAxis;< axisPos) {< '; }, delay);
1330 < 1 ? this : xAxis;< axisPos) {< '; }*/
1331  
1332 < 1 ? this : xAxis;< axisPos) {< '; chart.redraw();
1333 < 1 ? this : xAxis;< axisPos) {< '; }
1334 < 1 ? this : xAxis;< axisPos) {< '; });
1335  
1336 < 1 ? this : xAxis;< axisPos) {< '; /**
1337 < 1 ? this : xAxis;< axisPos) {< '; * Extend the Chart.render method to add zooming and panning
1338 < 1 ? this : xAxis;< axisPos) {< '; */
1339 < 1 ? this : xAxis;< axisPos) {< '; wrap(Chart.prototype, 'render', function(proceed) {
1340 < 1 ? this : xAxis;< axisPos) {< '; // Render the plus and minus buttons. Doing this before the shapes makes getBBox much quicker, at least in Chrome.
1341 < 1 ? this : xAxis;< axisPos) {< '; this.mapNavigation = new MapNavigation(this);
1342 < 1 ? this : xAxis;< axisPos) {< '; this.mapNavigation.update();
1343  
1344 < 1 ? this : xAxis;< axisPos) {< '; proceed.call(this);
1345 < 1 ? this : xAxis;< axisPos) {< '; });
1346  
1347 < 1 ? this : xAxis;< axisPos) {< '; }(Highcharts));
1348 < 1 ? this : xAxis;< axisPos) {< '; (function(H) {
1349 < 1 ? this : xAxis;< axisPos) {< '; /**
1350 < 1 ? this : xAxis;< axisPos) {< '; * (c) 2010-2017 Torstein Honsi
1351 < 1 ? this : xAxis;< axisPos) {< '; *
1352 < 1 ? this : xAxis;< axisPos) {< '; * License: www.highcharts.com/license
1353 < 1 ? this : xAxis;< axisPos) {< '; */
1354 < 1 ? this : xAxis;< axisPos) {< '; var extend = H.extend,
1355 < 1 ? this : xAxis;< axisPos) {< '; pick = H.pick,
1356 < 1 ? this : xAxis;< axisPos) {< '; Pointer = H.Pointer,
1357 < 1 ? this : xAxis;< axisPos) {< '; wrap = H.wrap;
1358  
1359 < 1 ? this : xAxis;< axisPos) {< '; // Extend the Pointer
1360 < 1 ? this : xAxis;< axisPos) {< '; extend(Pointer.prototype, {
1361  
1362 < 1 ? this : xAxis;< axisPos) {< '; /**
1363 < 1 ? this : xAxis;< axisPos) {< '; * The event handler for the doubleclick event
1364 < 1 ? this : xAxis;< axisPos) {< '; */
1365 < 1 ? this : xAxis;< axisPos) {< '; onContainerDblClick: function(e) {
1366 < 1 ? this : xAxis;< axisPos) {< '; var chart = this.chart;
1367  
1368 < 1 ? this : xAxis;< axisPos) {< '; e = this.normalize(e);
1369  
1370 < 1 ? this : xAxis;< axisPos) {< '; if (chart.options.mapNavigation.enableDoubleClickZoomTo) {
1371 < 1 ? this : xAxis;< axisPos) {< '; if (chart.pointer.inClass(e.target, 'highcharts-tracker') && chart.hoverPoint) {
1372 < 1 ? this : xAxis;< axisPos) {< '; chart.hoverPoint.zoomTo();
1373 < 1 ? this : xAxis;< axisPos) {< '; }
1374 < 1 ? this : xAxis;< axisPos) {< '; } else if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
1375 < 1 ? this : xAxis;< axisPos) {< '; chart.mapZoom(
1376 < 1 ? this : xAxis;< axisPos) {< '; 0.5,
1377 < 1 ? this : xAxis;< axisPos) {< '; chart.xAxis[0].toValue(e.chartX),
1378 < 1 ? this : xAxis;< axisPos) {< '; chart.yAxis[0].toValue(e.chartY),
1379 < 1 ? this : xAxis;< axisPos) {< '; e.chartX,
1380 < 1 ? this : xAxis;< axisPos) {< '; e.chartY
1381 < 1 ? this : xAxis;< axisPos) {< '; );
1382 < 1 ? this : xAxis;< axisPos) {< '; }
1383 < 1 ? this : xAxis;< axisPos) {< '; },
1384  
1385 < 1 ? this : xAxis;< axisPos) {< '; /**
1386 < 1 ? this : xAxis;< axisPos) {< '; * The event handler for the mouse scroll event
1387 < 1 ? this : xAxis;< axisPos) {< '; */
1388 < 1 ? this : xAxis;< axisPos) {< '; onContainerMouseWheel: function(e) {
1389 < 1 ? this : xAxis;< axisPos) {< '; var chart = this.chart,
1390 < 1 ? this : xAxis;< axisPos) {< '; delta;
1391  
1392 < 1 ? this : xAxis;< axisPos) {< '; e = this.normalize(e);
1393  
1394 < 1 ? this : xAxis;< axisPos) {< '; // Firefox uses e.detail, WebKit and IE uses wheelDelta
1395 < 1 ? this : xAxis;< axisPos) {< '; delta = e.detail || -(e.wheelDelta / 120);
1396 < 1 ? this : xAxis;< axisPos) {< '; if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
1397 < 1 ? this : xAxis;< axisPos) {< '; chart.mapZoom(
1398 < 1 ? this : xAxis;< axisPos) {< '; Math.pow(chart.options.mapNavigation.mouseWheelSensitivity, delta),
1399 < 1 ? this : xAxis;< axisPos) {< '; chart.xAxis[0].toValue(e.chartX),
1400 < 1 ? this : xAxis;< axisPos) {< '; chart.yAxis[0].toValue(e.chartY),
1401 < 1 ? this : xAxis;< axisPos) {< '; e.chartX,
1402 < 1 ? this : xAxis;< axisPos) {< '; e.chartY
1403 < 1 ? this : xAxis;< axisPos) {< '; );
1404 < 1 ? this : xAxis;< axisPos) {< '; }
1405 < 1 ? this : xAxis;< axisPos) {< '; }
1406 < 1 ? this : xAxis;< axisPos) {< '; });
1407  
1408 < 1 ? this : xAxis;< axisPos) {< '; // The pinchType is inferred from mapNavigation options.
1409 < 1 ? this : xAxis;< axisPos) {< '; wrap(Pointer.prototype, 'zoomOption', function(proceed) {
1410  
1411  
1412 < 1 ? this : xAxis;< axisPos) {< '; var mapNavigation = this.chart.options.mapNavigation;
1413  
1414 < 1 ? this : xAxis;< axisPos) {< '; // Pinch status
1415 < 1 ? this : xAxis;< axisPos) {< '; if (pick(mapNavigation.enableTouchZoom, mapNavigation.enabled)) {
1416 < 1 ? this : xAxis;< axisPos) {< '; this.chart.options.chart.pinchType = 'xy';
1417 < 1 ? this : xAxis;< axisPos) {< '; }
1418  
1419 < 1 ? this : xAxis;< axisPos) {< '; proceed.apply(this, [].slice.call(arguments, 1));
1420  
1421 < 1 ? this : xAxis;< axisPos) {< '; });
1422  
1423 < 1 ? this : xAxis;< axisPos) {< '; // Extend the pinchTranslate method to preserve fixed ratio when zooming
1424 < 1 ? this : xAxis;< axisPos) {< '; wrap(Pointer.prototype, 'pinchTranslate', function(proceed, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {
1425 < 1 ? this : xAxis;< axisPos) {< '; var xBigger;
1426 < 1 ? this : xAxis;< axisPos) {< '; proceed.call(this, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);
1427  
1428 < 1 ? this : xAxis;< axisPos) {< '; // Keep ratio
1429 < 1 ? this : xAxis;< axisPos) {< '; if (this.chart.options.chart.type === 'map' && this.hasZoom) {
1430 < 1 ? this : xAxis;< axisPos) {< '; xBigger = transform.scaleX > transform.scaleY;
1431 < 1 ? this : xAxis;< axisPos) {< '; this.pinchTranslateDirection(!xBigger,
1432 < 1 ? this : xAxis;< axisPos) {< '; pinchDown,
1433 < 1 ? this : xAxis;< axisPos) {< '; touches,
1434 < 1 ? this : xAxis;< axisPos) {< '; transform,
1435 < 1 ? this : xAxis;< axisPos) {< '; selectionMarker,
1436 < 1 ? this : xAxis;< axisPos) {< '; clip,
1437 < 1 ? this : xAxis;< axisPos) {< '; lastValidTouch,
1438 < 1 ? this : xAxis;< axisPos) {< '; xBigger ? transform.scaleX : transform.scaleY
1439 < 1 ? this : xAxis;< axisPos) {< '; );
1440 < 1 ? this : xAxis;< axisPos) {< '; }
1441 < 1 ? this : xAxis;< axisPos) {< '; });
1442  
1443 < 1 ? this : xAxis;< axisPos) {< '; }(Highcharts));
1444 < 1 ? this : xAxis;< axisPos) {< '; (function(H) {
1445 < 1 ? this : xAxis;< axisPos) {< '; /**
1446 < 1 ? this : xAxis;< axisPos) {< '; * (c) 2010-2017 Torstein Honsi
1447 < 1 ? this : xAxis;< axisPos) {< '; *
1448 < 1 ? this : xAxis;< axisPos) {< '; * License: www.highcharts.com/license
1449 < 1 ? this : xAxis;< axisPos) {< '; */
1450 < 1 ? this : xAxis;< axisPos) {< '; var colorPointMixin = H.colorPointMixin,
1451 < 1 ? this : xAxis;< axisPos) {< '; colorSeriesMixin = H.colorSeriesMixin,
1452 < 1 ? this : xAxis;< axisPos) {< '; doc = H.doc,
1453 < 1 ? this : xAxis;< axisPos) {< '; each = H.each,
1454 < 1 ? this : xAxis;< axisPos) {< '; extend = H.extend,
1455 < 1 ? this : xAxis;< axisPos) {< '; isNumber = H.isNumber,
1456 < 1 ? this : xAxis;< axisPos) {< '; LegendSymbolMixin = H.LegendSymbolMixin,
1457 < 1 ? this : xAxis;< axisPos) {< '; map = H.map,
1458 < 1 ? this : xAxis;< axisPos) {< '; merge = H.merge,
1459 < 1 ? this : xAxis;< axisPos) {< '; noop = H.noop,
1460 < 1 ? this : xAxis;< axisPos) {< '; pick = H.pick,
1461 < 1 ? this : xAxis;< axisPos) {< '; isArray = H.isArray,
1462 < 1 ? this : xAxis;< axisPos) {< '; Point = H.Point,
1463 < 1 ? this : xAxis;< axisPos) {< '; Series = H.Series,
1464 < 1 ? this : xAxis;< axisPos) {< '; seriesType = H.seriesType,
1465 < 1 ? this : xAxis;< axisPos) {< '; seriesTypes = H.seriesTypes,
1466 < 1 ? this : xAxis;< axisPos) {< '; splat = H.splat;
1467  
1468 < 1 ? this : xAxis;< axisPos) {< '; // The vector-effect attribute is not supported in IE <= 11 (at least), so we need
1469 < 1 ? this : xAxis;< axisPos) {< '; // diffent logic (#3218)
1470 < 1 ? this : xAxis;< axisPos) {< '; var supportsVectorEffect = doc.documentElement.style.vectorEffect !== undefined;
1471  
1472  
1473 < 1 ? this : xAxis;< axisPos) {< '; // Add the map series type
1474 < 1 ? this : xAxis;< axisPos) {< '; /**
1475 < 1 ? this : xAxis;< axisPos) {< '; * @extends {plotOptions.scatter}
1476 < 1 ? this : xAxis;< axisPos) {< '; * @optionparent plotOptions.map
1477 < 1 ? this : xAxis;< axisPos) {< '; */
1478 < 1 ? this : xAxis;< axisPos) {< '; seriesType('map', 'scatter', {
1479  
1480 < 1 ? this : xAxis;< axisPos) {< '; /**
1481 < 1 ? this : xAxis;< axisPos) {< '; */
1482 < 1 ? this : xAxis;< axisPos) {< '; allAreas: true,
1483  
1484  
1485 < 1 ? this : xAxis;< axisPos) {< '; /**
1486 < 1 ? this : xAxis;< axisPos) {< '; */
1487 < 1 ? this : xAxis;< axisPos) {< '; animation: false, // makes the complex shapes slow
1488  
1489 < 1 ? this : xAxis;< axisPos) {< '; /**
1490 < 1 ? this : xAxis;< axisPos) {< '; * The color to apply to null points.
1491 < 1 ? this : xAxis;< axisPos) {< '; *
1492 < 1 ? this : xAxis;< axisPos) {< '; * In [styled mode](http://www.highcharts.com/docs/chart-design-and-
1493 < 1 ? this : xAxis;< axisPos) {< '; * style/style-by-css), the null point fill is set in the `.highcharts-
1494 < 1 ? this : xAxis;< axisPos) {< '; * null-point` class.
1495 < 1 ? this : xAxis;< axisPos) {< '; *
1496 < 1 ? this : xAxis;< axisPos) {< '; * @type {Color}
1497 < 1 ? this : xAxis;< axisPos) {< '; * @sample {highmaps} maps/demo/all-areas-as-null/ Null color
1498 < 1 ? this : xAxis;< axisPos) {< '; * @default #f7f7f7
1499 < 1 ? this : xAxis;< axisPos) {< '; * @product highmaps
1500 < 1 ? this : xAxis;< axisPos) {< '; */
1501 < 1 ? this : xAxis;< axisPos) {< '; nullColor: '#f7f7f7',
1502  
1503 < 1 ? this : xAxis;< axisPos) {< '; /**
1504 < 1 ? this : xAxis;< axisPos) {< '; */
1505 < 1 ? this : xAxis;< axisPos) {< '; borderColor: '#cccccc',
1506  
1507 < 1 ? this : xAxis;< axisPos) {< '; /**
1508 < 1 ? this : xAxis;< axisPos) {< '; */
1509 < 1 ? this : xAxis;< axisPos) {< '; borderWidth: 1,
1510  
1511 < 1 ? this : xAxis;< axisPos) {< '; /**
1512 < 1 ? this : xAxis;< axisPos) {< '; */
1513 < 1 ? this : xAxis;< axisPos) {< '; marker: null,
1514  
1515 < 1 ? this : xAxis;< axisPos) {< '; /**
1516 < 1 ? this : xAxis;< axisPos) {< '; */
1517 < 1 ? this : xAxis;< axisPos) {< '; stickyTracking: false,
1518  
1519 < 1 ? this : xAxis;< axisPos) {< '; /**
1520 < 1 ? this : xAxis;< axisPos) {< '; */
1521 < 1 ? this : xAxis;< axisPos) {< '; joinBy: 'hc-key',
1522  
1523 < 1 ? this : xAxis;< axisPos) {< '; /**
1524 < 1 ? this : xAxis;< axisPos) {< '; */
1525 < 1 ? this : xAxis;< axisPos) {< '; dataLabels: {
1526  
1527 < 1 ? this : xAxis;< axisPos) {< '; /**
1528 < 1 ? this : xAxis;< axisPos) {< '; */
1529 < 1 ? this : xAxis;< axisPos) {< '; formatter: function() { // #2945
1530 < 1 ? this : xAxis;< axisPos) {< '; return this.point.value;
1531 < 1 ? this : xAxis;< axisPos) {< '; },
1532  
1533 < 1 ? this : xAxis;< axisPos) {< '; /**
1534 < 1 ? this : xAxis;< axisPos) {< '; */
1535 < 1 ? this : xAxis;< axisPos) {< '; inside: true, // for the color
1536  
1537 < 1 ? this : xAxis;< axisPos) {< '; /**
1538 < 1 ? this : xAxis;< axisPos) {< '; */
1539 < 1 ? this : xAxis;< axisPos) {< '; verticalAlign: 'middle',
1540  
1541 < 1 ? this : xAxis;< axisPos) {< '; /**
1542 < 1 ? this : xAxis;< axisPos) {< '; */
1543 < 1 ? this : xAxis;< axisPos) {< '; crop: false,
1544  
1545 < 1 ? this : xAxis;< axisPos) {< '; /**
1546 < 1 ? this : xAxis;< axisPos) {< '; */
1547 < 1 ? this : xAxis;< axisPos) {< '; overflow: false,
1548  
1549 < 1 ? this : xAxis;< axisPos) {< '; /**
1550 < 1 ? this : xAxis;< axisPos) {< '; */
1551 < 1 ? this : xAxis;< axisPos) {< '; padding: 0
1552 < 1 ? this : xAxis;< axisPos) {< '; },
1553  
1554 < 1 ? this : xAxis;< axisPos) {< '; /**
1555 < 1 ? this : xAxis;< axisPos) {< '; */
1556 < 1 ? this : xAxis;< axisPos) {< '; turboThreshold: 0,
1557  
1558 < 1 ? this : xAxis;< axisPos) {< '; /**
1559 < 1 ? this : xAxis;< axisPos) {< '; */
1560 < 1 ? this : xAxis;< axisPos) {< '; tooltip: {
1561  
1562 < 1 ? this : xAxis;< axisPos) {< '; /**
1563 < 1 ? this : xAxis;< axisPos) {< '; */
1564 < 1 ? this : xAxis;< axisPos) {< '; followPointer: true,
1565  
1566 < 1 ? this : xAxis;< axisPos) {< '; /**
1567 < 1 ? this : xAxis;< axisPos) {< '; */
1568 < 1 ? this : xAxis;< axisPos) {< '; pointFormat: '{point.name}: {point.value}<br/>'
1569 < 1 ? this : xAxis;< axisPos) {< '; },
1570  
1571 < 1 ? this : xAxis;< axisPos) {< '; /**
1572 < 1 ? this : xAxis;< axisPos) {< '; */
1573 < 1 ? this : xAxis;< axisPos) {< '; states: {
1574  
1575 < 1 ? this : xAxis;< axisPos) {< '; /**
1576 < 1 ? this : xAxis;< axisPos) {< '; */
1577 < 1 ? this : xAxis;< axisPos) {< '; normal: {
1578  
1579 < 1 ? this : xAxis;< axisPos) {< '; /**
1580 < 1 ? this : xAxis;< axisPos) {< '; */
1581 < 1 ? this : xAxis;< axisPos) {< '; animation: true
1582 < 1 ? this : xAxis;< axisPos) {< '; },
1583  
1584 < 1 ? this : xAxis;< axisPos) {< '; /**
1585 < 1 ? this : xAxis;< axisPos) {< '; */
1586 < 1 ? this : xAxis;< axisPos) {< '; hover: {
1587  
1588 < 1 ? this : xAxis;< axisPos) {< '; /**
1589 < 1 ? this : xAxis;< axisPos) {< '; */
1590 < 1 ? this : xAxis;< axisPos) {< '; brightness: 0.2,
1591  
1592 < 1 ? this : xAxis;< axisPos) {< '; /**
1593 < 1 ? this : xAxis;< axisPos) {< '; */
1594 < 1 ? this : xAxis;< axisPos) {< '; halo: null
1595 < 1 ? this : xAxis;< axisPos) {< '; },
1596  
1597 < 1 ? this : xAxis;< axisPos) {< '; /**
1598 < 1 ? this : xAxis;< axisPos) {< '; */
1599 < 1 ? this : xAxis;< axisPos) {< '; select: {
1600  
1601 < 1 ? this : xAxis;< axisPos) {< '; /**
1602 < 1 ? this : xAxis;< axisPos) {< '; */
1603 < 1 ? this : xAxis;< axisPos) {< '; color: '#cccccc'
1604 < 1 ? this : xAxis;< axisPos) {< '; }
1605 < 1 ? this : xAxis;< axisPos) {< '; }
1606  
1607 < 1 ? this : xAxis;< axisPos) {< '; // Prototype members
1608 < 1 ? this : xAxis;< axisPos) {< '; }, merge(colorSeriesMixin, {
1609 < 1 ? this : xAxis;< axisPos) {< '; type: 'map',
1610 < 1 ? this : xAxis;< axisPos) {< '; getExtremesFromAll: true,
1611 < 1 ? this : xAxis;< axisPos) {< '; useMapGeometry: true, // get axis extremes from paths, not values
1612 < 1 ? this : xAxis;< axisPos) {< '; forceDL: true,
1613 < 1 ? this : xAxis;< axisPos) {< '; searchPoint: noop,
1614 < 1 ? this : xAxis;< axisPos) {< '; directTouch: true, // When tooltip is not shared, this series (and derivatives) requires direct touch/hover. KD-tree does not apply.
1615 < 1 ? this : xAxis;< axisPos) {< '; preserveAspectRatio: true, // X axis and Y axis must have same translation slope
1616 < 1 ? this : xAxis;< axisPos) {< '; pointArrayMap: ['value'],
1617 < 1 ? this : xAxis;< axisPos) {< '; /**
1618 < 1 ? this : xAxis;< axisPos) {< '; * Get the bounding box of all paths in the map combined.
1619 < 1 ? this : xAxis;< axisPos) {< '; */
1620 < 1 ? this : xAxis;< axisPos) {< '; getBox: function(paths) {
1621 < 1 ? this : xAxis;< axisPos) {< '; var MAX_VALUE = Number.MAX_VALUE,
1622 < 1 ? this : xAxis;< axisPos) {< '; maxX = -MAX_VALUE,
1623 < 1 ? this : xAxis;< axisPos) {< '; minX = MAX_VALUE,
1624 < 1 ? this : xAxis;< axisPos) {< '; maxY = -MAX_VALUE,
1625 < 1 ? this : xAxis;< axisPos) {< '; minY = MAX_VALUE,
1626 < 1 ? this : xAxis;< axisPos) {< '; minRange = MAX_VALUE,
1627 < 1 ? this : xAxis;< axisPos) {< '; xAxis = this.xAxis,
1628 < 1 ? this : xAxis;< axisPos) {< '; yAxis = this.yAxis,
1629 < 1 ? this : xAxis;< axisPos) {< '; hasBox;
1630  
1631 < 1 ? this : xAxis;< axisPos) {< '; // Find the bounding box
1632 < 1 ? this : xAxis;< axisPos) {< '; each(paths || [], function(point) {
1633  
1634 < 1 ? this : xAxis;< axisPos) {< '; if (point.path) {
1635 < 1 ? this : xAxis;< axisPos) {< '; if (typeof point.path === 'string') {
1636 < 1 ? this : xAxis;< axisPos) {< '; point.path = H.splitPath(point.path);
1637 < 1 ? this : xAxis;< axisPos) {< '; }
1638  
1639 < 1 ? this : xAxis;< axisPos) {< '; var path = point.path || [],
1640 < 1 ? this : xAxis;< axisPos) {< '; i = path.length,
1641 < 1 ? this : xAxis;< axisPos) {< '; even = false, // while loop reads from the end
1642 < 1 ? this : xAxis;< axisPos) {< '; pointMaxX = -MAX_VALUE,
1643 < 1 ? this : xAxis;< axisPos) {< '; pointMinX = MAX_VALUE,
1644 < 1 ? this : xAxis;< axisPos) {< '; pointMaxY = -MAX_VALUE,
1645 < 1 ? this : xAxis;< axisPos) {< '; pointMinY = MAX_VALUE,
1646 < 1 ? this : xAxis;< axisPos) {< '; properties = point.properties;
1647  
1648 < 1 ? this : xAxis;< axisPos) {< '; // The first time a map point is used, analyze its box
1649 < 1 ? this : xAxis;< axisPos) {< '; if (!point._foundBox) {
1650 < 1 ? this : xAxis;< axisPos) {< '; while (i--) {
1651 < 1 ? this : xAxis;< axisPos) {< '; if (isNumber(path[i])) {
1652 < 1 ? this : xAxis;< axisPos) {< '; if (even) { // even = x
1653 < 1 ? this : xAxis;< axisPos) {< '; pointMaxX = Math.max(pointMaxX, path[i]);
1654 < 1 ? this : xAxis;< axisPos) {< '; pointMinX = Math.min(pointMinX, path[i]);
1655 < 1 ? this : xAxis;< axisPos) {< '; } else { // odd = Y
1656 < 1 ? this : xAxis;< axisPos) {< '; pointMaxY = Math.max(pointMaxY, path[i]);
1657 < 1 ? this : xAxis;< axisPos) {< '; pointMinY = Math.min(pointMinY, path[i]);
1658 < 1 ? this : xAxis;< axisPos) {< '; }
1659 < 1 ? this : xAxis;< axisPos) {< '; even = !even;
1660 < 1 ? this : xAxis;< axisPos) {< '; }
1661 < 1 ? this : xAxis;< axisPos) {< '; }
1662 < 1 ? this : xAxis;< axisPos) {< '; // Cache point bounding box for use to position data labels,
1663 < 1 ? this : xAxis;< axisPos) {< '; // bubbles etc
1664 < 1 ? this : xAxis;< axisPos) {< '; point._midX = pointMinX + (pointMaxX - pointMinX) * pick(
1665 < 1 ? this : xAxis;< axisPos) {< '; point.middleX,
1666 < 1 ? this : xAxis;< axisPos) {< '; properties && properties['hc-middle-x'],
1667 < 1 ? this : xAxis;< axisPos) {< '; 0.5
1668 < 1 ? this : xAxis;< axisPos) {< '; );
1669 < 1 ? this : xAxis;< axisPos) {< '; point._midY = pointMinY + (pointMaxY - pointMinY) * pick(
1670 < 1 ? this : xAxis;< axisPos) {< '; point.middleY,
1671 < 1 ? this : xAxis;< axisPos) {< '; properties && properties['hc-middle-y'],
1672 < 1 ? this : xAxis;< axisPos) {< '; 0.5
1673 < 1 ? this : xAxis;< axisPos) {< '; );
1674 < 1 ? this : xAxis;< axisPos) {< '; point._maxX = pointMaxX;
1675 < 1 ? this : xAxis;< axisPos) {< '; point._minX = pointMinX;
1676 < 1 ? this : xAxis;< axisPos) {< '; point._maxY = pointMaxY;
1677 < 1 ? this : xAxis;< axisPos) {< '; point._minY = pointMinY;
1678 < 1 ? this : xAxis;< axisPos) {< '; point.labelrank = pick(point.labelrank, (pointMaxX - pointMinX) * (pointMaxY - pointMinY));
1679 < 1 ? this : xAxis;< axisPos) {< '; point._foundBox = true;
1680 < 1 ? this : xAxis;< axisPos) {< '; }
1681  
1682 < 1 ? this : xAxis;< axisPos) {< '; maxX = Math.max(maxX, point._maxX);
1683 < 1 ? this : xAxis;< axisPos) {< '; minX = Math.min(minX, point._minX);
1684 < 1 ? this : xAxis;< axisPos) {< '; maxY = Math.max(maxY, point._maxY);
1685 < 1 ? this : xAxis;< axisPos) {< '; minY = Math.min(minY, point._minY);
1686 < 1 ? this : xAxis;< axisPos) {< '; minRange = Math.min(point._maxX - point._minX, point._maxY - point._minY, minRange);
1687 < 1 ? this : xAxis;< axisPos) {< '; hasBox = true;
1688 < 1 ? this : xAxis;< axisPos) {< '; }
1689 < 1 ? this : xAxis;< axisPos) {< '; });
1690  
1691 < 1 ? this : xAxis;< axisPos) {< '; // Set the box for the whole series
1692 < 1 ? this : xAxis;< axisPos) {< '; if (hasBox) {
1693 < 1 ? this : xAxis;< axisPos) {< '; this.minY = Math.min(minY, pick(this.minY, MAX_VALUE));
1694 < 1 ? this : xAxis;< axisPos) {< '; this.maxY = Math.max(maxY, pick(this.maxY, -MAX_VALUE));
1695 < 1 ? this : xAxis;< axisPos) {< '; this.minX = Math.min(minX, pick(this.minX, MAX_VALUE));
1696 < 1 ? this : xAxis;< axisPos) {< '; this.maxX = Math.max(maxX, pick(this.maxX, -MAX_VALUE));
1697  
1698 < 1 ? this : xAxis;< axisPos) {< '; // If no minRange option is set, set the default minimum zooming range to 5 times the
1699 < 1 ? this : xAxis;< axisPos) {< '; // size of the smallest element
1700 < 1 ? this : xAxis;< axisPos) {< '; if (xAxis && xAxis.options.minRange === undefined) {
1701 < 1 ? this : xAxis;< axisPos) {< '; xAxis.minRange = Math.min(5 * minRange, (this.maxX - this.minX) / 5, xAxis.minRange || MAX_VALUE);
1702 < 1 ? this : xAxis;< axisPos) {< '; }
1703 < 1 ? this : xAxis;< axisPos) {< '; if (yAxis && yAxis.options.minRange === undefined) {
1704 < 1 ? this : xAxis;< axisPos) {< '; yAxis.minRange = Math.min(5 * minRange, (this.maxY - this.minY) / 5, yAxis.minRange || MAX_VALUE);
1705 < 1 ? this : xAxis;< axisPos) {< '; }
1706 < 1 ? this : xAxis;< axisPos) {< '; }
1707 < 1 ? this : xAxis;< axisPos) {< '; },
1708  
1709 < 1 ? this : xAxis;< axisPos) {< '; getExtremes: function() {
1710 < 1 ? this : xAxis;< axisPos) {< '; // Get the actual value extremes for colors
1711 < 1 ? this : xAxis;< axisPos) {< '; Series.prototype.getExtremes.call(this, this.valueData);
1712  
1713 < 1 ? this : xAxis;< axisPos) {< '; // Recalculate box on updated data
1714 < 1 ? this : xAxis;< axisPos) {< '; if (this.chart.hasRendered && this.isDirtyData) {
1715 < 1 ? this : xAxis;< axisPos) {< '; this.getBox(this.options.data);
1716 < 1 ? this : xAxis;< axisPos) {< '; }
1717  
1718 < 1 ? this : xAxis;< axisPos) {< '; this.valueMin = this.dataMin;
1719 < 1 ? this : xAxis;< axisPos) {< '; this.valueMax = this.dataMax;
1720  
1721 < 1 ? this : xAxis;< axisPos) {< '; // Extremes for the mock Y axis
1722 < 1 ? this : xAxis;< axisPos) {< '; this.dataMin = this.minY;
1723 < 1 ? this : xAxis;< axisPos) {< '; this.dataMax = this.maxY;
1724 < 1 ? this : xAxis;< axisPos) {< '; },
1725  
1726 < 1 ? this : xAxis;< axisPos) {< '; /**
1727 < 1 ? this : xAxis;< axisPos) {< '; * Translate the path so that it automatically fits into the plot area box
1728 < 1 ? this : xAxis;< axisPos) {< '; * @param {Object} path
1729 < 1 ? this : xAxis;< axisPos) {< '; */
1730 < 1 ? this : xAxis;< axisPos) {< '; translatePath: function(path) {
1731  
1732 < 1 ? this : xAxis;< axisPos) {< '; var series = this,
1733 < 1 ? this : xAxis;< axisPos) {< '; even = false, // while loop reads from the end
1734 < 1 ? this : xAxis;< axisPos) {< '; xAxis = series.xAxis,
1735 < 1 ? this : xAxis;< axisPos) {< '; yAxis = series.yAxis,
1736 < 1 ? this : xAxis;< axisPos) {< '; xMin = xAxis.min,
1737 < 1 ? this : xAxis;< axisPos) {< '; xTransA = xAxis.transA,
1738 < 1 ? this : xAxis;< axisPos) {< '; xMinPixelPadding = xAxis.minPixelPadding,
1739 < 1 ? this : xAxis;< axisPos) {< '; yMin = yAxis.min,
1740 < 1 ? this : xAxis;< axisPos) {< '; yTransA = yAxis.transA,
1741 < 1 ? this : xAxis;< axisPos) {< '; yMinPixelPadding = yAxis.minPixelPadding,
1742 < 1 ? this : xAxis;< axisPos) {< '; i,
1743 < 1 ? this : xAxis;< axisPos) {< '; ret = []; // Preserve the original
1744  
1745 < 1 ? this : xAxis;< axisPos) {< '; // Do the translation
1746 < 1 ? this : xAxis;< axisPos) {< '; if (path) {
1747 < 1 ? this : xAxis;< axisPos) {< '; i = path.length;
1748 < 1 ? this : xAxis;< axisPos) {< '; while (i--) {
1749 < 1 ? this : xAxis;< axisPos) {< '; if (isNumber(path[i])) {
1750 < 1 ? this : xAxis;< axisPos) {< '; ret[i] = even ?
1751 < 1 ? this : xAxis;< axisPos) {< '; (path[i] - xMin) * xTransA + xMinPixelPadding :
1752 < 1 ? this : xAxis;< axisPos) {< '; (path[i] - yMin) * yTransA + yMinPixelPadding;
1753 < 1 ? this : xAxis;< axisPos) {< '; even = !even;
1754 < 1 ? this : xAxis;< axisPos) {< '; } else {
1755 < 1 ? this : xAxis;< axisPos) {< '; ret[i] = path[i];
1756 < 1 ? this : xAxis;< axisPos) {< '; }
1757 < 1 ? this : xAxis;< axisPos) {< '; }
1758 < 1 ? this : xAxis;< axisPos) {< '; }
1759  
1760 < 1 ? this : xAxis;< axisPos) {< '; return ret;
1761 < 1 ? this : xAxis;< axisPos) {< '; },
1762  
1763 < 1 ? this : xAxis;< axisPos) {< '; /**
1764 < 1 ? this : xAxis;< axisPos) {< '; * Extend setData to join in mapData. If the allAreas option is true, all areas
1765 < 1 ? this : xAxis;< axisPos) {< '; * from the mapData are used, and those that don't correspond to a data value
1766 < 1 ? this : xAxis;< axisPos) {< '; * are given null values.
1767 < 1 ? this : xAxis;< axisPos) {< '; */
1768 < 1 ? this : xAxis;< axisPos) {< '; setData: function(data, redraw, animation, updatePoints) {
1769 < 1 ? this : xAxis;< axisPos) {< '; var options = this.options,
1770 < 1 ? this : xAxis;< axisPos) {< '; chartOptions = this.chart.options.chart,
1771 < 1 ? this : xAxis;< axisPos) {< '; globalMapData = chartOptions && chartOptions.map,
1772 < 1 ? this : xAxis;< axisPos) {< '; mapData = options.mapData,
1773 < 1 ? this : xAxis;< axisPos) {< '; joinBy = options.joinBy,
1774 < 1 ? this : xAxis;< axisPos) {< '; joinByNull = joinBy === null,
1775 < 1 ? this : xAxis;< axisPos) {< '; pointArrayMap = options.keys || this.pointArrayMap,
1776 < 1 ? this : xAxis;< axisPos) {< '; dataUsed = [],
1777 < 1 ? this : xAxis;< axisPos) {< '; mapMap = {},
1778 < 1 ? this : xAxis;< axisPos) {< '; mapPoint,
1779 < 1 ? this : xAxis;< axisPos) {< '; mapTransforms = this.chart.mapTransforms,
1780 < 1 ? this : xAxis;< axisPos) {< '; props,
1781 < 1 ? this : xAxis;< axisPos) {< '; i;
1782  
1783 < 1 ? this : xAxis;< axisPos) {< '; // Collect mapData from chart options if not defined on series
1784 < 1 ? this : xAxis;< axisPos) {< '; if (!mapData && globalMapData) {
1785 < 1 ? this : xAxis;< axisPos) {< '; mapData = typeof globalMapData === 'string' ? H.maps[globalMapData] : globalMapData;
1786 < 1 ? this : xAxis;< axisPos) {< '; }
1787  
1788 < 1 ? this : xAxis;< axisPos) {< '; if (joinByNull) {
1789 < 1 ? this : xAxis;< axisPos) {< '; joinBy = '_i';
1790 < 1 ? this : xAxis;< axisPos) {< '; }
1791 < 1 ? this : xAxis;< axisPos) {< '; joinBy = this.joinBy = splat(joinBy);
1792 < 1 ? this : xAxis;< axisPos) {< '; if (!joinBy[1]) {
1793 < 1 ? this : xAxis;< axisPos) {< '; joinBy[1] = joinBy[0];
1794 < 1 ? this : xAxis;< axisPos) {< '; }
1795  
1796 < 1 ? this : xAxis;< axisPos) {< '; // Pick up numeric values, add index
1797 < 1 ? this : xAxis;< axisPos) {< '; // Convert Array point definitions to objects using pointArrayMap
1798 < 1 ? this : xAxis;< axisPos) {< '; if (data) {
1799 < 1 ? this : xAxis;< axisPos) {< '; each(data, function(val, i) {
1800 < 1 ? this : xAxis;< axisPos) {< '; var ix = 0;
1801 < 1 ? this : xAxis;< axisPos) {< '; if (isNumber(val)) {
1802 < 1 ? this : xAxis;< axisPos) {< '; data[i] = {
1803 < 1 ? this : xAxis;< axisPos) {< '; value: val
1804 < 1 ? this : xAxis;< axisPos) {< '; };
1805 < 1 ? this : xAxis;< axisPos) {< '; } else if (isArray(val)) {
1806 < 1 ? this : xAxis;< axisPos) {< '; data[i] = {};
1807 < 1 ? this : xAxis;< axisPos) {< '; // Automatically copy first item to hc-key if there is an extra leading string
1808 < 1 ? this : xAxis;< axisPos) {< '; if (!options.keys && val.length > pointArrayMap.length && typeof val[0] === 'string') {
1809 < 1 ? this : xAxis;< axisPos) {< '; data[i]['hc-key'] = val[0];
1810 < 1 ? this : xAxis;< axisPos) {< '; ++ix;
1811 < 1 ? this : xAxis;< axisPos) {< '; }
1812 < 1 ? this : xAxis;< axisPos) {< '; // Run through pointArrayMap and what's left of the point data array in parallel, copying over the values
1813 < 1 ? this : xAxis;< axisPos) {< '; for (var j = 0; j < pointArrayMap.length; ++j, ++ix) {
1814 < 1 ? this : xAxis;< axisPos) {< '; if (pointArrayMap[j]) {
1815 < 1 ? this : xAxis;< axisPos) {< '; data[i][pointArrayMap[j]] = val[ix];
1816 < 1 ? this : xAxis;< axisPos) {< '; }
1817 < 1 ? this : xAxis;< axisPos) {< '; }
1818 < 1 ? this : xAxis;< axisPos) {< '; }
1819 < 1 ? this : xAxis;< axisPos) {< '; if (joinByNull) {
1820 < 1 ? this : xAxis;< axisPos) {< '; data[i]._i = i;
1821 < 1 ? this : xAxis;< axisPos) {< '; }
1822 < 1 ? this : xAxis;< axisPos) {< '; });
1823 < 1 ? this : xAxis;< axisPos) {< '; }
1824  
1825 < 1 ? this : xAxis;< axisPos) {< '; this.getBox(data);
1826  
1827 < 1 ? this : xAxis;< axisPos) {< '; // Pick up transform definitions for chart
1828 < 1 ? this : xAxis;< axisPos) {< '; this.chart.mapTransforms = mapTransforms = chartOptions && chartOptions.mapTransforms || mapData && mapData['hc-transform'] || mapTransforms;
1829  
1830 < 1 ? this : xAxis;< axisPos) {< '; // Cache cos/sin of transform rotation angle
1831 < 1 ? this : xAxis;< axisPos) {< '; if (mapTransforms) {
1832 < 1 ? this : xAxis;< axisPos) {< '; H.objectEach(mapTransforms, function(transform) {
1833 < 1 ? this : xAxis;< axisPos) {< '; if (transform.rotation) {
1834 < 1 ? this : xAxis;< axisPos) {< '; transform.cosAngle = Math.cos(transform.rotation);
1835 < 1 ? this : xAxis;< axisPos) {< '; transform.sinAngle = Math.sin(transform.rotation);
1836 < 1 ? this : xAxis;< axisPos) {< '; }
1837 < 1 ? this : xAxis;< axisPos) {< '; });
1838 < 1 ? this : xAxis;< axisPos) {< '; }
1839  
1840 < 1 ? this : xAxis;< axisPos) {< '; if (mapData) {
1841 < 1 ? this : xAxis;< axisPos) {< '; if (mapData.type === 'FeatureCollection') {
1842 < 1 ? this : xAxis;< axisPos) {< '; this.mapTitle = mapData.title;
1843 < 1 ? this : xAxis;< axisPos) {< '; mapData = H.geojson(mapData, this.type, this);
1844 < 1 ? this : xAxis;< axisPos) {< '; }
1845  
1846 < 1 ? this : xAxis;< axisPos) {< '; this.mapData = mapData;
1847 < 1 ? this : xAxis;< axisPos) {< '; this.mapMap = {};
1848  
1849 < 1 ? this : xAxis;< axisPos) {< '; for (i = 0; i < mapData.length; i++) {
1850 < 1 ? this : xAxis;< axisPos) {< '; mapPoint = mapData[i];
1851 < 1 ? this : xAxis;< axisPos) {< '; props = mapPoint.properties;
1852  
1853 < 1 ? this : xAxis;< axisPos) {< '; mapPoint._i = i;
1854 < 1 ? this : xAxis;< axisPos) {< '; // Copy the property over to root for faster access
1855 < 1 ? this : xAxis;< axisPos) {< '; if (joinBy[0] && props && props[joinBy[0]]) {
1856 < 1 ? this : xAxis;< axisPos) {< '; mapPoint[joinBy[0]] = props[joinBy[0]];
1857 < 1 ? this : xAxis;< axisPos) {< '; }
1858 < 1 ? this : xAxis;< axisPos) {< '; mapMap[mapPoint[joinBy[0]]] = mapPoint;
1859 < 1 ? this : xAxis;< axisPos) {< '; }
1860 < 1 ? this : xAxis;< axisPos) {< '; this.mapMap = mapMap;
1861  
1862 < 1 ? this : xAxis;< axisPos) {< '; // Registered the point codes that actually hold data
1863 < 1 ? this : xAxis;< axisPos) {< '; if (data && joinBy[1]) {
1864 < 1 ? this : xAxis;< axisPos) {< '; each(data, function(point) {
1865 < 1 ? this : xAxis;< axisPos) {< '; if (mapMap[point[joinBy[1]]]) {
1866 < 1 ? this : xAxis;< axisPos) {< '; dataUsed.push(mapMap[point[joinBy[1]]]);
1867 < 1 ? this : xAxis;< axisPos) {< '; }
1868 < 1 ? this : xAxis;< axisPos) {< '; });
1869 < 1 ? this : xAxis;< axisPos) {< '; }
1870  
1871 < 1 ? this : xAxis;< axisPos) {< '; if (options.allAreas) {
1872 < 1 ? this : xAxis;< axisPos) {< '; this.getBox(mapData);
1873 < 1 ? this : xAxis;< axisPos) {< '; data = data || [];
1874  
1875 < 1 ? this : xAxis;< axisPos) {< '; // Registered the point codes that actually hold data
1876 < 1 ? this : xAxis;< axisPos) {< '; if (joinBy[1]) {
1877 < 1 ? this : xAxis;< axisPos) {< '; each(data, function(point) {
1878 < 1 ? this : xAxis;< axisPos) {< '; dataUsed.push(point[joinBy[1]]);
1879 < 1 ? this : xAxis;< axisPos) {< '; });
1880 < 1 ? this : xAxis;< axisPos) {< '; }
1881  
1882 < 1 ? this : xAxis;< axisPos) {< '; // Add those map points that don't correspond to data, which will be drawn as null points
1883 < 1 ? this : xAxis;< axisPos) {< '; dataUsed = '|' + map(dataUsed, function(point) {
1884 < 1 ? this : xAxis;< axisPos) {< '; return point && point[joinBy[0]];
1885 < 1 ? this : xAxis;< axisPos) {< '; }).join('|') + '|'; // String search is faster than array.indexOf
1886  
1887 < 1 ? this : xAxis;< axisPos) {< '; each(mapData, function(mapPoint) {
1888 < 1 ? this : xAxis;< axisPos) {< '; if (!joinBy[0] || dataUsed.indexOf('|' + mapPoint[joinBy[0]] + '|') === -1) {
1889 < 1 ? this : xAxis;< axisPos) {< '; data.push(merge(mapPoint, {
1890 < 1 ? this : xAxis;< axisPos) {< '; value: null
1891 < 1 ? this : xAxis;< axisPos) {< '; }));
1892 < 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
1893 < 1 ? this : xAxis;< axisPos) {< '; }
1894 < 1 ? this : xAxis;< axisPos) {< '; });
1895 < 1 ? this : xAxis;< axisPos) {< '; } else {
1896 < 1 ? this : xAxis;< axisPos) {< '; this.getBox(dataUsed); // Issue #4784
1897 < 1 ? this : xAxis;< axisPos) {< '; }
1898 < 1 ? this : xAxis;< axisPos) {< '; }
1899 < 1 ? this : xAxis;< axisPos) {< '; Series.prototype.setData.call(this, data, redraw, animation, updatePoints);
1900 < 1 ? this : xAxis;< axisPos) {< '; },
1901  
1902  
1903 < 1 ? this : xAxis;< axisPos) {< '; /**
1904 < 1 ? this : xAxis;< axisPos) {< '; * No graph for the map series
1905 < 1 ? this : xAxis;< axisPos) {< '; */
1906 < 1 ? this : xAxis;< axisPos) {< '; drawGraph: noop,
1907  
1908 < 1 ? this : xAxis;< axisPos) {< '; /**
1909 < 1 ? this : xAxis;< axisPos) {< '; * We need the points' bounding boxes in order to draw the data labels, so
1910 < 1 ? this : xAxis;< axisPos) {< '; * we skip it now and call it from drawPoints instead.
1911 < 1 ? this : xAxis;< axisPos) {< '; */
1912 < 1 ? this : xAxis;< axisPos) {< '; drawDataLabels: noop,
1913  
1914 < 1 ? this : xAxis;< axisPos) {< '; /**
1915 < 1 ? this : xAxis;< axisPos) {< '; * Allow a quick redraw by just translating the area group. Used for zooming and panning
1916 < 1 ? this : xAxis;< axisPos) {< '; * in capable browsers.
1917 < 1 ? this : xAxis;< axisPos) {< '; */
1918 < 1 ? this : xAxis;< axisPos) {< '; doFullTranslate: function() {
1919 < 1 ? this : xAxis;< axisPos) {< '; return this.isDirtyData || this.chart.isResizing || this.chart.renderer.isVML || !this.baseTrans;
1920 < 1 ? this : xAxis;< axisPos) {< '; },
1921  
1922 < 1 ? this : xAxis;< axisPos) {< '; /**
1923 < 1 ? this : xAxis;< axisPos) {< '; * Add the path option for data points. Find the max value for color calculation.
1924 < 1 ? this : xAxis;< axisPos) {< '; */
1925 < 1 ? this : xAxis;< axisPos) {< '; translate: function() {
1926 < 1 ? this : xAxis;< axisPos) {< '; var series = this,
1927 < 1 ? this : xAxis;< axisPos) {< '; xAxis = series.xAxis,
1928 < 1 ? this : xAxis;< axisPos) {< '; yAxis = series.yAxis,
1929 < 1 ? this : xAxis;< axisPos) {< '; doFullTranslate = series.doFullTranslate();
1930  
1931 < 1 ? this : xAxis;< axisPos) {< '; series.generatePoints();
1932  
1933 < 1 ? this : xAxis;< axisPos) {< '; each(series.data, function(point) {
1934  
1935 < 1 ? this : xAxis;< axisPos) {< '; // Record the middle point (loosely based on centroid), determined
1936 < 1 ? this : xAxis;< axisPos) {< '; // by the middleX and middleY options.
1937 < 1 ? this : xAxis;< axisPos) {< '; point.plotX = xAxis.toPixels(point._midX, true);
1938 < 1 ? this : xAxis;< axisPos) {< '; point.plotY = yAxis.toPixels(point._midY, true);
1939  
1940 < 1 ? this : xAxis;< axisPos) {< '; if (doFullTranslate) {
1941  
1942 < 1 ? this : xAxis;< axisPos) {< '; point.shapeType = 'path';
1943 < 1 ? this : xAxis;< axisPos) {< '; point.shapeArgs = {
1944 < 1 ? this : xAxis;< axisPos) {< '; d: series.translatePath(point.path)
1945 < 1 ? this : xAxis;< axisPos) {< '; };
1946 < 1 ? this : xAxis;< axisPos) {< '; }
1947 < 1 ? this : xAxis;< axisPos) {< '; });
1948  
1949 < 1 ? this : xAxis;< axisPos) {< '; series.translateColors();
1950 < 1 ? this : xAxis;< axisPos) {< '; },
1951  
1952 < 1 ? this : xAxis;< axisPos) {< '; /**
1953 < 1 ? this : xAxis;< axisPos) {< '; * Get presentational attributes. In the maps series this runs in both
1954 < 1 ? this : xAxis;< axisPos) {< '; * styled and non-styled mode, because colors hold data when a colorAxis
1955 < 1 ? this : xAxis;< axisPos) {< '; * is used.
1956 < 1 ? this : xAxis;< axisPos) {< '; */
1957 < 1 ? this : xAxis;< axisPos) {< '; pointAttribs: function(point, state) {
1958 < 1 ? this : xAxis;< axisPos) {< '; var attr;
1959  
1960 < 1 ? this : xAxis;< axisPos) {< '; attr = seriesTypes.column.prototype.pointAttribs.call(
1961 < 1 ? this : xAxis;< axisPos) {< '; this, point, state
1962 < 1 ? this : xAxis;< axisPos) {< '; );
1963  
1964  
1965 < 1 ? this : xAxis;< axisPos) {< '; // If vector-effect is not supported, we set the stroke-width on the group element
1966 < 1 ? this : xAxis;< axisPos) {< '; // and let all point graphics inherit. That way we don't have to iterate over all
1967 < 1 ? this : xAxis;< axisPos) {< '; // points to update the stroke-width on zooming. TODO: Check unstyled
1968 < 1 ? this : xAxis;< axisPos) {< '; if (supportsVectorEffect) {
1969 < 1 ? this : xAxis;< axisPos) {< '; attr['vector-effect'] = 'non-scaling-stroke';
1970 < 1 ? this : xAxis;< axisPos) {< '; } else {
1971 < 1 ? this : xAxis;< axisPos) {< '; attr['stroke-width'] = 'inherit';
1972 < 1 ? this : xAxis;< axisPos) {< '; }
1973  
1974 < 1 ? this : xAxis;< axisPos) {< '; return attr;
1975 < 1 ? this : xAxis;< axisPos) {< '; },
1976  
1977 < 1 ? this : xAxis;< axisPos) {< '; /**
1978 < 1 ? this : xAxis;< axisPos) {< '; * Use the drawPoints method of column, that is able to handle simple shapeArgs.
1979 < 1 ? this : xAxis;< axisPos) {< '; * Extend it by assigning the tooltip position.
1980 < 1 ? this : xAxis;< axisPos) {< '; */
1981 < 1 ? this : xAxis;< axisPos) {< '; drawPoints: function() {
1982 < 1 ? this : xAxis;< axisPos) {< '; var series = this,
1983 < 1 ? this : xAxis;< axisPos) {< '; xAxis = series.xAxis,
1984 < 1 ? this : xAxis;< axisPos) {< '; yAxis = series.yAxis,
1985 < 1 ? this : xAxis;< axisPos) {< '; group = series.group,
1986 < 1 ? this : xAxis;< axisPos) {< '; chart = series.chart,
1987 < 1 ? this : xAxis;< axisPos) {< '; renderer = chart.renderer,
1988 < 1 ? this : xAxis;< axisPos) {< '; scaleX,
1989 < 1 ? this : xAxis;< axisPos) {< '; scaleY,
1990 < 1 ? this : xAxis;< axisPos) {< '; translateX,
1991 < 1 ? this : xAxis;< axisPos) {< '; translateY,
1992 < 1 ? this : xAxis;< axisPos) {< '; baseTrans = this.baseTrans,
1993 < 1 ? this : xAxis;< axisPos) {< '; transformGroup,
1994 < 1 ? this : xAxis;< axisPos) {< '; startTranslateX,
1995 < 1 ? this : xAxis;< axisPos) {< '; startTranslateY,
1996 < 1 ? this : xAxis;< axisPos) {< '; startScaleX,
1997 < 1 ? this : xAxis;< axisPos) {< '; startScaleY;
1998  
1999 < 1 ? this : xAxis;< axisPos) {< '; // Set a group that handles transform during zooming and panning in order to preserve clipping
2000 < 1 ? this : xAxis;< axisPos) {< '; // on series.group
2001 < 1 ? this : xAxis;< axisPos) {< '; if (!series.transformGroup) {
2002 < 1 ? this : xAxis;< axisPos) {< '; series.transformGroup = renderer.g()
2003 < 1 ? this : xAxis;< axisPos) {< '; .attr({
2004 < 1 ? this : xAxis;< axisPos) {< '; scaleX: 1,
2005 < 1 ? this : xAxis;< axisPos) {< '; scaleY: 1
2006 < 1 ? this : xAxis;< axisPos) {< '; })
2007 < 1 ? this : xAxis;< axisPos) {< '; .add(group);
2008 < 1 ? this : xAxis;< axisPos) {< '; series.transformGroup.survive = true;
2009 < 1 ? this : xAxis;< axisPos) {< '; }
2010  
2011 < 1 ? this : xAxis;< axisPos) {< '; // Draw the shapes again
2012 < 1 ? this : xAxis;< axisPos) {< '; if (series.doFullTranslate()) {
2013  
2014 < 1 ? this : xAxis;< axisPos) {< '; // Individual point actions. TODO: Check unstyled.
2015  
2016 < 1 ? this : xAxis;< axisPos) {< '; if (chart.hasRendered) {
2017 < 1 ? this : xAxis;< axisPos) {< '; each(series.points, function(point) {
2018  
2019 < 1 ? this : xAxis;< axisPos) {< '; // Restore state color on update/redraw (#3529)
2020 < 1 ? this : xAxis;< axisPos) {< '; if (point.shapeArgs) {
2021 < 1 ? this : xAxis;< axisPos) {< '; point.shapeArgs.fill = series.pointAttribs(point, point.state).fill;
2022 < 1 ? this : xAxis;< axisPos) {< '; }
2023 < 1 ? this : xAxis;< axisPos) {< '; });
2024 < 1 ? this : xAxis;< axisPos) {< '; }
2025  
2026  
2027 < 1 ? this : xAxis;< axisPos) {< '; // Draw them in transformGroup
2028 < 1 ? this : xAxis;< axisPos) {< '; series.group = series.transformGroup;
2029 < 1 ? this : xAxis;< axisPos) {< '; seriesTypes.column.prototype.drawPoints.apply(series);
2030 < 1 ? this : xAxis;< axisPos) {< '; series.group = group; // Reset
2031  
2032 < 1 ? this : xAxis;< axisPos) {< '; // Add class names
2033 < 1 ? this : xAxis;< axisPos) {< '; each(series.points, function(point) {
2034 < 1 ? this : xAxis;< axisPos) {< '; if (point.graphic) {
2035 < 1 ? this : xAxis;< axisPos) {< '; if (point.name) {
2036 < 1 ? this : xAxis;< axisPos) {< '; point.graphic.addClass('highcharts-name-' + point.name.replace(/ /g, '-').toLowerCase());
2037 < 1 ? this : xAxis;< axisPos) {< '; }
2038 < 1 ? this : xAxis;< axisPos) {< '; if (point.properties && point.properties['hc-key']) {
2039 < 1 ? this : xAxis;< axisPos) {< '; point.graphic.addClass('highcharts-key-' + point.properties['hc-key'].toLowerCase());
2040 < 1 ? this : xAxis;< axisPos) {< '; }
2041  
2042  
2043 < 1 ? this : xAxis;< axisPos) {< '; }
2044 < 1 ? this : xAxis;< axisPos) {< '; });
2045  
2046 < 1 ? this : xAxis;< axisPos) {< '; // Set the base for later scale-zooming. The originX and originY properties are the
2047 < 1 ? this : xAxis;< axisPos) {< '; // axis values in the plot area's upper left corner.
2048 < 1 ? this : xAxis;< axisPos) {< '; this.baseTrans = {
2049 < 1 ? this : xAxis;< axisPos) {< '; originX: xAxis.min - xAxis.minPixelPadding / xAxis.transA,
2050 < 1 ? this : xAxis;< axisPos) {< '; originY: yAxis.min - yAxis.minPixelPadding / yAxis.transA + (yAxis.reversed ? 0 : yAxis.len / yAxis.transA),
2051 < 1 ? this : xAxis;< axisPos) {< '; transAX: xAxis.transA,
2052 < 1 ? this : xAxis;< axisPos) {< '; transAY: yAxis.transA
2053 < 1 ? this : xAxis;< axisPos) {< '; };
2054  
2055 < 1 ? this : xAxis;< axisPos) {< '; // Reset transformation in case we're doing a full translate (#3789)
2056 < 1 ? this : xAxis;< axisPos) {< '; this.transformGroup.animate({
2057 < 1 ? this : xAxis;< axisPos) {< '; translateX: 0,
2058 < 1 ? this : xAxis;< axisPos) {< '; translateY: 0,
2059 < 1 ? this : xAxis;< axisPos) {< '; scaleX: 1,
2060 < 1 ? this : xAxis;< axisPos) {< '; scaleY: 1
2061 < 1 ? this : xAxis;< axisPos) {< '; });
2062  
2063 < 1 ? this : xAxis;< axisPos) {< '; // Just update the scale and transform for better performance
2064 < 1 ? this : xAxis;< axisPos) {< '; } else {
2065 < 1 ? this : xAxis;< axisPos) {< '; scaleX = xAxis.transA / baseTrans.transAX;
2066 < 1 ? this : xAxis;< axisPos) {< '; scaleY = yAxis.transA / baseTrans.transAY;
2067 < 1 ? this : xAxis;< axisPos) {< '; translateX = xAxis.toPixels(baseTrans.originX, true);
2068 < 1 ? this : xAxis;< axisPos) {< '; translateY = yAxis.toPixels(baseTrans.originY, true);
2069  
2070 < 1 ? this : xAxis;< axisPos) {< '; // Handle rounding errors in normal view (#3789)
2071 < 1 ? this : xAxis;< axisPos) {< '; if (scaleX > 0.99 && scaleX < 1.01 && scaleY > 0.99 && scaleY < 1.01) {
2072 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX = 1;
2073 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY = 1;
2074 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX = Math.round(translateX);
2075 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY = Math.round(translateY);
2076 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2077  
2078 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Animate or move to the new zoom level. In order to prevent
2079 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // flickering as the different transform components are set out of
2080 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // sync (#5991), we run a fake animator attribute and set scale and
2081 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // translation synchronously in the same step.
2082 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // A possible improvement to the API would be to handle this in the
2083 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // renderer or animation engine itself, to ensure that when we are
2084 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // animating multiple properties, we make sure that each step for
2085 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // each property is performed in the same step. Also, for symbols
2086 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // and for transform properties, it should induce a single
2087 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // updateTransform and symbolAttr call.
2088 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transformGroup = this.transformGroup;
2089 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (chart.renderer.globalAnimation) {
2090 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startTranslateX = transformGroup.attr('translateX');
2091 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startTranslateY = transformGroup.attr('translateY');
2092 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startScaleX = transformGroup.attr('scaleX');
2093 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startScaleY = transformGroup.attr('scaleY');
2094 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transformGroup
2095 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { .attr({
2096 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animator: 0
2097 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { })
2098 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { .animate({
2099 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animator: 1
2100 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2101 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { step: function(now, fx) {
2102 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transformGroup.attr({
2103 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: startTranslateX +
2104 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (translateX - startTranslateX) * fx.pos,
2105 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: startTranslateY +
2106 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (translateY - startTranslateY) * fx.pos,
2107 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: startScaleX +
2108 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (scaleX - startScaleX) * fx.pos,
2109 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: startScaleY +
2110 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (scaleY - startScaleY) * fx.pos
2111 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2112  
2113 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2114 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2115  
2116 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // When dragging, animation is off.
2117 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
2118 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transformGroup.attr({
2119 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: translateX,
2120 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: translateY,
2121 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: scaleX,
2122 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: scaleY
2123 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2124 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2125  
2126 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2127  
2128 < 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
2129 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // setAttribute directly, because the stroke-widthSetter method expects a stroke color also to be
2130 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // set.
2131 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!supportsVectorEffect) {
2132 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.group.element.setAttribute(
2133 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'stroke-width',
2134 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.options[
2135 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (series.pointAttrToOptions && series.pointAttrToOptions['stroke-width']) || 'borderWidth'
2136 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ] / (scaleX || 1)
2137 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
2138 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2139  
2140 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.drawMapDataLabels();
2141  
2142  
2143 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2144  
2145 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2146 < 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),
2147 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * and the clipping of the dataLabelsGroup.
2148 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2149 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawMapDataLabels: function() {
2150  
2151 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series.prototype.drawDataLabels.call(this);
2152 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (this.dataLabelsGroup) {
2153 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.dataLabelsGroup.clip(this.chart.clipRect);
2154 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2155 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2156  
2157 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2158 < 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.
2159 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2160 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { render: function() {
2161 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var series = this,
2162 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { render = Series.prototype.render;
2163  
2164 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Give IE8 some time to breathe.
2165 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series.chart.renderer.isVML && series.data.length > 3000) {
2166 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { setTimeout(function() {
2167 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { render.call(series);
2168 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2169 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
2170 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { render.call(series);
2171 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2172 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2173  
2174 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2175 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The initial animation for the map series. By default, animation is disabled.
2176 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Animation of map shapes is not at all supported in VML browsers.
2177 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2178 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animate: function(init) {
2179 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var chart = this.chart,
2180 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animation = this.options.animation,
2181 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { group = this.group,
2182 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis = this.xAxis,
2183 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { yAxis = this.yAxis,
2184 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { left = xAxis.pos,
2185 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { top = yAxis.pos;
2186  
2187 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (chart.renderer.isSVG) {
2188  
2189 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (animation === true) {
2190 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animation = {
2191 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { duration: 1000
2192 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2193 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2194  
2195 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Initialize the animation
2196 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (init) {
2197  
2198 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Scale down the group and place it in the center
2199 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { group.attr({
2200 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: left + xAxis.len / 2,
2201 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: top + yAxis.len / 2,
2202 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: 0.001, // #1499
2203 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: 0.001
2204 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2205  
2206 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Run the animation
2207 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
2208 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { group.animate({
2209 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: left,
2210 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: top,
2211 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: 1,
2212 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: 1
2213 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, animation);
2214  
2215 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Delete this function to allow it only once
2216 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.animate = null;
2217 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2218 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2219 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2220  
2221 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2222 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Animate in the new series from the clicked point in the old series.
2223 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Depends on the drilldown.js module
2224 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2225 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animateDrilldown: function(init) {
2226 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var toBox = this.chart.plotBox,
2227 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { level = this.chart.drilldownLevels[this.chart.drilldownLevels.length - 1],
2228 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { fromBox = level.bBox,
2229 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animationOptions = this.chart.options.drilldown.animation,
2230 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scale;
2231  
2232 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!init) {
2233  
2234 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scale = Math.min(fromBox.width / toBox.width, fromBox.height / toBox.height);
2235 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { level.shapeArgs = {
2236 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: scale,
2237 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: scale,
2238 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: fromBox.x,
2239 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: fromBox.y
2240 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2241  
2242 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(this.points, function(point) {
2243 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (point.graphic) {
2244 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.graphic
2245 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { .attr(level.shapeArgs)
2246 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { .animate({
2247 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleX: 1,
2248 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { scaleY: 1,
2249 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateX: 0,
2250 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translateY: 0
2251 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, animationOptions);
2252 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2253 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2254  
2255 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.animate = null;
2256 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2257  
2258 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2259  
2260 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawLegendSymbol: LegendSymbolMixin.drawRectangle,
2261  
2262 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2263 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * When drilling up, pull out the individual point graphics from the lower series
2264 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * and animate them into the origin point in the upper series.
2265 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2266 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animateDrillupFrom: function(level) {
2267 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.column.prototype.animateDrillupFrom.call(this, level);
2268 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2269  
2270  
2271 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2272 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * When drilling up, keep the upper series invisible until the lower series has
2273 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * moved into place
2274 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2275 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animateDrillupTo: function(init) {
2276 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.column.prototype.animateDrillupTo.call(this, init);
2277 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2278  
2279 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Point class
2280 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }), extend({
2281 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2282 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Extend the Point object to split paths
2283 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2284 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { applyOptions: function(options, x) {
2285  
2286 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var point = Point.prototype.applyOptions.call(this, options, x),
2287 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series = this.series,
2288 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { joinBy = series.joinBy,
2289 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapPoint;
2290  
2291 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series.mapData) {
2292 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapPoint = point[joinBy[1]] !== undefined && series.mapMap[point[joinBy[1]]];
2293 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (mapPoint) {
2294 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // This applies only to bubbles
2295 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series.xyFromShape) {
2296 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.x = mapPoint._midX;
2297 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.y = mapPoint._midY;
2298 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2299 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extend(point, mapPoint); // copy over properties
2300 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
2301 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.value = point.value || null;
2302 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2303 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2304  
2305 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return point;
2306 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2307  
2308 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2309 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Stop the fade-out
2310 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2311 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { onMouseOver: function(e) {
2312 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { clearTimeout(this.colorInterval);
2313 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (this.value !== null || this.series.options.nullInteraction) {
2314 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Point.prototype.onMouseOver.call(this, e);
2315 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else { //#3401 Tooltip doesn't hide when hovering over null points
2316 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.series.onMouseOut(e);
2317 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2318 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2319  
2320 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2321 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Zoom in on the point using the global animation.
2322 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2323 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function #zoomTo
2324 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Point
2325 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/members/point-zoomto/
2326 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Zoom to points from butons
2327 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2328 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomTo: function() {
2329 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var point = this,
2330 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series = point.series;
2331  
2332 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.xAxis.setExtremes(
2333 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point._minX,
2334 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point._maxX,
2335 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { false
2336 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
2337 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.yAxis.setExtremes(
2338 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point._minY,
2339 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point._maxY,
2340 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { false
2341 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
2342 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.chart.redraw();
2343 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2344 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, colorPointMixin));
2345  
2346 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2347 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2348 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2349 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2350 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2351 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2352 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2353 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var seriesType = H.seriesType,
2354 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes = H.seriesTypes;
2355  
2356 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The mapline series type
2357 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { //
2358 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2359 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @extends {plotOptions.map}
2360 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @optionparent plotOptions.mapline
2361 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2362 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('mapline', 'map', {
2363  
2364  
2365 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2366 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The width of the map line.
2367 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2368 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Number}
2369 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 1
2370 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
2371 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2372 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { lineWidth: 1,
2373  
2374 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2375 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Fill color for the map line shapes
2376 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2377 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Color}
2378 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default none
2379 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
2380 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2381 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { fillColor: 'none'
2382  
2383 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2384 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type: 'mapline',
2385 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { colorProp: 'stroke',
2386  
2387 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointAttrToOptions: {
2388 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'stroke': 'color',
2389 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'stroke-width': 'lineWidth'
2390 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2391 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2392 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Get presentational attributes
2393 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2394 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointAttribs: function(point, state) {
2395 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var attr = seriesTypes.map.prototype.pointAttribs.call(this, point, state);
2396  
2397 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The difference from a map series is that the stroke takes the point color
2398 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { attr.fill = this.options.fillColor;
2399  
2400 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return attr;
2401 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2402  
2403 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawLegendSymbol: seriesTypes.line.prototype.drawLegendSymbol
2404 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2405  
2406 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2407 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2408 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2409 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2410 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2411 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2412 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2413 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var merge = H.merge,
2414 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Point = H.Point,
2415 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType = H.seriesType;
2416  
2417 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The mappoint series type
2418 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2419 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @extends plotOptions.scatter
2420 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @optionparent plotOptions.mappoint
2421 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2422 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('mappoint', 'scatter', {
2423  
2424 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2425 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2426 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { dataLabels: {
2427  
2428 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2429 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2430 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { enabled: true,
2431  
2432 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2433 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2434 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { formatter: function() { // #2945
2435 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.point.name;
2436 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2437  
2438 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2439 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2440 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { crop: false,
2441  
2442 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2443 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2444 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { defer: false,
2445  
2446 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2447 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2448 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { overflow: false,
2449  
2450 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2451 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2452 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { style: {
2453  
2454 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2455 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2456 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { color: '#000000'
2457 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2458 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2459  
2460 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Prototype members
2461 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2462 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type: 'mappoint',
2463 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { forceDL: true
2464  
2465 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Point class
2466 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2467 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { applyOptions: function(options, x) {
2468 < 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;
2469 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return Point.prototype.applyOptions.call(this, mergedOptions, x);
2470 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2471 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2472  
2473 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2474 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2475 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2476 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2477 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2478 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2479 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2480 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var arrayMax = H.arrayMax,
2481 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { arrayMin = H.arrayMin,
2482 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Axis = H.Axis,
2483 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { color = H.color,
2484 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each = H.each,
2485 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { isNumber = H.isNumber,
2486 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { noop = H.noop,
2487 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pick = H.pick,
2488 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pInt = H.pInt,
2489 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Point = H.Point,
2490 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series = H.Series,
2491 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType = H.seriesType,
2492 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes = H.seriesTypes;
2493  
2494 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /* ****************************************************************************
2495 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Start Bubble series code *
2496 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *****************************************************************************/
2497  
2498  
2499 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2500 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @extends plotOptions.scatter
2501 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @optionparent plotOptions.bubble
2502 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2503 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('bubble', 'scatter', {
2504  
2505 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2506 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2507 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { dataLabels: {
2508  
2509 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2510 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2511 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { formatter: function() { // #2945
2512 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.point.z;
2513 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2514  
2515 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2516 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2517 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { inside: true,
2518  
2519 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2520 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2521 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { verticalAlign: 'middle'
2522 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2523 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // displayNegative: true,
2524  
2525 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2526 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Options for the point markers of line-like series. Properties like
2527 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * `fillColor`, `lineColor` and `lineWidth` define the visual appearance
2528 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * of the markers. Other series types, like column series, don't have
2529 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * markers, but have visual options on the series level instead.
2530 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2531 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * In [styled mode](http://www.highcharts.com/docs/chart-design-and-
2532 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * style/style-by-css), the markers can be styled with the `.highcharts-
2533 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * point`, `.highcharts-point-hover` and `.highcharts-point-select`
2534 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * class names.
2535 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2536 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Object}
2537 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @extends plotOptions.series.marker
2538 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @excluding radius
2539 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highcharts
2540 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2541 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { marker: {
2542  
2543 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // fillOpacity: 0.5,
2544  
2545 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2546 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2547 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { lineColor: null, // inherit from series.color
2548  
2549 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2550 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2551 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { lineWidth: 1,
2552  
2553 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Avoid offset in Point.setState
2554  
2555 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2556 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2557 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius: null,
2558  
2559 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2560 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2561 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { states: {
2562  
2563 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2564 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2565 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hover: {
2566  
2567 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2568 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2569 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radiusPlus: 0
2570 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2571 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2572  
2573 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2574 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A predefined shape or symbol for the marker. Possible values are
2575 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * "circle", "square", "diamond", "triangle" and "triangle-down".
2576 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2577 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Additionally, the URL to a graphic can be given on the form `url(graphic.
2578 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * png)`. Note that for the image to be applied to exported charts,
2579 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * its URL needs to be accessible by the export server.
2580 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2581 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Custom callbacks for symbol path generation can also be added to
2582 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then
2583 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * used by its method name, as shown in the demo.
2584 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2585 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @validvalue ["circle", "square", "diamond", "triangle", "triangle-down"]
2586 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {String}
2587 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample {highcharts} highcharts/plotoptions/bubble-symbol/ Bubble chart with various symbols
2588 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample {highcharts} highcharts/plotoptions/series-marker-symbol/ General chart with predefined, graphic and custom markers
2589 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default circle
2590 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @since 5.0.11
2591 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highcharts
2592 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2593 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { symbol: 'circle'
2594 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2595  
2596 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2597 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Minimum bubble size. Bubbles will automatically size between the
2598 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * `minSize` and `maxSize` to reflect the `z` value of each bubble.
2599 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Can be either pixels (when no unit is given), or a percentage of
2600 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * the smallest one of the plot width and height.
2601 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2602 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {String}
2603 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample {highcharts} highcharts/plotoptions/bubble-size/ Bubble size
2604 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 8
2605 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @since 3.0
2606 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highcharts
2607 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2608 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { minSize: 8,
2609  
2610 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2611 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Maximum bubble size. Bubbles will automatically size between the
2612 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * `minSize` and `maxSize` to reflect the `z` value of each bubble.
2613 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Can be either pixels (when no unit is given), or a percentage of
2614 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * the smallest one of the plot width and height.
2615 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2616 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {String}
2617 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample {highcharts} highcharts/plotoptions/bubble-size/ Bubble size
2618 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 20%
2619 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @since 3.0
2620 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highcharts
2621 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2622 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { maxSize: '20%',
2623 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // negativeColor: null,
2624 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // sizeBy: 'area'
2625  
2626 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2627 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * When this is true, the series will not cause the Y axis to cross
2628 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * the zero plane (or [threshold](#plotOptions.series.threshold) option)
2629 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * unless the data actually crosses the plane.
2630 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2631 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * For example, if `softThreshold` is `false`, a series of 0, 1, 2,
2632 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * 3 will make the Y axis show negative values according to the `minPadding`
2633 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * option. If `softThreshold` is `true`, the Y axis starts at 0.
2634 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2635 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Boolean}
2636 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default false
2637 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @since 4.1.9
2638 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highcharts
2639 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2640 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { softThreshold: false,
2641  
2642 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2643 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2644 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { states: {
2645  
2646 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2647 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2648 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hover: {
2649  
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) { halo: {
2653  
2654 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2655 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2656 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { size: 5
2657 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2658 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2659 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2660  
2661 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2662 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2663 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { tooltip: {
2664  
2665 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2666 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2667 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointFormat: '({point.x}, {point.y}), Size: {point.z}'
2668 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2669  
2670 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2671 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2672 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { turboThreshold: 0,
2673  
2674 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2675 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * When [displayNegative](#plotOptions.bubble.displayNegative) is `false`,
2676 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * bubbles with lower Z values are skipped. When `displayNegative`
2677 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * is `true` and a [negativeColor](#plotOptions.bubble.negativeColor)
2678 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * is given, points with lower Z is colored.
2679 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2680 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Number}
2681 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample {highcharts} highcharts/plotoptions/bubble-negative/ Negative bubbles
2682 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 0
2683 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @since 3.0
2684 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highcharts
2685 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2686 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zThreshold: 0,
2687  
2688 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2689 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2690 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoneAxis: 'z'
2691  
2692 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Prototype members
2693 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2694 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointArrayMap: ['y', 'z'],
2695 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { parallelArrays: ['x', 'y', 'z'],
2696 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { trackerGroups: ['group', 'dataLabelsGroup'],
2697 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { specialGroup: 'group', // To allow clipping (#6296)
2698 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { bubblePadding: true,
2699 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoneAxis: 'z',
2700 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { directTouch: true,
2701  
2702  
2703 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointAttribs: function(point, state) {
2704 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var markerOptions = this.options.marker,
2705 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { fillOpacity = pick(markerOptions.fillOpacity, 0.5),
2706 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { attr = Series.prototype.pointAttribs.call(this, point, state);
2707  
2708 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (fillOpacity !== 1) {
2709 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { attr.fill = color(attr.fill).setOpacity(fillOpacity).get('rgba');
2710 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2711  
2712 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return attr;
2713 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2714  
2715  
2716 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2717 < 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
2718 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * must be done prior to Series.translate because the axis needs to add padding in
2719 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * accordance with the point sizes.
2720 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2721 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getRadii: function(zMin, zMax, minSize, maxSize) {
2722 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var len,
2723 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { i,
2724 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pos,
2725 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zData = this.zData,
2726 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radii = [],
2727 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = this.options,
2728 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { sizeByArea = options.sizeBy !== 'width',
2729 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zThreshold = options.zThreshold,
2730 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zRange = zMax - zMin,
2731 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { value,
2732 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius;
2733  
2734 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Set the shape type and arguments to be picked up in drawPoints
2735 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (i = 0, len = zData.length; i < len; i++) {
2736  
2737 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { value = zData[i];
2738  
2739 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // When sizing by threshold, the absolute value of z determines the size
2740 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // of the bubble.
2741 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (options.sizeByAbsoluteValue && value !== null) {
2742 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { value = Math.abs(value - zThreshold);
2743 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMax = Math.max(zMax - zThreshold, Math.abs(zMin - zThreshold));
2744 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMin = 0;
2745 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2746  
2747 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (value === null) {
2748 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = null;
2749 < 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
2750 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (value < zMin) {
2751 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = minSize / 2 - 1;
2752 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
2753 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Relative size, a number between 0 and 1
2754 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pos = zRange > 0 ? (value - zMin) / zRange : 0.5;
2755  
2756 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (sizeByArea && pos >= 0) {
2757 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pos = Math.sqrt(pos);
2758 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2759 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = Math.ceil(minSize + pos * (maxSize - minSize)) / 2;
2760 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2761 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radii.push(radius);
2762 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2763 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.radii = radii;
2764 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2765  
2766 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2767 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Perform animation on the bubbles
2768 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2769 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animate: function(init) {
2770 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var animation = this.options.animation;
2771  
2772 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!init) { // run the animation
2773 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(this.points, function(point) {
2774 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var graphic = point.graphic,
2775 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animationTarget;
2776  
2777 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (graphic && graphic.width) { // URL symbols don't have width
2778 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animationTarget = {
2779 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: graphic.x,
2780 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: graphic.y,
2781 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: graphic.width,
2782 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: graphic.height
2783 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2784  
2785 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Start values
2786 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { graphic.attr({
2787 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: point.plotX,
2788 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: point.plotY,
2789 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: 1,
2790 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: 1
2791 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2792  
2793 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Run animation
2794 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { graphic.animate(animationTarget, animation);
2795 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2796 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2797  
2798 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // delete this function to allow it only once
2799 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.animate = null;
2800 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2801 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2802  
2803 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2804 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Extend the base translate method to handle bubble size
2805 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2806 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translate: function() {
2807  
2808 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var i,
2809 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { data = this.data,
2810 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point,
2811 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius,
2812 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radii = this.radii;
2813  
2814 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Run the parent method
2815 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.scatter.prototype.translate.call(this);
2816  
2817 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Set the shape type and arguments to be picked up in drawPoints
2818 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { i = data.length;
2819  
2820 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { while (i--) {
2821 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = data[i];
2822 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = radii ? radii[i] : 0; // #1737
2823  
2824 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (isNumber(radius) && radius >= this.minPxSize / 2) {
2825 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Shape arguments
2826 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.marker = H.extend(point.marker, {
2827 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius: radius,
2828 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: 2 * radius,
2829 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: 2 * radius
2830 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2831  
2832 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Alignment box for the data label
2833 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.dlBox = {
2834 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: point.plotX - radius,
2835 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: point.plotY - radius,
2836 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: 2 * radius,
2837 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: 2 * radius
2838 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2839 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else { // below zThreshold
2840 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.shapeArgs = point.plotY = point.dlBox = undefined; // #1691
2841 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2842 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2843 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
2844  
2845 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
2846 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { buildKDTree: noop,
2847 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { applyZones: noop
2848  
2849 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Point class
2850 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
2851 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { haloPath: function(size) {
2852 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return Point.prototype.haloPath.call(
2853 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this,
2854 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { size === 0 ? 0 : (this.marker ? this.marker.radius || 0 : 0) + size // #6067
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) { ttBelow: false
2858 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2859  
2860 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2861 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Add logic to pad each axis with the amount of pixels
2862 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * necessary to avoid the bubbles to overflow.
2863 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2864 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Axis.prototype.beforePadding = function() {
2865 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var axis = this,
2866 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { axisLength = this.len,
2867 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { chart = this.chart,
2868 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMin = 0,
2869 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMax = axisLength,
2870 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { isXAxis = this.isXAxis,
2871 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { dataKey = isXAxis ? 'xData' : 'yData',
2872 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { min = this.min,
2873 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extremes = {},
2874 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { smallestSize = Math.min(chart.plotWidth, chart.plotHeight),
2875 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMin = Number.MAX_VALUE,
2876 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMax = -Number.MAX_VALUE,
2877 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { range = this.max - min,
2878 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transA = axisLength / range,
2879 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { activeSeries = [];
2880  
2881 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Handle padding on the second pass, or on redraw
2882 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(this.series, function(series) {
2883  
2884 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var seriesOptions = series.options,
2885 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zData;
2886  
2887 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series.bubblePadding && (series.visible || !chart.options.chart.ignoreHiddenSeries)) {
2888  
2889 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Correction for #1673
2890 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { axis.allowZoomOutside = true;
2891  
2892 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Cache it
2893 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { activeSeries.push(series);
2894  
2895 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (isXAxis) { // because X axis is evaluated first
2896  
2897 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // For each series, translate the size extremes to pixel values
2898 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(['minSize', 'maxSize'], function(prop) {
2899 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var length = seriesOptions[prop],
2900 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { isPercent = /%$/.test(length);
2901  
2902 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { length = pInt(length);
2903 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extremes[prop] = isPercent ?
2904 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { smallestSize * length / 100 :
2905 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { length;
2906  
2907 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2908 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.minPxSize = extremes.minSize;
2909 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Prioritize min size if conflict to make sure bubbles are
2910 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // always visible. #5873
2911 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.maxPxSize = Math.max(extremes.maxSize, extremes.minSize);
2912  
2913 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Find the min and max Z
2914 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zData = series.zData;
2915 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (zData.length) { // #1735
2916 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMin = pick(seriesOptions.zMin, Math.min(
2917 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMin,
2918 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Math.max(
2919 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { arrayMin(zData),
2920 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesOptions.displayNegative === false ? seriesOptions.zThreshold : -Number.MAX_VALUE
2921 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { )
2922 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ));
2923 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zMax = pick(seriesOptions.zMax, Math.max(zMax, arrayMax(zData)));
2924 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2925 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2926 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2927 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2928  
2929 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(activeSeries, function(series) {
2930  
2931 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var data = series[dataKey],
2932 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { i = data.length,
2933 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius;
2934  
2935 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (isXAxis) {
2936 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.getRadii(zMin, zMax, series.minPxSize, series.maxPxSize);
2937 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2938  
2939 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (range > 0) {
2940 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { while (i--) {
2941 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (isNumber(data[i]) && axis.dataMin <= data[i] && data[i] <= axis.dataMax) {
2942 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { radius = series.radii[i];
2943 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMin = Math.min(((data[i] - min) * transA) - radius, pxMin);
2944 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMax = Math.max(((data[i] - min) * transA) + radius, pxMax);
2945 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2946 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2947 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2948 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2949  
2950 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (activeSeries.length && range > 0 && !this.isLog) {
2951 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pxMax -= axisLength;
2952 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transA *= (axisLength + pxMin - pxMax) / axisLength;
2953 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each([
2954 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ['min', 'userMin', pxMin],
2955 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ['max', 'userMax', pxMax]
2956 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ], function(keys) {
2957 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (pick(axis.options[keys[0]], axis[keys[1]]) === undefined) {
2958 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { axis[keys[0]] += keys[2] / transA;
2959 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2960 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
2961 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
2962 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
2963  
2964 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /* ****************************************************************************
2965 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * End Bubble series code *
2966 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *****************************************************************************/
2967  
2968 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
2969 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
2970 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2971 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
2972 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
2973 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
2974 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2975 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var merge = H.merge,
2976 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Point = H.Point,
2977 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType = H.seriesType,
2978 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes = H.seriesTypes;
2979  
2980 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The mapbubble series type
2981 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (seriesTypes.bubble) {
2982  
2983 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2984 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @extends {plotOptions.bubble}
2985 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @optionparent plotOptions.mapbubble
2986 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2987 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('mapbubble', 'bubble', {
2988  
2989 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2990 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2991 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animationLimit: 500,
2992  
2993 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2994 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2995 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { tooltip: {
2996  
2997 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
2998 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
2999 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointFormat: '{point.name}: {point.z}'
3000 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3001  
3002 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Prototype members
3003 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
3004 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xyFromShape: true,
3005 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type: 'mapbubble',
3006 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointArrayMap: ['z'], // If one single value is passed, it is interpreted as z
3007 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3008 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Return the map area identified by the dataJoinBy option
3009 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3010 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getMapData: seriesTypes.map.prototype.getMapData,
3011 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getBox: seriesTypes.map.prototype.getBox,
3012 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { setData: seriesTypes.map.prototype.setData
3013  
3014 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Point class
3015 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, {
3016 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { applyOptions: function(options, x) {
3017 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var point;
3018 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (options && options.lat !== undefined && options.lon !== undefined) {
3019 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = Point.prototype.applyOptions.call(
3020 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this,
3021 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { merge(options, this.series.chart.fromLatLonToPoint(options)),
3022 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x
3023 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
3024 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else {
3025 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = seriesTypes.map.prototype.pointClass.prototype.applyOptions.call(this, options, x);
3026 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3027 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return point;
3028 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3029 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ttBelow: false
3030 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3031 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3032  
3033 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
3034 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
3035 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3036 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
3037 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3038 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
3039 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3040 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var colorPointMixin = H.colorPointMixin,
3041 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { colorSeriesMixin = H.colorSeriesMixin,
3042 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each = H.each,
3043 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { LegendSymbolMixin = H.LegendSymbolMixin,
3044 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { merge = H.merge,
3045 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { noop = H.noop,
3046 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pick = H.pick,
3047 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series = H.Series,
3048 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType = H.seriesType,
3049 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes = H.seriesTypes;
3050  
3051 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The Heatmap series type
3052  
3053 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3054 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @extends {plotOptions.scatter}
3055 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @optionparent plotOptions.heatmap
3056 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3057 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesType('heatmap', 'scatter', {
3058  
3059 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3060 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3061 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animation: false,
3062  
3063 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3064 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3065 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { borderWidth: 0,
3066  
3067  
3068 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3069 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3070 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { nullColor: '#f7f7f7',
3071  
3072  
3073 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3074 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3075 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { dataLabels: {
3076  
3077 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3078 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3079 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { formatter: function() { // #2945
3080 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.point.value;
3081 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3082  
3083 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3084 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3085 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { inside: true,
3086  
3087 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3088 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3089 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { verticalAlign: 'middle',
3090  
3091 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3092 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3093 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { crop: false,
3094  
3095 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3096 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3097 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { overflow: false,
3098  
3099 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3100 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3101 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { padding: 0 // #3837
3102 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3103  
3104 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3105 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3106 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { marker: null,
3107  
3108 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3109 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3110 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointRange: null, // dynamically set to colsize by default
3111  
3112 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3113 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3114 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { tooltip: {
3115  
3116 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3117 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3118 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointFormat: '{point.x}, {point.y}: {point.value}<br/>'
3119 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3120  
3121 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3122 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3123 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { states: {
3124  
3125 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3126 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3127 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { normal: {
3128  
3129 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3130 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3131 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animation: true
3132 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3133  
3134 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3135 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3136 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hover: {
3137  
3138 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3139 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3140 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { halo: false, // #3406, halo is not required on heatmaps
3141  
3142 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3143 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3144 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { brightness: 0.2
3145 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3146 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3147 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, merge(colorSeriesMixin, {
3148 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointArrayMap: ['y', 'value'],
3149 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hasPointSpecificOptions: true,
3150 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getExtremesFromAll: true,
3151 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { directTouch: true,
3152  
3153 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3154 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Override the init method to add point ranges on both axes.
3155 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3156 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { init: function() {
3157 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var options;
3158 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.scatter.prototype.init.apply(this, arguments);
3159  
3160 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = this.options;
3161 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // #3758, prevent resetting in setData
3162 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options.pointRange = pick(options.pointRange, options.colsize || 1);
3163 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.yAxis.axisPointRange = options.rowsize || 1; // general point range
3164 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3165 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { translate: function() {
3166 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var series = this,
3167 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = series.options,
3168 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis = series.xAxis,
3169 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { yAxis = series.yAxis,
3170 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { between = function(x, a, b) {
3171 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return Math.min(Math.max(a, x), b);
3172 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3173  
3174 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.generatePoints();
3175  
3176 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(series.points, function(point) {
3177 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var xPad = (options.colsize || 1) / 2,
3178 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { yPad = (options.rowsize || 1) / 2,
3179 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x1 = between(
3180 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Math.round(
3181 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis.len -
3182 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis.translate(point.x - xPad, 0, 1, 0, 1)
3183 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ), -xAxis.len, 2 * xAxis.len
3184 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ),
3185 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x2 = between(
3186 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Math.round(
3187 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis.len -
3188 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis.translate(point.x + xPad, 0, 1, 0, 1)
3189 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ), -xAxis.len, 2 * xAxis.len
3190 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ),
3191 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y1 = between(
3192 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Math.round(yAxis.translate(point.y - yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len
3193 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ),
3194 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y2 = between(
3195 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Math.round(yAxis.translate(point.y + yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len
3196 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
3197  
3198 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Set plotX and plotY for use in K-D-Tree and more
3199 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.plotX = point.clientX = (x1 + x2) / 2;
3200 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.plotY = (y1 + y2) / 2;
3201  
3202 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.shapeType = 'rect';
3203 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.shapeArgs = {
3204 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: Math.min(x1, x2),
3205 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: Math.min(y1, y2),
3206 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: Math.abs(x2 - x1),
3207 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: Math.abs(y2 - y1)
3208 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3209 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3210  
3211 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.translateColors();
3212 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3213 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawPoints: function() {
3214 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesTypes.column.prototype.drawPoints.call(this);
3215  
3216 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(this.points, function(point) {
3217  
3218 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point.graphic.attr(this.colorAttribs(point));
3219  
3220 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, this);
3221 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3222 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { animate: noop,
3223 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getBox: noop,
3224 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { drawLegendSymbol: LegendSymbolMixin.drawRectangle,
3225 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
3226 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { getExtremes: function() {
3227 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Get the extremes from the value data
3228 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series.prototype.getExtremes.call(this, this.valueData);
3229 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.valueMin = this.dataMin;
3230 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.valueMax = this.dataMax;
3231  
3232 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Get the extremes from the y data
3233 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Series.prototype.getExtremes.call(this);
3234 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3235  
3236 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }), colorPointMixin);
3237  
3238 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
3239 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
3240 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3241 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
3242 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3243 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
3244 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3245 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var Chart = H.Chart,
3246 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each = H.each,
3247 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extend = H.extend,
3248 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { format = H.format,
3249 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { merge = H.merge,
3250 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { win = H.win,
3251 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { wrap = H.wrap;
3252 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3253 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Test for point in polygon. Polygon defined as array of [x,y] points.
3254 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3255 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { function pointInPolygon(point, polygon) {
3256 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var i,
3257 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { j,
3258 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { rel1,
3259 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { rel2,
3260 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { c = false,
3261 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x = point.x,
3262 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y = point.y;
3263  
3264 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
3265 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { rel1 = polygon[i][1] > y;
3266 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { rel2 = polygon[j][1] > y;
3267 < 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])) {
3268 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { c = !c;
3269 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3270 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3271  
3272 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return c;
3273 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3274  
3275 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3276 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Get point from latitude and longitude using specified
3277 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * transform definition.
3278 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3279 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function transformFromLatLon
3280 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Chart.prototype
3281 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3282 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} latLon
3283 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A latitude/longitude object.
3284 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Number} latLon.lat
3285 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The latitude.
3286 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Number} latLon.lon
3287 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The longitude.
3288 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} transform
3289 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The transform definition to use as explained in the {@link
3290 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * https://www.highcharts.com/docs/maps/latlon|documentation}.
3291 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3292 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
3293 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * An object with `x` and `y` properties.
3294 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3295 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/series/latlon-transform/
3296 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Use specific transformation for lat/lon
3297 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3298 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Chart.prototype.transformFromLatLon = function(latLon, transform) {
3299 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (win.proj4 === undefined) {
3300 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.error(21);
3301 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return {
3302 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: 0,
3303 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: null
3304 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3305 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3306  
3307 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var projected = win.proj4(transform.crs, [latLon.lon, latLon.lat]),
3308 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { cosAngle = transform.cosAngle || (transform.rotation && Math.cos(transform.rotation)),
3309 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { sinAngle = transform.sinAngle || (transform.rotation && Math.sin(transform.rotation)),
3310 < 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;
3311  
3312 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return {
3313 < 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),
3314 < 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)
3315 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3316 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3317  
3318 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3319 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Get latLon from point using specified transform definition.
3320 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The method returns an object with the numeric properties `lat` and `lon`.
3321 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3322 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function transformToLatLon
3323 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Chart.prototype
3324 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3325 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Point|Object} point
3326 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A `Point` instance, or or any object containing the properties `x`
3327 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * and `y` with numeric values.
3328 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} transform
3329 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The transform definition to use as explained in the {@link
3330 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * https://www.highcharts.com/docs/maps/latlon|documentation}.
3331 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3332 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
3333 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * An object with `lat` and `lon` properties.
3334 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3335 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/series/latlon-transform/
3336 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Use specific transformation for lat/lon
3337 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3338 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3339 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Chart.prototype.transformToLatLon = function(point, transform) {
3340 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (win.proj4 === undefined) {
3341 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.error(21);
3342 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return;
3343 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3344  
3345 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var normalized = {
3346 < 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),
3347 < 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)
3348 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3349 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { cosAngle = transform.cosAngle || (transform.rotation && Math.cos(transform.rotation)),
3350 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { sinAngle = transform.sinAngle || (transform.rotation && Math.sin(transform.rotation)),
3351 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Note: Inverted sinAngle to reverse rotation direction
3352 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { projected = win.proj4(transform.crs, 'WGS84', transform.rotation ? {
3353 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: normalized.x * cosAngle + normalized.y * -sinAngle,
3354 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: normalized.x * sinAngle + normalized.y * cosAngle
3355 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } : normalized);
3356  
3357 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return {
3358 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { lat: projected.y,
3359 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { lon: projected.x
3360 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3361 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3362  
3363 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3364 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Calculate latitude/longitude values for a point. Returns an
3365 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * object with the numeric properties `lat` and `lon`.
3366 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3367 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function fromPointToLatLon
3368 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Chart.prototype
3369 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3370 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Point|Object} point
3371 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A `Point` instance or anything containing `x` and `y` properties
3372 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * with numeric values
3373 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
3374 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * An object with `lat` and `lon` properties.
3375 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3376 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/demo/latlon-advanced/
3377 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Advanced lat/lon demo
3378 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3379 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Chart.prototype.fromPointToLatLon = function(point) {
3380 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var transforms = this.mapTransforms,
3381 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transform;
3382  
3383 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!transforms) {
3384 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.error(22);
3385 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return;
3386 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3387  
3388 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (transform in transforms) {
3389 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (transforms.hasOwnProperty(transform) && transforms[transform].hitZone &&
3390 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pointInPolygon({
3391 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: point.x,
3392 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: -point.y
3393 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, transforms[transform].hitZone.coordinates[0])) {
3394 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.transformToLatLon(point, transforms[transform]);
3395 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3396 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3397  
3398 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.transformToLatLon(point, transforms['default']); // eslint-disable-line dot-notation
3399 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3400  
3401 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3402 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Get chart coordinates from latitude/longitude. Returns an
3403 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * object with x and y values corresponding to the `xAxis` and `yAxis`.
3404 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3405 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function fromLatLonToPoint
3406 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Chart.prototype
3407 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3408 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} latLon
3409 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Coordinates.
3410 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Number} latLon.lat
3411 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The latitude.
3412 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Number} latLon.lon
3413 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The longitude.
3414 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3415 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/series/latlon-to-point/
3416 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Find a point from lat/lon
3417 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3418 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
3419 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * X and Y coordinates in terms of chart axis values.
3420 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3421 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Chart.prototype.fromLatLonToPoint = function(latLon) {
3422 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var transforms = this.mapTransforms,
3423 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { transform,
3424 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { coords;
3425  
3426 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!transforms) {
3427 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.error(22);
3428 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return {
3429 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: 0,
3430 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: null
3431 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3432 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3433  
3434 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (transform in transforms) {
3435 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (transforms.hasOwnProperty(transform) && transforms[transform].hitZone) {
3436 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { coords = this.transformFromLatLon(latLon, transforms[transform]);
3437 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (pointInPolygon({
3438 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: coords.x,
3439 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: -coords.y
3440 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }, transforms[transform].hitZone.coordinates[0])) {
3441 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return coords;
3442 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3443 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3444 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3445  
3446 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return this.transformFromLatLon(latLon, transforms['default']); // eslint-disable-line dot-notation
3447 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3448  
3449 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3450 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highmaps only. Restructure a GeoJSON object in preparation to be read
3451 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * directly by the {@link
3452 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * https://api.highcharts.com/highmaps/plotOptions.series.mapData|
3453 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * series.mapData} option. The GeoJSON will be broken down to fit a specific
3454 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Highcharts type, either `map`, `mapline` or `mappoint`. Meta data in
3455 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * GeoJSON's properties object will be copied directly over to
3456 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * {@link Point.properties} in Highmaps.
3457 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3458 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function #geojson
3459 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Highcharts
3460 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3461 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Object} geojson
3462 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The GeoJSON structure to parse, represented as a JavaScript object
3463 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * rather than a JSON string.
3464 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {String} [hType=map]
3465 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The Highmaps series type to prepare for. Setting "map" will return
3466 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * GeoJSON polygons and multipolygons. Setting "mapline" will return
3467 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * GeoJSON linestrings and multilinestrings. Setting "mappoint" will
3468 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * return GeoJSON points and multipoints.
3469 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3470 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Object}
3471 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * An object ready for the `mapData` option.
3472 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3473 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample samples/maps/demo/geojson/
3474 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Simple areas
3475 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample maps/demo/geojson-multiple-types/
3476 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Multiple types
3477 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3478 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3479 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.geojson = function(geojson, hType, series) {
3480 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var mapData = [],
3481 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = [],
3482 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { polygonToPath = function(polygon) {
3483 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var i,
3484 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { len = polygon.length;
3485 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push('M');
3486 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (i = 0; i < len; i++) {
3487 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (i === 1) {
3488 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push('L');
3489 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3490 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push(polygon[i][0], -polygon[i][1]);
3491 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3492 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3493  
3494 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hType = hType || 'map';
3495  
3496 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(geojson.features, function(feature) {
3497  
3498 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var geometry = feature.geometry,
3499 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type = geometry.type,
3500 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { coordinates = geometry.coordinates,
3501 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { properties = feature.properties,
3502 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point;
3503  
3504 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = [];
3505  
3506 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (hType === 'map' || hType === 'mapbubble') {
3507 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (type === 'Polygon') {
3508 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(coordinates, polygonToPath);
3509 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push('Z');
3510  
3511 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (type === 'MultiPolygon') {
3512 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(coordinates, function(items) {
3513 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(items, polygonToPath);
3514 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3515 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path.push('Z');
3516 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3517  
3518 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (path.length) {
3519 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = {
3520 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path: path
3521 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3522 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3523  
3524 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (hType === 'mapline') {
3525 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (type === 'LineString') {
3526 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { polygonToPath(coordinates);
3527 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (type === 'MultiLineString') {
3528 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(coordinates, polygonToPath);
3529 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3530  
3531 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (path.length) {
3532 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = {
3533 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path: path
3534 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3535 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3536  
3537 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { } else if (hType === 'mappoint') {
3538 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (type === 'Point') {
3539 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { point = {
3540 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: coordinates[0],
3541 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: -coordinates[1]
3542 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3543 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3544 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3545 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (point) {
3546 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapData.push(extend(point, {
3547 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { name: properties.name || properties.NAME,
3548  
3549 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3550 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * In Highmaps, when data is loaded from GeoJSON, the GeoJSON
3551 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * item's properies are copied over here.
3552 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3553 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @name #properties
3554 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Point
3555 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Object}
3556 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3557 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { properties: properties
3558 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }));
3559 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3560  
3561 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3562  
3563 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Create a credits text that includes map source, to be picked up in Chart.addCredits
3564 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (series && geojson.copyrightShort) {
3565 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.chart.mapCredits = format(series.chart.options.credits.mapText, {
3566 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { geojson: geojson
3567 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3568 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { series.chart.mapCreditsFull = format(series.chart.options.credits.mapTextFull, {
3569 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { geojson: geojson
3570 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3571 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3572  
3573 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return mapData;
3574 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3575  
3576 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3577 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Override addCredits to include map source by default
3578 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3579 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { wrap(Chart.prototype, 'addCredits', function(proceed, credits) {
3580  
3581 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { credits = merge(true, this.options.credits, credits);
3582  
3583 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Disable credits link if map credits enabled. This to allow for in-text anchors.
3584 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (this.mapCredits) {
3585 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { credits.href = null;
3586 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3587  
3588 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { proceed.call(this, credits);
3589  
3590 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Add full map credits to hover
3591 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (this.credits && this.mapCreditsFull) {
3592 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.credits.attr({
3593 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { title: this.mapCreditsFull
3594 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3595 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3596 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3597  
3598 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
3599 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { (function(H) {
3600 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3601 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * (c) 2010-2017 Torstein Honsi
3602 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3603 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * License: www.highcharts.com/license
3604 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3605 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var Chart = H.Chart,
3606 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { defaultOptions = H.defaultOptions,
3607 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each = H.each,
3608 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extend = H.extend,
3609 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { merge = H.merge,
3610 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { pick = H.pick,
3611 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { Renderer = H.Renderer,
3612 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { SVGRenderer = H.SVGRenderer,
3613 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { VMLRenderer = H.VMLRenderer;
3614  
3615  
3616 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Add language
3617 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { extend(defaultOptions.lang, {
3618 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomIn: 'Zoom in',
3619 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomOut: 'Zoom out'
3620 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3621  
3622  
3623 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Set the default map navigation options
3624  
3625 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3626 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @products highmaps
3627 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @optionparent mapNavigation
3628 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3629 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { defaultOptions.mapNavigation = {
3630  
3631 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3632 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * General options for the map navigation buttons. Individual options
3633 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * can be given from the [mapNavigation.buttons](#mapNavigation.buttons)
3634 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * option set.
3635 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3636 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Object}
3637 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample {highmaps} maps/mapnavigation/button-theme/ Theming the navigation buttons
3638 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3639 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3640 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { buttonOptions: {
3641  
3642 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3643 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * What box to align the buttons to. Possible values are `plotBox`
3644 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * and `spacingBox`.
3645 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3646 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @validvalue ["plotBox", "spacingBox"]
3647 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {String}
3648 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default plotBox
3649 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3650 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3651 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { alignTo: 'plotBox',
3652  
3653 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3654 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The alignment of the navigation buttons.
3655 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3656 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @validvalue ["left", "center", "right"]
3657 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {String}
3658 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default left
3659 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3660 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3661 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { align: 'left',
3662  
3663 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3664 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The vertical alignment of the buttons. Individual alignment can
3665 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * be adjusted by each button's `y` offset.
3666 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3667 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @validvalue ["top", "middle", "bottom"]
3668 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {String}
3669 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default bottom
3670 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3671 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3672 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { verticalAlign: 'top',
3673  
3674 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3675 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The X offset of the buttons relative to its `align` setting.
3676 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3677 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Number}
3678 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 0
3679 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3680 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3681 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x: 0,
3682  
3683 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3684 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The width of the map navigation buttons.
3685 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3686 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Number}
3687 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 18
3688 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3689 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3690 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { width: 18,
3691  
3692 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3693 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The pixel height of the map navigation buttons.
3694 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3695 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Number}
3696 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 18
3697 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3698 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3699 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { height: 18,
3700  
3701 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3702 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Padding for the navigation buttons.
3703 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3704 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Number}
3705 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 5
3706 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @since 5.0.0
3707 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3708 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3709 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { padding: 5,
3710  
3711  
3712 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3713 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Text styles for the map navigation buttons. Defaults to
3714 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3715 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * <pre>{
3716 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * fontSize: '15px',
3717 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * fontWeight: 'bold',
3718 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * textAlign: 'center'
3719 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * }</pre>
3720 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3721 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {CSSObject}
3722 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3723 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3724 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { style: {
3725  
3726 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3727 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3728 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { fontSize: '15px',
3729  
3730 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3731 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3732 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { fontWeight: 'bold'
3733 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3734  
3735 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3736 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A configuration object for the button theme. The object accepts
3737 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * SVG properties like `stroke-width`, `stroke` and `fill`. Tri-state
3738 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * button styles are supported by the `states.hover` and `states.select`
3739 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * objects.
3740 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3741 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Object}
3742 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @sample {highmaps} maps/mapnavigation/button-theme/ Themed navigation buttons
3743 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3744 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3745 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { theme: {
3746 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'stroke-width': 1,
3747  
3748 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3749 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3750 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'text-align': 'center'
3751 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3752  
3753 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3754  
3755 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3756 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The individual buttons for the map navigation. This usually includes
3757 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * the zoom in and zoom out buttons. Properties for each button is
3758 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * inherited from [mapNavigation.buttonOptions](#mapNavigation.buttonOptions),
3759 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * while individual options can be overridden. But default, the `onclick`,
3760 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * `text` and `y` options are individual.
3761 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3762 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Object}
3763 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3764 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3765 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { buttons: {
3766  
3767 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3768 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Options for the zoom in button. Properties for the zoom in and
3769 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * zoom out buttons are inherited from [mapNavigation.buttonOptions](#mapNavigation.
3770 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * buttonOptions), while individual options can be overridden. By
3771 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * default, the `onclick`, `text` and `y` options are individual.
3772 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3773 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Object}
3774 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @extends mapNavigation.buttonOptions
3775 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3776 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3777 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomIn: {
3778  
3779 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3780 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Click handler for the button. Defaults to:
3781 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3782 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * <pre>function () {
3783 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * this.mapZoom(0.5);
3784 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * }</pre>
3785 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3786 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Function}
3787 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3788 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3789 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { onclick: function() {
3790 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.mapZoom(0.5);
3791 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3792  
3793 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3794 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The text for the button. The tooltip (title) is a language option
3795 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * given by [lang.zoomIn](#lang.zoomIn).
3796 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3797 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {String}
3798 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default +
3799 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3800 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3801 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { text: '+',
3802  
3803 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3804 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The position of the zoomIn button relative to the vertical alignment.
3805 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3806 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Number}
3807 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 0
3808 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3809 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3810 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: 0
3811 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3812  
3813 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3814 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Options for the zoom out button. Properties for the zoom in and
3815 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * zoom out buttons are inherited from [mapNavigation.buttonOptions](#mapNavigation.
3816 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * buttonOptions), while individual options can be overridden. By
3817 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * default, the `onclick`, `text` and `y` options are individual.
3818 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3819 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Object}
3820 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @extends mapNavigation.buttonOptions
3821 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3822 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3823 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { zoomOut: {
3824  
3825 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3826 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Click handler for the button. Defaults to:
3827 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3828 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * <pre>function () {
3829 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * this.mapZoom(2);
3830 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * }</pre>
3831 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3832 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Function}
3833 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3834 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3835 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { onclick: function() {
3836 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { this.mapZoom(2);
3837 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3838  
3839 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3840 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The text for the button. The tooltip (title) is a language option
3841 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * given by [lang.zoomOut](#lang.zoomIn).
3842 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3843 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {String}
3844 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default -
3845 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3846 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3847 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { text: '-',
3848  
3849 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3850 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The position of the zoomOut button relative to the vertical alignment.
3851 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3852 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Number}
3853 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 28
3854 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3855 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3856 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y: 28
3857 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3858 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3859  
3860 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3861 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Sensitivity of mouse wheel or trackpad scrolling. 1 is no sensitivity,
3862 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * while with 2, one mousewheel delta will zoom in 50%.
3863 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3864 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @type {Number}
3865 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @default 1.1
3866 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @since 4.2.4
3867 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @product highmaps
3868 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3869 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mouseWheelSensitivity: 1.1
3870 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enabled: false,
3871 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableButtons: null, // inherit from enabled
3872 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableTouchZoom: null, // inherit from enabled
3873 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableDoubleClickZoom: null, // inherit from enabled
3874 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableDoubleClickZoomTo: false
3875 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // enableMouseWheelZoom: null, // inherit from enabled
3876 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3877  
3878 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3879 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Utility for reading SVG paths directly.
3880 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3881 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.splitPath = function(path) {
3882 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var i;
3883  
3884 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Move letters apart
3885 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = path.replace(/([A-Za-z])/g, ' $1 ');
3886 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Trim
3887 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = path.replace(/^\s*/, '').replace(/\s*$/, '');
3888  
3889 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Split on spaces and commas
3890 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path = path.split(/[ ,]+/); // Extra comma to escape gulp.scripts task
3891  
3892 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Parse numbers
3893 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { for (i = 0; i < path.length; i++) {
3894 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (!/[a-zA-Z]/.test(path[i])) {
3895 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { path[i] = parseFloat(path[i]);
3896 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3897 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3898 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return path;
3899 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3900  
3901 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // A placeholder for map definitions
3902 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.maps = {};
3903  
3904  
3905  
3906  
3907  
3908 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Create symbols for the zoom buttons
3909 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { function selectiveRoundedRect(x, y, w, h, rTopLeft, rTopRight, rBottomRight, rBottomLeft) {
3910 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return [
3911 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'M', x + rTopLeft, y,
3912 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // top side
3913 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'L', x + w - rTopRight, y,
3914 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // top right corner
3915 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'C', x + w - rTopRight / 2,
3916 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y, x + w,
3917 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { y + rTopRight / 2, x + w, y + rTopRight,
3918 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // right side
3919 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'L', x + w, y + h - rBottomRight,
3920 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // bottom right corner
3921 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'C', x + w, y + h - rBottomRight / 2,
3922 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x + w - rBottomRight / 2, y + h,
3923 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x + w - rBottomRight, y + h,
3924 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // bottom side
3925 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'L', x + rBottomLeft, y + h,
3926 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // bottom left corner
3927 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'C', x + rBottomLeft / 2, y + h,
3928 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x, y + h - rBottomLeft / 2,
3929 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x, y + h - rBottomLeft,
3930 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // left side
3931 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'L', x, y + rTopLeft,
3932 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // top left corner
3933 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'C', x, y + rTopLeft / 2,
3934 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x + rTopLeft / 2, y,
3935 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { x + rTopLeft, y,
3936 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { 'Z'
3937 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { ];
3938 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3939 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { SVGRenderer.prototype.symbols.topbutton = function(x, y, w, h, attr) {
3940 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return selectiveRoundedRect(x - 1, y - 1, w, h, attr.r, attr.r, 0, 0);
3941 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3942 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { SVGRenderer.prototype.symbols.bottombutton = function(x, y, w, h, attr) {
3943 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return selectiveRoundedRect(x - 1, y - 1, w, h, 0, 0, attr.r, attr.r);
3944 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
3945 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // The symbol callbacks are generated on the SVGRenderer object in all browsers. Even
3946 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // VML browsers need this in order to generate shapes in export. Now share
3947 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // them with the VMLRenderer.
3948 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { if (Renderer === VMLRenderer) {
3949 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { each(['topbutton', 'bottombutton'], function(shape) {
3950 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { VMLRenderer.prototype.symbols[shape] = SVGRenderer.prototype.symbols[shape];
3951 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { });
3952 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
3953  
3954  
3955 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /**
3956 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The factory function for creating new map charts. Creates a new {@link
3957 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Chart|Chart} object with different default options than the basic Chart.
3958 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3959 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @function #mapChart
3960 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @memberOf Highcharts
3961 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3962 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {String|HTMLDOMElement} renderTo
3963 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The DOM element to render to, or its id.
3964 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Options} options
3965 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The chart options structure as described in the {@link
3966 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * https://api.highcharts.com/highstock|options reference}.
3967 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @param {Function} callback
3968 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * A function to execute when the chart object is finished loading and
3969 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * rendering. In most cases the chart is built in one thread, but in
3970 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * Internet Explorer version 8 or less the chart is sometimes initialized
3971 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * before the document is ready, and in these cases the chart object
3972 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * will not be finished synchronously. As a consequence, code that
3973 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * relies on the newly built Chart object should always run in the
3974 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * callback. Defining a {@link https://api.highcharts.com/highstock/chart.events.load|
3975 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * chart.event.load} handler is equivalent.
3976 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { *
3977 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * @return {Chart}
3978 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { * The chart object.
3979 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { */
3980 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { H.Map = H.mapChart = function(a, b, c) {
3981  
3982 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { var hasRenderToArg = typeof a === 'string' || a.nodeName,
3983 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = arguments[hasRenderToArg ? 1 : 0],
3984 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hiddenAxis = {
3985 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { endOnTick: false,
3986 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { visible: false,
3987 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { minPadding: 0,
3988 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { maxPadding: 0,
3989 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { startOnTick: false
3990 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
3991 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesOptions,
3992 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { defaultCreditsOptions = H.getOptions().credits;
3993  
3994 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { /* For visual testing
3995 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hiddenAxis.gridLineWidth = 1;
3996 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hiddenAxis.gridZIndex = 10;
3997 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { hiddenAxis.tickPositions = undefined;
3998 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // */
3999  
4000 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { // Don't merge the data
4001 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { seriesOptions = options.series;
4002 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options.series = null;
4003  
4004 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options = merge({
4005 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { chart: {
4006 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { panning: 'xy',
4007 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { type: 'map'
4008 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
4009 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { credits: {
4010 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapText: pick(defaultCreditsOptions.mapText, ' \u00a9 <a href="{geojson.copyrightUrl}">{geojson.copyrightShort}</a>'),
4011 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { mapTextFull: pick(defaultCreditsOptions.mapTextFull, '{geojson.copyright}')
4012 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
4013 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { tooltip: {
4014 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { followTouchMove: false
4015 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
4016 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { xAxis: hiddenAxis,
4017 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { yAxis: merge(hiddenAxis, {
4018 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { reversed: true
4019 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { })
4020 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { },
4021 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options, // user's options
4022  
4023 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { { // forced options
4024 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { chart: {
4025 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { inverted: false,
4026 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { alignTicks: false
4027 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
4028 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }
4029 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { );
4030  
4031 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { options.series = seriesOptions;
4032  
4033  
4034 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { return hasRenderToArg ?
4035 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { new Chart(a, options, c) :
4036 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { new Chart(options, b);
4037 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { };
4038  
4039 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) { }(Highcharts));
4040 < 1 ? this : xAxis;< axisPos) {< ';< 1.01 && scaleY >< 1.01) {}));