/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE  AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE:  you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import { Base, BaseError, fromEnum, typeCast, runOn, delegateCombine, delegateRemove, markType, TypeRegistrar } from "igniteui-angular-core";
import { IDataChartToolbarProvider_$type } from "./IDataChartToolbarProvider";
import { SeriesViewer } from "./SeriesViewer";
import { ToolActionIconMenuInfo } from "igniteui-angular-core";
import { ToolActionGroupHeaderInfo } from "igniteui-angular-core";
import { ToolActionSeparatorInfo } from "igniteui-angular-core";
import { ToolActionLabelInfo } from "igniteui-angular-core";
import { ToolActionCheckboxInfo } from "igniteui-angular-core";
import { DeviceUtils } from "igniteui-angular-core";
import { Series } from "./Series";
import { ToolActionRadioInfo } from "igniteui-angular-core";
import { Rect } from "igniteui-angular-core";
import { ToolContextBindingInfo } from "igniteui-angular-core";
import { List$1 } from "igniteui-angular-core";
import { XamDataChart } from "./XamDataChart";
import { Axis } from "./Axis";
import { BrushUtilCore } from "igniteui-angular-core";
import { ToolCommandArgument } from "igniteui-angular-core";
import { AutomaticSeriesRequest } from "./AutomaticSeriesRequest";
import { AxisStrokeSettings } from "./AxisStrokeSettings";
import { FastIterationDictionary$2 } from "igniteui-angular-core";
import { CaptureImageSettings } from "igniteui-angular-core";
import { isNaN_ } from "igniteui-angular-core";
/**
 * @hidden
 */
