UNPKG

igniteui-angular-charts

Version:

Ignite UI Angular charting components for building rich data visualizations for modern web apps.

6,555 lines 233 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 { EventArgs, Base, markType, Point_$type, runOn, typeCast, IList$1_$type, Number_$type, markDep, IEnumerable_$type, Array_$type, delegateCombine, fromEnum, Boolean_$type, enumGetBox, fromEn, String_$type, getInstanceType, INotifyPropertyChanged_$type, PropertyChangedEventArgs, Delegate_$type, toNullable, TypeRegistrar } from "igniteui-angular-core";
import { Brush } from "igniteui-angular-core";
import { DataTemplate } from "igniteui-angular-core";
import { Visibility_$type } from "igniteui-angular-core";
import { DoubleCollection } from "igniteui-angular-core";
import { PenLineCap_$type } from "igniteui-angular-core";
import { Style } from "igniteui-angular-core";
import { MarkerType_$type } from "./MarkerType";
import { HorizontalAnchoredCategorySeries } from "./HorizontalAnchoredCategorySeries";
import { CategoryLineRasterizer } from "./CategoryLineRasterizer";
import { Series } from "./Series";
import { List$1 } from "igniteui-angular-core";
import { AnchoredCategorySeries } from "./AnchoredCategorySeries";
import { CategoryAxisBase } from "./CategoryAxisBase";
import { CategorySeries } from "./CategorySeries";
import { CategoryFramePreparer } from "./CategoryFramePreparer";
import { NumericAxisBase } from "./NumericAxisBase";
import { ISupportsMarkers_$type } from "./ISupportsMarkers";
import { CategoryFrame } from "./CategoryFrame";
import { Rect } from "igniteui-angular-core";
import { CategorySeriesView } from "./CategorySeriesView";
import { Axis } from "./Axis";
import { ScalerParams } from "./ScalerParams";
import { ObservableCollection$1 } from "igniteui-angular-core";
import { AxisRange } from "./AxisRange";
import { AnchoredCategorySeriesView } from "./AnchoredCategorySeriesView";
import { CategoryBucketCalculator } from "./CategoryBucketCalculator";
import { isNaN_, isInfinity, truncate } from "igniteui-angular-core";
import { CategoryTransitionInMode_$type } from "./CategoryTransitionInMode";
import { Path } from "igniteui-angular-core";
import { ISortingAxis_$type } from "./ISortingAxis";
import { FrameworkElement } from "igniteui-angular-core";
import { XamDataChart } from "./XamDataChart";
import { DependencyProperty } from "igniteui-angular-core";
import { DependencyObject } from "igniteui-angular-core";
import { NumericYAxis } from "./NumericYAxis";
import { Defaults } from "./Defaults";
import { Pool$1 } from "igniteui-angular-core";
import { Rectangle } from "igniteui-angular-core";
import { DataContext } from "igniteui-angular-core";
import { Dictionary$2 } from "igniteui-angular-core";
import { IScaler_$type } from "./IScaler";
import { IIsCategoryBased_$type } from "./IIsCategoryBased";
import { CategoryMarkerManager } from "./CategoryMarkerManager";
import { PropertyMetadata } from "igniteui-angular-core";
import { dateMinValue, dateMaxValue } from "igniteui-angular-core";
import { NumericXAxis } from "./NumericXAxis";
import { CategoryYAxis } from "./CategoryYAxis";
import { AnchoredCategoryBucketCalculator } from "./AnchoredCategoryBucketCalculator";
import { IStacked100Series_$type } from "./IStacked100Series";
import { NotImplementedException } from "igniteui-angular-core";
import { SplineSeriesBase } from "./SplineSeriesBase";
import { CollisionAvoider } from "./CollisionAvoider";
import { SafeSortedReadOnlyDoubleCollection } from "./SafeSortedReadOnlyDoubleCollection";
import { Numeric } from "igniteui-angular-core";
import { ICategoryScaler_$type } from "./ICategoryScaler";
import { ChartSelection } from "./ChartSelection";
import { CategoryXAxis } from "./CategoryXAxis";
import { IBarSeries_$type } from "./IBarSeries";
import { Color } from "igniteui-angular-core";
import { LegendItemBadgeShape_$type } from "igniteui-angular-core";
import { LegendItemBadgeMode_$type } from "igniteui-angular-core";
import { MarkerFillMode_$type } from "./MarkerFillMode";
import { MarkerOutlineMode_$type } from "./MarkerOutlineMode";
import { SeriesOutlineMode_$type } from "./SeriesOutlineMode";
import { SeriesHighlightedValuesDisplayMode_$type } from "igniteui-angular-core";
import { TransitionInSpeedType_$type } from "./TransitionInSpeedType";
import { PropertyUpdatedEventArgs } from "igniteui-angular-core";
import { DataLegendSeriesValueInfo } from "igniteui-angular-core";
import { DataLegendSeriesContext } from "igniteui-angular-core";
import { SingleValuesHolder } from "./SingleValuesHolder";
import { stringIsNullOrEmpty } from "igniteui-angular-core";
import { SplineSeriesBaseView } from "./SplineSeriesBaseView";
import { Canvas } from "igniteui-angular-core";
import { Panel } from "igniteui-angular-core";
import { PlatformConstants } from "igniteui-angular-core";
/**
 * @hidden
 */
export let StackedSeriesCreatedEventArgs = /*@__PURE__*/ (() => {
    class StackedSeriesCreatedEventArgs extends EventArgs {
        constructor(a) {
            super();
            this.c = null;
            this.c = a;
        }
        get brush() {
            return this.c.kz;
        }
        set brush(a) {
            this.c.kz = a;
        }
        get legendItemTemplate() {
            return this.c.hr;
        }
        set legendItemTemplate(a) {
            this.c.hr = a;
        }
        get legendItemBadgeTemplate() {
            return this.c.hq;
        }
        set legendItemBadgeTemplate(a) {
            this.c.hq = a;
        }
        get legendItemVisibility() {
            return this.c.lu;
        }
        set legendItemVisibility(a) {
            this.c.lu = a;
        }
        get outline() {
            return this.c.k3;
        }
        set outline(a) {
            this.c.k3 = a;
        }
        get dashArray() {
            return this.c.k8;
        }
        set dashArray(a) {
            this.c.k8 = a;
        }
        get dashCap() {
            return this.c.lb;
        }
        set dashCap(a) {
            this.c.lb = a;
        }
        get index() {
            return this.c.cc;
        }
        get thickness() {
            return this.c.b4;
        }
        set thickness(a) {
            this.c.b4 = a;
        }
        get title() {
            return this.c.cj;
        }
        set title(a) {
            this.c.cj = a;
        }
        get transitionDuration() {
            return this.c.cd;
        }
        set transitionDuration(a) {
            this.c.cd = a;
        }
        get transitionEasingFunction() {
            return this.c.ai;
        }
        set transitionEasingFunction(a) {
            this.c.ai = a;
        }
        get markerBrush() {
            return this.c.k0;
        }
        set markerBrush(a) {
            this.c.k0 = a;
        }
        get markerOutline() {
            return this.c.k1;
        }
        set markerOutline(a) {
            this.c.k1 = a;
        }
        get markerStyle() {
            return this.c.lr;
        }
        set markerStyle(a) {
            this.c.lr = a;
        }
        get markerTemplate() {
            return this.c.hs;
        }
        set markerTemplate(a) {
            this.c.hs = a;
        }
        get markerType() {
            return this.c.x;
        }
        set markerType(a) {
            this.c.x = a;
        }
        get markerThickness() {
            return this.c.bx;
        }
        set markerThickness(a) {
            this.c.bx = a;
        }
        get lineCap() {
            return this.c.la;
        }
        set lineCap(a) {
            this.c.lc = a;
        }
    }
    StackedSeriesCreatedEventArgs.$t = markType(StackedSeriesCreatedEventArgs, 'StackedSeriesCreatedEventArgs', EventArgs.$);
    return StackedSeriesCreatedEventArgs;
})();
/**
 * @hidden
 */
