import { HorizontalAlignment_$type } from "igniteui-react-core/ES2015/HorizontalAlignment";
import { VerticalAlignment_$type } from "igniteui-react-core/ES2015/VerticalAlignment";
import { Visibility_$type } from "igniteui-react-core/ES2015/Visibility";
import { AxisLabelsLocation_$type } from "./AxisLabelsLocation";
import { IgrDomainChart } from "./igr-domain-chart";
import { brushToString, stringToBrush, ensureBool, ensureEnum } from "igniteui-react-core/ES2015/componentUtil";
/**
 * Represents a base class for domain charts with X/Y axes
*/
export class IgrXYChart extends IgrDomainChart {
    constructor(props) {
        super(props);
    }
    get i() {
        return this._implementation;
    }
    /**
     * Gets or sets function which takes an context object and returns a formatted label for the X-axis.
    */
    get xAxisFormatLabel() {
        return this.i.go;
    }
    set xAxisFormatLabel(v) {
        this.i.go = v;
    }
    /**
     * Gets or sets function which takes a context object and returns a formatted label for the Y-axis.
    */
    get yAxisFormatLabel() {
        return this.i.gp;
    }
    set yAxisFormatLabel(v) {
        this.i.gp = v;
    }
    /**
     * Gets or sets the left margin of labels on the X-axis
    */
    get xAxisLabelLeftMargin() {
        return this.i.h1;
    }
    set xAxisLabelLeftMargin(v) {
        this.i.h1 = +v;
    }
    /**
     * Gets or sets the top margin of labels on the X-axis
    */
    get xAxisLabelTopMargin() {
        return this.i.h3;
    }
    set xAxisLabelTopMargin(v) {
        this.i.h3 = +v;
    }
    /**
     * Gets or sets the right margin of labels on the X-axis
    */
    get xAxisLabelRightMargin() {
        return this.i.h2;
    }
    set xAxisLabelRightMargin(v) {
        this.i.h2 = +v;
    }
    /**
     * Gets or sets the bottom margin of labels on the X-axis
    */
    get xAxisLabelBottomMargin() {
        return this.i.h0;
    }
    set xAxisLabelBottomMargin(v) {
        this.i.h0 = +v;
    }
    /**
     * Gets or sets the left margin of labels on the Y-axis
    */
    get yAxisLabelLeftMargin() {
        return this.i.ij;
    }
    set yAxisLabelLeftMargin(v) {
        this.i.ij = +v;
    }
    /**
     * Gets or sets the top margin of labels on the Y-axis
    */
    get yAxisLabelTopMargin() {
        return this.i.il;
    }
    set yAxisLabelTopMargin(v) {
        this.i.il = +v;
    }
    /**
     * Gets or sets the right margin of labels on the Y-axis
    */
    get yAxisLabelRightMargin() {
        return this.i.ik;
    }
    set yAxisLabelRightMargin(v) {
        this.i.ik = +v;
    }
    /**
     * Gets or sets the bottom margin of labels on the Y-axis
    */
    get yAxisLabelBottomMargin() {
        return this.i.ii;
    }
    set yAxisLabelBottomMargin(v) {
        this.i.ii = +v;
    }
    /**
     * Gets or sets color of labels on the X-axis
    */
    get xAxisLabelTextColor() {
        return brushToString(this.i.ma);
    }
    set xAxisLabelTextColor(v) {
        this.i.ma = stringToBrush(v);
    }
    /**
     * Gets or sets color of labels on the Y-axis
    */
    get yAxisLabelTextColor() {
        return brushToString(this.i.mh);
    }
    set yAxisLabelTextColor(v) {
        this.i.mh = stringToBrush(v);
    }
    /**
     * Gets or sets the margin around a title on the X-axis
    */
    get xAxisTitleMargin() {
        return this.i.ic;
    }
    set xAxisTitleMargin(v) {
        this.i.ic = +v;
    }
    /**
     * Gets or sets the margin around a title on the Y-axis
    */
    get yAxisTitleMargin() {
        return this.i.iv;
    }
    set yAxisTitleMargin(v) {
        this.i.iv = +v;
    }
    /**
     * Gets or sets the left margin of a title on the X-axis
    */
    get xAxisTitleLeftMargin() {
        return this.i.ib;
    }
    set xAxisTitleLeftMargin(v) {
        this.i.ib = +v;
    }
    /**
     * Gets or sets the left margin of a title on the Y-axis
    */
    get yAxisTitleLeftMargin() {
        return this.i.iu;
    }
    set yAxisTitleLeftMargin(v) {
        this.i.iu = +v;
    }
    /**
     * Gets or sets the top margin of a title on the X-axis
    */
    get xAxisTitleTopMargin() {
        return this.i.ie;
    }
    set xAxisTitleTopMargin(v) {
        this.i.ie = +v;
    }
    /**
     * Gets or sets the top margin of a title on the Y-axis
    */
    get yAxisTitleTopMargin() {
        return this.i.ix;
    }
    set yAxisTitleTopMargin(v) {
        this.i.ix = +v;
    }
    /**
     * Gets or sets the right margin of a title on the X-axis
    */
    get xAxisTitleRightMargin() {
        return this.i.id;
    }
    set xAxisTitleRightMargin(v) {
        this.i.id = +v;
    }
    /**
     * Gets or sets the right margin of a title on the Y-axis
    */
    get yAxisTitleRightMargin() {
        return this.i.iw;
    }
    set yAxisTitleRightMargin(v) {
        this.i.iw = +v;
    }
    /**
     * Gets or sets the bottom margin of a title on the X-axis
    */
    get xAxisTitleBottomMargin() {
        return this.i.ia;
    }
    set xAxisTitleBottomMargin(v) {
        this.i.ia = +v;
    }
    /**
     * Gets or sets the bottom margin of a title on the Y-axis
    */
    get yAxisTitleBottomMargin() {
        return this.i.it;
    }
    set yAxisTitleBottomMargin(v) {
        this.i.it = +v;
    }
    /**
     * Gets or sets color of title on the X-axis
    */
    get xAxisTitleTextColor() {
        return brushToString(this.i.mg);
    }
    set xAxisTitleTextColor(v) {
        this.i.mg = stringToBrush(v);
    }
    /**
     * Gets or sets color of title on the Y-axis
    */
    get yAxisTitleTextColor() {
        return brushToString(this.i.mn);
    }
    set yAxisTitleTextColor(v) {
        this.i.mn = stringToBrush(v);
    }
    /**
     * Gets or sets CSS font property for labels on X-axis
    */
    get xAxisLabelTextStyle() {
        return this.i.jj;
    }
    set xAxisLabelTextStyle(v) {
        this.i.jj = v;
    }
    /**
     * Gets or sets CSS font property for labels on Y-axis
    */
    get yAxisLabelTextStyle() {
        return this.i.kl;
    }
    set yAxisLabelTextStyle(v) {
        this.i.kl = v;
    }
    /**
     * Gets or sets CSS font property for title on X-axis
    */
    get xAxisTitleTextStyle() {
        return this.i.j7;
    }
    set xAxisTitleTextStyle(v) {
        this.i.j7 = v;
    }
    /**
     * Gets or sets CSS font property for title on Y-axis
    */
    get yAxisTitleTextStyle() {
        return this.i.k9;
    }
    set yAxisTitleTextStyle(v) {
        this.i.k9 = v;
    }
    /**
     * Gets or sets the format for labels along the X-axis.
    */
    get xAxisLabel() {
        return this.i.i0;
    }
    set xAxisLabel(v) {
        this.i.i0 = v;
    }
    /**
     * Gets or sets the format for labels along the Y-axis.
    */
    get yAxisLabel() {
        return this.i.i1;
    }
    set yAxisLabel(v) {
        this.i.i1 = v;
    }
    /**
     * Gets or sets the color to apply to major gridlines along the X-axis.
    */
    get xAxisMajorStroke() {
        return brushToString(this.i.mb);
    }
    set xAxisMajorStroke(v) {
        this.i.mb = stringToBrush(v);
    }
    /**
     * Gets or sets the color to apply to major gridlines along the Y-axis.
    */
    get yAxisMajorStroke() {
        return brushToString(this.i.mi);
    }
    set yAxisMajorStroke(v) {
        this.i.mi = stringToBrush(v);
    }
    /**
     * Gets or sets the thickness to apply to major gridlines along the X-axis.
    */
    get xAxisMajorStrokeThickness() {
        return this.i.h4;
    }
    set xAxisMajorStrokeThickness(v) {
        this.i.h4 = +v;
    }
    /**
     * Gets or sets the thickness to apply to major gridlines along the Y-axis.
    */
    get yAxisMajorStrokeThickness() {
        return this.i.im;
    }
    set yAxisMajorStrokeThickness(v) {
        this.i.im = +v;
    }
    /**
     * Gets or sets the thickness to apply to minor gridlines along the X-axis.
    */
    get xAxisMinorStrokeThickness() {
        return this.i.h5;
    }
    set xAxisMinorStrokeThickness(v) {
        this.i.h5 = +v;
    }
    /**
     * Gets or sets the thickness to apply to minor gridlines along the Y-axis.
    */
    get yAxisMinorStrokeThickness() {
        return this.i.io;
    }
    set yAxisMinorStrokeThickness(v) {
        this.i.io = +v;
    }
    /**
     * Gets or sets the color to apply to stripes along the X-axis.
    */
    get xAxisStrip() {
        return brushToString(this.i.md);
    }
    set xAxisStrip(v) {
        this.i.md = stringToBrush(v);
    }
    /**
     * Gets or sets the color to apply to stripes along the Y-axis.
    */
    get yAxisStrip() {
        return brushToString(this.i.mk);
    }
    set yAxisStrip(v) {
        this.i.mk = stringToBrush(v);
    }
    /**
     * Gets or sets the color to apply to the X-axis line.
    */
    get xAxisStroke() {
        return brushToString(this.i.me);
    }
    set xAxisStroke(v) {
        this.i.me = stringToBrush(v);
    }
    /**
     * Gets or sets the color to apply to the Y-axis line.
    */
    get yAxisStroke() {
        return brushToString(this.i.ml);
    }
    set yAxisStroke(v) {
        this.i.ml = stringToBrush(v);
    }
    /**
     * Gets or sets the thickness to apply to the X-axis line.
    */
    get xAxisStrokeThickness() {
        return this.i.h6;
    }
    set xAxisStrokeThickness(v) {
        this.i.h6 = +v;
    }
    /**
     * Gets or sets the thickness to apply to the Y-axis line.
    */
    get yAxisStrokeThickness() {
        return this.i.ip;
    }
    set yAxisStrokeThickness(v) {
        this.i.ip = +v;
    }
    /**
     * Gets or sets the length of tickmarks along the X-axis.
    */
    get xAxisTickLength() {
        return this.i.h7;
    }
    set xAxisTickLength(v) {
        this.i.h7 = +v;
    }
    /**
     * Gets or sets the length of tickmarks along the Y-axis.
    */
    get yAxisTickLength() {
        return this.i.iq;
    }
    set yAxisTickLength(v) {
        this.i.iq = +v;
    }
    /**
     * Gets or sets the color to apply to tickmarks along the X-axis.
    */
    get xAxisTickStroke() {
        return brushToString(this.i.mf);
    }
    set xAxisTickStroke(v) {
        this.i.mf = stringToBrush(v);
    }
    /**
     * Gets or sets the color to apply to tickmarks along the Y-axis.
    */
    get yAxisTickStroke() {
        return brushToString(this.i.mm);
    }
    set yAxisTickStroke(v) {
        this.i.mm = stringToBrush(v);
    }
    /**
     * Gets or sets the thickness to apply to tickmarks along the X-axis.
    */
    get xAxisTickStrokeThickness() {
        return this.i.h8;
    }
    set xAxisTickStrokeThickness(v) {
        this.i.h8 = +v;
    }
    /**
     * Gets or sets the thickness to apply to tickmarks along the Y-axis.
    */
    get yAxisTickStrokeThickness() {
        return this.i.ir;
    }
    set yAxisTickStrokeThickness(v) {
        this.i.ir = +v;
    }
    /**
     * Gets or sets the Text to display below the X-axis.
    */
    get xAxisTitle() {
        return this.i.jy;
    }
    set xAxisTitle(v) {
        this.i.jy = v;
    }
    /**
     * Gets or sets the Text to display to the left of the Y-axis.
    */
    get yAxisTitle() {
        return this.i.k0;
    }
    set yAxisTitle(v) {
        this.i.k0 = v;
    }
    /**
     * Gets or sets the color to apply to minor gridlines along the X-axis.
    */
    get xAxisMinorStroke() {
        return brushToString(this.i.mc);
    }
    set xAxisMinorStroke(v) {
        this.i.mc = stringToBrush(v);
    }
    /**
     * Gets or sets the color to apply to minor gridlines along the Y-axis.
    */
    get yAxisMinorStroke() {
        return brushToString(this.i.mj);
    }
    set yAxisMinorStroke(v) {
        this.i.mj = stringToBrush(v);
    }
    /**
     * Gets or sets the angle of rotation for labels along the X-axis.
    */
    get xAxisLabelAngle() {
        return this.i.hz;
    }
    set xAxisLabelAngle(v) {
        this.i.hz = +v;
    }
    /**
     * Gets or sets the angle of rotation for labels along the Y-axis.
    */
    get yAxisLabelAngle() {
        return this.i.ih;
    }
    set yAxisLabelAngle(v) {
        this.i.ih = +v;
    }
    /**
     * Gets or sets the distance between the X-axis and the bottom of the chart.
    */
    get xAxisExtent() {
        return this.i.hy;
    }
    set xAxisExtent(v) {
        this.i.hy = +v;
    }
    /**
     * Gets or sets the distance between the Y-axis and the left edge of the chart.
    */
    get yAxisExtent() {
        return this.i.ig;
    }
    set yAxisExtent(v) {
        this.i.ig = +v;
    }
    /**
     * Gets or sets the angle of rotation for the X-axis title.
    */
    get xAxisTitleAngle() {
        return this.i.h9;
    }
    set xAxisTitleAngle(v) {
        this.i.h9 = +v;
    }
    /**
     * Gets or sets the angle of rotation for the Y-axis title.
    */
    get yAxisTitleAngle() {
        return this.i.is;
    }
    set yAxisTitleAngle(v) {
        this.i.is = +v;
    }
    /**
     * Gets or sets whether to invert the direction of the X-axis by placing the first data items on the right side of the chart.
    */
    get xAxisInverted() {
        return this.i.gu;
    }
    set xAxisInverted(v) {
        this.i.gu = ensureBool(v);
    }
    /**
     * Gets or sets whether to invert the direction of the Y-axis by placing the minimum numeric value at the top of the chart.
    */
    get yAxisInverted() {
        return this.i.gv;
    }
    set yAxisInverted(v) {
        this.i.gv = ensureBool(v);
    }
    /**
     * Gets or sets Horizontal alignment of the X-axis title.
    */
    get xAxisTitleAlignment() {
        return this.i.lu;
    }
    set xAxisTitleAlignment(v) {
        this.i.lu = ensureEnum(HorizontalAlignment_$type, v);
    }
    /**
     * Gets or sets Vertical alignment of the Y-axis title.
    */
    get yAxisTitleAlignment() {
        return this.i.mt;
    }
    set yAxisTitleAlignment(v) {
        this.i.mt = ensureEnum(VerticalAlignment_$type, v);
    }
    /**
     * Gets or sets Horizontal alignment of X-axis labels.
    */
    get xAxisLabelHorizontalAlignment() {
        return this.i.lt;
    }
    set xAxisLabelHorizontalAlignment(v) {
        this.i.lt = ensureEnum(HorizontalAlignment_$type, v);
    }
    /**
     * Gets or sets Horizontal alignment of Y-axis labels.
    */
    get yAxisLabelHorizontalAlignment() {
        return this.i.lv;
    }
    set yAxisLabelHorizontalAlignment(v) {
        this.i.lv = ensureEnum(HorizontalAlignment_$type, v);
    }
    /**
     * Gets or sets Vertical alignment of X-axis labels.
    */
    get xAxisLabelVerticalAlignment() {
        return this.i.mr;
    }
    set xAxisLabelVerticalAlignment(v) {
        this.i.mr = ensureEnum(VerticalAlignment_$type, v);
    }
    /**
     * Gets or sets Vertical alignment of Y-axis labels.
    */
    get yAxisLabelVerticalAlignment() {
        return this.i.ms;
    }
    set yAxisLabelVerticalAlignment(v) {
        this.i.ms = ensureEnum(VerticalAlignment_$type, v);
    }
    /**
     * Gets or sets Visibility of X-axis labels.
    */
    get xAxisLabelVisibility() {
        return this.i.mw;
    }
    set xAxisLabelVisibility(v) {
        this.i.mw = ensureEnum(Visibility_$type, v);
    }
    /**
     * Gets or sets Visibility of Y-axis labels.
    */
    get yAxisLabelVisibility() {
        return this.i.mx;
    }
    set yAxisLabelVisibility(v) {
        this.i.mx = ensureEnum(Visibility_$type, v);
    }
    /**
     * The location of Y-axis labels, relative to the plot area.
    */
    get yAxisLabelLocation() {
        return this.i.gr;
    }
    set yAxisLabelLocation(v) {
        this.i.gr = ensureEnum(AxisLabelsLocation_$type, v);
    }
    provideContainer(container) {
        this.i.provideContainer(container);
    }
    /**
     * Converts the given visual location to a data value.
    
    * @param unscaledValue  * The x-coordinate of the location to scale.
    */
    getScaledValueX(unscaledValue) {
        let iv = this.i.hu(unscaledValue);
        return (iv);
    }
    /**
     * Converts the given data value to a visual location.
    
    * @param scaledValue  * The data value to un-scale.
    */
    getUnscaledValueX(scaledValue) {
        let iv = this.i.hw(scaledValue);
        return (iv);
    }
    /**
     * Converts the given visual location to a data value.
    
    * @param unscaledValue  * The y-coordinate of the location to scale.
    */
    getScaledValueY(unscaledValue) {
        let iv = this.i.hv(unscaledValue);
        return (iv);
    }
    /**
     * Converts the given data value to a visual location.
    
    * @param scaledValue  * The data value to un-scale.
    */
    getUnscaledValueY(scaledValue) {
        let iv = this.i.hx(scaledValue);
        return (iv);
    }
}
