import * as tslib_1 from "tslib";
import { TemplateRef, EventEmitter, Output, Input } from '@angular/core';
import { HorizontalAlignment, HorizontalAlignment_$type } from "igniteui-angular-core";
import { UnknownValuePlotting, UnknownValuePlotting_$type } from "igniteui-angular-core";
import { TrendLineType, TrendLineType_$type } from "igniteui-angular-core";
import { IgxChartSeriesEventArgs } from './igx-chart-series-event-args';
import { brushToString, stringToBrush, toBrushCollection, fromBrushCollection, fromRect, toRect, ensureBool, ensureEnum, toSpinal, initializePropertiesFromCss, NamePatcher } from "igniteui-angular-core";
import { MarkerType_$type } from "./MarkerType";
import { delegateCombine } from "igniteui-angular-core";
import { IgxDomainChartSeriesPointerEventArgs } from './igx-domain-chart-series-pointer-event-args';
import { MarkerTypeCollection as MarkerTypeCollection_internal } from './MarkerTypeCollection';
import { IgxMarkerTypeCollection } from './igx-marker-type-collection';
import { SyncableObservableCollection$1 } from "igniteui-angular-core";
import { ToolTipType, ToolTipType_$type } from "./ToolTipType";
import { CrosshairsDisplayMode, CrosshairsDisplayMode_$type } from "./CrosshairsDisplayMode";
import { IgxCalloutStyleUpdatingEventArgs } from "./igx-callout-style-updating-event-args";
export var IgxDomainChartComponent_PROVIDERS = [];
var IgxDomainChartComponent = /** @class */ (function () {
    function IgxDomainChartComponent() {
        this._calloutsDataSource = null;
        this._markerTypes = null;
        this.__p = null;
        this._hasUserValues = new Set();
        this._stylingContainer = null;
        this._stylingParent = null;
        this._inStyling = false;
        this._seriesAdded = null;
        this._seriesRemoved = null;
        this._seriesPointerEnter = null;
        this._seriesPointerLeave = null;
        this._seriesPointerMove = null;
        this._seriesPointerDown = null;
        this._seriesPointerUp = null;
        this._calloutStyleUpdating = null;
        this._zoneRunner = null;
        if (this._styling) {
            NamePatcher.ensureStylablePatched(Object.getPrototypeOf(this));
        }
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    IgxDomainChartComponent.prototype.createImplementation = function () {
        return null;
    };
    IgxDomainChartComponent.prototype.ngOnInit = function () {
    };
    Object.defineProperty(IgxDomainChartComponent.prototype, "i", {
        get: function () {
            return this._implementation;
        },
        enumerable: true,
        configurable: true
    });
    IgxDomainChartComponent.prototype.onImplementationCreated = function () {
    };
    Object.defineProperty(IgxDomainChartComponent.prototype, "tooltipTemplate", {
        /**
        * Sets or gets the template reference to use for tooltips for all the series.
        *
        *
        */
        get: function () {
            return this.i.tooltipTemplate;
        },
        set: function (v) {
            this.i.tooltipTemplate = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "tooltipTemplates", {
        /**
        * Sets or gets the template references to use for tooltips for all the series, in order.
        *
        *
        */
        get: function () {
            var ret = [];
            if (this.i.tooltipTemplates) {
                for (var ii = 0; ii < this.i.tooltipTemplates.count; ii++) {
                    ret.push(this.i.tooltipTemplates.item(ii));
                }
            }
            return ret;
        },
        set: function (v) {
            this.i.tooltipTemplates.clear();
            if (v) {
                for (var ii = 0; ii < v.length; ii++) {
                    this.i.tooltipTemplates.add(v[ii]);
                }
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "legend", {
        get: function () {
            if (this.i.legend != null)
                return this.i.legend.externalObject;
        },
        set: function (v) {
            if (v != undefined && v != null)
                this.i.legend = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "calloutsDataSource", {
        get: function () {
            return this._calloutsDataSource;
        },
        set: function (value) {
            this._calloutsDataSource = value;
            this.bindCalloutsData();
        },
        enumerable: true,
        configurable: true
    });
    IgxDomainChartComponent.prototype.bindCalloutsData = function () {
        if (this.i != null && this.i !== undefined) {
            this.i.calloutsItemsSource = this._calloutsDataSource;
        }
    };
    Object.defineProperty(IgxDomainChartComponent.prototype, "pixelScalingRatio", {
        /**
     * Gets or sets the scaling value used to affect the pixel density of the control.
     * A higher scaling ratio will produce crisper visuals at the expense of memory.  Lower values will cause the control
     * to appear blurry.
    */
        get: function () {
            return this.i.ct;
        },
        set: function (v) {
            this.i.ct = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "titleLeftMargin", {
        /**
         * Gets or sets the left margin of chart title
        *
        *  Use `titleLeftMargin` property for the left margin of chart title.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        * 	titleLeftMargin= 10>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.titleLeftMargin = 10;
        * ```
        */
        get: function () {
            return this.i.c2;
        },
        set: function (v) {
            this.i.c2 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "titleRightMargin", {
        /**
         * Gets or sets the right margin of chart title
        *
        *  Use `titleLeftMargin` property for the right margin of chart title.
        *
        * ```html
        * <igx-category-chart
        * 		yAxisMinimumValue="0"
        * 		[dataSource]="data"
        * 		titleRightMargin= 10>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.titleRightMargin = 10;
        * ```
        */
        get: function () {
            return this.i.c3;
        },
        set: function (v) {
            this.i.c3 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "titleTopMargin", {
        /**
         * Gets or sets the top margin of chart title
        *
        *  Use `titleTopMargin` property for the top margin of chart title.
        *
        * ```html
        * <igx-category-chart
        *      yAxisMinimumValue="0"
        *      [dataSource]="data"
        *      title="Countries"
        *      titleTopMargin=10 >
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.titleTopMargin = 10;
        * ```
        */
        get: function () {
            return this.i.c4;
        },
        set: function (v) {
            this.i.c4 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "titleBottomMargin", {
        /**
         * Gets or sets the bottom margin of chart title
        *
        *  Use `titleBottomMargin` property for the bottom margin of chart title.
        *
        * ```html
        * <igx-category-chart
        *    yAxisMinimumValue="0"
        *    [dataSource]="data"
        *    titleBottomMargin= 10 >
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.titleBottomMargin = 5;
        * ```
        */
        get: function () {
            return this.i.c1;
        },
        set: function (v) {
            this.i.c1 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "subtitleLeftMargin", {
        /**
         * Gets or sets the left margin of chart subtitle
        *
        * Use `subtitleLeftMargin` property for the left margin of chart subtitle.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     subtitleLeftMargin= 20>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.subtitleLeftMargin = 20 ;
        * ```
        */
        get: function () {
            return this.i.cx;
        },
        set: function (v) {
            this.i.cx = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "subtitleTopMargin", {
        /**
         * Gets or sets the top margin of chart subtitle
        *
        * Use `subtitleTopMargin` property for the top margin of chart subtitle.
        *
        * ```html
        *    <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       subtitle= "This is a subtitle"
        *       subtitleTopMargin=10>
        *     </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.subtitleTopMargin = 10;
        * ```
        */
        get: function () {
            return this.i.cz;
        },
        set: function (v) {
            this.i.cz = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "subtitleRightMargin", {
        /**
         * Gets or sets the right margin of chart subtitle
        *
        * Use `subtitleRightMargin` property for the right margin of chart subtitle.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     subtitleRightMargin= 10>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.subtitleRightMargin = 20 ;
        * ```
        */
        get: function () {
            return this.i.cy;
        },
        set: function (v) {
            this.i.cy = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "subtitleBottomMargin", {
        /**
         * Gets or sets the bottom margin of chart subtitle
        *
        * Use `subtitleBottomMargin` property for the bottom margin of chart subtitle.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        * 	subtitleBottomMargin=10>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.subtitleBottomMargin = 10 ;
        * ```
        */
        get: function () {
            return this.i.cw;
        },
        set: function (v) {
            this.i.cw = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "subtitleTextColor", {
        /**
         * Gets or sets color of chart subtitle
        *
        * Use `subtitleTextColor` property to color the subtitle.
        *
        * ```html
        *  <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       subtitle= "This is a subtitle"
        *       subtitleTextColor= 'blue'>
        *     </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.subtitleTextColor = "#ff0000" ;
        * ```
        */
        get: function () {
            return brushToString(this.i.h3);
        },
        set: function (v) {
            this.i.h3 = stringToBrush(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "titleTextColor", {
        /**
         * Gets or sets color of chart title
        *
        *  Use `titleTextColor` property to color the chart title
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       titleTextColor= "red">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.titleTextColor="red" ;
        * ```
        */
        get: function () {
            return brushToString(this.i.h4);
        },
        set: function (v) {
            this.i.h4 = stringToBrush(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "leftMargin", {
        /**
         * Gets or sets the left margin of the chart content.
        *
        * Use the 'leftMargin' property for the left margin of the chart content.
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       leftMargin=20>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.leftMargin = 20;
        * ```
        */
        get: function () {
            return this.i.cs;
        },
        set: function (v) {
            this.i.cs = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "topMargin", {
        /**
         * Gets or sets the top margin of the chart content.
        *
        * Use `topMargin` property for the margin of the chart content.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     topMargin= 20>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.topMargin=20;
        * ```
        */
        get: function () {
            return this.i.c5;
        },
        set: function (v) {
            this.i.c5 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "rightMargin", {
        /**
         * Gets or sets the right margin of the chart content.
        *
        * Use `rightMargin` property for the right margin of the chart content.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     rightMargin=20>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *   this.chart.rightMargin = 20 ;
        * ```
        */
        get: function () {
            return this.i.cv;
        },
        set: function (v) {
            this.i.cv = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "bottomMargin", {
        /**
         * Gets or sets the bottom margin around the chart content.
        *
        * Use the `bottomMargin` property for the bottom margin around the chart content.
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       bottomMargin= 20>
        *     </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.bottomMargin=20;
        * ```
        */
        get: function () {
            return this.i.cr;
        },
        set: function (v) {
            this.i.cr = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "transitionDuration", {
        /**
         * Gets or sets the duration used for animating series plots when the data is changing
        *
        * Use the `transitionDuration` property to animating between data values.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     transitionDuration="500">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.transitionDuratio= 500;
        * ```
        */
        get: function () {
            return this.i.de;
        },
        set: function (v) {
            this.i.de = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "transitionEasingFunction", {
        /**
         * Gets or sets the easing function used for animating series plots when the data is changing.
         * This can be set to one of the known values "linear" or "cubic," or it can be set to an easing function which takes a single numeric parameter and returns a number.
        *
        * The 'transitionInEasingFunction' property used for easing function for animating series plots when the chart is loading into view.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     transitionInEasingFunction= "cubic">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.transitionInEasingFunction=  this.cubicFunc;
        *
        * cubicFunc(time: number) : number
        *   {
        *     return time;
        *   }
        * ```
        */
        get: function () {
            return this.i.a1;
        },
        set: function (v) {
            this.i.a1 = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "subtitleTextStyle", {
        /**
         * Gets or sets CSS font property for the chart subtitle
        *
        * Use `subtitleTextStyle` property for the CSS font of the chart subtitle.
        *
        * ```html
        *  <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       subtitle= "This is a subtitle"
        *       subtitleTextStyle ="16pt Verdona">
        *     </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.subtitleTextStyle= "16pt Verdona";
        * ```
        */
        get: function () {
            return this.i.e9;
        },
        set: function (v) {
            this.i.e9 = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "titleTextStyle", {
        /**
         * Gets or sets CSS font property for the chart title
        *
        * Use `titleTextStyle` property for the CSS font property of the chart title
        *
        * ```html
        *  <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       titleTextStyle= "24pt Verdona">
        *     </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.xAxisTitleTextStyle = "24pt Verdona";
        * ```
        */
        get: function () {
            return this.i.fk;
        },
        set: function (v) {
            this.i.fk = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "includedProperties", {
        /**
         * Gets or sets a set of property paths that should be included for consideration by the category chart, leaving the remainder excluded. If null, all properties will be considered.
        *
        * The `includedProperties` property used to include the properties for the consideration of the category chart.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     includedProperties="ProductName,Cost" >
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.includedProperties = ["ProductName", "Cost"];
        * ```
        */
        get: function () {
            return this.i.d;
        },
        set: function (v) {
            this.i.d = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "excludedProperties", {
        /**
         * Gets or sets a set of property paths that should be excluded from consideration by the category chart.
        *
        * The `excludedProperties` property used for the property paths that should be excluded from consideration by the category chart.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     excludedProperties="ID">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.excludedProperties = ["ID", "Discount"];
        * ```
        */
        get: function () {
            return this.i.c;
        },
        set: function (v) {
            this.i.c = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "brushes", {
        /**
         * Gets or sets the palette of brushes to use for coloring the chart series.
         * The value provided should be an array of CSS color strings or JavaScript objects defining gradients. Optionally the first element can be a string reading "RGB" or "HSV" to specify the interpolation mode of the collection
        *
        * Use the `brushes` property to  set the brushes.
        *
        * ```html
        *  <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       Brushes="#ff0000, #cc0000, #aa0000">
        *     </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.brushes = ["#ff0000","#00ff00"];
        * ```
        */
        get: function () {
            return fromBrushCollection(this.i.j);
        },
        set: function (v) {
            this.i.j = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "outlines", {
        /**
         * Gets or sets the palette of brushes to use for outlines on the chart series.
         * The value provided should be an array of CSS color strings or JavaScript objects defining gradients. Optionally the first element can be a string reading "RGB" or "HSV" to specify the interpolation mode of the collection
        *
        *  Use the `outlines` property to sets the palette of brushes to use for outlines on the chart series
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     outlines="#ff0000, #cc0000, #aa0000">
        * </igx-category-chart>
        * ```
        */
        get: function () {
            return fromBrushCollection(this.i.n);
        },
        set: function (v) {
            this.i.n = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "isHorizontalZoomEnabled", {
        /**
         * Gets or sets whether the chart can be horizontally zoomed through user interactions.
        *
        * Use the `isHorizontalZoomEnabled` property to allow chart horizontally zoomed .
        *
        * ```html
        *  <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       isHorizontalZoomEnabled=true>
        *   </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.isHorizontalZoomEnabled = true;
        * ```
        */
        get: function () {
            return this.i.bq;
        },
        set: function (v) {
            this.i.bq = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "isVerticalZoomEnabled", {
        /**
         * Gets or sets whether the chart can be vertically zoomed through user interactions.
        *
        * Use the `isVerticalZoomEnabled` property to allow chart zoom vertically.
        *
        * ```html
        *  <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       isVerticalZoomEnabled=true>
        *     </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.isVerticalZoomEnabled = true;
        * ```
        */
        get: function () {
            return this.i.bw;
        },
        set: function (v) {
            this.i.bw = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "isSeriesHighlightingEnabled", {
        /**
         * Gets or sets whether the chart can highlight series through user interactions.
         * This property applies to Category Chart and Financial Chart controls.
        */
        get: function () {
            return this.i.bs;
        },
        set: function (v) {
            this.i.bs = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "windowRect", {
        /**
         * Gets or sets the rectangle representing the current scroll and zoom state of the chart.
         * WindowRect is expressed as a Rectangle with coordinates and sizes between 0 and 1.
        *
        * Use `windowRect` property representing the current scroll and zoom state of the chart.
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       WindowRect=[0,0,1,1]>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.windowRect =[0,0,1,1];
        * ```
        */
        get: function () {
            return fromRect(this.i.h8);
        },
        set: function (v) {
            this.i.h8 = toRect(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "viewport", {
        /**
         * Gets a rectangle representing the bounds of the plot area.
        *
        * `viewport` property representing the bounds of the plot area.
        *
        * ```ts
        * let viewport:Rect =  this.chart.viewport;
        * ```
        */
        get: function () {
            return fromRect(this.i.h7);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "chartTitle", {
        /**
         * Gets or sets text to display above the plot area.
        *
        * Use the `chartTitle` property to display the text above the plot area.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     title="This is a Title">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.title= "This is a Title";
        * ```
        */
        get: function () {
            return this.i.fd;
        },
        set: function (v) {
            this.i.fd = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "subtitle", {
        /**
         * Gets or sets text to display below the Title, above the plot area.
        *
        * Use the `subtitle` property to display the text below  and above the plot area.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     subtitle= "This is a subtitle">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.subtitle ="CategoryChart Subtitle" ;
        * ```
        */
        get: function () {
            return this.i.e2;
        },
        set: function (v) {
            this.i.e2 = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "titleAlignment", {
        /**
         * Gets or sets horizontal alignment which determines the title position, relative to the left and right edges of the control.
        *
        * Use the `titleAlignment` property for the horizontal alignment of the title.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     titleAlignment= "center">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.titleAlignment = HorizontalAlignment.Center;
        * ```
        */
        get: function () {
            return this.i.hw;
        },
        set: function (v) {
            this.i.hw = ensureEnum(HorizontalAlignment_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "subtitleAlignment", {
        /**
         * Gets or sets horizontal alignment which determines the subtitle position, relative to the left and right edges of the control.
        *
        * Use the `subtitleAlignment` property to Gets or sets horizontal alignment.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     subtitleAlignment= "center">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.subtitleAlignment = HorizontalAlignment.Right;
        * ```
        */
        get: function () {
            return this.i.hv;
        },
        set: function (v) {
            this.i.hv = ensureEnum(HorizontalAlignment_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "unknownValuePlotting", {
        /**
         * Gets or sets the behavior that determines how unknown values will be plotted on the chart.
         * Null and Double.NaN are two examples of unknown values.
        *
        * Use the `unknownValuePlotting` property to determines the behavior that how unknown values will be plotted on the chart.
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       unknownValuePlotting= "dontPlot">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.unknownValuePlotting =UnknownValuePlotting.DontPlot;
        * ```
        */
        get: function () {
            return this.i.ax;
        },
        set: function (v) {
            this.i.ax = ensureEnum(UnknownValuePlotting_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "resolution", {
        /**
         * Gets or sets the rendering resolution for all series in this chart.
         * Where n = Resolution, for every n horizontal pixels, combine all items into a single datapoint.  When Resolution = 0, all datapoints will be rendered as graphical objects.  Charts with a higher resolution will have faster performance.
        *
        * Use the `resolution` property if the callouts should be display.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     resolution= 2>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *   this.chart.resolution = 2 ;
        * ```
        */
        get: function () {
            return this.i.cu;
        },
        set: function (v) {
            this.i.cu = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "thickness", {
        /**
         * Gets or sets the thickness for all series in this chart. Depending on the ChartType, this can be the main brush used, or just the outline.
        *
        * Use the `thickness` property for the thickness of all the series in this chart.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     thickness=5>
        * </igx-category-chart>
        * ```
        */
        get: function () {
            return this.i.c0;
        },
        set: function (v) {
            this.i.c0 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "markerTypes", {
        /**
         * Gets or sets the marker shapes used for indicating location of data points in this chart.
         * This property applies only to these chart types: point, line, spline, bubble, and polygon
        */
        get: function () {
            if (this._markerTypes === null) {
                var coll = new IgxMarkerTypeCollection();
                var innerColl = this.i.ak;
                if (!innerColl) {
                    innerColl = new MarkerTypeCollection_internal();
                }
                this._markerTypes = coll._fromInner(innerColl);
                this.i.ak = innerColl;
            }
            return this._markerTypes;
        },
        set: function (v) {
            if (this._markerTypes !== null) {
                this._markerTypes._setSyncTarget(null);
                this._markerTypes = null;
            }
            var coll = new IgxMarkerTypeCollection();
            this._markerTypes = coll._fromOuter(v);
            var syncColl = new SyncableObservableCollection$1(MarkerType_$type);
            var innerColl = this.i.ak;
            if (!innerColl) {
                innerColl = new MarkerTypeCollection_internal();
            }
            syncColl._inner = innerColl;
            syncColl.clear();
            this._markerTypes._setSyncTarget(syncColl);
            this.i.ak = innerColl;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "markerBrushes", {
        /**
         * Gets or sets the palette of brushes used for rendering fill area of data point markers.
         * This property applies only to these chart types: point, line, spline, bubble, and polygon
        *
        * `markerBrushes` property used for rendering fill area of data point markers.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     markerBrushes="#ff0000, #cc0000, #aa0000">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.markerBrushes=[ "#ff0000", "#ffff00", "#00ffff" ];
        * ```
        */
        get: function () {
            return fromBrushCollection(this.i.l);
        },
        set: function (v) {
            this.i.l = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "markerOutlines", {
        /**
         * Gets or sets the palette of brushes used for rendering outlines of data point markers.
         * This property applies only to these chart types: point, line, spline, bubble, and polygon
        *
        * `markerOutlines` property used for rendering outlines of data point markers.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     markerOutlines="#ff0000, #cc0000, #aa0000">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.markerOutlines= ["#ff0000", "#ffff00", "#00ffff"] ;
        * ```
        */
        get: function () {
            return fromBrushCollection(this.i.m);
        },
        set: function (v) {
            this.i.m = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "markerMaxCount", {
        /**
         * Gets or sets the maximum number of markers displyed in the plot area of the chart.
        *
        * `markerMaxCount` property used to display maximum number of markers in the plot area of the chart.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     markerMaxCount=100 >
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.markerMaxCount = 100 ;
        * ```
        */
        get: function () {
            return this.i.dd;
        },
        set: function (v) {
            this.i.dd = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "animateSeriesWhenAxisRangeChanges", {
        /**
         * Gets or sets whether the series animations should be allowed when a range change has been detected on an axis.
        */
        get: function () {
            return this.i.bg;
        },
        set: function (v) {
            this.i.bg = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "trendLineBrushes", {
        /**
         * Gets or sets the palette of brushes to used for coloring trend lines in this chart.
         * The value provided should be an array of CSS color strings or JavaScript objects defining gradients. Optionally the first element can be a string reading "RGB" or "HSV" to specify the interpolation mode of the collection
        *
        * Use the `trendLineBrushes` property for coloring trend lines in the chart.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     trendLineBrushes="#ff0000,#aa0000">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.trendLineBrushes=["#ff0000", "#ffff00", "#00ffff"]	;
        * ```
        */
        get: function () {
            return fromBrushCollection(this.i.o);
        },
        set: function (v) {
            this.i.o = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "trendLineType", {
        /**
         * Gets or sets the formula used for calculating trend lines in this chart.
         * This property applies only to these chart types: point, line, spline, and bubble
        *
        * Use the `trendLineType` property for calculating trend lines.
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       trendLineType= "cubicFit">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.trendLineType = TrendLineType.CubicFit;
        * ```
        */
        get: function () {
            return this.i.av;
        },
        set: function (v) {
            this.i.av = ensureEnum(TrendLineType_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "trendLineThickness", {
        /**
         * Gets or sets the thickness of the trend lines in this chart.
         * This property applies only to these chart types: point, line, spline, and bubble
        *
        * Use the `trendLineThickness` property for the thickness of the trend lines in the chart.
        *
        * ```html
        * <igx-category-chart
        *     yAxisMinimumValue="0"
        *     [dataSource]="data"
        *     trendLineThickness= 2>
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * this.chart.trendLineThickness=2;
        * ```
        */
        get: function () {
            return this.i.c6;
        },
        set: function (v) {
            this.i.c6 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "alignsGridLinesToPixels", {
        /**
         * Gets or sets a value indicating whether grid and tick lines are aligned to device pixels.
        *
        * Use `alignsGridLinesToPixels` propert to indicat whether grid and tick lines are aligned to device pixels.
        *
        * ```html
        * <igx-category-chart
        *     [dataSource]="data"
        *     AlignsGridLinesToPixels="true">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  this.chart.alignsGridLinesToPixels= true;
        * ```
        */
        get: function () {
            return this.i.bf;
        },
        set: function (v) {
            this.i.bf = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "trendLinePeriod", {
        get: function () {
            return this.i.df;
        },
        set: function (v) {
            this.i.df = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "toolTipType", {
        /**
         * Gets or sets the style of tooltip to be displayed.
        */
        get: function () {
            return this.i.at;
        },
        set: function (v) {
            this.i.at = ensureEnum(ToolTipType_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "crosshairsDisplayMode", {
        /**
         * Gets or sets the crosshairs to be displayed.
        */
        get: function () {
            return this.i.t;
        },
        set: function (v) {
            this.i.t = ensureEnum(CrosshairsDisplayMode_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "crosshairsSnapToData", {
        /**
         * Gets or sets whether crosshairs will snap to the nearest data point.
        */
        get: function () {
            return this.i.bl;
        },
        set: function (v) {
            this.i.bl = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "crosshairsAnnotationEnabled", {
        /**
         * Gets or sets whether annotations are shown along the axis for crosshair values
        */
        get: function () {
            return this.i.bk;
        },
        set: function (v) {
            this.i.bk = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "finalValueAnnotationsVisible", {
        /**
         * Gets or sets whether annotations for the final value of each series is displayed on the axis.
        */
        get: function () {
            return this.i.bm;
        },
        set: function (v) {
            this.i.bm = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "calloutsVisible", {
        /**
         * Gets or sets if callouts should be displayed.
        */
        get: function () {
            return this.i.bj;
        },
        set: function (v) {
            this.i.bj = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "calloutStyleUpdatingEventEnabled", {
        /**
         * Gets or sets if event annotations should be displayed.
        */
        get: function () {
            return this.i.bi;
        },
        set: function (v) {
            this.i.bi = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "calloutsXMemberPath", {
        /**
         * Gets or sets the member path of the X data for the callouts.
        */
        get: function () {
            return this.i.ea;
        },
        set: function (v) {
            this.i.ea = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "calloutsYMemberPath", {
        /**
         * Gets or sets the member path of the Y data for the callouts.
        */
        get: function () {
            return this.i.ec;
        },
        set: function (v) {
            this.i.ec = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "calloutsLabelMemberPath", {
        /**
         * Gets or sets the member path of the label data for the callouts.
        */
        get: function () {
            return this.i.d6;
        },
        set: function (v) {
            this.i.d6 = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "calloutsContentMemberPath", {
        /**
         * Gets or sets the member path of the content data for the callouts.
        */
        get: function () {
            return this.i.d3;
        },
        set: function (v) {
            this.i.d3 = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "hasUserValues", {
        get: function () {
            return this._hasUserValues;
        },
        enumerable: true,
        configurable: true
    });
    IgxDomainChartComponent.prototype.__m = function (propertyName) {
        if (!this._inStyling) {
            this._hasUserValues.add(propertyName);
        }
    };
    IgxDomainChartComponent.prototype._styling = function (container, component, parent) {
        if (this._inStyling) {
            return;
        }
        this._inStyling = true;
        this._stylingContainer = container;
        this._stylingParent = component;
        var genericPrefix = "";
        var typeName = this.i.$type.name;
        if (typeName.indexOf("Xam") === 0) {
            typeName = typeName.substring(3);
        }
        genericPrefix = toSpinal("DomainChartComponent");
        var additionalPrefixes = [];
        var prefix = toSpinal(typeName);
        additionalPrefixes.push(prefix + "-");
        var b = this.i.$type.baseType;
        while (b && b.name != "Object" &&
            b.name != "Base" &&
            b.name != "Control" &&
            b.Name != "DependencyObject" &&
            b.Name != "FrameworkElement") {
            typeName = b.name;
            if (typeName.indexOf("Xam") === 0) {
                typeName = typeName.substring(3);
            }
            var basePrefix = toSpinal(typeName);
            additionalPrefixes.push(basePrefix + "-");
            b = b.baseType;
        }
        if (parent) {
            var parentTypeName = parent.i.$type.name;
            if (parentTypeName.indexOf("Xam") === 0) {
                parentTypeName = parentTypeName.substring(3);
            }
            var parentPrefix = toSpinal(parentTypeName);
            additionalPrefixes.push(parentPrefix + "-" + genericPrefix + "-");
            additionalPrefixes.push(parentPrefix + "-" + prefix + "-");
        }
        initializePropertiesFromCss(container, this, genericPrefix + "-", this.hasUserValues, false, additionalPrefixes);
        if (this._otherStyling) {
            this._otherStyling(container, component, parent);
        }
        this._inStyling = false;
    };
    /**
 * Provides a container for this control

*
* `provideContainer` method provide container for the control.
*
* ```ts
*     this.chart.provideContainer("Container");
* ```
*/
    IgxDomainChartComponent.prototype.provideContainer = function (container) {
        this.i.provideContainer(container);
    };
    /**
     * Destroy this control
    
    *
    * Use the `destroy` property to destroy the chart.
    *
    * ```ts
    * this.chart.destroy();
    * ```
    */
    IgxDomainChartComponent.prototype.destroy = function () {
        this.i.destroy();
    };
    /**
     * Called when the control has been resized.
    
    *
    * `notifyResized` method Called when the control has been resized.
    *
    * ```ts
    * this.chart.notifyResized();
    * ```
    */
    IgxDomainChartComponent.prototype.notifyResized = function () {
        this.i.notifyResized();
    };
    IgxDomainChartComponent.prototype.notifyVisualPropertiesChanged = function () {
        this.i.gv();
    };
    /**
     * Forces any pending refresh to the chart to be finished.
    
    *
    * Method `flush` used to Forces any pending deferred work to render on the chart before continuing.
    *
    * ```ts
    * this.chart.flush();
    * ```
    */
    IgxDomainChartComponent.prototype.flush = function () {
        this.i.f7();
    };
    /**
     * Hides the active main tooltip, if displayed.
    
    *
    * Use the `hideToolTip` method to hide the active tooltip.
    *
    * ```ts
    * this.chart.hideToolTip();
    * ```
    */
    IgxDomainChartComponent.prototype.hideToolTip = function () {
        this.i.ga();
    };
    IgxDomainChartComponent.prototype.notifySetItem = function (source_, index, oldItem, newItem) {
        this.i.gu(source_, index, oldItem, newItem);
    };
    /**
     * Used to manually notify the chart that the data source has reset or cleared its items.
    
    *
    * Use `notifyClearItems` method to notifies the chart that the items have been cleared from an associated data source.
    *
    * ```ts
    * this.chart.notifyClearItems(this.data);
    * ```
    */
    IgxDomainChartComponent.prototype.notifyClearItems = function (source_) {
        this.i.gq(source_);
    };
    IgxDomainChartComponent.prototype.notifyInsertItem = function (source_, index, newItem) {
        this.i.gr(source_, index, newItem);
    };
    IgxDomainChartComponent.prototype.notifyRemoveItem = function (source_, index, oldItem) {
        this.i.gs(source_, index, oldItem);
    };
    Object.defineProperty(IgxDomainChartComponent.prototype, "seriesAdded", {
        /**
         * Event raised when a series is initialized and added to this chart.
        *
        * `SeriesAdded` event raised when a series is initialized and added to this chart.
        *
        * ```html
        *  <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       (seriesAdded)="CategoryChart_SeriesAdded()"
        *      >
        * </igx-category-chart>
        * ```
        */
        get: function () {
            var _this = this;
            if (this._seriesAdded == null) {
                this._seriesAdded = new EventEmitter();
                this.i.seriesAdded = delegateCombine(this.i.seriesAdded, function (o, e) {
                    _this._runInZone(function () {
                        var outerArgs = new IgxChartSeriesEventArgs();
                        outerArgs._provideImplementation(e);
                        if (_this.beforeSeriesAdded) {
                            _this.beforeSeriesAdded(_this, outerArgs);
                        }
                        _this._seriesAdded.emit({
                            sender: _this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._seriesAdded;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "seriesRemoved", {
        /**
         * Event raised when a series is removed from this chart.
        *
        * `SeriesRemoved` event raised when a series is removed from this chart.
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       (seriesRemoved)="CategoryChart_seriesRemoved()">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  CategoryChart_seriesRemoved(sender: any , aregs: ChartSeriesEventArgs)
        *   {
        *
        *   }
        * ```
        */
        get: function () {
            var _this = this;
            if (this._seriesRemoved == null) {
                this._seriesRemoved = new EventEmitter();
                this.i.seriesRemoved = delegateCombine(this.i.seriesRemoved, function (o, e) {
                    _this._runInZone(function () {
                        var outerArgs = new IgxChartSeriesEventArgs();
                        outerArgs._provideImplementation(e);
                        if (_this.beforeSeriesRemoved) {
                            _this.beforeSeriesRemoved(_this, outerArgs);
                        }
                        _this._seriesRemoved.emit({
                            sender: _this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._seriesRemoved;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "seriesPointerEnter", {
        /**
         * Occurs when the pointer enters a Series.
        *
        * `SeriesPointerEnter` event raised when the pointer enters a Series.
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       (seriesPointerEnter)="CategoryChart_seriesPointerEnter()" >
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * CategoryChart_seriesPointerEnter(sender: any , aregs: ChartSeriesEventArgs)
        *   {
        *
        *   }
        * ```
        */
        get: function () {
            var _this = this;
            if (this._seriesPointerEnter == null) {
                this._seriesPointerEnter = new EventEmitter();
                this.i.seriesPointerEnter = delegateCombine(this.i.seriesPointerEnter, function (o, e) {
                    _this._runInZone(function () {
                        var outerArgs = new IgxDomainChartSeriesPointerEventArgs();
                        outerArgs._provideImplementation(e);
                        if (_this.beforeSeriesPointerEnter) {
                            _this.beforeSeriesPointerEnter(_this, outerArgs);
                        }
                        _this._seriesPointerEnter.emit({
                            sender: _this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._seriesPointerEnter;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "seriesPointerLeave", {
        /**
         * Occurs when the pointer leaves a Series.
        *
        * `SeriesPointerLeave` event raised when the pointer leaves a Series.
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       (seriesPointerLeave)= "CategoryChart_seriesPointerLeave()" >
        * </igx-category-chart>
        * ```
        *
        * ```ts
        * CategoryChart_seriesPointerLeave(sender: any , aregs: ChartSeriesEventArgs)
        *   {
        *
        *   }
        * ```
        */
        get: function () {
            var _this = this;
            if (this._seriesPointerLeave == null) {
                this._seriesPointerLeave = new EventEmitter();
                this.i.seriesPointerLeave = delegateCombine(this.i.seriesPointerLeave, function (o, e) {
                    _this._runInZone(function () {
                        var outerArgs = new IgxDomainChartSeriesPointerEventArgs();
                        outerArgs._provideImplementation(e);
                        if (_this.beforeSeriesPointerLeave) {
                            _this.beforeSeriesPointerLeave(_this, outerArgs);
                        }
                        _this._seriesPointerLeave.emit({
                            sender: _this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._seriesPointerLeave;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "seriesPointerMove", {
        /**
         * Occurs when the pointer moves over a Series.
        *
        * `SeriesPointerMove` event raised when the pointer moves over a Series.
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *        (seriesPointerMove)="CategoryChart_seriesPointerMove()">
        * </igx-category-chart>
        * ```
        *
        * ```ts
        *  CategoryChart_seriesPointerMove(sender: any , aregs: ChartSeriesEventArgs)
        *   {
        *
        *   }
        * ```
        */
        get: function () {
            var _this = this;
            if (this._seriesPointerMove == null) {
                this._seriesPointerMove = new EventEmitter();
                this.i.seriesPointerMove = delegateCombine(this.i.seriesPointerMove, function (o, e) {
                    var outerArgs = new IgxDomainChartSeriesPointerEventArgs();
                    outerArgs._provideImplementation(e);
                    if (_this.beforeSeriesPointerMove) {
                        _this.beforeSeriesPointerMove(_this, outerArgs);
                    }
                    _this._seriesPointerMove.emit({
                        sender: _this,
                        args: outerArgs
                    });
                });
            }
            return this._seriesPointerMove;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "seriesPointerDown", {
        /**
         * Occurs when the pointer is pressed down over a Series.
        *
        * `SeriesPointerDown` event raised when the pointer is pressed down over a Series
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       (seriesPointerDown)="CategoryChart_seriesPointerDown()" >
        * </igx-category-chart>
        * ```
        */
        get: function () {
            var _this = this;
            if (this._seriesPointerDown == null) {
                this._seriesPointerDown = new EventEmitter();
                this.i.seriesPointerDown = delegateCombine(this.i.seriesPointerDown, function (o, e) {
                    _this._runInZone(function () {
                        var outerArgs = new IgxDomainChartSeriesPointerEventArgs();
                        outerArgs._provideImplementation(e);
                        if (_this.beforeSeriesPointerDown) {
                            _this.beforeSeriesPointerDown(_this, outerArgs);
                        }
                        _this._seriesPointerDown.emit({
                            sender: _this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._seriesPointerDown;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "seriesPointerUp", {
        /**
         * Occurs when the pointer is released over a Series.
        *
        * `SeriesPointerUp` event raised when the pointer is released over a Series.
        *
        * ```ts
        *  CategoryChart_seriesPointerUp(sender: any , aregs: ChartSeriesEventArgs)
        *   {
        *
        *   }
        * ```
        *
        * ```html
        * <igx-category-chart
        *       yAxisMinimumValue="0"
        *       [dataSource]="data"
        *       (seriesPointerUp)="CategoryChart_seriesPointerUp()" >
        * </igx-category-chart>
        * ```
        */
        get: function () {
            var _this = this;
            if (this._seriesPointerUp == null) {
                this._seriesPointerUp = new EventEmitter();
                this.i.seriesPointerUp = delegateCombine(this.i.seriesPointerUp, function (o, e) {
                    _this._runInZone(function () {
                        var outerArgs = new IgxDomainChartSeriesPointerEventArgs();
                        outerArgs._provideImplementation(e);
                        if (_this.beforeSeriesPointerUp) {
                            _this.beforeSeriesPointerUp(_this, outerArgs);
                        }
                        _this._seriesPointerUp.emit({
                            sender: _this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._seriesPointerUp;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgxDomainChartComponent.prototype, "calloutStyleUpdating", {
        /**
         * Occurs when the style of a callout is updated.
        */
        get: function () {
            var _this = this;
            if (this._calloutStyleUpdating == null) {
                this._calloutStyleUpdating = new EventEmitter();
                this.i.calloutStyleUpdating = delegateCombine(this.i.calloutStyleUpdating, function (o, e) {
                    var outerArgs = new IgxCalloutStyleUpdatingEventArgs();
                    outerArgs._provideImplementation(e);
                    if (_this.beforeCalloutStyleUpdating) {
                        _this.beforeCalloutStyleUpdating(_this, outerArgs);
                    }
                    _this._calloutStyleUpdating.emit({
                        sender: _this,
                        args: outerArgs
                    });
                });
            }
            return this._calloutStyleUpdating;
        },
        enumerable: true,
        configurable: true
    });
    IgxDomainChartComponent.prototype._runInZone = function (act) {
        if (this._zoneRunner != null) {
            this._zoneRunner(act);
        }
        else {
            act();
        }
    };
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", TemplateRef),
        tslib_1.__metadata("design:paramtypes", [TemplateRef])
    ], IgxDomainChartComponent.prototype, "tooltipTemplate", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Array),
        tslib_1.__metadata("design:paramtypes", [Array])
    ], IgxDomainChartComponent.prototype, "tooltipTemplates", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Object),
        tslib_1.__metadata("design:paramtypes", [Object])
    ], IgxDomainChartComponent.prototype, "legend", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Array),
        tslib_1.__metadata("design:paramtypes", [Array])
    ], IgxDomainChartComponent.prototype, "calloutsDataSource", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "pixelScalingRatio", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "titleLeftMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "titleRightMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "titleTopMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "titleBottomMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "subtitleLeftMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "subtitleTopMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "subtitleRightMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "subtitleBottomMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "subtitleTextColor", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "titleTextColor", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "leftMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "topMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "rightMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "bottomMargin", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "transitionDuration", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Function),
        tslib_1.__metadata("design:paramtypes", [Function])
    ], IgxDomainChartComponent.prototype, "transitionEasingFunction", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "subtitleTextStyle", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "titleTextStyle", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Array),
        tslib_1.__metadata("design:paramtypes", [Array])
    ], IgxDomainChartComponent.prototype, "includedProperties", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Array),
        tslib_1.__metadata("design:paramtypes", [Array])
    ], IgxDomainChartComponent.prototype, "excludedProperties", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Array),
        tslib_1.__metadata("design:paramtypes", [Array])
    ], IgxDomainChartComponent.prototype, "brushes", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Array),
        tslib_1.__metadata("design:paramtypes", [Array])
    ], IgxDomainChartComponent.prototype, "outlines", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "isHorizontalZoomEnabled", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "isVerticalZoomEnabled", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "isSeriesHighlightingEnabled", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Object),
        tslib_1.__metadata("design:paramtypes", [Object])
    ], IgxDomainChartComponent.prototype, "windowRect", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "chartTitle", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "subtitle", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "titleAlignment", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "subtitleAlignment", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "unknownValuePlotting", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "resolution", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "thickness", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", IgxMarkerTypeCollection),
        tslib_1.__metadata("design:paramtypes", [IgxMarkerTypeCollection])
    ], IgxDomainChartComponent.prototype, "markerTypes", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Array),
        tslib_1.__metadata("design:paramtypes", [Array])
    ], IgxDomainChartComponent.prototype, "markerBrushes", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Array),
        tslib_1.__metadata("design:paramtypes", [Array])
    ], IgxDomainChartComponent.prototype, "markerOutlines", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "markerMaxCount", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "animateSeriesWhenAxisRangeChanges", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Array),
        tslib_1.__metadata("design:paramtypes", [Array])
    ], IgxDomainChartComponent.prototype, "trendLineBrushes", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "trendLineType", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "trendLineThickness", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "alignsGridLinesToPixels", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "trendLinePeriod", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "toolTipType", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Number),
        tslib_1.__metadata("design:paramtypes", [Number])
    ], IgxDomainChartComponent.prototype, "crosshairsDisplayMode", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "crosshairsSnapToData", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "crosshairsAnnotationEnabled", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "finalValueAnnotationsVisible", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "calloutsVisible", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", Boolean),
        tslib_1.__metadata("design:paramtypes", [Boolean])
    ], IgxDomainChartComponent.prototype, "calloutStyleUpdatingEventEnabled", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "calloutsXMemberPath", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "calloutsYMemberPath", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "calloutsLabelMemberPath", null);
    tslib_1.__decorate([
        Input(),
        tslib_1.__metadata("design:type", String),
        tslib_1.__metadata("design:paramtypes", [String])
    ], IgxDomainChartComponent.prototype, "calloutsContentMemberPath", null);
    tslib_1.__decorate([
        Output(),
        tslib_1.__metadata("design:type", EventEmitter),
        tslib_1.__metadata("design:paramtypes", [])
    ], IgxDomainChartComponent.prototype, "seriesAdded", null);
    tslib_1.__decorate([
        Output(),
        tslib_1.__metadata("design:type", EventEmitter),
        tslib_1.__metadata("design:paramtypes", [])
    ], IgxDomainChartComponent.prototype, "seriesRemoved", null);
    tslib_1.__decorate([
        Output(),
        tslib_1.__metadata("design:type", EventEmitter),
        tslib_1.__metadata("design:paramtypes", [])
    ], IgxDomainChartComponent.prototype, "seriesPointerEnter", null);
    tslib_1.__decorate([
        Output(),
        tslib_1.__metadata("design:type", EventEmitter),
        tslib_1.__metadata("design:paramtypes", [])
    ], IgxDomainChartComponent.prototype, "seriesPointerLeave", null);
    tslib_1.__decorate([
        Output(),
        tslib_1.__metadata("design:type", EventEmitter),
        tslib_1.__metadata("design:paramtypes", [])
    ], IgxDomainChartComponent.prototype, "seriesPointerMove", null);
    tslib_1.__decorate([
        Output(),
        tslib_1.__metadata("design:type", EventEmitter),
        tslib_1.__metadata("design:paramtypes", [])
    ], IgxDomainChartComponent.prototype, "seriesPointerDown", null);
    tslib_1.__decorate([
        Output(),
        tslib_1.__metadata("design:type", EventEmitter),
        tslib_1.__metadata("design:paramtypes", [])
    ], IgxDomainChartComponent.prototype, "seriesPointerUp", null);
    tslib_1.__decorate([
        Output(),
        tslib_1.__metadata("design:type", EventEmitter),
        tslib_1.__metadata("design:paramtypes", [])
    ], IgxDomainChartComponent.prototype, "calloutStyleUpdating", null);
    return IgxDomainChartComponent;
}());
export { IgxDomainChartComponent };
//# sourceMappingURL=igx-domain-chart-component.js.map