import { CalloutAnnotation as CalloutAnnotation_internal } from "./CalloutAnnotation";
import { brushToString, stringToBrush } from "igniteui-react-core/ES5/componentUtil";
/**
 * Represents a callout annotation
*/
var CalloutAnnotation = /** @class */ (function () {
    function CalloutAnnotation() {
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    CalloutAnnotation.prototype.createImplementation = function () {
        return new CalloutAnnotation_internal();
    };
    Object.defineProperty(CalloutAnnotation.prototype, "i", {
        get: function () {
            return this._implementation;
        },
        enumerable: true,
        configurable: true
    });
    CalloutAnnotation.prototype.onImplementationCreated = function () {
    };
    CalloutAnnotation.prototype._provideImplementation = function (i) {
        this._implementation = i;
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    };
    Object.defineProperty(CalloutAnnotation.prototype, "xValue", {
        /**
         * Gets or sets the XValue at which this annotation is displayed on the axis.
        */
        get: function () {
            return this.i.xValue;
        },
        set: function (v) {
            this.i.xValue = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "yValue", {
        /**
         * Gets or sets the YValue at which this annotation is displayed on the axis.
        */
        get: function () {
            return this.i.yValue;
        },
        set: function (v) {
            this.i.yValue = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "text", {
        /**
         * Gets or sets the text that should be displayed for the annotation. Leave null to display the value automatically.
        */
        get: function () {
            return this.i.text;
        },
        set: function (v) {
            this.i.text = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "key", {
        /**
         * Gets or sets the Key that should be annotated.
        */
        get: function () {
            return this.i.key;
        },
        set: function (v) {
            this.i.key = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "content", {
        /**
         * Gets or sets the Content that should be annotated.
        */
        get: function () {
            return this.i.content;
        },
        set: function (v) {
            this.i.content = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "series", {
        /**
         * Gets or sets the series to which the callout pertains to. Leave unset for an automatic value.
        */
        get: function () {
            if (this.i.series == null) {
                return null;
            }
            return this.i.series.externalObject;
        },
        set: function (v) {
            v == null ? this.i.series = null : this.i.series = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "formatLabel", {
        /**
         * Sets or gets a function which takes an object that produces a formatted label for the value of this annotation.
        */
        get: function () {
            return this.i.formatLabel;
        },
        set: function (v) {
            this.i.formatLabel = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "textColor", {
        /**
         * Gets or sets the color to use for the text in the annotation.
        */
        get: function () {
            return brushToString(this.i.textColor);
        },
        set: function (v) {
            this.i.textColor = stringToBrush(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "background", {
        /**
         * Gets or sets the background to use for tha axis annotation box.
        */
        get: function () {
            return brushToString(this.i.background);
        },
        set: function (v) {
            this.i.background = stringToBrush(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "outline", {
        /**
         * Gets or sets the Outline to use for tha axis annotation box.
        */
        get: function () {
            return brushToString(this.i.outline);
        },
        set: function (v) {
            this.i.outline = stringToBrush(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "leaderBrush", {
        /**
         * Gets or sets the LeaderBrush to use for tha axis annotation box.
        */
        get: function () {
            return brushToString(this.i.leaderBrush);
        },
        set: function (v) {
            this.i.leaderBrush = stringToBrush(v);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "strokeThickness", {
        /**
         * Gets or sets the border stroke thickness to use for tha axis annotation box.
        */
        get: function () {
            return this.i.strokeThickness;
        },
        set: function (v) {
            this.i.strokeThickness = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "backgroundPaddingLeft", {
        /**
         * Gets or sets the padding to use withing the axis annotation callout. Leaving this NaN will use an automatic value related to the axis label margins.
        */
        get: function () {
            return this.i.backgroundPaddingLeft;
        },
        set: function (v) {
            this.i.backgroundPaddingLeft = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "backgroundPaddingTop", {
        /**
         * Gets or sets the padding to use withing the axis annotation callout. Leaving this NaN will use an automatic value related to the axis label margins.
        */
        get: function () {
            return this.i.backgroundPaddingTop;
        },
        set: function (v) {
            this.i.backgroundPaddingTop = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "backgroundPaddingRight", {
        /**
         * Gets or sets the padding to use withing the axis annotation callout. Leaving this NaN will use an automatic value related to the axis label margins.
        */
        get: function () {
            return this.i.backgroundPaddingRight;
        },
        set: function (v) {
            this.i.backgroundPaddingRight = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(CalloutAnnotation.prototype, "backgroundPaddingBottom", {
        /**
         * Gets or sets the padding to use withing the axis annotation callout. Leaving this NaN will use an automatic value related to the axis label margins.
        */
        get: function () {
            return this.i.backgroundPaddingBottom;
        },
        set: function (v) {
            this.i.backgroundPaddingBottom = +v;
        },
        enumerable: true,
        configurable: true
    });
    return CalloutAnnotation;
}());
export { CalloutAnnotation };
