/*
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 { Base, Type, typeCast, Delegate_$type, runOn, markType, getInstanceType, delegateRemove, delegateCombine, Point_$type, fromEnum, Number_$type, IEnumerable_$type, EnumUtil, Array_$type, enumGetBox, markDep } from "igniteui-angular-core";
import { ServiceProvider_Spark } from "./ServiceProvider_Spark";
import { Dictionary$2 } from "igniteui-angular-core";
import { MessageChannel_Spark } from "./MessageChannel_Spark";
import { AxisRenderMessage_Spark } from "./AxisRenderMessage_Spark";
import { ContainerResizedMessage_Spark } from "./ContainerResizedMessage_Spark";
import { ViewportChangedMessage_Spark } from "./ViewportChangedMessage_Spark";
import { PixelRatioMessage_Spark } from "./PixelRatioMessage_Spark";
import { RenderingContext } from "igniteui-angular-core";
import { FontUtil } from "igniteui-angular-core";
import { Brush } from "igniteui-angular-core";
import { Color } from "igniteui-angular-core";
import { Line } from "igniteui-angular-core";
import { TextBlock } from "igniteui-angular-core";
import { BindingFormatter } from "igniteui-angular-core";
import { SparklineAxisVisualData } from "./SparklineAxisVisualData";
import { LineVisualData } from "igniteui-angular-core";
import { AppearanceHelper } from "igniteui-angular-core";
import { Visibility_$type } from "igniteui-angular-core";
import { ClearMessage_Spark } from "./ClearMessage_Spark";
import { ISchedulableRender_$type } from "igniteui-angular-core";
import { CanvasRenderScheduler } from "igniteui-angular-core";
import { Path } from "igniteui-angular-core";
import { PolygonMessage_Spark } from "./PolygonMessage_Spark";
import { ColumnMessage_Spark } from "./ColumnMessage_Spark";
import { WinLossColumnMessage_Spark } from "./WinLossColumnMessage_Spark";
import { MarkerMessage_Spark } from "./MarkerMessage_Spark";
import { NormalRangeMessage_Spark } from "./NormalRangeMessage_Spark";
import { TrendLineMessage_Spark } from "./TrendLineMessage_Spark";
import { TooltipMessage_Spark } from "./TooltipMessage_Spark";
import { ToooltipTemplateMessage_Spark } from "./ToooltipTemplateMessage_Spark";
import { ContainerMessage_Spark } from "./ContainerMessage_Spark";
import { BrushChangedMessage_Spark } from "./BrushChangedMessage_Spark";
import { VisibilityMessage_Spark } from "./VisibilityMessage_Spark";
import { NumberChangedMessage_Spark } from "./NumberChangedMessage_Spark";
import { ContainerSizeChangedMessage_Spark } from "./ContainerSizeChangedMessage_Spark";
import { MouseMoveMessage_Spark } from "./MouseMoveMessage_Spark";
import { MouseLeaveMessage_Spark } from "./MouseLeaveMessage_Spark";
import { CanvasGestureDOMEventProxy } from "igniteui-angular-core";
import { CanvasViewRenderer } from "igniteui-angular-core";
import { Rect } from "igniteui-angular-core";
import { List$1 } from "igniteui-angular-core";
import { TranslateTransform } from "igniteui-angular-core";
import { DeviceUtils } from "igniteui-angular-core";
import { GeometryGroup } from "igniteui-angular-core";
import { EllipseGeometry } from "igniteui-angular-core";
import { PathGeometry } from "igniteui-angular-core";
import { PathFigure } from "igniteui-angular-core";
import { LineSegment } from "igniteui-angular-core";
import { RectangleGeometry } from "igniteui-angular-core";
import { SparklineToolTipContext } from "./SparklineToolTipContext";
import { DataContext } from "igniteui-angular-core";
import { SparklineVisualData } from "./SparklineVisualData";
import { RectData } from "igniteui-angular-core";
import { PathVisualData } from "igniteui-angular-core";
import { SparklineDisplayType_$type } from "./SparklineDisplayType";
import { truncate, isNaN_, isInfinity } from "igniteui-angular-core";
import { SparkFrame } from "./SparkFrame";
import { TrendLineType_$type } from "igniteui-angular-core";
import { TrendCalculators } from "igniteui-angular-core";
import { LeastSquaresFit } from "igniteui-angular-core";
import { DependencyObject } from "igniteui-angular-core";
import { IFastItemsSourceProvider_$type } from "igniteui-angular-core";
import { IFastItemsSource_$type } from "igniteui-angular-core";
import { DependencyProperty } from "igniteui-angular-core";
import { PropertyChangedMessage_Spark } from "./PropertyChangedMessage_Spark";
import { FastItemsSource } from "igniteui-angular-core";
import { DataChangedMessage_Spark } from "./DataChangedMessage_Spark";
import { NotifyCollectionChangedEventArgs } from "igniteui-angular-core";
import { FastItemsSourceReference } from "igniteui-angular-core";
import { PropertyMetadata } from "igniteui-angular-core";
import { UnknownValuePlotting_$type } from "igniteui-angular-core";
import { Control } from "igniteui-angular-core";
/**
 * @hidden
 */
export let HorizontalAxisView = /*@__PURE__*/ (() => {
    class HorizontalAxisView extends Base {
        constructor(a) {
            super();
            this.j = null;
            this.w = null;
            this.m = null;
            this.l = null;
            this.s = 0;
            this.v = 0;
            this.u = 0;
            this.k = null;
            this.r = -1;
            this.ag = null;
            this.af = null;
            this.ah = null;
            this.a = ["border-top-width", "border-top-color", "color"];
            this.n = false;
            this.q = 1;
            this.g = null;
            this.o = new Dictionary$2(Type.$, Delegate_$type, 0);
            this.d = null;
            this.c = null;
            this.p.item(AxisRenderMessage_Spark.$, (b) => this.ac(typeCast(AxisRenderMessage_Spark.$, b)));
            this.p.item(ContainerResizedMessage_Spark.$, (b) => this.y(typeCast(ContainerResizedMessage_Spark.$, b)));
            this.p.item(ViewportChangedMessage_Spark.$, (b) => this.ae(typeCast(ViewportChangedMessage_Spark.$, b)));
            this.p.item(PixelRatioMessage_Spark.$, (b) => this.ab(typeCast(PixelRatioMessage_Spark.$, b)));
            this.j = a;
        }
        b() {
            if (!this.n) {
                this.n = true;
                this.k.a("ui-sparkline-axis-x", this.a);
            }
            return this.a;
        }
        t() {
            let a = this.r;
            if (a >= 0) {
                return a;
            }
            let b = this.b()[0];
            if (b != null) {
                a = parseInt(b);
            }
            this.r = a = (a < 1) ? 1 : a;
            return a;
        }
        get h() {
            return this.g;
        }
        set h(a) {
            let b = this.g;
            this.g = a;
            this.k = a.getService("View");
            this.aa(b, this.g);
        }
        get p() {
            return this.o;
        }
        set p(a) {
            this.o = a;
        }
        get f() {
            return this.d;
        }
        set f(a) {
            this.d = a;
        }
        get e() {
            return this.c;
        }
        set e(a) {
            this.c = a;
        }
        z(a) {
            let b;
            if (((() => { let c = this.p.tryGetValue(getInstanceType(a), b); b = c.p1; return c.ret; })())) {
                b(a);
            }
        }
        aa(a, b) {
            if (a != null) {
                this.f.detachTarget(runOn(this, this.z));
            }
            if (b != null) {
                this.f = b.getService("RenderingMessages");
                this.e = b.getService("InteractionMessages");
                this.f.attachTarget(runOn(this, this.z));
            }
        }
        y(a) {
            this.w = a.j;
            this.m = a.b;
            this.l = this.k.o("ui-sparkline-axis-x");
            if (this.l == null) {
                this.l = FontUtil.getFont(a.h);
            }
            if (this.m != null) {
                this.m.ad(this.l);
            }
            this.s = FontUtil.getCurrentFontHeight(a.h, this.l);
            if (this.j != null && this.j.fm != 1) {
                a.d = a.d - this.s;
                a.e = this.t();
            }
        }
        ae(a) {
            this.v = this.w.width();
            this.u = this.s + this.t();
        }
        ac(a) {
            this.ad(a.c);
        }
        ad(a) {
            this.ah = null;
            let b = (!a || this.j == null) ? null : this.m;
            if (b == null || !b.d) {
                return;
            }
            b.l(0, 0, this.v, this.u);
            if (this.l != null) {
                b.ad(this.l);
            }
            if (this.q != 1) {
                b.aa();
                b.ab(this.q, this.q);
            }
            let c = this.t(), d = c / 2;
            let e = this.j.av == null || this.j.av.count == 0;
            if (e) {
                this.u = 0;
            }
            let f = e ? null : this.x(this.j.av.item(0));
            let g = f == null ? "" : f.toString();
            this.ag = new TextBlock();
            this.ag.al = g;
            this.ag.n = 2;
            this.af = new TextBlock();
            let h = e ? null : this.x(this.j.av.item(this.j.av.count - 1));
            this.af.al = g = h == null ? "" : h.toString();
            this.af.o = this.ag.o = c;
            this.af.n = this.v - b.g(g) - 4;
            let i = this.j.fb;
            let j = i == null ? null : i._fill;
            let k = new Color();
            let l = true;
            if (i != null) {
                l = false;
                k = i.color;
            }
            i = new Brush();
            if (l) {
                i._fill = (this.a[2] == null) ? "#000000" : this.a[2];
            }
            else {
                i.color = k;
            }
            this.ag.ao = this.af.ao = i;
            b.x(this.ag);
            b.x(this.af);
            if (c < 0.5) {
                return;
            }
            i = new Brush();
            if (j == null) {
                j = this.a[1];
            }
            i._fill = (j == null) ? "#000000" : j;
            this.ah = new Line();
            this.ah.ak = 0;
            this.ah.al = this.w.width();
            this.ah.am = d;
            this.ah.an = d;
            this.ah._stroke = i;
            this.ah.ac = c;
            b.s(this.ah);
            if (this.q != 1) {
                b.z();
            }
        }
        x(dataItem_) {
            let a = null;
            if (this.j.ai != null) {
                a = this.j.ai.i(dataItem_);
            }
            if (this.j.ax()) {
                a = this.j.c1(dataItem_);
            }
            if (a != null) {
                return a;
            }
            let label_ = this.j.br;
            return (typeof dataItem_ != 'undefined') ? dataItem_ : '';
            ;
        }
        i() {
            let a = new SparklineAxisVisualData();
            if (this.ah != null) {
                a.axisLine = new LineVisualData(1, "HorizontalAxisLine", this.ah);
                a.axisLine.appearance.isVisible = this.w.height() > 0;
            }
            let b = this.l;
            if (this.ag != null) {
                a.minLabel = AppearanceHelper.c(this.ag, this.l);
            }
            if (this.af != null) {
                a.maxLabel = AppearanceHelper.c(this.af, this.l);
            }
            return a;
        }
        ab(a) {
            this.q = a.b;
        }
    }
    HorizontalAxisView.$t = markType(HorizontalAxisView, 'HorizontalAxisView');
    return HorizontalAxisView;
})();
/**
 * @hidden
 */
export let VerticalAxisView = /*@__PURE__*/ (() => {
    class VerticalAxisView extends Base {
        constructor(a) {
            super();
            this.ad = null;
            this.ac = null;
            this.al = null;
            this.ak = null;
            this.am = null;
            this.w = -1;
            this.u = -1;
            this.j = null;
            this.aa = null;
            this.m = null;
            this.l = null;
            this.t = 0;
            this.v = 0;
            this.z = 0;
            this.y = 0;
            this.k = null;
            this.s = -1;
            this.a = ["border-top-width", "border-top-color", "color", "text-align"];
            this.n = false;
            this.g = null;
            this.p = new Dictionary$2(Type.$, Delegate_$type, 0);
            this.d = null;
            this.c = null;
            this.r = 1;
            this.q.item(AxisRenderMessage_Spark.$, (b) => this.ai(typeCast(AxisRenderMessage_Spark.$, b)));
            this.q.item(ContainerResizedMessage_Spark.$, (b) => this.ae(typeCast(ContainerResizedMessage_Spark.$, b)));
            this.q.item(ViewportChangedMessage_Spark.$, (b) => this.aj(typeCast(ViewportChangedMessage_Spark.$, b)));
            this.q.item(PixelRatioMessage_Spark.$, (b) => this.ah(typeCast(PixelRatioMessage_Spark.$, b)));
            this.j = a;
        }
        b() {
            if (!this.n) {
                this.n = true;
                this.k.a("ui-sparkline-axis-y", this.a);
            }
            return this.a;
        }
        x() {
            let a = this.s;
            if (a >= 0) {
                return a;
            }
            let b = this.b()[0];
            if (b != null) {
                a = parseInt(b);
            }
            this.s = a = (a < 1) ? 1 : a;
            return a;
        }
        get h() {
            return this.g;
        }
        set h(a) {
            let b = this.g;
            this.g = a;
            this.k = a.getService("View");
            this.ag(b, this.g);
        }
        get q() {
            return this.p;
        }
        set q(a) {
            this.p = a;
        }
        get f() {
            return this.d;
        }
        set f(a) {
            this.d = a;
        }
        get e() {
            return this.c;
        }
        set e(a) {
            this.c = a;
        }
        af(a) {
            let b;
            if (((() => { let c = this.q.tryGetValue(getInstanceType(a), b); b = c.p1; return c.ret; })())) {
                b(a);
            }
        }
        ag(a, b) {
            if (a != null) {
                this.f.detachTarget(runOn(this, this.af));
            }
            if (b != null) {
                this.f = b.getService("RenderingMessages");
                this.e = b.getService("InteractionMessages");
                this.f.attachTarget(runOn(this, this.af));
            }
        }
        ae(a) {
            this.aa = a.k;
            this.m = a.c;
            this.l = this.k.o("ui-sparkline-axis-y");
            if (this.l == null) {
                this.l = FontUtil.getFont(a.h);
            }
            if (this.m != null) {
                this.m.ad(this.l);
            }
            this.t = FontUtil.getCurrentFontHeight(a.h, this.l);
            if (this.j != null && this.j.ft != 1) {
                this.o(false);
                a.g = a.g - this.v;
                a.f = this.x();
            }
        }
        aj(a) {
            this.z = this.v + this.x();
            this.y = this.aa.height();
        }
        ai(a) {
            if (this.o(a.c)) {
                let b = new ClearMessage_Spark();
                b.c = true;
                this.f.sendMessage(b);
            }
        }
        o(a) {
            this.am = null;
            if (this.j == null || this.m == null || !this.m.d || (a && this.ak == null)) {
                return false;
            }
            let b = this.m;
            if (a) {
                b.l(0, 0, this.z, this.y);
            }
            let c = false;
            if (b != null && this.l != null) {
                b.ad(this.l);
            }
            if (!a) {
                this.al = new TextBlock();
                this.ak = new TextBlock();
                let d = this.ab(this.j.a4);
                this.al.al = this.ad = d == null ? "" : d.toString();
                let e = this.ab(this.j.a3);
                this.ak.al = this.ac = e == null ? "" : e.toString();
                if (b != null) {
                    this.w = b.g(this.ad) + 3;
                    if (this.w > this.v) {
                        c = true;
                        this.v = this.w;
                    }
                    this.u = b.g(this.ac) + 3;
                    if (this.u > this.v) {
                        c = true;
                        this.v = this.u;
                    }
                }
                if (!c) {
                    let f = Math.max(this.w, this.u);
                    if (f < this.v) {
                        this.v = f;
                        c = true;
                    }
                }
                if (c) {
                    this.z = this.v;
                }
            }
            else if (b != null) {
                if (this.r != 1) {
                    b.aa();
                    b.ab(this.r, this.r);
                }
                let g = this.j.fj;
                let h = 1;
                let i = g == null ? null : g._fill;
                let j = this.b()[3];
                if (j == "left") {
                    h = 0;
                }
                else if (j == "center") {
                    h = 0.5;
                }
                this.ak.o = 2;
                this.ak.n = (this.v - this.u) * h + 1;
                this.al.n = (this.v - this.w) * h + 1;
                this.al.o = this.y - this.t - 2;
                let k = new Color();
                let l = true;
                if (g != null) {
                    k = g.color;
                    l = false;
                }
                g = new Brush();
                if (l) {
                    g._fill = (this.a[2] == null) ? "#000000" : this.a[2];
                }
                else {
                    g.color = k;
                }
                this.al.ao = this.ak.ao = g;
                b.x(this.al);
                b.x(this.ak);
                let m = this.x(), n = m / 2;
                if (m >= 0.5) {
                    g = new Brush();
                    if (i == null) {
                        i = this.a[1];
                    }
                    g._fill = (i == null) ? "#000000" : i;
                    this.am = new Line();
                    this.am.ak = this.z - n;
                    this.am.al = this.z - n;
                    this.am.am = 0;
                    this.am.an = this.y;
                    this.am._stroke = g;
                    this.am.ac = m;
                    b.s(this.am);
                }
                if (this.r != 1) {
                    b.z();
                }
            }
            return c;
        }
        ab(dataItem_) {
            let a = null;
            if (this.j.aj != null) {
                a = this.j.aj.i(dataItem_);
            }
            if (this.j.ax()) {
                a = this.j.c1(dataItem_);
            }
            if (a != null) {
                return a;
            }
            let label_ = this.j.bt;
            return (typeof dataItem_ != 'undefined') ? dataItem_ : '';
            ;
        }
        i() {
            let a = new SparklineAxisVisualData();
            if (this.am != null) {
                a.axisLine = new LineVisualData(1, "VerticalAxisLine", this.am);
                a.axisLine.appearance.isVisible = this.aa.width() > 0;
            }
            if (this.al != null) {
                a.minLabel = AppearanceHelper.c(this.al, this.l);
            }
            if (this.ak != null) {
                a.maxLabel = AppearanceHelper.c(this.ak, this.l);
            }
            return a;
        }
        ah(a) {
            this.r = a.b;
        }
    }
    VerticalAxisView.$t = markType(VerticalAxisView, 'VerticalAxisView');
    return VerticalAxisView;
})();
/**
 * @hidden
 */
export let XamSparklineView = /*@__PURE__*/ (() => {
    class XamSparklineView extends Base {
        constructor() {
            super();
            this.bn = null;
            this.bm = null;
            this.ae = null;
            this.af = null;
            this.ag = null;
            this.ah = null;
            this.p = null;
            this.q = null;
            this.r = null;
            this.n = null;
            this.u = false;
            this.b = new Array(6);
            this.y = -1;
            this.bw = new Path();
            this.bu = new Path();
            this.bx = new Path();
            this.bv = new Path();
            this.bs = new Path();
            this.bt = new Path();
            this.br = new Path();
            this.bp = new Path();
            this.bo = new Path();
            this.bq = new Path();
            this.j = null;
            this.f = null;
            this.g = null;
            this.v = new Dictionary$2(Type.$, Delegate_$type, 0);
            this.l = null;
            this.s = false;
            this.ai = null;
            this.e = null;
            this.d = null;
            this.c = null;
            this.t = false;
            this.x = 1;
            this.bs._visibility = 1;
            this.bt._visibility = 1;
            this.br._visibility = 1;
            this.bp._visibility = 1;
            this.bo._visibility = 1;
            this.bq._visibility = 1;
            this.bv._visibility = 1;
            let a = this.w;
            a.item(ClearMessage_Spark.$, (b) => this.aj(typeCast(ClearMessage_Spark.$, b)));
            a.item(PolygonMessage_Spark.$, (b) => this.bc(typeCast(PolygonMessage_Spark.$, b)));
            a.item(ColumnMessage_Spark.$, (b) => this.a5(typeCast(ColumnMessage_Spark.$, b)));
            a.item(WinLossColumnMessage_Spark.$, (b) => this.bj(typeCast(WinLossColumnMessage_Spark.$, b)));
            a.item(MarkerMessage_Spark.$, (b) => this.a8(typeCast(MarkerMessage_Spark.$, b)));
            a.item(NormalRangeMessage_Spark.$, (b) => this.bd(typeCast(NormalRangeMessage_Spark.$, b)));
            a.item(TrendLineMessage_Spark.$, (b) => this.bg(typeCast(TrendLineMessage_Spark.$, b)));
            a.item(TooltipMessage_Spark.$, (b) => this.be(typeCast(TooltipMessage_Spark.$, b)));
            a.item(ToooltipTemplateMessage_Spark.$, (b) => this.bf(typeCast(ToooltipTemplateMessage_Spark.$, b)));
            a.item(ContainerMessage_Spark.$, (b) => this.ak(typeCast(ContainerMessage_Spark.$, b)));
            a.item(PixelRatioMessage_Spark.$, (b) => this.aw(typeCast(PixelRatioMessage_Spark.$, b)));
            a.item(BrushChangedMessage_Spark.$, (b) => this.a3(typeCast(BrushChangedMessage_Spark.$, b)));
            a.item(ContainerResizedMessage_Spark.$, (b) => this.at());
            a.item(VisibilityMessage_Spark.$, (b) => this.bi(typeCast(VisibilityMessage_Spark.$, b)));
            a.item(NumberChangedMessage_Spark.$, (b) => this.bb(typeCast(NumberChangedMessage_Spark.$, b)));
            a.item(ContainerSizeChangedMessage_Spark.$, (b) => this.at());
            this.d = new CanvasRenderScheduler();
            this.c = new CanvasRenderScheduler();
            this.d.l(this);
            this.c.l(this);
        }
        aw(a) {
            this.x = a.b;
        }
        get k() {
            return this.j;
        }
        set k(a) {
            let b = this.j;
            this.j = a;
            this.av(b, this.j);
            this.l = null;
        }
        get h() {
            return this.f;
        }
        set h(a) {
            this.f = a;
        }
        get i() {
            return this.g;
        }
        set i(a) {
            this.g = a;
        }
        get w() {
            return this.v;
        }
        set w(a) {
            this.v = a;
        }
        av(a, b) {
            if (a != null) {
                this.i.detachTarget(runOn(this, this.ar));
                this.h = null;
            }
            if (b != null) {
                this.i = b.getService("RenderingMessages");
                this.h = b.getService("InteractionMessages");
                this.i.attachTarget(runOn(this, this.ar));
                this.a2(this.h);
            }
        }
        a2(a) {
            this.h = a;
        }
        ar(a) {
            let b;
            if (((() => { let c = this.w.tryGetValue(getInstanceType(a), b); b = c.p1; return c.ret; })())) {
                b(a);
            }
        }
        get m() {
            if (this.l == null) {
                this.l = this.k.getService("Controller");
            }
            return this.l;
        }
        a1(a, b, c) {
            let d = new MouseMoveMessage_Spark();
            d.position = a;
            this.h.sendMessage(d);
        }
        a0(a) {
            let b = new MouseLeaveMessage_Spark();
            this.h.sendMessage(b);
        }
        a3(a) {
            this.a4(a.b, a.c, null, -1, -1);
        }
        a4(a, b, c, d, e) {
            let f = null;
            let g = true, h = true;
            switch (a) {
                case "sparkpath":
                case XamSparkline.$$p[0]:
                    f = this.bw;
                    break;
                case "negativesparkpath":
                case XamSparkline.$$p[29]:
                    f = this.bu;
                    break;
                case "markers":
                case XamSparkline.$$p[24]:
                    f = this.bs;
                    break;
                case "firstmarker":
                case XamSparkline.$$p[3]:
                    f = this.bo;
                    break;
                case "lastmarker":
                case XamSparkline.$$p[17]:
                    f = this.bq;
                    break;
                case "highmarker":
                case XamSparkline.$$p[7]:
                    f = this.bp;
                    break;
                case "lowmarker":
                case XamSparkline.$$p[21]:
                    f = this.br;
                    break;
                case "negativemarkers":
                case XamSparkline.$$p[30]:
                    f = this.bt;
                    break;
                case "trendline":
                case XamSparkline.$$p[38]:
                    f = this.bx;
                    h = false;
                    break;
                case "range":
                case XamSparkline.$$p[33]:
                    f = this.bv;
                    g = false;
                    break;
            }
            if (f == null) {
                return;
            }
            if (b == null && c != null) {
                b = new Brush();
                b._fill = c;
            }
            if (b != null) {
                if (h && (c == null || f._fill == null)) {
                    f._fill = b;
                }
                if (g && (c == null || f._stroke == null)) {
                    f._stroke = b;
                }
            }
            if (d > 0 && d < 1) {
                f._opacity = d;
            }
            if (e > 0 && (c == null || f.ac <= 0)) {
                f.ac = e;
            }
            this.aq();
        }
        bi(a) {
            switch (a.b) {
                case XamSparkline.$$p[26]:
                    this.bs._visibility = a.c;
                    break;
                case XamSparkline.$$p[5]:
                    this.bo._visibility = a.c;
                    break;
                case XamSparkline.$$p[19]:
                    this.bq._visibility = a.c;
                    break;
                case XamSparkline.$$p[9]:
                    this.bp._visibility = a.c;
                    break;
                case XamSparkline.$$p[23]:
                    this.br._visibility = a.c;
                    break;
                case XamSparkline.$$p[32]:
                    this.bt._visibility = a.c;
                    break;
                case XamSparkline.$$p[36]:
                    this.bv._visibility = a.c;
                    break;
                case XamSparkline.$$p[37]:
                    this.u = a.c == 0;
                    break;
            }
            this.aq();
        }
        bb(a) {
            let b = a.b;
            if (b <= 0) {
                return;
            }
            switch (a.c) {
                case XamSparkline.$$p[20]:
                    this.bw.ac = this.bu.ac = b;
                    break;
                case XamSparkline.$$p[40]:
                    this.bx.ac = b;
                    break;
            }
            this.aq();
        }
        ak(a) {
            if (a.b == null) {
                if (this.n != null) {
                    this.n.av();
                    let b = this.n;
                    b.onMouseLeave = delegateRemove(b.onMouseLeave, runOn(this, this.a0));
                    let c = this.n;
                    c.onMouseOver = delegateRemove(c.onMouseOver, runOn(this, this.a1));
                    this.n = null;
                }
                this.ae = null;
                this.af = null;
                this.ag = null;
                this.ah = null;
                this.p = this.q = this.r = null;
                this.d.j(null);
                return;
            }
            let d = a.b;
            this.d.j(d);
            this.ae = d;
            this.ae.rootWrapper.setStyleProperty("position", "relative");
            this.af = this.ae.createElement("canvas");
            this.af.setStyleProperty("position", "absolute");
            this.ag = this.ae.createElement("canvas");
            this.ag.setStyleProperty("position", "absolute");
            this.ah = this.ae.createElement("canvas");
            this.ah.setStyleProperty("position", "absolute");
            this.ae.append(this.af);
            this.ae.append(this.ag);
            this.ae.append(this.ah);
            this.p = new RenderingContext(new CanvasViewRenderer(), this.ae.get2DCanvasContext(this.af));
            this.q = new RenderingContext(new CanvasViewRenderer(), this.ae.get2DCanvasContext(this.ag));
            this.r = new RenderingContext(new CanvasViewRenderer(), this.ae.get2DCanvasContext(this.ah));
            this.n = new CanvasGestureDOMEventProxy(this.af, this.ae, false);
            let e = this.n;
            e.onMouseLeave = delegateCombine(e.onMouseLeave, runOn(this, this.a0));
            let f = this.n;
            f.onMouseOver = delegateCombine(f.onMouseOver, runOn(this, this.a1));
            this.n.ap = (g) => false;
            this.ao();
            this.at();
        }
        ao() {
            let a = ["sparkpath", "negativesparkpath", "trendline", "markers", "firstmarker", "lastmarker", "highmarker", "lowmarker", "negativemarkers", "range"];
            let b = ["#8bdc5c", "#ee5879", "#565656", "#8b5bb1", "#f8a15f", "#ee5879", "#6db1ff", "#f7d262", "#ee5879", "#66666666"];
            for (let c = 0; c < 10; c++) {
                let d = a[c];
                let e = ["background-color", "opacity", "border-top-width"];
                this.a("ui-sparkline-" + d, e);
                let f = XamSparklineView.ad(e[2], (c < 3) ? (c < 2 ? 2 : 1.5) : -1);
                if (c > 2 && c < 9) {
                    this.b[c - 3] = f;
                }
                this.a4(d, null, (e[0] == null) ? b[c] : e[0], XamSparklineView.ad(e[1], -1), c < 3 ? f : -1);
            }
        }
        static ad(v_, a) {
            let d_ = (v_ == null || v_.length < 1) ? null : parseFloat(v_);
            return (d_ == null || d_.toString() == "NaN") ? a : d_;
        }
        a(a, b) {
            this.ae.startCSSQuery();
            for (let c = 0; c < b.length; c++) {
                b[c] = this.ae.getCssDefaultPropertyValue(a, b[c]);
            }
            this.ae.endCSSQuery();
            return b;
        }
        at() {
            if (this.ae == null || this.s) {
                return;
            }
            this.s = true;
            this.ap(this.m.q);
            let a = this.ae.rootWrapper.width(), b = this.ae.rootWrapper.height();
            let c, d, e;
            c = this.af;
            d = this.ag;
            e = this.ah;
            let f = new ContainerResizedMessage_Spark();
            f.g = a;
            f.d = b;
            f.b = this.q;
            f.h = this.ae;
            f.c = this.r;
            f.f = 0;
            f.e = 0;
            f.j = d;
            f.i = c;
            f.k = e;
            this.i.sendMessage(f);
            let g = f.e, h = f.f, i = f.g - h, j = f.d - g;
            let k = i, l = a - i, m = j, n = b - j;
            c.setStyleProperty("width", k.toString() + "px");
            c.setStyleProperty("height", m.toString() + "px");
            c.setAttribute("width", (k * this.x).toString());
            c.setAttribute("height", (m * this.x).toString());
            c.setStyleProperty("marginLeft", l + "px");
            k = (i + h);
            this.az(d, k, n, k * this.x, n * this.x);
            d.setStyleProperty("marginTop", m + "px");
            d.setStyleProperty("marginLeft", (a - i - h).toString() + "px");
            this.az(e, l, m, l * this.x, m * this.x);
            this.bn = new Rect(0, 0, 0, i, j);
            if (this.n != null) {
                this.n.bl = this.bn;
            }
            this.bh();
            let o = new ViewportChangedMessage_Spark();
            o.newLeft = this.bn.left;
            o.newTop = this.bn.top;
            o.newHeight = this.bn.height;
            o.newWidth = this.bn.width;
            this.i.sendMessage(o);
            this.s = false;
        }
        al(a) {
            if (a) {
                this.y = -1;
            }
            else if (this.y < 0) {
                this.bh();
            }
        }
        bh() {
            let a = this.bn.left;
            let b = this.bn.width;
            let c = this.bn.height;
            let d = this.ab(true);
            let e = new Rect(0, a + d, d, b - d * 2, c - d * 2);
            let f = new ViewportChangedMessage_Spark();
            f.newLeft = e.left;
            f.newTop = e.top;
            f.newHeight = e.height;
            f.newWidth = e.width;
            this.bm = e;
            this.h.sendMessage(f);
        }
        aj(a) {
            if (Rect.l_op_Equality(this.bn, null)) {
                return;
            }
            switch (a.b) {
                case 2:
                    this.bs.ak = null;
                    this.bo.ak = null;
                    this.bq.ak = null;
                    this.bp.ak = null;
                    this.br.ak = null;
                    this.bt.ak = null;
                    break;
                case 8:
                    this.bv.ak = null;
                    break;
                case 1:
                    this.bw.ak = null;
                    this.bu.ak = null;
                    break;
                case 4:
                    this.am(null);
                    break;
                case 16:
                    this.bx.ak = null;
                    break;
            }
            if (a.c) {
                this.at();
            }
        }
        ab(a) {
            if (a) {
                this.y = -1;
            }
            let b = this.y;
            if (b >= 0) {
                return b;
            }
            b = 0;
            let c = this.m.q;
            if (c.fp == 0) {
                b = this.ac(b, c.bd, 0);
            }
            if (c.fk == 0) {
                b = this.ac(b, c.a6, 1);
            }
            if (c.fn == 0) {
                b = this.ac(b, c.a8, 2);
            }
            if (c.fl == 0) {
                b = this.ac(b, c.a7, 3);
            }
            if (c.fo == 0) {
                b = this.ac(b, c.bc, 4);
            }
            if (c.fq == 0) {
                b = this.ac(b, c.bi, 5);
            }
            this.y = b;
            return b;
        }
        ac(a, b, c) {
            if (b >= 0) {
                return b > a ? b : a;
            }
            return this.b[c] > a ? this.b[c] : a;
        }
        a8(a) {
            this.a9(this.bs, a.e, a.k, 0);
            this.a9(this.bt, a.f, a.l, 5);
            this.a9(this.br, a.d, a.j, 4);
            this.a9(this.bp, a.c, a.h, 3);
            this.ba(this.bo, a.m, a.g, 1);
            this.ba(this.bq, a.n, a.i, 2);
            this.aq();
        }
        ba(a, b, c, d) {
            let e = ((() => {
                let $ret = new List$1(Point_$type, 0);
                $ret.add(b);
                return $ret;
            })());
            this.a9(a, e, c, d);
        }
        a9(a, b, c, d) {
            if (c < 0) {
                c = this.b[d];
            }
            a.ak = this.bl(b, c < 0.1 ? DeviceUtils.g(3) : c);
            if (this.m.q.aq != 3) {
                let e = new TranslateTransform();
                e.j = this.m.o.d;
                a.j = e;
            }
            else {
                a.j = null;
            }
        }
        bl(a, b) {
            let c = new GeometryGroup();
            c.c = 1;
            let d = this.bn.right;
            let e = this.bn.bottom;
            for (let f of fromEnum(a)) {
                if ((!f)) {
                    continue;
                }
                if (f.x < 0 || f.y < 0 || f.x > d || f.y > e) {
                    continue;
                }
                let g = new EllipseGeometry();
                g.c = b;
                g.d = b;
                g.e = f;
                c.d.add(g);
            }
            return c;
        }
        bc(a) {
            let b = new PathGeometry();
            let c = this.m.q.aq == 1;
            for (let d of fromEnum(a.points)) {
                let e = d.length;
                if (e == 0) {
                    continue;
                }
                let f = new PathFigure();
                f._isClosed = f._isFilled = c;
                f._startPoint = d[0];
                for (let g = 1; g < e; g++) {
                    let h = new LineSegment(1);
                    h.c = d[g];
                    f._segments.add(h);
                }
                b.c.add(f);
            }
            this.bw.ak = b;
            this.aq();
        }
        bk(a, b) {
            let c = typeCast(WinLossColumnMessage_Spark.$, b);
            let d = typeCast(ColumnMessage_Spark.$, b);
            let e = new GeometryGroup();
            let f = c != null ? c.i : d.i;
            let g = c != null ? c.h : d.h;
            let h = f * 0.1;
            for (let i of fromEnum(a)) {
                let j = f * 2 - h * 2;
                let k = Math.abs(g - i.y);
                let l = i.x + h;
                let m = (i.y > g ? g : i.y);
                let n = new RectangleGeometry();
                n.e = new Rect(0, l, m, j, k);
                e.d.add(n);
            }
            return e;
        }
        a5(a) {
            this.a6(this.bw, a.d, a);
            this.a6(this.bu, a.g, a);
            this.aq();
        }
        a7(a, b, c) {
            let d = ((() => {
                let $ret = new List$1(Point_$type, 0);
                $ret.add(b);
                return $ret;
            })());
            this.a6(a, d, c);
        }
        a6(a, b, c) {
            a.ak = this.bk(b, c);
        }
        bj(a) {
            this.a6(this.bw, a.d, a);
            this.a6(this.bu, a.g, a);
            this.aq();
        }
        bd(a) {
            let b = new RectangleGeometry();
            b.e = new Rect(0, a.k, a.l, a.j, a.i);
            this.bv.ak = b;
            this.aq();
        }
        bg(a) {
            if (a.points.length == 0) {
                return;
            }
            let b = new PathGeometry();
            let c = new PathFigure();
            c._isClosed = c._isFilled = false;
            c._startPoint = a.points[0];
            let d = a.points.length;
            for (let e = 1; e < d; e++) {
                let f = new LineSegment(1);
                f.c = a.points[e];
                c._segments.add(f);
            }
            b.c.add(c);
            this.bx.ak = b;
            this.aq();
        }
        bf(a) {
            this.ai = a.template;
        }
        be(a) {
            if (!this.u) {
                this.am(null);
                return;
            }
            let b = truncate(Math.round(a.xOffset - 10));
            let c = truncate(Math.round(a.yOffset - 10));
            b = truncate(Math.round(b * this.x));
            c = truncate(Math.round(c * this.x));
            let d = this.p.a(b, c);
            if (d[3] > 0) {
                this.am(a);
            }
            else {
                this.am(null);
            }
        }
        am(a) {
            let x_ = 0, y_ = 0;
            let v_ = null, t_ = null, i_ = this.ae;
            {
                if (a != null) {
                    t_ = this.ai;
                    x_ = a.xOffset + 6;
                    y_ = a.yOffset + 6;
                    let b = a.context;
                    let f_ = b.first, l_ = b.last, o_ = b.low, h_ = b.high;
                    v_ = { First: f_, Last: l_, Low: o_, High: h_ };
                }
                let ren_ = this.ae;
                if (this.e == null) {
                    this.e = new DataContext();
                }
                let dc_ = this.e;
                dc_.item = v_;
                dc_.series = this;
                let tt_ = this.ai;
                if (tt_ != null) {
                    if (v_ != null) {
                        tt_.updateToolTip(dc_);
                        tt_.setRawPosition(x_, y_);
                    }
                    else {
                        tt_.hideToolTip();
                    }
                }
            }
        }
        get isDirty() {
            return this.t;
        }
        set isDirty(a) {
            this.t = a;
        }
        aq() {
            if (!this.isDirty) {
                this.isDirty = true;
                this.d.o(this.p, null);
                this.c.o(this.q, this.r);
            }
        }
        undirty(a) {
            this.t = false;
            this.ax();
        }
        get index() {
            return 10;
        }
        ay(a, b) {
            b.t(a);
        }
        ax() {
            let a = this.p;
            if (a != null && a.d) {
                if (this.x != 1) {
                    a.aa();
                    a.ab(this.x, this.x);
                }
                a.l(this.bn.left, this.bn.top, this.bn.width, this.bn.height);
                a.t(this.bw);
                a.t(this.bu);
                this.ay(this.bs, a);
                this.ay(this.bt, a);
                this.ay(this.bp, a);
                this.ay(this.br, a);
                this.ay(this.bo, a);
                this.ay(this.bq, a);
                a.t(this.bv);
                a.t(this.bx);
                if (this.x != 1) {
                    a.z();
                }
            }
            let b = new AxisRenderMessage_Spark();
            b.c = true;
            this.i.sendMessage(b);
            this.postRender();
        }
        postRender() {
        }
        an(a) {
            a.viewport = new RectData(this.bn.left, this.bn.top, this.bn.width, this.bn.height);
            a.marginViewport = new RectData(this.bm.left, this.bm.top, this.bm.width, this.bm.height);
            a.sparkPath = new PathVisualData(1, "SparkPath", this.bw);
            a.negativeSparkPath = new PathVisualData(1, "NegativeSparkPath", this.bu);
            a.trendLinePath = new PathVisualData(1, "TrendLinePath", this.bx);
            a.rangePath = new PathVisualData(1, "RangePath", this.bv);
            a.markersPath = new PathVisualData(1, "MarkersPath", this.bs);
            a.negativeMarkersPath = new PathVisualData(1, "NegativeMarkersPath", this.bt);
            a.lowMarkersPath = new PathVisualData(1, "LowMarkersPath", this.br);
            a.highMarkersPath = new PathVisualData(1, "HighMarkersPath", this.bp);
            a.firstMarkerPath = new PathVisualData(1, "FirstMarkerPath", this.bo);
            a.lastMarkerPath = new PathVisualData(1, "LastMarkerPath", this.bq);
        }
        preRender() {
        }
        isValid() {
            return true;
        }
        o(a) {
            return FontUtil.getFontForClass(this.ae, a);
        }
        az(a, b, c, d, e) {
            a.setStyleProperty("width", b + "px");
            a.setStyleProperty("height", c + "px");
            a.setAttribute("width", d.toString());
            a.setAttribute("height", e.toString());
        }
        ap(a) {
            let b = a.bl;
            let c = a.a5;
            if (!isNaN_(b) && b != 0) {
                return;
            }
            if (window.devicePixelRatio != undefined && window.devicePixelRatio != c) {
                a.a5 = window.devicePixelRatio;
            }
        }
        au() {
            if (this.n != null) {
                this.n.bh(this.af, "");
            }
        }
        as() {
            this.ap(this.l.q);
            if (this.n != null) {
                this.n.at(this.af, "");
            }
        }
    }
    XamSparklineView.$t = markType(XamSparklineView, 'XamSparklineView', Base.$, [ISchedulableRender_$type]);
    return XamSparklineView;
})();
/**
 * @hidden
 */