export let FragmentBase = /*@__PURE__*/ (() => {
    class FragmentBase extends HorizontalAnchoredCategorySeries {
        constructor() {
            super();
            this.___neverPassByValue = true;
            this.acx = null;
            this._logicalSeriesLink = null;
            this.acz = null;
            this.acx = new CategoryLineRasterizer();
        }
        get logicalSeriesLink() {
            return this._logicalSeriesLink;
        }
        set logicalSeriesLink(a) {
            this._logicalSeriesLink = a;
        }
        get parentSeries() {
            return this.acz;
        }
        set parentSeries(a) {
            this.acz = a;
        }
        get_e5() {
            return false;
        }
        get_fb() {
            return true;
        }
        nc() {
            if (this.logicalSeriesLink != null) {
                return this.logicalSeriesLink.e0;
            }
            return null;
        }
        j2() {
            let a = this.parentSeries;
            if (a.index == -1 || a.aa1 == null || a.aa1.f.indexOf(this) == -1) {
                return -1;
            }
            return a.aa1.f.indexOf(this);
        }
        qa(a) {
            super.qa(a);
            a.parentSeries = this.parentSeries;
            a.logicalSeriesLink = this.logicalSeriesLink;
        }
        j7() {
            let a = this.parentSeries;
            if (a.index == -1 || a.series.count == 0 || a.series.indexOf(this.logicalSeriesLink) == -1) {
                return -1;
            }
            return a.series.indexOf(this.logicalSeriesLink);
        }
        resolveLegendIndex() {
            let a = this.parentSeries;
            if (a.aa5) {
                return -1 + a.index + a.aaw.count - a.aa1.f.indexOf(this);
            }
            return super.resolveLegendIndex();
        }
        bp() {
            return this.parentSeries;
        }
        ys() {
            if (this.parentSeries == null) {
                return null;
            }
            return this.parentSeries.fetchXAxis();
        }
        acw() {
            if (this.parentSeries == null) {
                return this.yz;
            }
            return this.parentSeries.yz;
        }
        y9() {
            if (this.parentSeries == null) {
                return null;
            }
            return this.parentSeries.fetchYAxis();
        }
        ac2(a, b, c, d, e, f, g, h) {
            let i = c[0];
            let j = c[1];
            let k = new Rect(0, i - 5, j - 5, 11, 11);
            if (!isNaN_(i) && !isNaN_(j) && !isInfinity(i) && !isInfinity(j) && d.tryAdd(k)) {
                b.n.add({ $type: Point_$type, x: i, y: j });
                a.updateMarkerTemplate(g, f, h);
                return true;
            }
            return false;
        }
        aah(a, b) {
            a.v();
            if (this.valueColumn == null || this.parentSeries == null || this.logicalSeriesLink == null) {
                return;
            }
            if (this.logicalSeriesLink.a8.count == 0 || this.logicalSeriesLink.a7.count == 0) {
                return;
            }
            this.y0(b).d(a, b);
        }
        wc(a, b, c) {
            return this.we(a, b, c, this.acw().r(this.ys(), this.cv.by, this.cv.bx, this.getEffectiveViewport1(this.cv)), this.y9(), this.ys(), runOn(this, this.ac3), (d, e) => this.kb(d, e, this.ys(), runOn(this, this.zt), this.valueColumn != null ? new FragmentBaseValueList(this) : null), (d, e) => this.j9(d, e, this.ys(), runOn(this, this.zt), this.valueColumn != null ? new FragmentBaseValueList(this) : null));
        }
        ai() {
            return [this.ys(), this.y9()];
        }
        ac3(a, b, c) {
            if (this.db == null) {
                return NaN;
            }
            let d = this.getEffectiveViewport1(this.cv);
            let e = new ScalerParams(0, this.db.v4, this.cv.bx, this.ys().ch, d);
            let f = this.yz.r(this.ys(), this.db.v4, this.cv.bx, d);
            return this.i7(this.valueColumn != null ? new FragmentBaseValueList(this) : null, a, this.ys(), e, f, runOn(this, this.zt), b, c);
        }
        ac5(a, b, c) {
            let d = this.aa9(c);
            let e = d;
            let f = this.logicalSeriesLink.az;
            let g = f ? this.parentSeries.aa1.e : this.parentSeries.aa1.d;
            let h = this;
            if (this.bn != null) {
                h = this.bn;
            }
            let i = g.indexOf(h);
            if (a.count == 0) {
                return;
            }
            if (i == -1) {
                return;
            }
            let j = false;
            for (let k = i; k >= 0; k--) {
                if (j) {
                    break;
                }
                if (k == 0) {
                    a.add({ $type: Point_$type, x: a._inner[a.count - 1].x, y: e });
                    a.add({ $type: Point_$type, x: a._inner[0].x, y: e });
                    break;
                }
                let l = typeCast(FragmentBase.$, g._inner[k - 1]);
                if (l != null && l.acx != null && l.acx.o.count > 0 && this.cv != null && l.he(this.cv.bx, this.cv.by, this.cv)) {
                    j = true;
                    for (let m = l.acx.o.count - 1; m >= 0; m--) {
                        a.add(l.acx.o._inner[m]);
                    }
                }
            }
        }
        he(a, b, c) {
            let d = super.he(a, b, c);
            let e = typeCast(CategoryAxisBase.$, this.parentSeries.fetchXAxis());
            let f = this.parentSeries.fetchYAxis();
            if (this.parentSeries == null || e == null || e.itemsSource == null || f == null || this.parentSeries.dn == null || e.bi == null || f.bi == null) {
                d = false;
            }
            if (this.valueColumn == null) {
                return false;
            }
            if (isInfinity(this.valueColumn.minimum) && isInfinity(this.valueColumn.maximum)) {
                d = false;
            }
            if (isNaN_(this.valueColumn.minimum) && isNaN_(this.valueColumn.maximum)) {
                d = false;
            }
            return d;
        }
        aa9(a) {
            let b = 0;
            let c = a.by;
            let d = a.bx;
            let e = this.getEffectiveViewport1(a);
            let f = new ScalerParams(0, c, d, this.y9().ch, e);
            f.b = this.iy();
            if (!c.isEmpty && !d.isEmpty && this.y9() != null) {
                b = this.y9().el(0, f);
            }
            return b;
        }
        ay(a) {
            return null;
        }
        ac4() {
            if (this.parentSeries == null) {
                return -1;
            }
            let a = this.parentSeries.index;
            let b = 0;
            let c = 1;
            if (this.parentSeries.aa5) {
                b = this.parentSeries.aaw.count - 1;
                c = -1;
            }
            for (let d = b; this.parentSeries.aa5 ? d >= 0 : d < this.parentSeries.aaw.count; d += c) {
                let e = this.parentSeries.aaw._inner[d];
                if (e.visualSeriesLink == this) {
                    return a;
                }
                if (this.parentSeries.a5 == null || e.lt != 0 || e.ls != 0) {
                    continue;
                }
                a++;
            }
            return -1;
        }
        ac6(a) {
            if (a == null) {
            }
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
            if (this.parentSeries == null) {
                return;
            }
            let e = typeCast(NumericAxisBase.$, this.parentSeries.fetchYAxis());
            if (e == null) {
                return;
            }
            switch (b) {
                case "ValueColumn":
                    if (this.aav.c8) {
                        this.aav.c7.g$i();
                    }
                    if (e != null && !e.c1()) {
                        this.parentSeries.aav().cw.g(this.id);
                        this.rr(this.gg && this.d7);
                    }
                    break;
                case "ActualBrush":
                    if (this.logicalSeriesLink != null) {
                        this.logicalSeriesLink.ku = this.u9;
                    }
                    break;
            }
        }
        rt(a, b) {
            super.rt(a, b);
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    FragmentBase.$t = markType(FragmentBase, 'FragmentBase', HorizontalAnchoredCategorySeries.$);
    return FragmentBase;
})();
/**
 * @hidden
 */
export let AreaFragment = /*@__PURE__*/ (() => {
    class AreaFragment extends FragmentBase {
        constructor() {
            super();
            this.ab = AreaFragment.$;
        }
        bj() {
            return new AreaFragment();
        }
        cs() {
            return new AreaFragmentView(this);
        }
        q1(a) {
            super.q1(a);
            this.ac7 = a;
        }
        get_ev() {
            return true;
        }
        get_eu() {
            return true;
        }
        y4() {
            return 1;
        }
        ac9(a, b) {
            let c = this.ac7.dl.an;
            if (this.gy(a, c)) {
                return true;
            }
            let d = this.ac7.dm.an;
            if (this.gy(a, d)) {
                return true;
            }
            return false;
        }
        gw(a, b) {
            if (this.ac8(a, b)) {
                return true;
            }
            if (this.ac9(a, b)) {
                return true;
            }
            if (this.xh(a, b)) {
                return true;
            }
            return false;
        }
        ac8(a, b) {
            let c = this.ac7.dn.an;
            if (this.gx(a, b, c)) {
                return true;
            }
            let d = this.ac7.dp.an;
            if (this.gx(a, b, d)) {
                return true;
            }
            return false;
        }
        preferredCategoryMode(a) {
            return 0;
        }
        o5(a, b) {
            super.o5(a, b);
            let c = b;
            c.dg();
        }
        aak(a, b) {
            super.aak(a, b);
            this.acx.a = typeCast(ISortingAxis_$type, this.xAxis) !== null ? true : false;
            let c = typeCast(AreaFragmentView.$, b);
            let d = a.f;
            let e = this.getEffectiveViewport1(c);
            this.y2.a2(this, this.zm(), runOn(this, this.ym), this.zv(b), this.zw(b));
            let f = false;
            let g = this.y2.b;
            if (g != null) {
                f = true;
            }
            if (f) {
                let h = new ScalerParams(0, b.by, b.bx, this.acd.ch, e);
                this.aag(d, -1, this.valueColumn.count, this.acd, h, b.q, -1);
            }
            this.y2.ad(c.dn, true, false, true, true);
            this.y2.ad(c.dp, true, false, true, true);
            this.y2.ad(c.dl, false, true, false, false);
            this.y2.ad(c.dm, false, true, false, false);
            let i = c.cw.d;
            this.acx.i(c.dl, c.dn, c.dm, c.dp, a.f.count, a.f, true, i, this.id, (j, k, l, m, n) => this.ac5(j, a.f, b), 0);
            c.dl._opacity = this.y2.j * this.h9;
            c.dm._opacity = 0.5 * this.y2.j * this.h9;
        }
        sd() {
            let a = (typeCast(XamDataChart.$, this.db));
            if (a != null) {
                this.h9 = isNaN_(this.ik) ? this.parentSeries.h9 : this.ik;
            }
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    AreaFragment.$t = markType(AreaFragment, 'AreaFragment', FragmentBase.$);
    return AreaFragment;
})();
/**
 * @hidden
 */
export let ColumnFragment = /*@__PURE__*/ (() => {
    class ColumnFragment extends FragmentBase {
        constructor() {
            super();
            this.ab = ColumnFragment.$;
        }
        bj() {
            return new ColumnFragment();
        }
        get_ez() {
            return true;
        }
        get_fl() {
            return true;
        }
        jk() {
            if (!isNaN_(this.jj)) {
                return super.jk();
            }
            return Defaults.h;
        }
        y4() {
            return 1;
        }
        cs() {
            return new ColumnFragmentView(this);
        }
        q1(a) {
            super.q1(a);
            this.ac8 = a;
        }
        get fragmentXAxis() {
            return this.parentSeries != null ? typeCast(CategoryAxisBase.$, this.parentSeries.fetchXAxis()) : null;
        }
        get fragmentYAxis() {
            return this.parentSeries != null ? typeCast(NumericYAxis.$, this.parentSeries.fetchYAxis()) : null;
        }
        preferredCategoryMode(a) {
            return 2;
        }
        ys() {
            return this.fragmentXAxis;
        }
        y9() {
            return this.fragmentYAxis;
        }
        get_ed() {
            return true;
        }
        fetchXAxis() {
            return null;
        }
        fetchYAxis() {
            return null;
        }
        o5(a, b) {
            super.o5(a, b);
            let c = b;
            if (a && c.dg != null) {
                this.yu.n.clear();
                c.dg.count = 0;
            }
        }
        ay(a) {
            if (this.valueColumn == null || this.valueColumn.count == 0) {
                return null;
            }
            return new AxisRange(this.valueColumn.minimum, this.valueColumn.maximum);
        }
        he(a, b, c) {
            if (this.parentSeries == null) {
                return false;
            }
            return this.parentSeries.aa6(this, a, b, this.ada(c));
        }
        hb() {
            return true;
        }
        zv(a) {
            if (this.parentSeries != null) {
                return this.parentSeries.zv(this.parentSeries.cv);
            }
            return super.zv(a);
        }
        zw(a) {
            if (this.parentSeries != null) {
                return this.parentSeries.zw(this.parentSeries.cv);
            }
            return super.zv(a);
        }
        zx(a) {
            if (this.parentSeries != null) {
                return this.parentSeries.zx(this.parentSeries.cv);
            }
            return super.zx(a);
        }
        wn(a) {
            if (this.ys() == null || this.fragmentYAxis == null) {
                return Rect.empty;
            }
            let b = this.v7(a);
            let c = this.cv.by;
            let d = this.cv.bx;
            let e = this.getEffectiveViewport1(this.cv);
            let f = new ScalerParams(0, c, d, this.fragmentYAxis.ch, e);
            let g = this.an(this.ys(), this.yu.f, this.zv(this.cv), this.zw(this.cv), a, true);
            if (g == null) {
                return Rect.empty;
            }
            let h = g[0];
            let i = g[1];
            let j = Math.abs(b.x - h[0]);
            let k = Math.abs(b.x - i[0]);
            let l = this.ys().k8(c, d, e);
            if (j < k) {
                let m = h[0] - 0.5 * l;
                let n = h[1];
                let o = h[2];
                return new Rect(0, m, Math.min(n, o), l, Math.max(n, o) - Math.min(n, o));
            }
            else {
                let p = i[0] - 0.5 * l;
                let q = i[1];
                let r = i[2];
                return new Rect(0, p, Math.min(q, r), l, Math.max(q, r) - Math.min(q, r));
            }
        }
        gw(a, b) {
            if (this.gz(a, b)) {
                return true;
            }
            if (this.xh(a, b)) {
                return true;
            }
            return false;
        }
        gz(a, b) {
            let c = this.wo(a);
            if (c.isEmpty) {
                return false;
            }
            let d = this.adh(c, this.iu(b));
            return d.containsPoint(a);
        }
        adh(a, b) {
            let c = a.left + a.width / 2;
            let d = a.top + a.height / 2;
            let e = c - ((a.width / 2) + b);
            let f = d - (a.height / 2);
            let g = a.height;
            let h = a.width + b * 2;
            return new Rect(0, e, f, h, g);
        }
        kx(a, b) {
            let c = typeCast(FrameworkElement.$, a);
            let d = c != null ? typeCast(DataContext.$, c.dataContext) : null;
            let e = d != null ? d.item : null;
            if (e == null) {
                let f = this.cv.bx;
                let g = this.db != null ? this.db.v4 : Rect.empty;
                let h = { $type: Point_$type, x: g.left + g.width * (b.x - f.left) / f.width, y: g.top + g.height * (b.y - f.top) / f.height };
                e = this.kn(h);
            }
            return e;
        }
        kn(a) {
            let b = 0;
            if (typeCast(ISortingAxis_$type, this.ys()) !== null) {
                b = this.j5(a);
                if (b == -1) {
                    return null;
                }
            }
            else {
                b = this.j3(a);
            }
            return b >= 0 && this.dn != null && b < this.dn.count ? this.dn.item(b) : null;
        }
        j5(a) {
            let b = this.cv.by;
            let c = this.cv.bx;
            let d = this.getEffectiveViewport1(this.cv);
            if (b.isEmpty || c.isEmpty) {
                return -1;
            }
            let e = this.ys();
            let f = new ScalerParams(0, b, c, e.ch, d);
            let g = typeCast(ISortingAxis_$type, this.fragmentXAxis);
            let h = this.wj(this.cv);
            let i = e.eo(h.left, f);
            let j = e.eo(h.right, f);
            let k = (a.x - b.left) / b.width;
            let l = i + ((j - i) * k);
            if (truncate(l) <= dateMinValue().getTime() || truncate(l) >= dateMaxValue().getTime()) {
                return -1;
            }
            let m = g.i$f(l);
            return m;
        }
        j3(a) {
            if (this.parentSeries == null) {
                return -1;
            }
            return this.parentSeries.abd(a);
        }
        ac2(a, b, c, d, e, f, g, h) {
            let i = 0;
            let j = c[0];
            let k = e < i ? c[2] : c[1];
            let l = new Rect(0, j - 5, k - 5, 11, 11);
            if (!isNaN_(j) && !isNaN_(k) && !isInfinity(j) && !isInfinity(k) && d.tryAdd(l)) {
                b.n.add({ $type: Point_$type, x: j, y: k });
                a.updateMarkerTemplate(g, f, h);
                return true;
            }
            return false;
        }
        ada(a) {
            if (a.p) {
                return this.parentSeries.ba.a$j.item(a.ad);
            }
            else if (a == this.cu) {
                return this.parentSeries.cu;
            }
            else {
                return this.parentSeries.y3;
            }
        }
        rq(a, b, c, d, e) {
            this.ba.a$z(this, a, b, d, e);
            let f = this.ba.a$j.item(d);
            let g = f;
            f.a3(c);
            let h = this.ada(f);
            h.cw.g(this.id);
            if (this.d5(g)) {
                return;
            }
            if (this.aaw == null) {
                this.aaw = new CategoryFrame(3);
            }
            this.aaw.v();
            this.aah(this.aaw, g);
            this.aak(this.aaw, g);
        }
        aah(a, b) {
            a.v();
            if (this.valueColumn == null || this.parentSeries == null || this.logicalSeriesLink == null || this.logicalSeriesLink.a7.count == 0 || this.logicalSeriesLink.a8.count == 0) {
                return;
            }
            let c;
            if (b.p) {
                c = this.parentSeries.aau;
            }
            else if (b == this.cu) {
                c = this.parentSeries.yx;
            }
            else {
                c = this.parentSeries.yu;
            }
            let d = typeCast(CategorySeriesView.$, this.ada(b));
            a.f.clear();
            if (a.m != null) {
                a.m.clear();
            }
            a.n.clear();
            let e = d.cw.e;
            let f = d.cw.f;
            let g = this.parentSeries.yz.h.yScaler;
            let h = typeCast(ISortingAxis_$type, this.parentSeries.yz.h.scaler);
            let i = typeCast(NumericAxisBase.$, g) !== null && g.lp;
            let j = typeCast(StackedBucketCalculator.$, d.cw);
            let k = d.cw.d;
            let l = 0;
            if (e <= f) {
                for (let m = e; m <= f; m++) {
                    let n = m * k;
                    if (this._visibility != 0) {
                        break;
                    }
                    if (m >= this.valueColumn.count || m >= c.f.count + e) {
                        continue;
                    }
                    let o = this.valueColumn.item(m);
                    let p = !i || (i && o > 0);
                    let q;
                    if (h == null) {
                        q = j.getBucket1(this, m, m, b.by, b.bx, c);
                    }
                    else {
                        q = j.getBucket1(this, m, h.i$b._inner[m], b.by, b.bx, c);
                    }
                    a.f.add(q);
                    if (h != null) {
                        if (a.m == null) {
                            a.m = new List$1(Number_$type, 0);
                        }
                        a.m.add(n);
                    }
                    if (p) {
                        if (this.ac2(b, a, q, this.yz.h.provideCollisionDetector(), o, n, l, a.f.count - 1)) {
                            l++;
                        }
                    }
                }
            }
            b.cz.count = l;
        }
        aak(a, b) {
            super.aak(a, b);
            if (this.parentSeries == null) {
                return;
            }
            this.parentSeries.abm(this, a, b, runOn(this, this.ym));
            CategoryMarkerManager.e(this, a.n, b.cz, this.xi);
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    ColumnFragment.$t = markType(ColumnFragment, 'ColumnFragment', FragmentBase.$);
    ColumnFragment.$$p = markDep(DependencyProperty, PropertyMetadata, ColumnFragment, 'raisePropertyChanged', ['RadiusX:adb:adf', [1, 0], 'RadiusY:adc:adg', [1, 0]]);
    return ColumnFragment;
})();
/**
 * @hidden
 */
export let BarFragment = /*@__PURE__*/ (() => {
    class BarFragment extends ColumnFragment {
        constructor() {
            super();
            this.ab = BarFragment.$;
        }
        get_ex() {
            return true;
        }
        get_fl() {
            return true;
        }
        get_ez() {
            return false;
        }
        y4() {
            return 1;
        }
        get barFragmentXAxis() {
            return this.parentSeries != null ? this.parentSeries.xAxis : null;
        }
        get barFragmentYAxis() {
            return this.parentSeries != null ? this.parentSeries.yAxis : null;
        }
        ys() {
            if (this.parentSeries == null) {
                return null;
            }
            return this.parentSeries.fetchYAxis();
        }
        get_isVertical() {
            return true;
        }
        ir(a) {
            let b = this.db != null ? this.db.v4 : Rect.empty;
            let c = this.cv.bx;
            let d = this.wj(this.cv);
            let e = this.getEffectiveViewport1(this.cv);
            let f = this.ys();
            let g = -1;
            if (f != null && !b.isEmpty && !c.isEmpty) {
                let h = new ScalerParams(0, b, c, f.ch, e);
                let i = f.eo(d.top, h);
                let j = f.eo(d.bottom, h);
                let k = (a.y - b.top) / b.height;
                let l = i + (k * (j - i));
                if (f.categoryMode != 0) {
                    l -= 0.5;
                }
                g = l;
            }
            return g;
        }
        y9() {
            if (this.parentSeries == null) {
                return null;
            }
            return this.parentSeries.y9();
        }
        adh(a, b) {
            let c = a.left + a.width / 2;
            let d = a.top + a.height / 2;
            let e = c - (a.width / 2);
            let f = d - ((a.height / 2) + b);
            let g = a.height + b * 2;
            let h = a.width;
            return new Rect(0, e, f, h, g);
        }
        wn(a) {
            if (this.ys() == null) {
                return Rect.empty;
            }
            let b = this.v7(a);
            let c = this.cv.by;
            let d = this.cv.bx;
            let e = this.getEffectiveViewport1(this.cv);
            let f = this.ys();
            let g = new ScalerParams(0, c, d, f.ch, e);
            let h = this.an(this.ys(), this.yu.f, this.zv(this.cv), this.zw(this.cv), a, true);
            if (h == null) {
                return Rect.empty;
            }
            let i = h[0];
            let j = h[1];
            let k = Math.abs(b.y - i[0]);
            let l = Math.abs(b.y - j[0]);
            let m = f.k8(c, d, e);
            if (k < l) {
                let n = i[0] - 0.5 * m;
                let o = i[2];
                let p = i[1];
                return new Rect(0, o, n, Math.max(p, o) - Math.min(p, o), m);
            }
            else {
                let q = j[0] - 0.5 * m;
                let r = j[2];
                let s = j[1];
                return new Rect(0, r, q, Math.max(s, r) - Math.min(s, r), m);
            }
        }
        gw(a, b) {
            if (this.gz(a, b)) {
                return true;
            }
            if (this.xh(a, b)) {
                return true;
            }
            return false;
        }
        ac2(a, b, c, d, e, f, g, h) {
            let i = c[0];
            let j = e < 0 ? c[2] : c[1];
            let k = new Rect(0, j - 5, i - 5, 11, 11);
            if (!isNaN_(j) && !isNaN_(i) && !isInfinity(j) && !isInfinity(i) && d.tryAdd(k)) {
                b.n.add({ $type: Point_$type, x: j, y: i });
                a.updateMarkerTemplate(g, f, h);
                return true;
            }
            return false;
        }
        kn(a) {
            let b = 0;
            if (typeCast(ISortingAxis_$type, this.barFragmentYAxis) !== null) {
                b = this.j5(a);
                if (b == -1) {
                    return null;
                }
            }
            else {
                b = this.j3(a);
            }
            return b >= 0 && this.dn != null && b < this.dn.count ? this.dn.item(b) : null;
        }
        j5(a) {
            let b = this.cv.by;
            let c = this.cv.bx;
            if (b.isEmpty || c.isEmpty) {
                return -1;
            }
            let d = this.getEffectiveViewport1(this.cv);
            let e = new ScalerParams(0, b, c, this.barFragmentYAxis.ch, d);
            let f = typeCast(ISortingAxis_$type, this.barFragmentYAxis);
            let g = this.wj(this.cv);
            let h = this.barFragmentYAxis.eo(g.top, e);
            let i = this.barFragmentYAxis.eo(g.bottom, e);
            let j = (a.y - b.top) / b.height;
            let k = h + ((i - h) * j);
            if (truncate(k) <= dateMinValue().getTime() || truncate(k) >= dateMaxValue().getTime()) {
                return -1;
            }
            let l = f.i$f(k);
            return l;
        }
        aa9(a) {
            let b = 0;
            let c = a.by;
            let d = a.bx;
            let e = this.getEffectiveViewport1(a);
            let f = new ScalerParams(0, c, d, this.barFragmentXAxis.ch, e);
            if (!c.isEmpty && !d.isEmpty && this.barFragmentXAxis != null) {
                b = this.barFragmentXAxis.el(0, f);
            }
            return b;
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
            if (this.parentSeries == null || this.barFragmentXAxis == null) {
                return;
            }
            let e = this.barFragmentXAxis;
            switch (b) {
                case "ValueColumn":
                    if (this.aav.c8) {
                        this.aav.c7.g$i();
                    }
                    if (e != null && !e.c1()) {
                        this.parentSeries.aav().cw.g(this.id);
                        this.rr(this.gg && this.d7);
                    }
                    break;
            }
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    BarFragment.$t = markType(BarFragment, 'BarFragment', ColumnFragment.$);
    return BarFragment;
})();
/**
 * @hidden
 */
export let AreaFragmentBucketCalculator = /*@__PURE__*/ (() => {
    class AreaFragmentBucketCalculator extends AnchoredCategoryBucketCalculator {
        constructor(a) {
            super(a);
        }
        getBucketWithoutUnknowns(a) {
            return this.getBucket(a);
        }
        getBucket(a) {
            let b = Math.min(a * this.d, this.i.c5.valueColumn.count - 1);
            let c = Math.min(b + this.d - 1, this.i.c5.valueColumn.count - 1);
            let d = NaN;
            let e = NaN;
            let f = this.i.c5;
            let g = f.parentSeries;
            let h = typeCast(IStacked100Series_$type, g) !== null;
            let i = this.i.c5.valueColumn;
            let j = g.aas;
            let k = g.aat;
            let l = f.logicalSeriesLink.a8;
            let m = f.logicalSeriesLink.a7;
            for (let n = b; n <= c; ++n) {
                let o = i.item(n);
                if (isNaN_(o) || isInfinity(o)) {
                    o = 0;
                }
                let p = Math.abs(k[n]) + j[n];
                if (h) {
                    if (p == 0) {
                        o = 0;
                    }
                    else if (o < 0) {
                        o = (l._inner[n] + o) / p * 100;
                    }
                    else {
                        o = (m._inner[n] + o) / p * 100;
                    }
                }
                else {
                    o = o < 0 ? l._inner[n] + o : m._inner[n] + o;
                }
                if (!isNaN_(d)) {
                    if (!isNaN_(o)) {
                        d = Math.min(d, o);
                        e = Math.max(e, o);
                    }
                }
                else {
                    d = o;
                    e = o;
                }
            }
            if (!isNaN_(d)) {
                return [0.5 * (b + c), d, e];
            }
            return [0.5 * (b + c), NaN, NaN];
        }
    }
    AreaFragmentBucketCalculator.$t = markType(AreaFragmentBucketCalculator, 'AreaFragmentBucketCalculator', AnchoredCategoryBucketCalculator.$);
    return AreaFragmentBucketCalculator;
})();
/**
 * @hidden
 */
export let LineFragmentBucketCalculator = /*@__PURE__*/ (() => {
    class LineFragmentBucketCalculator extends AnchoredCategoryBucketCalculator {
        constructor(a) {
            super(a);
        }
        getBucketWithoutUnknowns(a) {
            return this.getBucket(a);
        }
        getBucket(a) {
            let b = Math.min(a * this.d, this.i.c5.valueColumn.count - 1);
            let c = Math.min(b + this.d - 1, this.i.c5.valueColumn.count - 1);
            let d = NaN;
            let e = NaN;
            let f = typeCast(FragmentBase.$, this.i.c5);
            let g = f.parentSeries;
            for (let h = b; h <= c; ++h) {
                let i = this.i.c5.valueColumn.item(h);
                let j = Math.abs(g.aat[h]) + g.aas[h];
                if (isNaN_(i) || isInfinity(i)) {
                    i = 0;
                }
                if (typeCast(IStacked100Series_$type, g) !== null) {
                    if (j == 0) {
                        i = 0;
                    }
                    else if (i < 0) {
                        i = (f.logicalSeriesLink.a8._inner[h] + i) / j * 100;
                    }
                    else {
                        i = (f.logicalSeriesLink.a7._inner[h] + i) / j * 100;
                    }
                }
                else {
                    i = i < 0 ? f.logicalSeriesLink.a8._inner[h] + i : f.logicalSeriesLink.a7._inner[h] + i;
                }
                if (!isNaN_(d)) {
                    if (!isNaN_(i)) {
                        d = Math.min(d, i);
                        e = Math.max(e, i);
                    }
                }
                else {
                    d = i;
                    e = i;
                }
            }
            if (!isNaN_(d)) {
                return [0.5 * (b + c), d, e];
            }
            return [0.5 * (b + c), NaN, NaN];
        }
    }
    LineFragmentBucketCalculator.$t = markType(LineFragmentBucketCalculator, 'LineFragmentBucketCalculator', AnchoredCategoryBucketCalculator.$);
    return LineFragmentBucketCalculator;
})();
/**
 * @hidden
 */
export let SplineFragmentBucketCalculator = /*@__PURE__*/ (() => {
    class SplineFragmentBucketCalculator extends AnchoredCategoryBucketCalculator {
        constructor(a) {
            super(a);
        }
        getBucket(a) {
            let b = Math.min(a * this.d, this.i.c5.valueColumn.count - 1);
            let c = Math.min(b + this.d - 1, this.i.c5.valueColumn.count - 1);
            let d = NaN;
            let e = NaN;
            let f = typeCast(SplineFragmentBase.$, this.i.c5);
            let g = f.parentSeries;
            for (let h = b; h <= c; ++h) {
                let i = this.i.c5.valueColumn.item(h);
                let j = Math.abs(g.aat[h]) + g.aas[h];
                if (isNaN_(i) || isInfinity(i)) {
                    i = 0;
                }
                if (typeCast(IStacked100Series_$type, g) !== null) {
                    if (j == 0) {
                        i = 0;
                    }
                    else if (i < 0) {
                        i = (f.logicalSeriesLink.a8._inner[h] + i) / j * 100;
                    }
                    else {
                        i = (f.logicalSeriesLink.a7._inner[h] + i) / j * 100;
                    }
                }
                else {
                    i = i < 0 ? f.logicalSeriesLink.a8._inner[h] + i : f.logicalSeriesLink.a7._inner[h] + i;
                }
                if (!isNaN_(d)) {
                    if (!isNaN_(i)) {
                        d = Math.min(d, i);
                        e = Math.max(e, i);
                    }
                }
                else {
                    d = i;
                    e = i;
                }
            }
            if (!isNaN_(d)) {
                return [0.5 * (b + c), d, e];
            }
            return [0.5 * (b + c), NaN, NaN];
        }
    }
    SplineFragmentBucketCalculator.$t = markType(SplineFragmentBucketCalculator, 'SplineFragmentBucketCalculator', AnchoredCategoryBucketCalculator.$);
    return SplineFragmentBucketCalculator;
})();
/**
 * @hidden
 */
export let StackedBucketCalculator = /*@__PURE__*/ (() => {
    class StackedBucketCalculator extends CategoryBucketCalculator {
        constructor(a) {
            super(a);
        }
        getBucket(a) {
            let b = typeCast(StackedSeriesBase.$, this.c.cy);
            let c = Math.min(b.aat != null ? b.aat.length : 0, b.aas != null ? b.aas.length : 0);
            let d = Math.min(a * this.d, c - 1);
            let e = Math.min(d + this.d - 1, c - 1);
            let f = NaN;
            let g = NaN;
            for (let h = d; h <= e; ++h) {
                let i = Math.min(b.aat[h], b.aas[h]);
                let j = Math.max(b.aat[h], b.aas[h]);
                if (!isNaN_(f)) {
                    if (!isNaN_(i)) {
                        f = Math.min(f, i);
                        g = Math.max(g, i);
                    }
                    if (!isNaN_(j)) {
                        f = Math.min(f, j);
                        g = Math.max(g, j);
                    }
                }
                else {
                    f = i;
                    g = j;
                }
            }
            if (!isNaN_(f) && !isNaN_(g)) {
                return [0.5 * (d + e), f, g];
            }
            return [NaN, NaN, NaN];
        }
        getBucket1(a, b, c, d, e, f) {
            return null;
        }
    }
    StackedBucketCalculator.$t = markType(StackedBucketCalculator, 'StackedBucketCalculator', CategoryBucketCalculator.$);
    return StackedBucketCalculator;
})();
/**
 * @hidden
 */
export let StackedBarBucketCalculator = /*@__PURE__*/ (() => {
    class StackedBarBucketCalculator extends StackedBucketCalculator {
        constructor(a) {
            super(a);
        }
        g(a) {
            let b = this.c.by;
            let c = this.c.bx;
            let d = typeCast(StackedBarSeries.$, this.c.cy);
            let e = this.c.cy.dn;
            if (b.isEmpty || c.isEmpty || d.yAxis == null || e == null || e.count == 0) {
                this.d = 0;
                return;
            }
            let f = d.getEffectiveViewport1(this.c);
            let g = new ScalerParams(0, b, c, d.yAxis.ch, f);
            let h = d.wj(this.c);
            let i = Math.floor(d.yAxis.ep(h.top, g, 0));
            let j = Math.ceil(d.yAxis.ep(h.bottom, g, 0));
            if (!d.yAxis.ch) {
                j = Math.ceil(d.yAxis.ep(h.top, g, 0));
                i = Math.floor(d.yAxis.ep(h.bottom, g, 0));
            }
            let k = Math.floor((j - i + 1) * a / h.height);
            this.d = truncate(Math.max(1, k));
            this.e = truncate(Math.max(0, Math.floor(i / this.d) - 1));
            this.f = truncate(Math.ceil(j / this.d));
        }
        getBucket(a) {
            return super.getBucket(a);
        }
        getBucket1(a, b, c, d, e, f) {
            let g = [NaN, NaN, NaN];
            let h = typeCast(BarFragment.$, a);
            if (h == null || h.logicalSeriesLink == null) {
                return g;
            }
            let i = typeCast(StackedBarSeries.$, this.c.cy);
            let j = a.valueColumn.item(c);
            let k = 0;
            let l = NaN;
            let m = NaN;
            let n = Number.NEGATIVE_INFINITY;
            let o = Number.POSITIVE_INFINITY;
            let p = i.getEffectiveViewport1(this.c);
            let q = Math.min(i.aat != null ? i.aat.length : 0, i.aas != null ? i.aas.length : 0);
            let r = c * this.d;
            let s = Math.min(r + this.d - 1, q - 1);
            if (r <= s) {
                for (let t = r; t <= s; ++t) {
                    j = a.valueColumn.item(t);
                    if (j < k) {
                        o = Math.min(o, h.logicalSeriesLink.a8._inner[t] + j);
                        n = Math.max(n, h.logicalSeriesLink.a8._inner[t]);
                    }
                    else {
                        o = Math.min(o, h.logicalSeriesLink.a7._inner[t]);
                        n = Math.max(n, h.logicalSeriesLink.a7._inner[t] + j);
                    }
                    if (!isNaN_(l)) {
                        if (!isNaN_(o)) {
                            l = Math.min(l, o);
                            m = Math.max(m, o);
                        }
                        if (!isNaN_(n)) {
                            l = Math.min(l, n);
                            m = Math.max(m, n);
                        }
                    }
                    else {
                        l = o;
                        m = n;
                    }
                }
            }
            let u = new ScalerParams(0, d, e, i.xAxis.ch, p);
            g = [f.f._inner[b - this.e][0], i.xAxis.el(m, u), i.xAxis.el(l, u)];
            return g;
        }
    }
    StackedBarBucketCalculator.$t = markType(StackedBarBucketCalculator, 'StackedBarBucketCalculator', StackedBucketCalculator.$);
    return StackedBarBucketCalculator;
})();
/**
 * @hidden
 */
export let StackedColumnBucketCalculator = /*@__PURE__*/ (() => {
    class StackedColumnBucketCalculator extends StackedBucketCalculator {
        constructor(a) {
            super(a);
        }
        getBucket(a) {
            return super.getBucket(a);
        }
        getBucket1(a, b, c, d, e, f) {
            let g = [NaN, NaN, NaN];
            let h = typeCast(ColumnFragment.$, a);
            if (h == null || h.logicalSeriesLink == null) {
                return g;
            }
            let i = typeCast(StackedColumnSeries.$, this.c.cy);
            let j = a.valueColumn.item(c);
            let k = 0;
            let l = NaN;
            let m = NaN;
            let n = Number.NEGATIVE_INFINITY;
            let o = Number.POSITIVE_INFINITY;
            let p = i.getEffectiveViewport1(this.c);
            let q = Math.min(i.aat != null ? i.aat.length : 0, i.aas != null ? i.aas.length : 0);
            let r = c * this.d;
            let s = Math.min(r + this.d - 1, q - 1);
            if (r <= s) {
                for (let t = r; t <= s; ++t) {
                    j = a.valueColumn.item(t);
                    if (j < k) {
                        o = Math.min(o, h.logicalSeriesLink.a8._inner[t] + j);
                        n = Math.max(n, h.logicalSeriesLink.a8._inner[t]);
                    }
                    else {
                        o = Math.min(o, h.logicalSeriesLink.a7._inner[t]);
                        n = Math.max(n, h.logicalSeriesLink.a7._inner[t] + j);
                    }
                    if (!isNaN_(l)) {
                        if (!isNaN_(o)) {
                            l = Math.min(l, o);
                            m = Math.max(m, o);
                        }
                        if (!isNaN_(n)) {
                            l = Math.min(l, n);
                            m = Math.max(m, n);
                        }
                    }
                    else {
                        l = o;
                        m = n;
                    }
                }
            }
            let u = new ScalerParams(0, d, e, i.yAxis.ch, p);
            g = [f.f._inner[b - this.e][0], i.yAxis.el(m, u), i.yAxis.el(l, u)];
            return g;
        }
    }
    StackedColumnBucketCalculator.$t = markType(StackedColumnBucketCalculator, 'StackedColumnBucketCalculator', StackedBucketCalculator.$);
    return StackedColumnBucketCalculator;
})();
/**
 * @hidden
 */
export let FragmentBaseValueList = /*@__PURE__*/ (() => {
    class FragmentBaseValueList extends Base {
        constructor(a) {
            super();
            this.a = null;
            this.a = a;
        }
        indexOf(a) {
            throw new NotImplementedException(0);
        }
        insert(a, b) {
            throw new NotImplementedException(0);
        }
        removeAt(a) {
            throw new NotImplementedException(0);
        }
        item(a, b) {
            if (arguments.length === 2) {
                throw new NotImplementedException(0);
                return b;
            }
            else {
                let b = false;
                if (this.a.parentSeries != null) {
                    b = this.a.parentSeries.aa4;
                }
                let c = this.a.parentSeries;
                if (c == null) {
                    return NaN;
                }
                if (c.aat == null || c.aas == null || c.aat.length == 0 || c.aas.length == 0) {
                    return NaN;
                }
                let d = this.a.valueColumn.item(a);
                let e = Math.abs(c.aat[a]) + c.aas[a];
                let f = this.a.logicalSeriesLink.a7;
                let g = this.a.logicalSeriesLink.a8;
                if (isNaN_(d) || isInfinity(d)) {
                    d = 0;
                }
                if (b) {
                    if (e == 0) {
                        d = 0;
                    }
                    else if (d < 0) {
                        d = (g._inner[a] + d) / e * 100;
                    }
                    else {
                        d = (f._inner[a] + d) / e * 100;
                    }
                }
                else {
                    d = d < 0 ? g._inner[a] + d : f._inner[a] + d;
                }
                return d;
            }
        }
        add(a) {
            throw new NotImplementedException(0);
        }
        clear() {
            throw new NotImplementedException(0);
        }
        contains(a) {
            throw new NotImplementedException(0);
        }
        copyTo(a, b) {
            throw new NotImplementedException(0);
        }
        get count() {
            return this.a.valueColumn.count;
        }
        get isReadOnly() {
            throw new NotImplementedException(0);
        }
        remove(a) {
            throw new NotImplementedException(0);
        }
        getEnumerator() {
            throw new NotImplementedException(0);
        }
        getEnumeratorObject() {
            return this.getEnumerator();
        }
    }
    FragmentBaseValueList.$t = markType(FragmentBaseValueList, 'FragmentBaseValueList', Base.$, [IList$1_$type.specialize(Number_$type)]);
    return FragmentBaseValueList;
})();
/**
 * @hidden
 */
export let LineFragment = /*@__PURE__*/ (() => {
    class LineFragment extends FragmentBase {
        constructor() {
            super();
            this.ab = LineFragment.$;
        }
        bj() {
            return new LineFragment();
        }
        get_fk() {
            return true;
        }
        zo() {
            return true;
        }
        cs() {
            return new LineFragmentView(this);
        }
        q1(a) {
            super.q1(a);
            this.ac7 = a;
        }
        ac9(a, b) {
            let c = this.ac7.dk.an;
            if (this.gy(a, c)) {
                return true;
            }
            return false;
        }
        get_ev() {
            return true;
        }
        gw(a, b) {
            if (this.ac8(a, b)) {
                return true;
            }
            if (this.ac9(a, b)) {
                return true;
            }
            if (this.xh(a, b)) {
                return true;
            }
            return false;
        }
        ac8(a, b) {
            let c = this.ac7.dl.an;
            if (this.gx(a, b, c)) {
                return true;
            }
            let d = this.ac7.dm.an;
            if (this.gx(a, b, d)) {
                return true;
            }
            return false;
        }
        preferredCategoryMode(a) {
            return 0;
        }
        o5(a, b) {
            super.o5(a, b);
            let c = b;
            c.dg();
        }
        aak(a, b) {
            super.aak(a, b);
            let c = (d) => a.f._inner[d][0];
            let d = (e) => a.f._inner[e][1];
            let e = (f) => a.f._inner[f][0];
            let f = (g) => a.f._inner[g][2];
            this.acx.a = typeCast(ISortingAxis_$type, this.xAxis) !== null ? true : false;
            let g = b.cw.d;
            let h = typeCast(LineFragmentView.$, b);
            let i = this.getEffectiveViewport1(b);
            let j = a.f;
            this.y2.a2(this, this.zm(), runOn(this, this.ym), this.zv(b), this.zw(b));
            let k = false;
            let l = this.y2.b;
            if (l != null) {
                k = true;
            }
            if (k) {
                let m = new ScalerParams(0, b.by, b.bx, this.acd.ch, i);
                this.aag(j, -1, this.valueColumn.count, this.acd, m, b.q, -1);
            }
            this.y2.ad(h.dl, true, false, true, false);
            this.y2.ad(h.dm, true, false, true, false);
            this.y2.ad(h.dk, false, true, false, false);
            h.dk._opacity = 0.75 * this.y2.j;
            this.acx.m(h.dl, h.dk, h.dm, a.f.count, a.f, true, 0, this.aat(a.f, a.f.count - 1, b.bx, b.by), g, this.id);
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    LineFragment.$t = markType(LineFragment, 'LineFragment', FragmentBase.$);
    return LineFragment;
})();
/**
 * @hidden
 */
export let SplineFragmentBase = /*@__PURE__*/ (() => {
    class SplineFragmentBase extends SplineSeriesBase {
        constructor() {
            super();
            this._logicalSeriesLink = null;
            this.adg = null;
            this.adi = null;
            this.adg = new CategoryLineRasterizer();
        }
        get logicalSeriesLink() {
            return this._logicalSeriesLink;
        }
        set logicalSeriesLink(a) {
            this._logicalSeriesLink = a;
        }
        get parentSeries() {
            return this.adi;
        }
        set parentSeries(a) {
            this.adi = a;
        }
        qa(a) {
            super.qa(a);
            a.parentSeries = this.parentSeries;
            a.logicalSeriesLink = this.logicalSeriesLink;
        }
        get_e5() {
            return false;
        }
        preferredCategoryMode(a) {
            return 0;
        }
        get_fb() {
            return true;
        }
        nc() {
            if (this.logicalSeriesLink != null) {
                return this.logicalSeriesLink.e0;
            }
            return null;
        }
        wc(a, b, c) {
            return this.we(a, b, c, this.yz.r(this.ys(), this.cv.by, this.cv.bx, this.getEffectiveViewport1(this.cv)), this.y9(), this.ys(), runOn(this, this.adk), (d, e) => this.kb(d, e, this.ys(), runOn(this, this.zt), new SplineFragmentBaseValueList(this)), (d, e) => this.j9(d, e, this.ys(), runOn(this, this.zt), new SplineFragmentBaseValueList(this)));
        }
        ai() {
            return [this.ys(), this.y9()];
        }
        adk(a, b, c) {
            if (this.db == null) {
                return NaN;
            }
            let d = this.getEffectiveViewport1(this.cv);
            let e = new ScalerParams(0, this.db.v4, this.cv.bx, this.ys().ch, d);
            let f = this.yz.r(this.ys(), this.db.v4, this.cv.bx, d);
            return this.i7(new SplineFragmentBaseValueList(this), a, this.ys(), e, f, runOn(this, this.zt), b, c);
        }
        j2() {
            let a = this.parentSeries;
            if (a.index == -1 || a.aa1 == null || a.aa1.f.indexOf(this) == -1) {
                return -1;
            }
            return a.aa1.f.indexOf(this);
        }
        resolveLegendIndex() {
            let a = this.parentSeries;
            if (a.aa5) {
                return -1 + a.index + a.aaw.count - a.aa1.f.indexOf(this);
            }
            return super.resolveLegendIndex();
        }
        j7() {
            let a = this.parentSeries;
            if (a.index == -1 || a.series.count == 0 || a.series.indexOf(this.logicalSeriesLink) == -1) {
                return -1;
            }
            return a.series.indexOf(this.logicalSeriesLink);
        }
        bp() {
            return this.parentSeries;
        }
        ac2(a, b, c, d, e, f, g) {
            let h = b[0];
            let i = b[1];
            let j = new Rect(0, h - 5, i - 5, 11, 11);
            if (!isNaN_(h) && !isNaN_(i) && !isInfinity(h) && !isInfinity(i) && c.tryAdd(j)) {
                a.n.add({ $type: Point_$type, x: h, y: i });
                let k = f.cz.item(e);
                k.content.item = this.dn.item(d);
                k.al = g;
                return true;
            }
            return false;
        }
        he(a, b, c) {
            let d = super.he(a, b, c);
            let e = typeCast(CategoryAxisBase.$, this.parentSeries.fetchXAxis());
            let f = this.parentSeries.fetchYAxis();
            if (this.parentSeries == null || e == null || e.itemsSource == null || f == null || this.parentSeries.dn == null || e.bi == null || f.bi == null) {
                d = false;
            }
            if (this.valueColumn == null) {
                return false;
            }
            if (isInfinity(this.valueColumn.minimum) && isInfinity(this.valueColumn.maximum)) {
                d = false;
            }
            if (isNaN_(this.valueColumn.minimum) && isNaN_(this.valueColumn.maximum)) {
                d = false;
            }
            return d;
        }
        ay(a) {
            return null;
        }
        adl(a, b, c, d, e, f) {
            let g = typeCast(ISortingAxis_$type, d);
            if (g == null) {
                return;
            }
            let h = this.getEffectiveViewport1(f);
            let i = new ScalerParams(0, b, c, d.ch, h);
            let j = new ScalerParams(0, b, c, e.ch, h);
            let k = d.eo(2, i) - d.eo(1, i);
            let l = this.xg();
            let m = 0;
            let n = this.ac6(d, b, c, h);
            let o = (p) => Math.abs(this.parentSeries.aat[p]) + this.parentSeries.aas[p];
            let p = (q) => q;
            let q = (r) => {
                let s = g.i$b._inner[r];
                if (typeCast(IStacked100Series_$type, this.parentSeries) !== null) {
                    return this.valueColumn.item(s) < 0 ? (this.logicalSeriesLink.a8._inner[s] + this.valueColumn.item(s)) / o(s) * 100 : (this.logicalSeriesLink.a7._inner[s] + this.valueColumn.item(s)) / o(s) * 100;
                }
                else {
                    return this.valueColumn.item(s) < 0 ? this.logicalSeriesLink.a8._inner[s] + this.valueColumn.item(s) : this.logicalSeriesLink.a7._inner[s] + this.valueColumn.item(s);
                }
            };
            let r = this.y3.cw.f;
            let s = this.y3.cw.e;
            let t = truncate(Math.ceil(c.width / (r - s)));
            let u = new CollisionAvoider();
            let v = this.y3.cw.d;
            if (v <= 0 || (s <= 0 && r <= 0)) {
                this.y3.cz.count = m;
                return;
            }
            let w = 0;
            for (let x = s; x < r + 1; ++x) {
                let y = null;
                let z = x * v;
                if (g != null && g.i$b != null && z >= 0 && z < g.i$b.count) {
                    z = g.i$b._inner[z];
                }
                if (x >= (this.valueColumn.count - 1)) {
                    if (l && this.ac2(a, a.f._inner[a.f.count - 1], u, Math.min(z, this.dn.count - 1), m, f, w - 1)) {
                        ++m;
                    }
                    break;
                }
                let aa = p(x);
                let ab = q(x);
                let ac = p(x + 1);
                let ad = q(x + 1);
                let ae = ac - aa;
                let af = this.acy[x];
                let ag = this.acy[x + 1];
                let ah = g.i$d(g.i$b._inner[x]);
                let ai = d.el(ah, i) + n;
                let aj = e.el(ab, j);
                a.f.add([ai, aj, aj]);
                w++;
                for (let ak = 1; ak < t; ++ak) {
                    let al = ak / t;
                    let am = aa + ae * al;
                    let an = (ac - am) / ae;
                    let ao = (am - aa) / ae;
                    let ap = an * ab + ao * ad + ((an * an * an - an) * af + (ao * ao * ao - ao) * ag) * (ae * ae) / 6;
                    let aq = g.i$d(g.i$b._inner[x]);
                    let ar = g.i$d(g.i$b._inner[x + 1]);
                    if (aq == ar && ab == ad) {
                        break;
                    }
                    let as = aq + (ar - aq) * al;
                    am = d.el(as, i) + n;
                    ap = e.el(ap, j);
                    a.f.add([am, ap, ap]);
                    w++;
                }
                if (l) {
                    y = [ai, aj, aj];
                }
                if (l && this.ac2(a, y, u, Math.min(z, this.dn.count - 1), m, f, w - 1)) {
                    ++m;
                }
            }
            this.y3.cz.count = m;
        }
        aah(a, b) {
            a.v();
            if (this.valueColumn == null || this.parentSeries == null || this.logicalSeriesLink == null) {
                return;
            }
            if (this.logicalSeriesLink.a8.count == 0 || this.logicalSeriesLink.a7.count == 0) {
                return;
            }
            if (this.y3.cw.d == 0) {
                return;
            }
            super.aah(a, b);
            if (a.f.count <= 1) {
                return;
            }
            let c = b.by;
            let d = b.bx;
            let e = this.getEffectiveViewport1(b);
            let f = typeCast(CategoryAxisBase.$, this.parentSeries.fetchXAxis());
            let g = typeCast(NumericYAxis.$, this.parentSeries.fetchYAxis());
            let h = new ScalerParams(0, c, d, f.ch, e);
            let i = new ScalerParams(0, c, d, g.ch, e);
            a.f.clear();
            a.n.clear();
            let j = this.xg();
            let k = 0;
            let l;
            let m;
            if (b.p) {
                l = this.parentSeries.aau;
                m = this.parentSeries.ba.a$j.item(b.ad);
            }
            else if (b == this.cu) {
                l = this.parentSeries.yx;
                m = typeCast(CategorySeriesView.$, this.parentSeries.cu);
            }
            else {
                l = this.parentSeries.yu;
                m = this.parentSeries.y3;
            }
            let n = m.cw.d;
            let o = typeCast(ISortingAxis_$type, f);
            if (o != null && o.i$b.count != this.dn.count) {
                return;
            }
            let p = this.preferredCategoryMode(f);
            if (p == 0 && f.categoryMode != 0) {
                p = 1;
            }
            let q = 0;
            switch (p) {
                case 0:
                    q = 0;
                    break;
                case 1:
                    q = 0.5 * f.getCategorySize(c, d, e);
                    break;
                case 2:
                    let r = this.index;
                    q = f.getGroupCenter(this.index, c, d, e);
                    break;
            }
            if (f.ch) {
                q = -q;
            }
            let s = (t) => Math.abs(this.parentSeries.aat[t]) + this.parentSeries.aas[t];
            let t = (u) => u;
            let u = (v) => {
                let w = this.valueColumn.item(v);
                if (isNaN_(w) || isInfinity(w)) {
                    w = 0;
                }
                if (typeCast(IStacked100Series_$type, this.parentSeries) !== null) {
                    if (s(v) == 0) {
                        return 0;
                    }
                    return w < 0 ? (this.logicalSeriesLink.a8._inner[v] + w) / s(v) * 100 : (this.logicalSeriesLink.a7._inner[v] + w) / s(v) * 100;
                }
                return w < 0 ? this.logicalSeriesLink.a8._inner[v] + w : this.logicalSeriesLink.a7._inner[v] + w;
            };
            let v = b.cw.d;
            this.adb(b);
            let w = m.cw.e;
            let x = m.cw.f;
            let y = truncate(Math.ceil(d.width / (x - w)));
            let z = new CollisionAvoider();
            if (o != null) {
                this.adl(a, c, d, f, g, b);
                return;
            }
            let aa = 0;
            let ab = 0;
            for (let ac = w; ac < x + 1; ++ac) {
                if (ac >= this.valueColumn.count) {
                    break;
                }
                let ad = null;
                if (v == 1) {
                    if (ac >= (this.valueColumn.count - 1)) {
                        if (j && a.f.count > 0 && this.ac2(a, a.f._inner[a.f.count - 1], z, Math.min(ac * v, this.dn.count - 1), k, b, aa - 1)) {
                            ++k;
                        }
                        break;
                    }
                    let ae = t(ac);
                    let af = t(ac + 1);
                    let ag = u(ac);
                    let ah = u(ac + 1);
                    let ai = af - ae;
                    let aj = this.acy[ac];
                    let ak = this.acy[ac + 1];
                    let al = f.el(ae, h) + q;
                    let am = g.el(ag, i);
                    a.f.add([al, am, am]);
                    aa++;
                    ab = aa;
                    for (let an = 1; an < y; ++an) {
                        let ao = ae + ai * an / y;
                        let ap = (af - ao) / ai;
                        let aq = (ao - ae) / ai;
                        let ar = ap * ag + aq * ah + ((ap * ap * ap - ap) * aj + (aq * aq * aq - aq) * ak) * (ai * ai) / 6;
                        ao = f.el(ao, h) + q;
                        ar = g.el(ar, i);
                        a.f.add([ao, ar, ar]);
                        aa++;
                    }
                    if (j) {
                        ad = [al, am, am];
                    }
                }
                else {
                    ad = b.cw.getBucket(ac);
                    if (!isNaN_(ad[0])) {
                        ad[0] = f.el(ad[0], h) + q;
                        ad[1] = g.el(ad[1], i);
                        ad[2] = g.el(ad[2], i);
                        a.f.add(ad);
                        aa++;
                        ab = aa;
                    }
                }
                if (j && this.ac2(a, ad, z, Math.min(ac * v, this.dn.count - 1), k, b, ab - 1)) {
                    ++k;
                }
            }
            b.cz.count = k;
        }
        acw(a) {
            let b = (c) => Math.abs(this.parentSeries.aat[c]) + this.parentSeries.aas[c];
            let c = (d) => d;
            let d = (e) => {
                let f = this.valueColumn.item(e);
                if (isNaN_(f) || isInfinity(f)) {
                    f = 0;
                }
                if (typeCast(IStacked100Series_$type, this.parentSeries) !== null) {
                    if (b(e) == 0) {
                        return 0;
                    }
                    return f < 0 ? (this.logicalSeriesLink.a8._inner[e] + f) / b(e) * 100 : (this.logicalSeriesLink.a7._inner[e] + f) / b(e) * 100;
                }
                return f < 0 ? this.logicalSeriesLink.a8._inner[e] + f : this.logicalSeriesLink.a7._inner[e] + f;
            };
            let e = new List$1(Array_$type, 0);
            let f = a.by;
            let g = a.bx;
            let h = typeCast(ISortingAxis_$type, this.acd);
            let i = 0;
            let j = 0;
            let k = 0;
            let l = this.id;
            let m = this.wj(this.cv);
            let n = this.acd;
            let o = this.getEffectiveViewport1(a);
            if (h == null || h.i$b == null) {
                let p = new ScalerParams(0, f, g, n.ch, o);
                let q = 0;
                let r = n.lk - 1;
                let s = Math.floor((r - q + 1) * l / m.width);
                i = truncate(Math.max(1, s));
                j = truncate(Math.max(0, Math.floor(q / i) - 1));
                k = truncate(Math.ceil(r / i));
            }
            else {
                j = 0;
                k = n.lk - 1;
                i = 1;
            }
            let t = truncate(Math.ceil(g.width / (k - j)));
            let u = new CollisionAvoider();
            if (h != null) {
                return this.acx(a);
            }
            let v = 0;
            let w = 0;
            for (let x = j; x < k + 1; ++x) {
                if (x >= this.valueColumn.count) {
                    break;
                }
                let y = null;
                if (i == 1) {
                    if (x >= (this.valueColumn.count - 1)) {
                        break;
                    }
                    let z = c(x);
                    let aa = c(x + 1);
                    let ab = d(x);
                    let ac = d(x + 1);
                    let ad = aa - z;
                    let ae = this.acy[x];
                    let af = this.acy[x + 1];
                    e.add([ab, ab]);
                    for (let ag = 1; ag < t; ++ag) {
                        let ah = z + ad * ag / t;
                        let ai = (aa - ah) / ad;
                        let aj = (ah - z) / ad;
                        let ak = ai * ab + aj * ac + ((ai * ai * ai - ai) * ae + (aj * aj * aj - aj) * af) * (ad * ad) / 6;
                        e.add([ak, ak]);
                    }
                }
                else {
                    y = a.cw.getBucket(x);
                    if (!isNaN_(y[0])) {
                        e.add([y[0], y[1]]);
                    }
                }
            }
            return e.toArray();
        }
        acx(a) {
            let b = new List$1(Array_$type, 0);
            let c = a.by;
            let d = a.bx;
            let e = this.acd;
            let f = typeCast(ISortingAxis_$type, e);
            if (f == null) {
                return null;
            }
            let g = this.getEffectiveViewport1(a);
            let h = this.xg();
            let i = 0;
            let j = (k) => Math.abs(this.parentSeries.aat[k]) + this.parentSeries.aas[k];
            let k = (l) => l;
            let l = (m) => {
                let n = f.i$b._inner[m];
                if (typeCast(IStacked100Series_$type, this.parentSeries) !== null) {
                    return this.valueColumn.item(n) < 0 ? (this.logicalSeriesLink.a8._inner[n] + this.valueColumn.item(n)) / j(n) * 100 : (this.logicalSeriesLink.a7._inner[n] + this.valueColumn.item(n)) / j(n) * 100;
                }
                else {
                    return this.valueColumn.item(n) < 0 ? this.logicalSeriesLink.a8._inner[n] + this.valueColumn.item(n) : this.logicalSeriesLink.a7._inner[n] + this.valueColumn.item(n);
                }
            };
            let m = 0;
            let n = 0;
            let o = 0;
            let p = this.id;
            let q = this.wj(this.cv);
            if (f == null || f.i$b == null) {
                let r = 0;
                let s = e.lk - 1;
                let t = Math.floor((s - r + 1) * p / q.width);
                m = truncate(Math.max(1, t));
                n = truncate(Math.max(0, Math.floor(r / m) - 1));
                o = truncate(Math.ceil(s / m));
            }
            else {
                n = 0;
                o = e.lk - 1;
                m = 1;
            }
            if (m <= 0 || (n <= 0 && o <= 0)) {
                this.y3.cz.count = i;
                return null;
            }
            let u = truncate(Math.ceil(d.width / (o - n)));
            let v = new CollisionAvoider();
            let w = 0;
            for (let x = n; x < o + 1; ++x) {
                let y = null;
                if (x >= (this.valueColumn.count - 1)) {
                    break;
                }
                let z = k(x);
                let aa = l(x);
                let ab = k(x + 1);
                let ac = l(x + 1);
                let ad = ab - z;
                let ae = this.acy[x];
                let af = this.acy[x + 1];
                b.add([aa, aa]);
                for (let ag = 1; ag < u; ++ag) {
                    let ah = ag / u;
                    let ai = z + ad * ah;
                    let aj = (ab - ai) / ad;
                    let ak = (ai - z) / ad;
                    let al = aj * aa + ak * ac + ((aj * aj * aj - aj) * ae + (ak * ak * ak - ak) * af) * (ad * ad) / 6;
                    b.add([al, al]);
                }
            }
            return b.toArray();
        }
        adb(a) {
            super.adb(a);
            let b = (c) => Math.abs(this.parentSeries.aat[c]) + this.parentSeries.aas[c];
            let c = (d) => d;
            let d = (e) => {
                let f = this.valueColumn.item(e);
                if (isNaN_(f) || isInfinity(f)) {
                    f = 0;
                }
                if (typeCast(IStacked100Series_$type, this.parentSeries) !== null) {
                    if (b(e) == 0) {
                        return 0;
                    }
                    return f < 0 ? (this.logicalSeriesLink.a8._inner[e] + f) / b(e) * 100 : (this.logicalSeriesLink.a7._inner[e] + f) / b(e) * 100;
                }
                return f < 0 ? this.logicalSeriesLink.a8._inner[e] + f : this.logicalSeriesLink.a7._inner[e] + f;
            };
            let e = this.acd;
            let f = this.ac0 == 0 ? NaN : 0;
            if (e != null && typeCast(ISortingAxis_$type, e) !== null && e.i$b != null) {
                let g = new SafeSortedReadOnlyDoubleCollection(0, this.valueColumn, e.i$b);
                d = (h) => g.item(h);
            }
            this.acy = Numeric.c(this.valueColumn.count, c, d, f, f);
            if (this.ac1) {
                let h = -1.7976931348623157E+308;
                let i = 1.7976931348623157E+308;
                let j = this.acw(a);
                if (j == null) {
                    return;
                }
                for (let k = 0; k < j.length; k++) {
                    if (isNaN_(j[k][0]) || isNaN_(j[k][1])) {
                        continue;
                    }
                    if (j[k][1] > h) {
                        h = j[k][1];
                    }
                    if (j[k][0] < i) {
                        i = j[k][0];
                    }
                }
                this.ac8 = i;
                this.ac7 = h;
            }
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
            switch (b) {
                case "ActualBrush":
                    if (this.logicalSeriesLink != null) {
                        this.logicalSeriesLink.ku = this.u9;
                    }
                    break;
            }
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    SplineFragmentBase.$t = markType(SplineFragmentBase, 'SplineFragmentBase', SplineSeriesBase.$);
    return SplineFragmentBase;
})();
/**
 * @hidden
 */
export let SplineAreaFragment = /*@__PURE__*/ (() => {
    class SplineAreaFragment extends SplineFragmentBase {
        constructor() {
            super();
            this.adq = null;
            this.ab = SplineAreaFragment.$;
        }
        bj() {
            return new SplineAreaFragment();
        }
        cs() {
            return new SplineAreaFragmentView(this);
        }
        q1(a) {
            super.q1(a);
            this.adm = typeCast(SplineAreaFragmentView.$, a);
        }
        ac() {
            super.ac();
            this.rr(false);
        }
        get_ev() {
            return true;
        }
        get_eu() {
            return true;
        }
        get_f0() {
            return true;
        }
        y4() {
            return 1;
        }
        ado(a, b) {
            let c = this.adm.dn.an;
            if (this.gy(a, c)) {
                return true;
            }
            let d = this.adm.dp.an;
            if (this.gy(a, d)) {
                return true;
            }
            return false;
        }
        gw(a, b) {
            if (this.adn(a, b)) {
                return true;
            }
            if (this.ado(a, b)) {
                return true;
            }
            if (this.xh(a, b)) {
                return true;
            }
            return false;
        }
        adn(a, b) {
            let c = this.adm.dq.an;
            if (this.gx(a, b, c)) {
                return true;
            }
            let d = this.adm.dr.an;
            if (this.gx(a, b, d)) {
                return true;
            }
            return false;
        }
        o5(a, b) {
            super.o5(a, b);
            let c = b;
            c.di();
        }
        aak(a, b) {
            super.aak(a, b);
            this.adg.a = typeCast(ISortingAxis_$type, this.xAxis) !== null ? true : false;
            let c = a.f;
            let d = this.getEffectiveViewport1(b);
            this.y2.a2(this, this.zm(), runOn(this, this.ym), this.zv(b), this.zw(b));
            let e = false;
            let f = this.y2.b;
            if (f != null) {
                e = true;
            }
            if (e) {
                let g = new ScalerParams(0, b.by, b.bx, this.acd.ch, d);
                this.aag(c, -1, this.valueColumn.count, this.acd, g, b.q, -1);
            }
            let h = typeCast(SplineAreaFragmentView.$, b);
            let i = b.cw.d;
            this.y2.ad(h.dq, true, false, true, true);
            this.y2.ad(h.dr, true, false, true, true);
            this.y2.ad(h.dn, false, true, false, false);
            this.y2.ad(h.dp, false, true, false, false);
            h.dn._opacity = this.y2.j * this.h9;
            h.dp._opacity = 0.5 * this.y2.j * this.h9;
            this.adg.i(h.dn, h.dq, h.dp, h.dr, a.f.count, a.f, true, i, this.id, (j, k, l, m, n) => this.adp(j, a.f, b), 1);
        }
        rt(a, b) {
            super.rt(a, b);
        }
        adp(a, b, c) {
            let d = this.aa9(c);
            let e = d;
            let f = this.logicalSeriesLink.az;
            let g = f ? this.parentSeries.aa1.e : this.parentSeries.aa1.d;
            let h = g.indexOf(this);
            if (a.count == 0) {
                return;
            }
            if (h == -1) {
                return;
            }
            let i = false;
            for (let j = h; j >= 0; j--) {
                if (i) {
                    break;
                }
                if (j == 0) {
                    a.add({ $type: Point_$type, x: a._inner[a.count - 1].x, y: e });
                    a.add({ $type: Point_$type, x: a._inner[0].x, y: e });
                    break;
                }
                let k = typeCast(SplineFragmentBase.$, g._inner[j - 1]);
                if (k != null && k.adg != null && k.adg.o.count > 0 && this.cv != null && k.he(this.cv.bx, this.cv.by, this.cv)) {
                    i = true;
                    for (let l = k.adg.o.count - 1; l >= 0; l--) {
                        a.add(k.adg.o._inner[l]);
                    }
                }
            }
        }
        aa9(a) {
            let b = 0;
            let c = a.by;
            let d = a.bx;
            let e = this.getEffectiveViewport1(a);
            let f = new ScalerParams(0, c, d, this.yAxis.ch, e);
            if (!c.isEmpty && !d.isEmpty && this.yAxis != null) {
                b = this.yAxis.el(0, f);
            }
            return b;
        }
        sd() {
            let a = (typeCast(XamDataChart.$, this.db));
            if (a != null) {
                this.h9 = isNaN_(this.ik) ? this.parentSeries.h9 : this.ik;
            }
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    SplineAreaFragment.$t = markType(SplineAreaFragment, 'SplineAreaFragment', SplineFragmentBase.$);
    return SplineAreaFragment;
})();
/**
 * @hidden
 */
export let SplineFragment = /*@__PURE__*/ (() => {
    class SplineFragment extends SplineFragmentBase {
        constructor() {
            super();
            this.ab = SplineFragment.$;
        }
        bj() {
            return new SplineFragment();
        }
        get_f0() {
            return true;
        }
        zo() {
            return true;
        }
        cs() {
            return new SplineFragmentView(this);
        }
        q1(a) {
            super.q1(a);
            this.adm = a;
        }
        ado(a, b) {
            let c = this.adm.dm.an;
            if (this.gy(a, c)) {
                return true;
            }
            return false;
        }
        get_ev() {
            return true;
        }
        gw(a, b) {
            if (this.adn(a, b)) {
                return true;
            }
            if (this.ado(a, b)) {
                return true;
            }
            if (this.xh(a, b)) {
                return true;
            }
            return false;
        }
        adn(a, b) {
            let c = this.adm.dn.an;
            if (this.gx(a, b, c)) {
                return true;
            }
            let d = this.adm.dp.an;
            if (this.gx(a, b, d)) {
                return true;
            }
            return false;
        }
        o5(a, b) {
            super.o5(a, b);
            let c = b;
            c.di();
        }
        aak(a, b) {
            super.aak(a, b);
            this.adg.a = typeCast(ISortingAxis_$type, this.xAxis) !== null ? true : false;
            let c = typeCast(SplineFragmentView.$, b);
            let d = a.f;
            let e = this.getEffectiveViewport1(b);
            this.y2.a2(this, this.zm(), runOn(this, this.ym), this.zv(b), this.zw(b));
            let f = false;
            let g = this.y2.b;
            if (g != null) {
                f = true;
            }
            if (f) {
                let h = new ScalerParams(0, b.by, b.bx, this.acd.ch, e);
                this.aag(d, -1, this.valueColumn.count, this.acd, h, b.q, -1);
            }
            this.y2.ad(c.dn, true, false, true, false);
            this.y2.ad(c.dp, true, false, true, false);
            this.y2.ad(c.dm, false, true, false, false);
            c.dm._opacity = 0.75 * this.y2.j;
            let i = c.cw.d;
            this.adg.m(c.dn, c.dm, c.dp, a.f.count, a.f, true, 1, this.aat(a.f, a.f.count - 1, b.bx, b.by), i, this.id);
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    SplineFragment.$t = markType(SplineFragment, 'SplineFragment', SplineFragmentBase.$);
    return SplineFragment;
})();
/**
 * @hidden
 */
export let SplineFragmentBaseValueList = /*@__PURE__*/ (() => {
    class SplineFragmentBaseValueList extends Base {
        constructor(a) {
            super();
            this.a = null;
            this.a = a;
        }
        indexOf(a) {
            throw new NotImplementedException(0);
        }
        insert(a, b) {
            throw new NotImplementedException(0);
        }
        removeAt(a) {
            throw new NotImplementedException(0);
        }
        item(a, b) {
            if (arguments.length === 2) {
                throw new NotImplementedException(0);
                return b;
            }
            else {
                let b = false;
                if (this.a.parentSeries != null) {
                    b = this.a.parentSeries.aa4;
                }
                let c = this.a.parentSeries;
                if (c == null) {
                    return NaN;
                }
                let d = this.a.valueColumn.item(a);
                let e = Math.abs(c.aat[a]) + c.aas[a];
                let f = this.a.logicalSeriesLink.a7;
                let g = this.a.logicalSeriesLink.a8;
                if (isNaN_(d) || isInfinity(d)) {
                    d = 0;
                }
                if (b) {
                    if (e == 0) {
                        d = 0;
                    }
                    else if (d < 0) {
                        d = (g._inner[a] + d) / e * 100;
                    }
                    else {
                        d = (f._inner[a] + d) / e * 100;
                    }
                }
                else {
                    d = d < 0 ? g._inner[a] + d : f._inner[a] + d;
                }
                return d;
            }
        }
        add(a) {
            throw new NotImplementedException(0);
        }
        clear() {
            throw new NotImplementedException(0);
        }
        contains(a) {
            throw new NotImplementedException(0);
        }
        copyTo(a, b) {
            throw new NotImplementedException(0);
        }
        get count() {
            return this.a.valueColumn.count;
        }
        get isReadOnly() {
            throw new NotImplementedException(0);
        }
        remove(a) {
            throw new NotImplementedException(0);
        }
        getEnumerator() {
            throw new NotImplementedException(0);
        }
        getEnumeratorObject() {
            return this.getEnumerator();
        }
    }
    SplineFragmentBaseValueList.$t = markType(SplineFragmentBaseValueList, 'SplineFragmentBaseValueList', Base.$, [IList$1_$type.specialize(Number_$type)]);
    return SplineFragmentBaseValueList;
})();
/**
 * @hidden
 */
export let StackedSeriesBase = /*@__PURE__*/ (() => {
    class StackedSeriesBase extends CategorySeries {
        constructor() {
            super();
            this._series = null;
            this.seriesCreated = null;
            this.abc = 0;
            this.abb = 0;
            this.aas = null;
            this.aat = null;
            this.aa0 = null;
            this.aax = null;
            this.aa7 = new Dictionary$2(String_$type, Boolean_$type, 0);
            this.aau = null;
            this.series = new StackedSeriesCollection();
            let a = this.series;
            a.collectionResetting = delegateCombine(a.collectionResetting, runOn(this, this.abo));
            let b = this.series;
            b.collectionChanged = delegateCombine(b.collectionChanged, runOn(this, this.abn));
            this.yz = new StackedSeriesFramePreparer(1, this, this.aa2, this, this, this.aa2.cw);
            this.aax = new StackedSeriesCollection();
            let c = this.aax;
            c.collectionChanged = delegateCombine(c.collectionChanged, runOn(this, this.abn));
            let d = this.aax;
            d.collectionResetting = delegateCombine(d.collectionResetting, runOn(this, this.abi));
        }
        qg() {
            for (let a of fromEnum(this.aaw)) {
                a.gw();
            }
            super.qg();
        }
        get_fe() {
            return false;
        }
        getHostReferenceValue() {
            return this.iy();
        }
        cs() {
            return new StackedSeriesView(this);
        }
        q1(a) {
            super.q1(a);
            this.aa2 = a;
        }
        q2(a, b) {
            super.q2(a, b);
            for (let c of fromEnum(this.series)) {
                c.visualSeriesLink.cv.bx = b;
            }
        }
        get series() {
            return this._series;
        }
        set series(a) {
            this._series = a;
        }
        kc() {
            if (this.series == null) {
                return -1;
            }
            return this.series.count;
        }
        p3(a) {
            for (let b = 0; b < this.aa1.f.count; b++) {
                let c = this.aa1.f._inner[b];
                if (!a(c)) {
                    break;
                }
            }
            super.p3(a);
        }
        get_isStacked() {
            return true;
        }
        get aa1() {
            if (this.aa0 == null) {
                this.aa0 = new StackedSeriesManager(this);
            }
            return this.aa0;
        }
        set aa1(a) {
            this.aa0 = a;
        }
        get aaw() {
            return this.aa3 ? this.aax : this.series;
        }
        abi(a, b) {
            for (let c of fromEnum(this.aax)) {
                if (this.aa1 != null && this.aa1.c.contains(c)) {
                    c.parentSeries = null;
                    this.aa1.c.remove(c);
                }
            }
        }
        abo(a, b) {
            for (let c of fromEnum(this.series)) {
                if (this.aa1 != null && this.aa1.c.contains(c)) {
                    c.parentSeries = null;
                    this.aa1.c.remove(c);
                }
            }
        }
        abn(a, b) {
            if (b.oldItems != null) {
                for (let c of fromEn(b.oldItems)) {
                    if (this.aa1 != null && this.aa1.c.contains(c)) {
                        c.parentSeries = null;
                        this.aa1.c.remove(c);
                    }
                }
            }
            if (b.newItems != null) {
                let d = b.newStartingIndex;
                for (let e of fromEn(b.newItems)) {
                    if (this.aa1 != null && !this.aa1.c.contains(e)) {
                        e.parentSeries = this;
                        e.gc();
                        e.g3();
                        e.g4();
                        e.hi();
                        e.g5();
                        e.g6();
                        e.f4();
                        e.f5();
                        e.gb();
                        e.ga();
                        e.f6();
                        e.gd();
                        e.gj();
                        e.gk();
                        e.gl();
                        e.gu();
                        e.gw();
                        e.go();
                        e.gr();
                        e.gt();
                        e.gu();
                        e.gv();
                        e.gs();
                        e.gp();
                        e.hg();
                        e.hk();
                        e.hj();
                        e.f7();
                        e.f8();
                        e.gx();
                        e.gy();
                        e.gz();
                        e.f9();
                        e.f3();
                        e.g1();
                        e.g2();
                        e.gm();
                        e.g7();
                        e.gn();
                        e.g9();
                        e.gq();
                        e.g0();
                        e.ha();
                        e.hb();
                        e.gf();
                        e.hf();
                        e.hc();
                        e.he();
                        e.hh();
                        e.hm();
                        if (!this.aa3) {
                            this.aa1.c.insert(d, e);
                            d++;
                        }
                    }
                }
            }
            if (!this.aa3) {
                this.abp();
            }
        }
        r6(a) {
            this.c9.c9.c8(a, true, false);
        }
        y0(a) {
            if (a != null && a.q) {
                if (a.p) {
                    return new StackedSeriesFramePreparer(1, typeCast(IIsCategoryBased_$type, this), typeCast(ISupportsMarkers_$type, a), a, this, a.cw);
                }
                else {
                    let b = typeCast(CategorySeriesView.$, this.cu);
                    return new StackedSeriesFramePreparer(1, this, typeCast(ISupportsMarkers_$type, b), this.db.c9.o, this, b.cw);
                }
            }
            else {
                return this.yz;
            }
        }
        aah(a, b) {
            a.v();
            this.abl();
            this.y0(b).d(a, b);
        }
        rs(a) {
            super.rs(a);
            this.aa1.i(a);
        }
        get_gt() {
            return false;
        }
        o5(a, b) {
            super.o5(a, b);
            for (let c of fromEnum(this.aaw)) {
                if (c.visualSeriesLink != null) {
                    c.visualSeriesLink.o5(a, c.visualSeriesLink.cv);
                }
            }
        }
        abj() {
            this.abl();
        }
        abp() {
            let a = this.fetchXAxis();
            if (a != null) {
                a.c2(true);
            }
            let b = this.fetchYAxis();
            if (b != null) {
                b.c2(true);
            }
        }
        get_aa4() {
            return false;
        }
        get aa4() {
            return this.get_aa4();
        }
        gd(a) {
            let b = this.dn != null ? this.dn.indexOf(a) : -1;
            let c = this.db != null ? this.db.v4 : Rect.empty;
            c = c.copy();
            let d = this.cv.bx;
            let e = new Rect(0, 0, 0, 1, 1);
            let f = this.wl(this.cv);
            if (b >= 0 && Rect.l_op_Inequality(c, null) && Rect.l_op_Inequality(d, null)) {
                let g = this.fetchXAxis();
                if (g != null) {
                    let h = new ScalerParams(0, e, e, g.ch, f);
                    let i = g.el(b, h);
                    if (i < c.left + 0.1 * c.width) {
                        i = i + 0.4 * c.width;
                    }
                    if (i > c.right - 0.1 * c.width) {
                        i = i - 0.4 * c.width;
                    }
                    c.x = i - 0.5 * c.width;
                }
                let j = this.fetchYAxis();
                if (j != null && this.aas != null && b < this.aas.length) {
                    let k = new ScalerParams(0, e, e, j.ch, f);
                    let l = j.el(this.aas[b], k);
                    let m = j.el(this.aat[b], k);
                    if (!isNaN_(l) && !isNaN_(m)) {
                        let n = Math.abs(m - l);
                        if (c.height < n) {
                            c.height = n;
                            c.y = Math.min(m, l);
                        }
                        else {
                            if (m < c.top + 0.1 * c.height) {
                                m = m + 0.4 * c.height;
                            }
                            if (m > c.bottom - 0.1 * c.height) {
                                m = m - 0.4 * c.height;
                            }
                            c.y = m - 0.5 * c.height;
                        }
                    }
                }
                this.c3.au(this.db, c, true);
            }
            return b >= 0;
        }
        ay(a) {
            if (this.aat == null || this.aat.length == 0 || this.aas == null || this.aas.length == 0) {
                return null;
            }
            if (a == this.fetchXAxis()) {
                let b = Math.min(this.aat.length, this.aas.length);
                return new AxisRange(0, b - 1);
            }
            if (a == this.fetchYAxis()) {
                return new AxisRange(this.abc, this.abb);
            }
            return null;
        }
        xg() {
            return false;
        }
        pb(a, b, c, d) {
            this.abl();
            this.zp();
            this.rr(true);
        }
        aav() {
            return this.aa2;
        }
        aa8() {
            let a = 0;
            let b = this.cv.by;
            let c = this.cv.bx;
            let d = this.getEffectiveViewport1(this.cv);
            let e = typeCast(NumericYAxis.$, this.fetchYAxis());
            if (!b.isEmpty && !c.isEmpty && e != null) {
                let f = new ScalerParams(0, b, c, e.ch, d);
                a = e.el(e.me, f);
            }
            return a;
        }
        aa9() {
            let a = typeCast(NumericYAxis.$, this.fetchYAxis());
            if (a != null) {
                return a.me;
            }
            return 0;
        }
        abe(a) {
            return this.index < 0 || this.aaw == null || this.aaw.count == 0 ? -1 : this.index + this.aaw.indexOf(a);
        }
        abd(a) {
            let b = this.db != null ? this.db.v4 : Rect.empty;
            let c = this.cv.bx;
            let d = this.getEffectiveViewport1(this.cv);
            let e = typeCast(CategoryAxisBase.$, this.fetchXAxis());
            let f = -1;
            if (e != null && !b.isEmpty && !c.isEmpty) {
                let g = new ScalerParams(0, b, c, e.ch, d);
                let h = this.wj(this.cv);
                let i = e.eo(h.left, g);
                let j = e.eo(h.right, g);
                let k = (a.x - b.left) / b.width;
                let l = i + (k * (j - i));
                if (e.categoryMode != 0) {
                    l -= 0.5;
                }
                let m = truncate(Math.round(l));
                f = m;
            }
            return f;
        }
        aa6(a, b, c, d) {
            let e = true;
            let f = typeCast(CategoryAxisBase.$, this.fetchXAxis());
            let g = typeCast(NumericYAxis.$, this.fetchYAxis());
            if (!d.o() || c.isEmpty || b.isEmpty || f == null || f.itemsSource == null || g == null || this.dn == null || f.bi == null || g.bi == null || g.l4 == g.l3) {
                e = false;
            }
            let h = d;
            let i = h.cw.d;
            if (a.valueColumn == null || a.valueColumn.count == 0 || i < 1 || a._visibility != 0) {
                e = false;
            }
            return e;
        }
        abk() {
            if (this.db == null || this.aa1 == null) {
                return;
            }
            if (!this.aa3) {
                this.aax.clear();
                for (let a of fromEnum(this.series)) {
                    if (!this.aa1.c.contains(a)) {
                        this.aa1.c.add(a);
                    }
                }
                this.abp();
                return;
            }
        }
        aak(a, b) {
            super.aak(a, b);
        }
        abm(a, b, c, d) {
        }
        az(a) {
            if (a.isEmpty && this.db != null) {
                a = this.db.v4;
            }
            let b = this.ys();
            if (this.aas == null || this.aat == null) {
                return null;
            }
            let c = this.wj(this.cv);
            let d = new ScalerParams(0, a, this.db.wk, b.ch, this.getEffectiveViewport());
            let e = (b.eo(c.left, d));
            let f = (b.eo(c.right, d));
            if (b.ch) {
                let g = e;
                e = f;
                f = g;
            }
            let h = null;
            if (b.cn) {
                h = b;
                e = h.i$f(e);
                f = h.i$f(f);
            }
            else {
                e = Math.floor(e);
                f = Math.ceil(f);
            }
            e = Math.max(0, Math.min(this.aat.length - 1, e));
            f = Math.max(0, Math.min(this.aat.length - 1, f));
            let i = 1.7976931348623157E+308;
            let j = -1.7976931348623157E+308;
            for (let k = truncate(e); k <= truncate(f); k++) {
                let l = k;
                if (h != null) {
                    l = h.i$b._inner[k];
                }
                let m = this.aat[l];
                {
                    if (isInfinity(m) || isNaN_(m)) {
                        continue;
                    }
                }
                let n = this.aas[l];
                {
                    if (isInfinity(n) || isNaN_(n)) {
                        continue;
                    }
                }
                i = Math.min(i, m);
                j = Math.max(j, n);
            }
            let o = new AxisRange(i, j);
            let p = this.y9();
            o = this.ax(o, p, a);
            return o;
        }
        rv() {
            super.rv();
            for (let a of fromEnum(this.aaw)) {
                a.f1();
            }
        }
        abl() {
            if (this.dn == null) {
                return;
            }
            let a = this.dn.count;
            this.aas = new Array(a);
            this.aat = new Array(a);
            for (let b = 0; b < a; b++) {
                this.aas[b] = 0;
                this.aat[b] = 0;
            }
            this.abc = Number.POSITIVE_INFINITY;
            this.abb = Number.NEGATIVE_INFINITY;
            let c = 0;
            for (let d of fromEnum(this.aaw)) {
                if (d.itemsSource != null && d.visualSeriesLink == null) {
                    continue;
                }
                if (d.itemsSource != null) {
                    d.ak = d.visualSeriesLink.valueColumn;
                }
                if (d.itemsSource == null) {
                    this.dn.deregisterColumn(d.ak);
                    d.ak = this.dk(d.ft);
                }
                if (d.visualSeriesLink != null && d.itemsSource == null) {
                    d.visualSeriesLink.aa6 = true;
                    d.visualSeriesLink.valueColumn = d.ak;
                    d.visualSeriesLink.aa6 = false;
                }
                d.az = true;
                if (d.ak != null) {
                    d.a7.clear();
                    d.a8.clear();
                    for (let e = 0; e < d.ak.count; e++) {
                        let f = d.ak.item(e);
                        if (f < c) {
                            d.a7.add(c);
                            d.a8.add(this.aat[e]);
                            this.aat[e] = this.aat[e] + f;
                            if (d.az) {
                                d.az = false;
                            }
                        }
                        else if (f >= c) {
                            d.a7.add(this.aas[e]);
                            d.a8.add(c);
                            this.aas[e] = this.aas[e] + f;
                        }
                        else if (isNaN_(f) || isInfinity(f)) {
                            d.a7.add(this.aas[e]);
                            d.a8.add(this.aat[e]);
                        }
                    }
                }
            }
            for (let g = 0; g < a; g++) {
                this.abc = Math.min(this.abc, this.aat[g]);
                this.abb = Math.max(this.abb, this.aas[g]);
            }
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
            switch (b) {
                case "SeriesViewer":
                    if (c != null && d == null) {
                        this.pc(this.fetchXAxis());
                        this.pc(this.fetchYAxis());
                    }
                    if (c == null && d != null) {
                        this.rh(this.fetchXAxis());
                        this.rh(this.fetchYAxis());
                    }
                    if (this.aaw != null) {
                        for (let e of fromEnum(this.aaw)) {
                            e.af = this.db;
                            if (e.visualSeriesLink != null) {
                                e.visualSeriesLink.db = this.db;
                            }
                        }
                        this.rr(false);
                    }
                    break;
                case "ItemsSource":
                    if (this.aaw != null) {
                        for (let f of fromEnum(this.aaw)) {
                            if (f.itemsSource == null) {
                                if (f.visualSeriesLink != null) {
                                    f.visualSeriesLink.itemsSource = d;
                                }
                            }
                        }
                    }
                    break;
                case "HighlightedItemsSource":
                    if (this.aaw != null) {
                        for (let g of fromEnum(this.aaw)) {
                            if (g.highlightedItemsSource == null) {
                                if (g.visualSeriesLink != null) {
                                    g.visualSeriesLink.highlightedItemsSource = d;
                                }
                            }
                        }
                    }
                    break;
                case "FastItemsSource":
                    if (this.aa3) {
                        this.abk();
                    }
                    if (!this.zp()) {
                        this.aa2.cw.g(this.id);
                    }
                    this.rr(this.gg && c != null);
                    break;
                case StackedSeriesBase.$$p[0]:
                    this.abk();
                    break;
                case StackedSeriesBase.$$p[1]:
                    if (this.db != null) {
                        this.db.pf(this.aa1.f);
                    }
                    break;
                case StackedSeriesBase.$$p[2]:
                    for (let h of fromEnum(this.aaw)) {
                        h.hm();
                    }
                    break;
                case "Brush":
                    for (let i of fromEnum(this.aaw)) {
                        i.f4();
                    }
                    break;
                case "DashArray":
                    for (let j of fromEnum(this.aaw)) {
                        j.f5();
                    }
                    break;
                case "HighlightingFadeOpacity":
                    for (let k of fromEnum(this.aaw)) {
                        k.gb();
                    }
                    break;
                case "HighlightedValuesDisplayMode":
                    for (let l of fromEnum(this.aaw)) {
                        l.ga();
                    }
                    break;
                case "DashCap":
                    for (let m of fromEnum(this.aaw)) {
                        m.f6();
                    }
                    break;
                case "IsDropShadowEnabled":
                    for (let n of fromEnum(this.aaw)) {
                        n.gc();
                    }
                    break;
                case "ShadowBlur":
                    for (let o of fromEnum(this.aaw)) {
                        o.g3();
                    }
                    break;
                case "ShadowColor":
                    for (let p of fromEnum(this.aaw)) {
                        p.g4();
                    }
                    break;
                case "UseSingleShadow":
                    for (let q of fromEnum(this.aaw)) {
                        q.hi();
                    }
                    break;
                case "ShadowOffsetX":
                    for (let r of fromEnum(this.aaw)) {
                        r.g5();
                    }
                    break;
                case "ShadowOffsetY":
                    for (let s of fromEnum(this.aaw)) {
                        s.g6();
                    }
                    break;
                case "IsHitTestVisible":
                    for (let t of fromEnum(this.aaw)) {
                        t.gd();
                    }
                    break;
                case "LegendItemBadgeTemplate":
                    for (let u of fromEnum(this.aaw)) {
                        u.gj();
                    }
                    break;
                case "LegendItemTemplate":
                    for (let v of fromEnum(this.aaw)) {
                        v.gk();
                    }
                    break;
                case "LegendItemVisibility":
                    for (let w of fromEnum(this.aaw)) {
                        w.gl();
                    }
                    break;
                case "LegendItemBadgeShape":
                    for (let x of fromEnum(this.aaw)) {
                        x.gi();
                    }
                    break;
                case "LegendItemBadgeMode":
                    for (let y of fromEnum(this.aaw)) {
                        y.gh();
                    }
                    break;
                case "MarkerTemplate":
                    for (let z of fromEnum(this.aaw)) {
                        z.gu();
                    }
                    break;
                case "MarkerType":
                    for (let aa of fromEnum(this.aaw)) {
                        aa.gw();
                    }
                    break;
                case "MarkerThickness":
                    for (let ab of fromEnum(this.aaw)) {
                        ab.gv();
                    }
                    break;
                case "MarkerBrush":
                    for (let ac of fromEnum(this.aaw)) {
                        ac.go();
                    }
                    break;
                case "MarkerOutline":
                    for (let ad of fromEnum(this.aaw)) {
                        ad.gr();
                    }
                    break;
                case "MarkerOutlineMode":
                    for (let ae of fromEnum(this.aaw)) {
                        ae.gs();
                    }
                    break;
                case "MarkerFillMode":
                    for (let af of fromEnum(this.aaw)) {
                        af.gp();
                    }
                    break;
                case "MarkerStyle":
                    for (let ag of fromEnum(this.aaw)) {
                        ag.gt();
                    }
                    break;
                case "Opacity":
                    for (let ah of fromEnum(this.aaw)) {
                        ah.gx();
                    }
                    break;
                case "OpacityMask":
                    for (let ai of fromEnum(this.aaw)) {
                        ai.gy();
                    }
                    break;
                case "AreaFillOpacity":
                    for (let aj of fromEnum(this.aaw)) {
                        aj.f3();
                    }
                    break;
                case "Outline":
                    for (let ak of fromEnum(this.aaw)) {
                        ak.gz();
                    }
                    break;
                case "LineCap":
                    for (let al of fromEnum(this.aaw)) {
                        al.gm();
                    }
                    break;
                case "OutlineMode":
                    for (let am of fromEnum(this.aaw)) {
                        am.g0();
                    }
                    break;
                case "MarkerFillOpacity":
                    for (let an of fromEnum(this.aaw)) {
                        an.gq();
                    }
                    break;
                case "Thickness":
                    for (let ao of fromEnum(this.aaw)) {
                        ao.g7();
                    }
                    break;
                case "LineJoin":
                    for (let ap of fromEnum(this.aaw)) {
                        ap.gn();
                    }
                    break;
                case "ToolTip":
                    for (let aq of fromEnum(this.aaw)) {
                        aq.g9();
                    }
                    break;
                case "TransitionEasingFunction":
                    for (let ar of fromEnum(this.aaw)) {
                        ar.hb();
                    }
                    break;
                case "TransitionDuration":
                    for (let as of fromEnum(this.aaw)) {
                        as.ha();
                    }
                    break;
                case "IsTransitionInEnabled":
                    for (let at of fromEnum(this.aaw)) {
                        at.gf();
                    }
                    break;
                case "TransitionInMode":
                    for (let au of fromEnum(this.aaw)) {
                        au.he();
                    }
                    break;
                case "TransitionInDuration":
                    for (let av of fromEnum(this.aaw)) {
                        av.gf();
                    }
                    break;
                case "TransitionInSpeedType":
                    for (let aw of fromEnum(this.aaw)) {
                        aw.gf();
                    }
                    break;
                case "TransitionInEasingFunction":
                    for (let ax of fromEnum(this.aaw)) {
                        ax.hd();
                    }
                    break;
                case "UseLightweightMarkers":
                    for (let ay of fromEnum(this.aaw)) {
                        ay.hh();
                    }
                    break;
                case "UseHighMarkerFidelity":
                    for (let az of fromEnum(this.aaw)) {
                        az.hg();
                    }
                    break;
            }
        }
        get currentCategoryMode() {
            return this.preferredCategoryMode(typeCast(CategoryAxisBase.$, this.ys()));
        }
        get scaler() {
            return typeCast(ICategoryScaler_$type, this.ys());
        }
        get yScaler() {
            return typeCast(IScaler_$type, this.y9());
        }
        get bucketizer() {
            return this.y3.cw;
        }
        get currentMode2Index() {
            return this.zy();
        }
        provideCollisionDetector() {
            return new CollisionAvoider();
        }
        gn() {
            return false;
        }
        get_e5() {
            return false;
        }
        rt(a, b) {
            let c = this.g0;
            super.rt(a, b);
            if (!c) {
                this.cv.a4(b);
                return;
            }
            this.cv.a4(b);
            if (this.d5(this.cu)) {
                return;
            }
            for (let d of fromEnum(this.series)) {
                d.visualSeriesLink.rt(a, b);
            }
            this.g0 = false;
        }
        rq(a, b, c, d, e) {
            super.rq(a, b, c, d, e);
            let f = this.ba.a$j.item(d);
            f.cw.g(this.id);
            f.a3(c);
            if (this.d5(f)) {
                return;
            }
            if (this.aau == null) {
                this.aau = new CategoryFrame(3);
            }
            this.aau.v();
            this.abl();
            this.y0(f).d(this.aau, f);
            this.aak(this.aau, f);
            for (let g of fromEnum(this.series)) {
                g.visualSeriesLink.rq(a, b, c, d, e);
            }
        }
        aad(a, b, c, d, e, f, g) {
            for (let h = c; h <= d; h++) {
                let i = 0;
                for (let j = 0; j < this.series.count; j++) {
                    let k = i + this.aba(j, h);
                    let l = a == 1 ? i : k;
                    if (l < f && e < k) {
                        if (g == 7 || g == 6) {
                            b.add(((() => {
                                let $ret = new ChartSelection();
                                $ret.series = this.series._inner[j].visualSeriesLink;
                                return $ret;
                            })()));
                        }
                        else if (g == 2 || g == 1) {
                            b.add(((() => {
                                let $ret = new ChartSelection();
                                $ret.item = this.dn.item(h);
                                return $ret;
                            })()));
                        }
                        else {
                            b.add(((() => {
                                let $ret = new ChartSelection();
                                $ret.item = this.dn.item(h);
                                $ret.series = this.series._inner[j].visualSeriesLink;
                                return $ret;
                            })()));
                        }
                    }
                    i = k;
                }
            }
        }
        aba(a, b) {
            let c = this.series._inner[a];
            return c.ak.item(b);
        }
        z7(a, b, c) {
            for (let d = 0; d < this.series.count; d++) {
                if (c == 2 || c == 1) {
                    a.add(((() => {
                        let $ret = new ChartSelection();
                        $ret.item = this.dn.item(b);
                        return $ret;
                    })()));
                }
                else {
                    a.add(((() => {
                        let $ret = new ChartSelection();
                        $ret.item = this.dn.item(b);
                        $ret.series = this.series._inner[d].visualSeriesLink;
                        return $ret;
                    })()));
                }
            }
        }
        km() {
            let a = this.bc.exportStackedVisualData(this, this.ws);
            for (let b of fromEnum(this.series)) {
                let c = this.bc.createFragmentVisualData(this, this.ws, getInstanceType(b).typeName, b.e0);
                b.visualSeriesLink.cv.an(c);
                this.bc.addSubSeriesVisualData(a, c);
                for (let d of fromEnum(b.visualSeriesLink.actualLayers)) {
                    let e = this.bc.createFragmentVisualData(this, this.ws, getInstanceType(d.target).typeName, d.target.name);
                    d.target.cv.an(e);
                    this.bc.addSubSeriesLayerVisualData(c, e);
                }
            }
            this.pz(a);
            this.cv.an(a);
            return a;
        }
        get mayContainUnknowns() {
            return true;
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    StackedSeriesBase.$t = markType(StackedSeriesBase, 'StackedSeriesBase', CategorySeries.$, [IIsCategoryBased_$type]);
    StackedSeriesBase.$$p = markDep(DependencyProperty, PropertyMetadata, StackedSeriesBase, 'raisePropertyChanged', ['AutoGenerateSeries:aa3:abq', [0, false], 'ReverseLegendOrder:aa5:abr', [0, false], 'SeriesVisibility:abt:abs', [Visibility_$type, enumGetBox(Visibility_$type, 0)]]);
    return StackedSeriesBase;
})();
/**
 * @hidden
 */
export let HorizontalStackedSeriesBase = /*@__PURE__*/ (() => {
    class HorizontalStackedSeriesBase extends StackedSeriesBase {
        get_ek() {
            return true;
        }
        get_f5() {
            return this.y9() != null && this.y9().ch;
        }
        o2() {
            super.o2();
            this.xAxis = null;
            this.yAxis = null;
            this.aa1.g();
        }
        ck() {
            return 1;
        }
        cl() {
            if (this.yAxis != null && this.yAxis.ch) {
                return 4;
            }
            return 3;
        }
        getOffsetValue() {
            return this.yz.r(this.xAxis, this.cv.by, this.cv.bx, this.getEffectiveViewport1(this.cv));
        }
        getCategoryWidth() {
            return this.xAxis.getCategorySize(this.cv.by, this.cv.bx, this.getEffectiveViewport1(this.cv));
        }
        fetchXAxis() {
            return this.xAxis;
        }
        fetchYAxis() {
            return this.yAxis;
        }
        ai() {
            return [this.fetchXAxis(), this.fetchYAxis()];
        }
        zp() {
            return this.yAxis != null && this.yAxis.c1();
        }
        sd() {
            let a = (typeCast(XamDataChart.$, this.db));
            if (a != null) {
                this.h9 = isNaN_(this.ik) ? a.w5.fp : this.ik;
                for (let b of fromEnum(this.aaw)) {
                    b.f3();
                }
            }
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
            switch (b) {
                case "Resolution":
                    this.aa1.k();
                    break;
                case HorizontalStackedSeriesBase.$$p[0]:
                    if (c != d) {
                        this.pc(typeCast(Axis.$, c));
                        this.rh(typeCast(Axis.$, d));
                        this.y3.cw.g(this.id);
                        this.rr(false);
                        this.ql();
                    }
                    break;
                case HorizontalStackedSeriesBase.$$p[1]:
                    if (c != d) {
                        this.pc(typeCast(Axis.$, c));
                        this.rh(typeCast(Axis.$, d));
                        this.y3.cw.g(this.id);
                        if (this.db != null) {
                            this.db.n2();
                        }
                        this.zp();
                        this.rr(false);
                        this.ql();
                    }
                    break;
            }
        }
        abx(a) {
            if (typeCast(NumericYAxis.$, a) !== null) {
                return true;
            }
            return false;
        }
        abw(a) {
            if (typeCast(CategoryXAxis.$, a) !== null || a.ce) {
                return true;
            }
            return false;
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    HorizontalStackedSeriesBase.$t = markType(HorizontalStackedSeriesBase, 'HorizontalStackedSeriesBase', StackedSeriesBase.$);
    HorizontalStackedSeriesBase.$$p = markDep(DependencyProperty, PropertyMetadata, HorizontalStackedSeriesBase, 'raisePropertyChanged', ['XAxis::ab0', [CategoryAxisBase.$, null], 'YAxis::ab1', [NumericYAxis.$, null]]);
    return HorizontalStackedSeriesBase;
})();
/**
 * @hidden
 */
export let StackedAreaSeries = /*@__PURE__*/ (() => {
    class StackedAreaSeries extends HorizontalStackedSeriesBase {
        constructor() {
            super();
            this.ab = StackedAreaSeries.$;
        }
        bj() {
            return new StackedAreaSeries();
        }
        get_eu() {
            return true;
        }
        ac() {
            super.ac();
            this.rr(false);
        }
        cs() {
            return new StackedAreaSeriesView(this);
        }
        q1(a) {
            super.q1(a);
            this.ab2 = a;
        }
        ay(a) {
            if (this.itemsSource == null) {
                return null;
            }
            if (a == this.xAxis) {
                return new AxisRange(0, this.dn.count - 1);
            }
            if (a == this.yAxis) {
                this.abl();
                return new AxisRange(this.abc, this.abb);
            }
            return null;
        }
        preferredCategoryMode(a) {
            return 0;
        }
        ak(a, b) {
            let c = new List$1(ChartSelection.$, 0);
            this.p4(a, c, b);
            return c.toArray();
        }
        p4(a, b, c) {
            this.aac(a, b, c, this.yt, 0);
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    StackedAreaSeries.$t = markType(StackedAreaSeries, 'StackedAreaSeries', HorizontalStackedSeriesBase.$);
    return StackedAreaSeries;
})();
/**
 * @hidden
 */
export let VerticalStackedSeriesBase = /*@__PURE__*/ (() => {
    class VerticalStackedSeriesBase extends StackedSeriesBase {
        ys() {
            return this.yAxis;
        }
        y9() {
            return this.xAxis;
        }
        o2() {
            super.o2();
            this.xAxis = null;
            this.yAxis = null;
            this.aa1.g();
        }
        ck() {
            if (this.xAxis != null && this.xAxis.ch) {
                return 4;
            }
            return 3;
        }
        cl() {
            return 1;
        }
        az(a) {
            if (a.isEmpty && this.db != null) {
                a = this.db.v4;
            }
            let b = this.ys();
            if (this.aas == null || this.aat == null) {
                return null;
            }
            let c = this.wj(this.cv);
            let d = new ScalerParams(0, a, this.db.wk, b.ch, this.getEffectiveViewport());
            let e = (b.eo(c.top, d));
            let f = (b.eo(c.bottom, d));
            if (!b.ch) {
                let g = e;
                e = f;
                f = g;
            }
            let h = null;
            if (b.cn) {
                h = b;
                e = h.i$f(e);
                f = h.i$f(f);
            }
            else {
                e = Math.floor(e);
                f = Math.ceil(f);
            }
            e = Math.max(0, Math.min(this.aat.length - 1, e));
            f = Math.max(0, Math.min(this.aat.length - 1, f));
            let i = 1.7976931348623157E+308;
            let j = -1.7976931348623157E+308;
            for (let k = truncate(e); k <= truncate(f); k++) {
                let l = k;
                if (h != null) {
                    l = h.i$b._inner[k];
                }
                let m = this.aat[l];
                {
                    if (isInfinity(m) || isNaN_(m)) {
                        continue;
                    }
                }
                let n = this.aas[l];
                {
                    if (isInfinity(n) || isNaN_(n)) {
                        continue;
                    }
                }
                i = Math.min(i, m);
                j = Math.max(j, n);
            }
            let o = new AxisRange(i, j);
            let p = this.y9();
            o = this.ax(o, p, a);
            return o;
        }
        getOffsetValue() {
            return this.yz.r(this.yAxis, this.cv.by, this.cv.bx, this.getEffectiveViewport1(this.cv));
        }
        getCategoryWidth() {
            return this.yAxis.getCategorySize(this.cv.by, this.cv.bx, this.getEffectiveViewport1(this.cv));
        }
        get_isVertical() {
            return true;
        }
        fetchXAxis() {
            return this.xAxis;
        }
        fetchYAxis() {
            return this.yAxis;
        }
        zp() {
            return this.xAxis != null && this.xAxis.c1();
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
            switch (b) {
                case VerticalStackedSeriesBase.$$p[0]:
                    if (c != d) {
                        this.pc(typeCast(Axis.$, c));
                        this.rh(typeCast(Axis.$, d));
                        this.y3.cw.g(this.id);
                        if (this.db != null) {
                            this.db.n2();
                        }
                        this.rr(false);
                        this.ql();
                    }
                    break;
                case VerticalStackedSeriesBase.$$p[1]:
                    if (c != d) {
                        this.pc(typeCast(Axis.$, c));
                        this.rh(typeCast(Axis.$, d));
                        this.y3.cw.g(this.id);
                        this.zp();
                        this.rr(false);
                        this.ql();
                    }
                    break;
            }
        }
        abx(a) {
            if (typeCast(CategoryYAxis.$, a) !== null) {
                return true;
            }
            return false;
        }
        abw(a) {
            if (typeCast(NumericXAxis.$, a) !== null) {
                return true;
            }
            return false;
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    VerticalStackedSeriesBase.$t = markType(VerticalStackedSeriesBase, 'VerticalStackedSeriesBase', StackedSeriesBase.$);
    VerticalStackedSeriesBase.$$p = markDep(DependencyProperty, PropertyMetadata, VerticalStackedSeriesBase, 'raisePropertyChanged', ['XAxis::ab0', [NumericXAxis.$, null], 'YAxis::ab1', [CategoryYAxis.$, null]]);
    return VerticalStackedSeriesBase;
})();
/**
 * @hidden
 */
export let StackedBarSeries = /*@__PURE__*/ (() => {
    class StackedBarSeries extends VerticalStackedSeriesBase {
        constructor() {
            super();
            this.ab = StackedBarSeries.$;
        }
        bj() {
            return new StackedBarSeries();
        }
        get_ex() {
            return true;
        }
        get_fl() {
            return true;
        }
        jk() {
            if (!isNaN_(this.jj)) {
                return super.jk();
            }
            return Defaults.h;
        }
        ac() {
            super.ac();
            this.rr(false);
        }
        cs() {
            return new StackedBarSeriesView(this);
        }
        q1(a) {
            super.q1(a);
            this.ab2 = a;
        }
        aav() {
            return this.ab2;
        }
        preferredCategoryMode(a) {
            return 2;
        }
        zy() {
            let a = 0;
            for (let b of fromEnum(this.db.series)) {
                if (b == this) {
                    return a;
                }
                let c = typeCast(IBarSeries_$type, b);
                if (c != null && c.yAxis == this.yAxis && c.getPreferredCategoryMode() == 2) {
                    a++;
                }
            }
            return -1;
        }
        aa8() {
            let a = 0;
            let b = this.db != null ? this.db.v4 : Rect.empty;
            let c = this.cv.bx;
            if (!b.isEmpty && !c.isEmpty && this.xAxis != null) {
                let d = this.getEffectiveViewport1(this.cv);
                let e = new ScalerParams(0, b, c, this.xAxis.ch, d);
                a = this.xAxis.el(this.xAxis.me, e);
            }
            return a;
        }
        aa9() {
            if (this.xAxis != null) {
                return this.xAxis.me;
            }
            return 0;
        }
        ay(a) {
            if (this.itemsSource == null) {
                return null;
            }
            if (a == this.yAxis) {
                return new AxisRange(0, this.dn.count - 1);
            }
            if (a == this.xAxis) {
                this.abl();
                return new AxisRange(this.abc, this.abb);
            }
            return null;
        }
        gd(a) {
            let b = this.dn != null ? this.dn.indexOf(a) : -1;
            let c = this.db != null ? this.db.v4 : Rect.empty;
            c = c.copy();
            let d = this.cv.bx;
            let e = new Rect(0, 0, 0, 1, 1);
            let f = this.wl(this.cv);
            let g = new ScalerParams(0, e, e, this.xAxis.ch, f);
            let h = new ScalerParams(0, e, e, this.yAxis.ch, f);
            if (b >= 0 && Rect.l_op_Inequality(c, null) && Rect.l_op_Inequality(d, null)) {
                if (this.yAxis != null) {
                    let i = this.yAxis.el(b, h);
                    if (i < c.top + 0.1 * c.height) {
                        i = i + 0.4 * c.height;
                    }
                    if (i > c.bottom - 0.1 * c.height) {
                        i = i - 0.4 * c.height;
                    }
                    c.y = i - 0.5 * c.height;
                }
                if (this.xAxis != null && this.aas != null && b < this.aas.length) {
                    let j = this.xAxis.el(this.aas[b], g);
                    let k = this.xAxis.el(this.aat[b], g);
                    if (!isNaN_(j) && !isNaN_(k)) {
                        let l = Math.abs(k - j);
                        if (c.width < l) {
                            c.width = l;
                            c.x = Math.min(k, j);
                        }
                        else {
                            if (k < c.left + 0.1 * c.width) {
                                k = k + 0.4 * c.width;
                            }
                            if (k > c.right - 0.1 * c.width) {
                                k = k - 0.4 * c.width;
                            }
                            c.x = k - 0.5 * c.width;
                        }
                    }
                }
                this.c3.au(this.db, c, true);
            }
            return b >= 0;
        }
        he(a, b, c) {
            let d = true;
            let e = c;
            if (!c.o() || b.isEmpty || a.isEmpty || this.yAxis == null || this.yAxis.itemsSource == null || this.xAxis == null || this.dn == null || this.xAxis.bi == null || this.yAxis.bi == null || this.xAxis.l4 == this.xAxis.l3) {
                e.cw.d = 0;
                d = false;
            }
            return d;
        }
        pb(a, b, c, d) {
            switch (a) {
                case 4:
                case 1:
                case 0:
                    this.y3.cw.g(this.id);
                    break;
            }
            switch (a) {
                case 4:
                    if (this.xAxis != null && !this.xAxis.c1()) {
                        this.rr(true);
                    }
                    break;
                case 1:
                    if (this.xAxis != null && !this.xAxis.c1()) {
                        this.rr(true);
                    }
                    break;
                case 0:
                    if (this.xAxis != null && !this.xAxis.c1()) {
                        this.rr(true);
                    }
                    break;
                case 2:
                    if (this.y3.cw.d > 0) {
                        this.rr(true);
                    }
                    break;
                case 3:
                    if (this.xAxis != null && !this.xAxis.c1()) {
                        this.rr(true);
                    }
                    break;
            }
        }
        j3(a) {
            let b = this.db != null ? this.db.v4 : Rect.empty;
            let c = this.cv.bx;
            let d = this.getEffectiveViewport1(this.cv);
            let e = -1;
            if (this.yAxis != null && !b.isEmpty && !c.isEmpty) {
                let f = new ScalerParams(0, b, c, this.yAxis.ch, d);
                let g = this.wj(this.cv);
                let h = this.yAxis.eo(g.top, f);
                let i = this.yAxis.eo(g.bottom, f);
                let j = (a.y - b.top) / b.height;
                let k = h + (j * (i - h));
                if (this.yAxis.categoryMode != 0) {
                    k -= 0.5;
                }
                let l = truncate(Math.round(k));
                e = l;
            }
            return e;
        }
        kn(a) {
            let b = this.j3(a);
            return b >= 0 && this.dn != null && b < this.dn.count ? this.dn.item(b) : null;
        }
        abp() {
            if (this.xAxis != null) {
                this.xAxis.c2(true);
            }
            if (this.yAxis != null) {
                this.yAxis.c2(true);
            }
        }
        abd(a) {
            return this.j3(a);
        }
        aa6(a, b, c, d) {
            let e = true;
            if (!d.o() || c.isEmpty || b.isEmpty || this.yAxis == null || this.yAxis.itemsSource == null || this.xAxis == null || this.dn == null || this.xAxis.bi == null || this.yAxis.bi == null) {
                e = false;
            }
            let f = d;
            if (a.valueColumn == null || a.valueColumn.count == 0 || f.cw.d < 1) {
                e = false;
            }
            return e;
        }
        iw() {
            return this.yAxis.k8(this.cv.by, this.cv.bx, this.getEffectiveViewport1(this.cv));
        }
        abm(a, b, c, d) {
            let e = typeCast(BarFragment.$, a);
            let f = typeCast(ColumnFragmentView.$, c);
            if (!this.he(c.bx, c.by, c) || e == null || f == null) {
                return;
            }
            let g = this.yAxis.k8(c.by, c.bx, this.getEffectiveViewport1(c));
            if (isNaN_(g) || isInfinity(g)) {
                e.ac8.dg.count = 0;
                return;
            }
            let h = 0;
            e.y2.a2(e, e.zm(), d, e.zv(c), e.zw(c));
            e.y2.r = e.adb;
            e.y2.s = e.adc;
            e.y2.k = e.adb;
            e.y2.l = e.adc;
            let i = e.valueColumn.count;
            let j = c.by;
            let k = c.bx;
            let l = this.getEffectiveViewport1(c);
            let m = false;
            let n = e.y2.b;
            if (n != null) {
                m = true;
            }
            let o = b.f;
            let p = e.ys();
            let q = p.cn ? p : null;
            let r = new ScalerParams(0, j, k, p.ch, l);
            let s = 0;
            for (let t of fromEnum(b.f)) {
                if (isInfinity(t[0]) || isNaN_(t[0]) || isInfinity(t[1]) || isInfinity(t[2]) || isNaN_(t[1]) || isNaN_(t[2])) {
                    s++;
                    continue;
                }
                let u = t[0] - 0.5 * g;
                let v = t[1];
                let w = t[2];
                w = Math.max(w, -100);
                v = Math.min(v, c.bx.right + 100);
                let x = f.dg.item(h);
                x.height = g;
                x.width = Math.abs(v - w);
                let y = e.y2.aw(i, s)[0];
                if (m) {
                    e.aag(o, s, i, p, r, c.q, y);
                }
                if (x.dataContext != null) {
                    let z = x.dataContext;
                    if (e.y2.az == 1) {
                        if (y >= 0 && y < this.dn.count) {
                            if (q != null && q.i$b != null && q.i$b.count > y) {
                                y = q.i$b._inner[y];
                            }
                            z.item = this.dn.item(y);
                        }
                    }
                    else {
                        z.item = null;
                    }
                }
                e.y2.ad(x, false, false, false, false);
                x.ap = e.y2.k;
                x.aq = e.y2.l;
                f.dn(x, Math.min(v, w), u);
                h++;
                s++;
            }
            f.dg.count = h;
        }
        ak(a, b) {
            let c = new List$1(ChartSelection.$, 0);
            this.p4(a, c, b);
            return c.toArray();
        }
        p4(a, b, c) {
            this.aac(a, b, c, this.yt, 1);
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
            switch (b) {
                case StackedBarSeries.$$p[0]:
                case StackedBarSeries.$$p[1]:
                    for (let e of fromEnum(this.aaw)) {
                        e.g1();
                        e.g2();
                    }
                    this.rr(false);
                    break;
                case "SyncLink":
                    if (this.xAxis != null) {
                        this.xAxis.c1();
                    }
                    break;
                case "FastItemsSource":
                    if (this.xAxis != null && !this.xAxis.c1()) {
                        this.ab2.cw.g(this.id);
                    }
                    this.rr(this.gg && c != null);
                    break;
                case "SeriesViewer":
                    if (c != null && d == null) {
                        this.pc(this.xAxis);
                        this.pc(this.yAxis);
                    }
                    if (c == null && d != null) {
                        this.rh(this.xAxis);
                        this.rh(this.yAxis);
                    }
                    this.ab2.cw.g(this.id);
                    this.rr(false);
                    if (this.xAxis != null) {
                        this.xAxis.c1();
                    }
                    break;
            }
        }
        getPreferredCategoryMode() {
            return this.preferredCategoryMode(this.yAxis);
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    StackedBarSeries.$t = markType(StackedBarSeries, 'StackedBarSeries', VerticalStackedSeriesBase.$, [IBarSeries_$type]);
    StackedBarSeries.$$p = markDep(DependencyProperty, PropertyMetadata, StackedBarSeries, 'raisePropertyChanged', ['RadiusX:ab3:ab7', [1, 0], 'RadiusY:ab4:ab8', [1, 0]]);
    return StackedBarSeries;
})();
/**
 * @hidden
 */
export let StackedColumnSeries = /*@__PURE__*/ (() => {
    class StackedColumnSeries extends HorizontalStackedSeriesBase {
        constructor() {
            super();
            this.ab = StackedColumnSeries.$;
        }
        bj() {
            return new StackedColumnSeries();
        }
        get_ez() {
            return true;
        }
        get_fl() {
            return true;
        }
        jk() {
            if (!isNaN_(this.jj)) {
                return super.jk();
            }
            return Defaults.h;
        }
        cs() {
            return new StackedColumnSeriesView(this);
        }
        q1(a) {
            super.q1(a);
            this.ab2 = a;
        }
        aav() {
            return this.ab2;
        }
        preferredCategoryMode(a) {
            return 2;
        }
        ay(a) {
            if (this.itemsSource == null) {
                return null;
            }
            if (a == this.xAxis) {
                return new AxisRange(0, this.dn.count - 1);
            }
            if (a == this.yAxis) {
                this.abl();
                return new AxisRange(this.abc, this.abb);
            }
            return null;
        }
        iw() {
            let a = this.getEffectiveViewport1(this.cv);
            return this.xAxis.k8(this.cv.by, this.cv.bx, a);
        }
        abm(a, b, c, d) {
            let e = typeCast(ColumnFragment.$, a);
            let f = typeCast(ColumnFragmentView.$, c);
            if (!this.he(c.bx, c.by, c) || e == null || f == null) {
                return;
            }
            if (e == null) {
                return;
            }
            let g = this.getEffectiveViewport1(c);
            let h = this.xAxis.k8(c.by, c.bx, g);
            if (isNaN_(h) || isInfinity(h)) {
                e.ac8.dg.count = 0;
                return;
            }
            let i = 0;
            e.y2.a2(e, e.zm(), d, e.zv(c), e.zw(c));
            e.y2.r = e.adb;
            e.y2.s = e.adc;
            e.y2.k = e.adb;
            e.y2.l = e.adc;
            let j = c.by;
            let k = c.bx;
            let l = this.getEffectiveViewport1(c);
            let m = false;
            let n = e.y2.b;
            if (n != null) {
                m = true;
            }
            let o = b.f;
            let p = e.ys();
            let q = p.cn ? p : null;
            let r = new ScalerParams(0, j, k, p.ch, l);
            let s = e.valueColumn.count;
            let t = typeCast(ISortingAxis_$type, this.xAxis) !== null;
            let u = 0;
            for (let v of fromEnum(b.f)) {
                if (isInfinity(v[0]) || isNaN_(v[0]) || isInfinity(v[1]) || isInfinity(v[2]) || isNaN_(v[1]) || isNaN_(v[2])) {
                    u++;
                    continue;
                }
                let w = v[0] - 0.5 * h;
                let x = v[1];
                let y = v[2];
                x = Math.max(x, -100);
                y = Math.min(y, c.bx.bottom + 100);
                let z = f.dg.item(u);
                z.width = h;
                z.height = Math.abs(y - x);
                let aa = e.y2.aw(s, u)[0];
                if (t && b.m != null && i >= 0 && i < b.m.count) {
                    aa = truncate(Math.round(b.m._inner[i]));
                }
                if (m) {
                    e.aag(o, u, s, p, r, c.q, aa);
                }
                if (z.dataContext != null) {
                    let ab = z.dataContext;
                    if (e.y2.az == 1) {
                        if (aa >= 0 && aa < this.dn.count) {
                            if (q != null && q.i$b != null && q.i$b.count > aa) {
                                aa = q.i$b._inner[aa];
                            }
                            ab.item = this.dn.item(aa);
                        }
                    }
                    else {
                        ab.item = null;
                    }
                }
                e.y2.ad(z, false, false, false, false);
                z.ap = e.y2.k;
                z.aq = e.y2.l;
                f.dn(z, w, Math.min(y, x));
                i++;
                u++;
            }
            f.dg.count = u;
        }
        ak(a, b) {
            let c = new List$1(ChartSelection.$, 0);
            this.p4(a, c, b);
            return c.toArray();
        }
        p4(a, b, c) {
            this.aac(a, b, c, this.yt, 1);
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
            switch (b) {
                case StackedColumnSeries.$$p[0]:
                case StackedColumnSeries.$$p[1]:
                    for (let e of fromEnum(this.aaw)) {
                        e.g1();
                        e.g2();
                    }
                    this.rr(false);
                    break;
                case "SyncLink":
                    if (this.yAxis != null) {
                        this.yAxis.c1();
                    }
                    break;
                case "SeriesViewer":
                    if (this.yAxis != null) {
                        this.yAxis.c1();
                    }
                    break;
            }
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    StackedColumnSeries.$t = markType(StackedColumnSeries, 'StackedColumnSeries', HorizontalStackedSeriesBase.$);
    StackedColumnSeries.$$p = markDep(DependencyProperty, PropertyMetadata, StackedColumnSeries, 'raisePropertyChanged', ['RadiusX:ab3:ab7', [1, 0], 'RadiusY:ab4:ab8', [1, 0]]);
    return StackedColumnSeries;
})();
/**
 * @hidden
 */
export let StackedSplineAreaSeries = /*@__PURE__*/ (() => {
    class StackedSplineAreaSeries extends HorizontalStackedSeriesBase {
        constructor() {
            super();
            this.ab = StackedSplineAreaSeries.$;
        }
        bj() {
            return new StackedSplineAreaSeries();
        }
        jk() {
            if (!isNaN_(this.jj)) {
                return super.jk();
            }
            return this.ab2.da();
        }
        get_eu() {
            return true;
        }
        get_f0() {
            return true;
        }
        ac() {
            super.ac();
            this.rr(false);
        }
        cs() {
            return new StackedSplineAreaSeriesView(this);
        }
        q1(a) {
            super.q1(a);
            this.ab2 = a;
        }
        ay(a) {
            if (this.itemsSource == null) {
                return null;
            }
            if (a == this.xAxis) {
                return new AxisRange(0, this.dn.count - 1);
            }
            if (a == this.yAxis) {
                this.abl();
                return new AxisRange(this.abc, this.abb);
            }
            return null;
        }
        preferredCategoryMode(a) {
            return 0;
        }
        q9(a, b, c, d) {
            super.q9(a, b, c, d);
            switch (b) {
                case StackedSplineAreaSeries.$$p[0]:
                    for (let e of fromEnum(this.aaw)) {
                        e.ge();
                    }
                    break;
            }
        }
        ak(a, b) {
            let c = new List$1(ChartSelection.$, 0);
            this.p4(a, c, b);
            return c.toArray();
        }
        p4(a, b, c) {
            this.aac(a, b, c, this.yt, 0);
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    StackedSplineAreaSeries.$t = markType(StackedSplineAreaSeries, 'StackedSplineAreaSeries', HorizontalStackedSeriesBase.$);
    StackedSplineAreaSeries.$$p = markDep(DependencyProperty, PropertyMetadata, StackedSplineAreaSeries, 'raisePropertyChanged', ['IsSplineShapePartOfRange:ab3:ab5', [0, false]]);
    return StackedSplineAreaSeries;
})();
/**
 * @hidden
 */
export let StackedSplineSeries = /*@__PURE__*/ (() => {
    class StackedSplineSeries extends HorizontalStackedSeriesBase {
        constructor() {
            super();
            this.ab = StackedSplineSeries.$;
        }
        bj() {
            return new StackedSplineSeries();
        }
        get_f0() {
            return true;
        }
        jk() {
            if (!isNaN_(this.jj)) {
                return super.jk();
            }
            return this.ab2.da();
        }
        ac() {
            super.ac();
            this.rr(false);
        }
        cs() {
            return new StackedSplineSeriesView(this);
        }
        q1(a) {
            super.q1(a);
            this.ab2 = a;
        }
        ay(a) {
            if (this.itemsSource == null) {
                return null;
            }
            if (a == this.xAxis) {
                return new AxisRange(0, this.dn.count - 1);
            }
            if (a == this.yAxis) {
                this.abl();
                return new AxisRange(this.abc, this.abb);
            }
            return null;
        }
        preferredCategoryMode(a) {
            return 0;
        }
        ak(a, b) {
            let c = new List$1(ChartSelection.$, 0);
            this.p4(a, c, b);
            return c.toArray();
        }
        p4(a, b, c) {
            this.aac(a, b, c, this.yt, 0);
        }
        get useHighMarkerFidelity() {
            return this.zq;
        }
    }
    StackedSplineSeries.$t = markType(StackedSplineSeries, 'StackedSplineSeries', HorizontalStackedSeriesBase.$);
    StackedSplineSeries.$$p = markDep(DependencyProperty, PropertyMetadata, StackedSplineSeries, 'raisePropertyChanged', ['IsSplineShapePartOfRange:ab3:ab5', [0, false]]);
    return StackedSplineSeries;
})();
/**
 * @hidden
 */
export let StackedFragmentSeries = /*@__PURE__*/ (() => {
    class StackedFragmentSeries extends DependencyObject {
        constructor() {
            super();
            this._parentSeries = null;
            this.cc = 0;
            this.af = null;
            this.ak = null;
            this._visualSeriesLink = null;
            this.a7 = null;
            this.a8 = null;
            this.a6 = null;
            this.az = false;
            this.b5 = null;
            this.propertyChanged = null;
            this.propertyUpdated = null;
            this.a5 = new List$1(String_$type, 0);
            this.a7 = new List$1(Number_$type, 0);
            this.a8 = new List$1(Number_$type, 0);
            this.a6 = new List$1(Array_$type, 0);
            this.propertyUpdated = delegateCombine(this.propertyUpdated, (a, b) => this.fy(a, b.propertyName, b.oldValue, b.newValue));
        }
        cg(a, b) {
            let c = new DataLegendSeriesValueInfo();
            c.l = this.bt({ $type: Point_$type, x: a, y: b }, false, false);
            c.q = "Value";
            c.r = this.ft != null ? this.ft : "Value";
            c.s = this.fp != null ? this.fp : "";
            c.t = this.fr != null ? this.fr : "";
            let d = new DataLegendSeriesContext();
            d.e = ((() => {
                let $ret = new List$1(DataLegendSeriesValueInfo.$, 0);
                $ret.add(c);
                return $ret;
            })());
            d.h = this.eb();
            return d;
        }
        eb() {
            return "Stacked";
        }
        get parentSeries() {
            return this._parentSeries;
        }
        set parentSeries(a) {
            this._parentSeries = a;
        }
        get visualSeriesLink() {
            return this._visualSeriesLink;
        }
        set visualSeriesLink(a) {
            this._visualSeriesLink = a;
        }
        b8(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.j3(a);
            }
            return -1;
        }
        ch(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.kn(a);
            }
            return null;
        }
        cb(a, b) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.ka(a, b);
            }
            return -1;
        }
        ca(a, b) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.j8(a, b);
            }
            return -1;
        }
        bt(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.i5(a, b, c);
            }
            return NaN;
        }
        li(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.wc(a, b, c);
            }
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        lm(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.wn(a);
            }
            return Rect.empty;
        }
        j(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.ao(a);
            }
            return null;
        }
        ln(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.wo(a);
            }
            return Rect.empty;
        }
        k(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.ap(a);
            }
            return null;
        }
        lo(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.wp(a);
            }
            return Rect.empty;
        }
        lp(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.wq(a);
            }
            return Rect.empty;
        }
        bp(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.i1(a, b, c);
            }
            return NaN;
        }
        le(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.v8(a, b, c);
            }
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        br(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.i3(a, b, c);
            }
            return NaN;
        }
        lg(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.wa(a, b, c);
            }
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        lj(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.wd(a, b, c);
            }
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        bu(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.i6(a, b, c);
            }
            return NaN;
        }
        lf(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.v9(a, b, c);
            }
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        bq(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.i2(a, b, c);
            }
            return NaN;
        }
        lh(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.wb(a, b, c);
            }
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        bs(a, b, c) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.i4(a, b, c);
            }
            return NaN;
        }
        b9(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.j4(a);
            }
            return -1;
        }
        bo() {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.iw();
            }
            return 0;
        }
        bn(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.is(a);
            }
            return NaN;
        }
        ci(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.ko(a);
            }
            return null;
        }
        as(a, b, c, d, e) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.eb(a, b, c, d, e);
            }
            return false;
        }
        lk(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.wh(a);
            }
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        ld(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.v7(a);
            }
            return { $type: Point_$type, x: NaN, y: NaN };
        }
        a0(a) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.gd(a);
            }
            return false;
        }
        ll() {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.getEffectiveViewport();
            }
            return Rect.empty;
        }
        fx() {
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.qn();
            }
        }
        f2(a) {
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.r6(a);
            }
        }
        a1(a, b) {
            if (this.visualSeriesLink != null) {
                return this.visualSeriesLink.gw(a, b);
            }
            return false;
        }
        fw(a) {
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.qc(a);
            }
        }
        provideRenderer(a) {
            this.b5 = a;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.provideRenderer(a);
            }
        }
        hm() {
            if (this.parentSeries == null) {
                return;
            }
            this.lt = this.parentSeries._visibility != 0 ? 1 : this.lv;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink._visibility = this.lt;
            }
        }
        gu() {
            if (this.parentSeries == null) {
                return;
            }
            this.hp = this.hs != null ? this.hs : this.parentSeries.x2;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.x2 = this.hp;
            }
        }
        gw() {
            if (this.parentSeries == null) {
                return;
            }
            let a = this.x == 0 || this.x == 2;
            let b = a ? this.parentSeries.w8 : this.x;
            if (b == 2 || b == 0) {
                b = 1;
            }
            this.w = b;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.xa = this.w;
            }
        }
        f4() {
            if (this.parentSeries == null) {
                return;
            }
            this.k4 = this.kz != null ? this.kz : this.parentSeries.vf;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.vf = this.k4;
            }
        }
        f5() {
            if (this.parentSeries == null) {
                return;
            }
            this.k7 = this.k8 != null ? this.k8 : this.parentSeries.v2;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.v2 = this.k7;
            }
        }
        gb() {
            if (this.parentSeries == null) {
                return;
            }
            this.bc = !isNaN_(this.bv) ? this.bv : this.parentSeries.jf;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.jf = this.bc;
            }
        }
        ga() {
            if (this.parentSeries == null) {
                return;
            }
            this.z = this.parentSeries.bv;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.bv = this.z;
            }
        }
        g0() {
            if (this.parentSeries == null) {
                return;
            }
            this.aa = this.ab != 0 ? this.ab : this.parentSeries.ci;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.ci = this.aa;
            }
        }
        gq() {
            if (this.parentSeries == null) {
                return;
            }
            this.bd = !isNaN_(this.bw) || this.ay("MarkerFillOpacity") ? this.bw : this.parentSeries.jg;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.jg = this.bd;
            }
        }
        f6() {
            if (this.parentSeries == null) {
                return;
            }
            this.k9 = this.at("DashCap") ? this.parentSeries.v3 : this.lb;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.v3 = this.k9;
            }
        }
        gc() {
            if (this.parentSeries == null) {
                return;
            }
            this.al = this.at("IsDropShadowEnabled") ? this.parentSeries.e4 : this.au;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.e4 = this.al;
            }
        }
        g3() {
            if (this.parentSeries == null) {
                return;
            }
            this.bi = !isNaN_(this.b1) || this.ay("ShadowBlur") ? this.b1 : this.parentSeries.jm;
            if (this.visualSeriesLink != null && !isNaN_(this.bi)) {
                this.visualSeriesLink.jm = this.bi;
            }
        }
        g4() {
            if (this.parentSeries == null) {
                return;
            }
            this.k5 = Color.e(toNullable(Color.$, this.k6), toNullable(Color.$, null)) ? this.k6 : this.parentSeries.v1;
            if (this.visualSeriesLink != null && Color.e(toNullable(Color.$, this.k5), toNullable(Color.$, null))) {
                this.visualSeriesLink.v1 = this.k5;
            }
        }
        hi() {
            if (this.parentSeries == null) {
                return;
            }
            this.ar = this.at("UseSingleShadow") ? this.parentSeries.hc : this.a4;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.hc = this.ar;
            }
        }
        g5() {
            if (this.parentSeries == null) {
                return;
            }
            this.bj = !isNaN_(this.b2) || this.ay("ShadowOffsetX") ? this.b2 : this.parentSeries.jn;
            if (this.visualSeriesLink != null && !isNaN_(this.bj)) {
                this.visualSeriesLink.jn = this.bj;
            }
        }
        g6() {
            if (this.parentSeries == null) {
                return;
            }
            this.bk = !isNaN_(this.b3) || this.ay("ShadowOffsetY") ? this.b3 : this.parentSeries.jo;
            if (this.visualSeriesLink != null && !isNaN_(this.bk)) {
                this.visualSeriesLink.jo = this.bk;
            }
        }
        gd() {
            if (this.parentSeries == null) {
                return;
            }
            this.am = this.av;
        }
        gj() {
            if (this.parentSeries == null) {
                return;
            }
            this.hn = this.hq != null ? this.hq : this.parentSeries.legendItemBadgeTemplate;
            if (this.visualSeriesLink != null) {
                if (this.hn != null) {
                    this.visualSeriesLink.legendItemBadgeTemplate = this.hn;
                }
                else {
                    this.visualSeriesLink.legendItemBadgeTemplate = null;
                }
            }
        }
        gk() {
            if (this.parentSeries == null) {
                return;
            }
            this.ho = this.hr != null ? this.hr : this.parentSeries.legendItemTemplate;
            if (this.visualSeriesLink != null) {
                if (this.ho != null) {
                    this.visualSeriesLink.legendItemTemplate = this.ho;
                }
                else {
                    this.visualSeriesLink.legendItemTemplate = null;
                }
            }
        }
        gl() {
            if (this.parentSeries == null) {
                return;
            }
            this.ls = this.parentSeries.legendItemVisibility != 0 ? 1 : this.lu;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.legendItemVisibility = this.ls;
            }
        }
        gi() {
            if (this.parentSeries == null) {
                return;
            }
            this.q = this.r != 0 ? this.r : this.parentSeries.legendItemBadgeShape;
            if (this.visualSeriesLink != null) {
                if (this.q != 0) {
                    this.visualSeriesLink.legendItemBadgeShape = this.q;
                }
                else {
                    this.visualSeriesLink.legendItemBadgeShape = 0;
                }
            }
        }
        gh() {
            if (this.parentSeries == null) {
                return;
            }
            this.o = this.p != 0 ? this.p : this.parentSeries.bd;
            if (this.visualSeriesLink != null) {
                if (this.o != 0) {
                    this.visualSeriesLink.bd = this.o;
                }
                else {
                    this.visualSeriesLink.bd = 0;
                }
            }
        }
        go() {
            if (this.parentSeries == null) {
                return;
            }
            this.kv = this.k0 != null ? this.k0 : this.parentSeries.yj;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.yj = this.kv;
            }
        }
        gr() {
            if (this.parentSeries == null) {
                return;
            }
            this.kw = this.k1 != null ? this.k1 : this.parentSeries.yk;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.yk = this.kw;
            }
        }
        gt() {
            if (this.parentSeries == null) {
                return;
            }
            this.lq = this.lr != null ? this.lr : this.parentSeries.yl;
            if (this.visualSeriesLink != null) {
                if (this.lq != null) {
                    this.visualSeriesLink.yl = this.lq;
                }
                else {
                    this.visualSeriesLink.yl = null;
                }
            }
        }
        gx() {
            if (this.parentSeries == null) {
                return;
            }
            this.bf = !isNaN_(this.by) || this.ay("Opacity") ? this.by : this.parentSeries._opacity;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink._opacity = this.bf;
            }
        }
        gy() {
        }
        gz() {
            if (this.parentSeries == null) {
                return;
            }
            this.ky = this.k3 != null ? this.k3 : this.parentSeries.vv;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.vv = this.ky;
            }
        }
        gg() {
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.itemsSource = this.itemsSource;
            }
        }
        f9() {
            let a = this.highlightedItemsSource;
            if (a == null && this.parentSeries != null) {
                a = this.parentSeries.highlightedItemsSource;
            }
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.highlightedItemsSource = a;
            }
        }
        f3() {
            if (this.parentSeries == null) {
                return;
            }
            let a = NaN;
            if (this.parentSeries.isStacked && this.parentSeries.eu && !this.parentSeries.f0) {
                a = this.parentSeries.h9;
            }
            if (this.parentSeries.isStacked && this.parentSeries.eu && this.parentSeries.f0) {
                a = this.parentSeries.h9;
            }
            this.bb = !isNaN_(this.bm) || this.ay("AreaFillOpacity") ? this.bm : a;
            if (this.visualSeriesLink != null) {
                if (typeCast(AreaFragment.$, this.visualSeriesLink) !== null) {
                    this.visualSeriesLink.ik = this.bb;
                }
                if (typeCast(SplineAreaFragment.$, this.visualSeriesLink) !== null) {
                    this.visualSeriesLink.ik = this.bb;
                }
            }
        }
        ge() {
            if (this.parentSeries == null) {
                return;
            }
            let a = false;
            if (this.parentSeries.isStacked && this.parentSeries.f0 && this.parentSeries.eu) {
                a = this.parentSeries.ab3;
            }
            if (this.parentSeries.isStacked && this.parentSeries.ex) {
                a = this.parentSeries.ab3;
            }
            this.an = a;
            if (this.visualSeriesLink != null) {
                if (typeCast(SplineFragment.$, this.visualSeriesLink) !== null) {
                    this.visualSeriesLink.ac1 = this.an;
                }
                if (typeCast(SplineAreaFragment.$, this.visualSeriesLink) !== null) {
                    this.visualSeriesLink.ac1 = this.an;
                }
            }
        }
        g1() {
            if (this.parentSeries == null) {
                return;
            }
            let a = NaN;
            if (this.parentSeries.isStacked && this.parentSeries.ez) {
                a = this.parentSeries.ab3;
            }
            if (this.parentSeries.isStacked && this.parentSeries.ex) {
                a = this.parentSeries.ab3;
            }
            this.bg = !isNaN_(this.bz) && this.bz != a ? this.bz : a;
            if (this.visualSeriesLink != null) {
                if (typeCast(ColumnFragment.$, this.visualSeriesLink) !== null) {
                    this.visualSeriesLink.adb = this.bg;
                }
                if (typeCast(BarFragment.$, this.visualSeriesLink) !== null) {
                    this.visualSeriesLink.adb = this.bg;
                }
            }
        }
        g2() {
            if (this.parentSeries == null) {
                return;
            }
            let a = NaN;
            if (this.parentSeries.isStacked && this.parentSeries.ez) {
                a = this.parentSeries.ab4;
            }
            if (this.parentSeries.isStacked && this.parentSeries.ex) {
                a = this.parentSeries.ab4;
            }
            this.bh = !isNaN_(this.b0) && this.b0 != a ? this.b0 : a;
            if (this.visualSeriesLink != null) {
                if (typeCast(ColumnFragment.$, this.visualSeriesLink) !== null) {
                    this.visualSeriesLink.adc = this.bh;
                }
                if (typeCast(BarFragment.$, this.visualSeriesLink) !== null) {
                    this.visualSeriesLink.adc = this.bh;
                }
            }
        }
        gm() {
            if (this.parentSeries == null) {
                return;
            }
            this.la = this.at("StartCap") ? this.parentSeries.v4 : this.lc;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.v4 = this.la;
            }
        }
        g7() {
            if (this.parentSeries == null) {
                return;
            }
            this.bl = !isNaN_(this.b4) && this.b4 != this.parentSeries.jp ? this.b4 : this.parentSeries.jp;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.jp = this.bl;
            }
        }
        gn() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.v5 = this.parentSeries.v5;
            }
        }
        gv() {
            if (this.parentSeries == null) {
                return;
            }
            this.be = !isNaN_(this.bx) || this.ay("MarkerThickness") ? this.bx : this.parentSeries.xj;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.xj = this.be;
            }
        }
        g9() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.toolTip = this.ck;
            }
        }
        hb() {
            if (this.parentSeries == null) {
                return;
            }
            this.ag = this.ai || this.parentSeries.dd;
        }
        ha() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.parentSeries.kd != 0) {
                this.b6 = this.parentSeries.kd;
                return;
            }
            this.b6 = this.at("IsDropShadowEnabled") ? this.parentSeries.kd : this.cd;
        }
        hd() {
            if (this.parentSeries == null) {
                return;
            }
            this.ah = this.at("IsDropShadowEnabled") ? this.parentSeries.de : this.aj;
        }
        he() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.parentSeries.y5 != 0) {
                this.m = this.parentSeries.y5;
                return;
            }
            this.m = this.n;
        }
        hf() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.parentSeries.c5 != 0) {
                this.ad = this.parentSeries.c5;
                return;
            }
            this.ad = this.ae;
        }
        gf() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.parentSeries.zl != false) {
                this.ao = this.parentSeries.zl;
                return;
            }
            this.ao = this.ax;
        }
        hc() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.parentSeries.ke != 1000) {
                this.b7 = this.parentSeries.ke;
                return;
            }
            this.b7 = this.ce;
        }
        hh() {
            if (this.parentSeries == null) {
                return;
            }
            this.aq = this.at("UseLightweightMarkers") ? this.parentSeries.xi : this.a3;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.xi = this.aq;
            }
        }
        g8() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.title = this.cj;
            }
        }
        gp() {
            if (this.parentSeries == null) {
                return;
            }
            this.s = this.t != 0 ? this.t : this.parentSeries.w0;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.w0 = this.s;
            }
        }
        gs() {
            if (this.parentSeries == null) {
                return;
            }
            this.u = this.v != 0 ? this.v : this.parentSeries.w4;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.w4 = this.u;
            }
        }
        hg() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.zq = this.ay("UseHighMarkerFidelity") ? this.a2 : this.parentSeries.zq;
            }
        }
        hk() {
            if (this.parentSeries == null) {
                return;
            }
            this.d2 = this.ay("ValueMemberAsLegendUnit") ? this.fr : null;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.abl = this.fr;
            }
        }
        hj() {
            if (this.parentSeries == null) {
                return;
            }
            this.d0 = this.ay("ValueMemberAsLegendLabel") ? this.fp : this.cj != null ? this.cj.toString() : null;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.abj = this.d0;
            }
        }
        f7() {
            if (this.parentSeries == null) {
                return;
            }
            this.cp = this.ay("DataLegendGroup") ? this.d9 : this.eb();
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.l3 = this.cp;
            }
        }
        f8() {
            if (this.parentSeries == null) {
                return;
            }
            this.cr = this.ay("HighlightedDataLegendGroup") ? this.ed : this.d9;
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.mj = this.cr;
            }
        }
        hl() {
            if (this.parentSeries == null) {
                return;
            }
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.abn = this.ft;
            }
        }
        f0(a, b, c) {
            if (this.propertyChanged != null) {
                this.propertyChanged(this, new PropertyChangedEventArgs(a));
            }
            if (this.propertyUpdated != null) {
                this.propertyUpdated(this, new PropertyUpdatedEventArgs(a, b, c));
            }
        }
        at(a) {
            return !this.a5.contains(a);
        }
        ay(a) {
            return this.a5.contains(a);
        }
        fy(a, b, c, d) {
            if (this.parentSeries == null) {
                return;
            }
            if (!this.a5.contains(b)) {
                this.a5.add(b);
            }
            switch (b) {
                case StackedFragmentSeries.$$p[92]:
                    this.g8();
                    break;
                case StackedFragmentSeries.$$p[105]:
                    this.hl();
                    break;
                case StackedFragmentSeries.$$p[104]:
                    this.hk();
                    break;
                case StackedFragmentSeries.$$p[103]:
                    this.hj();
                    break;
                case StackedFragmentSeries.$$p[106]:
                    this.hm();
                    break;
                case StackedFragmentSeries.$$p[52]:
                    this.f4();
                    break;
                case StackedFragmentSeries.$$p[53]:
                    this.f5();
                    break;
                case StackedFragmentSeries.$$p[54]:
                    this.f6();
                    break;
                case StackedFragmentSeries.$$p[59]:
                    this.gc();
                    break;
                case StackedFragmentSeries.$$p[87]:
                    this.g3();
                    break;
                case StackedFragmentSeries.$$p[88]:
                    this.g4();
                    break;
                case StackedFragmentSeries.$$p[102]:
                    this.hi();
                    break;
                case StackedFragmentSeries.$$p[89]:
                    this.g5();
                    break;
                case StackedFragmentSeries.$$p[90]:
                    this.g6();
                    break;
                case StackedFragmentSeries.$$p[69]:
                    this.gm();
                    break;
                case StackedFragmentSeries.$$p[60]:
                    this.gd();
                    break;
                case StackedFragmentSeries.$$p[76]:
                    this.gu();
                    break;
                case StackedFragmentSeries.$$p[78]:
                    this.gw();
                    break;
                case StackedFragmentSeries.$$p[71]:
                    this.gp();
                    break;
                case StackedFragmentSeries.$$p[73]:
                    this.gs();
                    break;
                case StackedFragmentSeries.$$p[66]:
                    this.gj();
                    break;
                case StackedFragmentSeries.$$p[67]:
                    this.gk();
                    break;
                case StackedFragmentSeries.$$p[68]:
                    this.gl();
                    break;
                case StackedFragmentSeries.$$p[65]:
                    this.gi();
                    break;
                case StackedFragmentSeries.$$p[64]:
                    this.gh();
                    break;
                case StackedFragmentSeries.$$p[70]:
                    this.go();
                    break;
                case StackedFragmentSeries.$$p[74]:
                    this.gr();
                    break;
                case StackedFragmentSeries.$$p[75]:
                    this.gt();
                    break;
                case StackedFragmentSeries.$$p[77]:
                    this.gv();
                    break;
                case StackedFragmentSeries.$$p[81]:
                    this.gx();
                    break;
                case StackedFragmentSeries.$$p[80]:
                    this.gy();
                    break;
                case StackedFragmentSeries.$$p[63]:
                    this.gg();
                    break;
                case StackedFragmentSeries.$$p[56]:
                    this.f9();
                    break;
                case StackedFragmentSeries.$$p[83]:
                    this.gz();
                    break;
                case StackedFragmentSeries.$$p[82]:
                    this.g0();
                    break;
                case StackedFragmentSeries.$$p[72]:
                    this.gq();
                    break;
                case StackedFragmentSeries.$$p[51]:
                    this.f3();
                    break;
                case StackedFragmentSeries.$$p[85]:
                    this.g1();
                    break;
                case StackedFragmentSeries.$$p[86]:
                    this.g2();
                    break;
                case StackedFragmentSeries.$$p[61]:
                    this.ge();
                    break;
                case StackedFragmentSeries.$$p[91]:
                    this.g7();
                    break;
                case StackedFragmentSeries.$$p[93]:
                    this.g9();
                    break;
                case StackedFragmentSeries.$$p[95]:
                    this.hb();
                    break;
                case StackedFragmentSeries.$$p[97]:
                    this.hd();
                    break;
                case StackedFragmentSeries.$$p[94]:
                    this.ha();
                    break;
                case StackedFragmentSeries.$$p[62]:
                    this.gf();
                    break;
                case StackedFragmentSeries.$$p[98]:
                    this.he();
                    break;
                case StackedFragmentSeries.$$p[99]:
                    this.hf();
                    break;
                case StackedFragmentSeries.$$p[96]:
                    this.hc();
                    break;
                case StackedFragmentSeries.$$p[101]:
                    this.hh();
                    break;
                case StackedFragmentSeries.$$p[100]:
                    this.hg();
                    break;
            }
            this.parentSeries.rr(false);
        }
        f1() {
            if (this.visualSeriesLink != null) {
                this.visualSeriesLink.rv();
            }
        }
    }
    StackedFragmentSeries.$t = markType(StackedFragmentSeries, 'StackedFragmentSeries', DependencyObject.$, [INotifyPropertyChanged_$type]);
    StackedFragmentSeries.$$p = markDep(DependencyProperty, PropertyMetadata, StackedFragmentSeries, 'f0', ['ActualAreaFillOpacity:bb:ht', [1, NaN], 'ActualBrush:ku:hu', [Brush.$], 'ActualDashArray:k7:hv', [DoubleCollection.$], 'ActualDashCap:k9:hw', [PenLineCap_$type, enumGetBox(PenLineCap_$type, 0)], 'ActualDataLegendGroup:cp:hx', [2, null], 'ActualHighlightedValuesDataLegendGroup:cr:hy', [2, null], 'ActualHighlightedValuesDisplayMode:z:hz', [SeriesHighlightedValuesDisplayMode_$type, enumGetBox(SeriesHighlightedValuesDisplayMode_$type, 1)], 'ActualHighlightingFadeOpacity:bc:h0', [1, NaN], 'ActualIsDropShadowEnabled:al:h1', [0, false], 'ActualIsHitTestVisible:am:h2', [0, true], 'ActualIsSplineShapePartOfRange:an:h3', [0, false], 'ActualIsTransitionInEnabled:ao:h4', [0], 'ActualLegendItemBadgeMode:o:h5', [LegendItemBadgeMode_$type], 'ActualLegendItemBadgeShape:q:h6', [LegendItemBadgeShape_$type], 'ActualLegendItemBadgeTemplate:hn:h7', [DataTemplate.$], 'ActualLegendItemTemplate:ho:h8', [DataTemplate.$], 'ActualLegendItemVisibility:ls:h9', [Visibility_$type, enumGetBox(Visibility_$type, 0)], 'ActualLineCap:la:ia', [PenLineCap_$type, enumGetBox(PenLineCap_$type, 0)], 'ActualMarkerBrush:kv:ib', [Brush.$], 'ActualMarkerFillMode:s:ic', [MarkerFillMode_$type, enumGetBox(MarkerFillMode_$type, 0)], 'ActualMarkerFillOpacity:bd:id', [1, NaN], 'ActualMarkerOutlineMode:u:ie', [MarkerOutlineMode_$type, enumGetBox(MarkerOutlineMode_$type, 0)], 'ActualMarkerOutline:kw:ig', [Brush.$], 'ActualMarkerStyle:lq:ih', [Style.$], 'ActualMarkerTemplate:hp:ii', [DataTemplate.$], 'ActualMarkerThickness:be:ij', [1, 1], 'ActualMarkerType:w:ik', [MarkerType_$type, enumGetBox(MarkerType_$type, 1)], 'ActualOpacityMask:kx:il', [Brush.$], 'ActualOpacity:bf:im', [1, NaN], 'ActualOutlineMode:aa:io', [SeriesOutlineMode_$type, enumGetBox(SeriesOutlineMode_$type, 0)], 'ActualOutline:ky:ip', [Brush.$], 'ActualRadiusX:bg:iq', [1, 0], 'ActualRadiusY:bh:ir', [1, 0], 'ActualShadowBlur:bi:is', [1, NaN], 'ActualShadowColor:k5:it', [Color.$], 'ActualShadowOffsetX:bj:iu', [1, NaN], 'ActualShadowOffsetY:bk:iv', [1, NaN], 'ActualThickness:bl:iw', [1, 1], 'ActualToolTip:cf:ix', [4], 'ActualTransitionDuration:b6:iy', [1], 'ActualTransitionEasingFunction:ag:iz', [Delegate_$type], 'ActualTransitionInDuration:b7:i0', [1], 'ActualTransitionInEasingFunction:ah:i1', [Delegate_$type], 'ActualTransitionInMode:m:i2', [CategoryTransitionInMode_$type], 'ActualTransitionInSpeedType:ad:i3', [TransitionInSpeedType_$type], 'ActualUseHighMarkerFidelity:ap:i4', [0, false], 'ActualUseLightweightMarkers:aq:i5', [0, false], 'ActualUseSingleShadow:ar:i6', [0, true], 'ActualValueMemberAsLegendLabel:d0:i7', [2, null], 'ActualValueMemberAsLegendUnit:d2:i8', [2, null], 'ActualVisibility:lt:i9', [Visibility_$type, enumGetBox(Visibility_$type, 0)], 'AreaFillOpacity:bm:ja', [1, NaN], 'Brush:kz:jb', [Brush.$], 'DashArray:k8:jc', [DoubleCollection.$], 'DashCap:lb:jd', [PenLineCap_$type, enumGetBox(PenLineCap_$type, 0)], 'DataLegendGroup:d9:je', [2, null], 'HighlightedItemsSource::jf', [IEnumerable_$type, null], 'HighlightedValuesDataLegendGroup:ed:jg', [2, null], 'HighlightingFadeOpacity:bv:jh', [1, NaN], 'IsDropShadowEnabled:au:ji', [0], 'IsHitTestVisible:av:jj', [0, true], 'IsSplineShapePartOfRange:aw:jk', [0, false], 'IsTransitionInEnabled:ax:jl', [0, false], 'ItemsSource::jm', [IEnumerable_$type, null], 'LegendItemBadgeMode:p:jn', [LegendItemBadgeMode_$type, enumGetBox(LegendItemBadgeMode_$type, 0)], 'LegendItemBadgeShape:r:jo', [LegendItemBadgeShape_$type, enumGetBox(LegendItemBadgeShape_$type, 0)], 'LegendItemBadgeTemplate:hq:jp', [DataTemplate.$, null], 'LegendItemTemplate:hr:jq', [DataTemplate.$, null], 'LegendItemVisibility:lu:jr', [Visibility_$type, enumGetBox(Visibility_$type, 0)], 'LineCap:lc:js', [PenLineCap_$type, enumGetBox(PenLineCap_$type, 0)], 'MarkerBrush:k0:jt', [Brush.$], 'MarkerFillMode:t:ju', [MarkerFillMode_$type, enumGetBox(MarkerFillMode_$type, 0)], 'MarkerFillOpacity:bw:jv', [1, NaN], 'MarkerOutlineMode:v:jw', [MarkerOutlineMode_$type, enumGetBox(MarkerOutlineMode_$type, 0)], 'MarkerOutline:k1:jx', [Brush.$], 'MarkerStyle:lr:jy', [Style.$], 'MarkerTemplate:hs:jz', [DataTemplate.$, null], 'MarkerThickness:bx:j0', [1, NaN], 'MarkerType:x:j1', [MarkerType_$type, enumGetBox(MarkerType_$type, 2)], 'Name:e0:j2', [2], 'OpacityMask:k2:j3', [Brush.$], 'Opacity:by:j4', [1, 1], 'OutlineMode:ab:j5', [SeriesOutlineMode_$type, enumGetBox(SeriesOutlineMode_$type, 0)], 'Outline:k3:j6', [Brush.$, null], 'ParentOrLocalBrush:k4:j7', [Brush.$], 'RadiusX:bz:j8', [1, NaN], 'RadiusY:b0:j9', [1, NaN], 'ShadowBlur:b1:ka', [1, NaN], 'ShadowColor:k6:kb', [Color.$], 'ShadowOffsetX:b2:kc', [1, NaN], 'ShadowOffsetY:b3:kd', [1, NaN], 'Thickness:b4:ke', [1, NaN], 'Title:cj:kf', [4, "Series Title"], 'ToolTip:ck:kg', [4, null], 'TransitionDuration:cd:kh', [1, 0], 'TransitionEasingFunction:ai:ki', [Delegate_$type, null], 'TransitionInDuration:ce:kj', [1, 1000], 'TransitionInEasingFunction:aj:kk', [Delegate_$type, null], 'TransitionInMode:n:kl', [CategoryTransitionInMode_$type, enumGetBox(CategoryTransitionInMode_$type, 0)], 'TransitionInSpeedType:ae:km', [TransitionInSpeedType_$type, enumGetBox(TransitionInSpeedType_$type, 0)], 'UseHighMarkerFidelity:a2:kn', [0, false], 'UseLightweightMarkers:a3:ko', [0, false], 'UseSingleShadow:a4:kp', [0], 'ValueMemberAsLegendLabel:fp:kq', [2, null], 'ValueMemberAsLegendUnit:fr:kr', [2, null], 'ValueMemberPath:ft:ks', [2, null], 'Visibility:lv:kt', [Visibility_$type, enumGetBox(Visibility_$type, 0)]]);
    return StackedFragmentSeries;
})();
/**
 * @hidden
 */
