UNPKG

igniteui-angular-gauges

Version:

Ignite UI Angular gauge components.

18,191 lines 692 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 * as i0 from '@angular/core';
import { ɵɵngDeclareFactory, ɵɵFactoryTarget, ɵɵngDeclareComponent, ɵɵngDeclareClassMetadata, Component, Input, EventEmitter, Renderer2, ViewContainerRef, NgZone, ComponentFactoryResolver, Injector, ChangeDetectionStrategy, ViewChild, ContentChildren, Output, ɵɵngDeclareNgModule, ɵɵngDeclareInjector, NgModule } from '@angular/core';
import { Base, PathGeometry, PathFigure, LineSegment, Point_$type, BrushUtil, markType, List$1, GeometryUtil, ArcSegment, Size, PolyLineSegment, InterpolationUtil, markEnum, DependencyObject, PropertyChangedEventArgs, INotifyPropertyChanged_$type, markDep, DependencyProperty, PropertyMetadata, Brush, ObservableCollection$1, EventArgs, fromEnum, StringBuilder, PointData, SizeData, String_$type, typeCast, Control, TextBlock, Path, delegateCombine, runOn, Rect, DoubleAnimator, StackPool$1, isNaN_, isInfinity, RectData, AppearanceHelper, PathVisualData, GetPointsSettings, PolygonUtil, Number_$type, Tuple$2, DeviceUtils, delegateRemove, BindingFormatter, fromEn, FontUtil, HighlightedValueDisplayMode_$type, enumGetBox, Array_$type, BrushCollection, Dictionary$2, CanvasGestureDOMEventProxy, intDivide, arrayCopy1, RenderingContext, CanvasViewRenderer, TypeRegistrar, EventProxy, truncate, stringIsNullOrEmpty, FontDefaults, brushToString, stringToBrush, toSpinal, initializePropertiesFromCss, IgCollection, SyncableObservableCollection$2, NamePatcher, AngularRenderer, CollectionAdapter, NotifyCollectionChangedAction, AngularWrapper, IgxDataContext, ensureEnum, fromBrushCollection, toBrushCollection, ensureBool, arrayFindByName, toPoint, IgxNumberFormatSpecifierModule, IgxNumberFormatSpecifierDynamicModule, IgxDVInteractivityModule, IgxDVInteractivityDynamicModule, DoubleValueChangedEventArgs, IgxDoubleValueChangedEventArgs, MathUtil, PathSegment, FontInfo, Stack$1, TransformGroup, RotateTransform, SweepDirection_$type, Delegate_$type, fromPoint } from 'igniteui-angular-core';
import { CommonModule } from '@angular/common';

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphBackingFrame = /*@__PURE__*/ (() => {
    class LinearGraphBackingFrame extends Base {
        constructor() {
            super();
            this.e = null;
            this.f = null;
            this.c = 0;
            this.b = 0;
            this.a = 0;
        }
        g(a, b, c) {
            let d = new PathGeometry();
            let e = new PathFigure();
            let f, g, h, i;
            if (c == 1) {
                f = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: a * this.a, y: 0 };
                    return $ret;
                })());
                g = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: a * this.b, y: 0 };
                    return $ret;
                })());
                h = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: a * this.b, y: b };
                    return $ret;
                })());
                i = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: a * this.a, y: b };
                    return $ret;
                })());
            }
            else {
                f = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: 0, y: a * (1 - this.b) };
                    return $ret;
                })());
                g = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: b, y: a * (1 - this.b) };
                    return $ret;
                })());
                h = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: b, y: a * (1 - this.a) };
                    return $ret;
                })());
                i = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: 0, y: a * (1 - this.a) };
                    return $ret;
                })());
            }
            e._startPoint = f.c;
            e._segments.add(g);
            e._segments.add(h);
            e._segments.add(i);
            e._isClosed = true;
            d.c.add(e);
            return d;
        }
        d(a, b, c) {
            this.c = b.c + (c.c - b.c) * a;
            this.e = BrushUtil.n(b.e, a, c.e, 0);
            this.f = BrushUtil.n(b.f, a, c.f, 0);
            this.b = b.b + (c.b - b.b) * a;
            this.a = b.a + (c.a - b.a) * a;
        }
    }
    LinearGraphBackingFrame.$t = markType(LinearGraphBackingFrame, 'LinearGraphBackingFrame');
    return LinearGraphBackingFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphRectFrame = /*@__PURE__*/ (() => {
    class LinearGraphRectFrame extends Base {
        constructor() {
            super(...arguments);
            this.e = 0;
            this.f = 0;
            this.b = 0;
            this.c = 0;
            this.g = 0;
            this.d = 0;
            this.i = null;
            this.j = null;
            this.h = 0;
        }
        k(a, b, c, d) {
            let e = new PathGeometry();
            let f = new PathFigure();
            let g, h, i, j;
            if (d == 1) {
                g = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: a.x + b * this.b, y: c - this.d };
                    return $ret;
                })());
                h = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: a.x + b * this.c, y: c - this.d };
                    return $ret;
                })());
                i = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: a.x + b * this.f, y: c - this.g };
                    return $ret;
                })());
                j = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: a.x + b * this.e, y: c - this.g };
                    return $ret;
                })());
            }
            else {
                g = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: this.g, y: b * (1 - this.f) };
                    return $ret;
                })());
                h = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: this.d, y: b * (1 - this.c) };
                    return $ret;
                })());
                i = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: this.d, y: b * (1 - this.b) };
                    return $ret;
                })());
                j = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: this.g, y: b * (1 - this.e) };
                    return $ret;
                })());
            }
            f._startPoint = g.c;
            f._segments.add(h);
            f._segments.add(i);
            f._segments.add(j);
            f._isClosed = true;
            e.c.add(f);
            return e;
        }
        static a(a, b, c, d) {
            let e = new LinearGraphRectFrame();
            e.i = BrushUtil.n(c.i, a, d.i, 0);
            e.j = BrushUtil.n(c.j, a, d.j, 0);
            e.h = b * c.h + a * d.h;
            e.e = b * c.e + a * d.e;
            e.f = b * c.f + a * d.f;
            e.g = b * c.g + a * d.g;
            e.d = b * c.d + a * d.d;
            e.b = b * c.b + a * d.b;
            e.c = b * c.c + a * d.c;
            return e;
        }
    }
    LinearGraphRectFrame.$t = markType(LinearGraphRectFrame, 'LinearGraphRectFrame');
    return LinearGraphRectFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphFrame = /*@__PURE__*/ (() => {
    class LinearGraphFrame extends Base {
        constructor() {
            super();
            this.a = null;
            this.b = null;
            this.a = new LinearGraphBackingFrame();
            this.b = new LinearGraphRectFrame();
        }
        d(a, b, c) {
            this.b = LinearGraphRectFrame.a(a, 1 - a, b.b, c.b);
            this.c.y(a, b.c, c.c);
            this.a.d(a, b.a, c.a);
        }
    }
    LinearGraphFrame.$t = markType(LinearGraphFrame, 'LinearGraphFrame');
    return LinearGraphFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let MorphSegment = /*@__PURE__*/ (() => {
    class MorphSegment extends Base {
        constructor() {
            super();
            this.f = null;
            this.g = null;
            this.b = false;
            this.h = 0;
            this.e = false;
            this.a = false;
            this.d = false;
            this.c = false;
            this.f = new List$1(Point_$type, 0);
            this.g = new List$1(Point_$type, 0);
        }
        i(a) {
            this.g.clear();
            let b = 20;
            if (this.b) {
                let c;
                let d;
                let e;
                if (this.f.count == 0) {
                    d = { $type: Point_$type, x: 0, y: 0 };
                    e = { $type: Point_$type, x: 0, y: 0 };
                }
                else {
                    d = this.f._inner[0];
                    e = this.f._inner[1];
                }
                let f = GeometryUtil.v(d, e, this.h, !this.c, this.d);
                let g = GeometryUtil.j(f, d);
                let h = GeometryUtil.j(f, e);
                while (this.c && h < g) {
                    h += Math.PI * 2;
                }
                while (!this.c && h > g) {
                    h -= Math.PI * 2;
                }
                let i = 0;
                for (let j = 0; j < b; j++) {
                    c = j / b;
                    if (this.c) {
                        i = g + (h - g) * c;
                    }
                    else {
                        i = g - (g - h) * c;
                    }
                    this.g.add({ $type: Point_$type, x: f.x + Math.cos(i) * this.h, y: f.y + Math.sin(i) * this.h });
                }
            }
            else {
                let k;
                let l;
                let m;
                if (this.f.count == 0) {
                    l = { $type: Point_$type, x: 0, y: 0 };
                    m = { $type: Point_$type, x: 0, y: 0 };
                }
                else {
                    l = this.f._inner[0];
                    m = this.f._inner[1];
                }
                let n = l.x;
                let o = l.y;
                let p = m.x;
                let q = m.y;
                for (let r = 0; r < b; r++) {
                    k = r / b;
                    this.g.add({ $type: Point_$type, x: n + (p - n) * k, y: o + (q - o) * k });
                }
            }
            this.a = true;
        }
        l(a, b, c, d, e) {
            let f = this;
            let g = null;
            let h = f.f;
            let i = h.count;
            if (i == 0) {
                return a;
            }
            if (b._segments.count == 0) {
                let j = h._inner[0];
                b._startPoint = { $type: Point_$type, x: d + c * j.x, y: e + c * j.y };
            }
            if (f.b) {
                if (i > 1) {
                    let k = new ArcSegment();
                    g = k;
                    let l = h._inner[1];
                    k.e = { $type: Point_$type, x: d + c * l.x, y: e + c * l.y };
                    k.b = f.d;
                    k.d = f.c ? 1 : 0;
                    k.f = new Size(1, f.h * c, f.h * c);
                    a = k.e;
                }
            }
            else {
                let m = new PolyLineSegment();
                g = m;
                if (i > 1) {
                    let n;
                    let o = m._points;
                    for (let p = 1; p < i; p++) {
                        n = h._inner[p];
                        o.add({ $type: Point_$type, x: d + c * n.x, y: e + c * n.y });
                    }
                    a = m._points._inner[m._points.count - 1];
                }
            }
            b._segments.add(g);
            return a;
        }
        j(a, b, c) {
            let d = this;
            let e = d;
            let f = b.f;
            let g = false;
            let h = c.f;
            let i = false;
            if (f.count == 0 && h.count == 0) {
                return;
            }
            e.b = false;
            e.e = false;
            e.a = false;
            e.d = false;
            e.c = false;
            if (b.e) {
                g = true;
            }
            if (c.e) {
                i = true;
            }
            if (b.b != c.b || b.e || c.e || b.d != c.d || b.c != c.c) {
                g = true;
                i = true;
                e.e = true;
            }
            if (g && !b.e) {
                if (!b.a) {
                    b.i(c.h);
                }
                f = b.g;
            }
            if (i && !c.e) {
                if (!c.a) {
                    c.i(b.h);
                }
                h = c.g;
            }
            if (b.e) {
                f = b.g;
            }
            if (c.e) {
                h = c.g;
            }
            e.g.clear();
            if (b.b && c.b) {
                e.b = true;
            }
            InterpolationUtil.c(e.f, a, f, h);
            if (e.e) {
                let j;
                let k = e.f.count;
                for (let l = 0; l < k; l++) {
                    j = e.f._inner[l];
                    e.g.add({ $type: Point_$type, x: j.x, y: j.y });
                }
                e.a = true;
            }
            if (b.d == c.d) {
                e.d = c.d;
            }
            if (b.c == c.c) {
                e.c = c.c;
            }
            if (e.b) {
                e.h = b.h + (c.h - b.h) * a;
            }
        }
        k() {
            this.f.clear();
            this.g.clear();
            this.e = false;
            this.a = false;
            this.b = false;
        }
    }
    MorphSegment.$t = markType(MorphSegment, 'MorphSegment');
    return MorphSegment;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphNeedleFrame = /*@__PURE__*/ (() => {
    class LinearGraphNeedleFrame extends Base {
        constructor() {
            super();
            this.n = 0;
            this.m = 0;
            this.q = 0;
            this.p = 0;
            this.l = 0;
            this.r = null;
            this.s = null;
            this.o = 0;
            this.f = null;
            this.g = null;
            this.d = null;
            this.j = null;
            this.i = null;
            this.k = null;
            this.e = null;
            this.h = null;
            this.b = null;
            this.c = null;
            this.f = new MorphSegment();
            this.g = new MorphSegment();
            this.d = new MorphSegment();
            this.j = new MorphSegment();
            this.i = new MorphSegment();
            this.k = new MorphSegment();
            this.e = new MorphSegment();
            this.h = new MorphSegment();
            this.b = new MorphSegment();
            this.c = new MorphSegment();
        }
        static a(a, b, c, d) {
            let e = new LinearGraphNeedleFrame();
            e.n = c.n + (d.n - c.n) * a;
            e.m = c.m + (d.m - c.m) * a;
            e.q = c.q + (d.q - c.q) * a;
            e.l = c.l + (d.l - c.l) * a;
            e.p = c.p + (d.p - c.p) * a;
            e.r = BrushUtil.n(c.r, a, d.r, 0);
            e.s = BrushUtil.n(c.s, a, d.s, 0);
            e.o = c.o + (d.o - c.o) * a;
            e.f.j(a, c.f, d.f);
            e.g.j(a, c.g, d.g);
            e.d.j(a, c.d, d.d);
            e.j.j(a, c.j, d.j);
            e.i.j(a, c.i, d.i);
            e.k.j(a, c.k, d.k);
            e.e.j(a, c.e, d.e);
            e.h.j(a, c.h, d.h);
            e.b.j(a, c.b, d.b);
            e.c.j(a, c.c, d.c);
            return e;
        }
        t(a, b, c) {
            let d = new PathGeometry();
            let e = new PathFigure();
            let f = { $type: Point_$type, x: NaN, y: NaN };
            f = this.i.l(f, e, a, b, c);
            f = this.j.l(f, e, a, b, c);
            f = this.d.l(f, e, a, b, c);
            f = this.g.l(f, e, a, b, c);
            f = this.f.l(f, e, a, b, c);
            f = this.h.l(f, e, a, b, c);
            f = this.e.l(f, e, a, b, c);
            e._isClosed = true;
            d.c.add(e);
            let g = new PathFigure();
            if (this.b.f.count > 0 || this.c.f.count > 0) {
                f = this.b.l(f, g, a, b, c);
                f = this.c.l(f, g, a, b, c);
                g._isClosed = true;
                d.c.add(g);
            }
            return d;
        }
    }
    LinearGraphNeedleFrame.$t = markType(LinearGraphNeedleFrame, 'LinearGraphNeedleFrame');
    return LinearGraphNeedleFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphScaleFrame = /*@__PURE__*/ (() => {
    class LinearGraphScaleFrame extends Base {
        constructor() {
            super();
            this.m = null;
            this.u = 0;
            this.r = 0;
            this.s = 0;
            this.t = 0;
            this.l = null;
            this.j = null;
            this.w = 0;
            this.v = 0;
            this.ad = null;
            this.x = 0;
            this.i = null;
            this.p = 0;
            this.o = 0;
            this.ac = null;
            this.q = 0;
            this.e = null;
            this.d = null;
            this.f = null;
            this.c = null;
            this.g = null;
            this.h = null;
            this.n = 0;
            this.ab = null;
            this.m = new List$1(LinearGraphRectFrame.$, 0);
            this.j = new Array(0);
            this.i = new Array(0);
            this.e = new Array(0);
            this.d = new Array(0);
            this.f = new Array(0);
            this.c = new Array(0);
            this.g = new Array(0);
            this.h = new Array(0);
            this.l = new LinearGraphRectFrame();
        }
        ae(a, b, c, d) {
            let e = new PathGeometry();
            let f = new PathFigure();
            let g = a.x;
            let h = a.y;
            let i, j, k, l;
            if (d == 1) {
                i = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: g + b * this.s, y: h };
                    return $ret;
                })());
                j = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: g + b * this.t, y: h };
                    return $ret;
                })());
                k = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: g + b * this.t, y: h + c };
                    return $ret;
                })());
                l = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: g + b * this.s, y: h + c };
                    return $ret;
                })());
            }
            else {
                i = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: g, y: b * (1 - this.t) };
                    return $ret;
                })());
                j = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: g + c, y: b * (1 - this.t) };
                    return $ret;
                })());
                k = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: g + c, y: b * (1 - this.s) };
                    return $ret;
                })());
                l = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: g, y: b * (1 - this.s) };
                    return $ret;
                })());
            }
            f._startPoint = i.c;
            f._segments.add(j);
            f._segments.add(k);
            f._segments.add(l);
            f._isClosed = true;
            e.c.add(f);
            return e;
        }
        y(a, b, c) {
            this.ad = BrushUtil.n(b.ad, a, c.ad, 0);
            this.ac = BrushUtil.n(b.ac, a, c.ac, 0);
            if (b.ab == null && c.ab == null) {
                this.ab = null;
            }
            else {
                this.ab = BrushUtil.n(b.ab, a, c.ab, 0);
            }
            this.u = b.u + (c.u - b.u) * a;
            this.r = b.r + (c.r - b.r) * a;
            this.s = b.s + (c.s - b.s) * a;
            this.t = b.t + (c.t - b.t) * a;
            this.n = b.n + (c.n - b.n) * a;
            this.w = b.w + (c.w - b.w) * a;
            this.v = b.v + (c.v - b.v) * a;
            this.p = b.p + (c.p - b.p) * a;
            this.o = b.o + (c.o - b.o) * a;
            this.x = b.x + (c.x - b.x) * a;
            this.q = b.q + (c.q - b.q) * a;
            this.j = this.a(a, this.j, b.j, c.j);
            this.i = this.a(a, this.i, b.i, c.i);
            this.e = this.a(a, this.e, b.e, c.e);
            this.f = this.a(a, this.f, b.f, c.f);
            this.c = this.a(a, this.c, b.c, c.c);
            this.g = this.a(a, this.g, b.g, c.g);
            this.h = this.a(a, this.h, b.h, c.h);
            this.d = this.b(a, this.d, b.d, c.d);
            this.aa(a, this.m, b.m, c.m);
            this.l = this.k(a, b.l, c.l);
        }
        a(a, b, c, d) {
            let e = Math.max(c.length, d.length);
            let f = Math.min(c.length, d.length);
            if (b.length != e) {
                b = new Array(e);
            }
            let g = 0;
            if (c.length > 0) {
                g = c[c.length - 1];
            }
            let h = 0;
            if (d.length > 0) {
                h = d[d.length - 1];
            }
            let i = c.length > d.length;
            let j = 0;
            for (j = 0; j < f; j++) {
                b[j] = c[j] + (d[j] - c[j]) * a;
            }
            let k;
            let l;
            for (j = f; j < e; j++) {
                if (i) {
                    k = c[j];
                    l = h;
                }
                else {
                    k = g;
                    l = d[j];
                }
                b[j] = k + (l - k) * a;
            }
            return b;
        }
        b(a, b, c, d) {
            let e = Math.max(c.length, d.length);
            let f = Math.min(c.length, d.length);
            if (b.length != e) {
                b = new Array(e);
            }
            let g = null;
            if (c.length > 0) {
                g = c[c.length - 1];
            }
            let h = null;
            if (d.length > 0) {
                h = d[d.length - 1];
            }
            let i = c.length > d.length;
            let j = 0;
            for (j = 0; j < f; j++) {
                b[j] = d[j];
            }
            let k;
            let l;
            for (j = f; j < e; j++) {
                if (i) {
                    k = c[j];
                    l = h;
                }
                else {
                    k = g;
                    l = d[j];
                }
                if (l != null) {
                    b[j] = l;
                }
                else {
                    b[j] = k;
                }
            }
            return b;
        }
        aa(a, b, c, d) {
            InterpolationUtil.d(LinearGraphRectFrame.$, b, a, c, d, () => new LinearGraphRectFrame(), LinearGraphRectFrame.a);
        }
        k(a, b, c) {
            let d = 1 - a;
            return LinearGraphRectFrame.a(a, d, b, c);
        }
        z(a, b, c, d) {
            InterpolationUtil.d(LinearGraphNeedleFrame.$, b, a, c, d, () => new LinearGraphNeedleFrame(), LinearGraphNeedleFrame.a);
        }
    }
    LinearGraphScaleFrame.$t = markType(LinearGraphScaleFrame, 'LinearGraphScaleFrame');
    return LinearGraphScaleFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let BulletGraphScaleFrame = /*@__PURE__*/ (() => {
    class BulletGraphScaleFrame extends LinearGraphScaleFrame {
        constructor() {
            super();
            this.ag = null;
            this.af = null;
            this.ag = new LinearGraphRectFrame();
            this.af = new LinearGraphRectFrame();
        }
        y(a, b, c) {
            super.y(a, b, c);
            this.ag = LinearGraphRectFrame.a(a, 1 - a, b.ag, c.ag);
            this.af = LinearGraphRectFrame.a(a, 1 - a, b.af, c.af);
        }
    }
    BulletGraphScaleFrame.$t = markType(BulletGraphScaleFrame, 'BulletGraphScaleFrame', LinearGraphScaleFrame.$);
    return BulletGraphScaleFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let BulletGraphFrame = /*@__PURE__*/ (() => {
    class BulletGraphFrame extends LinearGraphFrame {
        constructor() {
            super();
            this._c = null;
            this.c = new BulletGraphScaleFrame();
        }
        get_c() {
            return this._c;
        }
        set_c(a) {
            this._c = a;
        }
        get c() {
            return this.get_c();
        }
        set c(a) {
            this.set_c(a);
        }
    }
    BulletGraphFrame.$t = markType(BulletGraphFrame, 'BulletGraphFrame', LinearGraphFrame.$);
    return BulletGraphFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphScaler = /*@__PURE__*/ (() => {
    class LinearGraphScaler extends Base {
        constructor(a, b, c, d, e) {
            super();
            this.f = 0;
            this.e = 0;
            this.d = 0;
            this.c = 0;
            this.a = false;
            this.g = 0;
            this.b = 0;
            this.f = c;
            this.e = d;
            this.a = e;
            this.d = a;
            this.c = b;
            this.g = c;
            this.b = d;
        }
        get j() {
            return this.g;
        }
        get h() {
            return this.b;
        }
        i(a) {
            let b = (a - this.d) / (this.c - this.d);
            if (this.a) {
                b = 1 - b;
            }
            let c = this.g + (this.b - this.g) * b;
            c = Math.round(c * 100) / 100;
            return c;
        }
        k(a) {
            let b = (a - this.g) / (this.b - this.g);
            if (this.a) {
                b = 1 - b;
            }
            let c = this.d + (this.c - this.d) * b;
            return c;
        }
    }
    LinearGraphScaler.$t = markType(LinearGraphScaler, 'LinearGraphScaler');
    return LinearGraphScaler;
})();

/*
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.
*/
/**
 * Describes the orientation of a linear scale.
 */
var LinearScaleOrientation = /*@__PURE__*/ (function (LinearScaleOrientation) {
    /**
     * The scale has a horizontal orientation.
     */
    LinearScaleOrientation[LinearScaleOrientation["Horizontal"] = 0] = "Horizontal";
    /**
     * The scale has a vertical orientation.
     */
    LinearScaleOrientation[LinearScaleOrientation["Vertical"] = 1] = "Vertical";
    return LinearScaleOrientation;
})({});
/**
 * @hidden
 */
let LinearScaleOrientation_$type = markEnum('LinearScaleOrientation', 'Horizontal,0|Vertical,1');

/*
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.
*/
/**
 * @hidden
 */
let XamLinearGraphRange = /*@__PURE__*/ (() => {
    class XamLinearGraphRange extends DependencyObject {
        constructor() {
            super();
            this.propertyChanged = null;
        }
        ac(a, b, c) {
        }
        ab(a, b, c) {
            this.ac(a, b, c);
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
        }
    }
    XamLinearGraphRange.$t = markType(XamLinearGraphRange, 'XamLinearGraphRange', DependencyObject.$, [INotifyPropertyChanged_$type]);
    XamLinearGraphRange.$$p = markDep(DependencyProperty, PropertyMetadata, XamLinearGraphRange, 'ab', ['Brush:an:ad', [Brush.$, null], 'EndValue:j:ae', [1, NaN], 'InnerEndExtent:k:af', [1, NaN], 'InnerStartExtent:l:ag', [1, NaN], 'Name:u:ah', [2, null], 'OuterEndExtent:m:ai', [1, NaN], 'OuterStartExtent:n:aj', [1, NaN], 'Outline:ao:ak', [Brush.$, null], 'StartValue:o:al', [1, NaN], 'StrokeThickness:p:am', [1, 1]]);
    return XamLinearGraphRange;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphRangeCollection = /*@__PURE__*/ (() => {
    class LinearGraphRangeCollection extends ObservableCollection$1 {
        constructor() {
            super(XamLinearGraphRange.$, 0);
        }
    }
    LinearGraphRangeCollection.$t = markType(LinearGraphRangeCollection, 'LinearGraphRangeCollection', ObservableCollection$1.$.specialize(XamLinearGraphRange.$));
    return LinearGraphRangeCollection;
})();

/*
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.
*/
/**
 * @hidden
 */
let FormatLinearGraphLabelEventArgs = /*@__PURE__*/ (() => {
    class FormatLinearGraphLabelEventArgs extends EventArgs {
        constructor() {
            super(...arguments);
            this.actualMinimumValue = 0;
            this.actualMaximumValue = 0;
            this.value = 0;
            this.label = null;
        }
    }
    FormatLinearGraphLabelEventArgs.$t = markType(FormatLinearGraphLabelEventArgs, 'FormatLinearGraphLabelEventArgs', EventArgs.$);
    return FormatLinearGraphLabelEventArgs;
})();

/*
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.
*/
/**
 * @hidden
 */
let AlignLinearGraphLabelEventArgs = /*@__PURE__*/ (() => {
    class AlignLinearGraphLabelEventArgs extends FormatLinearGraphLabelEventArgs {
        constructor() {
            super(...arguments);
            this.width = 0;
            this.height = 0;
            this.offsetX = 0;
            this.offsetY = 0;
        }
    }
    AlignLinearGraphLabelEventArgs.$t = markType(AlignLinearGraphLabelEventArgs, 'AlignLinearGraphLabelEventArgs', FormatLinearGraphLabelEventArgs.$);
    return AlignLinearGraphLabelEventArgs;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphVisualData = /*@__PURE__*/ (() => {
    class LinearGraphVisualData extends Base {
        constructor() {
            super(...arguments);
            this._scalePath = null;
            this._backingPath = null;
            this._underlayPath = null;
            this._overlayPath = null;
            this._scale = null;
            this._scaleLabels = null;
            this._scaleTickmarks = null;
            this._ranges = null;
            this._toolTip = null;
            this._name = null;
            this._viewport = null;
        }
        get scalePath() {
            return this._scalePath;
        }
        set scalePath(a) {
            this._scalePath = a;
        }
        get backingPath() {
            return this._backingPath;
        }
        set backingPath(a) {
            this._backingPath = a;
        }
        get underlayPath() {
            return this._underlayPath;
        }
        set underlayPath(a) {
            this._underlayPath = a;
        }
        get overlayPath() {
            return this._overlayPath;
        }
        set overlayPath(a) {
            this._overlayPath = a;
        }
        get scale() {
            return this._scale;
        }
        set scale(a) {
            this._scale = a;
        }
        get scaleLabels() {
            return this._scaleLabels;
        }
        set scaleLabels(a) {
            this._scaleLabels = a;
        }
        get scaleTickmarks() {
            return this._scaleTickmarks;
        }
        set scaleTickmarks(a) {
            this._scaleTickmarks = a;
        }
        get ranges() {
            return this._ranges;
        }
        set ranges(a) {
            this._ranges = a;
        }
        get toolTip() {
            return this._toolTip;
        }
        set toolTip(a) {
            this._toolTip = a;
        }
        get name() {
            return this._name;
        }
        set name(a) {
            this._name = a;
        }
        scaleByViewport() {
            if (this.scalePath != null) {
                this.scalePath.scaleByViewport(this.viewport);
            }
            if (this.backingPath != null) {
                this.backingPath.scaleByViewport(this.viewport);
            }
            if (this.underlayPath != null) {
                this.underlayPath.scaleByViewport(this.viewport);
            }
            if (this.overlayPath != null) {
                this.overlayPath.scaleByViewport(this.viewport);
            }
            if (this.scaleLabels != null) {
                for (let a of fromEnum(this.scaleLabels)) {
                    a.scaleByViewport(this.viewport);
                }
            }
            if (this.scaleTickmarks != null) {
                for (let b of fromEnum(this.scaleTickmarks)) {
                    if (b.tickPath != null) {
                        b.tickPath.scaleByViewport(this.viewport);
                    }
                }
            }
            if (this.ranges != null) {
                for (let c of fromEnum(this.ranges)) {
                    if (c.rangePath != null) {
                        c.rangePath.scaleByViewport(this.viewport);
                    }
                }
            }
        }
        serialize() {
            let a = new StringBuilder(0);
            let b = true;
            a.u("{");
            if (this.scalePath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("scalePath: ");
                a.u(this.scalePath.serialize());
            }
            if (this.backingPath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("backingPath: ");
                a.u(this.backingPath.serialize());
            }
            if (this.underlayPath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("underlayPath: ");
                a.u(this.underlayPath.serialize());
            }
            if (this.overlayPath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("overlayPath: ");
                a.u(this.overlayPath.serialize());
            }
            if (this.scaleLabels != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                let c = true;
                a.l("scaleLabels: [");
                for (let d of fromEnum(this.scaleLabels)) {
                    if (c) {
                        c = false;
                    }
                    else {
                        a.l(", ");
                    }
                    a.u(d.serialize());
                }
                a.u("]");
            }
            if (this.scaleTickmarks != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                let e = true;
                a.l("scaleTickmarks: [");
                for (let f of fromEnum(this.scaleTickmarks)) {
                    if (e) {
                        e = false;
                    }
                    else {
                        a.l(", ");
                    }
                    a.u(f.serialize());
                }
                a.u("]");
            }
            if (this.ranges != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                let g = true;
                a.l("ranges: [");
                for (let h of fromEnum(this.ranges)) {
                    if (g) {
                        g = false;
                    }
                    else {
                        a.l(", ");
                    }
                    a.u(h.serialize());
                }
                a.u("]");
            }
            if (this.name != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("name: '");
                a.l(this.name);
                a.u("'");
            }
            if (this.toolTip != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("toolTip: ");
                a.l(this.toolTip.serialize());
            }
            if (b) {
                b = false;
            }
            else {
                a.l(", ");
            }
            a.l("viewport: {");
            a.l("left: " + this.viewport.left + ", top: " + this.viewport.top + ", width: " + this.viewport.width + ", height: " + this.viewport.height);
            a.u("}");
            a.l("}");
            return a.toString();
        }
        get viewport() {
            return this._viewport;
        }
        set viewport(a) {
            this._viewport = a;
        }
    }
    LinearGraphVisualData.$t = markType(LinearGraphVisualData, 'LinearGraphVisualData');
    return LinearGraphVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let BulletGraphVisualData = /*@__PURE__*/ (() => {
    class BulletGraphVisualData extends LinearGraphVisualData {
        constructor() {
            super(...arguments);
            this._targetValuePath = null;
            this._valuePath = null;
            this._highlightValuePath = null;
            this._scaleBackgroundPath = null;
            this._targetValue = null;
            this._value = null;
            this._highlightValue = null;
        }
        get targetValuePath() {
            return this._targetValuePath;
        }
        set targetValuePath(a) {
            this._targetValuePath = a;
        }
        get valuePath() {
            return this._valuePath;
        }
        set valuePath(a) {
            this._valuePath = a;
        }
        get highlightValuePath() {
            return this._highlightValuePath;
        }
        set highlightValuePath(a) {
            this._highlightValuePath = a;
        }
        get scaleBackgroundPath() {
            return this._scaleBackgroundPath;
        }
        set scaleBackgroundPath(a) {
            this._scaleBackgroundPath = a;
        }
        get targetValue() {
            return this._targetValue;
        }
        set targetValue(a) {
            this._targetValue = a;
        }
        get value() {
            return this._value;
        }
        set value(a) {
            this._value = a;
        }
        get highlightValue() {
            return this._highlightValue;
        }
        set highlightValue(a) {
            this._highlightValue = a;
        }
        scaleByViewport() {
            super.scaleByViewport();
            if (this.targetValuePath != null) {
                this.targetValuePath.scaleByViewport(this.viewport);
            }
            if (this.valuePath != null) {
                this.valuePath.scaleByViewport(this.viewport);
            }
            if (this.highlightValuePath != null) {
                this.highlightValuePath.scaleByViewport(this.viewport);
            }
            if (this.scaleBackgroundPath != null) {
                this.scaleBackgroundPath.scaleByViewport(this.viewport);
            }
        }
        serialize() {
            let a = super.serialize();
            let b = new StringBuilder(0);
            let c = a.length == 0;
            if (this.targetValuePath != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("targetValuePath: ");
                b.u(this.targetValuePath.serialize());
            }
            if (this.targetValue != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("targetValue: ");
                b.u(this.targetValue.serialize());
            }
            if (this.valuePath != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("valuePath: ");
                b.u(this.valuePath.serialize());
            }
            if (this.highlightValuePath != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("highlightValuePath: ");
                b.u(this.highlightValuePath.serialize());
            }
            if (this.value != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("value: ");
                b.u(this.value.serialize());
            }
            if (this.highlightValue != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("highlightValue: ");
                b.u(this.highlightValue.serialize());
            }
            if (this.scaleBackgroundPath != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("scaleBackgroundPath: ");
                b.u(this.scaleBackgroundPath.serialize());
            }
            if (c) {
                return a;
            }
            b.l("}");
            return a.substr(0, a.length - 1) + b.toString();
        }
    }
    BulletGraphVisualData.$t = markType(BulletGraphVisualData, 'BulletGraphVisualData', LinearGraphVisualData.$);
    return BulletGraphVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let ToolTipInfo = /*@__PURE__*/ (() => {
    class ToolTipInfo extends Base {
        constructor() {
            super(...arguments);
            this.c = null;
            this.b = 0;
            this.d = null;
            this.a = null;
        }
    }
    ToolTipInfo.$t = markType(ToolTipInfo, 'ToolTipInfo');
    return ToolTipInfo;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphScaleLabelVisualData = /*@__PURE__*/ (() => {
    class LinearGraphScaleLabelVisualData extends Base {
        constructor() {
            super(...arguments);
            this._labelValue = null;
            this._labelSize = null;
            this._labelPosition = null;
            this._appearance = null;
        }
        get labelValue() {
            return this._labelValue;
        }
        set labelValue(a) {
            this._labelValue = a;
        }
        get labelSize() {
            return this._labelSize;
        }
        set labelSize(a) {
            this._labelSize = a;
        }
        get labelPosition() {
            return this._labelPosition;
        }
        set labelPosition(a) {
            this._labelPosition = a;
        }
        get appearance() {
            return this._appearance;
        }
        set appearance(a) {
            this._appearance = a;
        }
        scaleByViewport(a) {
            this.labelPosition = new PointData((this.labelPosition.x - a.left) / a.width, (this.labelPosition.y - a.top) / a.height);
            this.labelSize = new SizeData((this.labelSize.width) / a.width, (this.labelSize.height) / a.height);
        }
        serialize() {
            let a = this.labelValue.toString();
            let b = "{ labelValue: '" + a;
            b += "', labelSize: { width: " + this.labelSize.width + ", height: " + this.labelSize.height;
            b += "}, labelPosition: { x: " + this.labelPosition.x + ", y: " + this.labelPosition.y;
            b += "}, appearance: " + this.appearance.serialize() + "}";
            return b;
        }
    }
    LinearGraphScaleLabelVisualData.$t = markType(LinearGraphScaleLabelVisualData, 'LinearGraphScaleLabelVisualData');
    return LinearGraphScaleLabelVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphScaleLabelVisualDataList = /*@__PURE__*/ (() => {
    class LinearGraphScaleLabelVisualDataList extends List$1 {
        constructor() {
            super(LinearGraphScaleLabelVisualData.$, 0);
        }
    }
    LinearGraphScaleLabelVisualDataList.$t = markType(LinearGraphScaleLabelVisualDataList, 'LinearGraphScaleLabelVisualDataList', List$1.$.specialize(LinearGraphScaleLabelVisualData.$));
    return LinearGraphScaleLabelVisualDataList;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphScaleTickmarkVisualData = /*@__PURE__*/ (() => {
    class LinearGraphScaleTickmarkVisualData extends Base {
        constructor() {
            super(...arguments);
            this._tickPath = null;
        }
        get tickPath() {
            return this._tickPath;
        }
        set tickPath(a) {
            this._tickPath = a;
        }
        serialize() {
            return "{ tickPath: " + this.tickPath.serialize() + "}";
        }
    }
    LinearGraphScaleTickmarkVisualData.$t = markType(LinearGraphScaleTickmarkVisualData, 'LinearGraphScaleTickmarkVisualData');
    return LinearGraphScaleTickmarkVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphScaleTickmarkVisualDataList = /*@__PURE__*/ (() => {
    class LinearGraphScaleTickmarkVisualDataList extends List$1 {
        constructor() {
            super(LinearGraphScaleTickmarkVisualData.$, 0);
        }
    }
    LinearGraphScaleTickmarkVisualDataList.$t = markType(LinearGraphScaleTickmarkVisualDataList, 'LinearGraphScaleTickmarkVisualDataList', List$1.$.specialize(LinearGraphScaleTickmarkVisualData.$));
    return LinearGraphScaleTickmarkVisualDataList;
})();

/*
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.
*/
/**
 * @hidden
 */
let ToolTipItemVisualData = /*@__PURE__*/ (() => {
    class ToolTipItemVisualData extends Base {
    }
    ToolTipItemVisualData.$t = markType(ToolTipItemVisualData, 'ToolTipItemVisualData');
    return ToolTipItemVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphRangeVisualData = /*@__PURE__*/ (() => {
    class LinearGraphRangeVisualData extends ToolTipItemVisualData {
        constructor() {
            super(...arguments);
            this._rangePath = null;
        }
        get rangePath() {
            return this._rangePath;
        }
        set rangePath(a) {
            this._rangePath = a;
        }
        serialize() {
            return "{ rangePath: " + this.rangePath.serialize() + ", type: '" + this.type + "'}";
        }
        get_type() {
            return "range";
        }
        get type() {
            return this.get_type();
        }
    }
    LinearGraphRangeVisualData.$t = markType(LinearGraphRangeVisualData, 'LinearGraphRangeVisualData', ToolTipItemVisualData.$);
    return LinearGraphRangeVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphRangeVisualDataList = /*@__PURE__*/ (() => {
    class LinearGraphRangeVisualDataList extends List$1 {
        constructor() {
            super(LinearGraphRangeVisualData.$, 0);
        }
    }
    LinearGraphRangeVisualDataList.$t = markType(LinearGraphRangeVisualDataList, 'LinearGraphRangeVisualDataList', List$1.$.specialize(LinearGraphRangeVisualData.$));
    return LinearGraphRangeVisualDataList;
})();

/*
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.
*/
/**
 * @hidden
 */
let ValueVisualData = /*@__PURE__*/ (() => {
    class ValueVisualData extends ToolTipItemVisualData {
        constructor() {
            super(...arguments);
            this._value = 0;
        }
        get value() {
            return this._value;
        }
        set value(a) {
            this._value = a;
        }
        serialize() {
            return "{ value: " + this.value.toString() + ", type: '" + this.type + "'}";
        }
        get_type() {
            return "value";
        }
        get type() {
            return this.get_type();
        }
    }
    ValueVisualData.$t = markType(ValueVisualData, 'ValueVisualData', ToolTipItemVisualData.$);
    return ValueVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let BulletGraphTargetValueVisualData = /*@__PURE__*/ (() => {
    class BulletGraphTargetValueVisualData extends ToolTipItemVisualData {
        constructor() {
            super(...arguments);
            this._value = 0;
        }
        get value() {
            return this._value;
        }
        set value(a) {
            this._value = a;
        }
        serialize() {
            return "{ value: " + this.value.toString() + ", type: '" + this.type + "'}";
        }
        get_type() {
            return "targetValue";
        }
        get type() {
            return this.get_type();
        }
    }
    BulletGraphTargetValueVisualData.$t = markType(BulletGraphTargetValueVisualData, 'BulletGraphTargetValueVisualData', ToolTipItemVisualData.$);
    return BulletGraphTargetValueVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphToolTipVisualData = /*@__PURE__*/ (() => {
    class LinearGraphToolTipVisualData extends Base {
        constructor() {
            super(...arguments);
            this._item = null;
            this._outline = null;
            this._itemBrush = null;
            this._thickness = 0;
        }
        get item() {
            return this._item;
        }
        set item(a) {
            this._item = a;
        }
        get outline() {
            return this._outline;
        }
        set outline(a) {
            this._outline = a;
        }
        get itemBrush() {
            return this._itemBrush;
        }
        set itemBrush(a) {
            this._itemBrush = a;
        }
        get thickness() {
            return this._thickness;
        }
        set thickness(a) {
            this._thickness = a;
        }
        serialize() {
            let a = new StringBuilder(0);
            a.l("{ item: ");
            if (this.item != null) {
                a.l(this.item.serialize());
            }
            a.l(", ");
            a.l("outline: ");
            a.l(this.outline.serialize());
            a.l(", ");
            a.l("itemBrush: ");
            a.l(this.itemBrush.serialize());
            a.l(", ");
            a.l("thickness: ");
            a.l(this.thickness.toString());
            a.l("}");
            return a.toString();
        }
    }
    LinearGraphToolTipVisualData.$t = markType(LinearGraphToolTipVisualData, 'LinearGraphToolTipVisualData');
    return LinearGraphToolTipVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphTooltipDataContext = /*@__PURE__*/ (() => {
    class LinearGraphTooltipDataContext extends DependencyObject {
        constructor() {
            super(...arguments);
            this.propertyChanged = null;
        }
        get item() {
            return this.c(LinearGraphTooltipDataContext.itemProperty);
        }
        set item(a) {
            this.h(LinearGraphTooltipDataContext.itemProperty, a);
        }
        get itemName() {
            return this.c(LinearGraphTooltipDataContext.itemNameProperty);
        }
        set itemName(a) {
            this.h(LinearGraphTooltipDataContext.itemNameProperty, a);
        }
        get brush() {
            return this.c(LinearGraphTooltipDataContext.itemBrushProperty);
        }
        set brush(a) {
            this.h(LinearGraphTooltipDataContext.itemBrushProperty, a);
        }
        get label() {
            return this.c(LinearGraphTooltipDataContext.labelProperty);
        }
        set label(a) {
            this.h(LinearGraphTooltipDataContext.labelProperty, a);
        }
        p(a, b, c) {
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
        }
    }
    LinearGraphTooltipDataContext.$t = markType(LinearGraphTooltipDataContext, 'LinearGraphTooltipDataContext', DependencyObject.$, [INotifyPropertyChanged_$type]);
    LinearGraphTooltipDataContext.labelProperty = DependencyProperty.i("Label", String_$type, LinearGraphTooltipDataContext.$, new PropertyMetadata(2, null, (a, b) => (typeCast(LinearGraphTooltipDataContext.$, a)).p("Label", b.oldValue, b.newValue)));
    LinearGraphTooltipDataContext.itemProperty = DependencyProperty.i("Item", Base.$, LinearGraphTooltipDataContext.$, new PropertyMetadata(2, null, (a, b) => (typeCast(LinearGraphTooltipDataContext.$, a)).p("Item", b.oldValue, b.newValue)));
    LinearGraphTooltipDataContext.itemNameProperty = DependencyProperty.i("ItemName", Base.$, LinearGraphTooltipDataContext.$, new PropertyMetadata(2, null, (a, b) => (typeCast(LinearGraphTooltipDataContext.$, a)).p("ItemName", b.oldValue, b.newValue)));
    LinearGraphTooltipDataContext.itemBrushProperty = DependencyProperty.i("ItemBrush", Brush.$, LinearGraphTooltipDataContext.$, new PropertyMetadata(2, null, (a, b) => (typeCast(LinearGraphTooltipDataContext.$, a)).p("ItemBrush", b.oldValue, b.newValue)));
    LinearGraphTooltipDataContext.$$p = markDep(DependencyProperty, PropertyMetadata, LinearGraphTooltipDataContext, 'p', ['Outline', [Brush.$, null], 'Thickness', [1, 0]]);
    return LinearGraphTooltipDataContext;
})();

/*
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.
*/
/**
 * @hidden
 */
let XamBulletGraph = /*@__PURE__*/ (() => {
    class XamBulletGraph extends Control {
        constructor() {
            super();
            this.propertyChanged = null;
            this.aw = null;
            this.bp = 0;
            this.formatLabel = null;
            this.alignLabel = null;
            this.an = null;
            this.am = null;
            this.al = null;
            this.ar = null;
            this.av = null;
            this.bm = 0;
            this.bl = 100;
            this.a1 = 0;
            this.bk = 0.5;
            this.ay = 1;
            this.aj = null;
            this.bd = false;
            this.a5 = null;
            this.a3 = null;
            this.a2 = null;
            this.a6 = null;
            this.a4 = null;
            this._view = null;
            this.ic = null;
            this.ib = null;
            this.ia = null;
            this.bo = NaN;
            this.bn = 1;
            this.bf = new List$1(TextBlock.$, 0);
            this.bi = new List$1(TextBlock.$, 0);
            this.bh = new List$1(Path.$, 0);
            this.bg = new List$1(Path.$, 0);
            this.a8 = false;
            this.bo = NaN;
            this.bn = 1;
            this.av = new XamLinearGraphRange();
            let a = this.av;
            a.propertyChanged = delegateCombine(a.propertyChanged, runOn(this, this.ft));
            this.view = new XamBulletGraphView(this);
            this.view.a9();
            this.ic = Rect.empty;
            this.ib = Rect.empty;
            this.ia = Rect.empty;
            this.an = new BulletGraphFrame();
            this.am = new BulletGraphFrame();
            this.al = new BulletGraphFrame();
            this.ranges = new LinearGraphRangeCollection();
            this.a8 = true;
            this.aw = new DoubleAnimator(0, 1, this.c7);
            let b = this.aw;
            b.propertyChanged = delegateCombine(b.propertyChanged, runOn(this, this.e8));
            this.ab = XamBulletGraph.$;
            this.a4 = ((() => {
                let $ret = new StackPool$1(Path.$);
                $ret.b = runOn(this.view, this.view.bj);
                $ret.c = runOn(this.view, this.view.bk);
                $ret.d = runOn(this.view, this.view.bl);
                $ret.j = runOn(this.view, this.view.cs);
                return $ret;
            })());
            this.a5 = ((() => {
                let $ret = new StackPool$1(Path.$);
                $ret.b = runOn(this.view, this.view.bc);
                $ret.c = runOn(this.view, this.view.bd);
                $ret.d = runOn(this.view, this.view.be);
                $ret.j = runOn(this.view, this.view.cr);
                return $ret;
            })());
            this.a3 = ((() => {
                let $ret = new StackPool$1(Path.$);
                $ret.b = runOn(this.view, this.view.bc);
                $ret.c = runOn(this.view, this.view.bd);
                $ret.d = runOn(this.view, this.view.be);
                $ret.j = runOn(this.view, this.view.cr);
                return $ret;
            })());
            this.a2 = ((() => {
                let $ret = new StackPool$1(TextBlock.$);
                $ret.b = runOn(this.view, this.view.a1);
                $ret.c = runOn(this.view, this.view.a2);
                $ret.d = runOn(this.view, this.view.a3);
                $ret.j = runOn(this.view, this.view.b0);
                return $ret;
            })());
            this.a6 = ((() => {
                let $ret = new StackPool$1(TextBlock.$);
                $ret.b = runOn(this.view, this.view.bt);
                $ret.c = runOn(this.view, this.view.bu);
                $ret.d = runOn(this.view, this.view.bv);
                $ret.j = runOn(this.view, this.view.b1);
                return $ret;
            })());
        }
        fk(a) {
            this.fr(a);
        }
        fr(a) {
            let b = this.propertyChanged;
            if (b != null) {
                b(this, new PropertyChangedEventArgs(a));
            }
        }
        onDetachedFromUI() {
            this.view.a8();
        }
        onAttachedToUI() {
            this.view.a4();
        }
        e8(a, b) {
            this.cz = this.aw.o;
        }
        get a7() {
            return this.aw.f();
        }
        get cz() {
            return this.bp;
        }
        set cz(a) {
            let b = this.bp;
            this.bp = a;
            this.fj("TransitionProgress", b, this.bp);
        }
        f4() {
            this.bp = 0;
            this.aw.w();
            this.aw.v();
        }
        get bc() {
            return this.c7 > 0;
        }
        get h2() {
            return this.c(XamBulletGraph.g4);
        }
        set h2(a) {
            this.h(XamBulletGraph.g4, a);
        }
        get h3() {
            return this.c(XamBulletGraph.g5);
        }
        set h3(a) {
            this.h(XamBulletGraph.g5, a);
        }
        get ch() {
            return this.c(XamBulletGraph.g6);
        }
        set ch(a) {
            this.h(XamBulletGraph.g6, a);
        }
        get bs() {
            return this.bm;
        }
        set bs(a) {
            this.bm = a;
        }
        get br() {
            return this.bl;
        }
        set br(a) {
            this.bl = a;
        }
        get bq() {
            return this.bk;
        }
        set bq(a) {
            let b = this.bk;
            this.bk = a;
            if (b != this.bk) {
                this.fj("ActualHighlightValueOpacity", b, a);
            }
        }
        f7() {
            this.bq = isNaN_(this.b0) ? 0.5 : Math.max(0, Math.min(this.b0, 1));
        }
        get az() {
            return this.ay;
        }
        set az(a) {
            this.ay = a;
        }
        f6() {
            if (this.a0 != 1) {
                if (isNaN_(this.bz) || isInfinity(this.bz)) {
                    this.az = 1;
                }
                else {
                    this.az = 2;
                }
            }
            else {
                this.az = 1;
            }
        }
        fd() {
            this.a1 = 0;
            this.view.cm().an = null;
        }
        by(a) {
            let b = 0;
            let c = a.x;
            if (this.as == 1) {
                b = a.y;
                c = this.ig.height;
            }
            return this.ar.k(c - b);
        }
        at() {
            let a = new BulletGraphVisualData();
            a.viewport = new RectData(this.ig.left, this.ig.top, this.ig.width, this.ig.height);
            a.scaleLabels = new LinearGraphScaleLabelVisualDataList();
            a.scaleTickmarks = new LinearGraphScaleTickmarkVisualDataList();
            a.ranges = new LinearGraphRangeVisualDataList();
            a.value = ((() => {
                let $ret = new ValueVisualData();
                $ret.value = this.c0;
                return $ret;
            })());
            a.highlightValue = ((() => {
                let $ret = new ValueVisualData();
                $ret.value = this.bz;
                return $ret;
            })());
            a.targetValue = ((() => {
                let $ret = new BulletGraphTargetValueVisualData();
                $ret.value = this.cn;
                return $ret;
            })());
            this.view.aw(a);
            let b = this.view.l();
            if (b != null) {
                let c;
                switch (b.c) {
                    case "range":
                        c = a.ranges._inner[b.b];
                        break;
                    case "value":
                        c = a.value;
                        break;
                    default:
                        c = a.targetValue;
                        break;
                }
                a.toolTip = ((() => {
                    let $ret = new LinearGraphToolTipVisualData();
                    $ret.item = c;
                    $ret.itemBrush = AppearanceHelper.b(b.a.brush);
                    $ret.outline = AppearanceHelper.b(b.a.outline);
                    $ret.thickness = b.a.thickness;
                    return $ret;
                })());
            }
            return a;
        }
        dg() {
            let a = this.at();
            a.scaleByViewport();
            return a.serialize();
        }
        destroy() {
            this.provideContainer(null);
        }
        provideContainer(a) {
            this.view.a6(a);
        }
        onMouseOver(a, b, c) {
            if (this.bd) {
                this.f3(a, null);
            }
        }
        onMouseLeave() {
            if (this.bd) {
                this.f3({ $type: Point_$type, x: -10000, y: -10000 }, null);
            }
        }
        containerResized() {
            this.view.a7();
        }
        f5() {
            this.view.bs();
        }
        fc() {
            this.view.flush();
        }
        bj(a) {
            let b = new List$1(Point_$type, 0);
            for (let c = 0; c < a.count; c++) {
                b.add({ $type: Point_$type, x: a._inner[c].x, y: a._inner[c].y });
            }
            return b;
        }
        f3(a, b) {
            let c = new PathVisualData(1, "targetValue", this.view.cp());
            let d = c.getPoints(new GetPointsSettings());
            if (d.count > 0) {
                let e = PolygonUtil.b(this.bj(d._inner[0]), a);
                if (e == true) {
                    this.view.br(a, b, -1, "targetvalue");
                    return;
                }
            }
            let f = new PathVisualData(1, "value", this.view.cq());
            let g = f.getPoints(new GetPointsSettings());
            if (g.count > 0) {
                let h = PolygonUtil.b(this.bj(g._inner[0]), a);
                if (h == true) {
                    this.view.br(a, b, -1, "value");
                    return;
                }
            }
            for (let i = 0; i < this.bg.count; i++) {
                let j = new PathVisualData(1, "range", this.bg._inner[i]);
                let k = j.getPoints(new GetPointsSettings());
                if (k.count > 0) {
                    let l = PolygonUtil.b(this.bj(k._inner[0]), a);
                    if (l == true) {
                        this.view.br(a, b, i, "range");
                        return;
                    }
                }
            }
            this.view.az();
        }
        fw() {
            if (!this.a8) {
                return;
            }
            let a = this.am.c;
            if (this.as == 0) {
                let b = 0;
                for (let c = 0; c < a.c.length; c++) {
                    b = Math.max(b, a.c[c]);
                }
                let d = this.ig.height >= b ? this.ig.height - b : this.ig.height;
                this.ie = new Rect(0, 0, 0, this.ig.width, d);
            }
            else {
                let e = 0;
                for (let f = 0; f < a.f.length; f++) {
                    e = Math.max(e, a.f[f]);
                }
                let g = this.ig.width >= e ? this.ig.width - e : this.ig.width;
                this.ie = new Rect(0, e, 0, g, this.ig.height);
            }
        }
        get view() {
            return this._view;
        }
        set view(a) {
            this._view = a;
        }
        get ig() {
            return this.ic;
        }
        set ig(a) {
            let b = this.ic;
            this.ic = a;
            if (!b.equals1(this.ic)) {
                this.fl(b, this.ic);
            }
        }
        get ie() {
            return this.ib;
        }
        set ie(a) {
            this.ib = a;
        }
        get id() {
            return this.ia;
        }
        set id(a) {
            this.ia = a;
        }
        get ce() {
            return this.bo;
        }
        set ce(a) {
            let b = this.bo;
            this.bo = a;
            this.fj("PixelScalingRatio", b, this.bo);
        }
        get bt() {
            return this.bn;
        }
        set bt(a) {
            let b = this.bn;
            this.bn = a;
            this.fj("ActualPixelScalingRatio", b, this.bn);
        }
        ba() {
            return !isNaN_(this.bs) && !isNaN_(this.br) && !this.ig.isEmpty && this.view.s();
        }
        e9() {
            if (!this.ba()) {
                return;
            }
            let a = this.cl();
            this.ar = new LinearGraphScaler(this.bs, this.br, a, a + this.ck(), this.a9);
            if (this.a8) {
                if (this.a7) {
                    if (this.aw.g) {
                        this.aw.t();
                    }
                    let b = this.an;
                    this.an = this.al;
                    this.al = b;
                }
                else {
                    let c = this.an;
                    this.an = this.am;
                    this.am = c;
                }
            }
            else if (this.a7) {
                this.al.d(this.cz, this.an, this.am);
                this.fx(this.al);
                this.fz(this.al);
                this.f0(this.al);
                this.f2(this.al);
            }
            if (this.a8) {
                this.fn();
                this.fw();
                if (this.a1 == 1) {
                    this.a1 = 2;
                    let d = this.an.c;
                    d.af = this.aq(this.c0, true, false);
                }
                else if (this.a1 == 4) {
                    if (this.c7 > 0) {
                        this.a1 = 5;
                        let e = this.am.c;
                        e.af = this.aq(this.c0, true, false);
                    }
                    else {
                        this.fd();
                    }
                }
                this.fp();
                this.fq();
                this.fo();
                this.fm();
            }
            if (this.a8 && this.bc) {
                this.f4();
                this.al.d(this.cz, this.an, this.am);
                this.fx(this.al);
                this.fz(this.al);
                this.f0(this.al);
                this.f2(this.al);
                this.f1(this.al);
                this.fy(this.al);
            }
            else {
                if (this.a8) {
                    this.fx(this.am);
                    this.fz(this.am);
                    this.f0(this.am);
                    this.f2(this.am);
                    this.f1(this.am);
                    this.fy(this.am);
                }
            }
            this.a8 = false;
            this.view.as();
        }
        fo() {
            let a = this.am;
            let b = a.c;
            let c = this.ar;
            let d = this.b8;
            let e = this.ie;
            if (isNaN_(d)) {
                d = 3;
            }
            b.u = this.cm;
            b.r = this.cj;
            b.s = 0;
            b.t = 1;
            b.m.clear();
            for (let f = 0; f < this.ranges.count; f++) {
                let g = this.ranges._inner[f];
                if (g.j <= this.bs || g.o > this.br) {
                    continue;
                }
                let h = g.o;
                let i = g.j;
                if (h < this.bs) {
                    h = this.bs;
                }
                if (i > this.br) {
                    i = this.br;
                }
                let j = new LinearGraphRectFrame();
                j.i = g.an != null ? g.an : this.h0(f, this.ah);
                j.j = g.ao != null ? g.ao : this.h0(f, this.ai);
                j.h = g.p;
                j.g = c.i(h);
                j.d = c.i(i);
                j.e = g.l;
                j.b = g.k;
                j.f = g.n;
                j.c = g.m;
                if (isNaN_(j.e)) {
                    j.e = this.cf;
                }
                j.b = g.k;
                if (isNaN_(j.b)) {
                    j.b = this.cf;
                }
                j.f = g.n;
                if (isNaN_(j.f)) {
                    j.f = this.cg;
                }
                j.c = g.m;
                if (isNaN_(j.c)) {
                    j.c = this.cg;
                }
                b.m.add(j);
            }
            b.l.i = this.h2;
            b.l.j = this.h3;
            b.l.h = this.ch;
            b.l.g = c.i(this.bs);
            b.l.d = c.i(this.br);
            b.l.e = this.cf;
            b.l.b = this.cf;
            b.l.f = this.cg;
            b.l.c = this.cg;
            b.ab = this.hz;
            b.ad = this.h6;
            b.x = this.cy;
            b.w = this.cw;
            b.v = this.cs;
            b.ac = this.h1;
            b.q = this.cd;
            b.p = this.cb;
            b.o = this.b9;
            let k = this.b1;
            if (isNaN_(k)) {
                k = (this.br - this.bs) / 10;
            }
            if (k == 0) {
                k = this.br - this.bs;
            }
            let l = new List$1(Number_$type, 0);
            let m = new List$1(Number_$type, 0);
            if (k > 0) {
                let n = this.bs + this.cu;
                let o = this.br - this.cv;
                let p = 100000;
                let q = Math.abs(o - n) / p;
                if (k >= q) {
                    for (let r = n; r <= o || this.be(r, o, k); r = r + k) {
                        l.add(c.i(r));
                        for (let s = 0; s < d; s++) {
                            let t = (k / (d + 1)) * (s + 1);
                            if (t + r > o) {
                                continue;
                            }
                            m.add(c.i(t + r));
                        }
                    }
                }
            }
            if (b.j.length != l.count || b.i.length != m.count) {
                b.j = new Array(l.count);
                b.i = new Array(m.count);
            }
            for (let u = 0; u < l.count; u++) {
                b.j[u] = l._inner[u];
            }
            for (let v = 0; v < m.count; v++) {
                b.i[v] = m._inner[v];
            }
        }
        ih() {
            let a = this.b1;
            let b = this.b3;
            if (isNaN_(a)) {
                a = (this.br - this.bs) / 10;
            }
            if (isNaN_(b)) {
                b = a;
            }
            if (b == 0) {
                b = this.br - this.bs;
            }
            let c = new List$1(Number_$type, 0);
            if (b > 0) {
                let d = this.b4 + this.bs;
                let e = this.br - this.b5;
                let f = 100000;
                let g = Math.abs(e - d) / f;
                if (b >= g) {
                    for (let h = d; h <= e || this.be(h, e, a); h += b) {
                        c.add(h);
                    }
                }
            }
            let i = new Array(c.count);
            let j = new Array(c.count);
            for (let k = 0; k < c.count; k++) {
                let l = c._inner[k];
                if (this.formatLabel == null && this.aj == null) {
                    l = (Math.round(l * 100) / 100);
                }
                let m = l.toString();
                if (this.aj != null) {
                    m = this.aj.i(l);
                }
                let n = new FormatLinearGraphLabelEventArgs();
                n.value = l;
                n.label = m;
                if (this.formatLabel != null) {
                    this.formatLabel(this, n);
                }
                m = n.label;
                let o = this.view.ct(((() => {
                    let $ret = new TextBlock();
                    $ret.al = m;
                    return $ret;
                })()));
                i[k] = o.width;
                j[k] = o.height;
            }
            let p = 0;
            let q = 0;
            let r = 1 - this.cj + this.cm;
            if (this.as == 0) {
                for (let s = 0; s < j.length; s++) {
                    q = Math.max(q, j[s]);
                }
                for (let t = 0; t < i.length; t++) {
                    p += i[t];
                }
                if (i.length > 0) {
                    p += i[0] / 2;
                }
                if (i.length > 1) {
                    p += i[i.length - 1] / 2;
                }
                if (i.length > 0) {
                    p += (i.length - 1) * 5;
                }
                if (r > 0) {
                    p = p / Math.abs(1 - r);
                }
            }
            else {
                for (let u = 0; u < i.length; u++) {
                    p = Math.max(p, i[u]);
                }
                for (let v = 0; v < j.length; v++) {
                    q += j[v];
                }
                if (j.length > 0) {
                    q -= j[0] / 2;
                }
                if (j.length > 1) {
                    q -= j[j.length - 1] / 2;
                }
                if (r > 0) {
                    q = q / Math.abs(1 - r);
                }
                if (j.length > 0) {
                    q += (j.length - 1) * 5;
                }
            }
            return new Size(1, p, q);
        }
        fn() {
            let a = this.am;
            let b = a.c;
            let c = this.ar;
            let d = this.b1;
            let e = this.b3;
            let f = this.b8;
            if (isNaN_(d)) {
                d = (this.br - this.bs) / 10;
            }
            if (isNaN_(e)) {
                e = d;
            }
            if (e == 0) {
                e = this.br - this.bs;
            }
            let g = new List$1(Tuple$2.$.specialize(Number_$type, Number_$type), 0);
            if (e > 0) {
                let h = this.b4 + this.bs;
                let i = this.br - this.b5;
                let j = 100000;
                let k = Math.abs(i - h) / j;
                if (e >= k) {
                    for (let l = h; l <= i || this.be(l, i, e); l = l + e) {
                        g.add(new Tuple$2(Number_$type, Number_$type, l, c.i(l)));
                    }
                }
            }
            if (b.d.length != g.count) {
                b.e = new Array(g.count);
                b.d = new Array(g.count);
                b.f = new Array(g.count);
                b.c = new Array(g.count);
                b.g = new Array(g.count);
                b.h = new Array(g.count);
            }
            b.n = this.b2;
            let m = new FormatLinearGraphLabelEventArgs();
            m.actualMinimumValue = this.bs;
            m.actualMaximumValue = this.br;
            let n = new AlignLinearGraphLabelEventArgs();
            n.actualMinimumValue = this.bs;
            n.actualMaximumValue = this.br;
            for (let o = 0; o < g.count; o++) {
                let p = g._inner[o].c;
                if (this.formatLabel == null) {
                    p = (Math.round(p * 100) / 100);
                }
                let q = (p).toString();
                if (this.aj != null) {
                    q = this.aj.i(p);
                }
                m.value = p;
                n.value = p;
                m.label = q;
                if (this.formatLabel != null) {
                    this.formatLabel(this, m);
                }
                q = m.label;
                n.label = q;
                let r = this.view.ct(((() => {
                    let $ret = new TextBlock();
                    $ret.al = q;
                    return $ret;
                })()));
                n.width = r.width;
                n.height = r.height;
                if (this.as == 0) {
                    n.offsetX = -1 * (r.width / 2);
                    n.offsetY = -1 * (r.height);
                }
                else {
                    n.offsetX = -1 * r.width;
                    n.offsetY = -1 * (r.height / 2);
                }
                if (this.alignLabel != null) {
                    this.alignLabel(this, n);
                }
                b.f[o] = n.width;
                b.c[o] = n.height;
                b.g[o] = n.offsetX;
                b.h[o] = n.offsetY;
                b.d[o] = q;
                b.e[o] = g._inner[o].d;
            }
        }
        be(a, b, c) {
            let d = c / 10000;
            if (isNaN_(d)) {
                d = 1E-05;
            }
            let e = Math.abs(a - b);
            if (e < d) {
                return true;
            }
            return false;
        }
        fm() {
            let a = this.am;
            let b = a.a;
            b.e = this.hx;
            b.f = this.hy;
            b.c = this.bw;
            b.a = this.bu;
            b.b = this.bv;
        }
        fp() {
            let a = this.am;
            let b = a.b;
            let c = this.ar;
            b.e = this.cp;
            b.b = this.cp;
            b.f = this.cq;
            b.c = this.cq;
            b.i = this.h4;
            b.j = this.h5;
            b.h = this.cr;
            if (isNaN_(this.cn)) {
                return;
            }
            let d = c.i(this.cn);
            let e = (this.co / 2);
            b.g = d - e;
            b.d = d + e;
        }
        fq() {
            let a = this.am.c;
            let b = this.c0;
            if (isNaN_(b)) {
                return;
            }
            let c = !(this.a1 == 0 || this.a1 == 5);
            a.ag = this.aq(b, false, c);
            let d = this.bz;
            if (c && !isNaN_(d)) {
                a.af = this.aq(d, true, false);
            }
        }
        aq(a, b, c) {
            let d = this.ar;
            let e = this.bs;
            if (isNaN_(e)) {
                e = this.bs;
            }
            let f = a;
            let g = new LinearGraphRectFrame();
            let h = this.h7;
            let i = this.h8;
            if (c) {
                h = BrushUtil.s(h, this.bq);
                i = BrushUtil.s(i, this.bq);
            }
            g.i = h;
            g.j = i;
            g.h = this.c3;
            g.g = d.i(e);
            g.d = d.i(f);
            g.e = this.c1;
            g.b = this.c1;
            g.f = this.c2;
            g.c = this.c2;
            return g;
        }
        h0(a, b) {
            if (b != null && b.count > 0) {
                return b.item(a % b.count);
            }
            else {
                return null;
            }
        }
        f1(a) {
            let b = this.ie;
            let c = a.c;
            let d = this.a5;
            let e = c.j;
            let f = c.w;
            let g = c.v;
            let h = c.ad;
            let i = c.x;
            let j = this.a3;
            let k = c.i;
            let l = c.p;
            let m = c.o;
            let n = c.ac;
            let o = c.q;
            d.f = true;
            for (let p = 0; p < this.bh.count; p++) {
                d.n(this.bh._inner[p]);
            }
            this.bh.clear();
            let q = this.ci();
            let r = this.c5();
            for (let s = 0; s < e.length; s++) {
                let t, u, v, w;
                if (this.as == 1) {
                    t = b.left + q * f;
                    u = r - e[s];
                    v = b.left + q * g;
                    w = u;
                }
                else {
                    t = b.left + e[s];
                    u = q * (1 - f);
                    v = t;
                    w = q * (1 - g);
                }
                let x = d.a();
                let y = new PathGeometry();
                let z = new PathFigure();
                z._startPoint = { $type: Point_$type, x: t, y: u };
                z._segments.add(((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: v, y: w };
                    return $ret;
                })()));
                y.c.add(z);
                x.an = y;
                x._stroke = h;
                x.ad = i;
                this.bh.add(x);
            }
            for (let aa = 0; aa < k.length; aa++) {
                let ab, ac, ad, ae;
                if (this.as == 1) {
                    ab = b.left + q * l;
                    ac = r - k[aa];
                    ad = b.left + q * m;
                    ae = ac;
                }
                else {
                    ab = k[aa];
                    ac = q * (1 - l);
                    ad = ab;
                    ae = q * (1 - m);
                }
                let af = d.a();
                let ag = new PathGeometry();
                let ah = new PathFigure();
                ah._startPoint = { $type: Point_$type, x: ab, y: ac };
                ah._segments.add(((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: ad, y: ae };
                    return $ret;
                })()));
                ag.c.add(ah);
                af.an = ag;
                af._stroke = n;
                af.ad = o;
                this.bh.add(af);
            }
            d.f = false;
        }
        fy(a) {
            let b = this.ie;
            let c = a.c;
            let d = c.e;
            let e = c.d;
            let f = c.g;
            let g = c.h;
            let h = c.f;
            let i = c.c;
            let j = c.n;
            let k = this.a2;
            k.f = true;
            for (let l = 0; l < this.bf.count; l++) {
                k.n(this.bf._inner[l]);
            }
            this.bf.clear();
            let m = c.ab;
            let n = this.c4();
            let o = this.c5();
            for (let p = 0; p < e.length; p++) {
                let q, r;
                if (this.as == 1) {
                    q = b.left + n * j;
                    r = b.top + o - d[p];
                }
                else {
                    q = b.left + d[p];
                    r = b.top + n * (1 - j);
                }
                let s = k.a();
                s.al = e[p];
                this.view.bq(s, m);
                let t = h[p];
                let u = i[p];
                let v = f[p];
                let w = g[p];
                this.view.bh(s, q + v, r + w);
                this.bf.add(s);
            }
            k.f = false;
        }
        fz(a) {
            let b = a.c;
            let c = this.a4;
            c.f = true;
            for (let d = 0; d < this.bg.count; d++) {
                c.n(this.bg._inner[d]);
            }
            this.bg.clear();
            let e = this.ci();
            let f = this.c5();
            let g = this.h9();
            let h = this.view.co();
            h.an = b.ae(g, e, f, this.as);
            for (let i = 0; i < b.m.count; i++) {
                let j = b.m._inner[i];
                let k = c.a();
                k.an = j.k(g, e, f, this.as);
                k._fill = j.i;
                k._stroke = j.j;
                k.ad = j.h;
                this.bg.add(k);
            }
            this.view.bp(this.bg);
            c.f = false;
            let l = this.view.cn();
            l.an = b.l.k(g, e, f, this.as);
            l._fill = b.l.i;
            l._stroke = b.l.j;
            l.ad = b.l.h;
        }
        fx(a) {
            let b = this.id;
            let c = this.view.cl();
            let d = a.a;
            let e = this.as == 0 ? b.height : b.width;
            let f = this.as == 0 ? b.width : b.height;
            let g = d.g(e, f, this.as);
            c.an = g;
            c._fill = d.e;
            c._stroke = d.f;
            c.ad = d.c;
        }
        f0(a) {
            let b = this.view.cp();
            if (isNaN_(this.cn) || this.cn < this.bs || this.cn > this.br) {
                b.an = null;
                return;
            }
            let c = a.b;
            let d = this.ci();
            let e = this.c5();
            let f = this.h9();
            let g = c.k(f, d, e, this.as);
            b.an = g;
            b._fill = c.i;
            b._stroke = c.j;
            b.ad = c.h;
        }
        f2(a) {
            let b = this.view.cq();
            let c = this.view.cm();
            let d = this.c0;
            if (d <= this.bs || d > this.br || isNaN_(d)) {
                b.an = null;
                c.an = null;
                return;
            }
            let e = this.bz;
            let f = this.a1 != 0;
            if (!f || e <= this.bs || e > this.br || isNaN_(e)) {
                c.an = null;
                f = false;
            }
            let g = a.c;
            let h = this.ci();
            let i = this.c5();
            let j = this.h9();
            let k = g.ag;
            b.an = k.k(j, h, i, this.as);
            b._fill = k.i;
            b._stroke = k.j;
            b.ad = k.h;
            if (f) {
                let l = g.af;
                c.an = l.k(j, h, i, this.as);
                c._fill = l.i;
                c._stroke = l.j;
                c.ad = l.h;
            }
        }
        fl(a, b) {
            this.a8 = true;
            this.view.bo();
        }
        fg(a, b) {
            this.a8 = true;
            this.view.bo();
        }
        ci() {
            if (this.as == 0) {
                return this.bb ? this.ig.height : this.ie.height;
            }
            return this.bb ? this.ig.width : this.ie.width;
        }
        ck() {
            if (this.as == 0) {
                return this.ig.width * (this.cj - this.cm);
            }
            return this.ig.height * (this.cj - this.cm);
        }
        c4() {
            if (this.as == 0) {
                return this.ig.height;
            }
            return this.ig.width;
        }
        c5() {
            if (this.as == 0) {
                return this.ig.width;
            }
            return this.ig.height;
        }
        cl() {
            let a = this.cm;
            if (this.as == 0) {
                if (this.a9) {
                    a = 1 - this.cj;
                }
                return this.ig.left + this.ig.width * a;
            }
            if (this.a9) {
                a = 1 - this.cj;
            }
            return this.ig.top + this.ig.height * a;
        }
        h9() {
            let a = this.ie.left;
            if (this.bb) {
                a = 0;
            }
            let b = this.cm;
            if (this.as == 0) {
                if (this.a9) {
                    b = 1 - this.cj;
                }
                return { $type: Point_$type, x: a + this.ie.width * b, y: this.ie.top };
            }
            if (!this.a9) {
                b = 1 - this.cj;
            }
            return { $type: Point_$type, x: a, y: this.ie.top + this.ie.height * b };
        }
        fj(a, b, c) {
            switch (a) {
                case XamBulletGraph.$$p[51]:
                case XamBulletGraph.$$p[36]:
                case XamBulletGraph.$$p[40]:
                case XamBulletGraph.$$p[0]:
                case XamBulletGraph.$$p[3]:
                case XamBulletGraph.$$p[55]:
                case XamBulletGraph.$$p[43]:
                case XamBulletGraph.$$p[21]:
                    this.view.a5(a, b, c);
                    break;
                case XamBulletGraph.$$p[27]:
                    this.view.ba(b, c);
                    break;
                case XamBulletGraph.$$p[30]:
                    this.view.bb(b, c);
                    break;
            }
            switch (a) {
                case XamBulletGraph.$$p[13]:
                case XamBulletGraph.$$p[14]:
                    if (this.dr != null) {
                        this.aj = new BindingFormatter();
                        this.aj.j = this.dr;
                        this.aj.d = this.ag;
                    }
                    else {
                        this.aj = null;
                    }
                    this.a8 = true;
                    this.view.bo();
                    break;
                case XamBulletGraph.$$p[50]:
                    this.aw.r = this.c7;
                    this.view.bo();
                    break;
                case "TransitionProgress":
                    if (this.cz >= 1) {
                        this.aw.w();
                        let d = this.am;
                        this.am = this.an;
                        this.an = d;
                        this.fn();
                        this.fp();
                        this.fq();
                        this.fo();
                        this.fm();
                        this.fx(this.am);
                        this.fz(this.am);
                        this.f0(this.am);
                        this.f2(this.am);
                        this.f1(this.am);
                        this.fy(this.am);
                        if (this.a1 == 5) {
                            this.fd();
                            this.view.bo();
                            return;
                        }
                        else if (this.a1 == 2) {
                            this.a1 = 3;
                        }
                    }
                    this.al.d(this.cz, this.an, this.am);
                    this.fx(this.al);
                    this.fz(this.al);
                    this.f0(this.al);
                    this.f2(this.al);
                    this.f1(this.al);
                    this.fy(this.al);
                    this.view.as();
                    break;
                case XamBulletGraph.$$p[56]:
                case XamBulletGraph.$$p[52]:
                case XamBulletGraph.$$p[54]:
                case XamBulletGraph.$$p[51]:
                case XamBulletGraph.$$p[55]:
                case XamBulletGraph.$$p[57]:
                case XamBulletGraph.$$p[36]:
                case XamBulletGraph.$$p[40]:
                case XamBulletGraph.$$p[42]:
                case XamBulletGraph.$$p[35]:
                case XamBulletGraph.$$p[37]:
                case XamBulletGraph.$$p[39]:
                case XamBulletGraph.$$p[0]:
                case XamBulletGraph.$$p[3]:
                case XamBulletGraph.$$p[43]:
                case XamBulletGraph.$$p[21]:
                case XamBulletGraph.$$p[27]:
                case XamBulletGraph.$$p[30]:
                case XamBulletGraph.$$p[19]:
                case XamBulletGraph.$$p[41]:
                case XamBulletGraph.$$p[38]:
                case XamBulletGraph.$$p[28]:
                case XamBulletGraph.$$p[29]:
                case XamBulletGraph.$$p[4]:
                case XamBulletGraph.$$p[1]:
                case XamBulletGraph.$$p[2]:
                case XamBulletGraph.$$p[10]:
                case XamBulletGraph.$$p[15]:
                case XamBulletGraph.$$p[12]:
                case XamBulletGraph.$$p[16]:
                case XamBulletGraph.$$p[17]:
                case XamBulletGraph.$$p[47]:
                case XamBulletGraph.$$p[48]:
                case XamBulletGraph.$$p[45]:
                case XamBulletGraph.$$p[44]:
                case XamBulletGraph.$$p[46]:
                case XamBulletGraph.$$p[24]:
                case XamBulletGraph.$$p[23]:
                case XamBulletGraph.$$p[22]:
                case XamBulletGraph.$$p[25]:
                case "ScaleBackgroundBrush":
                case "ScaleBackgroundOutline":
                case "ScaleBackgroundThickness":
                    this.a8 = true;
                    this.view.bo();
                    break;
                case XamBulletGraph.$$p[31]:
                    let e = b;
                    let f = c;
                    if (e != null) {
                        let g = e;
                        g.collectionChanged = delegateRemove(g.collectionChanged, runOn(this, this.fu));
                    }
                    if (f != null) {
                        let h = f;
                        h.collectionChanged = delegateCombine(h.collectionChanged, runOn(this, this.fu));
                    }
                    this.a8 = true;
                    this.view.bo();
                    break;
                case XamBulletGraph.$$p[26]:
                case XamBulletGraph.$$p[11]:
                case XamBulletGraph.$$p[20]:
                case XamBulletGraph.$$p[18]:
                case XamBulletGraph.$$p[32]:
                case XamBulletGraph.$$p[33]:
                    this.bs = Math.min(this.b7, this.b6);
                    this.br = Math.max(this.b7, this.b6);
                    let i = this.cl();
                    this.ar = new LinearGraphScaler(this.bs, this.br, i, i + this.ck(), this.a9);
                    this.a8 = true;
                    this.view.bo();
                    break;
                case XamBulletGraph.$$p[5]:
                case XamBulletGraph.$$p[6]:
                    this.view.by();
                    this.a8 = true;
                    this.view.bo();
                    break;
                case "PixelScalingRatio":
                    if (isNaN_(DeviceUtils.a(this.ce))) {
                        this.bt = 1;
                    }
                    else {
                        this.bt = DeviceUtils.a(this.ce);
                    }
                    break;
                case "ActualPixelScalingRatio":
                    this.view.bf();
                    break;
                case XamBulletGraph.$$p[9]:
                    {
                        let j = this.az == 2;
                        this.f6();
                        let k = this.az == 2;
                        this.a8 = true;
                        if (!j && k) {
                            this.a1 = 1;
                        }
                        else if (j && !k) {
                            this.a1 = 4;
                        }
                        this.view.bo();
                        break;
                    }
                case XamBulletGraph.$$p[7]:
                    {
                        let l = this.az == 2;
                        this.f6();
                        let m = this.az == 2;
                        this.a8 = true;
                        if (!l && m) {
                            this.a1 = 1;
                        }
                        else if (l && !m) {
                            this.a1 = 4;
                        }
                        this.view.bo();
                        break;
                    }
                case XamBulletGraph.$$p[8]:
                    this.f7();
                    break;
                case "ActualHighlightValueOpacity":
                    this.a8 = true;
                    this.view.bo();
                    break;
            }
            this.fk(a);
        }
        fu(a, b) {
            if (b.oldItems != null) {
                for (let c of fromEn(b.oldItems)) {
                    c.propertyChanged = delegateRemove(c.propertyChanged, runOn(this, this.ft));
                }
            }
            if (b.newItems != null) {
                for (let d of fromEn(b.newItems)) {
                    d.propertyChanged = delegateCombine(d.propertyChanged, runOn(this, this.ft));
                }
            }
            this.a8 = true;
            this.view.bo();
        }
        ft(a, b) {
            this.a8 = true;
            this.view.bo();
        }
        refresh() {
            this.a8 = true;
            this.view.bo();
        }
        ax() {
            return FontUtil.toFontInfo(this.view.ag, this.dh);
        }
    }
    XamBulletGraph.$t = markType(XamBulletGraph, 'XamBulletGraph', Control.$, [INotifyPropertyChanged_$type]);
    XamBulletGraph.g4 = DependencyProperty.i("ScaleBackgroundBrush", Brush.$, XamBulletGraph.$, new PropertyMetadata(2, null, (a, b) => a.fj("ScaleBackgroundBrush", b.oldValue, b.newValue)));
    XamBulletGraph.g5 = DependencyProperty.i("ScaleBackgroundOutline", Brush.$, XamBulletGraph.$, new PropertyMetadata(2, null, (a, b) => a.fj("ScaleBackgroundOutline", b.oldValue, b.newValue)));
    XamBulletGraph.g6 = DependencyProperty.i("ScaleBackgroundThickness", Number_$type, XamBulletGraph.$, new PropertyMetadata(2, 1, (a, b) => a.fj("ScaleBackgroundThickness", b.oldValue, b.newValue)));
    XamBulletGraph.$$p = markDep(DependencyProperty, PropertyMetadata, XamBulletGraph, 'fj', ['BackingBrush:hx:f8', [Brush.$, null], 'BackingInnerExtent:bu:f9', [1, 0], 'BackingOuterExtent:bv:ga', [1, 1], 'BackingOutline:hy:gb', [Brush.$, null], 'BackingStrokeThickness:bw:gc', [1, 2], 'FontBrush:hz:gd', [Brush.$, null], 'Font:dh:ge', [2, null], 'HighlightValueDisplayMode:a0:gf', [HighlightedValueDisplayMode_$type, enumGetBox(HighlightedValueDisplayMode_$type, 0)], 'HighlightValueOpacity:b0:gg', [1, 0.5], 'HighlightValue:bz:gh', [1, NaN], 'Interval:b1:gi', [1, NaN], 'IsScaleInverted:a9:gj', [0, false], 'LabelExtent:b2:gk', [1, 0], 'LabelFormat:dr:gl', [2, null], 'LabelFormatSpecifiers:ag:gm', [Array_$type, null], 'LabelInterval:b3:gn', [1, NaN], 'LabelsPostInitial:b4:go', [1, 0], 'LabelsPreTerminal:b5:gp', [1, 0], 'MaximumValue:b6:gq', [1, 100], 'MergeViewports:bb:gr', [0, false], 'MinimumValue:b7:gs', [1, 0], 'MinorTickBrush:h1:gt', [Brush.$, null], 'MinorTickCount:b8:gu', [1, 3], 'MinorTickEndExtent:b9:gv', [1, 0.2], 'MinorTickStartExtent:cb:gw', [1, 0.1], 'MinorTickStrokeThickness:cd:gx', [1, 1], 'Orientation:as:gy', [LinearScaleOrientation_$type, enumGetBox(LinearScaleOrientation_$type, 0)], 'RangeBrushes:ah:gz', [BrushCollection.$, null], 'RangeInnerExtent:cf:g0', [1, 0.2], 'RangeOuterExtent:cg:g1', [1, 0.95], 'RangeOutlines:ai:g2', [BrushCollection.$, null], 'Ranges::g3', [LinearGraphRangeCollection.$, null], 'ScaleEndExtent:cj:g7', [1, 0.95], 'ScaleStartExtent:cm:g8', [1, 0.05], 'ShowToolTipTimeout:c6:g9', [1, 500], 'TargetValueBreadth:co:ha', [1, 3], 'TargetValueBrush:h4:hb', [Brush.$, null], 'TargetValueInnerExtent:cp:hc', [1, 0.3], 'TargetValueName:el:hd', [2, null], 'TargetValueOuterExtent:cq:he', [1, 0.85], 'TargetValueOutline:h5:hf', [Brush.$, null], 'TargetValue:cn:hg', [1, NaN], 'TargetValueStrokeThickness:cr:hh', [1, 1], 'TickBrush:h6:hi', [Brush.$, null], 'TickEndExtent:cs:hj', [1, 0.2], 'TickStartExtent:cw:hm', [1, 0.06], 'TickStrokeThickness:cy:hn', [1, 2], 'TicksPostInitial:cu:hk', [1, 0], 'TicksPreTerminal:cv:hl', [1, 0], 'ToolTip::ho', [4, null], 'TransitionDuration:c7:hp', [1, 0], 'ValueBrush:h7:hq', [Brush.$, null], 'ValueInnerExtent:c1:hr', [1, 0.5], 'ValueName:e2:hs', [2, null], 'ValueOuterExtent:c2:ht', [1, 0.65], 'ValueOutline:h8:hu', [Brush.$, null], 'Value:c0:hv', [1, NaN], 'ValueStrokeThickness:c3:hw', [1, 1]]);
    return XamBulletGraph;
})();
/**
 * @hidden
 */
let XamBulletGraphView = /*@__PURE__*/ (() => {
    class XamBulletGraphView extends Base {
        constructor(a) {
            super();
            this.ao = 0;
            this.an = 0;
            this.ap = 0;
            this.m = null;
            this.i = null;
            this.ai = null;
            this.p = null;
            this.ag = null;
            this.aa = null;
            this.z = null;
            this.y = null;
            this.ab = null;
            this.ck = null;
            this.cg = null;
            this.cj = null;
            this.ci = null;
            this.cf = null;
            this.ch = null;
            this.b7 = null;
            this.b8 = null;
            this.b4 = null;
            this.b5 = null;
            this.b9 = null;
            this.ca = null;
            this.b6 = null;
            this.c = null;
            this.d = null;
            this.e = null;
            this.f = null;
            this.cb = null;
            this.cc = null;
            this.q = false;
            this.v = null;
            this.a = ["value", "targetvalue", "backing", "scale", "tick", "minortick", "label"];
            this.u = false;
            this.t = false;
            this.ah = null;
            this.k = null;
            this.aj = 0;
            this.al = 0;
            this.aq = null;
            this.am = -1;
            this.cd = null;
            this.ak = 0;
            this.x = null;
            this.b3 = ((() => {
                let $ret = new Brush();
                $ret.fill = "black";
                return $ret;
            })());
            this.r = false;
            this.n = null;
            this.b2 = null;
            this.ac = 0;
            this.m = a;
            this.v = new Dictionary$2(String_$type, Dictionary$2.$.specialize(String_$type, Brush.$), 0);
            this.cj = new Path();
            this.ck = new Path();
            this.cg = new Path();
            this.ci = new Path();
            this.cf = new Path();
            this.ch = new Path();
            this.aa = new List$1(Path.$, 0);
            this.z = new List$1(Path.$, 0);
            this.y = new List$1(TextBlock.$, 0);
            this.ab = new List$1(TextBlock.$, 0);
        }
        a4() {
            this.a0();
            if (this.i != null) {
                this.i.at(this.ag.rootWrapper, "");
            }
        }
        a8() {
            if (this.i != null && this.ag != null) {
                this.i.bh(this.ag.rootWrapper, "");
            }
        }
        a9() {
            this.k = new LinearGraphTooltipDataContext();
            this.ak = this.m.c6;
            this.a0();
        }
        a0() {
            let a = this.m.ce;
            let b = this.m.bt;
            if (!isNaN_(a) && a != 0) {
                return;
            }
            if (window.devicePixelRatio != undefined && window.devicePixelRatio != b) {
                this.m.bt = window.devicePixelRatio;
            }
        }
        s() {
            return true;
        }
        cp() {
            return this.cj;
        }
        cq() {
            return this.ck;
        }
        cm() {
            return this.cg;
        }
        co() {
            return this.ci;
        }
        cl() {
            return this.cf;
        }
        cn() {
            return this.ch;
        }
        ay() {
            this.q = true;
            let a = ["#778899", "black", "#EBEDEF", "#617583", "#617583", "rgba(100,107,114,.74)", "rgba(100,107,114,.74)"];
            let b = ["#778899", "black", "#B2B9C0", "#B2B9C0", null, null, null];
            let c = ((() => {
                let $ret = new List$1(Array_$type, 0);
                $ret.add(a);
                $ret.add(b);
                return $ret;
            })());
            this.v.clear();
            let d = this.a.length;
            for (let e = 0; e < d; e++) {
                let f = this.a[e];
                let g = "ui-bulletgraph-" + f;
                let h = "ui-bulletgraph-" + f + "-fill";
                let i = "ui-bulletgraph-" + f + "-outline";
                let j;
                if (!((() => { let k = XamBulletGraphView.w.tryGetValue(h, j); j = k.p1; return k.ret; })())) {
                    j = BrushUtil.m(h, g, "background-color", this.ag, a[e]);
                    XamBulletGraphView.w.addItem(h, j);
                }
                let k;
                if (!((() => { let l = XamBulletGraphView.w.tryGetValue(i, k); k = l.p1; return l.ret; })())) {
                    k = BrushUtil.m(i, g, "border-top-color", this.ag, b[e]);
                    XamBulletGraphView.w.addItem(i, k);
                }
                let l = new Dictionary$2(String_$type, Brush.$, 0);
                l.item("fill", j);
                l.item("outline", k);
                this.v.item(this.a[e], l);
            }
            this.bx();
            if (XamBulletGraphView.g == null || XamBulletGraphView.h == null) {
                let m = BrushUtil.i("ui-bulletgraph-range-fill-palette-", "ui-bulletgraph-range-outline-palette-", "ui-bulletgraph-range-palette-", this.ag, XamBulletGraphView.g, XamBulletGraphView.h, ["#216E99", "#216E99", "#44acd6", "#44acd6", "#cecece", "#cecece"]);
                XamBulletGraphView.g = m.p4;
                XamBulletGraphView.h = m.p5;
            }
            this.c = XamBulletGraphView.g;
            this.d = XamBulletGraphView.h;
            if (this.e == null) {
                this.m.ah = this.c;
            }
            if (this.f == null) {
                this.m.ai = this.d;
            }
            this.q = false;
        }
        bx() {
            this.q = true;
            let a = this.a.length;
            for (let b = 0; b < a; b++) {
                let c = this.a[b];
                this.bw(c, this.v.item(c));
            }
            this.q = false;
        }
        bw(a, b) {
            let c = b.item("fill");
            let d = b.item("outline");
            switch (a) {
                case "targetvalue":
                    if (this.b7 == null) {
                        this.m.h4 = c;
                    }
                    if (this.b8 == null) {
                        this.m.h5 = d;
                    }
                    break;
                case "value":
                    if (this.cb == null) {
                        this.m.h7 = c;
                    }
                    if (this.cc == null) {
                        this.m.h8 = d;
                    }
                    break;
                case "backing":
                    if (this.b4 == null) {
                        this.m.hx = c;
                    }
                    if (this.b5 == null) {
                        this.m.hy = d;
                    }
                    break;
                case "tick":
                    if (this.ca == null) {
                        this.m.h6 = c;
                    }
                    break;
                case "minortick":
                    if (this.b6 == null) {
                        this.m.h1 = c;
                    }
                    break;
                case "label":
                    this.b3 = c;
                    break;
            }
        }
        a5(a, b, c) {
            let d = b;
            let e = c;
            if (!this.q) {
                switch (a) {
                    case XamBulletGraph.$$p[36]:
                        this.b7 = e;
                        break;
                    case XamBulletGraph.$$p[40]:
                        this.b8 = e;
                        break;
                    case XamBulletGraph.$$p[0]:
                        this.b4 = e;
                        break;
                    case XamBulletGraph.$$p[3]:
                        this.b5 = e;
                        break;
                    case XamBulletGraph.$$p[51]:
                        this.cb = e;
                        break;
                    case XamBulletGraph.$$p[55]:
                        this.cc = e;
                        break;
                    case XamBulletGraph.$$p[43]:
                        this.ca = e;
                        break;
                    case XamBulletGraph.$$p[21]:
                        this.b6 = e;
                        break;
                }
                if (e == null) {
                    this.bx();
                }
            }
        }
        ba(a, b) {
            if (!this.q) {
                this.e = b;
                if (this.e == null) {
                    this.m.ah = this.c;
                }
            }
        }
        bb(a, b) {
            if (!this.q) {
                this.f = b;
                if (this.f == null) {
                    this.m.ai = this.d;
                }
            }
        }
        b(a, b) {
            this.ag.startCSSQuery();
            for (let c = 0; c < b.length; c++) {
                b[c] = this.ag.getCssDefaultPropertyValue(a, b[c]);
            }
            this.ag.endCSSQuery();
            return b;
        }
        bs() {
            this.ay();
            this.by();
            this.bo();
        }
        ce(a) {
            let b = CanvasGestureDOMEventProxy.c4(this.ag.rootWrapper);
            return { $type: Point_$type, x: a.x - b.left, y: a.y - b.top };
        }
        br(a, b, c, d) {
            this.cd = a;
            this.am = c;
            this.aq = d;
            this.bn();
            this.al = window.setTimeout(runOn(this, this.bz), this.ak);
            this.t = true;
        }
        az() {
            if (this.t) {
                window.clearTimeout(this.al);
                this.t = false;
            }
            if (this.u) {
                let a = this.m.toolTip;
                window.clearTimeout(this.aj);
                a.hide();
                this.u = false;
                this.k = null;
            }
            this.ak = this.m.c6;
        }
        bn() {
            if (this.t) {
                window.clearTimeout(this.al);
            }
            if (this.u) {
                let a = this.m.toolTip;
                window.clearTimeout(this.aj);
                a.hide();
                this.u = false;
                this.ak = intDivide(this.m.c6, 2);
            }
        }
        bz() {
            if (this.t) {
                window.clearTimeout(this.al);
                this.t = false;
            }
            let a = this.am;
            let b = this.aq;
            let c = this.cd;
            if (this.ag != null) {
                this.aj = this.ag.setTimeout(runOn(this, this.az), 10 * this.m.c6);
            }
            else {
                this.aj = window.setTimeout(runOn(this, this.az), 10 * this.m.c6);
            }
            let d = this.m.ranges._inner[a];
            if (this.ah != this.m.toolTip) {
                if (this.ah != null) {
                    this.ah.remove();
                }
                this.ah = this.m.toolTip;
                this.ah.setStyleProperty("z-index", "10000");
                this.ah.setStyleProperty("position", "absolute");
                this.ag.append(this.ah);
            }
            this.k = this.j(b, a);
            let context_ = this.k;
            let tooltip_ = this.ah;
            let tooltipType_ = b;
            if (tooltip_.updateToolTip) {
                tooltip_.updateToolTip(context_, tooltipType_);
            }
            ;
            let e = this.ah.findByClass(".ui-tooltip-container");
            if (e != null && e.length > 0) {
                e[0].setAttribute("style", null);
            }
            let f = "ui-simple-default-tooltip-content";
            let g = this.ah.findByClass("." + f);
            if (g != null && g.length > 0) {
                let h = ["border-top-color", "border-top-width", "border-top-style", "border-top-left-radius", "background-color", "padding-top", "font-weight"];
                let i = ["border-color", "border-width", "border-style", "border-radius", "background-color", "padding", "font-weight"];
                let j = ((() => {
                    let $ret = new List$1(String_$type, 0);
                    $ret.add(this.k.brush.color.colorString);
                    $ret.add("2px");
                    $ret.add("solid");
                    $ret.add("4px");
                    $ret.add("rgba(230, 230, 230, 0.74)");
                    $ret.add("4px");
                    $ret.add("bold");
                    return $ret;
                })());
                let k = new Dictionary$2(String_$type, String_$type, 0);
                let l = new Array(h.length);
                arrayCopy1(h, 0, l, 0, h.length);
                this.b(f, l);
                for (let m = 0; m < l.length; m++) {
                    this.ah.setStyleProperty(i[m], (l[m] == null) ? j._inner[m] : l[m]);
                }
            }
            this.ah.setStyleProperty("top", (c.y + 15).toString() + "px").setStyleProperty("left", (c.x + 15).toString() + "px");
            this.ah.show();
            this.u = true;
        }
        j(a, b) {
            let c = new LinearGraphTooltipDataContext();
            switch (a) {
                case "range":
                    let d = this.m.ranges._inner[b];
                    c.item = d;
                    c.itemName = d.u;
                    c.label = d.u + ": " + d.o.toString() + "-" + d.j.toString();
                    let e = d.an;
                    let f = d.ao;
                    c.brush = e != null ? e : this.m.h0(b, this.c);
                    c.outline = f != null ? f : this.m.h0(b, this.d);
                    c.thickness = d.p;
                    break;
                case "value":
                    c.item = this.m.c0;
                    c.itemName = this.m.e2;
                    c.label = this.m.e2 != null ? this.m.e2 + ": " + this.m.c0.toString() : this.m.c0.toString();
                    c.brush = this.m.h7;
                    c.outline = this.m.h8;
                    c.thickness = this.m.c3;
                    break;
                case "targetvalue":
                    c.item = this.m.cn;
                    c.itemName = this.m.el;
                    c.label = this.m.el != null ? this.m.el + ": " + this.m.cn.toString() : this.m.cn.toString();
                    c.brush = this.m.h4;
                    c.outline = this.m.h5;
                    c.thickness = this.m.cr;
                    break;
            }
            return c;
        }
        a6(a) {
            if (a == null) {
                this.ai = null;
                this.ag = null;
                this.ah = null;
                this.p = null;
                if (this.m.a7) {
                    this.m.aw.w();
                }
                this.at();
                return;
            }
            let b = a;
            this.ag = b;
            this.m.aw.u(this.ag);
            this.ag.rootWrapper.addClass("ui-bulletgraph-container");
            this.ap = (isNaN_(this.m.ce) ? this.m.bt : this.m.ce);
            let c = this.ap;
            let d = Math.round(b.rootWrapper.width());
            let e = Math.round(b.rootWrapper.height());
            let f = d * c;
            let g = e * c;
            this.ag.rootWrapper.setStyleProperty("position", "relative");
            let h = this.ag.createElement("canvas");
            h.setStyleProperty("position", "absolute");
            this.ag.append(h);
            this.ao = f;
            this.an = g;
            h.setAttribute("width", f.toString());
            h.setAttribute("height", g.toString());
            h.setStyleProperty("width", d.toString());
            h.setStyleProperty("height", e.toString());
            h.setStyleProperty("left", "0px");
            h.setStyleProperty("top", "0px");
            this.m.ig = new Rect(0, 0, 0, d, e);
            this.m.id = new Rect(0, 0, 0, d, e);
            this.ai = h;
            let i = this.ag.get2DCanvasContext(this.ai);
            this.p = new RenderingContext(new CanvasViewRenderer(), i);
            this.ay();
            this.by();
            this.p.ad(this.n);
            this.at();
            if (TypeRegistrar.isRegistered("CanvasGestureDOMEventProxy")) {
                this.i = typeCast(EventProxy.$, TypeRegistrar.create("CanvasGestureDOMEventProxy", this.ag.rootWrapper, this.ag, false));
            }
            if (this.i != null) {
                let j = this.i;
                j.onMouseOver = delegateCombine(j.onMouseOver, runOn(this, this.av));
                let k = this.i;
                k.onMouseLeave = delegateCombine(k.onMouseLeave, runOn(this, this.au));
            }
            this.bm();
        }
        at() {
            if (this.i != null) {
                let a = this.i;
                a.onMouseOver = delegateRemove(a.onMouseOver, runOn(this, this.av));
                let b = this.i;
                b.onMouseLeave = delegateRemove(b.onMouseLeave, runOn(this, this.au));
                this.i.av();
            }
        }
        av(a, b, c) {
            if (this.m != null) {
                this.m.onMouseOver(a, b, c);
            }
        }
        au(a) {
            if (this.m != null) {
                this.m.onMouseLeave();
            }
        }
        a7() {
            this.a0();
            let a = Math.round(this.ag.rootWrapper.width());
            let b = Math.round(this.ag.rootWrapper.height());
            this.m.ig = new Rect(0, 0, 0, a, b);
            this.m.id = new Rect(0, 0, 0, a, b);
            if (this.i != null) {
                this.i.bl = this.m.ig;
            }
        }
        as() {
            this.bm();
        }
        bp(a) {
            this.x = a;
        }
        bm() {
            let a = this.m.ig.width;
            let b = this.m.ig.height;
            let c = a * this.ap;
            let d = b * this.ap;
            if (this.ao != c || this.an != d) {
                this.ai.setAttribute("width", c.toString());
                this.ai.setAttribute("height", d.toString());
                this.ai.setStyleProperty("width", a.toString() + "px");
                this.ai.setStyleProperty("height", b.toString() + "px");
                this.ao = truncate(Math.round(c));
                this.an = truncate(Math.round(d));
            }
            if (this.p.d && this.ap != 1) {
                this.p.aa();
                this.p.ab(this.ap, this.ap);
            }
            this.p.l(this.m.ig.left, this.m.ig.top, this.m.ig.width, this.m.ig.height);
            this.p.t(this.cf);
            this.p.t(this.ch);
            if (this.x != null) {
                for (let e = 0; e < this.x.count; e++) {
                    this.p.t(this.x._inner[e]);
                }
            }
            for (let f = 0; f < this.y.count; f++) {
                this.p.ad(this.n);
                this.p.x(this.y._inner[f]);
            }
            for (let g = 0; g < this.z.count; g++) {
                this.p.t(this.z._inner[g]);
            }
            this.p.t(this.ck);
            this.p.t(this.cg);
            this.p.t(this.cj);
            if (this.p.d && this.ap != 1) {
                this.p.z();
            }
        }
        by() {
            if (this.m.dh != null) {
                this.n = this.m.ax();
            }
            else {
                this.n = FontUtil.getFont(this.ag);
            }
            this.ac = this.ad(this.n);
            if (this.m.hz == null) {
                let a = this.ag.rootWrapper.getStyleProperty("color");
                if (stringIsNullOrEmpty(a) == false) {
                    this.b2 = new Brush();
                    this.b2._fill = a;
                    this.m.hz = this.b2;
                }
            }
            if (this.p != null) {
                this.p.ad(this.n);
            }
        }
        ae(a) {
            let b = typeCast(TextBlock.$, a);
            if (b != null && b.al != null) {
                return this.p.f(b) + 0;
            }
            return 0;
        }
        ct(a) {
            if (isNaN_(this.ac)) {
                this.ac = this.ad(null);
            }
            let b = this.ae(a);
            let c = this.ac;
            return new Size(1, b, c);
        }
        bq(a, b) {
            if (b != null) {
                a.ao = b;
            }
            else {
                a.ao = this.b3;
            }
        }
        bh(a, b, c) {
            a.n = b;
            a.o = c;
        }
        bg(a, b) {
        }
        bi(a, b) {
        }
        ad(a) {
            return FontUtil.getCurrentFontHeight(this.ag, a);
        }
        bo() {
            if (!this.r) {
                this.r = true;
                if (this.ag != null) {
                    this.ag.setTimeout(runOn(this, this.ar), 0);
                }
                else {
                    window.setTimeout(runOn(this, this.ar), 0);
                }
            }
        }
        ar() {
            if (this.r) {
                this.r = false;
                this.m.e9();
            }
        }
        flush() {
            if (this.r) {
                this.ar();
            }
        }
        o(a, b) {
            return FontUtil.getFontInfo(this.ag, a, b);
        }
        aw(a) {
            a.scalePath = new PathVisualData(1, "Scale", this.ci);
            a.targetValuePath = new PathVisualData(1, "TargetValue", this.cj);
            a.valuePath = new PathVisualData(1, "Value", this.ck);
            a.highlightValuePath = new PathVisualData(1, "HighlightValue", this.cg);
            a.backingPath = new PathVisualData(1, "Backing", this.cf);
            a.scaleBackgroundPath = new PathVisualData(1, "ScaleBackground", this.ch);
            let b = this.n;
            for (let c of fromEnum(this.y)) {
                if (c._visibility == 0) {
                    let d = this.o(c, b);
                    let e = new LinearGraphScaleLabelVisualData();
                    e.labelValue = c.al;
                    e.labelPosition = PointData.b({ $type: Point_$type, x: c.n, y: c.o });
                    e.labelSize = SizeData.b(this.ct(c));
                    e.appearance = AppearanceHelper.c(c, d);
                    a.scaleLabels.add(e);
                }
            }
            for (let f of fromEnum(this.z)) {
                if (f._visibility == 0) {
                    let g = new LinearGraphScaleTickmarkVisualData();
                    g.tickPath = new PathVisualData(1, "tickmarks", f);
                    a.scaleTickmarks.add(g);
                }
            }
            for (let h of fromEnum(this.x)) {
                if (h._visibility == 0) {
                    let i = new LinearGraphRangeVisualData();
                    let j = new PathVisualData(1, "range", h);
                    i.rangePath = j;
                    a.ranges.add(i);
                }
            }
        }
        bj(a) {
            a._visibility = 0;
        }
        bk(a) {
            a._visibility = 1;
        }
        bl(a) {
            this.aa.remove(a);
        }
        cs() {
            let a = new Path();
            this.aa.add(a);
            return a;
        }
        bt(a) {
            a._visibility = 0;
        }
        bu(a) {
            a._visibility = 1;
        }
        bv(a) {
            this.ab.remove(a);
        }
        b1() {
            let a = new TextBlock();
            this.ab.add(a);
            return a;
        }
        bc(a) {
            a._visibility = 0;
        }
        bd(a) {
            a._visibility = 1;
        }
        be(a) {
            this.z.remove(a);
        }
        cr() {
            let a = new Path();
            this.z.add(a);
            return a;
        }
        a1(a) {
            a._visibility = 0;
        }
        a2(a) {
            a._visibility = 1;
        }
        a3(a) {
            this.y.remove(a);
        }
        b0() {
            let a = new TextBlock();
            this.y.add(a);
            return a;
        }
        l() {
            if (this.k == null) {
                return null;
            }
            return ((() => {
                let $ret = new ToolTipInfo();
                $ret.b = this.am;
                $ret.d = this.cd;
                $ret.c = this.aq;
                $ret.a = this.k;
                return $ret;
            })());
        }
        bf() {
            this.ap = this.m.bt;
        }
    }
    XamBulletGraphView.$t = markType(XamBulletGraphView, 'XamBulletGraphView');
    XamBulletGraphView.w = new Dictionary$2(String_$type, Brush.$, 0);
    XamBulletGraphView.g = null;
    XamBulletGraphView.h = null;
    return XamBulletGraphView;
})();

/*
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.
*/

let defaultFont = "Verdana, Arial, \"Segoe UI\", \"Myriad Pro\", sans-serif";
let BulletGraphStylingDefaults = (function () {
    let BulletGraphStylingDefaults = {
        //"ui-bulletgraph-backing": {
        //    "background-color": "#ffffff",
        //    "border-color": "#ffffff"
        //},
        "ui-bulletgraph-targetvalue": {
            "background-color": "#333333",
            "border-top-color": "transparent"
        },
        "ui-bulletgraph-tick": {
            "background-color": "rgba(0, 0, 0, 0.35)",
            "border-top-color": "transparent"
        },
        "ui-bulletgraph-minortick": {
            "background-color": "rgba(0, 0, 0, 0.2)",
            "border-top-color": "transparent"
        },
        "ui-bulletgraph-label": {
            "background-color": FontDefaults.gaugesFontBrush.fill,
            "border-top-color": "transparent"
        },
        "ui-bulletgraph-range-palette-1": {
            "background-color": "#0078C8",
            "border-top-color": "transparent"
        },
        "ui-bulletgraph-range-palette-2": {
            "background-color": "#0099FF",
            "border-top-color": "transparent"
        },
        "ui-bulletgraph-range-palette-3": {
            "background-color": "#21A7FF",
            "border-top-color": "transparent"
        },
        "ui-bulletgraph-range-palette-4": {
            "background-color": "#4FB9FF",
            "border-top-color": "transparent"
        },
        "ui-bulletgraph-range-palette-5": {
            "background-color": "#79C9FF",
            "border-top-color": "transparent"
        },
        "ui-bulletgraph-value": {
            "background-color": "#333",
            "border-top-color": "transparent"
        },
        "ui-bulletgraph": {
            "font-family": FontDefaults.gaugesFontFamily,
            "font-size": FontDefaults.gaugesFontSize + "px",
            "color": FontDefaults.gaugesFontBrush.fill
        },
        "font-family": FontDefaults.gaugesFontFamily,
        "font-style": "normal",
        "font-weight": FontDefaults.gaugesFontWeight,
        "font-size": FontDefaults.gaugesFontSize + "px",
        "color": FontDefaults.gaugesFontBrush.fill,
        "font-variant": "",
        "line-height": ""
    };
    return BulletGraphStylingDefaults;
})();

/*
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.
*/
/**
 * Represents event argument for FormatLinearGraphLabel.
*/
class IgxFormatLinearGraphLabelEventArgs {
    constructor() {
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    createImplementation() {
        return new FormatLinearGraphLabelEventArgs();
    }
    get i() {
        return this._implementation;
    }
    onImplementationCreated() {
    }
    _provideImplementation(i) {
        this._implementation = i;
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    get actualMinimumValue() {
        return this.i.actualMinimumValue;
    }
    get actualMaximumValue() {
        return this.i.actualMaximumValue;
    }
    get value() {
        return this.i.value;
    }
    get label() {
        return this.i.label;
    }
    set label(value) {
        this.i.label = value;
    }
}

/*
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.
*/
/**
 * Represents event argument for AlignLinearGraphLabel.
*/
class IgxAlignLinearGraphLabelEventArgs extends IgxFormatLinearGraphLabelEventArgs {
    createImplementation() {
        return new AlignLinearGraphLabelEventArgs();
    }
    get i() {
        return this._implementation;
    }
    constructor() {
        super();
    }
    get width() {
        return this.i.width;
    }
    set width(value) {
        this.i.width = value;
    }
    get height() {
        return this.i.height;
    }
    set height(value) {
        this.i.height = value;
    }
    get offsetX() {
        return this.i.offsetX;
    }
    set offsetX(value) {
        this.i.offsetX = value;
    }
    get offsetY() {
        return this.i.offsetY;
    }
    set offsetY(value) {
        this.i.offsetY = value;
    }
}

/*
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.
*/
let IgxLinearGraphRangeComponent = /*@__PURE__*/ (() => {
    class IgxLinearGraphRangeComponent {
        constructor() {
            this._renderer = null;
            this.__p = null;
            this._hasUserValues = new Set();
            this._stylingContainer = null;
            this._stylingParent = null;
            this._inStyling = false;
            this._zoneRunner = null;
            this._implementation = this.createImplementation();
            this._implementation.externalObject = this;
            this.onImplementationCreated();
        }
        get i() {
            return this._implementation;
        }
        onImplementationCreated() {
        }
        get rangeInternal() {
            return this.i;
        }
        createImplementation() {
            return new XamLinearGraphRange();
        }
        ngOnInit() {
        }
        _provideRenderer(renderer) {
            this._renderer = renderer;
            this._zoneRunner = (act) => renderer._ngZone.run(act);
        }
        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 the name of the range.
    */
        get name() {
            return this.i.u;
        }
        set name(v) {
            this.i.u = v;
        }
        /**
         * Gets or sets the brush to use to fill the range.
        */
        get brush() {
            return brushToString(this.i.an);
        }
        set brush(v) {
            this.i.an = stringToBrush(v);
        }
        /**
         * Gets or sets the outline to use when rendering the range.
        */
        get outline() {
            return brushToString(this.i.ao);
        }
        set outline(v) {
            this.i.ao = stringToBrush(v);
        }
        /**
         * Gets or sets the value at which the range starts along the scale.
        */
        get startValue() {
            return this.i.o;
        }
        set startValue(v) {
            this.i.o = +v;
        }
        /**
         * Gets or sets the value at which the range ends along the scale.
        */
        get endValue() {
            return this.i.j;
        }
        set endValue(v) {
            this.i.j = +v;
        }
        /**
         * Gets or sets the distance measured from the front/bottom of the bullet graph (from 0 to 1) at which to start rendering the inner edge of the range.
         * Values further from zero than 1 can be used to make this extend further than the normal width/height of the bullet graph.
        */
        get innerStartExtent() {
            return this.i.l;
        }
        set innerStartExtent(v) {
            this.i.l = +v;
        }
        /**
         * Gets or sets the distance measured from the front/bottom of the bullet graph (from 0 to 1) at which to end rendering the inner edge of the range.
         * Values further from zero than 1 can be used to make this extend further than the normal width/height of the bullet graph.
        */
        get innerEndExtent() {
            return this.i.k;
        }
        set innerEndExtent(v) {
            this.i.k = +v;
        }
        /**
         * Gets or sets the distance measured from the front/bottom of the bullet graph (from 0 to 1) at which to start rendering the outer edge of the range.
         * Values further from zero than 1 can be used to make this extend further than the normal width/height of the bullet graph.
        */
        get outerStartExtent() {
            return this.i.n;
        }
        set outerStartExtent(v) {
            this.i.n = +v;
        }
        /**
         * Gets or sets the distance measured from the front/bottom of the bullet graph (from 0 to 1) at which to end rendering the outer edge of the range.
         * Values further from zero than 1 can be used to make this extend further than the normal width/height of the bullet graph.
        */
        get outerEndExtent() {
            return this.i.m;
        }
        set outerEndExtent(v) {
            this.i.m = +v;
        }
        /**
         * Gets or sets the stroke thickness to use when rendering this range's outline.
        */
        get strokeThickness() {
            return this.i.p;
        }
        set strokeThickness(v) {
            this.i.p = +v;
        }
        findByName(name) {
            if (this.findEphemera) {
                if (name && name.indexOf("@@e:") == 0) {
                    return this.findEphemera(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("LinearGraphRangeComponent");
            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;
        }
        _runInZone(act) {
            if (this._zoneRunner != null) {
                this._zoneRunner(act);
            }
            else {
                act();
            }
        }
    }
    IgxLinearGraphRangeComponent.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeComponent, deps: [], target: ɵɵFactoryTarget.Component });
    IgxLinearGraphRangeComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: IgxLinearGraphRangeComponent, selector: "igx-linear-graph-range", inputs: { name: "name", brush: "brush", outline: "outline", startValue: "startValue", endValue: "endValue", innerStartExtent: "innerStartExtent", innerEndExtent: "innerEndExtent", outerStartExtent: "outerStartExtent", outerEndExtent: "outerEndExtent", strokeThickness: "strokeThickness" }, providers: [], ngImport: i0, template: ``, isInline: true });
    return IgxLinearGraphRangeComponent;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'igx-linear-graph-range',
                    template: ``,
                    providers: []
                }]
        }], ctorParameters: function () { return []; }, propDecorators: { name: [{
                type: Input
            }], brush: [{
                type: Input
            }], outline: [{
                type: Input
            }], startValue: [{
                type: Input
            }], endValue: [{
                type: Input
            }], innerStartExtent: [{
                type: Input
            }], innerEndExtent: [{
                type: Input
            }], outerStartExtent: [{
                type: Input
            }], outerEndExtent: [{
                type: Input
            }], strokeThickness: [{
                type: Input
            }] } });

class IgxLinearGraphRangeCollection extends IgCollection {
    constructor(list) {
        super();
        if (!IgxLinearGraphRangeComponent.$type) {
            IgxLinearGraphRangeComponent.$type = markType(IgxLinearGraphRangeComponent, "IgxLinearGraphRangeComponent");
        }
        if (list) {
            for (let i = 0; i < list.length; i++) {
                this.add(list[i]);
            }
        }
    }
    _createInnerColl() {
        if (!IgxLinearGraphRangeComponent.$type) {
            IgxLinearGraphRangeComponent.$type = markType(IgxLinearGraphRangeComponent, "IgxLinearGraphRangeComponent");
        }
        let coll = new SyncableObservableCollection$2(IgxLinearGraphRangeComponent.$type, XamLinearGraphRange.$type, 0);
        coll.compare = (ext, int) => {
            let comp = ext;
            if (comp._implementation) {
                comp = comp._implementation;
            }
            if (comp.equals) {
                return comp.equals(int);
            }
            return comp === int;
        };
        coll.createTo = (ext) => {
            return ext._implementation;
        };
        coll.createFrom = (int) => {
            let ext = int.externalObject;
            if (!ext) {
                ext = IgxLinearGraphRangeComponent._createFromInternal(int);
                if (ext) {
                    if (!int.$type && ext._implementation.setNativeElement) {
                        ext._implementation.setNativeElement(int);
                    }
                    else {
                        ext._implementation = int;
                    }
                }
            }
            return ext;
        };
        return coll;
    }
}

/*
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.
*/
/**
 * Represents a bullet graph.
*/
let IgxBulletGraphComponent = /*@__PURE__*/ (() => {
    class IgxBulletGraphComponent {
        constructor(_renderer, _elRef, _ngZone, _componentFactoryResolver, _injector) {
            //super();
            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._tooltipTemplate = null;
            this._tooltipContent = null;
            this._defaultTooltips = null;
            this._zoneRunner = null;
            this.__p = null;
            this._hasUserValues = new Set();
            this._stylingContainer = null;
            this._stylingParent = null;
            this._inStyling = false;
            this._formatLabel = null;
            this._alignLabel = null;
            this._actualMinimumValueChange = null;
            this._actualMaximumValueChange = null;
            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;
            }
            this._root = root;
            var ren = new AngularRenderer(root, this._renderer, window.document, this._ngZone, true, BulletGraphStylingDefaults);
            this._wrapper = ren;
            var gauge = this.i;
            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); });
            this._gauge = gauge;
            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 IgxLinearGraphRangeCollection();
                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._wrapper.rootWrapper.unlistenAll();
            this._gauge.destroy();
            this._wrapper.destroy();
        }
        createImplementation() {
            return new XamBulletGraph();
        }
        ngAfterContentInit() {
            if (TypeRegistrar.isRegistered("IgxSimpleDefaultTooltipComponent")) {
                let c = TypeRegistrar.get("IgxSimpleDefaultTooltipComponent");
                let cf = this._componentFactoryResolver.resolveComponentFactory(c);
                let cr = this._dynamicContent.createComponent(cf);
                this._defaultTooltips = cr;
                cr.instance.onContentReady.subscribe(() => {
                    this._onDefaultTooltipsReady(cr);
                });
                this._ensureTooltipCreated();
            }
            this._rangesAdapter.updateQuery(this.contentRanges);
        }
        ngAfterViewInit() {
            this.updateStyle();
            this.i.containerResized();
        }
        updateStyle() {
            this._styling(this._root, 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);
                }
            }
        }
        set tooltipTemplate(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 {
                this._ensureTooltipCreated();
            }
        }
        get tooltipTemplate() {
            return this._tooltipTemplate;
        }
        _ensureTooltipCreated() {
            if (this.i.toolTip == null) {
                let tooltip = this.createTooltip();
                if (tooltip == null) {
                    return;
                }
                this._tooltipContent = tooltip;
                tooltip.instance.template = this._tooltipTemplate;
                this.i.toolTip = this.createWrapper(tooltip.location.nativeElement);
            }
        }
        createWrapper(ele) {
            let wrapper = new AngularWrapper(ele, this._renderer, this._ngZone);
            wrapper.updateToolTip = ele.updateToolTip;
            wrapper.hideToolTip = ele.hideToolTip;
            return wrapper;
        }
        _ensureDefaultTooltip() {
            if (this._defaultTooltips == null) {
                return;
            }
            this._defaultTooltips.instance["ensureDefaultTooltip"](this);
        }
        _onDefaultTooltipsReady(cr) {
            this._ensureDefaultTooltip();
        }
        createTooltip() {
            if (!TypeRegistrar.isRegistered("IgxTooltipContainerComponent")) {
                return null;
            }
            let t = TypeRegistrar.get("IgxTooltipContainerComponent");
            let cf = this._componentFactoryResolver.resolveComponentFactory(t);
            let cr = this._dynamicContent.createComponent(cf);
            let ele = cr.location.nativeElement;
            let self = this;
            ele.updateToolTip = function (c) {
                if (c.externalObject) {
                    c = c.externalObject;
                }
                else {
                    let ext = new IgxDataContext();
                    ext._implementation = c;
                    c = ext;
                }
                if (ele.parentElement != self._container) {
                    if (ele.parentElement != null) {
                        ele.parentElement.removeChild(ele);
                    }
                    self._container.appendChild(ele);
                }
                cr.instance.context = c;
                ele.style.display = "block";
                return true;
            };
            ele.hideToolTip = function () {
                ele.style.display = "none";
            };
            ele.style.display = "none";
            return cr;
        }
        _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 a value indicating whether the bullet graph is currently animating.
    */
        get animating() {
            return this.i.a7;
        }
        /**
         * Gets the transition progress of the animation when the control is animating.
        */
        get transitionProgress() {
            return this.i.cz;
        }
        set transitionProgress(v) {
            this.i.cz = +v;
        }
        /**
         * Gets or sets the orientation of the scale.
        */
        get orientation() {
            return this.i.as;
        }
        set orientation(v) {
            this.i.as = ensureEnum(LinearScaleOrientation_$type, v);
        }
        /**
         * Gets or sets the background brush for the scale.
        */
        get scaleBackgroundBrush() {
            return brushToString(this.i.h2);
        }
        set scaleBackgroundBrush(v) {
            this.i.h2 = stringToBrush(v);
        }
        /**
         * Gets or sets the background outline for the scale.
        */
        get scaleBackgroundOutline() {
            return brushToString(this.i.h3);
        }
        set scaleBackgroundOutline(v) {
            this.i.h3 = stringToBrush(v);
        }
        /**
         * Gets or sets the background outline thickness for the scale.
        */
        get scaleBackgroundThickness() {
            return this.i.ch;
        }
        set scaleBackgroundThickness(v) {
            this.i.ch = +v;
        }
        /**
         * Gets or sets a collection of brushes to be used as the palette for bullet graph ranges.
        */
        get rangeBrushes() {
            return fromBrushCollection(this.i.ah);
        }
        set rangeBrushes(v) {
            this.i.ah = toBrushCollection(v);
        }
        /**
         * Gets or sets a collection of brushes to be used as the palette for bullet graph outlines.
        */
        get rangeOutlines() {
            return fromBrushCollection(this.i.ai);
        }
        set rangeOutlines(v) {
            this.i.ai = toBrushCollection(v);
        }
        /**
         * Gets or sets the minimum value of the scale.
        */
        get minimumValue() {
            return this.i.b7;
        }
        set minimumValue(v) {
            this.i.b7 = +v;
        }
        /**
         * Gets the resolved minimum value of the scale.
        */
        get actualMinimumValue() {
            return this.i.bs;
        }
        set actualMinimumValue(v) {
            this.i.bs = +v;
        }
        /**
         * Gets or sets the maximum value of the scale.
        */
        get maximumValue() {
            return this.i.b6;
        }
        set maximumValue(v) {
            this.i.b6 = +v;
        }
        /**
         * Gets the resolved maximum value of the scale.
        */
        get actualMaximumValue() {
            return this.i.br;
        }
        set actualMaximumValue(v) {
            this.i.br = +v;
        }
        /**
         * Gets or sets the value indicated by the target value bar.
        */
        get targetValue() {
            return this.i.cn;
        }
        set targetValue(v) {
            this.i.cn = +v;
        }
        /**
         * Gets or sets the name used for the target value. The name is displayed in the default target value tooltip.
        */
        get targetValueName() {
            return this.i.el;
        }
        set targetValueName(v) {
            this.i.el = v;
        }
        /**
         * Gets or sets the value at which the bar ends.
        */
        get value() {
            return this.i.c0;
        }
        set value(v) {
            this.i.c0 = +v;
        }
        /**
         * Gets or sets the name used for actual value.
        */
        get valueName() {
            return this.i.e2;
        }
        set valueName(v) {
            this.i.e2 = v;
        }
        /**
         * Gets or sets the highlight value at which to point the secondary needle of the gauge.
        */
        get highlightValue() {
            return this.i.bz;
        }
        set highlightValue(v) {
            this.i.bz = +v;
        }
        /**
         * Gets the actual opacity of the primary needle while highlighting
        */
        get actualHighlightValueOpacity() {
            return this.i.bq;
        }
        set actualHighlightValueOpacity(v) {
            this.i.bq = +v;
        }
        /**
         * Gets or sets the opacity of the primary needle while highlighting
        */
        get highlightValueOpacity() {
            return this.i.b0;
        }
        set highlightValueOpacity(v) {
            this.i.b0 = +v;
        }
        /**
         * Gets whether and how to display the highlighted value.
        */
        get actualHighlightValueDisplayMode() {
            return this.i.az;
        }
        set actualHighlightValueDisplayMode(v) {
            this.i.az = ensureEnum(HighlightedValueDisplayMode_$type, v);
        }
        /**
         * Gets or sets whether and how to display the highlighted value.
        */
        get highlightValueDisplayMode() {
            return this.i.a0;
        }
        set highlightValueDisplayMode(v) {
            this.i.a0 = ensureEnum(HighlightedValueDisplayMode_$type, v);
        }
        /**
         * Gets or sets the position at which to start rendering the ranges, measured from the front/bottom of the control as a value from 0 to 1.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get rangeInnerExtent() {
            return this.i.cf;
        }
        set rangeInnerExtent(v) {
            this.i.cf = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the range as a value from 0 to 1 measured from the front/bottom of the bullet graph.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get rangeOuterExtent() {
            return this.i.cg;
        }
        set rangeOuterExtent(v) {
            this.i.cg = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the actual value geometries, measured from the front/bottom of the bullet graph as a value from 0 to 1.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get valueInnerExtent() {
            return this.i.c1;
        }
        set valueInnerExtent(v) {
            this.i.c1 = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the actual value geometries as a value from 0 to 1 measured from the front/bottom of the bullet graph.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get valueOuterExtent() {
            return this.i.c2;
        }
        set valueOuterExtent(v) {
            this.i.c2 = +v;
        }
        /**
         * Gets or sets the interval to use for the scale.
        */
        get interval() {
            return this.i.b1;
        }
        set interval(v) {
            this.i.b1 = +v;
        }
        /**
         * A value to start adding tickmarks, added to the scale's MinimumValue.
        */
        get ticksPostInitial() {
            return this.i.cu;
        }
        set ticksPostInitial(v) {
            this.i.cu = +v;
        }
        /**
         * A value to stop adding tickmarks, subtracted from the scale's MaximumValue.
        */
        get ticksPreTerminal() {
            return this.i.cv;
        }
        set ticksPreTerminal(v) {
            this.i.cv = +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.b3;
        }
        set labelInterval(v) {
            this.i.b3 = +v;
        }
        /**
         * Gets or sets the position at which to put the labels as a value from 0 to 1, measured from the bottom of the scale.
         * Values further from zero than 1 can be used to hide the labels of the bullet graph.
        */
        get labelExtent() {
            return this.i.b2;
        }
        set labelExtent(v) {
            this.i.b2 = +v;
        }
        /**
         * A value to start adding labels, added to the scale's MinimumValue.
        */
        get labelsPostInitial() {
            return this.i.b4;
        }
        set labelsPostInitial(v) {
            this.i.b4 = +v;
        }
        /**
         * A value to stop adding labels, subtracted from the scale's MaximumValue.
        */
        get labelsPreTerminal() {
            return this.i.b5;
        }
        set labelsPreTerminal(v) {
            this.i.b5 = +v;
        }
        /**
         * Gets or sets the number of minor tickmarks to place between major tickmarks.
        */
        get minorTickCount() {
            return this.i.b8;
        }
        set minorTickCount(v) {
            this.i.b8 = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the major tickmarks as a value from 0 to 1, measured from the front/bottom of the bullet graph.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get tickStartExtent() {
            return this.i.cw;
        }
        set tickStartExtent(v) {
            this.i.cw = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the major tickmarks as a value from 0 to 1, measured from the front/bottom of the bullet graph.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get tickEndExtent() {
            return this.i.cs;
        }
        set tickEndExtent(v) {
            this.i.cs = +v;
        }
        /**
         * Gets or sets the stroke thickness to use when rendering ticks.
        */
        get tickStrokeThickness() {
            return this.i.cy;
        }
        set tickStrokeThickness(v) {
            this.i.cy = +v;
        }
        /**
         * Gets or sets the brush to use for the major tickmarks.
        */
        get tickBrush() {
            return brushToString(this.i.h6);
        }
        set tickBrush(v) {
            this.i.h6 = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the label font.
        */
        get fontBrush() {
            return brushToString(this.i.hz);
        }
        set fontBrush(v) {
            this.i.hz = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the actual value element.
        */
        get valueBrush() {
            return brushToString(this.i.h7);
        }
        set valueBrush(v) {
            this.i.h7 = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the outline of actual value element.
        */
        get valueOutline() {
            return brushToString(this.i.h8);
        }
        set valueOutline(v) {
            this.i.h8 = stringToBrush(v);
        }
        /**
         * Gets or sets the stroke thickness to use when rendering single actual value element.
        */
        get valueStrokeThickness() {
            return this.i.c3;
        }
        set valueStrokeThickness(v) {
            this.i.c3 = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the minor tickmarks as a value from 0 to 1, measured from the front/bottom of the bullet graph.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get minorTickStartExtent() {
            return this.i.cb;
        }
        set minorTickStartExtent(v) {
            this.i.cb = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the minor tickmarks as a value from 0 to 1, measured from the front/bottom of the bullet graph.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get minorTickEndExtent() {
            return this.i.b9;
        }
        set minorTickEndExtent(v) {
            this.i.b9 = +v;
        }
        /**
         * Gets or sets the stroke thickness to use when rendering minor ticks.
        */
        get minorTickStrokeThickness() {
            return this.i.cd;
        }
        set minorTickStrokeThickness(v) {
            this.i.cd = +v;
        }
        /**
         * Gets or sets the brush to use for the minor tickmarks.
        */
        get minorTickBrush() {
            return brushToString(this.i.h1);
        }
        set minorTickBrush(v) {
            this.i.h1 = stringToBrush(v);
        }
        /**
         * Gets or sets a value indicating whether the scale is inverted.
         * When the scale is inverted the direction in which the scale values increase is right to left.
        */
        get isScaleInverted() {
            return this.i.a9;
        }
        set isScaleInverted(v) {
            this.i.a9 = ensureBool(v);
        }
        /**
         * Gets or sets the brush to use to fill the backing of the bullet graph.
        */
        get backingBrush() {
            return brushToString(this.i.hx);
        }
        set backingBrush(v) {
            this.i.hx = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the outline of the backing.
        */
        get backingOutline() {
            return brushToString(this.i.hy);
        }
        set backingOutline(v) {
            this.i.hy = stringToBrush(v);
        }
        /**
         * Gets or sets the stroke thickness of the backing outline.
        */
        get backingStrokeThickness() {
            return this.i.bw;
        }
        set backingStrokeThickness(v) {
            this.i.bw = +v;
        }
        /**
         * Gets or sets the inner extent of the bullet graph backing.
        */
        get backingInnerExtent() {
            return this.i.bu;
        }
        set backingInnerExtent(v) {
            this.i.bu = +v;
        }
        /**
         * Gets or sets the outer extent of the bullet graph backing.
        */
        get backingOuterExtent() {
            return this.i.bv;
        }
        set backingOuterExtent(v) {
            this.i.bv = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the scale, measured from the front/bottom of the bullet graph as a value from 0 to 1.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get scaleStartExtent() {
            return this.i.cm;
        }
        set scaleStartExtent(v) {
            this.i.cm = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the scale as a value from 0 to 1, measured from the front/bottom of the bullet graph.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get scaleEndExtent() {
            return this.i.cj;
        }
        set scaleEndExtent(v) {
            this.i.cj = +v;
        }
        /**
         * Gets or sets the brush to use when rendering the fill of the comparative marker.
        */
        get targetValueBrush() {
            return brushToString(this.i.h4);
        }
        set targetValueBrush(v) {
            this.i.h4 = stringToBrush(v);
        }
        /**
         * Get or sets the breadth of the target value element.
        */
        get targetValueBreadth() {
            return this.i.co;
        }
        set targetValueBreadth(v) {
            this.i.co = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the target value, measured from the front/bottom of the control as a value from 0 to 1.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get targetValueInnerExtent() {
            return this.i.cp;
        }
        set targetValueInnerExtent(v) {
            this.i.cp = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the target value, measured from the front/bottom of the control as a value from 0 to 1.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the bullet graph.
        */
        get targetValueOuterExtent() {
            return this.i.cq;
        }
        set targetValueOuterExtent(v) {
            this.i.cq = +v;
        }
        /**
         * Gets or sets the brush to use when rendering the outline of the target value.
        */
        get targetValueOutline() {
            return brushToString(this.i.h5);
        }
        set targetValueOutline(v) {
            this.i.h5 = stringToBrush(v);
        }
        /**
         * Gets or sets the stroke thickness of the outline of the target value bar.
        */
        get targetValueStrokeThickness() {
            return this.i.cr;
        }
        set targetValueStrokeThickness(v) {
            this.i.cr = +v;
        }
        /**
         * Gets or sets whether the scale viewport will be merged with backing viewport.
        */
        get mergeViewports() {
            return this.i.bb;
        }
        set mergeViewports(v) {
            this.i.bb = ensureBool(v);
        }
        /**
         * Gets or sets the label composite format used when creating label values.
        */
        get labelFormat() {
            return this.i.dr;
        }
        set labelFormat(v) {
            this.i.dr = v;
        }
        /**
         * Gets or sets the format specifiers to use with the LabelFormat string.
        */
        get labelFormatSpecifiers() {
            return this.i.ag;
        }
        set labelFormatSpecifiers(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 number of milliseconds over which changes to the bullet graph should be animated.
        */
        get transitionDuration() {
            return this.i.c7;
        }
        set transitionDuration(v) {
            this.i.c7 = +v;
        }
        /**
         * Gets or sets the time in milliseconds that tooltip appearance is delayed with.
        */
        get showToolTipTimeout() {
            return this.i.c6;
        }
        set showToolTipTimeout(v) {
            this.i.c6 = +v;
        }
        /**
         * Gets or sets a value indicating whether tooltips are enabled.
        */
        get showToolTip() {
            return this.i.bd;
        }
        set showToolTip(v) {
            this.i.bd = ensureBool(v);
        }
        /**
         * Gets or sets the font.
        */
        get font() {
            return this.i.dh;
        }
        set font(v) {
            this.i.dh = 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.ce;
        }
        set pixelScalingRatio(v) {
            this.i.ce = +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.bt;
        }
        set actualPixelScalingRatio(v) {
            this.i.bt = +v;
        }
        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);
            }
            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("BulletGraphComponent");
            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;
        }
        /**
     * Gets the value for the main scale of the bullet graph for a given point within the bounds of the bullet graph.
    
    * @param point  * The point for which to retrieve the associated value.
    */
        getValueForPoint(point) {
            let iv = this.i.by(toPoint(point));
            return (iv);
        }
        /**
         * Returns visuals as a serialized string.
        
        */
        exportSerializedVisualData() {
            let iv = this.i.dg();
            return (iv);
        }
        /**
         * Provide a container for the bullet graph.
        
        * @param container  * The container.
        */
        provideContainer(container) {
            this.i.provideContainer(container);
        }
        /**
         * Notify that the container has resized.
        
        */
        containerResized() {
            this.i.containerResized();
        }
        /**
         * Notify that the bullet graph styling has updated.
        
        */
        styleUpdated() {
            this.i.f5();
        }
        /**
         * Use to force the bullet graph to finish any deferred work before printing or evaluating its visual.
         * This should only be called if the visual of the bullet graph needs to be synchronously saved or evaluated.
         * Calling this method too often will hinder the performance of the bullet graph.
        
        */
        flush() {
            this.i.fc();
        }
        /**
         * Event which is raised when a label of the bullet graph is formatted.
         * Function takes first argument evt and second argument ui.
         * Use ui.owner to obtain reference to the bullet graph widget.
         * Use ui.actualMinimumValue to obtain the minimum value of the bullet graph scale.
         * Use ui.actualMaximumValue to obtain the maximum value of the bullet graph scale.
         * Use ui.value to obtain the value on the the bullet graph 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 IgxFormatLinearGraphLabelEventArgs();
                        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 bullet graph is aligned along the scale.
         * Function takes first argument evt and second argument ui.
         * Use ui.owner to obtain reference to gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of the bullet graph scale.
         * Use ui.actualMaximumValue to obtain the maximum value of the bullet graph scale.
         * Use ui.value to obtain the value on the the bullet graph 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 bullet graph scale.
         * Use ui.offsetY to obtain the Y offset of the label on the bullet graph 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 IgxAlignLinearGraphLabelEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeAlignLabel) {
                            this.beforeAlignLabel(this, outerArgs);
                        }
                        this._alignLabel.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._alignLabel;
        }
        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;
        }
    }
    IgxBulletGraphComponent.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphComponent, deps: [{ token: Renderer2 }, { token: ViewContainerRef }, { token: NgZone }, { token: ComponentFactoryResolver }, { token: Injector }], target: ɵɵFactoryTarget.Component });
    IgxBulletGraphComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: IgxBulletGraphComponent, selector: "igx-bullet-graph", inputs: { height: "height", width: "width", tooltipTemplate: "tooltipTemplate", transitionProgress: "transitionProgress", orientation: "orientation", scaleBackgroundBrush: "scaleBackgroundBrush", scaleBackgroundOutline: "scaleBackgroundOutline", scaleBackgroundThickness: "scaleBackgroundThickness", rangeBrushes: "rangeBrushes", rangeOutlines: "rangeOutlines", minimumValue: "minimumValue", actualMinimumValue: "actualMinimumValue", maximumValue: "maximumValue", actualMaximumValue: "actualMaximumValue", targetValue: "targetValue", targetValueName: "targetValueName", value: "value", valueName: "valueName", highlightValue: "highlightValue", actualHighlightValueOpacity: "actualHighlightValueOpacity", highlightValueOpacity: "highlightValueOpacity", actualHighlightValueDisplayMode: "actualHighlightValueDisplayMode", highlightValueDisplayMode: "highlightValueDisplayMode", rangeInnerExtent: "rangeInnerExtent", rangeOuterExtent: "rangeOuterExtent", valueInnerExtent: "valueInnerExtent", valueOuterExtent: "valueOuterExtent", interval: "interval", ticksPostInitial: "ticksPostInitial", ticksPreTerminal: "ticksPreTerminal", labelInterval: "labelInterval", labelExtent: "labelExtent", labelsPostInitial: "labelsPostInitial", labelsPreTerminal: "labelsPreTerminal", minorTickCount: "minorTickCount", tickStartExtent: "tickStartExtent", tickEndExtent: "tickEndExtent", tickStrokeThickness: "tickStrokeThickness", tickBrush: "tickBrush", fontBrush: "fontBrush", valueBrush: "valueBrush", valueOutline: "valueOutline", valueStrokeThickness: "valueStrokeThickness", minorTickStartExtent: "minorTickStartExtent", minorTickEndExtent: "minorTickEndExtent", minorTickStrokeThickness: "minorTickStrokeThickness", minorTickBrush: "minorTickBrush", isScaleInverted: "isScaleInverted", backingBrush: "backingBrush", backingOutline: "backingOutline", backingStrokeThickness: "backingStrokeThickness", backingInnerExtent: "backingInnerExtent", backingOuterExtent: "backingOuterExtent", scaleStartExtent: "scaleStartExtent", scaleEndExtent: "scaleEndExtent", targetValueBrush: "targetValueBrush", targetValueBreadth: "targetValueBreadth", targetValueInnerExtent: "targetValueInnerExtent", targetValueOuterExtent: "targetValueOuterExtent", targetValueOutline: "targetValueOutline", targetValueStrokeThickness: "targetValueStrokeThickness", mergeViewports: "mergeViewports", labelFormat: "labelFormat", labelFormatSpecifiers: "labelFormatSpecifiers", transitionDuration: "transitionDuration", showToolTipTimeout: "showToolTipTimeout", showToolTip: "showToolTip", font: "font", pixelScalingRatio: "pixelScalingRatio", actualPixelScalingRatio: "actualPixelScalingRatio" }, outputs: { formatLabel: "formatLabel", alignLabel: "alignLabel", actualMinimumValueChange: "actualMinimumValueChange", actualMaximumValueChange: "actualMaximumValueChange" }, host: { classAttribute: "igx-bullet-graph ig-bullet-graph" }, providers: [], queries: [{ propertyName: "contentRanges", predicate: IgxLinearGraphRangeComponent }], 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: ChangeDetectionStrategy.OnPush });
    return IgxBulletGraphComponent;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'igx-bullet-graph',
                    template: `<ng-container #dynamicContent></ng-container>`,
                    changeDetection: ChangeDetectionStrategy.OnPush,
                    providers: [],
                    host: { 'class': 'igx-bullet-graph ig-bullet-graph' },
                    styles: [`
		:host {
			display: block;
		}
	`]
                }]
        }], ctorParameters: function () { return [{ type: Renderer2 }, { type: ViewContainerRef }, { type: NgZone }, { type: ComponentFactoryResolver }, { type: Injector }]; }, propDecorators: { _dynamicContent: [{
                type: ViewChild,
                args: ["dynamicContent", { read: ViewContainerRef, static: true }]
            }], height: [{
                type: Input
            }], width: [{
                type: Input
            }], contentRanges: [{
                type: ContentChildren,
                args: [IgxLinearGraphRangeComponent]
            }], tooltipTemplate: [{
                type: Input
            }], transitionProgress: [{
                type: Input
            }], orientation: [{
                type: Input
            }], scaleBackgroundBrush: [{
                type: Input
            }], scaleBackgroundOutline: [{
                type: Input
            }], scaleBackgroundThickness: [{
                type: Input
            }], rangeBrushes: [{
                type: Input
            }], rangeOutlines: [{
                type: Input
            }], minimumValue: [{
                type: Input
            }], actualMinimumValue: [{
                type: Input
            }], maximumValue: [{
                type: Input
            }], actualMaximumValue: [{
                type: Input
            }], targetValue: [{
                type: Input
            }], targetValueName: [{
                type: Input
            }], value: [{
                type: Input
            }], valueName: [{
                type: Input
            }], highlightValue: [{
                type: Input
            }], actualHighlightValueOpacity: [{
                type: Input
            }], highlightValueOpacity: [{
                type: Input
            }], actualHighlightValueDisplayMode: [{
                type: Input
            }], highlightValueDisplayMode: [{
                type: Input
            }], rangeInnerExtent: [{
                type: Input
            }], rangeOuterExtent: [{
                type: Input
            }], valueInnerExtent: [{
                type: Input
            }], valueOuterExtent: [{
                type: Input
            }], interval: [{
                type: Input
            }], ticksPostInitial: [{
                type: Input
            }], ticksPreTerminal: [{
                type: Input
            }], labelInterval: [{
                type: Input
            }], labelExtent: [{
                type: Input
            }], labelsPostInitial: [{
                type: Input
            }], labelsPreTerminal: [{
                type: Input
            }], minorTickCount: [{
                type: Input
            }], tickStartExtent: [{
                type: Input
            }], tickEndExtent: [{
                type: Input
            }], tickStrokeThickness: [{
                type: Input
            }], tickBrush: [{
                type: Input
            }], fontBrush: [{
                type: Input
            }], valueBrush: [{
                type: Input
            }], valueOutline: [{
                type: Input
            }], valueStrokeThickness: [{
                type: Input
            }], minorTickStartExtent: [{
                type: Input
            }], minorTickEndExtent: [{
                type: Input
            }], minorTickStrokeThickness: [{
                type: Input
            }], minorTickBrush: [{
                type: Input
            }], isScaleInverted: [{
                type: Input
            }], backingBrush: [{
                type: Input
            }], backingOutline: [{
                type: Input
            }], backingStrokeThickness: [{
                type: Input
            }], backingInnerExtent: [{
                type: Input
            }], backingOuterExtent: [{
                type: Input
            }], scaleStartExtent: [{
                type: Input
            }], scaleEndExtent: [{
                type: Input
            }], targetValueBrush: [{
                type: Input
            }], targetValueBreadth: [{
                type: Input
            }], targetValueInnerExtent: [{
                type: Input
            }], targetValueOuterExtent: [{
                type: Input
            }], targetValueOutline: [{
                type: Input
            }], targetValueStrokeThickness: [{
                type: Input
            }], mergeViewports: [{
                type: Input
            }], labelFormat: [{
                type: Input
            }], labelFormatSpecifiers: [{
                type: Input
            }], transitionDuration: [{
                type: Input
            }], showToolTipTimeout: [{
                type: Input
            }], showToolTip: [{
                type: Input
            }], font: [{
                type: Input
            }], pixelScalingRatio: [{
                type: Input
            }], actualPixelScalingRatio: [{
                type: Input
            }], formatLabel: [{
                type: Output
            }], alignLabel: [{
                type: Output
            }], actualMinimumValueChange: [{
                type: Output
            }], actualMaximumValueChange: [{
                type: Output
            }] } });

/*
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.
*/
let IgxLinearGraphRangeModule = /*@__PURE__*/ (() => {
    class IgxLinearGraphRangeModule {
        constructor() {
        }
    }
    IgxLinearGraphRangeModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxLinearGraphRangeModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeModule, declarations: [IgxLinearGraphRangeComponent], imports: [CommonModule], exports: [IgxLinearGraphRangeComponent] });
    IgxLinearGraphRangeModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeModule, imports: [[CommonModule,
            ]] });
    return IgxLinearGraphRangeModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [IgxLinearGraphRangeComponent],
                    exports: [IgxLinearGraphRangeComponent
                    ],
                    imports: [CommonModule,
                    ],
                    entryComponents: []
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxLinearGraphRangeDynamicModule = /*@__PURE__*/ (() => {
    class IgxLinearGraphRangeDynamicModule {
        constructor() {
            TypeRegistrar.registerCons('IgxLinearGraphRangeComponent', IgxLinearGraphRangeComponent);
        }
    }
    IgxLinearGraphRangeDynamicModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeDynamicModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxLinearGraphRangeDynamicModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeDynamicModule, imports: [CommonModule, IgxLinearGraphRangeModule], exports: [IgxLinearGraphRangeModule] });
    IgxLinearGraphRangeDynamicModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeDynamicModule, imports: [[CommonModule, IgxLinearGraphRangeModule
            ], IgxLinearGraphRangeModule] });
    return IgxLinearGraphRangeDynamicModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGraphRangeDynamicModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxLinearGraphRangeModule
                    ],
                    imports: [CommonModule, IgxLinearGraphRangeModule
                    ],
                    entryComponents: [IgxLinearGraphRangeComponent]
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxBulletGraphCoreModule = /*@__PURE__*/ (() => {
    class IgxBulletGraphCoreModule {
        constructor() {
        }
    }
    IgxBulletGraphCoreModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphCoreModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxBulletGraphCoreModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphCoreModule, declarations: [IgxBulletGraphComponent], imports: [CommonModule, IgxLinearGraphRangeModule,
            IgxNumberFormatSpecifierModule], exports: [IgxBulletGraphComponent,
            IgxLinearGraphRangeModule,
            IgxNumberFormatSpecifierModule] });
    IgxBulletGraphCoreModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphCoreModule, imports: [[CommonModule, IgxLinearGraphRangeModule,
                IgxNumberFormatSpecifierModule
            ], IgxLinearGraphRangeModule,
            IgxNumberFormatSpecifierModule] });
    return IgxBulletGraphCoreModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphCoreModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [IgxBulletGraphComponent],
                    exports: [IgxBulletGraphComponent,
                        IgxLinearGraphRangeModule,
                        IgxNumberFormatSpecifierModule
                    ],
                    imports: [CommonModule, IgxLinearGraphRangeModule,
                        IgxNumberFormatSpecifierModule
                    ],
                    entryComponents: []
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxBulletGraphCoreDynamicModule = /*@__PURE__*/ (() => {
    class IgxBulletGraphCoreDynamicModule {
        constructor() {
            TypeRegistrar.registerCons('IgxBulletGraphComponent', IgxBulletGraphComponent);
        }
    }
    IgxBulletGraphCoreDynamicModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphCoreDynamicModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxBulletGraphCoreDynamicModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphCoreDynamicModule, imports: [CommonModule, IgxLinearGraphRangeDynamicModule,
            IgxNumberFormatSpecifierDynamicModule,
            IgxBulletGraphCoreModule], exports: [IgxLinearGraphRangeDynamicModule,
            IgxNumberFormatSpecifierDynamicModule,
            IgxBulletGraphCoreModule] });
    IgxBulletGraphCoreDynamicModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphCoreDynamicModule, imports: [[CommonModule, IgxLinearGraphRangeDynamicModule,
                IgxNumberFormatSpecifierDynamicModule,
                IgxBulletGraphCoreModule
            ], IgxLinearGraphRangeDynamicModule,
            IgxNumberFormatSpecifierDynamicModule,
            IgxBulletGraphCoreModule] });
    return IgxBulletGraphCoreDynamicModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphCoreDynamicModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxLinearGraphRangeDynamicModule,
                        IgxNumberFormatSpecifierDynamicModule,
                        IgxBulletGraphCoreModule
                    ],
                    imports: [CommonModule, IgxLinearGraphRangeDynamicModule,
                        IgxNumberFormatSpecifierDynamicModule,
                        IgxBulletGraphCoreModule
                    ],
                    entryComponents: [IgxBulletGraphComponent]
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxBulletGraphModule = /*@__PURE__*/ (() => {
    class IgxBulletGraphModule {
    }
    IgxBulletGraphModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxBulletGraphModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphModule, imports: [CommonModule, IgxBulletGraphCoreModule,
            IgxDVInteractivityModule], exports: [IgxBulletGraphCoreModule,
            IgxDVInteractivityModule] });
    IgxBulletGraphModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphModule, imports: [[CommonModule, IgxBulletGraphCoreModule,
                IgxDVInteractivityModule
            ], IgxBulletGraphCoreModule,
            IgxDVInteractivityModule] });
    return IgxBulletGraphModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxBulletGraphCoreModule,
                        IgxDVInteractivityModule
                    ],
                    imports: [CommonModule, IgxBulletGraphCoreModule,
                        IgxDVInteractivityModule
                    ],
                    entryComponents: []
                }]
        }] });

/*
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.
*/
let IgxBulletGraphDynamicModule = /*@__PURE__*/ (() => {
    class IgxBulletGraphDynamicModule {
    }
    IgxBulletGraphDynamicModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphDynamicModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxBulletGraphDynamicModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphDynamicModule, imports: [CommonModule, IgxBulletGraphCoreDynamicModule,
            IgxDVInteractivityDynamicModule,
            IgxBulletGraphModule], exports: [IgxBulletGraphCoreDynamicModule,
            IgxDVInteractivityDynamicModule,
            IgxBulletGraphModule] });
    IgxBulletGraphDynamicModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphDynamicModule, imports: [[CommonModule, IgxBulletGraphCoreDynamicModule,
                IgxDVInteractivityDynamicModule,
                IgxBulletGraphModule
            ], IgxBulletGraphCoreDynamicModule,
            IgxDVInteractivityDynamicModule,
            IgxBulletGraphModule] });
    return IgxBulletGraphDynamicModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxBulletGraphDynamicModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxBulletGraphCoreDynamicModule,
                        IgxDVInteractivityDynamicModule,
                        IgxBulletGraphModule
                    ],
                    imports: [CommonModule, IgxBulletGraphCoreDynamicModule,
                        IgxDVInteractivityDynamicModule,
                        IgxBulletGraphModule
                    ],
                    entryComponents: []
                }]
        }] });

/*
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.
*/

/*
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.
*/
/**
 * Enumeration of preset needle shapes.
 */
var LinearGraphNeedleShape = /*@__PURE__*/ (function (LinearGraphNeedleShape) {
    /**
     * A custom user defined needle shape.
     */
    LinearGraphNeedleShape[LinearGraphNeedleShape["Custom"] = 0] = "Custom";
    /**
     * A needle shaped like a rectangle.
     */
    LinearGraphNeedleShape[LinearGraphNeedleShape["Rectangle"] = 1] = "Rectangle";
    /**
     * A needle shaped like a triangle.
     */
    LinearGraphNeedleShape[LinearGraphNeedleShape["Triangle"] = 2] = "Triangle";
    /**
     * A needle shaped like a needle.
     */
    LinearGraphNeedleShape[LinearGraphNeedleShape["Needle"] = 3] = "Needle";
    /**
     * A needle shaped like a trapezoid.
     */
    LinearGraphNeedleShape[LinearGraphNeedleShape["Trapezoid"] = 4] = "Trapezoid";
    return LinearGraphNeedleShape;
})({});
/**
 * @hidden
 */
let LinearGraphNeedleShape_$type = markEnum('LinearGraphNeedleShape', 'Custom,0|Rectangle,1|Triangle,2|Needle,3|Trapezoid,4');

/*
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.
*/
/**
 * Enum specifying the position of the titles relative to scale's start/end.
 */
var TitlesPosition = /*@__PURE__*/ (function (TitlesPosition) {
    /**
     * The titles are placed at scale's start (minimum value).
     */
    TitlesPosition[TitlesPosition["ScaleStart"] = 0] = "ScaleStart";
    /**
     * The titles are placed at the scale's end (maximum value).
     */
    TitlesPosition[TitlesPosition["ScaleEnd"] = 1] = "ScaleEnd";
    return TitlesPosition;
})({});
/**
 * @hidden
 */
let TitlesPosition_$type = markEnum('TitlesPosition', 'ScaleStart,0|ScaleEnd,1');

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphNeedlePreparer = /*@__PURE__*/ (() => {
    class LinearGraphNeedlePreparer extends Base {
        constructor() {
            super(...arguments);
            this.b = null;
        }
        c(a) {
            this.d(a);
        }
        d(a) {
            this.f(a);
            let b = this.a();
            a.n = b.u;
            a.m = b.q;
            a.q = 0;
            if (!isNaN_(b.t)) {
                a.q = Math.max(a.q, b.t);
            }
            if (!isNaN_(b.p)) {
                a.q = Math.max(a.q, b.p);
            }
            let c = 7;
            let d = new Array(c);
            let e = new Array(c + 1);
            this.e(a, d, e, b);
            for (let f = 0; f < c; f++) {
                let g = d[f].f;
                g.add(e[f]);
                g.add(e[f + 1]);
            }
        }
        e(a, b, c, d) {
            let e = d.q;
            let f = d.u;
            let g = d.r;
            let h = d.v;
            if (d.d == 0) {
                e = 1 - e;
                f = 1 - f;
                g = 1 - g;
                h = 1 - h;
                b[0] = a.i;
                b[1] = a.j;
                b[2] = a.d;
                b[3] = a.g;
                b[4] = a.f;
                b[5] = a.h;
                b[6] = a.e;
                c[0] = { $type: Point_$type, x: (-1) * d.t, y: f };
                c[1] = { $type: Point_$type, x: d.t, y: f };
                c[2] = { $type: Point_$type, x: d.w, y: h };
                c[3] = { $type: Point_$type, x: d.s, y: g };
                c[4] = { $type: Point_$type, x: d.p, y: e };
                c[5] = { $type: Point_$type, x: (-1) * d.p, y: e };
                c[6] = { $type: Point_$type, x: (-1) * d.s, y: g };
                c[7] = { $type: Point_$type, x: (-1) * d.w, y: h };
            }
            else {
                b[0] = a.i;
                b[1] = a.j;
                b[2] = a.d;
                b[3] = a.g;
                b[4] = a.f;
                b[5] = a.h;
                b[6] = a.e;
                c[0] = { $type: Point_$type, x: f, y: (-1) * d.t };
                c[1] = { $type: Point_$type, x: f, y: d.t };
                c[2] = { $type: Point_$type, x: h, y: d.w };
                c[3] = { $type: Point_$type, x: g, y: d.s };
                c[4] = { $type: Point_$type, x: e, y: d.p };
                c[5] = { $type: Point_$type, x: e, y: (-1) * d.p };
                c[6] = { $type: Point_$type, x: g, y: (-1) * d.s };
                c[7] = { $type: Point_$type, x: h, y: (-1) * d.w };
            }
        }
        a() {
            let a = this.b;
            let b = 0.85;
            let c = 0.25;
            let d = 0.45;
            let e = a.o;
            let f = 0.5;
            let g = a.q;
            let h = a.u;
            let i = a.r;
            let j = a.v;
            let k = a.p;
            let l = a.t;
            let m = a.s;
            let n = a.w;
            if (isNaN_(g)) {
                g = c;
            }
            if (isNaN_(h)) {
                h = b;
            }
            if (isNaN_(i)) {
                if (a.c == 3) {
                    i = d;
                }
                else {
                    i = c;
                }
            }
            if (isNaN_(j)) {
                j = b;
            }
            if (isNaN_(l)) {
                l = e;
            }
            if (isNaN_(k)) {
                if (a.c == 4) {
                    k = l * f;
                }
                else {
                    k = e;
                }
            }
            if (isNaN_(m)) {
                m = e;
            }
            if (isNaN_(n)) {
                n = e;
            }
            switch (a.c) {
                case 2:
                case 1:
                case 4:
                    j = h;
                    i = g;
                    break;
            }
            if (a.c == 3) {
                k = 0;
                m = l;
                n = l;
                j = h;
            }
            if (a.c == 2) {
                k = 0;
                m = 0;
                n = l;
            }
            if (a.c == 4) {
                m = k;
                n = l;
            }
            if (a.c == 1) {
                let o = Math.max(k, l);
                k = o;
                l = o;
                m = o;
                n = o;
            }
            a.q = g;
            a.u = h;
            a.r = i;
            a.v = j;
            a.p = k;
            a.t = l;
            a.s = m;
            a.w = n;
            return a;
        }
        f(a) {
            a.f.k();
            a.g.k();
            a.d.k();
            a.j.k();
            a.i.k();
            a.k.k();
            a.e.k();
            a.h.k();
            a.b.k();
            a.c.k();
        }
    }
    LinearGraphNeedlePreparer.$t = markType(LinearGraphNeedlePreparer, 'LinearGraphNeedlePreparer');
    return LinearGraphNeedlePreparer;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGraphNeedleParameters = /*@__PURE__*/ (() => {
    class LinearGraphNeedleParameters extends Base {
        constructor() {
            super(...arguments);
            this.d = 0;
            this.e = false;
            this.k = NaN;
            this.j = NaN;
            this.g = NaN;
            this.l = NaN;
            this.i = NaN;
            this.n = NaN;
            this.h = NaN;
            this.m = NaN;
            this.f = NaN;
            this.b = 3;
            this.propertyChanged = null;
        }
        get u() {
            return this.k;
        }
        set u(a) {
            if (this.k != a) {
                this.k = a;
                this.x("OuterExtent");
            }
        }
        get q() {
            return this.j;
        }
        set q(a) {
            if (this.j != a) {
                this.j = a;
                this.x("InnerExtent");
            }
        }
        get p() {
            return this.g;
        }
        set p(a) {
            if (this.g != a) {
                this.g = a;
                this.x("InnerBaseWidth");
            }
        }
        get t() {
            return this.l;
        }
        set t(a) {
            if (this.l != a) {
                this.l = a;
                this.x("OuterBaseWidth");
            }
        }
        get s() {
            return this.i;
        }
        set s(a) {
            if (this.i != a) {
                this.i = a;
                this.x("InnerPointWidth");
            }
        }
        get w() {
            return this.n;
        }
        set w(a) {
            if (this.n != a) {
                this.n = a;
                this.x("OuterPointWidth");
            }
        }
        get r() {
            return this.h;
        }
        set r(a) {
            if (this.h != a) {
                this.h = a;
                this.x("InnerPointExtent");
            }
        }
        get v() {
            return this.m;
        }
        set v(a) {
            if (this.m != a) {
                this.m = a;
                this.x("OuterPointExtent");
            }
        }
        get o() {
            return this.f;
        }
        set o(a) {
            if (this.f != a) {
                this.f = a;
                this.x("DefaultWidth");
            }
        }
        get c() {
            return this.b;
        }
        set c(a) {
            if (this.b != a) {
                this.b = a;
                this.x("NeedleShape");
            }
        }
        a() {
            let a = new LinearGraphNeedleParameters();
            a.u = this.u;
            a.q = this.q;
            a.p = this.p;
            a.t = this.t;
            a.r = this.r;
            a.v = this.v;
            a.s = this.s;
            a.w = this.w;
            a.c = this.c;
            a.o = this.o;
            return a;
        }
        x(a) {
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
        }
    }
    LinearGraphNeedleParameters.$t = markType(LinearGraphNeedleParameters, 'LinearGraphNeedleParameters', Base.$, [INotifyPropertyChanged_$type]);
    return LinearGraphNeedleParameters;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearScaleVisualData = /*@__PURE__*/ (() => {
    class LinearScaleVisualData extends Base {
    }
    LinearScaleVisualData.$t = markType(LinearScaleVisualData, 'LinearScaleVisualData');
    return LinearScaleVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGaugeScaleFrame = /*@__PURE__*/ (() => {
    class LinearGaugeScaleFrame extends LinearGraphScaleFrame {
        constructor() {
            super();
            this.ag = null;
            this.af = null;
            this.ag = new LinearGraphNeedleFrame();
            this.af = new LinearGraphNeedleFrame();
        }
        y(a, b, c) {
            super.y(a, b, c);
            this.ag = LinearGraphNeedleFrame.a(a, 1 - a, b.ag, c.ag);
            this.af = LinearGraphNeedleFrame.a(a, 1 - a, b.af, c.af);
        }
    }
    LinearGaugeScaleFrame.$t = markType(LinearGaugeScaleFrame, 'LinearGaugeScaleFrame', LinearGraphScaleFrame.$);
    return LinearGaugeScaleFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGaugeFrame = /*@__PURE__*/ (() => {
    class LinearGaugeFrame extends LinearGraphFrame {
        constructor() {
            super();
            this._c = null;
            this.c = new LinearGaugeScaleFrame();
        }
        get_c() {
            return this._c;
        }
        set_c(a) {
            this._c = a;
        }
        get c() {
            return this.get_c();
        }
        set c(a) {
            this.set_c(a);
        }
    }
    LinearGaugeFrame.$t = markType(LinearGaugeFrame, 'LinearGaugeFrame', LinearGraphFrame.$);
    return LinearGaugeFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearGaugeVisualData = /*@__PURE__*/ (() => {
    class LinearGaugeVisualData extends LinearGraphVisualData {
        constructor() {
            super(...arguments);
            this._needlePath = null;
            this._highlightNeedlePath = null;
            this._needle = null;
            this._highlightNeedle = null;
        }
        get needlePath() {
            return this._needlePath;
        }
        set needlePath(a) {
            this._needlePath = a;
        }
        get highlightNeedlePath() {
            return this._highlightNeedlePath;
        }
        set highlightNeedlePath(a) {
            this._highlightNeedlePath = a;
        }
        get needle() {
            return this._needle;
        }
        set needle(a) {
            this._needle = a;
        }
        get highlightNeedle() {
            return this._highlightNeedle;
        }
        set highlightNeedle(a) {
            this._highlightNeedle = a;
        }
        scaleByViewport() {
            super.scaleByViewport();
            if (this.needlePath != null) {
                this.needlePath.scaleByViewport(this.viewport);
            }
            if (this.highlightNeedlePath != null) {
                this.highlightNeedlePath.scaleByViewport(this.viewport);
            }
        }
        serialize() {
            let a = super.serialize();
            let b = new StringBuilder(0);
            let c = a.length == 0;
            if (this.needlePath != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("needlePath: ");
                b.u(this.needlePath.serialize());
            }
            if (this.needle != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("needle: ");
                b.u(this.needle.serialize());
            }
            if (this.highlightNeedlePath != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("highlightNeedlePath: ");
                b.u(this.highlightNeedlePath.serialize());
            }
            if (this.highlightNeedle != null) {
                if (c) {
                    c = false;
                }
                else {
                    b.l(", ");
                }
                b.l("highlightNeedle: ");
                b.u(this.highlightNeedle.serialize());
            }
            if (c) {
                return a;
            }
            b.l("}");
            return a.substr(0, a.length - 1) + b.toString();
        }
    }
    LinearGaugeVisualData.$t = markType(LinearGaugeVisualData, 'LinearGaugeVisualData', LinearGraphVisualData.$);
    return LinearGaugeVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let LinearNeedleVisualData = /*@__PURE__*/ (() => {
    class LinearNeedleVisualData extends ToolTipItemVisualData {
        constructor() {
            super(...arguments);
            this._value = 0;
        }
        get value() {
            return this._value;
        }
        set value(a) {
            this._value = a;
        }
        serialize() {
            return "{ value: " + this.value.toString() + ", type: '" + this.type + "'}";
        }
        get_type() {
            return "needle";
        }
        get type() {
            return this.get_type();
        }
    }
    LinearNeedleVisualData.$t = markType(LinearNeedleVisualData, 'LinearNeedleVisualData', ToolTipItemVisualData.$);
    return LinearNeedleVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let XamLinearGauge = /*@__PURE__*/ (() => {
    class XamLinearGauge extends Control {
        constructor() {
            super();
            this.propertyChanged = null;
            this.av = null;
            this.b0 = 0;
            this.formatLabel = null;
            this.alignLabel = null;
            this.valueChanged = null;
            this.highlightValueChanged = null;
            this.ao = null;
            this.an = null;
            this.am = null;
            this.ar = null;
            this.bx = 0;
            this.bw = 100;
            this.a3 = 0;
            this.aj = null;
            this.a2 = 0;
            this.bv = 0.5;
            this.az = 1;
            this.bm = false;
            this.a7 = null;
            this.a5 = null;
            this.a4 = null;
            this.a8 = null;
            this.a6 = null;
            this.bt = null;
            this.ix = null;
            this.bs = null;
            this.iw = null;
            this._view = null;
            this.iz = null;
            this.iy = null;
            this.iv = null;
            this.bo = new List$1(TextBlock.$, 0);
            this.br = new List$1(TextBlock.$, 0);
            this.bq = new List$1(Path.$, 0);
            this.bp = new List$1(Path.$, 0);
            this.bc = false;
            this.bz = NaN;
            this.by = 1;
            this.bz = NaN;
            this.by = 1;
            this.view = new XamLinearGaugeView(this);
            this.view.bc();
            this.iz = Rect.empty;
            this.iy = Rect.empty;
            this.iv = Rect.empty;
            this.ao = new LinearGaugeFrame();
            this.an = new LinearGaugeFrame();
            this.am = new LinearGaugeFrame();
            this.ranges = new LinearGraphRangeCollection();
            this.bc = true;
            this.av = new DoubleAnimator(0, 1, this.dh);
            let a = this.av;
            a.propertyChanged = delegateCombine(a.propertyChanged, runOn(this, this.fl));
            this.ab = XamLinearGauge.$;
            this.a6 = ((() => {
                let $ret = new StackPool$1(Path.$);
                $ret.b = runOn(this.view, this.view.bm);
                $ret.c = runOn(this.view, this.view.bn);
                $ret.d = runOn(this.view, this.view.bo);
                $ret.j = runOn(this.view, this.view.cq);
                return $ret;
            })());
            this.a7 = ((() => {
                let $ret = new StackPool$1(Path.$);
                $ret.b = runOn(this.view, this.view.bf);
                $ret.c = runOn(this.view, this.view.bg);
                $ret.d = runOn(this.view, this.view.bh);
                $ret.j = runOn(this.view, this.view.cp);
                return $ret;
            })());
            this.a5 = ((() => {
                let $ret = new StackPool$1(Path.$);
                $ret.b = runOn(this.view, this.view.bf);
                $ret.c = runOn(this.view, this.view.bg);
                $ret.d = runOn(this.view, this.view.bh);
                $ret.j = runOn(this.view, this.view.cp);
                return $ret;
            })());
            this.a4 = ((() => {
                let $ret = new StackPool$1(TextBlock.$);
                $ret.b = runOn(this.view, this.view.a4);
                $ret.c = runOn(this.view, this.view.a5);
                $ret.d = runOn(this.view, this.view.a6);
                $ret.j = runOn(this.view, this.view.b3);
                return $ret;
            })());
            this.a8 = ((() => {
                let $ret = new StackPool$1(TextBlock.$);
                $ret.b = runOn(this.view, this.view.bw);
                $ret.c = runOn(this.view, this.view.bx);
                $ret.d = runOn(this.view, this.view.by);
                $ret.j = runOn(this.view, this.view.b4);
                return $ret;
            })());
        }
        f2(a) {
            this.f9(a);
        }
        f9(a) {
            let b = this.propertyChanged;
            if (b != null) {
                b(this, new PropertyChangedEventArgs(a));
            }
        }
        fl(a, b) {
            this.dc = this.av.o;
        }
        get a9() {
            return this.av.f();
        }
        get dc() {
            return this.b0;
        }
        set dc(a) {
            let b = this.b0;
            this.b0 = a;
            this.f1("TransitionProgress", b, this.b0);
        }
        gl() {
            this.b0 = 0;
            this.av.w();
            this.av.v();
        }
        get bl() {
            return this.dh > 0;
        }
        onDetachedFromUI() {
            this.view.bb();
        }
        onAttachedToUI() {
            this.view.a7();
        }
        get b3() {
            return this.bx;
        }
        set b3(a) {
            this.bx = a;
        }
        get b2() {
            return this.bw;
        }
        set b2(a) {
            this.bw = a;
        }
        get b1() {
            return this.bv;
        }
        set b1(a) {
            let b = this.bv;
            this.bv = a;
            if (b != this.bv) {
                this.f1("ActualHighlightValueOpacity", b, a);
            }
        }
        go() {
            this.b1 = isNaN_(this.ca) ? 0.5 : Math.max(0, Math.min(this.ca, 1));
        }
        get a0() {
            return this.az;
        }
        set a0(a) {
            this.az = a;
        }
        gn() {
            if (this.a1 != 1) {
                if (isNaN_(this.b9) || isInfinity(this.b9)) {
                    this.a0 = 1;
                }
                else {
                    this.a0 = 2;
                }
            }
            else {
                this.a0 = 1;
            }
        }
        fr() {
            this.a2 = 0;
            this.view.cm().an = null;
        }
        b8(a) {
            let b = 0;
            let c = a.x;
            if (this.as == 1) {
                b = a.y;
                c = this.i2.height;
            }
            return this.ar.k(c - b);
        }
        bj(a) {
            if (this.bt == null) {
                return false;
            }
            return PolygonUtil.b(this.bt, a);
        }
        ba(a) {
            if (this.bs == null) {
                return false;
            }
            return PolygonUtil.b(this.bs, a);
        }
        needleContainsPoint(a, b) {
            if (this.bt == null) {
                return false;
            }
            return b ? this.ix.containsPoint(a) : PolygonUtil.b(this.bt, a);
        }
        highlightNeedleContainsPoint(a, b) {
            if (this.bs == null) {
                return false;
            }
            return b ? this.iw.containsPoint(a) : PolygonUtil.b(this.bs, a);
        }
        fp(a, b) {
            let c = this.b8(a);
            c = Math.max(Math.min(c, this.b2), this.b3);
            let d = this.a3 == 2;
            if (d) {
                if (c != this.b9) {
                    this.b9 = c;
                }
            }
            else {
                if (c != this.dd) {
                    this.dd = c;
                }
            }
        }
        at() {
            let a = new LinearGaugeVisualData();
            a.viewport = new RectData(this.i2.left, this.i2.top, this.i2.width, this.i2.height);
            a.scaleLabels = new LinearGraphScaleLabelVisualDataList();
            a.scaleTickmarks = new LinearGraphScaleTickmarkVisualDataList();
            a.ranges = new LinearGraphRangeVisualDataList();
            a.needle = ((() => {
                let $ret = new LinearNeedleVisualData();
                $ret.value = this.dd;
                return $ret;
            })());
            a.highlightNeedle = ((() => {
                let $ret = new LinearNeedleVisualData();
                $ret.value = this.b9;
                return $ret;
            })());
            this.view.az(a);
            let b = this.view.l();
            if (b != null) {
                let c = null;
                switch (b.c) {
                    case "range":
                        c = a.ranges._inner[b.b];
                        break;
                    case "needle":
                        c = a.needle;
                        break;
                }
                a.toolTip = ((() => {
                    let $ret = new LinearGraphToolTipVisualData();
                    $ret.item = c;
                    $ret.itemBrush = AppearanceHelper.b(b.a.brush);
                    $ret.outline = AppearanceHelper.b(b.a.outline);
                    $ret.thickness = b.a.thickness;
                    return $ret;
                })());
            }
            return a;
        }
        dr() {
            let a = this.at();
            a.scaleByViewport();
            return a.serialize();
        }
        fq() {
            this.view.flush();
        }
        destroy() {
            this.provideContainer(null);
        }
        provideContainer(a) {
            this.view.a9(a);
        }
        onMouseOver(a, b, c) {
            if (this.bm) {
                this.gk(a, null);
            }
        }
        onMouseLeave() {
            if (this.bm) {
                this.gk({ $type: Point_$type, x: -10000, y: -10000 }, null);
            }
        }
        onMouseMove(a, b) {
            if (this.a3 != 0) {
                this.fp(a, b);
            }
        }
        onMouseDown(a, b) {
            if (this.bf && this.a3 == 0 && this.needleContainsPoint(a, b)) {
                this.a3 = 1;
            }
            if (this.be && this.a3 == 0 && this.highlightNeedleContainsPoint(a, b)) {
                this.a3 = 2;
            }
        }
        get bd() {
            return this.a3 != 0;
        }
        onMouseUp(a) {
            if (this.a3 != 0) {
                this.a3 = 0;
            }
        }
        containerResized() {
            this.view.ba();
        }
        gm() {
            this.view.bv();
        }
        gk(a, b) {
            let c = this.bt;
            if (c != null && c.count > 0) {
                let d = PolygonUtil.b(c, a);
                if (d == true) {
                    this.view.bu(a, b, -1, "needle");
                    return;
                }
            }
            for (let e = 0; e < this.bp.count; e++) {
                let f = new PathVisualData(1, "range", this.bp._inner[e]);
                let g = f.getPoints(new GetPointsSettings());
                if (g.count > 0) {
                    let h = PolygonUtil.b(this.bu(g._inner[0]), a);
                    if (h == true) {
                        this.view.bu(a, b, e, "range");
                        return;
                    }
                }
            }
            this.view.a2();
        }
        ge() {
            if (!this.bc) {
                return;
            }
            let a = this.an.c;
            if (this.as == 0) {
                let b = 0;
                for (let c = 0; c < a.c.length; c++) {
                    b = Math.max(b, a.c[c]);
                }
                let d = this.i2.height >= b ? this.i2.height - b : this.i2.height;
                this.i1 = new Rect(0, 0, 0, this.i2.width, d);
            }
            else {
                let e = 0;
                for (let f = 0; f < a.f.length; f++) {
                    e = Math.max(e, a.f[f]);
                }
                let g = this.i2.width >= e ? this.i2.width - e : this.i2.width;
                this.i1 = new Rect(0, e, 0, g, this.i2.height);
            }
        }
        get view() {
            return this._view;
        }
        set view(a) {
            this._view = a;
        }
        get i2() {
            return this.iz;
        }
        set i2(a) {
            let b = this.iz;
            this.iz = a;
            if (!b.equals1(this.iz)) {
                this.f3(b, this.iz);
            }
        }
        get i1() {
            return this.iy;
        }
        set i1(a) {
            this.iy = a;
        }
        get i0() {
            return this.iv;
        }
        set i0(a) {
            this.iv = a;
        }
        bh() {
            return !isNaN_(this.b3) && !isNaN_(this.b2) && !this.i2.isEmpty && this.view.s();
        }
        fm() {
            if (!this.bh()) {
                return;
            }
            let a = this.c4();
            this.ar = new LinearGraphScaler(this.b3, this.b2, a, a + this.c2(), this.bg);
            if (this.bc) {
                if (this.a9) {
                    if (this.av.g) {
                        this.av.t();
                    }
                    let b = this.ao;
                    this.ao = this.am;
                    this.am = b;
                }
                else {
                    let c = this.ao;
                    this.ao = this.an;
                    this.an = c;
                }
            }
            else if (this.a9) {
                this.am.d(this.dc, this.ao, this.an);
                this.gf(this.am);
                this.gi(this.am);
                this.gh(this.am, this.am.c.af, true);
                this.gh(this.am, this.am.c.ag, false);
            }
            if (this.bc) {
                this.f5();
                this.ge();
                if (this.a2 == 1) {
                    this.a2 = 2;
                    this.f7(this.ar.i(this.dd), this.ao.c, false, true);
                }
                else if (this.a2 == 4) {
                    if (this.dh > 0) {
                        this.a2 = 5;
                        this.f7(this.ar.i(this.dd), this.an.c, false, true);
                    }
                    else {
                        this.fr();
                    }
                }
                this.f6();
                this.f8();
                this.f4();
            }
            if (this.bc && this.bl) {
                this.gl();
                this.am.d(this.dc, this.ao, this.an);
                this.gf(this.am);
                this.gi(this.am);
                this.gh(this.am, this.am.c.af, true);
                this.gh(this.am, this.am.c.ag, false);
                this.gj(this.am);
                this.gg(this.am);
            }
            else {
                if (this.bc) {
                    this.gf(this.an);
                    this.gi(this.an);
                    this.gh(this.an, this.an.c.af, true);
                    this.gh(this.an, this.an.c.ag, false);
                    this.gj(this.an);
                    this.gg(this.an);
                }
            }
            this.bc = false;
            this.view.as();
        }
        f8() {
            let a = this.an;
            let b = a.c;
            let c = this.ar;
            let d = this.ci;
            let e = this.i1;
            b.u = this.c5;
            b.r = this.c0;
            b.s = this.c1;
            b.t = this.c3;
            b.m.clear();
            for (let f = 0; f < this.ranges.count; f++) {
                let g = this.ranges._inner[f];
                if (g.j <= this.b3 || g.o > this.b2) {
                    continue;
                }
                let h = g.o;
                let i = g.j;
                if (h < this.b3) {
                    h = this.b3;
                }
                if (i > this.b2) {
                    i = this.b2;
                }
                let j = new LinearGraphRectFrame();
                j.i = g.an != null ? g.an : this.im(f, this.ah);
                j.j = g.ao != null ? g.ao : this.im(f, this.ai);
                j.h = g.p;
                j.g = c.i(h);
                j.d = c.i(i);
                j.e = g.l;
                j.b = g.k;
                j.f = g.n;
                j.c = g.m;
                if (isNaN_(j.e)) {
                    j.e = this.cx;
                }
                j.b = g.k;
                if (isNaN_(j.b)) {
                    j.b = this.cx;
                }
                j.f = g.n;
                if (isNaN_(j.f)) {
                    j.f = this.cy;
                }
                j.c = g.m;
                if (isNaN_(j.c)) {
                    j.c = this.cy;
                }
                b.m.add(j);
            }
            b.ab = this.il;
            b.ad = this.it;
            b.x = this.db;
            b.w = this.da;
            b.v = this.c7;
            b.ac = this.io;
            b.q = this.cl;
            b.p = this.ck;
            b.o = this.cj;
            let k = this.cb;
            if (isNaN_(k)) {
                k = (this.b2 - this.b3) / 10;
            }
            if (k == 0) {
                k = this.b2 - this.b3;
            }
            let l = new List$1(Number_$type, 0);
            let m = new List$1(Number_$type, 0);
            if (k > 0) {
                let n = this.b3 + this.c8;
                let o = this.b2 - this.c9;
                let p = 100000;
                let q = Math.abs(o - n) / p;
                if (k >= q) {
                    for (let r = n; r <= o || this.bn(r, o, k); r = r + k) {
                        l.add(c.i(r));
                        for (let s = 0; s < d; s++) {
                            let t = (k / (d + 1)) * (s + 1);
                            if (t + r > o) {
                                continue;
                            }
                            m.add(c.i(t + r));
                        }
                    }
                }
            }
            if (b.j.length != l.count || b.i.length != m.count) {
                b.j = new Array(l.count);
                b.i = new Array(m.count);
            }
            for (let u = 0; u < l.count; u++) {
                b.j[u] = l._inner[u];
            }
            for (let v = 0; v < m.count; v++) {
                b.i[v] = m._inner[v];
            }
        }
        i3() {
            let a = this.cb;
            let b = this.cd;
            if (isNaN_(a)) {
                a = (this.b2 - this.b3) / 10;
            }
            if (isNaN_(b)) {
                b = a;
            }
            if (b == 0) {
                b = this.b2 - this.b3;
            }
            let c = new List$1(Number_$type, 0);
            if (b > 0) {
                let d = this.ce + this.b3;
                let e = this.b2 - this.cf;
                let f = 100000;
                let g = Math.abs(e - d) / f;
                if (b >= g) {
                    for (let h = d; h <= e || this.bn(h, e, a); h += b) {
                        c.add(h);
                    }
                }
            }
            let i = new Array(c.count);
            let j = new Array(c.count);
            for (let k = 0; k < c.count; k++) {
                let l = c._inner[k];
                if (this.formatLabel == null && this.aj == null) {
                    l = (Math.round(l * 100) / 100);
                }
                let m = l.toString();
                if (this.aj != null) {
                    m = this.aj.i(l);
                }
                let n = new FormatLinearGraphLabelEventArgs();
                n.value = l;
                n.label = m;
                if (this.formatLabel != null) {
                    this.formatLabel(this, n);
                }
                m = n.label;
                let o = this.view.cr(((() => {
                    let $ret = new TextBlock();
                    $ret.al = m;
                    return $ret;
                })()));
                i[k] = o.width;
                j[k] = o.height;
            }
            let p = 0;
            let q = 0;
            let r = 1 - this.c0 + this.c5;
            if (this.as == 0) {
                for (let s = 0; s < j.length; s++) {
                    q = Math.max(q, j[s]);
                }
                for (let t = 0; t < i.length; t++) {
                    p += i[t];
                }
                if (i.length > 0) {
                    p += i[0] / 2;
                }
                if (i.length > 1) {
                    p += i[i.length - 1] / 2;
                }
                if (i.length > 0) {
                    p += (i.length - 1) * 5;
                }
                if (r > 0) {
                    p = p / Math.abs(1 - r);
                }
            }
            else {
                for (let u = 0; u < i.length; u++) {
                    p = Math.max(p, i[u]);
                }
                for (let v = 0; v < j.length; v++) {
                    q += j[v];
                }
                if (j.length > 0) {
                    q -= j[0] / 2;
                }
                if (j.length > 1) {
                    q -= j[j.length - 1] / 2;
                }
                if (r > 0) {
                    q = q / Math.abs(1 - r);
                }
                if (j.length > 0) {
                    q += (j.length - 1) * 5;
                }
            }
            return new Size(1, p, q);
        }
        f5() {
            let a = this.an;
            let b = a.c;
            let c = this.ar;
            let d = this.cb;
            let e = this.cd;
            let f = this.ci;
            if (isNaN_(d)) {
                d = (this.b2 - this.b3) / 10;
            }
            if (isNaN_(e)) {
                e = d;
            }
            if (e == 0) {
                e = this.b2 - this.b3;
            }
            let g = new List$1(Tuple$2.$.specialize(Number_$type, Number_$type), 0);
            if (e > 0) {
                let h = this.ce + this.b3;
                let i = this.b2 - this.cf;
                let j = 100000;
                let k = Math.abs(i - h) / j;
                if (e >= k) {
                    for (let l = h; l <= i || this.bn(l, i, e); l = l + e) {
                        g.add(new Tuple$2(Number_$type, Number_$type, l, c.i(l)));
                    }
                }
            }
            if (b.d.length != g.count) {
                b.e = new Array(g.count);
                b.d = new Array(g.count);
                b.f = new Array(g.count);
                b.c = new Array(g.count);
                b.g = new Array(g.count);
                b.h = new Array(g.count);
            }
            b.n = this.cc;
            let m = new FormatLinearGraphLabelEventArgs();
            m.actualMinimumValue = this.b3;
            m.actualMaximumValue = this.b2;
            let n = new AlignLinearGraphLabelEventArgs();
            n.actualMinimumValue = this.b3;
            n.actualMaximumValue = this.b2;
            for (let o = 0; o < g.count; o++) {
                let p = g._inner[o].c;
                if (this.formatLabel == null) {
                    p = (Math.round(p * 100) / 100);
                }
                let q = (p).toString();
                if (this.aj != null) {
                    q = this.aj.i(p);
                }
                m.value = p;
                n.value = p;
                m.label = q;
                if (this.formatLabel != null) {
                    this.formatLabel(this, m);
                }
                q = m.label;
                n.label = q;
                let r = this.view.cr(((() => {
                    let $ret = new TextBlock();
                    $ret.al = q;
                    return $ret;
                })()));
                n.width = r.width;
                n.height = r.height;
                if (this.as == 0) {
                    n.offsetX = -1 * (r.width / 2);
                    n.offsetY = -1 * (r.height);
                }
                else {
                    n.offsetX = -1 * r.width;
                    n.offsetY = -1 * (r.height / 2);
                }
                if (this.alignLabel != null) {
                    this.alignLabel(this, n);
                }
                b.f[o] = n.width;
                b.c[o] = n.height;
                b.g[o] = n.offsetX;
                b.h[o] = n.offsetY;
                b.d[o] = q;
                b.e[o] = g._inner[o].d;
            }
        }
        bn(a, b, c) {
            let d = c / 10000;
            if (isNaN_(d)) {
                d = 1E-05;
            }
            let e = Math.abs(a - b);
            if (e < d) {
                return true;
            }
            return false;
        }
        f4() {
            let a = this.an;
            let b = a.a;
            b.e = this.ij;
            b.f = this.ik;
            b.c = this.b7;
            b.a = this.b5;
            b.b = this.b6;
        }
        f6() {
            let a = this.dd;
            if (isNaN_(a)) {
                return;
            }
            let b = !(this.a2 == 0 || this.a2 == 5);
            let c = this.an.c;
            let d = this.ar;
            let e = d.i(a);
            this.f7(e, c, b, false);
            let f = this.b9;
            if (b && !isNaN_(f)) {
                this.f7(d.i(f), c, false, true);
            }
        }
        f7(a, b, c, d) {
            let e = new LinearGraphNeedleParameters();
            e.c = this.ap;
            e.e = this.bg;
            e.d = this.as;
            e.u = this.cs;
            e.q = this.co;
            e.v = this.ct;
            e.r = this.cp;
            e.t = this.cr;
            e.p = this.cn;
            e.s = this.cq;
            e.w = this.cu;
            e.o = this.cm * 0.5 / this.cz();
            let f = new LinearGraphNeedleFrame();
            let g = this.ip;
            let h = this.iq;
            if (c) {
                g = BrushUtil.s(g, this.b1);
                h = BrushUtil.s(h, this.b1);
            }
            f.r = g;
            f.s = h;
            f.o = this.cv;
            let i = new LinearGraphNeedlePreparer();
            i.b = e;
            i.c(f);
            f.l = -90;
            f.p = a;
            if (d) {
                b.af = f;
            }
            else {
                b.ag = f;
            }
        }
        im(a, b) {
            if (b != null && b.count > 0) {
                return b.item(a % b.count);
            }
            else {
                return null;
            }
        }
        gj(a) {
            let b = this.i1;
            let c = a.c;
            let d = this.a7;
            let e = c.j;
            let f = c.w;
            let g = c.v;
            let h = c.ad;
            let i = c.x;
            let j = this.a5;
            let k = c.i;
            let l = c.p;
            let m = c.o;
            let n = c.ac;
            let o = c.q;
            d.f = true;
            for (let p = 0; p < this.bq.count; p++) {
                d.n(this.bq._inner[p]);
            }
            this.bq.clear();
            let q = this.cz();
            let r = this.df();
            for (let s = 0; s < e.length; s++) {
                let t, u, v, w;
                if (this.as == 1) {
                    t = b.left + q * f;
                    u = r - e[s];
                    v = b.left + q * g;
                    w = u;
                }
                else {
                    t = b.left + e[s];
                    u = q * (1 - f);
                    v = t;
                    w = q * (1 - g);
                }
                let x = d.a();
                let y = new PathGeometry();
                let z = new PathFigure();
                z._startPoint = { $type: Point_$type, x: t, y: u };
                z._segments.add(((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: v, y: w };
                    return $ret;
                })()));
                y.c.add(z);
                x.an = y;
                x._stroke = h;
                x.ad = i;
                this.bq.add(x);
            }
            for (let aa = 0; aa < k.length; aa++) {
                let ab, ac, ad, ae;
                if (this.as == 1) {
                    ab = b.left + q * l;
                    ac = r - k[aa];
                    ad = b.left + q * m;
                    ae = ac;
                }
                else {
                    ab = k[aa];
                    ac = q * (1 - l);
                    ad = ab;
                    ae = q * (1 - m);
                }
                let af = d.a();
                let ag = new PathGeometry();
                let ah = new PathFigure();
                ah._startPoint = { $type: Point_$type, x: ab, y: ac };
                ah._segments.add(((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: ad, y: ae };
                    return $ret;
                })()));
                ag.c.add(ah);
                af.an = ag;
                af._stroke = n;
                af.ad = o;
                this.bq.add(af);
            }
            d.f = false;
        }
        gg(a) {
            let b = this.i1;
            let c = a.c;
            let d = c.e;
            let e = c.d;
            let f = c.g;
            let g = c.h;
            let h = c.f;
            let i = c.c;
            let j = c.n;
            let k = this.a4;
            k.f = true;
            for (let l = 0; l < this.bo.count; l++) {
                k.n(this.bo._inner[l]);
            }
            this.bo.clear();
            let m = c.ab;
            let n = this.de();
            let o = this.df();
            for (let p = 0; p < e.length; p++) {
                let q, r;
                if (this.as == 1) {
                    q = b.left + n * j;
                    r = b.top + o - d[p];
                }
                else {
                    q = b.left + d[p];
                    r = b.top + n * (1 - j);
                }
                let s = k.a();
                s.al = e[p];
                this.view.bt(s, m);
                let t = h[p];
                let u = i[p];
                let v = f[p];
                let w = g[p];
                this.view.bk(s, q + v, r + w);
                this.bo.add(s);
            }
            k.f = false;
        }
        gi(a) {
            let b = a.c;
            let c = this.a6;
            c.f = true;
            for (let d = 0; d < this.bp.count; d++) {
                c.n(this.bp._inner[d]);
            }
            this.bp.clear();
            let e = this.cz();
            let f = this.df();
            let g = this.iu();
            let h = this.view.co();
            if (isNaN_(b.s) || isNaN_(b.t) || isNaN_(b.u) || isNaN_(b.r)) {
                h.an = null;
            }
            else {
                let i = this.c2();
                h.an = b.ae(g, e, i, this.as);
                h._fill = this.ir;
                h._stroke = this.is;
                h.ad = this.c6;
            }
            for (let j = 0; j < b.m.count; j++) {
                let k = b.m._inner[j];
                let l = c.a();
                l.an = k.k(g, e, f, this.as);
                l._fill = k.i;
                l._stroke = k.j;
                l.ad = k.h;
                this.bp.add(l);
            }
            this.view.bs(this.bp);
            c.f = false;
        }
        gf(a) {
            let b = this.i0;
            let c = this.view.cl();
            let d = a.a;
            let e = this.as == 0 ? b.height : b.width;
            let f = this.as == 0 ? b.width : b.height;
            let g = d.g(e, f, this.as);
            c.an = g;
            c._fill = d.e;
            c._stroke = d.f;
            c.ad = d.c;
        }
        bu(a) {
            let b = new List$1(Point_$type, 0);
            for (let c = 0; c < a.count; c++) {
                b.add({ $type: Point_$type, x: a._inner[c].x, y: a._inner[c].y });
            }
            return b;
        }
        gh(a, b, c) {
            if (c) {
                this.bs = null;
                if (this.a2 == 0) {
                    return;
                }
            }
            else {
                this.bt = null;
            }
            let d = c ? this.view.cm() : this.view.cn();
            let e = this.dd;
            if (isNaN_(e) || e < this.b3 || e > this.b2) {
                d.an = null;
                return;
            }
            let f = this.cz();
            let g = this.df();
            let h = f;
            let i = b.p;
            let j = 0;
            if (this.as == 1) {
                i = this.i1.left;
                j = g - b.p;
            }
            d.an = b.t(h, i, j);
            d._fill = b.r;
            d._stroke = b.s;
            d.ad = b.o;
            let k = new PathVisualData(1, "needle", d);
            let l = k.getPoints(new GetPointsSettings());
            if (l.count > 0) {
                let m = this.bu(l._inner[0]);
                let n = 1.7976931348623157E+308, o = 1.7976931348623157E+308;
                let p = -1.7976931348623157E+308, q = -1.7976931348623157E+308;
                for (let r = 0; r < m.count; r++) {
                    n = m._inner[r].x < n ? m._inner[r].x : n;
                    o = m._inner[r].y < o ? m._inner[r].y : o;
                    p = m._inner[r].x > p ? m._inner[r].x : p;
                    q = m._inner[r].y > q ? m._inner[r].y : q;
                }
                let s = new Rect(2, { $type: Point_$type, x: n, y: o }, { $type: Point_$type, x: p, y: q });
                if (c) {
                    this.bs = m;
                    this.iw = s;
                }
                else {
                    this.bt = m;
                    this.ix = s;
                }
            }
        }
        f3(a, b) {
            this.bc = true;
            this.view.br();
        }
        fv(a, b) {
            this.bc = true;
            this.view.br();
        }
        cz() {
            if (this.as == 0) {
                return this.bi ? this.i2.height : this.i1.height;
            }
            return this.bi ? this.i2.width : this.i1.width;
        }
        c2() {
            if (this.as == 0) {
                return this.i2.width * (this.c0 - this.c5);
            }
            return this.i2.height * (this.c0 - this.c5);
        }
        de() {
            if (this.as == 0) {
                return this.i2.height;
            }
            return this.i2.width;
        }
        df() {
            if (this.as == 0) {
                return this.i2.width;
            }
            return this.i2.height;
        }
        c4() {
            let a = this.c5;
            if (this.as == 0) {
                if (this.bg) {
                    a = 1 - this.c0;
                }
                return this.i2.left + this.i2.width * a;
            }
            if (this.bg) {
                a = 1 - this.c0;
            }
            return this.i2.top + this.i2.height * a;
        }
        iu() {
            let a = this.i1.left;
            if (this.bi) {
                a = 0;
            }
            let b = this.c5;
            if (this.as == 0) {
                if (this.bg) {
                    b = 1 - this.c0;
                }
                return { $type: Point_$type, x: a + this.i1.width * b, y: this.i1.top };
            }
            if (!this.bg) {
                b = 1 - this.c0;
            }
            return { $type: Point_$type, x: a, y: this.i1.top + this.i1.height * b };
        }
        f1(a, b, c) {
            switch (a) {
                case XamLinearGauge.$$p[0]:
                case XamLinearGauge.$$p[3]:
                case XamLinearGauge.$$p[48]:
                case XamLinearGauge.$$p[52]:
                case XamLinearGauge.$$p[56]:
                case XamLinearGauge.$$p[23]:
                case XamLinearGauge.$$p[29]:
                case XamLinearGauge.$$p[39]:
                    this.view.a8(a, b, c);
                    break;
                case XamLinearGauge.$$p[43]:
                    this.view.bd(b, c);
                    break;
                case XamLinearGauge.$$p[46]:
                    this.view.be(b, c);
                    break;
                case "PixelScalingRatio":
                    if (isNaN_(DeviceUtils.a(this.cw))) {
                        this.b4 = 1;
                    }
                    else {
                        this.b4 = DeviceUtils.a(this.cw);
                    }
                    break;
                case "ActualPixelScalingRatio":
                    this.view.bi();
                    break;
            }
            switch (a) {
                case XamLinearGauge.$$p[15]:
                case XamLinearGauge.$$p[16]:
                    if (this.d3 != null) {
                        this.aj = new BindingFormatter();
                        this.aj.j = this.d3;
                        this.aj.d = this.ag;
                    }
                    else {
                        this.aj = null;
                    }
                    this.bc = true;
                    this.view.br();
                    break;
                case XamLinearGauge.$$p[64]:
                    if (this.valueChanged != null) {
                        this.valueChanged(this, new DoubleValueChangedEventArgs(b, c));
                    }
                    this.bc = true;
                    this.view.br();
                    break;
                case XamLinearGauge.$$p[9]:
                    {
                        if (this.highlightValueChanged != null) {
                            this.highlightValueChanged(this, new DoubleValueChangedEventArgs(b, c));
                        }
                        let d = this.a0 == 2;
                        this.gn();
                        let e = this.a0 == 2;
                        this.bc = true;
                        if (!d && e) {
                            this.a2 = 1;
                        }
                        else if (d && !e) {
                            this.a2 = 4;
                        }
                        this.view.br();
                        break;
                    }
                case XamLinearGauge.$$p[7]:
                    {
                        let f = this.a0 == 2;
                        this.gn();
                        let g = this.a0 == 2;
                        this.bc = true;
                        if (!f && g) {
                            this.a2 = 1;
                        }
                        else if (f && !g) {
                            this.a2 = 4;
                        }
                        this.view.br();
                        break;
                    }
                case XamLinearGauge.$$p[8]:
                    this.go();
                    break;
                case "ActualHighlightValueOpacity":
                    this.bc = true;
                    this.view.br();
                    break;
                case XamLinearGauge.$$p[63]:
                    this.av.r = this.dh;
                    this.view.br();
                    break;
                case "TransitionProgress":
                    if (this.dc >= 1) {
                        this.av.w();
                        let h = this.an;
                        this.an = this.ao;
                        this.ao = h;
                        this.f5();
                        this.f6();
                        this.f8();
                        this.f4();
                        this.gf(this.an);
                        this.gi(this.an);
                        this.gh(this.an, this.an.c.af, true);
                        this.gh(this.an, this.an.c.ag, false);
                        this.gj(this.an);
                        this.gg(this.an);
                        if (this.a2 == 5) {
                            this.fr();
                            this.view.br();
                            return;
                        }
                        else if (this.a2 == 2) {
                            this.a2 = 3;
                        }
                    }
                    this.am.d(this.dc, this.ao, this.an);
                    this.gf(this.am);
                    this.gi(this.am);
                    this.gh(this.am, this.am.c.af, true);
                    this.gh(this.am, this.am.c.ag, false);
                    this.gj(this.am);
                    this.gg(this.am);
                    this.view.as();
                    break;
                case XamLinearGauge.$$p[29]:
                case XamLinearGauge.$$p[34]:
                case XamLinearGauge.$$p[28]:
                case XamLinearGauge.$$p[40]:
                case XamLinearGauge.$$p[31]:
                case XamLinearGauge.$$p[36]:
                case XamLinearGauge.$$p[32]:
                case XamLinearGauge.$$p[37]:
                case XamLinearGauge.$$p[30]:
                case XamLinearGauge.$$p[35]:
                case XamLinearGauge.$$p[33]:
                case XamLinearGauge.$$p[38]:
                case XamLinearGauge.$$p[41]:
                case XamLinearGauge.$$p[39]:
                case XamLinearGauge.$$p[0]:
                case XamLinearGauge.$$p[3]:
                case XamLinearGauge.$$p[4]:
                case XamLinearGauge.$$p[1]:
                case XamLinearGauge.$$p[2]:
                case XamLinearGauge.$$p[48]:
                case XamLinearGauge.$$p[52]:
                case XamLinearGauge.$$p[54]:
                case XamLinearGauge.$$p[50]:
                case XamLinearGauge.$$p[51]:
                case XamLinearGauge.$$p[56]:
                case XamLinearGauge.$$p[23]:
                case XamLinearGauge.$$p[43]:
                case XamLinearGauge.$$p[46]:
                case XamLinearGauge.$$p[21]:
                case XamLinearGauge.$$p[44]:
                case XamLinearGauge.$$p[45]:
                case XamLinearGauge.$$p[10]:
                case XamLinearGauge.$$p[17]:
                case XamLinearGauge.$$p[14]:
                case XamLinearGauge.$$p[18]:
                case XamLinearGauge.$$p[19]:
                case XamLinearGauge.$$p[60]:
                case XamLinearGauge.$$p[61]:
                case XamLinearGauge.$$p[58]:
                case XamLinearGauge.$$p[57]:
                case XamLinearGauge.$$p[59]:
                case XamLinearGauge.$$p[26]:
                case XamLinearGauge.$$p[25]:
                case XamLinearGauge.$$p[24]:
                case XamLinearGauge.$$p[27]:
                    this.bc = true;
                    this.view.br();
                    break;
                case XamLinearGauge.$$p[47]:
                    let i = b;
                    let j = c;
                    if (i != null) {
                        let k = i;
                        k.collectionChanged = delegateRemove(k.collectionChanged, runOn(this, this.gc));
                    }
                    if (j != null) {
                        let l = j;
                        l.collectionChanged = delegateCombine(l.collectionChanged, runOn(this, this.gc));
                    }
                    this.bc = true;
                    this.view.br();
                    break;
                case XamLinearGauge.$$p[42]:
                case XamLinearGauge.$$p[13]:
                case XamLinearGauge.$$p[22]:
                case XamLinearGauge.$$p[20]:
                case XamLinearGauge.$$p[49]:
                case XamLinearGauge.$$p[53]:
                    this.b3 = Math.min(this.ch, this.cg);
                    this.b2 = Math.max(this.ch, this.cg);
                    let m = this.c4();
                    this.ar = new LinearGraphScaler(this.b3, this.b2, m, m + this.c2(), this.bg);
                    this.bc = true;
                    this.view.br();
                    break;
                case XamLinearGauge.$$p[5]:
                case XamLinearGauge.$$p[6]:
                    this.view.b1();
                    this.bc = true;
                    this.view.br();
                    break;
            }
            this.f2(a);
        }
        gc(a, b) {
            if (b.oldItems != null) {
                for (let c of fromEn(b.oldItems)) {
                    c.propertyChanged = delegateRemove(c.propertyChanged, runOn(this, this.gb));
                }
            }
            if (b.newItems != null) {
                for (let d of fromEn(b.newItems)) {
                    d.propertyChanged = delegateCombine(d.propertyChanged, runOn(this, this.gb));
                }
            }
            this.bc = true;
            this.view.br();
        }
        gb(a, b) {
            this.bc = true;
            this.view.br();
        }
        fs(a, b) {
            this.bc = true;
            this.view.br();
        }
        refresh() {
            this.bc = true;
            this.view.br();
        }
        ay() {
            return FontUtil.toFontInfo(this.view.ah, this.ds);
        }
        get cw() {
            return this.bz;
        }
        set cw(a) {
            let b = this.bz;
            this.bz = a;
            this.f1("PixelScalingRatio", b, this.bz);
        }
        get b4() {
            return this.by;
        }
        set b4(a) {
            let b = this.by;
            this.by = a;
            this.f1("ActualPixelScalingRatio", b, this.by);
        }
    }
    XamLinearGauge.$t = markType(XamLinearGauge, 'XamLinearGauge', Control.$, [INotifyPropertyChanged_$type]);
    XamLinearGauge.$$p = markDep(DependencyProperty, PropertyMetadata, XamLinearGauge, 'f1', ['BackingBrush:ij:gp', [Brush.$, null], 'BackingInnerExtent:b5:gq', [1, 0], 'BackingOuterExtent:b6:gr', [1, 1], 'BackingOutline:ik:gs', [Brush.$, null], 'BackingStrokeThickness:b7:gt', [1, 2], 'FontBrush:il:gu', [Brush.$, null], 'Font:ds:gv', [2, null], 'HighlightValueDisplayMode:a1:gw', [HighlightedValueDisplayMode_$type, enumGetBox(HighlightedValueDisplayMode_$type, 0)], 'HighlightValueOpacity:ca:gx', [1, 0.5], 'HighlightValue:b9:gy', [1, NaN], 'Interval:cb:gz', [1, NaN], 'IsHighlightNeedleDraggingEnabled:be:g0', [0, false], 'IsNeedleDraggingEnabled:bf:g1', [0, false], 'IsScaleInverted:bg:g2', [0, false], 'LabelExtent:cc:g3', [1, 0], 'LabelFormat:d3:g4', [2, null], 'LabelFormatSpecifiers:ag:g5', [Array_$type, null], 'LabelInterval:cd:g6', [1, NaN], 'LabelsPostInitial:ce:g7', [1, 0], 'LabelsPreTerminal:cf:g8', [1, 0], 'MaximumValue:cg:g9', [1, 100], 'MergeViewports:bi:ha', [0, false], 'MinimumValue:ch:hb', [1, 0], 'MinorTickBrush:io:hc', [Brush.$, null], 'MinorTickCount:ci:hd', [1, 4], 'MinorTickEndExtent:cj:he', [1, 0.35], 'MinorTickStartExtent:ck:hf', [1, 0.05], 'MinorTickStrokeThickness:cl:hg', [1, 1], 'NeedleBreadth:cm:hh', [1, 6], 'NeedleBrush:ip:hi', [Brush.$, null], 'NeedleInnerBaseWidth:cn:hj', [1, NaN], 'NeedleInnerExtent:co:hk', [1, NaN], 'NeedleInnerPointExtent:cp:hl', [1, NaN], 'NeedleInnerPointWidth:cq:hm', [1, NaN], 'NeedleName:en:hn', [2, null], 'NeedleOuterBaseWidth:cr:ho', [1, NaN], 'NeedleOuterExtent:cs:hp', [1, NaN], 'NeedleOuterPointExtent:ct:hq', [1, NaN], 'NeedleOuterPointWidth:cu:hr', [1, NaN], 'NeedleOutline:iq:hs', [Brush.$, null], 'NeedleShape:ap:ht', [LinearGraphNeedleShape_$type, enumGetBox(LinearGraphNeedleShape_$type, 3)], 'NeedleStrokeThickness:cv:hu', [1, 1], 'Orientation:as:hv', [LinearScaleOrientation_$type, enumGetBox(LinearScaleOrientation_$type, 0)], 'RangeBrushes:ah:hw', [BrushCollection.$, null], 'RangeInnerExtent:cx:hx', [1, 0.05], 'RangeOuterExtent:cy:hy', [1, 0.65], 'RangeOutlines:ai:hz', [BrushCollection.$, null], 'Ranges::h0', [LinearGraphRangeCollection.$, null], 'ScaleBrush:ir:h1', [Brush.$, null], 'ScaleEndExtent:c0:h2', [1, 0.95], 'ScaleInnerExtent:c1:h3', [1, 0.05], 'ScaleOuterExtent:c3:h4', [1, 0.65], 'ScaleOutline:is:h5', [Brush.$, null], 'ScaleStartExtent:c5:h6', [1, 0.05], 'ScaleStrokeThickness:c6:h7', [1, 1], 'ShowToolTipTimeout:dg:h8', [1, 500], 'TickBrush:it:h9', [Brush.$, null], 'TickEndExtent:c7:ia', [1, 0.65], 'TickStartExtent:da:id', [1, 0.05], 'TickStrokeThickness:db:ie', [1, 2], 'TicksPostInitial:c8:ib', [1, 0], 'TicksPreTerminal:c9:ic', [1, 0], 'ToolTip::ig', [4, null], 'TransitionDuration:dh:ih', [1, 0], 'Value:dd:ii', [1, NaN]]);
    return XamLinearGauge;
})();
/**
 * @hidden
 */
let XamLinearGaugeView = /*@__PURE__*/ (() => {
    class XamLinearGaugeView extends Base {
        constructor(a) {
            super();
            this.ap = 0;
            this.ao = 0;
            this.m = null;
            this.i = null;
            this.aj = null;
            this.p = null;
            this.ah = null;
            this.aa = null;
            this.z = null;
            this.y = null;
            this.ab = null;
            this.cj = null;
            this.ci = null;
            this.ck = null;
            this.ch = null;
            this.ca = null;
            this.cb = null;
            this.b7 = null;
            this.b8 = null;
            this.cc = null;
            this.cd = null;
            this.ce = null;
            this.b9 = null;
            this.c = null;
            this.d = null;
            this.e = null;
            this.f = null;
            this.q = false;
            this.v = null;
            this.a = ["needle", "backing", "scale", "tick", "minortick", "label"];
            this.u = false;
            this.t = false;
            this.ai = null;
            this.k = null;
            this.ak = 0;
            this.am = 0;
            this.aq = null;
            this.an = -1;
            this.cf = null;
            this.al = 0;
            this.x = null;
            this.b6 = ((() => {
                let $ret = new Brush();
                $ret.fill = "black";
                return $ret;
            })());
            this.r = false;
            this.n = null;
            this.b5 = null;
            this.ac = 0;
            this.ad = 1;
            this.m = a;
            this.v = new Dictionary$2(String_$type, Dictionary$2.$.specialize(String_$type, Brush.$), 0);
            this.cj = new Path();
            this.ci = new Path();
            this.ck = new Path();
            this.ch = new Path();
            this.aa = new List$1(Path.$, 0);
            this.z = new List$1(Path.$, 0);
            this.y = new List$1(TextBlock.$, 0);
            this.ab = new List$1(TextBlock.$, 0);
        }
        a3() {
            let a = this.m.cw;
            let b = this.m.b4;
            if (!isNaN_(a) && a != 0) {
                return;
            }
            if (window.devicePixelRatio != undefined && window.devicePixelRatio != b) {
                this.m.b4 = window.devicePixelRatio;
            }
        }
        bc() {
            this.k = new LinearGraphTooltipDataContext();
            this.al = this.m.dg;
            this.a3();
        }
        s() {
            return true;
        }
        cn() {
            return this.cj;
        }
        cm() {
            return this.ci;
        }
        co() {
            return this.ck;
        }
        cl() {
            return this.ch;
        }
        a1() {
            this.q = true;
            let a = ["#778899", "#EBEDEF", "#e0e0e0", "#617583", "rgba(100,107,114,.74)", "rgba(100,107,114,.74)"];
            let b = ["#778899", "#B2B9C0", "#e0e0e0", null, null, null];
            let c = ((() => {
                let $ret = new List$1(Array_$type, 0);
                $ret.add(a);
                $ret.add(b);
                return $ret;
            })());
            this.v.clear();
            let d = this.a.length;
            for (let e = 0; e < d; e++) {
                let f = this.a[e];
                let g = "ui-lineargauge-" + f;
                let h = "ui-lineargauge-" + f + "-fill";
                let i = "ui-lineargauge-" + f + "-outline";
                let j;
                if (!((() => { let k = XamLinearGaugeView.w.tryGetValue(h, j); j = k.p1; return k.ret; })())) {
                    j = BrushUtil.m(h, g, "background-color", this.ah, a[e]);
                    XamLinearGaugeView.w.addItem(h, j);
                }
                let k;
                if (!((() => { let l = XamLinearGaugeView.w.tryGetValue(i, k); k = l.p1; return l.ret; })())) {
                    k = BrushUtil.m(i, g, "border-top-color", this.ah, b[e]);
                    XamLinearGaugeView.w.addItem(i, k);
                }
                let l = new Dictionary$2(String_$type, Brush.$, 0);
                l.item("fill", j);
                l.item("outline", k);
                this.v.item(this.a[e], l);
            }
            this.b0();
            if (XamLinearGaugeView.g == null || XamLinearGaugeView.h == null) {
                let m = BrushUtil.i("ui-lineargauge-range-fill-palette-", "ui-lineargauge-range-outline-palette-", "ui-lineargauge-range-palette-", this.ah, XamLinearGaugeView.g, XamLinearGaugeView.h, ["#216E99", "#216E99", "#44acd6", "#44acd6", "#cecece", "#cecece"]);
                XamLinearGaugeView.g = m.p4;
                XamLinearGaugeView.h = m.p5;
            }
            this.c = XamLinearGaugeView.g;
            this.d = XamLinearGaugeView.h;
            if (this.e == null) {
                this.m.ah = this.c;
            }
            if (this.f == null) {
                this.m.ai = this.d;
            }
            this.q = false;
        }
        b0() {
            this.q = true;
            let a = this.a.length;
            for (let b = 0; b < a; b++) {
                let c = this.a[b];
                this.bz(c, this.v.item(c));
            }
            this.q = false;
        }
        bz(a, b) {
            let c = b.item("fill");
            let d = b.item("outline");
            switch (a) {
                case "needle":
                    if (this.ca == null) {
                        this.m.ip = c;
                    }
                    if (this.cb == null) {
                        this.m.iq = d;
                    }
                    break;
                case "scale":
                    if (this.cc == null) {
                        this.m.ir = c;
                    }
                    if (this.cd == null) {
                        this.m.is = d;
                    }
                    break;
                case "backing":
                    if (this.b7 == null) {
                        this.m.ij = c;
                    }
                    if (this.b8 == null) {
                        this.m.ik = d;
                    }
                    break;
                case "tick":
                    if (this.ce == null) {
                        this.m.it = c;
                    }
                    break;
                case "minortick":
                    if (this.b9 == null) {
                        this.m.io = c;
                    }
                    break;
                case "label":
                    this.b6 = c;
                    break;
            }
        }
        a8(a, b, c) {
            let d = b;
            let e = c;
            if (!this.q) {
                switch (a) {
                    case XamLinearGauge.$$p[29]:
                        this.ca = e;
                        break;
                    case XamLinearGauge.$$p[39]:
                        this.cb = e;
                        break;
                    case XamLinearGauge.$$p[0]:
                        this.b7 = e;
                        break;
                    case XamLinearGauge.$$p[3]:
                        this.b8 = e;
                        break;
                    case XamLinearGauge.$$p[48]:
                        this.cc = e;
                        break;
                    case XamLinearGauge.$$p[52]:
                        this.cd = e;
                        break;
                    case XamLinearGauge.$$p[56]:
                        this.ce = e;
                        break;
                    case XamLinearGauge.$$p[23]:
                        this.b9 = e;
                        break;
                }
                if (e == null) {
                    this.b0();
                }
            }
        }
        bd(a, b) {
            if (!this.q) {
                this.e = b;
                if (this.e == null) {
                    this.m.ah = this.c;
                }
            }
        }
        be(a, b) {
            if (!this.q) {
                this.f = b;
                if (this.f == null) {
                    this.m.ai = this.d;
                }
            }
        }
        b(a, b) {
            this.ah.startCSSQuery();
            for (let c = 0; c < b.length; c++) {
                b[c] = this.ah.getCssDefaultPropertyValue(a, b[c]);
            }
            this.ah.endCSSQuery();
            return b;
        }
        bv() {
            this.a1();
            this.b1();
            this.br();
        }
        cg(a) {
            let b = CanvasGestureDOMEventProxy.c4(this.ah.rootWrapper);
            return { $type: Point_$type, x: a.x - b.left, y: a.y - b.top };
        }
        bu(a, b, c, d) {
            this.cf = a;
            this.an = c;
            this.aq = d;
            this.bq();
            if (this.ah != null) {
                this.am = this.ah.setTimeout(runOn(this, this.b2), this.al);
            }
            else {
                this.am = window.setTimeout(runOn(this, this.b2), this.al);
            }
            this.t = true;
        }
        a2() {
            if (this.t) {
                if (this.ah != null) {
                    this.ah.clearTimeout(this.am);
                }
                else {
                    window.clearTimeout(this.am);
                }
                this.t = false;
            }
            if (this.u) {
                let a = this.m.toolTip;
                if (this.ah != null) {
                    this.ah.clearTimeout(this.ak);
                }
                else {
                    window.clearTimeout(this.ak);
                }
                a.hide();
                this.u = false;
                this.k = null;
            }
            this.al = this.m.dg;
        }
        bq() {
            if (this.t) {
                if (this.ah != null) {
                    this.ah.clearTimeout(this.am);
                }
                else {
                    window.clearTimeout(this.am);
                }
            }
            if (this.u) {
                let a = this.m.toolTip;
                if (this.ah != null) {
                    this.ah.clearTimeout(this.ak);
                }
                else {
                    window.clearTimeout(this.ak);
                }
                a.hide();
                this.u = false;
                this.al = intDivide(this.m.dg, 2);
            }
        }
        b2() {
            if (this.t) {
                if (this.ah != null) {
                    this.ah.clearTimeout(this.am);
                }
                else {
                    window.clearTimeout(this.am);
                }
                this.t = false;
            }
            let a = this.an;
            let b = this.aq;
            let c = this.cf;
            if (this.ah != null) {
                this.ak = this.ah.setTimeout(runOn(this, this.a2), 10 * this.m.dg);
            }
            else {
                this.ak = window.setTimeout(runOn(this, this.a2), 10 * this.m.dg);
            }
            let d = this.m.ranges._inner[a];
            if (this.ai != this.m.toolTip) {
                if (this.ai != null) {
                    this.ai.remove();
                }
                this.ai = this.m.toolTip;
                this.ai.setStyleProperty("z-index", "10000");
                this.ai.setStyleProperty("position", "absolute");
                this.ah.append(this.ai);
            }
            this.k = this.j(b, a);
            let context_ = this.k;
            let tooltip_ = this.ai;
            let tooltipType_ = b;
            if (tooltip_.updateToolTip) {
                tooltip_.updateToolTip(context_, tooltipType_);
            }
            ;
            let e = this.ai.findByClass(".ui-tooltip-container");
            if (e != null && e.length > 0) {
                e[0].setAttribute("style", null);
            }
            let f = "ui-simple-default-tooltip-content";
            let g = this.ai.findByClass("." + f);
            if (g != null && g.length > 0) {
                let h = ["border-top-color", "border-top-width", "border-top-style", "border-top-left-radius", "background-color", "padding-top", "font-weight"];
                let i = ["border-color", "border-width", "border-style", "border-radius", "background-color", "padding", "font-weight"];
                let j = ((() => {
                    let $ret = new List$1(String_$type, 0);
                    $ret.add(this.k.brush.color.colorString);
                    $ret.add("2px");
                    $ret.add("solid");
                    $ret.add("4px");
                    $ret.add("rgba(230, 230, 230, 0.74)");
                    $ret.add("4px");
                    $ret.add("bold");
                    return $ret;
                })());
                let k = new Dictionary$2(String_$type, String_$type, 0);
                let l = new Array(h.length);
                arrayCopy1(h, 0, l, 0, h.length);
                this.b(f, l);
                for (let m = 0; m < l.length; m++) {
                    this.ai.setStyleProperty(i[m], (l[m] == null) ? j._inner[m] : l[m]);
                }
            }
            this.ai.setStyleProperty("top", (c.y + 15).toString() + "px").setStyleProperty("left", (c.x + 15).toString() + "px");
            this.ai.show();
            this.u = true;
        }
        j(a, b) {
            let c = new LinearGraphTooltipDataContext();
            switch (a) {
                case "range":
                    let d = this.m.ranges._inner[b];
                    c.item = d;
                    c.itemName = d.u;
                    c.label = d.u + ": " + d.o.toString() + "-" + d.j.toString();
                    let e = d.an;
                    let f = d.ao;
                    c.brush = e != null ? e : this.m.im(b, this.c);
                    c.outline = f != null ? f : this.m.im(b, this.d);
                    c.thickness = d.p;
                    break;
                case "needle":
                    c.item = this.m.dd;
                    c.itemName = this.m.en;
                    c.label = this.m.en != null ? this.m.en + ": " + this.m.dd.toString() : this.m.dd.toString();
                    c.brush = this.m.ip;
                    c.outline = this.m.iq;
                    c.thickness = this.m.cv;
                    break;
            }
            return c;
        }
        a9(a) {
            if (a == null) {
                this.aj = null;
                this.ah = null;
                this.ai = null;
                this.p = null;
                if (this.m.a9) {
                    this.m.av.w();
                }
                this.at();
                return;
            }
            let b = a;
            this.ah = b;
            this.m.av.u(this.ah);
            this.ah.rootWrapper.addClass("ui-lineargauge-container");
            this.ad = (isNaN_(this.m.cw) ? this.m.b4 : this.m.cw);
            let c = this.ad;
            let d = Math.round(b.rootWrapper.width());
            let e = Math.round(b.rootWrapper.height());
            let f = d * c;
            let g = e * c;
            this.ah.rootWrapper.setStyleProperty("position", "relative");
            let h = this.ah.createElement("canvas");
            h.setStyleProperty("position", "absolute");
            this.ah.append(h);
            this.ap = f;
            this.ao = g;
            h.setAttribute("width", f.toString());
            h.setAttribute("height", g.toString());
            h.setStyleProperty("width", d.toString() + "px");
            h.setStyleProperty("height", e.toString() + "px");
            h.setStyleProperty("left", "0px");
            h.setStyleProperty("top", "0px");
            this.m.i2 = new Rect(0, 0, 0, d, e);
            this.m.i0 = new Rect(0, 0, 0, d, e);
            this.aj = h;
            let i = this.ah.get2DCanvasContext(this.aj);
            this.p = new RenderingContext(new CanvasViewRenderer(), i);
            this.a1();
            this.b1();
            this.p.ad(this.n);
            this.at();
            if (TypeRegistrar.isRegistered("CanvasGestureDOMEventProxy")) {
                this.i = typeCast(EventProxy.$, TypeRegistrar.create("CanvasGestureDOMEventProxy", this.ah.rootWrapper, this.ah, false));
            }
            if (this.i != null) {
                let j = this.i;
                j.onMouseOver = delegateCombine(j.onMouseOver, runOn(this, this.ay));
                let k = this.i;
                k.onMouseLeave = delegateCombine(k.onMouseLeave, runOn(this, this.ax));
                let l = this.i;
                l.onContactStarted = delegateCombine(l.onContactStarted, runOn(this, this.aw));
                let m = this.i;
                m.onContactMoved = delegateCombine(m.onContactMoved, runOn(this, this.av));
                let n = this.i;
                n.onContactCompleted = delegateCombine(n.onContactCompleted, runOn(this, this.au));
            }
            this.bp();
        }
        au(a, b) {
            if (this.m != null) {
                this.m.onMouseUp(a);
            }
        }
        av(a, b) {
            if (this.m != null) {
                this.m.onMouseMove(a, b);
            }
        }
        aw(a, b) {
            if (this.m != null) {
                this.m.onMouseDown(a, b);
            }
        }
        ay(a, b, c) {
            if (this.m != null) {
                this.m.onMouseOver(a, b, c);
            }
        }
        ax(a) {
            if (this.m != null) {
                this.m.onMouseLeave();
            }
        }
        at() {
            if (this.i != null) {
                let a = this.i;
                a.onMouseOver = delegateRemove(a.onMouseOver, runOn(this, this.ay));
                let b = this.i;
                b.onMouseLeave = delegateRemove(b.onMouseLeave, runOn(this, this.ax));
                let c = this.i;
                c.onContactStarted = delegateRemove(c.onContactStarted, runOn(this, this.aw));
                let d = this.i;
                d.onContactMoved = delegateRemove(d.onContactMoved, runOn(this, this.av));
                let e = this.i;
                e.onContactCompleted = delegateRemove(e.onContactCompleted, runOn(this, this.au));
                this.i.av();
            }
        }
        ba() {
            this.a3();
            let a = Math.round(this.ah.rootWrapper.width());
            let b = Math.round(this.ah.rootWrapper.height());
            this.m.i2 = new Rect(0, 0, 0, a, b);
            this.m.i0 = new Rect(0, 0, 0, a, b);
            if (this.i != null) {
                this.i.bl = this.m.i2;
            }
        }
        as() {
            this.bp();
        }
        bs(a) {
            this.x = a;
        }
        bp() {
            let a = this.m.i2.width;
            let b = this.m.i2.height;
            let c = a * this.ad;
            let d = b * this.ad;
            if (this.ap != a || this.ao != b) {
                this.aj.setAttribute("width", c.toString());
                this.aj.setAttribute("height", d.toString());
                this.aj.setStyleProperty("width", a.toString() + "px");
                this.aj.setStyleProperty("height", b.toString() + "px");
                this.ap = truncate(Math.round(c));
                this.ao = truncate(Math.round(d));
            }
            if (this.p.d && this.ad != 1) {
                this.p.aa();
                this.p.ab(this.ad, this.ad);
            }
            this.p.l(this.m.i2.left, this.m.i2.top, this.m.i2.width, this.m.i2.height);
            this.p.t(this.ch);
            this.p.t(this.ck);
            if (this.x != null) {
                for (let e = 0; e < this.x.count; e++) {
                    this.p.t(this.x._inner[e]);
                }
            }
            for (let f = 0; f < this.y.count; f++) {
                this.p.ad(this.n);
                this.p.x(this.y._inner[f]);
            }
            for (let g = 0; g < this.z.count; g++) {
                this.p.t(this.z._inner[g]);
            }
            this.p.t(this.cj);
            this.p.t(this.ci);
            if (this.p.d && this.ad != 1) {
                this.p.z();
            }
        }
        b1() {
            if (this.m.ds != null) {
                this.n = this.m.ay();
            }
            else {
                this.n = FontUtil.getFont(this.ah);
            }
            this.ac = this.ae(this.n);
            if (this.m.il == null) {
                let a = this.ah.rootWrapper.getStyleProperty("color");
                if (stringIsNullOrEmpty(a) == false) {
                    this.b5 = new Brush();
                    this.b5._fill = a;
                    this.m.il = this.b5;
                }
            }
            if (this.p != null) {
                this.p.ad(this.n);
            }
        }
        af(a) {
            let b = typeCast(TextBlock.$, a);
            if (b != null && b.al != null) {
                return this.p.f(b) + 0;
            }
            return 0;
        }
        cr(a) {
            if (isNaN_(this.ac)) {
                this.ac = this.ae(null);
            }
            let b = this.af(a);
            let c = this.ac;
            return new Size(1, b, c);
        }
        bt(a, b) {
            if (b != null) {
                a.ao = b;
            }
            else {
                a.ao = this.b6;
            }
        }
        bk(a, b, c) {
            a.n = b;
            a.o = c;
        }
        bj(a, b) {
        }
        bl(a, b) {
        }
        ae(a) {
            return FontUtil.getCurrentFontHeight(this.ah, a);
        }
        br() {
            if (!this.r) {
                this.r = true;
                window.setTimeout(runOn(this, this.ar), 0);
            }
        }
        ar() {
            if (this.r) {
                this.r = false;
                this.m.fm();
            }
        }
        flush() {
            if (this.r) {
                this.ar();
            }
        }
        o(a, b) {
            return FontUtil.getFontInfo(this.ah, a, b);
        }
        az(a) {
            a.scalePath = new PathVisualData(1, "Scale", this.ck);
            a.needlePath = new PathVisualData(1, "Needle", this.cj);
            a.highlightNeedlePath = new PathVisualData(1, "HighlightNeedle", this.ci);
            a.backingPath = new PathVisualData(1, "Backing", this.ch);
            let b = this.n;
            for (let c of fromEnum(this.y)) {
                if (c._visibility == 0) {
                    let d = this.o(c, b);
                    let e = new LinearGraphScaleLabelVisualData();
                    e.labelValue = c.al;
                    e.labelPosition = PointData.b({ $type: Point_$type, x: c.n, y: c.o });
                    e.labelSize = SizeData.b(this.cr(c));
                    e.appearance = AppearanceHelper.c(c, d);
                    a.scaleLabels.add(e);
                }
            }
            for (let f of fromEnum(this.z)) {
                if (f._visibility == 0) {
                    let g = new LinearGraphScaleTickmarkVisualData();
                    g.tickPath = new PathVisualData(1, "tickmarks", f);
                    a.scaleTickmarks.add(g);
                }
            }
            for (let h of fromEnum(this.x)) {
                if (h._visibility == 0) {
                    let i = new LinearGraphRangeVisualData();
                    let j = new PathVisualData(1, "range", h);
                    i.rangePath = j;
                    a.ranges.add(i);
                }
            }
        }
        a7() {
            this.a3();
            if (this.i != null) {
                this.i.at(this.ah.rootWrapper, "");
            }
        }
        bb() {
            if (this.i != null && this.ah != null) {
                this.i.bh(this.ah.rootWrapper, "");
            }
        }
        bm(a) {
            a._visibility = 0;
        }
        bn(a) {
            a._visibility = 1;
        }
        bo(a) {
            this.aa.remove(a);
        }
        cq() {
            let a = new Path();
            this.aa.add(a);
            return a;
        }
        bw(a) {
            a._visibility = 0;
        }
        bx(a) {
            a._visibility = 1;
        }
        by(a) {
            this.ab.remove(a);
        }
        b4() {
            let a = new TextBlock();
            this.ab.add(a);
            return a;
        }
        bf(a) {
            a._visibility = 0;
        }
        bg(a) {
            a._visibility = 1;
        }
        bh(a) {
            this.z.remove(a);
        }
        cp() {
            let a = new Path();
            this.z.add(a);
            return a;
        }
        a4(a) {
            a._visibility = 0;
        }
        a5(a) {
            a._visibility = 1;
        }
        a6(a) {
            this.y.remove(a);
        }
        b3() {
            let a = new TextBlock();
            this.y.add(a);
            return a;
        }
        l() {
            if (this.k == null) {
                return null;
            }
            return ((() => {
                let $ret = new ToolTipInfo();
                $ret.b = this.an;
                $ret.d = this.cf;
                $ret.c = this.aq;
                $ret.a = this.k;
                return $ret;
            })());
        }
        bi() {
            this.ad = this.m.b4;
        }
    }
    XamLinearGaugeView.$t = markType(XamLinearGaugeView, 'XamLinearGaugeView');
    XamLinearGaugeView.w = new Dictionary$2(String_$type, Brush.$, 0);
    XamLinearGaugeView.g = null;
    XamLinearGaugeView.h = null;
    return XamLinearGaugeView;
})();

/*
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.
*/

let defaultFont$1 = "Verdana, \"Segoe UI\", Arial, \"Myriad Pro\", sans-serif";
let LinearGaugeStylingDefaults = {
    //"ui-lineargauge-backing": {
    //    "background-color": "#ffffff",
    //    "border-color": "#ffffff"
    //},
    "ui-lineargauge-needle": {
        "background-color": "#999999",
        "border-top-color": "#FFFFFF"
    },
    "ui-lineargauge-scale": {
        "background-color": "transparent",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-tick": {
        "background-color": "rgba(0, 0, 0, 0.35)",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-minortick": {
        "background-color": "rgba(0, 0, 0, 0.2)",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-label": {
        "background-color": FontDefaults.gaugesFontBrush.fill,
        "border-top-color": "transparent"
    },
    "ui-lineargauge-range-palette-1": {
        "background-color": "#0078C8",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-range-palette-2": {
        "background-color": "#0099FF",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-range-palette-3": {
        "background-color": "#21A7FF",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-range-palette-4": {
        "background-color": "#4FB9FF",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-range-palette-5": {
        "background-color": "#79C9FF",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-needle-palette-1": {
        "background-color": "#e0e0e0",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-needle-palette-2": {
        "background-color": "#c0c0c0",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-needle-palette-3": {
        "background-color": "#999999",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-needle-palette-4": {
        "background-color": "#494949",
        "border-top-color": "transparent"
    },
    "ui-lineargauge-needle-palette-5": {
        "background-color": "#353535",
        "border-top-color": "transparent"
    },
    //"ui-lineargauge-tooltip": {
    //    "border-style": "none",
    //    "white-space": "nowrap",
    //    "background-color": "transparent"
    //},
    //"ui-lineargauge-range-tooltip": {
    //    "border-style": "solid",
    //    "border-width": "2px",
    //    "border-radius": "4px",
    //    "background-color": "rgba(230, 230, 230, 0.74)",
    //    "padding": "4px",
    //    "font-weight": "bold"
    //},
    //"ui-lineargauge-needle-tooltip": {
    //    "border-style": "solid",
    //    "border-width": "2px",
    //    "border-radius": "4px",
    //    "background-color": "rgba(230, 230, 230, 0.74)",
    //    "padding": "4px",
    //    "font-weight": "bold"
    //},
    "ui-lineargauge": {
        "font-family": FontDefaults.gaugesFontFamily,
        "font-size": FontDefaults.gaugesFontSize + "px",
        "color": FontDefaults.gaugesFontBrush.fill
    },
    "font-family": FontDefaults.gaugesFontFamily,
    "font-style": "normal",
    "font-weight": FontDefaults.gaugesFontWeight,
    "font-size": FontDefaults.gaugesFontSize + "px",
    "color": FontDefaults.gaugesFontBrush.fill,
    "font-variant": "",
    "line-height": ""
};

/*
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.
*/
/**
 * A linear gauge for displaying a single value on a defined scale.
*/
let IgxLinearGaugeComponent = /*@__PURE__*/ (() => {
    class IgxLinearGaugeComponent {
        constructor(_renderer, _elRef, _ngZone, _componentFactoryResolver, _injector) {
            //super();
            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._tooltipTemplate = null;
            this._tooltipContent = null;
            this._defaultTooltips = null;
            this._zoneRunner = null;
            this.__p = null;
            this._hasUserValues = new Set();
            this._stylingContainer = null;
            this._stylingParent = null;
            this._inStyling = false;
            this._formatLabel = null;
            this._alignLabel = null;
            this._valueChanged = null;
            this._highlightValueChanged = null;
            this._actualMinimumValueChange = null;
            this._actualMaximumValueChange = null;
            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;
            }
            this._root = root;
            var ren = new AngularRenderer(root, this._renderer, window.document, this._ngZone, true, LinearGaugeStylingDefaults);
            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 IgxLinearGraphRangeCollection();
                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 XamLinearGauge();
        }
        ngAfterContentInit() {
            if (TypeRegistrar.isRegistered("IgxSimpleDefaultTooltipComponent")) {
                let c = TypeRegistrar.get("IgxSimpleDefaultTooltipComponent");
                let cf = this._componentFactoryResolver.resolveComponentFactory(c);
                let cr = this._dynamicContent.createComponent(cf);
                this._defaultTooltips = cr;
                cr.instance.onContentReady.subscribe(() => {
                    this._onDefaultTooltipsReady(cr);
                });
                this._ensureTooltipCreated();
            }
            this._rangesAdapter.updateQuery(this.contentRanges);
        }
        ngAfterViewInit() {
            this.updateStyle();
            this.i.containerResized();
        }
        updateStyle() {
            this._styling(this._root, 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);
                }
            }
        }
        set tooltipTemplate(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 {
                this._ensureTooltipCreated();
            }
        }
        get tooltipTemplate() {
            return this._tooltipTemplate;
        }
        _ensureTooltipCreated() {
            if (this.i.toolTip == null) {
                let tooltip = this.createTooltip();
                if (tooltip == null) {
                    return;
                }
                this._tooltipContent = tooltip;
                tooltip.instance.template = this._tooltipTemplate;
                this.i.toolTip = this.createWrapper(tooltip.location.nativeElement);
            }
        }
        createWrapper(ele) {
            let wrapper = new AngularWrapper(ele, this._renderer, this._ngZone);
            wrapper.updateToolTip = ele.updateToolTip;
            wrapper.hideToolTip = ele.hideToolTip;
            return wrapper;
        }
        _ensureDefaultTooltip() {
            if (this._defaultTooltips == null) {
                return;
            }
            this._defaultTooltips.instance["ensureDefaultTooltip"](this);
        }
        _onDefaultTooltipsReady(cr) {
            this._ensureDefaultTooltip();
        }
        createTooltip() {
            if (!TypeRegistrar.isRegistered("IgxTooltipContainerComponent")) {
                return null;
            }
            let t = TypeRegistrar.get("IgxTooltipContainerComponent");
            let cf = this._componentFactoryResolver.resolveComponentFactory(t);
            let cr = this._dynamicContent.createComponent(cf);
            let ele = cr.location.nativeElement;
            let self = this;
            ele.updateToolTip = function (c) {
                if (c.externalObject) {
                    c = c.externalObject;
                }
                else {
                    let ext = new IgxDataContext();
                    ext._implementation = c;
                    c = ext;
                }
                if (ele.parentElement != self._container) {
                    if (ele.parentElement != null) {
                        ele.parentElement.removeChild(ele);
                    }
                    self._container.appendChild(ele);
                }
                cr.instance.context = c;
                ele.style.display = "block";
                return true;
            };
            ele.hideToolTip = function () {
                ele.style.display = "none";
            };
            ele.style.display = "none";
            return cr;
        }
        _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 a value indicating whether the bullet graph is currently animating.
    */
        get animating() {
            return this.i.a9;
        }
        /**
         * Gets the transition progress of the animation when the control is animating.
        */
        get transitionProgress() {
            return this.i.dc;
        }
        set transitionProgress(v) {
            this.i.dc = +v;
        }
        /**
         * Gets or sets the orientation of the scale.
        */
        get orientation() {
            return this.i.as;
        }
        set orientation(v) {
            this.i.as = ensureEnum(LinearScaleOrientation_$type, v);
        }
        /**
         * Gets or sets a collection of brushes to be used as the palette for linear gauge ranges.
        */
        get rangeBrushes() {
            return fromBrushCollection(this.i.ah);
        }
        set rangeBrushes(v) {
            this.i.ah = toBrushCollection(v);
        }
        /**
         * Gets or sets a collection of brushes to be used as the palette for linear gauge outlines.
        */
        get rangeOutlines() {
            return fromBrushCollection(this.i.ai);
        }
        set rangeOutlines(v) {
            this.i.ai = toBrushCollection(v);
        }
        /**
         * Gets or sets the minimum value of the scale.
        */
        get minimumValue() {
            return this.i.ch;
        }
        set minimumValue(v) {
            this.i.ch = +v;
        }
        /**
         * Gets the resolved minimum value of the scale.
        */
        get actualMinimumValue() {
            return this.i.b3;
        }
        set actualMinimumValue(v) {
            this.i.b3 = +v;
        }
        /**
         * Gets or sets the maximum value of the scale.
        */
        get maximumValue() {
            return this.i.cg;
        }
        set maximumValue(v) {
            this.i.cg = +v;
        }
        /**
         * Gets the resolved maximum value of the scale.
        */
        get actualMaximumValue() {
            return this.i.b2;
        }
        set actualMaximumValue(v) {
            this.i.b2 = +v;
        }
        /**
         * Gets or sets the value at which the needle is positioned.
        */
        get value() {
            return this.i.dd;
        }
        set value(v) {
            this.i.dd = +v;
        }
        /**
         * Gets or sets the shape to use when rendering the needle from a number of options.
        */
        get needleShape() {
            return this.i.ap;
        }
        set needleShape(v) {
            this.i.ap = ensureEnum(LinearGraphNeedleShape_$type, v);
        }
        /**
         * Gets or sets the name used for needle.
        */
        get needleName() {
            return this.i.en;
        }
        set needleName(v) {
            this.i.en = v;
        }
        /**
         * Gets or sets the position at which to start rendering the ranges, measured from the front/bottom of the control as a value from 0 to 1.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get rangeInnerExtent() {
            return this.i.cx;
        }
        set rangeInnerExtent(v) {
            this.i.cx = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the scale, measured from the bottom/front (when orientation is horizontal/vertical) of the control as a value from 0 to 1.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get scaleInnerExtent() {
            return this.i.c1;
        }
        set scaleInnerExtent(v) {
            this.i.c1 = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the range as a value from 0 to 1 measured from the front/bottom of the linear gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get rangeOuterExtent() {
            return this.i.cy;
        }
        set rangeOuterExtent(v) {
            this.i.cy = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the scale as a value from 0 to 1 measured from the bottom/front (when orientation is horizontal/vertical) of the linear gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get scaleOuterExtent() {
            return this.i.c3;
        }
        set scaleOuterExtent(v) {
            this.i.c3 = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the needle geometry, measured from the front/bottom of the linear 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 size of the linear gauge.
        */
        get needleInnerExtent() {
            return this.i.co;
        }
        set needleInnerExtent(v) {
            this.i.co = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the needle geometry as a value from 0 to 1 measured from the front/bottom of the linear gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get needleOuterExtent() {
            return this.i.cs;
        }
        set needleOuterExtent(v) {
            this.i.cs = +v;
        }
        /**
         * Gets or sets the width of the needle's inner base.
        */
        get needleInnerBaseWidth() {
            return this.i.cn;
        }
        set needleInnerBaseWidth(v) {
            this.i.cn = +v;
        }
        /**
         * Gets or sets the width of the needle's outer base.
        */
        get needleOuterBaseWidth() {
            return this.i.cr;
        }
        set needleOuterBaseWidth(v) {
            this.i.cr = +v;
        }
        /**
         * Gets or sets the width of the needle's inner point.
        */
        get needleInnerPointWidth() {
            return this.i.cq;
        }
        set needleInnerPointWidth(v) {
            this.i.cq = +v;
        }
        /**
         * Gets or sets the width of the needle's outer point.
        */
        get needleOuterPointWidth() {
            return this.i.cu;
        }
        set needleOuterPointWidth(v) {
            this.i.cu = +v;
        }
        /**
         * Gets or sets the extent of the needle's inner point.
        */
        get needleInnerPointExtent() {
            return this.i.cp;
        }
        set needleInnerPointExtent(v) {
            this.i.cp = +v;
        }
        /**
         * Gets or sets the extent of the needle's outer point.
        */
        get needleOuterPointExtent() {
            return this.i.ct;
        }
        set needleOuterPointExtent(v) {
            this.i.ct = +v;
        }
        /**
         * Gets or sets the interval to use for the scale.
        */
        get interval() {
            return this.i.cb;
        }
        set interval(v) {
            this.i.cb = +v;
        }
        /**
         * A value to start adding tickmarks, added to the scale's MinimumValue.
        */
        get ticksPostInitial() {
            return this.i.c8;
        }
        set ticksPostInitial(v) {
            this.i.c8 = +v;
        }
        /**
         * A value to stop adding tickmarks, subtracted from the scale's MaximumValue.
        */
        get ticksPreTerminal() {
            return this.i.c9;
        }
        set ticksPreTerminal(v) {
            this.i.c9 = +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.cd;
        }
        set labelInterval(v) {
            this.i.cd = +v;
        }
        /**
         * Gets or sets the position at which to put the labels as a value from 0 to 1, measured from the bottom of the scale.
         * Values further from zero than 1 can be used to hide the labels of the linear gauge.
        */
        get labelExtent() {
            return this.i.cc;
        }
        set labelExtent(v) {
            this.i.cc = +v;
        }
        /**
         * A value to start adding labels, added to the scale's MinimumValue.
        */
        get labelsPostInitial() {
            return this.i.ce;
        }
        set labelsPostInitial(v) {
            this.i.ce = +v;
        }
        /**
         * A value to stop adding labels, subtracted from the scale's MaximumValue.
        */
        get labelsPreTerminal() {
            return this.i.cf;
        }
        set labelsPreTerminal(v) {
            this.i.cf = +v;
        }
        /**
         * Gets or sets the number of minor tickmarks to place between major tickmarks.
        */
        get minorTickCount() {
            return this.i.ci;
        }
        set minorTickCount(v) {
            this.i.ci = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the major tickmarks as a value from 0 to 1, measured from the front/bottom of the linear gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get tickStartExtent() {
            return this.i.da;
        }
        set tickStartExtent(v) {
            this.i.da = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the major tickmarks as a value from 0 to 1, measured from the front/bottom of the linear gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get tickEndExtent() {
            return this.i.c7;
        }
        set tickEndExtent(v) {
            this.i.c7 = +v;
        }
        /**
         * Gets or sets the stroke thickness to use when rendering ticks.
        */
        get tickStrokeThickness() {
            return this.i.db;
        }
        set tickStrokeThickness(v) {
            this.i.db = +v;
        }
        /**
         * Gets or sets the brush to use for the major tickmarks.
        */
        get tickBrush() {
            return brushToString(this.i.it);
        }
        set tickBrush(v) {
            this.i.it = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the label font.
        */
        get fontBrush() {
            return brushToString(this.i.il);
        }
        set fontBrush(v) {
            this.i.il = stringToBrush(v);
        }
        /**
         * Gets or sets the needle breadth.
        */
        get needleBreadth() {
            return this.i.cm;
        }
        set needleBreadth(v) {
            this.i.cm = +v;
        }
        /**
         * Gets or sets the brush to use for needle element.
        */
        get needleBrush() {
            return brushToString(this.i.ip);
        }
        set needleBrush(v) {
            this.i.ip = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the outline of needle element.
        */
        get needleOutline() {
            return brushToString(this.i.iq);
        }
        set needleOutline(v) {
            this.i.iq = stringToBrush(v);
        }
        /**
         * Gets or sets the stroke thickness to use when rendering single actual value element.
        */
        get needleStrokeThickness() {
            return this.i.cv;
        }
        set needleStrokeThickness(v) {
            this.i.cv = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the minor tickmarks as a value from 0 to 1, measured from the front/bottom of the linear gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get minorTickStartExtent() {
            return this.i.ck;
        }
        set minorTickStartExtent(v) {
            this.i.ck = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the minor tickmarks as a value from 0 to 1, measured from the front/bottom of the linear gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get minorTickEndExtent() {
            return this.i.cj;
        }
        set minorTickEndExtent(v) {
            this.i.cj = +v;
        }
        /**
         * Gets or sets the stroke thickness to use when rendering minor ticks.
        */
        get minorTickStrokeThickness() {
            return this.i.cl;
        }
        set minorTickStrokeThickness(v) {
            this.i.cl = +v;
        }
        /**
         * Gets or sets the brush to use for the minor tickmarks.
        */
        get minorTickBrush() {
            return brushToString(this.i.io);
        }
        set minorTickBrush(v) {
            this.i.io = stringToBrush(v);
        }
        /**
         * Gets or sets a value indicating whether the scale is inverted.
         * When the scale is inverted the direction in which the scale values increase is right to left.
        */
        get isScaleInverted() {
            return this.i.bg;
        }
        set isScaleInverted(v) {
            this.i.bg = ensureBool(v);
        }
        /**
         * Gets or sets the brush to use to fill the backing of the linear gauge.
        */
        get backingBrush() {
            return brushToString(this.i.ij);
        }
        set backingBrush(v) {
            this.i.ij = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the outline of the backing.
        */
        get backingOutline() {
            return brushToString(this.i.ik);
        }
        set backingOutline(v) {
            this.i.ik = stringToBrush(v);
        }
        /**
         * Gets or sets the stroke thickness of the backing outline.
        */
        get backingStrokeThickness() {
            return this.i.b7;
        }
        set backingStrokeThickness(v) {
            this.i.b7 = +v;
        }
        /**
         * Gets or sets the inner extent of the linear gauge backing.
        */
        get backingInnerExtent() {
            return this.i.b5;
        }
        set backingInnerExtent(v) {
            this.i.b5 = +v;
        }
        /**
         * Gets or sets the outer extent of the linear gauge backing.
        */
        get backingOuterExtent() {
            return this.i.b6;
        }
        set backingOuterExtent(v) {
            this.i.b6 = +v;
        }
        /**
         * Gets or sets the position at which to start rendering the scale, measured from the front/bottom of the linear 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 size of the linear gauge.
        */
        get scaleStartExtent() {
            return this.i.c5;
        }
        set scaleStartExtent(v) {
            this.i.c5 = +v;
        }
        /**
         * Gets or sets the position at which to stop rendering the scale as a value from 0 to 1, measured from the front/bottom of the linear gauge.
         * Values further from zero than 1 can be used to make this extend further than the normal size of the linear gauge.
        */
        get scaleEndExtent() {
            return this.i.c0;
        }
        set scaleEndExtent(v) {
            this.i.c0 = +v;
        }
        /**
         * Gets or sets the brush to use to fill the scale of the linear gauge.
        */
        get scaleBrush() {
            return brushToString(this.i.ir);
        }
        set scaleBrush(v) {
            this.i.ir = stringToBrush(v);
        }
        /**
         * Gets or sets the brush to use for the outline of the scale.
        */
        get scaleOutline() {
            return brushToString(this.i.is);
        }
        set scaleOutline(v) {
            this.i.is = stringToBrush(v);
        }
        /**
         * Gets or sets the stroke thickness of the scale outline.
        */
        get scaleStrokeThickness() {
            return this.i.c6;
        }
        set scaleStrokeThickness(v) {
            this.i.c6 = +v;
        }
        /**
         * Gets or sets whether the scale viewport will be merged with backing viewport.
        */
        get mergeViewports() {
            return this.i.bi;
        }
        set mergeViewports(v) {
            this.i.bi = ensureBool(v);
        }
        /**
         * Gets or sets whether needle dragging is enabled or not.
        */
        get isNeedleDraggingEnabled() {
            return this.i.bf;
        }
        set isNeedleDraggingEnabled(v) {
            this.i.bf = ensureBool(v);
        }
        /**
         * Gets or sets whether highlight needle dragging is enabled or not.
        */
        get isHighlightNeedleDraggingEnabled() {
            return this.i.be;
        }
        set isHighlightNeedleDraggingEnabled(v) {
            this.i.be = ensureBool(v);
        }
        /**
         * Gets or sets the label composite format used when creating label values.
        */
        get labelFormat() {
            return this.i.d3;
        }
        set labelFormat(v) {
            this.i.d3 = v;
        }
        /**
         * Gets or sets the format specifiers to use with the LabelFormat string.
        */
        get labelFormatSpecifiers() {
            return this.i.ag;
        }
        set labelFormatSpecifiers(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 number of milliseconds over which changes to the linear gauge should be animated.
        */
        get transitionDuration() {
            return this.i.dh;
        }
        set transitionDuration(v) {
            this.i.dh = +v;
        }
        /**
         * Gets or sets the highlight value at which to point the secondary needle of the gauge.
        */
        get highlightValue() {
            return this.i.b9;
        }
        set highlightValue(v) {
            this.i.b9 = +v;
        }
        /**
         * Gets the actual opacity of the primary needle while highlighting
        */
        get actualHighlightValueOpacity() {
            return this.i.b1;
        }
        set actualHighlightValueOpacity(v) {
            this.i.b1 = +v;
        }
        /**
         * Gets or sets the opacity of the primary needle while highlighting
        */
        get highlightValueOpacity() {
            return this.i.ca;
        }
        set highlightValueOpacity(v) {
            this.i.ca = +v;
        }
        /**
         * Gets whether and how to display the highlighted value.
        */
        get actualHighlightValueDisplayMode() {
            return this.i.a0;
        }
        set actualHighlightValueDisplayMode(v) {
            this.i.a0 = ensureEnum(HighlightedValueDisplayMode_$type, v);
        }
        /**
         * Gets or sets whether and how to display the highlighted value.
        */
        get highlightValueDisplayMode() {
            return this.i.a1;
        }
        set highlightValueDisplayMode(v) {
            this.i.a1 = ensureEnum(HighlightedValueDisplayMode_$type, v);
        }
        /**
         * Gets or sets the time in milliseconds that tooltip appearance is delayed with.
        */
        get showToolTipTimeout() {
            return this.i.dg;
        }
        set showToolTipTimeout(v) {
            this.i.dg = +v;
        }
        /**
         * Gets or sets a value indicating whether tooltips are enabled.
        */
        get showToolTip() {
            return this.i.bm;
        }
        set showToolTip(v) {
            this.i.bm = ensureBool(v);
        }
        /**
         * Gets or sets the font.
        */
        get font() {
            return this.i.ds;
        }
        set font(v) {
            this.i.ds = 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.cw;
        }
        set pixelScalingRatio(v) {
            this.i.cw = +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.b4;
        }
        set actualPixelScalingRatio(v) {
            this.i.b4 = +v;
        }
        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);
            }
            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("LinearGaugeComponent");
            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;
        }
        /**
     * 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.b8(toPoint(point));
            return (iv);
        }
        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);
        }
        /**
         * Returns visuals as a serialized string.
        
        */
        exportSerializedVisualData() {
            let iv = this.i.dr();
            return (iv);
        }
        /**
         * Use to force the linear gauge to finish any deferred work before printing or evaluating its visual.
         * This should only be called if the visual of the linear gauge needs to be synchronously saved or evaluated.
         * Calling this method too often will hinder the performance of the linear gauge.
        
        */
        flush() {
            this.i.fq();
        }
        /**
         * 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();
        }
        styleUpdated() {
            this.i.gm();
        }
        /**
         * Event which is raised when a label of the the gauge is formatted.
         * Function takes first argument evt and second argument ui.
         * Use ui.owner to obtain reference to the gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of the gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of the gauge scale.
         * Use ui.value to obtain the value on the 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 IgxFormatLinearGraphLabelEventArgs();
                        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 linear gauge is aligned along the scale.
         * Function takes first argument evt and second argument ui.
         * Use ui.owner to obtain reference to the gauge widget.
         * Use ui.actualMinimumValue to obtain the minimum value of the gauge scale.
         * Use ui.actualMaximumValue to obtain the maximum value of the gauge scale.
         * 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 IgxAlignLinearGraphLabelEventArgs();
                        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;
        }
    }
    IgxLinearGaugeComponent.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeComponent, deps: [{ token: Renderer2 }, { token: ViewContainerRef }, { token: NgZone }, { token: ComponentFactoryResolver }, { token: Injector }], target: ɵɵFactoryTarget.Component });
    IgxLinearGaugeComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: IgxLinearGaugeComponent, selector: "igx-linear-gauge", inputs: { height: "height", width: "width", tooltipTemplate: "tooltipTemplate", transitionProgress: "transitionProgress", orientation: "orientation", rangeBrushes: "rangeBrushes", rangeOutlines: "rangeOutlines", minimumValue: "minimumValue", actualMinimumValue: "actualMinimumValue", maximumValue: "maximumValue", actualMaximumValue: "actualMaximumValue", value: "value", needleShape: "needleShape", needleName: "needleName", rangeInnerExtent: "rangeInnerExtent", scaleInnerExtent: "scaleInnerExtent", rangeOuterExtent: "rangeOuterExtent", scaleOuterExtent: "scaleOuterExtent", needleInnerExtent: "needleInnerExtent", needleOuterExtent: "needleOuterExtent", needleInnerBaseWidth: "needleInnerBaseWidth", needleOuterBaseWidth: "needleOuterBaseWidth", needleInnerPointWidth: "needleInnerPointWidth", needleOuterPointWidth: "needleOuterPointWidth", needleInnerPointExtent: "needleInnerPointExtent", needleOuterPointExtent: "needleOuterPointExtent", interval: "interval", ticksPostInitial: "ticksPostInitial", ticksPreTerminal: "ticksPreTerminal", labelInterval: "labelInterval", labelExtent: "labelExtent", labelsPostInitial: "labelsPostInitial", labelsPreTerminal: "labelsPreTerminal", minorTickCount: "minorTickCount", tickStartExtent: "tickStartExtent", tickEndExtent: "tickEndExtent", tickStrokeThickness: "tickStrokeThickness", tickBrush: "tickBrush", fontBrush: "fontBrush", needleBreadth: "needleBreadth", needleBrush: "needleBrush", needleOutline: "needleOutline", needleStrokeThickness: "needleStrokeThickness", minorTickStartExtent: "minorTickStartExtent", minorTickEndExtent: "minorTickEndExtent", minorTickStrokeThickness: "minorTickStrokeThickness", minorTickBrush: "minorTickBrush", isScaleInverted: "isScaleInverted", backingBrush: "backingBrush", backingOutline: "backingOutline", backingStrokeThickness: "backingStrokeThickness", backingInnerExtent: "backingInnerExtent", backingOuterExtent: "backingOuterExtent", scaleStartExtent: "scaleStartExtent", scaleEndExtent: "scaleEndExtent", scaleBrush: "scaleBrush", scaleOutline: "scaleOutline", scaleStrokeThickness: "scaleStrokeThickness", mergeViewports: "mergeViewports", isNeedleDraggingEnabled: "isNeedleDraggingEnabled", isHighlightNeedleDraggingEnabled: "isHighlightNeedleDraggingEnabled", labelFormat: "labelFormat", labelFormatSpecifiers: "labelFormatSpecifiers", transitionDuration: "transitionDuration", highlightValue: "highlightValue", actualHighlightValueOpacity: "actualHighlightValueOpacity", highlightValueOpacity: "highlightValueOpacity", actualHighlightValueDisplayMode: "actualHighlightValueDisplayMode", highlightValueDisplayMode: "highlightValueDisplayMode", showToolTipTimeout: "showToolTipTimeout", showToolTip: "showToolTip", font: "font", pixelScalingRatio: "pixelScalingRatio", actualPixelScalingRatio: "actualPixelScalingRatio" }, outputs: { formatLabel: "formatLabel", alignLabel: "alignLabel", valueChanged: "valueChanged", highlightValueChanged: "highlightValueChanged", actualMinimumValueChange: "actualMinimumValueChange", actualMaximumValueChange: "actualMaximumValueChange" }, host: { classAttribute: "igx-linear-gauge ig-linear-gauge" }, providers: [], queries: [{ propertyName: "contentRanges", predicate: IgxLinearGraphRangeComponent }], 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: ChangeDetectionStrategy.OnPush });
    return IgxLinearGaugeComponent;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'igx-linear-gauge',
                    template: `<ng-container #dynamicContent></ng-container>`,
                    changeDetection: ChangeDetectionStrategy.OnPush,
                    providers: [],
                    host: { 'class': 'igx-linear-gauge ig-linear-gauge' },
                    styles: [`
		:host {
			display: block;
		}
	`]
                }]
        }], ctorParameters: function () { return [{ type: Renderer2 }, { type: ViewContainerRef }, { type: NgZone }, { type: ComponentFactoryResolver }, { type: Injector }]; }, propDecorators: { _dynamicContent: [{
                type: ViewChild,
                args: ["dynamicContent", { read: ViewContainerRef, static: true }]
            }], height: [{
                type: Input
            }], width: [{
                type: Input
            }], contentRanges: [{
                type: ContentChildren,
                args: [IgxLinearGraphRangeComponent]
            }], tooltipTemplate: [{
                type: Input
            }], transitionProgress: [{
                type: Input
            }], orientation: [{
                type: Input
            }], rangeBrushes: [{
                type: Input
            }], rangeOutlines: [{
                type: Input
            }], minimumValue: [{
                type: Input
            }], actualMinimumValue: [{
                type: Input
            }], maximumValue: [{
                type: Input
            }], actualMaximumValue: [{
                type: Input
            }], value: [{
                type: Input
            }], needleShape: [{
                type: Input
            }], needleName: [{
                type: Input
            }], rangeInnerExtent: [{
                type: Input
            }], scaleInnerExtent: [{
                type: Input
            }], rangeOuterExtent: [{
                type: Input
            }], scaleOuterExtent: [{
                type: Input
            }], needleInnerExtent: [{
                type: Input
            }], needleOuterExtent: [{
                type: Input
            }], needleInnerBaseWidth: [{
                type: Input
            }], needleOuterBaseWidth: [{
                type: Input
            }], needleInnerPointWidth: [{
                type: Input
            }], needleOuterPointWidth: [{
                type: Input
            }], needleInnerPointExtent: [{
                type: Input
            }], needleOuterPointExtent: [{
                type: Input
            }], interval: [{
                type: Input
            }], ticksPostInitial: [{
                type: Input
            }], ticksPreTerminal: [{
                type: Input
            }], labelInterval: [{
                type: Input
            }], labelExtent: [{
                type: Input
            }], labelsPostInitial: [{
                type: Input
            }], labelsPreTerminal: [{
                type: Input
            }], minorTickCount: [{
                type: Input
            }], tickStartExtent: [{
                type: Input
            }], tickEndExtent: [{
                type: Input
            }], tickStrokeThickness: [{
                type: Input
            }], tickBrush: [{
                type: Input
            }], fontBrush: [{
                type: Input
            }], needleBreadth: [{
                type: Input
            }], needleBrush: [{
                type: Input
            }], needleOutline: [{
                type: Input
            }], needleStrokeThickness: [{
                type: Input
            }], minorTickStartExtent: [{
                type: Input
            }], minorTickEndExtent: [{
                type: Input
            }], minorTickStrokeThickness: [{
                type: Input
            }], minorTickBrush: [{
                type: Input
            }], isScaleInverted: [{
                type: Input
            }], backingBrush: [{
                type: Input
            }], backingOutline: [{
                type: Input
            }], backingStrokeThickness: [{
                type: Input
            }], backingInnerExtent: [{
                type: Input
            }], backingOuterExtent: [{
                type: Input
            }], scaleStartExtent: [{
                type: Input
            }], scaleEndExtent: [{
                type: Input
            }], scaleBrush: [{
                type: Input
            }], scaleOutline: [{
                type: Input
            }], scaleStrokeThickness: [{
                type: Input
            }], mergeViewports: [{
                type: Input
            }], isNeedleDraggingEnabled: [{
                type: Input
            }], isHighlightNeedleDraggingEnabled: [{
                type: Input
            }], labelFormat: [{
                type: Input
            }], labelFormatSpecifiers: [{
                type: Input
            }], transitionDuration: [{
                type: Input
            }], highlightValue: [{
                type: Input
            }], actualHighlightValueOpacity: [{
                type: Input
            }], highlightValueOpacity: [{
                type: Input
            }], actualHighlightValueDisplayMode: [{
                type: Input
            }], highlightValueDisplayMode: [{
                type: Input
            }], showToolTipTimeout: [{
                type: Input
            }], showToolTip: [{
                type: Input
            }], font: [{
                type: Input
            }], pixelScalingRatio: [{
                type: Input
            }], actualPixelScalingRatio: [{
                type: Input
            }], formatLabel: [{
                type: Output
            }], alignLabel: [{
                type: Output
            }], valueChanged: [{
                type: Output
            }], highlightValueChanged: [{
                type: Output
            }], actualMinimumValueChange: [{
                type: Output
            }], actualMaximumValueChange: [{
                type: Output
            }] } });

/*
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.
*/
let IgxLinearGaugeCoreModule = /*@__PURE__*/ (() => {
    class IgxLinearGaugeCoreModule {
        constructor() {
        }
    }
    IgxLinearGaugeCoreModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeCoreModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxLinearGaugeCoreModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeCoreModule, declarations: [IgxLinearGaugeComponent], imports: [CommonModule, IgxLinearGraphRangeModule,
            IgxNumberFormatSpecifierModule], exports: [IgxLinearGaugeComponent,
            IgxLinearGraphRangeModule,
            IgxNumberFormatSpecifierModule] });
    IgxLinearGaugeCoreModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeCoreModule, imports: [[CommonModule, IgxLinearGraphRangeModule,
                IgxNumberFormatSpecifierModule
            ], IgxLinearGraphRangeModule,
            IgxNumberFormatSpecifierModule] });
    return IgxLinearGaugeCoreModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeCoreModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [IgxLinearGaugeComponent],
                    exports: [IgxLinearGaugeComponent,
                        IgxLinearGraphRangeModule,
                        IgxNumberFormatSpecifierModule
                    ],
                    imports: [CommonModule, IgxLinearGraphRangeModule,
                        IgxNumberFormatSpecifierModule
                    ],
                    entryComponents: []
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxLinearGaugeCoreDynamicModule = /*@__PURE__*/ (() => {
    class IgxLinearGaugeCoreDynamicModule {
        constructor() {
            TypeRegistrar.registerCons('IgxLinearGaugeComponent', IgxLinearGaugeComponent);
        }
    }
    IgxLinearGaugeCoreDynamicModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeCoreDynamicModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxLinearGaugeCoreDynamicModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeCoreDynamicModule, imports: [CommonModule, IgxLinearGraphRangeDynamicModule,
            IgxNumberFormatSpecifierDynamicModule,
            IgxLinearGaugeCoreModule], exports: [IgxLinearGraphRangeDynamicModule,
            IgxNumberFormatSpecifierDynamicModule,
            IgxLinearGaugeCoreModule] });
    IgxLinearGaugeCoreDynamicModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeCoreDynamicModule, imports: [[CommonModule, IgxLinearGraphRangeDynamicModule,
                IgxNumberFormatSpecifierDynamicModule,
                IgxLinearGaugeCoreModule
            ], IgxLinearGraphRangeDynamicModule,
            IgxNumberFormatSpecifierDynamicModule,
            IgxLinearGaugeCoreModule] });
    return IgxLinearGaugeCoreDynamicModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeCoreDynamicModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxLinearGraphRangeDynamicModule,
                        IgxNumberFormatSpecifierDynamicModule,
                        IgxLinearGaugeCoreModule
                    ],
                    imports: [CommonModule, IgxLinearGraphRangeDynamicModule,
                        IgxNumberFormatSpecifierDynamicModule,
                        IgxLinearGaugeCoreModule
                    ],
                    entryComponents: [IgxLinearGaugeComponent]
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxLinearGaugeModule = /*@__PURE__*/ (() => {
    class IgxLinearGaugeModule {
    }
    IgxLinearGaugeModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxLinearGaugeModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeModule, imports: [CommonModule, IgxLinearGaugeCoreModule,
            IgxDVInteractivityModule], exports: [IgxLinearGaugeCoreModule,
            IgxDVInteractivityModule] });
    IgxLinearGaugeModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeModule, imports: [[CommonModule, IgxLinearGaugeCoreModule,
                IgxDVInteractivityModule
            ], IgxLinearGaugeCoreModule,
            IgxDVInteractivityModule] });
    return IgxLinearGaugeModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxLinearGaugeCoreModule,
                        IgxDVInteractivityModule
                    ],
                    imports: [CommonModule, IgxLinearGaugeCoreModule,
                        IgxDVInteractivityModule
                    ],
                    entryComponents: []
                }]
        }] });

/*
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.
*/
let IgxLinearGaugeDynamicModule = /*@__PURE__*/ (() => {
    class IgxLinearGaugeDynamicModule {
    }
    IgxLinearGaugeDynamicModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeDynamicModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxLinearGaugeDynamicModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeDynamicModule, imports: [CommonModule, IgxLinearGaugeCoreDynamicModule,
            IgxDVInteractivityDynamicModule,
            IgxLinearGaugeModule], exports: [IgxLinearGaugeCoreDynamicModule,
            IgxDVInteractivityDynamicModule,
            IgxLinearGaugeModule] });
    IgxLinearGaugeDynamicModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeDynamicModule, imports: [[CommonModule, IgxLinearGaugeCoreDynamicModule,
                IgxDVInteractivityDynamicModule,
                IgxLinearGaugeModule
            ], IgxLinearGaugeCoreDynamicModule,
            IgxDVInteractivityDynamicModule,
            IgxLinearGaugeModule] });
    return IgxLinearGaugeDynamicModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxLinearGaugeDynamicModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxLinearGaugeCoreDynamicModule,
                        IgxDVInteractivityDynamicModule,
                        IgxLinearGaugeModule
                    ],
                    imports: [CommonModule, IgxLinearGaugeCoreDynamicModule,
                        IgxDVInteractivityDynamicModule,
                        IgxLinearGaugeModule
                    ],
                    entryComponents: []
                }]
        }] });

/*
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.
*/

/*
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.
*/
/**
 * @hidden
 */
let LinearNeedleVisualDataList = /*@__PURE__*/ (() => {
    class LinearNeedleVisualDataList extends List$1 {
        constructor() {
            super(LinearNeedleVisualData.$, 0);
        }
    }
    LinearNeedleVisualDataList.$t = markType(LinearNeedleVisualDataList, 'LinearNeedleVisualDataList', List$1.$.specialize(LinearNeedleVisualData.$));
    return LinearNeedleVisualDataList;
})();

/*
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.
*/
/**
 * Enum specifying various preset needle shapes.
 */
var RadialGaugeNeedleShape = /*@__PURE__*/ (function (RadialGaugeNeedleShape) {
    /**
     * No shape.
     */
    RadialGaugeNeedleShape[RadialGaugeNeedleShape["None"] = 0] = "None";
    /**
     * A rectangle shape.
     */
    RadialGaugeNeedleShape[RadialGaugeNeedleShape["Rectangle"] = 1] = "Rectangle";
    /**
     * A triangle shape.
     */
    RadialGaugeNeedleShape[RadialGaugeNeedleShape["Triangle"] = 2] = "Triangle";
    /**
     * A needle shape.
     */
    RadialGaugeNeedleShape[RadialGaugeNeedleShape["Needle"] = 3] = "Needle";
    /**
     * A trapezoid shape.
     */
    RadialGaugeNeedleShape[RadialGaugeNeedleShape["Trapezoid"] = 4] = "Trapezoid";
    /**
     * A rectangle shape with a bulb at the end.
     */
    RadialGaugeNeedleShape[RadialGaugeNeedleShape["RectangleWithBulb"] = 5] = "RectangleWithBulb";
    /**
     * A triangle shape with a bulb at the end.
     */
    RadialGaugeNeedleShape[RadialGaugeNeedleShape["TriangleWithBulb"] = 6] = "TriangleWithBulb";
    /**
     * A needle shape with a bulb at the end.
     */
    RadialGaugeNeedleShape[RadialGaugeNeedleShape["NeedleWithBulb"] = 7] = "NeedleWithBulb";
    /**
     * A trapezoid shape with a bulb at the end.
     */
    RadialGaugeNeedleShape[RadialGaugeNeedleShape["TrapezoidWithBulb"] = 8] = "TrapezoidWithBulb";
    return RadialGaugeNeedleShape;
})({});
/**
 * @hidden
 */
let RadialGaugeNeedleShape_$type = markEnum('RadialGaugeNeedleShape', 'None,0|Rectangle,1|Triangle,2|Needle,3|Trapezoid,4|RectangleWithBulb,5|TriangleWithBulb,6|NeedleWithBulb,7|TrapezoidWithBulb,8');

/*
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.
*/
/**
 * Enum specifying shapes for the needle pivot.
 */
var RadialGaugePivotShape = /*@__PURE__*/ (function (RadialGaugePivotShape) {
    /**
     * No pivot shape.
     */
    RadialGaugePivotShape[RadialGaugePivotShape["None"] = 0] = "None";
    /**
     * A circle shaped pivot.
     */
    RadialGaugePivotShape[RadialGaugePivotShape["Circle"] = 1] = "Circle";
    /**
     * A circle pivot with a hole in it.
     */
    RadialGaugePivotShape[RadialGaugePivotShape["CircleWithHole"] = 2] = "CircleWithHole";
    /**
     * A circle pivot overlayed on top of the needle.
     */
    RadialGaugePivotShape[RadialGaugePivotShape["CircleOverlay"] = 3] = "CircleOverlay";
    /**
     * A circle pivot with a hole in it overlayed on top of the needle.
     */
    RadialGaugePivotShape[RadialGaugePivotShape["CircleOverlayWithHole"] = 4] = "CircleOverlayWithHole";
    /**
     * A circle pivot rendered underneath the needle.
     */
    RadialGaugePivotShape[RadialGaugePivotShape["CircleUnderlay"] = 5] = "CircleUnderlay";
    /**
     * A circle pivot with a hold in it rendered underneath the needle.
     */
    RadialGaugePivotShape[RadialGaugePivotShape["CircleUnderlayWithHole"] = 6] = "CircleUnderlayWithHole";
    return RadialGaugePivotShape;
})({});
/**
 * @hidden
 */
let RadialGaugePivotShape_$type = markEnum('RadialGaugePivotShape', 'None,0|Circle,1|CircleWithHole,2|CircleOverlay,3|CircleOverlayWithHole,4|CircleUnderlay,5|CircleUnderlayWithHole,6');

/*
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.
*/
/**
 * Enum specifying oversweep shapes.
 */
var RadialGaugeScaleOversweepShape = /*@__PURE__*/ (function (RadialGaugeScaleOversweepShape) {
    /**
     * A default oversweep shape.
     */
    RadialGaugeScaleOversweepShape[RadialGaugeScaleOversweepShape["Auto"] = 0] = "Auto";
    /**
     * A circular oversweep shape.
     */
    RadialGaugeScaleOversweepShape[RadialGaugeScaleOversweepShape["Circular"] = 1] = "Circular";
    /**
     * A fitted oversweep shape.
     */
    RadialGaugeScaleOversweepShape[RadialGaugeScaleOversweepShape["Fitted"] = 2] = "Fitted";
    return RadialGaugeScaleOversweepShape;
})({});
/**
 * @hidden
 */
let RadialGaugeScaleOversweepShape_$type = markEnum('RadialGaugeScaleOversweepShape', 'Auto,0|Circular,1|Fitted,2');

/*
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.
*/
/**
 * Enum specifying shapes that can be used by the backing area of the radial gauge.
 */
var RadialGaugeBackingShape = /*@__PURE__*/ (function (RadialGaugeBackingShape) {
    /**
     * A circular backing shape.
     */
    RadialGaugeBackingShape[RadialGaugeBackingShape["Circular"] = 0] = "Circular";
    /**
     * A fitted backing shape.
     */
    RadialGaugeBackingShape[RadialGaugeBackingShape["Fitted"] = 1] = "Fitted";
    return RadialGaugeBackingShape;
})({});
/**
 * @hidden
 */
let RadialGaugeBackingShape_$type = markEnum('RadialGaugeBackingShape', 'Circular,0|Fitted,1');

/*
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.
*/
/**
 * @hidden
 */
let XamRadialGaugeRange = /*@__PURE__*/ (() => {
    class XamRadialGaugeRange extends DependencyObject {
        constructor() {
            super();
            this.propertyChanged = null;
        }
        ad(a, b, c) {
        }
        ac(a, b, c) {
            this.ad(a, b, c);
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
        }
    }
    XamRadialGaugeRange.$t = markType(XamRadialGaugeRange, 'XamRadialGaugeRange', DependencyObject.$, [INotifyPropertyChanged_$type]);
    XamRadialGaugeRange.q = DeviceUtils.g(1);
    XamRadialGaugeRange.$$p = markDep(DependencyProperty, PropertyMetadata, XamRadialGaugeRange, 'ac', ['Brush:ao:ae', [Brush.$, null], 'EndValue:j:af', [1, NaN], 'InnerEndExtent:k:ag', [1, NaN], 'InnerStartExtent:l:ah', [1, NaN], 'Name:v:ai', [2, null], 'OuterEndExtent:m:aj', [1, NaN], 'OuterStartExtent:n:ak', [1, NaN], 'Outline:ap:al', [Brush.$, null], 'StartValue:o:am', [1, NaN], 'StrokeThickness:p:an', [1, XamRadialGaugeRange.q]]);
    return XamRadialGaugeRange;
})();

/*
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.
*/
/**
 * @hidden
 */
let RadialGaugeRangeCollection = /*@__PURE__*/ (() => {
    class RadialGaugeRangeCollection extends ObservableCollection$1 {
        constructor() {
            super(XamRadialGaugeRange.$, 0);
        }
    }
    RadialGaugeRangeCollection.$t = markType(RadialGaugeRangeCollection, 'RadialGaugeRangeCollection', ObservableCollection$1.$.specialize(XamRadialGaugeRange.$));
    return RadialGaugeRangeCollection;
})();

/*
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.
*/
/**
 * Enum specifying multiple strategies for omitting labels.
 */
var RadialGaugeDuplicateLabelOmissionStrategy = /*@__PURE__*/ (function (RadialGaugeDuplicateLabelOmissionStrategy) {
    /**
     * Omit the last label.
     */
    RadialGaugeDuplicateLabelOmissionStrategy[RadialGaugeDuplicateLabelOmissionStrategy["OmitLast"] = 0] = "OmitLast";
    /**
     * Omit the first label.
     */
    RadialGaugeDuplicateLabelOmissionStrategy[RadialGaugeDuplicateLabelOmissionStrategy["OmitFirst"] = 1] = "OmitFirst";
    /**
     * Omit no labels.
     */
    RadialGaugeDuplicateLabelOmissionStrategy[RadialGaugeDuplicateLabelOmissionStrategy["OmitNeither"] = 2] = "OmitNeither";
    /**
     * Omit both labels.
     */
    RadialGaugeDuplicateLabelOmissionStrategy[RadialGaugeDuplicateLabelOmissionStrategy["OmitBoth"] = 3] = "OmitBoth";
    return RadialGaugeDuplicateLabelOmissionStrategy;
})({});
/**
 * @hidden
 */
let RadialGaugeDuplicateLabelOmissionStrategy_$type = markEnum('RadialGaugeDuplicateLabelOmissionStrategy', 'OmitLast,0|OmitFirst,1|OmitNeither,2|OmitBoth,3');

/*
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.
*/
/**
 * @hidden
 */
let RadialGaugeScaler = /*@__PURE__*/ (() => {
    class RadialGaugeScaler extends Base {
        constructor(a, b, c, d, e) {
            super();
            this.e = 0;
            this.d = 0;
            this.c = 0;
            this.b = 0;
            this.l = 0;
            this.f = 0;
            this.a = 0;
            this.e = c;
            this.d = d;
            if (isNaN_(this.e) || isInfinity(this.e)) {
                this.e = 135;
            }
            if (isNaN_(this.d) || isInfinity(this.d)) {
                this.d = 45;
            }
            this.l = e;
            this.c = a;
            this.b = b;
            let f = MathUtil.o(this.e);
            let g = MathUtil.o(this.d);
            let h = RadialGaugeScaler.k(f, g, this.l);
            this.f = h.c;
            this.a = h.d;
        }
        get i() {
            return this.f;
        }
        get g() {
            return this.a;
        }
        static k(a, b, c) {
            if (c == 1 && b < a) {
                b += Math.PI * 2;
            }
            if (c == 0 && a < b) {
                a += Math.PI * 2;
            }
            if (c == 0) {
                let d = a;
                a = b;
                b = d;
            }
            return new Tuple$2(Number_$type, Number_$type, a, b);
        }
        h(a) {
            let b = NaN;
            if (this.c == this.b) {
                b = 0;
            }
            else {
                b = (a - this.c) / (this.b - this.c);
            }
            if (this.l == 0) {
                b = 1 - b;
            }
            let c = this.f + (this.a - this.f) * b;
            return c;
        }
        j(a) {
            let b = (a - this.f) / (this.a - this.f);
            if (this.l == 0) {
                b = 1 - b;
            }
            let c = this.c + (this.b - this.c) * b;
            return c;
        }
    }
    RadialGaugeScaler.$t = markType(RadialGaugeScaler, 'RadialGaugeScaler');
    return RadialGaugeScaler;
})();

/*
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.
*/
/**
 * @hidden
 */
let RadialGaugeNeedleFrame = /*@__PURE__*/ (() => {
    class RadialGaugeNeedleFrame extends Base {
        constructor() {
            super();
            this.ad = 0;
            this.ac = 0;
            this.af = 0;
            this.ab = 0;
            this.aj = null;
            this.ak = null;
            this.aa = 0;
            this.ae = 0;
            this.ai = null;
            this.ah = null;
            this.d = null;
            this.b = null;
            this.t = null;
            this.e = null;
            this.f = null;
            this.x = null;
            this.v = null;
            this.w = null;
            this.z = null;
            this.y = null;
            this.u = null;
            this.h = null;
            this.g = null;
            this.c = null;
            this.s = null;
            this.a = null;
            this.q = null;
            this.r = null;
            this.i = null;
            this.l = null;
            this.m = null;
            this.p = null;
            this.j = null;
            this.k = null;
            this.n = null;
            this.o = null;
            this.d = new MorphSegment();
            this.b = new MorphSegment();
            this.t = new MorphSegment();
            this.e = new MorphSegment();
            this.f = new MorphSegment();
            this.x = new MorphSegment();
            this.v = new MorphSegment();
            this.w = new MorphSegment();
            this.z = new MorphSegment();
            this.y = new MorphSegment();
            this.u = new MorphSegment();
            this.h = new MorphSegment();
            this.g = new MorphSegment();
            this.c = new MorphSegment();
            this.s = new MorphSegment();
            this.a = new MorphSegment();
            this.q = new MorphSegment();
            this.r = new MorphSegment();
            this.i = new MorphSegment();
            this.l = new MorphSegment();
            this.m = new MorphSegment();
            this.p = new MorphSegment();
            this.j = new MorphSegment();
            this.k = new MorphSegment();
            this.n = new MorphSegment();
            this.o = new MorphSegment();
        }
        ag(a, b, c) {
            this.ad = b.ad + (c.ad - b.ad) * a;
            this.ac = b.ac + (c.ac - b.ac) * a;
            this.af = b.af + (c.af - b.af) * a;
            this.ab = b.ab + (c.ab - b.ab) * a;
            this.aj = BrushUtil.n(b.aj, a, c.aj, 0);
            this.ak = BrushUtil.n(b.ak, a, c.ak, 0);
            this.ae = b.ae + (c.ae - b.ae) * a;
            this.aa = b.aa + (c.aa - b.aa) * a;
            this.ah = BrushUtil.n(b.ah, a, c.ah, 0);
            this.ai = BrushUtil.n(b.ai, a, c.ai, 0);
            this.d.j(a, b.d, c.d);
            this.b.j(a, b.b, c.b);
            this.t.j(a, b.t, c.t);
            this.e.j(a, b.e, c.e);
            this.f.j(a, b.f, c.f);
            this.x.j(a, b.x, c.x);
            this.v.j(a, b.v, c.v);
            this.w.j(a, b.w, c.w);
            this.z.j(a, b.z, c.z);
            this.y.j(a, b.y, c.y);
            this.u.j(a, b.u, c.u);
            this.h.j(a, b.h, c.h);
            this.g.j(a, b.g, c.g);
            this.c.j(a, b.c, c.c);
            this.s.j(a, b.s, c.s);
            this.a.j(a, b.a, c.a);
            this.q.j(a, b.q, c.q);
            this.r.j(a, b.r, c.r);
            this.i.j(a, b.i, c.i);
            this.l.j(a, b.l, c.l);
            this.m.j(a, b.m, c.m);
            this.p.j(a, b.p, c.p);
            this.j.j(a, b.j, c.j);
            this.k.j(a, b.k, c.k);
            this.n.j(a, b.n, c.n);
            this.o.j(a, b.o, c.o);
        }
        am(a, b, c) {
            let d = new PathGeometry();
            let e = new PathFigure();
            let f = { $type: Point_$type, x: NaN, y: NaN };
            f = this.d.l(f, e, a, b, c);
            f = this.b.l(f, e, a, b, c);
            f = this.t.l(f, e, a, b, c);
            f = this.e.l(f, e, a, b, c);
            f = this.f.l(f, e, a, b, c);
            f = this.x.l(f, e, a, b, c);
            f = this.v.l(f, e, a, b, c);
            f = this.w.l(f, e, a, b, c);
            f = this.z.l(f, e, a, b, c);
            f = this.y.l(f, e, a, b, c);
            f = this.u.l(f, e, a, b, c);
            f = this.h.l(f, e, a, b, c);
            f = this.g.l(f, e, a, b, c);
            f = this.c.l(f, e, a, b, c);
            f = this.s.l(f, e, a, b, c);
            f = this.a.l(f, e, a, b, c);
            e._isClosed = true;
            d.c.add(e);
            let g = new PathFigure();
            if (this.q.f.count > 0 || this.r.f.count > 0) {
                f = this.q.l(f, g, a, b, c);
                f = this.r.l(f, g, a, b, c);
                g._isClosed = true;
                d.c.add(g);
            }
            return d;
        }
        an(a, b, c) {
            let d = new PathGeometry();
            let e = { $type: Point_$type, x: NaN, y: NaN };
            let f = new PathFigure();
            if (this.m.f.count > 0 || this.p.f.count > 0) {
                e = this.m.l(e, f, a, b, c);
                e = this.p.l(e, f, a, b, c);
                f._isClosed = true;
                d.c.add(f);
            }
            let g = new PathFigure();
            if (this.n.f.count > 0 || this.o.f.count > 0) {
                e = this.n.l(e, g, a, b, c);
                e = this.o.l(e, g, a, b, c);
                g._isClosed = true;
                d.c.add(g);
            }
            return d;
        }
        al(a, b, c) {
            let d = new PathGeometry();
            let e = { $type: Point_$type, x: NaN, y: NaN };
            let f = new PathFigure();
            if (this.i.f.count > 0 || this.l.f.count > 0) {
                e = this.i.l(e, f, a, b, c);
                e = this.l.l(e, f, a, b, c);
                f._isClosed = true;
                d.c.add(f);
            }
            let g = new PathFigure();
            if (this.j.f.count > 0 || this.k.f.count > 0) {
                e = this.j.l(e, g, a, b, c);
                e = this.k.l(e, g, a, b, c);
                g._isClosed = true;
                d.c.add(g);
            }
            return d;
        }
    }
    RadialGaugeNeedleFrame.$t = markType(RadialGaugeNeedleFrame, 'RadialGaugeNeedleFrame');
    return RadialGaugeNeedleFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let RadialGaugeScaleFrameLabel = /*@__PURE__*/ (() => {
    class RadialGaugeScaleFrameLabel extends Base {
        constructor() {
            super(...arguments);
            this.b = 0;
            this.h = null;
            this.e = 0;
            this.d = 0;
            this.f = 0;
            this.g = 0;
            this.c = 0;
            this.i = null;
            this.a = null;
        }
    }
    RadialGaugeScaleFrameLabel.$t = markType(RadialGaugeScaleFrameLabel, 'RadialGaugeScaleFrameLabel');
    return RadialGaugeScaleFrameLabel;
})();

/*
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.
*/
/**
 * @hidden
 */
let RadialGaugeRangeFrame = /*@__PURE__*/ (() => {
    class RadialGaugeRangeFrame extends Base {
        constructor() {
            super(...arguments);
            this.f = 0;
            this.g = 0;
            this.e = 0;
            this.b = 0;
            this.c = 0;
            this.d = 0;
            this.k = null;
            this.l = null;
            this.h = 0;
        }
        static a(a, b, c, d) {
            let e = new RadialGaugeRangeFrame();
            e.k = BrushUtil.n(c.k, a, d.k, 0);
            e.l = BrushUtil.n(c.l, a, d.l, 0);
            e.h = b * c.h + a * d.h;
            e.f = b * c.f + a * d.f;
            e.g = b * c.g + a * d.g;
            e.e = b * c.e + a * d.e;
            e.b = b * c.b + a * d.b;
            e.c = b * c.c + a * d.c;
            e.d = b * c.d + a * d.d;
            return e;
        }
        m(a, b, c) {
            let d = new PathGeometry();
            let e = new PathFigure();
            let f = 4;
            let g = 1 / a;
            let h = false;
            if (Math.abs(this.g - this.d) < g) {
                h = true;
            }
            let i = false;
            if (Math.abs(this.f - this.c) < g) {
                i = true;
            }
            let j = false;
            if ((this.b - this.e) >= 2 * Math.PI) {
                j = true;
            }
            if (i && h && j) {
                let k = this.i(0, Math.PI, this.g, a, b, c, true);
                e._startPoint = k.c;
                let l = this.i(Math.PI, 0, this.g, a, b, c, true);
                let m = new PathFigure();
                let n = this.i(0, Math.PI, this.f, a, b, c, false);
                m._startPoint = n.c;
                let o = this.i(Math.PI, 0, this.f, a, b, c, false);
                e._segments.add(k.d);
                e._segments.add(l.d);
                m._segments.add(n.d);
                m._segments.add(o.d);
                d.c.add(e);
                d.c.add(m);
                return d;
            }
            let p = null;
            if (h) {
                let q = this.i(this.e, this.b, Math.max(0, this.g), a, b, c, true);
                e._startPoint = q.c;
                p = q.d;
            }
            else {
                let r = this.j(this.e, this.b, this.g, this.d, a, b, c, true, f);
                e._startPoint = r.c;
                p = r.d;
            }
            let s = null;
            let t = new LineSegment(1);
            if (i) {
                let u = this.i(this.e, this.b, Math.max(0, this.f), a, b, c, false);
                s = u.d;
                t.c = u.c;
            }
            else {
                let v = this.j(this.e, this.b, this.f, this.c, a, b, c, false, f);
                s = v.d;
                t.c = v.c;
            }
            e._segments.add(p);
            e._segments.add(t);
            e._segments.add(s);
            e._isFilled = true;
            e._isClosed = true;
            d.c.add(e);
            return d;
        }
        j(a, b, c, d, e, f, g, h, i) {
            let j = new PolyLineSegment();
            let k = e * c;
            let l = e * d;
            let m = Math.max(k, l);
            let n = m + m;
            let o = Math.asin(i / n) * 2;
            let p;
            let q;
            let r;
            let s = l - k;
            let t = Math.abs(b - a);
            let u = j._points;
            if (h) {
                let v;
                for (v = a; v < b; v += o) {
                    r = (v - a) / t;
                    q = k + r * s;
                    p = { $type: Point_$type, x: f + Math.cos(v) * q, y: g + Math.sin(v) * q };
                    u.add(p);
                }
                v = b;
                r = (v - a) / t;
                q = k + r * s;
                p = { $type: Point_$type, x: f + Math.cos(v) * q, y: g + Math.sin(v) * q };
                u.add(p);
            }
            else {
                let w;
                for (w = b; w > a; w -= o) {
                    r = (w - b) / t;
                    q = l + r * s;
                    p = { $type: Point_$type, x: f + Math.cos(w) * q, y: g + Math.sin(w) * q };
                    u.add(p);
                }
                w = a;
                r = (w - b) / t;
                q = l + r * s;
                p = { $type: Point_$type, x: f + Math.cos(w) * q, y: g + Math.sin(w) * q };
                u.add(p);
            }
            return new Tuple$2(Point_$type, PathSegment.$, u._inner[0], j);
        }
        i(a, b, c, d, e, f, g) {
            let h = c * d;
            let i = new ArcSegment();
            i.d = g ? 1 : 0;
            i.b = b - a > Math.PI;
            i.f = new Size(1, h, h);
            let j = g ? b : a;
            let k = g ? a : b;
            i.e = { $type: Point_$type, x: e + Math.cos(j) * h, y: f + Math.sin(j) * h };
            let l = { $type: Point_$type, x: e + Math.cos(k) * h, y: f + Math.sin(k) * h };
            return new Tuple$2(Point_$type, PathSegment.$, l, i);
        }
    }
    RadialGaugeRangeFrame.$t = markType(RadialGaugeRangeFrame, 'RadialGaugeRangeFrame');
    return RadialGaugeRangeFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let RadialGaugeScaleFrame = /*@__PURE__*/ (() => {
    class RadialGaugeScaleFrame extends Base {
        constructor() {
            super();
            this.l = null;
            this.k = null;
            this.c = null;
            this.g = null;
            this.h = null;
            this.f = null;
            this.i = null;
            this.j = null;
            this.t = 0;
            this.e = null;
            this.o = null;
            this.p = null;
            this.m = null;
            this.ab = 0;
            this.y = 0;
            this.ad = 0;
            this.ac = 0;
            this.v = 0;
            this.u = 0;
            this.aa = 0;
            this.x = 0;
            this.ak = null;
            this.ae = 0;
            this.w = 0;
            this.ai = null;
            this.aj = null;
            this.d = null;
            this.z = 0;
            this.r = null;
            this.r = new List$1(RadialGaugeRangeFrame.$, 0);
            this.l = new Array(0);
            this.k = new Array(0);
            this.c = new Array(0);
            this.g = new Array(0);
            this.h = new Array(0);
            this.f = new Array(0);
            this.i = new Array(0);
            this.j = new Array(0);
            this.e = new Array(0);
            this.d = new Array(0);
            this.o = new RadialGaugeScaleFrameLabel();
            this.p = new RadialGaugeScaleFrameLabel();
            this.m = new RadialGaugeScaleFrameLabel();
        }
        a(a, b, c, d) {
            let e = Math.max(c.length, d.length);
            let f = Math.min(c.length, d.length);
            if (b.length != e) {
                b = new Array(e);
            }
            let g = 0;
            if (c.length > 0) {
                g = c[c.length - 1];
            }
            let h = 0;
            if (d.length > 0) {
                h = d[d.length - 1];
            }
            let i = c.length > d.length;
            let j = 0;
            for (j = 0; j < f; j++) {
                b[j] = c[j] + (d[j] - c[j]) * a;
            }
            let k;
            let l;
            for (j = f; j < e; j++) {
                if (i) {
                    k = c[j];
                    l = h;
                }
                else {
                    k = g;
                    l = d[j];
                }
                b[j] = k + (l - k) * a;
            }
            return b;
        }
        b(a, b, c, d) {
            let e = Math.max(c.length, d.length);
            let f = Math.min(c.length, d.length);
            if (b.length != e) {
                b = new Array(e);
            }
            let g = null;
            if (c.length > 0) {
                g = c[c.length - 1];
            }
            let h = null;
            if (d.length > 0) {
                h = d[d.length - 1];
            }
            let i = c.length > d.length;
            let j = 0;
            for (j = 0; j < f; j++) {
                b[j] = d[j];
            }
            let k;
            let l;
            for (j = f; j < e; j++) {
                if (i) {
                    k = c[j];
                    l = h;
                }
                else {
                    k = g;
                    l = d[j];
                }
                if (l != null) {
                    b[j] = l;
                }
                else {
                    b[j] = k;
                }
            }
            return b;
        }
        af(a, b, c) {
            this.aj = BrushUtil.n(b.aj, a, c.aj, 0);
            this.ak = BrushUtil.n(b.ak, a, c.ak, 0);
            this.ai = BrushUtil.n(b.ai, a, c.ai, 0);
            this.ab = this.s(a, b.ab, c.ab);
            this.y = this.s(a, b.y, c.y);
            this.aa = this.s(a, b.aa, c.aa);
            this.x = this.s(a, b.x, c.x);
            this.z = this.s(a, b.z, c.z);
            this.t = this.s(a, b.t, c.t);
            this.ad = this.s(a, b.ad, c.ad);
            this.ac = this.s(a, b.ac, c.ac);
            this.ae = this.s(a, b.ae, c.ae);
            this.v = this.s(a, b.v, c.v);
            this.u = this.s(a, b.u, c.u);
            this.w = this.s(a, b.w, c.w);
            this.l = this.a(a, this.l, b.l, c.l);
            this.k = this.a(a, this.k, b.k, c.k);
            this.c = this.a(a, this.c, b.c, c.c);
            this.h = this.a(a, this.h, b.h, c.h);
            this.f = this.a(a, this.f, b.f, c.f);
            this.i = this.a(a, this.i, b.i, c.i);
            this.j = this.a(a, this.j, b.j, c.j);
            this.g = this.b(a, this.g, b.g, c.g);
            this.e = InterpolationUtil.a(FontInfo.$, this.e, a, b.e, c.e, () => null, (d, e, f, g) => this.q(d, f, g));
            this.d = InterpolationUtil.a(Brush.$, this.d, a, b.d, c.d, () => null, (d, e, f, g) => this.ah(d, f, g));
            this.p = this.n(a, b.p, c.p);
            this.o = this.n(a, b.o, c.o);
            this.m = this.n(a, b.m, c.m);
            this.ag(a, this.r, b.r, c.r);
        }
        ag(a, b, c, d) {
            InterpolationUtil.d(RadialGaugeRangeFrame.$, b, a, c, d, () => new RadialGaugeRangeFrame(), RadialGaugeRangeFrame.a);
        }
        ah(a, b, c) {
            if (b == null && c == null) {
                return null;
            }
            else {
                return BrushUtil.n(b, a, c, 0);
            }
        }
        s(a, b, c) {
            return b + (c - b) * a;
        }
        q(a, b, c) {
            let d = new FontInfo();
            FontUtil.interpolateFont(d, a, b, c);
            return d;
        }
        n(a, b, c) {
            b.i = this.ah(a, b.i, c.i);
            b.c = this.s(a, b.c, c.c);
            b.b = this.s(a, b.b, c.b);
            b.f = this.s(a, b.f, c.f);
            b.g = this.s(a, b.g, c.g);
            b.e = this.s(a, b.e, c.e);
            b.d = this.s(a, b.d, c.d);
            b.h = c.h;
            b.a = this.q(a, b.a, c.a);
            return b;
        }
    }
    RadialGaugeScaleFrame.$t = markType(RadialGaugeScaleFrame, 'RadialGaugeScaleFrame');
    return RadialGaugeScaleFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let BackingFrame = /*@__PURE__*/ (() => {
    class BackingFrame extends Base {
        constructor() {
            super();
            this.l = null;
            this.m = null;
            this.h = 0;
            this.g = 0;
            this.c = 0;
            this.f = 0;
            this.e = 0;
            this.d = 0;
            this.b = 0;
        }
        k(a, b, c) {
            this.h = b.h + (c.h - b.h) * a;
            this.l = BrushUtil.n(b.l, a, c.l, 0);
            this.m = BrushUtil.n(b.m, a, c.m, 0);
            this.g = b.g + (c.g - b.g) * a;
            this.c = b.c + (c.c - b.c) * a;
            this.e = b.e + (c.e - b.e) * a;
            this.d = b.d + (c.d - b.d) * a;
            this.b = b.b + (c.b - b.b) * a;
            this.f = b.f + (c.f - b.f) * a;
        }
        i(a, b, c, d) {
            a._startPoint = { $type: Point_$type, x: b * this.e + c, y: 0 + d };
            let e = ((() => {
                let $ret = new ArcSegment();
                $ret.e = { $type: Point_$type, x: -1 * b * this.e + c, y: 0 + d };
                $ret.b = false;
                $ret.d = 1;
                $ret.f = new Size(1, b * this.e, b * this.e);
                return $ret;
            })());
            let f = ((() => {
                let $ret = new ArcSegment();
                $ret.e = { $type: Point_$type, x: b * this.e + c, y: 0 + d };
                $ret.b = false;
                $ret.d = 1;
                $ret.f = new Size(1, b * this.e, b * this.e);
                return $ret;
            })());
            a._segments.add(e);
            a._segments.add(f);
            a._isClosed = true;
        }
        n(a, b, c) {
            let d = new PathGeometry();
            let e = new PathFigure();
            if (this.g == this.c) {
                this.i(e, a, b, c);
            }
            else {
                let f = this.e;
                let g = this.d;
                let h = this.g;
                let i = this.c;
                let j = this.f;
                let k = h;
                let l = i;
                h -= j;
                i += j;
                if ((i - h) > 2 * Math.PI) {
                    this.i(e, a, b, c);
                }
                else {
                    this.j(e, a, b, c);
                }
            }
            e._isClosed = true;
            d.c.add(e);
            return d;
        }
        a(a, b) {
            return Math.abs(a - b) < 1E-05;
        }
        j(a, b, c, d) {
            let e = this.e;
            let f = this.d;
            let g = this.g;
            let h = this.c;
            let i = this.f;
            let j = g;
            let k = h;
            g -= i;
            h += i;
            let l = Math.sin(g);
            let m = Math.cos(g);
            let n = Math.sin(h);
            let o = Math.cos(h);
            let p = this.b;
            let q = b * e;
            let r = b * f;
            if (p * 2 > (q - r)) {
                p = (q - r) / 2;
            }
            let s = p / (b - p);
            let t = Math.atan(s);
            let u = q - p;
            let v = r + p;
            let w = Math.sin(g - t);
            let x = Math.sin(g + t);
            let y = Math.cos(g - t);
            let z = Math.cos(g + t);
            let aa = Math.sin(h - t);
            let ab = Math.sin(h + t);
            let ac = Math.cos(h - t);
            let ad = Math.cos(h + t);
            let ae = Math.sin(j);
            let af = Math.sin(k);
            let ag = Math.cos(j);
            let ah = Math.cos(k);
            a._startPoint = { $type: Point_$type, x: m * u + c, y: l * u + d };
            let ai = ((() => {
                let $ret = new ArcSegment();
                $ret.e = { $type: Point_$type, x: z * q + c, y: x * q + d };
                $ret.b = (t * 2) > Math.PI;
                $ret.d = 1;
                $ret.f = new Size(1, p, p);
                return $ret;
            })());
            let aj = ((() => {
                let $ret = new ArcSegment();
                $ret.e = { $type: Point_$type, x: ac * q + c, y: aa * q + d };
                $ret.b = ((h - t) - (g + t)) > Math.PI;
                $ret.d = 1;
                $ret.f = new Size(1, q, q);
                return $ret;
            })());
            let ak = ((() => {
                let $ret = new ArcSegment();
                $ret.e = { $type: Point_$type, x: o * u + c, y: n * u + d };
                $ret.b = (t * 2) > Math.PI;
                $ret.d = 1;
                $ret.f = new Size(1, p, p);
                return $ret;
            })());
            let al = { $type: Point_$type, x: ah * q + c, y: af * q + d };
            let am = { $type: Point_$type, x: ah * r + c, y: af * r + d };
            let an = { $type: Point_$type, x: o * q + c, y: n * q + d };
            let ao = { $type: Point_$type, x: o * r + c, y: n * r + d };
            let ap = an.y;
            let aq = an.x;
            if (al.x - am.x != 0) {
                aq = c;
                let ar = (al.y - am.y) / (al.x - am.x);
                ap = ar * (c - an.x) + an.y;
            }
            ao = { $type: Point_$type, x: c, y: ap };
            if (this.a(ao.x, an.x) && this.a(ao.y, an.y)) {
                ao = am;
            }
            let as = GeometryUtil.r(ao, an, { $type: Point_$type, x: c, y: d }, r);
            let at = { $type: Point_$type, x: ag * q + c, y: ae * q + d };
            let au = { $type: Point_$type, x: ag * r + c, y: ae * r + d };
            let av = { $type: Point_$type, x: m * q + c, y: l * q + d };
            let aw = { $type: Point_$type, x: m * r + c, y: l * r + d };
            let ax = av.y;
            let ay = av.x;
            if (at.x - au.x != 0) {
                ay = c;
                let az = (at.y - au.y) / (at.x - au.x);
                ax = az * (c - av.x) + av.y;
            }
            aw = { $type: Point_$type, x: ay, y: ax };
            if (this.a(aw.x, av.x) && this.a(aw.y, av.y)) {
                aw = au;
            }
            let a0 = GeometryUtil.r(aw, av, { $type: Point_$type, x: c, y: d }, r);
            if (isNaN_(as.c.x) || isNaN_(as.c.y) || isNaN_(as.d.x) || isNaN_(as.d.y) || isNaN_(a0.c.x) || isNaN_(a0.c.y) || isNaN_(a0.d.x) || isNaN_(a0.d.y)) {
                a._startPoint = { $type: Point_$type, x: m * q + c, y: l * q + d };
                a._segments.add(aj);
                let a1 = ((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: m * q + c, y: l * q + d };
                    return $ret;
                })());
                a._segments.add(a1);
            }
            else {
                let a2;
                let a3;
                if ((Math.pow(as.c.x - an.x, 2) + Math.pow(as.c.y - an.y, 2)) < (Math.pow(as.d.x - an.x, 2) + Math.pow(as.d.y - an.y, 2))) {
                    a2 = as.c;
                }
                else {
                    a2 = as.d;
                }
                if ((Math.pow(a0.c.x - av.x, 2) + Math.pow(a0.c.y - av.y, 2)) < (Math.pow(a0.d.x - av.x, 2) + Math.pow(a0.d.y - av.y, 2))) {
                    a3 = a0.c;
                }
                else {
                    a3 = a0.d;
                }
                if ((Math.pow(a3.x - an.x, 2) + Math.pow(a3.y - an.y, 2)) <= (Math.pow(a2.x - an.x, 2) + Math.pow(a2.y - an.y, 2))) {
                    a._startPoint = { $type: Point_$type, x: m * q + c, y: l * q + d };
                    a._segments.add(aj);
                    let a4 = ((() => {
                        let $ret = new LineSegment(1);
                        $ret.c = { $type: Point_$type, x: m * q + c, y: l * q + d };
                        return $ret;
                    })());
                    a._segments.add(a4);
                }
                else {
                    a._segments.add(ai);
                    a._segments.add(aj);
                    a._segments.add(ak);
                    let a5 = ((() => {
                        let $ret = new LineSegment(1);
                        $ret.c = a2;
                        return $ret;
                    })());
                    a._segments.add(a5);
                    let a6 = GeometryUtil.j({ $type: Point_$type, x: c, y: d }, a2);
                    let a7 = GeometryUtil.j({ $type: Point_$type, x: c, y: d }, a3);
                    while (a7 < a6) {
                        a7 += 2 * Math.PI;
                    }
                    let a8 = ((() => {
                        let $ret = new ArcSegment();
                        $ret.e = a3;
                        $ret.b = a7 - a6 > Math.PI;
                        $ret.d = 1;
                        $ret.f = new Size(1, r, r);
                        return $ret;
                    })());
                    a._segments.add(a8);
                    let a9 = ((() => {
                        let $ret = new LineSegment(1);
                        $ret.c = { $type: Point_$type, x: m * u + c, y: l * u + d };
                        return $ret;
                    })());
                    a._segments.add(a9);
                }
            }
        }
    }
    BackingFrame.$t = markType(BackingFrame, 'BackingFrame');
    return BackingFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let RadialGaugeFrame = /*@__PURE__*/ (() => {
    class RadialGaugeFrame extends Base {
        constructor() {
            super();
            this.c = null;
            this.b = null;
            this.d = null;
            this.a = null;
            this.e = 0;
            this.c = new RadialGaugeNeedleFrame();
            this.b = new RadialGaugeNeedleFrame();
            this.d = new RadialGaugeScaleFrame();
            this.a = new BackingFrame();
        }
        f(a, b, c) {
            this.e = b.e + (c.e - b.e) * a;
            this.c.ag(a, b.c, c.c);
            this.b.ag(a, b.b, c.b);
            this.d.af(a, b.d, c.d);
            this.a.k(a, b.a, c.a);
        }
    }
    RadialGaugeFrame.$t = markType(RadialGaugeFrame, 'RadialGaugeFrame');
    return RadialGaugeFrame;
})();

/*
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.
*/
/**
 * @hidden
 */
let FormatRadialGaugeLabelEventArgs = /*@__PURE__*/ (() => {
    class FormatRadialGaugeLabelEventArgs extends EventArgs {
        constructor() {
            super(...arguments);
            this.actualMinimumValue = 0;
            this.actualMaximumValue = 0;
            this.startAngle = 0;
            this.endAngle = 0;
            this.angle = 0;
            this.value = 0;
            this.label = null;
            this.extent = 0;
        }
    }
    FormatRadialGaugeLabelEventArgs.$t = markType(FormatRadialGaugeLabelEventArgs, 'FormatRadialGaugeLabelEventArgs', EventArgs.$);
    return FormatRadialGaugeLabelEventArgs;
})();

/*
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.
*/
/**
 * @hidden
 */
let AlignRadialGaugeLabelEventArgs = /*@__PURE__*/ (() => {
    class AlignRadialGaugeLabelEventArgs extends FormatRadialGaugeLabelEventArgs {
        constructor() {
            super(...arguments);
            this.width = 0;
            this.height = 0;
            this.offsetX = 0;
            this.offsetY = 0;
            this.brush = null;
            this.font = 0;
        }
    }
    AlignRadialGaugeLabelEventArgs.$t = markType(AlignRadialGaugeLabelEventArgs, 'AlignRadialGaugeLabelEventArgs', FormatRadialGaugeLabelEventArgs.$);
    return AlignRadialGaugeLabelEventArgs;
})();

/*
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.
*/
/**
 * @hidden
 */
let RadialGaugeNeedleParameters = /*@__PURE__*/ (() => {
    class RadialGaugeNeedleParameters extends Base {
        constructor() {
            super(...arguments);
            this.m = 0;
            this.k = 0;
            this.n = 0;
            this.l = 0;
            this.e = 0;
            this.d = 0;
            this.q = 0;
            this.p = 0;
            this.j = 0;
            this.b = 0;
            this.c = 0;
            this.i = 0;
            this.r = null;
            this.s = null;
            this.h = 0;
            this.t = null;
            this.u = null;
            this.o = 0;
            this.g = 0;
            this.f = 0;
        }
        a() {
            let a = new RadialGaugeNeedleParameters();
            a.m = this.m;
            a.k = this.k;
            a.n = this.n;
            a.l = this.l;
            a.e = this.e;
            a.d = this.d;
            a.q = this.q;
            a.p = this.p;
            a.b = this.b;
            a.c = this.c;
            a.i = this.i;
            a.r = this.r;
            a.s = this.s;
            a.h = this.h;
            a.t = this.t;
            a.u = this.u;
            a.o = this.o;
            a.g = this.g;
            a.f = this.f;
            return a;
        }
    }
    RadialGaugeNeedleParameters.$t = markType(RadialGaugeNeedleParameters, 'RadialGaugeNeedleParameters');
    return RadialGaugeNeedleParameters;
})();

/*
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.
*/
/**
 * @hidden
 */
let RadialGaugeNeedlePreparer = /*@__PURE__*/ (() => {
    class RadialGaugeNeedlePreparer extends Base {
        constructor() {
            super(...arguments);
            this.b = null;
        }
        e(a) {
            let b = this.b;
            a.aj = b.t;
            a.ak = b.u;
            a.ah = b.r;
            a.ai = b.s;
            a.ae = b.o;
            a.aa = b.h;
            switch (b.b) {
                case 0:
                    this.i(a);
                    break;
                case 1:
                    this.j(a);
                    break;
                case 2:
                    this.n(a);
                    break;
                case 4:
                    this.l(a);
                    break;
                case 5:
                    this.k(a);
                    break;
                case 3:
                    this.g(a);
                    break;
                case 7:
                    this.h(a);
                    break;
                case 8:
                    this.m(a);
                    break;
                case 6:
                    this.o(a);
                    break;
            }
            switch (b.c) {
                case 3:
                    this.d(a, true, false);
                    break;
                case 5:
                    this.d(a, false, false);
                    break;
                case 4:
                    this.d(a, true, true);
                    break;
                case 6:
                    this.d(a, false, true);
                    break;
            }
        }
        d(a, b, c) {
            let d = this.a();
            let e = d.i;
            let f = d.g;
            let g = d.f;
            let h = a.m;
            if (b) {
                h = a.i;
            }
            let i = h.f;
            h.b = true;
            h.c = true;
            h.d = false;
            h.h = e;
            i.add({ $type: Point_$type, x: 0 + e, y: 0 });
            i.add({ $type: Point_$type, x: 0 - e, y: 0 });
            h = a.p;
            if (b) {
                h = a.l;
            }
            i = h.f;
            h.b = true;
            h.c = true;
            h.d = true;
            h.h = e;
            i.add({ $type: Point_$type, x: 0 - e, y: 0 });
            i.add({ $type: Point_$type, x: 0 + e, y: 0 });
            if (c) {
                h = a.n;
                if (b) {
                    h = a.j;
                }
                i = h.f;
                h.b = true;
                h.c = false;
                h.d = false;
                h.h = g;
                i.add({ $type: Point_$type, x: 0 + g, y: 0 });
                i.add({ $type: Point_$type, x: 0 - g, y: 0 });
                h = a.o;
                if (b) {
                    h = a.k;
                }
                i = h.f;
                h.b = true;
                h.c = false;
                h.d = true;
                h.h = g;
                i.add({ $type: Point_$type, x: 0 - g, y: 0 });
                i.add({ $type: Point_$type, x: 0 + g, y: 0 });
            }
        }
        o(a) {
            this.f(a, false, true, false, true);
        }
        m(a) {
            this.f(a, false, false, true, true);
        }
        l(a) {
            this.f(a, false, false, true, false);
        }
        n(a) {
            this.f(a, false, true, false, false);
        }
        h(a) {
            this.f(a, false, false, false, true);
        }
        c(a, b, c, d, e) {
            let f = 0;
            if (c == a) {
                f = 0;
            }
            else {
                f = (e - a) / (c - a);
            }
            let g = b + (d - b) * f;
            return g;
        }
        f(a, b, c, d, e) {
            this.p(a);
            let f = this.a();
            a.ad = f.m;
            a.ac = f.k;
            a.af = 0;
            if (!isNaN_(f.l)) {
                a.af = Math.max(a.af, f.l);
            }
            if (!isNaN_(f.i)) {
                a.af = Math.max(a.af, f.i);
            }
            if (!isNaN_(f.q)) {
                a.af = Math.max(a.af, f.q);
            }
            if (!isNaN_(f.e)) {
                a.af = Math.max(a.af, f.e);
            }
            if (c) {
                f.p = f.k;
                f.q = 0;
            }
            if (d) {
                f.p = f.k;
                f.q = f.l;
            }
            if (b) {
                let g = Math.max(f.n, f.l);
                f.n = g;
                f.l = g;
                f.p = f.k;
                f.q = f.l;
            }
            if (isNaN_(f.p)) {
                f.p = f.k;
            }
            let h = f.c == 1 || f.c == 2;
            let i = f.n;
            let j = f.l;
            if (!d && !b) {
                j = 0;
            }
            let k = f.q;
            let l = f.i;
            let m = f.m;
            let n = f.k;
            let o = f.d;
            let p = f.p;
            let q = f.e;
            let r = true;
            let s = true;
            if (isNaN_(p)) {
                r = false;
                p = n;
            }
            if (isNaN_(o)) {
                s = false;
                o = m;
            }
            let t = f.f;
            let u = f.g;
            let v = 0;
            let w = u;
            let x = u;
            let y = this.c(m, i, p, k, u);
            let z = y;
            let aa = f.c == 2;
            if (h) {
                let ab = GeometryUtil.r({ $type: Point_$type, x: m, y: i }, { $type: Point_$type, x: p, y: k }, { $type: Point_$type, x: 0, y: 0 }, l);
                if (isNaN_(ab.c.x) || isNaN_(ab.c.y) || isNaN_(ab.d.x) || isNaN_(ab.d.y)) {
                    h = false;
                }
                else {
                    let ac = ab.c;
                    let ad = ab.d;
                    w = ac.x;
                    x = ad.x;
                    y = ac.y;
                    z = ad.y;
                    if (w > x) {
                        let ae = w;
                        w = x;
                        x = ae;
                        ae = y;
                        y = z;
                        z = ae;
                    }
                }
            }
            if (aa) {
                let af = GeometryUtil.r({ $type: Point_$type, x: m, y: i }, { $type: Point_$type, x: p, y: k }, { $type: Point_$type, x: 0, y: 0 }, t);
                if ((isNaN_(af.c.x) || isNaN_(af.c.y) || isNaN_(af.d.x) || isNaN_(af.d.y)) || h) {
                    aa = true;
                }
                else {
                    aa = false;
                }
            }
            if (m > x || n < w) {
                h = false;
                w = m;
                x = m;
            }
            let ag = false;
            let ah = false;
            if (h && m >= w) {
                ag = true;
            }
            if (h && n <= x) {
                ah = true;
            }
            if (isNaN_(o) || o > w) {
                o = w;
            }
            if (p < x) {
                p = x;
            }
            let ai = e;
            let aj = l;
            let ak = l;
            if (o + q > w) {
                ai = false;
            }
            let al = o;
            let am = i;
            let an = o;
            let ao = i;
            let ap = w;
            let aq = x;
            let ar = y;
            let as = z;
            let at = w;
            let au = x;
            let av = y;
            let aw = z;
            if (ai) {
                let ax = GeometryUtil.r({ $type: Point_$type, x: m, y: i }, { $type: Point_$type, x: p, y: k }, { $type: Point_$type, x: o, y: 0 }, q);
                if ((!isNaN_(ax.c.x) && !isNaN_(ax.c.y) && !isNaN_(ax.d.x) && !isNaN_(ax.d.y))) {
                    ai = true;
                    al = ax.c.x;
                    am = ax.c.y;
                    an = ax.d.x;
                    ao = ax.d.y;
                    if (al > an) {
                        let ay = al;
                        al = an;
                        an = ay;
                        ay = am;
                        am = ao;
                        ao = ay;
                    }
                }
                else {
                    ai = false;
                }
            }
            if (ag) {
                ai = false;
            }
            if (ai && m >= al) {
                ag = true;
                aj = q;
                ap = al;
                ar = am;
                aq = an;
                as = ao;
            }
            if (ai && n <= an) {
                ah = true;
                ak = q;
                ak = q;
                at = al;
                av = am;
                au = an;
                aw = ao;
            }
            let az = m;
            let a0 = a.a;
            let a1 = a0.f;
            let a2 = i;
            if (ag) {
                az = ap;
                a0.b = true;
                a0.d = false;
                a0.c = false;
                a0.h = aj;
                o = ap;
                m = ap;
                a2 = ar;
                i = ar;
                h = false;
            }
            if (ah) {
                p = au;
                n = au;
                h = false;
            }
            let a3 = ag || ah || h;
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a0 = a.d;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: a2 });
            az = al;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a0 = a.b;
            a1 = a0.f;
            if (ai) {
                a0.b = true;
                a0.d = false;
                a0.c = false;
                a0.h = q;
            }
            a1.add({ $type: Point_$type, x: az, y: a2 });
            az = an;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a0 = a.t;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: a2 });
            az = w;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a0 = a.e;
            a1 = a0.f;
            if (a3) {
                a0.b = true;
                a0.d = false;
                a0.c = false;
                a0.h = l;
            }
            a1.add({ $type: Point_$type, x: az, y: a2 });
            az = x;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a0 = a.f;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: a2 });
            az = p;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a0 = a.x;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a0 = a.v;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: a2 });
            az = n;
            a2 = this.c(p, k, n, j, az);
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a0 = a.w;
            a1 = a0.f;
            if (ah) {
                az = au;
                a0.b = true;
                a0.d = false;
                a0.c = false;
                a0.h = ak;
            }
            a1.add({ $type: Point_$type, x: az, y: a2 });
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a0 = a.z;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            az = p;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a0 = a.y;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a0 = a.u;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            az = x;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a0 = a.h;
            a1 = a0.f;
            if (a3) {
                a0.b = true;
                a0.d = false;
                a0.c = false;
                a0.h = l;
            }
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            az = w;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a0 = a.g;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            az = an;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a0 = a.c;
            a1 = a0.f;
            if (ai) {
                a0.b = true;
                a0.d = false;
                a0.c = false;
                a0.h = q;
            }
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            az = al;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a0 = a.s;
            a1 = a0.f;
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            az = m;
            a2 = this.c(m, i, p, k, az);
            a1.add({ $type: Point_$type, x: az, y: -1 * a2 });
            a0 = a.q;
            a1 = a0.f;
            if (aa && a3) {
                a0.b = true;
                a0.c = true;
                a0.d = false;
                a0.h = t;
                a1.add({ $type: Point_$type, x: 0 + t, y: 0 });
                a1.add({ $type: Point_$type, x: 0 - t, y: 0 });
            }
            a0 = a.r;
            a1 = a0.f;
            if (aa && a3) {
                a0.b = true;
                a0.c = true;
                a0.d = true;
                a0.h = t;
                a1.add({ $type: Point_$type, x: 0 - t, y: 0 });
                a1.add({ $type: Point_$type, x: 0 + t, y: 0 });
            }
        }
        g(a) {
            this.f(a, false, false, false, false);
        }
        k(a) {
            this.f(a, true, false, false, true);
        }
        a() {
            let a = this.b;
            let b = this.b.a();
            let c = 0;
            let d = 0.48;
            let e = NaN;
            let f = NaN;
            let g = 0.15;
            let h = 0.1;
            let i = 0.1;
            let j = 0.1;
            let k = 0.14;
            let l = 0.06;
            switch (a.b) {
                case 3:
                    f = 0.4;
                    break;
                case 4:
                    h = 0.06;
                    i = 0.02;
                    break;
                case 7:
                    f = 0.4;
                    c = -0.3;
                    e = -0.2;
                    k = 0.14;
                    break;
                case 5:
                    c = -0.3;
                    e = -0.2;
                    k = 0.14;
                    break;
                case 8:
                    i = 0.06;
                    c = -0.3;
                    e = -0.2;
                    k = 0.14;
                    break;
                case 6:
                    c = -0.3;
                    e = -0.2;
                    k = 0.14;
                    break;
            }
            let m = a.m;
            let n = a.k;
            let o = a.c == 1 || a.c == 2;
            if (isNaN_(m)) {
                m = c;
            }
            if (isNaN_(n)) {
                n = d;
            }
            let p = Math.min(m, n);
            let q = Math.max(m, n);
            m = p;
            n = q;
            let r = a.n;
            if (isNaN_(r)) {
                r = h;
            }
            let s = a.l;
            if (isNaN_(s)) {
                s = i;
            }
            let t = a.i;
            let u = a.f;
            if (isNaN_(t)) {
                t = g;
            }
            if (isNaN_(u)) {
                u = j;
            }
            let v = Math.max(t, u);
            let w = Math.min(t, u);
            t = v;
            u = w;
            let x = a.d;
            if (isNaN_(x)) {
                x = e;
            }
            if (!isNaN_(x)) {
                if (x < m) {
                    x = NaN;
                }
                if (x > 0 && m <= 0) {
                    x = NaN;
                }
                if (x > n) {
                    x = n;
                }
            }
            let y = a.p;
            if (isNaN_(y)) {
                y = f;
            }
            if (!isNaN_(y)) {
                if (y > n) {
                    y = NaN;
                }
                if (y < 0 && n >= 0) {
                    y = NaN;
                }
                if (y < m) {
                    y = m;
                }
            }
            let z = 0;
            if (m > 0) {
                z = m;
            }
            if (n < 0) {
                z = m;
            }
            if (t <= 0) {
                t = 0;
            }
            let aa = a.e;
            let ab = a.q;
            if (isNaN_(aa)) {
                aa = k;
            }
            if (isNaN_(ab)) {
                ab = l;
            }
            b.i = t / 2;
            b.f = u / 2;
            b.d = x;
            b.p = y;
            b.m = m;
            b.k = n;
            b.g = z;
            b.n = r / 2;
            b.l = s / 2;
            b.q = ab / 2;
            b.e = aa / 2;
            return b;
        }
        j(a) {
            this.f(a, true, false, false, false);
        }
        p(a) {
            a.a.k();
            a.d.k();
            a.b.k();
            a.t.k();
            a.e.k();
            a.f.k();
            a.x.k();
            a.v.k();
            a.w.k();
            a.z.k();
            a.y.k();
            a.u.k();
            a.h.k();
            a.g.k();
            a.c.k();
            a.s.k();
            a.q.k();
            a.r.k();
            a.i.k();
            a.l.k();
            a.m.k();
            a.p.k();
            a.j.k();
            a.k.k();
            a.n.k();
            a.o.k();
        }
        i(a) {
            this.p(a);
            let b = 0;
            let c = 0;
            let d = 0;
            let e = 0;
            let f = 0;
            let g = 0;
            let h = 0;
            let i = a.a;
            let j = i.f;
            j.add({ $type: Point_$type, x: b, y: h });
            j.add({ $type: Point_$type, x: b, y: g });
            i = a.d;
            j = i.f;
            j.add({ $type: Point_$type, x: b, y: g });
            j.add({ $type: Point_$type, x: d, y: g });
            i = a.b;
            j = i.f;
            j.add({ $type: Point_$type, x: d, y: g });
            j.add({ $type: Point_$type, x: d, y: g });
            let k = f;
            let l = f;
            i = a.t;
            j = i.f;
            j.add({ $type: Point_$type, x: d, y: g });
            j.add({ $type: Point_$type, x: k, y: g });
            i = a.e;
            j = i.f;
            j.add({ $type: Point_$type, x: k, y: g });
            j.add({ $type: Point_$type, x: l, y: g });
            i = a.f;
            j = i.f;
            j.add({ $type: Point_$type, x: l, y: g });
            j.add({ $type: Point_$type, x: e, y: g });
            i = a.x;
            j = i.f;
            j.add({ $type: Point_$type, x: e, y: g });
            j.add({ $type: Point_$type, x: e, y: g });
            i = a.v;
            j = i.f;
            j.add({ $type: Point_$type, x: e, y: g });
            j.add({ $type: Point_$type, x: c, y: g });
            i = a.w;
            j = i.f;
            j.add({ $type: Point_$type, x: c, y: g });
            j.add({ $type: Point_$type, x: c, y: h });
            i = a.z;
            j = i.f;
            j.add({ $type: Point_$type, x: c, y: h });
            j.add({ $type: Point_$type, x: e, y: h });
            i = a.y;
            j = i.f;
            j.add({ $type: Point_$type, x: e, y: h });
            j.add({ $type: Point_$type, x: e, y: h });
            i = a.u;
            j = i.f;
            j.add({ $type: Point_$type, x: e, y: h });
            j.add({ $type: Point_$type, x: l, y: h });
            i = a.h;
            j = i.f;
            j.add({ $type: Point_$type, x: l, y: h });
            j.add({ $type: Point_$type, x: k, y: h });
            i = a.g;
            j = i.f;
            j.add({ $type: Point_$type, x: k, y: h });
            j.add({ $type: Point_$type, x: d, y: h });
            i = a.c;
            j = i.f;
            j.add({ $type: Point_$type, x: d, y: h });
            j.add({ $type: Point_$type, x: d, y: h });
            i = a.s;
            j = i.f;
            j.add({ $type: Point_$type, x: d, y: h });
            j.add({ $type: Point_$type, x: b, y: h });
        }
    }
    RadialGaugeNeedlePreparer.$t = markType(RadialGaugeNeedlePreparer, 'RadialGaugeNeedlePreparer');
    return RadialGaugeNeedlePreparer;
})();

/*
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.
*/
/**
 * @hidden
 */
let GaugeVisualData = /*@__PURE__*/ (() => {
    class GaugeVisualData extends Base {
        constructor() {
            super(...arguments);
            this._scalePath = null;
            this._needlePath = null;
            this._highlightNeedlePath = null;
            this._backingPath = null;
            this._underlayPath = null;
            this._overlayPath = null;
            this._scale = null;
            this._scaleLabels = null;
            this._titleLabels = null;
            this._subtitleLabels = null;
            this._highlightLabels = null;
            this._scaleTickmarks = null;
            this._needle = null;
            this._highlightNeedle = null;
            this._ranges = null;
            this._name = null;
            this._viewport = null;
        }
        get scalePath() {
            return this._scalePath;
        }
        set scalePath(a) {
            this._scalePath = a;
        }
        get needlePath() {
            return this._needlePath;
        }
        set needlePath(a) {
            this._needlePath = a;
        }
        get highlightNeedlePath() {
            return this._highlightNeedlePath;
        }
        set highlightNeedlePath(a) {
            this._highlightNeedlePath = a;
        }
        get backingPath() {
            return this._backingPath;
        }
        set backingPath(a) {
            this._backingPath = a;
        }
        get underlayPath() {
            return this._underlayPath;
        }
        set underlayPath(a) {
            this._underlayPath = a;
        }
        get overlayPath() {
            return this._overlayPath;
        }
        set overlayPath(a) {
            this._overlayPath = a;
        }
        get scale() {
            return this._scale;
        }
        set scale(a) {
            this._scale = a;
        }
        get scaleLabels() {
            return this._scaleLabels;
        }
        set scaleLabels(a) {
            this._scaleLabels = a;
        }
        get titleLabels() {
            return this._titleLabels;
        }
        set titleLabels(a) {
            this._titleLabels = a;
        }
        get subtitleLabels() {
            return this._subtitleLabels;
        }
        set subtitleLabels(a) {
            this._subtitleLabels = a;
        }
        get highlightLabels() {
            return this._highlightLabels;
        }
        set highlightLabels(a) {
            this._highlightLabels = a;
        }
        get scaleTickmarks() {
            return this._scaleTickmarks;
        }
        set scaleTickmarks(a) {
            this._scaleTickmarks = a;
        }
        get needle() {
            return this._needle;
        }
        set needle(a) {
            this._needle = a;
        }
        get highlightNeedle() {
            return this._highlightNeedle;
        }
        set highlightNeedle(a) {
            this._highlightNeedle = a;
        }
        get ranges() {
            return this._ranges;
        }
        set ranges(a) {
            this._ranges = a;
        }
        get name() {
            return this._name;
        }
        set name(a) {
            this._name = a;
        }
        scaleByViewport() {
            if (this.scalePath != null) {
                this.scalePath.scaleByViewport(this.viewport);
            }
            if (this.needlePath != null) {
                this.needlePath.scaleByViewport(this.viewport);
            }
            if (this.highlightNeedlePath != null) {
                this.highlightNeedlePath.scaleByViewport(this.viewport);
            }
            if (this.backingPath != null) {
                this.backingPath.scaleByViewport(this.viewport);
            }
            if (this.underlayPath != null) {
                this.underlayPath.scaleByViewport(this.viewport);
            }
            if (this.overlayPath != null) {
                this.overlayPath.scaleByViewport(this.viewport);
            }
            if (this.scaleLabels != null) {
                for (let a of fromEnum(this.scaleLabels)) {
                    a.scaleByViewport(this.viewport);
                }
            }
            if (this.titleLabels != null) {
                for (let b of fromEnum(this.titleLabels)) {
                    b.scaleByViewport(this.viewport);
                }
            }
            if (this.subtitleLabels != null) {
                for (let c of fromEnum(this.subtitleLabels)) {
                    c.scaleByViewport(this.viewport);
                }
            }
            if (this.highlightLabels != null) {
                for (let d of fromEnum(this.highlightLabels)) {
                    d.scaleByViewport(this.viewport);
                }
            }
            if (this.scaleTickmarks != null) {
                for (let e of fromEnum(this.scaleTickmarks)) {
                    if (e.tickPath != null) {
                        e.tickPath.scaleByViewport(this.viewport);
                    }
                }
            }
            if (this.ranges != null) {
                for (let f of fromEnum(this.ranges)) {
                    if (f.rangePath != null) {
                        f.rangePath.scaleByViewport(this.viewport);
                    }
                }
            }
        }
        serialize() {
            let a = new StringBuilder(0);
            let b = true;
            a.u("{");
            if (this.scalePath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("scalePath: ");
                a.u(this.scalePath.serialize());
            }
            if (this.needlePath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("needlePath: ");
                a.u(this.needlePath.serialize());
            }
            if (this.highlightNeedlePath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("highlightNeedlePath: ");
                a.u(this.highlightNeedlePath.serialize());
            }
            if (this.backingPath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("backingPath: ");
                a.u(this.backingPath.serialize());
            }
            if (this.underlayPath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("underlayPath: ");
                a.u(this.underlayPath.serialize());
            }
            if (this.overlayPath != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("overlayPath: ");
                a.u(this.overlayPath.serialize());
            }
            if (this.scaleLabels != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                let c = true;
                a.l("scaleLabels: [");
                for (let d of fromEnum(this.scaleLabels)) {
                    if (c) {
                        c = false;
                    }
                    else {
                        a.l(", ");
                    }
                    a.u(d.serialize());
                }
                a.u("]");
            }
            if (this.titleLabels != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                let e = true;
                a.l("titleLabels: [");
                for (let f of fromEnum(this.titleLabels)) {
                    if (e) {
                        e = false;
                    }
                    else {
                        a.l(", ");
                    }
                    a.u(f.serialize());
                }
                a.u("]");
            }
            if (this.subtitleLabels != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                let g = true;
                a.l("subtitleLabels: [");
                for (let h of fromEnum(this.subtitleLabels)) {
                    if (g) {
                        g = false;
                    }
                    else {
                        a.l(", ");
                    }
                    a.u(h.serialize());
                }
                a.u("]");
            }
            if (this.highlightLabels != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                let i = true;
                a.l("highlightLabels: [");
                for (let j of fromEnum(this.highlightLabels)) {
                    if (i) {
                        i = false;
                    }
                    else {
                        a.l(", ");
                    }
                    a.u(j.serialize());
                }
                a.u("]");
            }
            if (this.scaleTickmarks != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                let k = true;
                a.l("scaleTickmarks: [");
                for (let l of fromEnum(this.scaleTickmarks)) {
                    if (k) {
                        k = false;
                    }
                    else {
                        a.l(", ");
                    }
                    a.u(l.serialize());
                }
                a.u("]");
            }
            if (this.needle != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("needle: ");
                a.u(this.needle.serialize());
            }
            if (this.highlightNeedle != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("highlightNeedle: ");
                a.u(this.highlightNeedle.serialize());
            }
            if (this.ranges != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                let m = true;
                a.l("ranges: [");
                for (let n of fromEnum(this.ranges)) {
                    if (m) {
                        m = false;
                    }
                    else {
                        a.l(", ");
                    }
                    a.u(n.serialize());
                }
                a.u("]");
            }
            if (this.name != null) {
                if (b) {
                    b = false;
                }
                else {
                    a.l(", ");
                }
                a.l("name: '");
                a.l(this.name);
                a.u("'");
            }
            if (b) {
                b = false;
            }
            else {
                a.l(", ");
            }
            a.l("viewport: {");
            a.l("left: " + this.viewport.left + ", top: " + this.viewport.top + ", width: " + this.viewport.width + ", height: " + this.viewport.height);
            a.u("}");
            a.u("}");
            return a.toString();
        }
        get viewport() {
            return this._viewport;
        }
        set viewport(a) {
            this._viewport = a;
        }
    }
    GaugeVisualData.$t = markType(GaugeVisualData, 'GaugeVisualData');
    return GaugeVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let ScaleLabelVisualData = /*@__PURE__*/ (() => {
    class ScaleLabelVisualData extends Base {
        constructor() {
            super(...arguments);
            this._labelValue = null;
            this._labelSize = null;
            this._labelPosition = null;
            this._appearance = null;
        }
        get labelValue() {
            return this._labelValue;
        }
        set labelValue(a) {
            this._labelValue = a;
        }
        get labelSize() {
            return this._labelSize;
        }
        set labelSize(a) {
            this._labelSize = a;
        }
        get labelPosition() {
            return this._labelPosition;
        }
        set labelPosition(a) {
            this._labelPosition = a;
        }
        get appearance() {
            return this._appearance;
        }
        set appearance(a) {
            this._appearance = a;
        }
        scaleByViewport(a) {
            this.labelPosition = new PointData((this.labelPosition.x - a.left) / a.width, (this.labelPosition.y - a.top) / a.height);
            this.labelSize = new SizeData((this.labelSize.width) / a.width, (this.labelSize.height) / a.height);
        }
        serialize() {
            return "{ labelValue: '" + this.labelValue + "', labelSize: { width: " + this.labelSize.width + ", height: " + this.labelSize.height + "}, labelPosition: { x: " + this.labelPosition.x + ", y: " + this.labelPosition.y + "}, appearance: " + this.appearance.serialize() + "}";
        }
    }
    ScaleLabelVisualData.$t = markType(ScaleLabelVisualData, 'ScaleLabelVisualData');
    return ScaleLabelVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let ScaleLabelVisualDataList = /*@__PURE__*/ (() => {
    class ScaleLabelVisualDataList extends List$1 {
        constructor() {
            super(ScaleLabelVisualData.$, 0);
        }
    }
    ScaleLabelVisualDataList.$t = markType(ScaleLabelVisualDataList, 'ScaleLabelVisualDataList', List$1.$.specialize(ScaleLabelVisualData.$));
    return ScaleLabelVisualDataList;
})();

/*
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.
*/
/**
 * @hidden
 */
let ScaleTickmarkVisualData = /*@__PURE__*/ (() => {
    class ScaleTickmarkVisualData extends Base {
        constructor() {
            super(...arguments);
            this._tickPath = null;
        }
        get tickPath() {
            return this._tickPath;
        }
        set tickPath(a) {
            this._tickPath = a;
        }
        serialize() {
            return "{ tickPath: " + this.tickPath.serialize() + "}";
        }
    }
    ScaleTickmarkVisualData.$t = markType(ScaleTickmarkVisualData, 'ScaleTickmarkVisualData');
    return ScaleTickmarkVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let ScaleTickmarkVisualDataList = /*@__PURE__*/ (() => {
    class ScaleTickmarkVisualDataList extends List$1 {
        constructor() {
            super(ScaleTickmarkVisualData.$, 0);
        }
    }
    ScaleTickmarkVisualDataList.$t = markType(ScaleTickmarkVisualDataList, 'ScaleTickmarkVisualDataList', List$1.$.specialize(ScaleTickmarkVisualData.$));
    return ScaleTickmarkVisualDataList;
})();

/*
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.
*/
/**
 * @hidden
 */
let RangeVisualData = /*@__PURE__*/ (() => {
    class RangeVisualData extends Base {
        constructor() {
            super(...arguments);
            this._rangePath = null;
        }
        get rangePath() {
            return this._rangePath;
        }
        set rangePath(a) {
            this._rangePath = a;
        }
        serialize() {
            return "{ rangePath: " + this.rangePath.serialize() + "}";
        }
    }
    RangeVisualData.$t = markType(RangeVisualData, 'RangeVisualData');
    return RangeVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let RangeVisualDataList = /*@__PURE__*/ (() => {
    class RangeVisualDataList extends List$1 {
        constructor() {
            super(RangeVisualData.$, 0);
        }
    }
    RangeVisualDataList.$t = markType(RangeVisualDataList, 'RangeVisualDataList', List$1.$.specialize(RangeVisualData.$));
    return RangeVisualDataList;
})();

/*
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.
*/
/**
 * @hidden
 */
let NeedleVisualData = /*@__PURE__*/ (() => {
    class NeedleVisualData extends Base {
        constructor() {
            super(...arguments);
            this._angle = 0;
        }
        get angle() {
            return this._angle;
        }
        set angle(a) {
            this._angle = a;
        }
        serialize() {
            return "{ angle: " + this.angle.toString() + "}";
        }
    }
    NeedleVisualData.$t = markType(NeedleVisualData, 'NeedleVisualData');
    return NeedleVisualData;
})();

/*
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.
*/
/**
 * @hidden
 */
let XamRadialGauge = /*@__PURE__*/ (() => {
    class XamRadialGauge extends Control {
        constructor() {
            super();
            this.propertyChanged = null;
            this.alignTitle = null;
            this.alignSubtitle = null;
            this.alignHighlightLabel = null;
            this.formatTitle = null;
            this.formatSubtitle = null;
            this.formatHighlightLabel = null;
            this._view = null;
            this.bc = null;
            this.c4 = 0;
            this.c3 = 100;
            this.bw = 0;
            this.c2 = 0.5;
            this.bt = 1;
            this.bx = 0;
            this.formatLabel = null;
            this.am = null;
            this.alignLabel = null;
            this.valueChanged = null;
            this.highlightValueChanged = null;
            this.cb = false;
            this.a9 = null;
            this.mn = new Size(1, NaN, NaN);
            this.ml = null;
            this.cw = null;
            this.cx = null;
            this.cu = null;
            this.cv = null;
            this.a4 = null;
            this.a3 = null;
            this.a2 = null;
            this.cz = new Stack$1(TextBlock.$);
            this.c0 = new Stack$1(TextBlock.$);
            this.c1 = new Stack$1(TextBlock.$);
            this.cy = new Stack$1(TextBlock.$);
            this.ct = new List$1(Path.$, 0);
            this.cs = new List$1(Path.$, 0);
            this.cr = new List$1(Path.$, 0);
            this.c7 = 0;
            this.b3 = null;
            this.b0 = null;
            this.bz = null;
            this.b2 = null;
            this.b4 = null;
            this.by = null;
            this.b1 = null;
            this.c6 = NaN;
            this.c5 = 1;
            this.em = 0;
            this.ao = null;
            this.ap = null;
            this.an = null;
            this.bj = XamRadialGauge.bm();
            this.bk = XamRadialGauge.bn();
            this.bl = XamRadialGauge.bo();
            this.view = new XamRadialGaugeView(this);
            this.view.az();
            this.ml = Rect.empty;
            this.a4 = new RadialGaugeFrame();
            this.a3 = new RadialGaugeFrame();
            this.a2 = new RadialGaugeFrame();
            this.ranges = new RadialGaugeRangeCollection();
            this.cb = true;
            this.bc = new DoubleAnimator(0, 1, this.fg);
            let a = this.bc;
            a.propertyChanged = delegateCombine(a.propertyChanged, runOn(this, this.il));
            this.ab = XamRadialGauge.$;
            this.bz = ((() => {
                let $ret = new StackPool$1(TextBlock.$);
                $ret.b = runOn(this.view, this.view.ar);
                $ret.c = runOn(this.view, this.view.as);
                $ret.d = runOn(this.view, this.view.at);
                $ret.j = runOn(this.view, this.view.bm);
                return $ret;
            })());
            this.b4 = ((() => {
                let $ret = new StackPool$1(TextBlock.$);
                $ret.b = runOn(this.view, this.view.ar);
                $ret.c = runOn(this.view, this.view.as);
                $ret.d = runOn(this.view, this.view.bh);
                $ret.j = runOn(this.view, this.view.bo);
                return $ret;
            })());
            this.b2 = ((() => {
                let $ret = new StackPool$1(TextBlock.$);
                $ret.b = runOn(this.view, this.view.ar);
                $ret.c = runOn(this.view, this.view.as);
                $ret.d = runOn(this.view, this.view.bg);
                $ret.j = runOn(this.view, this.view.bn);
                return $ret;
            })());
            this.by = ((() => {
                let $ret = new StackPool$1(TextBlock.$);
                $ret.b = runOn(this.view, this.view.ar);
                $ret.c = runOn(this.view, this.view.as);
                $ret.d = runOn(this.view, this.view.ap);
                $ret.j = runOn(this.view, this.view.bl);
                return $ret;
            })());
            this.b3 = ((() => {
                let $ret = new StackPool$1(Path.$);
                $ret.b = runOn(this.view, this.view.a2);
                $ret.c = runOn(this.view, this.view.a3);
                $ret.d = runOn(this.view, this.view.a4);
                $ret.j = runOn(this.view, this.view.ce);
                return $ret;
            })());
            this.b0 = ((() => {
                let $ret = new StackPool$1(Path.$);
                $ret.b = runOn(this.view, this.view.a2);
                $ret.c = runOn(this.view, this.view.a3);
                $ret.d = runOn(this.view, this.view.a4);
                $ret.j = runOn(this.view, this.view.ce);
                return $ret;
            })());
            this.b1 = ((() => {
                let $ret = new StackPool$1(Path.$);
                $ret.b = runOn(this.view, this.view.a7);
                $ret.c = runOn(this.view, this.view.a8);
                $ret.d = runOn(this.view, this.view.a9);
                $ret.j = runOn(this.view, this.view.cf);
                return $ret;
            })());
            this.a9 = new RadialGaugeScaler(this.da, this.c9, this.ez, this.eu, this.mi);
        }
        iz(a) {
            this.i5(a);
        }
        i5(a) {
            let b = this.propertyChanged;
            if (b != null) {
                b(this, new PropertyChangedEventArgs(a));
            }
        }
        static bn() {
            if (XamRadialGauge.bh != null) {
                return XamRadialGauge.bh;
            }
            XamRadialGauge.bh = ((() => {
                let $ret = new FontInfo();
                $ret.f = FontDefaults.gaugesSubtitleSize;
                $ret.t = FontDefaults.gaugesFontStyle;
                $ret.q = FontDefaults.gaugesFontFamily;
                $ret.v = FontDefaults.gaugesFontWeight;
                $ret.r = FontDefaults.gaugesFontStretch;
                $ret.u = FontDefaults.gaugesFontVariant;
                return $ret;
            })());
            return XamRadialGauge.bh;
        }
        static bo() {
            if (XamRadialGauge.bi != null) {
                return XamRadialGauge.bi;
            }
            XamRadialGauge.bi = ((() => {
                let $ret = new FontInfo();
                $ret.f = FontDefaults.gaugesTitleSize;
                $ret.t = FontDefaults.gaugesFontStyle;
                $ret.q = FontDefaults.gaugesFontFamily;
                $ret.v = FontDefaults.gaugesFontWeight;
                $ret.r = FontDefaults.gaugesFontStretch;
                $ret.u = FontDefaults.gaugesFontVariant;
                return $ret;
            })());
            return XamRadialGauge.bi;
        }
        static bm() {
            if (XamRadialGauge.bg != null) {
                return XamRadialGauge.bg;
            }
            XamRadialGauge.bg = ((() => {
                let $ret = new FontInfo();
                $ret.f = FontDefaults.gaugesTitleSize;
                $ret.t = FontDefaults.gaugesFontStyle;
                $ret.q = FontDefaults.gaugesFontFamily;
                $ret.v = FontDefaults.gaugesFontWeight;
                $ret.r = FontDefaults.gaugesFontStretch;
                $ret.u = FontDefaults.gaugesFontVariant;
                return $ret;
            })());
            return XamRadialGauge.bg;
        }
        av(a, b, c, d, e, f) {
            let g = new FormatRadialGaugeLabelEventArgs();
            g.startAngle = this.a9.i;
            g.endAngle = this.a9.g;
            g.actualMinimumValue = this.da;
            g.actualMaximumValue = this.c9;
            g.angle = MathUtil.o(b);
            g.value = a;
            let h = a;
            if (!d) {
                g.label = c;
            }
            else {
                if (e == null) {
                    h = Math.round(g.value * 100) / 100;
                }
                g.label = (h).toString();
                if (e != null) {
                    g.label = e.i(h);
                }
            }
            if (f != null) {
                f(this, g);
            }
            return g;
        }
        aq(a, b, c, d, e, f) {
            let g = c.h(this.em);
            let h = new AlignRadialGaugeLabelEventArgs();
            h.startAngle = this.a9.i;
            h.endAngle = this.a9.g;
            h.actualMinimumValue = this.da;
            h.actualMaximumValue = this.c9;
            h.angle = d.angle;
            h.value = d.value;
            h.label = d.label;
            h.extent = a;
            h.brush = b;
            h.font = g;
            let i = c.b(h.font);
            let j = f(((() => {
                let $ret = new TextBlock();
                $ret.al = h.label;
                return $ret;
            })()), i);
            h.width = j.width;
            h.height = j.height;
            h.offsetX = -1 * (j.width / 2);
            h.offsetY = -1 * (j.height / 2);
            let k = h.offsetX;
            let l = h.offsetY;
            if (e != null) {
                e(this, h);
                if (h.font != g) {
                    h.font *= this.em;
                    i = i.b(h.font);
                    j = f(((() => {
                        let $ret = new TextBlock();
                        $ret.al = h.label;
                        return $ret;
                    })()), i);
                    h.width = j.width;
                    h.height = j.height;
                    h.offsetX = -1 * (j.width / 2) + (h.offsetX - k);
                    h.offsetY = -1 * (j.height / 2) + (h.offsetY - l);
                }
            }
            return h;
        }
        onDetachedFromUI() {
            this.view.ay();
        }
        onAttachedToUI() {
            this.view.au();
        }
        e2(a) {
            return this.a9.h(a);
        }
        fe(a) {
            return this.a9.j(a);
        }
        dn(a) {
            let b = this.mm;
            let c = Math.min(b.width / 2, b.height / 2) * this.ep;
            let d = this.mj();
            let e = d.x;
            let f = d.y;
            let g = GeometryUtil.j({ $type: Point_$type, x: e, y: f }, a);
            if (this.a9 != null && g < this.a9.i) {
                g += Math.PI * 2;
            }
            if (this.a9 != null && g > this.a9.g) {
                g -= Math.PI * 2;
            }
            let h = this.fe(g);
            return h;
        }
        mk(a, b) {
            let c = this.e2(a);
            let d = Math.min(this.mm.width / 2, this.mm.height / 2) * this.ep * b;
            let e = this.mj();
            let f = e.x + Math.cos(c) * d;
            let g = e.y + Math.sin(c) * d;
            return { $type: Point_$type, x: f, y: g };
        }
        l7(a, b) {
            if (b != null && b.count > 0) {
                return b.item(a % b.count);
            }
            else {
                return null;
            }
        }
        get view() {
            return this._view;
        }
        set view(a) {
            this._view = a;
        }
        il(a, b) {
            this.fd = this.bc.o;
        }
        get da() {
            return this.c4;
        }
        set da(a) {
            this.c4 = a;
        }
        get c9() {
            return this.c3;
        }
        set c9(a) {
            this.c3 = a;
        }
        get c8() {
            return this.c2;
        }
        set c8(a) {
            let b = this.c2;
            this.c2 = a;
            if (b != this.c2) {
                this.iy("ActualHighlightValueOpacity", b, a);
            }
        }
        get ds() {
            return this.c(XamRadialGauge.j3);
        }
        set ds(a) {
            this.h(XamRadialGauge.j3, a);
        }
        jg() {
            this.c8 = isNaN_(this.ds) ? 0.5 : Math.max(0, Math.min(this.ds, 1));
        }
        get bu() {
            return this.bt;
        }
        set bu(a) {
            this.bt = a;
        }
        jf() {
            if (this.bv != 1) {
                if (isNaN_(this.dr) || isInfinity(this.dr)) {
                    this.bu = 1;
                }
                else {
                    this.bu = 2;
                }
            }
            else {
                this.bu = 1;
            }
        }
        is() {
            this.bw = 0;
            this.view.b9().an = null;
        }
        get ej() {
            return this.c(XamRadialGauge.k1);
        }
        set ej(a) {
            this.h(XamRadialGauge.k1, a);
        }
        refresh() {
            this.cb = true;
            this.view.bb();
        }
        iy(a, b, c) {
            switch (a) {
                case XamRadialGauge.$$p[41]:
                case XamRadialGauge.$$p[44]:
                case XamRadialGauge.$$p[45]:
                case XamRadialGauge.$$p[47]:
                case XamRadialGauge.$$p[0]:
                case XamRadialGauge.$$p[4]:
                case XamRadialGauge.$$p[62]:
                case XamRadialGauge.$$p[78]:
                case XamRadialGauge.$$p[34]:
                case XamRadialGauge.$$p[83]:
                case XamRadialGauge.$$p[71]:
                    this.view.av(a, b, c);
                    break;
                case XamRadialGauge.$$p[59]:
                    this.view.a0(b, c);
                    break;
                case XamRadialGauge.$$p[60]:
                    this.view.a1(b, c);
                    break;
                case "PixelScalingRatio":
                    if (isNaN_(DeviceUtils.a(this.eo))) {
                        this.db = 1;
                    }
                    else {
                        this.db = DeviceUtils.a(this.eo);
                    }
                    break;
                case "ActualPixelScalingRatio":
                    this.view.a5();
                    break;
            }
            switch (a) {
                case XamRadialGauge.$$p[29]:
                case XamRadialGauge.$$p[30]:
                    if (this.gi != null) {
                        this.am = new BindingFormatter();
                        this.am.j = this.gi;
                        this.am.d = this.ah;
                    }
                    else {
                        this.am = null;
                    }
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[74]:
                case XamRadialGauge.$$p[75]:
                    if (this.hu != null) {
                        this.ao = new BindingFormatter();
                        this.ao.j = this.hu;
                        this.ao.d = this.ai;
                    }
                    else {
                        this.ao = null;
                    }
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[86]:
                case XamRadialGauge.$$p[87]:
                    if (this.h9 != null) {
                        this.ap = new BindingFormatter();
                        this.ap.j = this.h9;
                        this.ap.d = this.aj;
                    }
                    else {
                        this.ap = null;
                    }
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[17]:
                case XamRadialGauge.$$p[18]:
                    if (this.f2 != null) {
                        this.an = new BindingFormatter();
                        this.an.j = this.f2;
                        this.an.d = this.ag;
                    }
                    else {
                        this.an = null;
                    }
                    this.cb = true;
                    this.view.bb();
                    break;
                case "SubtitleTextStyle":
                    this.cb = true;
                    this.view.bb();
                    break;
                case "TitleTextStyle":
                    this.cb = true;
                    this.view.bb();
                    break;
                case "HighlightLabelTextStyle":
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[92]:
                    if (this.valueChanged != null) {
                        this.valueChanged(this, new DoubleValueChangedEventArgs(b, c));
                    }
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[22]:
                    {
                        if (this.highlightValueChanged != null) {
                            this.highlightValueChanged(this, new DoubleValueChangedEventArgs(b, c));
                        }
                        let d = this.bu == 2;
                        this.jf();
                        let e = this.bu == 2;
                        this.cb = true;
                        if (!d && e) {
                            this.bw = 1;
                        }
                        else if (d && !e) {
                            this.bw = 4;
                        }
                        this.view.bb();
                        break;
                    }
                case XamRadialGauge.$$p[21]:
                    {
                        let f = this.bu == 2;
                        this.jf();
                        let g = this.bu == 2;
                        this.cb = true;
                        if (!f && g) {
                            this.bw = 1;
                        }
                        else if (f && !g) {
                            this.bw = 4;
                        }
                        this.view.bb();
                        break;
                    }
                case "HighlighValueOpacity":
                    this.jg();
                    break;
                case "ActualHighlightValueOpacity":
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[0]:
                case XamRadialGauge.$$p[4]:
                case XamRadialGauge.$$p[7]:
                case XamRadialGauge.$$p[6]:
                case XamRadialGauge.$$p[2]:
                case XamRadialGauge.$$p[3]:
                case XamRadialGauge.$$p[5]:
                case XamRadialGauge.$$p[1]:
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[69]:
                case XamRadialGauge.$$p[67]:
                case XamRadialGauge.$$p[63]:
                case XamRadialGauge.$$p[65]:
                case XamRadialGauge.$$p[66]:
                    this.a9 = new RadialGaugeScaler(this.da, this.c9, this.ez, this.eu, this.mi);
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[33]:
                case XamRadialGauge.$$p[32]:
                    let h = this.dz;
                    let i = this.dx;
                    if (isInfinity(h) || isNaN_(h)) {
                        h = 0;
                    }
                    if (isInfinity(i) || isNaN_(i)) {
                        i = 100;
                    }
                    this.da = Math.min(h, i);
                    this.c9 = Math.max(h, i);
                    this.a9 = new RadialGaugeScaler(this.da, this.c9, this.ez, this.eu, this.mi);
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[23]:
                case XamRadialGauge.$$p[68]:
                case XamRadialGauge.$$p[64]:
                case XamRadialGauge.$$p[28]:
                case XamRadialGauge.$$p[80]:
                case XamRadialGauge.$$p[79]:
                case XamRadialGauge.$$p[78]:
                case XamRadialGauge.$$p[62]:
                case XamRadialGauge.$$p[31]:
                case XamRadialGauge.$$p[35]:
                case XamRadialGauge.$$p[81]:
                case XamRadialGauge.$$p[38]:
                case XamRadialGauge.$$p[34]:
                case XamRadialGauge.$$p[37]:
                case XamRadialGauge.$$p[36]:
                case XamRadialGauge.$$p[8]:
                case XamRadialGauge.$$p[9]:
                case XamRadialGauge.$$p[58]:
                case XamRadialGauge.$$p[10]:
                    this.a9 = new RadialGaugeScaler(this.da, this.c9, this.ez, this.eu, this.mi);
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[82]:
                case XamRadialGauge.$$p[70]:
                case XamRadialGauge.$$p[13]:
                case XamRadialGauge.$$p[85]:
                case XamRadialGauge.$$p[73]:
                case XamRadialGauge.$$p[16]:
                case XamRadialGauge.$$p[83]:
                case XamRadialGauge.$$p[71]:
                case XamRadialGauge.$$p[14]:
                case XamRadialGauge.$$p[84]:
                case XamRadialGauge.$$p[72]:
                case XamRadialGauge.$$p[15]:
                case XamRadialGauge.$$p[88]:
                case XamRadialGauge.$$p[76]:
                case XamRadialGauge.$$p[19]:
                case XamRadialGauge.$$p[57]:
                case XamRadialGauge.$$p[56]:
                case XamRadialGauge.$$p[54]:
                case XamRadialGauge.$$p[42]:
                case XamRadialGauge.$$p[41]:
                case XamRadialGauge.$$p[44]:
                case "NeedleStartWidth":
                case XamRadialGauge.$$p[43]:
                case XamRadialGauge.$$p[45]:
                case XamRadialGauge.$$p[47]:
                case XamRadialGauge.$$p[55]:
                case XamRadialGauge.$$p[49]:
                case XamRadialGauge.$$p[39]:
                case XamRadialGauge.$$p[40]:
                case XamRadialGauge.$$p[51]:
                case XamRadialGauge.$$p[52]:
                case XamRadialGauge.$$p[50]:
                case XamRadialGauge.$$p[46]:
                case XamRadialGauge.$$p[48]:
                case XamRadialGauge.$$p[53]:
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[90]:
                    this.bc.r = this.fg;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[91]:
                    this.bc.b = this.bf;
                    break;
                case "TransitionProgress":
                    if (this.fd >= 1) {
                        this.bc.w();
                        let j = this.a3;
                        this.a3 = this.a4;
                        this.a4 = j;
                        this.i1();
                        this.i2();
                        this.i4();
                        this.ja(this.a3);
                        this.jb(this.a3, this.a3.b, true);
                        this.jb(this.a3, this.a3.c, false);
                        this.jc(this.a3);
                        if (this.bw == 5) {
                            this.is();
                        }
                        else if (this.bw == 2) {
                            this.bw = 3;
                        }
                        this.view.ah();
                        return;
                    }
                    this.a2.f(this.fd, this.a4, this.a3);
                    this.ja(this.a2);
                    this.jb(this.a2, this.a2.b, true);
                    this.jb(this.a2, this.a2.c, false);
                    this.jc(this.a2);
                    this.view.ah();
                    break;
                case XamRadialGauge.$$p[61]:
                    let k = b;
                    let l = c;
                    if (k != null) {
                        let m = k;
                        m.collectionChanged = delegateRemove(m.collectionChanged, runOn(this, this.i8));
                    }
                    if (l != null) {
                        let n = l;
                        n.collectionChanged = delegateCombine(n.collectionChanged, runOn(this, this.i8));
                    }
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[60]:
                case XamRadialGauge.$$p[59]:
                    this.cb = true;
                    this.view.bb();
                    break;
                case XamRadialGauge.$$p[11]:
                case XamRadialGauge.$$p[12]:
                    this.cb = true;
                    this.view.bk();
                    this.view.bb();
                    break;
            }
            this.iz(a);
        }
        je() {
            this.view.bf();
        }
        i8(a, b) {
            if (b.oldItems != null) {
                for (let c of fromEn(b.oldItems)) {
                    c.propertyChanged = delegateRemove(c.propertyChanged, runOn(this, this.i7));
                }
            }
            if (b.newItems != null) {
                for (let d of fromEn(b.newItems)) {
                    d.propertyChanged = delegateCombine(d.propertyChanged, runOn(this, this.i7));
                }
            }
            this.cb = true;
            this.view.bb();
        }
        i7(a, b) {
            this.cb = true;
            this.view.bb();
        }
        get mm() {
            return this.ml;
        }
        set mm(a) {
            let b = this.ml;
            this.ml = a;
            if (!b.equals1(this.ml)) {
                this.i0(b, this.ml);
            }
        }
        i0(a, b) {
            this.cb = true;
            this.view.bb();
        }
        cg() {
            return !isNaN_(this.da) && !isNaN_(this.c9) && !isNaN_(this.ff) && !this.mm.isEmpty && this.view.n();
        }
        im() {
            if (!this.cg()) {
                return;
            }
            if (this.cb) {
                if (this.b5) {
                    if (this.bc.g) {
                        this.bc.t();
                    }
                    let a = this.a4;
                    this.a4 = this.a2;
                    this.a2 = a;
                }
                else {
                    let b = this.a4;
                    this.a4 = this.a3;
                    this.a3 = b;
                }
            }
            else if (this.b5) {
                this.a2.f(this.fd, this.a4, this.a3);
                this.ja(this.a2);
                this.jb(this.a2, this.a2.b, true);
                this.jb(this.a2, this.a2.c, false);
                this.jc(this.a2);
            }
            if (this.cb) {
                if (this.bw == 1) {
                    this.bw = 2;
                    let c = this.et(this.ff, 0);
                    this.i3(c, this.a4.b, false);
                }
                else if (this.bw == 4) {
                    if (this.fg > 0) {
                        this.bw = 5;
                        let d = this.et(this.ff, 0);
                        this.i3(d, this.a3.b, false);
                    }
                    else {
                        this.is();
                    }
                }
                this.i2();
                this.i4();
                this.i1();
            }
            if (this.cb && this.cl) {
                this.jd();
                this.a2.f(this.fd, this.a4, this.a3);
                this.ja(this.a2);
                this.jb(this.a2, this.a2.b, true);
                this.jb(this.a2, this.a2.c, false);
                this.jc(this.a2);
            }
            else {
                if (this.cb) {
                    this.ja(this.a3);
                    this.jb(this.a3, this.a3.b, true);
                    this.jb(this.a3, this.a3.c, false);
                    this.jc(this.a3);
                }
            }
            this.cb = false;
            this.view.ah();
        }
        jd() {
            this.c7 = 0;
            this.bc.w();
            this.bc.v();
        }
        get cl() {
            return this.fg > 0;
        }
        ja(a) {
            let b = this.mm;
            let c = this.view.b8();
            let d = a.a;
            let e = Math.min(b.width / 2, b.height / 2) * a.e;
            let f = this.mj();
            let g = f.x;
            let h = f.y;
            let i = d.n(e, g, h);
            c.an = i;
            c._fill = d.l;
            c._stroke = d.m;
            c.ad = d.h;
        }
        ch(a) {
            return this.cj(a, false, false);
        }
        needleContainsPoint(a, b) {
            return this.cj(a, b, false);
        }
        b9(a) {
            return this.cj(a, false, true);
        }
        highlightNeedleContainsPoint(a, b) {
            return this.cj(a, b, true);
        }
        cj(a, b, c) {
            let d;
            let e;
            if (c) {
                d = this.cu;
                e = this.cv;
            }
            else {
                d = this.cw;
                e = this.cx;
            }
            if (d == null) {
                return false;
            }
            return b ? PolygonUtil.b(e, a) : PolygonUtil.b(d, a);
        }
        jb(a, b, c) {
            if (c) {
                if (this.bw == 0) {
                    return;
                }
                this.cu = new List$1(Point_$type, 0);
                this.cv = new List$1(Point_$type, 0);
            }
            else {
                this.cw = new List$1(Point_$type, 0);
                this.cx = new List$1(Point_$type, 0);
            }
            let d = c ? this.cu : this.cw;
            let e = c ? this.cv : this.cx;
            let f = this.mm;
            let g = b.ab;
            let h = b.aj;
            let i = b.ak;
            let j = b.ae;
            let k = b.ah;
            let l = b.ai;
            let m = b.aa;
            let n = c ? this.view.b9() : this.view.ca();
            let o = this.view.cd();
            let p = this.view.cb();
            let q = Math.min(f.width / 2, f.height / 2) * a.e;
            let r = this.mj();
            let s = r.x;
            let t = r.y;
            let u = b.am(q, s, t);
            let v = g * 180 / Math.PI;
            n.an = u;
            let w = new TransformGroup();
            w.j.add(((() => {
                let $ret = new RotateTransform();
                $ret.k = s;
                $ret.l = t;
                $ret.j = v;
                return $ret;
            })()));
            n.j = w;
            n._fill = h;
            n._stroke = i;
            n.ad = j;
            o.an = b.an(q, s, t);
            p.an = b.al(q, s, t);
            o._fill = k;
            o._stroke = l;
            o.ad = m;
            p._fill = k;
            p._stroke = l;
            p.ad = m;
            let x = Math.cos(g);
            let y = Math.sin(g);
            let z = b.af / 2;
            let aa = { $type: Point_$type, x: b.ad * q, y: z * q };
            let ab = { $type: Point_$type, x: b.ac * q, y: z * q };
            let ac = { $type: Point_$type, x: b.ac * q, y: -z * q };
            let ad = { $type: Point_$type, x: b.ad * q, y: -z * q };
            aa = { $type: Point_$type, x: aa.x * x - aa.y * y + s, y: aa.y * x + aa.x * y + t };
            ab = { $type: Point_$type, x: ab.x * x - ab.y * y + s, y: ab.y * x + ab.x * y + t };
            ac = { $type: Point_$type, x: ac.x * x - ac.y * y + s, y: ac.y * x + ac.x * y + t };
            ad = { $type: Point_$type, x: ad.x * x - ad.y * y + s, y: ad.y * x + ad.x * y + t };
            d.add(aa);
            d.add(ab);
            d.add(ac);
            d.add(ad);
            z = (b.af / 2) * q;
            let ae = { $type: Point_$type, x: b.ad * q, y: z };
            let af = { $type: Point_$type, x: b.ac * q, y: z };
            let ag = { $type: Point_$type, x: b.ac * q, y: -z };
            let ah = { $type: Point_$type, x: b.ad * q, y: -z };
            ae = { $type: Point_$type, x: ae.x * x - ae.y * y + s, y: ae.y * x + ae.x * y + t };
            af = { $type: Point_$type, x: af.x * x - af.y * y + s, y: af.y * x + af.x * y + t };
            ag = { $type: Point_$type, x: ag.x * x - ag.y * y + s, y: ag.y * x + ag.x * y + t };
            ah = { $type: Point_$type, x: ah.x * x - ah.y * y + s, y: ah.y * x + ah.x * y + t };
            e.add(ae);
            e.add(af);
            e.add(ag);
            e.add(ah);
        }
        mj() {
            let a = this.mm;
            let b = isNaN_(this.dl) ? 0.5 : this.dl;
            let c = isNaN_(this.dm) ? 0.5 : this.dm;
            let d = a.left + b * a.width;
            let e = a.top + c * a.height;
            return { $type: Point_$type, x: d, y: e };
        }
        er(a) {
            if (isInfinity(a)) {
                return NaN;
            }
            return a;
        }
        i2() {
            let a = this.a3;
            a.e = this.ep;
            let b = this.mm;
            let c = !(this.bw == 0 || this.bw == 5);
            let d = this.et(this.ff, 0);
            this.i3(d, a.c, c);
            if (c) {
                let e = this.er(this.dr);
                this.i3(e, a.b, false);
            }
        }
        i3(a, b, c) {
            let d = this.a9;
            let e = d.h(a);
            let f = new RadialGaugeNeedlePreparer();
            let g = new RadialGaugeNeedleParameters();
            g.b = this.a5;
            g.o = this.er(this.ek);
            let h = this.ma;
            let i = this.mb;
            if (c) {
                h = BrushUtil.s(h, this.c8);
                i = BrushUtil.s(i, this.c8);
            }
            g.t = h;
            g.u = i;
            g.m = this.er(this.ei);
            g.k = this.er(this.ea);
            g.d = this.er(this.d8);
            g.e = this.er(this.d9);
            g.p = this.er(this.eg);
            g.q = this.er(this.eh);
            g.i = this.er(this.ef);
            g.f = this.er(this.ec);
            g.r = this.mc;
            g.s = this.md;
            g.c = this.a6;
            g.h = this.er(this.ed);
            g.n = this.er(this.ej);
            g.l = this.er(this.eb);
            if (isNaN_(g.o)) {
                g.o = XamRadialGauge.el;
            }
            if (isNaN_(g.h)) {
                g.h = XamRadialGauge.ee;
            }
            f.b = g;
            f.e(b);
            b.ab = e;
        }
        jc(a) {
            let b = this.mm;
            let c = a.d;
            let d = c.g;
            let e = c.c;
            let f = c.i;
            let g = c.j;
            let h = c.h;
            let i = c.f;
            let j = c.t;
            let k = c.e;
            let l = c.d;
            let m = c.ab;
            let n = c.y;
            let o = c.l;
            let p = c.k;
            let q = c.ad;
            let r = c.ac;
            let s = c.aa;
            let t = c.x;
            let u = c.aj;
            let v = c.ak;
            let w = c.ae;
            let x = c.ai;
            let y = c.v;
            let z = c.u;
            let aa = c.w;
            let ab = this.view.cc();
            let ac = c.z;
            m = Math.max(0, m);
            n = Math.max(0, n);
            let ad = true;
            if (this.a8 == 1 || (this.a8 == 0 && this.a0 == 0)) {
                ad = false;
            }
            let ae = Math.min(b.width / 2, b.height / 2) * a.e;
            let af = this.mj();
            let ag = af.x;
            let ah = af.y;
            let ai = s;
            let aj = t;
            s -= ac;
            t += ac;
            let ak = false;
            if ((t - s) >= 2 * Math.PI) {
                ak = true;
                s = 0;
                t = Math.PI;
            }
            let al = new PathGeometry();
            let am = new PathFigure();
            let an = Math.cos(s);
            let ao = Math.sin(s);
            let ap = Math.cos(t);
            let aq = Math.sin(t);
            let ar = ag + (ae * m) * an;
            let as = ah + (ae * m) * ao;
            let at = ag + (ae * n) * an;
            let au = ah + (ae * n) * ao;
            let av = ag + (ae * m) * ap;
            let aw = ah + (ae * m) * aq;
            let ax = ag + (ae * n) * ap;
            let ay = ah + (ae * n) * aq;
            let az = ak;
            if (ac != 0 && !ak && ad) {
                let a0 = Math.cos(ai);
                let a1 = Math.sin(ai);
                let a2 = Math.cos(aj);
                let a3 = Math.sin(aj);
                let a4 = ag + (ae * m) * a0;
                let a5 = ah + (ae * m) * a1;
                let a6 = ag + (ae * n) * a0;
                let a7 = ah + (ae * n) * a1;
                let a8 = ag + (ae * m) * a2;
                let a9 = ah + (ae * m) * a3;
                let ba = ag + (ae * n) * a2;
                let bb = ah + (ae * n) * a3;
                let bc = as;
                let bd = at;
                if (a6 - a4 != 0) {
                    bd = ag;
                    let be = (a7 - a5) / (a6 - a4);
                    bc = be * (ag - at) + au;
                }
                let bf = { $type: Point_$type, x: bd, y: bc };
                let bg = GeometryUtil.r(bf, { $type: Point_$type, x: at, y: au }, { $type: Point_$type, x: ag, y: ah }, ae * m);
                let bh = aw;
                let bi = ax;
                if (ba - a8 != 0) {
                    bi = ag;
                    let bj = (bb - a9) / (ba - a8);
                    bh = bj * (ag - ax) + ay;
                }
                let bk = { $type: Point_$type, x: bi, y: bh };
                let bl = GeometryUtil.r(bk, { $type: Point_$type, x: ax, y: ay }, { $type: Point_$type, x: ag, y: ah }, ae * m);
                if (isNaN_(bg.c.x) || isNaN_(bg.c.y) || isNaN_(bg.d.x) || isNaN_(bg.d.y) || isNaN_(bl.c.x) || isNaN_(bl.c.y) || isNaN_(bl.d.x) || isNaN_(bl.d.y)) {
                    ak = true;
                    s = 0;
                    t = Math.PI;
                }
                else {
                    let bm;
                    let bn;
                    if ((Math.pow(bg.c.x - at, 2) + Math.pow(bg.c.y - au, 2)) < (Math.pow(bg.d.x - at, 2) + Math.pow(bg.d.y - au, 2))) {
                        bm = bg.c;
                    }
                    else {
                        bm = bg.d;
                    }
                    if ((Math.pow(bl.c.x - ax, 2) + Math.pow(bl.c.y - ay, 2)) < (Math.pow(bl.d.x - ax, 2) + Math.pow(bl.d.y - ay, 2))) {
                        bn = bl.c;
                    }
                    else {
                        bn = bl.d;
                    }
                    if ((Math.pow(bn.x - at, 2) + Math.pow(bn.y - au, 2)) <= (Math.pow(bm.x - at, 2) + Math.pow(bm.y - au, 2))) {
                        ak = true;
                        s = 0;
                        t = Math.PI;
                    }
                    else {
                        let bo = GeometryUtil.j({ $type: Point_$type, x: ag, y: ah }, bm);
                        let bp = GeometryUtil.j({ $type: Point_$type, x: ag, y: ah }, bn);
                        let bq = s;
                        let br = t;
                        while (bq > Math.PI * 2) {
                            bq -= Math.PI * 2;
                        }
                        while (br > Math.PI * 2) {
                            br -= Math.PI * 2;
                        }
                        let bs = Math.min(Math.abs(bo - bq), Math.abs((Math.PI * 2 - bo) - bq));
                        let bt = Math.min(Math.abs(bp - br), Math.abs((Math.PI * 2 - bp) - br));
                        if ((t - s) + bs + bt >= 2 * Math.PI) {
                            ak = true;
                            s = 0;
                            t = Math.PI;
                        }
                        else {
                            ar = bm.x;
                            as = bm.y;
                            av = bn.x;
                            aw = bn.y;
                        }
                    }
                }
            }
            if (ak && !az) {
                an = Math.cos(s);
                ao = Math.sin(s);
                ap = Math.cos(t);
                aq = Math.sin(t);
                ar = ag + (ae * m) * an;
                as = ah + (ae * m) * ao;
                at = ag + (ae * n) * an;
                au = ah + (ae * n) * ao;
                av = ag + (ae * m) * ap;
                aw = ah + (ae * m) * aq;
                ax = ag + (ae * n) * ap;
                ay = ah + (ae * n) * aq;
            }
            if (ak) {
                am._startPoint = { $type: Point_$type, x: at, y: au };
                am._segments.add(((() => {
                    let $ret = new ArcSegment();
                    $ret.e = { $type: Point_$type, x: ax, y: ay };
                    $ret.b = false;
                    $ret.d = 1;
                    $ret.f = new Size(1, ae * n, ae * n);
                    return $ret;
                })()));
                am._segments.add(((() => {
                    let $ret = new ArcSegment();
                    $ret.e = { $type: Point_$type, x: at, y: au };
                    $ret.b = false;
                    $ret.d = 1;
                    $ret.f = new Size(1, ae * n, ae * n);
                    return $ret;
                })()));
                let bu = new PathFigure();
                bu._startPoint = { $type: Point_$type, x: ar, y: as };
                bu._segments.add(((() => {
                    let $ret = new ArcSegment();
                    $ret.e = { $type: Point_$type, x: av, y: aw };
                    $ret.b = false;
                    $ret.d = 0;
                    $ret.f = new Size(1, ae * m, ae * m);
                    return $ret;
                })()));
                bu._segments.add(((() => {
                    let $ret = new ArcSegment();
                    $ret.e = { $type: Point_$type, x: ar, y: as };
                    $ret.b = false;
                    $ret.d = 0;
                    $ret.f = new Size(1, ae * m, ae * m);
                    return $ret;
                })()));
                al.c.add(am);
                al.c.add(bu);
            }
            else {
                am._startPoint = { $type: Point_$type, x: ar, y: as };
                am._segments.add(((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: at, y: au };
                    return $ret;
                })()));
                am._segments.add(((() => {
                    let $ret = new ArcSegment();
                    $ret.e = { $type: Point_$type, x: ax, y: ay };
                    $ret.b = (t - s) > Math.PI;
                    $ret.d = 1;
                    $ret.f = new Size(1, ae * n, ae * n);
                    return $ret;
                })()));
                am._segments.add(((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: av, y: aw };
                    return $ret;
                })()));
                am._segments.add(((() => {
                    let $ret = new ArcSegment();
                    $ret.e = { $type: Point_$type, x: ar, y: as };
                    $ret.b = (t - s) > Math.PI;
                    $ret.d = 0;
                    $ret.f = new Size(1, ae * m, ae * m);
                    return $ret;
                })()));
                al.c.add(am);
            }
            ab.an = al;
            ab._fill = u;
            let bv = this.bz;
            bv.f = true;
            for (let bw of fromEnum(this.cz)) {
                bv.n(bw);
            }
            this.cz.g();
            let bx = this.b2;
            bx.f = true;
            for (let by of fromEnum(this.c0)) {
                bx.n(by);
            }
            this.c0.g();
            let bz = this.b4;
            bz.f = true;
            for (let b0 of fromEnum(this.c1)) {
                bz.n(b0);
            }
            this.c1.g();
            let b1 = this.by;
            b1.f = true;
            for (let b2 of fromEnum(this.cy)) {
                b1.n(b2);
            }
            this.cy.g();
            let b3 = ae * j;
            for (let b4 = 0; b4 < e.length; b4++) {
                let b5 = ag + b3 * Math.cos(e[b4]);
                let b6 = ah + b3 * Math.sin(e[b4]);
                let b7 = bv.a();
                if (b7.al != d[b4]) {
                    b7.al = d[b4];
                }
                this.view.bd(b7, l[b4]);
                this.view.be(b7, k[b4]);
                let b8 = h[b4];
                let b9 = i[b4];
                let ca = f[b4];
                let cb = g[b4];
                this.view.a6(b7, b5 + ca, b6 + cb);
                this.cz.h(b7);
            }
            bv.f = false;
            if (!isNaN_(c.p.c) && !isNaN_(c.p.b)) {
                let cc = ag + (ae * c.p.c) * Math.cos(c.p.b);
                let cd = ah + (ae * c.p.c) * Math.sin(c.p.b);
                let ce = bz.a();
                if (ce.al != c.p.h) {
                    ce.al = c.p.h;
                }
                this.view.bd(ce, c.p.i);
                this.view.be(ce, c.p.a);
                this.view.a6(ce, cc + c.p.f, cd + c.p.g);
                this.c1.h(ce);
            }
            bz.f = false;
            if (!isNaN_(c.o.c) && !isNaN_(c.o.b)) {
                let cf = ag + (ae * c.o.c) * Math.cos(c.o.b);
                let cg = ah + (ae * c.o.c) * Math.sin(c.o.b);
                let ch = bx.a();
                if (ch.al != c.o.h) {
                    ch.al = c.o.h;
                }
                this.view.bd(ch, c.o.i);
                this.view.be(ch, c.o.a);
                this.view.a6(ch, cf + c.o.f, cg + c.o.g);
                this.c0.h(ch);
            }
            bx.f = false;
            if (this.bw != 0) {
                if (!isNaN_(c.m.c) && !isNaN_(c.m.b)) {
                    let ci = ag + (ae * c.m.c) * Math.cos(c.m.b);
                    let cj = ah + (ae * c.m.c) * Math.sin(c.m.b);
                    let ck = b1.a();
                    if (ck.al != c.m.h) {
                        ck.al = c.m.h;
                    }
                    this.view.bd(ck, c.m.i);
                    this.view.be(ck, c.m.a);
                    this.view.a6(ck, ci + c.m.f, cj + c.m.g);
                    this.cy.h(ck);
                }
                b1.f = false;
            }
            let cl = this.b3;
            cl.f = true;
            for (let cm = 0; cm < this.ct.count; cm++) {
                cl.n(this.ct._inner[cm]);
            }
            this.ct.clear();
            for (let cn = 0; cn < o.length; cn++) {
                let co = ag + (ae * q) * Math.cos(o[cn]);
                let cp = ah + (ae * q) * Math.sin(o[cn]);
                let cq = ag + (ae * r) * Math.cos(o[cn]);
                let cr = ah + (ae * r) * Math.sin(o[cn]);
                let cs = cl.a();
                let ct = new PathGeometry();
                let cu = new PathFigure();
                cu._startPoint = { $type: Point_$type, x: co, y: cp };
                cu._segments.add(((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: cq, y: cr };
                    return $ret;
                })()));
                ct.c.add(cu);
                cs.an = ct;
                cs._stroke = v;
                cs.ad = w;
                this.ct.add(cs);
            }
            cl.f = false;
            let cv = this.b0;
            cv.f = true;
            for (let cw = 0; cw < this.cr.count; cw++) {
                cv.n(this.cr._inner[cw]);
            }
            this.cr.clear();
            for (let cx = 0; cx < p.length; cx++) {
                let cy = ag + (ae * y) * Math.cos(p[cx]);
                let cz = ah + (ae * y) * Math.sin(p[cx]);
                let c0 = ag + (ae * z) * Math.cos(p[cx]);
                let c1 = ah + (ae * z) * Math.sin(p[cx]);
                let c2 = cv.a();
                let c3 = new PathGeometry();
                let c4 = new PathFigure();
                c4._startPoint = { $type: Point_$type, x: cy, y: cz };
                c4._segments.add(((() => {
                    let $ret = new LineSegment(1);
                    $ret.c = { $type: Point_$type, x: c0, y: c1 };
                    return $ret;
                })()));
                c3.c.add(c4);
                c2.an = c3;
                c2._stroke = x;
                c2.ad = aa;
                this.cr.add(c2);
            }
            cv.f = false;
            let c5 = this.b1;
            c5.f = true;
            for (let c6 = this.cs.count - 1; c6 >= 0; c6--) {
                c5.n(this.cs._inner[c6]);
            }
            this.cs.clear();
            for (let c7 = 0; c7 < c.r.count; c7++) {
                let c8 = c.r._inner[c7];
                let c9 = c5.a();
                c9.an = c8.m(ae, ag, ah);
                c9._fill = c8.k;
                c9._stroke = c8.l;
                c9.ad = c8.h;
                this.cs.add(c9);
            }
            this.view.bc(this.cs);
            c5.f = false;
        }
        cq(a, b, c) {
            let d = c / 10000;
            if (isNaN_(d)) {
                d = 1E-05;
            }
            let e = Math.abs(a - b);
            if (e < d) {
                return true;
            }
            return false;
        }
        es(a) {
            if (isInfinity(a)) {
                return NaN;
            }
            return a;
        }
        eq(a, b) {
            if (isInfinity(a)) {
                return b;
            }
            return a;
        }
        et(a, b) {
            if (isInfinity(a) || isNaN_(a)) {
                return b;
            }
            return a;
        }
        i4() {
            let a = this.a3;
            a.e = this.es(this.ep);
            if (isNaN_(a.e)) {
                a.e = 1;
            }
            if (this.ck && !isNaN_(this.en) && this.en > 0) {
                let b = Math.min(this.mm.width, this.mm.height);
                this.em = b / this.en;
            }
            else {
                this.em = 1;
            }
            let c = this.mm;
            let d = this.a9;
            let e = this.es(this.dt);
            let f = this.es(this.dw);
            let g = this.es(this.d1);
            if (isNaN_(e)) {
                e = (this.c9 - this.da) / 10;
            }
            if (isNaN_(f)) {
                f = e;
            }
            if (isNaN_(g)) {
                g = 3;
            }
            let h = new List$1(Tuple$2.$.specialize(Number_$type, Number_$type), 0);
            let i = d.i;
            let j = d.g;
            while (i >= Math.PI * 2) {
                i -= Math.PI * 2;
            }
            while (j >= Math.PI * 2) {
                j -= Math.PI * 2;
            }
            let k = Math.abs(j - i) < 0.0001;
            let l = this.a1 == 1 || this.a1 == 3;
            let m = this.a1 == 0 || this.a1 == 3;
            for (let n = this.da; n <= this.c9 || this.cq(n, this.c9, f); n += f) {
                if (k && this.cq(n, this.da, f) && l) {
                    continue;
                }
                if (k && this.cq(n, this.c9, f) && m) {
                    continue;
                }
                h.add(new Tuple$2(Number_$type, Number_$type, n, MathUtil.f(d.h(n))));
                if (f == 0) {
                    break;
                }
            }
            let o = new List$1(Number_$type, 0);
            let p = new List$1(Number_$type, 0);
            for (let q = this.da; q <= this.c9 || this.cq(q, this.c9, e); q += e) {
                o.add(d.h(q));
                for (let r = 0; r < g; r++) {
                    let s = (e / (g + 1)) * (r + 1);
                    if (s + q > this.c9) {
                        continue;
                    }
                    p.add(d.h(s + q));
                }
                if (e == 0) {
                    break;
                }
            }
            if (a.d.c.length != h.count) {
                a.d.g = new Array(h.count);
                a.d.c = new Array(h.count);
                a.d.h = new Array(h.count);
                a.d.f = new Array(h.count);
                a.d.i = new Array(h.count);
                a.d.j = new Array(h.count);
                a.d.e = new Array(h.count);
                a.d.d = new Array(h.count);
            }
            if (a.d.l.length != o.count || a.d.k.length != p.count) {
                a.d.l = new Array(o.count);
                a.d.k = new Array(p.count);
            }
            let t = this.bp();
            for (let u = 0; u < h.count; u++) {
                let v = h._inner[u].c;
                let w = h._inner[u].d;
                let x = this.av(v, w, "Label", true, this.am, this.formatLabel);
                let y = this.aq(this.du, this.l6, t, x, this.alignLabel, runOn(this.view, this.view.ch));
                a.d.c[u] = y.angle;
                a.d.h[u] = y.width;
                a.d.f[u] = y.height;
                a.d.i[u] = y.offsetX;
                a.d.j[u] = y.offsetY;
                a.d.g[u] = y.label;
                a.d.e[u] = t.b(y.font);
                a.d.d[u] = y.brush;
            }
            let z = this.fb;
            if (this.cp) {
                z = (MathUtil.f(this.a9.h(this.ff)) + 180) % 360;
            }
            let aa = this.av(this.ff, z, this.id, this.co, this.ap, this.formatTitle);
            let ab = this.bs.a();
            let ac = this.aq(this.fc, this.mh, ab, aa, this.alignTitle, runOn(this.view, this.view.cj));
            a.d.p.b = ac.angle;
            a.d.p.e = ac.width;
            a.d.p.d = ac.height;
            a.d.p.f = ac.offsetX;
            a.d.p.g = ac.offsetY;
            a.d.p.c = ac.extent;
            a.d.p.i = ac.brush;
            a.d.p.h = ac.label;
            a.d.p.a = ab.b(ac.font);
            let ad = this.e3;
            if (this.cn) {
                ad = (MathUtil.f(this.a9.h(this.ff)) + 180) % 360;
            }
            let ae = this.av(this.ff, ad, this.hy, this.cm, this.ao, this.formatSubtitle);
            let af = this.br.a();
            let ag = this.aq(this.e4, this.mf, af, ae, this.alignSubtitle, runOn(this.view, this.view.ci));
            a.d.o.b = ag.angle;
            a.d.o.e = ag.width;
            a.d.o.d = ag.height;
            a.d.o.f = ag.offsetX;
            a.d.o.g = ag.offsetY;
            a.d.o.c = ag.extent;
            a.d.o.i = ag.brush;
            a.d.o.h = ag.label;
            a.d.o.a = af.b(ag.font);
            let ah = this.dp;
            if (this.b8) {
                ah = (MathUtil.f(this.a9.h(this.dr)) + 180) % 360;
            }
            let ai = this.av(this.dr, ah, this.f6, this.b7, this.an, this.formatHighlightLabel);
            let aj = this.bq.a();
            let ak = this.aq(this.dq, this.l8, aj, ai, this.alignHighlightLabel, runOn(this.view, this.view.cg));
            a.d.m.b = ak.angle;
            a.d.m.e = ak.width;
            a.d.m.d = ak.height;
            a.d.m.f = ak.offsetX;
            a.d.m.g = ak.offsetY;
            a.d.m.c = ak.extent;
            a.d.m.i = ak.brush;
            let al = !(this.bw == 0 || this.bw == 5);
            a.d.m.h = al ? ak.label : null;
            a.d.m.a = aj.b(ak.font);
            for (let am = 0; am < o.count; am++) {
                a.d.l[am] = o._inner[am];
            }
            for (let an = 0; an < p.count; an++) {
                a.d.k[an] = p._inner[an];
            }
            a.d.ab = this.et(this.e0, 0.5);
            a.d.y = this.et(this.ev, 0.57);
            a.d.t = this.et(this.du, 0.65);
            a.d.ad = this.et(this.e7, 0.5);
            a.d.ac = this.et(this.e5, 0.57);
            a.d.v = this.et(this.d4, 0.54);
            a.d.u = this.et(this.d2, 0.57);
            a.d.aa = d.i;
            a.d.x = d.g;
            let ao = this.ex;
            if (isNaN_((ao))) {
                ao = 2.8;
            }
            let ap = ao * Math.PI / 180;
            if (ap < 0) {
                ap = 0;
            }
            a.d.z = ap;
            a.d.ak = this.mg;
            a.d.ai = this.l9;
            a.d.aj = this.me;
            a.d.ae = this.es(this.e9);
            a.d.w = this.es(this.d6);
            if (isNaN_(a.d.ae)) {
                a.d.ae = XamRadialGauge.fa;
            }
            if (isNaN_(a.d.w)) {
                a.d.w = XamRadialGauge.d7;
            }
            a.d.r.clear();
            for (let aq = 0; aq < this.ranges.count; aq++) {
                let ar = this.ranges._inner[aq];
                let as = this.es(Math.min(ar.o, ar.j));
                let at = this.es(Math.max(ar.o, ar.j));
                if (isNaN_(as) || isNaN_(at)) {
                    continue;
                }
                let au = d.h(as);
                let av = d.h(at);
                let aw = RadialGaugeScaler.k(au, av, this.mi);
                au = aw.c;
                av = aw.d;
                let ax = new RadialGaugeRangeFrame();
                ax.e = au;
                ax.b = av;
                ax.k = ar.ao != null ? ar.ao : this.l7(aq, this.ak);
                ax.l = ar.ap != null ? ar.ap : this.l7(aq, this.al);
                ax.h = this.et(ar.p, XamRadialGaugeRange.q);
                ax.f = this.es(ar.l);
                if (isNaN_(ax.f)) {
                    ax.f = Math.max(0, this.e0);
                }
                ax.c = this.es(ar.k);
                if (isNaN_(ax.c)) {
                    ax.c = Math.max(0, this.e0);
                }
                ax.g = this.es(ar.n);
                if (isNaN_(ax.g)) {
                    ax.g = Math.max(0, this.ev);
                }
                ax.d = this.es(ar.m);
                if (isNaN_(ax.d)) {
                    ax.d = Math.max(0, this.ev);
                }
                if (this.mi == 0) {
                    let ay = ax.f;
                    ax.f = ax.c;
                    ax.c = ay;
                    ay = ax.g;
                    ax.g = ax.d;
                    ax.d = ay;
                }
                a.d.r.add(ax);
            }
        }
        i1() {
            let a = this.a3;
            a.e = this.ep;
            let b = a.a;
            let c = this.l4;
            let d = this.l5;
            let e = this.eq(this.dj, XamRadialGauge.dk);
            let f = this.a0;
            let g = this.dg;
            let h = this.de;
            if (isInfinity(h) || isNaN_(h)) {
                h = 0.12;
            }
            if (isInfinity(g) || isNaN_(g)) {
                g = 0.82;
            }
            let i = this.dc;
            if (isInfinity(i) || isNaN_(i)) {
                i = 4;
            }
            if (h > g) {
                let j = g;
                g = h;
                h = j;
            }
            let k = this.a9;
            let l = k.i;
            let m = k.g;
            b.l = c;
            b.m = d;
            b.h = e;
            if (f == 0) {
                b.b = 0;
                b.g = 0;
                b.c = 0;
                b.d = 0;
                b.e = this.dg;
            }
            else {
                b.b = i;
                let n = this.di * Math.PI / 180;
                if (n < 0) {
                    n = 0;
                }
                if ((Math.PI * 2) - (m - l) < n) {
                    b.f = 0;
                    b.b = 0;
                    b.g = 0;
                    b.c = 0;
                    b.d = 0;
                    b.e = g;
                }
                else {
                    b.f = n;
                    b.g = l;
                    b.c = m;
                    b.b = i;
                    b.d = h;
                    b.e = g;
                }
            }
        }
        get b5() {
            return this.bc.f();
        }
        get fd() {
            return this.c7;
        }
        set fd(a) {
            let b = this.c7;
            this.c7 = a;
            this.iy("TransitionProgress", b, this.c7);
        }
        iq(a, b) {
            let c = this.dn(a);
            let d = this.bx == 2;
            let e = d ? this.cc : this.ce;
            if (e) {
                let f = this.fe(this.a9.g - Math.PI * 2);
                switch (this.mi) {
                    case 1:
                        if (c < this.da) {
                            c = c < f * 0.5 ? this.c9 : this.da;
                        }
                        break;
                    case 0:
                        if (c > this.c9) {
                            c = c < (f + this.c9) * 0.5 ? this.c9 : this.da;
                        }
                        break;
                }
            }
            if (d) {
                if (c != this.dr) {
                    this.dr = c;
                }
            }
            else {
                if (c != this.ff) {
                    this.ff = c;
                }
            }
        }
        destroy() {
            this.provideContainer(null);
        }
        provideContainer(a) {
            this.view.aw(a);
        }
        onMouseMove(a, b) {
            if (this.bx != 0) {
                this.iq(a, b);
            }
        }
        onMouseDown(a, b = false) {
            if (this.cf && this.needleContainsPoint(a, b) && this.bx == 0) {
                this.bx = 1;
            }
            if (this.cd && this.highlightNeedleContainsPoint(a, b) && this.bx == 0) {
                this.bx = 2;
            }
        }
        onMouseUp(a) {
            if (this.bx != 0) {
                this.bx = 0;
            }
        }
        containerResized() {
            this.view.ax();
        }
        ir() {
            this.view.flush();
        }
        ba() {
            let a = new GaugeVisualData();
            a.viewport = new RectData(this.mm.left, this.mm.top, this.mm.width, this.mm.height);
            a.scaleLabels = new ScaleLabelVisualDataList();
            a.scaleTickmarks = new ScaleTickmarkVisualDataList();
            a.ranges = new RangeVisualDataList();
            a.needle = new NeedleVisualData();
            a.highlightNeedle = new NeedleVisualData();
            a.titleLabels = new ScaleLabelVisualDataList();
            a.subtitleLabels = new ScaleLabelVisualDataList();
            a.highlightLabels = new ScaleLabelVisualDataList();
            this.view.am(a);
            return a;
        }
        fu() {
            let a = this.ba();
            a.scaleByViewport();
            return a.serialize();
        }
        bp() {
            if (this.fv == null) {
                return FontUtil.getFont(this.view.ac);
            }
            else {
                return FontUtil.toFontInfo(this.view.ac, this.fv);
            }
        }
        get eo() {
            return this.c6;
        }
        set eo(a) {
            let b = this.c6;
            this.c6 = a;
            this.iy("PixelScalingRatio", b, this.c6);
        }
        get db() {
            return this.c5;
        }
        set db(a) {
            let b = this.c5;
            this.c5 = a;
            this.iy("ActualPixelScalingRatio", b, this.c5);
        }
        get bq() {
            return this.bj;
        }
        set bq(a) {
            let b = this.bj;
            if (a == null || !this.b6(a)) {
                a = XamRadialGauge.bm();
            }
            else {
                a = FontUtil.getFontInfoFromString(this.view.ac, a.fontString);
            }
            this.bj = a;
            if (b != this.bj) {
                this.iy("HighlightLabelTextStyle", b, this.bj);
            }
        }
        b6(a) {
            if (a == null) {
                return false;
            }
            return a.fontString != null && a.fontString != "NaNpx/normal";
        }
        get br() {
            return this.bk;
        }
        set br(a) {
            let b = this.bk;
            if (a == null || !this.b6(a)) {
                a = XamRadialGauge.bn();
            }
            else {
                a = FontUtil.getFontInfoFromString(this.view.ac, a.fontString);
            }
            this.bk = a;
            if (b != this.bk) {
                this.iy("SubtitleTextStyle", b, this.bk);
            }
        }
        get bs() {
            return this.bl;
        }
        set bs(a) {
            let b = this.bl;
            if (a == null || !this.b6(a)) {
                a = XamRadialGauge.bo();
            }
            else {
                a = FontUtil.getFontInfoFromString(this.view.ac, a.fontString);
            }
            this.bl = a;
            if (b != this.bl) {
                this.iy("TitleTextStyle", b, this.bl);
            }
        }
    }
    XamRadialGauge.$t = markType(XamRadialGauge, 'XamRadialGauge', Control.$, [INotifyPropertyChanged_$type]);
    XamRadialGauge.bh = null;
    XamRadialGauge.bi = null;
    XamRadialGauge.bg = null;
    XamRadialGauge.j3 = DependencyProperty.i("HighlighValueOpacity", Number_$type, XamRadialGauge.$, new PropertyMetadata(2, 0.5, (a, b) => a.iy("HighlighValueOpacity", b.oldValue, b.newValue)));
    XamRadialGauge.k1 = DependencyProperty.i("NeedleStartWidth", Number_$type, XamRadialGauge.$, new PropertyMetadata(2, NaN, (a, b) => a.iy("NeedleStartWidth", b.oldValue, b.newValue)));
    XamRadialGauge.el = DeviceUtils.g(1);
    XamRadialGauge.ee = DeviceUtils.g(1);
    XamRadialGauge.fa = DeviceUtils.g(3);
    XamRadialGauge.d7 = DeviceUtils.g(2);
    XamRadialGauge.dk = DeviceUtils.g(12);
    XamRadialGauge.$$p = markDep(DependencyProperty, PropertyMetadata, XamRadialGauge, 'iy', ['BackingBrush:l4:jh', [Brush.$, null], 'BackingCornerRadius:dc:ji', [1, 4], 'BackingInnerExtent:de:jj', [1, 0.12], 'BackingOuterExtent:dg:jk', [1, 0.82], 'BackingOutline:l5:jl', [Brush.$, null], 'BackingOversweep:di:jm', [1, 3], 'BackingShape:a0:jn', [RadialGaugeBackingShape_$type, enumGetBox(RadialGaugeBackingShape_$type, 0)], 'BackingStrokeThickness:dj:jo', [1, XamRadialGauge.dk], 'CenterX:dl:jp', [1, 0.5], 'CenterY:dm:jq', [1, 0.5], 'DuplicateLabelOmissionStrategy:a1:jr', [RadialGaugeDuplicateLabelOmissionStrategy_$type, enumGetBox(RadialGaugeDuplicateLabelOmissionStrategy_$type, 0)], 'FontBrush:l6:js', [Brush.$, null], 'Font:fv:jt', [2, null], 'HighlightLabelAngle:dp:ju', [1, 90], 'HighlightLabelBrush:l8:jv', [Brush.$, null], 'HighlightLabelDisplaysValue:b7:jw', [0, false], 'HighlightLabelExtent:dq:jx', [1, 0.2], 'HighlightLabelFormat:f2:jy', [2, null], 'HighlightLabelFormatSpecifiers:ag:jz', [Array_$type, null], 'HighlightLabelSnapsToNeedlePivot:b8:j0', [0, false], 'HighlightLabelText:f6:j1', [2, null], 'HighlightValueDisplayMode:bv:j2', [HighlightedValueDisplayMode_$type, enumGetBox(HighlightedValueDisplayMode_$type, 0)], 'HighlightValue:dr:j4', [1, NaN], 'Interval:dt:j5', [1, NaN], 'IsHighlightNeedleDraggingConstrained:cc:j6', [0, true], 'IsHighlightNeedleDraggingEnabled:cd:j7', [0, false], 'IsNeedleDraggingConstrained:ce:j8', [0, true], 'IsNeedleDraggingEnabled:cf:j9', [0, false], 'LabelExtent:du:ka', [1, 0.65], 'LabelFormat:gi:kb', [2, null], 'LabelFormatSpecifiers:ah:kc', [Array_$type, null], 'LabelInterval:dw:kd', [1, NaN], 'MaximumValue:dx:ke', [1, 100], 'MinimumValue:dz:kf', [1, 0], 'MinorTickBrush:l9:kg', [Brush.$, null], 'MinorTickCount:d1:kh', [1, 3], 'MinorTickEndExtent:d2:ki', [1, 0.57], 'MinorTickStartExtent:d4:kj', [1, 0.54], 'MinorTickStrokeThickness:d6:kk', [1, XamRadialGauge.d7], 'NeedleBaseFeatureExtent:d8:kl', [1, NaN], 'NeedleBaseFeatureWidthRatio:d9:km', [1, NaN], 'NeedleBrush:ma:kn', [Brush.$, null], 'NeedleEndExtent:ea:ko', [1, NaN], 'NeedleEndWidthRatio:eb:kp', [1, NaN], 'NeedleOutline:mb:kq', [Brush.$, null], 'NeedlePivotBrush:mc:kr', [Brush.$, null], 'NeedlePivotInnerWidthRatio:ec:ks', [1, NaN], 'NeedlePivotOutline:md:kt', [Brush.$, null], 'NeedlePivotShape:a6:ku', [RadialGaugePivotShape_$type, enumGetBox(RadialGaugePivotShape_$type, 3)], 'NeedlePivotStrokeThickness:ed:kv', [1, XamRadialGauge.ee], 'NeedlePivotWidthRatio:ef:kw', [1, NaN], 'NeedlePointFeatureExtent:eg:kx', [1, NaN], 'NeedlePointFeatureWidthRatio:eh:ky', [1, NaN], 'NeedleShape:a5:kz', [RadialGaugeNeedleShape_$type, enumGetBox(RadialGaugeNeedleShape_$type, 4)], 'NeedleStartExtent:ei:k0', [1, NaN], 'NeedleStrokeThickness:ek:k2', [1, XamRadialGauge.el], 'OpticalScalingEnabled:ck:k3', [0, false], 'OpticalScalingSize:en:k4', [1, 500], 'RadiusMultiplier:ep:k5', [1, 1], 'RangeBrushes:ak:k6', [BrushCollection.$, null], 'RangeOutlines:al:k7', [BrushCollection.$, null], 'Ranges::k8', [RadialGaugeRangeCollection.$, null], 'ScaleBrush:me:k9', [Brush.$, null], 'ScaleEndAngle:eu:la', [1, 45], 'ScaleEndExtent:ev:lb', [1, 0.57], 'ScaleOversweep:ex:lc', [1, 2.8], 'ScaleOversweepShape:a8:ld', [RadialGaugeScaleOversweepShape_$type, enumGetBox(RadialGaugeScaleOversweepShape_$type, 0)], 'ScaleStartAngle:ez:le', [1, 135], 'ScaleStartExtent:e0:lf', [1, 0.5], 'ScaleSweepDirection:mi:lg', [SweepDirection_$type, enumGetBox(SweepDirection_$type, 1)], 'SubtitleAngle:e3:lh', [1, 90], 'SubtitleBrush:mf:li', [Brush.$, null], 'SubtitleDisplaysValue:cm:lj', [0, false], 'SubtitleExtent:e4:lk', [1, 0.5], 'SubtitleFormat:hu:ll', [2, null], 'SubtitleFormatSpecifiers:ai:lm', [Array_$type, null], 'SubtitleSnapsToNeedlePivot:cn:ln', [0, false], 'SubtitleText:hy:lo', [2, null], 'TickBrush:mg:lp', [Brush.$, null], 'TickEndExtent:e5:lq', [1, 0.57], 'TickStartExtent:e7:lr', [1, 0.5], 'TickStrokeThickness:e9:ls', [1, XamRadialGauge.fa], 'TitleAngle:fb:lt', [1, 90], 'TitleBrush:mh:lu', [Brush.$, null], 'TitleDisplaysValue:co:lv', [0, false], 'TitleExtent:fc:lw', [1, 0.38], 'TitleFormat:h9:lx', [2, null], 'TitleFormatSpecifiers:aj:ly', [Array_$type, null], 'TitleSnapsToNeedlePivot:cp:lz', [0, false], 'TitleText:id:l0', [2, null], 'TransitionDuration:fg:l1', [1, 0], 'TransitionEasingFunction:bf:l2', [Delegate_$type, null], 'Value:ff:l3', [1, 0]]);
    return XamRadialGauge;
})();
/**
 * @hidden
 */
let XamRadialGaugeView = /*@__PURE__*/ (() => {
    class XamRadialGaugeView extends Base {
        constructor(a) {
            super();
            this.h = null;
            this.s = null;
            this.r = null;
            this.q = null;
            this.v = null;
            this.u = null;
            this.t = null;
            this.b4 = new Path();
            this.b3 = new Path();
            this.b6 = new Path();
            this.b2 = new Path();
            this.b5 = new Path();
            this.b7 = new Path();
            this.o = null;
            this.a = ["needle", "needlePivot", "backing", "scale", "tick", "minorTick", "label"];
            this.c = null;
            this.d = null;
            this.l = false;
            this.m = false;
            this.g = null;
            this.ad = null;
            this.k = null;
            this.ac = null;
            this.i = null;
            this.bp = new Brush();
            this.bq = ((() => {
                let $ret = new Brush();
                $ret.fill = "black";
                return $ret;
            })());
            this.w = NaN;
            this.p = null;
            this.af = -1;
            this.ae = -1;
            this.bu = null;
            this.bv = null;
            this.bw = null;
            this.bx = null;
            this.br = null;
            this.bs = null;
            this.by = null;
            this.b0 = null;
            this.bt = null;
            this.bz = null;
            this.b1 = null;
            this.e = null;
            this.f = null;
            this.x = 0;
            this.h = a;
            this.o = new Dictionary$2(String_$type, Dictionary$2.$.specialize(String_$type, String_$type), 0);
            this.q = new List$1(TextBlock.$, 0);
            this.r = new List$1(Path.$, 0);
            this.s = new List$1(Path.$, 0);
            this.v = new List$1(TextBlock.$, 0);
            this.u = new List$1(TextBlock.$, 0);
            this.t = new List$1(TextBlock.$, 0);
        }
        ar(a) {
            a._visibility = 0;
        }
        as(a) {
            a._visibility = 1;
        }
        at(a) {
            this.q.remove(a);
        }
        bm() {
            let a = new TextBlock();
            this.q.add(a);
            return a;
        }
        bh(a) {
            this.v.remove(a);
        }
        bo() {
            let a = new TextBlock();
            this.v.add(a);
            return a;
        }
        bg(a) {
            this.u.remove(a);
        }
        bn() {
            let a = new TextBlock();
            this.u.add(a);
            return a;
        }
        ap(a) {
            this.t.remove(a);
        }
        bl() {
            let a = new TextBlock();
            this.t.add(a);
            return a;
        }
        a2(a) {
            a._visibility = 0;
        }
        a3(a) {
            a._visibility = 1;
        }
        a4(a) {
            this.r.remove(a);
        }
        ce() {
            let a = new Path();
            this.r.add(a);
            return a;
        }
        a7(a) {
            a._visibility = 0;
        }
        a8(a) {
            a._visibility = 1;
        }
        a9(a) {
            this.s.remove(a);
        }
        cf() {
            let a = new Path();
            this.s.add(a);
            return a;
        }
        n() {
            return true;
        }
        ca() {
            return this.b4;
        }
        b9() {
            return this.b3;
        }
        cc() {
            return this.b6;
        }
        z(a, b) {
            let c = typeCast(TextBlock.$, a);
            if (c != null && c.al != null) {
                this.k.ad(b);
                return this.k.f(c) + 0;
            }
            return 0;
        }
        ch(a, b) {
            if (b == null) {
                b = this.h.bp();
            }
            let c = this.z(a, b);
            let d = this.y(b);
            return new Size(1, c, d);
        }
        cj(a, b) {
            let c = this.z(a, b);
            let d = this.y(b);
            return new Size(1, c, d);
        }
        ci(a, b) {
            let c = this.z(a, b);
            let d = this.y(b);
            return new Size(1, c, d);
        }
        cg(a, b) {
            let c = this.z(a, b);
            let d = this.y(b);
            return new Size(1, c, d);
        }
        ao() {
            this.l = true;
            let a = ["#CED3D8", "#CED3D8", "#EBEDEF", "#FFC73C", "#617583", "rgba(100,107,114,.74)", "rgba(100,107,114,.74)"];
            let b = ["#B2B9C0", "#B2B9C0", "#B2B9C0", null, null, null, null];
            let c = ["background-color", "border-top-color"];
            let d = ((() => {
                let $ret = new List$1(Array_$type, 0);
                $ret.add(a);
                $ret.add(b);
                return $ret;
            })());
            this.o.clear();
            let e = this.a.length;
            for (let f = 0; f < e; f++) {
                let g = new Dictionary$2(String_$type, String_$type, 0);
                let h = this.a[f];
                let i = new Array(c.length);
                arrayCopy1(c, 0, i, 0, c.length);
                this.b("ui-radialgauge-" + h, i);
                for (let j = 0; j < i.length; j++) {
                    g.item(c[j], (i[j] == null) ? d._inner[j][f] : i[j]);
                }
                this.o.item(h, g);
            }
            this.bj();
            let k;
            let l;
            let m = BrushUtil.h("radialgauge-range", this.ac, k, l);
            k = m.p2;
            l = m.p3;
            this.c = k;
            this.d = l;
            if (this.e == null) {
                this.h.ak = this.c;
            }
            if (this.f == null) {
                this.h.al = this.d;
            }
            this.l = false;
        }
        au() {
            this.aq();
            if (this.g != null) {
                this.g.at(this.ac.rootWrapper, "");
            }
        }
        ay() {
            if (this.g != null && this.ac != null) {
                this.g.bh(this.ac.rootWrapper, "");
            }
        }
        bj() {
            this.l = true;
            let a = this.a.length;
            for (let b = 0; b < a; b++) {
                let c = this.a[b];
                this.bi(c, this.o.item(c));
            }
            this.l = false;
        }
        bi(a, b) {
            let c = null;
            let d = null;
            let e = b.count;
            for (let f of fromEnum(b.keys)) {
                switch (f) {
                    case "background-color":
                        c = new Brush();
                        if (b.item(f) != null) {
                            c._fill = b.item(f);
                        }
                        break;
                    case "border-top-color":
                        d = new Brush();
                        if (b.item(f) != null) {
                            d._fill = b.item(f);
                        }
                        break;
                }
            }
            switch (a) {
                case "needle":
                    if (this.bu == null) {
                        this.h.ma = c;
                    }
                    if (this.bv == null) {
                        this.h.mb = d;
                    }
                    break;
                case "needlePivot":
                    if (this.bw == null) {
                        this.h.mc = c;
                    }
                    if (this.bx == null) {
                        this.h.md = d;
                    }
                    break;
                case "backing":
                    if (this.br == null) {
                        this.h.l4 = c;
                    }
                    if (this.bs == null) {
                        this.h.l5 = d;
                    }
                    break;
                case "scale":
                    if (this.by == null) {
                        this.h.me = c;
                    }
                    break;
                case "tick":
                    if (this.b0 == null) {
                        this.h.mg = c;
                    }
                    break;
                case "minorTick":
                    if (this.bt == null) {
                        this.h.l9 = c;
                    }
                    break;
                case "label":
                    this.bq = c;
                    break;
            }
        }
        b(a, b) {
            this.ac.startCSSQuery();
            for (let c = 0; c < b.length; c++) {
                b[c] = this.ac.getCssDefaultPropertyValue(a, b[c]);
            }
            this.ac.endCSSQuery();
            return b;
        }
        static ab(a, b) {
            let c = a == null ? 0 : a.length;
            if (c < 1) {
                return b;
            }
            let d = a.split('.');
            let e = (d[0].length > 0) ? parseInt(d[0]) : 0;
            if (d.length != 2) {
                return e;
            }
            c = d[1].length;
            let f = parseInt(d[1]);
            while (c-- > 0) {
                f /= 10;
            }
            return f + e;
        }
        az() {
            this.l = true;
            this.h.ma = ((() => {
                let $ret = new Brush();
                $ret.fill = "#CED3D8";
                return $ret;
            })());
            this.h.mb = ((() => {
                let $ret = new Brush();
                $ret.fill = "#B2B9C0";
                return $ret;
            })());
            this.h.mg = ((() => {
                let $ret = new Brush();
                $ret.fill = "#617583";
                return $ret;
            })());
            this.h.me = ((() => {
                let $ret = new Brush();
                $ret.fill = "#FFC73C";
                return $ret;
            })());
            this.h.l4 = ((() => {
                let $ret = new Brush();
                $ret.fill = "#EBEDEF";
                return $ret;
            })());
            this.h.l5 = ((() => {
                let $ret = new Brush();
                $ret.fill = "#B2B9C0";
                return $ret;
            })());
            this.h.mc = ((() => {
                let $ret = new Brush();
                $ret.fill = "#CED3D8";
                return $ret;
            })());
            this.h.md = ((() => {
                let $ret = new Brush();
                $ret.fill = "#B2B9C0";
                return $ret;
            })());
            this.h.l9 = ((() => {
                let $ret = new Brush();
                $ret.fill = "rgba(100,107,114,.74)";
                return $ret;
            })());
            this.l = false;
            this.aq();
        }
        aq() {
            let a = this.h.eo;
            let b = this.h.db;
            if (!isNaN_(a) && a != 0) {
                return;
            }
            if (window.devicePixelRatio != undefined && window.devicePixelRatio != b) {
                this.h.db = window.devicePixelRatio;
            }
        }
        bb() {
            if (!this.m) {
                this.m = true;
                if (this.ac != null) {
                    this.ac.setTimeout(runOn(this, this.ag), 0);
                }
                else {
                    window.setTimeout(runOn(this, this.ag), 0);
                }
            }
        }
        ag() {
            if (this.m) {
                this.m = false;
                this.h.im();
            }
        }
        flush() {
            if (this.m) {
                this.ag();
            }
        }
        a6(a, b, c) {
            a.n = b;
            a.o = c;
        }
        aw(a) {
            if (a == null) {
                this.ad = null;
                this.ac = null;
                this.k = null;
                if (this.h.b5) {
                    this.h.bc.w();
                }
                this.ai();
                return;
            }
            this.x = (isNaN_(this.h.eo) ? this.h.db : this.h.eo);
            let b = a;
            this.ac = b;
            this.h.bc.u(this.ac);
            this.ac.rootWrapper.addClass("ui-radialgauge-container");
            let c = this.x;
            let d = Math.round(b.rootWrapper.width());
            let e = Math.round(b.rootWrapper.height());
            let f = d * c;
            let g = e * c;
            this.ac.rootWrapper.setStyleProperty("position", "relative");
            let h = this.ac.createElement("canvas");
            h.setStyleProperty("position", "absolute");
            this.ac.append(h);
            this.af = truncate(Math.round(f));
            this.ae = truncate(Math.round(g));
            h.setAttribute("width", f.toString());
            h.setAttribute("height", g.toString());
            h.setStyleProperty("width", d.toString() + "px");
            h.setStyleProperty("height", e.toString() + "px");
            h.setStyleProperty("left", "0px");
            h.setStyleProperty("top", "0px");
            this.h.mm = new Rect(0, 0, 0, d, e);
            this.ad = h;
            let i = this.ac.get2DCanvasContext(this.ad);
            this.k = new RenderingContext(new CanvasViewRenderer(), i);
            this.ao();
            this.bk();
            this.k.ad(this.i);
            this.ai();
            if (TypeRegistrar.isRegistered("CanvasGestureDOMEventProxy")) {
                this.g = typeCast(EventProxy.$, TypeRegistrar.create("CanvasGestureDOMEventProxy", this.ac.rootWrapper, this.ac, false));
            }
            if (this.g != null) {
                let j = this.g;
                j.onContactStarted = delegateCombine(j.onContactStarted, runOn(this, this.al));
                let k = this.g;
                k.onContactMoved = delegateCombine(k.onContactMoved, runOn(this, this.ak));
                let l = this.g;
                l.onContactCompleted = delegateCombine(l.onContactCompleted, runOn(this, this.aj));
                this.g.ao = (m) => (this.h.cf && (this.h.bx == 1 || this.h.ch(m))) || (this.h.cd && (this.h.bx == 2 || this.h.b9(m)));
            }
            this.ba();
        }
        aj(a, b) {
            if (this.h != null) {
                this.h.onMouseUp(a);
            }
        }
        ak(a, b) {
            if (this.h != null) {
                this.h.onMouseMove(a, b);
            }
        }
        al(a, b) {
            if (this.h != null) {
                this.h.onMouseDown(a);
            }
        }
        ai() {
            if (this.g != null) {
                let a = this.g;
                a.onContactStarted = delegateRemove(a.onContactStarted, runOn(this, this.al));
                let b = this.g;
                b.onContactMoved = delegateRemove(b.onContactMoved, runOn(this, this.ak));
                let c = this.g;
                c.onContactCompleted = delegateRemove(c.onContactCompleted, runOn(this, this.aj));
                this.g.ao = null;
                this.g.av();
            }
        }
        bd(a, b) {
            if (b != null) {
                a.ao = b;
            }
            else {
                a.ao = this.bq;
            }
        }
        be(a, b) {
            if (a == null) {
                return;
            }
            if (b == null) {
                return;
            }
            a.dataContext = b;
        }
        bf() {
            this.ao();
            this.bk();
            this.bb();
        }
        bk() {
            this.i = FontUtil.getFont(this.ac);
            if (this.h.fv != null) {
                this.i = this.h.bp();
            }
            this.w = this.y(this.i);
            this.bp = new Brush();
            this.bp._fill = this.ac.rootWrapper.getStyleProperty("color");
            if (this.k != null) {
                this.k.ad(this.i);
            }
        }
        ah() {
            this.ba();
        }
        ba() {
            let a = this.h.mm.width;
            let b = this.h.mm.height;
            let c = Math.round(a * this.x);
            let d = Math.round(b * this.x);
            if (this.af != c || this.ae != d) {
                this.ad.setAttribute("width", c.toString());
                this.ad.setAttribute("height", d.toString());
                this.ad.setStyleProperty("width", a.toString() + "px");
                this.ad.setStyleProperty("height", b.toString() + "px");
                this.af = truncate(Math.round(c));
                this.ae = truncate(Math.round(d));
            }
            if (this.k.d && this.x != 1) {
                this.k.aa();
                this.k.ab(this.x, this.x);
            }
            this.k.l(this.h.mm.left, this.h.mm.top, this.h.mm.width, this.h.mm.height);
            this.k.t(this.b2);
            this.k.t(this.b6);
            if (this.p != null) {
                for (let e = 0; e < this.p.count; e++) {
                    this.k.t(this.p._inner[e]);
                }
            }
            for (let f = 0; f < this.q.count; f++) {
                let g = this.q._inner[f];
                this.k.ad(g.dataContext);
                this.k.x(g);
            }
            for (let h = 0; h < this.v.count; h++) {
                let i = this.v._inner[h];
                this.k.ad(i.dataContext);
                this.k.x(i);
            }
            for (let j = 0; j < this.u.count; j++) {
                let k = this.u._inner[j];
                this.k.ad(k.dataContext);
                this.k.x(k);
            }
            for (let l = 0; l < this.t.count; l++) {
                let m = this.t._inner[l];
                this.k.ad(m.dataContext);
                this.k.x(m);
            }
            for (let n = 0; n < this.r.count; n++) {
                this.k.t(this.r._inner[n]);
            }
            this.k.t(this.b7);
            if (this.b4.j != null) {
                this.k.aa();
                this.k.k(this.b4.j);
            }
            this.k.t(this.b4);
            if (this.b4.j != null) {
                this.k.z();
            }
            if (this.b3.j != null) {
                this.k.aa();
                this.k.k(this.b3.j);
            }
            this.k.t(this.b3);
            if (this.b3.j != null) {
                this.k.z();
            }
            this.k.t(this.b5);
            if (this.k.d && this.x != 1) {
                this.k.z();
            }
        }
        y(a) {
            return FontUtil.getCurrentFontHeight(this.ac, a);
        }
        bc(a) {
            this.p = a;
        }
        b8() {
            return this.b2;
        }
        cd() {
            return this.b7;
        }
        cb() {
            return this.b5;
        }
        ax() {
            this.aq();
            let a = Math.round(this.ac.rootWrapper.width());
            let b = Math.round(this.ac.rootWrapper.height());
            this.h.mm = new Rect(0, 0, 0, a, b);
            if (this.g != null) {
                this.g.bl = this.h.mm;
            }
        }
        j(a, b) {
            return FontUtil.getFontInfo(this.ac, a, b);
        }
        am(a) {
            a.scalePath = new PathVisualData(1, "Scale", this.b6);
            a.needlePath = new PathVisualData(1, "Needle", this.b4);
            a.highlightNeedlePath = new PathVisualData(1, "HighlightNeedle", this.b3);
            let b = this.b4.j.j._inner[0].j;
            a.needle.angle = b;
            if (this.b3 != null && typeCast(TransformGroup.$, this.b3.j) !== null) {
                let c = this.b3.j.j._inner[0].j;
                a.highlightNeedle.angle = c;
            }
            else {
                a.highlightNeedle.angle = NaN;
            }
            a.backingPath = new PathVisualData(1, "Backing", this.b2);
            a.overlayPath = new PathVisualData(1, "Overlay", this.b5);
            a.underlayPath = new PathVisualData(1, "Underlay", this.b7);
            let d = this.i;
            for (let e of fromEnum(this.q)) {
                if (e._visibility == 0) {
                    let f = e.dataContext;
                    let g = new ScaleLabelVisualData();
                    g.labelValue = e.al;
                    g.labelPosition = PointData.b({ $type: Point_$type, x: e.n, y: e.o });
                    g.labelSize = SizeData.b(this.ch(e, f));
                    g.appearance = AppearanceHelper.c(e, f);
                    a.scaleLabels.add(g);
                }
            }
            for (let h of fromEnum(this.v)) {
                if (h._visibility == 0) {
                    let i = h.dataContext;
                    let j = new ScaleLabelVisualData();
                    j.labelValue = h.al;
                    j.labelPosition = PointData.b({ $type: Point_$type, x: h.n, y: h.o });
                    j.labelSize = SizeData.b(this.ch(h, i));
                    j.appearance = AppearanceHelper.c(h, i);
                    a.titleLabels.add(j);
                }
            }
            for (let k of fromEnum(this.u)) {
                if (k._visibility == 0) {
                    let l = k.dataContext;
                    let m = new ScaleLabelVisualData();
                    m.labelValue = k.al;
                    m.labelPosition = PointData.b({ $type: Point_$type, x: k.n, y: k.o });
                    m.labelSize = SizeData.b(this.ch(k, l));
                    m.appearance = AppearanceHelper.c(k, l);
                    a.subtitleLabels.add(m);
                }
            }
            for (let n of fromEnum(this.t)) {
                if (n._visibility == 0) {
                    let o = n.dataContext;
                    let p = new ScaleLabelVisualData();
                    p.labelValue = n.al;
                    p.labelPosition = PointData.b({ $type: Point_$type, x: n.n, y: n.o });
                    p.labelSize = SizeData.b(this.ch(n, o));
                    p.appearance = AppearanceHelper.c(n, o);
                    a.highlightLabels.add(p);
                }
            }
            for (let q of fromEnum(this.r)) {
                if (q._visibility == 0) {
                    let r = new ScaleTickmarkVisualData();
                    r.tickPath = new PathVisualData(1, "tickmarks", q);
                    a.scaleTickmarks.add(r);
                }
            }
            for (let s of fromEnum(this.s)) {
                if (s._visibility == 0) {
                    let t = new RangeVisualData();
                    let u = new PathVisualData(1, "range", s);
                    t.rangePath = u;
                    a.ranges.add(t);
                }
            }
        }
        av(a, b, c) {
            let d = b;
            let e = c;
            if (!this.l) {
                switch (a) {
                    case XamRadialGauge.$$p[41]:
                        this.bu = e;
                        break;
                    case XamRadialGauge.$$p[44]:
                        this.bv = e;
                        break;
                    case XamRadialGauge.$$p[45]:
                        this.bw = e;
                        break;
                    case XamRadialGauge.$$p[47]:
                        this.bx = e;
                        break;
                    case XamRadialGauge.$$p[0]:
                        this.br = e;
                        break;
                    case XamRadialGauge.$$p[4]:
                        this.bs = e;
                        break;
                    case XamRadialGauge.$$p[62]:
                        this.by = e;
                        break;
                    case XamRadialGauge.$$p[78]:
                        this.b0 = e;
                        break;
                    case XamRadialGauge.$$p[34]:
                        this.bt = e;
                        break;
                }
                if (e == null) {
                    this.bj();
                }
            }
        }
        a0(a, b) {
            if (!this.l) {
                this.e = b;
                if (this.e == null) {
                    this.h.ak = this.c;
                }
            }
        }
        a1(a, b) {
            if (!this.l) {
                this.f = b;
                if (this.f == null) {
                    this.h.al = this.d;
                }
            }
        }
        a5() {
            this.x = this.h.db;
        }
    }
    XamRadialGaugeView.$t = markType(XamRadialGaugeView, 'XamRadialGaugeView');
    return XamRadialGaugeView;
})();

/*
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.
*/

/*
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.
*/
/**
 * Represents event argument for FormatRadialGaugeLabel.
*/
class IgxFormatRadialGaugeLabelEventArgs {
    constructor() {
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    createImplementation() {
        return new FormatRadialGaugeLabelEventArgs();
    }
    get i() {
        return this._implementation;
    }
    onImplementationCreated() {
    }
    _provideImplementation(i) {
        this._implementation = i;
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    get actualMinimumValue() {
        return this.i.actualMinimumValue;
    }
    get actualMaximumValue() {
        return this.i.actualMaximumValue;
    }
    get startAngle() {
        return this.i.startAngle;
    }
    get endAngle() {
        return this.i.endAngle;
    }
    get angle() {
        return this.i.angle;
    }
    get value() {
        return this.i.value;
    }
    get label() {
        return this.i.label;
    }
    set label(value) {
        this.i.label = value;
    }
}

/*
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.
*/
/**
 * Represents event argument for AlignRadialGaugeLabel.
*/
class IgxAlignRadialGaugeLabelEventArgs extends IgxFormatRadialGaugeLabelEventArgs {
    createImplementation() {
        return new AlignRadialGaugeLabelEventArgs();
    }
    get i() {
        return this._implementation;
    }
    constructor() {
        super();
    }
    get width() {
        return this.i.width;
    }
    set width(value) {
        this.i.width = value;
    }
    get height() {
        return this.i.height;
    }
    set height(value) {
        this.i.height = value;
    }
    get offsetX() {
        return this.i.offsetX;
    }
    set offsetX(value) {
        this.i.offsetX = value;
    }
    get offsetY() {
        return this.i.offsetY;
    }
    set offsetY(value) {
        this.i.offsetY = value;
    }
}

let defaultFont$2 = "Verdana, Arial, \"Segoe UI\", \"Myriad Pro\", sans-serif";
let RadialGaugeStylingDefaults = {
    //"ui-radialgauge-needle": {
    //    "background-color": "#333"
    //},
    //"ui-radialgauge-needleCap": {
    //    "background-color": "#494949",
    //    "border-color": "#494949"
    //},
    "ui-radialgauge-backing": {
        "background-color": "#FFFFFF",
        "border-top-color": "#CCCCCC"
    },
    //"ui-radialgauge-scale": {
    //    "background-color": "#44ACD6",
    //    "border": "none"
    //},
    "ui-radialgauge-tick": {
        "background-color": "rgba(0, 0, 0, 0.35)",
        "border-top-color": "none"
    },
    "ui-radialgauge-minorTick": {
        "background-color": "rgba(0, 0, 0, 0.2)",
        "border-top-color": "none"
    },
    "ui-radialgauge-label": {
        "background-color": FontDefaults.gaugesFontBrush.fill,
        "borde-top-color": "none"
    },
    "ui-radialgauge-range-palette-1": {
        "background-color": "#005E9C",
        "border-top-color": "none"
    },
    "ui-radialgauge-range-palette-2": {
        "background-color": "#0078C8",
        "border-top-color": "none"
    },
    "ui-radialgauge-range-palette-3": {
        "background-color": "#0092F4",
        "border-top-color": "none"
    },
    "ui-radialgauge-range-palette-4": {
        "background-color": "#21A7FF",
        "border-top-color": "none"
    },
    "ui-radialgauge-range-palette-5": {
        "background-color": "#4FB9FF",
        "border-top-color": "none"
    },
    "ui-radialgauge": {
        "font-family": FontDefaults.gaugesFontFamily,
        "font-size": FontDefaults.gaugesFontSize + "px"
    },
    "font-family": FontDefaults.gaugesFontFamily,
    "font-style": "normal",
    "font-weight": FontDefaults.gaugesFontWeight,
    "font-size": FontDefaults.gaugesFontSize + "px",
    "color": FontDefaults.gaugesFontBrush.fill,
    "font-variant": "",
    "line-height": ""
};

/*
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.
*/
let IgxRadialGaugeRangeComponent = /*@__PURE__*/ (() => {
    class IgxRadialGaugeRangeComponent {
        constructor() {
            this._renderer = null;
            this.__p = null;
            this._hasUserValues = new Set();
            this._stylingContainer = null;
            this._stylingParent = null;
            this._inStyling = false;
            this._zoneRunner = null;
            if (this._styling) {
                NamePatcher.ensureStylablePatched(Object.getPrototypeOf(this));
            }
            this._implementation = this.createImplementation();
            this._implementation.externalObject = this;
            this.onImplementationCreated();
        }
        get i() {
            return this._implementation;
        }
        onImplementationCreated() {
        }
        get rangeInternal() {
            return this.i;
        }
        createImplementation() {
            return new XamRadialGaugeRange();
        }
        ngOnInit() {
        }
        _provideRenderer(renderer) {
            this._renderer = renderer;
            this._zoneRunner = (act) => renderer._ngZone.run(act);
        }
        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 the name of the range.
    */
        get name() {
            return this.i.v;
        }
        set name(v) {
            this.i.v = v;
        }
        /**
         * Gets or sets the brush to use to fill the range.
        */
        get brush() {
            return brushToString(this.i.ao);
        }
        set brush(v) {
            this.i.ao = stringToBrush(v);
        }
        /**
         * Gets or sets the outline to use when rendering the range.
        */
        get outline() {
            return brushToString(this.i.ap);
        }
        set outline(v) {
            this.i.ap = stringToBrush(v);
        }
        /**
         * Gets or sets the value at which the range starts along the scale.
        */
        get startValue() {
            return this.i.o;
        }
        set startValue(v) {
            this.i.o = +v;
        }
        /**
         * Gets or sets the value at which the range ends along the scale.
        */
        get endValue() {
            return this.i.j;
        }
        set endValue(v) {
            this.i.j = +v;
        }
        /**
         * Gets or sets the distance from the center of the gauge (from 0 to 1) at which to start rendering the inner sweep of the range.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get innerStartExtent() {
            return this.i.l;
        }
        set innerStartExtent(v) {
            this.i.l = +v;
        }
        /**
         * Gets or sets the distance from the center of the gauge (from 0 to 1) at which to end rendering the inner sweep of the range.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get innerEndExtent() {
            return this.i.k;
        }
        set innerEndExtent(v) {
            this.i.k = +v;
        }
        /**
         * Gets or sets the distance from the center of the gauge (from 0 to 1) at which to start rendering the outer sweep of the range.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get outerStartExtent() {
            return this.i.n;
        }
        set outerStartExtent(v) {
            this.i.n = +v;
        }
        /**
         * Gets or sets the distance from the center of the gauge (from 0 to 1) at which to end rendering the outer sweep of the range.
         * Values further from zero than 1 can be used to make this extend further than the normal radius of the gauge.
        */
        get outerEndExtent() {
            return this.i.m;
        }
        set outerEndExtent(v) {
            this.i.m = +v;
        }
        /**
         * Gets or sets the stroke thickness to use when rendering this range's outline.
        */
        get strokeThickness() {
            return this.i.p;
        }
        set strokeThickness(v) {
            this.i.p = +v;
        }
        findByName(name) {
            if (this.findEphemera) {
                if (name && name.indexOf("@@e:") == 0) {
                    return this.findEphemera(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("RadialGaugeRangeComponent");
            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;
        }
        _runInZone(act) {
            if (this._zoneRunner != null) {
                this._zoneRunner(act);
            }
            else {
                act();
            }
        }
    }
    IgxRadialGaugeRangeComponent.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeComponent, deps: [], target: ɵɵFactoryTarget.Component });
    IgxRadialGaugeRangeComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: IgxRadialGaugeRangeComponent, selector: "igx-radial-gauge-range", inputs: { name: "name", brush: "brush", outline: "outline", startValue: "startValue", endValue: "endValue", innerStartExtent: "innerStartExtent", innerEndExtent: "innerEndExtent", outerStartExtent: "outerStartExtent", outerEndExtent: "outerEndExtent", strokeThickness: "strokeThickness" }, providers: [], ngImport: i0, template: ``, isInline: true });
    return IgxRadialGaugeRangeComponent;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'igx-radial-gauge-range',
                    template: ``,
                    providers: []
                }]
        }], ctorParameters: function () { return []; }, propDecorators: { name: [{
                type: Input
            }], brush: [{
                type: Input
            }], outline: [{
                type: Input
            }], startValue: [{
                type: Input
            }], endValue: [{
                type: Input
            }], innerStartExtent: [{
                type: Input
            }], innerEndExtent: [{
                type: Input
            }], outerStartExtent: [{
                type: Input
            }], outerEndExtent: [{
                type: Input
            }], strokeThickness: [{
                type: Input
            }] } });

class IgxRadialGaugeRangeCollection extends IgCollection {
    constructor(list) {
        super();
        if (!IgxRadialGaugeRangeComponent.$type) {
            IgxRadialGaugeRangeComponent.$type = markType(IgxRadialGaugeRangeComponent, "IgxRadialGaugeRangeComponent");
        }
        if (list) {
            for (let i = 0; i < list.length; i++) {
                this.add(list[i]);
            }
        }
    }
    _createInnerColl() {
        if (!IgxRadialGaugeRangeComponent.$type) {
            IgxRadialGaugeRangeComponent.$type = markType(IgxRadialGaugeRangeComponent, "IgxRadialGaugeRangeComponent");
        }
        let coll = new SyncableObservableCollection$2(IgxRadialGaugeRangeComponent.$type, XamRadialGaugeRange.$type, 0);
        coll.compare = (ext, int) => {
            let comp = ext;
            if (comp._implementation) {
                comp = comp._implementation;
            }
            if (comp.equals) {
                return comp.equals(int);
            }
            return comp === int;
        };
        coll.createTo = (ext) => {
            return ext._implementation;
        };
        coll.createFrom = (int) => {
            let ext = int.externalObject;
            if (!ext) {
                ext = IgxRadialGaugeRangeComponent._createFromInternal(int);
                if (ext) {
                    if (!int.$type && ext._implementation.setNativeElement) {
                        ext._implementation.setNativeElement(int);
                    }
                    else {
                        ext._implementation = int;
                    }
                }
            }
            return ext;
        };
        return coll;
    }
}

/*
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.
*/
/**
 * A radial gauge for displaying a single value on a defined scale.
*/
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 = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeComponent, deps: [{ token: Renderer2 }, { token: ViewContainerRef }, { token: NgZone }, { token: ComponentFactoryResolver }, { token: Injector }], target: ɵɵFactoryTarget.Component });
    IgxRadialGaugeComponent.ɵcmp = ɵɵ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: ChangeDetectionStrategy.OnPush });
    return IgxRadialGaugeComponent;
})();
ɵɵ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: Renderer2 }, { type: ViewContainerRef }, { type: NgZone }, { type: ComponentFactoryResolver }, { type: 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
            }] } });

/*
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.
*/
let IgxRadialGaugeRangeModule = /*@__PURE__*/ (() => {
    class IgxRadialGaugeRangeModule {
        constructor() {
        }
    }
    IgxRadialGaugeRangeModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxRadialGaugeRangeModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeModule, declarations: [IgxRadialGaugeRangeComponent], imports: [CommonModule], exports: [IgxRadialGaugeRangeComponent] });
    IgxRadialGaugeRangeModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeModule, imports: [[CommonModule,
            ]] });
    return IgxRadialGaugeRangeModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [IgxRadialGaugeRangeComponent],
                    exports: [IgxRadialGaugeRangeComponent
                    ],
                    imports: [CommonModule,
                    ],
                    entryComponents: []
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxRadialGaugeRangeDynamicModule = /*@__PURE__*/ (() => {
    class IgxRadialGaugeRangeDynamicModule {
        constructor() {
            TypeRegistrar.registerCons('IgxRadialGaugeRangeComponent', IgxRadialGaugeRangeComponent);
        }
    }
    IgxRadialGaugeRangeDynamicModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeDynamicModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxRadialGaugeRangeDynamicModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeDynamicModule, imports: [CommonModule, IgxRadialGaugeRangeModule], exports: [IgxRadialGaugeRangeModule] });
    IgxRadialGaugeRangeDynamicModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeDynamicModule, imports: [[CommonModule, IgxRadialGaugeRangeModule
            ], IgxRadialGaugeRangeModule] });
    return IgxRadialGaugeRangeDynamicModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeRangeDynamicModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxRadialGaugeRangeModule
                    ],
                    imports: [CommonModule, IgxRadialGaugeRangeModule
                    ],
                    entryComponents: [IgxRadialGaugeRangeComponent]
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxRadialGaugeCoreModule = /*@__PURE__*/ (() => {
    class IgxRadialGaugeCoreModule {
        constructor() {
        }
    }
    IgxRadialGaugeCoreModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeCoreModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxRadialGaugeCoreModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeCoreModule, declarations: [IgxRadialGaugeComponent], imports: [CommonModule, IgxRadialGaugeRangeModule,
            IgxNumberFormatSpecifierModule], exports: [IgxRadialGaugeComponent,
            IgxRadialGaugeRangeModule,
            IgxNumberFormatSpecifierModule] });
    IgxRadialGaugeCoreModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeCoreModule, imports: [[CommonModule, IgxRadialGaugeRangeModule,
                IgxNumberFormatSpecifierModule
            ], IgxRadialGaugeRangeModule,
            IgxNumberFormatSpecifierModule] });
    return IgxRadialGaugeCoreModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeCoreModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [IgxRadialGaugeComponent],
                    exports: [IgxRadialGaugeComponent,
                        IgxRadialGaugeRangeModule,
                        IgxNumberFormatSpecifierModule
                    ],
                    imports: [CommonModule, IgxRadialGaugeRangeModule,
                        IgxNumberFormatSpecifierModule
                    ],
                    entryComponents: []
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxRadialGaugeCoreDynamicModule = /*@__PURE__*/ (() => {
    class IgxRadialGaugeCoreDynamicModule {
        constructor() {
            TypeRegistrar.registerCons('IgxRadialGaugeComponent', IgxRadialGaugeComponent);
        }
    }
    IgxRadialGaugeCoreDynamicModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeCoreDynamicModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxRadialGaugeCoreDynamicModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeCoreDynamicModule, imports: [CommonModule, IgxRadialGaugeRangeDynamicModule,
            IgxNumberFormatSpecifierDynamicModule,
            IgxRadialGaugeCoreModule], exports: [IgxRadialGaugeRangeDynamicModule,
            IgxNumberFormatSpecifierDynamicModule,
            IgxRadialGaugeCoreModule] });
    IgxRadialGaugeCoreDynamicModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeCoreDynamicModule, imports: [[CommonModule, IgxRadialGaugeRangeDynamicModule,
                IgxNumberFormatSpecifierDynamicModule,
                IgxRadialGaugeCoreModule
            ], IgxRadialGaugeRangeDynamicModule,
            IgxNumberFormatSpecifierDynamicModule,
            IgxRadialGaugeCoreModule] });
    return IgxRadialGaugeCoreDynamicModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeCoreDynamicModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxRadialGaugeRangeDynamicModule,
                        IgxNumberFormatSpecifierDynamicModule,
                        IgxRadialGaugeCoreModule
                    ],
                    imports: [CommonModule, IgxRadialGaugeRangeDynamicModule,
                        IgxNumberFormatSpecifierDynamicModule,
                        IgxRadialGaugeCoreModule
                    ],
                    entryComponents: [IgxRadialGaugeComponent]
                }]
        }], ctorParameters: function () { return []; } });

/*
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.
*/
let IgxRadialGaugeModule = /*@__PURE__*/ (() => {
    class IgxRadialGaugeModule {
    }
    IgxRadialGaugeModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxRadialGaugeModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeModule, imports: [CommonModule, IgxRadialGaugeCoreModule,
            IgxDVInteractivityModule], exports: [IgxRadialGaugeCoreModule,
            IgxDVInteractivityModule] });
    IgxRadialGaugeModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeModule, imports: [[CommonModule, IgxRadialGaugeCoreModule,
                IgxDVInteractivityModule
            ], IgxRadialGaugeCoreModule,
            IgxDVInteractivityModule] });
    return IgxRadialGaugeModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxRadialGaugeCoreModule,
                        IgxDVInteractivityModule
                    ],
                    imports: [CommonModule, IgxRadialGaugeCoreModule,
                        IgxDVInteractivityModule
                    ],
                    entryComponents: []
                }]
        }] });

/*
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.
*/
let IgxRadialGaugeDynamicModule = /*@__PURE__*/ (() => {
    class IgxRadialGaugeDynamicModule {
    }
    IgxRadialGaugeDynamicModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeDynamicModule, deps: [], target: ɵɵFactoryTarget.NgModule });
    IgxRadialGaugeDynamicModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeDynamicModule, imports: [CommonModule, IgxRadialGaugeCoreDynamicModule,
            IgxDVInteractivityDynamicModule,
            IgxRadialGaugeModule], exports: [IgxRadialGaugeCoreDynamicModule,
            IgxDVInteractivityDynamicModule,
            IgxRadialGaugeModule] });
    IgxRadialGaugeDynamicModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeDynamicModule, imports: [[CommonModule, IgxRadialGaugeCoreDynamicModule,
                IgxDVInteractivityDynamicModule,
                IgxRadialGaugeModule
            ], IgxRadialGaugeCoreDynamicModule,
            IgxDVInteractivityDynamicModule,
            IgxRadialGaugeModule] });
    return IgxRadialGaugeDynamicModule;
})();
ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxRadialGaugeDynamicModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [],
                    exports: [IgxRadialGaugeCoreDynamicModule,
                        IgxDVInteractivityDynamicModule,
                        IgxRadialGaugeModule
                    ],
                    imports: [CommonModule, IgxRadialGaugeCoreDynamicModule,
                        IgxDVInteractivityDynamicModule,
                        IgxRadialGaugeModule
                    ],
                    entryComponents: []
                }]
        }] });

/*
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.
*/

/*
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.
*/
/**
 * @hidden
 */
let CommonData = /*@__PURE__*/ (() => {
    class CommonData extends Base {
        constructor() {
            super(...arguments);
            this._borderBrush = null;
            this._borderThickness = null;
        }
        get borderBrush() {
            return this._borderBrush;
        }
        set borderBrush(a) {
            this._borderBrush = a;
        }
        get borderThickness() {
            return this._borderThickness;
        }
        set borderThickness(a) {
            this._borderThickness = a;
        }
    }
    CommonData.$t = markType(CommonData, 'CommonData');
    return CommonData;
})();

/*
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.
*/
/**
 * @hidden
 */
let ScaleVisualData = /*@__PURE__*/ (() => {
    class ScaleVisualData extends Base {
    }
    ScaleVisualData.$t = markType(ScaleVisualData, 'ScaleVisualData');
    return ScaleVisualData;
})();

/**
 * Generated bundle index. Do not edit.
 */

export { AlignLinearGraphLabelEventArgs, AlignRadialGaugeLabelEventArgs, BackingFrame, BulletGraphFrame, BulletGraphScaleFrame, BulletGraphStylingDefaults, BulletGraphTargetValueVisualData, BulletGraphVisualData, CommonData, FormatLinearGraphLabelEventArgs, FormatRadialGaugeLabelEventArgs, GaugeVisualData, IgxAlignLinearGraphLabelEventArgs, IgxAlignRadialGaugeLabelEventArgs, IgxBulletGraphComponent, IgxBulletGraphCoreDynamicModule, IgxBulletGraphCoreModule, IgxBulletGraphDynamicModule, IgxBulletGraphModule, IgxFormatLinearGraphLabelEventArgs, IgxFormatRadialGaugeLabelEventArgs, IgxLinearGaugeComponent, IgxLinearGaugeCoreDynamicModule, IgxLinearGaugeCoreModule, IgxLinearGaugeDynamicModule, IgxLinearGaugeModule, IgxLinearGraphRangeCollection, IgxLinearGraphRangeComponent, IgxLinearGraphRangeDynamicModule, IgxLinearGraphRangeModule, IgxRadialGaugeComponent, IgxRadialGaugeCoreDynamicModule, IgxRadialGaugeCoreModule, IgxRadialGaugeDynamicModule, IgxRadialGaugeModule, IgxRadialGaugeRangeCollection, IgxRadialGaugeRangeComponent, IgxRadialGaugeRangeDynamicModule, IgxRadialGaugeRangeModule, LinearGaugeFrame, LinearGaugeScaleFrame, LinearGaugeStylingDefaults, LinearGaugeVisualData, LinearGraphBackingFrame, LinearGraphFrame, LinearGraphNeedleFrame, LinearGraphNeedleParameters, LinearGraphNeedlePreparer, LinearGraphNeedleShape, LinearGraphNeedleShape_$type, LinearGraphRangeCollection, LinearGraphRangeVisualData, LinearGraphRangeVisualDataList, LinearGraphRectFrame, LinearGraphScaleFrame, LinearGraphScaleLabelVisualData, LinearGraphScaleLabelVisualDataList, LinearGraphScaleTickmarkVisualData, LinearGraphScaleTickmarkVisualDataList, LinearGraphScaler, LinearGraphToolTipVisualData, LinearGraphTooltipDataContext, LinearGraphVisualData, LinearNeedleVisualData, LinearNeedleVisualDataList, LinearScaleOrientation, LinearScaleOrientation_$type, LinearScaleVisualData, MorphSegment, NeedleVisualData, RadialGaugeBackingShape, RadialGaugeBackingShape_$type, RadialGaugeDuplicateLabelOmissionStrategy, RadialGaugeDuplicateLabelOmissionStrategy_$type, RadialGaugeFrame, RadialGaugeNeedleFrame, RadialGaugeNeedleParameters, RadialGaugeNeedlePreparer, RadialGaugeNeedleShape, RadialGaugeNeedleShape_$type, RadialGaugePivotShape, RadialGaugePivotShape_$type, RadialGaugeRangeCollection, RadialGaugeRangeFrame, RadialGaugeScaleFrame, RadialGaugeScaleFrameLabel, RadialGaugeScaleOversweepShape, RadialGaugeScaleOversweepShape_$type, RadialGaugeScaler, RadialGaugeStylingDefaults, RangeVisualData, RangeVisualDataList, ScaleLabelVisualData, ScaleLabelVisualDataList, ScaleTickmarkVisualData, ScaleTickmarkVisualDataList, ScaleVisualData, TitlesPosition, TitlesPosition_$type, ToolTipInfo, ToolTipItemVisualData, ValueVisualData, XamBulletGraph, XamBulletGraphView, XamLinearGauge, XamLinearGaugeView, XamLinearGraphRange, XamRadialGauge, XamRadialGaugeRange, XamRadialGaugeView };