export let SparkFramePreparer = /*@__PURE__*/ (() => {
    class SparkFramePreparer extends Base {
        constructor() {
            super(...arguments);
            this.b = null;
            this.d = 0;
            this.c = 0;
        }
        e(a) {
            this.b.r.al(false);
            a.g.clear();
            a.l.clear();
            a.j.clear();
            a.k.clear();
            a.i.clear();
            a.h.clear();
            let b = this.b.t;
            if (b == null) {
                return;
            }
            let c = b.count;
            let d = this.b.a3.top;
            let e = this.b.a3.left;
            let f = this.b.a3.width;
            let g = this.b.a3.height;
            let h = this.b.a3.bottom;
            let i = Math.floor((c + 1) / f);
            let j = truncate(Math.max(1, i));
            let k = 0;
            let l = truncate(Math.ceil(1 * c / j));
            let m = 0;
            let n = new List$1(Number_$type, 0);
            let o = this.b.q.ar;
            let p = this.b.q.aq;
            let q = this.b.q.bq;
            let r = o != 0 && q >= 1;
            let s = null;
            let t = null;
            if (p == 1 || p == 0) {
                this.d = 0;
            }
            else {
                if (l == 0) {
                    this.d = 0;
                }
                else {
                    this.d = f / l / 2;
                }
            }
            if (r) {
                let u = (v) => v + 1;
                let v = (w) => b.item(w);
                let w = (x) => this.b.y(x);
                let x = (y) => this.b.z(y);
                switch (this.b.q.ar) {
                    case 9:
                        s = TrendCalculators.e(b, q);
                        break;
                    case 10:
                        s = TrendCalculators.b(b, q);
                        break;
                    case 11:
                        s = TrendCalculators.c(b, q);
                        break;
                    case 12:
                        s = TrendCalculators.a(b);
                        break;
                    case 13:
                        s = TrendCalculators.g(b, q);
                        break;
                    case 1:
                        t = LeastSquaresFit.k(c, u, v);
                        break;
                    case 2:
                        t = LeastSquaresFit.o(c, u, v);
                        break;
                    case 3:
                        t = LeastSquaresFit.i(c, u, v);
                        break;
                    case 4:
                        t = LeastSquaresFit.p(c, u, v);
                        break;
                    case 5:
                        t = LeastSquaresFit.q(c, u, v);
                        break;
                    case 7:
                        t = LeastSquaresFit.j(c, u, v);
                        break;
                    case 6:
                        t = LeastSquaresFit.l(c, u, v);
                        break;
                    case 8:
                        t = LeastSquaresFit.n(c, u, v);
                        break;
                }
                if (s != null) {
                    for (let y of fromEnum(s)) {
                        n.add(y);
                    }
                }
                if (t != null) {
                    let z = k * j;
                    let aa = l * j;
                    if (p == 1 || p == 0) {
                        aa = aa - 1;
                    }
                    let ab = 0 + this.d;
                    let ac = f - this.d;
                    let ad = 0;
                    if (this.d != 0) {
                        ad = 0.5;
                    }
                    for (let ae = ab; ae <= ac; ae += 2) {
                        let af = ae / (f - 1);
                        let ag = z + af * (aa - z);
                        let ah = NaN;
                        switch (o) {
                            case 1:
                                ah = LeastSquaresFit.ad(t, ag - ad);
                                break;
                            case 2:
                                ah = LeastSquaresFit.ah(t, ag - ad);
                                break;
                            case 3:
                                ah = LeastSquaresFit.ab(t, ag - ad);
                                break;
                            case 4:
                                ah = LeastSquaresFit.ai(t, ag - ad);
                                break;
                            case 5:
                                ah = LeastSquaresFit.aj(t, ag - ad);
                                break;
                            case 7:
                                ah = LeastSquaresFit.ac(t, ag - ad);
                                break;
                            case 6:
                                ah = LeastSquaresFit.ae(t, ag - ad);
                                break;
                            case 8:
                                ah = LeastSquaresFit.ag(t, ag - ad);
                                break;
                        }
                        ag = w(ag);
                        ah = x(ah);
                        if (!isNaN_(ah) && !isInfinity(ah)) {
                            a.l.add({ $type: Point_$type, x: ag, y: ah });
                        }
                    }
                }
            }
            let ai = this.b.t.minimum;
            let aj = this.b.t.maximum;
            let ak = this.b.q.a4;
            let al = this.b.q.a3;
            this.c = h - (m - ak) / (al - ak) * g;
            if (this.c < 0) {
                this.c = 0;
            }
            else if (this.c > h) {
                this.c = h;
            }
            let am = this.c;
            let an;
            for (let ao = k; ao < l; ao++) {
                let ap = this.a(ao, j, c);
                let aq = ap[1];
                let ar = ap[2];
                this.f(ap, c, this.b.a3, ak, al);
                an = ap[1];
                if (ap[2] < am) {
                    an = ap[2];
                }
                a.g.add(ap);
                if (!isNaN_(ap[0]) && !isNaN_(ap[1])) {
                    a.j.add({ $type: Point_$type, x: ap[0], y: an });
                }
                if (r && s != null) {
                    let as = ao * j;
                    let at = h - (((n._inner[as] - ai) / (aj - ai)) * g);
                    a.l.add({ $type: Point_$type, x: ap[0] + this.d, y: at });
                }
                if (aq < m) {
                    a.k.add({ $type: Point_$type, x: ap[0], y: ap[1] });
                }
                if (ai == aq) {
                    a.i.add({ $type: Point_$type, x: ap[0], y: ap[1] });
                }
                if (aj == ar) {
                    a.h.add({ $type: Point_$type, x: ap[0], y: ap[2] });
                }
            }
            if (a.j.count == 0) {
                a.m = a.n = { $type: Point_$type, x: NaN, y: NaN };
            }
            else {
                a.m = a.j._inner[0];
                a.n = a.j._inner[a.j.count - 1];
            }
        }
        a(a, b, c) {
            let d = Math.min(a * b, c - 1);
            let e = Math.min(d + b - 1, c - 1);
            let f = true;
            let g = 0;
            let h = 0;
            for (let i = d; i <= e; ++i) {
                let j = this.b.t.item(i);
                if (f) {
                    f = false;
                    g = j;
                    h = j;
                }
                else {
                    g = Math.min(g, j);
                    h = Math.max(h, j);
                }
            }
            let k = [0, 0, 0];
            k[0] = (0.5 * (d + e));
            k[1] = g;
            k[2] = h;
            return k;
        }
        f(a, b, c, d, e) {
            let f = c.left;
            let g = c.top;
            let h = c.width;
            let i = c.height;
            if (this.b.q.aq == 1 || this.b.q.aq == 0) {
                b--;
            }
            if (b < 0) {
                b = 0;
            }
            let j = b > 0 ? a[0] / b : b == 0 ? 0.5 : NaN;
            a[0] = f + j * h;
            if (this.b.q.aq == 3) {
                if (a[1] > 0) {
                    a[1] = g;
                    a[2] = g;
                }
                else if (a[1] < 0) {
                    a[1] = g + i;
                    a[2] = g + i;
                }
                else {
                    a[1] = g + (1 - ((a[1] - d) / (e - d))) * i;
                    a[2] = g + (1 - ((a[2] - d) / (e - d))) * i;
                }
            }
            else {
                a[1] = g + (1 - ((a[1] - d) / (e - d))) * i;
                a[2] = g + (1 - ((a[2] - d) / (e - d))) * i;
            }
        }
    }
    SparkFramePreparer.$t = markType(SparkFramePreparer, 'SparkFramePreparer');
    return SparkFramePreparer;
})();
/**
 * @hidden
 */
