/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE  AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE:  you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import * as tslib_1 from "tslib";
import { FinancialIndicator } from "./FinancialIndicator";
import { String_$type, Number_$type, typeCast, fromEnum, markType } from "igniteui-react-core";
import { DependencyProperty } from "igniteui-react-core";
import { PropertyMetadata } from "igniteui-react-core";
import { List$1 } from "igniteui-react-core";
import { AxisRange } from "./AxisRange";
import { isNaN_ } from "igniteui-react-core";
/**
 * @hidden
 */
var StrategyBasedIndicator = /** @class */ /*@__PURE__*/ (function (_super) {
    tslib_1.__extends(StrategyBasedIndicator, _super);
    function StrategyBasedIndicator() {
        var _this = _super.call(this) || this;
        _this.q0();
        return _this;
    }
    StrategyBasedIndicator.prototype.q0 = function () {
        this.ql = this.qm;
        this.ab = this.qz;
    };
    StrategyBasedIndicator.prototype.qs = function () {
        return -2147483648;
    };
    StrategyBasedIndicator.prototype.q1 = function (a) {
    };
    StrategyBasedIndicator.prototype.qu = function () {
        return -2147483648;
    };
    StrategyBasedIndicator.prototype.qr = function () {
        return -2147483648;
    };
    StrategyBasedIndicator.q5 = function (a, b, c) {
        var d = DependencyProperty.i(c, Number_$type, b, new PropertyMetadata(2, a, function (e, f) { return (typeCast(StrategyBasedIndicator.$, e)).raisePropertyChanged(c, f.oldValue, f.newValue); }));
        StrategyBasedIndicator.qp.add(c);
        return d;
    };
    StrategyBasedIndicator.q4 = function (a, b) {
        return StrategyBasedIndicator.q5(a, b, "Period");
    };
    StrategyBasedIndicator.q2 = function (a, b) {
        return StrategyBasedIndicator.q5(a, b, "LongPeriod");
    };
    StrategyBasedIndicator.q6 = function (a, b) {
        return StrategyBasedIndicator.q5(a, b, "ShortPeriod");
    };
    StrategyBasedIndicator.prototype.py = function (a, b) {
        var c = this.mu(a, b);
        var d = this.mv(c);
        return this.ql.b(c, d);
    };
    StrategyBasedIndicator.prototype.pv = function (a, b) {
        var c = this.mu(a, b);
        if (b == 0) {
            return false;
        }
        if (!this.nr(this.py(a, b))) {
            return false;
        }
        var d = this.mv(c);
        if (this.ps != null) {
            c.minimumValue = this.ps.c;
            c.maximumValue = this.ps.b;
        }
        var e = this.ql.a(c, d);
        for (var f = 0; f < this.p0 && f < c.indicatorColumn.count; f++) {
            c.indicatorColumn.item(f, NaN);
        }
        if (this.m3 != null && this.qo(c)) {
            this.m3.cn();
        }
        return e;
    };
    StrategyBasedIndicator.prototype.qo = function (a) {
        var e_1, _a;
        if (!isNaN_(a.minimumValue) && !isNaN_(a.maximumValue) && a.specifiesRange) {
            var b = this.ps;
            this.ps = new AxisRange(a.minimumValue, a.maximumValue);
            return this.qn(b, this.ps);
        }
        var c = 1.7976931348623157E+308;
        var d = -1.7976931348623157E+308;
        try {
            for (var _b = tslib_1.__values(fromEnum(a.indicatorColumn)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var e = _c.value;
                if (!isNaN_(e)) {
                    c = Math.min(c, e);
                    d = Math.max(d, e);
                }
            }
        }
        catch (e_1_1) {
            e_1 = { error: e_1_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_1)
                    throw e_1.error;
            }
        }
        var f = this.ps;
        this.ps = new AxisRange(c, d);
        return this.qn(f, this.ps);
    };
    StrategyBasedIndicator.prototype.qn = function (a, b) {
        if (a == null || b == null) {
            return true;
        }
        if (a.c != b.c) {
            return true;
        }
        if (a.b != b.b) {
            return true;
        }
        return false;
    };
    StrategyBasedIndicator.prototype.qt = function (a) {
        if (a == -2147483648) {
            return 0;
        }
        if (a > this.indicatorColumn.count && this.indicatorColumn.count > 0) {
            a = this.indicatorColumn.count - 1;
        }
        if (a < 1) {
            return 1;
        }
        return a;
    };
    StrategyBasedIndicator.prototype.mu = function (a, b) {
        var c = _super.prototype.mu.call(this, a, b);
        c.indicatorColumn = this.indicatorColumn;
        c.period = this.qt(this.qs());
        c.shortPeriod = this.qt(this.qu());
        c.longPeriod = this.qt(this.qr());
        c.multiplier = this.qq();
        return c;
    };
    StrategyBasedIndicator.prototype.qq = function () {
        return 1;
    };
    StrategyBasedIndicator.q3 = function (a, b) {
        var c = DependencyProperty.i("Multiplier", Number_$type, b, new PropertyMetadata(2, a, function (d, e) { return (typeCast(StrategyBasedIndicator.$, d)).raisePropertyChanged("Multiplier", e.oldValue, e.newValue); }));
        StrategyBasedIndicator.qp.add("Multiplier");
        return c;
    };
    StrategyBasedIndicator.prototype.i7 = function (a, b, c, d) {
        _super.prototype.i7.call(this, a, b, c, d);
        if (StrategyBasedIndicator.qp.contains(b)) {
            if (this.m3 != null && !this.m3.cn()) {
                this.my.bu.e(this.eu);
                this.pv(0, this.indicatorColumn.count);
                if (this.pt.b4) {
                    this.pt.b2.g$i();
                }
                this.jl(false);
            }
        }
    };
    StrategyBasedIndicator.$t = markType(StrategyBasedIndicator, 'StrategyBasedIndicator', FinancialIndicator.$);
    StrategyBasedIndicator.qp = new List$1(String_$type, 0);
    return StrategyBasedIndicator;
}(FinancialIndicator));
export { StrategyBasedIndicator };
//# sourceMappingURL=StrategyBasedIndicator.js.map
