highcharts-rails 4.2.3 → 4.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.markdown +56 -0
 - data/README.markdown +2 -3
 - data/app/assets/javascripts/highcharts.js +343 -203
 - data/app/assets/javascripts/highcharts/highcharts-3d.js +119 -14
 - data/app/assets/javascripts/highcharts/highcharts-more.js +61 -39
 - data/app/assets/javascripts/highcharts/modules/boost.js +28 -6
 - data/app/assets/javascripts/highcharts/modules/broken-axis.js +5 -7
 - data/app/assets/javascripts/highcharts/modules/canvas-tools.js +1 -1
 - data/app/assets/javascripts/highcharts/modules/data.js +1 -1
 - data/app/assets/javascripts/highcharts/modules/drilldown.js +23 -15
 - data/app/assets/javascripts/highcharts/modules/exporting.js +1 -1
 - data/app/assets/javascripts/highcharts/modules/funnel.js +2 -10
 - data/app/assets/javascripts/highcharts/modules/heatmap.js +1 -1
 - data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +2 -2
 - data/app/assets/javascripts/highcharts/modules/offline-exporting.js +1 -1
 - data/app/assets/javascripts/highcharts/modules/solid-gauge.js +1 -1
 - data/app/assets/javascripts/highcharts/modules/treemap.js +26 -12
 - data/lib/highcharts/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 97714de447dedd03f4f7d06964a96824433b7915
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: e14b8a7a89bf5de5a48bb2c2118036292fc4e96d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 38bb75286a35565c01ae20b6785d962a7ba5f4b9d2792807d490a89950838b2f1db2c1ba67bc3f3b9f3beeadaeea32cc0ddcbe1d4341ac6e674ce8c3b20cbe40
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8d4f48c2627791d0ca196f4084adea4c9ab94306d7efa1373996e113c62ea76b36946121755b08c0beb4d4669008d4ad425a02016f7e388efa0ccf187b435f15
         
     | 
    
        data/CHANGELOG.markdown
    CHANGED
    
    | 
         @@ -1,3 +1,59 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # 4.2.4 / 2016-05-06
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Updated Highcharts to 4.2.4
         
     | 
| 
      
 4 
     | 
    
         
            +
              * Added support for polar columnrange series.
         
     | 
| 
      
 5 
     | 
    
         
            +
              * Added e.originalEvent to drilldown event in order to catch modifier keys and other properties. Closes #5113.
         
     | 
| 
      
 6 
     | 
    
         
            +
              * Added new drilldown event, chart.events.drillupall, that is triggered after multiple single drillup events. Closes #5158. Closes #5159.
         
     | 
| 
      
 7 
     | 
    
         
            +
              * Added new option, chart.options3d.fitToPlot to fit 3D charts into the available plotting area. This may affect the layout of existing 3D charts if the layout was adjusted by chart.margin. The chart.margin setting can now normally be removed. Closes #4933.
         
     | 
| 
      
 8 
     | 
    
         
            +
              * Added new option, lang.shortWeekdays, to specify short weekdays other than the first three letters of the weekday.
         
     | 
| 
      
 9 
     | 
    
         
            +
              * Added new value, day, for pointIntervalUnit.
         
     | 
| 
      
 10 
     | 
    
         
            +
              * Added option, legend.navigation.enabled, to allow disabling legend scroll.
         
     | 
| 
      
 11 
     | 
    
         
            +
              * Fixed #3450, tooltip did not display after zooming on Android.
         
     | 
| 
      
 12 
     | 
    
         
            +
              * Fixed #3916, halo and tooltip visible for points outside the plot area.
         
     | 
| 
      
 13 
     | 
    
         
            +
              * Fixed #4552, mouse interaction and tooltip positions didn't match on 3D scatter chart.
         
     | 
| 
      
 14 
     | 
    
         
            +
              * Fixed #4631, treemap series displayed no data even when data existed.
         
     | 
| 
      
 15 
     | 
    
         
            +
              * Fixed #4679, when series are overlapping, the tooltip should show the topmost point.
         
     | 
| 
      
 16 
     | 
    
         
            +
              * Fixed #4700, users can set and modify opacity on parent nodes in treemap.
         
     | 
| 
      
 17 
     | 
    
         
            +
              * Fixed #474, vertical label alignment on top axis was off when labels were on multiple lines.
         
     | 
| 
      
 18 
     | 
    
         
            +
              * Fixed #4751, inconsistent data label behaviour after redraw.
         
     | 
| 
      
 19 
     | 
    
         
            +
              * Fixed #4784, setting allAreas to false does not center map.
         
     | 
| 
      
 20 
     | 
    
         
            +
              * Fixed #4812, dataLabels which was supposed to be hidden were still visible.
         
     | 
| 
      
 21 
     | 
    
         
            +
              * Fixed #4856, zooming did not work in Treemap.
         
     | 
| 
      
 22 
     | 
    
         
            +
              * Fixed #4866, space was not reserved for tick marks, allowing ticks to overflow the chart when axis labels were not present.
         
     | 
| 
      
 23 
     | 
    
         
            +
              * Fixed #4868, axis breaks were not applied for a range series.
         
     | 
| 
      
 24 
     | 
    
         
            +
              * Fixed #4891, pie slice's graphics were not fully hidden, when slice was hidden.
         
     | 
| 
      
 25 
     | 
    
         
            +
              * Fixed #4954, corrected floating values with isSum and isIntermediateSum in Waterfall series.
         
     | 
| 
      
 26 
     | 
    
         
            +
              * Fixed #4961, placement of tooltip on flags for inverted charts.
         
     | 
| 
      
 27 
     | 
    
         
            +
              * Fixed #4984, tooltip jiggling on arearange even when followPointer was true.
         
     | 
| 
      
 28 
     | 
    
         
            +
              * Fixed #5007, JS error from tooltip when running in strict mode.
         
     | 
| 
      
 29 
     | 
    
         
            +
              * Fixed #5010, stacked areas didn't work with Date objects as X values.
         
     | 
| 
      
 30 
     | 
    
         
            +
              * Fixed #5029, runtime error on empty data set.
         
     | 
| 
      
 31 
     | 
    
         
            +
              * Fixed #5030, bars were shaking on initial animation.
         
     | 
| 
      
 32 
     | 
    
         
            +
              * Fixed #5034, a regression causing axis labels on vertical axis not to wrap.
         
     | 
| 
      
 33 
     | 
    
         
            +
              * Fixed #5053, regressions related to chart callbacks firing async.
         
     | 
| 
      
 34 
     | 
    
         
            +
              * Fixed #5060, date format for %e was not consistent with docs.
         
     | 
| 
      
 35 
     | 
    
         
            +
              * Fixed #5063, solid gauge tooltip showed wrong series the first time.
         
     | 
| 
      
 36 
     | 
    
         
            +
              * Fixed #5066, crosshair with snap: false only appeared when hovering a point.
         
     | 
| 
      
 37 
     | 
    
         
            +
              * Fixed #5075, display was not deferred on data labels with useHTML.
         
     | 
| 
      
 38 
     | 
    
         
            +
              * Fixed #5079, a regression causing vertical axis title to disappear in IE8.
         
     | 
| 
      
 39 
     | 
    
         
            +
              * Fixed #5084, wrong Heatmap Intro was set in parts.js, which made the Download Builder fail.
         
     | 
| 
      
 40 
     | 
    
         
            +
              * Fixed #5085, tooltip showed for points immediately outside the plot area on the X axis.
         
     | 
| 
      
 41 
     | 
    
         
            +
              * Fixed #5086, X axis labels overlapped when added via Chart.addSeries.
         
     | 
| 
      
 42 
     | 
    
         
            +
              * Fixed #5087, container with padding caused error with printing in IE8.
         
     | 
| 
      
 43 
     | 
    
         
            +
              * Fixed #5099, single point marker was not displaying when surrounded by null points.
         
     | 
| 
      
 44 
     | 
    
         
            +
              * Fixed #5101, click events did not fire on pie slices after Point.update.
         
     | 
| 
      
 45 
     | 
    
         
            +
              * Fixed #5112, returning false from event handlers didn't cancel default function.
         
     | 
| 
      
 46 
     | 
    
         
            +
              * Fixed #5133, data labels disappeared on chart redraw when defer was explicitly set to true.
         
     | 
| 
      
 47 
     | 
    
         
            +
              * Fixed #5134, a regression causing wrong aniation on pie labels when moving from one side to the other.
         
     | 
| 
      
 48 
     | 
    
         
            +
              * Fixed #5137, boost module threw JS error when doing mouse interaction after removing series.
         
     | 
| 
      
 49 
     | 
    
         
            +
              * Fixed #5144, problem with percentage stack with null points.
         
     | 
| 
      
 50 
     | 
    
         
            +
              * Fixed #5146, columns with zero value and no border on negative chart were visible even though they shouldn't.
         
     | 
| 
      
 51 
     | 
    
         
            +
              * Fixed #5156, funnel did not respect the color set for selected state.
         
     | 
| 
      
 52 
     | 
    
         
            +
              * Fixed #5160, data grouping and boost module did not play well together.
         
     | 
| 
      
 53 
     | 
    
         
            +
              * Fixed #5167, wrong padding in bubble charts made point disappear after setting axis extremes.
         
     | 
| 
      
 54 
     | 
    
         
            +
              * Fixed #5171, log scale transformation functions were not accessible from the outside.
         
     | 
| 
      
 55 
     | 
    
         
            +
              * Fixed #5174, invalid CSS because of division by zero.
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
       1 
57 
     | 
    
         
             
            # 4.2.3 / 2016-04-09
         
     | 
| 
       2 
58 
     | 
    
         | 
| 
       3 
