"use strict";angular.module("highcharts-ng",[]).directive("highchart",function(){function i(i,n,t){var r=i[n];i[n]=function(){var i=Array.prototype.slice.call(arguments);return t.apply(this,i),r?r.apply(this,i):void 0}}function n(i,t){for(var r in t)t[r]&&t[r].constructor&&t[r].constructor===Object?(i[r]=i[r]||{},n(i[r],t[r])):i[r]=t[r];return i}var t=0,r=function(i){i.forEach(function(i){angular.isDefined(i.id)||(i.id="series-"+t++)})},e={chart:{events:{}},title:{},series:[],navigator:{enabled:!1}},c=function(t,r,c){var a={};return a=c.options?n(e,c.options):e,a.chart.renderTo=r[0],c.xAxis&&(i(a.chart.events,"selection",function(i){var n=this;i.xAxis?t.$apply(function(){t.config.xAxis.currentMin=i.xAxis[0].min,t.config.xAxis.currentMax=i.xAxis[0].max}):t.$apply(function(){t.config.xAxis.currentMin=n.xAxis[0].dataMin,t.config.xAxis.currentMax=n.xAxis[0].dataMax})}),i(a.chart.events,"addSeries",function(i){t.config.xAxis.currentMin=this.xAxis[0].min||t.config.xAxis.currentMin,t.config.xAxis.currentMax=this.xAxis[0].max||t.config.xAxis.currentMax})),c.xAxis&&(a.xAxis=angular.copy(c.xAxis)),c.title&&(a.title=c.title),a},a=function(i,n){var t=i.getExtremes();n.currentMin===t.dataMin&&n.currentMax===t.dataMax||i.setExtremes(n.currentMin,n.currentMax,!1)},o=function(i,n){(n.currentMin||n.currentMax)&&i.xAxis[0].setExtremes(n.currentMin,n.currentMax,!0)},s=function(i,n){var t=[];n&&(r(n),n.forEach(function(n){t.push(n.id);var r=i.get(n.id);r?r.update(angular.copy(n),!1):i.addSeries(angular.copy(n),!1)}));for(var e=i.series.length-1;e>=0;e--){var c=i.series[e];t.indexOf(c.options.id)<0&&c.remove(!1)}},x=function(i,n,t){t||(t={});var r=c(i,n,t),e=t.useHighStocks?new Highcharts.StockChart(r):new Highcharts.Chart(r);return t.xAxis&&o(e,t.xAxis),s(e,t.series),t.loading&&e.showLoading(),e.redraw(),e};return{restrict:"EAC",replace:!0,template:"
",scope:{config:"="},link:function(i,n,t){var r=x(i,n,i.config);i.$watch("config.series",function(i,n){i!==n&&(s(r,i),r.redraw())},!0),i.$watch("config.title",function(i){r.setTitle(i,!0)},!0),i.$watch("config.loading",function(i){i?r.showLoading():r.hideLoading()}),i.$watch("config.useHighStocks",function(t){r.destroy(),r=x(i,n,i.config)}),i.$watch("config.xAxis",function(i,n){i!==n&&i&&(r.xAxis[0].update(i),a(r.xAxis[0],angular.copy(i)),r.redraw())},!0),i.$watch("config.options",function(i,t,e){i!==t&&(r.destroy(),r=x(e,n,e.config))},!0)}}});