import * as i1$1 from '@angular/common';
import { CommonModule } from '@angular/common';
import * as i0 from '@angular/core';
import { Component, Input, ViewEncapsulation, inject, ViewContainerRef, TemplateRef, ComponentFactoryResolver, ChangeDetectorRef, Directive, NgModule } from '@angular/core';
import * as i1 from '@seniorsistemas/angular-components/common';
import { SVGFactoryModule } from '@seniorsistemas/angular-components/common';

class DotsIndicatorComponent {
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DotsIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DotsIndicatorComponent, selector: "s-dots-indicator", ngImport: i0, template: "<div class=\"dots-indicator\">\n    <div class=\"bounce bounce--1\"></div>\n    <div class=\"bounce bounce--2\"></div>\n    <div class=\"bounce bounce--3\"></div>\n</div>\n", styles: [".dots-indicator .bounce{animation:bounce 1.2s infinite ease-out;background-color:#333;border-radius:100%;display:inline-block;height:10px;width:10px}.dots-indicator .bounce+.bounce{margin-left:15px}.dots-indicator .bounce.bounce--1{animation-delay:0ms}.dots-indicator .bounce.bounce--2{animation-delay:.1s}.dots-indicator .bounce.bounce--3{animation-delay:.2s}@keyframes bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}\n"] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DotsIndicatorComponent, decorators: [{
            type: Component,
            args: [{ selector: 's-dots-indicator', template: "<div class=\"dots-indicator\">\n    <div class=\"bounce bounce--1\"></div>\n    <div class=\"bounce bounce--2\"></div>\n    <div class=\"bounce bounce--3\"></div>\n</div>\n", styles: [".dots-indicator .bounce{animation:bounce 1.2s infinite ease-out;background-color:#333;border-radius:100%;display:inline-block;height:10px;width:10px}.dots-indicator .bounce+.bounce{margin-left:15px}.dots-indicator .bounce.bounce--1{animation-delay:0ms}.dots-indicator .bounce.bounce--2{animation-delay:.1s}.dots-indicator .bounce.bounce--3{animation-delay:.2s}@keyframes bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}\n"] }]
        }] });

class LoadingIndicatorComponent {
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LoadingIndicatorComponent, selector: "s-logo-indicator", ngImport: i0, template: "<div class=\"logo-indicator\">\n    <span *sSVGFactory=\"'senior'\"></span>\n</div>\n", styles: [".logo-indicator{animation:pulsar 1s infinite,scale 1s infinite;background-color:#00c89a;border-radius:50%;box-shadow:0 0 #00c89ab3;height:64px;padding:10.24px;position:relative;width:64px}@keyframes pulsar{0%{box-shadow:0 0 #00c89ab3}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"], dependencies: [{ kind: "directive", type: i1.SVGFactoryDirective, selector: "[sSVGFactory]", inputs: ["sSVGFactory"] }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingIndicatorComponent, decorators: [{
            type: Component,
            args: [{ selector: 's-logo-indicator', template: "<div class=\"logo-indicator\">\n    <span *sSVGFactory=\"'senior'\"></span>\n</div>\n", styles: [".logo-indicator{animation:pulsar 1s infinite,scale 1s infinite;background-color:#00c89a;border-radius:50%;box-shadow:0 0 #00c89ab3;height:64px;padding:10.24px;position:relative;width:64px}@keyframes pulsar{0%{box-shadow:0 0 #00c89ab3}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"] }]
        }] });

