import * as tslib_1 from "tslib";
import * as React from 'react';
import { delegateCombine, delegateRemove } from "igniteui-react-core/ES5/type";
import { HorizontalAlignment_$type } from "igniteui-react-core/ES5/HorizontalAlignment";
import { UnknownValuePlotting_$type } from "igniteui-react-core/ES5/UnknownValuePlotting";
import { MarkerTypeCollection } from "./igr-marker-type-collection";
import { TrendLineType_$type } from "igniteui-react-core/ES5/TrendLineType";
import { ChartSeriesEventArgs } from "./igr-chart-series-event-args";
import { DomainChartSeriesPointerEventArgs } from "./igr-domain-chart-series-pointer-event-args";
import { getModifiedProps, isValidProp, brushToString, stringToBrush, toBrushCollection, fromBrushCollection, ensureBool, fromRect, toRect, ensureEnum } from "igniteui-react-core/ES5/componentUtil";
import { MarkerTypeCollection as MarkerTypeCollection_internal } from "./MarkerTypeCollection";
/**
 * Represents a base class for all domain charts that can plot scatter data and shapefiles
*/
var IgrDomainChart = /** @class */ (function (_super) {
    tslib_1.__extends(IgrDomainChart, _super);
    function IgrDomainChart(props) {
        var _this = _super.call(this, props) || this;
        _this._markerTypes = null;
        _this._seriesAdded = null;
        _this._seriesAdded_wrapped = null;
        _this._seriesRemoved = null;
        _this._seriesRemoved_wrapped = null;
        _this._seriesPointerEnter = null;
        _this._seriesPointerEnter_wrapped = null;
        _this._seriesPointerLeave = null;
        _this._seriesPointerLeave_wrapped = null;
        _this._seriesPointerMove = null;
        _this._seriesPointerMove_wrapped = null;
        _this._seriesPointerDown = null;
        _this._seriesPointerDown_wrapped = null;
        _this._seriesPointerUp = null;
        _this._seriesPointerUp_wrapped = null;
        _this._implementation = _this.createImplementation();
        _this._implementation.externalObject = _this;
        _this.onImplementationCreated();
        return _this;
    }
    IgrDomainChart.prototype.createImplementation = function () {
        return null;
    };
    Object.defineProperty(IgrDomainChart.prototype, "i", {
        get: function () {
            return this._implementation;
        },
        enumerable: true,
        configurable: true
    });
    IgrDomainChart.prototype.onImplementationCreated = function () {
    };
    IgrDomainChart.prototype.componentDidMount = function () {
        try {
            for (var _a = tslib_1.__values(Object.keys(this.props)), _b = _a.next(); !_b.done; _b = _a.next()) {
                var p = _b.value;
                if (isValidProp(this, p)) {
                    this[p] = this.props[p];
                }
            }
        }
        catch (e_1_1) { e_1 = { error: e_1_1 }; }
        finally {
            try {
                if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
            }
            finally { if (e_1) throw e_1.error; }
        }
        var e_1, _c;
    };
    IgrDomainChart.prototype.shouldComponentUpdate = function (nextProps, nextState) {
        var mod = getModifiedProps(this.props, nextProps);
        try {
            for (var _a = tslib_1.__values(Object.keys(mod)), _b = _a.next(); !_b.done; _b = _a.next()) {
                var p = _b.value;
                if (isValidProp(this, p)) {
                    this[p] = mod[p];
                }
            }
        }
        catch (e_2_1) { e_2 = { error: e_2_1 }; }
        finally {
            try {
                if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
            }
            finally { if (e_2) throw e_2.error; }
        }
        return true;
        var e_2, _c;
    };
    IgrDomainChart.prototype.render = function () {
        return null;
    };
    Object.defineProperty(IgrDomainChart.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.bx;
        },
        set: function (v) {
            this.i.bx = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "titleLeftMargin", {
        /**
         * Gets or sets the left margin of chart title
        */
        get: function () {
            return this.i.b6;
        },
        set: function (v) {
            this.i.b6 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "titleRightMargin", {
        /**
         * Gets or sets the right margin of chart title
        */
        get: function () {
            return this.i.b7;
        },
        set: function (v) {
            this.i.b7 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "titleTopMargin", {
        /**
         * Gets or sets the top margin of chart title
        */
        get: function () {
            return this.i.b8;
        },
        set: function (v) {
            this.i.b8 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "titleBottomMargin", {
        /**
         * Gets or sets the bottom margin of chart title
        */
        get: function () {
            return this.i.b5;
        },
        set: function (v) {
            this.i.b5 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "subtitleLeftMargin", {
        /**
         * Gets or sets the left margin of chart subtitle
        */
        get: function () {
            return this.i.b1;
        },
        set: function (v) {
            this.i.b1 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "subtitleTopMargin", {
        /**
         * Gets or sets the top margin of chart subtitle
        */
        get: function () {
            return this.i.b3;
        },
        set: function (v) {
            this.i.b3 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "subtitleRightMargin", {
        /**
         * Gets or sets the right margin of chart subtitle
        */
        get: function () {
            return this.i.b2;
        },
        set: function (v) {
            this.i.b2 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "subtitleBottomMargin", {
        /**
         * Gets or sets the bottom margin of chart subtitle
        */
        get: function () {
            return this.i.b0;
        },
        set: function (v) {
            this.i.b0 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "subtitleTextColor", {
        /**
         * Gets or sets color of chart subtitle
        */
        get: function () {
            return brushToString(this.i.ge);
        },
        set: function (v) {
            this.i.ge = stringToBrush(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "titleTextColor", {
        /**
         * Gets or sets color of chart title
        */
        get: function () {
            return brushToString(this.i.gf);
        },
        set: function (v) {
            this.i.gf = stringToBrush(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "leftMargin", {
        /**
         * Gets or sets the left margin of the chart content.
        */
        get: function () {
            return this.i.bw;
        },
        set: function (v) {
            this.i.bw = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "topMargin", {
        /**
         * Gets or sets the top margin of the chart content.
        */
        get: function () {
            return this.i.b9;
        },
        set: function (v) {
            this.i.b9 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "rightMargin", {
        /**
         * Gets or sets the right margin of the chart content.
        */
        get: function () {
            return this.i.bz;
        },
        set: function (v) {
            this.i.bz = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "bottomMargin", {
        /**
         * Gets or sets the bottom margin around the chart content.
        */
        get: function () {
            return this.i.bv;
        },
        set: function (v) {
            this.i.bv = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "transitionDuration", {
        /**
         * Gets or sets the duration used for animating series plots when the data is changing
        */
        get: function () {
            return this.i.ci;
        },
        set: function (v) {
            this.i.ci = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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.
        */
        get: function () {
            return this.i.ao;
        },
        set: function (v) {
            this.i.ao = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "subtitleTextStyle", {
        /**
         * Gets or sets CSS font property for the chart subtitle
        */
        get: function () {
            return this.i.dt;
        },
        set: function (v) {
            this.i.dt = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "titleTextStyle", {
        /**
         * Gets or sets CSS font property for the chart title
        */
        get: function () {
            return this.i.d4;
        },
        set: function (v) {
            this.i.d4 = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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.
        */
        get: function () {
            return this.i.d;
        },
        set: function (v) {
            this.i.d = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "excludedProperties", {
        /**
         * Gets or sets a set of property paths that should be excluded from consideration by the category chart.
        */
        get: function () {
            return this.i.c;
        },
        set: function (v) {
            this.i.c = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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
        */
        get: function () {
            return fromBrushCollection(this.i.j);
        },
        set: function (v) {
            this.i.j = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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
        */
        get: function () {
            return fromBrushCollection(this.i.n);
        },
        set: function (v) {
            this.i.n = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "isHorizontalZoomEnabled", {
        /**
         * Gets or sets whether the chart can be horizontally zoomed through user interactions.
        */
        get: function () {
            return this.i.ay;
        },
        set: function (v) {
            this.i.ay = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "isVerticalZoomEnabled", {
        /**
         * Gets or sets whether the chart can be vertically zoomed through user interactions.
        */
        get: function () {
            return this.i.a3;
        },
        set: function (v) {
            this.i.a3 = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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.
        */
        get: function () {
            return fromRect(this.i.gj);
        },
        set: function (v) {
            this.i.gj = toRect(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "viewport", {
        /**
         * Gets a rectangle representing the bounds of the plot area.
        */
        get: function () {
            return fromRect(this.i.gi);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "chartTitle", {
        /**
         * Gets or sets text to display above the plot area.
        */
        get: function () {
            return this.i.dx;
        },
        set: function (v) {
            this.i.dx = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "subtitle", {
        /**
         * Gets or sets text to display below the Title, above the plot area.
        */
        get: function () {
            return this.i.dl;
        },
        set: function (v) {
            this.i.dl = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "titleAlignment", {
        /**
         * Gets or sets horizontal alignment which determines the title position, relative to the left and right edges of the control.
        */
        get: function () {
            return this.i.f7;
        },
        set: function (v) {
            this.i.f7 = ensureEnum(HorizontalAlignment_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "subtitleAlignment", {
        /**
         * Gets or sets horizontal alignment which determines the subtitle position, relative to the left and right edges of the control.
        */
        get: function () {
            return this.i.f6;
        },
        set: function (v) {
            this.i.f6 = ensureEnum(HorizontalAlignment_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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.
        */
        get: function () {
            return this.i.ak;
        },
        set: function (v) {
            this.i.ak = ensureEnum(UnknownValuePlotting_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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.
        */
        get: function () {
            return this.i.by;
        },
        set: function (v) {
            this.i.by = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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.
        */
        get: function () {
            return this.i.b4;
        },
        set: function (v) {
            this.i.b4 = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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 MarkerTypeCollection();
                var innerColl = this.i.af;
                var wasNull = false;
                if (!innerColl) {
                    wasNull = true;
                    innerColl = new MarkerTypeCollection_internal();
                }
                this._markerTypes = coll._fromInner(innerColl);
                if (wasNull) {
                    this.i.af = innerColl;
                }
            }
            return this._markerTypes;
        },
        set: function (v) {
            var coll = new MarkerTypeCollection();
            this._markerTypes = coll._fromOuter(v);
            var innerColl = new MarkerTypeCollection_internal();
            var va = typeof v == 'string' ? coll._splitOuter(v) : v;
            innerColl._inner = va.map(function (item) { return coll._ensureOuter(item); });
            this.i.af = innerColl;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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
        */
        get: function () {
            return fromBrushCollection(this.i.l);
        },
        set: function (v) {
            this.i.l = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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
        */
        get: function () {
            return fromBrushCollection(this.i.m);
        },
        set: function (v) {
            this.i.m = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "markerMaxCount", {
        /**
         * Gets or sets the maximum number of markers displyed in the plot area of the chart.
        */
        get: function () {
            return this.i.ch;
        },
        set: function (v) {
            this.i.ch = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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.av;
        },
        set: function (v) {
            this.i.av = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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
        */
        get: function () {
            return fromBrushCollection(this.i.o);
        },
        set: function (v) {
            this.i.o = toBrushCollection(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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
        */
        get: function () {
            return this.i.ai;
        },
        set: function (v) {
            this.i.ai = ensureEnum(TrendLineType_$type, v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.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
        */
        get: function () {
            return this.i.ca;
        },
        set: function (v) {
            this.i.ca = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "alignsGridLinesToPixels", {
        /**
         * Gets or sets a value indicating whether grid and tick lines are aligned to device pixels.
        */
        get: function () {
            return this.i.au;
        },
        set: function (v) {
            this.i.au = ensureBool(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "trendLinePeriod", {
        get: function () {
            return this.i.cj;
        },
        set: function (v) {
            this.i.cj = +v;
        },
        enumerable: true,
        configurable: true
    });
    /**
     * Provides a container for this control
    
    */
    IgrDomainChart.prototype.provideContainer = function (container) {
        this.i.provideContainer(container);
    };
    /**
     * Destroy this control
    
    */
    IgrDomainChart.prototype.destroy = function () {
        this.i.destroy();
    };
    /**
     * Called when the control has been resized.
    
    */
    IgrDomainChart.prototype.notifyResized = function () {
        this.i.notifyResized();
    };
    IgrDomainChart.prototype.notifyVisualPropertiesChanged = function () {
        this.i.fd();
    };
    /**
     * Forces any pending refresh to the chart to be finished.
    
    */
    IgrDomainChart.prototype.flush = function () {
        this.i.ep();
    };
    /**
     * Hides the active main tooltip, if displayed.
    
    */
    IgrDomainChart.prototype.hideToolTip = function () {
        this.i.es();
    };
    IgrDomainChart.prototype.notifySetItem = function (source_, index, oldItem, newItem) {
        this.i.fc(source_, index, oldItem, newItem);
    };
    /**
     * Used to manually notify the chart that the data source has reset or cleared its items.
    
    */
    IgrDomainChart.prototype.notifyClearItems = function (source_) {
        this.i.e8(source_);
    };
    IgrDomainChart.prototype.notifyInsertItem = function (source_, index, newItem) {
        this.i.e9(source_, index, newItem);
    };
    IgrDomainChart.prototype.notifyRemoveItem = function (source_, index, oldItem) {
        this.i.fa(source_, index, oldItem);
    };
    Object.defineProperty(IgrDomainChart.prototype, "seriesAdded", {
        /**
         * Event raised when a series is initialized and added to this chart.
        */
        get: function () {
            return this._seriesAdded;
        },
        set: function (ev) {
            var _this = this;
            if (this._seriesAdded !== null) {
                this.i.seriesAdded = delegateRemove(this.i.seriesAdded, this._seriesAdded_wrapped);
                this._seriesAdded_wrapped = null;
                this._seriesAdded = null;
            }
            this._seriesAdded = ev;
            this._seriesAdded_wrapped = function (o, e) {
                var outerArgs = new ChartSeriesEventArgs();
                outerArgs._provideImplementation(e);
                _this._seriesAdded(_this, outerArgs);
            };
            this.i.seriesAdded = delegateCombine(this.i.seriesAdded, this._seriesAdded_wrapped);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "seriesRemoved", {
        /**
         * Event raised when a series is removed from this chart.
        */
        get: function () {
            return this._seriesRemoved;
        },
        set: function (ev) {
            var _this = this;
            if (this._seriesRemoved !== null) {
                this.i.seriesRemoved = delegateRemove(this.i.seriesRemoved, this._seriesRemoved_wrapped);
                this._seriesRemoved_wrapped = null;
                this._seriesRemoved = null;
            }
            this._seriesRemoved = ev;
            this._seriesRemoved_wrapped = function (o, e) {
                var outerArgs = new ChartSeriesEventArgs();
                outerArgs._provideImplementation(e);
                _this._seriesRemoved(_this, outerArgs);
            };
            this.i.seriesRemoved = delegateCombine(this.i.seriesRemoved, this._seriesRemoved_wrapped);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "seriesPointerEnter", {
        /**
         * Occurs when the pointer enters a Series.
        */
        get: function () {
            return this._seriesPointerEnter;
        },
        set: function (ev) {
            var _this = this;
            if (this._seriesPointerEnter !== null) {
                this.i.seriesPointerEnter = delegateRemove(this.i.seriesPointerEnter, this._seriesPointerEnter_wrapped);
                this._seriesPointerEnter_wrapped = null;
                this._seriesPointerEnter = null;
            }
            this._seriesPointerEnter = ev;
            this._seriesPointerEnter_wrapped = function (o, e) {
                var outerArgs = new DomainChartSeriesPointerEventArgs();
                outerArgs._provideImplementation(e);
                _this._seriesPointerEnter(_this, outerArgs);
            };
            this.i.seriesPointerEnter = delegateCombine(this.i.seriesPointerEnter, this._seriesPointerEnter_wrapped);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "seriesPointerLeave", {
        /**
         * Occurs when the pointer leaves a Series.
        */
        get: function () {
            return this._seriesPointerLeave;
        },
        set: function (ev) {
            var _this = this;
            if (this._seriesPointerLeave !== null) {
                this.i.seriesPointerLeave = delegateRemove(this.i.seriesPointerLeave, this._seriesPointerLeave_wrapped);
                this._seriesPointerLeave_wrapped = null;
                this._seriesPointerLeave = null;
            }
            this._seriesPointerLeave = ev;
            this._seriesPointerLeave_wrapped = function (o, e) {
                var outerArgs = new DomainChartSeriesPointerEventArgs();
                outerArgs._provideImplementation(e);
                _this._seriesPointerLeave(_this, outerArgs);
            };
            this.i.seriesPointerLeave = delegateCombine(this.i.seriesPointerLeave, this._seriesPointerLeave_wrapped);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "seriesPointerMove", {
        /**
         * Occurs when the pointer moves over a Series.
        */
        get: function () {
            return this._seriesPointerMove;
        },
        set: function (ev) {
            var _this = this;
            if (this._seriesPointerMove !== null) {
                this.i.seriesPointerMove = delegateRemove(this.i.seriesPointerMove, this._seriesPointerMove_wrapped);
                this._seriesPointerMove_wrapped = null;
                this._seriesPointerMove = null;
            }
            this._seriesPointerMove = ev;
            this._seriesPointerMove_wrapped = function (o, e) {
                var outerArgs = new DomainChartSeriesPointerEventArgs();
                outerArgs._provideImplementation(e);
                _this._seriesPointerMove(_this, outerArgs);
            };
            this.i.seriesPointerMove = delegateCombine(this.i.seriesPointerMove, this._seriesPointerMove_wrapped);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "seriesPointerDown", {
        /**
         * Occurs when the pointer is pressed down over a Series.
        */
        get: function () {
            return this._seriesPointerDown;
        },
        set: function (ev) {
            var _this = this;
            if (this._seriesPointerDown !== null) {
                this.i.seriesPointerDown = delegateRemove(this.i.seriesPointerDown, this._seriesPointerDown_wrapped);
                this._seriesPointerDown_wrapped = null;
                this._seriesPointerDown = null;
            }
            this._seriesPointerDown = ev;
            this._seriesPointerDown_wrapped = function (o, e) {
                var outerArgs = new DomainChartSeriesPointerEventArgs();
                outerArgs._provideImplementation(e);
                _this._seriesPointerDown(_this, outerArgs);
            };
            this.i.seriesPointerDown = delegateCombine(this.i.seriesPointerDown, this._seriesPointerDown_wrapped);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrDomainChart.prototype, "seriesPointerUp", {
        /**
         * Occurs when the pointer is released over a Series.
        */
        get: function () {
            return this._seriesPointerUp;
        },
        set: function (ev) {
            var _this = this;
            if (this._seriesPointerUp !== null) {
                this.i.seriesPointerUp = delegateRemove(this.i.seriesPointerUp, this._seriesPointerUp_wrapped);
                this._seriesPointerUp_wrapped = null;
                this._seriesPointerUp = null;
            }
            this._seriesPointerUp = ev;
            this._seriesPointerUp_wrapped = function (o, e) {
                var outerArgs = new DomainChartSeriesPointerEventArgs();
                outerArgs._provideImplementation(e);
                _this._seriesPointerUp(_this, outerArgs);
            };
            this.i.seriesPointerUp = delegateCombine(this.i.seriesPointerUp, this._seriesPointerUp_wrapped);
        },
        enumerable: true,
        configurable: true
    });
    return IgrDomainChart;
}(React.Component));
export { IgrDomainChart };
