brainloper-ui 14.1.0 → 14.1.2
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/esm2020/brainloper-ui.mjs +4 -4
- package/esm2020/public_api.mjs +56 -51
- package/esm2020/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +310 -305
- package/esm2020/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +29 -29
- package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +23 -23
- package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +83 -83
- package/esm2020/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +37 -31
- package/esm2020/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +176 -176
- package/esm2020/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +728 -652
- package/esm2020/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +118 -118
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +186 -185
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +1 -1
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +1 -1
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +1 -1
- package/esm2020/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +222 -222
- package/esm2020/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.mjs +80 -80
- package/esm2020/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +81 -81
- package/esm2020/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +108 -108
- package/esm2020/src/app/modules/directives/carousel-item.directive.mjs +18 -0
- package/esm2020/src/app/modules/interfaces/buttons/button-icon.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/combos/combos-configuration.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/data-table/params.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/data-table/rules.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/data-table/table-columns.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/data-table/table-configuration.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/enum/enumActions.mjs +8 -7
- package/esm2020/src/app/modules/interfaces/enum/enumRules.mjs +8 -8
- package/esm2020/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/filters/header-filters.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +8 -8
- package/esm2020/src/app/modules/interfaces/report/template-pdf-ot.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/report/template-pfd-fo.mjs +2 -2
- package/esm2020/src/app/modules/services/crypto.service.mjs +37 -37
- package/esm2020/src/app/modules/services/export-data.service.mjs +166 -166
- package/esm2020/src/app/modules/services/file-forms.service.mjs +24 -24
- package/esm2020/src/app/modules/services/functions.service.mjs +54 -54
- package/esm2020/src/app/modules/services/generate-pdf.service.mjs +58 -58
- package/esm2020/src/app/modules/services/http.service.mjs +97 -154
- package/esm2020/src/app/modules/services/loading/loading.component.mjs +28 -28
- package/esm2020/src/app/modules/services/local-storage.service.mjs +115 -115
- package/esm2020/src/app/modules/services/message.service.mjs +200 -200
- package/esm2020/src/app/modules/services/screen-size-util.mjs +6 -6
- package/esm2020/src/app/modules/services/session.service.mjs +42 -42
- package/fesm2015/brainloper-ui.mjs +2819 -2769
- package/fesm2015/brainloper-ui.mjs.map +1 -1
- package/fesm2020/brainloper-ui.mjs +2779 -2733
- package/fesm2020/brainloper-ui.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/package.json +3 -1
- package/public_api.d.ts +55 -50
- package/src/app/modules/brainloper-ui/brainloper-ui.module.d.ts +62 -73
- package/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.d.ts +13 -13
- package/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.d.ts +10 -10
- package/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.d.ts +24 -24
- package/src/app/modules/brainloper-ui/components/carousel/carousel.component.d.ts +15 -12
- package/src/app/modules/brainloper-ui/components/combos/combos.component.d.ts +46 -46
- package/src/app/modules/brainloper-ui/components/data-table/data-table.component.d.ts +125 -119
- package/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.d.ts +21 -21
- package/src/app/modules/brainloper-ui/components/file-input/file-input.component.d.ts +42 -42
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.d.ts +2 -2
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.d.ts +2 -2
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.d.ts +2 -2
- package/src/app/modules/brainloper-ui/components/filters/filters.component.d.ts +30 -30
- package/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.d.ts +35 -35
- package/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.d.ts +36 -36
- package/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.d.ts +26 -26
- package/src/app/modules/directives/carousel-item.directive.d.ts +9 -0
- package/src/app/modules/interfaces/buttons/button-icon.d.ts +9 -9
- package/src/app/modules/interfaces/buttons/button-lavel-edit.d.ts +6 -6
- package/src/app/modules/interfaces/combos/combos-configuration.d.ts +13 -13
- package/src/app/modules/interfaces/data-table/params.d.ts +7 -7
- package/src/app/modules/interfaces/data-table/rules.d.ts +8 -8
- package/src/app/modules/interfaces/data-table/table-columns.d.ts +25 -25
- package/src/app/modules/interfaces/data-table/table-configuration.d.ts +26 -25
- package/src/app/modules/interfaces/enum/enumActions.d.ts +6 -5
- package/src/app/modules/interfaces/enum/enumRules.d.ts +6 -6
- package/src/app/modules/interfaces/file-forms-service/file-forms-params.d.ts +4 -4
- package/src/app/modules/interfaces/file-forms-service/file-input-params.d.ts +13 -13
- package/src/app/modules/interfaces/filters/header-filters.d.ts +13 -13
- package/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.d.ts +10 -10
- package/src/app/modules/interfaces/report/template-pdf-ot.d.ts +19 -19
- package/src/app/modules/interfaces/report/template-pfd-fo.d.ts +20 -20
- package/src/app/modules/services/crypto.service.d.ts +10 -10
- package/src/app/modules/services/export-data.service.d.ts +18 -18
- package/src/app/modules/services/file-forms.service.d.ts +7 -7
- package/src/app/modules/services/functions.service.d.ts +13 -13
- package/src/app/modules/services/generate-pdf.service.d.ts +12 -12
- package/src/app/modules/services/http.service.d.ts +22 -21
- package/src/app/modules/services/loading/loading.component.d.ts +15 -15
- package/src/app/modules/services/local-storage.service.d.ts +49 -49
- package/src/app/modules/services/message.service.d.ts +23 -23
- package/src/app/modules/services/screen-size-util.d.ts +3 -3
- package/src/app/modules/services/session.service.d.ts +14 -14
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import jsPDF from 'jspdf';
|
|
3
|
-
import html2canvas from 'html2canvas';
|
|
4
|
-
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/material/dialog";
|
|
7
|
-
import * as i2 from "../../../../services/message.service";
|
|
8
|
-
import * as i3 from "@angular/material/button";
|
|
9
|
-
export class TemplateFuelComponent {
|
|
10
|
-
constructor(dialogRef, dataModal, dialog, message) {
|
|
11
|
-
this.dialogRef = dialogRef;
|
|
12
|
-
this.dataModal = dataModal;
|
|
13
|
-
this.dialog = dialog;
|
|
14
|
-
this.message = message;
|
|
15
|
-
this.data = {
|
|
16
|
-
name: '',
|
|
17
|
-
nit: '',
|
|
18
|
-
address: '',
|
|
19
|
-
telephone: '',
|
|
20
|
-
mail: '',
|
|
21
|
-
image: '',
|
|
22
|
-
code: '',
|
|
23
|
-
date: '',
|
|
24
|
-
responsible: '',
|
|
25
|
-
id_place: '',
|
|
26
|
-
approved_by: '',
|
|
27
|
-
detalle: '',
|
|
28
|
-
description: '',
|
|
29
|
-
consecutive: '',
|
|
30
|
-
namePlace: '',
|
|
31
|
-
addressPlace: '',
|
|
32
|
-
area: '',
|
|
33
|
-
odometer: '',
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
ngOnInit() {
|
|
37
|
-
this.data = this.dataModal.data;
|
|
38
|
-
}
|
|
39
|
-
ngAfterViewInit() {
|
|
40
|
-
if (this.dataModal.autoGenerate) {
|
|
41
|
-
this.downloadPDF();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
downloadPDF() {
|
|
45
|
-
this.message.openLoading("Cargando", "Generando PDF");
|
|
46
|
-
const DATA = document.getElementById('templateFO');
|
|
47
|
-
const doc = new jsPDF('p', 'pt', 'a4');
|
|
48
|
-
const options = {
|
|
49
|
-
background: 'white',
|
|
50
|
-
scale: 3
|
|
51
|
-
};
|
|
52
|
-
html2canvas(DATA, options)
|
|
53
|
-
.then((canvas) => {
|
|
54
|
-
const img = canvas.toDataURL('image/PNG');
|
|
55
|
-
//add img canvas to pdf
|
|
56
|
-
const bufferX = 15;
|
|
57
|
-
const bufferY = 15;
|
|
58
|
-
const imgProps = doc.getImageProperties(img);
|
|
59
|
-
const pdfWidth = doc.internal.pageSize.getWidth() - 2 * bufferX;
|
|
60
|
-
const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
|
|
61
|
-
doc.addImage(img, 'PNG', bufferX, bufferY, pdfWidth, pdfHeight, undefined, 'FAST');
|
|
62
|
-
return doc;
|
|
63
|
-
})
|
|
64
|
-
.then((docResult) => {
|
|
65
|
-
//docResult.save(`${new Date().toISOString()}_reporte.pdf`);
|
|
66
|
-
docResult.output('dataurlnewwindow', { filename: 'fuekreporte.pdf' });
|
|
67
|
-
this.dialog.closeAll();
|
|
68
|
-
this.message.closeLoading();
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
TemplateFuelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TemplateFuelComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i1.MatDialog }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
TemplateFuelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TemplateFuelComponent, selector: "app-template-fuel", ngImport: i0, template: "<div id=\"templateFO\" #templateFO>\
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TemplateFuelComponent, decorators: [{
|
|
75
|
-
type: Component,
|
|
76
|
-
args: [{ selector: 'app-template-fuel', template: "<div id=\"templateFO\" #templateFO>\
|
|
77
|
-
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
78
|
-
type: Inject,
|
|
79
|
-
args: [MAT_DIALOG_DATA]
|
|
80
|
-
}] }, { type: i1.MatDialog }, { type: i2.MessageService }]; } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtZnVlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL3JlcG9ydC90ZW1wbGF0ZS1mdWVsL3RlbXBsYXRlLWZ1ZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9yZXBvcnQvdGVtcGxhdGUtZnVlbC90ZW1wbGF0ZS1mdWVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUEyQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFPcEYsTUFBTSxPQUFPLHFCQUFxQjtJQXVCaEMsWUFDUyxTQUE4QyxFQUNyQixTQUFTLEVBQ2pDLE1BQWdCLEVBQ2pCLE9BQXVCO1FBSHZCLGNBQVMsR0FBVCxTQUFTLENBQXFDO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQUE7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQXpCaEMsU0FBSSxHQUFHO1lBQ0wsSUFBSSxFQUFFLEVBQUU7WUFDUixHQUFHLEVBQUUsRUFBRTtZQUNQLE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLEVBQUU7WUFDYixJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsRUFBRTtZQUNSLFdBQVcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLEVBQUU7WUFDWixXQUFXLEVBQUUsRUFBRTtZQUNmLE9BQU8sRUFBQyxFQUFFO1lBQ1YsV0FBVyxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxFQUFFO1lBQ2IsWUFBWSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxFQUFFLEVBQUU7WUFDUixRQUFRLEVBQUMsRUFBRTtTQUNaLENBQUE7SUFPRyxDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUE7SUFDakMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtTQUNuQjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUNyRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUc7WUFDZCxVQUFVLEVBQUUsT0FBTztZQUNuQixLQUFLLEVBQUUsQ0FBQztTQUNULENBQUM7UUFDRixXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQzthQUN2QixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNoQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTNDLHVCQUF1QjtZQUN2QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbkIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ25CLE1BQU0sUUFBUSxHQUFJLEdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQy9ELE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2hFLEdBQUcsQ0FBQyxRQUFRLENBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sQ0FDUCxDQUFDO1lBQ0YsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNuQiw0REFBNEQ7WUFDM0QsU0FBUyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7a0hBNUVVLHFCQUFxQiw4Q0F5QnRCLGVBQWU7c0dBekJkLHFCQUFxQix5RENYbEMsdW9OQXFIQTsyRkQxR2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjs7MEJBNkIxQixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IGpzUERGIGZyb20gJ2pzcGRmJztcclxuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcclxuaW1wb3J0IHtNYXREaWFsb2csICBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC10ZW1wbGF0ZS1mdWVsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUtZnVlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGVtcGxhdGUtZnVlbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUZ1ZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBkYXRhID0ge1xyXG4gICAgbmFtZTogJycsXHJcbiAgICBuaXQ6ICcnLFxyXG4gICAgYWRkcmVzczogJycsXHJcbiAgICB0ZWxlcGhvbmU6ICcnLFxyXG4gICAgbWFpbDogJycsXHJcbiAgICBpbWFnZTogJycsXHJcbiAgICBjb2RlOiAnJyxcclxuICAgIGRhdGU6ICcnLFxyXG4gICAgcmVzcG9uc2libGU6ICcnLFxyXG4gICAgaWRfcGxhY2U6ICcnLFxyXG4gICAgYXBwcm92ZWRfYnk6ICcnLFxyXG4gICAgZGV0YWxsZTonJyxcclxuICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgIGNvbnNlY3V0aXZlOiAnJyxcclxuICAgIG5hbWVQbGFjZTogJycsXHJcbiAgICBhZGRyZXNzUGxhY2U6ICcnLFxyXG4gICAgYXJlYTogJycsXHJcbiAgICBvZG9tZXRlcjonJyxcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlRnVlbENvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGFNb2RhbCxcclxuICAgIHByaXZhdGUgZGlhbG9nOk1hdERpYWxvZyxcclxuICAgIHB1YmxpYyBtZXNzYWdlOiBNZXNzYWdlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhTW9kYWwuZGF0YVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCl7XHJcbiAgICBpZih0aGlzLmRhdGFNb2RhbC5hdXRvR2VuZXJhdGUpe1xyXG4gICAgICB0aGlzLmRvd25sb2FkUERGKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZFBERigpOiB2b2lkIHtcclxuICAgIHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyhcIkNhcmdhbmRvXCIsIFwiR2VuZXJhbmRvIFBERlwiKVxyXG4gICAgY29uc3QgREFUQSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZW1wbGF0ZUZPJyk7XHJcbiAgICBjb25zdCBkb2MgPSBuZXcganNQREYoJ3AnLCAncHQnLCAnYTQnKTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICd3aGl0ZScsXHJcbiAgICAgIHNjYWxlOiAzXHJcbiAgICB9O1xyXG4gICAgaHRtbDJjYW52YXMoREFUQSwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKGNhbnZhcykgPT4ge1xyXG4gICAgICAgY29uc3QgaW1nID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvUE5HJyk7XHJcblxyXG4gICAgICAvL2FkZCBpbWcgY2FudmFzIHRvIHBkZlxyXG4gICAgICBjb25zdCBidWZmZXJYID0gMTU7XHJcbiAgICAgIGNvbnN0IGJ1ZmZlclkgPSAxNTtcclxuICAgICAgY29uc3QgaW1nUHJvcHMgPSAoZG9jIGFzIGFueSkuZ2V0SW1hZ2VQcm9wZXJ0aWVzKGltZyk7XHJcbiAgICAgIGNvbnN0IHBkZldpZHRoID0gZG9jLmludGVybmFsLnBhZ2VTaXplLmdldFdpZHRoKCkgLTIgKiBidWZmZXJYO1xyXG4gICAgICBjb25zdCBwZGZIZWlnaHQgPSAoaW1nUHJvcHMuaGVpZ2h0ICogcGRmV2lkdGgpIC8gaW1nUHJvcHMud2lkdGg7XHJcbiAgICAgIGRvYy5hZGRJbWFnZShcclxuICAgICAgICBpbWcsXHJcbiAgICAgICAgJ1BORycsXHJcbiAgICAgICAgYnVmZmVyWCxcclxuICAgICAgICBidWZmZXJZLFxyXG4gICAgICAgIHBkZldpZHRoLFxyXG4gICAgICAgIHBkZkhlaWdodCxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgJ0ZBU1QnXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBkb2M7XHJcbiAgICB9KVxyXG4gICAgLnRoZW4oKGRvY1Jlc3VsdCkgPT4ge1xyXG4gICAgIC8vZG9jUmVzdWx0LnNhdmUoYCR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfV9yZXBvcnRlLnBkZmApO1xyXG4gICAgICBkb2NSZXN1bHQub3V0cHV0KCdkYXRhdXJsbmV3d2luZG93Jywge2ZpbGVuYW1lOiAnZnVla3JlcG9ydGUucGRmJ30pO1xyXG4gICAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpXHJcbiAgICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgaWQ9XCJ0ZW1wbGF0ZUZPXCIgI3RlbXBsYXRlRk8+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGVtcGxhdGUtb3RcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IHdpZHRoOjEwMCU7IG1hcmdpbjowOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj5cclxuXHJcbiAgICAgICAgPCEtLSBFbmNhYmV6YWRvICAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVcIiBzdHlsZT1cIndpZHRoOjEwMCU7IGhlaWdodDozMG1tOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IFwiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6NzAlOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cIm1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtYWxpZ246IGNlbnRlcjsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcIj57e2RhdGEubmFtZX19PC9oMj5cclxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cIm1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtYWxpZ246IGNlbnRlcjsgXCI+TklUOiB7e2RhdGEubml0fX08L2gyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjcwJTsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpyb3c7IGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT1cIm1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtYWxpZ246IGNlbnRlcjsgXCI+e3tkYXRhLmFkZHJlc3N9fTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjogY2VudGVyOyBcIj5URUw6IHt7ZGF0YS50ZWxlcGhvbmV9fTwvaDM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDozMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjkwJTsgaGVpZ2h0OjEwMHB4OyBtYXJnaW46IDEwcHg7ICAgcGFkZGluZzogMTVweDsgIGJhY2tncm91bmQtaW1hZ2U6IHVybCh7e2RhdGEuaW1hZ2V9fSk7XCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOjEwMCU7IGhlaWdodDoxMG1tOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOyBhbGlnbi1pdGVtczogY2VudGVyOyBiYWNrZ3JvdW5kOiAjRjBGNEZGO1wiPlxyXG4gICAgICAgICAgICA8aDIgc3R5bGU9XCJtYXJnaW46MDsgcGFkZGluZzowO1wiPk9SREVOIERFIENPTUJVU1RJQkxFPC9oMj5cclxuICAgICAgICAgICAgPGgyIHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDtcIj5OwrA6IHt7ZGF0YS5jb25zZWN1dGl2ZX19PC9oMj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gQ3VlcnBvIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZVwiIHN0eWxlPVwid2lkdGg6MTAwJTsgaGVpZ2h0OjExbW07IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246cm93OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoxNSU7IGJvcmRlci1yaWdodDoxcHggc29saWQgYmx1ZTsgaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOjVweDsgcGFkZGluZzowO1wiPkZlY2hhOjwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MjAlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+e3tkYXRhLmRhdGV9fTwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MTglOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+T2TDs21ldHJvOjwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MTUlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+e3tkYXRhLm9kb21ldGVyfX08L2gyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjIwJTsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAgYmx1ZTsgaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOjVweDsgcGFkZGluZzowO1wiPsOBcmVhOjwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6NDAlXCI+XHJcbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6MjBweDsgcGFkZGluZzowO1wiPnt7ZGF0YS5hcmVhfX08L2gyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZVwiIHN0eWxlPVwid2lkdGg6MTAwJTsgaGVpZ2h0OjExbW07IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246cm93OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoxNSU7IGJvcmRlci1yaWdodDoxcHggc29saWQgIGJsdWU7IGhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDo1cHg7IHBhZGRpbmc6MDtcIj5Dw7NkaWdvOjwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MjAlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+e3tkYXRhLmNvZGV9fTwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MjAlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+T3BlcmFyaW86PC9oMj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDo0NSU7IGJvcmRlci1yaWdodDoxcHggc29saWQgIGJsdWU7IGhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDo1cHg7IHBhZGRpbmc6MDtcIj57e2RhdGEucmVzcG9uc2libGV9fTwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVcIiBzdHlsZT1cIndpZHRoOjEwMCU7IGhlaWdodDoxMG07IGJhY2tncm91bmQ6ICNGMEY0RkY7XCI+XHJcbiAgICAgICAgICAgIDxoMyBzdHlsZT1cIm1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5EYXRvcyBkZWwgcHJvdmVlZG9yPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVcIiBzdHlsZT1cIndpZHRoOjEwMCU7IGhlaWdodDoxMW1tOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOnJvdyA7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjE1JTsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6M3B4OyBwYWRkaW5nOjA7XCI+THVnYXI6PC9oMj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDozNSU7IGJvcmRlci1yaWdodDoxcHggc29saWQgIGJsdWU7IGhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDozcHg7IHBhZGRpbmc6MDtcIj57e2RhdGEubmFtZVBsYWNlfX08L2gyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjE1JTsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAgYmx1ZTsgaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOjNweDsgcGFkZGluZzowO1wiPkRpcmVjY2nDs246PC9oMj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDozNSVcIj5cclxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDoyMHB4OyBwYWRkaW5nOjA7XCI+e3tkYXRhLmFkZHJlc3NQbGFjZX19PC9oMj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZVwiIHN0eWxlPVwid2lkdGg6MTAwJTsgaGVpZ2h0OjhtbTsgYmFja2dyb3VuZDogI0YwRjRGRjtcIj5cclxuICAgICAgICAgICAgPGgzIHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPkRldGFsbGVzIGRlbCBzZXJ2aWNpbzwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlXCIgc3R5bGU9XCJ3aWR0aDoxMDAlOyBoZWlnaHQ6MjBtbTtcIj5cclxuICAgICAgICAgICAgPGgzIHN0eWxlPVwibWFyZ2luOiA2cHggMCAwIDI1cHg7IHBhZGRpbmc6MDtcIj57e2RhdGEuZGV0YWxsZX19PC9oMz5cclxuICAgICAgICAgICAgPGgzIHN0eWxlPVwibWFyZ2luOiAwIDAgMCAyNXB4OyBwYWRkaW5nOjA7XCI+RGVzY3JpcGNpw7NuOiB7e2RhdGEuZGVzY3JpcHRpb259fTwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZVwiIHN0eWxlPVwid2lkdGg6MTAwJTsgaGVpZ2h0OjEwbW07IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246cm93OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDozNSU7IGJvcmRlci1yaWdodDoxcHggc29saWQgYmx1ZTsgIGhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOjFweDsgcGFkZGluZzowO1wiPkFVVE9SSVpBREEgUE9SOjwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6NjUlXCI+XHJcbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjo1cHg7IHBhZGRpbmc6MDtcIj57e2RhdGEuYXBwcm92ZWRfYnl9fTwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBwaXNvIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6MTAwJTsgaGVpZ2h0OjE1bW07IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGp1c3RpZnktY29udGVudDogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICA8aDMgc3R5bGU9XCJtYXJnaW46MDsgcGFkZGluZzowOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+RmF2b3IgYWRqdW50YXIgbGEgb3JkZW4gZGUgdmVudGEgbyBmYWN0dXJhXHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBzdHlsZT1cIm1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtYWxpZ246IGNlbnRlcjtcIj57e2RhdGEubWFpbH19PC9oMz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgbWFyZ2luLXRvcDogMTVweDtcIj5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkUERGKClcIiBjb2xvcj0ncHJpbWFyeScgbWF0LXJhaXNlZC1idXR0b24+R2VuZXJhciBQREY8L2J1dHRvbj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import jsPDF from 'jspdf';
|
|
3
|
+
import html2canvas from 'html2canvas';
|
|
4
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/dialog";
|
|
7
|
+
import * as i2 from "../../../../services/message.service";
|
|
8
|
+
import * as i3 from "@angular/material/button";
|
|
9
|
+
export class TemplateFuelComponent {
|
|
10
|
+
constructor(dialogRef, dataModal, dialog, message) {
|
|
11
|
+
this.dialogRef = dialogRef;
|
|
12
|
+
this.dataModal = dataModal;
|
|
13
|
+
this.dialog = dialog;
|
|
14
|
+
this.message = message;
|
|
15
|
+
this.data = {
|
|
16
|
+
name: '',
|
|
17
|
+
nit: '',
|
|
18
|
+
address: '',
|
|
19
|
+
telephone: '',
|
|
20
|
+
mail: '',
|
|
21
|
+
image: '',
|
|
22
|
+
code: '',
|
|
23
|
+
date: '',
|
|
24
|
+
responsible: '',
|
|
25
|
+
id_place: '',
|
|
26
|
+
approved_by: '',
|
|
27
|
+
detalle: '',
|
|
28
|
+
description: '',
|
|
29
|
+
consecutive: '',
|
|
30
|
+
namePlace: '',
|
|
31
|
+
addressPlace: '',
|
|
32
|
+
area: '',
|
|
33
|
+
odometer: '',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.data = this.dataModal.data;
|
|
38
|
+
}
|
|
39
|
+
ngAfterViewInit() {
|
|
40
|
+
if (this.dataModal.autoGenerate) {
|
|
41
|
+
this.downloadPDF();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
downloadPDF() {
|
|
45
|
+
this.message.openLoading("Cargando", "Generando PDF");
|
|
46
|
+
const DATA = document.getElementById('templateFO');
|
|
47
|
+
const doc = new jsPDF('p', 'pt', 'a4');
|
|
48
|
+
const options = {
|
|
49
|
+
background: 'white',
|
|
50
|
+
scale: 3
|
|
51
|
+
};
|
|
52
|
+
html2canvas(DATA, options)
|
|
53
|
+
.then((canvas) => {
|
|
54
|
+
const img = canvas.toDataURL('image/PNG');
|
|
55
|
+
//add img canvas to pdf
|
|
56
|
+
const bufferX = 15;
|
|
57
|
+
const bufferY = 15;
|
|
58
|
+
const imgProps = doc.getImageProperties(img);
|
|
59
|
+
const pdfWidth = doc.internal.pageSize.getWidth() - 2 * bufferX;
|
|
60
|
+
const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
|
|
61
|
+
doc.addImage(img, 'PNG', bufferX, bufferY, pdfWidth, pdfHeight, undefined, 'FAST');
|
|
62
|
+
return doc;
|
|
63
|
+
})
|
|
64
|
+
.then((docResult) => {
|
|
65
|
+
//docResult.save(`${new Date().toISOString()}_reporte.pdf`);
|
|
66
|
+
docResult.output('dataurlnewwindow', { filename: 'fuekreporte.pdf' });
|
|
67
|
+
this.dialog.closeAll();
|
|
68
|
+
this.message.closeLoading();
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
TemplateFuelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TemplateFuelComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i1.MatDialog }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
TemplateFuelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TemplateFuelComponent, selector: "app-template-fuel", ngImport: i0, template: "<div id=\"templateFO\" #templateFO>\n <div class=\"template-ot\" style=\"display: flex; flex-direction: column; width:100%; margin:0; background-color: white;\">\n\n <!-- Encabezado -->\n <div class=\"borde\" style=\"width:100%; height:30mm; display:flex; flex-direction: row; align-items: center; \">\n <div style=\"width:70%; display:flex; flex-direction:column; align-items: center;\">\n <h2 style=\"margin:0; padding:0; text-align: center; text-transform: uppercase;\">{{data.name}}</h2>\n <h2 style=\"margin:0; padding:0; text-align: center; \">NIT: {{data.nit}}</h2>\n <div style=\"width:70%; display:flex; flex-direction:row; justify-content: space-around;\">\n <h3 style=\"margin:0; padding:0; text-align: center; \">{{data.address}}</h3>\n <h3 style=\"margin:0; padding:0; text-align: center; \">TEL: {{data.telephone}}</h3>\n </div>\n </div>\n <div style=\"width:30%;\">\n <div class=\"img\"\n style=\"width:90%; height:100px; margin: 10px; padding: 15px; background-image: url({{data.image}});\">\n </div>\n </div>\n\n\n </div>\n <div class=\"borde\"\n style=\"width:100%; height:10mm; display:flex; flex-direction: row; justify-content: space-around; align-items: center; background: #F0F4FF;\">\n <h2 style=\"margin:0; padding:0;\">ORDEN DE COMBUSTIBLE</h2>\n <h2 style=\"margin:0; padding:0;\">N\u00B0: {{data.consecutive}}</h2>\n\n </div>\n\n <!-- Cuerpo -->\n <div class=\"borde\" style=\"width:100%; height:11mm; display:flex; flex-direction:row; align-items: center\">\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">Fecha:</h2>\n </div>\n <div style=\"width:20%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">{{data.date}}</h2>\n </div>\n <div style=\"width:18%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">Od\u00F3metro:</h2>\n </div>\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">{{data.odometer}}</h2>\n </div>\n <div style=\"width:20%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">\u00C1rea:</h2>\n </div>\n <div style=\"width:40%\">\n <h2 style=\"text-align: center; margin-top:20px; padding:0;\">{{data.area}}</h2>\n </div>\n\n </div>\n\n <div class=\"borde\" style=\"width:100%; height:11mm; display:flex; flex-direction:row; align-items: center\">\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">C\u00F3digo:</h2>\n </div>\n <div style=\"width:20%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">{{data.code}}</h2>\n </div>\n <div style=\"width:20%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">Operario:</h2>\n </div>\n <div style=\"width:45%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">{{data.responsible}}</h2>\n </div>\n </div>\n <div class=\"borde\" style=\"width:100%; height:10m; background: #F0F4FF;\">\n <h3 style=\"margin:0; padding:0; text-align: center;\">Datos del proveedor</h3>\n </div>\n <div class=\"borde\" style=\"width:100%; height:11mm; display:flex; flex-direction:row ; align-items: center\">\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:3px; padding:0;\">Lugar:</h2>\n </div>\n <div style=\"width:35%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:3px; padding:0;\">{{data.namePlace}}</h2>\n </div>\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:3px; padding:0;\">Direcci\u00F3n:</h2>\n </div>\n <div style=\"width:35%\">\n <h2 style=\"text-align: center; margin-top:20px; padding:0;\">{{data.addressPlace}}</h2>\n </div>\n\n </div>\n <div class=\"borde\" style=\"width:100%; height:8mm; background: #F0F4FF;\">\n <h3 style=\"margin:0; padding:0; text-align: center;\">Detalles del servicio</h3>\n </div>\n <div class=\"borde\" style=\"width:100%; height:20mm;\">\n <h3 style=\"margin: 6px 0 0 25px; padding:0;\">{{data.detalle}}</h3>\n <h3 style=\"margin: 0 0 0 25px; padding:0;\">Descripci\u00F3n: {{data.description}}</h3>\n </div>\n\n <div class=\"borde\" style=\"width:100%; height:10mm; display:flex; flex-direction:row; align-items: center\">\n <div style=\"width:35%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin:1px; padding:0;\">AUTORIZADA POR:</h2>\n </div>\n <div style=\"width:65%\">\n <h2 style=\"text-align: center; margin:5px; padding:0;\">{{data.approved_by}}</h2>\n </div>\n\n </div>\n\n <!-- piso -->\n <div class=\"borde\"\n style=\"width:100%; height:15mm; display: flex; flex-direction: column; justify-content: center;\">\n <h3 style=\"margin:0; padding:0; text-align: center;\">Favor adjuntar la orden de venta o factura\n </h3>\n <h3 style=\"margin:0; padding:0; text-align: center;\">{{data.mail}}</h3>\n\n </div>\n\n </div>\n</div>\n\n\n<div style=\"display: flex; justify-content: center; margin-top: 15px;\">\n <button (click)=\"downloadPDF()\" color='primary' mat-raised-button>Generar PDF</button>\n</div>\n", styles: [".img{background-size:100%;background-repeat:no-repeat;background-position:center;background-size:contain}h2{font-size:1rem}.borde{border:1px solid blue}\n"], dependencies: [{ kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TemplateFuelComponent, decorators: [{
|
|
75
|
+
type: Component,
|
|
76
|
+
args: [{ selector: 'app-template-fuel', template: "<div id=\"templateFO\" #templateFO>\n <div class=\"template-ot\" style=\"display: flex; flex-direction: column; width:100%; margin:0; background-color: white;\">\n\n <!-- Encabezado -->\n <div class=\"borde\" style=\"width:100%; height:30mm; display:flex; flex-direction: row; align-items: center; \">\n <div style=\"width:70%; display:flex; flex-direction:column; align-items: center;\">\n <h2 style=\"margin:0; padding:0; text-align: center; text-transform: uppercase;\">{{data.name}}</h2>\n <h2 style=\"margin:0; padding:0; text-align: center; \">NIT: {{data.nit}}</h2>\n <div style=\"width:70%; display:flex; flex-direction:row; justify-content: space-around;\">\n <h3 style=\"margin:0; padding:0; text-align: center; \">{{data.address}}</h3>\n <h3 style=\"margin:0; padding:0; text-align: center; \">TEL: {{data.telephone}}</h3>\n </div>\n </div>\n <div style=\"width:30%;\">\n <div class=\"img\"\n style=\"width:90%; height:100px; margin: 10px; padding: 15px; background-image: url({{data.image}});\">\n </div>\n </div>\n\n\n </div>\n <div class=\"borde\"\n style=\"width:100%; height:10mm; display:flex; flex-direction: row; justify-content: space-around; align-items: center; background: #F0F4FF;\">\n <h2 style=\"margin:0; padding:0;\">ORDEN DE COMBUSTIBLE</h2>\n <h2 style=\"margin:0; padding:0;\">N\u00B0: {{data.consecutive}}</h2>\n\n </div>\n\n <!-- Cuerpo -->\n <div class=\"borde\" style=\"width:100%; height:11mm; display:flex; flex-direction:row; align-items: center\">\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">Fecha:</h2>\n </div>\n <div style=\"width:20%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">{{data.date}}</h2>\n </div>\n <div style=\"width:18%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">Od\u00F3metro:</h2>\n </div>\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">{{data.odometer}}</h2>\n </div>\n <div style=\"width:20%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">\u00C1rea:</h2>\n </div>\n <div style=\"width:40%\">\n <h2 style=\"text-align: center; margin-top:20px; padding:0;\">{{data.area}}</h2>\n </div>\n\n </div>\n\n <div class=\"borde\" style=\"width:100%; height:11mm; display:flex; flex-direction:row; align-items: center\">\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">C\u00F3digo:</h2>\n </div>\n <div style=\"width:20%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">{{data.code}}</h2>\n </div>\n <div style=\"width:20%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">Operario:</h2>\n </div>\n <div style=\"width:45%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:5px; padding:0;\">{{data.responsible}}</h2>\n </div>\n </div>\n <div class=\"borde\" style=\"width:100%; height:10m; background: #F0F4FF;\">\n <h3 style=\"margin:0; padding:0; text-align: center;\">Datos del proveedor</h3>\n </div>\n <div class=\"borde\" style=\"width:100%; height:11mm; display:flex; flex-direction:row ; align-items: center\">\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:3px; padding:0;\">Lugar:</h2>\n </div>\n <div style=\"width:35%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:3px; padding:0;\">{{data.namePlace}}</h2>\n </div>\n <div style=\"width:15%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin-top:3px; padding:0;\">Direcci\u00F3n:</h2>\n </div>\n <div style=\"width:35%\">\n <h2 style=\"text-align: center; margin-top:20px; padding:0;\">{{data.addressPlace}}</h2>\n </div>\n\n </div>\n <div class=\"borde\" style=\"width:100%; height:8mm; background: #F0F4FF;\">\n <h3 style=\"margin:0; padding:0; text-align: center;\">Detalles del servicio</h3>\n </div>\n <div class=\"borde\" style=\"width:100%; height:20mm;\">\n <h3 style=\"margin: 6px 0 0 25px; padding:0;\">{{data.detalle}}</h3>\n <h3 style=\"margin: 0 0 0 25px; padding:0;\">Descripci\u00F3n: {{data.description}}</h3>\n </div>\n\n <div class=\"borde\" style=\"width:100%; height:10mm; display:flex; flex-direction:row; align-items: center\">\n <div style=\"width:35%; border-right:1px solid blue; height: 100%;\">\n <h2 style=\"text-align: center; margin:1px; padding:0;\">AUTORIZADA POR:</h2>\n </div>\n <div style=\"width:65%\">\n <h2 style=\"text-align: center; margin:5px; padding:0;\">{{data.approved_by}}</h2>\n </div>\n\n </div>\n\n <!-- piso -->\n <div class=\"borde\"\n style=\"width:100%; height:15mm; display: flex; flex-direction: column; justify-content: center;\">\n <h3 style=\"margin:0; padding:0; text-align: center;\">Favor adjuntar la orden de venta o factura\n </h3>\n <h3 style=\"margin:0; padding:0; text-align: center;\">{{data.mail}}</h3>\n\n </div>\n\n </div>\n</div>\n\n\n<div style=\"display: flex; justify-content: center; margin-top: 15px;\">\n <button (click)=\"downloadPDF()\" color='primary' mat-raised-button>Generar PDF</button>\n</div>\n", styles: [".img{background-size:100%;background-repeat:no-repeat;background-position:center;background-size:contain}h2{font-size:1rem}.borde{border:1px solid blue}\n"] }]
|
|
77
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
78
|
+
type: Inject,
|
|
79
|
+
args: [MAT_DIALOG_DATA]
|
|
80
|
+
}] }, { type: i1.MatDialog }, { type: i2.MessageService }]; } });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtZnVlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL3JlcG9ydC90ZW1wbGF0ZS1mdWVsL3RlbXBsYXRlLWZ1ZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9yZXBvcnQvdGVtcGxhdGUtZnVlbC90ZW1wbGF0ZS1mdWVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUEyQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFPcEYsTUFBTSxPQUFPLHFCQUFxQjtJQXVCaEMsWUFDUyxTQUE4QyxFQUNyQixTQUFTLEVBQ2pDLE1BQWdCLEVBQ2pCLE9BQXVCO1FBSHZCLGNBQVMsR0FBVCxTQUFTLENBQXFDO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQUE7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQXpCaEMsU0FBSSxHQUFHO1lBQ0wsSUFBSSxFQUFFLEVBQUU7WUFDUixHQUFHLEVBQUUsRUFBRTtZQUNQLE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLEVBQUU7WUFDYixJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsRUFBRTtZQUNSLFdBQVcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLEVBQUU7WUFDWixXQUFXLEVBQUUsRUFBRTtZQUNmLE9BQU8sRUFBQyxFQUFFO1lBQ1YsV0FBVyxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxFQUFFO1lBQ2IsWUFBWSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxFQUFFLEVBQUU7WUFDUixRQUFRLEVBQUMsRUFBRTtTQUNaLENBQUE7SUFPRyxDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUE7SUFDakMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtTQUNuQjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUNyRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUc7WUFDZCxVQUFVLEVBQUUsT0FBTztZQUNuQixLQUFLLEVBQUUsQ0FBQztTQUNULENBQUM7UUFDRixXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQzthQUN2QixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNoQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTNDLHVCQUF1QjtZQUN2QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbkIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ25CLE1BQU0sUUFBUSxHQUFJLEdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQy9ELE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2hFLEdBQUcsQ0FBQyxRQUFRLENBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sQ0FDUCxDQUFDO1lBQ0YsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNuQiw0REFBNEQ7WUFDM0QsU0FBUyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7a0hBNUVVLHFCQUFxQiw4Q0F5QnRCLGVBQWU7c0dBekJkLHFCQUFxQix5RENYbEMsNjVNQXFIQTsyRkQxR2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjs7MEJBNkIxQixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQganNQREYgZnJvbSAnanNwZGYnO1xuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcbmltcG9ydCB7TWF0RGlhbG9nLCAgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVtcGxhdGUtZnVlbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS1mdWVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGVtcGxhdGUtZnVlbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlRnVlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZGF0YSA9IHtcbiAgICBuYW1lOiAnJyxcbiAgICBuaXQ6ICcnLFxuICAgIGFkZHJlc3M6ICcnLFxuICAgIHRlbGVwaG9uZTogJycsXG4gICAgbWFpbDogJycsXG4gICAgaW1hZ2U6ICcnLFxuICAgIGNvZGU6ICcnLFxuICAgIGRhdGU6ICcnLFxuICAgIHJlc3BvbnNpYmxlOiAnJyxcbiAgICBpZF9wbGFjZTogJycsXG4gICAgYXBwcm92ZWRfYnk6ICcnLFxuICAgIGRldGFsbGU6JycsXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGNvbnNlY3V0aXZlOiAnJyxcbiAgICBuYW1lUGxhY2U6ICcnLFxuICAgIGFkZHJlc3NQbGFjZTogJycsXG4gICAgYXJlYTogJycsXG4gICAgb2RvbWV0ZXI6JycsXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVGdWVsQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGFNb2RhbCxcbiAgICBwcml2YXRlIGRpYWxvZzpNYXREaWFsb2csXG4gICAgcHVibGljIG1lc3NhZ2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhTW9kYWwuZGF0YVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCl7XG4gICAgaWYodGhpcy5kYXRhTW9kYWwuYXV0b0dlbmVyYXRlKXtcbiAgICAgIHRoaXMuZG93bmxvYWRQREYoKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZFBERigpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2Uub3BlbkxvYWRpbmcoXCJDYXJnYW5kb1wiLCBcIkdlbmVyYW5kbyBQREZcIilcbiAgICBjb25zdCBEQVRBID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlbXBsYXRlRk8nKTtcbiAgICBjb25zdCBkb2MgPSBuZXcganNQREYoJ3AnLCAncHQnLCAnYTQnKTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgYmFja2dyb3VuZDogJ3doaXRlJyxcbiAgICAgIHNjYWxlOiAzXG4gICAgfTtcbiAgICBodG1sMmNhbnZhcyhEQVRBLCBvcHRpb25zKVxuICAgICAgLnRoZW4oKGNhbnZhcykgPT4ge1xuICAgICAgIGNvbnN0IGltZyA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL1BORycpO1xuXG4gICAgICAvL2FkZCBpbWcgY2FudmFzIHRvIHBkZlxuICAgICAgY29uc3QgYnVmZmVyWCA9IDE1O1xuICAgICAgY29uc3QgYnVmZmVyWSA9IDE1O1xuICAgICAgY29uc3QgaW1nUHJvcHMgPSAoZG9jIGFzIGFueSkuZ2V0SW1hZ2VQcm9wZXJ0aWVzKGltZyk7XG4gICAgICBjb25zdCBwZGZXaWR0aCA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpIC0yICogYnVmZmVyWDtcbiAgICAgIGNvbnN0IHBkZkhlaWdodCA9IChpbWdQcm9wcy5oZWlnaHQgKiBwZGZXaWR0aCkgLyBpbWdQcm9wcy53aWR0aDtcbiAgICAgIGRvYy5hZGRJbWFnZShcbiAgICAgICAgaW1nLFxuICAgICAgICAnUE5HJyxcbiAgICAgICAgYnVmZmVyWCxcbiAgICAgICAgYnVmZmVyWSxcbiAgICAgICAgcGRmV2lkdGgsXG4gICAgICAgIHBkZkhlaWdodCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAnRkFTVCdcbiAgICAgICk7XG4gICAgICByZXR1cm4gZG9jO1xuICAgIH0pXG4gICAgLnRoZW4oKGRvY1Jlc3VsdCkgPT4ge1xuICAgICAvL2RvY1Jlc3VsdC5zYXZlKGAke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX1fcmVwb3J0ZS5wZGZgKTtcbiAgICAgIGRvY1Jlc3VsdC5vdXRwdXQoJ2RhdGF1cmxuZXd3aW5kb3cnLCB7ZmlsZW5hbWU6ICdmdWVrcmVwb3J0ZS5wZGYnfSk7XG4gICAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpXG4gICAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKClcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBpZD1cInRlbXBsYXRlRk9cIiAjdGVtcGxhdGVGTz5cbiAgICA8ZGl2IGNsYXNzPVwidGVtcGxhdGUtb3RcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IHdpZHRoOjEwMCU7IG1hcmdpbjowOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj5cblxuICAgICAgICA8IS0tIEVuY2FiZXphZG8gIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVcIiBzdHlsZT1cIndpZHRoOjEwMCU7IGhlaWdodDozMG1tOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IFwiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjcwJTsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjogY2VudGVyOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1wiPnt7ZGF0YS5uYW1lfX08L2gyPlxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cIm1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtYWxpZ246IGNlbnRlcjsgXCI+TklUOiB7e2RhdGEubml0fX08L2gyPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDo3MCU7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246cm93OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjogY2VudGVyOyBcIj57e2RhdGEuYWRkcmVzc319PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjogY2VudGVyOyBcIj5URUw6IHt7ZGF0YS50ZWxlcGhvbmV9fTwvaDM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDozMCU7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZ1wiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6OTAlOyBoZWlnaHQ6MTAwcHg7IG1hcmdpbjogMTBweDsgICBwYWRkaW5nOiAxNXB4OyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKHt7ZGF0YS5pbWFnZX19KTtcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZVwiXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOjEwMCU7IGhlaWdodDoxMG1tOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOyBhbGlnbi1pdGVtczogY2VudGVyOyBiYWNrZ3JvdW5kOiAjRjBGNEZGO1wiPlxuICAgICAgICAgICAgPGgyIHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDtcIj5PUkRFTiBERSBDT01CVVNUSUJMRTwvaDI+XG4gICAgICAgICAgICA8aDIgc3R5bGU9XCJtYXJnaW46MDsgcGFkZGluZzowO1wiPk7CsDoge3tkYXRhLmNvbnNlY3V0aXZlfX08L2gyPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ3VlcnBvIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVcIiBzdHlsZT1cIndpZHRoOjEwMCU7IGhlaWdodDoxMW1tOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOnJvdzsgYWxpZ24taXRlbXM6IGNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjE1JTsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOjVweDsgcGFkZGluZzowO1wiPkZlY2hhOjwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoyMCU7IGJvcmRlci1yaWdodDoxcHggc29saWQgIGJsdWU7IGhlaWdodDogMTAwJTtcIj5cbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+e3tkYXRhLmRhdGV9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoxOCU7IGJvcmRlci1yaWdodDoxcHggc29saWQgIGJsdWU7IGhlaWdodDogMTAwJTtcIj5cbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+T2TDs21ldHJvOjwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoxNSU7IGJvcmRlci1yaWdodDoxcHggc29saWQgIGJsdWU7IGhlaWdodDogMTAwJTtcIj5cbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+e3tkYXRhLm9kb21ldGVyfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MjAlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOjVweDsgcGFkZGluZzowO1wiPsOBcmVhOjwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDo0MCVcIj5cbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6MjBweDsgcGFkZGluZzowO1wiPnt7ZGF0YS5hcmVhfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlXCIgc3R5bGU9XCJ3aWR0aDoxMDAlOyBoZWlnaHQ6MTFtbTsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpyb3c7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoxNSU7IGJvcmRlci1yaWdodDoxcHggc29saWQgIGJsdWU7IGhlaWdodDogMTAwJTtcIj5cbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+Q8OzZGlnbzo8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MjAlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOjVweDsgcGFkZGluZzowO1wiPnt7ZGF0YS5jb2RlfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MjAlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOjVweDsgcGFkZGluZzowO1wiPk9wZXJhcmlvOjwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDo0NSU7IGJvcmRlci1yaWdodDoxcHggc29saWQgIGJsdWU7IGhlaWdodDogMTAwJTtcIj5cbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6NXB4OyBwYWRkaW5nOjA7XCI+e3tkYXRhLnJlc3BvbnNpYmxlfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlXCIgc3R5bGU9XCJ3aWR0aDoxMDAlOyBoZWlnaHQ6MTBtOyBiYWNrZ3JvdW5kOiAjRjBGNEZGO1wiPlxuICAgICAgICAgICAgPGgzIHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPkRhdG9zIGRlbCBwcm92ZWVkb3I8L2gzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlXCIgc3R5bGU9XCJ3aWR0aDoxMDAlOyBoZWlnaHQ6MTFtbTsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpyb3cgOyBhbGlnbi1pdGVtczogY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MTUlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIGJsdWU7IGhlaWdodDogMTAwJTtcIj5cbiAgICAgICAgICAgICAgICA8aDIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6M3B4OyBwYWRkaW5nOjA7XCI+THVnYXI6PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjM1JTsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAgYmx1ZTsgaGVpZ2h0OiAxMDAlO1wiPlxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDozcHg7IHBhZGRpbmc6MDtcIj57e2RhdGEubmFtZVBsYWNlfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MTUlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICBibHVlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOjNweDsgcGFkZGluZzowO1wiPkRpcmVjY2nDs246PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjM1JVwiPlxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDoyMHB4OyBwYWRkaW5nOjA7XCI+e3tkYXRhLmFkZHJlc3NQbGFjZX19PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVcIiBzdHlsZT1cIndpZHRoOjEwMCU7IGhlaWdodDo4bW07IGJhY2tncm91bmQ6ICNGMEY0RkY7XCI+XG4gICAgICAgICAgICA8aDMgc3R5bGU9XCJtYXJnaW46MDsgcGFkZGluZzowOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+RGV0YWxsZXMgZGVsIHNlcnZpY2lvPC9oMz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZVwiIHN0eWxlPVwid2lkdGg6MTAwJTsgaGVpZ2h0OjIwbW07XCI+XG4gICAgICAgICAgICA8aDMgc3R5bGU9XCJtYXJnaW46IDZweCAwIDAgMjVweDsgcGFkZGluZzowO1wiPnt7ZGF0YS5kZXRhbGxlfX08L2gzPlxuICAgICAgICAgICAgPGgzIHN0eWxlPVwibWFyZ2luOiAwIDAgMCAyNXB4OyBwYWRkaW5nOjA7XCI+RGVzY3JpcGNpw7NuOiB7e2RhdGEuZGVzY3JpcHRpb259fTwvaDM+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZVwiIHN0eWxlPVwid2lkdGg6MTAwJTsgaGVpZ2h0OjEwbW07IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246cm93OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MzUlOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIGJsdWU7ICBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgICAgPGgyIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46MXB4OyBwYWRkaW5nOjA7XCI+QVVUT1JJWkFEQSBQT1I6PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjY1JVwiPlxuICAgICAgICAgICAgICAgIDxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOjVweDsgcGFkZGluZzowO1wiPnt7ZGF0YS5hcHByb3ZlZF9ieX19PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gcGlzbyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6MTAwJTsgaGVpZ2h0OjE1bW07IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGp1c3RpZnktY29udGVudDogY2VudGVyO1wiPlxuICAgICAgICAgICAgPGgzIHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPkZhdm9yIGFkanVudGFyIGxhIG9yZGVuIGRlIHZlbnRhIG8gZmFjdHVyYVxuICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDxoMyBzdHlsZT1cIm1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtYWxpZ246IGNlbnRlcjtcIj57e2RhdGEubWFpbH19PC9oMz5cblxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuPC9kaXY+XG5cblxuPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBtYXJnaW4tdG9wOiAxNXB4O1wiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkUERGKClcIiBjb2xvcj0ncHJpbWFyeScgbWF0LXJhaXNlZC1idXR0b24+R2VuZXJhciBQREY8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
package/esm2020/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs
CHANGED
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/forms";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
import * as i3 from "@angular/material/progress-spinner";
|
|
6
|
-
import * as i4 from "@angular/material/input";
|
|
7
|
-
export class SelectFilterComponent {
|
|
8
|
-
constructor(fb) {
|
|
9
|
-
this.showSpinner = true;
|
|
10
|
-
this.noResultsMessage = 'No results';
|
|
11
|
-
this.noResults = false;
|
|
12
|
-
this.localSpinner = false;
|
|
13
|
-
this.filteredReturn = new EventEmitter();
|
|
14
|
-
this.filteredItems = [];
|
|
15
|
-
this.searchForm = fb.group({
|
|
16
|
-
value: ''
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
this.searchFormValueChangesSubscription = this.searchForm.valueChanges.subscribe(value => {
|
|
21
|
-
const searchValue = value['value'] ? value['value'].toLowerCase() : '';
|
|
22
|
-
if (this.showSpinner) {
|
|
23
|
-
this.localSpinner = true;
|
|
24
|
-
}
|
|
25
|
-
if (searchValue) {
|
|
26
|
-
if (this.displayMember == null) {
|
|
27
|
-
this.filteredItems = this.array.filter(name => name.toLowerCase().includes(searchValue));
|
|
28
|
-
}
|
|
29
|
-
else if (this.hasGroup && this.groupArrayName && this.displayMember) {
|
|
30
|
-
this.filteredItems = this.array.map(a => {
|
|
31
|
-
const objCopy = { ...a };
|
|
32
|
-
objCopy[this.groupArrayName] = objCopy[this.groupArrayName].filter(g => g[this.displayMember].toLowerCase().includes(searchValue));
|
|
33
|
-
return objCopy;
|
|
34
|
-
}).filter(x => x[this.groupArrayName].length > 0);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
this.filteredItems = this.array.filter(name => name[this.displayMember].toLowerCase().includes(searchValue));
|
|
38
|
-
}
|
|
39
|
-
this.noResults = this.filteredItems.length === 0;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this.filteredItems = [...this.array];
|
|
43
|
-
this.noResults = false;
|
|
44
|
-
}
|
|
45
|
-
this.filteredReturn.emit(this.filteredItems);
|
|
46
|
-
setTimeout(() => {
|
|
47
|
-
if (this.showSpinner) {
|
|
48
|
-
this.localSpinner = false;
|
|
49
|
-
}
|
|
50
|
-
}, 2000);
|
|
51
|
-
});
|
|
52
|
-
setTimeout(() => {
|
|
53
|
-
this.input.nativeElement.focus();
|
|
54
|
-
}, 500);
|
|
55
|
-
if (!this.placeholder) {
|
|
56
|
-
this.placeholder = 'Search...';
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
handleKeydown(event) {
|
|
60
|
-
const isAlphanumeric = (event.key && event.key.length === 1) ||
|
|
61
|
-
(event.code >= 'KeyA' && event.code <= 'KeyZ') ||
|
|
62
|
-
(event.code >= 'Digit0' && event.code <= 'Digit9') ||
|
|
63
|
-
(event.code === 'Space');
|
|
64
|
-
if (isAlphanumeric) {
|
|
65
|
-
event.stopPropagation();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
ngOnDestroy() {
|
|
69
|
-
this.filteredReturn.emit(this.array);
|
|
70
|
-
this.searchFormValueChangesSubscription.unsubscribe();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
SelectFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectFilterComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
74
|
-
SelectFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SelectFilterComponent, selector: "app-select-filter", inputs: { array: "array", placeholder: "placeholder", color: "color", displayMember: "displayMember", showSpinner: "showSpinner", noResultsMessage: "noResultsMessage", hasGroup: "hasGroup", groupArrayName: "groupArrayName" }, outputs: { filteredReturn: "filteredReturn" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"searchForm\" class=\"mat-filter\" [ngStyle]=\"{'background-color': color ? color : 'white'}\">\
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectFilterComponent, decorators: [{
|
|
76
|
-
type: Component,
|
|
77
|
-
args: [{ selector: 'app-select-filter', template: "<form [formGroup]=\"searchForm\" class=\"mat-filter\" [ngStyle]=\"{'background-color': color ? color : 'white'}\">\
|
|
78
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { input: [{
|
|
79
|
-
type: ViewChild,
|
|
80
|
-
args: ['input', { static: true }]
|
|
81
|
-
}], array: [{
|
|
82
|
-
type: Input,
|
|
83
|
-
args: ['array']
|
|
84
|
-
}], placeholder: [{
|
|
85
|
-
type: Input,
|
|
86
|
-
args: ['placeholder']
|
|
87
|
-
}], color: [{
|
|
88
|
-
type: Input,
|
|
89
|
-
args: ['color']
|
|
90
|
-
}], displayMember: [{
|
|
91
|
-
type: Input,
|
|
92
|
-
args: ['displayMember']
|
|
93
|
-
}], showSpinner: [{
|
|
94
|
-
type: Input,
|
|
95
|
-
args: ['showSpinner']
|
|
96
|
-
}], noResultsMessage: [{
|
|
97
|
-
type: Input,
|
|
98
|
-
args: ['noResultsMessage']
|
|
99
|
-
}], hasGroup: [{
|
|
100
|
-
type: Input,
|
|
101
|
-
args: ['hasGroup']
|
|
102
|
-
}], groupArrayName: [{
|
|
103
|
-
type: Input,
|
|
104
|
-
args: ['groupArrayName']
|
|
105
|
-
}], filteredReturn: [{
|
|
106
|
-
type: Output
|
|
107
|
-
}] } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL3NlbGVjdC1maWx0ZXIvc2VsZWN0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL3NlbGVjdC1maWx0ZXIvc2VsZWN0LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWdCckcsTUFBTSxPQUFPLHFCQUFxQjtJQXNCaEMsWUFBWSxFQUFlO1FBYkwsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDZCxxQkFBZ0IsR0FBRyxZQUFZLENBQUM7UUFJM0QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNYLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU1QyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUk3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDekIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckYsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxD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UUFBUSxDQUFDO1lBQ2xELENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztRQUU3QixJQUFJLGNBQWMsRUFBRTtZQUNoQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUMsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEQsQ0FBQzs7a0hBeEZVLHFCQUFxQjtzR0FBckIscUJBQXFCLHdiQ2hCbEMsa2ZBVUE7MkZETWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjtrR0FPUyxLQUFLO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXBCLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDUSxXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ0osS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPO2dCQUNVLGFBQWE7c0JBQXBDLEtBQUs7dUJBQUMsZUFBZTtnQkFDQSxXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ08sZ0JBQWdCO3NCQUExQyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFDTixRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ1EsY0FBYztzQkFBdEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBS2IsY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEEsXHJcbiAgWixcclxuICBaRVJPLFxyXG4gIE5JTkUsXHJcbiAgU1BBQ0UsIEVORCwgSE9NRSxcclxufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2VsZWN0LWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0RmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kgIHtcclxuXHJcbiAgcHJpdmF0ZSBzZWFyY2hGb3JtVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dDtcclxuXHJcbiAgQElucHV0KCdhcnJheScpIGFycmF5OiBhbnk7XHJcbiAgQElucHV0KCdwbGFjZWhvbGRlcicpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCdjb2xvcicpIGNvbG9yOiBzdHJpbmc7XHJcbiAgQElucHV0KCdkaXNwbGF5TWVtYmVyJykgZGlzcGxheU1lbWJlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgnc2hvd1NwaW5uZXInKSBzaG93U3Bpbm5lciA9IHRydWU7XHJcbiAgQElucHV0KCdub1Jlc3VsdHNNZXNzYWdlJykgbm9SZXN1bHRzTWVzc2FnZSA9ICdObyByZXN1bHRzJztcclxuICBASW5wdXQoJ2hhc0dyb3VwJykgaGFzR3JvdXA6IGJvb2xlYW47XHJcbiAgQElucHV0KCdncm91cEFycmF5TmFtZScpIGdyb3VwQXJyYXlOYW1lOiBzdHJpbmc7XHJcblxyXG4gIG5vUmVzdWx0cyA9IGZhbHNlO1xyXG5cclxuICBsb2NhbFNwaW5uZXIgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgZmlsdGVyZWRSZXR1cm4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHVibGljIGZpbHRlcmVkSXRlbXM6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyBzZWFyY2hGb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZiOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtID0gZmIuZ3JvdXAoe1xyXG4gICAgICB2YWx1ZTogJydcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNlYXJjaEZvcm1WYWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaEZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoVmFsdWUgPSB2YWx1ZVsndmFsdWUnXSA/IHZhbHVlWyd2YWx1ZSddLnRvTG93ZXJDYXNlKCkgOiAnJztcclxuICAgICAgICBpZiAodGhpcy5zaG93U3Bpbm5lcikge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2FsU3Bpbm5lciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2VhcmNoVmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGxheU1lbWJlciA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLmFycmF5LmZpbHRlcihuYW1lID0+IG5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZSkpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzR3JvdXAgJiYgdGhpcy5ncm91cEFycmF5TmFtZSAmJiB0aGlzLmRpc3BsYXlNZW1iZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuYXJyYXkubWFwKGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iakNvcHkgPSB7IC4uLmEgfTtcclxuICAgICAgICAgICAgICAgICAgICBvYmpDb3B5W3RoaXMuZ3JvdXBBcnJheU5hbWVdID0gb2JqQ29weVt0aGlzLmdyb3VwQXJyYXlOYW1lXS5maWx0ZXIoZyA9PiBnW3RoaXMuZGlzcGxheU1lbWJlcl0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmpDb3B5O1xyXG4gICAgICAgICAgICAgICAgfSkuZmlsdGVyKHggPT4geFt0aGlzLmdyb3VwQXJyYXlOYW1lXS5sZW5ndGggPiAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuYXJyYXkuZmlsdGVyKG5hbWUgPT4gbmFtZVt0aGlzLmRpc3BsYXlNZW1iZXJdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5ub1Jlc3VsdHMgPSB0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoID09PSAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFsuLi50aGlzLmFycmF5XTtcclxuICAgICAgICAgICAgdGhpcy5ub1Jlc3VsdHMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRSZXR1cm4uZW1pdCh0aGlzLmZpbHRlcmVkSXRlbXMpO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1NwaW5uZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAyMDAwKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfSwgNTAwKTtcclxuXHJcbiAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcclxuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gJ1NlYXJjaC4uLic7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5cclxuICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBpc0FscGhhbnVtZXJpYyA9IChldmVudC5rZXkgJiYgZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkgfHxcclxuICAgICAgICAoZXZlbnQuY29kZSA+PSAnS2V5QScgJiYgZXZlbnQuY29kZSA8PSAnS2V5WicpIHx8XHJcbiAgICAgICAgKGV2ZW50LmNvZGUgPj0gJ0RpZ2l0MCcgJiYgZXZlbnQuY29kZSA8PSAnRGlnaXQ5JykgfHxcclxuICAgICAgICAoZXZlbnQuY29kZSA9PT0gJ1NwYWNlJyk7XHJcblxyXG4gICAgaWYgKGlzQWxwaGFudW1lcmljKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmZpbHRlcmVkUmV0dXJuLmVtaXQodGhpcy5hcnJheSk7XHJcbiAgICB0aGlzLnNlYXJjaEZvcm1WYWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIGNsYXNzPVwibWF0LWZpbHRlclwiIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGNvbG9yID8gY29sb3IgOiAnd2hpdGUnfVwiPlxyXG4gIDxkaXY+XHJcbiAgPGlucHV0ICNpbnB1dCBjbGFzcz1cIm1hdC1maWx0ZXItaW5wdXRcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCI+XHJcbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJsb2NhbFNwaW5uZXJcIiBjbGFzcz1cInNwaW5uZXJcIiBkaWFtZXRlcj1cIjE2XCI+PC9tYXQtc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwibm9SZXN1bHRzXCJcclxuICAgICBjbGFzcz1cIm5vUmVzdWx0c01lc3NhZ2VcIj5cclxuICB7e25vUmVzdWx0c01lc3NhZ2V9fVxyXG48L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/forms";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/material/progress-spinner";
|
|
6
|
+
import * as i4 from "@angular/material/input";
|
|
7
|
+
export class SelectFilterComponent {
|
|
8
|
+
constructor(fb) {
|
|
9
|
+
this.showSpinner = true;
|
|
10
|
+
this.noResultsMessage = 'No results';
|
|
11
|
+
this.noResults = false;
|
|
12
|
+
this.localSpinner = false;
|
|
13
|
+
this.filteredReturn = new EventEmitter();
|
|
14
|
+
this.filteredItems = [];
|
|
15
|
+
this.searchForm = fb.group({
|
|
16
|
+
value: ''
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
this.searchFormValueChangesSubscription = this.searchForm.valueChanges.subscribe(value => {
|
|
21
|
+
const searchValue = value['value'] ? value['value'].toLowerCase() : '';
|
|
22
|
+
if (this.showSpinner) {
|
|
23
|
+
this.localSpinner = true;
|
|
24
|
+
}
|
|
25
|
+
if (searchValue) {
|
|
26
|
+
if (this.displayMember == null) {
|
|
27
|
+
this.filteredItems = this.array.filter(name => name.toLowerCase().includes(searchValue));
|
|
28
|
+
}
|
|
29
|
+
else if (this.hasGroup && this.groupArrayName && this.displayMember) {
|
|
30
|
+
this.filteredItems = this.array.map(a => {
|
|
31
|
+
const objCopy = { ...a };
|
|
32
|
+
objCopy[this.groupArrayName] = objCopy[this.groupArrayName].filter(g => g[this.displayMember].toLowerCase().includes(searchValue));
|
|
33
|
+
return objCopy;
|
|
34
|
+
}).filter(x => x[this.groupArrayName].length > 0);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this.filteredItems = this.array.filter(name => name[this.displayMember].toLowerCase().includes(searchValue));
|
|
38
|
+
}
|
|
39
|
+
this.noResults = this.filteredItems.length === 0;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.filteredItems = [...this.array];
|
|
43
|
+
this.noResults = false;
|
|
44
|
+
}
|
|
45
|
+
this.filteredReturn.emit(this.filteredItems);
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
if (this.showSpinner) {
|
|
48
|
+
this.localSpinner = false;
|
|
49
|
+
}
|
|
50
|
+
}, 2000);
|
|
51
|
+
});
|
|
52
|
+
setTimeout(() => {
|
|
53
|
+
this.input.nativeElement.focus();
|
|
54
|
+
}, 500);
|
|
55
|
+
if (!this.placeholder) {
|
|
56
|
+
this.placeholder = 'Search...';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
handleKeydown(event) {
|
|
60
|
+
const isAlphanumeric = (event.key && event.key.length === 1) ||
|
|
61
|
+
(event.code >= 'KeyA' && event.code <= 'KeyZ') ||
|
|
62
|
+
(event.code >= 'Digit0' && event.code <= 'Digit9') ||
|
|
63
|
+
(event.code === 'Space');
|
|
64
|
+
if (isAlphanumeric) {
|
|
65
|
+
event.stopPropagation();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
ngOnDestroy() {
|
|
69
|
+
this.filteredReturn.emit(this.array);
|
|
70
|
+
this.searchFormValueChangesSubscription.unsubscribe();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
SelectFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectFilterComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
74
|
+
SelectFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SelectFilterComponent, selector: "app-select-filter", inputs: { array: "array", placeholder: "placeholder", color: "color", displayMember: "displayMember", showSpinner: "showSpinner", noResultsMessage: "noResultsMessage", hasGroup: "hasGroup", groupArrayName: "groupArrayName" }, outputs: { filteredReturn: "filteredReturn" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"searchForm\" class=\"mat-filter\" [ngStyle]=\"{'background-color': color ? color : 'white'}\">\n <div>\n <input #input class=\"mat-filter-input\" matInput placeholder=\"{{placeholder}}\" formControlName=\"value\" (keydown)=\"handleKeydown($event)\">\n <mat-spinner *ngIf=\"localSpinner\" class=\"spinner\" diameter=\"16\"></mat-spinner>\n </div>\n <div *ngIf=\"noResults\"\n class=\"noResultsMessage\">\n {{noResultsMessage}}\n</div>\n</form>\n", styles: [".mat-filter{position:sticky;top:0;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:gray;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:16px;box-sizing:border-box}.mat-filter-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:0;background-color:transparent;background-color:initial;color:gray;width:100%}.spinner{position:absolute;right:16px;top:calc(50% - 8px)}.noResultsMessage{margin-top:10px;font-family:Roboto,Helvetica Neue,sans-serif;font-size:16px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectFilterComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'app-select-filter', template: "<form [formGroup]=\"searchForm\" class=\"mat-filter\" [ngStyle]=\"{'background-color': color ? color : 'white'}\">\n <div>\n <input #input class=\"mat-filter-input\" matInput placeholder=\"{{placeholder}}\" formControlName=\"value\" (keydown)=\"handleKeydown($event)\">\n <mat-spinner *ngIf=\"localSpinner\" class=\"spinner\" diameter=\"16\"></mat-spinner>\n </div>\n <div *ngIf=\"noResults\"\n class=\"noResultsMessage\">\n {{noResultsMessage}}\n</div>\n</form>\n", styles: [".mat-filter{position:sticky;top:0;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:gray;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:16px;box-sizing:border-box}.mat-filter-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:0;background-color:transparent;background-color:initial;color:gray;width:100%}.spinner{position:absolute;right:16px;top:calc(50% - 8px)}.noResultsMessage{margin-top:10px;font-family:Roboto,Helvetica Neue,sans-serif;font-size:16px}\n"] }]
|
|
78
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { input: [{
|
|
79
|
+
type: ViewChild,
|
|
80
|
+
args: ['input', { static: true }]
|
|
81
|
+
}], array: [{
|
|
82
|
+
type: Input,
|
|
83
|
+
args: ['array']
|
|
84
|
+
}], placeholder: [{
|
|
85
|
+
type: Input,
|
|
86
|
+
args: ['placeholder']
|
|
87
|
+
}], color: [{
|
|
88
|
+
type: Input,
|
|
89
|
+
args: ['color']
|
|
90
|
+
}], displayMember: [{
|
|
91
|
+
type: Input,
|
|
92
|
+
args: ['displayMember']
|
|
93
|
+
}], showSpinner: [{
|
|
94
|
+
type: Input,
|
|
95
|
+
args: ['showSpinner']
|
|
96
|
+
}], noResultsMessage: [{
|
|
97
|
+
type: Input,
|
|
98
|
+
args: ['noResultsMessage']
|
|
99
|
+
}], hasGroup: [{
|
|
100
|
+
type: Input,
|
|
101
|
+
args: ['hasGroup']
|
|
102
|
+
}], groupArrayName: [{
|
|
103
|
+
type: Input,
|
|
104
|
+
args: ['groupArrayName']
|
|
105
|
+
}], filteredReturn: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}] } });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL3NlbGVjdC1maWx0ZXIvc2VsZWN0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL3NlbGVjdC1maWx0ZXIvc2VsZWN0LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWdCckcsTUFBTSxPQUFPLHFCQUFxQjtJQXNCaEMsWUFBWSxFQUFlO1FBYkwsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDZCxxQkFBZ0IsR0FBRyxZQUFZLENBQUM7UUFJM0QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNYLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU1QyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUk3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDekIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckYsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxD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UUFBUSxDQUFDO1lBQ2xELENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztRQUU3QixJQUFJLGNBQWMsRUFBRTtZQUNoQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUMsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEQsQ0FBQzs7a0hBeEZVLHFCQUFxQjtzR0FBckIscUJBQXFCLHdiQ2hCbEMsOGRBVUE7MkZETWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjtrR0FPUyxLQUFLO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXBCLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDUSxXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ0osS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPO2dCQUNVLGFBQWE7c0JBQXBDLEtBQUs7dUJBQUMsZUFBZTtnQkFDQSxXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ08sZ0JBQWdCO3NCQUExQyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFDTixRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ1EsY0FBYztzQkFBdEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBS2IsY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBLFxuICBaLFxuICBaRVJPLFxuICBOSU5FLFxuICBTUEFDRSwgRU5ELCBIT01FLFxufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc2VsZWN0LWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWZpbHRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95ICB7XG5cbiAgcHJpdmF0ZSBzZWFyY2hGb3JtVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXQ7XG5cbiAgQElucHV0KCdhcnJheScpIGFycmF5OiBhbnk7XG4gIEBJbnB1dCgncGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoJ2NvbG9yJykgY29sb3I6IHN0cmluZztcbiAgQElucHV0KCdkaXNwbGF5TWVtYmVyJykgZGlzcGxheU1lbWJlcjogc3RyaW5nO1xuICBASW5wdXQoJ3Nob3dTcGlubmVyJykgc2hvd1NwaW5uZXIgPSB0cnVlO1xuICBASW5wdXQoJ25vUmVzdWx0c01lc3NhZ2UnKSBub1Jlc3VsdHNNZXNzYWdlID0gJ05vIHJlc3VsdHMnO1xuICBASW5wdXQoJ2hhc0dyb3VwJykgaGFzR3JvdXA6IGJvb2xlYW47XG4gIEBJbnB1dCgnZ3JvdXBBcnJheU5hbWUnKSBncm91cEFycmF5TmFtZTogc3RyaW5nO1xuXG4gIG5vUmVzdWx0cyA9IGZhbHNlO1xuXG4gIGxvY2FsU3Bpbm5lciA9IGZhbHNlO1xuICBAT3V0cHV0KCkgZmlsdGVyZWRSZXR1cm4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwdWJsaWMgZmlsdGVyZWRJdGVtczogYW55ID0gW107XG4gIHB1YmxpYyBzZWFyY2hGb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5zZWFyY2hGb3JtID0gZmIuZ3JvdXAoe1xuICAgICAgdmFsdWU6ICcnXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNlYXJjaEZvcm1WYWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaEZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFZhbHVlID0gdmFsdWVbJ3ZhbHVlJ10gPyB2YWx1ZVsndmFsdWUnXS50b0xvd2VyQ2FzZSgpIDogJyc7XG4gICAgICAgIGlmICh0aGlzLnNob3dTcGlubmVyKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU3Bpbm5lciA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VhcmNoVmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlNZW1iZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuYXJyYXkuZmlsdGVyKG5hbWUgPT4gbmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzR3JvdXAgJiYgdGhpcy5ncm91cEFycmF5TmFtZSAmJiB0aGlzLmRpc3BsYXlNZW1iZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLmFycmF5Lm1hcChhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqQ29weSA9IHsgLi4uYSB9O1xuICAgICAgICAgICAgICAgICAgICBvYmpDb3B5W3RoaXMuZ3JvdXBBcnJheU5hbWVdID0gb2JqQ29weVt0aGlzLmdyb3VwQXJyYXlOYW1lXS5maWx0ZXIoZyA9PiBnW3RoaXMuZGlzcGxheU1lbWJlcl0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JqQ29weTtcbiAgICAgICAgICAgICAgICB9KS5maWx0ZXIoeCA9PiB4W3RoaXMuZ3JvdXBBcnJheU5hbWVdLmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLmFycmF5LmZpbHRlcihuYW1lID0+IG5hbWVbdGhpcy5kaXNwbGF5TWVtYmVyXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubm9SZXN1bHRzID0gdGhpcy5maWx0ZXJlZEl0ZW1zLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFsuLi50aGlzLmFycmF5XTtcbiAgICAgICAgICAgIHRoaXMubm9SZXN1bHRzID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpbHRlcmVkUmV0dXJuLmVtaXQodGhpcy5maWx0ZXJlZEl0ZW1zKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dTcGlubmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbFNwaW5uZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMjAwMCk7XG4gICAgfSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfSwgNTAwKTtcblxuICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gJ1NlYXJjaC4uLic7XG4gICAgfVxufVxuXG5cblxuICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgaXNBbHBoYW51bWVyaWMgPSAoZXZlbnQua2V5ICYmIGV2ZW50LmtleS5sZW5ndGggPT09IDEpIHx8XG4gICAgICAgIChldmVudC5jb2RlID49ICdLZXlBJyAmJiBldmVudC5jb2RlIDw9ICdLZXlaJykgfHxcbiAgICAgICAgKGV2ZW50LmNvZGUgPj0gJ0RpZ2l0MCcgJiYgZXZlbnQuY29kZSA8PSAnRGlnaXQ5JykgfHxcbiAgICAgICAgKGV2ZW50LmNvZGUgPT09ICdTcGFjZScpO1xuXG4gICAgaWYgKGlzQWxwaGFudW1lcmljKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbn1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZpbHRlcmVkUmV0dXJuLmVtaXQodGhpcy5hcnJheSk7XG4gICAgdGhpcy5zZWFyY2hGb3JtVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCIgY2xhc3M9XCJtYXQtZmlsdGVyXCIgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogY29sb3IgPyBjb2xvciA6ICd3aGl0ZSd9XCI+XG4gIDxkaXY+XG4gIDxpbnB1dCAjaW5wdXQgY2xhc3M9XCJtYXQtZmlsdGVyLWlucHV0XCIgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiIChrZXlkb3duKT1cImhhbmRsZUtleWRvd24oJGV2ZW50KVwiPlxuICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImxvY2FsU3Bpbm5lclwiIGNsYXNzPVwic3Bpbm5lclwiIGRpYW1ldGVyPVwiMTZcIj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIm5vUmVzdWx0c1wiXG4gICAgIGNsYXNzPVwibm9SZXN1bHRzTWVzc2FnZVwiPlxuICB7e25vUmVzdWx0c01lc3NhZ2V9fVxuPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class CarouselItemDirective {
|
|
4
|
+
constructor(templateRef) {
|
|
5
|
+
this.templateRef = templateRef;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
CarouselItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CarouselItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
9
|
+
CarouselItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: CarouselItemDirective, selector: "[carouselItem]", inputs: { carouselItem: "carouselItem" }, ngImport: i0 });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CarouselItemDirective, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: '[carouselItem]'
|
|
14
|
+
}]
|
|
15
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { carouselItem: [{
|
|
16
|
+
type: Input
|
|
17
|
+
}] } });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtaXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZGlyZWN0aXZlcy9jYXJvdXNlbC1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFLOUQsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBSSxDQUFDOztrSEFIMUMscUJBQXFCO3NHQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjtrR0FFVSxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nhcm91c2VsSXRlbV0nXG59KVxuZXhwb3J0IGNsYXNzIENhcm91c2VsSXRlbURpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIGNhcm91c2VsSXRlbSE6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHsgfVxufSJdfQ==
|