/*
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 { __extends } from "tslib";
import { FinancialSeries } from "./FinancialSeries";
import { ITrendLineSeries_$type } from "./ITrendLineSeries";
import { IndicatorDisplayType_$type } from "./IndicatorDisplayType";
import { DependencyProperty } from "igniteui-react-core";
import { TrendLineType_$type } from "igniteui-react-core";
import { Brush } from "igniteui-react-core";
import { PenLineCap_$type } from "igniteui-react-core";
import { DoubleCollection } from "igniteui-react-core";
import { List$1 } from "igniteui-react-core";
import { AxisRange } from "./AxisRange";
import { CategoryFrame } from "./CategoryFrame";
import { Number_$type, typeCast, enumGetBox, EnumUtil, runOn, markType, markDep } from "igniteui-react-core";
import { Rect } from "igniteui-react-core";
import { ScalerParams } from "./ScalerParams";
import { ISortingAxis_$type } from "./ISortingAxis";
import { CategoryTrendLineManagerFactory } from "./CategoryTrendLineManagerFactory";
import { FinancialSeriesView } from "./FinancialSeriesView";
import { FinancialBucketCalculator } from "./FinancialBucketCalculator";
import { TrendResolutionParams } from "./TrendResolutionParams";
import { CategorySeries } from "./CategorySeries";
import { NotImplementedException } from "igniteui-react-core";
import { Path } from "igniteui-react-core";
import { PropertyMetadata } from "igniteui-react-core";
import { isNaN_ } from "igniteui-react-core";
import { PathGeometry } from "igniteui-react-core";
import { GeometryGroup } from "igniteui-react-core";
import { Pool$1 } from "igniteui-react-core";
import { LineGeometry } from "igniteui-react-core";
import { Defaults } from "./Defaults";
import { Extensions } from "igniteui-react-core";
import { IndicatorRenderer } from "./IndicatorRenderer";
/**
 * @hidden
 */