class ProgressBarIndicatorComponent {
    /**
     * @description Modo de exibição da barra.
     * - `'percentage'`: exibe o preenchimento proporcional ao `value` (0–100).
     * - `'intermittent'`: anima a barra indo e voltando indefinidamente.
     * @default 'intermittent'
     */
    mode = 'intermittent';
    /**
     * @description Valor de progresso (0–100). Usado apenas no modo `'percentage'`.
     * @default 0
     */
    value = 0;
    /**
     * @description Texto exibido abaixo da barra.
     * Quando omitido, usa `'{value}%'` no modo `'percentage'` ou `'Carregando...'` no modo `'intermittent'`.
     */
    label;
    get displayLabel() {
        if (this.label) {
            return this.label;
        }
        return this.mode === 'percentage' ? `${this.value}%` : 'Carregando...';
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProgressBarIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ProgressBarIndicatorComponent, selector: "s-progress-bar-indicator", inputs: { mode: "mode", value: "value", label: "label" }, ngImport: i0, template: "<div class=\"progress-bar-indicator\">\n    <div class=\"progress-bar-track\">\n        <div\n            class=\"progress-bar-fill\"\n            [class.progress-bar-fill--percentage]=\"mode === 'percentage'\"\n            [class.progress-bar-fill--intermittent]=\"mode === 'intermittent'\"\n            [ngStyle]=\"mode === 'percentage' ? { width: value + '%' } : {}\"\n        ></div>\n    </div>\n    <span class=\"progress-bar-label\">{{ displayLabel }}</span>\n</div>\n", styles: [".progress-bar-indicator{display:flex;flex-direction:column;gap:4px;width:100%}.progress-bar-indicator .progress-bar-track{background-color:#dedce5;border-radius:3px;height:6px;overflow:hidden;position:relative;width:100%}.progress-bar-indicator .progress-bar-fill{background-color:#428bca;height:100%;position:absolute;top:0}.progress-bar-indicator .progress-bar-fill--percentage{border-radius:3px 0 0 3px;left:0;transition:width .3s ease}.progress-bar-indicator .progress-bar-fill--intermittent{border-radius:3px;width:28%;animation:loading-state-progress-slide 1.5s ease-in-out infinite alternate}.progress-bar-indicator .progress-bar-label{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;line-height:1.5;text-align:center}@keyframes loading-state-progress-slide{0%{left:-28%}to{left:100%}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProgressBarIndicatorComponent, decorators: [{
            type: Component,
            args: [{ selector: 's-progress-bar-indicator', template: "<div class=\"progress-bar-indicator\">\n    <div class=\"progress-bar-track\">\n        <div\n            class=\"progress-bar-fill\"\n            [class.progress-bar-fill--percentage]=\"mode === 'percentage'\"\n            [class.progress-bar-fill--intermittent]=\"mode === 'intermittent'\"\n            [ngStyle]=\"mode === 'percentage' ? { width: value + '%' } : {}\"\n        ></div>\n    </div>\n    <span class=\"progress-bar-label\">{{ displayLabel }}</span>\n</div>\n", styles: [".progress-bar-indicator{display:flex;flex-direction:column;gap:4px;width:100%}.progress-bar-indicator .progress-bar-track{background-color:#dedce5;border-radius:3px;height:6px;overflow:hidden;position:relative;width:100%}.progress-bar-indicator .progress-bar-fill{background-color:#428bca;height:100%;position:absolute;top:0}.progress-bar-indicator .progress-bar-fill--percentage{border-radius:3px 0 0 3px;left:0;transition:width .3s ease}.progress-bar-indicator .progress-bar-fill--intermittent{border-radius:3px;width:28%;animation:loading-state-progress-slide 1.5s ease-in-out infinite alternate}.progress-bar-indicator .progress-bar-label{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;line-height:1.5;text-align:center}@keyframes loading-state-progress-slide{0%{left:-28%}to{left:100%}}\n"] }]
        }], propDecorators: { mode: [{
                type: Input
            }], value: [{
                type: Input
            }], label: [{
                type: Input
            }] } });

var LoadingStateIndicators;
(function (LoadingStateIndicators) {
    LoadingStateIndicators["Dots"] = "dots";
    LoadingStateIndicators["Logo"] = "logo";
    LoadingStateIndicators["ProgressBar"] = "progress-bar";
})(LoadingStateIndicators || (LoadingStateIndicators = {}));

/**
 * @description Componente de estado de carregamento que exibe um indicador animado enquanto
 * um processo assíncrono está em andamento. Suporta bloqueio da janela inteira
 * e diferentes tipos de indicadores visuais.
 * Também pode ser usado como diretiva estrutural `[sLoadingState]`.
 *
 * @example
 * ```html
 * <s-loading-state [loading]="isLoading" [blockWindow]="true">
 *   <p>Conteúdo carregado!</p>
 * </s-loading-state>
 * ```
 *
 * @category Feedback
 */
class LoadingStateComponent {
    static nextId = 0;
    /**
     * @description Tipo de indicador visual exibido durante o carregamento.
     * - `LoadingStateIndicators.Dots`: indicador de pontos animados (padrão).
     * - `LoadingStateIndicators.Logo`: indicador com logotipo animado.
     *
     * @default LoadingStateIndicators.Dots
     */
    indicator = LoadingStateIndicators.Dots;
    /**
     * @description Identificador único do componente. Gerado automaticamente se não informado.
     */
    id = `s-loading-state-${LoadingStateComponent.nextId++}`;
    /**
     * @description Quando `true`, bloqueia a janela inteira durante o carregamento,
     * sobrepondo todo o conteúdo da página com o indicador.
     *
     * @default false
     */
    blockWindow = false;
    /**
     * @description Controla o estado de carregamento do componente. Campo obrigatório.
     * Quando `true`, exibe o indicador de carregamento após um breve delay.
     * Quando `false`, remove o indicador após um breve delay (evita flash).
     */
    set loading(loading) {
        this._loading = loading;
        loading ? this.block() : this.unblock();
    }
    get loading() {
        return this._loading;
    }
    /**
     * @description Modo da barra de progresso. Usado quando `indicator` é `LoadingStateIndicators.ProgressBar`.
     * - `'percentage'`: exibe o preenchimento proporcional ao `progressBarValue`.
     * - `'intermittent'`: anima a barra indo e voltando.
     *
     * @default 'intermittent'
     */
    progressBarMode = 'intermittent';
    /**
     * @description Valor de progresso (0–100). Usado quando `indicator` é `LoadingStateIndicators.ProgressBar`
     * e `progressBarMode` é `'percentage'`.
     *
     * @default 0
     */
    progressBarValue = 0;
    /**
     * @description Texto exibido abaixo da barra de progresso.
     * Quando omitido, usa `'{value}%'` no modo `'percentage'` ou `'Carregando...'` no modo `'intermittent'`.
     */
    progressBarLabel;
    contents = null;
    blocking = false;
    _loading = false;
    BLOCK_TIMEOUT_VALUE = 300;
    UNBLOCK_TIMEOUT_VALUE = 200;
    blockTimeoutId;
    unblockTimeoutId;
    ngOnDestroy() {
        if (this.blockTimeoutId) {
            clearTimeout(this.blockTimeoutId);
        }
        if (this.unblockTimeoutId) {
            clearTimeout(this.unblockTimeoutId);
        }
    }
    block() {
        if (this.unblockTimeoutId) {
            clearTimeout(this.unblockTimeoutId);
            this.unblockTimeoutId = undefined;
        }
        if (!this.blockTimeoutId) {
            this.blockTimeoutId = setTimeout(() => {
                this.blocking = true;
                this.blockTimeoutId = undefined;
            }, this.BLOCK_TIMEOUT_VALUE);
        }
    }
    unblock() {
        if (this.blockTimeoutId) {
            clearTimeout(this.blockTimeoutId);
            this.blockTimeoutId = undefined;
        }
        if (!this.unblockTimeoutId) {
            this.unblockTimeoutId = setTimeout(() => {
                this.blocking = false;
                this.unblockTimeoutId = undefined;
            }, this.UNBLOCK_TIMEOUT_VALUE);
        }
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LoadingStateComponent, selector: "s-loading-state", inputs: { indicator: "indicator", id: "id", blockWindow: "blockWindow", loading: "loading", progressBarMode: "progressBarMode", progressBarValue: "progressBarValue", progressBarLabel: "progressBarLabel" }, ngImport: i0, template: "<div\n    [id]=\"id\"\n    class=\"s-loading-state\"\n    [ngClass]=\"{\n        's-loading-state--loading': loading,\n        's-loading-state--blocking': blocking,\n        's-loading-state--fullscreen': blockWindow\n    }\"\n>\n    <div\n        [id]=\"id + '-loader'\"\n        class=\"loader\"\n    >\n        @if (indicator === 'progress-bar') {\n            <div class=\"progress-bar-wrapper\">\n                <s-progress-bar-indicator\n                    [mode]=\"progressBarMode\"\n                    [value]=\"progressBarValue\"\n                    [label]=\"progressBarLabel\"\n                ></s-progress-bar-indicator>\n            </div>\n        } @else {\n            <div\n                [id]=\"id + '-spinner'\"\n                class=\"spinner\"\n            >\n                @switch (indicator) {\n                    @case ('logo') {\n                        <s-logo-indicator></s-logo-indicator>\n                    }\n                    @case ('dots') {\n                        <s-dots-indicator></s-dots-indicator>\n                    }\n                }\n            </div>\n        }\n        <div\n            [id]=\"id + '-overlay'\"\n            class=\"overlay\"\n        ></div>\n    </div>\n    <div\n        [id]=\"id + '-contents'\"\n        class=\"state-contents\"\n    >\n        <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n        <ng-template #originalContent>\n            <ng-content></ng-content>\n        </ng-template>\n    </div>\n</div>\n", styles: ["s-loading-state .s-loading-state{position:relative}s-loading-state .s-loading-state .loader{opacity:0;position:absolute;transition:opacity .2s ease-out,display .2s ease-out;visibility:hidden;inset:1px;display:flex;justify-content:center;align-items:center}s-loading-state .s-loading-state .loader .overlay{height:100%;opacity:.8;transition:opacity .2s ease-out,display .2s ease-out;width:100%}s-loading-state .s-loading-state .loader .spinner{display:flex;position:absolute;z-index:2}s-loading-state .s-loading-state .loader .progress-bar-wrapper{padding:0 16px;position:absolute;width:100%;z-index:2}s-loading-state .s-loading-state.s-loading-state--loading>.loader,s-loading-state .s-loading-state.s-loading-state--blocking>.loader{cursor:wait;visibility:visible;z-index:2}s-loading-state .s-loading-state.s-loading-state--loading>.loader>.overlay,s-loading-state .s-loading-state.s-loading-state--blocking>.loader>.overlay{cursor:wait;z-index:1}s-loading-state .s-loading-state.s-loading-state--loading>.state-contents,s-loading-state .s-loading-state.s-loading-state--blocking>.state-contents{position:relative;z-index:0!important;opacity:.5}s-loading-state .s-loading-state.s-loading-state--fullscreen>.loader{left:0;position:fixed;top:0;z-index:1005}s-loading-state .s-loading-state.s-loading-state--blocking.s-loading-state--loading>.loader{opacity:1}s-loading-state .s-loading-state-container.s-loading-state--loading.s-loading-state--blocking s-loading-state .s-loading-state-container>.loader{opacity:0;visibility:hidden}s-loading-state .s-loading-state-container.s-loading-state--loading.s-loading-state--blocking s-loading-state .s-loading-state-container>.state-contents{z-index:0!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DotsIndicatorComponent, selector: "s-dots-indicator" }, { kind: "component", type: LoadingIndicatorComponent, selector: "s-logo-indicator" }, { kind: "component", type: ProgressBarIndicatorComponent, selector: "s-progress-bar-indicator", inputs: ["mode", "value", "label"] }], encapsulation: i0.ViewEncapsulation.None });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateComponent, decorators: [{
            type: Component,
            args: [{ selector: 's-loading-state', encapsulation: ViewEncapsulation.None, template: "<div\n    [id]=\"id\"\n    class=\"s-loading-state\"\n    [ngClass]=\"{\n        's-loading-state--loading': loading,\n        's-loading-state--blocking': blocking,\n        's-loading-state--fullscreen': blockWindow\n    }\"\n>\n    <div\n        [id]=\"id + '-loader'\"\n        class=\"loader\"\n    >\n        @if (indicator === 'progress-bar') {\n            <div class=\"progress-bar-wrapper\">\n                <s-progress-bar-indicator\n                    [mode]=\"progressBarMode\"\n                    [value]=\"progressBarValue\"\n                    [label]=\"progressBarLabel\"\n                ></s-progress-bar-indicator>\n            </div>\n        } @else {\n            <div\n                [id]=\"id + '-spinner'\"\n                class=\"spinner\"\n            >\n                @switch (indicator) {\n                    @case ('logo') {\n                        <s-logo-indicator></s-logo-indicator>\n                    }\n                    @case ('dots') {\n                        <s-dots-indicator></s-dots-indicator>\n                    }\n                }\n            </div>\n        }\n        <div\n            [id]=\"id + '-overlay'\"\n            class=\"overlay\"\n        ></div>\n    </div>\n    <div\n        [id]=\"id + '-contents'\"\n        class=\"state-contents\"\n    >\n        <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n        <ng-template #originalContent>\n            <ng-content></ng-content>\n        </ng-template>\n    </div>\n</div>\n", styles: ["s-loading-state .s-loading-state{position:relative}s-loading-state .s-loading-state .loader{opacity:0;position:absolute;transition:opacity .2s ease-out,display .2s ease-out;visibility:hidden;inset:1px;display:flex;justify-content:center;align-items:center}s-loading-state .s-loading-state .loader .overlay{height:100%;opacity:.8;transition:opacity .2s ease-out,display .2s ease-out;width:100%}s-loading-state .s-loading-state .loader .spinner{display:flex;position:absolute;z-index:2}s-loading-state .s-loading-state .loader .progress-bar-wrapper{padding:0 16px;position:absolute;width:100%;z-index:2}s-loading-state .s-loading-state.s-loading-state--loading>.loader,s-loading-state .s-loading-state.s-loading-state--blocking>.loader{cursor:wait;visibility:visible;z-index:2}s-loading-state .s-loading-state.s-loading-state--loading>.loader>.overlay,s-loading-state .s-loading-state.s-loading-state--blocking>.loader>.overlay{cursor:wait;z-index:1}s-loading-state .s-loading-state.s-loading-state--loading>.state-contents,s-loading-state .s-loading-state.s-loading-state--blocking>.state-contents{position:relative;z-index:0!important;opacity:.5}s-loading-state .s-loading-state.s-loading-state--fullscreen>.loader{left:0;position:fixed;top:0;z-index:1005}s-loading-state .s-loading-state.s-loading-state--blocking.s-loading-state--loading>.loader{opacity:1}s-loading-state .s-loading-state-container.s-loading-state--loading.s-loading-state--blocking s-loading-state .s-loading-state-container>.loader{opacity:0;visibility:hidden}s-loading-state .s-loading-state-container.s-loading-state--loading.s-loading-state--blocking s-loading-state .s-loading-state-container>.state-contents{z-index:0!important}\n"] }]
        }], propDecorators: { indicator: [{
                type: Input
            }], id: [{
                type: Input
            }], blockWindow: [{
                type: Input
            }], loading: [{
                type: Input,
                args: [{ required: true }]
            }], progressBarMode: [{
                type: Input
            }], progressBarValue: [{
                type: Input
            }], progressBarLabel: [{
                type: Input
            }] } });

/**
 * @description Diretiva estrutural que envolve o conteúdo da view com um indicador de carregamento.
 * É uma alternativa inline ao `LoadingStateComponent`, podendo ser aplicada diretamente
 * em containers existentes sem a necessidade de criar um wrapper explícito no template.
 *
 * @example
 * ```html
 * <!-- Forma simples (boolean) -->
 * <div *sLoadingState="isLoading">Conteúdo</div>
 *
 * <!-- Forma com configuração -->
 * <div *sLoadingState="{ loading: isLoading, indicator: 'logo' }">Conteúdo</div>
 * ```
 *
 * @category Feedback
 */
class LoadingStateDirective {
    target = inject(ViewContainerRef);
    template = inject(TemplateRef);
    componentFactoryResolver = inject(ComponentFactoryResolver);
    cdr = inject(ChangeDetectorRef);
    /**
     * @description Controla o estado de carregamento da diretiva.
     * Aceita:
     * - `boolean`: ativa/desativa o carregamento com o indicador padrão (`dots`).
     * - objeto de configuração: permite definir indicador, modo e valor da barra de progresso.
     */
    set sLoadingState(value) {
        if (typeof value === 'boolean') {
            this._loading = value;
            this.indicator = LoadingStateIndicators.Dots;
        }
        else if (typeof value === 'object') {
            this._loading = value.loading;
            this.indicator = value.indicator ?? LoadingStateIndicators.Dots;
            this.progressBarMode = value.progressBarMode ?? 'intermittent';
            this.progressBarValue = value.progressBarValue ?? 0;
            this.progressBarLabel = value.progressBarLabel;
        }
        if (this.loaderComponent) {
            this.loaderComponent.instance.loading = this._loading;
            this.loaderComponent.instance.indicator = this.indicator;
            this.loaderComponent.instance.progressBarMode = this.progressBarMode;
            this.loaderComponent.instance.progressBarValue = this.progressBarValue;
            this.loaderComponent.instance.progressBarLabel = this.progressBarLabel;
        }
    }
    _loading = false;
    indicator = LoadingStateIndicators.Dots;
    progressBarMode = 'intermittent';
    progressBarValue = 0;
    progressBarLabel;
    loaderComponent = null;
    ngAfterViewInit() {
        this.createComponent();
    }
    createComponent() {
        const factory = this.componentFactoryResolver.resolveComponentFactory(LoadingStateComponent);
        this.loaderComponent = this.target.createComponent(factory);
        this.loaderComponent.instance.contents = this.template;
        this.loaderComponent.instance.loading = this._loading;
        this.loaderComponent.instance.indicator = this.indicator;
        this.loaderComponent.instance.progressBarMode = this.progressBarMode;
        this.loaderComponent.instance.progressBarValue = this.progressBarValue;
        this.loaderComponent.instance.progressBarLabel = this.progressBarLabel;
        this.cdr.detectChanges();
    }
    ngOnDestroy() {
        if (this.loaderComponent) {
            this.loaderComponent.destroy();
        }
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
    static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: LoadingStateDirective, selector: "[sLoadingState]", inputs: { sLoadingState: "sLoadingState" }, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[sLoadingState]',
                }]
        }], propDecorators: { sLoadingState: [{
                type: Input
            }] } });

class LoadingStateModule {
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
    static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateModule, declarations: [LoadingStateComponent,
            LoadingStateDirective,
            DotsIndicatorComponent,
            LoadingIndicatorComponent,
            ProgressBarIndicatorComponent], imports: [CommonModule, SVGFactoryModule], exports: [LoadingStateComponent, LoadingStateDirective] });
    static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateModule, imports: [CommonModule, SVGFactoryModule] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateModule, decorators: [{
            type: NgModule,
            args: [{
                    imports: [CommonModule, SVGFactoryModule],
                    declarations: [
                        LoadingStateComponent,
                        LoadingStateDirective,
                        DotsIndicatorComponent,
                        LoadingIndicatorComponent,
                        ProgressBarIndicatorComponent,
                    ],
                    exports: [LoadingStateComponent, LoadingStateDirective],
                }]
        }] });

/**
 * Generated bundle index. Do not edit.
 */

export { LoadingStateComponent, LoadingStateDirective, LoadingStateIndicators, LoadingStateModule };
//# sourceMappingURL=seniorsistemas-angular-components-loading-state.mjs.map
