import { Output, EventEmitter, Component, ViewContainerRef, ViewChild, Input, ChangeDetectionStrategy } from '@angular/core';
import { XamDataLegend } from "./XamDataLegend";
import { arrayFindByName, ensureEnum, brushToString, stringToBrush, ensureBool, toSpinal, initializePropertiesFromCss, NamePatcher } from "igniteui-angular-core";
import { FontInfo } from "igniteui-angular-core";
import { AngularRenderer } from "igniteui-angular-core";
import { delegateCombine } from "igniteui-angular-core";
import { Thickness } from "igniteui-angular-core";
import { DataAbbreviationMode_$type } from "igniteui-angular-core";
import { DataLegendHeaderTimeMode_$type } from "igniteui-angular-core";
import { DataLegendHeaderDateMode_$type } from "igniteui-angular-core";
import { DataLegendUnitsMode_$type } from "igniteui-angular-core";
import { DataLegendLabelMode_$type } from "igniteui-angular-core";
import { DataLegendValueMode_$type } from "igniteui-angular-core";
import { DataLegendSummaryType_$type } from "igniteui-angular-core";
import { IgxDataLegendSummaryEventArgs } from './igx-data-legend-summary-event-args';
import { IgxDataLegendStylingRowEventArgs } from './igx-data-legend-styling-row-event-args';
import { IgxDataLegendStylingColumnEventArgs } from './igx-data-legend-styling-column-event-args';
import { LegendItemBadgeShape_$type } from "igniteui-angular-core";
import * as i0 from "@angular/core";
const DataLegendStylingDefaults = {};
/**
 * Represents data legend that displays information about each series including values and summaries.
 * THIS IS A COMMUNITY TECHNOLOGY PREVIEW, not for use in production.
*/
export let IgxDataLegendComponent = /*@__PURE__*/ (() => {
    class IgxDataLegendComponent {
        constructor(renderer, _elRef, ngZone, injector, componentFactoryResolver) {
            this.renderer = renderer;
            this._elRef = _elRef;
            this.ngZone = ngZone;
            this.injector = injector;
            this.componentFactoryResolver = componentFactoryResolver;
            this._wrapper = null;
            this._root = null;
            this._implementation = null;
            this.__p = null;
            this._hasUserValues = new Set();
            this._stylingContainer = null;
            this._stylingParent = null;
            this._inStyling = false;
            this._calculateColumnSummary = null;
            this._styleHeaderRow = null;
            this._styleSeriesRow = null;
            this._styleSummaryRow = null;
            this._styleSeriesColumn = null;
            this._styleSummaryColumn = null;
            this._zoneRunner = null;
            if (this._styling) {
                NamePatcher.ensureStylablePatched(Object.getPrototypeOf(this));
            }
            this._implementation = this.createImplementation();
            if (renderer) {
                this.container = renderer.createElement("div");
                renderer.appendChild(_elRef.element.nativeElement, this.container);
                renderer.setStyle(this.container, "display", "block");
                renderer.setStyle(this.container, "width", "100%");
                renderer.setStyle(this.container, "height", "100%");
            }
            var root;
            root = this.container;
            if (this.container != null) {
                root = this.container;
            }
            if (root && root.nativeElement) {
                root = root.nativeElement;
            }
            this._root = root;
            var dataLegend = this.i;
            this._dataLegend = dataLegend;
            this._dataLegend.externalObject = this;
            if (renderer) {
                var ren = new AngularRenderer(root, this.renderer, window.document, this.ngZone, true, DataLegendStylingDefaults);
                this._wrapper = ren;
                dataLegend.provideContainer(ren);
                dataLegend.notifySizeChanged();
                ren.addSizeWatcher(() => {
                    this._dataLegend.notifySizeChanged();
                });
            }
        }
        set height(value) {
            this._height = value;
            this.renderer.setStyle(this._elRef.element.nativeElement, "height", value);
            this._dataLegend.notifySizeChanged();
        }
        get height() {
            return this._height;
        }
        set width(value) {
            this._width = value;
            this.renderer.setStyle(this._elRef.element.nativeElement, "width", value);
            this._dataLegend.notifySizeChanged();
        }
        get width() {
            return this._width;
        }
        // supports angular themes or custom properties set in CSS
        updateStyle() {
            this._styling(this._root, this);
        }
        ngOnDestroy() {
            this._dataLegend.destroy();
            this._wrapper.destroy();
        }
        ngAfterContentInit() {
            this.updateStyle();
        }
        createImplementation() {
            return new XamDataLegend();
        }
        get i() {
            return this._implementation;
        }
        static _staticStyling(container, component, parent) {
            let genericPrefix = "";
            let typeName = (component.i ? component.i : component).$type.name;
            if (typeName.indexOf("Xam") === 0) {
                typeName = typeName.substring(3);
            }
            genericPrefix = toSpinal("DataLegend");
            let additionalPrefixes = [];
            let prefix = toSpinal(typeName);
            additionalPrefixes.push(prefix + "-");
            let b = (component.i ? component.i : component).$type.baseType;
            while (b && b.name != "Object" &&
                b.name != "Base" &&
                b.name != "Control" &&
                b.Name != "DependencyObject" &&
                b.Name != "FrameworkElement") {
                typeName = b.name;
                if (typeName.indexOf("Xam") === 0) {
                    typeName = typeName.substring(3);
                }
                let basePrefix = toSpinal(typeName);
                additionalPrefixes.push(basePrefix + "-");
                b = b.baseType;
            }
            if (parent) {
                let parentTypeName = parent.i.$type.name;
                if (parentTypeName.indexOf("Xam") === 0) {
                    parentTypeName = parentTypeName.substring(3);
                }
                let parentPrefix = toSpinal(parentTypeName);
                additionalPrefixes.push(parentPrefix + "-" + genericPrefix + "-");
                additionalPrefixes.push(parentPrefix + "-" + prefix + "-");
            }
            initializePropertiesFromCss(container, component, genericPrefix + "-", new Set(), false, additionalPrefixes);
        }
        /**
         * Gets or sets the target for the data legend.
        */
        get target() {
            var ret = this.i.target;
            if (!ret) {
                return ret;
            }
            if (ret.externalObject != null) {
                ret = ret.externalObject;
            }
            return ret;
        }
        set target(v) {
            if (v && v._implementation) {
                v = v._implementation;
            }
            this.i.target = v;
        }
        /**
     * Gets whether or not at least one badge is visible based on BadgesShape and setting of a row's IsVisble in StyleSeriesRow event
    */
        get actualBadgesVisible() {
            return this.i.bw;
        }
        set actualBadgesVisible(v) {
            this.i.bw = ensureBool(v);
        }
        /**
         * Gets the actual pixel scaling ratio used to affect the pixel density of the control.
         * A higher scaling ratio will produce crisper visuals at the expense of memory.  Lower values will cause the control to appear blurry.
        */
        get actualPixelScalingRatio() {
            return this.i.cn;
        }
        set actualPixelScalingRatio(v) {
            this.i.cn = +v;
        }
        /**
         * Gets or sets indexes or names of series to include in displaying in the data legend, e.g. "0, 1"
        */
        get includedSeries() {
            return this.i.includedSeries;
        }
        set includedSeries(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.includedSeries = v;
        }
        /**
         * Gets or sets indexes or names of series to exclude from displaying in the data legend, e.g. "0, 1"
         * The ExcludedSeries property takes precedences over values of IncludedSeries property
        */
        get excludedSeries() {
            return this.i.excludedSeries;
        }
        set excludedSeries(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.excludedSeries = v;
        }
        /**
         * Gets or sets names of data columns or their labels to include in displaying in the data legend, e.g. "High, Low" or "H, L"
         * The ExcludedColumns property takes precedences over values of IncludedColumns property
        */
        get includedColumns() {
            return this.i.includedColumns;
        }
        set includedColumns(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.includedColumns = v;
        }
        /**
         * Gets or sets names of data columns or their labels to exclude from displaying in the data legend, e.g. "High, Low" or "H, L"
         * The ExcludedColumns property takes precedences over values of IncludedColumns property
        */
        get excludedColumns() {
            return this.i.excludedColumns;
        }
        set excludedColumns(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.excludedColumns = v;
        }
        /**
         * Gets or sets whether the data legend should update when the series data is mutated.
        */
        get shouldUpdateWhenSeriesDataChanges() {
            return this.i.b2;
        }
        set shouldUpdateWhenSeriesDataChanges(v) {
            this.i.b2 = ensureBool(v);
        }
        /**
         * Gets or sets mode for abbreviating large numbers displayed in the legend
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get valueFormatAbbreviation() {
            return this.i.an;
        }
        set valueFormatAbbreviation(v) {
            this.i.an = ensureEnum(DataAbbreviationMode_$type, v);
        }
        /**
         * Gets or sets maximum digits for formating numbers displayed in the legend
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get valueFormatMaxFractions() {
            return this.i.ct;
        }
        set valueFormatMaxFractions(v) {
            this.i.ct = +v;
        }
        /**
         * Gets or sets minimum digits for formating numbers displayed in the legend
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get valueFormatMinFractions() {
            return this.i.cu;
        }
        set valueFormatMinFractions(v) {
            this.i.cu = +v;
        }
        /**
         * Gets or sets the mode for displaying values in the data legend, e.g. Currency ($500.25), Decimal (500.25), Integer (500)
        */
        get valueFormatMode() {
            return this.i.a3;
        }
        set valueFormatMode(v) {
            this.i.a3 = ensureEnum(DataLegendValueMode_$type, v);
        }
        /**
         * Gets or sets globalization culture when displaying values as currencies, e.g. use "en-GB" to display British pound symbol when the ValueFormatMode property is set to 'Currency' mode
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get valueFormatCulture() {
            return this.i.ex;
        }
        set valueFormatCulture(v) {
            this.i.ex = v;
        }
        /**
         * Gets or sets the currency code used for displaying currency symbol next to values, e.g. USD for $, EUR for €
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get valueFormatCurrencyCode() {
            return this.i.ez;
        }
        set valueFormatCurrencyCode(v) {
            this.i.ez = v;
        }
        /**
         * Gets or sets whether or not use groupping sperator, e.g, 15,000 for 15000
         * This property is ignored when setting ValueFormatSpecifiers or ValueFormatString properties
        */
        get valueFormatUseGrouping() {
            return this.i.b3;
        }
        set valueFormatUseGrouping(v) {
            this.i.b3 = ensureBool(v);
        }
        /**
         * Gets or sets the format string for values displayed in the data legend.
        */
        get valueFormatString() {
            return this.i.e5;
        }
        set valueFormatString(v) {
            this.i.e5 = v;
        }
        /**
         * Gets or sets the format specifiers to use with the ValueFormatString string.
        */
        get valueFormatSpecifiers() {
            return this.i.ah;
        }
        set valueFormatSpecifiers(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.ah = v;
        }
        get valueRowMarginBottom() {
            return this.i.ir ? this.i.ir.bottom : NaN;
        }
        set valueRowMarginBottom(v) {
            this.ensureValueRowMargin();
            this.i.ir.bottom = +v;
            this.i.ir = this.i.ir;
        }
        get valueRowMarginLeft() {
            return this.i.ir ? this.i.ir.left : NaN;
        }
        set valueRowMarginLeft(v) {
            this.ensureValueRowMargin();
            this.i.ir.left = +v;
            this.i.ir = this.i.ir;
        }
        get valueRowMarginRight() {
            return this.i.ir ? this.i.ir.right : NaN;
        }
        set valueRowMarginRight(v) {
            this.ensureValueRowMargin();
            this.i.ir.right = +v;
            this.i.ir = this.i.ir;
        }
        get valueRowMarginTop() {
            return this.i.ir ? this.i.ir.top : NaN;
        }
        set valueRowMarginTop(v) {
            this.ensureValueRowMargin();
            this.i.ir.top = +v;
            this.i.ir = this.i.ir;
        }
        ensureValueRowMargin() {
            if (this.i.ir) {
                return;
            }
            this.i.ir = new Thickness(2);
        }
        /**
         * Gets or sets whether to show series rows.
        */
        get valueRowVisible() {
            return this.i.b4;
        }
        set valueRowVisible(v) {
            this.i.b4 = ensureBool(v);
        }
        /**
         * Gets or sets text displayed when data column is missing a value, e.g. "no data"
        */
        get valueTextWhenMissingData() {
            return this.i.fe;
        }
        set valueTextWhenMissingData(v) {
            this.i.fe = v;
        }
        /**
         * Gets or sets whether to use series colors when displaying values in the legend
        */
        get valueTextUseSeriesColors() {
            return this.i.b5;
        }
        set valueTextUseSeriesColors(v) {
            this.i.b5 = ensureBool(v);
        }
        get valueTextMarginBottom() {
            return this.i.is ? this.i.is.bottom : NaN;
        }
        set valueTextMarginBottom(v) {
            this.ensureValueTextMargin();
            this.i.is.bottom = +v;
            this.i.is = this.i.is;
        }
        get valueTextMarginLeft() {
            return this.i.is ? this.i.is.left : NaN;
        }
        set valueTextMarginLeft(v) {
            this.ensureValueTextMargin();
            this.i.is.left = +v;
            this.i.is = this.i.is;
        }
        get valueTextMarginRight() {
            return this.i.is ? this.i.is.right : NaN;
        }
        set valueTextMarginRight(v) {
            this.ensureValueTextMargin();
            this.i.is.right = +v;
            this.i.is = this.i.is;
        }
        get valueTextMarginTop() {
            return this.i.is ? this.i.is.top : NaN;
        }
        set valueTextMarginTop(v) {
            this.ensureValueTextMargin();
            this.i.is.top = +v;
            this.i.is = this.i.is;
        }
        ensureValueTextMargin() {
            if (this.i.is) {
                return;
            }
            this.i.is = new Thickness(2);
        }
        /**
         * Gets or sets the units text color.
        */
        get valueTextColor() {
            return brushToString(this.i.h9);
        }
        set valueTextColor(v) {
            this.i.h9 = stringToBrush(v);
        }
        /**
         * Gets or Sets the style to use for the units text.
        */
        get valueTextStyle() {
            if (this.i.bt == null) {
                return null;
            }
            return this.i.bt.fontString;
        }
        set valueTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bt = fi;
        }
        /**
         * Gets or sets the format string for header text displayed in the data legend.
        */
        get headerFormatString() {
            return this.i.dc;
        }
        set headerFormatString(v) {
            this.i.dc = v;
        }
        /**
         * Gets or sets the format specifiers to use with the HeaderFormatString string.
        */
        get headerFormatSpecifiers() {
            return this.i.ag;
        }
        set headerFormatSpecifiers(v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                const re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.ag = v;
        }
        /**
         * Gets or sets globalization culture applied to header only when it displays dates that are fetched from date/time axes
         * This property is ignored when setting HeaderFormatSpecifiers or HeaderFormatString properties
        */
        get headerFormatCulture() {
            return this.i.c8;
        }
        set headerFormatCulture(v) {
            this.i.c8 = v;
        }
        /**
         * Gets or sets date format for the header only when it displays dates that are fetched from date/time axes
         * This property is ignored when setting HeaderFormatSpecifiers or HeaderFormatString properties
        */
        get headerFormatDate() {
            return this.i.ap;
        }
        set headerFormatDate(v) {
            this.i.ap = ensureEnum(DataLegendHeaderDateMode_$type, v);
        }
        /**
         * Gets or sets time format for the header only when it displays dates that are fetched from date/time axes
         * This property is ignored when setting HeaderFormatSpecifiers or HeaderFormatString properties
        */
        get headerFormatTime() {
            return this.i.aq;
        }
        set headerFormatTime(v) {
            this.i.aq = ensureEnum(DataLegendHeaderTimeMode_$type, v);
        }
        /**
         * Gets or sets the HeaderText for the data legend.
        */
        get headerText() {
            return this.i.dh;
        }
        set headerText(v) {
            this.i.dh = v;
        }
        /**
         * Gets or sets the header text color.
        */
        get headerTextColor() {
            return brushToString(this.i.h0);
        }
        set headerTextColor(v) {
            this.i.h0 = stringToBrush(v);
        }
        get headerTextMarginBottom() {
            return this.i.ij ? this.i.ij.bottom : NaN;
        }
        set headerTextMarginBottom(v) {
            this.ensureHeaderTextMargin();
            this.i.ij.bottom = +v;
            this.i.ij = this.i.ij;
        }
        get headerTextMarginLeft() {
            return this.i.ij ? this.i.ij.left : NaN;
        }
        set headerTextMarginLeft(v) {
            this.ensureHeaderTextMargin();
            this.i.ij.left = +v;
            this.i.ij = this.i.ij;
        }
        get headerTextMarginRight() {
            return this.i.ij ? this.i.ij.right : NaN;
        }
        set headerTextMarginRight(v) {
            this.ensureHeaderTextMargin();
            this.i.ij.right = +v;
            this.i.ij = this.i.ij;
        }
        get headerTextMarginTop() {
            return this.i.ij ? this.i.ij.top : NaN;
        }
        set headerTextMarginTop(v) {
            this.ensureHeaderTextMargin();
            this.i.ij.top = +v;
            this.i.ij = this.i.ij;
        }
        ensureHeaderTextMargin() {
            if (this.i.ij) {
                return;
            }
            this.i.ij = new Thickness(2);
        }
        get headerRowMarginBottom() {
            return this.i.ii ? this.i.ii.bottom : NaN;
        }
        set headerRowMarginBottom(v) {
            this.ensureHeaderRowMargin();
            this.i.ii.bottom = +v;
            this.i.ii = this.i.ii;
        }
        get headerRowMarginLeft() {
            return this.i.ii ? this.i.ii.left : NaN;
        }
        set headerRowMarginLeft(v) {
            this.ensureHeaderRowMargin();
            this.i.ii.left = +v;
            this.i.ii = this.i.ii;
        }
        get headerRowMarginRight() {
            return this.i.ii ? this.i.ii.right : NaN;
        }
        set headerRowMarginRight(v) {
            this.ensureHeaderRowMargin();
            this.i.ii.right = +v;
            this.i.ii = this.i.ii;
        }
        get headerRowMarginTop() {
            return this.i.ii ? this.i.ii.top : NaN;
        }
        set headerRowMarginTop(v) {
            this.ensureHeaderRowMargin();
            this.i.ii.top = +v;
            this.i.ii = this.i.ii;
        }
        ensureHeaderRowMargin() {
            if (this.i.ii) {
                return;
            }
            this.i.ii = new Thickness(2);
        }
        /**
         * Gets or sets whether to show Header row.
        */
        get headerRowVisible() {
            return this.i.bz;
        }
        set headerRowVisible(v) {
            this.i.bz = ensureBool(v);
        }
        /**
         * Gets or Sets the style to use for the header text.
        */
        get headerTextStyle() {
            if (this.i.bl == null) {
                return null;
            }
            return this.i.bl.fontString;
        }
        set headerTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bl = fi;
        }
        /**
         * Gets or sets the summary text color.
        */
        get summaryTitleTextColor() {
            return brushToString(this.i.h4);
        }
        set summaryTitleTextColor(v) {
            this.i.h4 = stringToBrush(v);
        }
        /**
         * Gets or Sets the style to use for the summary text.
        */
        get summaryTitleTextStyle() {
            if (this.i.bo == null) {
                return null;
            }
            return this.i.bo.fontString;
        }
        set summaryTitleTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bo = fi;
        }
        /**
         * Gets or sets the SummaryType for the data legend.
        */
        get summaryType() {
            return this.i.a1;
        }
        set summaryType(v) {
            this.i.a1 = ensureEnum(DataLegendSummaryType_$type, v);
        }
        /**
         * Gets or sets the SummaryTitleText for the data legend.
        */
        get summaryTitleText() {
            return this.i.d8;
        }
        set summaryTitleText(v) {
            this.i.d8 = v;
        }
        get summaryTitleTextMarginBottom() {
            return this.i.im ? this.i.im.bottom : NaN;
        }
        set summaryTitleTextMarginBottom(v) {
            this.ensureSummaryTitleTextMargin();
            this.i.im.bottom = +v;
            this.i.im = this.i.im;
        }
        get summaryTitleTextMarginLeft() {
            return this.i.im ? this.i.im.left : NaN;
        }
        set summaryTitleTextMarginLeft(v) {
            this.ensureSummaryTitleTextMargin();
            this.i.im.left = +v;
            this.i.im = this.i.im;
        }
        get summaryTitleTextMarginRight() {
            return this.i.im ? this.i.im.right : NaN;
        }
        set summaryTitleTextMarginRight(v) {
            this.ensureSummaryTitleTextMargin();
            this.i.im.right = +v;
            this.i.im = this.i.im;
        }
        get summaryTitleTextMarginTop() {
            return this.i.im ? this.i.im.top : NaN;
        }
        set summaryTitleTextMarginTop(v) {
            this.ensureSummaryTitleTextMargin();
            this.i.im.top = +v;
            this.i.im = this.i.im;
        }
        ensureSummaryTitleTextMargin() {
            if (this.i.im) {
                return;
            }
            this.i.im = new Thickness(2);
        }
        get summaryRowMarginBottom() {
            return this.i.il ? this.i.il.bottom : NaN;
        }
        set summaryRowMarginBottom(v) {
            this.ensureSummaryRowMargin();
            this.i.il.bottom = +v;
            this.i.il = this.i.il;
        }
        get summaryRowMarginLeft() {
            return this.i.il ? this.i.il.left : NaN;
        }
        set summaryRowMarginLeft(v) {
            this.ensureSummaryRowMargin();
            this.i.il.left = +v;
            this.i.il = this.i.il;
        }
        get summaryRowMarginRight() {
            return this.i.il ? this.i.il.right : NaN;
        }
        set summaryRowMarginRight(v) {
            this.ensureSummaryRowMargin();
            this.i.il.right = +v;
            this.i.il = this.i.il;
        }
        get summaryRowMarginTop() {
            return this.i.il ? this.i.il.top : NaN;
        }
        set summaryRowMarginTop(v) {
            this.ensureSummaryRowMargin();
            this.i.il.top = +v;
            this.i.il = this.i.il;
        }
        ensureSummaryRowMargin() {
            if (this.i.il) {
                return;
            }
            this.i.il = new Thickness(2);
        }
        /**
         * Gets or sets the units text color.
        */
        get summaryValueTextColor() {
            return brushToString(this.i.h6);
        }
        set summaryValueTextColor(v) {
            this.i.h6 = stringToBrush(v);
        }
        /**
         * Gets or Sets the style to use for the units text.
        */
        get summaryValueTextStyle() {
            if (this.i.bq == null) {
                return null;
            }
            return this.i.bq.fontString;
        }
        set summaryValueTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bq = fi;
        }
        /**
         * Gets or sets the units text for the data legend.
        */
        get summaryLabelText() {
            return this.i.d3;
        }
        set summaryLabelText(v) {
            this.i.d3 = v;
        }
        /**
         * Gets or sets the units text color.
        */
        get summaryLabelTextColor() {
            return brushToString(this.i.h3);
        }
        set summaryLabelTextColor(v) {
            this.i.h3 = stringToBrush(v);
        }
        /**
         * Gets or Sets the style to use for the units text.
        */
        get summaryLabelTextStyle() {
            if (this.i.bn == null) {
                return null;
            }
            return this.i.bn.fontString;
        }
        set summaryLabelTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bn = fi;
        }
        /**
         * Gets or sets the units text for the data legend.
        */
        get summaryUnitsText() {
            return this.i.ee;
        }
        set summaryUnitsText(v) {
            this.i.ee = v;
        }
        /**
         * Gets or sets the units text color.
        */
        get summaryUnitsTextColor() {
            return brushToString(this.i.h5);
        }
        set summaryUnitsTextColor(v) {
            this.i.h5 = stringToBrush(v);
        }
        /**
         * Gets or Sets the style to use for the units text.
        */
        get summaryUnitsTextStyle() {
            if (this.i.bp == null) {
                return null;
            }
            return this.i.bp.fontString;
        }
        set summaryUnitsTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bp = fi;
        }
        get badgeMarginBottom() {
            return this.i.ih ? this.i.ih.bottom : NaN;
        }
        set badgeMarginBottom(v) {
            this.ensureBadgeMargin();
            this.i.ih.bottom = +v;
            this.i.ih = this.i.ih;
        }
        get badgeMarginLeft() {
            return this.i.ih ? this.i.ih.left : NaN;
        }
        set badgeMarginLeft(v) {
            this.ensureBadgeMargin();
            this.i.ih.left = +v;
            this.i.ih = this.i.ih;
        }
        get badgeMarginRight() {
            return this.i.ih ? this.i.ih.right : NaN;
        }
        set badgeMarginRight(v) {
            this.ensureBadgeMargin();
            this.i.ih.right = +v;
            this.i.ih = this.i.ih;
        }
        get badgeMarginTop() {
            return this.i.ih ? this.i.ih.top : NaN;
        }
        set badgeMarginTop(v) {
            this.ensureBadgeMargin();
            this.i.ih.top = +v;
            this.i.ih = this.i.ih;
        }
        ensureBadgeMargin() {
            if (this.i.ih) {
                return;
            }
            this.i.ih = new Thickness(2);
        }
        /**
         * Gets or sets the BadgeShape for the data legend.
        */
        get badgeShape() {
            return this.i.a8;
        }
        set badgeShape(v) {
            this.i.a8 = ensureEnum(LegendItemBadgeShape_$type, v);
        }
        /**
         * Gets or sets horizontal position (between 0.0 and 1.0) in viewport of the target component
        */
        get targetCursorPositionX() {
            return this.i.targetCursorPositionX;
        }
        set targetCursorPositionX(v) {
            this.i.targetCursorPositionX = +v;
        }
        /**
         * Gets or sets vertical position (between 0.0 and 1.0) in viewport of the target component
        */
        get targetCursorPositionY() {
            return this.i.targetCursorPositionY;
        }
        set targetCursorPositionY(v) {
            this.i.targetCursorPositionY = +v;
        }
        /**
         * Gets or sets the UnitsMode for the data legend.
        */
        get unitsDisplayMode() {
            return this.i.a2;
        }
        set unitsDisplayMode(v) {
            this.i.a2 = ensureEnum(DataLegendUnitsMode_$type, v);
        }
        /**
         * Gets or sets the units text for the data legend.
        */
        get unitsText() {
            return this.i.er;
        }
        set unitsText(v) {
            this.i.er = v;
        }
        /**
         * Gets or sets the units text color.
        */
        get unitsTextColor() {
            return brushToString(this.i.h8);
        }
        set unitsTextColor(v) {
            this.i.h8 = stringToBrush(v);
        }
        get unitsTextMarginBottom() {
            return this.i.ip ? this.i.ip.bottom : NaN;
        }
        set unitsTextMarginBottom(v) {
            this.ensureUnitsTextMargin();
            this.i.ip.bottom = +v;
            this.i.ip = this.i.ip;
        }
        get unitsTextMarginLeft() {
            return this.i.ip ? this.i.ip.left : NaN;
        }
        set unitsTextMarginLeft(v) {
            this.ensureUnitsTextMargin();
            this.i.ip.left = +v;
            this.i.ip = this.i.ip;
        }
        get unitsTextMarginRight() {
            return this.i.ip ? this.i.ip.right : NaN;
        }
        set unitsTextMarginRight(v) {
            this.ensureUnitsTextMargin();
            this.i.ip.right = +v;
            this.i.ip = this.i.ip;
        }
        get unitsTextMarginTop() {
            return this.i.ip ? this.i.ip.top : NaN;
        }
        set unitsTextMarginTop(v) {
            this.ensureUnitsTextMargin();
            this.i.ip.top = +v;
            this.i.ip = this.i.ip;
        }
        ensureUnitsTextMargin() {
            if (this.i.ip) {
                return;
            }
            this.i.ip = new Thickness(2);
        }
        /**
         * Gets or Sets the style to use for the units text.
        */
        get unitsTextStyle() {
            if (this.i.bs == null) {
                return null;
            }
            return this.i.bs.fontString;
        }
        set unitsTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bs = fi;
        }
        get titleTextMarginBottom() {
            return this.i.io ? this.i.io.bottom : NaN;
        }
        set titleTextMarginBottom(v) {
            this.ensureTitleTextMargin();
            this.i.io.bottom = +v;
            this.i.io = this.i.io;
        }
        get titleTextMarginLeft() {
            return this.i.io ? this.i.io.left : NaN;
        }
        set titleTextMarginLeft(v) {
            this.ensureTitleTextMargin();
            this.i.io.left = +v;
            this.i.io = this.i.io;
        }
        get titleTextMarginRight() {
            return this.i.io ? this.i.io.right : NaN;
        }
        set titleTextMarginRight(v) {
            this.ensureTitleTextMargin();
            this.i.io.right = +v;
            this.i.io = this.i.io;
        }
        get titleTextMarginTop() {
            return this.i.io ? this.i.io.top : NaN;
        }
        set titleTextMarginTop(v) {
            this.ensureTitleTextMargin();
            this.i.io.top = +v;
            this.i.io = this.i.io;
        }
        ensureTitleTextMargin() {
            if (this.i.io) {
                return;
            }
            this.i.io = new Thickness(2);
        }
        /**
         * Gets or sets the display text color.
        */
        get titleTextColor() {
            return brushToString(this.i.h7);
        }
        set titleTextColor(v) {
            this.i.h7 = stringToBrush(v);
        }
        /**
         * Gets or Sets the style to use for the display text.
        */
        get titleTextStyle() {
            if (this.i.br == null) {
                return null;
            }
            return this.i.br.fontString;
        }
        set titleTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.br = fi;
        }
        /**
         * Gets or sets the mode for displaying labels before series values in the data legend, e.g. O: H: L: C: for financial series
        */
        get labelDisplayMode() {
            return this.i.ar;
        }
        set labelDisplayMode(v) {
            this.i.ar = ensureEnum(DataLegendLabelMode_$type, v);
        }
        /**
         * Gets or sets the units text color.
        */
        get labelTextColor() {
            return brushToString(this.i.h1);
        }
        set labelTextColor(v) {
            this.i.h1 = stringToBrush(v);
        }
        get labelTextMarginBottom() {
            return this.i.ik ? this.i.ik.bottom : NaN;
        }
        set labelTextMarginBottom(v) {
            this.ensureLabelTextMargin();
            this.i.ik.bottom = +v;
            this.i.ik = this.i.ik;
        }
        get labelTextMarginLeft() {
            return this.i.ik ? this.i.ik.left : NaN;
        }
        set labelTextMarginLeft(v) {
            this.ensureLabelTextMargin();
            this.i.ik.left = +v;
            this.i.ik = this.i.ik;
        }
        get labelTextMarginRight() {
            return this.i.ik ? this.i.ik.right : NaN;
        }
        set labelTextMarginRight(v) {
            this.ensureLabelTextMargin();
            this.i.ik.right = +v;
            this.i.ik = this.i.ik;
        }
        get labelTextMarginTop() {
            return this.i.ik ? this.i.ik.top : NaN;
        }
        set labelTextMarginTop(v) {
            this.ensureLabelTextMargin();
            this.i.ik.top = +v;
            this.i.ik = this.i.ik;
        }
        ensureLabelTextMargin() {
            if (this.i.ik) {
                return;
            }
            this.i.ik = new Thickness(2);
        }
        /**
         * Gets or Sets the style to use for the units text.
        */
        get labelTextStyle() {
            if (this.i.bm == null) {
                return null;
            }
            return this.i.bm.fontString;
        }
        set labelTextStyle(v) {
            let fi = new FontInfo();
            fi.fontString = v;
            this.i.bm = fi;
        }
        /**
         * Gets or sets the scaling value used to affect the pixel density of the control.
         * A higher scaling ratio will produce crisper visuals at the expense of memory.  Lower values will cause the control to appear blurry.
        */
        get pixelScalingRatio() {
            return this.i.pixelScalingRatio;
        }
        set pixelScalingRatio(v) {
            this.i.pixelScalingRatio = +v;
        }
        findByName(name) {
            if (this.valueFormatSpecifiers != null && arrayFindByName(this.valueFormatSpecifiers, name)) {
                return arrayFindByName(this.valueFormatSpecifiers, name);
            }
            if (this.headerFormatSpecifiers != null && arrayFindByName(this.headerFormatSpecifiers, name)) {
                return arrayFindByName(this.headerFormatSpecifiers, name);
            }
            return null;
        }
        get hasUserValues() {
            return this._hasUserValues;
        }
        __m(propertyName) {
            if (!this._inStyling) {
                this._hasUserValues.add(propertyName);
            }
        }
        _styling(container, component, parent) {
            if (this._inStyling) {
                return;
            }
            this._inStyling = true;
            this._stylingContainer = container;
            this._stylingParent = component;
            let genericPrefix = "";
            let typeName = this.i.$type.name;
            if (typeName.indexOf("Xam") === 0) {
                typeName = typeName.substring(3);
            }
            genericPrefix = toSpinal("DataLegendComponent");
            let additionalPrefixes = [];
            let prefix = toSpinal(typeName);
            additionalPrefixes.push(prefix + "-");
            let b = this.i.$type.baseType;
            while (b && b.name != "Object" &&
                b.name != "Base" &&
                b.name != "Control" &&
                b.Name != "DependencyObject" &&
                b.Name != "FrameworkElement") {
                typeName = b.name;
                if (typeName.indexOf("Xam") === 0) {
                    typeName = typeName.substring(3);
                }
                let basePrefix = toSpinal(typeName);
                additionalPrefixes.push(basePrefix + "-");
                b = b.baseType;
            }
            if (parent) {
                let parentTypeName = parent.i.$type.name;
                if (parentTypeName.indexOf("Xam") === 0) {
                    parentTypeName = parentTypeName.substring(3);
                }
                let parentPrefix = toSpinal(parentTypeName);
                additionalPrefixes.push(parentPrefix + "-" + genericPrefix + "-");
                additionalPrefixes.push(parentPrefix + "-" + prefix + "-");
            }
            initializePropertiesFromCss(container, this, genericPrefix + "-", this.hasUserValues, false, additionalPrefixes);
            if (this._otherStyling) {
                this._otherStyling(container, component, parent);
            }
            this._inStyling = false;
        }
        /**
     * Returns the legend visuals expressed as a serialized string.
    
    */
        exportSerializedVisualData() {
            let iv = this.i.exportSerializedVisualData();
            return (iv);
        }
        /**
         * Notifies the legend about changes to size
        
        */
        notifySizeChanged() {
            this.i.notifySizeChanged();
        }
        /**
         * Forces any pending refresh to the legend to be finished.
        
        */
        flush() {
            this.i.flush();
        }
        getAbbreviatedNumber(number, mode, minDigits, maxDigits) {
            let iv = this.i.cq(number, (mode == null ? null : mode), minDigits, maxDigits);
            return (iv);
        }
        getAbbreviatedSymbol(number, mode, minDigits, maxDigits) {
            let iv = this.i.c7(number, (mode == null ? null : mode), minDigits, maxDigits);
            return (iv);
        }
        getAbbreviatedString(number, mode, minDigits, maxDigits) {
            let iv = this.i.c6(number, (mode == null ? null : mode), minDigits, maxDigits);
            return (iv);
        }
        /**
         * Event raised when calculating summary value for each column in data legend
        */
        get calculateColumnSummary() {
            if (this._calculateColumnSummary == null) {
                this._calculateColumnSummary = new EventEmitter();
                this.i.calculateColumnSummary = delegateCombine(this.i.calculateColumnSummary, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxDataLegendSummaryEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeCalculateColumnSummary) {
                            this.beforeCalculateColumnSummary(this, outerArgs);
                        }
                        this._calculateColumnSummary.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._calculateColumnSummary;
        }
        /**
         * Event raised when styling the header row
        */
        get styleHeaderRow() {
            if (this._styleHeaderRow == null) {
                this._styleHeaderRow = new EventEmitter();
                this.i.styleHeaderRow = delegateCombine(this.i.styleHeaderRow, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxDataLegendStylingRowEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeStyleHeaderRow) {
                            this.beforeStyleHeaderRow(this, outerArgs);
                        }
                        this._styleHeaderRow.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._styleHeaderRow;
        }
        /**
         * Event raised when styling title and badge in series rows
        */
        get styleSeriesRow() {
            if (this._styleSeriesRow == null) {
                this._styleSeriesRow = new EventEmitter();
                this.i.styleSeriesRow = delegateCombine(this.i.styleSeriesRow, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxDataLegendStylingRowEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeStyleSeriesRow) {
                            this.beforeStyleSeriesRow(this, outerArgs);
                        }
                        this._styleSeriesRow.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._styleSeriesRow;
        }
        /**
         * Event raised when styling title in the summary row
        */
        get styleSummaryRow() {
            if (this._styleSummaryRow == null) {
                this._styleSummaryRow = new EventEmitter();
                this.i.styleSummaryRow = delegateCombine(this.i.styleSummaryRow, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxDataLegendStylingRowEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeStyleSummaryRow) {
                            this.beforeStyleSummaryRow(this, outerArgs);
                        }
                        this._styleSummaryRow.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._styleSummaryRow;
        }
        /**
         * Event raised when styling the label, value, and unit columns in series rows
        */
        get styleSeriesColumn() {
            if (this._styleSeriesColumn == null) {
                this._styleSeriesColumn = new EventEmitter();
                this.i.styleSeriesColumn = delegateCombine(this.i.styleSeriesColumn, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxDataLegendStylingColumnEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeStyleSeriesColumn) {
                            this.beforeStyleSeriesColumn(this, outerArgs);
                        }
                        this._styleSeriesColumn.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._styleSeriesColumn;
        }
        /**
         * Event raised when styling the label, value, and unit columns in summary row
        */
        get styleSummaryColumn() {
            if (this._styleSummaryColumn == null) {
                this._styleSummaryColumn = new EventEmitter();
                this.i.styleSummaryColumn = delegateCombine(this.i.styleSummaryColumn, (o, e) => {
                    this._runInZone(() => {
                        let outerArgs = new IgxDataLegendStylingColumnEventArgs();
                        outerArgs._provideImplementation(e);
                        if (this.beforeStyleSummaryColumn) {
                            this.beforeStyleSummaryColumn(this, outerArgs);
                        }
                        this._styleSummaryColumn.emit({
                            sender: this,
                            args: outerArgs
                        });
                    });
                });
            }
            return this._styleSummaryColumn;
        }
        _runInZone(act) {
            if (this._zoneRunner != null) {
                this._zoneRunner(act);
            }
            else {
                act();
            }
        }
    }
    IgxDataLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: IgxDataLegendComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
    IgxDataLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: IgxDataLegendComponent, selector: "igx-data-legend", inputs: { height: "height", width: "width", target: "target", actualBadgesVisible: "actualBadgesVisible", actualPixelScalingRatio: "actualPixelScalingRatio", includedSeries: "includedSeries", excludedSeries: "excludedSeries", includedColumns: "includedColumns", excludedColumns: "excludedColumns", shouldUpdateWhenSeriesDataChanges: "shouldUpdateWhenSeriesDataChanges", valueFormatAbbreviation: "valueFormatAbbreviation", valueFormatMaxFractions: "valueFormatMaxFractions", valueFormatMinFractions: "valueFormatMinFractions", valueFormatMode: "valueFormatMode", valueFormatCulture: "valueFormatCulture", valueFormatCurrencyCode: "valueFormatCurrencyCode", valueFormatUseGrouping: "valueFormatUseGrouping", valueFormatString: "valueFormatString", valueFormatSpecifiers: "valueFormatSpecifiers", valueRowMarginBottom: "valueRowMarginBottom", valueRowMarginLeft: "valueRowMarginLeft", valueRowMarginRight: "valueRowMarginRight", valueRowMarginTop: "valueRowMarginTop", valueRowVisible: "valueRowVisible", valueTextWhenMissingData: "valueTextWhenMissingData", valueTextUseSeriesColors: "valueTextUseSeriesColors", valueTextMarginBottom: "valueTextMarginBottom", valueTextMarginLeft: "valueTextMarginLeft", valueTextMarginRight: "valueTextMarginRight", valueTextMarginTop: "valueTextMarginTop", valueTextColor: "valueTextColor", valueTextStyle: "valueTextStyle", headerFormatString: "headerFormatString", headerFormatSpecifiers: "headerFormatSpecifiers", headerFormatCulture: "headerFormatCulture", headerFormatDate: "headerFormatDate", headerFormatTime: "headerFormatTime", headerText: "headerText", headerTextColor: "headerTextColor", headerTextMarginBottom: "headerTextMarginBottom", headerTextMarginLeft: "headerTextMarginLeft", headerTextMarginRight: "headerTextMarginRight", headerTextMarginTop: "headerTextMarginTop", headerRowMarginBottom: "headerRowMarginBottom", headerRowMarginLeft: "headerRowMarginLeft", headerRowMarginRight: "headerRowMarginRight", headerRowMarginTop: "headerRowMarginTop", headerRowVisible: "headerRowVisible", headerTextStyle: "headerTextStyle", summaryTitleTextColor: "summaryTitleTextColor", summaryTitleTextStyle: "summaryTitleTextStyle", summaryType: "summaryType", summaryTitleText: "summaryTitleText", summaryTitleTextMarginBottom: "summaryTitleTextMarginBottom", summaryTitleTextMarginLeft: "summaryTitleTextMarginLeft", summaryTitleTextMarginRight: "summaryTitleTextMarginRight", summaryTitleTextMarginTop: "summaryTitleTextMarginTop", summaryRowMarginBottom: "summaryRowMarginBottom", summaryRowMarginLeft: "summaryRowMarginLeft", summaryRowMarginRight: "summaryRowMarginRight", summaryRowMarginTop: "summaryRowMarginTop", summaryValueTextColor: "summaryValueTextColor", summaryValueTextStyle: "summaryValueTextStyle", summaryLabelText: "summaryLabelText", summaryLabelTextColor: "summaryLabelTextColor", summaryLabelTextStyle: "summaryLabelTextStyle", summaryUnitsText: "summaryUnitsText", summaryUnitsTextColor: "summaryUnitsTextColor", summaryUnitsTextStyle: "summaryUnitsTextStyle", badgeMarginBottom: "badgeMarginBottom", badgeMarginLeft: "badgeMarginLeft", badgeMarginRight: "badgeMarginRight", badgeMarginTop: "badgeMarginTop", badgeShape: "badgeShape", targetCursorPositionX: "targetCursorPositionX", targetCursorPositionY: "targetCursorPositionY", unitsDisplayMode: "unitsDisplayMode", unitsText: "unitsText", unitsTextColor: "unitsTextColor", unitsTextMarginBottom: "unitsTextMarginBottom", unitsTextMarginLeft: "unitsTextMarginLeft", unitsTextMarginRight: "unitsTextMarginRight", unitsTextMarginTop: "unitsTextMarginTop", unitsTextStyle: "unitsTextStyle", titleTextMarginBottom: "titleTextMarginBottom", titleTextMarginLeft: "titleTextMarginLeft", titleTextMarginRight: "titleTextMarginRight", titleTextMarginTop: "titleTextMarginTop", titleTextColor: "titleTextColor", titleTextStyle: "titleTextStyle", labelDisplayMode: "labelDisplayMode", labelTextColor: "labelTextColor", labelTextMarginBottom: "labelTextMarginBottom", labelTextMarginLeft: "labelTextMarginLeft", labelTextMarginRight: "labelTextMarginRight", labelTextMarginTop: "labelTextMarginTop", labelTextStyle: "labelTextStyle", pixelScalingRatio: "pixelScalingRatio" }, outputs: { calculateColumnSummary: "calculateColumnSummary", styleHeaderRow: "styleHeaderRow", styleSeriesRow: "styleSeriesRow", styleSummaryRow: "styleSummaryRow", styleSeriesColumn: "styleSeriesColumn", styleSummaryColumn: "styleSummaryColumn" }, host: { classAttribute: "ig-data-legend igx-data-legend" }, providers: [], viewQueries: [{ propertyName: "_dynamicContent", first: true, predicate: ["dynamicContent"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: ``, isInline: true, styles: ["\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\t"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
    return IgxDataLegendComponent;
})();
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: IgxDataLegendComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'igx-data-legend',
                    template: ``,
                    changeDetection: ChangeDetectionStrategy.OnPush,
                    providers: [],
                    host: { 'class': 'ig-data-legend igx-data-legend' },
                    styles: [`
		:host {
			display: block;
		}
	`]
                }]
        }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { height: [{
                type: Input
            }], width: [{
                type: Input
            }], _dynamicContent: [{
                type: ViewChild,
                args: ["dynamicContent", { read: ViewContainerRef, static: true }]
            }], target: [{
                type: Input
            }], actualBadgesVisible: [{
                type: Input
            }], actualPixelScalingRatio: [{
                type: Input
            }], includedSeries: [{
                type: Input
            }], excludedSeries: [{
                type: Input
            }], includedColumns: [{
                type: Input
            }], excludedColumns: [{
                type: Input
            }], shouldUpdateWhenSeriesDataChanges: [{
                type: Input
            }], valueFormatAbbreviation: [{
                type: Input
            }], valueFormatMaxFractions: [{
                type: Input
            }], valueFormatMinFractions: [{
                type: Input
            }], valueFormatMode: [{
                type: Input
            }], valueFormatCulture: [{
                type: Input
            }], valueFormatCurrencyCode: [{
                type: Input
            }], valueFormatUseGrouping: [{
                type: Input
            }], valueFormatString: [{
                type: Input
            }], valueFormatSpecifiers: [{
                type: Input
            }], valueRowMarginBottom: [{
                type: Input
            }], valueRowMarginLeft: [{
                type: Input
            }], valueRowMarginRight: [{
                type: Input
            }], valueRowMarginTop: [{
                type: Input
            }], valueRowVisible: [{
                type: Input
            }], valueTextWhenMissingData: [{
                type: Input
            }], valueTextUseSeriesColors: [{
                type: Input
            }], valueTextMarginBottom: [{
                type: Input
            }], valueTextMarginLeft: [{
                type: Input
            }], valueTextMarginRight: [{
                type: Input
            }], valueTextMarginTop: [{
                type: Input
            }], valueTextColor: [{
                type: Input
            }], valueTextStyle: [{
                type: Input
            }], headerFormatString: [{
                type: Input
            }], headerFormatSpecifiers: [{
                type: Input
            }], headerFormatCulture: [{
                type: Input
            }], headerFormatDate: [{
                type: Input
            }], headerFormatTime: [{
                type: Input
            }], headerText: [{
                type: Input
            }], headerTextColor: [{
                type: Input
            }], headerTextMarginBottom: [{
                type: Input
            }], headerTextMarginLeft: [{
                type: Input
            }], headerTextMarginRight: [{
                type: Input
            }], headerTextMarginTop: [{
                type: Input
            }], headerRowMarginBottom: [{
                type: Input
            }], headerRowMarginLeft: [{
                type: Input
            }], headerRowMarginRight: [{
                type: Input
            }], headerRowMarginTop: [{
                type: Input
            }], headerRowVisible: [{
                type: Input
            }], headerTextStyle: [{
                type: Input
            }], summaryTitleTextColor: [{
                type: Input
            }], summaryTitleTextStyle: [{
                type: Input
            }], summaryType: [{
                type: Input
            }], summaryTitleText: [{
                type: Input
            }], summaryTitleTextMarginBottom: [{
                type: Input
            }], summaryTitleTextMarginLeft: [{
                type: Input
            }], summaryTitleTextMarginRight: [{
                type: Input
            }], summaryTitleTextMarginTop: [{
                type: Input
            }], summaryRowMarginBottom: [{
                type: Input
            }], summaryRowMarginLeft: [{
                type: Input
            }], summaryRowMarginRight: [{
                type: Input
            }], summaryRowMarginTop: [{
                type: Input
            }], summaryValueTextColor: [{
                type: Input
            }], summaryValueTextStyle: [{
                type: Input
            }], summaryLabelText: [{
                type: Input
            }], summaryLabelTextColor: [{
                type: Input
            }], summaryLabelTextStyle: [{
                type: Input
            }], summaryUnitsText: [{
                type: Input
            }], summaryUnitsTextColor: [{
                type: Input
            }], summaryUnitsTextStyle: [{
                type: Input
            }], badgeMarginBottom: [{
                type: Input
            }], badgeMarginLeft: [{
                type: Input
            }], badgeMarginRight: [{
                type: Input
            }], badgeMarginTop: [{
                type: Input
            }], badgeShape: [{
                type: Input
            }], targetCursorPositionX: [{
                type: Input
            }], targetCursorPositionY: [{
                type: Input
            }], unitsDisplayMode: [{
                type: Input
            }], unitsText: [{
                type: Input
            }], unitsTextColor: [{
                type: Input
            }], unitsTextMarginBottom: [{
                type: Input
            }], unitsTextMarginLeft: [{
                type: Input
            }], unitsTextMarginRight: [{
                type: Input
            }], unitsTextMarginTop: [{
                type: Input
            }], unitsTextStyle: [{
                type: Input
            }], titleTextMarginBottom: [{
                type: Input
            }], titleTextMarginLeft: [{
                type: Input
            }], titleTextMarginRight: [{
                type: Input
            }], titleTextMarginTop: [{
                type: Input
            }], titleTextColor: [{
                type: Input
            }], titleTextStyle: [{
                type: Input
            }], labelDisplayMode: [{
                type: Input
            }], labelTextColor: [{
                type: Input
            }], labelTextMarginBottom: [{
                type: Input
            }], labelTextMarginLeft: [{
                type: Input
            }], labelTextMarginRight: [{
                type: Input
            }], labelTextMarginTop: [{
                type: Input
            }], labelTextStyle: [{
                type: Input
            }], pixelScalingRatio: [{
                type: Input
            }], calculateColumnSummary: [{
                type: Output
            }], styleHeaderRow: [{
                type: Output
            }], styleSeriesRow: [{
                type: Output
            }], styleSummaryRow: [{
                type: Output
            }], styleSeriesColumn: [{
                type: Output
            }], styleSummaryColumn: [{
                type: Output
            }] } });