var FinancialIndicator = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(FinancialIndicator, _super);
    function FinancialIndicator() {
        var _this = _super.call(this) || this;
        _this._indicatorColumn = null;
        _this.aar = null;
        _this.w1 = new CategoryFrame(3);
        _this.w3 = new CategoryFrame(3);
        _this.wz = new CategoryFrame(3);
        _this.indicatorColumn = new List$1(Number_$type, 0);
        _this.aar = new AxisRange(-100, 100);
        return _this;
    }
    FinancialIndicator.prototype.get_e5 = function () {
        return true;
    };
    FinancialIndicator.prototype.cq = function () {
        return new FinancialIndicatorView(this);
    };
    FinancialIndicator.prototype.qw = function (a) {
        _super.prototype.qw.call(this, a);
        this.aas = a;
    };
    FinancialIndicator.prototype.aa5 = function (a) {
        if (this.xg != null && !this.xg.c1()) {
            this.rm(true);
        }
    };
    FinancialIndicator.prototype.aax = function (a, b, c) {
        if (isNaN_(b.x) || isNaN_(b.y)) {
            return false;
        }
        var d = this.xg;
        var e = 0;
        if (d != null) {
            e = d.e5(d.l8);
        }
        if ((a.y >= e && a.y <= b.y) || (a.y <= e && a.y >= b.y)) {
            return true;
        }
        return false;
    };
    FinancialIndicator.prototype.b0 = function () {
        if (this.b1 == 0) {
            return 1;
        }
        else {
            return _super.prototype.b0.call(this);
        }
    };
    FinancialIndicator.prototype.wg = function (a) {
        if (this.wx == null || this.xg == null) {
            return Rect.empty;
        }
        var b = this.v0(a);
        var c = this.ct.by;
        var d = this.ct.bx;
        var e = this.getEffectiveViewport1(this.ct);
        var f = new ScalerParams(0, c, d, this.xg.ch, e);
        f.b = this.iw();
        var g = this.am(this.wx, this.wz.f, this.yu(this.ct), this.yw(this.ct), a, true);
        if (g == null) {
            return Rect.empty;
        }
        var h = g[0];
        var i = g[1];
        var j = Math.abs(b.x - h[0]);
        var k = Math.abs(b.x - i[0]);
        var l = this.xg.ek(this.xg.l8, f);
        var m = 1;
        if (j < k) {
            var n = h[0] - 0.5 * m;
            var o = h[1];
            var p = l;
            return new Rect(0, n, Math.min(o, p), m, Math.max(o, p) - Math.min(o, p));
        }
        else {
            var q = i[0] - 0.5 * m;
            var r = i[1];
            var s = l;
            return new Rect(0, q, Math.min(r, s), m, Math.max(r, s) - Math.min(r, s));
        }
    };
    FinancialIndicator.prototype.gu = function (a, b) {
        var c = this.v5(this.wa(a), true, false);
        if (this.aau == 1) {
            if (this.aax(a, c, b)) {
                return true;
            }
        }
        if (this.aau == 1 || this.aau == 0) {
            if (this.gt(a, b)) {
                return true;
            }
        }
        if (this.aau == 2) {
            if (this.gx(a, b)) {
                return true;
            }
        }
        return false;
    };
    FinancialIndicator.prototype.o8 = function (a, b, c, d) {
        _super.prototype.o8.call(this, a, b, c, d);
        if (this.wx != null && typeCast(ISortingAxis_$type, this.wx) !== null) {
            this.wx.i$i();
        }
        if (this.aas.ca) {
            this.aas.b8.g$e(a, b, c, d);
        }
        if (d != null && this.x9.containsKey(d)) {
            var e = this.x9.tryGetValue(d, d);
            d = e.p1;
        }
        if (this.wx != null && typeCast(ISortingAxis_$type, this.wx) !== null) {
            a = 4;
            b = 0;
            c = this.dl.count;
        }
        switch (a) {
            case 3:
                if (this.aaw(b, c, d)) {
                    this.aa7(b, c, d);
                    this.aa5(true);
                }
                break;
            case 2:
                if (this.aaw(b, this.dl.count - b, d)) {
                    this.aa7(b, this.dl.count - b, d);
                    this.aa5(true);
                }
                break;
            case 1:
                if (this.aaw(b, this.dl.count - b, d)) {
                    var f = new Array(c);
                    for (var g = 0; g < c; g++) {
                        f[g] = 0;
                    }
                    this.indicatorColumn.s(b, f);
                    this.aa7(b, this.dl.count - b, d);
                    this.aa5(true);
                }
                break;
            case 0:
                if (this.aaw(b, this.dl.count - b, d)) {
                    this.indicatorColumn.v(b, c);
                    this.aa7(b, this.dl.count - b, d);
                    this.aa5(true);
                }
                break;
            case 4:
                if (this.aaw(b, this.dl.count - b, d)) {
                    this.indicatorColumn = new List$1(Number_$type, 2, this.dl.count);
                    var h = new Array(c);
                    for (var i = 0; i < c; i++) {
                        h[i] = 0;
                    }
                    this.indicatorColumn.s(0, h);
                    this.aa7(b, this.dl.count - b, d);
                    this.aa5(true);
                }
                break;
        }
    };
    FinancialIndicator.prototype.get_aat = function () {
        return 0;
    };
    Object.defineProperty(FinancialIndicator.prototype, "aat", {
        get: function () {
            return this.get_aat();
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FinancialIndicator.prototype, "abi", {
        get: function () {
            return this.c(FinancialIndicator.aa8);
        },
        set: function (a) {
            this.h(FinancialIndicator.aa8, a);
        },
        enumerable: false,
        configurable: true
    });
    FinancialIndicator.prototype.aa2 = function () {
        return -1;
    };
    Object.defineProperty(FinancialIndicator.prototype, "indicatorColumn", {
        get: function () {
            return this._indicatorColumn;
        },
        set: function (a) {
            this._indicatorColumn = a;
        },
        enumerable: false,
        configurable: true
    });
    FinancialIndicator.prototype.q4 = function (a, b, c, d) {
        switch (b) {
            case "XAxis":
                this.aas.cg();
                break;
            case "TrendLineType":
                var e = EnumUtil.getEnumValue(TrendLineType_$type, d);
                if (e != 0) {
                    this.aas.b8 = CategoryTrendLineManagerFactory.a(this.aas.b8, this.wx, this.so, this, this.dp);
                }
                break;
        }
        _super.prototype.q4.call(this, a, b, c, d);
        if (this.aas.ca && this.aas.b8.g$b(a, b, c, d)) {
            this.rm(false);
            var f = typeCast(FinancialIndicatorView.$, this.cs);
            if (f != null && f.ca) {
                f.b8.g$b(a, b, c, d);
            }
            this.qg();
        }
        switch (b) {
            case "FastItemsSource":
                if (this.dl != null) {
                    this.indicatorColumn = new List$1(Number_$type, 2, this.dl.count);
                    var g = new Array(this.dl.count);
                    for (var h = 0; h < this.dl.count; h++) {
                        g[h] = 0;
                    }
                    this.indicatorColumn.s(0, g);
                    this.aa7(0, this.dl.count, null);
                    if (this.xg != null && !this.xg.c1()) {
                        this.xe.b0.e(this.ib);
                        this.rm(this.ge && c != null);
                    }
                }
                break;
            case "TrendLineBrush":
                this.ra(b);
                break;
            case FinancialIndicator.$$p[0]:
                this.o2(true, this.ct);
                this.sb();
                this.rm(false);
                this.qg();
                break;
            case "OpenColumn":
            case "HighColumn":
            case "LowColumn":
            case "CloseColumn":
            case "VolumeColumn":
                if (this.dl != null) {
                    if (this.indicatorColumn.count != this.dl.count) {
                        this.indicatorColumn = new List$1(Number_$type, 2, this.dl.count);
                        var i = new Array(this.dl.count);
                        for (var j = 0; j < this.dl.count; j++) {
                            i[j] = 0;
                        }
                        this.indicatorColumn.s(0, i);
                    }
                    if (this.aaw(0, this.dl.count - 1, b)) {
                        this.aa6();
                    }
                }
                break;
            case "XAxis":
                if (this.wx != null && (typeCast(ISortingAxis_$type, this.wx) !== null || typeCast(ISortingAxis_$type, c) !== null)) {
                    this.aa6();
                }
                break;
            case "YAxis":
            case FinancialIndicator.$$p[1]:
                this.aa6();
                this.qg();
                break;
            case "TrendLineType":
                this.qg();
                break;
        }
    };
    FinancialIndicator.prototype.i3 = function (a, b, c) {
        if (this.indicatorColumn == null) {
            return _super.prototype.i3.call(this, a, b, c);
        }
        var d = this.getEffectiveViewport1(this.ct);
        var e = this.yo(this.ct.by, this.ct.bx, d);
        var f = new ScalerParams(0, this.ct.by, this.ct.bx, this.wx.ch, d);
        f.c = this.c9.v0;
        return this.i5(this.indicatorColumn, a, this.wx, f, e, runOn(this, this.yn), b, c);
    };
    FinancialIndicator.prototype.j8 = function (a, b) {
        if (this.indicatorColumn == null) {
            return _super.prototype.j8.call(this, a, b);
        }
        return this.j9(a, b, this.wx, runOn(this, this.yn), this.indicatorColumn);
    };
    FinancialIndicator.prototype.j6 = function (a, b) {
        if (this.indicatorColumn == null) {
            return _super.prototype.j6.call(this, a, b);
        }
        return this.j7(a, b, this.wx, runOn(this, this.yn), this.indicatorColumn);
    };
    FinancialIndicator.prototype.get_hb = function () {
        return true;
    };
    FinancialIndicator.prototype.aaw = function (a, b, c) {
        if (c == null) {
            return true;
        }
        if (this.aay(a, b).contains(c)) {
            return true;
        }
        return false;
    };
    FinancialIndicator.prototype.aa7 = function (a, b, c) {
        this.aav(a, b);
    };
    FinancialIndicator.prototype.ax = function (a) {
        if (this.dl == null) {
            return null;
        }
        if (a != null && a == this.xg) {
            return this.aar;
        }
        return null;
    };
    FinancialIndicator.prototype.gb = function (a) {
        var b = this.dl != null ? this.dl.indexOf(a) : -1;
        var c = this.ct.by;
        c = c.copy();
        var d = this.ct.bx;
        var e = new Rect(0, 0, 0, 1, 1);
        var f = this.we(this.ct);
        if (b >= 0 && Rect.l_op_Inequality(c, null) && Rect.l_op_Inequality(d, null)) {
            if (this.wx != null) {
                var g = new ScalerParams(0, e, e, this.wx.ch, f);
                var h = this.wx.ek(b, g);
                if (h < c.left + 0.1 * c.width) {
                    h = h + 0.4 * c.width;
                }
                if (h > c.right - 0.1 * c.width) {
                    h = h - 0.4 * c.width;
                }
                c.x = h - 0.5 * c.width;
            }
            if (this.xg != null && this.indicatorColumn != null && b < this.indicatorColumn.count) {
                var i = new ScalerParams(0, e, e, this.xg.ch, f);
                i.b = this.iw();
                var j = this.xg.ek(this.indicatorColumn._inner[b], i);
                if (j < c.top + 0.1 * c.height) {
                    j = j + 0.4 * c.height;
                }
                if (j > c.bottom - 0.1 * c.height) {
                    j = j - 0.4 * c.height;
                }
                c.y = j - 0.5 * c.height;
            }
            this.c1.au(this.c9, c, true);
        }
        return b >= 0;
    };
    FinancialIndicator.prototype.hc = function (a, b, c) {
        var d = _super.prototype.hc.call(this, a, b, c);
        if (this.indicatorColumn == null || this.indicatorColumn.count == 0) {
            d = false;
        }
        return d;
    };
    FinancialIndicator.prototype.z3 = function (a, b) {
        var _this = this;
        _super.prototype.z3.call(this, a, b);
        var c = b.by;
        var d = b.bx;
        var e = this.getEffectiveViewport1(b);
        var f = this.wx;
        var g = this.xg;
        var h = new ScalerParams(0, c, d, f.ch, e);
        var i = new ScalerParams(0, c, d, g.ch, e);
        i.b = this.iw();
        var j = this.wx.ag();
        var k = j[0];
        var l = j[1];
        a.f.clear();
        a.n.clear();
        a.q.clear();
        var m = 0;
        var n = typeCast(ISortingAxis_$type, this.wx);
        if (n != null && n.i$b.count != this.dl.count) {
            return;
        }
        m = this.yo(c, d, e);
        var o = this.aa2();
        if (o == -1) {
            o = this.trendLinePeriod;
        }
        var p = typeCast(FinancialIndicatorView.$, b);
        if (p.ca) {
            p.b8.prepareLineCore(a.q, this.trendLineType, this.indicatorColumn, o, function (q) { return _this.wx.ek(q, h); }, function (q) { return _this.xg.ek(q, i); }, ((function () {
                var $ret = new TrendResolutionParams();
                $ret.e = b.b0.b;
                $ret.f = b.b0.c;
                $ret.g = b.b0.d;
                $ret.a = m;
                $ret.d = _this.ib;
                $ret.i = d;
                $ret.j = c;
                $ret.h = e;
                $ret.b = l;
                $ret.c = k;
                return $ret;
            })()));
        }
        var q = this.wx.en(2, h) - this.wx.en(1, h);
        for (var r = b.b0.c; r <= b.b0.d; ++r) {
            var s = void 0;
            if (n == null) {
                s = b.b0.getBucket(r);
            }
            else {
                var t = n.i$b._inner[r];
                var u = n.i$d(t);
                var v = this.indicatorColumn._inner[r];
                var w = v;
                var x = u;
                while (r < b.b0.d) {
                    t = n.i$b._inner[r + 1];
                    x = n.i$d(t);
                    if (x - u > q) {
                        break;
                    }
                    r++;
                    var y = this.indicatorColumn._inner[r];
                    v = Math.min(v, y);
                    w = Math.max(w, y);
                }
                var z = NaN;
                if (!isNaN_(u)) {
                    z = this.wx.ek(u, h);
                }
                s = [z, v, w];
            }
            if (!isNaN_(s[0])) {
                if (this.wx != null && typeCast(ISortingAxis_$type, this.wx) !== null) {
                    s[0] = s[0] + m;
                }
                else {
                    s[0] = f.ek(s[0], h) + m;
                }
                s[1] = g.ek(s[1], i);
                if (b.b0.b > 1 || n != null) {
                    s[2] = g.ek(s[2], i);
                }
                else {
                    s[2] = s[1];
                }
                a.f.add(s);
            }
        }
        return;
    };
    FinancialIndicator.prototype.o2 = function (a, b) {
        _super.prototype.o2.call(this, a, b);
        var c = b;
        c.cb(a);
        if (c.ca) {
            c.b8.g$d();
        }
    };
    FinancialIndicator.prototype.w7 = function () {
        switch (this.aau) {
            case 1: return 1;
            case 2: return 1;
            case 0: return 12;
        }
        return 1;
    };
    FinancialIndicator.prototype.z5 = function (a, b) {
        _super.prototype.z5.call(this, a, b);
        var c = typeCast(FinancialIndicatorView.$, b);
        var d = function (e) { return a.f._inner[e][0]; };
        var e = function (f) { return a.f._inner[f][1]; };
        if (c.ca) {
            c.b8.g$d();
            c.b8.g$g(a.q);
        }
        var f = b.bx;
        var g = this.getEffectiveViewport1(b);
        var h = 0;
        var i = this.u2;
        var j = this.aan;
        if (b.b3(a)) {
            c.cb(false);
            if (a.f.count > 0) {
                switch (this.aau) {
                    case 0:
                        var k = CategorySeries.ye(a.f, a.f.count - 1, f, b.by, false);
                        c.cf(a.f.count, d, e, true, k);
                        break;
                    case 1:
                        if (this.xg != null) {
                            h = this.ys(b);
                        }
                        else {
                            h = 0.5 * (f.top + f.bottom);
                        }
                        var l = CategorySeries.ye(a.f, a.f.count - 1, f, b.by, false);
                        c.cd(a.f.count, d, e, true, h, l);
                        break;
                    case 2:
                        h = this.ys(b);
                        c.ce(a.f.count, d, e, true, h);
                        break;
                    default: throw new NotImplementedException(0);
                }
            }
            b.b5(a);
        }
        var m = a.f;
        var n = this.dl.count;
        this.w6.a2(this, this.x5(), runOn(this, this.wp), this.yu(b), this.yw(b));
        var o = false;
        var p = this.w6.b;
        if (p != null) {
            o = true;
        }
        this.w6.ak = i;
        this.w6.ag = i;
        if (o) {
            var q = new ScalerParams(0, b.by, b.bx, this.wx.ch, g);
            this.w6.f = false;
            this.z2(m, -1, n, this.wx, q, b.q, -1);
        }
        this.w6.ad(c.cx, true, false, true, false);
        this.w6.ad(c.cz, true, false, true, false);
        this.w6.ad(c.cy, false, true, false, false);
        c.cy._opacity = 0.8 * this.w6.j * this.h7;
        this.w6.ad(c.cw, true, false, false, false);
        this.w6.ak = j;
        this.w6.ag = j;
        if (o) {
            var r = new ScalerParams(0, b.by, b.bx, this.wx.ch, g);
            this.w6.f = true;
            this.z2(m, -1, n, this.wx, r, b.q, -1);
        }
        this.w6.ad(c.ct, true, false, true, false);
        this.w6.ad(c.cv, true, false, true, false);
        this.w6.ad(c.cu, false, true, false, false);
        c.cu._opacity = 0.8 * this.w6.j * this.h7;
        this.w6.ad(c.cs, true, false, false, false);
        c.ch();
    };
    FinancialIndicator.prototype.sa = function () {
        _super.prototype.sa.call(this);
        if (this.index < 0) {
            return;
        }
        if (this.aas.ca) {
            this.aas.ci();
        }
    };
    FinancialIndicator.prototype.aa6 = function () {
        if (this.aas.ca) {
            this.aas.b8.g$i();
        }
        this.aav(0, this.indicatorColumn.count);
        if (this.xg != null && !this.xg.c1()) {
            this.rm(this.ge && this.d5);
        }
    };
    FinancialIndicator.prototype.pu = function (a) {
        _super.prototype.pu.call(this, a);
        this.bb.exportTrendlineData(this, a, this.aas.b8.g$j);
    };
    FinancialIndicator.prototype.bd = function (a) {
        if (this.aau == 1 || this.aau == 2) {
            return 3;
        }
        else if (this.aau == 0) {
            return 2;
        }
        return a;
    };
    FinancialIndicator.$t = markType(FinancialIndicator, 'FinancialIndicator', FinancialSeries.$, [ITrendLineSeries_$type]);
    FinancialIndicator.aa8 = DependencyProperty.i("ActualTrendLineBrush", Brush.$, FinancialIndicator.$, new PropertyMetadata(2, null, function (a, b) { return a.raisePropertyChanged("ActualTrendLineBrush", b.oldValue, b.newValue); }));
    FinancialIndicator.$$p = markDep(DependencyProperty, PropertyMetadata, FinancialIndicator, 'raisePropertyChanged', ['DisplayType:aau:aa9', [IndicatorDisplayType_$type, enumGetBox(IndicatorDisplayType_$type, 0)], 'IgnoreFirst:aa0:aba', [1, 0], 'TrendLineType::abg', [TrendLineType_$type, enumGetBox(TrendLineType_$type, 0)], 'TrendLineThickness::abf', [1, 1.5], 'TrendLinePeriod::abe', [1, 7], 'TrendLineBrush::abb', [Brush.$, null], 'TrendLineZIndex:aa1:abh', [1, 1001], 'TrendLineDashArray:abj:abc', [DoubleCollection.$], 'TrendLineDashCap:abk:abd', [PenLineCap_$type, enumGetBox(PenLineCap_$type, 0)]]);
    return FinancialIndicator;
}(FinancialSeries));
export { FinancialIndicator };
/**
 * @hidden
 */
