import * as tslib_1 from "tslib";
/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE  AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE:  you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import * as React from 'react';
import { TimeAxisLabelFormat } from "./TimeAxisLabelFormat";
import { TypeRegistrar } from "igniteui-react-core";
import { NamePatcher, getModifiedProps, isValidProp, toSpinal, initializePropertiesFromCss } from "igniteui-react-core";
var IgrTimeAxisLabelFormat = /** @class */ /*@__PURE__*/ (function (_super) {
    tslib_1.__extends(IgrTimeAxisLabelFormat, _super);
    function IgrTimeAxisLabelFormat(props) {
        var _this = _super.call(this, props) || this;
        _this._renderer = null;
        _this.__p = null;
        _this._hasUserValues = new Set();
        _this._stylingContainer = null;
        _this._stylingParent = null;
        _this._inStyling = false;
        if (_this._styling) {
            NamePatcher.ensureStylablePatched(Object.getPrototypeOf(_this));
        }
        _this._implementation = _this.createImplementation();
        _this._implementation.externalObject = _this;
        _this.onImplementationCreated();
        return _this;
    }
    Object.defineProperty(IgrTimeAxisLabelFormat.prototype, "i", {
        get: function () {
            return this._implementation;
        },
        enumerable: true,
        configurable: true
    });
    IgrTimeAxisLabelFormat.prototype.onImplementationCreated = function () {
    };
    IgrTimeAxisLabelFormat.prototype.componentDidMount = function () {
        var e_1, _a;
        try {
            for (var _b = tslib_1.__values(Object.keys(this.props)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var p = _c.value;
                if (isValidProp(this, p)) {
                    this[p] = this.props[p];
                }
            }
        }
        catch (e_1_1) {
            e_1 = { error: e_1_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_1)
                    throw e_1.error;
            }
        }
    };
    IgrTimeAxisLabelFormat.prototype.shouldComponentUpdate = function (nextProps, nextState) {
        var e_2, _a;
        var mod = getModifiedProps(this.props, nextProps);
        try {
            for (var _b = tslib_1.__values(Object.keys(mod)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var p = _c.value;
                if (isValidProp(this, p)) {
                    this[p] = mod[p];
                }
            }
        }
        catch (e_2_1) {
            e_2 = { error: e_2_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_2)
                    throw e_2.error;
            }
        }
        return true;
    };
    IgrTimeAxisLabelFormat.prototype.render = function () {
        return null;
    };
    IgrTimeAxisLabelFormat.prototype.createImplementation = function () {
        return new TimeAxisLabelFormat();
    };
    IgrTimeAxisLabelFormat.prototype._provideRenderer = function (renderer) {
        this._renderer = renderer;
    };
    IgrTimeAxisLabelFormat._createFromInternal = function (internal) {
        if (!internal) {
            return null;
        }
        if (!internal.$type) {
            return null;
        }
        var name = internal.$type.name;
        var externalName = "Igr" + name;
        if (!TypeRegistrar.isRegistered(externalName)) {
            return null;
        }
        return TypeRegistrar.create(externalName);
    };
    Object.defineProperty(IgrTimeAxisLabelFormat.prototype, "range", {
        /**
     * The visible axis range at which to apply this label format.
    *
    * The `range` property provide the visible axis range at which to apply this label format.
    *
    * ```ts
    * let labelFormat = new TimeAxisLabelFormat();
    * labelFormat.format = "hh:mm:ss";
    * labelFormat.range = 1000;
    * this.xAxis.labelFormats.add(labelFormat);
    * labelFormat = new TimeAxisLabelFormat();
    * labelFormat.format = "hh:mm";
    * labelFormat.range = 60 * 1000;
    * this.xAxis.labelFormats.add(labelFormat);
    * labelFormat = new TimeAxisLabelFormat();
    * labelFormat.format = "MMM-dd-yy";
    * labelFormat.range = 24 * 60 * 60 * 1000;
    * this.xAxis.labelFormats.add(labelFormat);
    * ```
    */
        get: function () {
            return this.i.o;
        },
        set: function (v) {
            this.i.o = +v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrTimeAxisLabelFormat.prototype, "format", {
        /**
         * The DateTime format string to apply.
         * Some common DateTime format strings are: yyyy, MM/dd/yy, and hh:mm:ss.
        *
        * The `format` property provide the DateTime format string to apply.
        *
        * ```ts
        * let labelFormat = new TimeAxisLabelFormat();
        * labelFormat.format = "hh:mm:ss";
        * labelFormat.range = 1000;
        * this.xAxis.labelFormats.add(labelFormat);
        * labelFormat = new TimeAxisLabelFormat();
        * labelFormat.format = "hh:mm";
        * labelFormat.range = 60 * 1000;
        * this.xAxis.labelFormats.add(labelFormat);
        * labelFormat = new TimeAxisLabelFormat();
        * labelFormat.format = "MMM-dd-yy";
        * labelFormat.range = 24 * 60 * 60 * 1000;
        * this.xAxis.labelFormats.add(labelFormat);
        * ```
        *
        * ```ts
        *   <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *     <IgrTimeXAxis name="xAxis" label="Date"
        * 			dateTimeMemberPath="Date" />
        *  </IgrDataChart>
        * ```
        */
        get: function () {
            return this.i.e;
        },
        set: function (v) {
            this.i.e = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrTimeAxisLabelFormat.prototype, "repeatedYearFormat", {
        /**
         * The DateTime format string to apply, if the year is repeated from the prior date.
         * Some common DateTime format strings are: yyyy, MM/dd/yy, and hh:mm:ss.
        */
        get: function () {
            return this.i.l;
        },
        set: function (v) {
            this.i.l = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrTimeAxisLabelFormat.prototype, "repeatedMonthFormat", {
        /**
         * The DateTime format string to apply, if the month is repeated from the prior date.
         * Some common DateTime format strings are: yyyy, MM/dd/yy, and hh:mm:ss.
        */
        get: function () {
            return this.i.j;
        },
        set: function (v) {
            this.i.j = v;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(IgrTimeAxisLabelFormat.prototype, "repeatedDayFormat", {
        /**
         * The DateTime format string to apply, if the day is repeated from the prior date.
         * Some common DateTime format strings are: yyyy, MM/dd/yy, and hh:mm:ss.
        */
        get: function () {
            return this.i.h;
        },
        set: function (v) {
            this.i.h = v;
        },
        enumerable: true,
        configurable: true
    });
    IgrTimeAxisLabelFormat.prototype.findByName = function (name) {
        return null;
    };
    Object.defineProperty(IgrTimeAxisLabelFormat.prototype, "hasUserValues", {
        get: function () {
            return this._hasUserValues;
        },
        enumerable: true,
        configurable: true
    });
    IgrTimeAxisLabelFormat.prototype.__m = function (propertyName) {
        if (!this._inStyling) {
            this._hasUserValues.add(propertyName);
        }
    };
    IgrTimeAxisLabelFormat.prototype._styling = function (container, component, parent) {
        if (this._inStyling) {
            return;
        }
        this._inStyling = true;
        this._stylingContainer = container;
        this._stylingParent = component;
        var genericPrefix = "";
        var typeName = this.i.$type.name;
        if (typeName.indexOf("Xam") === 0) {
            typeName = typeName.substring(3);
        }
        genericPrefix = toSpinal("TimeAxisLabelFormat");
        var additionalPrefixes = [];
        var prefix = toSpinal(typeName);
        additionalPrefixes.push(prefix + "-");
        var 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);
            }
            var basePrefix = toSpinal(typeName);
            additionalPrefixes.push(basePrefix + "-");
            b = b.baseType;
        }
        if (parent) {
            var parentTypeName = parent.i.$type.name;
            if (parentTypeName.indexOf("Xam") === 0) {
                parentTypeName = parentTypeName.substring(3);
            }
            var 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;
    };
    return IgrTimeAxisLabelFormat;
}(React.Component));
export { IgrTimeAxisLabelFormat };
//# sourceMappingURL=igr-time-axis-label-format.js.map