export let StackedSeriesCollection = /*@__PURE__*/ (() => {
    class StackedSeriesCollection extends ObservableCollection$1 {
        constructor() {
            super(StackedFragmentSeries.$, 0);
            this.collectionResetting = null;
        }
        p() {
            if (this.collectionResetting != null) {
                this.collectionResetting(this, null);
            }
            super.p();
        }
    }
    StackedSeriesCollection.$t = markType(StackedSeriesCollection, 'StackedSeriesCollection', ObservableCollection$1.$.specialize(StackedFragmentSeries.$));
    return StackedSeriesCollection;
})();
/**
 * @hidden
 */
export let StackedSeriesFramePreparer = /*@__PURE__*/ (() => {
    class StackedSeriesFramePreparer extends CategoryFramePreparer {
        constructor(a, ..._rest) {
            a = (a == void 0) ? 0 : a;
            switch (a) {
                case 0:
                    {
                        let c = _rest[0];
                        super(0, c);
                    }
                    break;
                case 1:
                    {
                        let c = _rest[0];
                        let d = _rest[1];
                        let e = _rest[2];
                        let f = _rest[3];
                        let g = _rest[4];
                        super(1, c, d, e, f, g);
                    }
                    break;
            }
        }
        j(a) {
            let b = new SingleValuesHolder();
            if (typeCast(StackedColumnSeries.$, this.h) !== null || typeCast(StackedBarSeries.$, this.h) !== null) {
                let c = typeCast(StackedSeriesBase.$, this.h);
                if (c.aaw.count > 0) {
                    b.f = c.aaw._inner[0].ak;
                }
                return b;
            }
            let d = this.ad.valueColumn;
            b.f = d;
            return b;
        }
        t(a, b, c, d, e) {
            let f = 0;
            let g = false;
            let h;
            let i = a.d != null;
            let j = this.h.provideCollisionDetector();
            let k = a.f;
            let l = a.n;
            let m = this.h.mayContainUnknowns;
            let n = new ScalerParams(0, a.p, a.o, a.b.j$b, l);
            let o = new ScalerParams(0, a.p, a.o, a.c.j$b, l);
            o.b = this.h.getHostReferenceValue();
            let p = (a.b.j$d(2, n) - a.b.j$d(1, n));
            let q = a.p;
            let r = a.o;
            let s = typeCast(NumericAxisBase.$, a.c) !== null && a.c.lp;
            for (let t = a.k; t <= a.l; ++t) {
                let u;
                if (a.d == null) {
                    if (!m) {
                        u = this.g.getBucketWithoutUnknowns(t);
                    }
                    else {
                        u = this.g.getBucket(t);
                    }
                }
                else {
                    u = ((() => { let v = this.f(a, t, b, p, g, h, c); t = v.p1; g = v.p4; h = v.p5; return v.ret; })());
                }
                let v = !s || (s && u[1] > 0);
                let w = u[0];
                if (!isNaN_(u[0])) {
                    this.x(a, u, c, i, n, o);
                    a.a.f.add(u);
                    let x = t * a.j;
                    let y = x;
                    if (a.d != null && a.d.i$b != null && x >= 0 && x < a.d.i$b.count) {
                        x = a.d.i$b._inner[x];
                    }
                    let z = u;
                    if (k && x < b.e) {
                        z = new Array(u.length);
                        z[0] = w;
                        this.z(b, x, true, a.e);
                        z[1] = b.c;
                        z[2] = b.d;
                        this.x(a, z, c, i, n, o);
                    }
                    if (d && v && this.l(a.a, z, j, Math.min(x, b.e - 1), f, a.a.f.count - 1)) {
                        ++f;
                    }
                }
            }
            return f;
        }
        l(a, b, c, d, e, f) {
            let g = b[0];
            let h = b[1];
            if (typeCast(IBarSeries_$type, this.c) !== null) {
                h = b[0];
                g = b[1];
            }
            let i = new Rect(0, g - 5, h - 5, 11, 11);
            if (!isNaN_(g) && !isNaN_(h) && !isInfinity(g) && !isInfinity(h) && c.tryAdd(i)) {
                a.n.add({ $type: Point_$type, x: g, y: h });
                this.c.updateMarkerTemplate(e, d, f);
                return true;
            }
            return false;
        }
    }
    StackedSeriesFramePreparer.$t = markType(StackedSeriesFramePreparer, 'StackedSeriesFramePreparer', CategoryFramePreparer.$);
    return StackedSeriesFramePreparer;
})();
/**
 * @hidden
 */
