keevo-components 2.0.63 → 2.0.65

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.
Files changed (32) hide show
  1. package/esm2022/lib/api/services/image.cutter.service.mjs +2 -2
  2. package/esm2022/lib/components/kv-button/kv-button.component.mjs +13 -6
  3. package/esm2022/lib/components/kv-confirmation-modal/kv-confirmation-modal.component.mjs +1 -1
  4. package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.component.mjs +1 -1
  5. package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +33 -4
  6. package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +9 -4
  7. package/esm2022/lib/components/kv-filter-cards/kv-filter-cards.component.mjs +27 -3
  8. package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +1 -1
  9. package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +3 -3
  10. package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +1 -1
  11. package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +1 -1
  12. package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +1 -1
  13. package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +1 -1
  14. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +1 -1
  15. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +2 -2
  16. package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +1 -1
  17. package/esm2022/lib/components/kv-table/kv-table.component.mjs +1 -1
  18. package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +3 -3
  19. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +1 -1
  20. package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +1 -1
  21. package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +1 -1
  22. package/fesm2022/keevo-components.mjs +93 -32
  23. package/fesm2022/keevo-components.mjs.map +1 -1
  24. package/lib/components/kv-button/kv-button.component.d.ts +3 -2
  25. package/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.d.ts +1 -1
  26. package/lib/components/kv-file-upload/kv-file-upload.component.d.ts +4 -1
  27. package/lib/components/kv-file-upload/kv-file-upload.module.d.ts +3 -1
  28. package/lib/components/kv-filter-cards/kv-filter-cards.component.d.ts +5 -1
  29. package/lib/components/kv-table/kv-table.component.d.ts +1 -1
  30. package/lib/components/kv-table-expandable/kv-table-expandable.component.d.ts +1 -1
  31. package/lib/components/kv-tag/kv-tag.component.d.ts +1 -1
  32. package/package.json +1 -1
@@ -1,7 +1,9 @@
1
- import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter, ViewChild, input, computed } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../api/services/notification.service";
4
4
  import * as i2 from "@angular/common";