var FinancialIndicatorBucketCalculator = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(FinancialIndicatorBucketCalculator, _super);
    function FinancialIndicatorBucketCalculator(a) {
        var _this = _super.call(this, a) || this;
        _this.f = null;
        _this.f = a;
        return _this;
    }
    FinancialIndicatorBucketCalculator.prototype.getBucket = function (a) {
        var b = a * this.b;
        var c = Math.min(b + this.b - 1, this.f.b6.indicatorColumn.count - 1);
        var d = NaN;
        var e = NaN;
        for (var f = b; f <= c; ++f) {
            var g = this.f.b6.indicatorColumn._inner[f];
            if (!isNaN_(d)) {
                if (!isNaN_(g)) {
                    d = Math.min(d, g);
                    e = Math.max(e, g);
                }
            }
            else {
                d = g;
                e = g;
            }
        }
        if (!isNaN_(d)) {
            return [0.5 * (b + c), d, e];
        }
        return [NaN, NaN, NaN];
    };
    FinancialIndicatorBucketCalculator.$t = markType(FinancialIndicatorBucketCalculator, 'FinancialIndicatorBucketCalculator', FinancialBucketCalculator.$);
    return FinancialIndicatorBucketCalculator;
}(FinancialBucketCalculator));
export { FinancialIndicatorBucketCalculator };
/**
 * @hidden
 */
