keevo-components 1.8.435 → 1.8.437
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.
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +32 -9
- package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +5 -6
- package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +6 -6
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +3 -3
- package/fesm2022/keevo-components.mjs +42 -19
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/components/kv-file-upload/kv-file-upload.component.d.ts +2 -1
- package/lib/components/kv-loader/kv-loader.component.d.ts +2 -3
- package/lib/components/kv-loader/kv-loader.service.d.ts +2 -2
- package/lib/components/kv-table/kv-table.component.d.ts +1 -1
- package/lib/components/kv-table-expandable/kv-table-expandable.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -8,15 +8,24 @@ export class KvFileUploadComponent {
|
|
|
8
8
|
this.widthComponent = '400px';
|
|
9
9
|
this.heightComponent = 'auto';
|
|
10
10
|
this.validFileTypes = ['image/', 'application/pdf', 'text/html'];
|
|
11
|
+
this.includeOfficeTypes = false; // Propriedade para controlar os tipos de Office
|
|
11
12
|
this.fileEmit = new EventEmitter();
|
|
12
13
|
this.removeFileEmit = new EventEmitter();
|
|
13
14
|
}
|
|
14
15
|
onFileSelected(event) {
|
|
16
|
+
let validTypes = [...this.validFileTypes];
|
|
17
|
+
if (this.includeOfficeTypes) {
|
|
18
|
+
validTypes.push('application/msword', // .doc
|
|
19
|
+
'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx
|
|
20
|
+
'application/vnd.ms-powerpoint', // .ppt
|
|
21
|
+
'application/vnd.openxmlformats-officedocument.presentationml.presentation' // .pptx
|
|
22
|
+
);
|
|
23
|
+
}
|
|
15
24
|
if (event.target.files.length == 0)
|
|
16
25
|
return;
|
|
17
|
-
const isValidFileType =
|
|
26
|
+
const isValidFileType = validTypes.some(type => event.target.files[0].type.startsWith(type));
|
|
18
27
|
if (!isValidFileType) {
|
|
19
|
-
this.notificationService.toastError(
|
|
28
|
+
this.notificationService.toastError('Tipo de arquivo inválido');
|
|
20
29
|
this.formGroup.controls[this.formControlName].setValue(null);
|
|
21
30
|
return;
|
|
22
31
|
}
|
|
@@ -46,6 +55,14 @@ export class KvFileUploadComponent {
|
|
|
46
55
|
container.classList.remove('dragover');
|
|
47
56
|
}
|
|
48
57
|
handleFile(file) {
|
|
58
|
+
if (this.includeOfficeTypes) {
|
|
59
|
+
let validTypes = [...this.validFileTypes];
|
|
60
|
+
validTypes.push('application/msword', // .doc
|
|
61
|
+
'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx
|
|
62
|
+
'application/vnd.ms-powerpoint', // .ppt
|
|
63
|
+
'application/vnd.openxmlformats-officedocument.presentationml.presentation' // .pptx
|
|
64
|
+
);
|
|
65
|
+
}
|
|
49
66
|
const isValidFileType = this.validFileTypes.some(type => file.type.startsWith(type));
|
|
50
67
|
if (!isValidFileType) {
|
|
51
68
|
this.notificationService.toastError('Tipo de arquivo inválido');
|
|
@@ -57,7 +74,7 @@ export class KvFileUploadComponent {
|
|
|
57
74
|
if (file.type.startsWith('image/'))
|
|
58
75
|
reader.readAsDataURL(file);
|
|
59
76
|
else
|
|
60
|
-
reader.readAsArrayBuffer(file); // Para outros tipos de arquivo
|
|
77
|
+
reader.readAsArrayBuffer(file); // Para outros tipos de arquivo
|
|
61
78
|
this.fileEmit.emit(file);
|
|
62
79
|
}
|
|
63
80
|
onDragOver(event) {
|
|
@@ -82,16 +99,20 @@ export class KvFileUploadComponent {
|
|
|
82
99
|
let types = '';
|
|
83
100
|
this.validFileTypes.forEach(type => {
|
|
84
101
|
if (type.includes('image'))
|
|
85
|
-
types += '.jpg, .png, .bmp';
|
|
102
|
+
types += '.jpg, .png, .bmp, ';
|
|
86
103
|
if (type.includes('html'))
|
|
87
|
-
types += '.html';
|
|
104
|
+
types += '.html, ';
|
|
88
105
|
if (type.includes('pdf'))
|
|
89
|
-
types += '.pdf';
|
|
106
|
+
types += '.pdf, ';
|
|
90
107
|
});
|
|
91
|
-
|
|
108
|
+
// Adiciona tipos de arquivos do Office se includeOfficeTypes for true
|
|
109
|
+
if (this.includeOfficeTypes) {
|
|
110
|
+
types += '.doc, .docx, .ppt, .pptx, ';
|
|
111
|
+
}
|
|
112
|
+
return types.slice(0, -2); // Remove a última vírgula e espaço
|
|
92
113
|
}
|
|
93
114
|
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 }); }
|
|
94
|
-
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" }, 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 <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"] }] }); }
|
|
115
|
+
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", 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 <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"] }] }); }
|
|
95
116
|
}
|
|
96
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadComponent, decorators: [{
|
|
97
118
|
type: Component,
|
|
@@ -108,6 +129,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
108
129
|
type: Input
|
|
109
130
|
}], validFileTypes: [{
|
|
110
131
|
type: Input
|
|
132
|
+
}], includeOfficeTypes: [{
|
|
133
|
+
type: Input
|
|
111
134
|
}], fileEmit: [{
|
|
112
135
|
type: Output
|
|
113
136
|
}], removeFileEmit: [{
|
|
@@ -119,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
119
142
|
type: ViewChild,
|
|
120
143
|
args: ['inputUpload']
|
|
121
144
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7Ozs7QUFVL0YsTUFBTSxPQUFPLHFCQUFxQjtJQWNoQyxZQUNVLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBWnpDLG1CQUFjLEdBQVcsT0FBTyxDQUFDO1FBQ2pDLG9CQUFlLEdBQVcsTUFBTSxDQUFDO1FBRWpDLG1CQUFjLEdBQWEsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckUsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFPN0QsQ0FBQztJQUVMLGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDaEMsT0FBTTtRQUVSLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJ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O1FBRWQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDeEIsS0FBSyxJQUFJLGtCQUFrQixDQUFDO1lBRTlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLEtBQUssSUFBSSxPQUFPLENBQUM7WUFFbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDdEIsS0FBSyxJQUFJLE1BQU0sQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0F0SFUscUJBQXFCO2tHQUFyQixxQkFBcUIsNGdCQ1ZsQywraUZBcURBOzsyRkQzQ2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGdCQUFnQjt3RkFLakIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0ksV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWZpbGUtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi1maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RmlsZVVwbG9hZENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB3aWR0aENvbXBvbmVudDogc3RyaW5nID0gJzQwMHB4JztcclxuICBASW5wdXQoKSBoZWlnaHRDb21wb25lbnQ6IHN0cmluZyA9ICdhdXRvJztcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWxpZEZpbGVUeXBlczogc3RyaW5nW10gPSBbJ2ltYWdlLycsICdhcHBsaWNhdGlvbi9wZGYnLCAndGV4dC9odG1sJ107XHJcblxyXG4gIEBPdXRwdXQoKSBmaWxlRW1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlbW92ZUZpbGVFbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdpbnB1dFVwbG9hZCcpIGlucHV0VXBsb2FkITogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBvbkZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm5cclxuXHJcbiAgICBjb25zdCBpc1ZhbGlkRmlsZVR5cGUgPSB0aGlzLnZhbGlkRmlsZVR5cGVzLnNvbWUodHlwZSA9PiBldmVudC50YXJnZXQuZmlsZXNbMF0udHlwZS5zdGFydHNXaXRoKHR5cGUpKTtcclxuXHJcbiAgICBpZiAoIWlzVmFsaWRGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihcIlRpcG8gZGUgYXJxdWl2byBpbnbDoWxpZG9cIilcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnJlbW92ZUZpbGVFbWl0LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdEJ5dGVzKGJ5dGVzOiBhbnksIGRlY2ltYWxzID0gMikge1xyXG4gICAgaWYgKCFieXRlcykge1xyXG4gICAgICByZXR1cm4gXCIwIEJ5dGVzXCI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrID0gMTAyNDtcclxuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPD0gMCA/IDAgOiBkZWNpbWFscztcclxuICAgIGNvbnN0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XHJcbiAgfVxyXG5cclxuICBhZGREcmFnT3ZlckNsYXNzKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdkcmFnb3ZlcicpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ292ZXInKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbGUoZmlsZTogRmlsZSkge1xyXG4gICAgY29uc3QgaXNWYWxpZEZpbGVUeXBlID0gdGhpcy52YWxpZEZpbGVUeXBlcy5zb21lKHR5cGUgPT4gZmlsZS50eXBlLnN0YXJ0c1dpdGgodHlwZSkpO1xyXG5cclxuICAgIGlmICghaXNWYWxpZEZpbGVUeXBlKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdEVycm9yKCdUaXBvIGRlIGFycXVpdm8gaW52w6FsaWRvJyk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMuZm9ybUNvbnRyb2xOYW1lXS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKGZpbGUpO1xyXG5cclxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgaWYgKGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSlcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTsgLy8gUGFyYSBvdXRyb3MgdGlwb3MgZGUgYXJxdWl2bywgdXNlIHJlYWRBc0FycmF5QnVmZmVyIG91IG91dHJvIG3DqXRvZG8gYXByb3ByaWFkb1xyXG5cclxuICAgIHRoaXMuZmlsZUVtaXQuZW1pdChmaWxlKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hZGREcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMucmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5yZW1vdmVEcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuXHJcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsZShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWNjZXB0KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdHlwZXMgPSAnJ1xyXG5cclxuICAgIHRoaXMudmFsaWRGaWxlVHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpXHJcbiAgICAgICAgdHlwZXMgKz0gJy5qcGcsIC5wbmcsIC5ibXAnO1xyXG5cclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ2h0bWwnKSlcclxuICAgICAgICB0eXBlcyArPSAnLmh0bWwnO1xyXG5cclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ3BkZicpKVxyXG4gICAgICAgIHR5cGVzICs9ICcucGRmJztcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0eXBlcztcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICAgKm5nSWY9XCJmb3JtR3JvdXBcIlxyXG4gICAgW25nQ2xhc3NdPVwieydpbnZhbGlkLWJvcmRlcic6IGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0uaW52YWxpZCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS50b3VjaGVkfVwiXHJcbiAgICBjbGFzcz1cImJvcmRlci1kYXNoZWQgYm9yZGVyLTIgYm9yZGVyLXJvdW5kLWxnIGJvcmRlci1ncmF5LTQwMCBmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxyXG4gICAgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiXHJcbiAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxyXG4gICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxyXG4gICAgW3N0eWxlLndpZHRoXT1cIndpZHRoQ29tcG9uZW50XCJcclxuICAgIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0Q29tcG9uZW50XCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInctZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCJcclxuICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcblxyXG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwic2V0QWNjZXB0KClcIiBoaWRkZW4vPlxyXG5cclxuICAgICAgQGlmKGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgIWZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnZhbHVlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG10LTJcIiBzdHlsZT1cImZvbnQtc2l6ZTogM3JlbTtcIj5cclxuICAgICAgICAgICAgICAgIGNsb3VkX3VwbG9hZFxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAaWYoZGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWNlbnRlclwiPnt7ZGVzY3JpcHRpb259fTwvcD5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1jZW50ZXJcIj5BcnJhc3RlIGUgc29sdGUgbyBhcnF1aXZvIGFxdWksIG91PGJyPmNsaXF1ZSBwYXJhIHNlbGVjaW9uw6EtbG88L3A+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgQGlmKGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWUpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj5BcnF1aXZvIFNlbGVjaW9uYWRvOjwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPnt7IGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnZhbHVlPy5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj4oe3sgZm9ybWF0Qnl0ZXMoZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWU/LnNpemUpIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8aSAgc3R5bGU9XCJwYWRkaW5nOiAxMHB4OyBtYXJnaW4tbGVmdDogMTBweDtcIlxyXG4gICAgICAgICAgICAgICAgICBwVG9vbHRpcD1cIkV4Y2x1aXIgYXJxdWl2b1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLXNvbGlkIGJvcmRlci0xIGJvcmRlci1yb3VuZC1zbSBib3JkZXItZ3JheS00MDAgcGkgcGktdHJhc2ggZGVsZXRlIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUZpbGUoKVwiXHJcbiAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5AaWYgKGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0uaW52YWxpZCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS50b3VjaGVkKSAge1xyXG4gIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkNhbXBvIG9icmlnYXTDs3JpbzwvcD5cclxufVxyXG4iXX0=
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7Ozs7QUFTOUYsTUFBTSxPQUFPLHFCQUFxQjtJQWVoQyxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVpuRCxtQkFBYyxHQUFXLE9BQU8sQ0FBQztRQUNqQyxvQkFBZSxHQUFXLE1BQU0sQ0FBQztRQUVqQyxtQkFBYyxHQUFhLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLHVCQUFrQixHQUFZLEtBQUssQ0FBQyxDQUFDLGdEQUFnRDtRQUVwRixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakQsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUtELENBQUM7SUFFakUsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRTVCLFVBQVUsQ0FBQyxJQUFJLENBQ2Isb0JBQW9CLEVBQUUsT0FBTztZQUM3Qix5RUFBeUUsRUFBRSxRQUFRO1lBQ25G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QyxDQUFDLENBQUMsbUNBQW1DO0lBQ2hFLENBQUM7OEdBNUlVLHFCQUFxQjtrR0FBckIscUJBQXFCLHNqQkNUbEMsK2lGQXFEQTs7MkZENUNhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxnQkFBZ0I7d0ZBS2pCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWZpbGUtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi1maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RmlsZVVwbG9hZENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB3aWR0aENvbXBvbmVudDogc3RyaW5nID0gJzQwMHB4JztcclxuICBASW5wdXQoKSBoZWlnaHRDb21wb25lbnQ6IHN0cmluZyA9ICdhdXRvJztcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWxpZEZpbGVUeXBlczogc3RyaW5nW10gPSBbJ2ltYWdlLycsICdhcHBsaWNhdGlvbi9wZGYnLCAndGV4dC9odG1sJ107XHJcbiAgQElucHV0KCkgaW5jbHVkZU9mZmljZVR5cGVzOiBib29sZWFuID0gZmFsc2U7IC8vIFByb3ByaWVkYWRlIHBhcmEgY29udHJvbGFyIG9zIHRpcG9zIGRlIE9mZmljZVxyXG5cclxuICBAT3V0cHV0KCkgZmlsZUVtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVGaWxlRW1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRVcGxvYWQnKSBpbnB1dFVwbG9hZCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSkgeyB9XHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCB2YWxpZFR5cGVzID0gWy4uLnRoaXMudmFsaWRGaWxlVHlwZXNdO1xyXG5cclxuICAgIGlmICh0aGlzLmluY2x1ZGVPZmZpY2VUeXBlcykge1xyXG4gIFxyXG4gICAgICB2YWxpZFR5cGVzLnB1c2goXHJcbiAgICAgICAgJ2FwcGxpY2F0aW9uL21zd29yZCcsIC8vIC5kb2NcclxuICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLCAvLyAuZG9jeFxyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsIC8vIC5wcHRcclxuICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicgLy8gLnBwdHhcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA9PSAwKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgaXNWYWxpZEZpbGVUeXBlID0gdmFsaWRUeXBlcy5zb21lKHR5cGUgPT4gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLnR5cGUuc3RhcnRzV2l0aCh0eXBlKSk7XHJcbiAgICBpZiAoIWlzVmFsaWRGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcignVGlwbyBkZSBhcnF1aXZvIGludsOhbGlkbycpO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnJlbW92ZUZpbGVFbWl0LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdEJ5dGVzKGJ5dGVzOiBhbnksIGRlY2ltYWxzID0gMikge1xyXG4gICAgaWYgKCFieXRlcykge1xyXG4gICAgICByZXR1cm4gXCIwIEJ5dGVzXCI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrID0gMTAyNDtcclxuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPD0gMCA/IDAgOiBkZWNpbWFscztcclxuICAgIGNvbnN0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XHJcbiAgfVxyXG5cclxuICBhZGREcmFnT3ZlckNsYXNzKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdkcmFnb3ZlcicpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ292ZXInKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbGUoZmlsZTogRmlsZSkge1xyXG5cclxuXHJcbiAgaWYgKHRoaXMuaW5jbHVkZU9mZmljZVR5cGVzKSB7XHJcbiAgICBsZXQgdmFsaWRUeXBlcyA9IFsuLi50aGlzLnZhbGlkRmlsZVR5cGVzXTtcclxuXHJcbiAgICB2YWxpZFR5cGVzLnB1c2goXHJcbiAgICAgICdhcHBsaWNhdGlvbi9tc3dvcmQnLCAvLyAuZG9jXHJcbiAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsIC8vIC5kb2N4XHJcbiAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsIC8vIC5wcHRcclxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nIC8vIC5wcHR4XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgICBjb25zdCBpc1ZhbGlkRmlsZVR5cGUgPSB0aGlzLnZhbGlkRmlsZVR5cGVzLnNvbWUodHlwZSA9PiBmaWxlLnR5cGUuc3RhcnRzV2l0aCh0eXBlKSk7XHJcblxyXG4gICAgaWYgKCFpc1ZhbGlkRmlsZVR5cGUpIHtcclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoJ1RpcG8gZGUgYXJxdWl2byBpbnbDoWxpZG8nKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKGZpbGUpO1xyXG5cclxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgaWYgKGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSlcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTsgLy8gUGFyYSBvdXRyb3MgdGlwb3MgZGUgYXJxdWl2b1xyXG5cclxuICAgIHRoaXMuZmlsZUVtaXQuZW1pdChmaWxlKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hZGREcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMucmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5yZW1vdmVEcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuXHJcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsZShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWNjZXB0KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdHlwZXMgPSAnJ1xyXG5cclxuICAgIHRoaXMudmFsaWRGaWxlVHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpIHR5cGVzICs9ICcuanBnLCAucG5nLCAuYm1wLCAnO1xyXG4gICAgICBpZiAodHlwZS5pbmNsdWRlcygnaHRtbCcpKSB0eXBlcyArPSAnLmh0bWwsICc7XHJcbiAgICAgIGlmICh0eXBlLmluY2x1ZGVzKCdwZGYnKSkgdHlwZXMgKz0gJy5wZGYsICc7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBBZGljaW9uYSB0aXBvcyBkZSBhcnF1aXZvcyBkbyBPZmZpY2Ugc2UgaW5jbHVkZU9mZmljZVR5cGVzIGZvciB0cnVlXHJcbiAgICBpZiAodGhpcy5pbmNsdWRlT2ZmaWNlVHlwZXMpIHtcclxuICAgICAgdHlwZXMgKz0gJy5kb2MsIC5kb2N4LCAucHB0LCAucHB0eCwgJztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHlwZXMuc2xpY2UoMCwgLTIpOyAvLyBSZW1vdmUgYSDDumx0aW1hIHbDrXJndWxhIGUgZXNwYcOnb1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgICAqbmdJZj1cImZvcm1Hcm91cFwiXHJcbiAgICBbbmdDbGFzc109XCJ7J2ludmFsaWQtYm9yZGVyJzogZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS5pbnZhbGlkICYmIGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnRvdWNoZWR9XCJcclxuICAgIGNsYXNzPVwiYm9yZGVyLWRhc2hlZCBib3JkZXItMiBib3JkZXItcm91bmQtbGcgYm9yZGVyLWdyYXktNDAwIGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXHJcbiAgICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcclxuICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhDb21wb25lbnRcIlxyXG4gICAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRDb21wb25lbnRcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidy1mdWxsIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIlxyXG4gICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cclxuXHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiICNmaWxlSW5wdXQgW2FjY2VwdF09XCJzZXRBY2NlcHQoKVwiIGhpZGRlbi8+XHJcblxyXG4gICAgICBAaWYoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiAhZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWUpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbXQtMlwiIHN0eWxlPVwiZm9udC1zaXplOiAzcmVtO1wiPlxyXG4gICAgICAgICAgICAgICAgY2xvdWRfdXBsb2FkXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIEBpZihkZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtY2VudGVyXCI+e3tkZXNjcmlwdGlvbn19PC9wPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWNlbnRlclwiPkFycmFzdGUgZSBzb2x0ZSBvIGFycXVpdm8gYXF1aSwgb3U8YnI+Y2xpcXVlIHBhcmEgc2VsZWNpb27DoS1sbzwvcD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS52YWx1ZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkXCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPkFycXVpdm8gU2VsZWNpb25hZG86PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCI+e3sgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWU/Lm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPih7eyBmb3JtYXRCeXRlcyhmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS52YWx1ZT8uc2l6ZSkgfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpICBzdHlsZT1cInBhZGRpbmc6IDEwcHg7IG1hcmdpbi1sZWZ0OiAxMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiRXhjbHVpciBhcnF1aXZvXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItc29saWQgYm9yZGVyLTEgYm9yZGVyLXJvdW5kLXNtIGJvcmRlci1ncmF5LTQwMCBwaSBwaS10cmFzaCBkZWxldGUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZSgpXCJcclxuICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbkBpZiAoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS5pbnZhbGlkICYmIGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnRvdWNoZWQpICB7XHJcbiAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+Q2FtcG8gb2JyaWdhdMOzcmlvPC9wPlxyXG59XHJcbiJdfQ==
|
|
@@ -2,16 +2,15 @@ import { Component } from '@angular/core';
|
|
|
2
2
|
import { KvLoaderService } from './kv-loader.service';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "ngx-loading";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
5
|
export class KvLoaderComponent {
|
|
7
6
|
constructor() {
|
|
8
|
-
this.loading = KvLoaderService.
|
|
7
|
+
this.loading = KvLoaderService.loading;
|
|
9
8
|
}
|
|
10
9
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvLoaderComponent, selector: "kv-loader", ngImport: i0, template: "<ngx-loading [show]=\"(
|
|
10
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvLoaderComponent, selector: "kv-loader", ngImport: i0, template: "<ngx-loading [show]=\"loading() > 0\"></ngx-loading>\r\n", dependencies: [{ kind: "component", type: i1.NgxLoadingComponent, selector: "ngx-loading", inputs: ["show", "config", "template"] }] }); }
|
|
12
11
|
}
|
|
13
12
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvLoaderComponent, decorators: [{
|
|
14
13
|
type: Component,
|
|
15
|
-
args: [{ selector: 'kv-loader', template: "<ngx-loading [show]=\"(
|
|
16
|
-
}]
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
args: [{ selector: 'kv-loader', template: "<ngx-loading [show]=\"loading() > 0\"></ngx-loading>\r\n" }]
|
|
15
|
+
}] });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWxvYWRlci9rdi1sb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtbG9hZGVyL2t2LWxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTXRELE1BQU0sT0FBTyxpQkFBaUI7SUFKOUI7UUFLUyxZQUFPLEdBQW1CLGVBQWUsQ0FBQyxPQUFPLENBQUM7S0FDMUQ7OEdBRlksaUJBQWlCO2tHQUFqQixpQkFBaUIsaURDUjlCLDBEQUNBOzsyRkRPYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgdHlwZSBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEt2TG9hZGVyU2VydmljZSB9IGZyb20gJy4va3YtbG9hZGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1sb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1sb2FkZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkxvYWRlckNvbXBvbmVudCB7XHJcbiAgcHVibGljIGxvYWRpbmc6IFNpZ25hbDxudW1iZXI+ID0gS3ZMb2FkZXJTZXJ2aWNlLmxvYWRpbmc7XHJcbn1cclxuIiwiPG5neC1sb2FkaW5nIFtzaG93XT1cImxvYWRpbmcoKSA+IDBcIj48L25neC1sb2FkaW5nPlxyXG4iXX0=
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
1
|
+
import { Injectable, signal } from '@angular/core';
|
|
2
|
+
import { finalize, } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class KvLoaderService {
|
|
5
|
-
static { this.
|
|
5
|
+
static { this.loading = signal(0); }
|
|
6
6
|
static show() {
|
|
7
|
-
|
|
7
|
+
KvLoaderService.loading.update(x => x + 1);
|
|
8
8
|
}
|
|
9
9
|
static hide() {
|
|
10
|
-
|
|
10
|
+
KvLoaderService.loading.update(x => x - 1);
|
|
11
11
|
}
|
|
12
12
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13
13
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvLoaderService, providedIn: 'root' }); }
|
|
@@ -26,4 +26,4 @@ export const loading = () => {
|
|
|
26
26
|
}));
|
|
27
27
|
};
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi1sb2FkZXIva3YtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUVMLFFBQVEsR0FDVCxNQUFNLE1BQU0sQ0FBQzs7QUFLZCxNQUFNLE9BQU8sZUFBZTthQUNaLFlBQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEFBQVosQ0FBYTtJQUUzQixNQUFNLENBQUMsSUFBSTtRQUNoQixlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUk7UUFDaEIsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs4R0FUVSxlQUFlO2tIQUFmLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUFhRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsR0FBNkMsRUFBRTtJQUNwRSxPQUFPLENBQUMsR0FBa0IsRUFBRSxFQUFFO1FBQzVCLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE9ic2VydmFibGUsXHJcbiAgZmluYWxpemUsXHJcbn0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkxvYWRlclNlcnZpY2Uge1xyXG4gIHB1YmxpYyBzdGF0aWMgbG9hZGluZyA9IHNpZ25hbCgwKTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBzaG93KCkge1xyXG4gICAgS3ZMb2FkZXJTZXJ2aWNlLmxvYWRpbmcudXBkYXRlKHggPT4geCArIDEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBoaWRlKCkge1xyXG4gICAgS3ZMb2FkZXJTZXJ2aWNlLmxvYWRpbmcudXBkYXRlKHggPT4geCAtIDEpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGxvYWRpbmcgPSA8VD4oKTogKHNyYzogT2JzZXJ2YWJsZTxUPikgPT4gT2JzZXJ2YWJsZTxUPiA9PiB7XHJcbiAgcmV0dXJuIChzcmM6IE9ic2VydmFibGU8VD4pID0+IHtcclxuICAgIEt2TG9hZGVyU2VydmljZS5zaG93KCk7XHJcbiAgICByZXR1cm4gc3JjLnBpcGUoZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICBLdkxvYWRlclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgfSkpO1xyXG4gIH07XHJcbn07XHJcbiJdfQ==
|