5
+ import * as i3 from "../kv-progress-bar/kv-progress-bar.component";
6
+ import * as i4 from "primeng/button";
5
7
  export class KvFileUploadComponent {
6
8
  constructor(notificationService) {
7
9
  this.notificationService = notificationService;
@@ -10,8 +12,35 @@ export class KvFileUploadComponent {
10
12
  this.validFileTypes = ['image/', 'application/pdf', 'text/html', 'text/xml', 'application/xml', 'text/plain'];
11
13
  this.tamanhoMaximoPermitido = '';
12
14
  this.includeOfficeTypes = false; // Propriedade para controlar os tipos de Office
15
+ this.maxSizeFile = input(10);
13
16
  this.fileEmit = new EventEmitter();
14
17
  this.removeFileEmit = new EventEmitter();
18
+ // returnMbSize = computed(() => (bytes: any) => {
19
+ // if (bytes === null || bytes === undefined) {
20
+ // return '0 MB';
21
+ // }
22
+ // const mbSize = bytes / (1024 * 1024);
23
+ // return this.formatBytes(mbSize, 2);
24
+ // });
25
+ this.progressValue = computed(() => (bytes) => {
26
+ if (bytes === null || bytes === undefined) {
27
+ return 0;
28
+ }
29
+ const mbSize = bytes / (1024 * 1024);
30
+ let progressValue = (Number(mbSize) / this.maxSizeFile()) * 100;
31
+ // Limita o valor do progresso entre 0 e 100
32
+ return Math.min(Math.max(progressValue, 0), 100);
33
+ });
34
+ this.returnProgressLabel = computed(() => (bytes) => {
35
+ if (bytes === null || bytes === undefined) {
36
+ return '0 MB';
37
+ }
38
+ const mbSize = bytes / (1024 * 1024);
39
+ // let progressValue = (Number(mbSize) / this.maxSizeFile()) * 100;
40
+ // this.progressValue.set(progressValue);
41
+ // this.progressValue.set((mbSize / this.maxSizeFile())*100);
42
+ return `${mbSize.toFixed(2)}/${this.maxSizeFile()} MB`;
43
+ });
15
44
  }
16
45
  onFileSelected(event) {
17
46
  let validTypes = [...this.validFileTypes];
@@ -127,11 +156,11 @@ export class KvFileUploadComponent {
127
156
  return types.slice(0, -2); // Remove a última vírgula e espaço
128
157
  }
129
158
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadComponent, deps: [{ token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
130
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvFileUploadComponent, selector: "kv-file-upload", inputs: { formGroup: "formGroup", formControlName: "formControlName", widthComponent: "widthComponent", heightComponent: "heightComponent", description: "description", validFileTypes: "validFileTypes", tamanhoMaximoPermitido: "tamanhoMaximoPermitido", includeOfficeTypes: "includeOfficeTypes" }, outputs: { fileEmit: "fileEmit", removeFileEmit: "removeFileEmit" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "inputUpload", first: true, predicate: ["inputUpload"], descendants: true }], ngImport: i0, template: "<div\r\n *ngIf=\"formGroup\"\r\n [ngClass]=\"{'invalid-border': formGroup && formControlName && formGroup.controls[formControlName].invalid && formGroup.controls[formControlName].touched}\"\r\n class=\"border-dashed border-2 border-round-lg border-gray-400 flex justify-content-end\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [style.width]=\"widthComponent\"\r\n [style.height]=\"heightComponent\">\r\n\r\n <div class=\"field col-12 flex justify-content-center align-items-center flex-column\">\r\n <div\r\n class=\"w-full flex align-items-center justify-content-center\"\r\n style=\"cursor: pointer;\"\r\n (click)=\"fileInput.click()\">\r\n\r\n <input type=\"file\" (change)=\"onFileSelected($event)\" #fileInput [accept]=\"setAccept()\" hidden/>\r\n\r\n @if(formGroup && formControlName && !formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column align-items-center justify-content-center\">\r\n @if(tamanhoMaximoPermitido) {\r\n <p class=\"w-full text-start\">Tamanho maximo permitido ( {{tamanhoMaximoPermitido}} )*</p>\r\n }\r\n <span class=\"material-symbols-outlined mt-2\" style=\"font-size: 3rem;\">\r\n cloud_upload\r\n </span>\r\n\r\n @if(description) { \r\n <p class=\"font-semibold text-center\">{{description}}</p>\r\n } @else {\r\n <p class=\"font-semibold text-center\">Arraste e solte o arquivo aqui, ou<br>clique para selecion\u00E1-lo</p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n @if(formGroup && formControlName && formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column\">\r\n <span class=\"font-semibold\" style=\"padding: 10px;\">Arquivo Selecionado:</span>\r\n <div class=\"flex flex-row\">\r\n <span style=\"padding: 10px;\">{{ formGroup.controls[formControlName].value?.name }}</span>\r\n <span style=\"padding: 10px;\">({{ formatBytes(formGroup.controls[formControlName].value?.size) }})</span>\r\n <i style=\"padding: 10px; margin-left: 10px;\"\r\n pTooltip=\"Excluir arquivo\"\r\n class=\"border-solid border-1 border-round-sm border-gray-400 pi pi-trash delete cursor-pointer\"\r\n (click)=\"deleteFile()\"\r\n ></i>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (formGroup && formControlName && formGroup.controls[formControlName].invalid && formGroup.controls[formControlName].touched) {\r\n <p class=\"error-message\">Campo obrigat\u00F3rio</p>\r\n}\r\n", styles: [".invalid-border{border:2px dashed red!important}.error-message{color:#ff0e0e;font-size:12px!important;margin-top:.1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvFileUploadComponent, selector: "kv-file-upload", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: false, isRequired: false, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: false, isRequired: false, transformFunction: null }, widthComponent: { classPropertyName: "widthComponent", publicName: "widthComponent", isSignal: false, isRequired: false, transformFunction: null }, heightComponent: { classPropertyName: "heightComponent", publicName: "heightComponent", isSignal: false, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: false, isRequired: false, transformFunction: null }, validFileTypes: { classPropertyName: "validFileTypes", publicName: "validFileTypes", isSignal: false, isRequired: false, transformFunction: null }, tamanhoMaximoPermitido: { classPropertyName: "tamanhoMaximoPermitido", publicName: "tamanhoMaximoPermitido", isSignal: false, isRequired: false, transformFunction: null }, includeOfficeTypes: { classPropertyName: "includeOfficeTypes", publicName: "includeOfficeTypes", isSignal: false, isRequired: false, transformFunction: null }, maxSizeFile: { classPropertyName: "maxSizeFile", publicName: "maxSizeFile", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileEmit: "fileEmit", removeFileEmit: "removeFileEmit" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "inputUpload", first: true, predicate: ["inputUpload"], descendants: true }], ngImport: i0, template: "<div\r\n *ngIf=\"formGroup\"\r\n [ngClass]=\"{\r\n 'invalid-border':\r\n formGroup &&\r\n formControlName &&\r\n formGroup.controls[formControlName].invalid &&\r\n formGroup.controls[formControlName].touched\r\n }\"\r\n class=\"border-dashed border-2 border-round-lg border-gray-400 flex justify-content-end relative p-2\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [style.minWidth]=\"'20rem'\"\r\n [style.minHeight]=\"'10rem'\"\r\n [style.width]=\"widthComponent\"\r\n [style.height]=\"heightComponent\"\r\n>\r\n @if(formGroup && formControlName && formGroup.controls[formControlName].value)\r\n {\r\n <button\r\n style=\"background-color: transparent\"\r\n pButton\r\n (click)=\"deleteFile()\"\r\n class=\"absolute transition-colors transition-duration-500 text-red-700 hover:text-red-500 m-1 h-2rem w-2rem\"\r\n [text]=\"true\"\r\n [icon]=\"'pi pi-trash'\"\r\n ></button>\r\n }\r\n <div\r\n class=\"col-12 flex flex-column align-items-center justify-content-center\"\r\n >\r\n <div\r\n class=\"w-full align-items-center justify-content-center col-12\"\r\n style=\"cursor: pointer\"\r\n [style.display]=\"formGroup.controls[formControlName].value ? 'none' : 'flex'\"\r\n (click)=\"fileInput.click()\"\r\n >\r\n <input\r\n type=\"file\"\r\n (change)=\"onFileSelected($event)\"\r\n #fileInput\r\n [accept]=\"setAccept()\"\r\n hidden\r\n />\r\n\r\n @if(formGroup && formControlName &&\r\n !formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column align-items-center justify-content-center\">\r\n <!-- @if(tamanhoMaximoPermitido) {\r\n <p class=\"w-full text-start\">Tamanho maximo permitido ( {{tamanhoMaximoPermitido}} )*</p>\r\n } -->\r\n <span\r\n class=\"material-symbols-outlined mt-2 text-gray-700\"\r\n style=\"font-size: 2.5rem\"\r\n >\r\n cloud_upload\r\n </span>\r\n\r\n @if(description) {\r\n <span class=\"font-medium text-center text-sm text-gray-600\">\r\n {{ description }}\r\n </span>\r\n } @else {\r\n <span class=\"font-medium text-center text-sm text-gray-600\">\r\n Arraste e solte o arquivo aqui, ou<br />clique para selecion\u00E1-lo\r\n </span>\r\n }\r\n </div>\r\n\r\n }\r\n </div>\r\n\r\n @if(formGroup && formControlName && formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column justify-content-between h-full w-full\">\r\n <div class=\"col-9 p-0 pt-1\">\r\n <kv-progress-bar\r\n [value]=\"\r\n progressValue()(formGroup.controls[formControlName].value?.size)\r\n \"\r\n [showValue]=\"false\"\r\n [barStyleClass]=\"\r\n progressValue()(formGroup.controls[formControlName].value?.size) ==\r\n 100\r\n ? 'bg-red-400'\r\n : ''\r\n \"\r\n [label]=\"\r\n returnProgressLabel()(\r\n formGroup.controls[formControlName].value?.size\r\n )\r\n \"\r\n ></kv-progress-bar>\r\n\r\n @if(progressValue()(formGroup.controls[formControlName].value?.size) ==\r\n 100) {\r\n <span class=\"text-red-600 text-xs\">Tamanho m\u00E1ximo excedido.</span>\r\n }\r\n </div>\r\n\r\n <div class=\"flex flex-column gap-2\">\r\n <span class=\"font-medium text-gray-600 text-xs\"\r\n >Arquivo Selecionado:</span\r\n >\r\n\r\n <div class=\"flex flex-row justify-content-between\">\r\n <span class=\"text-gray-600 text-xs\">{{\r\n formGroup.controls[formControlName].value?.name\r\n }}</span>\r\n <span\r\n class=\"\r\n {{\r\n progressValue()(\r\n formGroup.controls[formControlName].value?.size\r\n ) == 100\r\n ? 'text-red-600'\r\n : 'text-green-600'\r\n }} \r\n text-xs\"\r\n >{{\r\n formatBytes(formGroup.controls[formControlName].value?.size)\r\n }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (formGroup && formControlName && formGroup.controls[formControlName].invalid\r\n&& formGroup.controls[formControlName].touched) {\r\n<p class=\"error-message\">Campo obrigat\u00F3rio</p>\r\n}\r\n", styles: [".invalid-border{border:2px dashed red!important}.error-message{color:#ff0e0e;font-size:12px!important;margin-top:.1rem}.teste{background-color:red!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ProgressBarComponent, selector: "kv-progress-bar", inputs: ["value", "maxValue", "label", "showValue", "showLabel", "styleClass", "labelStyleClass", "barStyleClass", "style", "unit", "mode", "color"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }] }); }
131
160
  }
132
161
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadComponent, decorators: [{
133
162
  type: Component,
134
- args: [{ selector: 'kv-file-upload', template: "<div\r\n *ngIf=\"formGroup\"\r\n [ngClass]=\"{'invalid-border': formGroup && formControlName && formGroup.controls[formControlName].invalid && formGroup.controls[formControlName].touched}\"\r\n class=\"border-dashed border-2 border-round-lg border-gray-400 flex justify-content-end\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [style.width]=\"widthComponent\"\r\n [style.height]=\"heightComponent\">\r\n\r\n <div class=\"field col-12 flex justify-content-center align-items-center flex-column\">\r\n <div\r\n class=\"w-full flex align-items-center justify-content-center\"\r\n style=\"cursor: pointer;\"\r\n (click)=\"fileInput.click()\">\r\n\r\n <input type=\"file\" (change)=\"onFileSelected($event)\" #fileInput [accept]=\"setAccept()\" hidden/>\r\n\r\n @if(formGroup && formControlName && !formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column align-items-center justify-content-center\">\r\n @if(tamanhoMaximoPermitido) {\r\n <p class=\"w-full text-start\">Tamanho maximo permitido ( {{tamanhoMaximoPermitido}} )*</p>\r\n }\r\n <span class=\"material-symbols-outlined mt-2\" style=\"font-size: 3rem;\">\r\n cloud_upload\r\n </span>\r\n\r\n @if(description) { \r\n <p class=\"font-semibold text-center\">{{description}}</p>\r\n } @else {\r\n <p class=\"font-semibold text-center\">Arraste e solte o arquivo aqui, ou<br>clique para selecion\u00E1-lo</p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n @if(formGroup && formControlName && formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column\">\r\n <span class=\"font-semibold\" style=\"padding: 10px;\">Arquivo Selecionado:</span>\r\n <div class=\"flex flex-row\">\r\n <span style=\"padding: 10px;\">{{ formGroup.controls[formControlName].value?.name }}</span>\r\n <span style=\"padding: 10px;\">({{ formatBytes(formGroup.controls[formControlName].value?.size) }})</span>\r\n <i style=\"padding: 10px; margin-left: 10px;\"\r\n pTooltip=\"Excluir arquivo\"\r\n class=\"border-solid border-1 border-round-sm border-gray-400 pi pi-trash delete cursor-pointer\"\r\n (click)=\"deleteFile()\"\r\n ></i>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (formGroup && formControlName && formGroup.controls[formControlName].invalid && formGroup.controls[formControlName].touched) {\r\n <p class=\"error-message\">Campo obrigat\u00F3rio</p>\r\n}\r\n", styles: [".invalid-border{border:2px dashed red!important}.error-message{color:#ff0e0e;font-size:12px!important;margin-top:.1rem}\n"] }]
163
+ args: [{ selector: 'kv-file-upload', template: "<div\r\n *ngIf=\"formGroup\"\r\n [ngClass]=\"{\r\n 'invalid-border':\r\n formGroup &&\r\n formControlName &&\r\n formGroup.controls[formControlName].invalid &&\r\n formGroup.controls[formControlName].touched\r\n }\"\r\n class=\"border-dashed border-2 border-round-lg border-gray-400 flex justify-content-end relative p-2\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [style.minWidth]=\"'20rem'\"\r\n [style.minHeight]=\"'10rem'\"\r\n [style.width]=\"widthComponent\"\r\n [style.height]=\"heightComponent\"\r\n>\r\n @if(formGroup && formControlName && formGroup.controls[formControlName].value)\r\n {\r\n <button\r\n style=\"background-color: transparent\"\r\n pButton\r\n (click)=\"deleteFile()\"\r\n class=\"absolute transition-colors transition-duration-500 text-red-700 hover:text-red-500 m-1 h-2rem w-2rem\"\r\n [text]=\"true\"\r\n [icon]=\"'pi pi-trash'\"\r\n ></button>\r\n }\r\n <div\r\n class=\"col-12 flex flex-column align-items-center justify-content-center\"\r\n >\r\n <div\r\n class=\"w-full align-items-center justify-content-center col-12\"\r\n style=\"cursor: pointer\"\r\n [style.display]=\"formGroup.controls[formControlName].value ? 'none' : 'flex'\"\r\n (click)=\"fileInput.click()\"\r\n >\r\n <input\r\n type=\"file\"\r\n (change)=\"onFileSelected($event)\"\r\n #fileInput\r\n [accept]=\"setAccept()\"\r\n hidden\r\n />\r\n\r\n @if(formGroup && formControlName &&\r\n !formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column align-items-center justify-content-center\">\r\n <!-- @if(tamanhoMaximoPermitido) {\r\n <p class=\"w-full text-start\">Tamanho maximo permitido ( {{tamanhoMaximoPermitido}} )*</p>\r\n } -->\r\n <span\r\n class=\"material-symbols-outlined mt-2 text-gray-700\"\r\n style=\"font-size: 2.5rem\"\r\n >\r\n cloud_upload\r\n </span>\r\n\r\n @if(description) {\r\n <span class=\"font-medium text-center text-sm text-gray-600\">\r\n {{ description }}\r\n </span>\r\n } @else {\r\n <span class=\"font-medium text-center text-sm text-gray-600\">\r\n Arraste e solte o arquivo aqui, ou<br />clique para selecion\u00E1-lo\r\n </span>\r\n }\r\n </div>\r\n\r\n }\r\n </div>\r\n\r\n @if(formGroup && formControlName && formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column justify-content-between h-full w-full\">\r\n <div class=\"col-9 p-0 pt-1\">\r\n <kv-progress-bar\r\n [value]=\"\r\n progressValue()(formGroup.controls[formControlName].value?.size)\r\n \"\r\n [showValue]=\"false\"\r\n [barStyleClass]=\"\r\n progressValue()(formGroup.controls[formControlName].value?.size) ==\r\n 100\r\n ? 'bg-red-400'\r\n : ''\r\n \"\r\n [label]=\"\r\n returnProgressLabel()(\r\n formGroup.controls[formControlName].value?.size\r\n )\r\n \"\r\n ></kv-progress-bar>\r\n\r\n @if(progressValue()(formGroup.controls[formControlName].value?.size) ==\r\n 100) {\r\n <span class=\"text-red-600 text-xs\">Tamanho m\u00E1ximo excedido.</span>\r\n }\r\n </div>\r\n\r\n <div class=\"flex flex-column gap-2\">\r\n <span class=\"font-medium text-gray-600 text-xs\"\r\n >Arquivo Selecionado:</span\r\n >\r\n\r\n <div class=\"flex flex-row justify-content-between\">\r\n <span class=\"text-gray-600 text-xs\">{{\r\n formGroup.controls[formControlName].value?.name\r\n }}</span>\r\n <span\r\n class=\"\r\n {{\r\n progressValue()(\r\n formGroup.controls[formControlName].value?.size\r\n ) == 100\r\n ? 'text-red-600'\r\n : 'text-green-600'\r\n }} \r\n text-xs\"\r\n >{{\r\n formatBytes(formGroup.controls[formControlName].value?.size)\r\n }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (formGroup && formControlName && formGroup.controls[formControlName].invalid\r\n&& formGroup.controls[formControlName].touched) {\r\n<p class=\"error-message\">Campo obrigat\u00F3rio</p>\r\n}\r\n", styles: [".invalid-border{border:2px dashed red!important}.error-message{color:#ff0e0e;font-size:12px!important;margin-top:.1rem}.teste{background-color:red!important}\n"] }]
135
164
  }], ctorParameters: () => [{ type: i1.NotificationService }], propDecorators: { formGroup: [{
136
165
  type: Input
137
166
  }], formControlName: [{
@@ -159,4 +188,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
159
188
  type: ViewChild,
160
189
  args: ['inputUpload']
161
190
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7Ozs7QUFTOUYsTUFBTSxPQUFPLHFCQUFxQjtJQWdCaEMsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFibkQsbUJBQWMsR0FBVyxPQUFPLENBQUM7UUFDakMsb0JBQWUsR0FBVyxNQUFNLENBQUM7UUFFakMsbUJBQWMsR0FBYSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ25ILDJCQUFzQixHQUFXLEVBQUUsQ0FBQztRQUNwQyx1QkFBa0IsR0FBWSxLQUFLLENBQUMsQ0FBQyxnREFBZ0Q7UUFFcEYsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFLRCxDQUFDO0lBRWpFLGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFMUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUU1QixVQUFV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S0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWZpbGUtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi1maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RmlsZVVwbG9hZENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB3aWR0aENvbXBvbmVudDogc3RyaW5nID0gJzQwMHB4JztcclxuICBASW5wdXQoKSBoZWlnaHRDb21wb25lbnQ6IHN0cmluZyA9ICdhdXRvJztcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWxpZEZpbGVUeXBlczogc3RyaW5nW10gPSBbJ2ltYWdlLycsICdhcHBsaWNhdGlvbi9wZGYnLCAndGV4dC9odG1sJywgJ3RleHQveG1sJywgJ2FwcGxpY2F0aW9uL3htbCcsICd0ZXh0L3BsYWluJ107XHJcbiAgQElucHV0KCkgdGFtYW5ob01heGltb1Blcm1pdGlkbzogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgaW5jbHVkZU9mZmljZVR5cGVzOiBib29sZWFuID0gZmFsc2U7IC8vIFByb3ByaWVkYWRlIHBhcmEgY29udHJvbGFyIG9zIHRpcG9zIGRlIE9mZmljZVxyXG5cclxuICBAT3V0cHV0KCkgZmlsZUVtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVGaWxlRW1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRVcGxvYWQnKSBpbnB1dFVwbG9hZCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSkgeyB9XHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCB2YWxpZFR5cGVzID0gWy4uLnRoaXMudmFsaWRGaWxlVHlwZXNdO1xyXG5cclxuICAgIGlmICh0aGlzLmluY2x1ZGVPZmZpY2VUeXBlcykge1xyXG4gIFxyXG4gICAgICB2YWxpZFR5cGVzLnB1c2goXHJcbiAgICAgICAgJ2FwcGxpY2F0aW9uL21zd29yZCcsIC8vIC5kb2NcclxuICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLCAvLyAuZG9jeFxyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsIC8vIC5wcHRcclxuICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicgLy8gLnBwdHhcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA9PSAwKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgaXNWYWxpZEZpbGVUeXBlID0gdmFsaWRUeXBlcy5zb21lKHR5cGUgPT4gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLnR5cGUuc3RhcnRzV2l0aCh0eXBlKSB8fCBcclxuICAgICAgKHR5cGUgPT09ICdhcHBsaWNhdGlvbi94bWwnICYmIGV2ZW50LnRhcmdldC5maWxlc1swXS50eXBlID09PSAnYXBwbGljYXRpb24veG1sJykgfHxcclxuICAgICAgKHR5cGUgPT09ICd0ZXh0L3htbCcgJiYgZXZlbnQudGFyZ2V0LmZpbGVzWzBdLnR5cGUgPT09ICd0ZXh0L3htbCcpXHJcbiAgICApO1xyXG4gICAgaWYgKCFpc1ZhbGlkRmlsZVR5cGUpIHtcclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoJ1RpcG8gZGUgYXJxdWl2byBpbnbDoWxpZG8nKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKGV2ZW50LnRhcmdldC5maWxlc1swXSk7XHJcbiAgICB0aGlzLmZpbGVFbWl0LmVtaXQoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnJlbW92ZUZpbGVFbWl0LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdEJ5dGVzKGJ5dGVzOiBhbnksIGRlY2ltYWxzID0gMikge1xyXG4gICAgaWYgKCFieXRlcykge1xyXG4gICAgICByZXR1cm4gXCIwIEJ5dGVzXCI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrID0gMTAyNDtcclxuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPD0gMCA/IDAgOiBkZWNpbWFscztcclxuICAgIGNvbnN0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XHJcbiAgfVxyXG5cclxuICBhZGREcmFnT3ZlckNsYXNzKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdkcmFnb3ZlcicpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ292ZXInKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbGUoZmlsZTogRmlsZSkge1xyXG5cclxuICAgIGlmICh0aGlzLmluY2x1ZGVPZmZpY2VUeXBlcykge1xyXG4gICAgICBsZXQgdmFsaWRUeXBlcyA9IFsuLi50aGlzLnZhbGlkRmlsZVR5cGVzXTtcclxuXHJcbiAgICAgIHZhbGlkVHlwZXMucHVzaChcclxuICAgICAgICAnYXBwbGljYXRpb24vbXN3b3JkJywgLy8gLmRvY1xyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsIC8vIC5kb2N4XHJcbiAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywgLy8gLnBwdFxyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJyAvLyAucHB0eFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlzVmFsaWRGaWxlVHlwZSA9IHRoaXMudmFsaWRGaWxlVHlwZXMuc29tZSh0eXBlID0+IFxyXG4gICAgICBmaWxlLnR5cGUuc3RhcnRzV2l0aCh0eXBlKSB8fFxyXG4gICAgICBmaWxlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi94bWwnIHx8XHJcbiAgICAgIGZpbGUudHlwZSA9PT0gJ3RleHQveG1sJ1xyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIWlzVmFsaWRGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcignVGlwbyBkZSBhcnF1aXZvIGludsOhbGlkbycpO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUoZmlsZSk7XHJcblxyXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICBpZiAoZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgfSBlbHNlIGlmIChmaWxlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi94bWwnIHx8IGZpbGUudHlwZSA9PT0gJ3RleHQveG1sJykge1xyXG4gICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcclxuICAgIH0gICAgXHJcblxyXG4gICAgdGhpcy5maWxlRW1pdC5lbWl0KGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmFkZERyYWdPdmVyQ2xhc3MoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5yZW1vdmVEcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnJlbW92ZURyYWdPdmVyQ2xhc3MoZXZlbnQpO1xyXG5cclxuICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIgJiYgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5oYW5kbGVGaWxlKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRBY2NlcHQoKTogc3RyaW5nIHtcclxuICAgIGxldCB0eXBlcyA9ICcnXHJcblxyXG4gICAgdGhpcy52YWxpZEZpbGVUeXBlcy5mb3JFYWNoKHR5cGUgPT4ge1xyXG4gICAgICBpZiAodHlwZS5pbmNsdWRlcygnaW1hZ2UnKSkgdHlwZXMgKz0gJy5qcGcsIC5wbmcsIC5ibXAsICc7XHJcbiAgICAgIGlmICh0eXBlLmluY2x1ZGVzKCdodG1sJykpIHR5cGVzICs9ICcuaHRtbCwgJztcclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ3BkZicpKSB0eXBlcyArPSAnLnBkZiwgJztcclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ3htbCcpKSB0eXBlcyArPSAnLnhtbCwgJztcclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ3BsYWluJykpIHR5cGVzICs9ICcudHh0LCAnO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQWRpY2lvbmEgdGlwb3MgZGUgYXJxdWl2b3MgZG8gT2ZmaWNlIHNlIGluY2x1ZGVPZmZpY2VUeXBlcyBmb3IgdHJ1ZVxyXG4gICAgaWYgKHRoaXMuaW5jbHVkZU9mZmljZVR5cGVzKSB7XHJcbiAgICAgIHR5cGVzICs9ICcuZG9jLCAuZG9jeCwgLnBwdCwgLnBwdHgsICc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHR5cGVzLnNsaWNlKDAsIC0yKTsgLy8gUmVtb3ZlIGEgw7psdGltYSB2w61yZ3VsYSBlIGVzcGHDp29cclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICAgKm5nSWY9XCJmb3JtR3JvdXBcIlxyXG4gICAgW25nQ2xhc3NdPVwieydpbnZhbGlkLWJvcmRlcic6IGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0uaW52YWxpZCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS50b3VjaGVkfVwiXHJcbiAgICBjbGFzcz1cImJvcmRlci1kYXNoZWQgYm9yZGVyLTIgYm9yZGVyLXJvdW5kLWxnIGJvcmRlci1ncmF5LTQwMCBmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxyXG4gICAgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiXHJcbiAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxyXG4gICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxyXG4gICAgW3N0eWxlLndpZHRoXT1cIndpZHRoQ29tcG9uZW50XCJcclxuICAgIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0Q29tcG9uZW50XCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInctZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCJcclxuICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcblxyXG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwic2V0QWNjZXB0KClcIiBoaWRkZW4vPlxyXG5cclxuICAgICAgQGlmKGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgIWZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnZhbHVlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgIEBpZih0YW1hbmhvTWF4aW1vUGVybWl0aWRvKSB7XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidy1mdWxsIHRleHQtc3RhcnRcIj5UYW1hbmhvIG1heGltbyBwZXJtaXRpZG8gKCB7e3RhbWFuaG9NYXhpbW9QZXJtaXRpZG99fSApKjwvcD5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG10LTJcIiBzdHlsZT1cImZvbnQtc2l6ZTogM3JlbTtcIj5cclxuICAgICAgICAgICAgICAgIGNsb3VkX3VwbG9hZFxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAaWYoZGVzY3JpcHRpb24pIHsgIFxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtY2VudGVyXCI+e3tkZXNjcmlwdGlvbn19PC9wPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWNlbnRlclwiPkFycmFzdGUgZSBzb2x0ZSBvIGFycXVpdm8gYXF1aSwgb3U8YnI+Y2xpcXVlIHBhcmEgc2VsZWNpb27DoS1sbzwvcD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS52YWx1ZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkXCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPkFycXVpdm8gU2VsZWNpb25hZG86PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCI+e3sgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWU/Lm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPih7eyBmb3JtYXRCeXRlcyhmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS52YWx1ZT8uc2l6ZSkgfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpICBzdHlsZT1cInBhZGRpbmc6IDEwcHg7IG1hcmdpbi1sZWZ0OiAxMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiRXhjbHVpciBhcnF1aXZvXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItc29saWQgYm9yZGVyLTEgYm9yZGVyLXJvdW5kLXNtIGJvcmRlci1ncmF5LTQwMCBwaSBwaS10cmFzaCBkZWxldGUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZSgpXCJcclxuICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbkBpZiAoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS5pbnZhbGlkICYmIGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnRvdWNoZWQpICB7XHJcbiAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+Q2FtcG8gb2JyaWdhdMOzcmlvPC9wPlxyXG59XHJcbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBU3ZILE1BQU0sT0FBTyxxQkFBcUI7SUFrQmhDLFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBZm5ELG1CQUFjLEdBQVcsT0FBTyxDQUFDO1FBQ2pDLG9CQUFlLEdBQVcsTUFBTSxDQUFDO1FBRWpDLG1CQUFjLEdBQWEsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNuSCwyQkFBc0IsR0FBVyxFQUFFLENBQUM7UUFDcEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDLENBQUMsZ0RBQWdEO1FBRTlGLGdCQUFXLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXJCLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBMENqRSxrREFBa0Q7UUFDbEQsaURBQWlEO1FBQ2pELHFCQUFxQjtRQUNyQixNQUFNO1FBRU4sMENBQTBDO1FBRTFDLHdD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O3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBSUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0ksV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgaW5wdXQsIGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtZmlsZS11cGxvYWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2t2LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZGaWxlVXBsb2FkQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHdpZHRoQ29tcG9uZW50OiBzdHJpbmcgPSAnNDAwcHgnO1xyXG4gIEBJbnB1dCgpIGhlaWdodENvbXBvbmVudDogc3RyaW5nID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHZhbGlkRmlsZVR5cGVzOiBzdHJpbmdbXSA9IFsnaW1hZ2UvJywgJ2FwcGxpY2F0aW9uL3BkZicsICd0ZXh0L2h0bWwnLCAndGV4dC94bWwnLCAnYXBwbGljYXRpb24veG1sJywgJ3RleHQvcGxhaW4nXTtcclxuICBASW5wdXQoKSB0YW1hbmhvTWF4aW1vUGVybWl0aWRvOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBpbmNsdWRlT2ZmaWNlVHlwZXM6IGJvb2xlYW4gPSBmYWxzZTsgLy8gUHJvcHJpZWRhZGUgcGFyYSBjb250cm9sYXIgb3MgdGlwb3MgZGUgT2ZmaWNlXHJcblxyXG4gIG1heFNpemVGaWxlID0gaW5wdXQ8bnVtYmVyPigxMClcclxuXHJcbiAgQE91dHB1dCgpIGZpbGVFbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVtb3ZlRmlsZUVtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VXBsb2FkJykgaW5wdXRVcGxvYWQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UpIHsgfVxyXG5cclxuICBvbkZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgdmFsaWRUeXBlcyA9IFsuLi50aGlzLnZhbGlkRmlsZVR5cGVzXTtcclxuXHJcbiAgICBpZiAodGhpcy5pbmNsdWRlT2ZmaWNlVHlwZXMpIHtcclxuXHJcbiAgICAgIHZhbGlkVHlwZXMucHVzaChcclxuICAgICAgICAnYXBwbGljYXRpb24vbXN3b3JkJywgLy8gLmRvY1xyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsIC8vIC5kb2N4XHJcbiAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywgLy8gLnBwdFxyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJyAvLyAucHB0eFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoID09IDApIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBpc1ZhbGlkRmlsZVR5cGUgPSB2YWxpZFR5cGVzLnNvbWUodHlwZSA9PiBldmVudC50YXJnZXQuZmlsZXNbMF0udHlwZS5zdGFydHNXaXRoKHR5cGUpIHx8XHJcbiAgICAgICh0eXBlID09PSAnYXBwbGljYXRpb24veG1sJyAmJiBldmVudC50YXJnZXQuZmlsZXNbMF0udHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3htbCcpIHx8XHJcbiAgICAgICh0eXBlID09PSAndGV4dC94bWwnICYmIGV2ZW50LnRhcmdldC5maWxlc1swXS50eXBlID09PSAndGV4dC94bWwnKVxyXG4gICAgKTtcclxuICAgIGlmICghaXNWYWxpZEZpbGVUeXBlKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdEVycm9yKCdUaXBvIGRlIGFycXVpdm8gaW52w6FsaWRvJyk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMuZm9ybUNvbnRyb2xOYW1lXS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMuZm9ybUNvbnRyb2xOYW1lXS5zZXRWYWx1ZShldmVudC50YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgdGhpcy5maWxlRW1pdC5lbWl0KGV2ZW50LnRhcmdldC5maWxlc1swXSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaWxlKCkge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5yZW1vdmVGaWxlRW1pdC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvLyByZXR1cm5NYlNpemUgPSBjb21wdXRlZCgoKSA9PiAoYnl0ZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgaWYgKGJ5dGVzID09PSBudWxsIHx8IGJ5dGVzID09PSB1bmRlZmluZWQpIHtcclxuICAvLyAgICAgcmV0dXJuICcwIE1CJztcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBjb25zdCBtYlNpemUgPSBieXRlcyAvICgxMDI0ICogMTAyNCk7XHJcbiAgICBcclxuICAvLyAgIHJldHVybiB0aGlzLmZvcm1hdEJ5dGVzKG1iU2l6ZSwgMik7XHJcbiAgLy8gfSk7XHJcblxyXG4gIHByb2dyZXNzVmFsdWUgPSBjb21wdXRlZCgoKSA9PiAoYnl0ZXM6IGFueSkgPT4ge1xyXG4gICAgaWYgKGJ5dGVzID09PSBudWxsIHx8IGJ5dGVzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWJTaXplID0gYnl0ZXMgLyAoMTAyNCAqIDEwMjQpO1xyXG4gICAgbGV0IHByb2dyZXNzVmFsdWUgPSAoTnVtYmVyKG1iU2l6ZSkgLyB0aGlzLm1heFNpemVGaWxlKCkpICogMTAwO1xyXG5cclxuICAgIC8vIExpbWl0YSBvIHZhbG9yIGRvIHByb2dyZXNzbyBlbnRyZSAwIGUgMTAwXHJcbiAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgocHJvZ3Jlc3NWYWx1ZSwgMCksIDEwMCk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVyblByb2dyZXNzTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAoYnl0ZXM6IGFueSkgPT4ge1xyXG4gICAgaWYgKGJ5dGVzID09PSBudWxsIHx8IGJ5dGVzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuICcwIE1CJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtYlNpemUgPSBieXRlcyAvICgxMDI0ICogMTAyNCk7XHJcbiAgICAvLyBsZXQgcHJvZ3Jlc3NWYWx1ZSA9IChOdW1iZXIobWJTaXplKSAvIHRoaXMubWF4U2l6ZUZpbGUoKSkgKiAxMDA7XHJcbiAgICAvLyB0aGlzLnByb2dyZXNzVmFsdWUuc2V0KHByb2dyZXNzVmFsdWUpO1xyXG4gICAgLy8gdGhpcy5wcm9ncmVzc1ZhbHVlLnNldCgobWJTaXplIC8gdGhpcy5tYXhTaXplRmlsZSgpKSoxMDApO1xyXG4gICAgcmV0dXJuIGAke21iU2l6ZS50b0ZpeGVkKDIpfS8ke3RoaXMubWF4U2l6ZUZpbGUoKX0gTUJgO1xyXG4gIH0pXHJcblxyXG4gIGZvcm1hdEJ5dGVzKGJ5dGVzOiBhbnksIGRlY2ltYWxzID0gMikge1xyXG4gICAgaWYgKCFieXRlcykge1xyXG4gICAgICByZXR1cm4gXCIwIEJ5dGVzXCI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrID0gMTAyNDtcclxuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPD0gMCA/IDAgOiBkZWNpbWFscztcclxuICAgIGNvbnN0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XHJcbiAgfVxyXG5cclxuICBhZGREcmFnT3ZlckNsYXNzKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdkcmFnb3ZlcicpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ292ZXInKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbGUoZmlsZTogRmlsZSkge1xyXG5cclxuICAgIGlmICh0aGlzLmluY2x1ZGVPZmZpY2VUeXBlcykge1xyXG4gICAgICBsZXQgdmFsaWRUeXBlcyA9IFsuLi50aGlzLnZhbGlkRmlsZVR5cGVzXTtcclxuXHJcbiAgICAgIHZhbGlkVHlwZXMucHVzaChcclxuICAgICAgICAnYXBwbGljYXRpb24vbXN3b3JkJywgLy8gLmRvY1xyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsIC8vIC5kb2N4XHJcbiAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywgLy8gLnBwdFxyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJyAvLyAucHB0eFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlzVmFsaWRGaWxlVHlwZSA9IHRoaXMudmFsaWRGaWxlVHlwZXMuc29tZSh0eXBlID0+XHJcbiAgICAgIGZpbGUudHlwZS5zdGFydHNXaXRoKHR5cGUpIHx8XHJcbiAgICAgIGZpbGUudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3htbCcgfHxcclxuICAgICAgZmlsZS50eXBlID09PSAndGV4dC94bWwnXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghaXNWYWxpZEZpbGVUeXBlKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdEVycm9yKCdUaXBvIGRlIGFycXVpdm8gaW52w6FsaWRvJyk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMuZm9ybUNvbnRyb2xOYW1lXS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMuZm9ybUNvbnRyb2xOYW1lXS5zZXRWYWx1ZShmaWxlKTtcclxuXHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgIGlmIChmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICB9IGVsc2UgaWYgKGZpbGUudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3htbCcgfHwgZmlsZS50eXBlID09PSAndGV4dC94bWwnKSB7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsZUVtaXQuZW1pdChmaWxlKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hZGREcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMucmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5yZW1vdmVEcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuXHJcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsZShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWNjZXB0KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdHlwZXMgPSAnJ1xyXG5cclxuICAgIHRoaXMudmFsaWRGaWxlVHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpIHR5cGVzICs9ICcuanBnLCAucG5nLCAuYm1wLCAnO1xyXG4gICAgICBpZiAodHlwZS5pbmNsdWRlcygnaHRtbCcpKSB0eXBlcyArPSAnLmh0bWwsICc7XHJcbiAgICAgIGlmICh0eXBlLmluY2x1ZGVzKCdwZGYnKSkgdHlwZXMgKz0gJy5wZGYsICc7XHJcbiAgICAgIGlmICh0eXBlLmluY2x1ZGVzKCd4bWwnKSkgdHlwZXMgKz0gJy54bWwsICc7XHJcbiAgICAgIGlmICh0eXBlLmluY2x1ZGVzKCdwbGFpbicpKSB0eXBlcyArPSAnLnR4dCwgJztcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEFkaWNpb25hIHRpcG9zIGRlIGFycXVpdm9zIGRvIE9mZmljZSBzZSBpbmNsdWRlT2ZmaWNlVHlwZXMgZm9yIHRydWVcclxuICAgIGlmICh0aGlzLmluY2x1ZGVPZmZpY2VUeXBlcykge1xyXG4gICAgICB0eXBlcyArPSAnLmRvYywgLmRvY3gsIC5wcHQsIC5wcHR4LCAnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0eXBlcy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSBhIMO6bHRpbWEgdsOtcmd1bGEgZSBlc3Bhw6dvXHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAqbmdJZj1cImZvcm1Hcm91cFwiXHJcbiAgW25nQ2xhc3NdPVwie1xyXG4gICAgJ2ludmFsaWQtYm9yZGVyJzpcclxuICAgICAgZm9ybUdyb3VwICYmXHJcbiAgICAgIGZvcm1Db250cm9sTmFtZSAmJlxyXG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS5pbnZhbGlkICYmXHJcbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnRvdWNoZWRcclxuICB9XCJcclxuICBjbGFzcz1cImJvcmRlci1kYXNoZWQgYm9yZGVyLTIgYm9yZGVyLXJvdW5kLWxnIGJvcmRlci1ncmF5LTQwMCBmbGV4IGp1c3RpZnktY29udGVudC1lbmQgcmVsYXRpdmUgcC0yXCJcclxuICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcclxuICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxyXG4gIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcclxuICBbc3R5bGUubWluV2lkdGhdPVwiJzIwcmVtJ1wiXHJcbiAgW3N0eWxlLm1pbkhlaWdodF09XCInMTByZW0nXCJcclxuICBbc3R5bGUud2lkdGhdPVwid2lkdGhDb21wb25lbnRcIlxyXG4gIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0Q29tcG9uZW50XCJcclxuPlxyXG4gIEBpZihmb3JtR3JvdXAgJiYgZm9ybUNvbnRyb2xOYW1lICYmIGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnZhbHVlKVxyXG4gIHtcclxuICA8YnV0dG9uXHJcbiAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50XCJcclxuICAgIHBCdXR0b25cclxuICAgIChjbGljayk9XCJkZWxldGVGaWxlKClcIlxyXG4gICAgY2xhc3M9XCJhYnNvbHV0ZSB0cmFuc2l0aW9uLWNvbG9ycyB0cmFuc2l0aW9uLWR1cmF0aW9uLTUwMCB0ZXh0LXJlZC03MDAgaG92ZXI6dGV4dC1yZWQtNTAwIG0tMSBoLTJyZW0gdy0ycmVtXCJcclxuICAgIFt0ZXh0XT1cInRydWVcIlxyXG4gICAgW2ljb25dPVwiJ3BpIHBpLXRyYXNoJ1wiXHJcbiAgPjwvYnV0dG9uPlxyXG4gIH1cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImNvbC0xMiBmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidy1mdWxsIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGNvbC0xMlwiXHJcbiAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWUgPyAnbm9uZScgOiAnZmxleCdcIlxyXG4gICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxyXG4gICAgPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAjZmlsZUlucHV0XHJcbiAgICAgICAgW2FjY2VwdF09XCJzZXRBY2NlcHQoKVwiXHJcbiAgICAgICAgaGlkZGVuXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICBAaWYoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJlxyXG4gICAgICAhZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWUpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICA8IS0tIEBpZih0YW1hbmhvTWF4aW1vUGVybWl0aWRvKSB7XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidy1mdWxsIHRleHQtc3RhcnRcIj5UYW1hbmhvIG1heGltbyBwZXJtaXRpZG8gKCB7e3RhbWFuaG9NYXhpbW9QZXJtaXRpZG99fSApKjwvcD5cclxuICAgICAgICAgIH0gLS0+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtdC0yIHRleHQtZ3JheS03MDBcIlxyXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDIuNXJlbVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgY2xvdWRfdXBsb2FkXHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICBAaWYoZGVzY3JpcHRpb24pIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtY2VudGVyIHRleHQtc20gdGV4dC1ncmF5LTYwMFwiPlxyXG4gICAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWNlbnRlciB0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj5cclxuICAgICAgICAgIEFycmFzdGUgZSBzb2x0ZSBvIGFycXVpdm8gYXF1aSwgb3U8YnIgLz5jbGlxdWUgcGFyYSBzZWxlY2lvbsOhLWxvXHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS52YWx1ZSkge1xyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWJldHdlZW4gaC1mdWxsIHctZnVsbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTkgcC0wIHB0LTFcIj5cclxuICAgICAgICA8a3YtcHJvZ3Jlc3MtYmFyXHJcbiAgICAgICAgICBbdmFsdWVdPVwiXHJcbiAgICAgICAgICAgIHByb2dyZXNzVmFsdWUoKShmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS52YWx1ZT8uc2l6ZSlcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbc2hvd1ZhbHVlXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtiYXJTdHlsZUNsYXNzXT1cIlxyXG4gICAgICAgICAgICBwcm9ncmVzc1ZhbHVlKCkoZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWU/LnNpemUpID09XHJcbiAgICAgICAgICAgIDEwMFxyXG4gICAgICAgICAgICAgID8gJ2JnLXJlZC00MDAnXHJcbiAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtsYWJlbF09XCJcclxuICAgICAgICAgICAgcmV0dXJuUHJvZ3Jlc3NMYWJlbCgpKFxyXG4gICAgICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnZhbHVlPy5zaXplXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPjwva3YtcHJvZ3Jlc3MtYmFyPlxyXG5cclxuICAgICAgICBAaWYocHJvZ3Jlc3NWYWx1ZSgpKGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnZhbHVlPy5zaXplKSA9PVxyXG4gICAgICAgIDEwMCkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNjAwIHRleHQteHNcIj5UYW1hbmhvIG3DoXhpbW8gZXhjZWRpZG8uPC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1ncmF5LTYwMCB0ZXh0LXhzXCJcclxuICAgICAgICAgID5BcnF1aXZvIFNlbGVjaW9uYWRvOjwvc3BhblxyXG4gICAgICAgID5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTYwMCB0ZXh0LXhzXCI+e3tcclxuICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWU/Lm5hbWVcclxuICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJcclxuICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgcHJvZ3Jlc3NWYWx1ZSgpKFxyXG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWU/LnNpemVcclxuICAgICAgICAgICAgICApID09IDEwMFxyXG4gICAgICAgICAgICAgICAgPyAndGV4dC1yZWQtNjAwJ1xyXG4gICAgICAgICAgICAgICAgOiAndGV4dC1ncmVlbi02MDAnXHJcbiAgICAgICAgICAgIH19IFxyXG4gICAgICAgICAgIHRleHQteHNcIlxyXG4gICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICBmb3JtYXRCeXRlcyhmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS52YWx1ZT8uc2l6ZSlcclxuICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5AaWYgKGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0uaW52YWxpZFxyXG4mJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS50b3VjaGVkKSB7XHJcbjxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkNhbXBvIG9icmlnYXTDs3JpbzwvcD5cclxufVxyXG4iXX0=
@@ -1,18 +1,23 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { KvFileUploadComponent } from './kv-file-upload.component';
4
+ import { KvProgressBarModule } from "../kv-progress-bar/kv-progress-bar.module";
5
+ import { ButtonModule } from 'primeng/button';
4
6
  import * as i0 from "@angular/core";
5
7
  export class KvFileUploadModule {
6
8
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadModule, declarations: [KvFileUploadComponent], imports: [CommonModule], exports: [KvFileUploadComponent] }); }
8
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadModule, imports: [CommonModule] }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadModule, declarations: [KvFileUploadComponent], imports: [CommonModule,
10
+ KvProgressBarModule, ButtonModule], exports: [KvFileUploadComponent] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadModule, imports: [CommonModule,
12
+ KvProgressBarModule, ButtonModule] }); }
9
13
  }
10
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadModule, decorators: [{
11
15
  type: NgModule,
12
16
  args: [{
13
17
  declarations: [KvFileUploadComponent],
14
- imports: [CommonModule],
18
+ imports: [CommonModule,
19
+ KvProgressBarModule, ButtonModule],
15
20
  exports: [KvFileUploadComponent]
16
21
  }]
17
22
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU9uRSxNQUFNLE9BQU8sa0JBQWtCOzhHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQixpQkFKZCxxQkFBcUIsYUFDMUIsWUFBWSxhQUNaLHFCQUFxQjsrR0FFcEIsa0JBQWtCLFlBSG5CLFlBQVk7OzJGQUdYLGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBLdkZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL2t2LWZpbGUtdXBsb2FkLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0t2RmlsZVVwbG9hZENvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgZXhwb3J0czogW0t2RmlsZVVwbG9hZENvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RmlsZVVwbG9hZE1vZHVsZSB7IH1cclxuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFROUMsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsaUJBTGQscUJBQXFCLGFBQzFCLFlBQVk7WUFDcEIsbUJBQW1CLEVBQUUsWUFBWSxhQUN6QixxQkFBcUI7K0dBRXBCLGtCQUFrQixZQUpuQixZQUFZO1lBQ3BCLG1CQUFtQixFQUFFLFlBQVk7OzJGQUd4QixrQkFBa0I7a0JBTjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLFlBQVk7d0JBQ3BCLG1CQUFtQixFQUFFLFlBQVksQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgS3ZGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9rdi1maWxlLXVwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBLdlByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSBcIi4uL2t2LXByb2dyZXNzLWJhci9rdi1wcm9ncmVzcy1iYXIubW9kdWxlXCI7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbS3ZGaWxlVXBsb2FkQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFxyXG4gICAgS3ZQcm9ncmVzc0Jhck1vZHVsZSwgQnV0dG9uTW9kdWxlXSxcclxuICBleHBvcnRzOiBbS3ZGaWxlVXBsb2FkQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZGaWxlVXBsb2FkTW9kdWxlIHsgfVxyXG4iXX0=
@@ -6,6 +6,8 @@ export class KvFilterCardsComponent {
6
6
  constructor() {
7
7
  // Lista de cards de filtro, cada um com um ícone e valor específico
8
8
  this.cards = input();
9
+ this.staticCards = input(false);
10
+ this.cursorPointer = input(true);
9
11
  //Propiedade para armazenar os cards selecionados
10
12
  this.selectedCards = model([]);
11
13
  this.loadingCards = input(false);
@@ -41,12 +43,34 @@ export class KvFilterCardsComponent {
41
43
  verificarSeCardEstaSelecionado(card) {
42
44
  return this.selectedCards()?.find(c => c.id === card.id) !== undefined;
43
45
  }
46
+ getColorFillPolygon(card) {
47
+ if (this.staticCards()) {
48
+ return 'var(--main-color)';
49
+ }
50
+ if (!this.selectedCards()?.includes(card)) {
51
+ return 'color-mix(in srgb, var(--mixed-color) 20%, white 80%)';
52
+ }
53
+ else {
54
+ return 'var(--main-color)';
55
+ }
56
+ }
57
+ getColorIconPolygon(card) {
58
+ if (this.staticCards()) {
59
+ return 'white';
60
+ }
61
+ if (!this.selectedCards()?.includes(card)) {
62
+ return 'var(--main-color)';
63
+ }
64
+ else {
65
+ return 'white';
66
+ }
67
+ }
44
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFilterCardsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvFilterCardsComponent, selector: "kv-filter-cards", inputs: { cards: { classPropertyName: "cards", publicName: "cards", isSignal: true, isRequired: false, transformFunction: null }, selectedCards: { classPropertyName: "selectedCards", publicName: "selectedCards", isSignal: true, isRequired: false, transformFunction: null }, loadingCards: { classPropertyName: "loadingCards", publicName: "loadingCards", isSignal: true, isRequired: false, transformFunction: null }, wrapCards: { classPropertyName: "wrapCards", publicName: "wrapCards", isSignal: true, isRequired: false, transformFunction: null }, alignCardsCenter: { classPropertyName: "alignCardsCenter", publicName: "alignCardsCenter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedCards: "selectedCardsChange", onCardClick: "onCardClick" }, ngImport: i0, template: "\r\n<div\r\n id=\"filter-card-container\"\r\n class=\"flex flex-row w-full justify-content-between\"\r\n>\r\n <div \r\n class=\"flex p-fluid formgrid w-full gap-1 px-3 py-1\"\r\n [ngClass]=\"[\r\n wrapCards() ? 'flex-wrap' : 'flex-nowrap overflow-x-auto',\r\n alignCardsCenter() ? 'justify-content-center' : 'justify-content-start' \r\n ]\"\r\n #filterCardsContainer\r\n >\r\n @for (card of cards(); track card.id) {\r\n <div \r\n (click)=\"handleCardClick(card)\"\r\n [style.--main-color]=\"color()(card)\" \r\n [style.--mixed-color]=\"mixedColor()(card)\" \r\n class=\"filter-card\"\r\n [ngClass]=\"[\r\n 'filter-card-size',\r\n verificarSeCardEstaSelecionado(card) ? 'filter-card-active' : 'clickable'\r\n ]\"\r\n >\r\n <div class=\"filter-card-content\">\r\n <div class=\"filter-card-title\">\r\n\r\n @if (card.icon) {\r\n\r\n <div class=\"hex-icon-svg\">\r\n <svg style=\"overflow: visible;\" viewBox=\"0 0 100 100\" class=\"hex-bg\">\r\n <polygon\r\n [attr.fill]=\"!selectedCards()?.includes(card) ? 'color-mix(in srgb, var(--mixed-color) 20%, white 80%)' : 'var(--main-color)'\"\r\n points=\"93.3 75,50 100,6.7 75,6.7 25,50 0,93.3 25\" stroke=\"var(--main-color)\" stroke-width=\"3\"\r\n stroke-linejoin=\"round\" stroke-linecap=\"round\" opacity=\"0.8\" />\r\n </svg>\r\n\r\n <span [style.color]=\"!selectedCards()?.includes(card) ? 'var(--main-color)' : 'white'\"\r\n class=\"material-symbols-outlined icon\">\r\n {{ card?.icon }}\r\n </span>\r\n\r\n </div>\r\n\r\n }\r\n\r\n <div style=\"font-weight: bold; font-size: .825em; color: #414141;\">{{ card?.titulo }}</div>\r\n </div>\r\n\r\n @if(loadingCards()){\r\n \r\n <span class=\"loading-spinner\"></span>\r\n\r\n }@else {\r\n\r\n <div \r\n class=\"flex align-items-center\" \r\n [style.color]=\"color()(card)\"\r\n style=\"font-size: 1.25em; font-weight: bold; min-height: 1.875rem\"\r\n >\r\n {{ card.valor | kvFilterCardsFormatter:card.formato}}\r\n </div>\r\n\r\n }\r\n\r\n\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.card,.card-disabled,.filter-card-active{transition:border .3s ease,background-color .3s ease;border:1px solid #CBD5E1}.filter-card{transition:all ease-in-out .1s;border:1px solid #CBD5E1;border-radius:1rem;cursor:pointer;-webkit-user-select:none;user-select:none}.filter-card:hover{background:#f8fafc;transform:scale(1.01);border:var(--main-color) .5px solid}.filter-card:active{background:#f8fafc;border:var(--main-color) .5px solid}.filter-card-active{border:var(--main-color) .5px solid;background-color:color-mix(in srgb,var(--mixed-color) 20%,white 80%)}p{font-size:.75rem}.select-none{-webkit-user-select:none;user-select:none}.filter-card-content{display:flex;flex-direction:row;align-items:center;padding:.4rem .6rem .4rem .5rem;gap:.5rem}.filter-card-title{flex:1 1 0%;display:flex;flex-direction:row;align-items:center;gap:.4rem}.hex-icon-svg{position:relative;width:2rem;height:2rem;font-size:2rem}.hex-icon-svg .hex-bg{width:100%;height:100%}.hex-icon-svg .icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--main-color);font-size:24px;pointer-events:none}.icon{font-weight:500!important;font-size:.65em!important}div.filter-card:hover .hex-icon-svg>svg>polygon{fill:var(--mixed-color)}polygon{transition:all ease-in-out .1s}#filter-card-container{container:filter-card-container/inline-size}.filter-card-size{flex:1 1 auto;padding:0 .25rem;min-width:170px;box-sizing:border-box}@container filter-card-container (min-width: 360px){.filter-card-size{width:50%}}@container filter-card-container (min-width: 600px){.filter-card-size{width:33.3333%}}@container filter-card-container (min-width: 900px){.filter-card-size{width:25%}}@container filter-card-container (min-width: 1200px){.filter-card-size{width:16.6667%}}@container filter-card-container (min-width: 1500px){.filter-card-size{width:14.2857%}}@media (min-width: 360px){.filter-card-size{width:50%}}@media (min-width: 600px){.filter-card-size{width:33.3333%}}@media (min-width: 900px){.filter-card-size{width:25%}}@media (min-width: 1200px){.filter-card-size{width:16.6667%}}@media (min-width: 1500px){.filter-card-size{width:14.2857%}}.flex-nowrap.overflow-x-auto{overflow-x:auto;scrollbar-width:thin}.flex-wrap .filter-card-size{flex:1 1 auto}.loading-spinner{width:1.5rem;height:1.5rem;border:2px solid var(--main-color);border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation .8s linear infinite}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2.KvFilterCardsFormatterPipe, name: "kvFilterCardsFormatter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvFilterCardsComponent, selector: "kv-filter-cards", inputs: { cards: { classPropertyName: "cards", publicName: "cards", isSignal: true, isRequired: false, transformFunction: null }, staticCards: { classPropertyName: "staticCards", publicName: "staticCards", isSignal: true, isRequired: false, transformFunction: null }, cursorPointer: { classPropertyName: "cursorPointer", publicName: "cursorPointer", isSignal: true, isRequired: false, transformFunction: null }, selectedCards: { classPropertyName: "selectedCards", publicName: "selectedCards", isSignal: true, isRequired: false, transformFunction: null }, loadingCards: { classPropertyName: "loadingCards", publicName: "loadingCards", isSignal: true, isRequired: false, transformFunction: null }, wrapCards: { classPropertyName: "wrapCards", publicName: "wrapCards", isSignal: true, isRequired: false, transformFunction: null }, alignCardsCenter: { classPropertyName: "alignCardsCenter", publicName: "alignCardsCenter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedCards: "selectedCardsChange", onCardClick: "onCardClick" }, ngImport: i0, template: "<div \r\n id=\"filter-card-container\" \r\n class=\"flex flex-row w-full justify-content-between\"\r\n>\r\n <div \r\n class=\"flex p-fluid formgrid w-full gap-1 px-3 py-1\" \r\n [ngClass]=\"[\r\n wrapCards() ? 'flex-wrap' : 'flex-nowrap overflow-x-auto',\r\n alignCardsCenter() ? 'justify-content-center' : 'justify-content-start' \r\n ]\" \r\n #filterCardsContainer\r\n >\r\n\r\n @for (card of cards(); track card.id) {\r\n \r\n <div \r\n (click)=\"handleCardClick(card)\" \r\n [style.--main-color]=\"color()(card)\" \r\n [style.--mixed-color]=\"mixedColor()(card)\"\r\n class=\"filter-card\" \r\n\r\n [ngClass]=\"[\r\n 'filter-card-size',\r\n verificarSeCardEstaSelecionado(card) ? 'filter-card-active' : 'clickable',\r\n staticCards() ? 'filter-card-active' : '',\r\n !staticCards() && !verificarSeCardEstaSelecionado(card) ? 'filter-card-hover' : '',\r\n cursorPointer() ? 'cursor-pointer' : '',\r\n\r\n ]\"\r\n >\r\n\r\n <div class=\"filter-card-content\">\r\n\r\n <div class=\"filter-card-title\">\r\n\r\n @if (card.icon) {\r\n\r\n <div class=\"hex-icon-svg\">\r\n <svg style=\"overflow: visible;\" viewBox=\"0 0 100 100\" class=\"hex-bg\">\r\n <polygon\r\n [attr.fill]=\"getColorFillPolygon(card)\"\r\n points=\"93.3 75,50 100,6.7 75,6.7 25,50 0,93.3 25\" \r\n stroke=\"var(--main-color)\" \r\n stroke-width=\"3\"\r\n stroke-linejoin=\"round\" \r\n stroke-linecap=\"round\" \r\n opacity=\"0.8\" \r\n />\r\n </svg>\r\n\r\n <span [style.color]=\"getColorIconPolygon(card)\"\r\n class=\"material-symbols-outlined icon\">\r\n {{ card?.icon }}\r\n </span>\r\n\r\n </div>\r\n\r\n }\r\n\r\n <div style=\"font-weight: bold; font-size: .825em; color: #414141;\">{{ card?.titulo }}</div>\r\n \r\n </div>\r\n\r\n @if(loadingCards()){\r\n\r\n <span class=\"loading-spinner\"></span>\r\n\r\n }@else {\r\n\r\n <div class=\"flex align-items-center\" [style.color]=\"color()(card)\"\r\n style=\"font-size: 1.25em; font-weight: bold; min-height: 1.875rem\">\r\n {{ card.valor | kvFilterCardsFormatter:card.formato}}\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";.card,.card-disabled,.filter-card-active{transition:border .3s ease,background-color .3s ease;border:1px solid #CBD5E1}.filter-card{transition:all ease-in-out .1s;border:1px solid #CBD5E1;border-radius:1rem;-webkit-user-select:none;user-select:none}.filter-card-hover:hover{background:#f8fafc;transform:scale(1.01);border:var(--main-color) .5px solid}.filter-card-hover:active{background:#f8fafc;border:var(--main-color) .5px solid}.filter-card-active{border:var(--main-color) .5px solid;background-color:color-mix(in srgb,var(--mixed-color) 20%,white 80%)}p{font-size:.75rem}.select-none{-webkit-user-select:none;user-select:none}.filter-card-content{display:flex;flex-direction:row;align-items:center;padding:.4rem .6rem .4rem .5rem;gap:.5rem}.filter-card-title{flex:1 1 0%;display:flex;flex-direction:row;align-items:center;gap:.4rem}.hex-icon-svg{position:relative;width:2rem;height:2rem;font-size:2rem}.hex-icon-svg .hex-bg{width:100%;height:100%}.hex-icon-svg .icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--main-color);font-size:24px;pointer-events:none}.icon{font-weight:500!important;font-size:.65em!important}div.filter-card-hover:hover .hex-icon-svg>svg>polygon{fill:var(--mixed-color)}polygon{transition:all ease-in-out .1s}#filter-card-container{container:filter-card-container/inline-size}.filter-card-size{flex:1 1 auto;padding:0 .25rem;min-width:170px;box-sizing:border-box}@container filter-card-container (min-width: 360px){.filter-card-size{width:50%}}@container filter-card-container (min-width: 600px){.filter-card-size{width:33.3333%}}@container filter-card-container (min-width: 900px){.filter-card-size{width:25%}}@container filter-card-container (min-width: 1200px){.filter-card-size{width:16.6667%}}@container filter-card-container (min-width: 1500px){.filter-card-size{width:14.2857%}}@media (min-width: 360px){.filter-card-size{width:50%}}@media (min-width: 600px){.filter-card-size{width:33.3333%}}@media (min-width: 900px){.filter-card-size{width:25%}}@media (min-width: 1200px){.filter-card-size{width:16.6667%}}@media (min-width: 1500px){.filter-card-size{width:14.2857%}}.flex-nowrap.overflow-x-auto{overflow-x:auto;scrollbar-width:thin}.flex-wrap .filter-card-size{flex:1 1 auto}.loading-spinner{width:1.5rem;height:1.5rem;border:2px solid var(--main-color);border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation .8s linear infinite}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2.KvFilterCardsFormatterPipe, name: "kvFilterCardsFormatter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
70
  }
47
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFilterCardsComponent, decorators: [{
48
72
  type: Component,
49
- args: [{ selector: 'kv-filter-cards', changeDetection: ChangeDetectionStrategy.OnPush, template: "\r\n<div\r\n id=\"filter-card-container\"\r\n class=\"flex flex-row w-full justify-content-between\"\r\n>\r\n <div \r\n class=\"flex p-fluid formgrid w-full gap-1 px-3 py-1\"\r\n [ngClass]=\"[\r\n wrapCards() ? 'flex-wrap' : 'flex-nowrap overflow-x-auto',\r\n alignCardsCenter() ? 'justify-content-center' : 'justify-content-start' \r\n ]\"\r\n #filterCardsContainer\r\n >\r\n @for (card of cards(); track card.id) {\r\n <div \r\n (click)=\"handleCardClick(card)\"\r\n [style.--main-color]=\"color()(card)\" \r\n [style.--mixed-color]=\"mixedColor()(card)\" \r\n class=\"filter-card\"\r\n [ngClass]=\"[\r\n 'filter-card-size',\r\n verificarSeCardEstaSelecionado(card) ? 'filter-card-active' : 'clickable'\r\n ]\"\r\n >\r\n <div class=\"filter-card-content\">\r\n <div class=\"filter-card-title\">\r\n\r\n @if (card.icon) {\r\n\r\n <div class=\"hex-icon-svg\">\r\n <svg style=\"overflow: visible;\" viewBox=\"0 0 100 100\" class=\"hex-bg\">\r\n <polygon\r\n [attr.fill]=\"!selectedCards()?.includes(card) ? 'color-mix(in srgb, var(--mixed-color) 20%, white 80%)' : 'var(--main-color)'\"\r\n points=\"93.3 75,50 100,6.7 75,6.7 25,50 0,93.3 25\" stroke=\"var(--main-color)\" stroke-width=\"3\"\r\n stroke-linejoin=\"round\" stroke-linecap=\"round\" opacity=\"0.8\" />\r\n </svg>\r\n\r\n <span [style.color]=\"!selectedCards()?.includes(card) ? 'var(--main-color)' : 'white'\"\r\n class=\"material-symbols-outlined icon\">\r\n {{ card?.icon }}\r\n </span>\r\n\r\n </div>\r\n\r\n }\r\n\r\n <div style=\"font-weight: bold; font-size: .825em; color: #414141;\">{{ card?.titulo }}</div>\r\n </div>\r\n\r\n @if(loadingCards()){\r\n \r\n <span class=\"loading-spinner\"></span>\r\n\r\n }@else {\r\n\r\n <div \r\n class=\"flex align-items-center\" \r\n [style.color]=\"color()(card)\"\r\n style=\"font-size: 1.25em; font-weight: bold; min-height: 1.875rem\"\r\n >\r\n {{ card.valor | kvFilterCardsFormatter:card.formato}}\r\n </div>\r\n\r\n }\r\n\r\n\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.card,.card-disabled,.filter-card-active{transition:border .3s ease,background-color .3s ease;border:1px solid #CBD5E1}.filter-card{transition:all ease-in-out .1s;border:1px solid #CBD5E1;border-radius:1rem;cursor:pointer;-webkit-user-select:none;user-select:none}.filter-card:hover{background:#f8fafc;transform:scale(1.01);border:var(--main-color) .5px solid}.filter-card:active{background:#f8fafc;border:var(--main-color) .5px solid}.filter-card-active{border:var(--main-color) .5px solid;background-color:color-mix(in srgb,var(--mixed-color) 20%,white 80%)}p{font-size:.75rem}.select-none{-webkit-user-select:none;user-select:none}.filter-card-content{display:flex;flex-direction:row;align-items:center;padding:.4rem .6rem .4rem .5rem;gap:.5rem}.filter-card-title{flex:1 1 0%;display:flex;flex-direction:row;align-items:center;gap:.4rem}.hex-icon-svg{position:relative;width:2rem;height:2rem;font-size:2rem}.hex-icon-svg .hex-bg{width:100%;height:100%}.hex-icon-svg .icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--main-color);font-size:24px;pointer-events:none}.icon{font-weight:500!important;font-size:.65em!important}div.filter-card:hover .hex-icon-svg>svg>polygon{fill:var(--mixed-color)}polygon{transition:all ease-in-out .1s}#filter-card-container{container:filter-card-container/inline-size}.filter-card-size{flex:1 1 auto;padding:0 .25rem;min-width:170px;box-sizing:border-box}@container filter-card-container (min-width: 360px){.filter-card-size{width:50%}}@container filter-card-container (min-width: 600px){.filter-card-size{width:33.3333%}}@container filter-card-container (min-width: 900px){.filter-card-size{width:25%}}@container filter-card-container (min-width: 1200px){.filter-card-size{width:16.6667%}}@container filter-card-container (min-width: 1500px){.filter-card-size{width:14.2857%}}@media (min-width: 360px){.filter-card-size{width:50%}}@media (min-width: 600px){.filter-card-size{width:33.3333%}}@media (min-width: 900px){.filter-card-size{width:25%}}@media (min-width: 1200px){.filter-card-size{width:16.6667%}}@media (min-width: 1500px){.filter-card-size{width:14.2857%}}.flex-nowrap.overflow-x-auto{overflow-x:auto;scrollbar-width:thin}.flex-wrap .filter-card-size{flex:1 1 auto}.loading-spinner{width:1.5rem;height:1.5rem;border:2px solid var(--main-color);border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation .8s linear infinite}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
73
+ args: [{ selector: 'kv-filter-cards', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div \r\n id=\"filter-card-container\" \r\n class=\"flex flex-row w-full justify-content-between\"\r\n>\r\n <div \r\n class=\"flex p-fluid formgrid w-full gap-1 px-3 py-1\" \r\n [ngClass]=\"[\r\n wrapCards() ? 'flex-wrap' : 'flex-nowrap overflow-x-auto',\r\n alignCardsCenter() ? 'justify-content-center' : 'justify-content-start' \r\n ]\" \r\n #filterCardsContainer\r\n >\r\n\r\n @for (card of cards(); track card.id) {\r\n \r\n <div \r\n (click)=\"handleCardClick(card)\" \r\n [style.--main-color]=\"color()(card)\" \r\n [style.--mixed-color]=\"mixedColor()(card)\"\r\n class=\"filter-card\" \r\n\r\n [ngClass]=\"[\r\n 'filter-card-size',\r\n verificarSeCardEstaSelecionado(card) ? 'filter-card-active' : 'clickable',\r\n staticCards() ? 'filter-card-active' : '',\r\n !staticCards() && !verificarSeCardEstaSelecionado(card) ? 'filter-card-hover' : '',\r\n cursorPointer() ? 'cursor-pointer' : '',\r\n\r\n ]\"\r\n >\r\n\r\n <div class=\"filter-card-content\">\r\n\r\n <div class=\"filter-card-title\">\r\n\r\n @if (card.icon) {\r\n\r\n <div class=\"hex-icon-svg\">\r\n <svg style=\"overflow: visible;\" viewBox=\"0 0 100 100\" class=\"hex-bg\">\r\n <polygon\r\n [attr.fill]=\"getColorFillPolygon(card)\"\r\n points=\"93.3 75,50 100,6.7 75,6.7 25,50 0,93.3 25\" \r\n stroke=\"var(--main-color)\" \r\n stroke-width=\"3\"\r\n stroke-linejoin=\"round\" \r\n stroke-linecap=\"round\" \r\n opacity=\"0.8\" \r\n />\r\n </svg>\r\n\r\n <span [style.color]=\"getColorIconPolygon(card)\"\r\n class=\"material-symbols-outlined icon\">\r\n {{ card?.icon }}\r\n </span>\r\n\r\n </div>\r\n\r\n }\r\n\r\n <div style=\"font-weight: bold; font-size: .825em; color: #414141;\">{{ card?.titulo }}</div>\r\n \r\n </div>\r\n\r\n @if(loadingCards()){\r\n\r\n <span class=\"loading-spinner\"></span>\r\n\r\n }@else {\r\n\r\n <div class=\"flex align-items-center\" [style.color]=\"color()(card)\"\r\n style=\"font-size: 1.25em; font-weight: bold; min-height: 1.875rem\">\r\n {{ card.valor | kvFilterCardsFormatter:card.formato}}\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";.card,.card-disabled,.filter-card-active{transition:border .3s ease,background-color .3s ease;border:1px solid #CBD5E1}.filter-card{transition:all ease-in-out .1s;border:1px solid #CBD5E1;border-radius:1rem;-webkit-user-select:none;user-select:none}.filter-card-hover:hover{background:#f8fafc;transform:scale(1.01);border:var(--main-color) .5px solid}.filter-card-hover:active{background:#f8fafc;border:var(--main-color) .5px solid}.filter-card-active{border:var(--main-color) .5px solid;background-color:color-mix(in srgb,var(--mixed-color) 20%,white 80%)}p{font-size:.75rem}.select-none{-webkit-user-select:none;user-select:none}.filter-card-content{display:flex;flex-direction:row;align-items:center;padding:.4rem .6rem .4rem .5rem;gap:.5rem}.filter-card-title{flex:1 1 0%;display:flex;flex-direction:row;align-items:center;gap:.4rem}.hex-icon-svg{position:relative;width:2rem;height:2rem;font-size:2rem}.hex-icon-svg .hex-bg{width:100%;height:100%}.hex-icon-svg .icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--main-color);font-size:24px;pointer-events:none}.icon{font-weight:500!important;font-size:.65em!important}div.filter-card-hover:hover .hex-icon-svg>svg>polygon{fill:var(--mixed-color)}polygon{transition:all ease-in-out .1s}#filter-card-container{container:filter-card-container/inline-size}.filter-card-size{flex:1 1 auto;padding:0 .25rem;min-width:170px;box-sizing:border-box}@container filter-card-container (min-width: 360px){.filter-card-size{width:50%}}@container filter-card-container (min-width: 600px){.filter-card-size{width:33.3333%}}@container filter-card-container (min-width: 900px){.filter-card-size{width:25%}}@container filter-card-container (min-width: 1200px){.filter-card-size{width:16.6667%}}@container filter-card-container (min-width: 1500px){.filter-card-size{width:14.2857%}}@media (min-width: 360px){.filter-card-size{width:50%}}@media (min-width: 600px){.filter-card-size{width:33.3333%}}@media (min-width: 900px){.filter-card-size{width:25%}}@media (min-width: 1200px){.filter-card-size{width:16.6667%}}@media (min-width: 1500px){.filter-card-size{width:14.2857%}}.flex-nowrap.overflow-x-auto{overflow-x:auto;scrollbar-width:thin}.flex-wrap .filter-card-size{flex:1 1 auto}.loading-spinner{width:1.5rem;height:1.5rem;border:2px solid var(--main-color);border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation .8s linear infinite}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
50
74
  }] });
51
75
  export const mapaSeverityColors = {
52
76
  primary: '#0A8765', // Verde
@@ -56,4 +80,4 @@ export const mapaSeverityColors = {
56
80
  warning: '#E1963D', // Amarelo
57
81
  danger: '#F15A24', // Laranja
58
82
  };
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsdGVyLWNhcmRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWZpbHRlci1jYXJkcy9rdi1maWx0ZXItY2FyZHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsdGVyLWNhcmRzL2t2LWZpbHRlci1jYXJkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQzs7OztBQVEzRyxNQUFNLE9BQU8sc0JBQXNCO0lBTm5DO1FBVUUsb0VBQW9FO1FBQ3BFLFVBQUssR0FBRyxLQUFLLEVBQXdCLENBQUE7UUFFckMsaURBQWlEO1FBQ2pELGtCQUFhLEdBQUcsS0FBSyxDQUF1QixFQUFFLENBQUMsQ0FBQTtRQUUvQyxpQkFBWSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUdyQywrREFBK0Q7UUFDL0QsY0FBUyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVsQyw2Q0FBNkM7UUFDN0MscUJBQWdCLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBR3pDLGdCQUFXLEdBQUcsTUFBTSxFQUFzQixDQUFDO1FBSTNDLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUF3QixFQUFFLEVBQUU7WUFDbEQsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUVILGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUF3QixFQUFFLEVBQUU7WUFDdkQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFDLENBQUM7S0E0Qko7SUF6QlMsaUJBQWlCLENBQUMsT0FBZSxFQUFFLFVBQWtCLEdBQUc7UUFDOUQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLE9BQU8sR0FBRyxDQUFDO0lBQzlDLENBQUM7SUFHRCxlQUFlLENBQUMsSUFBd0I7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUIsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqRCxPQUFPLE1BQU07Z0JBQ1gsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDhCQUE4QixDQUFDLElBQXdCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUN6RSxDQUFDOzhHQXhEVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixvMEJDVG5DLHUyRUF1RUE7OzJGRDlEYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07O0FBa0VqRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBK0I7SUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBSyxRQUFRO0lBQy9CLFNBQVMsRUFBRSxTQUFTLEVBQUcsY0FBYztJQUNyQyxRQUFRLEVBQUUsU0FBUyxFQUFJLFFBQVE7SUFDL0IsSUFBSSxFQUFFLFNBQVMsRUFBUSxhQUFhO0lBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUssVUFBVTtJQUNqQyxNQUFNLEVBQUUsU0FBUyxFQUFNLFVBQVU7Q0FDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgbW9kZWwsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWZpbHRlci1jYXJkcycsXHJcbiAgdGVtcGxhdGVVcmw6IGAuL2t2LWZpbHRlci1jYXJkcy5jb21wb25lbnQuaHRtbGAsXHJcbiAgc3R5bGVVcmw6ICcuL2t2LWZpbHRlci1jYXJkcy5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkZpbHRlckNhcmRzQ29tcG9uZW50IHtcclxuXHJcblxyXG5cclxuICAvLyBMaXN0YSBkZSBjYXJkcyBkZSBmaWx0cm8sIGNhZGEgdW0gY29tIHVtIMOtY29uZSBlIHZhbG9yIGVzcGVjw61maWNvXHJcbiAgY2FyZHMgPSBpbnB1dDxLdkZpbHRlckNhcmRDb25maWdbXT4oKVxyXG5cclxuICAvL1Byb3BpZWRhZGUgcGFyYSBhcm1hemVuYXIgb3MgY2FyZHMgc2VsZWNpb25hZG9zXHJcbiAgc2VsZWN0ZWRDYXJkcyA9IG1vZGVsPEt2RmlsdGVyQ2FyZENvbmZpZ1tdPihbXSlcclxuXHJcbiAgbG9hZGluZ0NhcmRzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHJcbiAgLy8gRGVmaW5lIHNlIG9zIGNhcmRzIGRldmVtIHNlciBleGliaWRvcyBlbSB1bWEgbGluaGEgb3UgY29sdW5hXHJcbiAgd3JhcENhcmRzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvLyBEZWZpbmUgc2Ugb3MgY2FyZHMgZGV2ZW0gc2VyIGNlbnRyYWxpemFkb3NcclxuICBhbGlnbkNhcmRzQ2VudGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHJcbiAgb25DYXJkQ2xpY2sgPSBvdXRwdXQ8S3ZGaWx0ZXJDYXJkQ29uZmlnPigpO1xyXG5cclxuXHJcblxyXG4gIGNvbG9yID0gY29tcHV0ZWQoKCkgPT4gKGNhcmQ6IEt2RmlsdGVyQ2FyZENvbmZpZykgPT4ge1xyXG4gICAgY29uc3QgY29sb3IgPSBtYXBhU2V2ZXJpdHlDb2xvcnNbY2FyZC5zZXZlcml0eV07XHJcbiAgICByZXR1cm4gY29sb3IgPyBjb2xvciA6IG1hcGFTZXZlcml0eUNvbG9ycy5wcmltYXJ5O1xyXG4gIH0pO1xyXG5cclxuICBtaXhlZENvbG9yID0gY29tcHV0ZWQoKCkgPT4gKGNhcmQ6IEt2RmlsdGVyQ2FyZENvbmZpZykgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNwYXJlbnRNaXgodGhpcy5jb2xvcigpKGNhcmQpKVxyXG4gIH0pO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBnZXRUcmFuc3BhcmVudE1peChiYXNlSGV4OiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlciA9IDAuMyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByID0gcGFyc2VJbnQoYmFzZUhleC5zbGljZSgxLCAzKSwgMTYpO1xyXG4gICAgY29uc3QgZyA9IHBhcnNlSW50KGJhc2VIZXguc2xpY2UoMywgNSksIDE2KTtcclxuICAgIGNvbnN0IGIgPSBwYXJzZUludChiYXNlSGV4LnNsaWNlKDUsIDcpLCAxNik7XHJcbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHtvcGFjaXR5fSlgO1xyXG4gIH1cclxuXHJcblxyXG4gIGhhbmRsZUNhcmRDbGljayhjYXJkOiBLdkZpbHRlckNhcmRDb25maWcpIHtcclxuICAgIHRoaXMub25DYXJkQ2xpY2suZW1pdChjYXJkKTtcclxuXHJcbiAgICAvLyBBdHVhbGl6YSBhIGxpc3RhIGRlIHNlbGVjaW9uYWRvczogcmVtb3ZlIHNlIGrDoSBleGlzdGUsIGFkaWNpb25hIHNlIG7Do28gZXhpc3RlXHJcbiAgICB0aGlzLnNlbGVjdGVkQ2FyZHMudXBkYXRlKGNhcmRzID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RlID0gY2FyZHMuc29tZShjID0+IGMuaWQgPT09IGNhcmQuaWQpO1xyXG4gICAgICByZXR1cm4gZXhpc3RlXHJcbiAgICAgICAgPyBjYXJkcy5maWx0ZXIoYyA9PiBjLmlkICE9PSBjYXJkLmlkKVxyXG4gICAgICAgIDogWy4uLmNhcmRzLCBjYXJkXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmVyaWZpY2FyU2VDYXJkRXN0YVNlbGVjaW9uYWRvKGNhcmQ6IEt2RmlsdGVyQ2FyZENvbmZpZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDYXJkcygpPy5maW5kKGMgPT4gYy5pZCA9PT0gY2FyZC5pZCkgIT09IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuXHJcbmV4cG9ydCB0eXBlIEt2U2V2ZXJpdHkgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICd0ZXJ0aWFyeScgfCAnaW5mbycgfCAnd2FybmluZycgfCAnZGFuZ2VyJztcclxuXHJcbmV4cG9ydCBjb25zdCBtYXBhU2V2ZXJpdHlDb2xvcnM6IFJlY29yZDxLdlNldmVyaXR5LCBzdHJpbmc+ID0ge1xyXG4gIHByaW1hcnk6ICcjMEE4NzY1JywgICAgLy8gVmVyZGVcclxuICBzZWNvbmRhcnk6ICcjMEEzQTc4JywgIC8vIEF6dWwgZXNjdXJvXHJcbiAgdGVydGlhcnk6ICcjNzc4NTk5JywgICAvLyBDaW56YVxyXG4gIGluZm86ICcjMDA5MUMyJywgICAgICAgLy8gQXp1bCBjbGFyb1xyXG4gIHdhcm5pbmc6ICcjRTE5NjNEJywgICAgLy8gQW1hcmVsb1xyXG4gIGRhbmdlcjogJyNGMTVBMjQnLCAgICAgLy8gTGFyYW5qYVxyXG59O1xyXG5cclxuXHJcblxyXG5leHBvcnQgdHlwZSBLdkZpbHRlckNhcmRGb3JtYXRvID0gJ2ludCcgfCAnY3VycmVuY3knIHwgJ3BlcmNlbnQnIHwgJ2RlY2ltYWwnIHwgJ3RleHQnIHwgJ2RhdGUnO1xyXG5leHBvcnQgdHlwZSBLdkZpbHRlckNhcmRDb25maWcgPSB7XHJcbiAgICBpZDogbnVtYmVyO1xyXG4gICAgc2V2ZXJpdHk6IEt2U2V2ZXJpdHk7XHJcbiAgICB0aXR1bG86IHN0cmluZztcclxuICAgIGljb246IHN0cmluZztcclxuICAgIHZhbG9yPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcclxuICAgIGZvcm1hdG8/OiBLdkZpbHRlckNhcmRGb3JtYXRvO1xyXG5cclxufSIsIlxyXG48ZGl2XHJcbiAgaWQ9XCJmaWx0ZXItY2FyZC1jb250YWluZXJcIlxyXG4gIGNsYXNzPVwiZmxleCBmbGV4LXJvdyB3LWZ1bGwganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4+XHJcbiAgPGRpdiBcclxuICAgIGNsYXNzPVwiZmxleCBwLWZsdWlkIGZvcm1ncmlkIHctZnVsbCBnYXAtMSBweC0zIHB5LTFcIlxyXG4gICAgW25nQ2xhc3NdPVwiW1xyXG4gICAgICB3cmFwQ2FyZHMoKSA/ICdmbGV4LXdyYXAnIDogJ2ZsZXgtbm93cmFwIG92ZXJmbG93LXgtYXV0bycsXHJcbiAgICAgIGFsaWduQ2FyZHNDZW50ZXIoKSA/ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6ICdqdXN0aWZ5LWNvbnRlbnQtc3RhcnQnICAgIFxyXG4gICAgXVwiXHJcbiAgICAjZmlsdGVyQ2FyZHNDb250YWluZXJcclxuICA+XHJcbiAgICBAZm9yIChjYXJkIG9mIGNhcmRzKCk7IHRyYWNrIGNhcmQuaWQpIHtcclxuICAgICAgPGRpdiBcclxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2FyZENsaWNrKGNhcmQpXCJcclxuICAgICAgICBbc3R5bGUuLS1tYWluLWNvbG9yXT1cImNvbG9yKCkoY2FyZClcIiBcclxuICAgICAgICBbc3R5bGUuLS1taXhlZC1jb2xvcl09XCJtaXhlZENvbG9yKCkoY2FyZClcIiBcclxuICAgICAgICBjbGFzcz1cImZpbHRlci1jYXJkXCJcclxuICAgICAgICBbbmdDbGFzc109XCJbXHJcbiAgICAgICAgICAnZmlsdGVyLWNhcmQtc2l6ZScsXHJcbiAgICAgICAgICB2ZXJpZmljYXJTZUNhcmRFc3RhU2VsZWNpb25hZG8oY2FyZCkgID8gJ2ZpbHRlci1jYXJkLWFjdGl2ZScgOiAnY2xpY2thYmxlJ1xyXG4gICAgICAgIF1cIlxyXG4gICAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY2FyZC1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXJkLXRpdGxlXCI+XHJcblxyXG4gICAgICAgICAgQGlmIChjYXJkLmljb24pIHtcclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGV4LWljb24tc3ZnXCI+XHJcbiAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJvdmVyZmxvdzogdmlzaWJsZTtcIiB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiBjbGFzcz1cImhleC1iZ1wiPlxyXG4gICAgICAgICAgICAgIDxwb2x5Z29uXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cIiFzZWxlY3RlZENhcmRzKCk/LmluY2x1ZGVzKGNhcmQpID8gJ2NvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1taXhlZC1jb2xvcikgMjAlLCB3aGl0ZSA4MCUpJyA6ICd2YXIoLS1tYWluLWNvbG9yKSdcIlxyXG4gICAgICAgICAgICAgICAgcG9pbnRzPVwiOTMuMyA3NSw1MCAxMDAsNi43IDc1LDYuNyAyNSw1MCAwLDkzLjMgMjVcIiBzdHJva2U9XCJ2YXIoLS1tYWluLWNvbG9yKVwiIHN0cm9rZS13aWR0aD1cIjNcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgb3BhY2l0eT1cIjAuOFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cIiFzZWxlY3RlZENhcmRzKCk/LmluY2x1ZGVzKGNhcmQpID8gJ3ZhcigtLW1haW4tY29sb3IpJyA6ICd3aGl0ZSdcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uXCI+XHJcbiAgICAgICAgICAgICAge3sgY2FyZD8uaWNvbiB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAuODI1ZW07IGNvbG9yOiAjNDE0MTQxO1wiPnt7IGNhcmQ/LnRpdHVsbyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBAaWYobG9hZGluZ0NhcmRzKCkpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgfUBlbHNlIHtcclxuXHJcbiAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvcigpKGNhcmQpXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEuMjVlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1pbi1oZWlnaHQ6IDEuODc1cmVtXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY2FyZC52YWxvciB8IGt2RmlsdGVyQ2FyZHNGb3JtYXR0ZXI6Y2FyZC5mb3JtYXRvfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG48L2Rpdj5cclxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsdGVyLWNhcmRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWZpbHRlci1jYXJkcy9rdi1maWx0ZXItY2FyZHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsdGVyLWNhcmRzL2t2LWZpbHRlci1jYXJkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQzs7OztBQVEzRyxNQUFNLE9BQU8sc0JBQXNCO0lBTm5DO1FBVUUsb0VBQW9FO1FBQ3BFLFVBQUssR0FBRyxLQUFLLEVBQXdCLENBQUE7UUFFckMsZ0JBQVcsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFcEMsa0JBQWEsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFHckMsaURBQWlEO1FBQ2pELGtCQUFhLEdBQUcsS0FBSyxDQUF1QixFQUFFLENBQUMsQ0FBQTtRQUUvQyxpQkFBWSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVyQywrREFBK0Q7UUFDL0QsY0FBUyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVsQyw2Q0FBNkM7UUFDN0MscUJBQWdCLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXpDLGdCQUFXLEdBQUcsTUFBTSxFQUFzQixDQUFDO1FBRTNDLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUF3QixFQUFFLEVBQUU7WUFDbEQsTUFBTSxLQUFLLEdBQUcs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c0JBQXNCLDhsQ0NUbkMsb2hGQWdGTTs7MkZEdkVPLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs7QUE2RmpELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUErQjtJQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFLLFFBQVE7SUFDL0IsU0FBUyxFQUFFLFNBQVMsRUFBRyxjQUFjO0lBQ3JDLFFBQVEsRUFBRSxTQUFTLEVBQUksUUFBUTtJQUMvQixJQUFJLEVBQUUsU0FBUyxFQUFRLGFBQWE7SUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBSyxVQUFVO0lBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQU0sVUFBVTtDQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBtb2RlbCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtZmlsdGVyLWNhcmRzJyxcclxuICB0ZW1wbGF0ZVVybDogYC4va3YtZmlsdGVyLWNhcmRzLmNvbXBvbmVudC5odG1sYCxcclxuICBzdHlsZVVybDogJy4va3YtZmlsdGVyLWNhcmRzLmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RmlsdGVyQ2FyZHNDb21wb25lbnQge1xyXG5cclxuXHJcblxyXG4gIC8vIExpc3RhIGRlIGNhcmRzIGRlIGZpbHRybywgY2FkYSB1bSBjb20gdW0gw61jb25lIGUgdmFsb3IgZXNwZWPDrWZpY29cclxuICBjYXJkcyA9IGlucHV0PEt2RmlsdGVyQ2FyZENvbmZpZ1tdPigpXHJcblxyXG4gIHN0YXRpY0NhcmRzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBjdXJzb3JQb2ludGVyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG5cclxuICAvL1Byb3BpZWRhZGUgcGFyYSBhcm1hemVuYXIgb3MgY2FyZHMgc2VsZWNpb25hZG9zXHJcbiAgc2VsZWN0ZWRDYXJkcyA9IG1vZGVsPEt2RmlsdGVyQ2FyZENvbmZpZ1tdPihbXSlcclxuXHJcbiAgbG9hZGluZ0NhcmRzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvLyBEZWZpbmUgc2Ugb3MgY2FyZHMgZGV2ZW0gc2VyIGV4aWJpZG9zIGVtIHVtYSBsaW5oYSBvdSBjb2x1bmFcclxuICB3cmFwQ2FyZHMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIC8vIERlZmluZSBzZSBvcyBjYXJkcyBkZXZlbSBzZXIgY2VudHJhbGl6YWRvc1xyXG4gIGFsaWduQ2FyZHNDZW50ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIG9uQ2FyZENsaWNrID0gb3V0cHV0PEt2RmlsdGVyQ2FyZENvbmZpZz4oKTtcclxuXHJcbiAgY29sb3IgPSBjb21wdXRlZCgoKSA9PiAoY2FyZDogS3ZGaWx0ZXJDYXJkQ29uZmlnKSA9PiB7XHJcbiAgICBjb25zdCBjb2xvciA9IG1hcGFTZXZlcml0eUNvbG9yc1tjYXJkLnNldmVyaXR5XTtcclxuICAgIHJldHVybiBjb2xvciA/IGNvbG9yIDogbWFwYVNldmVyaXR5Q29sb3JzLnByaW1hcnk7XHJcbiAgfSk7XHJcblxyXG4gIG1peGVkQ29sb3IgPSBjb21wdXRlZCgoKSA9PiAoY2FyZDogS3ZGaWx0ZXJDYXJkQ29uZmlnKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRUcmFuc3BhcmVudE1peCh0aGlzLmNvbG9yKCkoY2FyZCkpXHJcbiAgfSk7XHJcblxyXG5cclxuICBwcml2YXRlIGdldFRyYW5zcGFyZW50TWl4KGJhc2VIZXg6IHN0cmluZywgb3BhY2l0eTogbnVtYmVyID0gMC4zKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHIgPSBwYXJzZUludChiYXNlSGV4LnNsaWNlKDEsIDMpLCAxNik7XHJcbiAgICBjb25zdCBnID0gcGFyc2VJbnQoYmFzZUhleC5zbGljZSgzLCA1KSwgMTYpO1xyXG4gICAgY29uc3QgYiA9IHBhcnNlSW50KGJhc2VIZXguc2xpY2UoNSwgNyksIDE2KTtcclxuICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke29wYWNpdHl9KWA7XHJcbiAgfVxyXG5cclxuXHJcbiAgaGFuZGxlQ2FyZENsaWNrKGNhcmQ6IEt2RmlsdGVyQ2FyZENvbmZpZykge1xyXG4gICAgdGhpcy5vbkNhcmRDbGljay5lbWl0KGNhcmQpO1xyXG5cclxuICAgIC8vIEF0dWFsaXphIGEgbGlzdGEgZGUgc2VsZWNpb25hZG9zOiByZW1vdmUgc2UgasOhIGV4aXN0ZSwgYWRpY2lvbmEgc2UgbsOjbyBleGlzdGVcclxuICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy51cGRhdGUoY2FyZHMgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdGUgPSBjYXJkcy5zb21lKGMgPT4gYy5pZCA9PT0gY2FyZC5pZCk7XHJcbiAgICAgIHJldHVybiBleGlzdGVcclxuICAgICAgICA/IGNhcmRzLmZpbHRlcihjID0+IGMuaWQgIT09IGNhcmQuaWQpXHJcbiAgICAgICAgOiBbLi4uY2FyZHMsIGNhcmRdO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB2ZXJpZmljYXJTZUNhcmRFc3RhU2VsZWNpb25hZG8oY2FyZDogS3ZGaWx0ZXJDYXJkQ29uZmlnKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENhcmRzKCk/LmZpbmQoYyA9PiBjLmlkID09PSBjYXJkLmlkKSAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3JGaWxsUG9seWdvbihjYXJkOiBLdkZpbHRlckNhcmRDb25maWcpOiBzdHJpbmcge1xyXG5cclxuICAgIGlmICh0aGlzLnN0YXRpY0NhcmRzKCkpIHtcclxuICAgICAgcmV0dXJuICd2YXIoLS1tYWluLWNvbG9yKSc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkQ2FyZHMoKT8uaW5jbHVkZXMoY2FyZCkpIHtcclxuICAgICAgcmV0dXJuICdjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbWl4ZWQtY29sb3IpIDIwJSwgd2hpdGUgODAlKSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3ZhcigtLW1haW4tY29sb3IpJztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q29sb3JJY29uUG9seWdvbihjYXJkOiBLdkZpbHRlckNhcmRDb25maWcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuc3RhdGljQ2FyZHMoKSkge1xyXG4gICAgICByZXR1cm4gJ3doaXRlJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYXJkcygpPy5pbmNsdWRlcyhjYXJkKSkge1xyXG4gICAgICByZXR1cm4gJ3ZhcigtLW1haW4tY29sb3IpJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnd2hpdGUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG5leHBvcnQgdHlwZSBLdlNldmVyaXR5ID0gJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAndGVydGlhcnknIHwgJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2Rhbmdlcic7XHJcblxyXG5leHBvcnQgY29uc3QgbWFwYVNldmVyaXR5Q29sb3JzOiBSZWNvcmQ8S3ZTZXZlcml0eSwgc3RyaW5nPiA9IHtcclxuICBwcmltYXJ5OiAnIzBBODc2NScsICAgIC8vIFZlcmRlXHJcbiAgc2Vjb25kYXJ5OiAnIzBBM0E3OCcsICAvLyBBenVsIGVzY3Vyb1xyXG4gIHRlcnRpYXJ5OiAnIzc3ODU5OScsICAgLy8gQ2luemFcclxuICBpbmZvOiAnIzAwOTFDMicsICAgICAgIC8vIEF6dWwgY2xhcm9cclxuICB3YXJuaW5nOiAnI0UxOTYzRCcsICAgIC8vIEFtYXJlbG9cclxuICBkYW5nZXI6ICcjRjE1QTI0JywgICAgIC8vIExhcmFuamFcclxufTtcclxuXHJcblxyXG5cclxuZXhwb3J0IHR5cGUgS3ZGaWx0ZXJDYXJkRm9ybWF0byA9ICdpbnQnIHwgJ2N1cnJlbmN5JyB8ICdwZXJjZW50JyB8ICdkZWNpbWFsJyB8ICd0ZXh0JyB8ICdkYXRlJztcclxuZXhwb3J0IHR5cGUgS3ZGaWx0ZXJDYXJkQ29uZmlnID0ge1xyXG4gICAgaWQ6IG51bWJlcjtcclxuICAgIHNldmVyaXR5OiBLdlNldmVyaXR5O1xyXG4gICAgdGl0dWxvOiBzdHJpbmc7XHJcbiAgICBpY29uOiBzdHJpbmc7XHJcbiAgICB2YWxvcj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XHJcbiAgICBmb3JtYXRvPzogS3ZGaWx0ZXJDYXJkRm9ybWF0bztcclxuXHJcbn0iLCI8ZGl2IFxyXG4gIGlkPVwiZmlsdGVyLWNhcmQtY29udGFpbmVyXCIgXHJcbiAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHctZnVsbCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbj5cclxuICA8ZGl2IFxyXG4gICAgY2xhc3M9XCJmbGV4IHAtZmx1aWQgZm9ybWdyaWQgdy1mdWxsIGdhcC0xIHB4LTMgcHktMVwiIFxyXG4gICAgW25nQ2xhc3NdPVwiW1xyXG4gICAgICAgIHdyYXBDYXJkcygpID8gJ2ZsZXgtd3JhcCcgOiAnZmxleC1ub3dyYXAgb3ZlcmZsb3cteC1hdXRvJyxcclxuICAgICAgICBhbGlnbkNhcmRzQ2VudGVyKCkgPyAnanVzdGlmeS1jb250ZW50LWNlbnRlcicgOiAnanVzdGlmeS1jb250ZW50LXN0YXJ0JyAgICBcclxuICAgIF1cIiBcclxuICAgICNmaWx0ZXJDYXJkc0NvbnRhaW5lclxyXG4gID5cclxuXHJcbiAgICBAZm9yIChjYXJkIG9mIGNhcmRzKCk7IHRyYWNrIGNhcmQuaWQpIHtcclxuICAgIFxyXG4gICAgICA8ZGl2IFxyXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVDYXJkQ2xpY2soY2FyZClcIiBcclxuICAgICAgICBbc3R5bGUuLS1tYWluLWNvbG9yXT1cImNvbG9yKCkoY2FyZClcIiBcclxuICAgICAgICBbc3R5bGUuLS1taXhlZC1jb2xvcl09XCJtaXhlZENvbG9yKCkoY2FyZClcIlxyXG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLWNhcmRcIiBcclxuXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiW1xyXG4gICAgICAgICAgICAnZmlsdGVyLWNhcmQtc2l6ZScsXHJcbiAgICAgICAgICAgIHZlcmlmaWNhclNlQ2FyZEVzdGFTZWxlY2lvbmFkbyhjYXJkKSAgPyAnZmlsdGVyLWNhcmQtYWN0aXZlJyA6ICdjbGlja2FibGUnLFxyXG4gICAgICAgICAgICBzdGF0aWNDYXJkcygpID8gJ2ZpbHRlci1jYXJkLWFjdGl2ZScgOiAnJyxcclxuICAgICAgICAgICAgIXN0YXRpY0NhcmRzKCkgJiYgIXZlcmlmaWNhclNlQ2FyZEVzdGFTZWxlY2lvbmFkbyhjYXJkKSA/ICdmaWx0ZXItY2FyZC1ob3ZlcicgOiAnJyxcclxuICAgICAgICAgICAgY3Vyc29yUG9pbnRlcigpID8gJ2N1cnNvci1wb2ludGVyJyA6ICcnLFxyXG5cclxuICAgICAgICBdXCJcclxuICAgICAgPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXJkLWNvbnRlbnRcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXJkLXRpdGxlXCI+XHJcblxyXG4gICAgICAgICAgQGlmIChjYXJkLmljb24pIHtcclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGV4LWljb24tc3ZnXCI+XHJcbiAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJvdmVyZmxvdzogdmlzaWJsZTtcIiB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiBjbGFzcz1cImhleC1iZ1wiPlxyXG4gICAgICAgICAgICAgIDxwb2x5Z29uXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cImdldENvbG9yRmlsbFBvbHlnb24oY2FyZClcIlxyXG4gICAgICAgICAgICAgICAgcG9pbnRzPVwiOTMuMyA3NSw1MCAxMDAsNi43IDc1LDYuNyAyNSw1MCAwLDkzLjMgMjVcIiBcclxuICAgICAgICAgICAgICAgIHN0cm9rZT1cInZhcigtLW1haW4tY29sb3IpXCIgXHJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIzXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgXHJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgXHJcbiAgICAgICAgICAgICAgICBvcGFjaXR5PVwiMC44XCIgXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwiZ2V0Q29sb3JJY29uUG9seWdvbihjYXJkKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb25cIj5cclxuICAgICAgICAgICAgICB7eyBjYXJkPy5pY29uIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IC44MjVlbTsgY29sb3I6ICM0MTQxNDE7XCI+e3sgY2FyZD8udGl0dWxvIH19PC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBAaWYobG9hZGluZ0NhcmRzKCkpe1xyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+PC9zcGFuPlxyXG5cclxuICAgICAgICB9QGVsc2Uge1xyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIFtzdHlsZS5jb2xvcl09XCJjb2xvcigpKGNhcmQpXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEuMjVlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1pbi1oZWlnaHQ6IDEuODc1cmVtXCI+XHJcbiAgICAgICAgICAgIHt7IGNhcmQudmFsb3IgfCBrdkZpbHRlckNhcmRzRm9ybWF0dGVyOmNhcmQuZm9ybWF0b319XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -8,7 +8,7 @@ export class KvHomeCardComponent {
8
8
  this.contentOverflow = 'none';
9
9
  }
10
10
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvHomeCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvHomeCardComponent, selector: "kv-home-card", inputs: { titulo: "titulo", headerActions: "headerActions", headerTemplate: "headerTemplate", borderCalss: "borderCalss", contentOverflow: "contentOverflow" }, ngImport: i0, template: "<div class=\"p-card flex-auto flex flex-column h-full {{ borderCalss }}\">\r\n <div class=\"h-auto\">\r\n <div class=\"h-auto flex flex-row justify-content-between formgrid grid p-fluid p-2 ml-2\">\r\n <div class=\"h-full flex align-items-center justify-content-start w-auto\">\r\n <span class=\"text-base font-bold\">\r\n {{ titulo }}\r\n <div class=\"marcador-titulo\"></div>\r\n </span>\r\n </div>\r\n\r\n <div class=\" h-full ml-3 mr-3 flex flex-row lex-grow-1 gap-2 justify-content-end flex-grow-1 z-5\"\r\n >\r\n @if (headerTemplate) {\r\n <ng-container class=\"flex-grow-1\" [ngTemplateOutlet]=\"headerTemplate\">\r\n </ng-container>\r\n }\r\n\r\n <div class=\"w-auto\">\r\n @for (item of headerActions; track $index) {\r\n\r\n <kv-button\r\n [icon]=\"item.icon || 'add'\"\r\n [severity]=\"item.severity || 'primary'\"\r\n (onClick)=\"item?.command($event)\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-grow-1\" [style.overflow-y]=\"contentOverflow\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".marcador-titulo{background-color:#1c801f;width:100%;height:3px}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "iconPopupPosition", "label", "disabled", "items", "popup"], outputs: ["iconChange", "onClick"] }] }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvHomeCardComponent, selector: "kv-home-card", inputs: { titulo: "titulo", headerActions: "headerActions", headerTemplate: "headerTemplate", borderCalss: "borderCalss", contentOverflow: "contentOverflow" }, ngImport: i0, template: "<div class=\"p-card flex-auto flex flex-column h-full {{ borderCalss }}\">\r\n <div class=\"h-auto\">\r\n <div class=\"h-auto flex flex-row justify-content-between formgrid grid p-fluid p-2 ml-2\">\r\n <div class=\"h-full flex align-items-center justify-content-start w-auto\">\r\n <span class=\"text-base font-bold\">\r\n {{ titulo }}\r\n <div class=\"marcador-titulo\"></div>\r\n </span>\r\n </div>\r\n\r\n <div class=\" h-full ml-3 mr-3 flex flex-row lex-grow-1 gap-2 justify-content-end flex-grow-1 z-5\"\r\n >\r\n @if (headerTemplate) {\r\n <ng-container class=\"flex-grow-1\" [ngTemplateOutlet]=\"headerTemplate\">\r\n </ng-container>\r\n }\r\n\r\n <div class=\"w-auto\">\r\n @for (item of headerActions; track $index) {\r\n\r\n <kv-button\r\n [icon]=\"item.icon || 'add'\"\r\n [severity]=\"item.severity || 'primary'\"\r\n (onClick)=\"item?.command($event)\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-grow-1\" [style.overflow-y]=\"contentOverflow\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".marcador-titulo{background-color:#1c801f;width:100%;height:3px}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup"], outputs: ["iconChange", "onClick"] }] }); }
12
12
  }
13
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvHomeCardComponent, decorators: [{
14
14
  type: Component,