export let AreaFragmentView = /*@__PURE__*/ (() => {
    class AreaFragmentView extends AnchoredCategorySeriesView {
        constructor(a) {
            super(a);
            this.df = null;
            this.dl = new Path();
            this.dn = new Path();
            this.dm = new Path();
            this.dp = new Path();
            this.dh = new Path();
            this.dj = new Path();
            this.di = new Path();
            this.dk = new Path();
            this.df = a;
        }
        au() {
            super.au();
            if (!this.q) {
            }
        }
        dg() {
            this.dl.an = null;
            this.dm.an = null;
            this.dn.an = null;
            this.dp.an = null;
            this.dh.an = null;
            this.di.an = null;
            this.dj.an = null;
            this.dk.an = null;
        }
        cx() {
            return new AreaFragmentBucketCalculator(this);
        }
        bd() {
            super.bd();
        }
        be() {
            super.be();
            let a = this.br();
            this.dh.an = this.dl.an;
            this.di.an = this.dm.an;
            this.dj.an = this.dn.an;
            this.dk.an = this.dp.an;
            this.dh._fill = a;
            this.di._fill = a;
            this.dh._opacity = 1;
            this.di._opacity = 1;
            this.dj._stroke = a;
            this.dj.ad = this.e.ie + 3;
            this.dk._stroke = a;
            this.dk.ad = this.e.ie + 3;
        }
        a8(a, b) {
            super.a8(a, b);
            if (a.d) {
                if (b) {
                    a.t(this.dh);
                    a.t(this.di);
                    a.t(this.dj);
                    a.t(this.dk);
                }
                else {
                    a.t(this.dl);
                    a.t(this.dm);
                    a.t(this.dn);
                    a.t(this.dp);
                }
            }
        }
        get_index() {
            let a = this.df.parentSeries;
            let b = a.series.count;
            let c = a.series.indexOf(this.df.logicalSeriesLink);
            let d = (b - 1) - c;
            let e = a.cv.index;
            return e + d;
        }
        an(a) {
            super.an(a);
            this.e.bc.exportPathData(a, this.dn, "lowerShape", ["Lower"]);
            this.e.bc.exportPathData(a, this.dp, "upperShape", ["Upper", "Main"]);
            this.e.bc.exportPathData(a, this.dm, "translucentShape", ["Translucent"]);
            this.e.bc.exportPathData(a, this.dl, "fillShape", ["Fill"]);
        }
    }
    AreaFragmentView.$t = markType(AreaFragmentView, 'AreaFragmentView', AnchoredCategorySeriesView.$);
    return AreaFragmentView;
})();
/**
 * @hidden
 */
export let ColumnFragmentView = /*@__PURE__*/ (() => {
    class ColumnFragmentView extends AnchoredCategorySeriesView {
        constructor(a) {
            super(a);
            this.df = null;
            this.dj = null;
            this.dg = null;
            this.dh = null;
            this.di = null;
            this.dp = new Rectangle();
            this.df = a;
            this.dh = new List$1(Number_$type, 0);
            this.di = new List$1(Number_$type, 0);
            this.dg = ((() => {
                let $ret = new Pool$1(Rectangle.$);
                $ret.create = runOn(this, this.dq);
                $ret.activate = runOn(this, this.dk);
                $ret.disactivate = runOn(this, this.dm);
                $ret.destroy = runOn(this, this.dl);
                return $ret;
            })());
            this.dj = new List$1(Rectangle.$, 0);
        }
        au() {
            super.au();
            if (!this.q) {
            }
        }
        dq() {
            let a = ((() => {
                let $ret = new Rectangle();
                $ret.dataContext = ((() => {
                    let $ret = new DataContext();
                    $ret.series = this.e;
                    return $ret;
                })());
                return $ret;
            })());
            this.dj.add(a);
            a._visibility = 1;
            return a;
        }
        dk(a) {
            a._visibility = 0;
        }
        dm(a) {
            a._visibility = 1;
        }
        dl(a) {
            this.dj.remove(a);
        }
        bg(a, b) {
            super.bg(a, b);
            let c = a;
        }
        dn(a, b, c) {
            let d = false;
            if (a.o != c) {
                d = true;
                a.o = c;
            }
            if (a.n != b) {
                d = true;
                a.n = b;
            }
            if (d) {
                this.as();
            }
        }
        bh(a, b) {
            super.bh(a, b);
        }
        ac(a) {
            return this.dj._inner[a];
        }
        ab(a) {
            let b = this.dj._inner[a];
            this.dp._visibility = b._visibility;
            this.dp.n = b.n;
            this.dp.o = b.o;
            this.dp.width = b.width;
            this.dp.height = b.height;
            let c = this.bs(a);
            this.dp._fill = c;
            this.dp._stroke = c;
            this.dp.ad = this.e.ie + 3;
            return this.dp;
        }
        a8(a, b) {
            super.a8(a, b);
            if (a.d) {
                for (let c = 0; c < this.dj.count; c++) {
                    let d = this.aa(c, b);
                    this.bf(d, c, b);
                    a.w(d);
                }
            }
        }
        get_index() {
            let a = this.df.parentSeries;
            let b = a.series.count;
            let c = a.series.indexOf(this.df.logicalSeriesLink);
            let d = (b - 1) - c;
            let e = a.cv.index;
            return e + d;
        }
        an(a) {
            super.an(a);
            let b = 0;
            let c = new List$1(Rectangle.$, 0);
            for (let d of fromEnum(this.dg.a)) {
                c.add(d);
            }
            c.aa((e, f) => {
                if (e.n < f.n) {
                    return -1;
                }
                else if (e.n > f.n) {
                    return 1;
                }
                else {
                    return 0;
                }
            });
            for (let e of fromEnum(c)) {
                this.e.bc.exportRectangleData(a, e, "column" + b, ["Main", "Fill"]);
            }
            b++;
        }
        getDefaultTooltipTemplate() {
            let a = "<div class='ui-chart-default-tooltip-content'>";
            let b = null;
            if (this.df.ys().cb) {
                b = this.df.fragmentXAxis;
            }
            else if (this.df.fragmentYAxis.cb) {
                b = this.df.fragmentYAxis;
            }
            if (b.ce) {
                let c = b;
                a += "<span>${item." + c.dateTimeMemberPath + "}</span><br/>";
            }
            if (b != null && b.f2 != null) {
                a += "<span>${item." + b.f2 + "}</span><br/>";
            }
            a += "<span";
            let d = this.e.ba.a$u(this.e);
            if (!stringIsNullOrEmpty(d)) {
                a += " style='color:" + d + "'";
            }
            a += ">" + this.df.title + ": </span><span class='ui-priority-primary'>" + "${item." + this.df.abn + "}</span></div>";
            return a;
        }
    }
    ColumnFragmentView.$t = markType(ColumnFragmentView, 'ColumnFragmentView', AnchoredCategorySeriesView.$);
    return ColumnFragmentView;
})();
/**
 * @hidden
 */
export let LineFragmentView = /*@__PURE__*/ (() => {
    class LineFragmentView extends AnchoredCategorySeriesView {
        constructor(a) {
            super(a);
            this.df = null;
            this.dl = new Path();
            this.dk = new Path();
            this.dm = new Path();
            this.di = new Path();
            this.dh = new Path();
            this.dj = new Path();
            this.df = a;
        }
        dg() {
            this.dk.an = null;
            this.dl.an = null;
            this.dm.an = null;
            this.dh.an = null;
            this.di.an = null;
            this.dj.an = null;
        }
        cx() {
            return new LineFragmentBucketCalculator(this);
        }
        bd() {
            super.bd();
        }
        be() {
            super.be();
            let a = this.br();
            this.dh.an = this.dk.an;
            this.di.an = this.dl.an;
            this.dj.an = this.dm.an;
            this.di._stroke = a;
            this.di.ad = this.e.ie + 3;
            this.dj._stroke = a;
            this.dj.ad = this.e.ie + 3;
            this.dh._fill = a;
            this.dh._opacity = 1;
        }
        a8(a, b) {
            super.a8(a, b);
            if (a.d) {
                if (b) {
                    a.t(this.dh);
                    a.t(this.di);
                    a.t(this.dj);
                }
                else {
                    a.t(this.dk);
                    a.t(this.dl);
                    a.t(this.dm);
                }
            }
        }
        get_index() {
            let a = this.df.parentSeries;
            let b = a.series.count;
            let c = a.series.indexOf(this.df.logicalSeriesLink);
            let d = (b - 1) - c;
            let e = a.cv.index;
            return e + d;
        }
        an(a) {
            super.an(a);
            this.e.bc.exportPathData(a, this.dl, "lowerShape", ["Lower", "Main"]);
            this.e.bc.exportPathData(a, this.dm, "upperShape", ["Upper"]);
            this.e.bc.exportPathData(a, this.dk, "translucentShape", ["Translucent"]);
        }
    }
    LineFragmentView.$t = markType(LineFragmentView, 'LineFragmentView', AnchoredCategorySeriesView.$);
    return LineFragmentView;
})();
/**
 * @hidden
 */