export let SparklineConnector = /*@__PURE__*/ (() => {
    class SparklineConnector extends Base {
        constructor(a, b) {
            super();
            this.d = null;
            this.b = null;
            this.e = null;
            this.a = null;
            this.c = null;
            this.e = b;
            if (a == null) {
                return;
            }
            this.d = typeCast(XamSparkline.$, a);
            this.a = this.d.ak;
            this.c = this.d.at;
            b.ap(this.d);
            let c = new ServiceProvider_Spark();
            c.addService("ConfigurationMessages", new MessageChannel_Spark());
            c.addService("RenderingMessages", new MessageChannel_Spark());
            c.addService("InteractionMessages", new MessageChannel_Spark());
            c.addService("Model", this.d);
            c.addService("View", this.e);
            c.addService("HorizontalAxis", this.a);
            c.addService("VerticalAxis", this.c);
            this.d.ao = c;
            this.e.k = c;
            this.a.h = c;
            this.c.h = c;
            this.b = new SparklineController(c);
            c.addService("Controller", this.b);
        }
    }
    SparklineConnector.$t = markType(SparklineConnector, 'SparklineConnector');
    return SparklineConnector;
})();
/**
 * @hidden
 */
export let SparklineController = /*@__PURE__*/ (() => {
    class SparklineController extends DependencyObject {
        constructor(a) {
            super();
            this.k = null;
            this.m = null;
            this.l = null;
            this.p = null;
            this.r = null;
            this.t = null;
            this.s = null;
            this.o = new SparkFramePreparer();
            this.n = new SparkFrame();
            this.a3 = Rect.empty;
            this.aa = null;
            this.k = a.getService("ConfigurationMessages");
            this.m = a.getService("RenderingMessages");
            this.l = a.getService("InteractionMessages");
            this.aa = (b, c) => this.ah(c.action, c.position, c.count, c.propertyName);
            this.q = a.getService("Model");
            this.r = a.getService("View");
            this.k.attachTarget(runOn(this, this.ag));
            this.l.attachTarget(runOn(this, this.aj));
        }
        get q() {
            return this.p;
        }
        set q(a) {
            let b = this.p != a;
            if (b) {
                this.p = a;
                this.an(runOn(this, this.aw));
            }
        }
        get x() {
            return this.q != null ? this.q.itemsSource : null;
        }
        get u() {
            return this.c(SparklineController.a2);
        }
        set u(a) {
            this.h(SparklineController.a2, a);
        }
        get ad() {
            return this.q != null ? this.q.c9 : null;
        }
        get ac() {
            return this.q != null ? this.q.ce : null;
        }
        get ab() {
            return this.q != null ? this.q.toolTip : null;
        }
        y(a) {
            let b = this.t.count;
            if (this.q.aq == 1 || this.q.aq == 0) {
                b--;
            }
            if (b < 0) {
                b = 0;
            }
            let c = b > 0 ? a / b : b == 0 ? 0.5 : NaN;
            c = this.a3.left + (c) * this.a3.width;
            return c;
        }
        z(a) {
            let b = ((a - this.q.a4) / (this.q.a3 - this.q.a4));
            b = (1 - b);
            b = this.a3.top + (b) * this.a3.height;
            return b;
        }
        w() {
            return !this.a3.isEmpty && this.a3.width > 0 && this.a3.height > 0 && this.q != null && this.q.a4 != this.q.a3;
        }
        v(a) {
            if (a.oldValue != a.newValue) {
                return true;
            }
            return false;
        }
        av(a, b) {
            if (this.aa == null) {
                this.aa = (c, d) => this.ah(d.action, d.position, d.count, d.propertyName);
            }
            let c = typeCast(FastItemsSource.$, a);
            if (c != null) {
                c.event = delegateRemove(c.event, this.aa);
            }
            let d = typeCast(FastItemsSource.$, b);
            if (d != null) {
                d.event = delegateCombine(d.event, this.aa);
            }
        }
        ay() {
            if (this.q != null) {
                if (this.t == null) {
                    this.q.a4 = this.q.a3 = NaN;
                }
                else {
                    if (isNaN_(this.q.bh)) {
                        this.q.a4 = this.t.minimum;
                    }
                    else {
                        this.q.a4 = this.q.bh;
                    }
                    if (isNaN_(this.q.bg)) {
                        this.q.a3 = this.t.maximum;
                    }
                    else {
                        this.q.a3 = this.q.bg;
                    }
                    if (this.q.a4 == this.q.a3) {
                        if (!isNaN_(this.q.bg) && isNaN_(this.q.bh)) {
                            this.q.a4 = this.q.a3 - 1;
                        }
                        else if (isNaN_(this.q.bg) && !isNaN_(this.q.bh)) {
                            this.q.a3 = this.q.a4 + 1;
                        }
                        else {
                            if (Math.floor(this.q.a4) < this.q.a4) {
                                this.q.a4 = Math.floor(this.q.a4);
                            }
                            else {
                                this.q.a4 = Math.floor(this.q.a4) - 1;
                            }
                            if (Math.ceil(this.q.a3) > this.q.a3) {
                                this.q.a3 = Math.ceil(this.q.a3);
                            }
                            else {
                                this.q.a3 = Math.ceil(this.q.a3) + 1;
                            }
                        }
                    }
                }
            }
        }
        a0() {
            if (this.u != null) {
                this.u.deregisterColumn(this.t);
                this.t = this.u.registerColumn(this.ad, null, false);
            }
            else {
                this.t = null;
            }
        }
        ax() {
            if (this.u != null) {
                this.u.deregisterColumn(this.s);
                this.s = this.u.registerColumnObject(this.ac, null, false);
                this.q.av = this.s;
            }
            else {
                this.q.av = this.s = null;
            }
        }
        au() {
            let a = new AxisRenderMessage_Spark();
            this.m.sendMessage(a);
        }
        an(a) {
            a();
        }
        aw() {
            this.u = this.getFastItemsSource(this.x);
            this.a0();
            this.ax();
            this.ay();
            this.au();
        }
        ah(a, b, c, d) {
            this.a0();
            this.ax();
            this.ay();
            this.au();
            this.an(runOn(this, this.ao));
        }
        az() {
            let a = new ToooltipTemplateMessage_Spark();
            a.template = this.ab;
            this.m.sendMessage(a);
        }
        ag(a) {
            if (typeCast(PropertyChangedMessage_Spark.$, a) !== null) {
                this.am(a);
            }
            else if (typeCast(ContainerSizeChangedMessage_Spark.$, a) !== null) {
                this.m.sendMessage(a);
            }
            else if (typeCast(DataChangedMessage_Spark.$, a) !== null) {
                this.ai(a);
            }
        }
        ai(a) {
            let b = this.u;
            if (b == null) {
                return;
            }
            switch (a.b) {
                case 2:
                    b.handleCollectionChanged(new NotifyCollectionChangedEventArgs(2, 2, a.d, a.e, a.c));
                    break;
                case 0:
                    b.handleCollectionChanged(new NotifyCollectionChangedEventArgs(1, 0, a.d, a.c));
                    break;
                case 1:
                    b.handleCollectionChanged(new NotifyCollectionChangedEventArgs(1, 1, a.e, a.c));
                    break;
                case 4:
                    b.handleCollectionChanged(new NotifyCollectionChangedEventArgs(0, 4));
                    break;
            }
            this.an(runOn(this, this.aw));
        }
        aj(a) {
            let b = a;
            if (typeCast(ViewportChangedMessage_Spark.$, b) !== null) {
                this.a1(b);
            }
            else if (typeCast(MouseLeaveMessage_Spark.$, b) !== null) {
                this.ak(b);
            }
            else if (typeCast(MouseMoveMessage_Spark.$, b) !== null) {
                this.al(b);
            }
            else if (typeCast(ContainerSizeChangedMessage_Spark.$, b) !== null) {
                this.m.sendMessage(a);
            }
        }
        am(a) {
            switch (a.propertyName) {
                case XamSparkline.$$p[15]:
                    this.an(runOn(this, this.aw));
                    break;
                case XamSparkline.$$p[43]:
                    this.an(runOn(this, this.aw));
                    break;
                case XamSparkline.$$p[16]:
                    this.an(runOn(this, this.aw));
                    break;
                case "ToolTip":
                    this.az();
                    break;
                case XamSparkline.$$p[28]:
                case XamSparkline.$$p[27]:
                    this.ay();
                    this.au();
                    break;
                case XamSparkline.$$p[11]:
                case XamSparkline.$$p[45]:
                    this.au();
                    break;
                case XamSparkline.$$p[0]:
                case XamSparkline.$$p[29]:
                case XamSparkline.$$p[24]:
                case XamSparkline.$$p[3]:
                case XamSparkline.$$p[17]:
                case XamSparkline.$$p[7]:
                case XamSparkline.$$p[21]:
                case XamSparkline.$$p[30]:
                case XamSparkline.$$p[38]:
                case XamSparkline.$$p[33]:
                    let b = new BrushChangedMessage_Spark();
                    b.c = typeCast(Brush.$, a.newValue);
                    b.b = a.propertyName;
                    this.m.sendMessage(b);
                    break;
                case XamSparkline.$$p[26]:
                case XamSparkline.$$p[5]:
                case XamSparkline.$$p[19]:
                case XamSparkline.$$p[9]:
                case XamSparkline.$$p[23]:
                case XamSparkline.$$p[32]:
                case XamSparkline.$$p[36]:
                case XamSparkline.$$p[37]:
                    let c = new VisibilityMessage_Spark();
                    c.c = EnumUtil.getEnumValue(Visibility_$type, a.newValue);
                    c.b = a.propertyName;
                    this.m.sendMessage(c);
                    this.r.al(true);
                    break;
                case XamSparkline.$$p[25]:
                case XamSparkline.$$p[4]:
                case XamSparkline.$$p[18]:
                case XamSparkline.$$p[8]:
                case XamSparkline.$$p[22]:
                case XamSparkline.$$p[31]:
                    this.r.al(true);
                    break;
                case XamSparkline.$$p[20]:
                case XamSparkline.$$p[40]:
                    let d = new NumberChangedMessage_Spark();
                    d.b = a.newValue;
                    d.c = a.propertyName;
                    this.m.sendMessage(d);
                    break;
                case XamSparkline.$$p[10]:
                case XamSparkline.$$p[44]:
                case XamSparkline.$$p[12]:
                case XamSparkline.$$p[46]:
                    this.at();
                    break;
                case "Container":
                    let e = new ContainerMessage_Spark();
                    e.b = a.newValue;
                    this.m.sendMessage(e);
                    break;
                case "ActualPixelScalingRatio":
                    {
                        let f = new PixelRatioMessage_Spark();
                        f.b = a.newValue;
                        this.m.sendMessage(f);
                    }
                    break;
                case XamSparkline.$$p[13]:
                case XamSparkline.$$p[14]:
                    if (this.q.ca != null) {
                        this.q.ai = new BindingFormatter();
                        this.q.ai.j = this.q.ca;
                        this.q.ai.d = this.q.ag;
                    }
                    else {
                        this.q.ai = null;
                    }
                    this.au();
                    break;
                case XamSparkline.$$p[47]:
                case XamSparkline.$$p[48]:
                    if (this.q.df != null) {
                        this.q.aj = new BindingFormatter();
                        this.q.aj.j = this.q.df;
                        this.q.aj.d = this.q.ah;
                    }
                    else {
                        this.q.aj = null;
                    }
                    this.au();
                    break;
            }
            if (this.v(a)) {
                this.an(runOn(this, this.ao));
            }
        }
        at() {
            let a = new ClearMessage_Spark();
            a.c = true;
            this.m.sendMessage(a);
        }
        a1(a) {
            this.a3 = new Rect(0, a.newLeft, a.newTop, a.newWidth, a.newHeight);
            this.an(runOn(this, this.ao));
        }
        al(a) {
            let b = new ClearMessage_Spark();
            b.b = 4;
            this.m.sendMessage(b);
            let c = new TooltipMessage_Spark();
            c.b = 4;
            c.xOffset = a.position.x + 10;
            c.yOffset = a.position.y + 10;
            if (this.t != null && this.t.count > 0) {
                let d = new SparklineToolTipContext();
                d.high = this.t.maximum;
                d.low = this.t.minimum;
                d.first = this.t.item(0);
                d.last = this.t.item(this.t.count - 1);
                c.context = d;
            }
            this.m.sendMessage(c);
        }
        ak(a) {
            let b = new ClearMessage_Spark();
            b.b = 4;
            this.m.sendMessage(b);
        }
        af(a) {
            let b = new ClearMessage_Spark();
            b.b = a;
            this.m.sendMessage(b);
        }
        ae() {
            this.af(1);
            this.af(2);
            this.af(16);
            this.af(8);
        }
        ao() {
            this.ae();
            if (!this.w()) {
                return;
            }
            this.o.b = this;
            this.o.e(this.n);
            switch (this.q.aq) {
                case 2:
                    this.ap();
                    break;
                case 3:
                    this.as();
                    break;
                case 0:
                case 1:
                    this.ar();
                    break;
            }
            let a = new NormalRangeMessage_Spark();
            a.k = this.a3.left;
            a.l = Math.max(this.a3.top, Math.min(this.a3.bottom, this.z(this.q.bj)));
            a.j = this.a3.width;
            let b = Math.max(this.a3.top, Math.min(this.a3.bottom, this.z(this.q.bk)));
            a.i = Math.abs(b - a.l);
            a.l = Math.min(a.l, b);
            a.d = this.q.aw;
            this.m.sendMessage(a);
            let c = new TrendLineMessage_Spark();
            c.points = this.n.l.toArray();
            this.m.sendMessage(c);
        }
        ap() {
            let a = new ColumnMessage_Spark();
            a.d = this.n.j;
            a.g = this.n.k;
            a.f = this.n.i;
            a.e = this.n.h;
            a.k = this.n.m;
            a.l = this.n.n;
            a.j = this.n.g.count;
            a.h = this.o.c;
            a.i = this.o.d;
            a.c = this.q.aq;
            this.m.sendMessage(a);
            this.aq();
        }
        as() {
            let a = new WinLossColumnMessage_Spark();
            a.d = this.n.j;
            a.g = this.n.k;
            a.f = this.n.i;
            a.e = this.n.h;
            a.k = this.n.m;
            a.l = this.n.n;
            a.j = this.n.g.count;
            a.h = this.o.c;
            a.i = this.o.d;
            a.c = this.q.aq;
            this.m.sendMessage(a);
        }
        ar() {
            if (this.n.g.count == 0) {
                return;
            }
            let a = new List$1(List$1.$.specialize(Array_$type), 0);
            let b = new List$1(Array_$type, 0);
            let c = true;
            for (let d of fromEnum(this.n.g)) {
                if (isNaN_(d[1]) || isInfinity(d[1])) {
                    if (!c) {
                        a.add(b);
                    }
                    c = true;
                    continue;
                }
                if (c) {
                    b = new List$1(Array_$type, 0);
                    c = false;
                }
                b.add(d);
            }
            if (!c) {
                a.add(b);
            }
            let e = new PolygonMessage_Spark();
            e.points = new List$1(Array_$type, 0);
            if (this.q.as == 0) {
                let f = new List$1(Array_$type, 0);
                for (let g of fromEnum(a)) {
                    f.o(g);
                }
                let h = this.j(f);
                e.points.add(h);
            }
            else {
                for (let i of fromEnum(a)) {
                    let j = this.j(i);
                    e.points.add(j);
                }
            }
            this.m.sendMessage(e);
            this.aq();
        }
        j(a) {
            let b = this.o.c;
            let c = new List$1(Point_$type, 0);
            let d;
            let e = this.q.aq == 1;
            for (let f of fromEnum(a)) {
                d = f[1];
                if (e) {
                    if (f[2] <= b) {
                        d = f[2];
                    }
                }
                c.add({ $type: Point_$type, x: f[0], y: d });
            }
            if (this.q.aq == 0) {
                let g = new List$1(Point_$type, 0);
                for (let h of fromEnum(a)) {
                    g.add({ $type: Point_$type, x: h[0], y: h[2] });
                }
                g.w();
                c.o(g);
            }
            if (this.q.aq == 1 && c.count > 0) {
                let i = c._inner[0];
                let j = c._inner[c.count - 1];
                c.add({ $type: Point_$type, x: j.x, y: this.o.c });
                c.add({ $type: Point_$type, x: i.x, y: this.o.c });
            }
            return c.toArray();
        }
        aq() {
            let a = new MarkerMessage_Spark();
            a.e = this.n.j;
            a.f = this.n.k;
            a.d = this.n.i;
            a.c = this.n.h;
            a.m = this.n.m;
            a.n = this.n.n;
            a.k = this.q.bd;
            a.g = this.q.a6;
            a.i = this.q.a8;
            a.h = this.q.a7;
            a.j = this.q.bc;
            a.l = this.q.bi;
            this.m.sendMessage(a);
        }
        getFastItemsSource(a) {
            let b = null;
            if (this.x != null) {
                let c = null;
                b = new FastItemsSource();
                b.e = this.x;
                c = new FastItemsSourceReference(b);
                c.b++;
                b = c.a;
            }
            return b;
        }
        releaseFastItemsSource(a) {
            if (a != null) {
                let b = null;
                --b.b;
            }
            return null;
        }
    }
    SparklineController.$t = markType(SparklineController, 'SparklineController', DependencyObject.$, [IFastItemsSourceProvider_$type]);
    SparklineController.a2 = DependencyProperty.i("FastItemsSource", IFastItemsSource_$type, SparklineController.$, new PropertyMetadata(1, (a, b) => (typeCast(SparklineController.$, a)).av(b.oldValue, b.newValue)));
    return SparklineController;
})();
/**
 * @hidden
 */
