{"version":3,"file":"seniorsistemas-angular-components-progressbar.mjs","sources":["../../projects/angular-components/progressbar/src/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.ts","../../projects/angular-components/progressbar/src/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.html","../../projects/angular-components/progressbar/src/lib/progressbar/components/progressbar-indeterminate/progressbar-indeterminate.component.ts","../../projects/angular-components/progressbar/src/lib/progressbar/components/progressbar-indeterminate/progressbar-indeterminate.component.html","../../projects/angular-components/progressbar/src/lib/progressbar/progressbar.component.ts","../../projects/angular-components/progressbar/src/lib/progressbar/progressbar.component.html","../../projects/angular-components/progressbar/src/lib/progressbar/progressbar.module.ts","../../projects/angular-components/progressbar/src/seniorsistemas-angular-components-progressbar.ts"],"sourcesContent":["import { Component, DestroyRef, Input, OnInit, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { ProgressBarColors } from '../../types';\r\nimport { LocaleService } from '@seniorsistemas/angular-components/locale';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n    selector: 's-progressbar-determinate',\r\n    templateUrl: './progressbar-determinate.component.html',\r\n    standalone: true,\r\n    imports: [NgClass, NgStyle],\r\n})\r\nexport class ProgressBarDeterminateComponent implements OnInit {\r\n    private readonly localeService = inject(LocaleService);\r\n    private readonly _destroyRef = inject(DestroyRef);\r\n\r\n    @Input({ required: true })\r\n    public value!: number;\r\n\r\n    @Input({ required: true })\r\n    public activeColor!: ProgressBarColors;\r\n\r\n    @Input()\r\n    public numberFormatOptions?: Intl.NumberFormatOptions;\r\n\r\n    @Input()\r\n    public targetValue?: number;\r\n\r\n    @Input()\r\n    public targetLabel?: string;\r\n\r\n    @Input()\r\n    public showValue = true;\r\n\r\n    public numberFormat?: Intl.NumberFormat = new Intl.NumberFormat('pt-BR');\r\n\r\n    public ngOnInit() {\r\n        this.validateValues();\r\n\r\n        this.onGetLocale();\r\n    }\r\n\r\n    private onGetLocale(): void {\r\n        this.localeService.getLocale().pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\r\n            next: (locale) => {\r\n                this.numberFormat = new Intl.NumberFormat(locale ?? 'pt-BR', this.numberFormatOptions);\r\n            },\r\n            error: () => {\r\n                this.numberFormat = new Intl.NumberFormat('pt-BR', this.numberFormatOptions);\r\n            },\r\n        });\r\n    }\r\n\r\n    private validateValues(): void {\r\n        if (this.value < 0 || this.value > 100) {\r\n            throw new Error('Invalid value for value');\r\n        }\r\n        if (this.targetValue && (this.targetValue < 0 || this.targetValue > 100)) {\r\n            throw new Error('Invalid value for targetValue');\r\n        }\r\n    }\r\n}\r\n","<div class=\"relative\">\n    <div class=\"h-6 w-full overflow-hidden rounded-small bg-[#d8d8d8]\">\n        <div\n            [ngClass]=\"{\n                'bg-criticality-blue': activeColor === 'blue',\n                'bg-criticality-green': activeColor === 'green',\n                'bg-criticality-red': activeColor === 'red',\n                'bg-criticality-yellow': activeColor === 'yellow',\n            }\"\n            [class.text-grayscale-90]=\"activeColor === 'yellow'\"\n            [class.text-grayscale-0]=\"activeColor !== 'yellow'\"\n            class=\"flex h-full select-none items-center justify-center font-open-sans text-sm leading-[150%]\"\n            [ngStyle]=\"{ width: value + '%' }\"\n        >\n            {{ showValue && value ? numberFormat?.format(value) + '%' : '' }}\n        </div>\n    </div>\n    @if (targetValue) {\n        <div\n            class=\"absolute bottom-[-38px] flex flex-col\"\n            [ngStyle]=\"{\n                left: targetValue <= 50 ? targetValue + '%' : 'unset',\n                right: targetValue > 50 ? 100 - targetValue + '%' : 'unset',\n                'align-items': targetValue > 50 ? 'flex-end' : 'flex-start',\n            }\"\n        >\n            <span class=\"my-2 h-10 w-px bg-[#333]\"></span>\n            <span\n                class=\"rounded-xxbig bg-hippie-blue-700 px-3 py-0.5 font-open-sans text-xs leading-[150%] text-[#e5eaea]\"\n            >\n                {{ targetLabel || numberFormat?.format(value) + '%' }}\n            </span>\n        </div>\n    }\n</div>\n\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { ProgressBarColors } from '../../types';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n    selector: 's-progressbar-indeterminate',\r\n    templateUrl: './progressbar-indeterminate.component.html',\r\n    styles: [`\r\n        @keyframes indeterminate-progress {\r\n            0% { transform: translateX(-250%); }\r\n            100% { transform: translateX(250%); }\r\n        }\r\n        .indeterminate-bar { animation: indeterminate-progress 5s infinite; }\r\n    `],\r\n    standalone: true,\r\n    imports: [NgClass],\r\n})\r\nexport class ProgressBarIndeterminateComponent {\r\n    @Input({ required: true })\r\n    public activeColor!: ProgressBarColors;\r\n\r\n    @Input()\r\n    public label?: string;\r\n}\r\n","<div class=\"flex flex-col items-center\">\n    <div class=\"bg-[#d8d8d8] rounded-small h-6 my-2 overflow-hidden w-full\">\n        <div\n            class=\"indeterminate-bar h-full w-[40%]\"\n            [ngClass]=\"{\n                'bg-criticality-blue': activeColor === 'blue',\n                'bg-criticality-green': activeColor === 'green',\n                'bg-criticality-red': activeColor === 'red',\n                'bg-criticality-yellow': activeColor === 'yellow'\n            }\"\n        ></div>\n    </div>\n\n    @if (label) {\n        <span class=\"font-open-sans text-xs leading-[150%] text-grayscale-90\">{{ label }}</span>\n    }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { ProgressBarColors, ProgressBarMode } from './types';\r\nimport { ProgressBarDeterminateComponent } from './components/progressbar-determinate/progressbar-determinate.component';\r\nimport { ProgressBarIndeterminateComponent } from './components/progressbar-indeterminate/progressbar-indeterminate.component';\r\n\r\n/**\r\n * @description Componente de barra de progresso que representa visualmente o avanço de uma tarefa.\r\n * Suporta modo determinado (valor percentual) e indeterminado (progresso desconhecido),\r\n * além de um valor-alvo para comparação.\r\n *\r\n * @example\r\n * ```html\r\n * <s-progressbar\r\n *   [value]=\"75\"\r\n *   activeColor=\"blue\"\r\n *   label=\"Upload\"\r\n *   [showValue]=\"true\"\r\n * />\r\n * ```\r\n *\r\n * @category Feedback\r\n */\r\n@Component({\r\n    selector: 's-progressbar',\r\n    templateUrl: './progressbar.component.html',\r\n    standalone: true,\r\n    imports: [ProgressBarDeterminateComponent, ProgressBarIndeterminateComponent],\r\n})\r\nexport class ProgressBarComponent implements OnInit {\r\n    /**\r\n     * @description Valor atual do progresso, em percentual (0 a 100).\r\n     * Não utilizado quando `mode` é `'indeterminate'`.\r\n     * Lança erro se o valor estiver fora do intervalo permitido.\r\n     */\r\n    @Input()\r\n    public value!: number;\r\n\r\n    /**\r\n     * @description Cor ativa da barra de progresso. Campo obrigatório.\r\n     * Valores aceitos: `'blue'`, `'green'`, `'red'`, `'yellow'`.\r\n     */\r\n    @Input({ required: true })\r\n    public activeColor!: ProgressBarColors;\r\n\r\n    /**\r\n     * @description Opções de formatação numérica utilizadas para exibir o valor percentual.\r\n     * Baseado na API `Intl.NumberFormat`.\r\n     *\r\n     * @default `{ style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 2 }`\r\n     */\r\n    @Input()\r\n    public numberFormatOptions: Intl.NumberFormatOptions = {\r\n        style: 'decimal',\r\n        minimumFractionDigits: 0,\r\n        maximumFractionDigits: 2,\r\n        roundingMode: 'trunc',\r\n    };\r\n\r\n    /**\r\n     * @description Valor-alvo em percentual (0 a 100), exibido como marcador de referência na barra.\r\n     * Não utilizado quando `mode` é `'indeterminate'`.\r\n     */\r\n    @Input()\r\n    public targetValue?: number;\r\n\r\n    /** @description Rótulo descritivo exibido ao lado da barra de progresso principal. */\r\n    @Input()\r\n    public label?: string;\r\n\r\n    /** @description Rótulo descritivo exibido ao lado do marcador de valor-alvo. */\r\n    @Input()\r\n    public targetLabel?: string;\r\n\r\n    /**\r\n     * @description Quando `true`, exibe o valor percentual atual sobre ou próximo da barra.\r\n     *\r\n     * @default true\r\n     */\r\n    @Input()\r\n    public showValue = true;\r\n\r\n    /**\r\n     * @description Modo de operação da barra de progresso.\r\n     * - `'determinate'`: exibe o progresso baseado em `value` (padrão).\r\n     * - `'indeterminate'`: animação contínua sem valor definido; `value`, `targetValue` e `targetLabel` não devem ser usados.\r\n     *\r\n     * @default 'determinate'\r\n     */\r\n    @Input()\r\n    public mode: ProgressBarMode = 'determinate';\r\n\r\n    public ngOnInit(): void {\r\n        this.validateInputs();\r\n    }\r\n\r\n    private validateInputs(): void {\r\n        if (this.value < 0 || this.value > 100) {\r\n            throw new Error('Invalid value for value');\r\n        }\r\n\r\n        if (this.targetValue && (this.targetValue < 0 || this.targetValue > 100)) {\r\n            throw new Error('Invalid value for targetValue');\r\n        }\r\n\r\n        if (this.mode === 'indeterminate' && (this.value || this.targetValue || this.targetLabel)) {\r\n            throw new Error(\r\n                'When the mode is indeterminate, the value, targetValue and targetLabel parameters are not expected.',\r\n            );\r\n        }\r\n    }\r\n}\r\n","@if (mode === 'determinate') {\n    <s-progressbar-determinate\n        [value]=\"value\"\n        [numberFormatOptions]=\"numberFormatOptions\"\n        [targetValue]=\"targetValue\"\n        [targetLabel]=\"targetLabel\"\n        [activeColor]=\"activeColor\"\n        [showValue]=\"showValue\"\n    >\n    </s-progressbar-determinate>\n} @else {\n    <s-progressbar-indeterminate\n        [activeColor]=\"activeColor\"\n        [label]=\"label\"\n    >\n    </s-progressbar-indeterminate>\n}\n","/* eslint-disable max-len */\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { ProgressBarComponent } from './progressbar.component';\r\n\r\n@NgModule({\r\n    imports: [ProgressBarComponent],\r\n    exports: [ProgressBarComponent],\r\n})\r\nexport class ProgressBarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAaa,+BAA+B,CAAA;AACvB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAG3C,IAAA,KAAK,CAAU;AAGf,IAAA,WAAW,CAAqB;AAGhC,IAAA,mBAAmB,CAA4B;AAG/C,IAAA,WAAW,CAAU;AAGrB,IAAA,WAAW,CAAU;IAGrB,SAAS,GAAG,IAAI,CAAC;IAEjB,YAAY,GAAuB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAElE,QAAQ,GAAA;QACX,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEO,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,YAAA,IAAI,EAAE,CAAC,MAAM,KAAI;AACb,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAC1F;YACD,KAAK,EAAE,MAAK;AACR,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAChF;AACJ,SAAA,CAAC,CAAC;KACN;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC9C;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE;AACtE,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SACpD;KACJ;wGAhDQ,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,ECb5C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+hDAoCA,EDzBc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEjB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,cAEzB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,+hDAAA,EAAA,CAAA;8BAOpB,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAIlB,WAAW,EAAA,CAAA;sBADjB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAIlB,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAIC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;;;MEdG,iCAAiC,CAAA;AAEnC,IAAA,WAAW,CAAqB;AAGhC,IAAA,KAAK,CAAU;wGALb,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB9C,wpBAiBA,EAAA,MAAA,EAAA,CAAA,kKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAER,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAb7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAS3B,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,wpBAAA,EAAA,MAAA,EAAA,CAAA,kKAAA,CAAA,EAAA,CAAA;8BAIX,WAAW,EAAA,CAAA;sBADjB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAIlB,KAAK,EAAA,CAAA;sBADX,KAAK;;;AEhBV;;;;;;;;;;;;;;;;AAgBG;MAOU,oBAAoB,CAAA;AAC7B;;;;AAIG;AAEI,IAAA,KAAK,CAAU;AAEtB;;;AAGG;AAEI,IAAA,WAAW,CAAqB;AAEvC;;;;;AAKG;AAEI,IAAA,mBAAmB,GAA6B;AACnD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,qBAAqB,EAAE,CAAC;AACxB,QAAA,qBAAqB,EAAE,CAAC;AACxB,QAAA,YAAY,EAAE,OAAO;KACxB,CAAC;AAEF;;;AAGG;AAEI,IAAA,WAAW,CAAU;;AAIrB,IAAA,KAAK,CAAU;;AAIf,IAAA,WAAW,CAAU;AAE5B;;;;AAIG;IAEI,SAAS,GAAG,IAAI,CAAC;AAExB;;;;;;AAMG;IAEI,IAAI,GAAoB,aAAa,CAAC;IAEtC,QAAQ,GAAA;QACX,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC9C;AAED,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE;AACtE,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SACpD;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;AACvF,YAAA,MAAM,IAAI,KAAK,CACX,qGAAqG,CACxG,CAAC;SACL;KACJ;wGAjFQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EC7BjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,kfAiBA,EDUc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,+BAA+B,0KAAE,iCAAiC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEnE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAEb,IAAI,EAAA,OAAA,EACP,CAAC,+BAA+B,EAAE,iCAAiC,CAAC,EAAA,QAAA,EAAA,kfAAA,EAAA,CAAA;8BAStE,KAAK,EAAA,CAAA;sBADX,KAAK;gBAQC,WAAW,EAAA,CAAA;sBADjB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAUlB,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAaC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAKC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAKC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBASC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAWC,IAAI,EAAA,CAAA;sBADV,KAAK;;;AEzFV;MASa,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAjB,iBAAiB,EAAA,OAAA,EAAA,CAHhB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACpB,oBAAoB,CAAA,EAAA,CAAA,CAAA;yGAErB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAClC,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}