export let SplineAreaFragmentView = /*@__PURE__*/ (() => {
    class SplineAreaFragmentView extends SplineSeriesBaseView {
        constructor(a) {
            super(a);
            this.dh = null;
            this.dn = new Path();
            this.dq = new Path();
            this.dp = new Path();
            this.dr = new Path();
            this.dj = new Path();
            this.dl = new Path();
            this.dk = new Path();
            this.dm = new Path();
            this.dh = a;
        }
        au() {
            super.au();
            if (!this.q) {
            }
        }
        di() {
            this.dn.an = null;
            this.dp.an = null;
            this.dq.an = null;
            this.dr.an = null;
            this.dj.an = null;
            this.dk.an = null;
            this.dl.an = null;
            this.dm.an = null;
        }
        bd() {
            super.bd();
        }
        be() {
            super.be();
            let a = this.br();
            this.dj.an = this.dn.an;
            this.dk.an = this.dp.an;
            this.dl.an = this.dq.an;
            this.dm.an = this.dr.an;
            this.dj._fill = a;
            this.dk._fill = a;
            this.dk._opacity = 1;
            this.dj._opacity = 1;
            this.dl._stroke = a;
            this.dl.ad = this.e.ie + 3;
            this.dm._stroke = a;
            this.dm.ad = this.e.ie + 3;
        }
        a8(a, b) {
            super.a8(a, b);
            if (a.d) {
                if (b) {
                    a.t(this.dj);
                    a.t(this.dk);
                    a.t(this.dl);
                    a.t(this.dm);
                }
                else {
                    a.t(this.dn);
                    a.t(this.dp);
                    a.t(this.dq);
                    a.t(this.dr);
                }
            }
        }
        get_index() {
            let a = this.dh.parentSeries;
            let b = a.series.count;
            let c = a.series.indexOf(this.dh.logicalSeriesLink);
            let d = (b - 1) - c;
            let e = a.cv.index;
            return e + d;
        }
        an(a) {
            super.an(a);
            this.e.bc.exportPathData(a, this.dq, "lowerShape", ["Lower"]);
            this.e.bc.exportPathData(a, this.dr, "upperShape", ["Upper", "Main"]);
            this.e.bc.exportPathData(a, this.dp, "translucentShape", ["Translucent"]);
            this.e.bc.exportPathData(a, this.dn, "fillShape", ["Fill"]);
        }
    }
    SplineAreaFragmentView.$t = markType(SplineAreaFragmentView, 'SplineAreaFragmentView', SplineSeriesBaseView.$);
    return SplineAreaFragmentView;
})();
/**
 * @hidden
 */
export let SplineFragmentView = /*@__PURE__*/ (() => {
    class SplineFragmentView extends SplineSeriesBaseView {
        constructor(a) {
            super(a);
            this.dh = null;
            this.dn = new Path();
            this.dm = new Path();
            this.dp = new Path();
            this.dk = new Path();
            this.dj = new Path();
            this.dl = new Path();
            this.dh = a;
        }
        cx() {
            return new SplineFragmentBucketCalculator(this);
        }
        di() {
            this.dm.an = null;
            this.dn.an = null;
            this.dp.an = null;
            this.dj.an = null;
            this.dk.an = null;
            this.dl.an = null;
        }
        bd() {
            super.bd();
        }
        be() {
            super.be();
            let a = this.br();
            this.dj.an = this.dm.an;
            this.dk.an = this.dn.an;
            this.dl.an = this.dp.an;
            this.dk._stroke = a;
            this.dk.ad = this.e.ie + 3;
            this.dl._stroke = a;
            this.dl.ad = this.e.ie + 3;
            this.dj._fill = a;
            this.dj._opacity = 0.75;
        }
        a8(a, b) {
            super.a8(a, b);
            if (a.d) {
                if (b) {
                    a.t(this.dj);
                    a.t(this.dk);
                    a.t(this.dl);
                }
                else {
                    a.t(this.dm);
                    a.t(this.dn);
                    a.t(this.dp);
                }
            }
        }
        get_index() {
            let a = this.dh.parentSeries;
            let b = a.series.count;
            let c = a.series.indexOf(this.dh.logicalSeriesLink);
            let d = (b - 1) - c;
            let e = a.cv.index;
            return e + d;
        }
        an(a) {
            super.an(a);
            this.e.bc.exportPathData(a, this.dn, "lowerShape", ["Lower", "Main"]);
            this.e.bc.exportPathData(a, this.dp, "upperShape", ["Upper"]);
            this.e.bc.exportPathData(a, this.dm, "translucentShape", ["Translucent"]);
        }
    }
    SplineFragmentView.$t = markType(SplineFragmentView, 'SplineFragmentView', SplineSeriesBaseView.$);
    return SplineFragmentView;
})();
/**
 * @hidden
 */
export let StackedSeriesView = /*@__PURE__*/ (() => {
    class StackedSeriesView extends CategorySeriesView {
        constructor(a) {
            super(a);
            this.c5 = null;
            this.c6 = new Canvas();
            this.c8 = new Panel();
            this.c5 = a;
        }
        get c7() {
            return this.c6;
        }
        get c9() {
            return this.c8;
        }
        cx() {
            return new StackedBucketCalculator(this);
        }
        ar() {
            super.ar();
            for (let a = 0; a < this.c5.aa1.f.count; a++) {
                this.c5.aa1.f._inner[a].cv.ar();
            }
        }
        at(a, b) {
            super.at(a, b);
            for (let c of fromEnum(this.c5.series)) {
                c.visualSeriesLink.cv.at(a, b);
            }
        }
        af() {
            let a = "rgba(95,95,95,0.5)";
            let b = true;
            let c = 5, d = 5, e = 5;
            let f = this.e;
            if ((f.isStacked && f.eu) || (f.isStacked && f.f0 && f.eu)) {
                d = 1;
                e = -3;
            }
            else if ((f.isStacked && f.fk) || (f.isStacked && f.f0)) {
                c = 3;
                d = 1;
                e = 4;
                b = false;
            }
            else if ((f.isStacked && f.ez)) {
                d = 5;
                e = 0;
            }
            let g = new Color();
            g.colorString = a;
            f.v1 = g;
            f.jm = c;
            f.jn = d;
            f.jo = e;
            f.hc = b;
        }
    }
    StackedSeriesView.$t = markType(StackedSeriesView, 'StackedSeriesView', CategorySeriesView.$);
    return StackedSeriesView;
})();
/**
 * @hidden
 */
export let StackedBarSeriesView = /*@__PURE__*/ (() => {
    class StackedBarSeriesView extends StackedSeriesView {
        constructor(a) {
            super(a);
            this.da = null;
            this.da = a;
        }
        cx() {
            return new StackedBarBucketCalculator(this);
        }
        au() {
            super.au();
            if (!this.q) {
                this.c5.xa = Defaults.c;
                this.c5.jp = Defaults.i;
            }
        }
    }
    StackedBarSeriesView.$t = markType(StackedBarSeriesView, 'StackedBarSeriesView', StackedSeriesView.$);
    return StackedBarSeriesView;
})();
/**
 * @hidden
 */
export let StackedColumnSeriesView = /*@__PURE__*/ (() => {
    class StackedColumnSeriesView extends StackedSeriesView {
        constructor(a) {
            super(a);
        }
        cx() {
            return new StackedColumnBucketCalculator(this);
        }
        au() {
            super.au();
            if (!this.q) {
                this.c5.xa = Defaults.c;
                this.c5.jp = Defaults.i;
            }
        }
    }
    StackedColumnSeriesView.$t = markType(StackedColumnSeriesView, 'StackedColumnSeriesView', StackedSeriesView.$);
    return StackedColumnSeriesView;
})();
/**
 * @hidden
 */
export let StackedAreaSeriesView = /*@__PURE__*/ (() => {
    class StackedAreaSeriesView extends StackedSeriesView {
        constructor(a) {
            super(a);
        }
        au() {
            super.au();
            if (!this.q) {
                this.c5.xa = Defaults.e;
            }
        }
    }
    StackedAreaSeriesView.$t = markType(StackedAreaSeriesView, 'StackedAreaSeriesView', StackedSeriesView.$);
    return StackedAreaSeriesView;
})();
/**
 * @hidden
 */
export let StackedSplineAreaSeriesView = /*@__PURE__*/ (() => {
    class StackedSplineAreaSeriesView extends StackedSeriesView {
        constructor(a) {
            super(a);
        }
        au() {
            super.au();
            if (!this.q) {
                this.c5.xa = Defaults.e;
            }
        }
        da() {
            let a = 1;
            if (this.c5.db != null) {
                a = this.c5.db.hi;
            }
            return Math.max(1 / (a * 3), 0.3);
        }
    }
    StackedSplineAreaSeriesView.$t = markType(StackedSplineAreaSeriesView, 'StackedSplineAreaSeriesView', StackedSeriesView.$);
    return StackedSplineAreaSeriesView;
})();
/**
 * @hidden
 */
export let StackedSplineSeriesView = /*@__PURE__*/ (() => {
    class StackedSplineSeriesView extends StackedSeriesView {
        constructor(a) {
            super(a);
        }
        au() {
            super.au();
            if (!this.q) {
                this.c5.xa = Defaults.e;
            }
        }
        da() {
            let a = 1;
            if (this.c5.db != null) {
                a = this.c5.db.hi;
            }
            return Math.max(1 / (a * 3), 0.3);
        }
    }
    StackedSplineSeriesView.$t = markType(StackedSplineSeriesView, 'StackedSplineSeriesView', StackedSeriesView.$);
    return StackedSplineSeriesView;
})();
/**
 * @hidden
 */
export let StackedSeriesManager = /*@__PURE__*/ (() => {
    class StackedSeriesManager extends Base {
        constructor(a) {
            super();
            this.b = null;
            this.f = null;
            this.c = null;
            this.e = null;
            this.d = null;
            this.l = null;
            this.m = null;
            if (a == null) {
                return;
            }
            this.b = a;
            this.f = new ObservableCollection$1(AnchoredCategorySeries.$, 0);
            this.c = new StackedSeriesCollection();
            this.e = new ObservableCollection$1(AnchoredCategorySeries.$, 0);
            this.d = new ObservableCollection$1(AnchoredCategorySeries.$, 0);
            this.l = this.b.aa2.c7;
            this.m = this.b.aa2.c9;
            let b = this.c;
            b.collectionChanged = delegateCombine(b.collectionChanged, (b, c) => {
                if (c.oldItems != null) {
                    for (let d of fromEn(c.oldItems)) {
                        if (this.f.contains(d.visualSeriesLink)) {
                            this.f.remove(d.visualSeriesLink);
                        }
                    }
                }
                if (c.newItems != null) {
                    let e = c.newStartingIndex;
                    for (let f of fromEn(c.newItems)) {
                        let g = this.a(f);
                        this.f.insert(e, g);
                        e++;
                    }
                }
            });
            let c = this.f;
            c.collectionChanged = delegateCombine(c.collectionChanged, (c, d) => {
                if (d.oldItems != null) {
                    for (let e of fromEn(d.oldItems)) {
                        Series.pm(e, this.b.db, true);
                        e.o5(true, e.cv);
                        e.db = null;
                        e.c3 = null;
                        e.itemsSource = null;
                        e.legend = null;
                        if (this.m != null && this.m.ab.contains(e)) {
                            this.m.ab.remove(e);
                        }
                        if (this.b.db != null) {
                            this.b.db.q4(e);
                        }
                    }
                }
                if (d.newItems != null) {
                    for (let f of fromEn(d.newItems)) {
                        Series.pm(f, this.b.db, false);
                        f.db = this.b.db;
                        f.c3 = this.b.c3;
                        if (!this.m.ab.contains(f)) {
                            this.m.ab.add(f);
                        }
                        if (this.b.db != null) {
                            this.b.db.m8(f);
                        }
                    }
                }
                this.b.rr(false);
            });
        }
        a(a) {
            if (this.b.isStacked && this.b.fk) {
                let b = new LineFragment();
                b.provideRenderer(a.b5);
                b.parentSeries = this.b;
                a.visualSeriesLink = b;
                b.logicalSeriesLink = a;
                b.cv.bx = this.b.cv.bx;
                this.j(b, a);
                this.h(b);
                return b;
            }
            if (this.b.isStacked && this.b.ez) {
                let c = new ColumnFragment();
                c.provideRenderer(a.b5);
                c.parentSeries = this.b;
                a.visualSeriesLink = c;
                c.logicalSeriesLink = a;
                c.cv.bx = this.b.cv.bx;
                this.j(c, a);
                this.h(c);
                return c;
            }
            if (this.b.isStacked && this.b.ex) {
                let d = new BarFragment();
                d.provideRenderer(a.b5);
                d.parentSeries = typeCast(StackedBarSeries.$, this.b);
                a.visualSeriesLink = d;
                d.logicalSeriesLink = a;
                d.cv.bx = this.b.cv.bx;
                this.j(d, a);
                this.h(d);
                return d;
            }
            if (this.b.isStacked && this.b.eu && !this.b.f0) {
                let e = new AreaFragment();
                e.provideRenderer(a.b5);
                e.parentSeries = this.b;
                a.visualSeriesLink = e;
                e.logicalSeriesLink = a;
                e.cv.bx = this.b.cv.bx;
                this.j(e, a);
                this.h(e);
                return e;
            }
            if (this.b.isStacked && this.b.f0 && !this.b.eu) {
                let f = new SplineFragment();
                f.provideRenderer(a.b5);
                f.parentSeries = this.b;
                a.visualSeriesLink = f;
                f.logicalSeriesLink = a;
                f.cv.bx = this.b.cv.bx;
                this.j(f, a);
                this.h(f);
                return f;
            }
            if (this.b.isStacked && this.b.f0 && this.b.eu) {
                let g = new SplineAreaFragment();
                g.provideRenderer(a.b5);
                g.parentSeries = this.b;
                a.visualSeriesLink = g;
                g.logicalSeriesLink = a;
                g.cv.bx = this.b.cv.bx;
                this.j(g, a);
                this.h(g);
                return g;
            }
            return null;
        }
        k() {
            if (this.b == null) {
                return;
            }
            for (let a of fromEnum(this.f)) {
                a.jj = this.b.id;
            }
        }
        j(a, b) {
            if (b.itemsSource == null) {
                a.itemsSource = this.b.itemsSource;
            }
            else {
                a.itemsSource = b.itemsSource;
            }
            if (b.highlightedItemsSource == null) {
                a.highlightedItemsSource = this.b.highlightedItemsSource;
            }
            else {
                a.highlightedItemsSource = b.highlightedItemsSource;
            }
            a.legend = this.b.a5;
            a.legendItemTemplate = b.ho;
            a.legendItemVisibility = b.ls;
            a.jh = this.b.jh;
            a.v4 = b.la;
            a.v2 = b.k7;
            a.v3 = b.k9;
            a.vf = b.k4;
            a._opacity = b.by;
            a.vv = b.ky;
            a.ci = b.aa;
            a.jj = this.b.jj;
            a.jp = b.bl;
            a.title = b.cj;
            a.abn = b.ft;
            a.abj = b.fp;
            a.abl = b.fr;
            a._visibility = b.lt;
            a.jf = b.bc;
            a.bv = b.z;
            a.l3 = b.d9;
            a.mj = b.ed;
            a.yj = b.kv;
            a.yk = b.kw;
            a.w4 = b.u;
            a.yl = b.lq;
            a.x2 = b.hp;
            a.xa = b.w;
            a.xj = b.be;
            a.jg = b.bd;
            a.w0 = b.s;
            a.xi = b.aq;
            a.zq = b.ap;
            a.kd = b.b6;
            a.dd = b.ag;
            a.ke = b.b7;
            a.y5 = b.m;
            a.c5 = b.ad;
            a.ke = b.b7;
            a.de = b.ah;
            a.zl = b.ao;
            let c = typeCast(AreaFragment.$, a);
            if (c != null) {
                c.h9 = b.bb;
            }
            let d = typeCast(SplineAreaFragment.$, a);
            if (d != null) {
                d.h9 = b.bb;
            }
            let e = typeCast(ColumnFragment.$, a);
            if (e != null) {
                e.adb = b.bg;
                e.adc = b.bh;
            }
            let f = typeCast(BarFragment.$, a);
            if (f != null) {
                f.adb = b.bg;
                f.adc = b.bh;
            }
            a.toolTip = b.ck;
            a.e4 = b.al;
            a.hc = b.ar;
            b.g3();
            b.g4();
            b.g5();
            b.g6();
        }
        i(a) {
            this.e.clear();
            this.d.clear();
            let b = 0;
            for (let c of fromEnum(this.f)) {
                c.g0 = true;
                c.index = this.b.abe(this.c._inner[b]);
                c.c3 = this.b.c3;
                c.db = this.b.db;
                if (this.c._inner[b].az) {
                    this.e.add(c);
                }
                else {
                    this.d.add(c);
                }
                if ((this.b.isStacked && this.b.fk) || (this.b.isStacked && this.b.eu) || (this.b.isStacked && this.b.f0)) {
                    c.abr(this.b.fetchXAxis());
                    c.abs(this.b.fetchYAxis());
                }
                c.rr(a);
                b++;
            }
        }
        h(a) {
            let fragment_ = a;
            fragment_.externalObject = TypeRegistrar.createFromInternal(fragment_, PlatformConstants.Prefix, PlatformConstants.Postfix);
            fragment_.externalObject._implementation = fragment_;
        }
        g() {
            if (this.f != null) {
                for (let a of fromEnum(this.f)) {
                    a.o2();
                }
            }
        }
    }
    StackedSeriesManager.$t = markType(StackedSeriesManager, 'StackedSeriesManager');
    return StackedSeriesManager;
})();