import { __extends } from "tslib";
import { IgrAxis } from "./igr-axis";
import { DataToolTipLayerGroupingMode_$type } from "igniteui-react-core";
import { DataTooltipGroupedPositionX_$type } from "igniteui-react-core";
import { DataTooltipGroupedPositionY_$type } from "igniteui-react-core";
import { DataAbbreviationMode_$type } from "igniteui-react-core";
import { DataLegendValueMode_$type } from "igniteui-react-core";
import { DataLegendHeaderDateMode_$type } from "igniteui-react-core";
import { DataLegendHeaderTimeMode_$type } from "igniteui-react-core";
import { DataLegendSummaryType_$type } from "igniteui-react-core";
import { LegendItemBadgeShape_$type } from "igniteui-react-core";
import { DataLegendUnitsMode_$type } from "igniteui-react-core";
import { DataLegendLabelMode_$type } from "igniteui-react-core";
import { IgrAnnotationLayer } from "./igr-annotation-layer";
import { DataToolTipLayer } from "./DataToolTipLayer";
import { ensureBool, ensureEnum, brushToString, stringToBrush, arrayFindByName } from "igniteui-react-core";
import { Thickness } from "igniteui-react-core";
import { FontInfo } from "igniteui-react-core";
/**
 * Represents an annotation layer that displays grouped tooltips with summaries for series.
*/
var IgrDataToolTipLayer = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(IgrDataToolTipLayer, _super);
    function IgrDataToolTipLayer(props) {
        return _super.call(this, props) || this;
    }
    IgrDataToolTipLayer.prototype.createImplementation = function () {
        return new DataToolTipLayer();
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "i", {
        /**
                                     * @hidden
                                     */
        get: function () {
            return this._implementation;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "isAnnotationHoverLayer", {
        /**
         * Gets whether the series is an annotation layer displayed only when hovering over the chart.
        */
        get: function () {
            return this.i.d6;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "isDefaultTooltipBehaviorDisabled", {
        /**
         * Gets whether the default tooltip behaviors for the chart are disabled if this layer is present.
        */
        get: function () {
            return this.i.eh;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "targetAxis", {
        /**
         * Gets or sets the Axis to target this annotation to. If null, this annotation layer will not render content.
        */
        get: function () {
            var r = this.i.xb;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrAxis._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.xb = null : this.i.xb = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "useInterpolation", {
        /**
         * Gets or sets whether to use value interpolation when drawing the tooltips.
        */
        get: function () {
            return this.i.yp;
        },
        set: function (v) {
            this.i.yp = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "groupingMode", {
        /**
         * Gets or sets the grouping mode to apply to use for the tooltip layer.
        */
        get: function () {
            return this.i.xt;
        },
        set: function (v) {
            this.i.xt = ensureEnum(DataToolTipLayerGroupingMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "actualGroupingMode", {
        /**
         * Gets the actual resolved tooltip layer grouping mode.
        */
        get: function () {
            return this.i.xs;
        },
        set: function (v) {
            this.i.xs = ensureEnum(DataToolTipLayerGroupingMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "positionOffsetX", {
        /**
         * Gets or sets the offset of the tooltip layer on the X axis.
        */
        get: function () {
            return this.i.yy;
        },
        set: function (v) {
            this.i.yy = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "positionOffsetY", {
        /**
         * Gets or sets the offset of the tooltip layer on the Y axis.
        */
        get: function () {
            return this.i.yz;
        },
        set: function (v) {
            this.i.yz = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "defaultPositionOffsetX", {
        /**
         * Gets or sets the default offset of the tooltip layer on the X axis.
        */
        get: function () {
            return this.i.yw;
        },
        set: function (v) {
            this.i.yw = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "defaultPositionOffsetY", {
        /**
         * Gets or sets the default offset of the tooltip layer on the Y axis.
        */
        get: function () {
            return this.i.yx;
        },
        set: function (v) {
            this.i.yx = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "groupedPositionModeX", {
        /**
         * Gets or sets the tooltip position mode on the X axis for grouped series.
        */
        get: function () {
            return this.i.xl;
        },
        set: function (v) {
            this.i.xl = ensureEnum(DataTooltipGroupedPositionX_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "actualGroupedPositionModeX", {
        /**
         * Gets the actual resolved tooltip position mode on the X axis for grouped series.
        */
        get: function () {
            return this.i.xk;
        },
        set: function (v) {
            this.i.xk = ensureEnum(DataTooltipGroupedPositionX_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "groupedPositionModeY", {
        /**
         * Gets or sets the tooltip position mode on the Y axis for grouped series.
        */
        get: function () {
            return this.i.xp;
        },
        set: function (v) {
            this.i.xp = ensureEnum(DataTooltipGroupedPositionY_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "actualGroupedPositionModeY", {
        /**
         * Gets the actual resolved tooltip position mode on the Y axis for grouped series.
        */
        get: function () {
            return this.i.xo;
        },
        set: function (v) {
            this.i.xo = ensureEnum(DataTooltipGroupedPositionY_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "shouldUpdateWhenSeriesDataChanges", {
        /**
         * Gets or sets whether the data legend should update when the series data is mutated.
        */
        get: function () {
            return this.i.yo;
        },
        set: function (v) {
            this.i.yo = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "includedSeries", {
        /**
         * Gets or sets indexes or names of series to include in displaying in the data legend, e.g. "0, 1"
        */
        get: function () {
            return this.i.w8;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.w8 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "excludedSeries", {
        /**
         * Gets or sets indexes or names of series to exclude from displaying in the data legend, e.g. "0, 1"
         * The ExcludedSeries property takes precedences over values of IncludedSeries property
        */
        get: function () {
            return this.i.w3;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.w3 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "includedColumns", {
        /**
         * Gets or sets names of data columns or their labels to include in displaying in the data legend, e.g. "High, Low" or "H, L"
         * The ExcludedColumns property takes precedences over values of IncludedColumns property
        */
        get: function () {
            return this.i.w7;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.w7 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "excludedColumns", {
        /**
         * Gets or sets names of data columns or their labels to exclude from displaying in the data legend, e.g. "High, Low" or "H, L"
         * The ExcludedColumns property takes precedences over values of IncludedColumns property
        */
        get: function () {
            return this.i.w2;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.w2 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueFormatAbbreviation", {
        /**
         * Gets or sets mode for abbreviating large numbers displayed in the legend
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get: function () {
            return this.i.xc;
        },
        set: function (v) {
            this.i.xc = ensureEnum(DataAbbreviationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueFormatMaxFractions", {
        /**
         * Gets or sets maximum digits for formating numbers displayed in the legend
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get: function () {
            return this.i.zy;
        },
        set: function (v) {
            this.i.zy = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueFormatMinFractions", {
        /**
         * Gets or sets minimum digits for formating numbers displayed in the legend
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get: function () {
            return this.i.zz;
        },
        set: function (v) {
            this.i.zz = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueFormatMode", {
        /**
         * Gets or sets the mode for displaying values in the data legend, e.g. Currency ($500.25), Decimal (500.25), Integer (500)
        */
        get: function () {
            return this.i.xi;
        },
        set: function (v) {
            this.i.xi = ensureEnum(DataLegendValueMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueFormatCulture", {
        /**
         * Gets or sets globalization culture when displaying values as currencies, e.g. use "en-GB" to display British pound symbol when the ValueFormatMode property is set to 'Currency' mode
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get: function () {
            return this.i.abt;
        },
        set: function (v) {
            this.i.abt = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueFormatUseGrouping", {
        /**
         * Gets or sets whether or not use grouping separator, e.g, 15,000 for 15000
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get: function () {
            return this.i.yq;
        },
        set: function (v) {
            this.i.yq = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueFormatString", {
        /**
         * Gets or sets the format string for values displayed in the data legend.
        */
        get: function () {
            return this.i.abz;
        },
        set: function (v) {
            this.i.abz = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueFormatSpecifiers", {
        /**
         * Gets or sets the format specifiers to use with the ValueFormatString string.
        */
        get: function () {
            return this.i.w9;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.w9 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueRowMarginBottom", {
        get: function () {
            return this.i.aeq ? this.i.aeq.bottom : NaN;
        },
        set: function (v) {
            this.ensureValueRowMargin();
            this.i.aeq.bottom = +v;
            this.i.aeq = this.i.aeq;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueRowMarginLeft", {
        get: function () {
            return this.i.aeq ? this.i.aeq.left : NaN;
        },
        set: function (v) {
            this.ensureValueRowMargin();
            this.i.aeq.left = +v;
            this.i.aeq = this.i.aeq;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueRowMarginRight", {
        get: function () {
            return this.i.aeq ? this.i.aeq.right : NaN;
        },
        set: function (v) {
            this.ensureValueRowMargin();
            this.i.aeq.right = +v;
            this.i.aeq = this.i.aeq;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueRowMarginTop", {
        get: function () {
            return this.i.aeq ? this.i.aeq.top : NaN;
        },
        set: function (v) {
            this.ensureValueRowMargin();
            this.i.aeq.top = +v;
            this.i.aeq = this.i.aeq;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureValueRowMargin = function () {
        if (this.i.aeq) {
            return;
        }
        this.i.aeq = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueRowVisible", {
        /**
         * Gets or sets whether to show series rows.
        */
        get: function () {
            return this.i.yr;
        },
        set: function (v) {
            this.i.yr = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueTextWhenMissingData", {
        /**
         * Gets or sets text displayed when data column is missing a value, e.g. "no data"
        */
        get: function () {
            return this.i.ab8;
        },
        set: function (v) {
            this.i.ab8 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueTextUseSeriesColors", {
        /**
         * Gets or sets whether to use series colors when displaying values in the legend
        */
        get: function () {
            return this.i.ys;
        },
        set: function (v) {
            this.i.ys = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueTextMarginBottom", {
        get: function () {
            return this.i.aer ? this.i.aer.bottom : NaN;
        },
        set: function (v) {
            this.ensureValueTextMargin();
            this.i.aer.bottom = +v;
            this.i.aer = this.i.aer;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueTextMarginLeft", {
        get: function () {
            return this.i.aer ? this.i.aer.left : NaN;
        },
        set: function (v) {
            this.ensureValueTextMargin();
            this.i.aer.left = +v;
            this.i.aer = this.i.aer;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueTextMarginRight", {
        get: function () {
            return this.i.aer ? this.i.aer.right : NaN;
        },
        set: function (v) {
            this.ensureValueTextMargin();
            this.i.aer.right = +v;
            this.i.aer = this.i.aer;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueTextMarginTop", {
        get: function () {
            return this.i.aer ? this.i.aer.top : NaN;
        },
        set: function (v) {
            this.ensureValueTextMargin();
            this.i.aer.top = +v;
            this.i.aer = this.i.aer;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureValueTextMargin = function () {
        if (this.i.aer) {
            return;
        }
        this.i.aer = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueTextColor", {
        /**
         * Gets or sets the units text color.
        */
        get: function () {
            return brushToString(this.i.aeb);
        },
        set: function (v) {
            this.i.aeb = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "valueTextStyle", {
        /**
         * Gets or Sets the style to use for the units text.
        */
        get: function () {
            if (this.i.yf == null) {
                return null;
            }
            return this.i.yf.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.yf = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerFormatString", {
        /**
         * Gets or sets the format string for header text displayed in the data legend.
        */
        get: function () {
            return this.i.aah;
        },
        set: function (v) {
            this.i.aah = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerFormatSpecifiers", {
        /**
         * Gets or sets the format specifiers to use with the HeaderFormatString string.
        */
        get: function () {
            return this.i.w6;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.w6 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerFormatCulture", {
        /**
         * Gets or sets globalization culture when displaying header as date time
         * This property is ignored when setting HeaderFormatSpecifiers or HeaderFormatString properties
        */
        get: function () {
            return this.i.aad;
        },
        set: function (v) {
            this.i.aad = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerFormatDate", {
        /**
         * Gets or sets date format for the header
         * This property is ignored when setting HeaderFormatSpecifiers or HeaderFormatString properties
        */
        get: function () {
            return this.i.xd;
        },
        set: function (v) {
            this.i.xd = ensureEnum(DataLegendHeaderDateMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerFormatTime", {
        /**
         * Gets or sets time format for the header
         * This property is ignored when setting HeaderFormatSpecifiers or HeaderFormatString properties
        */
        get: function () {
            return this.i.xe;
        },
        set: function (v) {
            this.i.xe = ensureEnum(DataLegendHeaderTimeMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerText", {
        /**
         * Gets or sets the HeaderText for the data legend.
        */
        get: function () {
            return this.i.aam;
        },
        set: function (v) {
            this.i.aam = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerTextColor", {
        /**
         * Gets or sets the header text color.
        */
        get: function () {
            return brushToString(this.i.ad3);
        },
        set: function (v) {
            this.i.ad3 = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerTextMarginBottom", {
        get: function () {
            return this.i.aek ? this.i.aek.bottom : NaN;
        },
        set: function (v) {
            this.ensureHeaderTextMargin();
            this.i.aek.bottom = +v;
            this.i.aek = this.i.aek;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerTextMarginLeft", {
        get: function () {
            return this.i.aek ? this.i.aek.left : NaN;
        },
        set: function (v) {
            this.ensureHeaderTextMargin();
            this.i.aek.left = +v;
            this.i.aek = this.i.aek;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerTextMarginRight", {
        get: function () {
            return this.i.aek ? this.i.aek.right : NaN;
        },
        set: function (v) {
            this.ensureHeaderTextMargin();
            this.i.aek.right = +v;
            this.i.aek = this.i.aek;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerTextMarginTop", {
        get: function () {
            return this.i.aek ? this.i.aek.top : NaN;
        },
        set: function (v) {
            this.ensureHeaderTextMargin();
            this.i.aek.top = +v;
            this.i.aek = this.i.aek;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureHeaderTextMargin = function () {
        if (this.i.aek) {
            return;
        }
        this.i.aek = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerRowMarginBottom", {
        get: function () {
            return this.i.aej ? this.i.aej.bottom : NaN;
        },
        set: function (v) {
            this.ensureHeaderRowMargin();
            this.i.aej.bottom = +v;
            this.i.aej = this.i.aej;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerRowMarginLeft", {
        get: function () {
            return this.i.aej ? this.i.aej.left : NaN;
        },
        set: function (v) {
            this.ensureHeaderRowMargin();
            this.i.aej.left = +v;
            this.i.aej = this.i.aej;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerRowMarginRight", {
        get: function () {
            return this.i.aej ? this.i.aej.right : NaN;
        },
        set: function (v) {
            this.ensureHeaderRowMargin();
            this.i.aej.right = +v;
            this.i.aej = this.i.aej;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerRowMarginTop", {
        get: function () {
            return this.i.aej ? this.i.aej.top : NaN;
        },
        set: function (v) {
            this.ensureHeaderRowMargin();
            this.i.aej.top = +v;
            this.i.aej = this.i.aej;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureHeaderRowMargin = function () {
        if (this.i.aej) {
            return;
        }
        this.i.aej = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerRowVisible", {
        /**
         * Gets or sets whether to show Header row.
        */
        get: function () {
            return this.i.yh;
        },
        set: function (v) {
            this.i.yh = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "headerTextStyle", {
        /**
         * Gets or Sets the style to use for the header text.
        */
        get: function () {
            if (this.i.x7 == null) {
                return null;
            }
            return this.i.x7.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.x7 = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryTitleTextColor", {
        /**
         * Gets or sets the summary text color.
        */
        get: function () {
            return brushToString(this.i.ad6);
        },
        set: function (v) {
            this.i.ad6 = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryTitleTextStyle", {
        /**
         * Gets or Sets the style to use for the summary text.
        */
        get: function () {
            if (this.i.ya == null) {
                return null;
            }
            return this.i.ya.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.ya = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryType", {
        /**
         * Gets or sets the SummaryType for the data legend.
        */
        get: function () {
            return this.i.xg;
        },
        set: function (v) {
            this.i.xg = ensureEnum(DataLegendSummaryType_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryTitleText", {
        /**
         * Gets or sets the SummaryTitleText for the data legend.
        */
        get: function () {
            return this.i.aa5;
        },
        set: function (v) {
            this.i.aa5 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryTitleTextMarginBottom", {
        get: function () {
            return this.i.aen ? this.i.aen.bottom : NaN;
        },
        set: function (v) {
            this.ensureSummaryTitleTextMargin();
            this.i.aen.bottom = +v;
            this.i.aen = this.i.aen;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryTitleTextMarginLeft", {
        get: function () {
            return this.i.aen ? this.i.aen.left : NaN;
        },
        set: function (v) {
            this.ensureSummaryTitleTextMargin();
            this.i.aen.left = +v;
            this.i.aen = this.i.aen;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryTitleTextMarginRight", {
        get: function () {
            return this.i.aen ? this.i.aen.right : NaN;
        },
        set: function (v) {
            this.ensureSummaryTitleTextMargin();
            this.i.aen.right = +v;
            this.i.aen = this.i.aen;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryTitleTextMarginTop", {
        get: function () {
            return this.i.aen ? this.i.aen.top : NaN;
        },
        set: function (v) {
            this.ensureSummaryTitleTextMargin();
            this.i.aen.top = +v;
            this.i.aen = this.i.aen;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureSummaryTitleTextMargin = function () {
        if (this.i.aen) {
            return;
        }
        this.i.aen = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryRowMarginBottom", {
        get: function () {
            return this.i.aem ? this.i.aem.bottom : NaN;
        },
        set: function (v) {
            this.ensureSummaryRowMargin();
            this.i.aem.bottom = +v;
            this.i.aem = this.i.aem;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryRowMarginLeft", {
        get: function () {
            return this.i.aem ? this.i.aem.left : NaN;
        },
        set: function (v) {
            this.ensureSummaryRowMargin();
            this.i.aem.left = +v;
            this.i.aem = this.i.aem;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryRowMarginRight", {
        get: function () {
            return this.i.aem ? this.i.aem.right : NaN;
        },
        set: function (v) {
            this.ensureSummaryRowMargin();
            this.i.aem.right = +v;
            this.i.aem = this.i.aem;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryRowMarginTop", {
        get: function () {
            return this.i.aem ? this.i.aem.top : NaN;
        },
        set: function (v) {
            this.ensureSummaryRowMargin();
            this.i.aem.top = +v;
            this.i.aem = this.i.aem;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureSummaryRowMargin = function () {
        if (this.i.aem) {
            return;
        }
        this.i.aem = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryValueTextColor", {
        /**
         * Gets or sets the units text color.
        */
        get: function () {
            return brushToString(this.i.ad8);
        },
        set: function (v) {
            this.i.ad8 = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryValueTextStyle", {
        /**
         * Gets or Sets the style to use for the units text.
        */
        get: function () {
            if (this.i.yc == null) {
                return null;
            }
            return this.i.yc.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.yc = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryLabelText", {
        /**
         * Gets or sets the units text for the data legend.
        */
        get: function () {
            return this.i.aa0;
        },
        set: function (v) {
            this.i.aa0 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryLabelTextColor", {
        /**
         * Gets or sets the units text color.
        */
        get: function () {
            return brushToString(this.i.ad5);
        },
        set: function (v) {
            this.i.ad5 = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryLabelTextStyle", {
        /**
         * Gets or Sets the style to use for the units text.
        */
        get: function () {
            if (this.i.x9 == null) {
                return null;
            }
            return this.i.x9.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.x9 = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryUnitsText", {
        /**
         * Gets or sets the units text for the data legend.
        */
        get: function () {
            return this.i.abb;
        },
        set: function (v) {
            this.i.abb = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryUnitsTextColor", {
        /**
         * Gets or sets the units text color.
        */
        get: function () {
            return brushToString(this.i.ad7);
        },
        set: function (v) {
            this.i.ad7 = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "summaryUnitsTextStyle", {
        /**
         * Gets or Sets the style to use for the units text.
        */
        get: function () {
            if (this.i.yb == null) {
                return null;
            }
            return this.i.yb.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.yb = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "badgeMarginBottom", {
        get: function () {
            return this.i.aei ? this.i.aei.bottom : NaN;
        },
        set: function (v) {
            this.ensureBadgeMargin();
            this.i.aei.bottom = +v;
            this.i.aei = this.i.aei;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "badgeMarginLeft", {
        get: function () {
            return this.i.aei ? this.i.aei.left : NaN;
        },
        set: function (v) {
            this.ensureBadgeMargin();
            this.i.aei.left = +v;
            this.i.aei = this.i.aei;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "badgeMarginRight", {
        get: function () {
            return this.i.aei ? this.i.aei.right : NaN;
        },
        set: function (v) {
            this.ensureBadgeMargin();
            this.i.aei.right = +v;
            this.i.aei = this.i.aei;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "badgeMarginTop", {
        get: function () {
            return this.i.aei ? this.i.aei.top : NaN;
        },
        set: function (v) {
            this.ensureBadgeMargin();
            this.i.aei.top = +v;
            this.i.aei = this.i.aei;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureBadgeMargin = function () {
        if (this.i.aei) {
            return;
        }
        this.i.aei = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "badgeShape", {
        /**
         * Gets or sets the BadgeShape for the data legend.
        */
        get: function () {
            return this.i.xx;
        },
        set: function (v) {
            this.i.xx = ensureEnum(LegendItemBadgeShape_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "unitsDisplayMode", {
        /**
         * Gets or sets the UnitsMode for the data legend.
        */
        get: function () {
            return this.i.xh;
        },
        set: function (v) {
            this.i.xh = ensureEnum(DataLegendUnitsMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "unitsText", {
        /**
         * Gets or sets the units text for the data legend.
        */
        get: function () {
            return this.i.abm;
        },
        set: function (v) {
            this.i.abm = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "unitsTextColor", {
        /**
         * Gets or sets the units text color.
        */
        get: function () {
            return brushToString(this.i.aea);
        },
        set: function (v) {
            this.i.aea = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "unitsTextMarginBottom", {
        get: function () {
            return this.i.aep ? this.i.aep.bottom : NaN;
        },
        set: function (v) {
            this.ensureUnitsTextMargin();
            this.i.aep.bottom = +v;
            this.i.aep = this.i.aep;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "unitsTextMarginLeft", {
        get: function () {
            return this.i.aep ? this.i.aep.left : NaN;
        },
        set: function (v) {
            this.ensureUnitsTextMargin();
            this.i.aep.left = +v;
            this.i.aep = this.i.aep;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "unitsTextMarginRight", {
        get: function () {
            return this.i.aep ? this.i.aep.right : NaN;
        },
        set: function (v) {
            this.ensureUnitsTextMargin();
            this.i.aep.right = +v;
            this.i.aep = this.i.aep;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "unitsTextMarginTop", {
        get: function () {
            return this.i.aep ? this.i.aep.top : NaN;
        },
        set: function (v) {
            this.ensureUnitsTextMargin();
            this.i.aep.top = +v;
            this.i.aep = this.i.aep;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureUnitsTextMargin = function () {
        if (this.i.aep) {
            return;
        }
        this.i.aep = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "unitsTextStyle", {
        /**
         * Gets or Sets the style to use for the units text.
        */
        get: function () {
            if (this.i.ye == null) {
                return null;
            }
            return this.i.ye.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.ye = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "titleTextMarginBottom", {
        get: function () {
            return this.i.aeo ? this.i.aeo.bottom : NaN;
        },
        set: function (v) {
            this.ensureTitleTextMargin();
            this.i.aeo.bottom = +v;
            this.i.aeo = this.i.aeo;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "titleTextMarginLeft", {
        get: function () {
            return this.i.aeo ? this.i.aeo.left : NaN;
        },
        set: function (v) {
            this.ensureTitleTextMargin();
            this.i.aeo.left = +v;
            this.i.aeo = this.i.aeo;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "titleTextMarginRight", {
        get: function () {
            return this.i.aeo ? this.i.aeo.right : NaN;
        },
        set: function (v) {
            this.ensureTitleTextMargin();
            this.i.aeo.right = +v;
            this.i.aeo = this.i.aeo;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "titleTextMarginTop", {
        get: function () {
            return this.i.aeo ? this.i.aeo.top : NaN;
        },
        set: function (v) {
            this.ensureTitleTextMargin();
            this.i.aeo.top = +v;
            this.i.aeo = this.i.aeo;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureTitleTextMargin = function () {
        if (this.i.aeo) {
            return;
        }
        this.i.aeo = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "titleTextColor", {
        /**
         * Gets or sets the display text color.
        */
        get: function () {
            return brushToString(this.i.ad9);
        },
        set: function (v) {
            this.i.ad9 = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "titleTextStyle", {
        /**
         * Gets or Sets the style to use for the display text.
        */
        get: function () {
            if (this.i.yd == null) {
                return null;
            }
            return this.i.yd.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.yd = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "labelDisplayMode", {
        /**
         * Gets or sets the mode for displaying labels before series values in the data legend, e.g. O: H: L: C: for financial series
        */
        get: function () {
            return this.i.xf;
        },
        set: function (v) {
            this.i.xf = ensureEnum(DataLegendLabelMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "labelTextColor", {
        /**
         * Gets or sets the units text color.
        */
        get: function () {
            return brushToString(this.i.ad4);
        },
        set: function (v) {
            this.i.ad4 = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "labelTextMarginBottom", {
        get: function () {
            return this.i.ael ? this.i.ael.bottom : NaN;
        },
        set: function (v) {
            this.ensureLabelTextMargin();
            this.i.ael.bottom = +v;
            this.i.ael = this.i.ael;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "labelTextMarginLeft", {
        get: function () {
            return this.i.ael ? this.i.ael.left : NaN;
        },
        set: function (v) {
            this.ensureLabelTextMargin();
            this.i.ael.left = +v;
            this.i.ael = this.i.ael;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "labelTextMarginRight", {
        get: function () {
            return this.i.ael ? this.i.ael.right : NaN;
        },
        set: function (v) {
            this.ensureLabelTextMargin();
            this.i.ael.right = +v;
            this.i.ael = this.i.ael;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataToolTipLayer.prototype, "labelTextMarginTop", {
        get: function () {
            return this.i.ael ? this.i.ael.top : NaN;
        },
        set: function (v) {
            this.ensureLabelTextMargin();
            this.i.ael.top = +v;
            this.i.ael = this.i.ael;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.ensureLabelTextMargin = function () {
        if (this.i.ael) {
            return;
        }
        this.i.ael = new Thickness(2);
    };
    Object.defineProperty(IgrDataToolTipLayer.prototype, "labelTextStyle", {
        /**
         * Gets or Sets the style to use for the units text.
        */
        get: function () {
            if (this.i.x8 == null) {
                return null;
            }
            return this.i.x8.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.x8 = fi;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataToolTipLayer.prototype.findByName = function (name) {
        var baseResult = _super.prototype.findByName.call(this, name);
        if (baseResult) {
            return baseResult;
        }
        if (this.targetAxis && this.targetAxis.name && this.targetAxis.name == name) {
            return this.targetAxis;
        }
        if (this.valueFormatSpecifiers != null && arrayFindByName(this.valueFormatSpecifiers, name)) {
            return arrayFindByName(this.valueFormatSpecifiers, name);
        }
        if (this.headerFormatSpecifiers != null && arrayFindByName(this.headerFormatSpecifiers, name)) {
            return arrayFindByName(this.headerFormatSpecifiers, name);
        }
        return null;
    };
    IgrDataToolTipLayer.prototype._styling = function (container, component, parent) {
        _super.prototype._styling.call(this, container, component, parent);
        this._inStyling = true;
        if (this.targetAxis && this.targetAxis._styling) {
            this.targetAxis._styling(container, component, this);
        }
        this._inStyling = false;
    };
    /**
     * Hides any tooltips presented by the layer, if any.
    
    */
    IgrDataToolTipLayer.prototype.hideToolTips = function () {
        this.i.n9();
    };
    /**
     * Hides any tooltips presented by the layer, if any.
    
    */
    IgrDataToolTipLayer.prototype.hideToolTipsImmediate = function () {
        this.i.oa();
    };
    return IgrDataToolTipLayer;
}(IgrAnnotationLayer));
export { IgrDataToolTipLayer };
