New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ng2-charts

Package Overview
Dependencies
Maintainers
1
Versions
99
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ng2-charts - npm Package Compare versions

Comparing version 2.0.0-beta.4 to 2.0.0-beta.5

80

bundles/ng2-charts.umd.js

@@ -5,3 +5,3 @@ (function (global, factory) {

(factory((global['ng2-charts'] = {}),global.ng.core,global.chart_js));
}(this, (function (exports,core,chart_js) { 'use strict';
}(this, (function (exports,core,chartJs) { 'use strict';

@@ -228,3 +228,3 @@ /*! *****************************************************************************

function BaseChartDirective(element) {
this.labels = [];
this.element = element;
this.options = {};

@@ -234,3 +234,2 @@ this.chartClick = new core.EventEmitter();

this.initFlag = false;
this.element = element;
}

@@ -251,3 +250,3 @@ /**

function (plugin) {
chart_js.Chart.plugins.register(plugin);
chartJs.Chart.plugins.register(plugin);
};

@@ -262,3 +261,2 @@ /**

this.ctx = this.element.nativeElement.getContext('2d');
this.cvs = this.element.nativeElement;
this.initFlag = true;

@@ -315,3 +313,3 @@ if (this.data || this.datasets) {

*/
function (ctx /*, data:Array<any>, options:any*/) {
function (ctx /*, data:any[], options:any*/) {
var _this = this;

@@ -325,13 +323,14 @@ /** @type {?} */

}
// hock for onHover and onClick events
// hook for onHover and onClick events
options.hover = options.hover || {};
if (!options.hover.onHover) {
options.hover.onHover = ( /**
* @param {?} event
* @param {?} active
* @return {?}
*/function (active) {
*/function (event, active) {
if (active && !active.length) {
return;
}
_this.chartHover.emit({ active: active });
_this.chartHover.emit({ event: event, active: active });
});

@@ -341,4 +340,4 @@ }

options.onClick = ( /**
* @param {?} event
* @param {?} active
* @param {?=} event
* @param {?=} active
* @return {?}

@@ -350,3 +349,3 @@ */function (event, active) {

/** @type {?} */
var opts = {
var chartConfig = {
type: this.chartType,

@@ -359,6 +358,21 @@ data: {

};
return new chart_js.Chart(ctx, opts);
return new chartJs.Chart(ctx, chartConfig);
};
/**
* @private
* @param {?} v
* @return {?}
*/
BaseChartDirective.prototype.isChartDataSetsArray = /**
* @private
* @param {?} v
* @return {?}
*/
function (v) {
/** @type {?} */
var elm = v[0];
return (typeof (elm) === 'object') && 'data' in elm;
};
/**
* @private
* @param {?} newDataValues

@@ -373,3 +387,4 @@ * @return {?}

function (newDataValues) {
if (Array.isArray(newDataValues[0].data)) {
var _this = this;
if (this.isChartDataSetsArray(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {

@@ -391,2 +406,22 @@ this.chart.data.datasets.forEach(( /**

}
else if (!this.isSingleDataSet(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {
this.chart.data.datasets.forEach(( /**
* @param {?} dataset
* @param {?} i
* @return {?}
*/function (dataset, i) {
dataset.data = newDataValues[i];
}));
}
else {
this.chart.data.datasets = newDataValues.map(( /**
* @param {?} data
* @param {?} index
* @return {?}
*/function (data, index) {
return { data: data, label: _this.labels[index] || "Label " + index };
}));
}
}
else {

@@ -398,4 +433,17 @@ this.chart.data.datasets[0].data = newDataValues;

* @private
* @param {?} data
* @return {?}
*/
BaseChartDirective.prototype.isSingleDataSet = /**
* @private
* @param {?} data
* @return {?}
*/
function (data) {
return Array.isArray(data[0]);
};
/**
* @private
* @return {?}
*/
BaseChartDirective.prototype.getDatasets = /**

@@ -411,4 +459,4 @@ * @private

if (!this.datasets || !this.datasets.length && (this.data && this.data.length)) {
if (Array.isArray(this.data[0])) {
datasets = (( /** @type {?} */(this.data))).map(( /**
if (!this.isSingleDataSet(this.data)) {
datasets = this.data.map(( /**
* @param {?} data

@@ -415,0 +463,0 @@ * @param {?} index

2

bundles/ng2-charts.umd.min.js

@@ -1,2 +0,2 @@

!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@angular/core"),require("chart.js")):"function"==typeof define&&define.amd?define("ng2-charts",["exports","@angular/core","chart.js"],r):r(t["ng2-charts"]={},t.ng.core,t.chart_js)}(this,function(t,r,o){"use strict";function a(t,r){var e="function"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var n,a,o=e.call(t),i=[];try{for(;(void 0===r||0<r--)&&!(n=o.next()).done;)i.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(e=o["return"])&&e.call(o)}finally{if(a)throw a.error}}return i}var n=[[255,99,132],[54,162,235],[255,206,86],[231,233,237],[75,192,192],[151,187,205],[220,220,220],[247,70,74],[70,191,189],[253,180,92],[148,159,177],[77,83,96]];function i(t,r,e){if("pie"===t||"doughnut"===t)return function n(t){return{backgroundColor:t.map(function(t){return s(t,.6)}),borderColor:t.map(function(){return"#fff"}),pointBackgroundColor:t.map(function(t){return s(t,1)}),pointBorderColor:t.map(function(){return"#fff"}),pointHoverBackgroundColor:t.map(function(t){return s(t,1)}),pointHoverBorderColor:t.map(function(t){return s(t,1)})}}(h(e));if("polarArea"===t)return function a(t){return{backgroundColor:t.map(function(t){return s(t,.6)}),borderColor:t.map(function(t){return s(t,1)}),hoverBackgroundColor:t.map(function(t){return s(t,.8)}),hoverBorderColor:t.map(function(t){return s(t,1)})}}(h(e));if("line"===t||"radar"===t)return function o(t){return{backgroundColor:s(t,.4),borderColor:s(t,1),pointBackgroundColor:s(t,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:s(t,.8)}}(c(r));if("bar"===t||"horizontalBar"===t)return function i(t){return{backgroundColor:s(t,.6),borderColor:s(t,1),hoverBackgroundColor:s(t,.8),hoverBorderColor:s(t,1)}}(c(r));throw new Error("getColors - Unsupported chart type "+t)}function s(t,r){return"rgba("+t.concat(r).join(",")+")"}function e(t,r){return Math.floor(Math.random()*(r-t+1))+t}function u(){return[e(0,255),e(0,255),e(0,255)]}function c(t){return n[t]||u()}function h(t){for(var r=new Array(t),e=0;e<t;e++)r[e]=n[e]||u();return r}var l=function(){function t(t){this.labels=[],this.options={},this.chartClick=new r.EventEmitter,this.chartHover=new r.EventEmitter,this.initFlag=!1,this.element=t}return t.registerPlugin=function(t){o.Chart.plugins.register(t)},t.prototype.ngOnInit=function(){this.ctx=this.element.nativeElement.getContext("2d"),this.cvs=this.element.nativeElement,this.initFlag=!0,(this.data||this.datasets)&&this.refresh()},t.prototype.ngOnChanges=function(t){this.initFlag&&(t.hasOwnProperty("data")||t.hasOwnProperty("datasets")?(t.data?this.updateChartData(t.data.currentValue):this.updateChartData(t.datasets.currentValue),this.chart.update()):this.refresh())},t.prototype.ngOnDestroy=function(){this.chart&&(this.chart.destroy(),this.chart=void 0)},t.prototype.getChartBuilder=function(t){var e=this,r=this.getDatasets(),n=Object.assign({},this.options);!1===this.legend&&(n.legend={display:!1}),n.hover=n.hover||{},n.hover.onHover||(n.hover.onHover=function(t){t&&!t.length||e.chartHover.emit({active:t})}),n.onClick||(n.onClick=function(t,r){e.chartClick.emit({event:t,active:r})});var a={type:this.chartType,data:{labels:this.labels,datasets:r},options:n};return new o.Chart(t,a)},t.prototype.updateChartData=function(e){Array.isArray(e[0].data)?e.length===this.chart.data.datasets.length?this.chart.data.datasets.forEach(function(t,r){t.data=e[r].data,e[r].label&&(t.label=e[r].label)}):this.chart.data.datasets=function n(){for(var t=[],r=0;r<arguments.length;r++)t=t.concat(a(arguments[r]));return t}(e):this.chart.data.datasets[0].data=e},t.prototype.getDatasets=function(){var n=this,t=void 0;if((!this.datasets||!this.datasets.length&&this.data&&this.data.length)&&(t=Array.isArray(this.data[0])?this.data.map(function(t,r){return{data:t,label:n.labels[r]||"Label "+r}}):[{data:this.data,label:"Label 0"}]),(this.datasets&&this.datasets.length||t&&t.length)&&(t=(this.datasets||t).map(function(t,r){var e=Object.assign({},t);return n.colors&&n.colors.length?Object.assign(e,n.colors[r]):Object.assign(e,i(n.chartType,r,e.data.length)),e})),!t)throw new Error("ng-charts configuration error,\n data or datasets field are required to render char "+this.chartType);return t},t.prototype.refresh=function(){this.ngOnDestroy(),this.chart=this.getChartBuilder(this.ctx)},t.decorators=[{type:r.Directive,args:[{selector:"canvas[baseChart]",exportAs:"base-chart"}]}],t.ctorParameters=function(){return[{type:r.ElementRef}]},t.propDecorators={data:[{type:r.Input}],datasets:[{type:r.Input}],labels:[{type:r.Input}],options:[{type:r.Input}],chartType:[{type:r.Input}],colors:[{type:r.Input}],legend:[{type:r.Input}],chartClick:[{type:r.Output}],chartHover:[{type:r.Output}]},t}(),d=function(){function t(){}return t.decorators=[{type:r.NgModule,args:[{declarations:[l],imports:[],exports:[l]}]}],t}();t.ChartsModule=d,t.BaseChartDirective=l,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@angular/core"),require("chart.js")):"function"==typeof define&&define.amd?define("ng2-charts",["exports","@angular/core","chart.js"],r):r(t["ng2-charts"]={},t.ng.core,t.chart_js)}(this,function(t,r,o){"use strict";function i(t,r){var e="function"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var a,n,o=e.call(t),i=[];try{for(;(void 0===r||0<r--)&&!(a=o.next()).done;)i.push(a.value)}catch(s){n={error:s}}finally{try{a&&!a.done&&(e=o["return"])&&e.call(o)}finally{if(n)throw n.error}}return i}var a=[[255,99,132],[54,162,235],[255,206,86],[231,233,237],[75,192,192],[151,187,205],[220,220,220],[247,70,74],[70,191,189],[253,180,92],[148,159,177],[77,83,96]];function n(t,r,e){if("pie"===t||"doughnut"===t)return function a(t){return{backgroundColor:t.map(function(t){return s(t,.6)}),borderColor:t.map(function(){return"#fff"}),pointBackgroundColor:t.map(function(t){return s(t,1)}),pointBorderColor:t.map(function(){return"#fff"}),pointHoverBackgroundColor:t.map(function(t){return s(t,1)}),pointHoverBorderColor:t.map(function(t){return s(t,1)})}}(h(e));if("polarArea"===t)return function n(t){return{backgroundColor:t.map(function(t){return s(t,.6)}),borderColor:t.map(function(t){return s(t,1)}),hoverBackgroundColor:t.map(function(t){return s(t,.8)}),hoverBorderColor:t.map(function(t){return s(t,1)})}}(h(e));if("line"===t||"radar"===t)return function o(t){return{backgroundColor:s(t,.4),borderColor:s(t,1),pointBackgroundColor:s(t,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:s(t,.8)}}(c(r));if("bar"===t||"horizontalBar"===t)return function i(t){return{backgroundColor:s(t,.6),borderColor:s(t,1),hoverBackgroundColor:s(t,.8),hoverBorderColor:s(t,1)}}(c(r));throw new Error("getColors - Unsupported chart type "+t)}function s(t,r){return"rgba("+t.concat(r).join(",")+")"}function e(t,r){return Math.floor(Math.random()*(r-t+1))+t}function u(){return[e(0,255),e(0,255),e(0,255)]}function c(t){return a[t]||u()}function h(t){for(var r=new Array(t),e=0;e<t;e++)r[e]=a[e]||u();return r}var l=function(){function t(t){this.element=t,this.options={},this.chartClick=new r.EventEmitter,this.chartHover=new r.EventEmitter,this.initFlag=!1}return t.registerPlugin=function(t){o.Chart.plugins.register(t)},t.prototype.ngOnInit=function(){this.ctx=this.element.nativeElement.getContext("2d"),this.initFlag=!0,(this.data||this.datasets)&&this.refresh()},t.prototype.ngOnChanges=function(t){this.initFlag&&(t.hasOwnProperty("data")||t.hasOwnProperty("datasets")?(t.data?this.updateChartData(t.data.currentValue):this.updateChartData(t.datasets.currentValue),this.chart.update()):this.refresh())},t.prototype.ngOnDestroy=function(){this.chart&&(this.chart.destroy(),this.chart=void 0)},t.prototype.getChartBuilder=function(t){var e=this,r=this.getDatasets(),a=Object.assign({},this.options);!1===this.legend&&(a.legend={display:!1}),a.hover=a.hover||{},a.hover.onHover||(a.hover.onHover=function(t,r){r&&!r.length||e.chartHover.emit({event:t,active:r})}),a.onClick||(a.onClick=function(t,r){e.chartClick.emit({event:t,active:r})});var n={type:this.chartType,data:{labels:this.labels,datasets:r},options:a};return new o.Chart(t,n)},t.prototype.isChartDataSetsArray=function(t){var r=t[0];return"object"==typeof r&&"data"in r},t.prototype.updateChartData=function(e){var a=this;this.isChartDataSetsArray(e)?e.length===this.chart.data.datasets.length?this.chart.data.datasets.forEach(function(t,r){t.data=e[r].data,e[r].label&&(t.label=e[r].label)}):this.chart.data.datasets=function n(){for(var t=[],r=0;r<arguments.length;r++)t=t.concat(i(arguments[r]));return t}(e):this.isSingleDataSet(e)?this.chart.data.datasets[0].data=e:e.length===this.chart.data.datasets.length?this.chart.data.datasets.forEach(function(t,r){t.data=e[r]}):this.chart.data.datasets=e.map(function(t,r){return{data:t,label:a.labels[r]||"Label "+r}})},t.prototype.isSingleDataSet=function(t){return Array.isArray(t[0])},t.prototype.getDatasets=function(){var a=this,t=void 0;if((!this.datasets||!this.datasets.length&&this.data&&this.data.length)&&(t=this.isSingleDataSet(this.data)?[{data:this.data,label:"Label 0"}]:this.data.map(function(t,r){return{data:t,label:a.labels[r]||"Label "+r}})),(this.datasets&&this.datasets.length||t&&t.length)&&(t=(this.datasets||t).map(function(t,r){var e=Object.assign({},t);return a.colors&&a.colors.length?Object.assign(e,a.colors[r]):Object.assign(e,n(a.chartType,r,e.data.length)),e})),!t)throw new Error("ng-charts configuration error,\n data or datasets field are required to render char "+this.chartType);return t},t.prototype.refresh=function(){this.ngOnDestroy(),this.chart=this.getChartBuilder(this.ctx)},t.decorators=[{type:r.Directive,args:[{selector:"canvas[baseChart]",exportAs:"base-chart"}]}],t.ctorParameters=function(){return[{type:r.ElementRef}]},t.propDecorators={data:[{type:r.Input}],datasets:[{type:r.Input}],labels:[{type:r.Input}],options:[{type:r.Input}],chartType:[{type:r.Input}],colors:[{type:r.Input}],legend:[{type:r.Input}],chartClick:[{type:r.Output}],chartHover:[{type:r.Output}]},t}(),d=function(){function t(){}return t.decorators=[{type:r.NgModule,args:[{declarations:[l],imports:[],exports:[l]}]}],t}();t.ChartsModule=d,t.BaseChartDirective=l,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=ng2-charts.umd.min.js.map

@@ -6,4 +6,179 @@ /**

import { Directive, Input, Output, EventEmitter, ElementRef } from '@angular/core';
import { Chart } from 'chart.js';
import * as chartJs from 'chart.js';
import { getColors } from './get-colors';
/**
* @record
*/
export function PluginServiceGlobalRegistration() { }
if (false) {
/** @type {?|undefined} */
PluginServiceGlobalRegistration.prototype.id;
}
/**
* @record
*/
export function PluginServiceRegistrationOptions() { }
if (false) {
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeInit = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterInit = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeLayout = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterLayout = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDatasetsUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDatasetsUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDatasetUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDatasetUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeRender = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterRender = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDatasetsDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDatasetsDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDatasetDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDatasetDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?=} tooltipData
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeTooltipDraw = function (chartInstance, tooltipData, options) { };
/**
* @param {?} chartInstance
* @param {?=} tooltipData
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterTooltipDraw = function (chartInstance, tooltipData, options) { };
/**
* @param {?} chartInstance
* @param {?} event
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeEvent = function (chartInstance, event, options) { };
/**
* @param {?} chartInstance
* @param {?} event
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterEvent = function (chartInstance, event, options) { };
/**
* @param {?} chartInstance
* @param {?} newChartSize
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.resize = function (chartInstance, newChartSize, options) { };
/**
* @param {?} chartInstance
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.destroy = function (chartInstance) { };
/**
* @deprecated since version 2.5.0. Use `afterLayout` instead.
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterScaleUpdate = function (chartInstance, options) { };
}
export class BaseChartDirective {

@@ -14,3 +189,3 @@ /**

constructor(element) {
this.labels = [];
this.element = element;
this.options = {};

@@ -20,3 +195,2 @@ this.chartClick = new EventEmitter();

this.initFlag = false;
this.element = element;
}

@@ -29,3 +203,3 @@ /**

static registerPlugin(plugin) {
Chart.plugins.register(plugin);
chartJs.Chart.plugins.register(plugin);
}

@@ -37,3 +211,2 @@ /**

this.ctx = this.element.nativeElement.getContext('2d');
this.cvs = this.element.nativeElement;
this.initFlag = true;

@@ -79,3 +252,3 @@ if (this.data || this.datasets) {

*/
getChartBuilder(ctx /*, data:Array<any>, options:any*/) {
getChartBuilder(ctx /*, data:any[], options:any*/) {
/** @type {?} */

@@ -88,14 +261,15 @@ const datasets = this.getDatasets();

}
// hock for onHover and onClick events
// hook for onHover and onClick events
options.hover = options.hover || {};
if (!options.hover.onHover) {
options.hover.onHover = (/**
* @param {?} event
* @param {?} active
* @return {?}
*/
(active) => {
(event, active) => {
if (active && !active.length) {
return;
}
this.chartHover.emit({ active });
this.chartHover.emit({ event, active });
});

@@ -105,4 +279,4 @@ }

options.onClick = (/**
* @param {?} event
* @param {?} active
* @param {?=} event
* @param {?=} active
* @return {?}

@@ -115,3 +289,3 @@ */

/** @type {?} */
const opts = {
const chartConfig = {
type: this.chartType,

@@ -124,6 +298,16 @@ data: {

};
return new Chart(ctx, opts);
return new chartJs.Chart(ctx, chartConfig);
}
/**
* @private
* @param {?} v
* @return {?}
*/
isChartDataSetsArray(v) {
/** @type {?} */
const elm = v[0];
return (typeof (elm) === 'object') && 'data' in elm;
}
/**
* @private
* @param {?} newDataValues

@@ -133,3 +317,3 @@ * @return {?}

updateChartData(newDataValues) {
if (Array.isArray(newDataValues[0].data)) {
if (this.isChartDataSetsArray(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {

@@ -152,2 +336,24 @@ this.chart.data.datasets.forEach((/**

}
else if (!this.isSingleDataSet(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {
this.chart.data.datasets.forEach((/**
* @param {?} dataset
* @param {?} i
* @return {?}
*/
(dataset, i) => {
dataset.data = newDataValues[i];
}));
}
else {
this.chart.data.datasets = newDataValues.map((/**
* @param {?} data
* @param {?} index
* @return {?}
*/
(data, index) => {
return { data, label: this.labels[index] || `Label ${index}` };
}));
}
}
else {

@@ -159,4 +365,12 @@ this.chart.data.datasets[0].data = newDataValues;

* @private
* @param {?} data
* @return {?}
*/
isSingleDataSet(data) {
return Array.isArray(data[0]);
}
/**
* @private
* @return {?}
*/
getDatasets() {

@@ -167,4 +381,4 @@ /** @type {?} */

if (!this.datasets || !this.datasets.length && (this.data && this.data.length)) {
if (Array.isArray(this.data[0])) {
datasets = ((/** @type {?} */ (this.data))).map((/**
if (!this.isSingleDataSet(this.data)) {
datasets = this.data.map((/**
* @param {?} data

@@ -270,7 +484,2 @@ * @param {?} index

*/
BaseChartDirective.prototype.cvs;
/**
* @type {?}
* @private
*/
BaseChartDirective.prototype.initFlag;

@@ -283,2 +492,2 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItY2hhcnRzLyIsInNvdXJjZXMiOlsibGliL2Jhc2UtY2hhcnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPekMsTUFBTSxPQUFPLGtCQUFrQjs7OztJQTBCN0IsWUFBbUIsT0FBbUI7UUF2QnRCLFdBQU0sR0FBZSxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUtqQixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSzVELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFZdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQzs7Ozs7O0lBTk0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFXO1FBQ3RDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Ozs7SUFNTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM5QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDOzs7OztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsbURBQW1EO1lBQ25ELElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN4RSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDakQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUNyRDtnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLDhCQUE4QjtnQkFDOUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2hCO1NBQ0Y7SUFDSCxDQUFDOzs7O0lBRU0sV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDOzs7OztJQUVNLGVBQWUsQ0FBQyxHQUFRLENBQUEsa0NBQWtDOztjQUN6RCxRQUFRLEdBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRTs7Y0FFbEMsT0FBTyxHQUFRLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDcEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRTtZQUN6QixPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3JDO1FBQ0Qsc0NBQXNDO1FBQ3RDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTzs7OztZQUFHLENBQUMsTUFBa0IsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7b0JBQzVCLE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQSxDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNwQixPQUFPLENBQUMsT0FBTzs7Ozs7WUFBRyxDQUFDLEtBQVUsRUFBRSxNQUFrQixFQUFFLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFBLENBQUM7U0FDSDs7Y0FFSyxJQUFJLEdBQUc7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDcEIsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsUUFBUTthQUNUO1lBQ0QsT0FBTztTQUNSO1FBRUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7Ozs7O0lBRU8sZUFBZSxDQUFDLGFBQStCO1FBQ3JELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPOzs7OztnQkFBQyxDQUFDLE9BQVksRUFBRSxDQUFTLEVBQUUsRUFBRTtvQkFDM0QsT0FBTyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUVyQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7d0JBQzFCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztxQkFDeEM7Z0JBQ0gsQ0FBQyxFQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO2FBQy9DO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQzs7Ozs7SUFFTyxXQUFXOztZQUNiLFFBQVEsR0FBUSxLQUFLLENBQUM7UUFDMUIsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL0IsUUFBUSxHQUFHLENBQUMsbUJBQUEsSUFBSSxDQUFDLElBQUksRUFBbUIsQ0FBQyxDQUFDLEdBQUc7Ozs7O2dCQUFDLENBQUMsSUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFO29CQUM5RSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDakUsQ0FBQyxFQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO2FBQ3BEO1NBQ0Y7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQ3ZDLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQixRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQztpQkFDbkMsR0FBRzs7Ozs7WUFBQyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBRTs7c0JBQzVCLE1BQU0sR0FBUSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7Z0JBQzFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtvQkFDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUMzQztxQkFBTTtvQkFDTCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUM3RTtnQkFDRCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDLEVBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUM7MkRBQ3FDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7Ozs7SUFFTyxPQUFPO1FBQ2IsaURBQWlEO1FBQ2pELDBDQUEwQztRQUMxQyxJQUFJO1FBRUoscURBQXFEO1FBQ3JELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQSx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OztZQXRLRixTQUFTLFNBQUM7O2dCQUVULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRSxZQUFZO2FBQ3ZCOzs7O1lBVkMsVUFBVTs7O21CQVlULEtBQUs7dUJBQ0wsS0FBSztxQkFDTCxLQUFLO3NCQUNMLEtBQUs7d0JBQ0wsS0FBSztxQkFDTCxLQUFLO3FCQUNMLEtBQUs7eUJBRUwsTUFBTTt5QkFDTixNQUFNOzs7O0lBVFAsa0NBQXVDOztJQUN2QyxzQ0FBZ0M7O0lBQ2hDLG9DQUF3Qzs7SUFDeEMscUNBQWtDOztJQUNsQyx1Q0FBa0M7O0lBQ2xDLG9DQUFtQzs7SUFDbkMsb0NBQWdDOztJQUVoQyx3Q0FBb0U7O0lBQ3BFLHdDQUFvRTs7SUFFcEUsaUNBQWdCOztJQUNoQixtQ0FBa0I7Ozs7O0lBQ2xCLGlDQUFpQjs7Ozs7SUFDakIsc0NBQXlCOzs7OztJQUV6QixxQ0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERpcmVjdGl2ZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcclxuaW1wb3J0IHsgZ2V0Q29sb3JzIH0gZnJvbSAnLi9nZXQtY29sb3JzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2NhbnZhc1tiYXNlQ2hhcnRdJyxcclxuICBleHBvcnRBczogJ2Jhc2UtY2hhcnQnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlQ2hhcnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgT25Jbml0IHtcclxuICBASW5wdXQoKSBwdWJsaWMgZGF0YTogbnVtYmVyW10gfCBhbnlbXTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGF0YXNldHM6IGFueVtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbHM6IEFycmF5PGFueT4gPSBbXTtcclxuICBASW5wdXQoKSBwdWJsaWMgb3B0aW9uczogYW55ID0ge307XHJcbiAgQElucHV0KCkgcHVibGljIGNoYXJ0VHlwZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb2xvcnM6IEFycmF5PGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGxlZ2VuZDogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFydENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHVibGljIGNoYXJ0SG92ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgY3R4OiBhbnk7XHJcbiAgcHVibGljIGNoYXJ0OiBhbnk7XHJcbiAgcHJpdmF0ZSBjdnM6IGFueTtcclxuICBwcml2YXRlIGluaXRGbGFnID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgYSBwbHVnaW4uXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyByZWdpc3RlclBsdWdpbihwbHVnaW46IGFueSk6IHZvaWQge1xyXG4gICAgQ2hhcnQucGx1Z2lucy5yZWdpc3RlcihwbHVnaW4pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogYW55IHtcclxuICAgIHRoaXMuY3R4ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIHRoaXMuY3ZzID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmluaXRGbGFnID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmRhdGEgfHwgdGhpcy5kYXRhc2V0cykge1xyXG4gICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbml0RmxhZykge1xyXG4gICAgICAvLyBDaGVjayBpZiB0aGUgY2hhbmdlcyBhcmUgaW4gdGhlIGRhdGEgb3IgZGF0YXNldHNcclxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2RhdGEnKSB8fCBjaGFuZ2VzLmhhc093blByb3BlcnR5KCdkYXRhc2V0cycpKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDaGFydERhdGEoY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcnREYXRhKGNoYW5nZXMuZGF0YXNldHMuY3VycmVudFZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gb3RoZXJ3aXNlIHJlYnVpbGQgdGhlIGNoYXJ0XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuY2hhcnQpIHtcclxuICAgICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMuY2hhcnQgPSB2b2lkIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2hhcnRCdWlsZGVyKGN0eDogYW55LyosIGRhdGE6QXJyYXk8YW55Piwgb3B0aW9uczphbnkqLyk6IGFueSB7XHJcbiAgICBjb25zdCBkYXRhc2V0czogYW55ID0gdGhpcy5nZXREYXRhc2V0cygpO1xyXG5cclxuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMub3B0aW9ucyk7XHJcbiAgICBpZiAodGhpcy5sZWdlbmQgPT09IGZhbHNlKSB7XHJcbiAgICAgIG9wdGlvbnMubGVnZW5kID0geyBkaXNwbGF5OiBmYWxzZSB9O1xyXG4gICAgfVxyXG4gICAgLy8gaG9jayBmb3Igb25Ib3ZlciBhbmQgb25DbGljayBldmVudHNcclxuICAgIG9wdGlvbnMuaG92ZXIgPSBvcHRpb25zLmhvdmVyIHx8IHt9O1xyXG4gICAgaWYgKCFvcHRpb25zLmhvdmVyLm9uSG92ZXIpIHtcclxuICAgICAgb3B0aW9ucy5ob3Zlci5vbkhvdmVyID0gKGFjdGl2ZTogQXJyYXk8YW55PikgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmUgJiYgIWFjdGl2ZS5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFydEhvdmVyLmVtaXQoeyBhY3RpdmUgfSk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFvcHRpb25zLm9uQ2xpY2spIHtcclxuICAgICAgb3B0aW9ucy5vbkNsaWNrID0gKGV2ZW50OiBhbnksIGFjdGl2ZTogQXJyYXk8YW55PikgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hhcnRDbGljay5lbWl0KHsgZXZlbnQsIGFjdGl2ZSB9KTtcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvcHRzID0ge1xyXG4gICAgICB0eXBlOiB0aGlzLmNoYXJ0VHlwZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxhYmVsczogdGhpcy5sYWJlbHMsXHJcbiAgICAgICAgZGF0YXNldHNcclxuICAgICAgfSxcclxuICAgICAgb3B0aW9uc1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbmV3IENoYXJ0KGN0eCwgb3B0cyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNoYXJ0RGF0YShuZXdEYXRhVmFsdWVzOiBudW1iZXJbXSB8IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdEYXRhVmFsdWVzWzBdLmRhdGEpKSB7XHJcbiAgICAgIGlmIChuZXdEYXRhVmFsdWVzLmxlbmd0aCA9PT0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0OiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgZGF0YXNldC5kYXRhID0gbmV3RGF0YVZhbHVlc1tpXS5kYXRhO1xyXG5cclxuICAgICAgICAgIGlmIChuZXdEYXRhVmFsdWVzW2ldLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGRhdGFzZXQubGFiZWwgPSBuZXdEYXRhVmFsdWVzW2ldLmxhYmVsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyA9IFsuLi5uZXdEYXRhVmFsdWVzXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzWzBdLmRhdGEgPSBuZXdEYXRhVmFsdWVzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhc2V0cygpOiBhbnkge1xyXG4gICAgbGV0IGRhdGFzZXRzOiBhbnkgPSB2b2lkIDA7XHJcbiAgICAvLyBpbiBjYXNlIGlmIGRhdGFzZXRzIGlzIG5vdCBwcm92aWRlZCwgYnV0IGRhdGEgaXMgcHJlc2VudFxyXG4gICAgaWYgKCF0aGlzLmRhdGFzZXRzIHx8ICF0aGlzLmRhdGFzZXRzLmxlbmd0aCAmJiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS5sZW5ndGgpKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YVswXSkpIHtcclxuICAgICAgICBkYXRhc2V0cyA9ICh0aGlzLmRhdGEgYXMgQXJyYXk8bnVtYmVyW10+KS5tYXAoKGRhdGE6IG51bWJlcltdLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geyBkYXRhLCBsYWJlbDogdGhpcy5sYWJlbHNbaW5kZXhdIHx8IGBMYWJlbCAke2luZGV4fWAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhc2V0cyA9IFt7IGRhdGE6IHRoaXMuZGF0YSwgbGFiZWw6IGBMYWJlbCAwYCB9XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFzZXRzICYmIHRoaXMuZGF0YXNldHMubGVuZ3RoIHx8XHJcbiAgICAgIChkYXRhc2V0cyAmJiBkYXRhc2V0cy5sZW5ndGgpKSB7XHJcbiAgICAgIGRhdGFzZXRzID0gKHRoaXMuZGF0YXNldHMgfHwgZGF0YXNldHMpXHJcbiAgICAgICAgLm1hcCgoZWxtOiBudW1iZXIsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5ld0VsbTogYW55ID0gT2JqZWN0LmFzc2lnbih7fSwgZWxtKTtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbG9ycyAmJiB0aGlzLmNvbG9ycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihuZXdFbG0sIHRoaXMuY29sb3JzW2luZGV4XSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG5ld0VsbSwgZ2V0Q29sb3JzKHRoaXMuY2hhcnRUeXBlLCBpbmRleCwgbmV3RWxtLmRhdGEubGVuZ3RoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbmV3RWxtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZGF0YXNldHMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBuZy1jaGFydHMgY29uZmlndXJhdGlvbiBlcnJvcixcclxuICAgICAgZGF0YSBvciBkYXRhc2V0cyBmaWVsZCBhcmUgcmVxdWlyZWQgdG8gcmVuZGVyIGNoYXIgJHt0aGlzLmNoYXJ0VHlwZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0YXNldHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2goKTogYW55IHtcclxuICAgIC8vIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLnJlc3BvbnNpdmUpIHtcclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlZnJlc2goKSwgNTApO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIHRvZG86IHJlbW92ZSB0aGlzIGxpbmUsIGl0IGlzIHByb2R1Y2luZyBmbGlja2VyaW5nXHJcbiAgICB0aGlzLm5nT25EZXN0cm95KCk7XHJcbiAgICB0aGlzLmNoYXJ0ID0gdGhpcy5nZXRDaGFydEJ1aWxkZXIodGhpcy5jdHgvKiwgZGF0YSwgdGhpcy5vcHRpb25zKi8pO1xyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItY2hhcnRzLyIsInNvdXJjZXMiOlsibGliL2Jhc2UtY2hhcnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBV3pDLHFEQUVDOzs7SUFEQyw2Q0FBWTs7Ozs7QUFHZCxzREFpREM7Ozs7Ozs7SUFoREMsOEZBQXVEOzs7Ozs7SUFDdkQsNkZBQXNEOzs7Ozs7SUFFdEQsZ0dBQXlEOzs7Ozs7SUFDekQsK0ZBQXdEOzs7Ozs7SUFFeEQsZ0dBQXlEOzs7Ozs7SUFDekQsK0ZBQXdEOzs7Ozs7SUFFeEQsd0dBQWlFOzs7Ozs7SUFDakUsdUdBQWdFOzs7Ozs7SUFFaEUsdUdBQWdFOzs7Ozs7SUFDaEUsc0dBQStEOzs7Ozs7SUFLL0QsZ0dBQXlEOzs7Ozs7SUFDekQsK0ZBQXdEOzs7Ozs7O0lBR3hELHNHQUF1RTs7Ozs7OztJQUN2RSxxR0FBc0U7Ozs7Ozs7SUFHdEUsOEdBQStFOzs7Ozs7O0lBQy9FLDZHQUE4RTs7Ozs7OztJQUU5RSw2R0FBOEU7Ozs7Ozs7SUFDOUUsNEdBQTZFOzs7Ozs7O0lBSTdFLGtIQUFpRjs7Ozs7OztJQUdqRixpSEFBZ0Y7Ozs7Ozs7SUFHaEYsc0dBQXNFOzs7Ozs7O0lBQ3RFLHFHQUFxRTs7Ozs7OztJQUVyRSx3R0FBa0Y7Ozs7O0lBQ2xGLGtGQUFxQzs7Ozs7OztJQUdyQyxvR0FBNkQ7O0FBVS9ELE1BQU0sT0FBTyxrQkFBa0I7Ozs7SUF1QjdCLFlBQTJCLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFuQjlCLFlBQU8sR0FBeUIs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QU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDN0U7Z0JBQ0QsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQyxFQUFDLENBQUM7U0FDTjtRQUVELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDOzJEQUNxQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztTQUN4RTtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Ozs7O0lBRU8sT0FBTztRQUNiLGlEQUFpRDtRQUNqRCwwQ0FBMEM7UUFDMUMsSUFBSTtRQUVKLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUEsd0JBQXdCLENBQUMsQ0FBQztJQUN0RSxDQUFDOzs7WUFsTEYsU0FBUyxTQUFDOztnQkFFVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixRQUFRLEVBQUUsWUFBWTthQUN2Qjs7OztZQTVFQyxVQUFVOzs7bUJBOEVULEtBQUs7dUJBQ0wsS0FBSztxQkFDTCxLQUFLO3NCQUNMLEtBQUs7d0JBQ0wsS0FBSztxQkFDTCxLQUFLO3FCQUNMLEtBQUs7eUJBRUwsTUFBTTt5QkFDTixNQUFNOzs7O0lBVFAsa0NBQTJDOztJQUMzQyxzQ0FBa0Q7O0lBQ2xELG9DQUFpQzs7SUFDakMscUNBQW1EOztJQUNuRCx1Q0FBNkM7O0lBQzdDLG9DQUFnQzs7SUFDaEMsb0NBQWdDOztJQUVoQyx3Q0FBc0c7O0lBQ3RHLHdDQUFvRzs7SUFFcEcsaUNBQW1COztJQUNuQixtQ0FBb0I7Ozs7O0lBQ3BCLHNDQUF5Qjs7Ozs7SUFTTixxQ0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERpcmVjdGl2ZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBjaGFydEpzIGZyb20gJ2NoYXJ0LmpzJztcclxuaW1wb3J0IHsgZ2V0Q29sb3JzIH0gZnJvbSAnLi9nZXQtY29sb3JzJztcclxuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuL2NvbG9yJztcclxuXHJcbmV4cG9ydCB0eXBlIFNpbmdsZURhdGFTZXQgPSAobnVtYmVyW10gfCBjaGFydEpzLkNoYXJ0UG9pbnRbXSk7XHJcbmV4cG9ydCB0eXBlIE11bHRpRGF0YVNldCA9IChudW1iZXJbXSB8IGNoYXJ0SnMuQ2hhcnRQb2ludFtdKVtdO1xyXG5leHBvcnQgdHlwZSBTaW5nbGVPck11bHRpRGF0YVNldCA9IFNpbmdsZURhdGFTZXQgfCBNdWx0aURhdGFTZXQ7XHJcblxyXG4vKiBUaGUgZm9sbG93aW5nIHR3byB0eXBlcyBhcmUgY29waWVkIGZyb20gQHR5cGVzL2NoYXJ0LmpzIGJlY2F1c2UgdGhleSBhcmUgbm90XHJcbiAqIGV4cG9ydGVkIGZyb20gdGhlcmUuIFRoZXJlIGlzIGEgcHVsbCByZXF1ZXN0IHRvIGRlZmluaXRlbHkgdHlwZSByZXF1ZXN0aW5nIHRoaXNcclxuICogY2hhbmdlIChQUiAjMzM2MTQgaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvcHVsbC8zMzYxNClcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luU2VydmljZUdsb2JhbFJlZ2lzdHJhdGlvbiB7XHJcbiAgaWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luU2VydmljZVJlZ2lzdHJhdGlvbk9wdGlvbnMge1xyXG4gIGJlZm9yZUluaXQ/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlckluaXQ/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuXHJcbiAgYmVmb3JlVXBkYXRlPyhjaGFydEluc3RhbmNlOiBDaGFydCwgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcbiAgYWZ0ZXJVcGRhdGU/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuXHJcbiAgYmVmb3JlTGF5b3V0PyhjaGFydEluc3RhbmNlOiBDaGFydCwgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcbiAgYWZ0ZXJMYXlvdXQ/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuXHJcbiAgYmVmb3JlRGF0YXNldHNVcGRhdGU/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlckRhdGFzZXRzVXBkYXRlPyhjaGFydEluc3RhbmNlOiBDaGFydCwgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcblxyXG4gIGJlZm9yZURhdGFzZXRVcGRhdGU/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlckRhdGFzZXRVcGRhdGU/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuXHJcbiAgLy8gVGhpcyBpcyBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGEgcmVuZGVyLiBJdCBpcyBvbmx5IGNhbGxlZCBvbmNlLCBldmVuIGlmXHJcbiAgLy8gdGhlIGFuaW1hdGlvbiB3aWxsIHJ1biBmb3IgYSBudW1iZXIgb2YgZnJhbWVzLiBVc2UgYmVmb3JlRHJhdyBvciBhZnRlckRyYXdcclxuICAvLyB0byBkbyBzb21ldGhpbmcgb24gZWFjaCBhbmltYXRpb24gZnJhbWVcclxuICBiZWZvcmVSZW5kZXI/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlclJlbmRlcj8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICAvLyBFYXNpbmcgaXMgZm9yIGFuaW1hdGlvblxyXG4gIGJlZm9yZURyYXc/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBlYXNpbmc6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcbiAgYWZ0ZXJEcmF3PyhjaGFydEluc3RhbmNlOiBDaGFydCwgZWFzaW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICAvLyBCZWZvcmUgdGhlIGRhdGFzZXRzIGFyZSBkcmF3biBidXQgYWZ0ZXIgc2NhbGVzIGFyZSBkcmF3blxyXG4gIGJlZm9yZURhdGFzZXRzRHJhdz8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIGVhc2luZzogc3RyaW5nLCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlckRhdGFzZXRzRHJhdz8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIGVhc2luZzogc3RyaW5nLCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuXHJcbiAgYmVmb3JlRGF0YXNldERyYXc/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBlYXNpbmc6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcbiAgYWZ0ZXJEYXRhc2V0RHJhdz8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIGVhc2luZzogc3RyaW5nLCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuXHJcbiAgLy8gQ2FsbGVkIGJlZm9yZSBkcmF3aW5nIHRoZSBgdG9vbHRpcGAuIElmIGFueSBwbHVnaW4gcmV0dXJucyBgZmFsc2VgLFxyXG4gIC8vIHRoZSB0b29sdGlwIGRyYXdpbmcgaXMgY2FuY2VsbGVkIHVudGlsIGFub3RoZXIgYHJlbmRlcmAgaXMgdHJpZ2dlcmVkLlxyXG4gIGJlZm9yZVRvb2x0aXBEcmF3PyhjaGFydEluc3RhbmNlOiBDaGFydCwgdG9vbHRpcERhdGE/OiBhbnksIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG4gIC8vIENhbGxlZCBhZnRlciBkcmF3aW5nIHRoZSBgdG9vbHRpcGAuIE5vdGUgdGhhdCB0aGlzIGhvb2sgd2lsbCBub3QsXHJcbiAgLy8gYmUgY2FsbGVkIGlmIHRoZSB0b29sdGlwIGRyYXdpbmcgaGFzIGJlZW4gcHJldmlvdXNseSBjYW5jZWxsZWQuXHJcbiAgYWZ0ZXJUb29sdGlwRHJhdz8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIHRvb2x0aXBEYXRhPzogYW55LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuXHJcbiAgLy8gQ2FsbGVkIHdoZW4gYW4gZXZlbnQgb2NjdXJzIG9uIHRoZSBjaGFydFxyXG4gIGJlZm9yZUV2ZW50PyhjaGFydEluc3RhbmNlOiBDaGFydCwgZXZlbnQ6IEV2ZW50LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlckV2ZW50PyhjaGFydEluc3RhbmNlOiBDaGFydCwgZXZlbnQ6IEV2ZW50LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuXHJcbiAgcmVzaXplPyhjaGFydEluc3RhbmNlOiBDaGFydCwgbmV3Q2hhcnRTaXplOiBDaGFydC5DaGFydFNpemUsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG4gIGRlc3Ryb3k/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0KTogdm9pZDtcclxuXHJcbiAgLyoqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMi41LjAuIFVzZSBgYWZ0ZXJMYXlvdXRgIGluc3RlYWQuICovXHJcbiAgYWZ0ZXJTY2FsZVVwZGF0ZT8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQbHVnaW5TZXJ2aWNlR2xvYmFsUmVnaXN0cmF0aW9uQW5kT3B0aW9ucyA9IFBsdWdpblNlcnZpY2VHbG9iYWxSZWdpc3RyYXRpb24gJiBQbHVnaW5TZXJ2aWNlUmVnaXN0cmF0aW9uT3B0aW9ucztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2NhbnZhc1tiYXNlQ2hhcnRdJyxcclxuICBleHBvcnRBczogJ2Jhc2UtY2hhcnQnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlQ2hhcnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgT25Jbml0IHtcclxuICBASW5wdXQoKSBwdWJsaWMgZGF0YTogU2luZ2xlT3JNdWx0aURhdGFTZXQ7XHJcbiAgQElucHV0KCkgcHVibGljIGRhdGFzZXRzOiBjaGFydEpzLkNoYXJ0RGF0YVNldHNbXTtcclxuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxzOiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBwdWJsaWMgb3B0aW9uczogY2hhcnRKcy5DaGFydE9wdGlvbnMgPSB7fTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2hhcnRUeXBlOiBjaGFydEpzLkNoYXJ0VHlwZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY29sb3JzOiBDb2xvcltdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsZWdlbmQ6IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhcnRDbGljazogRXZlbnRFbWl0dGVyPHsgZXZlbnQ/OiBNb3VzZUV2ZW50LCBhY3RpdmU/OiB7fVtdIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhcnRIb3ZlcjogRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IE1vdXNlRXZlbnQsIGFjdGl2ZToge31bXSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHVibGljIGN0eDogc3RyaW5nO1xyXG4gIHB1YmxpYyBjaGFydDogQ2hhcnQ7XHJcbiAgcHJpdmF0ZSBpbml0RmxhZyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlciBhIHBsdWdpbi5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyUGx1Z2luKHBsdWdpbjogUGx1Z2luU2VydmljZUdsb2JhbFJlZ2lzdHJhdGlvbkFuZE9wdGlvbnMpIHtcclxuICAgIGNoYXJ0SnMuQ2hhcnQucGx1Z2lucy5yZWdpc3RlcihwbHVnaW4pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY3R4ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIHRoaXMuaW5pdEZsYWcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZGF0YSB8fCB0aGlzLmRhdGFzZXRzKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmICh0aGlzLmluaXRGbGFnKSB7XHJcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBjaGFuZ2VzIGFyZSBpbiB0aGUgZGF0YSBvciBkYXRhc2V0c1xyXG4gICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZGF0YScpIHx8IGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2RhdGFzZXRzJykpIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5kYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNoYXJ0RGF0YShjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDaGFydERhdGEoY2hhbmdlcy5kYXRhc2V0cy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jaGFydC51cGRhdGUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBvdGhlcndpc2UgcmVidWlsZCB0aGUgY2hhcnRcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuY2hhcnQpIHtcclxuICAgICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMuY2hhcnQgPSB2b2lkIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2hhcnRCdWlsZGVyKGN0eDogc3RyaW5nLyosIGRhdGE6YW55W10sIG9wdGlvbnM6YW55Ki8pOiBDaGFydCB7XHJcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuZ2V0RGF0YXNldHMoKTtcclxuXHJcbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zKTtcclxuICAgIGlmICh0aGlzLmxlZ2VuZCA9PT0gZmFsc2UpIHtcclxuICAgICAgb3B0aW9ucy5sZWdlbmQgPSB7IGRpc3BsYXk6IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICAvLyBob29rIGZvciBvbkhvdmVyIGFuZCBvbkNsaWNrIGV2ZW50c1xyXG4gICAgb3B0aW9ucy5ob3ZlciA9IG9wdGlvbnMuaG92ZXIgfHwge307XHJcbiAgICBpZiAoIW9wdGlvbnMuaG92ZXIub25Ib3Zlcikge1xyXG4gICAgICBvcHRpb25zLmhvdmVyLm9uSG92ZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGFjdGl2ZToge31bXSkgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmUgJiYgIWFjdGl2ZS5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFydEhvdmVyLmVtaXQoeyBldmVudCwgYWN0aXZlIH0pO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghb3B0aW9ucy5vbkNsaWNrKSB7XHJcbiAgICAgIG9wdGlvbnMub25DbGljayA9IChldmVudD86IE1vdXNlRXZlbnQsIGFjdGl2ZT86IHt9W10pID0+IHtcclxuICAgICAgICB0aGlzLmNoYXJ0Q2xpY2suZW1pdCh7IGV2ZW50LCBhY3RpdmUgfSk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2hhcnRDb25maWc6IGNoYXJ0SnMuQ2hhcnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICB0eXBlOiB0aGlzLmNoYXJ0VHlwZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxhYmVsczogdGhpcy5sYWJlbHMsXHJcbiAgICAgICAgZGF0YXNldHNcclxuICAgICAgfSxcclxuICAgICAgb3B0aW9uc1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbmV3IGNoYXJ0SnMuQ2hhcnQoY3R4LCBjaGFydENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQ2hhcnREYXRhU2V0c0FycmF5KHY6IFNpbmdsZU9yTXVsdGlEYXRhU2V0IHwgY2hhcnRKcy5DaGFydERhdGFTZXRzW10pOiB2IGlzIGNoYXJ0SnMuQ2hhcnREYXRhU2V0c1tdIHtcclxuICAgIGNvbnN0IGVsbSA9IHZbMF07XHJcbiAgICByZXR1cm4gKHR5cGVvZiAoZWxtKSA9PT0gJ29iamVjdCcpICYmICdkYXRhJyBpbiBlbG07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNoYXJ0RGF0YShuZXdEYXRhVmFsdWVzOiBTaW5nbGVPck11bHRpRGF0YVNldCB8IGNoYXJ0SnMuQ2hhcnREYXRhU2V0c1tdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0NoYXJ0RGF0YVNldHNBcnJheShuZXdEYXRhVmFsdWVzKSkge1xyXG4gICAgICBpZiAobmV3RGF0YVZhbHVlcy5sZW5ndGggPT09IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCwgaTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBkYXRhc2V0LmRhdGEgPSBuZXdEYXRhVmFsdWVzW2ldLmRhdGE7XHJcbiAgICAgICAgICBpZiAobmV3RGF0YVZhbHVlc1tpXS5sYWJlbCkge1xyXG4gICAgICAgICAgICBkYXRhc2V0LmxhYmVsID0gbmV3RGF0YVZhbHVlc1tpXS5sYWJlbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMgPSBbLi4ubmV3RGF0YVZhbHVlc107XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNTaW5nbGVEYXRhU2V0KG5ld0RhdGFWYWx1ZXMpKSB7XHJcbiAgICAgIGlmIChuZXdEYXRhVmFsdWVzLmxlbmd0aCA9PT0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGRhdGFzZXQuZGF0YSA9IG5ld0RhdGFWYWx1ZXNbaV07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gbmV3RGF0YVZhbHVlcy5tYXAoKGRhdGE6IG51bWJlcltdLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geyBkYXRhLCBsYWJlbDogdGhpcy5sYWJlbHNbaW5kZXhdIHx8IGBMYWJlbCAke2luZGV4fWAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzWzBdLmRhdGEgPSBuZXdEYXRhVmFsdWVzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1NpbmdsZURhdGFTZXQoZGF0YTogU2luZ2xlT3JNdWx0aURhdGFTZXQpOiBkYXRhIGlzIFNpbmdsZURhdGFTZXQge1xyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YVswXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGFzZXRzKCkge1xyXG4gICAgbGV0IGRhdGFzZXRzOiBjaGFydEpzLkNoYXJ0RGF0YVNldHNbXSA9IHZvaWQgMDtcclxuICAgIC8vIGluIGNhc2UgaWYgZGF0YXNldHMgaXMgbm90IHByb3ZpZGVkLCBidXQgZGF0YSBpcyBwcmVzZW50XHJcbiAgICBpZiAoIXRoaXMuZGF0YXNldHMgfHwgIXRoaXMuZGF0YXNldHMubGVuZ3RoICYmICh0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmxlbmd0aCkpIHtcclxuICAgICAgaWYgKCF0aGlzLmlzU2luZ2xlRGF0YVNldCh0aGlzLmRhdGEpKSB7XHJcbiAgICAgICAgZGF0YXNldHMgPSB0aGlzLmRhdGEubWFwKChkYXRhOiBudW1iZXJbXSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHsgZGF0YSwgbGFiZWw6IHRoaXMubGFiZWxzW2luZGV4XSB8fCBgTGFiZWwgJHtpbmRleH1gIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YXNldHMgPSBbeyBkYXRhOiB0aGlzLmRhdGEsIGxhYmVsOiBgTGFiZWwgMGAgfV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhc2V0cyAmJiB0aGlzLmRhdGFzZXRzLmxlbmd0aCB8fFxyXG4gICAgICAoZGF0YXNldHMgJiYgZGF0YXNldHMubGVuZ3RoKSkge1xyXG4gICAgICBkYXRhc2V0cyA9ICh0aGlzLmRhdGFzZXRzIHx8IGRhdGFzZXRzKVxyXG4gICAgICAgIC5tYXAoKGVsbTogY2hhcnRKcy5DaGFydERhdGFTZXRzLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuZXdFbG06IGNoYXJ0SnMuQ2hhcnREYXRhU2V0cyA9IE9iamVjdC5hc3NpZ24oe30sIGVsbSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb2xvcnMgJiYgdGhpcy5jb2xvcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obmV3RWxtLCB0aGlzLmNvbG9yc1tpbmRleF0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihuZXdFbG0sIGdldENvbG9ycyh0aGlzLmNoYXJ0VHlwZSwgaW5kZXgsIG5ld0VsbS5kYXRhLmxlbmd0aCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG5ld0VsbTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWRhdGFzZXRzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbmctY2hhcnRzIGNvbmZpZ3VyYXRpb24gZXJyb3IsXHJcbiAgICAgIGRhdGEgb3IgZGF0YXNldHMgZmllbGQgYXJlIHJlcXVpcmVkIHRvIHJlbmRlciBjaGFyICR7dGhpcy5jaGFydFR5cGV9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGFzZXRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoKCkge1xyXG4gICAgLy8gaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZSkge1xyXG4gICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVmcmVzaCgpLCA1MCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gdG9kbzogcmVtb3ZlIHRoaXMgbGluZSwgaXQgaXMgcHJvZHVjaW5nIGZsaWNrZXJpbmdcclxuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcclxuICAgIHRoaXMuY2hhcnQgPSB0aGlzLmdldENoYXJ0QnVpbGRlcih0aGlzLmN0eC8qLCBkYXRhLCB0aGlzLm9wdGlvbnMqLyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==

@@ -10,2 +10,4 @@ /**

export { BaseChartDirective } from './lib/base-chart.directive';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi1jaGFydHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSw2QkFBYyxxQkFBcUIsQ0FBQztBQUNwQyxtQ0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZzItY2hhcnRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2hhcnQuZGlyZWN0aXZlJztcclxuIl19
export {} from './lib/color';
export {} from './lib/colors';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi1jaGFydHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSw2QkFBYyxxQkFBcUIsQ0FBQztBQUNwQyxtQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxlQUFjLGFBQWEsQ0FBQztBQUM1QixlQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZzItY2hhcnRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2hhcnQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29sb3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2xvcnMnO1xyXG4iXX0=

@@ -7,7 +7,182 @@ /**

import { Directive, Input, Output, EventEmitter, ElementRef } from '@angular/core';
import { Chart } from 'chart.js';
import * as chartJs from 'chart.js';
import { getColors } from './get-colors';
/**
* @record
*/
export function PluginServiceGlobalRegistration() { }
if (false) {
/** @type {?|undefined} */
PluginServiceGlobalRegistration.prototype.id;
}
/**
* @record
*/
export function PluginServiceRegistrationOptions() { }
if (false) {
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeInit = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterInit = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeLayout = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterLayout = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDatasetsUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDatasetsUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDatasetUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDatasetUpdate = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeRender = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterRender = function (chartInstance, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDatasetsDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDatasetsDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeDatasetDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?} easing
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterDatasetDraw = function (chartInstance, easing, options) { };
/**
* @param {?} chartInstance
* @param {?=} tooltipData
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeTooltipDraw = function (chartInstance, tooltipData, options) { };
/**
* @param {?} chartInstance
* @param {?=} tooltipData
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterTooltipDraw = function (chartInstance, tooltipData, options) { };
/**
* @param {?} chartInstance
* @param {?} event
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.beforeEvent = function (chartInstance, event, options) { };
/**
* @param {?} chartInstance
* @param {?} event
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterEvent = function (chartInstance, event, options) { };
/**
* @param {?} chartInstance
* @param {?} newChartSize
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.resize = function (chartInstance, newChartSize, options) { };
/**
* @param {?} chartInstance
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.destroy = function (chartInstance) { };
/**
* @deprecated since version 2.5.0. Use `afterLayout` instead.
* @param {?} chartInstance
* @param {?=} options
* @return {?}
*/
PluginServiceRegistrationOptions.prototype.afterScaleUpdate = function (chartInstance, options) { };
}
var BaseChartDirective = /** @class */ (function () {
function BaseChartDirective(element) {
this.labels = [];
this.element = element;
this.options = {};

@@ -17,3 +192,2 @@ this.chartClick = new EventEmitter();

this.initFlag = false;
this.element = element;
}

@@ -34,3 +208,3 @@ /**

function (plugin) {
Chart.plugins.register(plugin);
chartJs.Chart.plugins.register(plugin);
};

@@ -45,3 +219,2 @@ /**

this.ctx = this.element.nativeElement.getContext('2d');
this.cvs = this.element.nativeElement;
this.initFlag = true;

@@ -98,3 +271,3 @@ if (this.data || this.datasets) {

*/
function (ctx /*, data:Array<any>, options:any*/) {
function (ctx /*, data:any[], options:any*/) {
var _this = this;

@@ -108,14 +281,15 @@ /** @type {?} */

}
// hock for onHover and onClick events
// hook for onHover and onClick events
options.hover = options.hover || {};
if (!options.hover.onHover) {
options.hover.onHover = (/**
* @param {?} event
* @param {?} active
* @return {?}
*/
function (active) {
function (event, active) {
if (active && !active.length) {
return;
}
_this.chartHover.emit({ active: active });
_this.chartHover.emit({ event: event, active: active });
});

@@ -125,4 +299,4 @@ }

options.onClick = (/**
* @param {?} event
* @param {?} active
* @param {?=} event
* @param {?=} active
* @return {?}

@@ -135,3 +309,3 @@ */

/** @type {?} */
var opts = {
var chartConfig = {
type: this.chartType,

@@ -144,6 +318,21 @@ data: {

};
return new Chart(ctx, opts);
return new chartJs.Chart(ctx, chartConfig);
};
/**
* @private
* @param {?} v
* @return {?}
*/
BaseChartDirective.prototype.isChartDataSetsArray = /**
* @private
* @param {?} v
* @return {?}
*/
function (v) {
/** @type {?} */
var elm = v[0];
return (typeof (elm) === 'object') && 'data' in elm;
};
/**
* @private
* @param {?} newDataValues

@@ -158,3 +347,4 @@ * @return {?}

function (newDataValues) {
if (Array.isArray(newDataValues[0].data)) {
var _this = this;
if (this.isChartDataSetsArray(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {

@@ -177,2 +367,24 @@ this.chart.data.datasets.forEach((/**

}
else if (!this.isSingleDataSet(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {
this.chart.data.datasets.forEach((/**
* @param {?} dataset
* @param {?} i
* @return {?}
*/
function (dataset, i) {
dataset.data = newDataValues[i];
}));
}
else {
this.chart.data.datasets = newDataValues.map((/**
* @param {?} data
* @param {?} index
* @return {?}
*/
function (data, index) {
return { data: data, label: _this.labels[index] || "Label " + index };
}));
}
}
else {

@@ -184,4 +396,17 @@ this.chart.data.datasets[0].data = newDataValues;

* @private
* @param {?} data
* @return {?}
*/
BaseChartDirective.prototype.isSingleDataSet = /**
* @private
* @param {?} data
* @return {?}
*/
function (data) {
return Array.isArray(data[0]);
};
/**
* @private
* @return {?}
*/
BaseChartDirective.prototype.getDatasets = /**

@@ -197,4 +422,4 @@ * @private

if (!this.datasets || !this.datasets.length && (this.data && this.data.length)) {
if (Array.isArray(this.data[0])) {
datasets = ((/** @type {?} */ (this.data))).map((/**
if (!this.isSingleDataSet(this.data)) {
datasets = this.data.map((/**
* @param {?} data

@@ -305,7 +530,2 @@ * @param {?} index

*/
BaseChartDirective.prototype.cvs;
/**
* @type {?}
* @private
*/
BaseChartDirective.prototype.initFlag;

@@ -318,2 +538,2 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItY2hhcnRzLyIsInNvdXJjZXMiOlsibGliL2Jhc2UtY2hhcnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDO0lBK0JFLDRCQUFtQixPQUFtQjtRQXZCdEIsV0FBTSxHQUFlLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQVEsRUFBRSxDQUFDO1FBS2pCLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFLNUQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVl2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBVEQ7O09BRUc7Ozs7OztJQUNXLGlDQUFjOzs7OztJQUE1QixVQUE2QixNQUFXO1FBQ3RDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Ozs7SUFNTSxxQ0FBUTs7O0lBQWY7UUFDRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzlCLElBQUks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UUFDakQsMENBQTBDO1FBQzFDLElBQUk7UUFFSixxREFBcUQ7UUFDckQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBLHdCQUF3QixDQUFDLENBQUM7SUFDdEUsQ0FBQzs7Z0JBdEtGLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLFlBQVk7aUJBQ3ZCOzs7O2dCQVZDLFVBQVU7Ozt1QkFZVCxLQUFLOzJCQUNMLEtBQUs7eUJBQ0wsS0FBSzswQkFDTCxLQUFLOzRCQUNMLEtBQUs7eUJBQ0wsS0FBSzt5QkFDTCxLQUFLOzZCQUVMLE1BQU07NkJBQ04sTUFBTTs7SUF3SlQseUJBQUM7Q0FBQSxBQXZLRCxJQXVLQztTQWxLWSxrQkFBa0I7OztJQUM3QixrQ0FBdUM7O0lBQ3ZDLHNDQUFnQzs7SUFDaEMsb0NBQXdDOztJQUN4QyxxQ0FBa0M7O0lBQ2xDLHVDQUFrQzs7SUFDbEMsb0NBQW1DOztJQUNuQyxvQ0FBZ0M7O0lBRWhDLHdDQUFvRTs7SUFDcEUsd0NBQW9FOztJQUVwRSxpQ0FBZ0I7O0lBQ2hCLG1DQUFrQjs7Ozs7SUFDbEIsaUNBQWlCOzs7OztJQUNqQixzQ0FBeUI7Ozs7O0lBRXpCLHFDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgRWxlbWVudFJlZixcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnY2hhcnQuanMnO1xyXG5pbXBvcnQgeyBnZXRDb2xvcnMgfSBmcm9tICcuL2dldC1jb2xvcnMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnY2FudmFzW2Jhc2VDaGFydF0nLFxyXG4gIGV4cG9ydEFzOiAnYmFzZS1jaGFydCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDaGFydERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRhOiBudW1iZXJbXSB8IGFueVtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRhc2V0czogYW55W107XHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25zOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2hhcnRUeXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGNvbG9yczogQXJyYXk8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgbGVnZW5kOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYXJ0Q2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhcnRIb3ZlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHB1YmxpYyBjdHg6IGFueTtcclxuICBwdWJsaWMgY2hhcnQ6IGFueTtcclxuICBwcml2YXRlIGN2czogYW55O1xyXG4gIHByaXZhdGUgaW5pdEZsYWcgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlciBhIHBsdWdpbi5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyUGx1Z2luKHBsdWdpbjogYW55KTogdm9pZCB7XHJcbiAgICBDaGFydC5wbHVnaW5zLnJlZ2lzdGVyKHBsdWdpbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiBhbnkge1xyXG4gICAgdGhpcy5jdHggPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgdGhpcy5jdnMgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuaW5pdEZsYWcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZGF0YSB8fCB0aGlzLmRhdGFzZXRzKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmluaXRGbGFnKSB7XHJcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBjaGFuZ2VzIGFyZSBpbiB0aGUgZGF0YSBvciBkYXRhc2V0c1xyXG4gICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZGF0YScpIHx8IGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2RhdGFzZXRzJykpIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5kYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNoYXJ0RGF0YShjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDaGFydERhdGEoY2hhbmdlcy5kYXRhc2V0cy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jaGFydC51cGRhdGUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBvdGhlcndpc2UgcmVidWlsZCB0aGUgY2hhcnRcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5jaGFydCkge1xyXG4gICAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5jaGFydCA9IHZvaWQgMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDaGFydEJ1aWxkZXIoY3R4OiBhbnkvKiwgZGF0YTpBcnJheTxhbnk+LCBvcHRpb25zOmFueSovKTogYW55IHtcclxuICAgIGNvbnN0IGRhdGFzZXRzOiBhbnkgPSB0aGlzLmdldERhdGFzZXRzKCk7XHJcblxyXG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zKTtcclxuICAgIGlmICh0aGlzLmxlZ2VuZCA9PT0gZmFsc2UpIHtcclxuICAgICAgb3B0aW9ucy5sZWdlbmQgPSB7IGRpc3BsYXk6IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICAvLyBob2NrIGZvciBvbkhvdmVyIGFuZCBvbkNsaWNrIGV2ZW50c1xyXG4gICAgb3B0aW9ucy5ob3ZlciA9IG9wdGlvbnMuaG92ZXIgfHwge307XHJcbiAgICBpZiAoIW9wdGlvbnMuaG92ZXIub25Ib3Zlcikge1xyXG4gICAgICBvcHRpb25zLmhvdmVyLm9uSG92ZXIgPSAoYWN0aXZlOiBBcnJheTxhbnk+KSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZSAmJiAhYWN0aXZlLmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYXJ0SG92ZXIuZW1pdCh7IGFjdGl2ZSB9KTtcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW9wdGlvbnMub25DbGljaykge1xyXG4gICAgICBvcHRpb25zLm9uQ2xpY2sgPSAoZXZlbnQ6IGFueSwgYWN0aXZlOiBBcnJheTxhbnk+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGFydENsaWNrLmVtaXQoeyBldmVudCwgYWN0aXZlIH0pO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wdHMgPSB7XHJcbiAgICAgIHR5cGU6IHRoaXMuY2hhcnRUeXBlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGFiZWxzOiB0aGlzLmxhYmVscyxcclxuICAgICAgICBkYXRhc2V0c1xyXG4gICAgICB9LFxyXG4gICAgICBvcHRpb25zXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBuZXcgQ2hhcnQoY3R4LCBvcHRzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ2hhcnREYXRhKG5ld0RhdGFWYWx1ZXM6IG51bWJlcltdIHwgYW55W10pOiB2b2lkIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KG5ld0RhdGFWYWx1ZXNbMF0uZGF0YSkpIHtcclxuICAgICAgaWYgKG5ld0RhdGFWYWx1ZXMubGVuZ3RoID09PSB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQ6IGFueSwgaTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBkYXRhc2V0LmRhdGEgPSBuZXdEYXRhVmFsdWVzW2ldLmRhdGE7XHJcblxyXG4gICAgICAgICAgaWYgKG5ld0RhdGFWYWx1ZXNbaV0ubGFiZWwpIHtcclxuICAgICAgICAgICAgZGF0YXNldC5sYWJlbCA9IG5ld0RhdGFWYWx1ZXNbaV0ubGFiZWw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gWy4uLm5ld0RhdGFWYWx1ZXNdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbMF0uZGF0YSA9IG5ld0RhdGFWYWx1ZXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGFzZXRzKCk6IGFueSB7XHJcbiAgICBsZXQgZGF0YXNldHM6IGFueSA9IHZvaWQgMDtcclxuICAgIC8vIGluIGNhc2UgaWYgZGF0YXNldHMgaXMgbm90IHByb3ZpZGVkLCBidXQgZGF0YSBpcyBwcmVzZW50XHJcbiAgICBpZiAoIXRoaXMuZGF0YXNldHMgfHwgIXRoaXMuZGF0YXNldHMubGVuZ3RoICYmICh0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmxlbmd0aCkpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhWzBdKSkge1xyXG4gICAgICAgIGRhdGFzZXRzID0gKHRoaXMuZGF0YSBhcyBBcnJheTxudW1iZXJbXT4pLm1hcCgoZGF0YTogbnVtYmVyW10sIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IGRhdGEsIGxhYmVsOiB0aGlzLmxhYmVsc1tpbmRleF0gfHwgYExhYmVsICR7aW5kZXh9YCB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGFzZXRzID0gW3sgZGF0YTogdGhpcy5kYXRhLCBsYWJlbDogYExhYmVsIDBgIH1dO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YXNldHMgJiYgdGhpcy5kYXRhc2V0cy5sZW5ndGggfHxcclxuICAgICAgKGRhdGFzZXRzICYmIGRhdGFzZXRzLmxlbmd0aCkpIHtcclxuICAgICAgZGF0YXNldHMgPSAodGhpcy5kYXRhc2V0cyB8fCBkYXRhc2V0cylcclxuICAgICAgICAubWFwKChlbG06IG51bWJlciwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbmV3RWxtOiBhbnkgPSBPYmplY3QuYXNzaWduKHt9LCBlbG0pO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29sb3JzICYmIHRoaXMuY29sb3JzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG5ld0VsbSwgdGhpcy5jb2xvcnNbaW5kZXhdKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obmV3RWxtLCBnZXRDb2xvcnModGhpcy5jaGFydFR5cGUsIGluZGV4LCBuZXdFbG0uZGF0YS5sZW5ndGgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBuZXdFbG07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFkYXRhc2V0cykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG5nLWNoYXJ0cyBjb25maWd1cmF0aW9uIGVycm9yLFxyXG4gICAgICBkYXRhIG9yIGRhdGFzZXRzIGZpZWxkIGFyZSByZXF1aXJlZCB0byByZW5kZXIgY2hhciAke3RoaXMuY2hhcnRUeXBlfWApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRhc2V0cztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaCgpOiBhbnkge1xyXG4gICAgLy8gaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZSkge1xyXG4gICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVmcmVzaCgpLCA1MCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gdG9kbzogcmVtb3ZlIHRoaXMgbGluZSwgaXQgaXMgcHJvZHVjaW5nIGZsaWNrZXJpbmdcclxuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcclxuICAgIHRoaXMuY2hhcnQgPSB0aGlzLmdldENoYXJ0QnVpbGRlcih0aGlzLmN0eC8qLCBkYXRhLCB0aGlzLm9wdGlvbnMqLyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItY2hhcnRzLyIsInNvdXJjZXMiOlsibGliL2Jhc2UtY2hhcnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE9BQU8sTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQVd6QyxxREFFQzs7O0lBREMsNkNBQVk7Ozs7O0FBR2Qsc0RBaURDOzs7Ozs7O0lBaERDLDhGQUF1RDs7Ozs7O0lBQ3ZELDZGQUFzRDs7Ozs7O0lBRXRELGdHQUF5RDs7Ozs7O0lBQ3pELCtGQUF3RDs7Ozs7O0lBRXhELGdHQUF5RDs7Ozs7O0lBQ3pELCtGQUF3RDs7Ozs7O0lBRXhELHdHQUFpRTs7Ozs7O0lBQ2pFLHVHQUFnRTs7Ozs7O0lBRWhFLHVHQUFnRTs7Ozs7O0lBQ2hFLHNHQUErRDs7Ozs7O0lBSy9ELGdHQUF5RDs7Ozs7O0lBQ3pELCtGQUF3RDs7Ozs7OztJQUd4RCxzR0FBdUU7Ozs7Ozs7SUFDdkUscUdBQXNFOzs7Ozs7O0lBR3RFLDhHQUErRTs7Ozs7OztJQUMvRSw2R0FBOEU7Ozs7Ozs7SUFFOUUsNkdBQThFOzs7Ozs7O0lBQzlFLDRHQUE2RTs7Ozs7OztJQUk3RSxrSEFBaUY7Ozs7Ozs7SUFHakYsaUhBQWdGOzs7Ozs7O0lBR2hGLHNHQUFzRTs7Ozs7OztJQUN0RSxxR0FBcUU7Ozs7Ozs7SUFFckUsd0dBQWtGOzs7OztJQUNsRixrRkFBcUM7Ozs7Ozs7SUFHckMsb0dBQTZEOztBQUsvRDtJQTRCRSw0QkFBMkIsT0FBbUI7UUFBbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQW5COUIsWUFBTyxHQUF5QixFQUFFLENBQUM7UUFLbEMsZUFB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ZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgRWxlbWVudFJlZixcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIGNoYXJ0SnMgZnJvbSAnY2hhcnQuanMnO1xyXG5pbXBvcnQgeyBnZXRDb2xvcnMgfSBmcm9tICcuL2dldC1jb2xvcnMnO1xyXG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJy4vY29sb3InO1xyXG5cclxuZXhwb3J0IHR5cGUgU2luZ2xlRGF0YVNldCA9IChudW1iZXJbXSB8IGNoYXJ0SnMuQ2hhcnRQb2ludFtdKTtcclxuZXhwb3J0IHR5cGUgTXVsdGlEYXRhU2V0ID0gKG51bWJlcltdIHwgY2hhcnRKcy5DaGFydFBvaW50W10pW107XHJcbmV4cG9ydCB0eXBlIFNpbmdsZU9yTXVsdGlEYXRhU2V0ID0gU2luZ2xlRGF0YVNldCB8IE11bHRpRGF0YVNldDtcclxuXHJcbi8qIFRoZSBmb2xsb3dpbmcgdHdvIHR5cGVzIGFyZSBjb3BpZWQgZnJvbSBAdHlwZXMvY2hhcnQuanMgYmVjYXVzZSB0aGV5IGFyZSBub3RcclxuICogZXhwb3J0ZWQgZnJvbSB0aGVyZS4gVGhlcmUgaXMgYSBwdWxsIHJlcXVlc3QgdG8gZGVmaW5pdGVseSB0eXBlIHJlcXVlc3RpbmcgdGhpc1xyXG4gKiBjaGFuZ2UgKFBSICMzMzYxNCBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZC9wdWxsLzMzNjE0KVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TZXJ2aWNlR2xvYmFsUmVnaXN0cmF0aW9uIHtcclxuICBpZD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TZXJ2aWNlUmVnaXN0cmF0aW9uT3B0aW9ucyB7XHJcbiAgYmVmb3JlSW5pdD8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG4gIGFmdGVySW5pdD8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICBiZWZvcmVVcGRhdGU/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlclVwZGF0ZT8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICBiZWZvcmVMYXlvdXQ/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlckxheW91dD8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICBiZWZvcmVEYXRhc2V0c1VwZGF0ZT8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG4gIGFmdGVyRGF0YXNldHNVcGRhdGU/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuXHJcbiAgYmVmb3JlRGF0YXNldFVwZGF0ZT8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG4gIGFmdGVyRGF0YXNldFVwZGF0ZT8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICAvLyBUaGlzIGlzIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgYSByZW5kZXIuIEl0IGlzIG9ubHkgY2FsbGVkIG9uY2UsIGV2ZW4gaWZcclxuICAvLyB0aGUgYW5pbWF0aW9uIHdpbGwgcnVuIGZvciBhIG51bWJlciBvZiBmcmFtZXMuIFVzZSBiZWZvcmVEcmF3IG9yIGFmdGVyRHJhd1xyXG4gIC8vIHRvIGRvIHNvbWV0aGluZyBvbiBlYWNoIGFuaW1hdGlvbiBmcmFtZVxyXG4gIGJlZm9yZVJlbmRlcj8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG4gIGFmdGVyUmVuZGVyPyhjaGFydEluc3RhbmNlOiBDaGFydCwgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcblxyXG4gIC8vIEVhc2luZyBpcyBmb3IgYW5pbWF0aW9uXHJcbiAgYmVmb3JlRHJhdz8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIGVhc2luZzogc3RyaW5nLCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlckRyYXc/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBlYXNpbmc6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcblxyXG4gIC8vIEJlZm9yZSB0aGUgZGF0YXNldHMgYXJlIGRyYXduIGJ1dCBhZnRlciBzY2FsZXMgYXJlIGRyYXduXHJcbiAgYmVmb3JlRGF0YXNldHNEcmF3PyhjaGFydEluc3RhbmNlOiBDaGFydCwgZWFzaW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG4gIGFmdGVyRGF0YXNldHNEcmF3PyhjaGFydEluc3RhbmNlOiBDaGFydCwgZWFzaW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICBiZWZvcmVEYXRhc2V0RHJhdz8oY2hhcnRJbnN0YW5jZTogQ2hhcnQsIGVhc2luZzogc3RyaW5nLCBvcHRpb25zPzogYW55KTogdm9pZDtcclxuICBhZnRlckRhdGFzZXREcmF3PyhjaGFydEluc3RhbmNlOiBDaGFydCwgZWFzaW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICAvLyBDYWxsZWQgYmVmb3JlIGRyYXdpbmcgdGhlIGB0b29sdGlwYC4gSWYgYW55IHBsdWdpbiByZXR1cm5zIGBmYWxzZWAsXHJcbiAgLy8gdGhlIHRvb2x0aXAgZHJhd2luZyBpcyBjYW5jZWxsZWQgdW50aWwgYW5vdGhlciBgcmVuZGVyYCBpcyB0cmlnZ2VyZWQuXHJcbiAgYmVmb3JlVG9vbHRpcERyYXc/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCB0b29sdGlwRGF0YT86IGFueSwgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcbiAgLy8gQ2FsbGVkIGFmdGVyIGRyYXdpbmcgdGhlIGB0b29sdGlwYC4gTm90ZSB0aGF0IHRoaXMgaG9vayB3aWxsIG5vdCxcclxuICAvLyBiZSBjYWxsZWQgaWYgdGhlIHRvb2x0aXAgZHJhd2luZyBoYXMgYmVlbiBwcmV2aW91c2x5IGNhbmNlbGxlZC5cclxuICBhZnRlclRvb2x0aXBEcmF3PyhjaGFydEluc3RhbmNlOiBDaGFydCwgdG9vbHRpcERhdGE/OiBhbnksIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICAvLyBDYWxsZWQgd2hlbiBhbiBldmVudCBvY2N1cnMgb24gdGhlIGNoYXJ0XHJcbiAgYmVmb3JlRXZlbnQ/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBldmVudDogRXZlbnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG4gIGFmdGVyRXZlbnQ/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBldmVudDogRXZlbnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xyXG5cclxuICByZXNpemU/KGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBuZXdDaGFydFNpemU6IENoYXJ0LkNoYXJ0U2l6ZSwgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcbiAgZGVzdHJveT8oY2hhcnRJbnN0YW5jZTogQ2hhcnQpOiB2b2lkO1xyXG5cclxuICAvKiogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAyLjUuMC4gVXNlIGBhZnRlckxheW91dGAgaW5zdGVhZC4gKi9cclxuICBhZnRlclNjYWxlVXBkYXRlPyhjaGFydEluc3RhbmNlOiBDaGFydCwgb3B0aW9ucz86IGFueSk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFBsdWdpblNlcnZpY2VHbG9iYWxSZWdpc3RyYXRpb25BbmRPcHRpb25zID0gUGx1Z2luU2VydmljZUdsb2JhbFJlZ2lzdHJhdGlvbiAmIFBsdWdpblNlcnZpY2VSZWdpc3RyYXRpb25PcHRpb25zO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnY2FudmFzW2Jhc2VDaGFydF0nLFxyXG4gIGV4cG9ydEFzOiAnYmFzZS1jaGFydCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDaGFydERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRhOiBTaW5nbGVPck11bHRpRGF0YVNldDtcclxuICBASW5wdXQoKSBwdWJsaWMgZGF0YXNldHM6IGNoYXJ0SnMuQ2hhcnREYXRhU2V0c1tdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbHM6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25zOiBjaGFydEpzLkNoYXJ0T3B0aW9ucyA9IHt9O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGFydFR5cGU6IGNoYXJ0SnMuQ2hhcnRUeXBlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb2xvcnM6IENvbG9yW107XHJcbiAgQElucHV0KCkgcHVibGljIGxlZ2VuZDogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFydENsaWNrOiBFdmVudEVtaXR0ZXI8eyBldmVudD86IE1vdXNlRXZlbnQsIGFjdGl2ZT86IHt9W10gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFydEhvdmVyOiBFdmVudEVtaXR0ZXI8eyBldmVudDogTW91c2VFdmVudCwgYWN0aXZlOiB7fVtdIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgY3R4OiBzdHJpbmc7XHJcbiAgcHVibGljIGNoYXJ0OiBDaGFydDtcclxuICBwcml2YXRlIGluaXRGbGFnID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVyIGEgcGx1Z2luLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVnaXN0ZXJQbHVnaW4ocGx1Z2luOiBQbHVnaW5TZXJ2aWNlR2xvYmFsUmVnaXN0cmF0aW9uQW5kT3B0aW9ucykge1xyXG4gICAgY2hhcnRKcy5DaGFydC5wbHVnaW5zLnJlZ2lzdGVyKHBsdWdpbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jdHggPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgdGhpcy5pbml0RmxhZyA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5kYXRhIHx8IHRoaXMuZGF0YXNldHMpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKHRoaXMuaW5pdEZsYWcpIHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNoYW5nZXMgYXJlIGluIHRoZSBkYXRhIG9yIGRhdGFzZXRzXHJcbiAgICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdkYXRhJykgfHwgY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZGF0YXNldHMnKSkge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcnREYXRhKGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNoYXJ0RGF0YShjaGFuZ2VzLmRhdGFzZXRzLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNoYXJ0LnVwZGF0ZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIG90aGVyd2lzZSByZWJ1aWxkIHRoZSBjaGFydFxyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5jaGFydCkge1xyXG4gICAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5jaGFydCA9IHZvaWQgMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDaGFydEJ1aWxkZXIoY3R4OiBzdHJpbmcvKiwgZGF0YTphbnlbXSwgb3B0aW9uczphbnkqLyk6IENoYXJ0IHtcclxuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5nZXREYXRhc2V0cygpO1xyXG5cclxuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgaWYgKHRoaXMubGVnZW5kID09PSBmYWxzZSkge1xyXG4gICAgICBvcHRpb25zLmxlZ2VuZCA9IHsgZGlzcGxheTogZmFsc2UgfTtcclxuICAgIH1cclxuICAgIC8vIGhvb2sgZm9yIG9uSG92ZXIgYW5kIG9uQ2xpY2sgZXZlbnRzXHJcbiAgICBvcHRpb25zLmhvdmVyID0gb3B0aW9ucy5ob3ZlciB8fCB7fTtcclxuICAgIGlmICghb3B0aW9ucy5ob3Zlci5vbkhvdmVyKSB7XHJcbiAgICAgIG9wdGlvbnMuaG92ZXIub25Ib3ZlciA9IChldmVudDogTW91c2VFdmVudCwgYWN0aXZlOiB7fVtdKSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZSAmJiAhYWN0aXZlLmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYXJ0SG92ZXIuZW1pdCh7IGV2ZW50LCBhY3RpdmUgfSk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFvcHRpb25zLm9uQ2xpY2spIHtcclxuICAgICAgb3B0aW9ucy5vbkNsaWNrID0gKGV2ZW50PzogTW91c2VFdmVudCwgYWN0aXZlPzoge31bXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hhcnRDbGljay5lbWl0KHsgZXZlbnQsIGFjdGl2ZSB9KTtcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjaGFydENvbmZpZzogY2hhcnRKcy5DaGFydENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgIHR5cGU6IHRoaXMuY2hhcnRUeXBlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGFiZWxzOiB0aGlzLmxhYmVscyxcclxuICAgICAgICBkYXRhc2V0c1xyXG4gICAgICB9LFxyXG4gICAgICBvcHRpb25zXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBuZXcgY2hhcnRKcy5DaGFydChjdHgsIGNoYXJ0Q29uZmlnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNDaGFydERhdGFTZXRzQXJyYXkodjogU2luZ2xlT3JNdWx0aURhdGFTZXQgfCBjaGFydEpzLkNoYXJ0RGF0YVNldHNbXSk6IHYgaXMgY2hhcnRKcy5DaGFydERhdGFTZXRzW10ge1xyXG4gICAgY29uc3QgZWxtID0gdlswXTtcclxuICAgIHJldHVybiAodHlwZW9mIChlbG0pID09PSAnb2JqZWN0JykgJiYgJ2RhdGEnIGluIGVsbTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ2hhcnREYXRhKG5ld0RhdGFWYWx1ZXM6IFNpbmdsZU9yTXVsdGlEYXRhU2V0IHwgY2hhcnRKcy5DaGFydERhdGFTZXRzW10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzQ2hhcnREYXRhU2V0c0FycmF5KG5ld0RhdGFWYWx1ZXMpKSB7XHJcbiAgICAgIGlmIChuZXdEYXRhVmFsdWVzLmxlbmd0aCA9PT0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGRhdGFzZXQuZGF0YSA9IG5ld0RhdGFWYWx1ZXNbaV0uZGF0YTtcclxuICAgICAgICAgIGlmIChuZXdEYXRhVmFsdWVzW2ldLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGRhdGFzZXQubGFiZWwgPSBuZXdEYXRhVmFsdWVzW2ldLmxhYmVsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyA9IFsuLi5uZXdEYXRhVmFsdWVzXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICghdGhpcy5pc1NpbmdsZURhdGFTZXQobmV3RGF0YVZhbHVlcykpIHtcclxuICAgICAgaWYgKG5ld0RhdGFWYWx1ZXMubGVuZ3RoID09PSB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQsIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgZGF0YXNldC5kYXRhID0gbmV3RGF0YVZhbHVlc1tpXTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMgPSBuZXdEYXRhVmFsdWVzLm1hcCgoZGF0YTogbnVtYmVyW10sIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IGRhdGEsIGxhYmVsOiB0aGlzLmxhYmVsc1tpbmRleF0gfHwgYExhYmVsICR7aW5kZXh9YCB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbMF0uZGF0YSA9IG5ld0RhdGFWYWx1ZXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU2luZ2xlRGF0YVNldChkYXRhOiBTaW5nbGVPck11bHRpRGF0YVNldCk6IGRhdGEgaXMgU2luZ2xlRGF0YVNldCB7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhWzBdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YXNldHMoKSB7XHJcbiAgICBsZXQgZGF0YXNldHM6IGNoYXJ0SnMuQ2hhcnREYXRhU2V0c1tdID0gdm9pZCAwO1xyXG4gICAgLy8gaW4gY2FzZSBpZiBkYXRhc2V0cyBpcyBub3QgcHJvdmlkZWQsIGJ1dCBkYXRhIGlzIHByZXNlbnRcclxuICAgIGlmICghdGhpcy5kYXRhc2V0cyB8fCAhdGhpcy5kYXRhc2V0cy5sZW5ndGggJiYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoKSkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTaW5nbGVEYXRhU2V0KHRoaXMuZGF0YSkpIHtcclxuICAgICAgICBkYXRhc2V0cyA9IHRoaXMuZGF0YS5tYXAoKGRhdGE6IG51bWJlcltdLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geyBkYXRhLCBsYWJlbDogdGhpcy5sYWJlbHNbaW5kZXhdIHx8IGBMYWJlbCAke2luZGV4fWAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhc2V0cyA9IFt7IGRhdGE6IHRoaXMuZGF0YSwgbGFiZWw6IGBMYWJlbCAwYCB9XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFzZXRzICYmIHRoaXMuZGF0YXNldHMubGVuZ3RoIHx8XHJcbiAgICAgIChkYXRhc2V0cyAmJiBkYXRhc2V0cy5sZW5ndGgpKSB7XHJcbiAgICAgIGRhdGFzZXRzID0gKHRoaXMuZGF0YXNldHMgfHwgZGF0YXNldHMpXHJcbiAgICAgICAgLm1hcCgoZWxtOiBjaGFydEpzLkNoYXJ0RGF0YVNldHMsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5ld0VsbTogY2hhcnRKcy5DaGFydERhdGFTZXRzID0gT2JqZWN0LmFzc2lnbih7fSwgZWxtKTtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbG9ycyAmJiB0aGlzLmNvbG9ycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihuZXdFbG0sIHRoaXMuY29sb3JzW2luZGV4XSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG5ld0VsbSwgZ2V0Q29sb3JzKHRoaXMuY2hhcnRUeXBlLCBpbmRleCwgbmV3RWxtLmRhdGEubGVuZ3RoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbmV3RWxtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZGF0YXNldHMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBuZy1jaGFydHMgY29uZmlndXJhdGlvbiBlcnJvcixcclxuICAgICAgZGF0YSBvciBkYXRhc2V0cyBmaWVsZCBhcmUgcmVxdWlyZWQgdG8gcmVuZGVyIGNoYXIgJHt0aGlzLmNoYXJ0VHlwZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0YXNldHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2goKSB7XHJcbiAgICAvLyBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5yZXNwb25zaXZlKSB7XHJcbiAgICAvLyAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWZyZXNoKCksIDUwKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyB0b2RvOiByZW1vdmUgdGhpcyBsaW5lLCBpdCBpcyBwcm9kdWNpbmcgZmxpY2tlcmluZ1xyXG4gICAgdGhpcy5uZ09uRGVzdHJveSgpO1xyXG4gICAgdGhpcy5jaGFydCA9IHRoaXMuZ2V0Q2hhcnRCdWlsZGVyKHRoaXMuY3R4LyosIGRhdGEsIHRoaXMub3B0aW9ucyovKTtcclxuICB9XHJcbn1cclxuIl19

@@ -10,2 +10,4 @@ /**

export { BaseChartDirective } from './lib/base-chart.directive';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi1jaGFydHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSw2QkFBYyxxQkFBcUIsQ0FBQztBQUNwQyxtQ0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZzItY2hhcnRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2hhcnQuZGlyZWN0aXZlJztcclxuIl19
export {} from './lib/color';
export {} from './lib/colors';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi1jaGFydHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSw2QkFBYyxxQkFBcUIsQ0FBQztBQUNwQyxtQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxlQUFjLGFBQWEsQ0FBQztBQUM1QixlQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZzItY2hhcnRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2hhcnQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29sb3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2xvcnMnO1xyXG4iXX0=

@@ -193,3 +193,3 @@ import { Directive, Input, Output, EventEmitter, ElementRef, NgModule } from '@angular/core';

constructor(element) {
this.labels = [];
this.element = element;
this.options = {};

@@ -199,3 +199,2 @@ this.chartClick = new EventEmitter();

this.initFlag = false;
this.element = element;
}

@@ -215,3 +214,2 @@ /**

this.ctx = this.element.nativeElement.getContext('2d');
this.cvs = this.element.nativeElement;
this.initFlag = true;

@@ -257,3 +255,3 @@ if (this.data || this.datasets) {

*/
getChartBuilder(ctx /*, data:Array<any>, options:any*/) {
getChartBuilder(ctx /*, data:any[], options:any*/) {
/** @type {?} */

@@ -266,14 +264,15 @@ const datasets = this.getDatasets();

}
// hock for onHover and onClick events
// hook for onHover and onClick events
options.hover = options.hover || {};
if (!options.hover.onHover) {
options.hover.onHover = (/**
* @param {?} event
* @param {?} active
* @return {?}
*/
(active) => {
(event, active) => {
if (active && !active.length) {
return;
}
this.chartHover.emit({ active });
this.chartHover.emit({ event, active });
});

@@ -283,4 +282,4 @@ }

options.onClick = (/**
* @param {?} event
* @param {?} active
* @param {?=} event
* @param {?=} active
* @return {?}

@@ -293,3 +292,3 @@ */

/** @type {?} */
const opts = {
const chartConfig = {
type: this.chartType,

@@ -302,6 +301,16 @@ data: {

};
return new Chart(ctx, opts);
return new Chart(ctx, chartConfig);
}
/**
* @private
* @param {?} v
* @return {?}
*/
isChartDataSetsArray(v) {
/** @type {?} */
const elm = v[0];
return (typeof (elm) === 'object') && 'data' in elm;
}
/**
* @private
* @param {?} newDataValues

@@ -311,3 +320,3 @@ * @return {?}

updateChartData(newDataValues) {
if (Array.isArray(newDataValues[0].data)) {
if (this.isChartDataSetsArray(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {

@@ -330,2 +339,24 @@ this.chart.data.datasets.forEach((/**

}
else if (!this.isSingleDataSet(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {
this.chart.data.datasets.forEach((/**
* @param {?} dataset
* @param {?} i
* @return {?}
*/
(dataset, i) => {
dataset.data = newDataValues[i];
}));
}
else {
this.chart.data.datasets = newDataValues.map((/**
* @param {?} data
* @param {?} index
* @return {?}
*/
(data, index) => {
return { data, label: this.labels[index] || `Label ${index}` };
}));
}
}
else {

@@ -337,4 +368,12 @@ this.chart.data.datasets[0].data = newDataValues;

* @private
* @param {?} data
* @return {?}
*/
isSingleDataSet(data) {
return Array.isArray(data[0]);
}
/**
* @private
* @return {?}
*/
getDatasets() {

@@ -345,4 +384,4 @@ /** @type {?} */

if (!this.datasets || !this.datasets.length && (this.data && this.data.length)) {
if (Array.isArray(this.data[0])) {
datasets = ((/** @type {?} */ (this.data))).map((/**
if (!this.isSingleDataSet(this.data)) {
datasets = this.data.map((/**
* @param {?} data

@@ -450,4 +489,14 @@ * @param {?} index

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { ChartsModule, BaseChartDirective };
//# sourceMappingURL=ng2-charts.js.map

@@ -191,3 +191,3 @@ import { __spread } from 'tslib';

function BaseChartDirective(element) {
this.labels = [];
this.element = element;
this.options = {};

@@ -197,3 +197,2 @@ this.chartClick = new EventEmitter();

this.initFlag = false;
this.element = element;
}

@@ -224,3 +223,2 @@ /**

this.ctx = this.element.nativeElement.getContext('2d');
this.cvs = this.element.nativeElement;
this.initFlag = true;

@@ -277,3 +275,3 @@ if (this.data || this.datasets) {

*/
function (ctx /*, data:Array<any>, options:any*/) {
function (ctx /*, data:any[], options:any*/) {
var _this = this;

@@ -287,14 +285,15 @@ /** @type {?} */

}
// hock for onHover and onClick events
// hook for onHover and onClick events
options.hover = options.hover || {};
if (!options.hover.onHover) {
options.hover.onHover = (/**
* @param {?} event
* @param {?} active
* @return {?}
*/
function (active) {
function (event, active) {
if (active && !active.length) {
return;
}
_this.chartHover.emit({ active: active });
_this.chartHover.emit({ event: event, active: active });
});

@@ -304,4 +303,4 @@ }

options.onClick = (/**
* @param {?} event
* @param {?} active
* @param {?=} event
* @param {?=} active
* @return {?}

@@ -314,3 +313,3 @@ */

/** @type {?} */
var opts = {
var chartConfig = {
type: this.chartType,

@@ -323,6 +322,21 @@ data: {

};
return new Chart(ctx, opts);
return new Chart(ctx, chartConfig);
};
/**
* @private
* @param {?} v
* @return {?}
*/
BaseChartDirective.prototype.isChartDataSetsArray = /**
* @private
* @param {?} v
* @return {?}
*/
function (v) {
/** @type {?} */
var elm = v[0];
return (typeof (elm) === 'object') && 'data' in elm;
};
/**
* @private
* @param {?} newDataValues

@@ -337,3 +351,4 @@ * @return {?}

function (newDataValues) {
if (Array.isArray(newDataValues[0].data)) {
var _this = this;
if (this.isChartDataSetsArray(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {

@@ -356,2 +371,24 @@ this.chart.data.datasets.forEach((/**

}
else if (!this.isSingleDataSet(newDataValues)) {
if (newDataValues.length === this.chart.data.datasets.length) {
this.chart.data.datasets.forEach((/**
* @param {?} dataset
* @param {?} i
* @return {?}
*/
function (dataset, i) {
dataset.data = newDataValues[i];
}));
}
else {
this.chart.data.datasets = newDataValues.map((/**
* @param {?} data
* @param {?} index
* @return {?}
*/
function (data, index) {
return { data: data, label: _this.labels[index] || "Label " + index };
}));
}
}
else {

@@ -363,4 +400,17 @@ this.chart.data.datasets[0].data = newDataValues;

* @private
* @param {?} data
* @return {?}
*/
BaseChartDirective.prototype.isSingleDataSet = /**
* @private
* @param {?} data
* @return {?}
*/
function (data) {
return Array.isArray(data[0]);
};
/**
* @private
* @return {?}
*/
BaseChartDirective.prototype.getDatasets = /**

@@ -376,4 +426,4 @@ * @private

if (!this.datasets || !this.datasets.length && (this.data && this.data.length)) {
if (Array.isArray(this.data[0])) {
datasets = ((/** @type {?} */ (this.data))).map((/**
if (!this.isSingleDataSet(this.data)) {
datasets = this.data.map((/**
* @param {?} data

@@ -488,4 +538,14 @@ * @param {?} index

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { ChartsModule, BaseChartDirective };
//# sourceMappingURL=ng2-charts.js.map
import { OnDestroy, OnChanges, OnInit, EventEmitter, ElementRef, SimpleChanges } from '@angular/core';
import * as chartJs from 'chart.js';
import { Color } from './color';
export declare type SingleDataSet = (number[] | chartJs.ChartPoint[]);
export declare type MultiDataSet = (number[] | chartJs.ChartPoint[])[];
export declare type SingleOrMultiDataSet = SingleDataSet | MultiDataSet;
export interface PluginServiceGlobalRegistration {
id?: string;
}
export interface PluginServiceRegistrationOptions {
beforeInit?(chartInstance: Chart, options?: any): void;
afterInit?(chartInstance: Chart, options?: any): void;
beforeUpdate?(chartInstance: Chart, options?: any): void;
afterUpdate?(chartInstance: Chart, options?: any): void;
beforeLayout?(chartInstance: Chart, options?: any): void;
afterLayout?(chartInstance: Chart, options?: any): void;
beforeDatasetsUpdate?(chartInstance: Chart, options?: any): void;
afterDatasetsUpdate?(chartInstance: Chart, options?: any): void;
beforeDatasetUpdate?(chartInstance: Chart, options?: any): void;
afterDatasetUpdate?(chartInstance: Chart, options?: any): void;
beforeRender?(chartInstance: Chart, options?: any): void;
afterRender?(chartInstance: Chart, options?: any): void;
beforeDraw?(chartInstance: Chart, easing: string, options?: any): void;
afterDraw?(chartInstance: Chart, easing: string, options?: any): void;
beforeDatasetsDraw?(chartInstance: Chart, easing: string, options?: any): void;
afterDatasetsDraw?(chartInstance: Chart, easing: string, options?: any): void;
beforeDatasetDraw?(chartInstance: Chart, easing: string, options?: any): void;
afterDatasetDraw?(chartInstance: Chart, easing: string, options?: any): void;
beforeTooltipDraw?(chartInstance: Chart, tooltipData?: any, options?: any): void;
afterTooltipDraw?(chartInstance: Chart, tooltipData?: any, options?: any): void;
beforeEvent?(chartInstance: Chart, event: Event, options?: any): void;
afterEvent?(chartInstance: Chart, event: Event, options?: any): void;
resize?(chartInstance: Chart, newChartSize: Chart.ChartSize, options?: any): void;
destroy?(chartInstance: Chart): void;
/** @deprecated since version 2.5.0. Use `afterLayout` instead. */
afterScaleUpdate?(chartInstance: Chart, options?: any): void;
}
export declare type PluginServiceGlobalRegistrationAndOptions = PluginServiceGlobalRegistration & PluginServiceRegistrationOptions;
export declare class BaseChartDirective implements OnDestroy, OnChanges, OnInit {
data: number[] | any[];
datasets: any[];
labels: Array<any>;
options: any;
chartType: string;
colors: Array<any>;
private element;
data: SingleOrMultiDataSet;
datasets: chartJs.ChartDataSets[];
labels: string[];
options: chartJs.ChartOptions;
chartType: chartJs.ChartType;
colors: Color[];
legend: boolean;
chartClick: EventEmitter<any>;
chartHover: EventEmitter<any>;
ctx: any;
chart: any;
private cvs;
chartClick: EventEmitter<{
event?: MouseEvent;
active?: {}[];
}>;
chartHover: EventEmitter<{
event: MouseEvent;
active: {}[];
}>;
ctx: string;
chart: Chart;
private initFlag;
private element;
/**
* Register a plugin.
*/
static registerPlugin(plugin: any): void;
static registerPlugin(plugin: PluginServiceGlobalRegistrationAndOptions): void;
constructor(element: ElementRef);
ngOnInit(): any;
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngOnDestroy(): any;
getChartBuilder(ctx: any): any;
ngOnDestroy(): void;
getChartBuilder(ctx: string): Chart;
private isChartDataSetsArray;
private updateChartData;
private isSingleDataSet;
private getDatasets;
private refresh;
}

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"ChartsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"BaseChartDirective"}],"imports":[],"exports":[{"__symbolic":"reference","name":"BaseChartDirective"}]}]}],"members":{}},"BaseChartDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":14,"character":1},"arguments":[{"selector":"canvas[baseChart]","exportAs":"base-chart"}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"datasets":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"labels":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"chartType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"colors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"legend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"chartClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":28,"character":3}}]}],"chartHover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":29,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":30}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getChartBuilder":[{"__symbolic":"method"}],"updateChartData":[{"__symbolic":"method"}],"getDatasets":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}]}}},"origins":{"ChartsModule":"./lib/charts.module","BaseChartDirective":"./lib/base-chart.directive"},"importAs":"ng2-charts"}
{"__symbolic":"module","version":4,"metadata":{"ChartsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"BaseChartDirective"}],"imports":[],"exports":[{"__symbolic":"reference","name":"BaseChartDirective"}]}]}],"members":{}},"SingleDataSet":{"__symbolic":"interface"},"MultiDataSet":{"__symbolic":"interface"},"SingleOrMultiDataSet":{"__symbolic":"interface"},"PluginServiceGlobalRegistration":{"__symbolic":"interface"},"PluginServiceRegistrationOptions":{"__symbolic":"interface"},"PluginServiceGlobalRegistrationAndOptions":{"__symbolic":"interface"},"BaseChartDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":80,"character":1},"arguments":[{"selector":"canvas[baseChart]","exportAs":"base-chart"}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"datasets":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"labels":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":89,"character":3}}]}],"chartType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"colors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"legend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"chartClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":94,"character":3}}]}],"chartHover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":95,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":108,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getChartBuilder":[{"__symbolic":"method"}],"isChartDataSetsArray":[{"__symbolic":"method"}],"updateChartData":[{"__symbolic":"method"}],"isSingleDataSet":[{"__symbolic":"method"}],"getDatasets":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}]}},"Color":{"__symbolic":"interface"},"Colors":{"__symbolic":"interface"}},"origins":{"ChartsModule":"./lib/charts.module","SingleDataSet":"./lib/base-chart.directive","MultiDataSet":"./lib/base-chart.directive","SingleOrMultiDataSet":"./lib/base-chart.directive","PluginServiceGlobalRegistration":"./lib/base-chart.directive","PluginServiceRegistrationOptions":"./lib/base-chart.directive","PluginServiceGlobalRegistrationAndOptions":"./lib/base-chart.directive","BaseChartDirective":"./lib/base-chart.directive","Color":"./lib/color","Colors":"./lib/colors"},"importAs":"ng2-charts"}
{
"name": "ng2-charts",
"version": "2.0.0-beta.4",
"version": "2.0.0-beta.5",
"peerDependencies": {

@@ -5,0 +5,0 @@ "@angular/common": "^7.2.0",

export * from './lib/charts.module';
export * from './lib/base-chart.directive';
export * from './lib/color';
export * from './lib/colors';

@@ -1,2 +0,2 @@

# ng2-charts [![npm version](https://badge.fury.io/js/ng2-charts.svg)](http://badge.fury.io/js/ng2-charts) [![npm downloads](https://img.shields.io/npm/dm/ng2-charts.svg)](https://npmjs.org/ng2-charts) [slack](https://ngx-home.slack.com)
# ng2-charts [![npm version](https://badge.fury.io/js/ng2-charts.svg)](http://badge.fury.io/js/ng2-charts) [![npm downloads](https://img.shields.io/npm/dm/ng2-charts.svg)](https://npmjs.org/ng2-charts) ![Travis CI](https://travis-ci.org/valor-software/ng2-charts.svg?branch=development) [slack](https://ngx-home.slack.com)
Beautiful charts for Angular2 based on Chart.js

@@ -60,3 +60,3 @@

### Chart types
There are one directive for all chart types: `base-chart`, and there are 6 types of charts: , `line`, `bar`, `radar`, `pie`, `polarArea`, `doughnut`.
There are one directive for all chart types: `baseChart`, and there are 6 types of charts: , `line`, `bar`, `radar`, `pie`, `polarArea`, `doughnut`.

@@ -67,9 +67,9 @@ ### Properties

- `data` (`Array<number[]> | number[]`) - set of points of the chart, it should be `Array<number[]>` only for `line`, `bar` and `radar`, otherwise `number[]`;
- `datasets` (`Array<{data: Array<number[]> | number[], label: string}>`) - `data` see about, the `label` for the dataset which appears in the legend and tooltips
- `labels` (`?Array<any>`) - x axis labels. It's necessary for charts: `line`, `bar` and `radar`. And just labels (on hover) for charts: `polarArea`, `pie` and `doughnut`
- `chartType` (`?string`) - indicates the type of charts, it can be: `line`, `bar`, `radar`, `pie`, `polarArea`, `doughnut`
- `options` (`?any`) - chart options (as from [Chart.js documentation](http://www.chartjs.org/docs/))
- `colors` (`?Array<any>`) - data colors, will use default and|or random colors if not specified (see below)
- `legend`: (`?boolean=false`) - if true show legend below the chart, otherwise not be shown
- `data` (`SingleOrMultiDataSet`) - set of points of the chart, it should be `MultiDataSet` only for `line`, `bar` and `radar`, otherwise `SingleDataSet`
- `datasets` (`{ data: SingleDataSet, label: string }[]`) - `data` see about, the `label` for the dataset which appears in the legend and tooltips
- `labels` (`string[]`) - x axis labels. It's necessary for charts: `line`, `bar` and `radar`. And just labels (on hover) for charts: `polarArea`, `pie` and `doughnut`
- `chartType` (`ChartType`) - indicates the type of charts, it can be: `line`, `bar`, `radar`, `pie`, `polarArea`, `doughnut`
- `options` (`ChartOptions`) - chart options (as from [Chart.js documentation](http://www.chartjs.org/docs/))
- `colors` (`Color[]`) - data colors, will use default and|or random colors if not specified (see below)
- `legend`: (`boolean = false`) - if true show legend below the chart, otherwise not be shown

@@ -76,0 +76,0 @@ ### Events

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc