@libs-ui/components-process-bar-standard 0.2.357-14 → 0.2.357-15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';
2
+ import { LibsUiPipesFormatNumberPipe } from '@libs-ui/pipes-format-number';
2
3
  import { PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT } from '@libs-ui/utils';
3
4
  import * as i0 from "@angular/core";
4
5
  export class LibsUiComponentsProcessBarStandardComponent {
@@ -6,13 +7,14 @@ export class LibsUiComponentsProcessBarStandardComponent {
6
7
  height = computed(() => this.config().height ?? this.processBarConfigDefault?.height ?? '12px');
7
8
  backgroundColor = computed(() => this.config().backgroundColor ?? this.processBarConfigDefault?.backgroundColor ?? '#F8F9FA');
8
9
  radius = computed(() => `${this.config().radius ?? this.processBarConfigDefault?.radius ?? 20}px`);
10
+ percentFixed = computed(() => this.config().percentFixed ?? this.processBarConfigDefault?.percentFixed ?? 2);
9
11
  config = input.required();
10
12
  processBarConfigDefault = inject(PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, { optional: true });
11
13
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsProcessBarStandardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsProcessBarStandardComponent, isStandalone: true, selector: "libs_ui-components-process_bar-standard", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5r ml-[8px]'\">\n {{ constHtmlStepPercent + '%' }}\n </div>\n }\n </div>\n }\n }\n }\n}\n", styles: [".libs-ui-process-bar-standard{display:flex;position:relative;flex-shrink:0;flex-grow:0;align-items:center;overflow:hidden;width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsProcessBarStandardComponent, isStandalone: true, selector: "libs_ui-components-process_bar-standard", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5m ml-[8px]'\">{{ constHtmlStepPercent | LibsUiPipesFormatNumberPipe: true : step().percentFixed ?? percentFixed() }}{{ '%' }}</div>\n }\n </div>\n }\n }\n }\n}\n", styles: [".libs-ui-process-bar-standard{display:flex;position:relative;flex-shrink:0;flex-grow:0;align-items:center;overflow:hidden;width:100%;height:100%}\n"], dependencies: [{ kind: "pipe", type: LibsUiPipesFormatNumberPipe, name: "LibsUiPipesFormatNumberPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
15
  }
14
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsProcessBarStandardComponent, decorators: [{
15
17
  type: Component,
16
- args: [{ selector: 'libs_ui-components-process_bar-standard', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5r ml-[8px]'\">\n {{ constHtmlStepPercent + '%' }}\n </div>\n }\n </div>\n }\n }\n }\n}\n", styles: [".libs-ui-process-bar-standard{display:flex;position:relative;flex-shrink:0;flex-grow:0;align-items:center;overflow:hidden;width:100%;height:100%}\n"] }]
18
+ args: [{ selector: 'libs_ui-components-process_bar-standard', standalone: true, imports: [LibsUiPipesFormatNumberPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5m ml-[8px]'\">{{ constHtmlStepPercent | LibsUiPipesFormatNumberPipe: true : step().percentFixed ?? percentFixed() }}{{ '%' }}</div>\n }\n </div>\n }\n }\n }\n}\n", styles: [".libs-ui-process-bar-standard{display:flex;position:relative;flex-shrink:0;flex-grow:0;align-items:center;overflow:hidden;width:100%;height:100%}\n"] }]
17
19
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1iYXItc3RhbmRhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3Byb2Nlc3MtYmFyL3N0YW5kYXJkL3NyYy9wcm9jZXNzLWJhci1zdGFuZGFyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcHJvY2Vzcy1iYXIvc3RhbmRhcmQvc3JjL3Byb2Nlc3MtYmFyLXN0YW5kYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdEQUFnRCxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBVWxGLE1BQU0sT0FBTywyQ0FBMkM7SUFDNUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLElBQUksTUFBTSxDQUFDLENBQUM7SUFDN0YsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLENBQUM7SUFDaEcsZUFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxlQUFlLElBQUksU0FBUyxDQUFDLENBQUM7SUFDOUgsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXBHLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFnQyxDQUFDO0lBRWhELHVCQUF1QixHQUFHLE1BQU0sQ0FBNEMsZ0RBQWdELEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzt3R0FSeEosMkNBQTJDOzRGQUEzQywyQ0FBMkMseU9DWHhELDJ1RkFtRUE7OzRGRHhEYSwyQ0FBMkM7a0JBUnZELFNBQVM7K0JBRUUseUNBQXlDLGNBQ3ZDLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQUk9DRVNTX0JBUl9TVEFOREFSRF9DT05GSUdfREVGQVVMVF9UT0tFTl9JTkpFQ1QgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBJUHJvY2Vzc0JhclN0YW5kYXJkQ29uZmlnRGVmYXVsdEludGVyZmFjZSwgSVByb2Nlc3NCYXJTdGFuZGFyZEludGVyZmFjZSB9IGZyb20gJy4vcHJvY2Vzcy1iYXItc3RhbmRhcmQuaW50ZXJmYWNlJztcbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1wcm9jZXNzX2Jhci1zdGFuZGFyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLWJhci1zdGFuZGFyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcm9jZXNzLWJhci1zdGFuZGFyZC5jb21wb25lbnQuY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNQcm9jZXNzQmFyU3RhbmRhcmRDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgd2lkdGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLndpZHRoID8/IHRoaXMucHJvY2Vzc0JhckNvbmZpZ0RlZmF1bHQ/LndpZHRoID8/ICcxMDAlJyk7XG4gIHByb3RlY3RlZCBoZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmhlaWdodCA/PyB0aGlzLnByb2Nlc3NCYXJDb25maWdEZWZhdWx0Py5oZWlnaHQgPz8gJzEycHgnKTtcbiAgcHJvdGVjdGVkIGJhY2tncm91bmRDb2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuYmFja2dyb3VuZENvbG9yID8/IHRoaXMucHJvY2Vzc0JhckNvbmZpZ0RlZmF1bHQ/LmJhY2tncm91bmRDb2xvciA/PyAnI0Y4RjlGQScpO1xuICBwcm90ZWN0ZWQgcmFkaXVzID0gY29tcHV0ZWQoKCkgPT4gYCR7dGhpcy5jb25maWcoKS5yYWRpdXMgPz8gdGhpcy5wcm9jZXNzQmFyQ29uZmlnRGVmYXVsdD8ucmFkaXVzID8/IDIwfXB4YCk7XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8SVByb2Nlc3NCYXJTdGFuZGFyZEludGVyZmFjZT4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2Nlc3NCYXJDb25maWdEZWZhdWx0ID0gaW5qZWN0PElQcm9jZXNzQmFyU3RhbmRhcmRDb25maWdEZWZhdWx0SW50ZXJmYWNlPihQUk9DRVNTX0JBUl9TVEFOREFSRF9DT05GSUdfREVGQVVMVF9UT0tFTl9JTkpFQ1QsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG59XG4iLCJAbGV0IGNvbnN0SHRtbFN0ZXBzID0gY29uZmlnKCkuc3RlcHMoKSB8fCBbXTtcbkBsZXQgY29uc3RIdG1sTW9kZSA9IGNvbmZpZygpLm1vZGUgfHwgJ3N0YWNrJztcbkBsZXQgY29uc3RIdG1sVG90YWxWYWx1ZSA9IGNvbmZpZygpLnRvdGFsVmFsdWU7XG5cbkBpZiAoY29uc3RIdG1sU3RlcHMubGVuZ3RoID4gMCAmJiBjb25zdEh0bWxUb3RhbFZhbHVlKSB7XG4gIEBzd2l0Y2ggKGNvbnN0SHRtbE1vZGUpIHtcbiAgICBAY2FzZSAoJ3N0YWNrJykge1xuICAgICAgPGRpdlxuICAgICAgICBbY2xhc3NdPVwiKGNvbmZpZygpLmNsYXNzSW5jbHVkZSB8fCAnJykgKyAnIGxpYnMtdWktcHJvY2Vzcy1iYXItc3RhbmRhcmQnXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIndpZHRoKClcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodCgpXCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3IoKVwiXG4gICAgICAgIFtzdHlsZS5ib3JkZXJSYWRpdXNdPVwicmFkaXVzKClcIj5cbiAgICAgICAgQGZvciAoc3RlcCBvZiBjb25zdEh0bWxTdGVwczsgdHJhY2sgc3RlcCgpKSB7XG4gICAgICAgICAgQGxldCBjb25zdEh0bWxTdGVwUGVyY2VudCA9IChzdGVwKCkudmFsdWUgLyBjb25zdEh0bWxUb3RhbFZhbHVlKSAqIDEwMDtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZsZXggaC1mdWxsIGl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInN0ZXAoKS5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29uc3RIdG1sU3RlcFBlcmNlbnQgKyAnJSdcIj5cbiAgICAgICAgICAgIEBpZiAoc3RlcCgpLmxhYmVsKSB7XG4gICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCIoc3RlcCgpLmNsYXNzTGFiZWwgfHwgJycpICsgJyBsaWJzLXVpLWZvbnQtaDVyIG1sLVsxMnB4XSdcIj57eyBzdGVwKCkubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBjYXNlICgnc2VwYXJhdGUnKSB7XG4gICAgICBAZm9yIChzdGVwIG9mIGNvbnN0SHRtbFN0ZXBzOyB0cmFjayBzdGVwKCkpIHtcbiAgICAgICAgQGxldCBjb25zdEh0bWxTdGVwUGVyY2VudCA9IChzdGVwKCkudmFsdWUgLyBjb25zdEh0bWxUb3RhbFZhbHVlKSAqIDEwMDtcbiAgICAgICAgQGxldCBjb25zdEh0bWxTaG93UGVyY2VudCA9IHN0ZXAoKS5zaG93UGVyY2VudCA/PyBjb25maWcoKS5zaG93UGVyY2VudDtcbiAgICAgICAgQGxldCBjb25zdEh0bWxQZXJjZW50Q2xhc3MgPSAoc3RlcCgpLnBlcmNlbnRDbGFzcyA/PyBjb25maWcoKS5wZXJjZW50Q2xhc3MpIHx8ICcnO1xuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbY2xhc3NdPVwiKGNvbmZpZygpLmNsYXNzSW5jbHVkZSB8fCAnJykgKyAnIGZsZXggdy1mdWxsIHNocmluay0wIGl0ZW1zLWNlbnRlciByZWxhdGl2ZSBteS1bOHB4XSdcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aCgpXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodCgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGgtZnVsbCByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWJzb2x1dGUgdy1mdWxsIGgtZnVsbFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXByb2Nlc3MtYmFyLXN0YW5kYXJkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJhY2tncm91bmRDb2xvcigpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyUmFkaXVzXT1cInJhZGl1cygpXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGgtZnVsbFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInN0ZXAoKS5jb2xvclwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29uc3RIdG1sU3RlcFBlcmNlbnQgKyAnJSdcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlclJhZGl1c109XCJyYWRpdXMoKVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwic3RlcCgpLmNsYXNzSW5jbHVkZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoc3RlcCgpLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIihzdGVwKCkuY2xhc3NMYWJlbCB8fCAnJykgKyAnIGxpYnMtdWktZm9udC1oNXIgbWwtWzEycHhdJ1wiPnt7IHN0ZXAoKS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYgKGNvbnN0SHRtbFNob3dQZXJjZW50KSB7XG4gICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJjb25zdEh0bWxQZXJjZW50Q2xhc3MgKyAnbGlicy11aS1mb250LWg1ciBtbC1bOHB4XSdcIj5cbiAgICAgICAgICAgICAge3sgY29uc3RIdG1sU3RlcFBlcmNlbnQgKyAnJScgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1iYXItc3RhbmRhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3Byb2Nlc3MtYmFyL3N0YW5kYXJkL3NyYy9wcm9jZXNzLWJhci1zdGFuZGFyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcHJvY2Vzcy1iYXIvc3RhbmRhcmQvc3JjL3Byb2Nlc3MtYmFyLXN0YW5kYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdEQUFnRCxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBV2xGLE1BQU0sT0FBTywyQ0FBMkM7SUFDNUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLElBQUksTUFBTSxDQUFDLENBQUM7SUFDN0YsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLENBQUM7SUFDaEcsZUFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxlQUFlLElBQUksU0FBUyxDQUFDLENBQUM7SUFDOUgsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25HLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTlHLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFnQyxDQUFDO0lBRWhELHVCQUF1QixHQUFHLE1BQU0sQ0FBNEMsZ0RBQWdELEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzt3R0FUeEosMkNBQTJDOzRGQUEzQywyQ0FBMkMseU9DYnhELDR4RkFpRUEsd01EekRZLDJCQUEyQjs7NEZBSzFCLDJDQUEyQztrQkFUdkQsU0FBUzsrQkFFRSx5Q0FBeUMsY0FDdkMsSUFBSSxXQUNQLENBQUMsMkJBQTJCLENBQUMsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNGb3JtYXROdW1iZXJQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtZm9ybWF0LW51bWJlcic7XG5pbXBvcnQgeyBQUk9DRVNTX0JBUl9TVEFOREFSRF9DT05GSUdfREVGQVVMVF9UT0tFTl9JTkpFQ1QgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBJUHJvY2Vzc0JhclN0YW5kYXJkQ29uZmlnRGVmYXVsdEludGVyZmFjZSwgSVByb2Nlc3NCYXJTdGFuZGFyZEludGVyZmFjZSB9IGZyb20gJy4vcHJvY2Vzcy1iYXItc3RhbmRhcmQuaW50ZXJmYWNlJztcbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1wcm9jZXNzX2Jhci1zdGFuZGFyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtMaWJzVWlQaXBlc0Zvcm1hdE51bWJlclBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzcy1iYXItc3RhbmRhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcHJvY2Vzcy1iYXItc3RhbmRhcmQuY29tcG9uZW50LmNzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzUHJvY2Vzc0JhclN0YW5kYXJkQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS53aWR0aCA/PyB0aGlzLnByb2Nlc3NCYXJDb25maWdEZWZhdWx0Py53aWR0aCA/PyAnMTAwJScpO1xuICBwcm90ZWN0ZWQgaGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5oZWlnaHQgPz8gdGhpcy5wcm9jZXNzQmFyQ29uZmlnRGVmYXVsdD8uaGVpZ2h0ID8/ICcxMnB4Jyk7XG4gIHByb3RlY3RlZCBiYWNrZ3JvdW5kQ29sb3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmJhY2tncm91bmRDb2xvciA/PyB0aGlzLnByb2Nlc3NCYXJDb25maWdEZWZhdWx0Py5iYWNrZ3JvdW5kQ29sb3IgPz8gJyNGOEY5RkEnKTtcbiAgcHJvdGVjdGVkIHJhZGl1cyA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuY29uZmlnKCkucmFkaXVzID8/IHRoaXMucHJvY2Vzc0JhckNvbmZpZ0RlZmF1bHQ/LnJhZGl1cyA/PyAyMH1weGApO1xuICBwcm90ZWN0ZWQgcGVyY2VudEZpeGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5wZXJjZW50Rml4ZWQgPz8gdGhpcy5wcm9jZXNzQmFyQ29uZmlnRGVmYXVsdD8ucGVyY2VudEZpeGVkID8/IDIpO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPElQcm9jZXNzQmFyU3RhbmRhcmRJbnRlcmZhY2U+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzQmFyQ29uZmlnRGVmYXVsdCA9IGluamVjdDxJUHJvY2Vzc0JhclN0YW5kYXJkQ29uZmlnRGVmYXVsdEludGVyZmFjZT4oUFJPQ0VTU19CQVJfU1RBTkRBUkRfQ09ORklHX0RFRkFVTFRfVE9LRU5fSU5KRUNULCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xufVxuIiwiQGxldCBjb25zdEh0bWxTdGVwcyA9IGNvbmZpZygpLnN0ZXBzKCkgfHwgW107XG5AbGV0IGNvbnN0SHRtbE1vZGUgPSBjb25maWcoKS5tb2RlIHx8ICdzdGFjayc7XG5AbGV0IGNvbnN0SHRtbFRvdGFsVmFsdWUgPSBjb25maWcoKS50b3RhbFZhbHVlO1xuXG5AaWYgKGNvbnN0SHRtbFN0ZXBzLmxlbmd0aCA+IDAgJiYgY29uc3RIdG1sVG90YWxWYWx1ZSkge1xuICBAc3dpdGNoIChjb25zdEh0bWxNb2RlKSB7XG4gICAgQGNhc2UgKCdzdGFjaycpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgW2NsYXNzXT1cIihjb25maWcoKS5jbGFzc0luY2x1ZGUgfHwgJycpICsgJyBsaWJzLXVpLXByb2Nlc3MtYmFyLXN0YW5kYXJkJ1wiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aCgpXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHQoKVwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYmFja2dyb3VuZENvbG9yKClcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyUmFkaXVzXT1cInJhZGl1cygpXCI+XG4gICAgICAgIEBmb3IgKHN0ZXAgb2YgY29uc3RIdG1sU3RlcHM7IHRyYWNrIHN0ZXAoKSkge1xuICAgICAgICAgIEBsZXQgY29uc3RIdG1sU3RlcFBlcmNlbnQgPSAoc3RlcCgpLnZhbHVlIC8gY29uc3RIdG1sVG90YWxWYWx1ZSkgKiAxMDA7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGgtZnVsbCBpdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzdGVwKCkuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbnN0SHRtbFN0ZXBQZXJjZW50ICsgJyUnXCI+XG4gICAgICAgICAgICBAaWYgKHN0ZXAoKS5sYWJlbCkge1xuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiKHN0ZXAoKS5jbGFzc0xhYmVsIHx8ICcnKSArICcgbGlicy11aS1mb250LWg1ciBtbC1bMTJweF0nXCI+e3sgc3RlcCgpLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ3NlcGFyYXRlJykge1xuICAgICAgQGZvciAoc3RlcCBvZiBjb25zdEh0bWxTdGVwczsgdHJhY2sgc3RlcCgpKSB7XG4gICAgICAgIEBsZXQgY29uc3RIdG1sU3RlcFBlcmNlbnQgPSAoc3RlcCgpLnZhbHVlIC8gY29uc3RIdG1sVG90YWxWYWx1ZSkgKiAxMDA7XG4gICAgICAgIEBsZXQgY29uc3RIdG1sU2hvd1BlcmNlbnQgPSBzdGVwKCkuc2hvd1BlcmNlbnQgPz8gY29uZmlnKCkuc2hvd1BlcmNlbnQ7XG4gICAgICAgIEBsZXQgY29uc3RIdG1sUGVyY2VudENsYXNzID0gKHN0ZXAoKS5wZXJjZW50Q2xhc3MgPz8gY29uZmlnKCkucGVyY2VudENsYXNzKSB8fCAnJztcblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW2NsYXNzXT1cIihjb25maWcoKS5jbGFzc0luY2x1ZGUgfHwgJycpICsgJyBmbGV4IHctZnVsbCBzaHJpbmstMCBpdGVtcy1jZW50ZXIgcmVsYXRpdmUgbXktWzhweF0nXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGgoKVwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHQoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBoLWZ1bGwgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFic29sdXRlIHctZnVsbCBoLWZ1bGxcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGlicy11aS1wcm9jZXNzLWJhci1zdGFuZGFyZFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3IoKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlclJhZGl1c109XCJyYWRpdXMoKVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBoLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzdGVwKCkuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbnN0SHRtbFN0ZXBQZXJjZW50ICsgJyUnXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJSYWRpdXNdPVwicmFkaXVzKClcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInN0ZXAoKS5jbGFzc0luY2x1ZGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICBAaWYgKHN0ZXAoKS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIGxlZnQtMCB3LWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCIoc3RlcCgpLmNsYXNzTGFiZWwgfHwgJycpICsgJyBsaWJzLXVpLWZvbnQtaDVyIG1sLVsxMnB4XSdcIj57eyBzdGVwKCkubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmIChjb25zdEh0bWxTaG93UGVyY2VudCkge1xuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiY29uc3RIdG1sUGVyY2VudENsYXNzICsgJ2xpYnMtdWktZm9udC1oNW0gbWwtWzhweF0nXCI+e3sgY29uc3RIdG1sU3RlcFBlcmNlbnQgfCBMaWJzVWlQaXBlc0Zvcm1hdE51bWJlclBpcGU6IHRydWUgOiBzdGVwKCkucGVyY2VudEZpeGVkID8/IHBlcmNlbnRGaXhlZCgpIH19e3sgJyUnIH19PC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1iYXItc3RhbmRhcmQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3Byb2Nlc3MtYmFyL3N0YW5kYXJkL3NyYy9wcm9jZXNzLWJhci1zdGFuZGFyZC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVByb2Nlc3NCYXJTdGFuZGFyZENvbmZpZ0RlZmF1bHRJbnRlcmZhY2Uge1xuICB3aWR0aD86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHJhZGl1cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUHJvY2Vzc0JhclN0YW5kYXJkSW50ZXJmYWNlIHtcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICByYWRpdXM/OiBudW1iZXI7XG4gIHRvdGFsVmFsdWU6IG51bWJlcjtcbiAgbW9kZT86ICdzdGFjaycgfCAnc2VwYXJhdGUnIHwgJ3N0ZXBzJztcbiAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICBzaG93UGVyY2VudD86IGJvb2xlYW47XG4gIHBlcmNlbnRDbGFzcz86IHN0cmluZztcbiAgc3RlcHM6IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElQcm9jZXNzQmFyU3RhbmRhcmRTdGVwSW50ZXJmYWNlPj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQcm9jZXNzQmFyU3RhbmRhcmRTdGVwSW50ZXJmYWNlIHtcbiAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgY2xhc3NMYWJlbD86IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgY29sb3I6IHN0cmluZztcbiAgc2hvd1BlcmNlbnQ/OiBib29sZWFuO1xuICBwZXJjZW50Q2xhc3M/OiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1iYXItc3RhbmRhcmQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3Byb2Nlc3MtYmFyL3N0YW5kYXJkL3NyYy9wcm9jZXNzLWJhci1zdGFuZGFyZC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVByb2Nlc3NCYXJTdGFuZGFyZENvbmZpZ0RlZmF1bHRJbnRlcmZhY2Uge1xuICB3aWR0aD86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHJhZGl1cz86IG51bWJlcjtcbiAgcGVyY2VudEZpeGVkPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQcm9jZXNzQmFyU3RhbmRhcmRJbnRlcmZhY2Uge1xuICB3aWR0aD86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHJhZGl1cz86IG51bWJlcjtcbiAgdG90YWxWYWx1ZTogbnVtYmVyO1xuICBtb2RlPzogJ3N0YWNrJyB8ICdzZXBhcmF0ZScgfCAnc3RlcHMnO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gIHNob3dQZXJjZW50PzogYm9vbGVhbjtcbiAgcGVyY2VudENsYXNzPzogc3RyaW5nO1xuICAvKiogU+G7kSBjaOG7ryBz4buRIHRo4bqtcCBwaMOibiBj4bunYSBwaOG6p24gdHLEg20gaGnhu4NuIHRo4buLLiBT4buRIDAgdGjhu6thIMSRxrDhu6NjIGPhuq90ICg1MC4wMCAtPiA1MCkuIEBkZWZhdWx0IDIgKi9cbiAgcGVyY2VudEZpeGVkPzogbnVtYmVyO1xuICBzdGVwczogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SVByb2Nlc3NCYXJTdGFuZGFyZFN0ZXBJbnRlcmZhY2U+Pj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVByb2Nlc3NCYXJTdGFuZGFyZFN0ZXBJbnRlcmZhY2Uge1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBjbGFzc0xhYmVsPzogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyO1xuICBjb2xvcjogc3RyaW5nO1xuICBzaG93UGVyY2VudD86IGJvb2xlYW47XG4gIHBlcmNlbnRDbGFzcz86IHN0cmluZztcbiAgLyoqIE92ZXJyaWRlIHPhu5EgY2jhu68gc+G7kSB0aOG6rXAgcGjDom4gY+G7p2EgcGjhuqduIHRyxINtIGNobyByacOqbmcgc3RlcCBuw6B5ICovXG4gIHBlcmNlbnRGaXhlZD86IG51bWJlcjtcbn1cbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { computed, input, inject, Component, ChangeDetectionStrategy } from '@angular/core';
3
+ import { LibsUiPipesFormatNumberPipe } from '@libs-ui/pipes-format-number';
3
4
  import { PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT } from '@libs-ui/utils';
4
5
 
5
6
  class LibsUiComponentsProcessBarStandardComponent {
@@ -7,14 +8,15 @@ class LibsUiComponentsProcessBarStandardComponent {
7
8
  height = computed(() => this.config().height ?? this.processBarConfigDefault?.height ?? '12px');
8
9
  backgroundColor = computed(() => this.config().backgroundColor ?? this.processBarConfigDefault?.backgroundColor ?? '#F8F9FA');
9
10
  radius = computed(() => `${this.config().radius ?? this.processBarConfigDefault?.radius ?? 20}px`);
11
+ percentFixed = computed(() => this.config().percentFixed ?? this.processBarConfigDefault?.percentFixed ?? 2);
10
12
  config = input.required();
11
13
  processBarConfigDefault = inject(PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, { optional: true });
12
14
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsProcessBarStandardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsProcessBarStandardComponent, isStandalone: true, selector: "libs_ui-components-process_bar-standard", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5r ml-[8px]'\">\n {{ constHtmlStepPercent + '%' }}\n </div>\n }\n </div>\n }\n }\n }\n}\n", styles: [".libs-ui-process-bar-standard{display:flex;position:relative;flex-shrink:0;flex-grow:0;align-items:center;overflow:hidden;width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsProcessBarStandardComponent, isStandalone: true, selector: "libs_ui-components-process_bar-standard", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5m ml-[8px]'\">{{ constHtmlStepPercent | LibsUiPipesFormatNumberPipe: true : step().percentFixed ?? percentFixed() }}{{ '%' }}</div>\n }\n </div>\n }\n }\n }\n}\n", styles: [".libs-ui-process-bar-standard{display:flex;position:relative;flex-shrink:0;flex-grow:0;align-items:center;overflow:hidden;width:100%;height:100%}\n"], dependencies: [{ kind: "pipe", type: LibsUiPipesFormatNumberPipe, name: "LibsUiPipesFormatNumberPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
16
  }
15
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsProcessBarStandardComponent, decorators: [{
16
18
  type: Component,
17
- args: [{ selector: 'libs_ui-components-process_bar-standard', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5r ml-[8px]'\">\n {{ constHtmlStepPercent + '%' }}\n </div>\n }\n </div>\n }\n }\n }\n}\n", styles: [".libs-ui-process-bar-standard{display:flex;position:relative;flex-shrink:0;flex-grow:0;align-items:center;overflow:hidden;width:100%;height:100%}\n"] }]
19
+ args: [{ selector: 'libs_ui-components-process_bar-standard', standalone: true, imports: [LibsUiPipesFormatNumberPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5m ml-[8px]'\">{{ constHtmlStepPercent | LibsUiPipesFormatNumberPipe: true : step().percentFixed ?? percentFixed() }}{{ '%' }}</div>\n }\n </div>\n }\n }\n }\n}\n", styles: [".libs-ui-process-bar-standard{display:flex;position:relative;flex-shrink:0;flex-grow:0;align-items:center;overflow:hidden;width:100%;height:100%}\n"] }]
18
20
  }] });
19
21
 
20
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-process-bar-standard.mjs","sources":["../../../../../../libs-ui/components/process-bar/standard/src/process-bar-standard.component.ts","../../../../../../libs-ui/components/process-bar/standard/src/process-bar-standard.component.html","../../../../../../libs-ui/components/process-bar/standard/src/libs-ui-components-process-bar-standard.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT } from '@libs-ui/utils';\nimport { IProcessBarStandardConfigDefaultInterface, IProcessBarStandardInterface } from './process-bar-standard.interface';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-process_bar-standard',\n standalone: true,\n templateUrl: './process-bar-standard.component.html',\n styleUrl: './process-bar-standard.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsProcessBarStandardComponent {\n protected width = computed(() => this.config().width ?? this.processBarConfigDefault?.width ?? '100%');\n protected height = computed(() => this.config().height ?? this.processBarConfigDefault?.height ?? '12px');\n protected backgroundColor = computed(() => this.config().backgroundColor ?? this.processBarConfigDefault?.backgroundColor ?? '#F8F9FA');\n protected radius = computed(() => `${this.config().radius ?? this.processBarConfigDefault?.radius ?? 20}px`);\n\n readonly config = input.required<IProcessBarStandardInterface>();\n\n private readonly processBarConfigDefault = inject<IProcessBarStandardConfigDefaultInterface>(PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, { optional: true });\n}\n","@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5r ml-[8px]'\">\n {{ constHtmlStepPercent + '%' }}\n </div>\n }\n </div>\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAWa,2CAA2C,CAAA;IAC5C,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC;IAC7F,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;IAChG,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,eAAe,IAAI,IAAI,CAAC,uBAAuB,EAAE,eAAe,IAAI,SAAS,CAAC,CAAC;IAC9H,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE,MAAM,IAAI,EAAE,CAAI,EAAA,CAAA,CAAC,CAAC;AAEpG,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAgC,CAAC;IAEhD,uBAAuB,GAAG,MAAM,CAA4C,gDAAgD,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;wGARxJ,2CAA2C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,yOCXxD,2uFAmEA,EAAA,MAAA,EAAA,CAAA,qJAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDxDa,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBARvD,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yCAAyC,EACvC,UAAA,EAAA,IAAI,EAGC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2uFAAA,EAAA,MAAA,EAAA,CAAA,qJAAA,CAAA,EAAA,CAAA;;;AETjD;;AAEG;;;;"}
1
+ {"version":3,"file":"libs-ui-components-process-bar-standard.mjs","sources":["../../../../../../libs-ui/components/process-bar/standard/src/process-bar-standard.component.ts","../../../../../../libs-ui/components/process-bar/standard/src/process-bar-standard.component.html","../../../../../../libs-ui/components/process-bar/standard/src/libs-ui-components-process-bar-standard.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { LibsUiPipesFormatNumberPipe } from '@libs-ui/pipes-format-number';\nimport { PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT } from '@libs-ui/utils';\nimport { IProcessBarStandardConfigDefaultInterface, IProcessBarStandardInterface } from './process-bar-standard.interface';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-process_bar-standard',\n standalone: true,\n imports: [LibsUiPipesFormatNumberPipe],\n templateUrl: './process-bar-standard.component.html',\n styleUrl: './process-bar-standard.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsProcessBarStandardComponent {\n protected width = computed(() => this.config().width ?? this.processBarConfigDefault?.width ?? '100%');\n protected height = computed(() => this.config().height ?? this.processBarConfigDefault?.height ?? '12px');\n protected backgroundColor = computed(() => this.config().backgroundColor ?? this.processBarConfigDefault?.backgroundColor ?? '#F8F9FA');\n protected radius = computed(() => `${this.config().radius ?? this.processBarConfigDefault?.radius ?? 20}px`);\n protected percentFixed = computed(() => this.config().percentFixed ?? this.processBarConfigDefault?.percentFixed ?? 2);\n\n readonly config = input.required<IProcessBarStandardInterface>();\n\n private readonly processBarConfigDefault = inject<IProcessBarStandardConfigDefaultInterface>(PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, { optional: true });\n}\n","@let constHtmlSteps = config().steps() || [];\n@let constHtmlMode = config().mode || 'stack';\n@let constHtmlTotalValue = config().totalValue;\n\n@if (constHtmlSteps.length > 0 && constHtmlTotalValue) {\n @switch (constHtmlMode) {\n @case ('stack') {\n <div\n [class]=\"(config().classInclude || '') + ' libs-ui-process-bar-standard'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n <div\n class=\"flex h-full items-center\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\">\n @if (step().label) {\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n }\n </div>\n }\n </div>\n }\n\n @case ('separate') {\n @for (step of constHtmlSteps; track step()) {\n @let constHtmlStepPercent = (step().value / constHtmlTotalValue) * 100;\n @let constHtmlShowPercent = step().showPercent ?? config().showPercent;\n @let constHtmlPercentClass = (step().percentClass ?? config().percentClass) || '';\n\n <div\n [class]=\"(config().classInclude || '') + ' flex w-full shrink-0 items-center relative my-[8px]'\"\n [style.width]=\"width()\"\n [style.height]=\"height()\">\n <div class=\"flex w-full h-full relative\">\n <div class=\"flex absolute w-full h-full\">\n <div\n class=\"libs-ui-process-bar-standard\"\n [style.backgroundColor]=\"backgroundColor()\"\n [style.borderRadius]=\"radius()\">\n <div\n class=\"flex h-full\"\n [style.backgroundColor]=\"step().color\"\n [style.width]=\"constHtmlStepPercent + '%'\"\n [style.borderRadius]=\"radius()\"\n [class]=\"step().classInclude\"></div>\n @if (step().label) {\n <div class=\"absolute top-0 left-0 w-full h-full flex items-center\">\n <span [class]=\"(step().classLabel || '') + ' libs-ui-font-h5r ml-[12px]'\">{{ step().label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n @if (constHtmlShowPercent) {\n <div [class]=\"constHtmlPercentClass + 'libs-ui-font-h5m ml-[8px]'\">{{ constHtmlStepPercent | LibsUiPipesFormatNumberPipe: true : step().percentFixed ?? percentFixed() }}{{ '%' }}</div>\n }\n </div>\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAaa,2CAA2C,CAAA;IAC5C,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC;IAC7F,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;IAChG,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,eAAe,IAAI,IAAI,CAAC,uBAAuB,EAAE,eAAe,IAAI,SAAS,CAAC,CAAC;IAC9H,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE,MAAM,IAAI,EAAE,CAAI,EAAA,CAAA,CAAC,CAAC;IACnG,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;AAE9G,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAgC,CAAC;IAEhD,uBAAuB,GAAG,MAAM,CAA4C,gDAAgD,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;wGATxJ,2CAA2C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAA3C,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbxD,4xFAiEA,EAAA,MAAA,EAAA,CAAA,qJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDzDY,2BAA2B,EAAA,IAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAK1B,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBATvD,SAAS;+BAEE,yCAAyC,EAAA,UAAA,EACvC,IAAI,EACP,OAAA,EAAA,CAAC,2BAA2B,CAAC,EAAA,eAAA,EAGrB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4xFAAA,EAAA,MAAA,EAAA,CAAA,qJAAA,CAAA,EAAA,CAAA;;;AEXjD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@libs-ui/components-process-bar-standard",
3
- "version": "0.2.357-14",
3
+ "version": "0.2.357-15",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=18.0.0",
6
- "@libs-ui/utils": "0.2.357-14"
6
+ "@libs-ui/utils": "0.2.357-15"
7
7
  },
8
8
  "sideEffects": false,
9
9
  "module": "fesm2022/libs-ui-components-process-bar-standard.mjs",
@@ -5,6 +5,7 @@ export declare class LibsUiComponentsProcessBarStandardComponent {
5
5
  protected height: import("@angular/core").Signal<string>;
6
6
  protected backgroundColor: import("@angular/core").Signal<string>;
7
7
  protected radius: import("@angular/core").Signal<string>;
8
+ protected percentFixed: import("@angular/core").Signal<number>;
8
9
  readonly config: import("@angular/core").InputSignal<IProcessBarStandardInterface>;
9
10
  private readonly processBarConfigDefault;
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsProcessBarStandardComponent, never>;
@@ -4,6 +4,7 @@ export interface IProcessBarStandardConfigDefaultInterface {
4
4
  height?: string;
5
5
  backgroundColor?: string;
6
6
  radius?: number;
7
+ percentFixed?: number;
7
8
  }
8
9
  export interface IProcessBarStandardInterface {
9
10
  width?: string;
@@ -15,6 +16,8 @@ export interface IProcessBarStandardInterface {
15
16
  classInclude?: string;
16
17
  showPercent?: boolean;
17
18
  percentClass?: string;
19
+ /** Số chữ số thập phân của phần trăm hiển thị. Số 0 thừa được cắt (50.00 -> 50). @default 2 */
20
+ percentFixed?: number;
18
21
  steps: WritableSignal<Array<WritableSignal<IProcessBarStandardStepInterface>>>;
19
22
  }
20
23
  export interface IProcessBarStandardStepInterface {
@@ -25,4 +28,6 @@ export interface IProcessBarStandardStepInterface {
25
28
  color: string;
26
29
  showPercent?: boolean;
27
30
  percentClass?: string;
31
+ /** Override số chữ số thập phân của phần trăm cho riêng step này */
32
+ percentFixed?: number;
28
33
  }