59 
     | 
    
         
             
            * Updated Highcharts to 4.2.3 (2016-02-08)
         
     | 
    
        data/README.markdown
    CHANGED
    
    | 
         @@ -9,7 +9,7 @@ If you are looking to include Highstock, Justin Kuepper has made [highstock-rail 
     | 
|
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
            Add the gem to the Gemfile
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                gem "highcharts-rails" 
     | 
| 
      
 12 
     | 
    
         
            +
                gem "highcharts-rails"
         
     | 
| 
       13 
13 
     | 
    
         
             
                # The gem version mirrors the included version of Highcharts
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            ## Changes
         
     | 
| 
         @@ -27,8 +27,6 @@ In your JavaScript manifest (e.g. `application.js`) 
     | 
|
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
            To include one of the other adapters
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
                //= require highcharts/adapters/mootools-adapter
         
     | 
| 
       31 
     | 
    
         
            -
                //= require highcharts/adapters/prototype-adapter
         
     | 
| 
       32 
30 
     | 
    
         
             
                //= require highcharts/adapters/standalone-framework
         
     | 
| 
       33 
31 
     | 
    
         | 
| 
       34 
32 
     | 
    
         
             
            Or the modules
         
     | 
| 
         @@ -41,6 +39,7 @@ Or the modules 
     | 
|
| 
       41 
39 
     | 
    
         
             
                //= require highcharts/modules/funnel
         
     | 
| 
       42 
40 
     | 
    
         
             
                //= require highcharts/modules/heatmap
         
     | 
| 
       43 
41 
     | 
    
         
             
                //= require highcharts/modules/no-data-to-display
         
     | 
| 
      
 42 
     | 
    
         
            +
                //= require highcharts/modules/offline-exporting
         
     | 
| 
       44 
43 
     | 
    
         | 
| 
       45 
44 
     | 
    
         
             
            Or one of the themes
         
     | 
| 
       46 
45 
     | 
    
         | 
| 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            // @compilation_level SIMPLE_OPTIMIZATIONS
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            /**
         
     | 
| 
       5 
     | 
    
         
            -
             * @license Highcharts JS v4.2. 
     | 
| 
      
 5 
     | 
    
         
            +
             * @license Highcharts JS v4.2.4 (2016-04-14)
         
     | 
| 
       6 
6 
     | 
    
         
             
             *
         
     | 
| 
       7 
7 
     | 
    
         
             
             * (c) 2009-2016 Torstein Honsi
         
     | 
| 
       8 
8 
     | 
    
         
             
             *
         
     | 
| 
         @@ -59,7 +59,7 @@ 
     | 
|
| 
       59 
59 
     | 
    
         
             
                    charts = [],
         
     | 
| 
       60 
60 
     | 
    
         
             
                    chartCount = 0,
         
     | 
| 
       61 
61 
     | 
    
         
             
                    PRODUCT = 'Highcharts',
         
     | 
| 
       62 
     | 
    
         
            -
                    VERSION = '4.2. 
     | 
| 
      
 62 
     | 
    
         
            +
                    VERSION = '4.2.4',
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                    // some constants for frequently used strings
         
     | 
| 
       65 
65 
     | 
    
         
             
                    DIV = 'div',
         
     | 
| 
         @@ -486,13 +486,6 @@ 
     | 
|
| 
       486 
486 
     | 
    
         
             
                    return typeof n === 'number';
         
     | 
| 
       487 
487 
     | 
    
         
             
                }
         
     | 
| 
       488 
488 
     | 
    
         | 
| 
       489 
     | 
    
         
            -
                function log2lin(num) {
         
     | 
| 
       490 
     | 
    
         
            -
                    return math.log(num) / math.LN10;
         
     | 
| 
       491 
     | 
    
         
            -
                }
         
     | 
| 
       492 
     | 
    
         
            -
                function lin2log(num) {
         
     | 
| 
       493 
     | 
    
         
            -
                    return math.pow(10, num);
         
     | 
| 
       494 
     | 
    
         
            -
                }
         
     | 
| 
       495 
     | 
    
         
            -
             
     | 
| 
       496 
489 
     | 
    
         
             
                /**
         
     | 
| 
       497 
490 
     | 
    
         
             
                 * Remove last occurence of an item from an array
         
     | 
| 
       498 
491 
     | 
    
         
             
                 * @param {Array} arr
         
     | 
| 
         @@ -643,8 +636,8 @@ 
     | 
|
| 
       643 
636 
     | 
    
         
             
                 * @param {Number} number
         
     | 
| 
       644 
637 
     | 
    
         
             
                 * @param {Number} length
         
     | 
| 
       645 
638 
     | 
    
         
             
                 */
         
     | 
| 
       646 
     | 
    
         
            -
                function pad(number, length) {
         
     | 
| 
       647 
     | 
    
         
            -
                    return new Array((length || 2) + 1 - String(number).length).join(0) + number;
         
     | 
| 
      
 639 
     | 
    
         
            +
                function pad(number, length, padder) {
         
     | 
| 
      
 640 
     | 
    
         
            +
                    return new Array((length || 2) + 1 - String(number).length).join(padder || 0) + number;
         
     | 
| 
       648 
641 
     | 
    
         
             
                }
         
     | 
| 
       649 
642 
     | 
    
         | 
| 
       650 
643 
     | 
    
         
             
                /**
         
     | 
| 
         @@ -698,15 +691,16 @@ 
     | 
|
| 
       698 
691 
     | 
    
         
             
                        fullYear = date[getFullYear](),
         
     | 
| 
       699 
692 
     | 
    
         
             
                        lang = defaultOptions.lang,
         
     | 
| 
       700 
693 
     | 
    
         
             
                        langWeekdays = lang.weekdays,
         
     | 
| 
      
 694 
     | 
    
         
            +
                        shortWeekdays = lang.shortWeekdays,
         
     | 
| 
       701 
695 
     | 
    
         | 
| 
       702 
696 
     | 
    
         
             
                        // List all format keys. Custom formats can be added from the outside.
         
     | 
| 
       703 
697 
     | 
    
         
             
                        replacements = extend({
         
     | 
| 
       704 
698 
     | 
    
         | 
| 
       705 
699 
     | 
    
         
             
                            // Day
         
     | 
| 
       706 
     | 
    
         
            -
                            'a': langWeekdays[day].substr(0, 3), // Short weekday, like 'Mon'
         
     | 
| 
      
 700 
     | 
    
         
            +
                            'a': shortWeekdays ? shortWeekdays[day] : langWeekdays[day].substr(0, 3), // Short weekday, like 'Mon'
         
     | 
| 
       707 
701 
     | 
    
         
             
                            'A': langWeekdays[day], // Long weekday, like 'Monday'
         
     | 
| 
       708 
702 
     | 
    
         
             
                            'd': pad(dayOfMonth), // Two digit day of the month, 01 to 31
         
     | 
| 
       709 
     | 
    
         
            -
                            'e': dayOfMonth, // Day of the month, 1 through 31
         
     | 
| 
      
 703 
     | 
    
         
            +
                            'e': pad(dayOfMonth, 2, ' '), // Day of the month, 1 through 31
         
     | 
| 
       710 
704 
     | 
    
         
             
                            'w': day,
         
     | 
| 
       711 
705 
     | 
    
         | 
| 
       712 
706 
     | 
    
         
             
                            // Week (none implemented)
         
     | 
| 
         @@ -992,6 +986,14 @@ 
     | 
|
| 
       992 
986 
     | 
    
         
             
                    chart.renderer.globalAnimation = pick(animation, chart.animation);
         
     | 
| 
       993 
987 
     | 
    
         
             
                }
         
     | 
| 
       994 
988 
     | 
    
         | 
| 
      
 989 
     | 
    
         
            +
                /**
         
     | 
| 
      
 990 
     | 
    
         
            +
                 * Get the animation in object form, where a disabled animation is always
         
     | 
| 
      
 991 
     | 
    
         
            +
                 * returned with duration: 0
         
     | 
| 
      
 992 
     | 
    
         
            +
                 */
         
     | 
| 
      
 993 
     | 
    
         
            +
                function animObject(animation) {
         
     | 
| 
      
 994 
     | 
    
         
            +
                    return isObject(animation) ? merge(animation) : { duration: animation ? 500 : 0 };
         
     | 
| 
      
 995 
     | 
    
         
            +
                }
         
     | 
| 
      
 996 
     | 
    
         
            +
             
     | 
| 
       995 
997 
     | 
    
         
             
                /**
         
     | 
| 
       996 
998 
     | 
    
         
             
                 * The time unit lookup
         
     | 
| 
       997 
999 
     | 
    
         
             
                 */
         
     | 
| 
         @@ -1107,7 +1109,9 @@ 
     | 
|
| 
       1107 
1109 
     | 
    
         
             
                 * Map an array
         
     | 
| 
       1108 
1110 
     | 
    
         
             
                 */
         
     | 
| 
       1109 
1111 
     | 
    
         
             
                map = function (arr, fn) {
         
     | 
| 
       1110 
     | 
    
         
            -
                    var results = [], 
     | 
| 
      
 1112 
     | 
    
         
            +
                    var results = [],
         
     | 
| 
      
 1113 
     | 
    
         
            +
                        i = 0,
         
     | 
| 
      
 1114 
     | 
    
         
            +
                        len = arr.length;
         
     | 
| 
       1111 
1115 
     | 
    
         | 
| 
       1112 
1116 
     | 
    
         
             
                    for (; i < len; i++) {
         
     | 
| 
       1113 
1117 
     | 
    
         
             
                        results[i] = fn.call(arr[i], arr[i], i, arr);
         
     | 
| 
         @@ -1269,7 +1273,6 @@ 
     | 
|
| 
       1269 
1273 
     | 
    
         
             
                        events,
         
     | 
| 
       1270 
1274 
     | 
    
         
             
                        len,
         
     | 
| 
       1271 
1275 
     | 
    
         
             
                        i,
         
     | 
| 
       1272 
     | 
    
         
            -
                        preventDefault,
         
     | 
| 
       1273 
1276 
     | 
    
         
             
                        fn;
         
     | 
| 
       1274 
1277 
     | 
    
         | 
| 
       1275 
1278 
     | 
    
         
             
                    eventArguments = eventArguments || {};
         
     | 
| 
         @@ -1292,36 +1295,33 @@ 
     | 
|
| 
       1292 
1295 
     | 
    
         
             
                        events = hcEvents[type] || [];
         
     | 
| 
       1293 
1296 
     | 
    
         
             
                        len = events.length;
         
     | 
| 
       1294 
1297 
     | 
    
         | 
| 
       1295 
     | 
    
         
            -
                        // Attach a simple preventDefault function to skip default handler if called
         
     | 
| 
       1296 
     | 
    
         
            -
                         
     | 
| 
       1297 
     | 
    
         
            -
             
     | 
| 
       1298 
     | 
    
         
            -
             
     | 
| 
      
 1298 
     | 
    
         
            +
                        // Attach a simple preventDefault function to skip default handler if called. 
         
     | 
| 
      
 1299 
     | 
    
         
            +
                        // The built-in defaultPrevented property is not overwritable (#5112)
         
     | 
| 
      
 1300 
     | 
    
         
            +
                        if (!eventArguments.preventDefault) {
         
     | 
| 
      
 1301 
     | 
    
         
            +
                            eventArguments.preventDefault = function () {
         
     | 
| 
      
 1302 
     | 
    
         
            +
                                eventArguments.defaultPrevented = true;
         
     | 
| 
      
 1303 
     | 
    
         
            +
                            };
         
     | 
| 
      
 1304 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1305 
     | 
    
         
            +
             
     | 
| 
      
 1306 
     | 
    
         
            +
                        eventArguments.target = el;
         
     | 
| 
      
 1307 
     | 
    
         
            +
             
     | 
| 
      
 1308 
     | 
    
         
            +
                        // If the type is not set, we're running a custom event (#2297). If it is set,
         
     | 
| 
      
 1309 
     | 
    
         
            +
                        // we're running a browser event, and setting it will cause en error in
         
     | 
| 
      
 1310 
     | 
    
         
            +
                        // IE8 (#2465).
         
     | 
| 
      
 1311 
     | 
    
         
            +
                        if (!eventArguments.type) {
         
     | 
| 
      
 1312 
     | 
    
         
            +
                            eventArguments.type = type;
         
     | 
| 
      
 1313 
     | 
    
         
            +
                        }
         
     | 
| 
       1299 
1314 
     | 
    
         | 
| 
       1300 
1315 
     | 
    
         
             
                        for (i = 0; i < len; i++) {
         
     | 
| 
       1301 
1316 
     | 
    
         
             
                            fn = events[i];
         
     | 
| 
       1302 
1317 
     | 
    
         | 
| 
       1303 
     | 
    
         
            -
                            // eventArguments is never null here
         
     | 
| 
       1304 
     | 
    
         
            -
                            if (eventArguments.stopped) {
         
     | 
| 
       1305 
     | 
    
         
            -
                                return;
         
     | 
| 
       1306 
     | 
    
         
            -
                            }
         
     | 
| 
       1307 
     | 
    
         
            -
             
     | 
| 
       1308 
     | 
    
         
            -
                            eventArguments.preventDefault = preventDefault;
         
     | 
| 
       1309 
     | 
    
         
            -
                            eventArguments.target = el;
         
     | 
| 
       1310 
     | 
    
         
            -
             
     | 
| 
       1311 
     | 
    
         
            -
                            // If the type is not set, we're running a custom event (#2297). If it is set,
         
     | 
| 
       1312 
     | 
    
         
            -
                            // we're running a browser event, and setting it will cause en error in
         
     | 
| 
       1313 
     | 
    
         
            -
                            // IE8 (#2465).
         
     | 
| 
       1314 
     | 
    
         
            -
                            if (!eventArguments.type) {
         
     | 
| 
       1315 
     | 
    
         
            -
                                eventArguments.type = type;
         
     | 
| 
       1316 
     | 
    
         
            -
                            }
         
     | 
| 
       1317 
     | 
    
         
            -
                        
         
     | 
| 
       1318 
1318 
     | 
    
         
             
                            // If the event handler return false, prevent the default handler from executing
         
     | 
| 
       1319 
1319 
     | 
    
         
             
                            if (fn.call(el, eventArguments) === false) {
         
     | 
| 
       1320 
1320 
     | 
    
         
             
                                eventArguments.preventDefault();
         
     | 
| 
       1321 
1321 
     | 
    
         
             
                            }
         
     | 
| 
       1322 
1322 
     | 
    
         
             
                        }
         
     | 
| 
       1323 
1323 
     | 
    
         
             
                    }
         
     | 
| 
       1324 
     | 
    
         
            -
             
     | 
| 
      
 1324 
     | 
    
         
            +
                        
         
     | 
| 
       1325 
1325 
     | 
    
         
             
                    // Run the default if not prevented
         
     | 
| 
       1326 
1326 
     | 
    
         
             
                    if (defaultFunction && !eventArguments.defaultPrevented) {
         
     | 
| 
       1327 
1327 
     | 
    
         
             
                        defaultFunction(eventArguments);
         
     | 
| 
         @@ -1350,7 +1350,7 @@ 
     | 
|
| 
       1350 
1350 
     | 
    
         
             
                    if (!isNumber(opt.duration)) {
         
     | 
| 
       1351 
1351 
     | 
    
         
             
                        opt.duration = 400;
         
     | 
| 
       1352 
1352 
     | 
    
         
             
                    }
         
     | 
| 
       1353 
     | 
    
         
            -
                    opt.easing = Math[opt.easing] || Math.easeInOutSine;
         
     | 
| 
      
 1353 
     | 
    
         
            +
                    opt.easing = typeof opt.easing === 'function' ? opt.easing : (Math[opt.easing] || Math.easeInOutSine);
         
     | 
| 
       1354 
1354 
     | 
    
         
             
                    opt.curAnim = merge(params);
         
     | 
| 
       1355 
1355 
     | 
    
         | 
| 
       1356 
1356 
     | 
    
         
             
                    for (prop in params) {
         
     | 
| 
         @@ -1428,7 +1428,7 @@ 
     | 
|
| 
       1428 
1428 
     | 
    
         
             
                        // Getting the rendered width and height
         
     | 
| 
       1429 
1429 
     | 
    
         
             
                        if (alias) {
         
     | 
| 
       1430 
1430 
     | 
    
         
             
                            el.style.zoom = 1;
         
     | 
| 
       1431 
     | 
    
         
            -
                            return el[alias] - 2 * getStyle(el, 'padding');
         
     | 
| 
      
 1431 
     | 
    
         
            +
                            return Math.max(el[alias] - 2 * getStyle(el, 'padding'), 0);
         
     | 
| 
       1432 
1432 
     | 
    
         
             
                        }
         
     | 
| 
       1433 
1433 
     | 
    
         | 
| 
       1434 
1434 
     | 
    
         
             
                        val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b) {
         
     | 
| 
         @@ -1507,6 +1507,7 @@ 
     | 
|
| 
       1507 
1507 
     | 
    
         
             
                Highcharts.removeEvent = removeEvent;
         
     | 
| 
       1508 
1508 
     | 
    
         
             
                Highcharts.fireEvent = fireEvent;
         
     | 
| 
       1509 
1509 
     | 
    
         
             
                Highcharts.animate = animate;
         
     | 
| 
      
 1510 
     | 
    
         
            +
                Highcharts.animObject = animObject;
         
     | 
| 
       1510 
1511 
     | 
    
         
             
                Highcharts.stop = stop;
         
     | 
| 
       1511 
1512 
     | 
    
         | 
| 
       1512 
1513 
     | 
    
         
             
                /* ****************************************************************************
         
     | 
| 
         @@ -1533,7 +1534,7 @@ 
     | 
|
| 
       1533 
1534 
     | 
    
         
             
                        useUTC: true,
         
     | 
| 
       1534 
1535 
     | 
    
         
             
                        //timezoneOffset: 0,
         
     | 
| 
       1535 
1536 
     | 
    
         
             
                        canvasToolsURL: 'http://code.highcharts.com/modules/canvas-tools.js',
         
     | 
| 
       1536 
     | 
    
         
            -
                        VMLRadialGradientURL: 'http://code.highcharts.com/4.2. 
     | 
| 
      
 1537 
     | 
    
         
            +
                        VMLRadialGradientURL: 'http://code.highcharts.com/4.2.4/gfx/vml-radial-gradient.png'
         
     | 
| 
       1537 
1538 
     | 
    
         
             
                    },
         
     | 
| 
       1538 
1539 
     | 
    
         
             
                    chart: {
         
     | 
| 
       1539 
1540 
     | 
    
         
             
                        //animation: true,
         
     | 
| 
         @@ -2104,7 +2105,6 @@ 
     | 
|
| 
       2104 
2105 
     | 
    
         
             
                        var animOptions = pick(options, this.renderer.globalAnimation, true);
         
     | 
| 
       2105 
2106 
     | 
    
         
             
                        stop(this); // stop regardless of animation actually running, or reverting to .attr (#607)
         
     | 
| 
       2106 
2107 
     | 
    
         
             
                        if (animOptions) {
         
     | 
| 
       2107 
     | 
    
         
            -
                            animOptions = merge(animOptions, {}); //#2625
         
     | 
| 
       2108 
2108 
     | 
    
         
             
                            if (complete) { // allows using a callback with the global animation without overwriting it
         
     | 
| 
       2109 
2109 
     | 
    
         
             
                                animOptions.complete = complete;
         
     | 
| 
       2110 
2110 
     | 
    
         
             
                            }
         
     | 
| 
         @@ -2403,7 +2403,7 @@ 
     | 
|
| 
       2403 
2403 
     | 
    
         | 
| 
       2404 
2404 
     | 
    
         
             
                        while (i--) {
         
     | 
| 
       2405 
2405 
     | 
    
         
             
                            setter.call(
         
     | 
| 
       2406 
     | 
    
         
            -
                                 
     | 
| 
      
 2406 
     | 
    
         
            +
                                shadows[i], 
         
     | 
| 
       2407 
2407 
     | 
    
         
             
                                key === 'height' ?
         
     | 
| 
       2408 
2408 
     | 
    
         
             
                                    Math.max(value - (shadows[i].cutHeight || 0), 0) :
         
     | 
| 
       2409 
2409 
     | 
    
         
             
                                    key === 'd' ? this.d : value, 
         
     | 
| 
         @@ -3136,7 +3136,14 @@ 
     | 
|
| 
       3136 
3136 
     | 
    
         
             
                        this[key] = value;
         
     | 
| 
       3137 
3137 
     | 
    
         
             
                    },
         
     | 
| 
       3138 
3138 
     | 
    
         
             
                    dashstyleSetter: function (value) {
         
     | 
| 
       3139 
     | 
    
         
            -
                        var i 
     | 
| 
      
 3139 
     | 
    
         
            +
                        var i,
         
     | 
| 
      
 3140 
     | 
    
         
            +
                            strokeWidth = this['stroke-width'];
         
     | 
| 
      
 3141 
     | 
    
         
            +
                    
         
     | 
| 
      
 3142 
     | 
    
         
            +
                        // If "inherit", like maps in IE, assume 1 (#4981). With HC5 and the new strokeWidth 
         
     | 
| 
      
 3143 
     | 
    
         
            +
                        // function, we should be able to use that instead.
         
     | 
| 
      
 3144 
     | 
    
         
            +
                        if (strokeWidth === 'inherit') {
         
     | 
| 
      
 3145 
     | 
    
         
            +
                            strokeWidth = 1;
         
     | 
| 
      
 3146 
     | 
    
         
            +
                        }
         
     | 
| 
       3140 
3147 
     | 
    
         
             
                        value = value && value.toLowerCase();
         
     | 
| 
       3141 
3148 
     | 
    
         
             
                        if (value) {
         
     | 
| 
       3142 
3149 
     | 
    
         
             
                            value = value
         
     | 
| 
         @@ -3152,10 +3159,10 @@ 
     | 
|
| 
       3152 
3159 
     | 
    
         | 
| 
       3153 
3160 
     | 
    
         
             
                            i = value.length;
         
     | 
| 
       3154 
3161 
     | 
    
         
             
                            while (i--) {
         
     | 
| 
       3155 
     | 
    
         
            -
                                value[i] = pInt(value[i]) *  
     | 
| 
      
 3162 
     | 
    
         
            +
                                value[i] = pInt(value[i]) * strokeWidth;
         
     | 
| 
       3156 
3163 
     | 
    
         
             
                            }
         
     | 
| 
       3157 
3164 
     | 
    
         
             
                            value = value.join(',')
         
     | 
| 
       3158 
     | 
    
         
            -
                                .replace( 
     | 
| 
      
 3165 
     | 
    
         
            +
                                .replace(/NaN/g, 'none'); // #3226
         
     | 
| 
       3159 
3166 
     | 
    
         
             
                            this.element.setAttribute('stroke-dasharray', value);
         
     | 
| 
       3160 
3167 
     | 
    
         
             
                        }
         
     | 
| 
       3161 
3168 
     | 
    
         
             
                    },
         
     | 
| 
         @@ -3218,7 +3225,7 @@ 
     | 
|
| 
       3218 
3225 
     | 
    
         
             
                            i;
         
     | 
| 
       3219 
3226 
     | 
    
         | 
| 
       3220 
3227 
     | 
    
         
             
                        if (defined(value)) {
         
     | 
| 
       3221 
     | 
    
         
            -
                            element. 
     | 
| 
      
 3228 
     | 
    
         
            +
                            element.zIndex = value; // So we can read it for other elements in the group
         
     | 
| 
       3222 
3229 
     | 
    
         
             
                            value = +value;
         
     | 
| 
       3223 
3230 
     | 
    
         
             
                            if (this[key] === value) { // Only update when needed (#3865)
         
     | 
| 
       3224 
3231 
     | 
    
         
             
                                run = false;
         
     | 
| 
         @@ -3239,7 +3246,7 @@ 
     | 
|
| 
       3239 
3246 
     | 
    
         
             
                            childNodes = parentNode.childNodes;
         
     | 
| 
       3240 
3247 
     | 
    
         
             
                            for (i = 0; i < childNodes.length && !inserted; i++) {
         
     | 
| 
       3241 
3248 
     | 
    
         
             
                                otherElement = childNodes[i];
         
     | 
| 
       3242 
     | 
    
         
            -
                                otherZIndex =  
     | 
| 
      
 3249 
     | 
    
         
            +
                                otherZIndex = otherElement.zIndex;
         
     | 
| 
       3243 
3250 
     | 
    
         
             
                                if (otherElement !== element && (
         
     | 
| 
       3244 
3251 
     | 
    
         
             
                                        // Insert before the first element with a higher zIndex
         
     | 
| 
       3245 
3252 
     | 
    
         
             
                                        pInt(otherZIndex) > value ||
         
     | 
| 
         @@ -3529,13 +3536,14 @@ 
     | 
|
| 
       3529 
3536 
     | 
    
         | 
| 
       3530 
3537 
     | 
    
         | 
| 
       3531 
3538 
     | 
    
         
             
                            // build the lines
         
     | 
| 
       3532 
     | 
    
         
            -
                            each(lines, function (line, lineNo) {
         
     | 
| 
       3533 
     | 
    
         
            -
                                var spans, 
     | 
| 
      
 3539 
     | 
    
         
            +
                            each(lines, function buildTextLines(line, lineNo) {
         
     | 
| 
      
 3540 
     | 
    
         
            +
                                var spans,
         
     | 
| 
      
 3541 
     | 
    
         
            +
                                    spanNo = 0;
         
     | 
| 
       3534 
3542 
     | 
    
         | 
| 
       3535 
3543 
     | 
    
         
             
                                line = line.replace(/<span/g, '|||<span').replace(/<\/span>/g, '</span>|||');
         
     | 
| 
       3536 
3544 
     | 
    
         
             
                                spans = line.split('|||');
         
     | 
| 
       3537 
3545 
     | 
    
         | 
| 
       3538 
     | 
    
         
            -
                                each(spans, function (span) {
         
     | 
| 
      
 3546 
     | 
    
         
            +
                                each(spans, function buildTextSpans(span) {
         
     | 
| 
       3539 
3547 
     | 
    
         
             
                                    if (span !== '' || spans.length === 1) {
         
     | 
| 
       3540 
3548 
     | 
    
         
             
                                        var attributes = {},
         
     | 
| 
       3541 
3549 
     | 
    
         
             
                                            tspan = doc.createElementNS(SVG_NS, 'tspan'),
         
     | 
| 
         @@ -3720,7 +3728,7 @@ 
     | 
|
| 
       3720 
3728 
     | 
    
         
             
                                pos += increment;
         
     | 
| 
       3721 
3729 
     | 
    
         
             
                            }
         
     | 
| 
       3722 
3730 
     | 
    
         
             
                        }
         
     | 
| 
       3723 
     | 
    
         
            -
                        console.log( 
     | 
| 
      
 3731 
     | 
    
         
            +
                        console.log('width', width, 'stringWidth', node.getSubStringLength(0, finalPos))
         
     | 
| 
       3724 
3732 
     | 
    
         
             
                    },
         
     | 
| 
       3725 
3733 
     | 
    
         
             
                    */
         
     | 
| 
       3726 
3734 
     | 
    
         | 
| 
         @@ -4157,14 +4165,14 @@ 
     | 
|
| 
       4157 
4165 
     | 
    
         | 
| 
       4158 
4166 
     | 
    
         
             
                                        // Fire the load event when all external images are loaded
         
     | 
| 
       4159 
4167 
     | 
    
         
             
                                        ren.imgCount--;
         
     | 
| 
       4160 
     | 
    
         
            -
                                        if (!ren.imgCount) {
         
     | 
| 
      
 4168 
     | 
    
         
            +
                                        if (!ren.imgCount && charts[ren.chartIndex].onload) {
         
     | 
| 
       4161 
4169 
     | 
    
         
             
                                            charts[ren.chartIndex].onload();
         
     | 
| 
       4162 
4170 
     | 
    
         
             
                                        }
         
     | 
| 
       4163 
4171 
     | 
    
         
             
                                    },
         
     | 
| 
       4164 
4172 
     | 
    
         
             
                                    src: imageSrc
         
     | 
| 
       4165 
4173 
     | 
    
         
             
                                });
         
     | 
| 
      
 4174 
     | 
    
         
            +
                                this.imgCount++;
         
     | 
| 
       4166 
4175 
     | 
    
         
             
                            }
         
     | 
| 
       4167 
     | 
    
         
            -
                            this.imgCount++;
         
     | 
| 
       4168 
4176 
     | 
    
         
             
                        }
         
     | 
| 
       4169 
4177 
     | 
    
         | 
| 
       4170 
4178 
     | 
    
         
             
                        return obj;
         
     | 
| 
         @@ -4625,7 +4633,7 @@ 
     | 
|
| 
       4625 
4633 
     | 
    
         
             
                            if (value !== alignFactor) {
         
     | 
| 
       4626 
4634 
     | 
    
         
             
                                alignFactor = value;
         
     | 
| 
       4627 
4635 
     | 
    
         
             
                                if (bBox) { // Bounding box exists, means we're dynamically changing
         
     | 
| 
       4628 
     | 
    
         
            -
                                    wrapper.attr({ x:  
     | 
| 
      
 4636 
     | 
    
         
            +
                                    wrapper.attr({ x: wrapperX }); // #5134
         
     | 
| 
       4629 
4637 
     | 
    
         
             
                                }
         
     | 
| 
       4630 
4638 
     | 
    
         
             
                            }
         
     | 
| 
       4631 
4639 
     | 
    
         
             
                        };
         
     | 
| 
         @@ -4929,6 +4937,7 @@ 
     | 
|
| 
       4929 
4937 
     | 
    
         
             
                        var wrapper = this.createElement('span'),
         
     | 
| 
       4930 
4938 
     | 
    
         
             
                            element = wrapper.element,
         
     | 
| 
       4931 
4939 
     | 
    
         
             
                            renderer = wrapper.renderer,
         
     | 
| 
      
 4940 
     | 
    
         
            +
                            isSVG = renderer.isSVG,
         
     | 
| 
       4932 
4941 
     | 
    
         
             
                            addSetters = function (element, style) {
         
     | 
| 
       4933 
4942 
     | 
    
         
             
                                // These properties are set as attributes on the SVG group, and as
         
     | 
| 
       4934 
4943 
     | 
    
         
             
                                // identical CSS properties on the div. (#3542)
         
     | 
| 
         @@ -4948,7 +4957,11 @@ 
     | 
|
| 
       4948 
4957 
     | 
    
         
             
                            element.innerHTML = this.textStr = value;
         
     | 
| 
       4949 
4958 
     | 
    
         
             
                            wrapper.htmlUpdateTransform();
         
     | 
| 
       4950 
4959 
     | 
    
         
             
                        };
         
     | 
| 
       4951 
     | 
    
         
            -
             
     | 
| 
      
 4960 
     | 
    
         
            +
             
     | 
| 
      
 4961 
     | 
    
         
            +
                        // Add setters for the element itself (#4938)
         
     | 
| 
      
 4962 
     | 
    
         
            +
                        if (isSVG) { // #4938, only for HTML within SVG
         
     | 
| 
      
 4963 
     | 
    
         
            +
                            addSetters(wrapper, wrapper.element.style);
         
     | 
| 
      
 4964 
     | 
    
         
            +
                        }
         
     | 
| 
       4952 
4965 
     | 
    
         | 
| 
       4953 
4966 
     | 
    
         
             
                        // Various setters which rely on update transform
         
     | 
| 
       4954 
4967 
     | 
    
         
             
                        wrapper.xSetter = wrapper.ySetter = wrapper.alignSetter = wrapper.rotationSetter = function (value, key) {
         
     | 
| 
         @@ -4979,7 +4992,7 @@ 
     | 
|
| 
       4979 
4992 
     | 
    
         
             
                        wrapper.css = wrapper.htmlCss;
         
     | 
| 
       4980 
4993 
     | 
    
         | 
| 
       4981 
4994 
     | 
    
         
             
                        // This is specific for HTML within SVG
         
     | 
| 
       4982 
     | 
    
         
            -
                        if ( 
     | 
| 
      
 4995 
     | 
    
         
            +
                        if (isSVG) {
         
     | 
| 
       4983 
4996 
     | 
    
         
             
                            wrapper.add = function (svgGroupWrapper) {
         
     | 
| 
       4984 
4997 
     | 
    
         | 
| 
       4985 
4998 
     | 
    
         
             
                                var htmlGroup,
         
     | 
| 
         @@ -5018,7 +5031,8 @@ 
     | 
|
| 
       5018 
5031 
     | 
    
         
             
                                            htmlGroup = parentGroup.div = parentGroup.div || createElement(DIV, cls, {
         
     | 
| 
       5019 
5032 
     | 
    
         
             
                                                position: ABSOLUTE,
         
     | 
| 
       5020 
5033 
     | 
    
         
             
                                                left: (parentGroup.translateX || 0) + PX,
         
     | 
| 
       5021 
     | 
    
         
            -
                                                top: (parentGroup.translateY || 0) + PX
         
     | 
| 
      
 5034 
     | 
    
         
            +
                                                top: (parentGroup.translateY || 0) + PX,
         
     | 
| 
      
 5035 
     | 
    
         
            +
                                                opacity: parentGroup.opacity // #5075
         
     | 
| 
       5022 
5036 
     | 
    
         
             
                                            }, htmlGroup || container); // the top group is appended to container
         
     | 
| 
       5023 
5037 
     | 
    
         | 
| 
       5024 
5038 
     | 
    
         
             
                                            // Shortcut
         
     | 
| 
         @@ -6283,7 +6297,7 @@ 
     | 
|
| 
       6283 
6297 
     | 
    
         
             
                            isFirst: isFirst,
         
     | 
| 
       6284 
6298 
     | 
    
         
             
                            isLast: isLast,
         
     | 
| 
       6285 
6299 
     | 
    
         
             
                            dateTimeLabelFormat: dateTimeLabelFormat,
         
     | 
| 
       6286 
     | 
    
         
            -
                            value: axis.isLog ? correctFloat(lin2log(value)) : value
         
     | 
| 
      
 6300 
     | 
    
         
            +
                            value: axis.isLog ? correctFloat(axis.lin2log(value)) : value
         
     | 
| 
       6287 
6301 
     | 
    
         
             
                        });
         
     | 
| 
       6288 
6302 
     | 
    
         | 
| 
       6289 
6303 
     | 
    
         
             
                        // prepare CSS
         
     | 
| 
         @@ -6338,7 +6352,8 @@ 
     | 
|
| 
       6338 
6352 
     | 
    
         
             
                            rotation = this.rotation,
         
     | 
| 
       6339 
6353 
     | 
    
         
             
                            factor = { left: 0, center: 0.5, right: 1 }[axis.labelAlign],
         
     | 
| 
       6340 
6354 
     | 
    
         
             
                            labelWidth = label.getBBox().width,
         
     | 
| 
       6341 
     | 
    
         
            -
                            slotWidth = axis. 
     | 
| 
      
 6355 
     | 
    
         
            +
                            slotWidth = axis.getSlotWidth(),
         
     | 
| 
      
 6356 
     | 
    
         
            +
                            modifiedSlotWidth = slotWidth,
         
     | 
| 
       6342 
6357 
     | 
    
         
             
                            xCorrection = factor,
         
     | 
| 
       6343 
6358 
     | 
    
         
             
                            goRight = 1,
         
     | 
| 
       6344 
6359 
     | 
    
         
             
                            leftPos,
         
     | 
| 
         @@ -6353,21 +6368,21 @@ 
     | 
|
| 
       6353 
6368 
     | 
    
         
             
                            rightPos = pxPos + (1 - factor) * labelWidth;
         
     | 
| 
       6354 
6369 
     | 
    
         | 
| 
       6355 
6370 
     | 
    
         
             
                            if (leftPos < leftBound) {
         
     | 
| 
       6356 
     | 
    
         
            -
                                 
     | 
| 
      
 6371 
     | 
    
         
            +
                                modifiedSlotWidth = xy.x + modifiedSlotWidth * (1 - factor) - leftBound;
         
     | 
| 
       6357 
6372 
     | 
    
         
             
                            } else if (rightPos > rightBound) {
         
     | 
| 
       6358 
     | 
    
         
            -
                                 
     | 
| 
      
 6373 
     | 
    
         
            +
                                modifiedSlotWidth = rightBound - xy.x + modifiedSlotWidth * factor;
         
     | 
| 
       6359 
6374 
     | 
    
         
             
                                goRight = -1;
         
     | 
| 
       6360 
6375 
     | 
    
         
             
                            }
         
     | 
| 
       6361 
6376 
     | 
    
         | 
| 
       6362 
     | 
    
         
            -
                             
     | 
| 
       6363 
     | 
    
         
            -
                            if ( 
     | 
| 
       6364 
     | 
    
         
            -
                                xy.x += goRight * ( 
     | 
| 
      
 6377 
     | 
    
         
            +
                            modifiedSlotWidth = mathMin(slotWidth, modifiedSlotWidth); // #4177
         
     | 
| 
      
 6378 
     | 
    
         
            +
                            if (modifiedSlotWidth < slotWidth && axis.labelAlign === 'center') {
         
     | 
| 
      
 6379 
     | 
    
         
            +
                                xy.x += goRight * (slotWidth - modifiedSlotWidth - xCorrection * (slotWidth - mathMin(labelWidth, modifiedSlotWidth)));
         
     | 
| 
       6365 
6380 
     | 
    
         
             
                            }
         
     | 
| 
       6366 
6381 
     | 
    
         
             
                            // If the label width exceeds the available space, set a text width to be
         
     | 
| 
       6367 
6382 
     | 
    
         
             
                            // picked up below. Also, if a width has been set before, we need to set a new
         
     | 
| 
       6368 
6383 
     | 
    
         
             
                            // one because the reported labelWidth will be limited by the box (#3938).
         
     | 
| 
       6369 
     | 
    
         
            -
                            if (labelWidth >  
     | 
| 
       6370 
     | 
    
         
            -
                                textWidth =  
     | 
| 
      
 6384 
     | 
    
         
            +
                            if (labelWidth > modifiedSlotWidth || (axis.autoRotation && label.styles.width)) {
         
     | 
| 
      
 6385 
     | 
    
         
            +
                                textWidth = modifiedSlotWidth;
         
     | 
| 
       6371 
6386 
     | 
    
         
             
                            }
         
     | 
| 
       6372 
6387 
     | 
    
         | 
| 
       6373 
6388 
     | 
    
         
             
                        // Add ellipsis to prevent rotated labels to be clipped against the edge of the chart
         
     | 
| 
         @@ -6419,10 +6434,14 @@ 
     | 
|
| 
       6419 
6434 
     | 
    
         
             
                            line;
         
     | 
| 
       6420 
6435 
     | 
    
         | 
| 
       6421 
6436 
     | 
    
         
             
                        if (!defined(yOffset)) {
         
     | 
| 
       6422 
     | 
    
         
            -
                             
     | 
| 
       6423 
     | 
    
         
            -
                                 
     | 
| 
      
 6437 
     | 
    
         
            +
                            if (axis.side === 0) {
         
     | 
| 
      
 6438 
     | 
    
         
            +
                                yOffset = label.rotation ? -8 : -label.getBBox().height;
         
     | 
| 
      
 6439 
     | 
    
         
            +
                            } else if (axis.side === 2) {
         
     | 
| 
      
 6440 
     | 
    
         
            +
                                yOffset = rotCorr.y + 8;
         
     | 
| 
      
 6441 
     | 
    
         
            +
                            } else {
         
     | 
| 
       6424 
6442 
     | 
    
         
             
                                // #3140, #3140
         
     | 
| 
       6425 
6443 
     | 
    
         
             
                                yOffset = mathCos(label.rotation * deg2rad) * (rotCorr.y - label.getBBox(false, 0).height / 2);
         
     | 
| 
      
 6444 
     | 
    
         
            +
                            }
         
     | 
| 
       6426 
6445 
     | 
    
         
             
                        }
         
     | 
| 
       6427 
6446 
     | 
    
         | 
| 
       6428 
6447 
     | 
    
         
             
                        x = x + labelOptions.x + rotCorr.x - (tickmarkOffset && horiz ?
         
     | 
| 
         @@ -6482,10 +6501,8 @@ 
     | 
|
| 
       6482 
6501 
     | 
    
         
             
                            gridLineWidth = options[gridPrefix + 'LineWidth'],
         
     | 
| 
       6483 
6502 
     | 
    
         
             
                            gridLineColor = options[gridPrefix + 'LineColor'],
         
     | 
| 
       6484 
6503 
     | 
    
         
             
                            dashStyle = options[gridPrefix + 'LineDashStyle'],
         
     | 
| 
       6485 
     | 
    
         
            -
                             
     | 
| 
       6486 
     | 
    
         
            -
                            tickWidth = pick(options[tickPrefix + 'Width'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1
         
     | 
| 
      
 6504 
     | 
    
         
            +
                            tickSize = axis.tickSize(tickPrefix),
         
     | 
| 
       6487 
6505 
     | 
    
         
             
                            tickColor = options[tickPrefix + 'Color'],
         
     | 
| 
       6488 
     | 
    
         
            -
                            tickPosition = options[tickPrefix + 'Position'],
         
     | 
| 
       6489 
6506 
     | 
    
         
             
                            gridLinePath,
         
     | 
| 
       6490 
6507 
     | 
    
         
             
                            mark = tick.mark,
         
     | 
| 
       6491 
6508 
     | 
    
         
             
                            markPath,
         
     | 
| 
         @@ -6537,17 +6554,11 @@ 
     | 
|
| 
       6537 
6554 
     | 
    
         
             
                        }
         
     | 
| 
       6538 
6555 
     | 
    
         | 
| 
       6539 
6556 
     | 
    
         
             
                        // create the tick mark
         
     | 
| 
       6540 
     | 
    
         
            -
                        if ( 
     | 
| 
       6541 
     | 
    
         
            -
             
     | 
| 
       6542 
     | 
    
         
            -
                            // negate the length
         
     | 
| 
       6543 
     | 
    
         
            -
                            if (tickPosition === 'inside') {
         
     | 
| 
       6544 
     | 
    
         
            -
                                tickLength = -tickLength;
         
     | 
| 
       6545 
     | 
    
         
            -
                            }
         
     | 
| 
      
 6557 
     | 
    
         
            +
                        if (tickSize) {
         
     | 
| 
       6546 
6558 
     | 
    
         
             
                            if (axis.opposite) {
         
     | 
| 
       6547 
     | 
    
         
            -
                                 
     | 
| 
      
 6559 
     | 
    
         
            +
                                tickSize[0] = -tickSize[0];
         
     | 
| 
       6548 
6560 
     | 
    
         
             
                            }
         
     | 
| 
       6549 
     | 
    
         
            -
             
     | 
| 
       6550 
     | 
    
         
            -
                            markPath = tick.getMarkPath(x, y, tickLength, tickWidth * reverseCrisp, horiz, renderer);
         
     | 
| 
      
 6561 
     | 
    
         
            +
                            markPath = tick.getMarkPath(x, y, tickSize[0], tickSize[1] * reverseCrisp, horiz, renderer);
         
     | 
| 
       6551 
6562 
     | 
    
         
             
                            if (mark) { // updating
         
     | 
| 
       6552 
6563 
     | 
    
         
             
                                mark.animate({
         
     | 
| 
       6553 
6564 
     | 
    
         
             
                                    d: markPath,
         
     | 
| 
         @@ -6558,7 +6569,7 @@ 
     | 
|
| 
       6558 
6569 
     | 
    
         
             
                                    markPath
         
     | 
| 
       6559 
6570 
     | 
    
         
             
                                ).attr({
         
     | 
| 
       6560 
6571 
     | 
    
         
             
                                    stroke: tickColor,
         
     | 
| 
       6561 
     | 
    
         
            -
                                    'stroke-width':  
     | 
| 
      
 6572 
     | 
    
         
            +
                                    'stroke-width': tickSize[1],
         
     | 
| 
       6562 
6573 
     | 
    
         
             
                                    opacity: opacity
         
     | 
| 
       6563 
6574 
     | 
    
         
             
                                }).add(axis.axisGroup);
         
     | 
| 
       6564 
6575 
     | 
    
         
             
                            }
         
     | 
| 
         @@ -6644,7 +6655,8 @@ 
     | 
|
| 
       6644 
6655 
     | 
    
         
             
                            zIndex = pick(options.zIndex, 0),
         
     | 
| 
       6645 
6656 
     | 
    
         
             
                            events = options.events,
         
     | 
| 
       6646 
6657 
     | 
    
         
             
                            attribs = {},
         
     | 
| 
       6647 
     | 
    
         
            -
                            renderer = axis.chart.renderer 
     | 
| 
      
 6658 
     | 
    
         
            +
                            renderer = axis.chart.renderer,
         
     | 
| 
      
 6659 
     | 
    
         
            +
                            log2lin = axis.log2lin;
         
     | 
| 
       6648 
6660 
     | 
    
         | 
| 
       6649 
6661 
     | 
    
         
             
                        // logarithmic conversion
         
     | 
| 
       6650 
6662 
     | 
    
         
             
                        if (axis.isLog) {
         
     | 
| 
         @@ -6919,8 +6931,8 @@ 
     | 
|
| 
       6919 
6931 
     | 
    
         
             
                                cursor: 'default',
         
     | 
| 
       6920 
6932 
     | 
    
         
             
                                fontSize: '11px'
         
     | 
| 
       6921 
6933 
     | 
    
         
             
                            },
         
     | 
| 
       6922 
     | 
    
         
            -
                            x: 0 
     | 
| 
       6923 
     | 
    
         
            -
                            y:  
     | 
| 
      
 6934 
     | 
    
         
            +
                            x: 0
         
     | 
| 
      
 6935 
     | 
    
         
            +
                            //y: undefined
         
     | 
| 
       6924 
6936 
     | 
    
         
             
                            /*formatter: function () {
         
     | 
| 
       6925 
6937 
     | 
    
         
             
                                return this.value;
         
     | 
| 
       6926 
6938 
     | 
    
         
             
                            },*/
         
     | 
| 
         @@ -6991,8 +7003,7 @@ 
     | 
|
| 
       6991 
7003 
     | 
    
         
             
                        tickPixelInterval: 72,
         
     | 
| 
       6992 
7004 
     | 
    
         
             
                        showLastLabel: true,
         
     | 
| 
       6993 
7005 
     | 
    
         
             
                        labels: {
         
     | 
| 
       6994 
     | 
    
         
            -
                            x: -8 
     | 
| 
       6995 
     | 
    
         
            -
                            y: 3
         
     | 
| 
      
 7006 
     | 
    
         
            +
                            x: -8
         
     | 
| 
       6996 
7007 
     | 
    
         
             
                        },
         
     | 
| 
       6997 
7008 
     | 
    
         
             
                        lineWidth: 0,
         
     | 
| 
       6998 
7009 
     | 
    
         
             
                        maxPadding: 0.05,
         
     | 
| 
         @@ -7023,8 +7034,7 @@ 
     | 
|
| 
       7023 
7034 
     | 
    
         
             
                     */
         
     | 
| 
       7024 
7035 
     | 
    
         
             
                    defaultLeftAxisOptions: {
         
     | 
| 
       7025 
7036 
     | 
    
         
             
                        labels: {
         
     | 
| 
       7026 
     | 
    
         
            -
                            x: -15 
     | 
| 
       7027 
     | 
    
         
            -
                            y: null
         
     | 
| 
      
 7037 
     | 
    
         
            +
                            x: -15
         
     | 
| 
       7028 
7038 
     | 
    
         
             
                        },
         
     | 
| 
       7029 
7039 
     | 
    
         
             
                        title: {
         
     | 
| 
       7030 
7040 
     | 
    
         
             
                            rotation: 270
         
     | 
| 
         @@ -7036,8 +7046,7 @@ 
     | 
|
| 
       7036 
7046 
     | 
    
         
             
                     */
         
     | 
| 
       7037 
7047 
     | 
    
         
             
                    defaultRightAxisOptions: {
         
     | 
| 
       7038 
7048 
     | 
    
         
             
                        labels: {
         
     | 
| 
       7039 
     | 
    
         
            -
                            x: 15 
     | 
| 
       7040 
     | 
    
         
            -
                            y: null
         
     | 
| 
      
 7049 
     | 
    
         
            +
                            x: 15
         
     | 
| 
       7041 
7050 
     | 
    
         
             
                        },
         
     | 
| 
       7042 
7051 
     | 
    
         
             
                        title: {
         
     | 
| 
       7043 
7052 
     | 
    
         
             
                            rotation: 90
         
     | 
| 
         @@ -7050,8 +7059,7 @@ 
     | 
|
| 
       7050 
7059 
     | 
    
         
             
                    defaultBottomAxisOptions: {
         
     | 
| 
       7051 
7060 
     | 
    
         
             
                        labels: {
         
     | 
| 
       7052 
7061 
     | 
    
         
             
                            autoRotation: [-45],
         
     | 
| 
       7053 
     | 
    
         
            -
                            x: 0 
     | 
| 
       7054 
     | 
    
         
            -
                            y: null // based on font size
         
     | 
| 
      
 7062 
     | 
    
         
            +
                            x: 0
         
     | 
| 
       7055 
7063 
     | 
    
         
             
                            // overflow: undefined,
         
     | 
| 
       7056 
7064 
     | 
    
         
             
                            // staggerLines: null
         
     | 
| 
       7057 
7065 
     | 
    
         
             
                        },
         
     | 
| 
         @@ -7065,8 +7073,7 @@ 
     | 
|
| 
       7065 
7073 
     | 
    
         
             
                    defaultTopAxisOptions: {
         
     | 
| 
       7066 
7074 
     | 
    
         
             
                        labels: {
         
     | 
| 
       7067 
7075 
     | 
    
         
             
                            autoRotation: [-45],
         
     | 
| 
       7068 
     | 
    
         
            -
                            x: 0 
     | 
| 
       7069 
     | 
    
         
            -
                            y: -15
         
     | 
| 
      
 7076 
     | 
    
         
            +
                            x: 0
         
     | 
| 
       7070 
7077 
     | 
    
         
             
                            // overflow: undefined
         
     | 
| 
       7071 
7078 
     | 
    
         
             
                            // staggerLines: null
         
     | 
| 
       7072 
7079 
     | 
    
         
             
                        },
         
     | 
| 
         @@ -7230,8 +7237,8 @@ 
     | 
|
| 
       7230 
7237 
     | 
    
         | 
| 
       7231 
7238 
     | 
    
         
             
                        // extend logarithmic axis
         
     | 
| 
       7232 
7239 
     | 
    
         
             
                        if (axis.isLog) {
         
     | 
| 
       7233 
     | 
    
         
            -
                            axis.val2lin = log2lin;
         
     | 
| 
       7234 
     | 
    
         
            -
                            axis.lin2val = lin2log;
         
     | 
| 
      
 7240 
     | 
    
         
            +
                            axis.val2lin = axis.log2lin;
         
     | 
| 
      
 7241 
     | 
    
         
            +
                            axis.lin2val = axis.lin2log;
         
     | 
| 
       7235 
7242 
     | 
    
         
             
                        }
         
     | 
| 
       7236 
7243 
     | 
    
         
             
                    },
         
     | 
| 
       7237 
7244 
     | 
    
         | 
| 
         @@ -7670,6 +7677,22 @@ 
     | 
|
| 
       7670 
7677 
     | 
    
         
             
                        axis.max = max;
         
     | 
| 
       7671 
7678 
     | 
    
         
             
                    },
         
     | 
| 
       7672 
7679 
     | 
    
         | 
| 
      
 7680 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 7681 
     | 
    
         
            +
                     * Find the closestPointRange across all series
         
     | 
| 
      
 7682 
     | 
    
         
            +
                     */
         
     | 
| 
      
 7683 
     | 
    
         
            +
                    getClosest: function () {
         
     | 
| 
      
 7684 
     | 
    
         
            +
                        var ret;
         
     | 
| 
      
 7685 
     | 
    
         
            +
                        each(this.series, function (series) {
         
     | 
| 
      
 7686 
     | 
    
         
            +
                            var seriesClosest = series.closestPointRange;
         
     | 
| 
      
 7687 
     | 
    
         
            +
                            if (!series.noSharedTooltip && defined(seriesClosest)) {
         
     | 
| 
      
 7688 
     | 
    
         
            +
                                ret = defined(ret) ?
         
     | 
| 
      
 7689 
     | 
    
         
            +
                                    mathMin(ret, seriesClosest) :
         
     | 
| 
      
 7690 
     | 
    
         
            +
                                    seriesClosest;
         
     | 
| 
      
 7691 
     | 
    
         
            +
                            }
         
     | 
| 
      
 7692 
     | 
    
         
            +
                        });
         
     | 
| 
      
 7693 
     | 
    
         
            +
                        return ret;
         
     | 
| 
      
 7694 
     | 
    
         
            +
                    },
         
     | 
| 
      
 7695 
     | 
    
         
            +
             
     | 
| 
       7673 
7696 
     | 
    
         
             
                    /**
         
     | 
| 
       7674 
7697 
     | 
    
         
             
                     * Update translation information
         
     | 
| 
       7675 
7698 
     | 
    
         
             
                     */
         
     | 
| 
         @@ -7693,15 +7716,9 @@ 
     | 
|
| 
       7693 
7716 
     | 
    
         
             
                                pointRangePadding = linkedParent.pointRangePadding;
         
     | 
| 
       7694 
7717 
     | 
    
         | 
| 
       7695 
7718 
     | 
    
         
             
                            } else {
         
     | 
| 
       7696 
     | 
    
         
            -
             
     | 
| 
       7697 
     | 
    
         
            -
                                 
     | 
| 
       7698 
     | 
    
         
            -
             
     | 
| 
       7699 
     | 
    
         
            -
                                    if (!series.noSharedTooltip && defined(seriesClosest)) {
         
     | 
| 
       7700 
     | 
    
         
            -
                                        closestPointRange = defined(closestPointRange) ?
         
     | 
| 
       7701 
     | 
    
         
            -
                                            mathMin(closestPointRange, seriesClosest) :
         
     | 
| 
       7702 
     | 
    
         
            -
                                            seriesClosest;
         
     | 
| 
       7703 
     | 
    
         
            -
                                    }
         
     | 
| 
       7704 
     | 
    
         
            -
                                });
         
     | 
| 
      
 7719 
     | 
    
         
            +
                            
         
     | 
| 
      
 7720 
     | 
    
         
            +
                                // Get the closest points
         
     | 
| 
      
 7721 
     | 
    
         
            +
                                closestPointRange = axis.getClosest();
         
     | 
| 
       7705 
7722 
     | 
    
         | 
| 
       7706 
7723 
     | 
    
         
             
                                each(axis.series, function (series) {
         
     | 
| 
       7707 
7724 
     | 
    
         
             
                                    var seriesPointRange = hasCategories ? 
         
     | 
| 
         @@ -7770,6 +7787,7 @@ 
     | 
|
| 
       7770 
7787 
     | 
    
         
             
                            chart = axis.chart,
         
     | 
| 
       7771 
7788 
     | 
    
         
             
                            options = axis.options,
         
     | 
| 
       7772 
7789 
     | 
    
         
             
                            isLog = axis.isLog,
         
     | 
| 
      
 7790 
     | 
    
         
            +
                            log2lin = axis.log2lin,
         
     | 
| 
       7773 
7791 
     | 
    
         
             
                            isDatetimeAxis = axis.isDatetimeAxis,
         
     | 
| 
       7774 
7792 
     | 
    
         
             
                            isXAxis = axis.isXAxis,
         
     | 
| 
       7775 
7793 
     | 
    
         
             
                            isLinked = axis.isLinked,
         
     | 
| 
         @@ -8345,7 +8363,8 @@ 
     | 
|
| 
       8345 
8363 
     | 
    
         
             
                     */
         
     | 
| 
       8346 
8364 
     | 
    
         
             
                    getExtremes: function () {
         
     | 
| 
       8347 
8365 
     | 
    
         
             
                        var axis = this,
         
     | 
| 
       8348 
     | 
    
         
            -
                            isLog = axis.isLog 
     | 
| 
      
 8366 
     | 
    
         
            +
                            isLog = axis.isLog,
         
     | 
| 
      
 8367 
     | 
    
         
            +
                            lin2log = axis.lin2log;
         
     | 
| 
       8349 
8368 
     | 
    
         | 
| 
       8350 
8369 
     | 
    
         
             
                        return {
         
     | 
| 
       8351 
8370 
     | 
    
         
             
                            min: isLog ? correctFloat(lin2log(axis.min)) : axis.min,
         
     | 
| 
         @@ -8364,6 +8383,7 @@ 
     | 
|
| 
       8364 
8383 
     | 
    
         
             
                    getThreshold: function (threshold) {
         
     | 
| 
       8365 
8384 
     | 
    
         
             
                        var axis = this,
         
     | 
| 
       8366 
8385 
     | 
    
         
             
                            isLog = axis.isLog,
         
     | 
| 
      
 8386 
     | 
    
         
            +
                            lin2log = axis.lin2log,
         
     | 
| 
       8367 
8387 
     | 
    
         
             
                            realMin = isLog ? lin2log(axis.min) : axis.min,
         
     | 
| 
       8368 
8388 
     | 
    
         
             
                            realMax = isLog ? lin2log(axis.max) : axis.max;
         
     | 
| 
       8369 
8389 
     | 
    
         | 
| 
         @@ -8398,22 +8418,50 @@ 
     | 
|
| 
       8398 
8418 
     | 
    
         
             
                        return ret;
         
     | 
| 
       8399 
8419 
     | 
    
         
             
                    },
         
     | 
| 
       8400 
8420 
     | 
    
         | 
| 
      
 8421 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 8422 
     | 
    
         
            +
                     * Get the tick length and width for the axis.
         
     | 
| 
      
 8423 
     | 
    
         
            +
                     * @param   {String} prefix 'tick' or 'minorTick'
         
     | 
| 
      
 8424 
     | 
    
         
            +
                     * @returns {Array}        An array of tickLength and tickWidth
         
     | 
| 
      
 8425 
     | 
    
         
            +
                     */
         
     | 
| 
      
 8426 
     | 
    
         
            +
                    tickSize: function (prefix) {
         
     | 
| 
      
 8427 
     | 
    
         
            +
                        var options = this.options,
         
     | 
| 
      
 8428 
     | 
    
         
            +
                            tickLength = options[prefix + 'Length'],
         
     | 
| 
      
 8429 
     | 
    
         
            +
                            tickWidth = pick(options[prefix + 'Width'], prefix === 'tick' && this.isXAxis ? 1 : 0); // X axis defaults to 1
         
     | 
| 
      
 8430 
     | 
    
         
            +
             
     | 
| 
      
 8431 
     | 
    
         
            +
                        if (tickWidth && tickLength) {
         
     | 
| 
      
 8432 
     | 
    
         
            +
                            // Negate the length
         
     | 
| 
      
 8433 
     | 
    
         
            +
                            if (options[prefix + 'Position'] === 'inside') {
         
     | 
| 
      
 8434 
     | 
    
         
            +
                                tickLength = -tickLength;
         
     | 
| 
      
 8435 
     | 
    
         
            +
                            }
         
     | 
| 
      
 8436 
     | 
    
         
            +
                            return [tickLength, tickWidth];
         
     | 
| 
      
 8437 
     | 
    
         
            +
                        }
         
     | 
| 
      
 8438 
     | 
    
         
            +
                        
         
     | 
| 
      
 8439 
     | 
    
         
            +
                    },
         
     | 
| 
      
 8440 
     | 
    
         
            +
             
     | 
| 
      
 8441 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 8442 
     | 
    
         
            +
                     * Return the size of the labels
         
     | 
| 
      
 8443 
     | 
    
         
            +
                     */
         
     | 
| 
      
 8444 
     | 
    
         
            +
                    labelMetrics: function () {
         
     | 
| 
      
 8445 
     | 
    
         
            +
                        return this.chart.renderer.fontMetrics(
         
     | 
| 
      
 8446 
     | 
    
         
            +
                            this.options.labels.style.fontSize, 
         
     | 
| 
      
 8447 
     | 
    
         
            +
                            this.ticks[0] && this.ticks[0].label
         
     | 
| 
      
 8448 
     | 
    
         
            +
                        );
         
     | 
| 
      
 8449 
     | 
    
         
            +
                    },
         
     | 
| 
      
 8450 
     | 
    
         
            +
             
     | 
| 
       8401 
8451 
     | 
    
         
             
                    /**
         
     | 
| 
       8402 
8452 
     | 
    
         
             
                     * Prevent the ticks from getting so close we can't draw the labels. On a horizontal
         
     | 
| 
       8403 
8453 
     | 
    
         
             
                     * axis, this is handled by rotating the labels, removing ticks and adding ellipsis.
         
     | 
| 
       8404 
8454 
     | 
    
         
             
                     * On a vertical axis remove ticks and add ellipsis.
         
     | 
| 
       8405 
8455 
     | 
    
         
             
                     */
         
     | 
| 
       8406 
8456 
     | 
    
         
             
                    unsquish: function () {
         
     | 
| 
       8407 
     | 
    
         
            -
                        var  
     | 
| 
       8408 
     | 
    
         
            -
                            ticks = this.ticks,
         
     | 
| 
       8409 
     | 
    
         
            -
                            labelOptions = this.options.labels,
         
     | 
| 
      
 8457 
     | 
    
         
            +
                        var labelOptions = this.options.labels,
         
     | 
| 
       8410 
8458 
     | 
    
         
             
                            horiz = this.horiz,
         
     | 
| 
       8411 
8459 
     | 
    
         
             
                            tickInterval = this.tickInterval,
         
     | 
| 
       8412 
8460 
     | 
    
         
             
                            newTickInterval = tickInterval,
         
     | 
| 
       8413 
8461 
     | 
    
         
             
                            slotSize = this.len / (((this.categories ? 1 : 0) + this.max - this.min) / tickInterval),
         
     | 
| 
       8414 
8462 
     | 
    
         
             
                            rotation,
         
     | 
| 
       8415 
8463 
     | 
    
         
             
                            rotationOption = labelOptions.rotation,
         
     | 
| 
       8416 
     | 
    
         
            -
                            labelMetrics =  
     | 
| 
      
 8464 
     | 
    
         
            +
                            labelMetrics = this.labelMetrics(),
         
     | 
| 
       8417 
8465 
     | 
    
         
             
                            step,
         
     | 
| 
       8418 
8466 
     | 
    
         
             
                            bestScore = Number.MAX_VALUE,
         
     | 
| 
       8419 
8467 
     | 
    
         
             
                            autoRotation,
         
     | 
| 
         @@ -8463,6 +8511,26 @@ 
     | 
|
| 
       8463 
8511 
     | 
    
         
             
                        return newTickInterval;
         
     | 
| 
       8464 
8512 
     | 
    
         
             
                    },
         
     | 
| 
       8465 
8513 
     | 
    
         | 
| 
      
 8514 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 8515 
     | 
    
         
            +
                     * Get the general slot width for this axis. This may change between the pre-render (from Axis.getOffset) 
         
     | 
| 
      
 8516 
     | 
    
         
            +
                     * and the final tick rendering and placement (#5086).
         
     | 
| 
      
 8517 
     | 
    
         
            +
                     */
         
     | 
| 
      
 8518 
     | 
    
         
            +
                    getSlotWidth: function () {
         
     | 
| 
      
 8519 
     | 
    
         
            +
                        var chart = this.chart,
         
     | 
| 
      
 8520 
     | 
    
         
            +
                            horiz = this.horiz,
         
     | 
| 
      
 8521 
     | 
    
         
            +
                            labelOptions = this.options.labels,
         
     | 
| 
      
 8522 
     | 
    
         
            +
                            slotCount = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1),
         
     | 
| 
      
 8523 
     | 
    
         
            +
                            marginLeft = chart.margin[3];
         
     | 
| 
      
 8524 
     | 
    
         
            +
             
     | 
| 
      
 8525 
     | 
    
         
            +
                        return (horiz && (labelOptions.step || 0) < 2 && !labelOptions.rotation && // #4415
         
     | 
| 
      
 8526 
     | 
    
         
            +
                            ((this.staggerLines || 1) * chart.plotWidth) / slotCount) ||
         
     | 
| 
      
 8527 
     | 
    
         
            +
                            (!horiz && ((marginLeft && (marginLeft - chart.spacing[3])) || chart.chartWidth * 0.33)); // #1580, #1931
         
     | 
| 
      
 8528 
     | 
    
         
            +
             
     | 
| 
      
 8529 
     | 
    
         
            +
                    },
         
     | 
| 
      
 8530 
     | 
    
         
            +
             
     | 
| 
      
 8531 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 8532 
     | 
    
         
            +
                     * Render the axis labels and determine whether ellipsis or rotation need to be applied
         
     | 
| 
      
 8533 
     | 
    
         
            +
                     */
         
     | 
| 
       8466 
8534 
     | 
    
         
             
                    renderUnsquish: function () {
         
     | 
| 
       8467 
8535 
     | 
    
         
             
                        var chart = this.chart,
         
     | 
| 
       8468 
8536 
     | 
    
         
             
                            renderer = chart.renderer,
         
     | 
| 
         @@ -8470,14 +8538,10 @@ 
     | 
|
| 
       8470 
8538 
     | 
    
         
             
                            ticks = this.ticks,
         
     | 
| 
       8471 
8539 
     | 
    
         
             
                            labelOptions = this.options.labels,
         
     | 
| 
       8472 
8540 
     | 
    
         
             
                            horiz = this.horiz,
         
     | 
| 
       8473 
     | 
    
         
            -
                             
     | 
| 
       8474 
     | 
    
         
            -
                            slotCount = this.categories ? tickPositions.length : tickPositions.length - 1,
         
     | 
| 
       8475 
     | 
    
         
            -
                            slotWidth = this.slotWidth = (horiz && (labelOptions.step || 0) < 2 && !labelOptions.rotation && // #4415
         
     | 
| 
       8476 
     | 
    
         
            -
                                ((this.staggerLines || 1) * chart.plotWidth) / slotCount) ||
         
     | 
| 
       8477 
     | 
    
         
            -
                                (!horiz && ((margin[3] && (margin[3] - chart.spacing[3])) || chart.chartWidth * 0.33)), // #1580, #1931,
         
     | 
| 
      
 8541 
     | 
    
         
            +
                            slotWidth = this.getSlotWidth(),
         
     | 
| 
       8478 
8542 
     | 
    
         
             
                            innerWidth = mathMax(1, mathRound(slotWidth - 2 * (labelOptions.padding || 5))),
         
     | 
| 
       8479 
8543 
     | 
    
         
             
                            attr = {},
         
     | 
| 
       8480 
     | 
    
         
            -
                            labelMetrics =  
     | 
| 
      
 8544 
     | 
    
         
            +
                            labelMetrics = this.labelMetrics(),
         
     | 
| 
       8481 
8545 
     | 
    
         
             
                            textOverflowOption = labelOptions.style.textOverflow,
         
     | 
| 
       8482 
8546 
     | 
    
         
             
                            css,
         
     | 
| 
       8483 
8547 
     | 
    
         
             
                            labelLength = 0,
         
     | 
| 
         @@ -8526,9 +8590,13 @@ 
     | 
|
| 
       8526 
8590 
     | 
    
         
             
                                        // Reset ellipsis in order to get the correct bounding box (#4070)
         
     | 
| 
       8527 
8591 
     | 
    
         
             
                                        if (label.styles.textOverflow === 'ellipsis') {
         
     | 
| 
       8528 
8592 
     | 
    
         
             
                                            label.css({ textOverflow: 'clip' });
         
     | 
| 
      
 8593 
     | 
    
         
            +
             
     | 
| 
      
 8594 
     | 
    
         
            +
                                        // Set the correct width in order to read the bounding box height (#4678, #5034)
         
     | 
| 
      
 8595 
     | 
    
         
            +
                                        } else if (ticks[pos].labelLength > slotWidth) {
         
     | 
| 
      
 8596 
     | 
    
         
            +
                                            label.css({ width: slotWidth + 'px' });
         
     | 
| 
       8529 
8597 
     | 
    
         
             
                                        }
         
     | 
| 
       8530 
     | 
    
         
            -
             
     | 
| 
       8531 
     | 
    
         
            -
             
     | 
| 
      
 8598 
     | 
    
         
            +
             
     | 
| 
      
 8599 
     | 
    
         
            +
                                        if (label.getBBox().height > this.len / tickPositions.length - (labelMetrics.h - labelMetrics.f)) {
         
     | 
| 
       8532 
8600 
     | 
    
         
             
                                            label.specCss = { textOverflow: 'ellipsis' };
         
     | 
| 
       8533 
8601 
     | 
    
         
             
                                        }
         
     | 
| 
       8534 
8602 
     | 
    
         
             
                                    }
         
     | 
| 
         @@ -8607,7 +8675,8 @@ 
     | 
|
| 
       8607 
8675 
     | 
    
         
             
                            directionFactor = [-1, 1, 1, -1][side],
         
     | 
| 
       8608 
8676 
     | 
    
         
             
                            n,
         
     | 
| 
       8609 
8677 
     | 
    
         
             
                            axisParent = axis.axisParent, // Used in color axis
         
     | 
| 
       8610 
     | 
    
         
            -
                            lineHeightCorrection 
     | 
| 
      
 8678 
     | 
    
         
            +
                            lineHeightCorrection,
         
     | 
| 
      
 8679 
     | 
    
         
            +
                            tickSize = this.tickSize('tick');
         
     | 
| 
       8611 
8680 
     | 
    
         | 
| 
       8612 
8681 
     | 
    
         
             
                        // For reuse in Axis.render
         
     | 
| 
       8613 
8682 
     | 
    
         
             
                        hasData = axis.hasData();
         
     | 
| 
         @@ -8682,8 +8751,7 @@ 
     | 
|
| 
       8682 
8751 
     | 
    
         
             
                                    zIndex: 7,
         
     | 
| 
       8683 
8752 
     | 
    
         
             
                                    rotation: axisTitleOptions.rotation || 0,
         
     | 
| 
       8684 
8753 
     | 
    
         
             
                                    align: 
         
     | 
| 
       8685 
     | 
    
         
            -
                                        axisTitleOptions.textAlign ||
         
     | 
| 
       8686 
     | 
    
         
            -
                                        { 
         
     | 
| 
      
 8754 
     | 
    
         
            +
                                        axisTitleOptions.textAlign || { 
         
     | 
| 
       8687 
8755 
     | 
    
         
             
                                            low: opposite ? 'right' : 'left',
         
     | 
| 
       8688 
8756 
     | 
    
         
             
                                            middle: 'center',
         
     | 
| 
       8689 
8757 
     | 
    
         
             
                                            high: opposite ? 'left' : 'right'
         
     | 
| 
         @@ -8709,15 +8777,27 @@ 
     | 
|
| 
       8709 
8777 
     | 
    
         
             
                        axis.offset = directionFactor * pick(options.offset, axisOffset[side]);
         
     | 
| 
       8710 
8778 
     | 
    
         | 
| 
       8711 
8779 
     | 
    
         
             
                        axis.tickRotCorr = axis.tickRotCorr || { x: 0, y: 0 }; // polar
         
     | 
| 
       8712 
     | 
    
         
            -
                         
     | 
| 
       8713 
     | 
    
         
            -
             
     | 
| 
       8714 
     | 
    
         
            -
             
     | 
| 
      
 8780 
     | 
    
         
            +
                        if (side === 0) {
         
     | 
| 
      
 8781 
     | 
    
         
            +
                            lineHeightCorrection = -axis.labelMetrics().h;
         
     | 
| 
      
 8782 
     | 
    
         
            +
                        } else if (side === 2) {
         
     | 
| 
      
 8783 
     | 
    
         
            +
                            lineHeightCorrection = axis.tickRotCorr.y;
         
     | 
| 
      
 8784 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 8785 
     | 
    
         
            +
                            lineHeightCorrection = 0;
         
     | 
| 
      
 8786 
     | 
    
         
            +
                        }
         
     | 
| 
      
 8787 
     | 
    
         
            +
             
     | 
| 
      
 8788 
     | 
    
         
            +
                        // Find the padded label offset
         
     | 
| 
      
 8789 
     | 
    
         
            +
                        labelOffsetPadded = Math.abs(labelOffset) + titleMargin;
         
     | 
| 
      
 8790 
     | 
    
         
            +
                        if (labelOffset) {
         
     | 
| 
      
 8791 
     | 
    
         
            +
                            labelOffsetPadded -= lineHeightCorrection;
         
     | 
| 
      
 8792 
     | 
    
         
            +
                            labelOffsetPadded += directionFactor * (horiz ? pick(labelOptions.y, axis.tickRotCorr.y + directionFactor * 8) : labelOptions.x);
         
     | 
| 
      
 8793 
     | 
    
         
            +
                        }
         
     | 
| 
       8715 
8794 
     | 
    
         
             
                        axis.axisTitleMargin = pick(titleOffsetOption, labelOffsetPadded);
         
     | 
| 
       8716 
8795 
     | 
    
         | 
| 
       8717 
8796 
     | 
    
         
             
                        axisOffset[side] = mathMax(
         
     | 
| 
       8718 
8797 
     | 
    
         
             
                            axisOffset[side],
         
     | 
| 
       8719 
8798 
     | 
    
         
             
                            axis.axisTitleMargin + titleOffset + directionFactor * axis.offset,
         
     | 
| 
       8720 
     | 
    
         
            -
                            labelOffsetPadded // #3027
         
     | 
| 
      
 8799 
     | 
    
         
            +
                            labelOffsetPadded, // #3027
         
     | 
| 
      
 8800 
     | 
    
         
            +
                            hasData && tickPositions.length && tickSize ? tickSize[0] : 0 // #4866
         
     | 
| 
       8721 
8801 
     | 
    
         
             
                        );
         
     | 
| 
       8722 
8802 
     | 
    
         | 
| 
       8723 
8803 
     | 
    
         
             
                        // Decide the clipping needed to keep the graph inside the plot area and axis lines
         
     | 
| 
         @@ -8809,6 +8889,7 @@ 
     | 
|
| 
       8809 
8889 
     | 
    
         
             
                            renderer = chart.renderer,
         
     | 
| 
       8810 
8890 
     | 
    
         
             
                            options = axis.options,
         
     | 
| 
       8811 
8891 
     | 
    
         
             
                            isLog = axis.isLog,
         
     | 
| 
      
 8892 
     | 
    
         
            +
                            lin2log = axis.lin2log,
         
     | 
| 
       8812 
8893 
     | 
    
         
             
                            isLinked = axis.isLinked,
         
     | 
| 
       8813 
8894 
     | 
    
         
             
                            tickPositions = axis.tickPositions,
         
     | 
| 
       8814 
8895 
     | 
    
         
             
                            axisTitle = axis.axisTitle,
         
     | 
| 
         @@ -8823,7 +8904,7 @@ 
     | 
|
| 
       8823 
8904 
     | 
    
         
             
                            hasRendered = chart.hasRendered,
         
     | 
| 
       8824 
8905 
     | 
    
         
             
                            slideInTicks = hasRendered && defined(axis.oldMin) && !isNaN(axis.oldMin),
         
     | 
| 
       8825 
8906 
     | 
    
         
             
                            showAxis = axis.showAxis,
         
     | 
| 
       8826 
     | 
    
         
            -
                             
     | 
| 
      
 8907 
     | 
    
         
            +
                            animation = animObject(renderer.globalAnimation),
         
     | 
| 
       8827 
8908 
     | 
    
         
             
                            from,
         
     | 
| 
       8828 
8909 
     | 
    
         
             
                            to;
         
     | 
| 
       8829 
8910 
     | 
    
         | 
| 
         @@ -8926,7 +9007,7 @@ 
     | 
|
| 
       8926 
9007 
     | 
    
         
             
                            var pos,
         
     | 
| 
       8927 
9008 
     | 
    
         
             
                                i,
         
     | 
| 
       8928 
9009 
     | 
    
         
             
                                forDestruction = [],
         
     | 
| 
       8929 
     | 
    
         
            -
                                delay =  
     | 
| 
      
 9010 
     | 
    
         
            +
                                delay = animation.duration,
         
     | 
| 
       8930 
9011 
     | 
    
         
             
                                destroyInactiveItems = function () {
         
     | 
| 
       8931 
9012 
     | 
    
         
             
                                    i = forDestruction.length;
         
     | 
| 
       8932 
9013 
     | 
    
         
             
                                    while (i--) {
         
     | 
| 
         @@ -9358,6 +9439,8 @@ 
     | 
|
| 
       9358 
9439 
     | 
    
         
             
                    var axis = this,
         
     | 
| 
       9359 
9440 
     | 
    
         
             
                        options = axis.options,
         
     | 
| 
       9360 
9441 
     | 
    
         
             
                        axisLength = axis.len,
         
     | 
| 
      
 9442 
     | 
    
         
            +
                        lin2log = axis.lin2log,
         
     | 
| 
      
 9443 
     | 
    
         
            +
                        log2lin = axis.log2lin,
         
     | 
| 
       9361 
9444 
     | 
    
         
             
                        // Since we use this method for both major and minor ticks,
         
     | 
| 
       9362 
9445 
     | 
    
         
             
                        // use a local variable and return the result
         
     | 
| 
       9363 
9446 
     | 
    
         
             
                        positions = [];
         
     | 
| 
         @@ -9446,7 +9529,16 @@ 
     | 
|
| 
       9446 
9529 
     | 
    
         
             
                        axis.tickInterval = interval;
         
     | 
| 
       9447 
9530 
     | 
    
         
             
                    }
         
     | 
| 
       9448 
9531 
     | 
    
         
             
                    return positions;
         
     | 
| 
       9449 
     | 
    
         
            -
                } 
     | 
| 
      
 9532 
     | 
    
         
            +
                };
         
     | 
| 
      
 9533 
     | 
    
         
            +
             
     | 
| 
      
 9534 
     | 
    
         
            +
                Axis.prototype.log2lin = function (num) {
         
     | 
| 
      
 9535 
     | 
    
         
            +
                    return math.log(num) / math.LN10;
         
     | 
| 
      
 9536 
     | 
    
         
            +
                };
         
     | 
| 
      
 9537 
     | 
    
         
            +
             
     | 
| 
      
 9538 
     | 
    
         
            +
                Axis.prototype.lin2log = function (num) {
         
     | 
| 
      
 9539 
     | 
    
         
            +
                    return math.pow(10, num);
         
     | 
| 
      
 9540 
     | 
    
         
            +
                };
         
     | 
| 
      
 9541 
     | 
    
         
            +
                /**
         
     | 
| 
       9450 
9542 
     | 
    
         
             
                 * The tooltip object
         
     | 
| 
       9451 
9543 
     | 
    
         
             
                 * @param {Object} chart The chart instance
         
     | 
| 
       9452 
9544 
     | 
    
         
             
                 * @param {Object} options Tooltip options
         
     | 
| 
         @@ -9643,7 +9735,7 @@ 
     | 
|
| 
       9643 
9735 
     | 
    
         
             
                            first = ['y', chart.chartHeight, boxHeight, point.plotY + chart.plotTop, chart.plotTop, chart.plotTop + chart.plotHeight],
         
     | 
| 
       9644 
9736 
     | 
    
         
             
                            second = ['x', chart.chartWidth, boxWidth, point.plotX + chart.plotLeft, chart.plotLeft, chart.plotLeft + chart.plotWidth],
         
     | 
| 
       9645 
9737 
     | 
    
         
             
                            // The far side is right or bottom
         
     | 
| 
       9646 
     | 
    
         
            -
                            preferFarSide = pick(point.ttBelow,  
     | 
| 
      
 9738 
     | 
    
         
            +
                            preferFarSide = !this.followPointer && pick(point.ttBelow, !chart.inverted === !!point.negative), // #4984
         
     | 
| 
       9647 
9739 
     | 
    
         
             
                            /**
         
     | 
| 
       9648 
9740 
     | 
    
         
             
                             * Handle the preferred dimension. When the preferred dimension is tooltip
         
     | 
| 
       9649 
9741 
     | 
    
         
             
                             * on top or bottom of the point, it will look for space there.
         
     | 
| 
         @@ -10141,9 +10233,17 @@ 
     | 
|
| 
       10141 
10233 
     | 
    
         
             
                                if (p) {
         
     | 
| 
       10142 
10234 
     | 
    
         
             
                                    // Store both closest points, using point.dist and point.distX comparisons (#4645):
         
     | 
| 
       10143 
10235 
     | 
    
         
             
                                    each(['dist', 'distX'], function (dist, k) {
         
     | 
| 
       10144 
     | 
    
         
            -
                                        if (typeof p[dist] === 'number' 
     | 
| 
       10145 
     | 
    
         
            -
                                             
     | 
| 
       10146 
     | 
    
         
            -
             
     | 
| 
      
 10236 
     | 
    
         
            +
                                        if (typeof p[dist] === 'number') {
         
     | 
| 
      
 10237 
     | 
    
         
            +
                                            var
         
     | 
| 
      
 10238 
     | 
    
         
            +
                                                // It is closer than the reference point
         
     | 
| 
      
 10239 
     | 
    
         
            +
                                                isCloser = p[dist] < distance[k],
         
     | 
| 
      
 10240 
     | 
    
         
            +
                                                // It is equally close, but above the reference point (#4679)
         
     | 
| 
      
 10241 
     | 
    
         
            +
                                                isAbove = p[dist] === distance[k] && p.series.group.zIndex >= kdpoint[k].series.group.zIndex;
         
     | 
| 
      
 10242 
     | 
    
         
            +
             
     | 
| 
      
 10243 
     | 
    
         
            +
                                            if (isCloser || isAbove) {
         
     | 
| 
      
 10244 
     | 
    
         
            +
                                                distance[k] = p[dist];
         
     | 
| 
      
 10245 
     | 
    
         
            +
                                                kdpoint[k] = p;
         
     | 
| 
      
 10246 
     | 
    
         
            +
                                            }
         
     | 
| 
       10147 
10247 
     | 
    
         
             
                                        }
         
     | 
| 
       10148 
10248 
     | 
    
         
             
                                    });
         
     | 
| 
       10149 
10249 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -10202,22 +10302,18 @@ 
     | 
|
| 
       10202 
10302 
     | 
    
         
             
                            addEvent(doc, 'mousemove', pointer._onDocumentMouseMove);
         
     | 
| 
       10203 
10303 
     | 
    
         
             
                        }
         
     | 
| 
       10204 
10304 
     | 
    
         | 
| 
       10205 
     | 
    
         
            -
                        // Crosshair
         
     | 
| 
      
 10305 
     | 
    
         
            +
                        // Crosshair. For each hover point, loop over axes and draw cross if that point
         
     | 
| 
      
 10306 
     | 
    
         
            +
                        // belongs to the axis (#4927).
         
     | 
| 
       10206 
10307 
     | 
    
         
             
                        each(shared ? kdpoints : [pick(kdpoint[1], hoverPoint)], function (point) {
         
     | 
| 
       10207 
     | 
    
         
            -
                             
     | 
| 
       10208 
     | 
    
         
            -
             
     | 
| 
       10209 
     | 
    
         
            -
                                 
     | 
| 
       10210 
     | 
    
         
            -
                                     
     | 
| 
       10211 
     | 
    
         
            -
             
     | 
| 
       10212 
     | 
    
         
            -
             
     | 
| 
       10213 
     | 
    
         
            -
                                });
         
     | 
| 
       10214 
     | 
    
         
            -
                            }
         
     | 
| 
      
 10308 
     | 
    
         
            +
                            each(chart.axes, function (axis) {
         
     | 
| 
      
 10309 
     | 
    
         
            +
                                // In case of snap = false, point is undefined, and we draw the crosshair anyway (#5066)
         
     | 
| 
      
 10310 
     | 
    
         
            +
                                if (!point || point.series[axis.coll] === axis) {
         
     | 
| 
      
 10311 
     | 
    
         
            +
                                    axis.drawCrosshair(e, point);
         
     | 
| 
      
 10312 
     | 
    
         
            +
                                }
         
     | 
| 
      
 10313 
     | 
    
         
            +
                            });
         
     | 
| 
       10215 
10314 
     | 
    
         
             
                        });
         
     | 
| 
       10216 
     | 
    
         
            -
             
     | 
| 
       10217 
10315 
     | 
    
         
             
                    },
         
     | 
| 
       10218 
10316 
     | 
    
         | 
| 
       10219 
     | 
    
         
            -
             
     | 
| 
       10220 
     | 
    
         
            -
             
     | 
| 
       10221 
10317 
     | 
    
         
             
                    /**
         
     | 
| 
       10222 
10318 
     | 
    
         
             
                     * Reset the tracking by hiding the tooltip, the hover series state and the hover point
         
     | 
| 
       10223 
10319 
     | 
    
         
             
                     *
         
     | 
| 
         @@ -10232,13 +10328,10 @@ 
     | 
|
| 
       10232 
10328 
     | 
    
         
             
                            tooltip = chart.tooltip,
         
     | 
| 
       10233 
10329 
     | 
    
         
             
                            tooltipPoints = tooltip && tooltip.shared ? hoverPoints : hoverPoint;
         
     | 
| 
       10234 
10330 
     | 
    
         | 
| 
       10235 
     | 
    
         
            -
                        //  
     | 
| 
       10236 
     | 
    
         
            -
                         
     | 
| 
       10237 
     | 
    
         
            -
             
     | 
| 
       10238 
     | 
    
         
            -
                        // Check if the points have moved outside the plot area (#1003, #4736)
         
     | 
| 
       10239 
     | 
    
         
            -
                        if (allowMove) {
         
     | 
| 
      
 10331 
     | 
    
         
            +
                        // Check if the points have moved outside the plot area (#1003, #4736, #5101)
         
     | 
| 
      
 10332 
     | 
    
         
            +
                        if (allowMove && tooltipPoints) {
         
     | 
| 
       10240 
10333 
     | 
    
         
             
                            each(splat(tooltipPoints), function (point) {
         
     | 
| 
       10241 
     | 
    
         
            -
                                if (point.plotX === undefined) {
         
     | 
| 
      
 10334 
     | 
    
         
            +
                                if (point.series.isCartesian && point.plotX === undefined) {
         
     | 
| 
       10242 
10335 
     | 
    
         
             
                                    allowMove = false;
         
     | 
| 
       10243 
10336 
     | 
    
         
             
                                }
         
     | 
| 
       10244 
10337 
     | 
    
         
             
                            });
         
     | 
| 
         @@ -10246,17 +10339,19 @@ 
     | 
|
| 
       10246 
10339 
     | 
    
         | 
| 
       10247 
10340 
     | 
    
         
             
                        // Just move the tooltip, #349
         
     | 
| 
       10248 
10341 
     | 
    
         
             
                        if (allowMove) {
         
     | 
| 
       10249 
     | 
    
         
            -
                            tooltip 
     | 
| 
       10250 
     | 
    
         
            -
             
     | 
| 
       10251 
     | 
    
         
            -
                                 
     | 
| 
       10252 
     | 
    
         
            -
             
     | 
| 
       10253 
     | 
    
         
            -
                                     
     | 
| 
       10254 
     | 
    
         
            -
                                        axis. 
     | 
| 
       10255 
     | 
    
         
            -
             
     | 
| 
       10256 
     | 
    
         
            -
                                         
     | 
| 
       10257 
     | 
    
         
            -
             
     | 
| 
       10258 
     | 
    
         
            -
             
     | 
| 
      
 10342 
     | 
    
         
            +
                            if (tooltip && tooltipPoints) {
         
     | 
| 
      
 10343 
     | 
    
         
            +
                                tooltip.refresh(tooltipPoints);
         
     | 
| 
      
 10344 
     | 
    
         
            +
                                if (hoverPoint) { // #2500
         
     | 
| 
      
 10345 
     | 
    
         
            +
                                    hoverPoint.setState(hoverPoint.state, true);
         
     | 
| 
      
 10346 
     | 
    
         
            +
                                    each(chart.axes, function (axis) {
         
     | 
| 
      
 10347 
     | 
    
         
            +
                                        if (pick(axis.crosshair && axis.crosshair.snap, true)) {
         
     | 
| 
      
 10348 
     | 
    
         
            +
                                            axis.drawCrosshair(null, hoverPoint);
         
     | 
| 
      
 10349 
     | 
    
         
            +
                                        }  else {
         
     | 
| 
      
 10350 
     | 
    
         
            +
                                            axis.hideCrosshair();
         
     | 
| 
      
 10351 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 10352 
     | 
    
         
            +
                                    });
         
     | 
| 
       10259 
10353 
     | 
    
         | 
| 
      
 10354 
     | 
    
         
            +
                                }
         
     | 
| 
       10260 
10355 
     | 
    
         
             
                            }
         
     | 
| 
       10261 
10356 
     | 
    
         | 
| 
       10262 
10357 
     | 
    
         
             
                        // Full reset
         
     | 
| 
         @@ -10876,7 +10971,9 @@ 
     | 
|
| 
       10876 
10971 
     | 
    
         
             
                     * General touch handler shared by touchstart and touchmove.
         
     | 
| 
       10877 
10972 
     | 
    
         
             
                     */
         
     | 
| 
       10878 
10973 
     | 
    
         
             
                    touch: function (e, start) {
         
     | 
| 
       10879 
     | 
    
         
            -
                        var chart = this.chart 
     | 
| 
      
 10974 
     | 
    
         
            +
                        var chart = this.chart,
         
     | 
| 
      
 10975 
     | 
    
         
            +
                            hasMoved,
         
     | 
| 
      
 10976 
     | 
    
         
            +
                            pinchDown;
         
     | 
| 
       10880 
10977 
     | 
    
         | 
| 
       10881 
10978 
     | 
    
         
             
                        hoverChartIndex = chart.index;
         
     | 
| 
       10882 
10979 
     | 
    
         | 
| 
         @@ -10891,7 +10988,22 @@ 
     | 
|
| 
       10891 
10988 
     | 
    
         
             
                                    this.runPointActions(e);
         
     | 
| 
       10892 
10989 
     | 
    
         
             
                                }
         
     | 
| 
       10893 
10990 
     | 
    
         | 
| 
       10894 
     | 
    
         
            -
                                 
     | 
| 
      
 10991 
     | 
    
         
            +
                                // Android fires touchmove events after the touchstart even if the
         
     | 
| 
      
 10992 
     | 
    
         
            +
                                // finger hasn't moved, or moved only a pixel or two. In iOS however,
         
     | 
| 
      
 10993 
     | 
    
         
            +
                                // the touchmove doesn't fire unless the finger moves more than ~4px.
         
     | 
| 
      
 10994 
     | 
    
         
            +
                                // So we emulate this behaviour in Android by checking how much it
         
     | 
| 
      
 10995 
     | 
    
         
            +
                                // moved, and cancelling on small distances. #3450.
         
     | 
| 
      
 10996 
     | 
    
         
            +
                                if (e.type === 'touchmove') {
         
     | 
| 
      
 10997 
     | 
    
         
            +
                                    pinchDown = this.pinchDown;
         
     | 
| 
      
 10998 
     | 
    
         
            +
                                    hasMoved = Math.sqrt(
         
     | 
| 
      
 10999 
     | 
    
         
            +
                                        Math.pow(pinchDown[0].chartX - e.chartX, 2) +
         
     | 
| 
      
 11000 
     | 
    
         
            +
                                        Math.pow(pinchDown[0].chartY - e.chartY, 2)
         
     | 
| 
      
 11001 
     | 
    
         
            +
                                    ) >= 4;
         
     | 
| 
      
 11002 
     | 
    
         
            +
                                }
         
     | 
| 
      
 11003 
     | 
    
         
            +
             
     | 
| 
      
 11004 
     | 
    
         
            +
                                if (pick(hasMoved, true)) {
         
     | 
| 
      
 11005 
     | 
    
         
            +
                                    this.pinch(e);
         
     | 
| 
      
 11006 
     | 
    
         
            +
                                }
         
     | 
| 
       10895 
11007 
     | 
    
         | 
| 
       10896 
11008 
     | 
    
         
             
                            } else if (start) {
         
     | 
| 
       10897 
11009 
     | 
    
         
             
                                // Hide the tooltip on touching outside the plot area (#1203)
         
     | 
| 
         @@ -10924,7 +11036,8 @@ 
     | 
|
| 
       10924 
11036 
     | 
    
         
             
                    var touches = {},
         
     | 
| 
       10925 
11037 
     | 
    
         
             
                        hasPointerEvent = !!win.PointerEvent,
         
     | 
| 
       10926 
11038 
     | 
    
         
             
                        getWebkitTouches = function () {
         
     | 
| 
       10927 
     | 
    
         
            -
                            var key, 
     | 
| 
      
 11039 
     | 
    
         
            +
                            var key,
         
     | 
| 
      
 11040 
     | 
    
         
            +
                                fake = [];
         
     | 
| 
       10928 
11041 
     | 
    
         
             
                            fake.item = function (i) {
         
     | 
| 
       10929 
11042 
     | 
    
         
             
                                return this[i];
         
     | 
| 
       10930 
11043 
     | 
    
         
             
                            };
         
     | 
| 
         @@ -11587,7 +11700,7 @@ 
     | 
|
| 
       11587 
11700 
     | 
    
         | 
| 
       11588 
11701 
     | 
    
         
             
                        // Reset the legend height and adjust the clipping rectangle
         
     | 
| 
       11589 
11702 
     | 
    
         
             
                        pages.length = 0;
         
     | 
| 
       11590 
     | 
    
         
            -
                        if (legendHeight > spaceHeight) {
         
     | 
| 
      
 11703 
     | 
    
         
            +
                        if (legendHeight > spaceHeight && navOptions.enabled !== false) {
         
     | 
| 
       11591 
11704 
     | 
    
         | 
| 
       11592 
11705 
     | 
    
         
             
                            this.clipHeight = clipHeight = mathMax(spaceHeight - 20 - this.titleHeight - padding, 0);
         
     | 
| 
       11593 
11706 
     | 
    
         
             
                            this.currentPage = pick(this.currentPage, 1);
         
     | 
| 
         @@ -12666,14 +12779,13 @@ 
     | 
|
| 
       12666 
12779 
     | 
    
         
             
                        fireEvent(chart, 'resize');
         
     | 
| 
       12667 
12780 
     | 
    
         | 
| 
       12668 
12781 
     | 
    
         
             
                        // Fire endResize and set isResizing back. If animation is disabled, fire without delay
         
     | 
| 
       12669 
     | 
    
         
            -
                        globalAnimation = renderer.globalAnimation; // Reassign it before using it, it may have changed since the top of this function.
         
     | 
| 
       12670 
12782 
     | 
    
         
             
                        syncTimeout(function () {
         
     | 
| 
       12671 
12783 
     | 
    
         
             
                            if (chart) {
         
     | 
| 
       12672 
12784 
     | 
    
         
             
                                fireEvent(chart, 'endResize', null, function () {
         
     | 
| 
       12673 
12785 
     | 
    
         
             
                                    chart.isResizing -= 1;
         
     | 
| 
       12674 
12786 
     | 
    
         
             
                                });
         
     | 
| 
       12675 
12787 
     | 
    
         
             
                            }
         
     | 
| 
       12676 
     | 
    
         
            -
                        },  
     | 
| 
      
 12788 
     | 
    
         
            +
                        }, animObject(globalAnimation).duration);
         
     | 
| 
       12677 
12789 
     | 
    
         
             
                    },
         
     | 
| 
       12678 
12790 
     | 
    
         | 
| 
       12679 
12791 
     | 
    
         
             
                    /**
         
     | 
| 
         @@ -13227,7 +13339,7 @@ 
     | 
|
| 
       13227 
13339 
     | 
    
         
             
                        chart.renderer.draw();
         
     | 
| 
       13228 
13340 
     | 
    
         | 
| 
       13229 
13341 
     | 
    
         
             
                        // Fire the load event if there are no external images
         
     | 
| 
       13230 
     | 
    
         
            -
                        if (!chart.renderer.imgCount) {
         
     | 
| 
      
 13342 
     | 
    
         
            +
                        if (!chart.renderer.imgCount && chart.onload) {
         
     | 
| 
       13231 
13343 
     | 
    
         
             
                            chart.onload();
         
     | 
| 
       13232 
13344 
     | 
    
         
             
                        }
         
     | 
| 
       13233 
13345 
     | 
    
         | 
| 
         @@ -13249,10 +13361,10 @@ 
     | 
|
| 
       13249 
13361 
     | 
    
         
             
                            }
         
     | 
| 
       13250 
13362 
     | 
    
         
             
                        });
         
     | 
| 
       13251 
13363 
     | 
    
         | 
| 
       13252 
     | 
    
         
            -
                         
     | 
| 
       13253 
     | 
    
         
            -
             
     | 
| 
       13254 
     | 
    
         
            -
             
     | 
| 
       13255 
     | 
    
         
            -
                         
     | 
| 
      
 13364 
     | 
    
         
            +
                        fireEvent(chart, 'load');
         
     | 
| 
      
 13365 
     | 
    
         
            +
             
     | 
| 
      
 13366 
     | 
    
         
            +
                        // Don't run again
         
     | 
| 
      
 13367 
     | 
    
         
            +
                        this.onload = null;
         
     | 
| 
       13256 
13368 
     | 
    
         
             
                    },
         
     | 
| 
       13257 
13369 
     | 
    
         | 
| 
       13258 
13370 
     | 
    
         
             
                    /**
         
     | 
| 
         @@ -13365,7 +13477,7 @@ 
     | 
|
| 
       13365 
13477 
     | 
    
         | 
| 
       13366 
13478 
     | 
    
         
             
                        // If no x is set by now, get auto incremented value. All points must have an
         
     | 
| 
       13367 
13479 
     | 
    
         
             
                        // x value, however the y value can be null to create a gap in the series
         
     | 
| 
       13368 
     | 
    
         
            -
                        if ( 
     | 
| 
      
 13480 
     | 
    
         
            +
                        if (point.x === undefined && series) {
         
     | 
| 
       13369 
13481 
     | 
    
         
             
                            point.x = x === undefined ? series.autoIncrement() : x;
         
     | 
| 
       13370 
13482 
     | 
    
         
             
                        }
         
     | 
| 
       13371 
13483 
     | 
    
         | 
| 
         @@ -13746,11 +13858,16 @@ 
     | 
|
| 
       13746 
13858 
     | 
    
         
             
                        this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);
         
     | 
| 
       13747 
13859 
     | 
    
         | 
| 
       13748 
13860 
     | 
    
         
             
                        // Added code for pointInterval strings
         
     | 
| 
       13749 
     | 
    
         
            -
                        if (pointIntervalUnit 
     | 
| 
      
 13861 
     | 
    
         
            +
                        if (pointIntervalUnit) {
         
     | 
| 
       13750 
13862 
     | 
    
         
             
                            date = new Date(xIncrement);
         
     | 
| 
       13751 
     | 
    
         
            -
             
     | 
| 
       13752 
     | 
    
         
            -
             
     | 
| 
       13753 
     | 
    
         
            -
                                +date[ 
     | 
| 
      
 13863 
     | 
    
         
            +
             
     | 
| 
      
 13864 
     | 
    
         
            +
                            if (pointIntervalUnit === 'day') {
         
     | 
| 
      
 13865 
     | 
    
         
            +
                                date = +date[setDate](date[getDate]() + pointInterval);
         
     | 
| 
      
 13866 
     | 
    
         
            +
                            } else if (pointIntervalUnit === 'month') {
         
     | 
| 
      
 13867 
     | 
    
         
            +
                                date = +date[setMonth](date[getMonth]() + pointInterval);
         
     | 
| 
      
 13868 
     | 
    
         
            +
                            } else if (pointIntervalUnit === 'year') {
         
     | 
| 
      
 13869 
     | 
    
         
            +
                                date = +date[setFullYear](date[getFullYear]() + pointInterval);
         
     | 
| 
      
 13870 
     | 
    
         
            +
                            }
         
     | 
| 
       13754 
13871 
     | 
    
         
             
                            pointInterval = date - xIncrement;
         
     | 
| 
       13755 
13872 
     | 
    
         
             
                        }
         
     | 
| 
       13756 
13873 
     | 
    
         | 
| 
         @@ -14165,6 +14282,7 @@ 
     | 
|
| 
       14165 
14282 
     | 
    
         
             
                            } else {
         
     | 
| 
       14166 
14283 
     | 
    
         
             
                                // splat the y data in case of ohlc data array
         
     | 
| 
       14167 
14284 
     | 
    
         
             
                                points[i] = (new pointClass()).init(series, [processedXData[i]].concat(splat(processedYData[i])));
         
     | 
| 
      
 14285 
     | 
    
         
            +
                                points[i].dataGroup = series.groupMap[i];
         
     | 
| 
       14168 
14286 
     | 
    
         
             
                            }
         
     | 
| 
       14169 
14287 
     | 
    
         
             
                            points[i].index = cursor; // For faster access in Point.update
         
     | 
| 
       14170 
14288 
     | 
    
         
             
                        }
         
     | 
| 
         @@ -14339,11 +14457,13 @@ 
     | 
|
| 
       14339 
14457 
     | 
    
         
             
                            point.category = categories && categories[point.x] !== UNDEFINED ?
         
     | 
| 
       14340 
14458 
     | 
    
         
             
                                categories[point.x] : point.x;
         
     | 
| 
       14341 
14459 
     | 
    
         | 
| 
       14342 
     | 
    
         
            -
                            // Determine auto enabling of markers (#3635)
         
     | 
| 
       14343 
     | 
    
         
            -
                            if ( 
     | 
| 
       14344 
     | 
    
         
            -
                                 
     | 
| 
      
 14460 
     | 
    
         
            +
                            // Determine auto enabling of markers (#3635, #5099)
         
     | 
| 
      
 14461 
     | 
    
         
            +
                            if (!point.isNull) {
         
     | 
| 
      
 14462 
     | 
    
         
            +
                                if (lastPlotX !== undefined) {
         
     | 
| 
      
 14463 
     | 
    
         
            +
                                    closestPointRangePx = mathMin(closestPointRangePx, mathAbs(plotX - lastPlotX));
         
     | 
| 
      
 14464 
     | 
    
         
            +
                                }
         
     | 
| 
      
 14465 
     | 
    
         
            +
                                lastPlotX = plotX;
         
     | 
| 
       14345 
14466 
     | 
    
         
             
                            }
         
     | 
| 
       14346 
     | 
    
         
            -
                            lastPlotX = plotX;
         
     | 
| 
       14347 
14467 
     | 
    
         | 
| 
       14348 
14468 
     | 
    
         
             
                        }
         
     | 
| 
       14349 
14469 
     | 
    
         
             
                        series.closestPointRangePx = closestPointRangePx;
         
     | 
| 
         @@ -14352,8 +14472,12 @@ 
     | 
|
| 
       14352 
14472 
     | 
    
         
             
                    /**
         
     | 
| 
       14353 
14473 
     | 
    
         
             
                     * Return the series points with null points filtered out
         
     | 
| 
       14354 
14474 
     | 
    
         
             
                     */
         
     | 
| 
       14355 
     | 
    
         
            -
                    getValidPoints: function (points) {
         
     | 
| 
       14356 
     | 
    
         
            -
                         
     | 
| 
      
 14475 
     | 
    
         
            +
                    getValidPoints: function (points, insideOnly) {
         
     | 
| 
      
 14476 
     | 
    
         
            +
                        var chart = this.chart;
         
     | 
| 
      
 14477 
     | 
    
         
            +
                        return grep(points || this.points || [], function isValidPoint(point) { // #3916, #5029
         
     | 
| 
      
 14478 
     | 
    
         
            +
                            if (insideOnly && !chart.isInsidePlot(point.plotX, point.plotY, chart.inverted)) { // #5085
         
     | 
| 
      
 14479 
     | 
    
         
            +
                                return false;
         
     | 
| 
      
 14480 
     | 
    
         
            +
                            }
         
     | 
| 
       14357 
14481 
     | 
    
         
             
                            return !point.isNull;
         
     | 
| 
       14358 
14482 
     | 
    
         
             
                        });
         
     | 
| 
       14359 
14483 
     | 
    
         
             
                    },
         
     | 
| 
         @@ -15123,7 +15247,7 @@ 
     | 
|
| 
       15123 
15247 
     | 
    
         
             
                        if (isNew) {
         
     | 
| 
       15124 
15248 
     | 
    
         
             
                            this[prop] = group = this.chart.renderer.g(name)
         
     | 
| 
       15125 
15249 
     | 
    
         
             
                                .attr({
         
     | 
| 
       15126 
     | 
    
         
            -
                                    zIndex: zIndex || 0.1 // IE8  
     | 
| 
      
 15250 
     | 
    
         
            +
                                    zIndex: zIndex || 0.1 // IE8 and pointer logic use this
         
     | 
| 
       15127 
15251 
     | 
    
         
             
                                })
         
     | 
| 
       15128 
15252 
     | 
    
         
             
                                .add(parent);
         
     | 
| 
       15129 
15253 
     | 
    
         | 
| 
         @@ -15164,10 +15288,9 @@ 
     | 
|
| 
       15164 
15288 
     | 
    
         
             
                            chart = series.chart,
         
     | 
| 
       15165 
15289 
     | 
    
         
             
                            group,
         
     | 
| 
       15166 
15290 
     | 
    
         
             
                            options = series.options,
         
     | 
| 
       15167 
     | 
    
         
            -
                            animation = options.animation,
         
     | 
| 
       15168 
15291 
     | 
    
         
             
                            // Animation doesn't work in IE8 quirks when the group div is hidden,
         
     | 
| 
       15169 
15292 
     | 
    
         
             
                            // and looks bad in other oldIE
         
     | 
| 
       15170 
     | 
    
         
            -
                            animDuration =  
     | 
| 
      
 15293 
     | 
    
         
            +
                            animDuration = !!series.animate && chart.renderer.isSVG && animObject(options.animation).duration,
         
     | 
| 
       15171 
15294 
     | 
    
         
             
                            visibility = series.visible ? 'inherit' : 'hidden', // #2597
         
     | 
| 
       15172 
15295 
     | 
    
         
             
                            zIndex = options.zIndex,
         
     | 
| 
       15173 
15296 
     | 
    
         
             
                            hasRendered = series.hasRendered,
         
     | 
| 
         @@ -15319,7 +15442,9 @@ 
     | 
|
| 
       15319 
15442 
     | 
    
         | 
| 
       15320 
15443 
     | 
    
         
             
                        // Internal function
         
     | 
| 
       15321 
15444 
     | 
    
         
             
                        function _kdtree(points, depth, dimensions) {
         
     | 
| 
       15322 
     | 
    
         
            -
                            var axis, 
     | 
| 
      
 15445 
     | 
    
         
            +
                            var axis,
         
     | 
| 
      
 15446 
     | 
    
         
            +
                                median,
         
     | 
| 
      
 15447 
     | 
    
         
            +
                                length = points && points.length;
         
     | 
| 
       15323 
15448 
     | 
    
         | 
| 
       15324 
15449 
     | 
    
         
             
                            if (length) {
         
     | 
| 
       15325 
15450 
     | 
    
         | 
| 
         @@ -15345,7 +15470,14 @@ 
     | 
|
| 
       15345 
15470 
     | 
    
         | 
| 
       15346 
15471 
     | 
    
         
             
                        // Start the recursive build process with a clone of the points array and null points filtered out (#3873)
         
     | 
| 
       15347 
15472 
     | 
    
         
             
                        function startRecursive() {
         
     | 
| 
       15348 
     | 
    
         
            -
                            series.kdTree = _kdtree( 
     | 
| 
      
 15473 
     | 
    
         
            +
                            series.kdTree = _kdtree(
         
     | 
| 
      
 15474 
     | 
    
         
            +
                                series.getValidPoints(
         
     | 
| 
      
 15475 
     | 
    
         
            +
                                    null,
         
     | 
| 
      
 15476 
     | 
    
         
            +
                                    !series.directTouch // For line-type series restrict to plot area, but column-type series not (#3916, #4511)
         
     | 
| 
      
 15477 
     | 
    
         
            +
                                ),
         
     | 
| 
      
 15478 
     | 
    
         
            +
                                dimensions,
         
     | 
| 
      
 15479 
     | 
    
         
            +
                                dimensions
         
     | 
| 
      
 15480 
     | 
    
         
            +
                            );
         
     | 
| 
       15349 
15481 
     | 
    
         
             
                        }
         
     | 
| 
       15350 
15482 
     | 
    
         
             
                        delete series.kdTree;
         
     | 
| 
       15351 
15483 
     | 
    
         | 
| 
         @@ -15755,8 +15887,8 @@ 
     | 
|
| 
       15755 
15887 
     | 
    
         | 
| 
       15756 
15888 
     | 
    
         
             
                        if (y !== null) {
         
     | 
| 
       15757 
15889 
     | 
    
         
             
                            stack.points[pointKey].push(stack.cum);
         
     | 
| 
      
 15890 
     | 
    
         
            +
                            stackedYData[i] = stack.cum;
         
     | 
| 
       15758 
15891 
     | 
    
         
             
                        }
         
     | 
| 
       15759 
     | 
    
         
            -
                        stackedYData[i] = stack.cum;
         
     | 
| 
       15760 
15892 
     | 
    
         | 
| 
       15761 
15893 
     | 
    
         
             
                    }
         
     | 
| 
       15762 
15894 
     | 
    
         | 
| 
         @@ -15861,16 +15993,17 @@ 
     | 
|
| 
       15861 
15993 
     | 
    
         
             
                     */
         
     | 
| 
       15862 
15994 
     | 
    
         
             
                    addAxis: function (options, isX, redraw, animation) {
         
     | 
| 
       15863 
15995 
     | 
    
         
             
                        var key = isX ? 'xAxis' : 'yAxis',
         
     | 
| 
       15864 
     | 
    
         
            -
                            chartOptions = this.options 
     | 
| 
      
 15996 
     | 
    
         
            +
                            chartOptions = this.options,
         
     | 
| 
      
 15997 
     | 
    
         
            +
                            userOptions = merge(options, {
         
     | 
| 
      
 15998 
     | 
    
         
            +
                                index: this[key].length,
         
     | 
| 
      
 15999 
     | 
    
         
            +
                                isX: isX
         
     | 
| 
      
 16000 
     | 
    
         
            +
                            });
         
     | 
| 
       15865 
16001 
     | 
    
         | 
| 
       15866 
     | 
    
         
            -
                        new Axis(this,  
     | 
| 
       15867 
     | 
    
         
            -
                            index: this[key].length,
         
     | 
| 
       15868 
     | 
    
         
            -
                            isX: isX
         
     | 
| 
       15869 
     | 
    
         
            -
                        }));
         
     | 
| 
      
 16002 
     | 
    
         
            +
                        new Axis(this, userOptions); // eslint-disable-line no-new
         
     | 
| 
       15870 
16003 
     | 
    
         | 
| 
       15871 
16004 
     | 
    
         
             
                        // Push the new axis options to the chart options
         
     | 
| 
       15872 
16005 
     | 
    
         
             
                        chartOptions[key] = splat(chartOptions[key] || {});
         
     | 
| 
       15873 
     | 
    
         
            -
                        chartOptions[key].push( 
     | 
| 
      
 16006 
     | 
    
         
            +
                        chartOptions[key].push(userOptions);
         
     | 
| 
       15874 
16007 
     | 
    
         | 
| 
       15875 
16008 
     | 
    
         
             
                        if (pick(redraw, true)) {
         
     | 
| 
       15876 
16009 
     | 
    
         
             
                            this.redraw(animation);
         
     | 
| 
         @@ -16009,7 +16142,7 @@ 
     | 
|
| 
       16009 
16142 
     | 
    
         | 
| 
       16010 
16143 
     | 
    
         
             
                            // Record the options to options.data. If there is an object from before,
         
     | 
| 
       16011 
16144 
     | 
    
         
             
                            // use point options, otherwise use raw options. (#4701)
         
     | 
| 
       16012 
     | 
    
         
            -
                            seriesOptions.data[i] = 
     | 
| 
      
 16145 
     | 
    
         
            +
                            seriesOptions.data[i] =  (isObject(seriesOptions.data[i]) && !isArray(seriesOptions.data[i])) ? point.options : options;
         
     | 
| 
       16013 
16146 
     | 
    
         | 
| 
       16014 
16147 
     | 
    
         
             
                            // redraw
         
     | 
| 
       16015 
16148 
     | 
    
         
             
                            series.isDirty = series.isDirtyData = true;
         
     | 
| 
         @@ -16395,7 +16528,7 @@ 
     | 
|
| 
       16395 
16528 
     | 
    
         
             
                            // Sort the keys (#1651)
         
     | 
| 
       16396 
16529 
     | 
    
         
             
                            for (x in stack) {
         
     | 
| 
       16397 
16530 
     | 
    
         
             
                                if (stack[x].total !== null) { // nulled after switching between grouping and not (#1651, #2336)
         
     | 
| 
       16398 
     | 
    
         
            -
                                    keys.push( 
     | 
| 
      
 16531 
     | 
    
         
            +
                                    keys.push(x);
         
     | 
| 
       16399 
16532 
     | 
    
         
             
                                }
         
     | 
| 
       16400 
16533 
     | 
    
         
             
                            }
         
     | 
| 
       16401 
16534 
     | 
    
         
             
                            keys.sort(function (a, b) {
         
     | 
| 
         @@ -16531,12 +16664,12 @@ 
     | 
|
| 
       16531 
16664 
     | 
    
         
             
                                if (top !== undefined) {
         
     | 
| 
       16532 
16665 
     | 
    
         
             
                                    graphPoints.push({
         
     | 
| 
       16533 
16666 
     | 
    
         
             
                                        plotX: plotX,
         
     | 
| 
       16534 
     | 
    
         
            -
                                        plotY: top === null ? translatedThreshold : yAxis. 
     | 
| 
      
 16667 
     | 
    
         
            +
                                        plotY: top === null ? translatedThreshold : yAxis.getThreshold(top),
         
     | 
| 
       16535 
16668 
     | 
    
         
             
                                        isNull: isNull
         
     | 
| 
       16536 
16669 
     | 
    
         
             
                                    });
         
     | 
| 
       16537 
16670 
     | 
    
         
             
                                    bottomPoints.push({
         
     | 
| 
       16538 
16671 
     | 
    
         
             
                                        plotX: plotX,
         
     | 
| 
       16539 
     | 
    
         
            -
                                        plotY: bottom === null ? translatedThreshold : yAxis. 
     | 
| 
      
 16672 
     | 
    
         
            +
                                        plotY: bottom === null ? translatedThreshold : yAxis.getThreshold(bottom)
         
     | 
| 
       16540 
16673 
     | 
    
         
             
                                    });
         
     | 
| 
       16541 
16674 
     | 
    
         
             
                                }
         
     | 
| 
       16542 
16675 
     | 
    
         
             
                            };
         
     | 
| 
         @@ -16957,7 +17090,7 @@ 
     | 
|
| 
       16957 
17090 
     | 
    
         
             
                        h = bottom - y;
         
     | 
| 
       16958 
17091 
     | 
    
         | 
| 
       16959 
17092 
     | 
    
         
             
                        // Top edges are exceptions
         
     | 
| 
       16960 
     | 
    
         
            -
                        if (fromTop) {
         
     | 
| 
      
 17093 
     | 
    
         
            +
                        if (fromTop && h) { // #5146
         
     | 
| 
       16961 
17094 
     | 
    
         
             
                            y -= 1;
         
     | 
| 
       16962 
17095 
     | 
    
         
             
                            h += 1;
         
     | 
| 
       16963 
17096 
     | 
    
         
             
                        }
         
     | 
| 
         @@ -17126,9 +17259,15 @@ 
     | 
|
| 
       17126 
17259 
     | 
    
         | 
| 
       17127 
17260 
     | 
    
         
             
                            } else { // run the animation
         
     | 
| 
       17128 
17261 
     | 
    
         | 
| 
       17129 
     | 
    
         
            -
                                attr.scaleY = 1;
         
     | 
| 
       17130 
17262 
     | 
    
         
             
                                attr[inverted ? 'translateX' : 'translateY'] = yAxis.pos;
         
     | 
| 
       17131 
     | 
    
         
            -
                                series.group.animate(attr, series.options.animation) 
     | 
| 
      
 17263 
     | 
    
         
            +
                                series.group.animate(attr, extend(animObject(series.options.animation), {
         
     | 
| 
      
 17264 
     | 
    
         
            +
                                    // Do the scale synchronously to ensure smooth updating (#5030)
         
     | 
| 
      
 17265 
     | 
    
         
            +
                                    step: function (val, fx) {
         
     | 
| 
      
 17266 
     | 
    
         
            +
                                        series.group.attr({
         
     | 
| 
      
 17267 
     | 
    
         
            +
                                            scaleY: fx.pos
         
     | 
| 
      
 17268 
     | 
    
         
            +
                                        });
         
     | 
| 
      
 17269 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 17270 
     | 
    
         
            +
                                }));
         
     | 
| 
       17132 
17271 
     | 
    
         | 
| 
       17133 
17272 
     | 
    
         
             
                                // delete this function to allow it only once
         
     | 
| 
       17134 
17273 
     | 
    
         
             
                                series.animate = null;
         
     | 
| 
         @@ -17685,6 +17824,7 @@ 
     | 
|
| 
       17685 
17824 
     | 
    
         
             
                        hasRendered = series.hasRendered || 0,
         
     | 
| 
       17686 
17825 
     | 
    
         
             
                        str,
         
     | 
| 
       17687 
17826 
     | 
    
         
             
                        dataLabelsGroup,
         
     | 
| 
      
 17827 
     | 
    
         
            +
                        defer = pick(options.defer, true),
         
     | 
| 
       17688 
17828 
     | 
    
         
             
                        renderer = series.chart.renderer;
         
     | 
| 
       17689 
17829 
     | 
    
         | 
| 
       17690 
17830 
     | 
    
         
             
                    if (options.enabled || series._hasPointLabels) {
         
     | 
| 
         @@ -17698,11 +17838,11 @@ 
     | 
|
| 
       17698 
17838 
     | 
    
         
             
                        dataLabelsGroup = series.plotGroup(
         
     | 
| 
       17699 
17839 
     | 
    
         
             
                            'dataLabelsGroup',
         
     | 
| 
       17700 
17840 
     | 
    
         
             
                            'data-labels',
         
     | 
| 
       17701 
     | 
    
         
            -
                             
     | 
| 
      
 17841 
     | 
    
         
            +
                            defer && !hasRendered ? 'hidden' : 'visible', // #5133
         
     | 
| 
       17702 
17842 
     | 
    
         
             
                            options.zIndex || 6
         
     | 
| 
       17703 
17843 
     | 
    
         
             
                        );
         
     | 
| 
       17704 
17844 
     | 
    
         | 
| 
       17705 
     | 
    
         
            -
                        if ( 
     | 
| 
      
 17845 
     | 
    
         
            +
                        if (defer) {
         
     | 
| 
       17706 
17846 
     | 
    
         
             
                            dataLabelsGroup.attr({ opacity: +hasRendered }); // #3300
         
     | 
| 
       17707 
17847 
     | 
    
         
             
                            if (!hasRendered) {
         
     | 
| 
       17708 
17848 
     | 
    
         
             
                                addEvent(series, 'afterAnimate', function () {
         
     | 
| 
         @@ -17877,8 +18017,7 @@ 
     | 
|
| 
       17877 
18017 
     | 
    
         
             
                                x: alignTo.x + options.x + alignTo.width / 2 + rotCorr.x,
         
     | 
| 
       17878 
18018 
     | 
    
         
             
                                y: alignTo.y + options.y + alignTo.height / 2
         
     | 
| 
       17879 
18019 
     | 
    
         
             
                            };
         
     | 
| 
       17880 
     | 
    
         
            -
                            dataLabel
         
     | 
| 
       17881 
     | 
    
         
            -
                                [isNew ? 'attr' : 'animate'](alignAttr)
         
     | 
| 
      
 18020 
     | 
    
         
            +
                            dataLabel[isNew ? 'attr' : 'animate'](alignAttr)
         
     | 
| 
       17882 
18021 
     | 
    
         
             
                                .attr({ // #3003
         
     | 
| 
       17883 
18022 
     | 
    
         
             
                                    align: options.align
         
     | 
| 
       17884 
18023 
     | 
    
         
             
                                });
         
     | 
| 
         @@ -19452,6 +19591,7 @@ 
     | 
|
| 
       19452 
19591 
     | 
    
         
             
                    arrayMin: arrayMin,
         
     | 
| 
       19453 
19592 
     | 
    
         
             
                    arrayMax: arrayMax,
         
     | 
| 
       19454 
19593 
     | 
    
         
             
                    charts: charts,
         
     | 
| 
      
 19594 
     | 
    
         
            +
                    correctFloat: correctFloat,
         
     | 
| 
       19455 
19595 
     | 
    
         
             
                    dateFormat: dateFormat,
         
     | 
| 
       19456 
19596 
     | 
    
         
             
                    error: error,
         
     | 
| 
       19457 
19597 
     | 
    
         
             
                    format: format,
         
     |