var FinancialIndicatorView = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(FinancialIndicatorView, _super);
    function FinancialIndicatorView(a) {
        var _this = _super.call(this, a) || this;
        _this.b6 = null;
        _this.b9 = null;
        _this.cx = ((function () {
            var $ret = new Path();
            $ret.an = new PathGeometry();
            return $ret;
        })());
        _this.ct = ((function () {
            var $ret = new Path();
            $ret.an = new PathGeometry();
            return $ret;
        })());
        _this.cy = ((function () {
            var $ret = new Path();
            $ret.an = new PathGeometry();
            return $ret;
        })());
        _this.cu = ((function () {
            var $ret = new Path();
            $ret.an = new PathGeometry();
            return $ret;
        })());
        _this.cz = ((function () {
            var $ret = new Path();
            $ret.an = new PathGeometry();
            return $ret;
        })());
        _this.cv = ((function () {
            var $ret = new Path();
            $ret.an = new PathGeometry();
            return $ret;
        })());
        _this.cw = ((function () {
            var $ret = new Path();
            $ret.an = new GeometryGroup();
            return $ret;
        })());
        _this.cs = ((function () {
            var $ret = new Path();
            $ret.an = new GeometryGroup();
            return $ret;
        })());
        _this.b7 = null;
        _this.cp = new Path();
        _this.cr = new Path();
        _this.cq = new Path();
        _this.co = new Path();
        _this.cl = new Path();
        _this.cn = new Path();
        _this.cm = new Path();
        _this.ck = new Path();
        _this.b6 = a;
        _this.b9 = ((function () {
            var $ret = new Pool$1(LineGeometry.$);
            $ret.create = runOn(_this, _this.cj);
            $ret.destroy = runOn(_this, _this.cc);
            return $ret;
        })());
        return _this;
    }
    FinancialIndicatorView.prototype.b1 = function () {
        return new FinancialIndicatorBucketCalculator(this);
    };
    FinancialIndicatorView.prototype.au = function () {
        _super.prototype.au.call(this);
        if (!this.q) {
            this.b6.aan = Defaults.ah;
            this.b6.aau = this.b6.aat;
        }
    };
    FinancialIndicatorView.prototype.cj = function () {
        return new LineGeometry();
    };
    FinancialIndicatorView.prototype.cc = function (a) {
    };
    Object.defineProperty(FinancialIndicatorView.prototype, "b8", {
        get: function () {
            if (this.b7 == null) {
                this.b7 = CategoryTrendLineManagerFactory.a(this.b7, this.e.az(), this.e.so, this.e, this.e.dp);
            }
            return this.b7;
        },
        set: function (a) {
            this.b7 = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FinancialIndicatorView.prototype, "ca", {
        get: function () {
            return this.b7 != null;
        },
        enumerable: false,
        configurable: true
    });
    FinancialIndicatorView.prototype.cb = function (a) {
        Extensions.e(this.cx.an);
        Extensions.e(this.cy.an);
        Extensions.e(this.cz.an);
        Extensions.e(this.ct.an);
        Extensions.e(this.cu.an);
        Extensions.e(this.cv.an);
        Extensions.d(this.cw.an);
        Extensions.d(this.cs.an);
        if (a) {
            this.b9.count = 0;
        }
        this.as();
    };
    FinancialIndicatorView.prototype.ch = function () {
    };
    FinancialIndicatorView.prototype.cf = function (a, b, c, d, e) {
        IndicatorRenderer.g(a, b, c, d, this.by, this.bx, this.cx, this.ct, this.b0.b, this.e.ib, e);
        this.as();
    };
    FinancialIndicatorView.prototype.cd = function (a, b, c, d, e, f) {
        IndicatorRenderer.e(a, b, c, d, this.by, this.bx, this.cx, this.cy, this.ct, this.cu, e, this.b0.b, this.e.ib, f);
        this.as();
    };
    FinancialIndicatorView.prototype.ce = function (a, b, c, d, e) {
        IndicatorRenderer.f(a, b, c, d, this.bx, e, this.b9, this.cw, this.cs);
        this.as();
    };
    FinancialIndicatorView.prototype.ci = function () {
        this.b6.abi = null;
        if (this.b6.trendLineBrush != null) {
            this.b6.abi = this.b6.trendLineBrush;
        }
        else {
            this.b6.abi = this.b6.u2;
        }
    };
    FinancialIndicatorView.prototype.be = function () {
        _super.prototype.be.call(this);
        var a = this.br();
        this.cp.an = this.cx.an;
        this.cr.an = this.cz.an;
        this.cq.an = this.cy.an;
        this.co.an = this.cw.an;
        this.cl.an = this.ct.an;
        this.cn.an = this.cv.an;
        this.cm.an = this.cu.an;
        this.ck.an = this.cs.an;
        this.cp._stroke = a;
        this.cr._stroke = a;
        this.cp.ad = this.e.ic + 3;
        this.cr.ad = this.e.ic + 3;
        this.cq._fill = a;
        this.cq._opacity = 1;
        this.co._stroke = a;
        this.co.ad = this.e.ic + 3;
        this.cl._stroke = a;
        this.cn._stroke = a;
        this.cl.ad = this.e.ic + 3;
        this.cn.ad = this.e.ic + 3;
        this.cm._fill = a;
        this.cm._opacity = 1;
        this.ck._stroke = a;
        this.ck.ad = this.e.ic + 3;
    };
    FinancialIndicatorView.prototype.a8 = function (a, b) {
        _super.prototype.a8.call(this, a, b);
        if (a.d) {
            if (b) {
                if (this.b6.aau == 2) {
                    a.t(this.co);
                    a.t(this.ck);
                }
                else {
                    a.t(this.cq);
                    a.t(this.cp);
                    a.t(this.cr);
                    a.t(this.cm);
                    a.t(this.cl);
                    a.t(this.cn);
                }
            }
            else {
                if (this.b6.aau == 2) {
                    a.t(this.cw);
                    a.t(this.cs);
                }
                else {
                    a.t(this.cy);
                    a.t(this.cx);
                    a.t(this.cz);
                    a.t(this.cu);
                    a.t(this.ct);
                    a.t(this.cv);
                }
            }
        }
    };
    FinancialIndicatorView.prototype.a7 = function (a, b) {
        if (a.d) {
            if (this.b6.trendLineType != 0 && !b) {
                var c = this.b8.g$j;
                c.ad = this.b6.trendLineThickness;
                c._stroke = this.b6.abi;
                c.aj = this.b6.abk;
                c.ai = this.b6.abj;
                a.v(c);
            }
        }
        _super.prototype.a7.call(this, a, b);
    };
    FinancialIndicatorView.prototype.an = function (a) {
        _super.prototype.an.call(this, a);
        this.e.bb.exportPathData(a, this.cw, "positiveColumnsShape", ["Positive", "Main"]);
        this.e.bb.exportPathData(a, this.cs, "negativeColumnsShape", ["Negative"]);
        this.e.bb.exportPathData(a, this.cx, "positive0", ["Positive", "Main"]);
        this.e.bb.exportPathData(a, this.cz, "positive1", ["Positive"]);
        this.e.bb.exportPathData(a, this.cy, "positive01", ["PositiveFill"]);
        this.e.bb.exportPathData(a, this.ct, "negative0", ["Negative", "Main"]);
        this.e.bb.exportPathData(a, this.cv, "negative1", ["Negative"]);
        this.e.bb.exportPathData(a, this.cu, "negative01", ["NegativeFill"]);
    };
    FinancialIndicatorView.prototype.cg = function () {
        if (this.ca) {
            this.b7 = CategoryTrendLineManagerFactory.a(this.b7, this.e.az(), this.e.so, this.e, this.e.dp);
        }
    };
    FinancialIndicatorView.$t = markType(FinancialIndicatorView, 'FinancialIndicatorView', FinancialSeriesView.$);
    return FinancialIndicatorView;
}(FinancialSeriesView));
export { FinancialIndicatorView };
