import { EventEmitter, Output, Component, Input } from '@angular/core';
import { delegateCombine } from "igniteui-angular-core";
import { LabelsPosition_$type } from "./LabelsPosition";
import { Visibility_$type } from "igniteui-angular-core";
import { Style } from "igniteui-angular-core";
import { LeaderLineType_$type } from "./LeaderLineType";
import { OthersCategoryType_$type } from "igniteui-angular-core";
import { IgxPropertyUpdatedEventArgs } from "igniteui-angular-core";
import { ensureEnum, arrayFindByName, toBrushCollection, fromBrushCollection, ensureBool, toSpinal, initializePropertiesFromCss, NamePatcher, brushToString, stringToBrush } from "igniteui-angular-core";
import { TypeRegistrar } from "igniteui-angular-core";
import * as i0 from "@angular/core";
/**
 * Represents a
 * IgxDoughnutChartComponent base series.
*/
var IgxRingSeriesBaseComponent = /** @class */ /*@__PURE__*/ (function () {
    function IgxRingSeriesBaseComponent() {
        //
        this._dataSource = null;
        this._tooltipTemplate = null;
        this._tooltipContent = null;
        this._tooltipContainerTemplate = null;
        this._showDefaultTooltip = false;
        this.__p = null;
        this._hasUserValues = new Set();
        this._stylingContainer = null;
        this._stylingParent = null;
        this._inStyling = false;
        this._propertyUpdated = null;
        this._zoneRunner = null;
        if (this._styling) {
            NamePatcher.ensureStylablePatched(Object.getPrototypeOf(this));
        }
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    IgxRingSeriesBaseComponent.prototype.createImplementation = function () {
        return null;
    };
    IgxRingSeriesBaseComponent.prototype.ngOnInit = function () {
    };
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "dataSource", {
        get: function () {
            return this._dataSource;
        },
        set: function (value) {
            this._dataSource = value;
            this.bindData();
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype.bindData = function () {
        if (this.i != null && this.i !== undefined) {
            this.i.itemsSource = this._dataSource;
        }
    };
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "i", {
        get: function () {
            return this._implementation;
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype.onImplementationCreated = function () {
    };
    IgxRingSeriesBaseComponent._createFromInternal = function (internal) {
        if (!internal) {
            return null;
        }
        if (!internal.$type) {
            return null;
        }
        var name = internal.$type.name;
        var externalName = "Igx" + name + "Component";
        if (!TypeRegistrar.isRegistered(externalName)) {
            return null;
        }
        return TypeRegistrar.create(externalName);
    };
    Object.defineProperty(IgxRingSeriesBaseComponent.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: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "tooltipTemplate", {
        get: function () {
            return this._tooltipTemplate;
        },
        set: function (value) {
            this._tooltipTemplate = value;
            if (value == null) {
                if (this._tooltipContent !== null) {
                    this._tooltipContent.destroy();
                    this._tooltipContent = null;
                }
            }
            if (this._tooltipContent != null) {
                this._tooltipContent.instance.template = this._tooltipTemplate;
            }
            else {
                if (this.owner != null) {
                    this.owner._ensureTooltipCreated(this);
                }
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "tooltipContainerTemplate", {
        get: function () {
            return this._tooltipContainerTemplate;
        },
        set: function (value) {
            this._tooltipContainerTemplate = value;
            if (this._tooltipContent != null) {
                this._tooltipContent.instance.containerTemplate = this._tooltipContainerTemplate;
            }
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype._ensureTooltipCreated = function (createTooltip, createWrapper) {
        if (this._tooltipTemplate == null) {
            this.i.toolTip = null;
        }
        if (this._tooltipContent == null && this._tooltipTemplate != null) {
            var tooltip = createTooltip();
            if (tooltip == null) {
                return;
            }
            this._tooltipContent = tooltip;
            tooltip.instance.template = this._tooltipTemplate;
            this.i.toolTip = createWrapper(tooltip.location.nativeElement);
        }
    };
    IgxRingSeriesBaseComponent.prototype._ensureTooltipDestroyed = function () {
        if (this._tooltipContent !== null) {
            this._tooltipContent.destroy();
            this._tooltipContent = null;
        }
    };
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "showDefaultTooltip", {
        /**
         * Gets or sets whether default tooltip will be shown.
        */
        get: function () {
            return this._showDefaultTooltip;
        },
        set: function (v) {
            this._showDefaultTooltip = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype.sychronizeCollections = function () { };
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "valueMemberPath", {
        /**
     * Gets or Sets the property name that contains the values.
    */
        get: function () {
            return this.i.cs;
        },
        set: function (v) {
            this.i.cs = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "labelMemberPath", {
        /**
         * Gets or sets the property name that contains the labels.
        */
        get: function () {
            return this.i.bp;
        },
        set: function (v) {
            this.i.bp = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "legendLabelMemberPath", {
        /**
         * Gets or sets the property name that contains the legend labels.
        */
        get: function () {
            return this.i.b3;
        },
        set: function (v) {
            this.i.b3 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "labelsPosition", {
        /**
         * Gets or sets the position of chart labels.
        */
        get: function () {
            return this.i.an;
        },
        set: function (v) {
            this.i.an = ensureEnum(LabelsPosition_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "leaderLineVisibility", {
        /**
         * Gets or sets whether the leader lines are visible.
        */
        get: function () {
            return this.i.en;
        },
        set: function (v) {
            this.i.en = ensureEnum(Visibility_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "leaderLineFill", {
        /**
         * Gets or sets the fill brush.
        */
        get: function () {
            return this.i.ei ? this.i.ei.fill : null;
        },
        set: function (v) {
            this.ensureLeaderLineStyle();
            this.i.ei.fill = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "leaderLineStroke", {
        /**
         * Gets or sets the stroke brush.
        */
        get: function () {
            return this.i.ei ? this.i.ei.stroke : null;
        },
        set: function (v) {
            this.ensureLeaderLineStyle();
            this.i.ei.stroke = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "leaderLineStrokeThickness", {
        /**
         * Gets or sets the stroke thickness.
        */
        get: function () {
            return this.i.ei ? this.i.ei.strokeThickness : NaN;
        },
        set: function (v) {
            this.ensureLeaderLineStyle();
            this.i.ei.strokeThickness = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "leaderLineOpacity", {
        /**
         * Gets or sets the opacity.
        */
        get: function () {
            return this.i.ei ? this.i.ei.opacity : NaN;
        },
        set: function (v) {
            this.ensureLeaderLineStyle();
            this.i.ei.opacity = +v;
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype.ensureLeaderLineStyle = function () {
        if (this.i.ei) {
            return;
        }
        this.i.ei = new Style();
    };
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "leaderLineType", {
        /**
         * Gets or sets what type of leader lines will be used for the outside end labels.
        */
        get: function () {
            return this.i.ao;
        },
        set: function (v) {
            this.i.ao = ensureEnum(LeaderLineType_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "leaderLineMargin", {
        /**
         * Gets or sets the margin between a label and its leader line. The default is 6 pixels.
        */
        get: function () {
            return this.i.a7;
        },
        set: function (v) {
            this.i.a7 = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "othersCategoryThreshold", {
        /**
         * Gets or sets the threshold value that determines if slices are grouped into the Others slice.
        */
        get: function () {
            return this.i.a8;
        },
        set: function (v) {
            this.i.a8 = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "othersCategoryType", {
        /**
         * Gets or sets whether to use numeric or percent-based threshold value.
        */
        get: function () {
            return this.i.ap;
        },
        set: function (v) {
            this.i.ap = ensureEnum(OthersCategoryType_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "othersCategoryText", {
        /**
         * Gets or sets the label of the Others slice.
        */
        get: function () {
            return this.i.ca;
        },
        set: function (v) {
            this.i.ca = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "formatLabel", {
        /**
         * Sets or gets a function which takes an object that produces a formatted label for displaying in the chart.
        */
        get: function () {
            return this.i.aq;
        },
        set: function (v) {
            this.i.aq = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "formatLegendLabel", {
        /**
         * Sets or gets a function which takes an object that produces a formatted label for displaying in the chart's legend.
        */
        get: function () {
            return this.i.ar;
        },
        set: function (v) {
            this.i.ar = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "labelFormat", {
        /**
         * Gets or sets the label format string to use for the label.
        */
        get: function () {
            return this.i.bl;
        },
        set: function (v) {
            this.i.bl = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "labelFormatSpecifiers", {
        /**
         * Gets or sets the format specifiers to use with the LabelFormat string.
        */
        get: function () {
            return this.i.ag;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.ag = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "othersLabelFormat", {
        /**
         * Gets or sets the label format string to use for the label.
        */
        get: function () {
            return this.i.ce;
        },
        set: function (v) {
            this.i.ce = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "othersLabelFormatSpecifiers", {
        /**
         * Gets or sets the format specifiers to use with the OthersLabelFormat string.
        */
        get: function () {
            return this.i.aj;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.aj = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "legendLabelFormat", {
        /**
         * Gets or sets the label format string to use for the label.
        */
        get: function () {
            return this.i.b0;
        },
        set: function (v) {
            this.i.b0 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "legendLabelFormatSpecifiers", {
        /**
         * Gets or sets the format specifiers to use with the LegendLabelFormat string.
        */
        get: function () {
            return this.i.ah;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.ah = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "legendOthersLabelFormat", {
        /**
         * Gets or sets the label format string to use for the label.
        */
        get: function () {
            return this.i.b5;
        },
        set: function (v) {
            this.i.b5 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "legendOthersLabelFormatSpecifiers", {
        /**
         * Gets or sets the format specifiers to use with the LegendOthersLabelFormat string.
        */
        get: function () {
            return this.i.ai;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.ai = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "labelExtent", {
        /**
         * Gets or sets the pixel amount by which the labels are offset from the edge of the slices.
        */
        get: function () {
            return this.i.a6;
        },
        set: function (v) {
            this.i.a6 = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "startAngle", {
        /**
         * Gets or sets the starting angle of the chart.
         * The default zero value is equivalent to 3 o'clock.
        */
        get: function () {
            return this.i.ba;
        },
        set: function (v) {
            this.i.ba = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "othersCategoryFill", {
        /**
         * Gets or sets the fill brush.
        */
        get: function () {
            return this.i.ej ? this.i.ej.fill : null;
        },
        set: function (v) {
            this.ensureOthersCategoryStyle();
            this.i.ej.fill = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "othersCategoryStroke", {
        /**
         * Gets or sets the stroke brush.
        */
        get: function () {
            return this.i.ej ? this.i.ej.stroke : null;
        },
        set: function (v) {
            this.ensureOthersCategoryStyle();
            this.i.ej.stroke = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "othersCategoryStrokeThickness", {
        /**
         * Gets or sets the stroke thickness.
        */
        get: function () {
            return this.i.ej ? this.i.ej.strokeThickness : NaN;
        },
        set: function (v) {
            this.ensureOthersCategoryStyle();
            this.i.ej.strokeThickness = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "othersCategoryOpacity", {
        /**
         * Gets or sets the opacity.
        */
        get: function () {
            return this.i.ej ? this.i.ej.opacity : NaN;
        },
        set: function (v) {
            this.ensureOthersCategoryStyle();
            this.i.ej.opacity = +v;
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype.ensureOthersCategoryStyle = function () {
        if (this.i.ej) {
            return;
        }
        this.i.ej = new Style();
    };
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "selectedSliceFill", {
        /**
         * Gets or sets the fill brush.
        */
        get: function () {
            return this.i.ek ? this.i.ek.fill : null;
        },
        set: function (v) {
            this.ensureSelectedStyle();
            this.i.ek.fill = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "selectedSliceStroke", {
        /**
         * Gets or sets the stroke brush.
        */
        get: function () {
            return this.i.ek ? this.i.ek.stroke : null;
        },
        set: function (v) {
            this.ensureSelectedStyle();
            this.i.ek.stroke = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "selectedSliceStrokeThickness", {
        /**
         * Gets or sets the stroke thickness.
        */
        get: function () {
            return this.i.ek ? this.i.ek.strokeThickness : NaN;
        },
        set: function (v) {
            this.ensureSelectedStyle();
            this.i.ek.strokeThickness = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "selectedSliceOpacity", {
        /**
         * Gets or sets the opacity.
        */
        get: function () {
            return this.i.ek ? this.i.ek.opacity : NaN;
        },
        set: function (v) {
            this.ensureSelectedStyle();
            this.i.ek.opacity = +v;
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype.ensureSelectedStyle = function () {
        if (this.i.ek) {
            return;
        }
        this.i.ek = new Style();
    };
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "brushes", {
        /**
         * Gets or sets the palette of brushes to use for coloring the slices.
        */
        get: function () {
            return fromBrushCollection(this.i.ak);
        },
        set: function (v) {
            this.i.ak = toBrushCollection(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "outlines", {
        /**
         * Gets or sets the palette of brushes to use for outlines on the slices.
        */
        get: function () {
            return fromBrushCollection(this.i.al);
        },
        set: function (v) {
            this.i.al = toBrushCollection(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "labelOuterColor", {
        /**
         * Gets or sets the color for labels rendered outside of the pie chart.
        */
        get: function () {
            return brushToString(this.i.eg);
        },
        set: function (v) {
            this.i.eg = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "labelInnerColor", {
        /**
         * Gets or sets the color for labels rendered inside of the pie chart.
        */
        get: function () {
            return brushToString(this.i.ef);
        },
        set: function (v) {
            this.i.ef = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "textStyle", {
        /**
         * Gets or sets the text style to use for labels.
        */
        get: function () {
            return this.i.co;
        },
        set: function (v) {
            this.i.co = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "isSurfaceInteractionDisabled", {
        /**
         * Gets or sets whether all surface interactions with the plot area should be disabled.
        */
        get: function () {
            return this.i.a3;
        },
        set: function (v) {
            this.i.a3 = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "radiusFactor", {
        /**
         * Gets or sets the scaling factor of the chart's radius. Value between 0 and 1.
        */
        get: function () {
            return this.i.a9;
        },
        set: function (v) {
            this.i.a9 = +v;
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype.findByName = function (name) {
        if (this.findEphemera) {
            if (name && name.indexOf("@@e:") == 0) {
                return this.findEphemera(name);
            }
        }
        if (this.legend && this.legend.name && this.legend.name == name) {
            return this.legend;
        }
        if (this.labelFormatSpecifiers != null && arrayFindByName(this.labelFormatSpecifiers, name)) {
            return arrayFindByName(this.labelFormatSpecifiers, name);
        }
        if (this.othersLabelFormatSpecifiers != null && arrayFindByName(this.othersLabelFormatSpecifiers, name)) {
            return arrayFindByName(this.othersLabelFormatSpecifiers, name);
        }
        if (this.legendLabelFormatSpecifiers != null && arrayFindByName(this.legendLabelFormatSpecifiers, name)) {
            return arrayFindByName(this.legendLabelFormatSpecifiers, name);
        }
        if (this.legendOthersLabelFormatSpecifiers != null && arrayFindByName(this.legendOthersLabelFormatSpecifiers, name)) {
            return arrayFindByName(this.legendOthersLabelFormatSpecifiers, name);
        }
        return null;
    };
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "hasUserValues", {
        get: function () {
            return this._hasUserValues;
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype.__m = function (propertyName) {
        if (!this._inStyling) {
            this._hasUserValues.add(propertyName);
        }
    };
    IgxRingSeriesBaseComponent.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("RingSeriesBaseComponent");
        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;
    };
    /**
 * Called by the UI framework to provide a UI container for rendering this control.

* @param container  * The UI container element.
*/
    IgxRingSeriesBaseComponent.prototype.provideContainer = function (container) {
        this.i.c5(container);
    };
    Object.defineProperty(IgxRingSeriesBaseComponent.prototype, "propertyUpdated", {
        /**
         * Event raised when a property (including "effective" and non-dependency property) value changes.
        */
        get: function () {
            var _this = this;
            if (this._propertyUpdated == null) {
                this._propertyUpdated = new EventEmitter();
                this.i.propertyUpdated = delegateCombine(this.i.propertyUpdated, function (o, e) {
                    _this._runInZone(function () {
                        var outerArgs = new IgxPropertyUpdatedEventArgs();
                        outerArgs._provideImplementation(e);
                        if (_this.beforePropertyUpdated) {
                            _this.beforePropertyUpdated(_this, outerArgs);
                        }
                        _this._propertyUpdated.emit({
                            sender: _this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._propertyUpdated;
        },
        enumerable: false,
        configurable: true
    });
    IgxRingSeriesBaseComponent.prototype._runInZone = function (act) {
        if (this._zoneRunner != null) {
            this._zoneRunner(act);
        }
        else {
            act();
        }
    };
    IgxRingSeriesBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRingSeriesBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    IgxRingSeriesBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: IgxRingSeriesBaseComponent, selector: "ng-component", inputs: { dataSource: "dataSource", legend: "legend", tooltipTemplate: "tooltipTemplate", tooltipContainerTemplate: "tooltipContainerTemplate", showDefaultTooltip: "showDefaultTooltip", valueMemberPath: "valueMemberPath", labelMemberPath: "labelMemberPath", legendLabelMemberPath: "legendLabelMemberPath", labelsPosition: "labelsPosition", leaderLineVisibility: "leaderLineVisibility", leaderLineFill: "leaderLineFill", leaderLineStroke: "leaderLineStroke", leaderLineStrokeThickness: "leaderLineStrokeThickness", leaderLineOpacity: "leaderLineOpacity", leaderLineType: "leaderLineType", leaderLineMargin: "leaderLineMargin", othersCategoryThreshold: "othersCategoryThreshold", othersCategoryType: "othersCategoryType", othersCategoryText: "othersCategoryText", formatLabel: "formatLabel", formatLegendLabel: "formatLegendLabel", labelFormat: "labelFormat", labelFormatSpecifiers: "labelFormatSpecifiers", othersLabelFormat: "othersLabelFormat", othersLabelFormatSpecifiers: "othersLabelFormatSpecifiers", legendLabelFormat: "legendLabelFormat", legendLabelFormatSpecifiers: "legendLabelFormatSpecifiers", legendOthersLabelFormat: "legendOthersLabelFormat", legendOthersLabelFormatSpecifiers: "legendOthersLabelFormatSpecifiers", labelExtent: "labelExtent", startAngle: "startAngle", othersCategoryFill: "othersCategoryFill", othersCategoryStroke: "othersCategoryStroke", othersCategoryStrokeThickness: "othersCategoryStrokeThickness", othersCategoryOpacity: "othersCategoryOpacity", selectedSliceFill: "selectedSliceFill", selectedSliceStroke: "selectedSliceStroke", selectedSliceStrokeThickness: "selectedSliceStrokeThickness", selectedSliceOpacity: "selectedSliceOpacity", brushes: "brushes", outlines: "outlines", labelOuterColor: "labelOuterColor", labelInnerColor: "labelInnerColor", textStyle: "textStyle", isSurfaceInteractionDisabled: "isSurfaceInteractionDisabled", radiusFactor: "radiusFactor" }, outputs: { propertyUpdated: "propertyUpdated" }, ngImport: i0, template: "", isInline: true });
    return IgxRingSeriesBaseComponent;
}());
export { IgxRingSeriesBaseComponent };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRingSeriesBaseComponent, decorators: [{
            type: Component,
            args: [{
                    template: "",
                }]
        }], ctorParameters: function () { return []; }, propDecorators: { dataSource: [{
                type: Input
            }], legend: [{
                type: Input
            }], tooltipTemplate: [{
                type: Input
            }], tooltipContainerTemplate: [{
                type: Input
            }], showDefaultTooltip: [{
                type: Input
            }], valueMemberPath: [{
                type: Input
            }], labelMemberPath: [{
                type: Input
            }], legendLabelMemberPath: [{
                type: Input
            }], labelsPosition: [{
                type: Input
            }], leaderLineVisibility: [{
                type: Input
            }], leaderLineFill: [{
                type: Input
            }], leaderLineStroke: [{
                type: Input
            }], leaderLineStrokeThickness: [{
                type: Input
            }], leaderLineOpacity: [{
                type: Input
            }], leaderLineType: [{
                type: Input
            }], leaderLineMargin: [{
                type: Input
            }], othersCategoryThreshold: [{
                type: Input
            }], othersCategoryType: [{
                type: Input
            }], othersCategoryText: [{
                type: Input
            }], formatLabel: [{
                type: Input
            }], formatLegendLabel: [{
                type: Input
            }], labelFormat: [{
                type: Input
            }], labelFormatSpecifiers: [{
                type: Input
            }], othersLabelFormat: [{
                type: Input
            }], othersLabelFormatSpecifiers: [{
                type: Input
            }], legendLabelFormat: [{
                type: Input
            }], legendLabelFormatSpecifiers: [{
                type: Input
            }], legendOthersLabelFormat: [{
                type: Input
            }], legendOthersLabelFormatSpecifiers: [{
                type: Input
            }], labelExtent: [{
                type: Input
            }], startAngle: [{
                type: Input
            }], othersCategoryFill: [{
                type: Input
            }], othersCategoryStroke: [{
                type: Input
            }], othersCategoryStrokeThickness: [{
                type: Input
            }], othersCategoryOpacity: [{
                type: Input
            }], selectedSliceFill: [{
                type: Input
            }], selectedSliceStroke: [{
                type: Input
            }], selectedSliceStrokeThickness: [{
                type: Input
            }], selectedSliceOpacity: [{
                type: Input
            }], brushes: [{
                type: Input
            }], outlines: [{
                type: Input
            }], labelOuterColor: [{
                type: Input
            }], labelInnerColor: [{
                type: Input
            }], textStyle: [{
                type: Input
            }], isSurfaceInteractionDisabled: [{
                type: Input
            }], radiusFactor: [{
                type: Input
            }], propertyUpdated: [{
                type: Output
            }] } });
