UNPKG

igniteui-angular-gauges

Version:

Ignite UI Angular gauge components.

1,920 lines 78.7 kB
/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE  AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE:  you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import { EventEmitter, Output, Component, ViewChild, ContentChildren, Input, ChangeDetectionStrategy, ViewContainerRef } from '@angular/core';
import { AngularRenderer } from "igniteui-angular-core";
import { TypeRegistrar } from "igniteui-angular-core";
import { XamRadialGauge } from './XamRadialGauge';
import { CollectionAdapter, brushToString, stringToBrush, toPoint, fromPoint, fromBrushCollection, toBrushCollection, ensureBool, ensureEnum, toSpinal, initializePropertiesFromCss, NamePatcher, arrayFindByName } from "igniteui-angular-core";
import { delegateCombine } from "igniteui-angular-core";
import { NotifyCollectionChangedAction } from "igniteui-angular-core";
import { SweepDirection_$type } from "igniteui-angular-core";
import { RadialGaugeNeedleShape_$type } from './RadialGaugeNeedleShape';
import { RadialGaugePivotShape_$type } from './RadialGaugePivotShape';
import { RadialGaugeScaleOversweepShape_$type } from './RadialGaugeScaleOversweepShape';
import { RadialGaugeBackingShape_$type } from './RadialGaugeBackingShape';
import { RadialGaugeDuplicateLabelOmissionStrategy_$type } from './RadialGaugeDuplicateLabelOmissionStrategy';
import { IgxFormatRadialGaugeLabelEventArgs } from './igx-format-radial-gauge-label-event-args';
import { IgxAlignRadialGaugeLabelEventArgs } from './igx-align-radial-gauge-label-event-args';
import { RadialGaugeStylingDefaults } from './RadialGaugeStylingDefaults';
import { IgxRadialGaugeRangeComponent } from './igx-radial-gauge-range-component';
import { IgxRadialGaugeRangeCollection } from './igx-radial-gauge-range-collection';
import { IgxDoubleValueChangedEventArgs } from "igniteui-angular-core";
import { FontInfo } from "igniteui-angular-core";
import { HighlightedValueDisplayMode_$type } from "igniteui-angular-core";
import * as i0 from "@angular/core";
/**
 * A radial gauge for displaying a single value on a defined scale.
*/
export let IgxRadialGaugeComponent = /*@__PURE__*/ (() => {
    class IgxRadialGaugeComponent {
        constructor(_renderer, _elRef, _ngZone, _componentFactoryResolver, _injector) {
            this._renderer = _renderer;
            this._elRef = _elRef;
            this._ngZone = _ngZone;
            this._componentFactoryResolver = _componentFactoryResolver;
            this._injector = _injector;
            /**
            * The ranges actually present in the chart. Do not directly modify this array.
            * This array's contents can be modified by causing Angular to reproject the child content.
            * Or adding and removing ranges from the manual ranges collection on the ranges property.
            */
            this.actualRanges = [];
            this._ranges = null;
            this._rangesAdapter = null;
            this._zoneRunner = null;
            this.__p = null;
            this._hasUserValues = new Set();
            this._stylingContainer = null;
            this._stylingParent = null;
            this._inStyling = false;
            this._alignTitle = null;
            this._alignSubtitle = null;
            this._alignHighlightLabel = null;
            this._formatTitle = null;
            this._formatSubtitle = null;
            this._formatHighlightLabel = null;
            this._formatLabel = null;
            this._alignLabel = null;
            this._valueChanged = null;
            this._highlightValueChanged = null;
            this._actualMinimumValueChange = null;
            this._actualMaximumValueChange = null;
            //super();
            if (this._styling) {
                NamePatcher.ensureStylablePatched(Object.getPrototypeOf(this));
            }
            this._zoneRunner = (act) => this._ngZone.run(act);
            this._implementation = this.createImplementation();
            this._container = _renderer.createElement("div");
            _renderer.appendChild(_elRef.element.nativeElement, this._container);
            _renderer.setStyle(this._container, "display", "block");
            _renderer.setStyle(this._container, "width", "100%");
            _renderer.setStyle(this._container, "height", "100%");
            var root;
            root = this._container;
            if (this._container.nativeElement != null) {
                root = this._container.nativeElement;
            }
            var ren = new AngularRenderer(root, this._renderer, window.document, this._ngZone, true, RadialGaugeStylingDefaults);
            this._root = root;
            this._wrapper = ren;
            var gauge = this.i;
            this._gauge = gauge;
            this._rangesAdapter = new CollectionAdapter([], this.i.ranges, this.actualRanges, (c) => c.i, (i) => {
                i._provideRenderer(this._wrapper);
                if (this._root && this._root.parentElement) {
                    i._styling(this._root, this, this);
                }
            }, (i) => { i._provideRenderer(null); });
            gauge.provideContainer(ren);
            ren.addSizeWatcher(() => {
                this._gauge.containerResized();
            });
        }
        set height(value) {
            this._height = value;
            this._renderer.setStyle(this._elRef.element.nativeElement, "height", value);
            this._gauge.containerResized();
        }
        get height() {
            return this._height;
        }
        set width(value) {
            this._width = value;
            this._renderer.setStyle(this._elRef.element.nativeElement, "width", value);
            this._gauge.containerResized();
        }
        get width() {
            return this._width;
        }
        /**
         * A collection or manually added axes for the chart.
        */
        get ranges() {
            if (this._ranges === null) {
                let coll = new IgxRadialGaugeRangeCollection();
                let inner = coll._innerColl;
                inner.addListener((sender, e) => {
                    switch (e.action) {
                        case NotifyCollectionChangedAction.Add:
                            this._rangesAdapter.insertManualItem(e.newStartingIndex, e.newItems.item(0));
                            break;
                        case NotifyCollectionChangedAction.Remove:
                            this._rangesAdapter.removeManualItemAt(e.oldStartingIndex);
                            break;
                        case NotifyCollectionChangedAction.Replace:
                            this._rangesAdapter.removeManualItemAt(e.oldStartingIndex);
                            this._rangesAdapter.insertManualItem(e.newStartingIndex, e.newItems.item(0));
                            break;
                        case NotifyCollectionChangedAction.Reset:
                            this._rangesAdapter.clearManualItems();
                            break;
                    }
                });
                this._ranges = coll;
            }
            return this._ranges;
        }
        ngOnDestroy() {
            this._gauge.destroy();
            this._wrapper.destroy();
        }
        createImplementation() {
            return new XamRadialGauge();
        }
        ngAfterContentInit() {
            this._rangesAdapter.updateQuery(this.contentRanges);
        }
        ngAfterViewInit() {
            this.updateStyle();
            this.i.containerResized();
        }
        updateStyle() {
            this._styling(this._container, this);
            if (this.actualRanges && this.actualRanges.length > 0) {
                var currRange = this.actualRanges;
                for (var i = 0; i < currRange.length; i++) {
                    currRange[i]._styling(this._root, this, this);
                }
            }
        }
        _runInZone(act) {
            if (this._zoneRunner != null) {
                this._zoneRunner(act);
            }
            else {
                act();
            }
        }
        /**
         * @hidden
         */
        get i() {
            return this._implementation;
        } /**
                                     * @hidden
                                     */
        static _createFromInternal(internal) {
            if (!internal) {
                return null;
            }
            if (!internal.$type) {
                return null;
            }
            let name = internal.$type.name;
            let externalName = "Igx" + name + "Component";
            if (!TypeRegistrar.isRegistered(externalName)) {
                return null;
            }
            return TypeRegistrar.create(externalName);
        }
        /**
     * Gets or sets a collection of brushes to be used as the palette for gauge ranges.
    */
        get rangeBrushes() {
            return fromBrushCollection(this.i.ak);
        }
        set rangeBrushes(v) {
            this.i.ak = toBrushCollection(v);
        }
        /**
         * Gets or sets a collection of brushes to be used as the palette for gauge outlines.
        */
        get rangeOutlines() {
            return fromBrushCollection(this.i.al);
        }
        set rangeOutlines(v) {
            this.i.al = toBrushCollection(v);
        }
        /**
         * Gets or sets the minimum value of the scale.
        */
        get minimumValue() {
            return this.i.dz;
        }
        set minimumValue(v) {
            this.i.dz = +v;
        }
        /**
         * Gets the resolved minimum value of the scale.
        */
        get actualMinimumValue() {
            return this.i.da;
        }
        set actualMinimumValue(v) {
            this.i.da = +v;
        }
        /**
         * Gets or sets the maximum value of the scale.
        */
        get maximumValue() {
            return this.i.dx;
        }
        set maximumValue(v) {
            this.i.dx = +v;
        }
        /**
         * Gets the resolved maximum value of the scale.
        */
        get actualMaximumValue() {
            return this.i.c9;
        }
        set actualMaximumValue(v) {
            this.i.c9 = +v;
        }
        /**
         * Gets or sets the interval to use for the scale.
        */
        get interval() {
            return this.i.dt;
        }
        set interval(v) {
            this.i.dt = +v;
        }
        /**
         * Gets or sets the x position of the center of the gauge with the value ranging from 0 to 1.
        */
        get centerX() {
            return this.i.dl;
        }
        set centerX(v) {
            this.i.dl = +v;
        }
        /**
         * Gets or sets the y position of the center of the gauge with the value ranging from 0 to 1.
        */
        get centerY() {
            return this.i.dm;
        }
        set centerY(v) {
            this.i.dm = +v;
        }
        /**
         * Gets or sets the value at which to point the needle of the gauge.
        */
        get value() {
            return this.i.ff;
        }
        set value(v) {
            this.i.ff = +v;
        }
        /**
         * Gets or sets the highlight value at which to point the secondary needle of the gauge.
        */
        get highlightValue() {
            return this.i.dr;
        }
        set highlightValue(v) {
            this.i.dr = +v;
        }
        /**
         * Gets the actual opacity of the primary needle while highlighting
        */
        get actualHighlightValueOpacity() {
            return this.i.c8;
        }
        set actualHighlightValueOpacity(v) {
            this.i.c8 = +v;
        }
        /**
         * Gets or sets the opacity of the primary needle while highlighting
        */
        get highlightValueOpacity() {
            return this.i.ds;
        }
        set highlightValueOpacity(v) {
            this.i.ds = +v;
        }
        /**
         * Gets whether and how to display the highlighted value.
        */
        get actualHighlightValueDisplayMode() {
            return this.i.bu;
        }
        set actualHighlightValueDisplayMode(v) {
            this.i.bu = ensureEnum(HighlightedValueDisplayMode_$type, v);
        }
        /**
         * Gets or sets whether and how to display the highlighted value.
        */
        get highlightValueDisplayMode() {
            return this.i.bv;
        }
        set highlightValueDisplayMode(v) {
            this.i.bv = ensureEnum(HighlightedValueDisplayMode_$type, v);
        }
        /**
         * Gets or sets the start angle for the scale in degrees.
        */
        get scaleStartAngle() {
            return this.i.ez;
        }
        set scaleStartAngle(v) {
            this.i.ez = +v;
        }
        /**
         * Gets or sets the end angle for the scale in degrees.
        */
        get scaleEndAngle() {
            return this.i.eu;
        }
        set scaleEndAngle(v) {
            this.i.eu = +v;
        }
        /**
         * Gets or sets the direction in which the scale sweeps around the center from the start angle to end angle.
        */
        get scaleSweepDirection() {
            return this.i.mi;
        }
        set scaleSweepDirection(v) {
            this.i.mi = ensureEnum(SweepDirection_$type, v);
        }
        /**
         * Gets or sets the number of milliseconds over which changes to the gauge should be animated.
        */
        get transitionDuration() {
            return this.i.fg;
        }
        set transitionDuration(v) {
            this.i.fg = +v;
        }
        /**
         * Gets or sets the brush to use when rendering the fill of the needle.
        */
        get needleBrush() {
            return brushToString(this.i.ma);
        }
        set needleBrush(v) {
            this.i.ma = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use when rendering the outline of the needle.
        */
        get needleOutline() {
            return brushToString(this.i.mb);
        }
        set needleOutline(v) {
            this.i.mb = stringToBrush(v);
        }
        /**
         * Gets or sets the extent (from -1 to 1) at which to start rendering the needle, measured from the center of the gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get needleStartExtent() {
            return this.i.ei;
        }
        set needleStartExtent(v) {
            this.i.ei = +v;
        }
        /**
         * Gets or sets the extent (from -1 to 1) at which to end rendering the needle, measured from the center of the gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get needleEndExtent() {
            return this.i.ea;
        }
        set needleEndExtent(v) {
            this.i.ea = +v;
        }
        /**
         * Gets or sets the shape to use when rendering the needle from a number of options.
        */
        get needleShape() {
            return this.i.a5;
        }
        set needleShape(v) {
            this.i.a5 = ensureEnum(RadialGaugeNeedleShape_$type, v);
        }
        /**
         * Gets or sets the width of the needle at its point using a value from (0 to 1). Note: Only some needle shapes respect this property.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get needleStartWidthRatio() {
            return this.i.ej;
        }
        set needleStartWidthRatio(v) {
            this.i.ej = +v;
        }
        /**
         * Gets or sets the width of the needle at its point using a value from (0 to 1). Note: Only some needle shapes respect this property.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get needleEndWidthRatio() {
            return this.i.eb;
        }
        set needleEndWidthRatio(v) {
            this.i.eb = +v;
        }
        /**
         * Gets or sets the width of the needle at its feature which is closest to the base (e.g. a bulb) with a value from 0 to 1. Note: Only some needle shapes respect this property, namely: NeedleWithBulb, RectangleWithBulb, TrapezoidWithBulb, and TriangleWithBulb.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get needleBaseFeatureWidthRatio() {
            return this.i.d9;
        }
        set needleBaseFeatureWidthRatio(v) {
            this.i.d9 = +v;
        }
        /**
         * Gets or sets the extent of the feature which is closest to the base (e.g. a bulb) with a value from -1 to 1. Note: Only some needle shapes respect this property, namely: NeedleWithBulb, RectangleWithBulb, TrapezoidWithBulb, and TriangleWithBulb.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get needleBaseFeatureExtent() {
            return this.i.d8;
        }
        set needleBaseFeatureExtent(v) {
            this.i.d8 = +v;
        }
        /**
         * Gets or sets the width of the needle at its feature which is closest to the point (e.g. the tapering point of a needle) with a value from 0 to 1. Note: Only some needle shapes respect this property.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get needlePointFeatureWidthRatio() {
            return this.i.eh;
        }
        set needlePointFeatureWidthRatio(v) {
            this.i.eh = +v;
        }
        /**
         * Gets or sets the extent of the feature which is closest to the point (e.g. the tapering point of a needle) with a value from -1 to 1. Note: Only some needle shapes respect this property.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get needlePointFeatureExtent() {
            return this.i.eg;
        }
        set needlePointFeatureExtent(v) {
            this.i.eg = +v;
        }
        /**
         * Gets or sets the width of the cap of the needle with a value from 0 to 1. Note: Will only take effect if you have a cap set on the needle.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get needlePivotWidthRatio() {
            return this.i.ef;
        }
        set needlePivotWidthRatio(v) {
            this.i.ef = +v;
        }
        /**
         * Gets or sets the width of the inner cutout section of the needle cap with a value from 0 to 1. Note: Will only take effect if you have a cap set on the needle that has a cutout section.
        */
        get needlePivotInnerWidthRatio() {
            return this.i.ec;
        }
        set needlePivotInnerWidthRatio(v) {
            this.i.ec = +v;
        }
        /**
         * Gets or sets the shape to use for the needle cap.
        */
        get needlePivotShape() {
            return this.i.a6;
        }
        set needlePivotShape(v) {
            this.i.a6 = ensureEnum(RadialGaugePivotShape_$type, v);
        }
        /**
         * Gets or sets the position at which to start rendering the scale, measured from the center of the gauge as a value from 0 to 1.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get scaleStartExtent() {
            return this.i.e0;
        }
        set scaleStartExtent(v) {
            this.i.e0 = +v;
        }
        /**
         * Gets or sets the brush to use for filling the needle cap. Note: this only applies to certain cap shapes.
        */
        get needlePivotBrush() {
            return brushToString(this.i.mc);
        }
        set needlePivotBrush(v) {
            this.i.mc = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the outlines of the needle cap.
        */
        get needlePivotOutline() {
            return brushToString(this.i.md);
        }
        set needlePivotOutline(v) {
            this.i.md = stringToBrush(v);
        }
        /**
         * Gets or sets the stroke thickness of the needle outline.
        */
        get needleStrokeThickness() {
            return this.i.ek;
        }
        set needleStrokeThickness(v) {
            this.i.ek = +v;
        }
        /**
         * Gets or sets the stroke thickness to use for the outline of the needle cap.
        */
        get needlePivotStrokeThickness() {
            return this.i.ed;
        }
        set needlePivotStrokeThickness(v) {
            this.i.ed = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the scale as a value from 0 to 1 measured from the center of the gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get scaleEndExtent() {
            return this.i.ev;
        }
        set scaleEndExtent(v) {
            this.i.ev = +v;
        }
        /**
         * Gets or sets the position at which to put the labels as a value from 0 to 1, measured form the center of the gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get labelExtent() {
            return this.i.du;
        }
        set labelExtent(v) {
            this.i.du = +v;
        }
        /**
         * Gets or sets the interval to use for rendering labels. This defaults to be the same interval as the tickmarks on the scale.
        */
        get labelInterval() {
            return this.i.dw;
        }
        set labelInterval(v) {
            this.i.dw = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the major tickmarks as a value from 0 to 1, measured from the center of the gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get tickStartExtent() {
            return this.i.e7;
        }
        set tickStartExtent(v) {
            this.i.e7 = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the major tickmarks as a value from 0 to 1, measured from the center of the gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get tickEndExtent() {
            return this.i.e5;
        }
        set tickEndExtent(v) {
            this.i.e5 = +v;
        }
        /**
         * Gets or sets the stroke thickness to use when rendering ticks.
        */
        get tickStrokeThickness() {
            return this.i.e9;
        }
        set tickStrokeThickness(v) {
            this.i.e9 = +v;
        }
        /**
         * Gets or sets the brush to use for the major tickmarks.
        */
        get tickBrush() {
            return brushToString(this.i.mg);
        }
        set tickBrush(v) {
            this.i.mg = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the label font.
        */
        get fontBrush() {
            return brushToString(this.i.l6);
        }
        set fontBrush(v) {
            this.i.l6 = stringToBrush(v);
        }
        /**
         * Gets or sets the position at which to start rendering the minor tickmarks as a value from 0 to 1, measured from the center of the gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get minorTickStartExtent() {
            return this.i.d4;
        }
        set minorTickStartExtent(v) {
            this.i.d4 = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the minor tickmarks as a value from 0 to 1, measured from the center of the gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get minorTickEndExtent() {
            return this.i.d2;
        }
        set minorTickEndExtent(v) {
            this.i.d2 = +v;
        }
        /**
         * Gets or sets the stroke thickness to use when rendering minor ticks.
        */
        get minorTickStrokeThickness() {
            return this.i.d6;
        }
        set minorTickStrokeThickness(v) {
            this.i.d6 = +v;
        }
        /**
         * Gets or sets the brush to use for the minor tickmarks.
        */
        get minorTickBrush() {
            return brushToString(this.i.l9);
        }
        set minorTickBrush(v) {
            this.i.l9 = stringToBrush(v);
        }
        /**
         * Gets or sets the number of minor tickmarks to place between major tickmarks.
        */
        get minorTickCount() {
            return this.i.d1;
        }
        set minorTickCount(v) {
            this.i.d1 = +v;
        }
        /**
         * Gets or sets the brush to use to fill the background of the scale.
        */
        get scaleBrush() {
            return brushToString(this.i.me);
        }
        set scaleBrush(v) {
            this.i.me = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use to fill the backing of the gauge.
        */
        get backingBrush() {
            return brushToString(this.i.l4);
        }
        set backingBrush(v) {
            this.i.l4 = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the outline of the backing.
        */
        get backingOutline() {
            return brushToString(this.i.l5);
        }
        set backingOutline(v) {
            this.i.l5 = stringToBrush(v);
        }
        /**
         * Gets or sets the stroke thickness of the backing outline.
        */
        get backingStrokeThickness() {
            return this.i.dj;
        }
        set backingStrokeThickness(v) {
            this.i.dj = +v;
        }
        /**
         * Gets or sets the outer extent of the gauge backing.
        */
        get backingOuterExtent() {
            return this.i.dg;
        }
        set backingOuterExtent(v) {
            this.i.dg = +v;
        }
        /**
         * Gets or sets the over sweep angle to apply to the backing if it is displaying fitted (in degrees). Must be greater or equal to 0.
        */
        get backingOversweep() {
            return this.i.di;
        }
        set backingOversweep(v) {
            this.i.di = +v;
        }
        /**
         * Gets or sets the extra degrees of sweep to apply to the scale background. Must be greater or equal to 0.
        */
        get scaleOversweep() {
            return this.i.ex;
        }
        set scaleOversweep(v) {
            this.i.ex = +v;
        }
        /**
         * Gets or sets the oversweep shape to use for the excess fill area for the scale.
        */
        get scaleOversweepShape() {
            return this.i.a8;
        }
        set scaleOversweepShape(v) {
            this.i.a8 = ensureEnum(RadialGaugeScaleOversweepShape_$type, v);
        }
        /**
         * Gets or sets the corner rounding radius to use for the fitted scale backings.
        */
        get backingCornerRadius() {
            return this.i.dc;
        }
        set backingCornerRadius(v) {
            this.i.dc = +v;
        }
        /**
         * Gets or sets the inner extent of the gauge backing.
        */
        get backingInnerExtent() {
            return this.i.de;
        }
        set backingInnerExtent(v) {
            this.i.de = +v;
        }
        /**
         * Gets or sets the type of shape to use for the backing of the gauge.
        */
        get backingShape() {
            return this.i.a0;
        }
        set backingShape(v) {
            this.i.a0 = ensureEnum(RadialGaugeBackingShape_$type, v);
        }
        /**
         * Gets or sets the multiplying factor to apply to the normal radius of the gauge.
         * The radius of the gauge is defined by the minimum of the width and height of the control divided by 2.0.
         * This introduces a multiplicative factor to that value.
        */
        get radiusMultiplier() {
            return this.i.ep;
        }
        set radiusMultiplier(v) {
            this.i.ep = +v;
        }
        /**
         * Gets or sets the strategy to use for omitting labels if the first and last label have the same value.
        */
        get duplicateLabelOmissionStrategy() {
            return this.i.a1;
        }
        set duplicateLabelOmissionStrategy(v) {
            this.i.a1 = ensureEnum(RadialGaugeDuplicateLabelOmissionStrategy_$type, v);
        }
        /**
         * Gets or sets whether needle dragging is enabled or not.
        */
        get isNeedleDraggingEnabled() {
            return this.i.cf;
        }
        set isNeedleDraggingEnabled(v) {
            this.i.cf = ensureBool(v);
        }
        /**
         * Gets or sets whether the needle is constrained within the minimum and maximum value range during dragging.
        */
        get isNeedleDraggingConstrained() {
            return this.i.ce;
        }
        set isNeedleDraggingConstrained(v) {
            this.i.ce = ensureBool(v);
        }
        /**
         * Gets or sets whether needle dragging is enabled or not.
        */
        get isHighlightNeedleDraggingEnabled() {
            return this.i.cd;
        }
        set isHighlightNeedleDraggingEnabled(v) {
            this.i.cd = ensureBool(v);
        }
        /**
         * Gets or sets whether the needle is constrained within the minimum and maximum value range during dragging.
        */
        get isHighlightNeedleDraggingConstrained() {
            return this.i.cc;
        }
        set isHighlightNeedleDraggingConstrained(v) {
            this.i.cc = ensureBool(v);
        }
        /**
         * Gets or sets the font.
        */
        get font() {
            return this.i.fv;
        }
        set font(v) {
            this.i.fv = v;
        }
        /**
         * Gets or sets the label composite format used when creating label values.
        */
        get labelFormat() {
            return this.i.gi;
        }
        set labelFormat(v) {
            this.i.gi = v;
        }
        /**
         * Gets or sets the format specifiers to use with the LabelFormat string.
        */
        get labelFormatSpecifiers() {
            return this.i.ah;
        }
        set labelFormatSpecifiers(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.ah = v;
        }
        /**
         * Gets a value indicating whether the radial gauge is currently animating.
        */
        get animating() {
            return this.i.b5;
        }
        /**
         * Gets the transition progress of the animation when the control is animating.
        */
        get transitionProgress() {
            return this.i.fd;
        }
        set transitionProgress(v) {
            this.i.fd = +v;
        }
        /**
         * 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 pixelScalingRatio() {
            return this.i.eo;
        }
        set pixelScalingRatio(v) {
            this.i.eo = +v;
        }
        /**
         * Gets the actual pixel scaling ratio 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 actualPixelScalingRatio() {
            return this.i.db;
        }
        set actualPixelScalingRatio(v) {
            this.i.db = +v;
        }
        /**
         * Gets the optical scaling ratio calculated by dividing minimum gauge size by value of OpticalScalingSize property.
        */
        get opticalScalingRatio() {
            return this.i.em;
        }
        set opticalScalingRatio(v) {
            this.i.em = +v;
        }
        /**
         * Gets or sets the title uses optical scaling when the gauge is resized.
        */
        get opticalScalingEnabled() {
            return this.i.ck;
        }
        set opticalScalingEnabled(v) {
            this.i.ck = ensureBool(v);
        }
        /**
         * Gets or sets the size at which labels have 100% optical scaling, e.g. labels will have larger fonts when gauge's size is larger
         * - labels will have 200% larger fonts when gauge's size is 1000 and this property is set to 500
         * - labels will have 50% smaller fonts when gauge's size is 250 and this property is set to 500
        */
        get opticalScalingSize() {
            return this.i.en;
        }
        set opticalScalingSize(v) {
            this.i.en = +v;
        }
        /**
         * Gets or sets the text displayed in the title of the gauge.
        */
        get titleText() {
            return this.i.id;
        }
        set titleText(v) {
            this.i.id = v;
        }
        /**
         * Gets or sets the text displayed in the subtitle of the gauge.
        */
        get subtitleText() {
            return this.i.hy;
        }
        set subtitleText(v) {
            this.i.hy = v;
        }
        /**
         * Gets or sets the angle for the inner label in degrees.
        */
        get titleAngle() {
            return this.i.fb;
        }
        set titleAngle(v) {
            this.i.fb = +v;
        }
        /**
         * Gets or sets the angle for the inner label in degrees.
        */
        get subtitleAngle() {
            return this.i.e3;
        }
        set subtitleAngle(v) {
            this.i.e3 = +v;
        }
        /**
         * Gets or sets the angle for the inner label in degrees.
        */
        get titleExtent() {
            return this.i.fc;
        }
        set titleExtent(v) {
            this.i.fc = +v;
        }
        /**
         * Gets or sets the angle for the inner label in degrees.
        */
        get subtitleExtent() {
            return this.i.e4;
        }
        set subtitleExtent(v) {
            this.i.e4 = +v;
        }
        /**
         * Gets or sets the brush to use for rendering inner unit text
        */
        get titleBrush() {
            return brushToString(this.i.mh);
        }
        set titleBrush(v) {
            this.i.mh = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for rendering inner unit text
        */
        get subtitleBrush() {
            return brushToString(this.i.mf);
        }
        set subtitleBrush(v) {
            this.i.mf = stringToBrush(v);
        }
        /**
         * Gets or sets the title show values of the gauge.
        */
        get titleDisplaysValue() {
            return this.i.co;
        }
        set titleDisplaysValue(v) {
            this.i.co = ensureBool(v);
        }
        /**
         * Gets or sets the subtitle show values of the gauge.
        */
        get subtitleDisplaysValue() {
            return this.i.cm;
        }
        set subtitleDisplaysValue(v) {
            this.i.cm = ensureBool(v);
        }
        /**
         * Gets or sets whether or not the title should snap angle position to needle pivot (opposite of needle pointer).
        */
        get titleSnapsToNeedlePivot() {
            return this.i.cp;
        }
        set titleSnapsToNeedlePivot(v) {
            this.i.cp = ensureBool(v);
        }
        /**
         * Gets or sets whether or not the subtitle should snap angle position to needle pivot (opposite of needle pointer).
        */
        get subtitleSnapsToNeedlePivot() {
            return this.i.cn;
        }
        set subtitleSnapsToNeedlePivot(v) {
            this.i.cn = ensureBool(v);
        }
        /**
         * Gets or sets the subtitle format used when creating subtitle label.
        */
        get subtitleFormat() {
            return this.i.hu;
        }
        set subtitleFormat(v) {
            this.i.hu = v;
        }
        /**
         * Gets or sets the format specifiers to use with the SubtitleFormat string.
        */
        get subtitleFormatSpecifiers() {
            return this.i.ai;
        }
        set subtitleFormatSpecifiers(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.ai = v;
        }
        /**
         * Gets or sets the title format used when creating title label.
        */
        get titleFormat() {
            return this.i.h9;
        }
        set titleFormat(v) {
            this.i.h9 = v;
        }
        /**
         * Gets or sets the format specifiers to use with the TitleFormat string.
        */
        get titleFormatSpecifiers() {
            return this.i.aj;
        }
        set titleFormatSpecifiers(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.aj = v;
        }
        /**
         * Gets or sets the text displayed for the highlight label of the gauge.
        */
        get highlightLabelText() {
            return this.i.f6;
        }
        set highlightLabelText(v) {
            this.i.f6 = v;
        }
        /**
         * Gets or sets the angle for the highlight label in degrees.
        */
        get highlightLabelAngle() {
            return this.i.dp;
        }
        set highlightLabelAngle(v) {
            this.i.dp = +v;
        }
        /**
         * Gets or sets the angle for the highlight label in degrees.
        */
        get highlightLabelExtent() {
            return this.i.dq;
        }
        set highlightLabelExtent(v) {
            this.i.dq = +v;
        }
        /**
         * Gets or sets the brush to use for rendering highlight text
        */
        get highlightLabelBrush() {
            return brushToString(this.i.l8);
        }
        set highlightLabelBrush(v) {
            this.i.l8 = stringToBrush(v);
        }
        /**
         * Gets or sets the highlight label shows values of the gauge.
        */
        get highlightLabelDisplaysValue() {
            return this.i.b7;
        }
        set highlightLabelDisplaysValue(v) {
            this.i.b7 = ensureBool(v);
        }
        /**
         * Gets or sets whether or not the highlight label should snap angle position to needle pivot (opposite of needle pointer).
        */
        get highlightLabelSnapsToNeedlePivot() {
            return this.i.b8;
        }
        set highlightLabelSnapsToNeedlePivot(v) {
            this.i.b8 = ensureBool(v);
        }
        /**
         * Gets or sets the format used when creating highlight label.
        */
        get highlightLabelFormat() {
            return this.i.f2;
        }
        set highlightLabelFormat(v) {
            this.i.f2 = v;
        }
        /**
         * Gets or sets the format specifiers to use with the HighlightLabelFormat string.
        */
        get highlightLabelFormatSpecifiers() {
            return this.i.ag;
        }
        set highlightLabelFormatSpecifiers(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.ag = v;
        }
        /**
         * Gets or Sets the style to use for the units text.
        */
        get highlightLabelTextStyle() {
            if (this.i.bq == null) {
                return null;
            }
            return this.i.bq.fontString;
        }
        set highlightLabelTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bq = fi;
        }
        /**
         * Gets or Sets the style to use for the units text.
        */
        get subtitleTextStyle() {
            if (this.i.br == null) {
                return null;
            }
            return this.i.br.fontString;
        }
        set subtitleTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.br = fi;
        }
        /**
         * Gets or Sets the style to use for the units text.
        */
        get titleTextStyle() {
            if (this.i.bs == null) {
                return null;
            }
            return this.i.bs.fontString;
        }
        set titleTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bs = fi;
        }
        findByName(name) {
            if (this.findEphemera) {
                if (name && name.indexOf("@@e:") == 0) {
                    return this.findEphemera(name);
                }
            }
            if (this.ranges != null && this.ranges.findByName && this.ranges.findByName(name)) {
                return this.ranges.findByName(name);
            }
            if (this.labelFormatSpecifiers != null && arrayFindByName(this.labelFormatSpecifiers, name)) {
                return arrayFindByName(this.labelFormatSpecifiers, name);
            }
            if (this.subtitleFormatSpecifiers != null && arrayFindByName(this.subtitleFormatSpecifiers, name)) {
                return arrayFindByName(this.subtitleFormatSpecifiers, name);
            }
            if (this.titleFormatSpecifiers != null && arrayFindByName(this.titleFormatSpecifiers, name)) {
                return arrayFindByName(this.titleFormatSpecifiers, name);
            }
            if (this.highlightLabelFormatSpecifiers != null && arrayFindByName(this.highlightLabelFormatSpecifiers, name)) {
                return arrayFindByName(this.highlightLabelFormatSpecifiers, name);
            }
            return null;
        }
        get hasUserValues() {
            return this._hasUserValues;
        }
        __m(propertyName) {
            if (!this._inStyling) {
                this._hasUserValues.add(propertyName);
            }
        }
        _styling(container, component, parent) {
            if (this._inStyling) {
                return;
            }
            this._inStyling = true;
            this._stylingContainer = container;
            this._stylingParent = component;
            let genericPrefix = "";
            let typeName = this.i.$type.name;
            if (typeName.indexOf("Xam") === 0) {
                typeName = typeName.substring(3);
            }
            genericPrefix = toSpinal("RadialGaugeComponent");
            let additionalPrefixes = [];
            let prefix = toSpinal(typeName);
            additionalPrefixes.push(prefix + "-");
            let 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);
                }
                let basePrefix = toSpinal(typeName);
                additionalPrefixes.push(basePrefix + "-");
                b = b.baseType;
            }
            if (parent) {
                let parentTypeName = parent.i.$type.name;
                if (parentTypeName.indexOf("Xam") === 0) {
                    parentTypeName = parentTypeName.substring(3);
                }
                let 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;
        }
        /**
     * Scales a value on the gauge's main scale to an angle around the center point of the gauge, in radians.
    
    * @param value  * The value to scale.
    */
        scaleValue(value) {
            let iv = this.i.e2(value);
            return (iv);
        }
        /**
         * Unscales a value from an angle in radians to the represented value along the main scale of the gauge.
        
        * @param angle  * The angle in radians to unscale to a value.
        */
        unscaleValue(angle) {
            let iv = this.i.fe(angle);
            return (iv);
        }
        /**
         * Gets the value for the main scale of the gauge for a given point within the bounds of the gauge.
        
        * @param point  * The point for which to retrieve the associated value.
        */
        getValueForPoint(point) {
            let iv = this.i.dn(toPoint(point));
            return (iv);
        }
        getPointForValue(value, extent) {
            let iv = this.i.mk(value, extent);
            return fromPoint(iv);
        }
        styleUpdated() {
            this.i.je();
        }
        needleContainsPoint(point, isFinger) {
            let iv = this.i.needleContainsPoint(toPoint(point), isFinger);
            return (iv);
        }
        highlightNeedleContainsPoint(point, isFinger) {
            let iv = this.i.highlightNeedleContainsPoint(toPoint(point), isFinger);
            return (iv);
        }
        /**
         * Called by the UI framework to provide a UI container for rendering this control.
        
        * @param container  * The UI container element.
        */
        provideContainer(container) {
            this.i.provideContainer(container);
        }
        containerResized() {
            this.i.containerResized();
        }
        /**
         * Use to force the radial gauge to finish any deferred work before printing or evaluating its visual.
         * This should only be called if the visual of the radial gauge needs to be synchronously saved or evaluated.
         * Calling this method too often will hinder the performance of the radial gauge.
        
        */
        flush() {
            this.i.ir();
        }
        /**
         * Returns visuals as a serialized string.
        
        */
        exportSerializedVisualData() {
            let iv = this.i.fu();
            return (iv);
        }
        /**
         * Event which is raised when a title of the gauge is aligned and styled.
         * Function takes first argument null and second argument ui.
         * Use ui.owner to obtain reference to gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of gauge scale.
         * Use ui.startAngle to obtain the starting angle of gauge scale.
         * Use ui.endAngle to obtain the ending angle of gauge scale.
         * Use ui.angle to obtain the angle on the gauge scale at which the label will be located.
         * Use ui.value to obtain the value on the gauge scale associated with the label.
         * Use ui.label to obtain the string value of the label.
        */
        get alignTitle() {
            if (this._alignTitle == null) {
                this._alignTitle = new EventEmitter();
                this.i.alignTitle = delegateCombine(this.i.alignTitle, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxAlignRadialGaugeLabelEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeAlignTitle) {
                            this.beforeAlignTitle(this, outerArgs);
                        }
                        this._alignTitle.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._alignTitle;
        }
        /**
         * Event which is raised when a subtitle of the gauge is aligned and styled.
         * Function takes first argument null and second argument ui.
         * Use ui.owner to obtain reference to gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of gauge scale.
         * Use ui.startAngle to obtain the starting angle of gauge scale.
         * Use ui.endAngle to obtain the ending angle of gauge scale.
         * Use ui.angle to obtain the angle on the gauge scale at which the label will be located.
         * Use ui.value to obtain the value on the gauge scale associated with the label.
         * Use ui.label to obtain the string value of the label.
        */
        get alignSubtitle() {
            if (this._alignSubtitle == null) {
                this._alignSubtitle = new EventEmitter();
                this.i.alignSubtitle = delegateCombine(this.i.alignSubtitle, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxAlignRadialGaugeLabelEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeAlignSubtitle) {
                            this.beforeAlignSubtitle(this, outerArgs);
                        }
                        this._alignSubtitle.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._alignSubtitle;
        }
        /**
         * Event which is raised when a highlight label of the gauge is aligned and styled.
         * Function takes first argument null and second argument ui.
         * Use ui.owner to obtain reference to gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of gauge scale.
         * Use ui.startAngle to obtain the starting angle of gauge scale.
         * Use ui.endAngle to obtain the ending angle of gauge scale.
         * Use ui.angle to obtain the angle on the gauge scale at which the label will be located.
         * Use ui.value to obtain the value on the gauge scale associated with the label.
         * Use ui.label to obtain the string value of the label.
        */
        get alignHighlightLabel() {
            if (this._alignHighlightLabel == null) {
                this._alignHighlightLabel = new EventEmitter();
                this.i.alignHighlightLabel = delegateCombine(this.i.alignHighlightLabel, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxAlignRadialGaugeLabelEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeAlignHighlightLabel) {
                            this.beforeAlignHighlightLabel(this, outerArgs);
                        }
                        this._alignHighlightLabel.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._alignHighlightLabel;
        }
        /**
         * Event which is raised when a title of the gauge is formatted.
         * Function takes first argument null and second argument ui.
         * Use ui.owner to obtain reference to gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of gauge scale.
         * Use ui.startAngle to obtain the starting angle of gauge scale.
         * Use ui.endAngle to obtain the ending angle of gauge scale.
         * Use ui.angle to obtain the angle on the gauge scale at which the title will be located.
         * Use ui.value to obtain the value on the gauge scale associated with the title.
         * Use ui.label to obtain the string value of the title.
        */
        get formatTitle() {
            if (this._formatTitle == null) {
                this._formatTitle = new EventEmitter();
                this.i.formatTitle = delegateCombine(this.i.formatTitle, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxFormatRadialGaugeLabelEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeFormatTitle) {
                            this.beforeFormatTitle(this, outerArgs);
                        }
                        this._formatTitle.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._formatTitle;
        }
        /**
         * Event which is raised when a subtitle of the gauge is formatted.
         * Function takes first argument null and second argument ui.
         * Use ui.owner to obtain reference to gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of gauge scale.
         * Use ui.startAngle to obtain the starting angle of gauge scale.
         * Use ui.endAngle to obtain the ending angle of gauge scale.
         * Use ui.angle to obtain the angle on the gauge scale at which the subtitle will be located.
         * Use ui.value to obtain the value on the gauge scale associated with the subtitle.
         * Use ui.label to obtain the string value of the subtitle.
        */
        get formatSubtitle() {
            if (this._formatSubtitle == null) {
                this._formatSubtitle = new EventEmitter();
                this.i.formatSubtitle = delegateCombine(this.i.formatSubtitle, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxFormatRadialGaugeLabelEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeFormatSubtitle) {
                            this.beforeFormatSubtitle(this, outerArgs);
                        }
                        this._formatSubtitle.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._formatSubtitle;
        }
        /**
         * Event which is raised when a highlight label of the gauge is formatted.
         * Function takes first argument null and second argument ui.
         * Use ui.owner to obtain reference to gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of gauge scale.
         * Use ui.startAngle to obtain the starting angle of gauge scale.
         * Use ui.endAngle to obtain the ending angle of gauge scale.
         * Use ui.angle to obtain the angle on the gauge scale at which the title will be located.
         * Use ui.value to obtain the value on the gauge scale associated with the title.
         * Use ui.label to obtain the string value of the title.
        */
        get formatHighlightLabel() {
            if (this._formatHighlightLabel == null) {
                this._formatHighlightLabel = new EventEmitter();
                this.i.formatHighlightLabel = delegateCombine(this.i.formatHighlightLabel, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxFormatRadialGaugeLabelEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeFormatHighlightLabel) {
                            this.beforeFormatHighlightLabel(this, outerArgs);
                        }
                        this._formatHighlightLabel.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._formatHighlightLabel;
        }
        /**
         * Event which is raised when a label of the gauge is formatted.
         * Function takes first argument null and second argument ui.
         * Use ui.owner to obtain reference to gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of gauge scale.
         * Use ui.startAngle to obtain the starting angle of gauge scale.
         * Use ui.endAngle to obtain the ending angle of gauge scale.
         * Use ui.angle to obtain the angle on the gauge scale at which the label will be located.
         * Use ui.value to obtain the value on the gauge scale associated with the label.
         * Use ui.label to obtain the string value of the label.
        */
        get formatLabel() {
            if (this._formatLabel == null) {
                this._formatLabel = new EventEmitter();
                this.i.formatLabel = delegateCombine(this.i.formatLabel, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxFormatRadialGaugeLabelEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeFormatLabel) {
                            this.beforeFormatLabel(this, outerArgs);
                        }
                        this._formatLabel.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._formatLabel;
        }
        /**
         * Event which is raised when a label of the gauge is aligned along the scale.
         * Function takes first argument null and second argument ui.
         * Use ui.owner to obtain reference to gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of gauge scale.
         * Use ui.startAngle to obtain the starting angle of gauge scale.
         * Use ui.endAngle to obtain the ending angle of gauge scale.
         * Use ui.angle to obtain the angle on the gauge scale at which the label will be located.
         * Use ui.value to obtain the value on the gauge scale associated with the label.
         * Use ui.label to obtain the string value of the label.
         * Use ui.width to obtain the width of the label.
         * Use ui.height to obtain the height of the label.
         * Use ui.offsetX to obtain the X offset of the label on the gauge scale.
         * Use ui.offsetY to obtain the Y offset of the label on the gauge scale.
        */
        get alignLabel() {
            if (this._alignLabel == null) {
                this._alignLabel = new EventEmitter();
                this.i.alignLabel = delegateCombine(this.i.alignLabel, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxAlignRadialGaugeLabelEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeAlignLabel) {
                            this.beforeAlignLabel(this, outerArgs);
                        }
                        this._alignLabel.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._alignLabel;
        }
        /**
         * Occurs when the Value property changes.
        */
        get valueChanged() {
            if (this._valueChanged == null) {
                this._valueChanged = new EventEmitter();
                this.i.valueChanged = delegateCombine(this.i.valueChanged, (o, e) => {
                    let outerArgs = new IgxDoubleValueChangedEventArgs();
                    outerArgs._provideImplementation(e);
                    if (this.beforeValueChanged) {
                        this.beforeValueChanged(this, outerArgs);
                    }
                    this._valueChanged.emit({
                        sender: this,
                        args: outerArgs
                    });
                });
            }
            return this._valueChanged;
        }
        /**
         * Occurs when the Hightlight Value property changes.
        */
        get highlightValueChanged() {
            if (this._highlightValueChanged == null) {
                this._highlightValueChanged = new EventEmitter();
                this.i.highlightValueChanged = delegateCombine(this.i.highlightValueChanged, (o, e) => {
                    let outerArgs = new IgxDoubleValueChangedEventArgs();
                    outerArgs._provideImplementation(e);
                    if (this.beforeHighlightValueChanged) {
                        this.beforeHighlightValueChanged(this, outerArgs);
                    }
                    this._highlightValueChanged.emit({
                        sender: this,
                        args: outerArgs
                    });
                });
            }
            return this._highlightValueChanged;
        }
        get actualMinimumValueChange() {
            if (this._actualMinimumValueChange == null) {
                this._actualMinimumValueChange = new EventEmitter();
                this.i.propertyChanged = delegateCombine(this.i.propertyChanged, (o, e) => {
                    let iv = e;
                    let ext = this.actualMinimumValue;
                    if (this.beforeActualMinimumValueChange) {
                        this.beforeActualMinimumValueChange(this, ext);
                    }
                    this._actualMinimumValueChange.emit(ext);
                });
            }
            return this._actualMinimumValueChange;
        }
        get actualMaximumValueChange() {
            if (this._actualMaximumValueChange == null) {
                this._actualMaximumValueChange = new EventEmitter();
                this.i.propertyChanged = delegateCombine(this.i.propertyChanged, (o, e) => {
                    let iv = e;
                    let ext = this.actualMaximumValue;
                    if (this.beforeActualMaximumValueChange) {
                        this.beforeActualMaximumValueChange(this, ext);
                    }
                    this._actualMaximumValueChange.emit(ext);
                });
            }
            return this._actualMaximumValueChange;
        }
    }
    IgxRadialGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
    IgxRadialGaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: IgxRadialGaugeComponent, selector: "igx-radial-gauge", inputs: { height: "height", width: "width", rangeBrushes: "rangeBrushes", rangeOutlines: "rangeOutlines", minimumValue: "minimumValue", actualMinimumValue: "actualMinimumValue", maximumValue: "maximumValue", actualMaximumValue: "actualMaximumValue", interval: "interval", centerX: "centerX", centerY: "centerY", value: "value", highlightValue: "highlightValue", actualHighlightValueOpacity: "actualHighlightValueOpacity", highlightValueOpacity: "highlightValueOpacity", actualHighlightValueDisplayMode: "actualHighlightValueDisplayMode", highlightValueDisplayMode: "highlightValueDisplayMode", scaleStartAngle: "scaleStartAngle", scaleEndAngle: "scaleEndAngle", scaleSweepDirection: "scaleSweepDirection", transitionDuration: "transitionDuration", needleBrush: "needleBrush", needleOutline: "needleOutline", needleStartExtent: "needleStartExtent", needleEndExtent: "needleEndExtent", needleShape: "needleShape", needleStartWidthRatio: "needleStartWidthRatio", needleEndWidthRatio: "needleEndWidthRatio", needleBaseFeatureWidthRatio: "needleBaseFeatureWidthRatio", needleBaseFeatureExtent: "needleBaseFeatureExtent", needlePointFeatureWidthRatio: "needlePointFeatureWidthRatio", needlePointFeatureExtent: "needlePointFeatureExtent", needlePivotWidthRatio: "needlePivotWidthRatio", needlePivotInnerWidthRatio: "needlePivotInnerWidthRatio", needlePivotShape: "needlePivotShape", scaleStartExtent: "scaleStartExtent", needlePivotBrush: "needlePivotBrush", needlePivotOutline: "needlePivotOutline", needleStrokeThickness: "needleStrokeThickness", needlePivotStrokeThickness: "needlePivotStrokeThickness", scaleEndExtent: "scaleEndExtent", labelExtent: "labelExtent", labelInterval: "labelInterval", tickStartExtent: "tickStartExtent", tickEndExtent: "tickEndExtent", tickStrokeThickness: "tickStrokeThickness", tickBrush: "tickBrush", fontBrush: "fontBrush", minorTickStartExtent: "minorTickStartExtent", minorTickEndExtent: "minorTickEndExtent", minorTickStrokeThickness: "minorTickStrokeThickness", minorTickBrush: "minorTickBrush", minorTickCount: "minorTickCount", scaleBrush: "scaleBrush", backingBrush: "backingBrush", backingOutline: "backingOutline", backingStrokeThickness: "backingStrokeThickness", backingOuterExtent: "backingOuterExtent", backingOversweep: "backingOversweep", scaleOversweep: "scaleOversweep", scaleOversweepShape: "scaleOversweepShape", backingCornerRadius: "backingCornerRadius", backingInnerExtent: "backingInnerExtent", backingShape: "backingShape", radiusMultiplier: "radiusMultiplier", duplicateLabelOmissionStrategy: "duplicateLabelOmissionStrategy", isNeedleDraggingEnabled: "isNeedleDraggingEnabled", isNeedleDraggingConstrained: "isNeedleDraggingConstrained", isHighlightNeedleDraggingEnabled: "isHighlightNeedleDraggingEnabled", isHighlightNeedleDraggingConstrained: "isHighlightNeedleDraggingConstrained", font: "font", labelFormat: "labelFormat", labelFormatSpecifiers: "labelFormatSpecifiers", transitionProgress: "transitionProgress", pixelScalingRatio: "pixelScalingRatio", actualPixelScalingRatio: "actualPixelScalingRatio", opticalScalingRatio: "opticalScalingRatio", opticalScalingEnabled: "opticalScalingEnabled", opticalScalingSize: "opticalScalingSize", titleText: "titleText", subtitleText: "subtitleText", titleAngle: "titleAngle", subtitleAngle: "subtitleAngle", titleExtent: "titleExtent", subtitleExtent: "subtitleExtent", titleBrush: "titleBrush", subtitleBrush: "subtitleBrush", titleDisplaysValue: "titleDisplaysValue", subtitleDisplaysValue: "subtitleDisplaysValue", titleSnapsToNeedlePivot: "titleSnapsToNeedlePivot", subtitleSnapsToNeedlePivot: "subtitleSnapsToNeedlePivot", subtitleFormat: "subtitleFormat", subtitleFormatSpecifiers: "subtitleFormatSpecifiers", titleFormat: "titleFormat", titleFormatSpecifiers: "titleFormatSpecifiers", highlightLabelText: "highlightLabelText", highlightLabelAngle: "highlightLabelAngle", highlightLabelExtent: "highlightLabelExtent", highlightLabelBrush: "highlightLabelBrush", highlightLabelDisplaysValue: "highlightLabelDisplaysValue", highlightLabelSnapsToNeedlePivot: "highlightLabelSnapsToNeedlePivot", highlightLabelFormat: "highlightLabelFormat", highlightLabelFormatSpecifiers: "highlightLabelFormatSpecifiers", highlightLabelTextStyle: "highlightLabelTextStyle", subtitleTextStyle: "subtitleTextStyle", titleTextStyle: "titleTextStyle" }, outputs: { alignTitle: "alignTitle", alignSubtitle: "alignSubtitle", alignHighlightLabel: "alignHighlightLabel", formatTitle: "formatTitle", formatSubtitle: "formatSubtitle", formatHighlightLabel: "formatHighlightLabel", formatLabel: "formatLabel", alignLabel: "alignLabel", valueChanged: "valueChanged", highlightValueChanged: "highlightValueChanged", actualMinimumValueChange: "actualMinimumValueChange", actualMaximumValueChange: "actualMaximumValueChange" }, host: { classAttribute: "igx-radial-gauge ig-radial-gauge" }, providers: [], queries: [{ propertyName: "contentRanges", predicate: IgxRadialGaugeRangeComponent }], viewQueries: [{ propertyName: "_dynamicContent", first: true, predicate: ["dynamicContent"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `<ng-container #dynamicContent></ng-container>`, isInline: true, styles: ["\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\t"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
    return IgxRadialGaugeComponent;
})();
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'igx-radial-gauge',
                    template: `<ng-container #dynamicContent></ng-container>`,
                    changeDetection: ChangeDetectionStrategy.OnPush,
                    providers: [],
                    host: { 'class': 'igx-radial-gauge ig-radial-gauge' },
                    styles: [`
		:host {
			display: block;
		}
	`]
                }]
        }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }]; }, propDecorators: { _dynamicContent: [{
                type: ViewChild,
                args: ["dynamicContent", { read: ViewContainerRef, static: true }]
            }], height: [{
                type: Input
            }], width: [{
                type: Input
            }], contentRanges: [{
                type: ContentChildren,
                args: [IgxRadialGaugeRangeComponent]
            }], rangeBrushes: [{
                type: Input
            }], rangeOutlines: [{
                type: Input
            }], minimumValue: [{
                type: Input
            }], actualMinimumValue: [{
                type: Input
            }], maximumValue: [{
                type: Input
            }], actualMaximumValue: [{
                type: Input
            }], interval: [{
                type: Input
            }], centerX: [{
                type: Input
            }], centerY: [{
                type: Input
            }], value: [{
                type: Input
            }], highlightValue: [{
                type: Input
            }], actualHighlightValueOpacity: [{
                type: Input
            }], highlightValueOpacity: [{
                type: Input
            }], actualHighlightValueDisplayMode: [{
                type: Input
            }], highlightValueDisplayMode: [{
                type: Input
            }], scaleStartAngle: [{
                type: Input
            }], scaleEndAngle: [{
                type: Input
            }], scaleSweepDirection: [{
                type: Input
            }], transitionDuration: [{
                type: Input
            }], needleBrush: [{
                type: Input
            }], needleOutline: [{
                type: Input
            }], needleStartExtent: [{
                type: Input
            }], needleEndExtent: [{
                type: Input
            }], needleShape: [{
                type: Input
            }], needleStartWidthRatio: [{
                type: Input
            }], needleEndWidthRatio: [{
                type: Input
            }], needleBaseFeatureWidthRatio: [{
                type: Input
            }], needleBaseFeatureExtent: [{
                type: Input
            }], needlePointFeatureWidthRatio: [{
                type: Input
            }], needlePointFeatureExtent: [{
                type: Input
            }], needlePivotWidthRatio: [{
                type: Input
            }], needlePivotInnerWidthRatio: [{
                type: Input
            }], needlePivotShape: [{
                type: Input
            }], scaleStartExtent: [{
                type: Input
            }], needlePivotBrush: [{
                type: Input
            }], needlePivotOutline: [{
                type: Input
            }], needleStrokeThickness: [{
                type: Input
            }], needlePivotStrokeThickness: [{
                type: Input
            }], scaleEndExtent: [{
                type: Input
            }], labelExtent: [{
                type: Input
            }], labelInterval: [{
                type: Input
            }], tickStartExtent: [{
                type: Input
            }], tickEndExtent: [{
                type: Input
            }], tickStrokeThickness: [{
                type: Input
            }], tickBrush: [{
                type: Input
            }], fontBrush: [{
                type: Input
            }], minorTickStartExtent: [{
                type: Input
            }], minorTickEndExtent: [{
                type: Input
            }], minorTickStrokeThickness: [{
                type: Input
            }], minorTickBrush: [{
                type: Input
            }], minorTickCount: [{
                type: Input
            }], scaleBrush: [{
                type: Input
            }], backingBrush: [{
                type: Input
            }], backingOutline: [{
                type: Input
            }], backingStrokeThickness: [{
                type: Input
            }], backingOuterExtent: [{
                type: Input
            }], backingOversweep: [{
                type: Input
            }], scaleOversweep: [{
                type: Input
            }], scaleOversweepShape: [{
                type: Input
            }], backingCornerRadius: [{
                type: Input
            }], backingInnerExtent: [{
                type: Input
            }], backingShape: [{
                type: Input
            }], radiusMultiplier: [{
                type: Input
            }], duplicateLabelOmissionStrategy: [{
                type: Input
            }], isNeedleDraggingEnabled: [{
                type: Input
            }], isNeedleDraggingConstrained: [{
                type: Input
            }], isHighlightNeedleDraggingEnabled: [{
                type: Input
            }], isHighlightNeedleDraggingConstrained: [{
                type: Input
            }], font: [{
                type: Input
            }], labelFormat: [{
                type: Input
            }], labelFormatSpecifiers: [{
                type: Input
            }], transitionProgress: [{
                type: Input
            }], pixelScalingRatio: [{
                type: Input
            }], actualPixelScalingRatio: [{
                type: Input
            }], opticalScalingRatio: [{
                type: Input
            }], opticalScalingEnabled: [{
                type: Input
            }], opticalScalingSize: [{
                type: Input
            }], titleText: [{
                type: Input
            }], subtitleText: [{
                type: Input
            }], titleAngle: [{
                type: Input
            }], subtitleAngle: [{
                type: Input
            }], titleExtent: [{
                type: Input
            }], subtitleExtent: [{
                type: Input
            }], titleBrush: [{
                type: Input
            }], subtitleBrush: [{
                type: Input
            }], titleDisplaysValue: [{
                type: Input
            }], subtitleDisplaysValue: [{
                type: Input
            }], titleSnapsToNeedlePivot: [{
                type: Input
            }], subtitleSnapsToNeedlePivot: [{
                type: Input
            }], subtitleFormat: [{
                type: Input
            }], subtitleFormatSpecifiers: [{
                type: Input
            }], titleFormat: [{
                type: Input
            }], titleFormatSpecifiers: [{
                type: Input
            }], highlightLabelText: [{
                type: Input
            }], highlightLabelAngle: [{
                type: Input
            }], highlightLabelExtent: [{
                type: Input
            }], highlightLabelBrush: [{
                type: Input
            }], highlightLabelDisplaysValue: [{
                type: Input
            }], highlightLabelSnapsToNeedlePivot: [{
                type: Input
            }], highlightLabelFormat: [{
                type: Input
            }], highlightLabelFormatSpecifiers: [{
                type: Input
            }], highlightLabelTextStyle: [{
                type: Input
            }], subtitleTextStyle: [{
                type: Input
            }], titleTextStyle: [{
                type: Input
            }], alignTitle: [{
                type: Output
            }], alignSubtitle: [{
                type: Output
            }], alignHighlightLabel: [{
                type: Output
            }], formatTitle: [{
                type: Output
            }], formatSubtitle: [{
                type: Output
            }], formatHighlightLabel: [{
                type: Output
            }], formatLabel: [{
                type: Output
            }], alignLabel: [{
                type: Output
            }], valueChanged: [{
                type: Output
            }], highlightValueChanged: [{
                type: Output
            }], actualMinimumValueChange: [{
                type: Output
            }], actualMaximumValueChange: [{
                type: Output
            }] } });