/*
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 { Component, Input } from "@angular/core";
import { TypeRegistrar } from "igniteui-angular-core";
import { TimeAxisLabelFormat } from "./TimeAxisLabelFormat";
import { toSpinal, initializePropertiesFromCss } from "igniteui-angular-core";
import * as i0 from "@angular/core";
export let IgxTimeAxisLabelFormatComponent = /*@__PURE__*/ (() => {
    class IgxTimeAxisLabelFormatComponent {
        constructor() {
            this._renderer = null;
            this.__p = null;
            this._hasUserValues = new Set();
            this._stylingContainer = null;
            this._stylingParent = null;
            this._inStyling = false;
            this._zoneRunner = null;
            this._implementation = this.createImplementation();
            this._implementation.externalObject = this;
            this.onImplementationCreated();
        }
        get i() {
            return this._implementation;
        }
        onImplementationCreated() {
        }
        createImplementation() {
            return new TimeAxisLabelFormat();
        }
        ngOnInit() {
        }
        _provideRenderer(renderer) {
            this._renderer = renderer;
            this._zoneRunner = (act) => renderer._ngZone.run(act);
        }
        static _createFromInternal(internal) {
            if (!internal) {
                return null;
            }
            if (!internal.$type) {
                return null;
            }
            let name = internal.$type.name;
            let externalName = "Igx" + name + "Component";
            if (!TypeRegistrar.isRegistered(externalName)) {
                return null;
            }
            return TypeRegistrar.create(externalName);
        }
        /**
     * 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);
    * ```
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data">
    * 	<igx-time-x-axis
    * 		[labelFormats]="labelFormats"
    * 		dateTimeMemberPath="time"
    * 		#xAxis>
    *     </igx-time-x-axis>
    * </igx-data-chart>
    * ```
    */
        get range() {
            return this.i.o;
        }
        set range(v) {
            this.i.o = +v;
        }
        /**
         * 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);
        * ```
        *
        * ```html
        * <igx-data-chart
        *     [dataSource]="data">
        * 	<igx-time-x-axis
        * 		[labelFormats]="labelFormats"
        * 		dateTimeMemberPath="time"
        * 		#xAxis>
        *     </igx-time-x-axis>
        * </igx-data-chart>
        * ```
        */
        get format() {
            return this.i.e;
        }
        set format(v) {
            this.i.e = v;
        }
        /**
         * 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 repeatedYearFormat() {
            return this.i.l;
        }
        set repeatedYearFormat(v) {
            this.i.l = v;
        }
        /**
         * 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 repeatedMonthFormat() {
            return this.i.j;
        }
        set repeatedMonthFormat(v) {
            this.i.j = v;
        }
        /**
         * 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 repeatedDayFormat() {
            return this.i.h;
        }
        set repeatedDayFormat(v) {
            this.i.h = v;
        }
        findByName(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("TimeAxisLabelFormatComponent");
            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;
        }
        _runInZone(act) {
            if (this._zoneRunner != null) {
                this._zoneRunner(act);
            }
            else {
                act();
            }
        }
    }
    IgxTimeAxisLabelFormatComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: IgxTimeAxisLabelFormatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    IgxTimeAxisLabelFormatComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: IgxTimeAxisLabelFormatComponent, selector: "igx-time-axis-label-format", inputs: { range: "range", format: "format", repeatedYearFormat: "repeatedYearFormat", repeatedMonthFormat: "repeatedMonthFormat", repeatedDayFormat: "repeatedDayFormat" }, providers: [], ngImport: i0, template: ``, isInline: true });
    return IgxTimeAxisLabelFormatComponent;
})();
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: IgxTimeAxisLabelFormatComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'igx-time-axis-label-format',
                    template: ``,
                    providers: []
                }]
        }], ctorParameters: function () { return []; }, propDecorators: { range: [{
                type: Input
            }], format: [{
                type: Input
            }], repeatedYearFormat: [{
                type: Input
            }], repeatedMonthFormat: [{
                type: Input
            }], repeatedDayFormat: [{
                type: Input
            }] } });