export let DataChartToolbarProvider = /*@__PURE__*/ (() => {
    class DataChartToolbarProvider extends Base {
        constructor() {
            super(...arguments);
            this._container = null;
            this.k = null;
            this.i = null;
            this.g = null;
            this.q = null;
            this.r = new FastIterationDictionary$2(Axis.$, AxisStrokeSettings.$, 0);
        }
        get container() {
            return this._container;
        }
        set container(a) {
            this._container = a;
        }
        get l() {
            if (TypeRegistrar.isRegistered("HorizontalAnchoredCategorySeriesProxy")) {
                return TypeRegistrar.create("HorizontalAnchoredCategorySeriesProxy");
            }
            else {
                throw new BaseError(1, "category series module is not loaded, but is required.");
            }
        }
        get v() {
            return (TypeRegistrar.isRegistered("HorizontalAnchoredCategorySeriesProxy"));
        }
        get j() {
            if (TypeRegistrar.isRegistered("FinancialPriceSeriesProxy")) {
                return TypeRegistrar.create("FinancialPriceSeriesProxy");
            }
            else {
                throw new BaseError(1, "category series module is not loaded, but is required.");
            }
        }
        get u() {
            return (TypeRegistrar.isRegistered("HorizontalAnchoredCategorySeriesProxy"));
        }
        get h() {
            if (this.g == null) {
                if (TypeRegistrar.isRegistered("AnnotationLayerProxy")) {
                    this.g = TypeRegistrar.create("AnnotationLayerProxy");
                    this.g.container = this.container;
                }
                else {
                    throw new BaseError(1, "annotation layer module is not loaded, but is required.");
                }
            }
            return this.g;
        }
        get t() {
            return (TypeRegistrar.isRegistered("AnnotationLayerProxy"));
        }
        getDesiredToolbarActions(a) {
            let b = new ToolActionIconMenuInfo();
            b.name = "ZoomMenu";
            b.iconName = "zoomin";
            b.iconCollectionName = "ChartToolbarIcons";
            b.iconWidth = 24;
            b.iconHeight = 25;
            b.actions = this.e();
            let c = new ToolActionGroupHeaderInfo();
            c.name = "AnalyzeHeader";
            c.title = "Analyze";
            let d = new ToolActionSeparatorInfo();
            d.name = "AnalyzeHeaderSeparator";
            d.isGroupHeaderSeparator = true;
            let e = new ToolActionLabelInfo();
            e.name = "LinesMenu";
            e.title = "Lines";
            e.iconName = "analyze-lines";
            e.iconCollectionName = "ChartToolbarIcons";
            e.iconWidth = 24;
            e.iconHeight = 25;
            e.actions = this.a();
            let f = new ToolActionSeparatorInfo();
            f.name = "LinesMenuSeparator";
            let g = new ToolActionLabelInfo();
            g.name = "TrendsMenu";
            g.title = "Trends";
            g.iconName = "analyze-trends";
            g.iconCollectionName = "ChartToolbarIcons";
            g.iconWidth = 24;
            g.iconHeight = 25;
            g.actions = this.c();
            let h = new ToolActionGroupHeaderInfo();
            h.name = "HelpersHeader";
            h.title = "Helpers";
            let i = new ToolActionSeparatorInfo();
            i.name = "HelpersHeaderSeparator";
            i.isGroupHeaderSeparator = true;
            let j = new ToolActionCheckboxInfo();
            j.name = "SeriesAvg";
            j.title = "Series Average";
            j.iconName = "analyze-seriesavg";
            j.iconCollectionName = "ChartToolbarIcons";
            j.iconWidth = 24;
            j.iconHeight = 25;
            let k = new ToolActionSeparatorInfo();
            k.name = "SeriesAvgSeparator";
            let l = new ToolActionLabelInfo();
            l.name = "ValueLabelsMenu";
            l.title = "Value Labels";
            l.iconName = "analyze-valuelabels";
            l.iconCollectionName = "ChartToolbarIcons";
            l.actions = this.d(a);
            l.iconWidth = 24;
            l.iconHeight = 24;
            let m = new ToolActionSeparatorInfo();
            m.name = "HelpersSectionSeparator";
            m.size = DeviceUtils.g(10);
            let n = new ToolActionCheckboxInfo();
            n.name = "ShowGridlines";
            n.title = "Grid";
            n.iconName = "analyze-grid";
            n.iconCollectionName = "ChartToolbarIcons";
            n.iconWidth = 24;
            n.iconHeight = 25;
            let o = new ToolActionSeparatorInfo();
            o.name = "GridSeparator";
            let p = new ToolActionCheckboxInfo();
            p.name = "ShowCrosshairs";
            p.title = "Crosshairs";
            p.iconName = "analyze-crosshairs";
            p.iconCollectionName = "ChartToolbarIcons";
            p.iconWidth = 24;
            p.iconHeight = 25;
            let q = new ToolActionIconMenuInfo();
            q.name = "AnalyzeMenu";
            q.iconName = "analyze";
            q.iconCollectionName = "ChartToolbarIcons";
            q.iconWidth = 24;
            q.iconHeight = 25;
            q.actions = [c, d, e, f, g, h, i, j, k, l, m, n, o, p];
            let r = new ToolActionGroupHeaderInfo();
            r.name = "CopyHeader";
            r.title = "Copy...";
            let s = new ToolActionLabelInfo();
            s.name = "CopyAsImage";
            s.title = "As Image";
            s.iconName = "copy-image";
            s.iconCollectionName = "ChartToolbarIcons";
            s.closeOnExecute = true;
            let t = new ToolActionLabelInfo();
            t.name = "CopyAsTable";
            t.title = "Table Data";
            t.iconName = "copy-table";
            t.iconCollectionName = "ChartToolbarIcons";
            let u = new ToolActionIconMenuInfo();
            u.name = "CopyMenu";
            u.iconName = "copy";
            u.iconCollectionName = "ChartToolbarIcons";
            u.iconWidth = 24;
            u.iconHeight = 24;
            u.actions = [r, s];
            let v = [b, ((() => {
                    let $ret = new ToolActionSeparatorInfo();
                    $ret.name = "ZoomMenuSeparator";
                    return $ret;
                })()), q, ((() => {
                    let $ret = new ToolActionSeparatorInfo();
                    $ret.name = "AnalyzeMenuSeparator";
                    return $ret;
                })()), u];
            for (let w = 0; w < v.length; w++) {
                this.ba(a, v[w]);
            }
            return v;
        }
        ba(a, b) {
            if (b.actions != null && b.actions.length > 0) {
                for (let c = 0; c < b.actions.length; c++) {
                    this.ba(a, b.actions[c]);
                }
            }
            switch (b.name) {
                case "ZoomReset":
                    {
                        for (let d of fromEnum(a.g4)) {
                            d.setContextValue("ZoomResetIsDisabled", 5, Rect.l_op_Equality(a.x5, null) || a.x5.isEmpty || (a.x5.width >= 1 && a.x5.height >= 1));
                        }
                    }
                    break;
                case "ShowValueLabels":
                    {
                        let e = b;
                        let f = this.m(a);
                        e.isChecked = f != null && f._visibility == 0;
                    }
                    break;
                case "ShowLastValueLabel":
                    {
                        let g = b;
                        let h = this.o(a);
                        g.isChecked = h != null && h._visibility == 0;
                    }
                    break;
                case "Linear":
                    {
                        let i = b;
                        let j = a.ao(a);
                        i.isChecked = j.e(8);
                    }
                    break;
                case "Exponential":
                    {
                        let k = b;
                        let l = a.ao(a);
                        k.isChecked = l.e(7);
                    }
                    break;
                case "Logarithmic":
                    {
                        let m = b;
                        let n = a.ao(a);
                        m.isChecked = n.e(9);
                    }
                    break;
                case "NoTrends":
                    {
                        let o = b;
                        let p = a.ao(a);
                        o.isChecked = !p.e(8) && !p.e(7) && !p.e(9);
                    }
                    break;
                case "MinValue":
                    {
                        let q = b;
                        let r = this.p(a, 4);
                        q.isChecked = r != null && r._visibility == 0;
                    }
                    break;
                case "MaxValue":
                    {
                        let s = b;
                        let t = this.p(a, 5);
                        s.isChecked = t != null && t._visibility == 0;
                    }
                    break;
                case "Average":
                    {
                        let u = b;
                        let v = this.p(a, 6);
                        u.isChecked = v != null && v._visibility == 0;
                    }
                    break;
                case "ShowCrosshairs":
                    {
                        let w = b;
                        let x = this.n(a);
                        w.isChecked = x != null && x._visibility == 0;
                    }
                    break;
                case "ShowGridlines":
                    {
                        let y = b;
                        y.isChecked = this.s(a);
                    }
                    break;
                case "SeriesAvg":
                    {
                        let z = b;
                        let aa = this.p(a, 3);
                        z.isChecked = aa != null && aa._visibility == 0;
                    }
                    break;
            }
        }
        e() {
            let a = new ToolActionGroupHeaderInfo();
            a.name = "ZoomHeader";
            a.title = "Zoom";
            let b = new ToolActionLabelInfo();
            b.name = "ZoomIn";
            b.iconName = "zoomin";
            b.iconCollectionName = "ChartToolbarIcons";
            b.iconWidth = 24;
            b.iconHeight = 25;
            b.title = "Zoom In";
            let c = new ToolActionLabelInfo();
            c.name = "ZoomOut";
            c.iconName = "zoomout";
            c.iconCollectionName = "ChartToolbarIcons";
            c.iconWidth = 24;
            c.iconHeight = 25;
            c.title = "Zoom Out";
            let d = new ToolActionLabelInfo();
            d.name = "ZoomReset";
            d.iconName = "reset";
            d.iconCollectionName = "ChartToolbarIcons";
            d.iconWidth = 24;
            d.iconHeight = 24;
            d.title = "Reset";
            d.contextBindings = [((() => {
                    let $ret = new ToolContextBindingInfo();
                    $ret.contextKey = "ZoomResetIsDisabled";
                    $ret.propertyName = "IsDisabled";
                    return $ret;
                })())];
            return [a, b, c, d];
        }
        a() {
            let a = new ToolActionGroupHeaderInfo();
            a.name = "LinesHeader";
            a.title = "Lines";
            let b = new ToolActionSeparatorInfo();
            b.isGroupHeaderSeparator = true;
            let c = new ToolActionCheckboxInfo();
            c.name = "MaxValue";
            c.title = "Max value";
            c.iconName = "analyze-lines-maxvalue";
            c.iconCollectionName = "ChartToolbarIcons";
            c.iconWidth = 24;
            c.iconHeight = 25;
            let d = new ToolActionCheckboxInfo();
            d.name = "MinValue";
            d.title = "Min value";
            d.iconName = "analyze-lines-minvalue";
            d.iconCollectionName = "ChartToolbarIcons";
            d.iconWidth = 24;
            d.iconHeight = 25;
            let e = new ToolActionCheckboxInfo();
            e.name = "Average";
            e.title = "Average";
            e.iconName = "analyze-seriesavg";
            e.iconCollectionName = "ChartToolbarIcons";
            e.iconWidth = 24;
            e.iconHeight = 25;
            return [a, b, c, d, e];
        }
        c() {
            let a = new ToolActionGroupHeaderInfo();
            a.name = "TrendsHeader";
            a.title = "Trends";
            let b = new ToolActionSeparatorInfo();
            b.name = "TrendsHeaderSeparator";
            b.isGroupHeaderSeparator = true;
            let c = new ToolActionRadioInfo();
            c.name = "Exponential";
            c.title = "Exponential";
            c.iconName = "analyze-trends-exp";
            c.iconCollectionName = "ChartToolbarIcons";
            c.channel = "trends";
            c.iconWidth = 24;
            c.iconHeight = 25;
            let d = new ToolActionRadioInfo();
            d.name = "Linear";
            d.title = "Linear";
            d.iconName = "analyze-trends-trendline";
            d.iconCollectionName = "ChartToolbarIcons";
            d.channel = "trends";
            d.iconWidth = 24;
            d.iconHeight = 25;
            let e = new ToolActionRadioInfo();
            e.name = "Logarithmic";
            e.title = "Logarithmic";
            e.iconName = "analyze-trends-log";
            e.iconCollectionName = "ChartToolbarIcons";
            e.channel = "trends";
            e.iconWidth = 24;
            e.iconHeight = 25;
            let f = new ToolActionRadioInfo();
            f.name = "NoTrends";
            f.title = "None";
            f.channel = "trends";
            f.iconName = "ig-NoIcon";
            return [a, b, c, d, e, f];
        }
        b() {
            let a = new ToolActionGroupHeaderInfo();
            a.name = "TimePeriodHighlightHeader";
            a.title = "TIME HIGHLIGHT";
            let b = new ToolActionSeparatorInfo();
            b.isGroupHeaderSeparator = true;
            let c = new ToolActionRadioInfo();
            c.name = "Quarters";
            c.title = "Quarters";
            c.channel = "time";
            let d = new ToolActionRadioInfo();
            d.name = "Seasons";
            d.title = "Seasons";
            d.channel = "time";
            let e = new ToolActionRadioInfo();
            e.name = "Weekends";
            e.title = "Weekends";
            e.channel = "time";
            let f = new ToolActionRadioInfo();
            f.name = "WorkDays";
            f.title = "Work days";
            f.channel = "time";
            return [a, b, c, d, e, f];
        }
        d(a) {
            let b = new ToolActionGroupHeaderInfo();
            b.name = "ValueLabelsHeader";
            b.title = "Value Labels";
            let c = new ToolActionSeparatorInfo();
            c.isGroupHeaderSeparator = true;
            let d = new ToolActionCheckboxInfo();
            d.name = "ShowValueLabels";
            d.title = "Show Value Labels";
            d.iconName = "analyze-valuelabels";
            d.iconCollectionName = "ChartToolbarIcons";
            d.iconWidth = 24;
            d.iconHeight = 24;
            let e = new ToolActionCheckboxInfo();
            e.name = "ShowLastValueLabel";
            e.title = "Show Last Value Label";
            e.iconName = "analyze-valuelabels-showlast";
            e.iconCollectionName = "ChartToolbarIcons";
            return [b, c, d, e];
        }
        m(a) {
            for (let b of fromEnum(a.series)) {
                if (this.h.isCalloutLayer(b) && this.h.getIsAutoCalloutBehaviorEnabled(b)) {
                    return b;
                }
            }
            return null;
        }
        o(a) {
            for (let b of fromEnum(a.series)) {
                if (this.h.isFinalValueLayer(b)) {
                    return b;
                }
            }
            return null;
        }
        p(a, b) {
            for (let c of fromEnum(a.series)) {
                if (this.h.isValueLayer(c) && this.h.getValueMode(c) == b) {
                    return c;
                }
            }
            return null;
        }
        n(a) {
            for (let b of fromEnum(a.series)) {
                if (this.h.isCrosshairLayer(b)) {
                    return b;
                }
            }
            return null;
        }
        s(a) {
            let b = typeCast(XamDataChart.$, a);
            if (b != null) {
                for (let c = 0; c < b.axes.count; c++) {
                    let d = b.axes._inner[c];
                    if (d.na != null && !BrushUtilCore.a(d.na) && d.f1 != 0) {
                        return true;
                    }
                }
            }
            return false;
        }
        onToolCommandExecuting(a, b) {
            switch (b.commandId) {
                case "ZoomReset":
                    this.br(a, b);
                    break;
                case "ZoomIn":
                    this.bp(a, b);
                    break;
                case "ZoomOut":
                    this.bq(a, b);
                    break;
                case "ShowCrosshairs":
                    this.bd(a, b);
                    break;
                case "ShowGridlines":
                    this.bf(a, b);
                    break;
                case "MaxValue":
                    this.bj(a, b);
                    break;
                case "MinValue":
                    this.bk(a, b);
                    break;
                case "Average":
                    this.bb(a, b);
                    break;
                case "Exponential":
                    this.be(a, b);
                    break;
                case "Linear":
                    this.bh(a, b);
                    break;
                case "Logarithmic":
                    this.bi(a, b);
                    break;
                case "NoTrends":
                    this.bl(a, b);
                    break;
                case "SeriesAvg":
                    this.bm(a, b);
                    break;
                case "ShowValueLabels":
                    this.bo(a, b);
                    break;
                case "ShowLastValueLabel":
                    this.bn(a, b);
                    break;
                case "CopyAsImage":
                    this.bc(a, b);
                    return 2;
            }
            return 0;
        }
        onTargetPropertyChanged(a, b, c, d) {
            switch (b) {
                case SeriesViewer.$$p[56]:
                    if (Rect.l_op_Inequality(a.x5, null) && !a.x5.isEmpty && a.g4 != null) {
                        for (let e of fromEnum(a.g4)) {
                            e.setContextValue("ZoomResetIsDisabled", 5, Rect.l_op_Equality(a.x5, null) || a.x5.isEmpty || (a.x5.width >= 1 && a.x5.height >= 1));
                        }
                    }
                    break;
            }
        }
        w(a, b) {
            if (a.commandId == b) {
                let e = a.argumentsList;
                for (let d = 0; d < e.length; d++) {
                    let c = e[d];
                    if (c.argumentName == "IsChecked") {
                        return c.value;
                    }
                }
            }
            return false;
        }
        bd(a, b) {
            let c = this.n(a);
            if (this.x(a, c)) {
                return;
            }
            this.bs(a, b, "ShowCrosshairs", 0, () => {
                let d = this.h.createCrosshairLayer();
                this.h.setCrosshairOnAxesEnabled(d, true);
                let e = new AutomaticSeriesRequest();
                e.a = 0;
                e.e = true;
                e.d = d;
                return e;
            });
        }
        f(a, b) {
            let c = new AxisStrokeSettings();
            c.b = a.ni == null || BrushUtilCore.a(a.ni) ? b : a.ni;
            c.a = isNaN_(a.f1) || a.f1 == 0 ? DeviceUtils.g(1) : a.f1;
            this.r.item(a, c);
            return c;
        }
        bf(a, b) {
            let c = this.w(b, "ShowGridlines");
            if (!c) {
                let d = typeCast(XamDataChart.$, a);
                if (d != null) {
                    for (let e = 0; e < d.axes.count; e++) {
                        let f = d.axes._inner[e];
                        if (!this.r.d(f)) {
                            this.f(f, d.acc);
                        }
                        f.f1 = 0;
                    }
                }
            }
            else {
                let g = typeCast(XamDataChart.$, a);
                if (g != null) {
                    for (let h = 0; h < g.axes.count; h++) {
                        let i = g.axes._inner[h];
                        let j = true;
                        if (this.r.d(i)) {
                            if (this.r.item(i).b != i.ni || i.f1 != 0) {
                                j = true;
                            }
                            else {
                                i.ni = this.r.item(i).b;
                                i.f1 = this.r.item(i).a;
                                j = false;
                            }
                        }
                        if (j) {
                            let k = this.f(i, g.acc);
                            i.ni = k.b;
                            i.f1 = k.a;
                        }
                    }
                }
            }
        }
        a9(a, b, c, d) {
            let e = a.ao(a);
            e.l(c);
            let f = new List$1(Series.$, 0);
            for (let g of fromEnum(a.series)) {
                if (g.e0 || g.fb || g.fu || g.fq || g.fx) {
                    f.add(g);
                }
            }
            let h = 0;
            for (let i of fromEnum(f)) {
                let j = this.h.createTrendLineLayer();
                this.h.setTrendLineTarget(j, i);
                this.h.setTrendLineType(j, b);
                this.h.setUseLegend(j, true);
                this.h.setLegendItemBadgeShape(j, 2);
                if (i.title != null && typeof i.title === 'string') {
                    let k = i.title;
                    this.h.setTitle(j, k + " " + d);
                }
                let l = new AutomaticSeriesRequest();
                l.a = c;
                l.c = i;
                l.d = j;
                e.b.add(l);
            }
        }
        be(a, b) {
            let c = this.w(b, "Exponential");
            if (c) {
                let d = a.ao(a);
                d.l(9);
                d.l(8);
                this.a9(a, 7, 7, "Exponential Fit");
            }
        }
        bh(a, b) {
            let c = this.w(b, "Linear");
            if (c) {
                let d = a.ao(a);
                d.l(9);
                d.l(7);
                this.a9(a, 1, 8, "Linear Fit");
            }
        }
        bi(a, b) {
            let c = this.w(b, "Logarithmic");
            if (c) {
                let d = a.ao(a);
                d.l(8);
                d.l(7);
                this.a9(a, 6, 9, "Logarithmic Fit");
            }
        }
        bl(a, b) {
            let c = a.ao(a);
            c.l(7);
            c.l(8);
            c.l(9);
        }
        bs(a, b, c, d, e) {
            let f = this.w(b, c);
            let g = a.ao(a);
            if (f && !g.e(d)) {
                if (this.t && e != null) {
                    g.b.add(e());
                }
            }
            if (!f && g.e(d)) {
                g.l(d);
            }
        }
        bj(a, b) {
            let c = this.p(a, 5);
            if (c != null && this.h.getValueMode(c) == 5 && this.x(a, c)) {
                return;
            }
            this.bs(a, b, "MaxValue", 1, () => {
                let d = this.h.createValueLayer();
                this.h.setValueMode(d, 5);
                this.h.setValueAxisAnnotationEnabled(d, true);
                this.h.setUseLegend(d, true);
                this.h.setTitle(d, "Maximum");
                this.h.setLegendItemBadgeShape(d, 2);
                let e = new AutomaticSeriesRequest();
                e.a = 1;
                e.e = true;
                e.d = d;
                return e;
            });
        }
        bk(a, b) {
            let c = this.p(a, 4);
            if (c != null && this.x(a, c)) {
                return;
            }
            this.bs(a, b, "MinValue", 2, () => {
                let d = this.h.createValueLayer();
                this.h.setValueMode(d, 4);
                this.h.setValueAxisAnnotationEnabled(d, true);
                this.h.setUseLegend(d, true);
                this.h.setTitle(d, "Minimum");
                this.h.setLegendItemBadgeShape(d, 2);
                let e = new AutomaticSeriesRequest();
                e.a = 2;
                e.e = true;
                e.d = d;
                return e;
            });
        }
        bb(a, b) {
            let c = this.p(a, 6);
            if (c != null && this.x(a, c)) {
                return;
            }
            this.bs(a, b, "Average", 3, () => {
                let d = this.h.createValueLayer();
                this.h.setValueMode(d, 6);
                this.h.setValueAxisAnnotationEnabled(d, true);
                this.h.setUseLegend(d, true);
                this.h.setTitle(d, "Average");
                this.h.setLegendItemBadgeShape(d, 2);
                let e = new AutomaticSeriesRequest();
                e.a = 3;
                e.e = true;
                e.d = d;
                return e;
            });
        }
        bm(a, b) {
            let c = a.ao(a);
            let d = this.p(a, 3);
            if (d != null) {
                c.l(4);
                return;
            }
            if (!this.t) {
                return;
            }
            let e = a.series.count;
            for (let f = 0; f < e; f++) {
                let g = a.series._inner[f];
                if (g.eu) {
                    continue;
                }
                let h = this.h.createValueLayer();
                this.h.setValueMode(h, 3);
                this.h.setValueAxisAnnotationEnabled(h, true);
                this.h.setUseLegend(h, a.gj);
                if (g.title != null && typeof g.title === 'string') {
                    let i = g.title;
                    this.h.setTitle(h, i + " Avg");
                }
                this.h.setLegendItemBadgeShape(h, 2);
                this.h.setTargetSeries(h, g);
                this.h.setBrush(h, g.vj);
                let j = new AutomaticSeriesRequest();
                j.a = 4;
                j.e = true;
                j.d = h;
                c.b.add(j);
            }
        }
        x(a, b) {
            if (b != null) {
                let c = false;
                let d = a.ao(a);
                for (let e of fromEnum(d.b)) {
                    if (e.d == b) {
                        c = true;
                        break;
                    }
                }
                if (!c) {
                    if (b._visibility == 0) {
                        let cl_ = b;
                        let v_ = 1;
                        cl_.visibility = v_;
                        return true;
                    }
                    else if (b._visibility == 1) {
                        let cl_ = b;
                        let v_ = 0;
                        cl_.visibility = v_;
                        return true;
                    }
                }
            }
            return false;
        }
        bo(a, b) {
            let c = this.m(a);
            if (this.x(a, c)) {
                return;
            }
            this.bs(a, b, "ShowValueLabels", 5, () => {
                for (let d of fromEnum(a.series)) {
                    if (d.e0) {
                        if (this.v && this.l.matchesType(d)) {
                            let e = this.l.getMarkerType(d);
                            if (e == 1) {
                                this.l.setMarkerType(d, 13);
                            }
                        }
                    }
                }
                let f = this.h.createCalloutLayer();
                this.h.setIsAutoCalloutBehaviorEnabled(f, true);
                let g = new AutomaticSeriesRequest();
                g.a = 5;
                g.e = true;
                g.d = f;
                return g;
            });
        }
        bn(a, b) {
            let c = this.o(a);
            if (this.x(a, c)) {
                return;
            }
            this.bs(a, b, "ShowLastValueLabel", 6, () => {
                for (let d of fromEnum(a.series)) {
                    let e = d.ai();
                    if (e != null) {
                        for (let g = 0; g < e.length; g++) {
                            let f = e[g];
                            if (f.dh) {
                                f.dv = true;
                            }
                        }
                    }
                }
                let h = this.h.createFinalValueLayer();
                let i = new AutomaticSeriesRequest();
                i.a = 6;
                i.e = true;
                i.d = h;
                return i;
            });
        }
        bc(a, b) {
            this.q = b;
            let c = new CaptureImageSettings();
            c.b = true;
            c.a = 0;
            a.imageCaptured = delegateCombine(a.imageCaptured, runOn(this, this.bg));
            a.n8(c);
            a.al.q();
        }
        bg(a, b) {
            this.q.argumentsList = [((() => {
                    let $ret = new ToolCommandArgument();
                    $ret.argumentName = "Image";
                    $ret.value = b.base64Data;
                    return $ret;
                })())];
            let c = a;
            c.imageCaptured = delegateRemove(c.imageCaptured, runOn(this, this.bg));
            if (c.commandCompleted != null) {
                c.commandCompleted(this.q);
            }
        }
        bp(a, b) {
            a.tb(0.05);
        }
        bq(a, b) {
            a.tc(0.05);
        }
        br(a, b) {
            a.sj();
        }
    }
    DataChartToolbarProvider.$t = markType(DataChartToolbarProvider, 'DataChartToolbarProvider', Base.$, [IDataChartToolbarProvider_$type]);
    return DataChartToolbarProvider;
})();