export let XamSparkline = /*@__PURE__*/ (() => {
    class XamSparkline extends Control {
        constructor() {
            super();
            this.ap = null;
            this.ai = null;
            this.aj = null;
            this.an = null;
            this.al = new MessageChannel_Spark();
            this.a0 = NaN;
            this.az = NaN;
            this.av = null;
            this.ak = null;
            this.at = null;
            this.a2 = NaN;
            this.a1 = 1;
            this.ab = XamSparkline.$;
            this.at = new VerticalAxisView(this);
            this.ak = new HorizontalAxisView(this);
            this.ap = new SparklineConnector(this, new XamSparklineView());
        }
        get toolTip() {
            return this.c(XamSparkline.ev);
        }
        set toolTip(a) {
            this.h(XamSparkline.ev, a);
            this.fs = a == null || a.toString().length == 0 ? 1 : 0;
        }
        ax() {
            return this.bp != null;
        }
        c1(a) {
            return this.bp(a);
        }
        get ao() {
            return this.an;
        }
        set ao(a) {
            let b = this.an;
            this.an = a;
            this.ds(b, this.an);
        }
        get am() {
            return this.al;
        }
        set am(a) {
            this.al = a;
        }
        get a4() {
            return this.a0;
        }
        set a4(a) {
            this.a0 = a;
        }
        get a3() {
            return this.az;
        }
        set a3(a) {
            this.az = a;
        }
        ds(a, b) {
            if (a != null) {
                this.am.detachFromNext();
            }
            if (b != null) {
                this.am.connectTo(b.getService("ConfigurationMessages"));
            }
        }
        onDetachedFromUI() {
            this.ap.e.au();
        }
        onAttachedToUI() {
            this.ap.e.as();
        }
        dr(a, b, c) {
            if (a == "PixelScalingRatio") {
                if (!isNaN_(DeviceUtils.a(this.bl))) {
                    this.a5 = DeviceUtils.a(this.bl);
                }
            }
            this.am.sendMessage(((() => {
                let $ret = new PropertyChangedMessage_Spark();
                $ret.propertyName = a;
                $ret.oldValue = b;
                $ret.newValue = c;
                return $ret;
            })()));
        }
        destroy() {
            this.am.sendMessage(((() => {
                let $ret = new PropertyChangedMessage_Spark();
                $ret.propertyName = "Container";
                $ret.newValue = null;
                return $ret;
            })()));
        }
        provideContainer(a) {
            this.am.sendMessage(((() => {
                let $ret = new PropertyChangedMessage_Spark();
                $ret.propertyName = "Container";
                $ret.newValue = a;
                return $ret;
            })()));
        }
        notifyResized() {
            this.am.sendMessage(new ContainerSizeChangedMessage_Spark());
        }
        dn(source_, a, b, c) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            if (source_ != this.itemsSource) {
                return;
            }
            this.am.sendMessage(((() => {
                let $ret = new DataChangedMessage_Spark();
                $ret.b = 2;
                $ret.e = b;
                $ret.d = c;
                $ret.c = a;
                return $ret;
            })()));
        }
        dj(source_) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            if (source_ != this.itemsSource) {
                return;
            }
            this.am.sendMessage(((() => {
                let $ret = new DataChangedMessage_Spark();
                $ret.b = 4;
                return $ret;
            })()));
        }
        dk(source_, a, b) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            if (source_ != this.itemsSource) {
                return;
            }
            this.am.sendMessage(((() => {
                let $ret = new DataChangedMessage_Spark();
                $ret.b = 0;
                $ret.d = b;
                $ret.c = a;
                return $ret;
            })()));
        }
        dl(source_, a, b) {
            if (source_.dataView && source_.dataSource) {
                source_ = source_.dataView();
            }
            ;
            if (source_ != this.itemsSource) {
                return;
            }
            this.am.sendMessage(((() => {
                let $ret = new DataChangedMessage_Spark();
                $ret.b = 1;
                $ret.e = b;
                $ret.c = a;
                return $ret;
            })()));
        }
        au() {
            let a = new SparklineVisualData();
            a.name = "SparklineVisualData";
            a.horizontalAxis = this.ak.i();
            a.verticalAxis = this.at.i();
            this.ap.e.an(a);
            return a;
        }
        by() {
            let a = this.au();
            a.scaleByViewport();
            return a.serialize();
        }
        get bl() {
            return this.a2;
        }
        set bl(a) {
            let b = this.a2;
            this.a2 = a;
            this.dr("PixelScalingRatio", b, this.a2);
            if (this.a2 != b) {
                this.dr("PixelScalingRatio", b, this.a2);
            }
        }
        get a5() {
            return this.a1;
        }
        set a5(a) {
            let b = this.a1;
            this.a1 = a;
            if (this.a1 != b) {
                this.dr("ActualPixelScalingRatio", b, this.a1);
            }
        }
    }
    XamSparkline.$t = markType(XamSparkline, 'XamSparkline', Control.$);
    XamSparkline.bf = -1;
    XamSparkline.bb = -1;
    XamSparkline.ev = DependencyProperty.i("ToolTip", Base.$, XamSparkline.$, new PropertyMetadata(2, null, (a, b) => (typeCast(XamSparkline.$, a)).dr("ToolTip", b.oldValue, b.newValue)));
    XamSparkline.bo = -1;
    XamSparkline.$$p = markDep(DependencyProperty, PropertyMetadata, XamSparkline, 'dr', ['Brush:e8:du', [Brush.$, null], 'DisplayNormalRangeInFront:aw:dv', [0, true], 'DisplayType:aq:dw', [SparklineDisplayType_$type, enumGetBox(SparklineDisplayType_$type, 0)], 'FirstMarkerBrush:e9:dx', [Brush.$, null], 'FirstMarkerSize:a6:dy', [1, XamSparkline.bf], 'FirstMarkerVisibility:fk:dz', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'FormatLabel:bp:d0', [Delegate_$type], 'HighMarkerBrush:fa:d1', [Brush.$, null], 'HighMarkerSize:a7:d2', [1, XamSparkline.bf], 'HighMarkerVisibility:fl:d3', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'HorizontalAxisBrush:fb:d4', [Brush.$, null], 'HorizontalAxisLabel:br:d5', [4, "{0}"], 'HorizontalAxisVisibility:fm:d6', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'HorizontalLabelFormat:ca:d7', [2, null], 'HorizontalLabelFormatSpecifiers:ag:d8', [Array_$type, null], 'ItemsSource::d9', [IEnumerable_$type, null], 'LabelMemberPath:ce:ea', [2, null], 'LastMarkerBrush:fc:eb', [Brush.$, null], 'LastMarkerSize:a8:ec', [1, XamSparkline.bf], 'LastMarkerVisibility:fn:ed', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'LineThickness:a9:ee', [1, XamSparkline.bb], 'LowMarkerBrush:fd:ef', [Brush.$, null], 'LowMarkerSize:bc:eg', [1, XamSparkline.bf], 'LowMarkerVisibility:fo:eh', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'MarkerBrush:fe:ei', [Brush.$, null], 'MarkerSize:bd:ej', [1, XamSparkline.bf], 'MarkerVisibility:fp:ek', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'Maximum:bg:el', [1, NaN], 'Minimum:bh:em', [1, NaN], 'NegativeBrush:ff:en', [Brush.$, null], 'NegativeMarkerBrush:fg:eo', [Brush.$, null], 'NegativeMarkerSize:bi:ep', [1, XamSparkline.bf], 'NegativeMarkerVisibility:fq:eq', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'NormalRangeFill:fh:er', [Brush.$, null], 'NormalRangeMaximum:bj:es', [1, 0], 'NormalRangeMinimum:bk:et', [1, 0], 'NormalRangeVisibility:fr:eu', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'ToolTipVisibility:fs:ew', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'TrendLineBrush:fi:ex', [Brush.$, null], 'TrendLinePeriod:bq:ey', [1, 7], 'TrendLineThickness:bm:ez', [1, XamSparkline.bo], 'TrendLineType:ar:e0', [TrendLineType_$type, enumGetBox(TrendLineType_$type, 0)], 'UnknownValuePlotting:as:e1', [UnknownValuePlotting_$type, enumGetBox(UnknownValuePlotting_$type, 1)], 'ValueMemberPath:c9:e2', [2, null], 'VerticalAxisBrush:fj:e3', [Brush.$, null], 'VerticalAxisLabel:bt:e4', [4, "{0:n}"], 'VerticalAxisVisibility:ft:e5', [Visibility_$type, enumGetBox(Visibility_$type, 1)], 'VerticalLabelFormat:df:e6', [2, null], 'VerticalLabelFormatSpecifiers:ah:e7', [Array_$type, null]]);
    return XamSparkline;
})();
