@rangertechnologies/ngnxt 2.1.104 → 2.1.106
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/package.json +5 -1
- package/esm2022/lib/ar.i18n.mjs +0 -29
- package/esm2022/lib/components/button/nxt-button.component.mjs +0 -130
- package/esm2022/lib/components/custom-button/custom-button.component.mjs +0 -39
- package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +0 -366
- package/esm2022/lib/components/custom-date/custom-date.component.mjs +0 -47
- package/esm2022/lib/components/custom-date-picker/custom-date-picker.component.mjs +0 -48
- package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +0 -219
- package/esm2022/lib/components/custom-image/custom-image.component.mjs +0 -34
- package/esm2022/lib/components/custom-input/custom-input.component.mjs +0 -93
- package/esm2022/lib/components/custom-label/custom-label.component.mjs +0 -21
- package/esm2022/lib/components/custom-model/custom-model.component.mjs +0 -48
- package/esm2022/lib/components/custom-radio/custom-radio.component.mjs +0 -115
- package/esm2022/lib/components/custom-rich-text/custom-rich-text.component.mjs +0 -186
- package/esm2022/lib/components/custom-table/custom-table.component.mjs +0 -347
- package/esm2022/lib/components/custom-text-area/custom-text-area.component.mjs +0 -65
- package/esm2022/lib/components/custom-time/custom-time.component.mjs +0 -61
- package/esm2022/lib/components/datatable/datatable.component.mjs +0 -801
- package/esm2022/lib/components/dependent-table/dependent-table.component.mjs +0 -42
- package/esm2022/lib/components/dropdown-with-flag/dropdown-with-flag.component.mjs +0 -39
- package/esm2022/lib/components/file-upload/file-upload.component.mjs +0 -279
- package/esm2022/lib/components/file-view/file-view.component.mjs +0 -46
- package/esm2022/lib/components/loader/loader.component.mjs +0 -23
- package/esm2022/lib/components/pagination/pagination.component.mjs +0 -100
- package/esm2022/lib/components/pick-location/pick-location.component.mjs +0 -216
- package/esm2022/lib/components/search-box/search-box.component.mjs +0 -202
- package/esm2022/lib/components/table-appendix/table-appendix.component.mjs +0 -123
- package/esm2022/lib/directives/componenthost/componenthost.directive.mjs +0 -19
- package/esm2022/lib/en.i18n.mjs +0 -29
- package/esm2022/lib/i18n-config.service.mjs +0 -4
- package/esm2022/lib/i18n.component.mjs +0 -47
- package/esm2022/lib/i18n.module.mjs +0 -38
- package/esm2022/lib/i18n.pipe.mjs +0 -25
- package/esm2022/lib/i18n.service.mjs +0 -56
- package/esm2022/lib/interfaces/actionMeta.mjs +0 -2
- package/esm2022/lib/interfaces/apimeta.mjs +0 -2
- package/esm2022/lib/interfaces/dependencyMeta.mjs +0 -2
- package/esm2022/lib/model/bookletWrapper.mjs +0 -9
- package/esm2022/lib/model/changeWrapper.mjs +0 -11
- package/esm2022/lib/model/errorWrapper.mjs +0 -6
- package/esm2022/lib/model/tableWrapper.mjs +0 -20
- package/esm2022/lib/nxt-app.component.mjs +0 -22
- package/esm2022/lib/nxt-app.module.mjs +0 -399
- package/esm2022/lib/nxt-app.service.mjs +0 -14
- package/esm2022/lib/pages/booklet/booklet.component.mjs +0 -541
- package/esm2022/lib/pages/builder/element/element.component.mjs +0 -174
- package/esm2022/lib/pages/builder/form/form.component.mjs +0 -34
- package/esm2022/lib/pages/builder/menu/menu.component.mjs +0 -28
- package/esm2022/lib/pages/builder/properties/properties.component.mjs +0 -462
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +0 -458
- package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +0 -2387
- package/esm2022/lib/pages/summary-page/summary-page.component.mjs +0 -76
- package/esm2022/lib/pipe/date/date.pipe.mjs +0 -28
- package/esm2022/lib/pipe/editColumnCheck/edit-column-check.pipe.mjs +0 -28
- package/esm2022/lib/pipe/editColumnDropdown/edit-column-dropdown.pipe.mjs +0 -20
- package/esm2022/lib/pipe/editColumnType/edit-column-type.pipe.mjs +0 -20
- package/esm2022/lib/pipe/get-value.pipe.mjs +0 -50
- package/esm2022/lib/pipe/search-filter/search-filter.pipe.mjs +0 -39
- package/esm2022/lib/pipe/time/time.pipe.mjs +0 -26
- package/esm2022/lib/sample.mjs +0 -3715
- package/esm2022/lib/services/change.service.mjs +0 -53
- package/esm2022/lib/services/data.service.mjs +0 -80
- package/esm2022/lib/services/form-builder.service.mjs +0 -160
- package/esm2022/lib/services/salesforce.service.mjs +0 -46
- package/esm2022/lib/services/shared.service.mjs +0 -100
- package/esm2022/lib/services/storage.service.mjs +0 -44
- package/esm2022/lib/tam.i18n.mjs +0 -29
- package/esm2022/lib/wrapper.mjs +0 -175
- package/esm2022/public-api.mjs +0 -22
- package/esm2022/rangertechnologies-ngnxt.mjs +0 -5
- package/fesm2022/rangertechnologies-ngnxt.mjs +0 -12833
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/ar.i18n.d.ts +0 -24
- package/lib/components/button/nxt-button.component.d.ts +0 -38
- package/lib/components/custom-button/custom-button.component.d.ts +0 -16
- package/lib/components/custom-calendar/custom-calendar.component.d.ts +0 -65
- package/lib/components/custom-date/custom-date.component.d.ts +0 -18
- package/lib/components/custom-date-picker/custom-date-picker.component.d.ts +0 -19
- package/lib/components/custom-dropdown/custom-dropdown.component.d.ts +0 -39
- package/lib/components/custom-image/custom-image.component.d.ts +0 -13
- package/lib/components/custom-input/custom-input.component.d.ts +0 -31
- package/lib/components/custom-label/custom-label.component.d.ts +0 -10
- package/lib/components/custom-model/custom-model.component.d.ts +0 -19
- package/lib/components/custom-radio/custom-radio.component.d.ts +0 -33
- package/lib/components/custom-rich-text/custom-rich-text.component.d.ts +0 -29
- package/lib/components/custom-table/custom-table.component.d.ts +0 -65
- package/lib/components/custom-text-area/custom-text-area.component.d.ts +0 -22
- package/lib/components/custom-time/custom-time.component.d.ts +0 -18
- package/lib/components/datatable/datatable.component.d.ts +0 -126
- package/lib/components/dependent-table/dependent-table.component.d.ts +0 -15
- package/lib/components/dropdown-with-flag/dropdown-with-flag.component.d.ts +0 -16
- package/lib/components/file-upload/file-upload.component.d.ts +0 -47
- package/lib/components/file-view/file-view.component.d.ts +0 -16
- package/lib/components/loader/loader.component.d.ts +0 -11
- package/lib/components/pagination/pagination.component.d.ts +0 -36
- package/lib/components/pick-location/pick-location.component.d.ts +0 -44
- package/lib/components/search-box/search-box.component.d.ts +0 -43
- package/lib/components/table-appendix/table-appendix.component.d.ts +0 -30
- package/lib/directives/componenthost/componenthost.directive.d.ts +0 -8
- package/lib/en.i18n.d.ts +0 -24
- package/lib/i18n-config.service.d.ts +0 -2
- package/lib/i18n.component.d.ts +0 -11
- package/lib/i18n.module.d.ts +0 -9
- package/lib/i18n.pipe.d.ts +0 -10
- package/lib/i18n.service.d.ts +0 -14
- package/lib/interfaces/actionMeta.d.ts +0 -5
- package/lib/interfaces/apimeta.d.ts +0 -15
- package/lib/interfaces/dependencyMeta.d.ts +0 -8
- package/lib/model/bookletWrapper.d.ts +0 -5
- package/lib/model/changeWrapper.d.ts +0 -10
- package/lib/model/errorWrapper.d.ts +0 -5
- package/lib/model/tableWrapper.d.ts +0 -18
- package/lib/nxt-app.component.d.ts +0 -8
- package/lib/nxt-app.module.d.ts +0 -52
- package/lib/nxt-app.service.d.ts +0 -6
- package/lib/pages/booklet/booklet.component.d.ts +0 -68
- package/lib/pages/builder/element/element.component.d.ts +0 -25
- package/lib/pages/builder/form/form.component.d.ts +0 -11
- package/lib/pages/builder/menu/menu.component.d.ts +0 -10
- package/lib/pages/builder/properties/properties.component.d.ts +0 -527
- package/lib/pages/questionbook/questionbook.component.d.ts +0 -68
- package/lib/pages/questionnaire/questionnaire.component.d.ts +0 -220
- package/lib/pages/summary-page/summary-page.component.d.ts +0 -20
- package/lib/pipe/date/date.pipe.d.ts +0 -7
- package/lib/pipe/editColumnCheck/edit-column-check.pipe.d.ts +0 -7
- package/lib/pipe/editColumnDropdown/edit-column-dropdown.pipe.d.ts +0 -7
- package/lib/pipe/editColumnType/edit-column-type.pipe.d.ts +0 -7
- package/lib/pipe/get-value.pipe.d.ts +0 -7
- package/lib/pipe/search-filter/search-filter.pipe.d.ts +0 -8
- package/lib/pipe/time/time.pipe.d.ts +0 -7
- package/lib/sample.d.ts +0 -11
- package/lib/services/change.service.d.ts +0 -22
- package/lib/services/data.service.d.ts +0 -13
- package/lib/services/form-builder.service.d.ts +0 -75
- package/lib/services/salesforce.service.d.ts +0 -11
- package/lib/services/shared.service.d.ts +0 -15
- package/lib/services/storage.service.d.ts +0 -13
- package/lib/tam.i18n.d.ts +0 -24
- package/lib/wrapper.d.ts +0 -203
- package/public-api.d.ts +0 -15
- package/rangertechnologies-ngnxt-2.1.104.tgz +0 -0
- package/src/lib/style.css +0 -1817
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../services/change.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
export class DependentTableComponent {
|
|
6
|
-
changeService;
|
|
7
|
-
alertMessage;
|
|
8
|
-
ValueLength;
|
|
9
|
-
Value;
|
|
10
|
-
errorObj;
|
|
11
|
-
constructor(changeService) {
|
|
12
|
-
this.changeService = changeService;
|
|
13
|
-
this.changeService.changeField$.subscribe((data) => {
|
|
14
|
-
this.dependentData(data);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
ngOnInit() {
|
|
18
|
-
this.errorObj = JSON.parse(this.alertMessage);
|
|
19
|
-
}
|
|
20
|
-
dependentData(data) {
|
|
21
|
-
let existingData = data.Permits;
|
|
22
|
-
if (existingData.length !== 0) {
|
|
23
|
-
this.ValueLength = true;
|
|
24
|
-
this.Value = existingData;
|
|
25
|
-
$("#zoneIcon").css("border", "3px solid rgb(252, 35, 27)");
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.ValueLength = false;
|
|
29
|
-
this.Value = [];
|
|
30
|
-
$("#zoneIcon").css("border", "3px solid rgb(12, 190, 12)");
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DependentTableComponent, deps: [{ token: i1.ChangeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DependentTableComponent, selector: "app-dependent-table", inputs: { alertMessage: "alertMessage" }, ngImport: i0, template: "<div class=\"dropdown\" style=\"cursor: pointer;\">\n <span id=\"zoneIcon\"> \n <img src=\"./../../../../../assets/images/permit_icons/zone.png\" style=\"height: 35px; margin-left: 0px;\" alt=\"adv-search\">\n </span>\n <div class=\"dropdown-content\" style=\"margin-left: -300px; min-width: 415px;\">\n <div class=\"col-lg-12\">\n <table class=\"table table-striped table-bordered\">\n <tbody *ngIf=\"!ValueLength\">\n <tr>\n <td colspan=\"3\" class=\"permission_yes\" style=\"color: rgb(12, 190, 12); text-align: center\">\n <span><b>{{ errorObj.noPermits }}</b></span>\n <span>{{ errorObj.noActive }}</span>\n </td>\n </tr>\n </tbody>\n <tbody id=\"zoneDetails\" *ngIf=\"ValueLength\">\n <tr>\n <td colspan=\"3\" class=\"permission_yes\" style=\"color: rgb(252, 35, 27); text-align: center\">\n <span><b>{{ errorObj.permits }} ({{Value.length}})</b></span>\n <span>{{ errorObj.active }}</span>\n </td>\n </tr>\n <tr *ngFor=\"let item of Value\" >\n <td>\n <span>{{item?.permit_type}}-{{item?.ref_no}} - {{item?.status}} - {{item?.end_date}}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>", styles: [".dropdown{margin-top:25px;margin-left:25px}.dropdown-content{display:none;position:absolute;background-color:#f9f9f9;min-width:160px;box-shadow:0 8px 16px #0003;padding:12px 16px;z-index:1}.dropdown:hover .dropdown-content{display:block}#zoneIcon{border:3px solid #a59d9d;padding:10px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}@media (max-width: 992px){.dropdown{margin-top:15px;margin-left:0;margin-bottom:15px}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
35
|
-
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DependentTableComponent, decorators: [{
|
|
37
|
-
type: Component,
|
|
38
|
-
args: [{ selector: 'app-dependent-table', template: "<div class=\"dropdown\" style=\"cursor: pointer;\">\n <span id=\"zoneIcon\"> \n <img src=\"./../../../../../assets/images/permit_icons/zone.png\" style=\"height: 35px; margin-left: 0px;\" alt=\"adv-search\">\n </span>\n <div class=\"dropdown-content\" style=\"margin-left: -300px; min-width: 415px;\">\n <div class=\"col-lg-12\">\n <table class=\"table table-striped table-bordered\">\n <tbody *ngIf=\"!ValueLength\">\n <tr>\n <td colspan=\"3\" class=\"permission_yes\" style=\"color: rgb(12, 190, 12); text-align: center\">\n <span><b>{{ errorObj.noPermits }}</b></span>\n <span>{{ errorObj.noActive }}</span>\n </td>\n </tr>\n </tbody>\n <tbody id=\"zoneDetails\" *ngIf=\"ValueLength\">\n <tr>\n <td colspan=\"3\" class=\"permission_yes\" style=\"color: rgb(252, 35, 27); text-align: center\">\n <span><b>{{ errorObj.permits }} ({{Value.length}})</b></span>\n <span>{{ errorObj.active }}</span>\n </td>\n </tr>\n <tr *ngFor=\"let item of Value\" >\n <td>\n <span>{{item?.permit_type}}-{{item?.ref_no}} - {{item?.status}} - {{item?.end_date}}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>", styles: [".dropdown{margin-top:25px;margin-left:25px}.dropdown-content{display:none;position:absolute;background-color:#f9f9f9;min-width:160px;box-shadow:0 8px 16px #0003;padding:12px 16px;z-index:1}.dropdown:hover .dropdown-content{display:block}#zoneIcon{border:3px solid #a59d9d;padding:10px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}@media (max-width: 992px){.dropdown{margin-top:15px;margin-left:0;margin-bottom:15px}}\n"] }]
|
|
39
|
-
}], ctorParameters: () => [{ type: i1.ChangeService }], propDecorators: { alertMessage: [{
|
|
40
|
-
type: Input
|
|
41
|
-
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW50LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2RlcGVuZGVudC10YWJsZS9kZXBlbmRlbnQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZGVwZW5kZW50LXRhYmxlL2RlcGVuZGVudC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7OztBQVN6RCxNQUFNLE9BQU8sdUJBQXVCO0lBUWQ7SUFOWCxZQUFZLENBQUs7SUFFMUIsV0FBVyxDQUFTO0lBQ3BCLEtBQUssQ0FBSztJQUNWLFFBQVEsQ0FBSztJQUViLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBQyxFQUFFO1lBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFRO1FBQ3BCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDaEMsSUFBRyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNoQixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSixDQUFDO3dHQTdCVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixxR0NUcEMsczRDQStCUTs7NEZEdEJLLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7a0ZBTXRCLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZSc7XG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kZXBlbmRlbnQtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVwZW5kZW50LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGVwZW5kZW50LXRhYmxlLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEZXBlbmRlbnRUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgYWxlcnRNZXNzYWdlOmFueTtcblxuICBWYWx1ZUxlbmd0aDpib29sZWFuO1xuICBWYWx1ZTphbnk7XG4gIGVycm9yT2JqOmFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UpIHsgXG4gICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmNoYW5nZUZpZWxkJC5zdWJzY3JpYmUoKGRhdGEpPT57XG4gICAgICB0aGlzLmRlcGVuZGVudERhdGEoZGF0YSk7XG4gICAgfSlcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JPYmogPSBKU09OLnBhcnNlKHRoaXMuYWxlcnRNZXNzYWdlKTtcbiAgfVxuXG4gIGRlcGVuZGVudERhdGEoZGF0YTphbnkpe1xuICAgIGxldCBleGlzdGluZ0RhdGEgPSBkYXRhLlBlcm1pdHM7XG4gICAgaWYoZXhpc3RpbmdEYXRhLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5WYWx1ZUxlbmd0aCA9IHRydWU7XG4gICAgICB0aGlzLlZhbHVlID0gZXhpc3RpbmdEYXRhO1xuICAgICAgJChcIiN6b25lSWNvblwiKS5jc3MoXCJib3JkZXJcIiwgXCIzcHggc29saWQgcmdiKDI1MiwgMzUsIDI3KVwiKTtcbiAgICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuVmFsdWVMZW5ndGggPSBmYWxzZTtcbiAgICAgIHRoaXMuVmFsdWUgPSBbXTtcbiAgICAgICQoXCIjem9uZUljb25cIikuY3NzKFwiYm9yZGVyXCIsIFwiM3B4IHNvbGlkIHJnYigxMiwgMTkwLCAxMilcIik7XG4gICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2ICBjbGFzcz1cImRyb3Bkb3duXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XG4gICAgPHNwYW4gaWQ9XCJ6b25lSWNvblwiPiAgXG4gICAgICA8aW1nIHNyYz1cIi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9wZXJtaXRfaWNvbnMvem9uZS5wbmdcIiBzdHlsZT1cImhlaWdodDogMzVweDsgbWFyZ2luLWxlZnQ6IDBweDtcIiBhbHQ9XCJhZHYtc2VhcmNoXCI+XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTMwMHB4OyBtaW4td2lkdGg6IDQxNXB4O1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkXCI+XG4gICAgICAgICAgPHRib2R5ICpuZ0lmPVwiIVZhbHVlTGVuZ3RoXCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiIGNsYXNzPVwicGVybWlzc2lvbl95ZXNcIiBzdHlsZT1cImNvbG9yOiByZ2IoMTIsIDE5MCwgMTIpOyB0ZXh0LWFsaWduOiBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj48Yj57eyBlcnJvck9iai5ub1Blcm1pdHMgfX08L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGVycm9yT2JqLm5vQWN0aXZlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDx0Ym9keSBpZD1cInpvbmVEZXRhaWxzXCIgKm5nSWY9XCJWYWx1ZUxlbmd0aFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjNcIiBjbGFzcz1cInBlcm1pc3Npb25feWVzXCIgc3R5bGU9XCJjb2xvcjogcmdiKDI1MiwgMzUsIDI3KTsgdGV4dC1hbGlnbjogY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+PGI+e3sgZXJyb3JPYmoucGVybWl0cyB9fSAoe3tWYWx1ZS5sZW5ndGh9fSk8L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGVycm9yT2JqLmFjdGl2ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgVmFsdWVcIiA+XG4gICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0/LnBlcm1pdF90eXBlfX0te3tpdGVtPy5yZWZfbm99fSAtIHt7aXRlbT8uc3RhdHVzfX0gLSB7e2l0ZW0/LmVuZF9kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PiJdfQ==
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../i18n.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
import * as i3 from "@angular/forms";
|
|
6
|
-
import * as i4 from "@ng-select/ng-select";
|
|
7
|
-
import * as i5 from "../../i18n.pipe";
|
|
8
|
-
export class DropdownWithFlagComponent {
|
|
9
|
-
i18nService;
|
|
10
|
-
certified = false;
|
|
11
|
-
// @Input() getValue:string = '';
|
|
12
|
-
JobPerformerCertificates = [];
|
|
13
|
-
flagDropDownChange = new EventEmitter();
|
|
14
|
-
selectedValue = '';
|
|
15
|
-
constructor(i18nService) {
|
|
16
|
-
this.i18nService = i18nService;
|
|
17
|
-
}
|
|
18
|
-
ngOnInit() {
|
|
19
|
-
}
|
|
20
|
-
ngOnChanges() {
|
|
21
|
-
this.selectedValue = null;
|
|
22
|
-
}
|
|
23
|
-
onJobPerformerCertified(event) {
|
|
24
|
-
this.flagDropDownChange.emit(event);
|
|
25
|
-
}
|
|
26
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownWithFlagComponent, deps: [{ token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownWithFlagComponent, selector: "app-dropdown-with-flag", inputs: { certified: "certified", JobPerformerCertificates: "JobPerformerCertificates" }, outputs: { flagDropDownChange: "flagDropDownChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"she-title\">\n <label class=\"switch\">\n <input class=\"switch-input\" type=\"checkbox\" disabled=\"true\" [checked]=\"certified\"/>\n <span class=\"switch-label\" data-on=\"Certified\" data-off=\"Not Certified\"></span> \n <span class=\"switch-handle\"></span> \n </label> \n <!-- HA 19DEC23 For translation -->\n <ng-select *ngIf=\"certified\"\n style=\"margin-left: 36px; width: 205px; margin-bottom: 8px;\" \n [items]=\"JobPerformerCertificates\"\n [(ngModel)]=\"selectedValue\"\n (change)=\"onJobPerformerCertified($event)\"\n placeholder=\"---{{ 'select' | i18n:i18nService.currentLanguage }}---\">\n </ng-select>\n </div> ", styles: [".she-title{display:flex;flex-direction:row;align-items:center}.switch{position:relative;width:105px;height:23px;margin-left:5px;margin-top:3px;background:linear-gradient(to bottom,#eee,#fff 25px);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF 25px);border-radius:18px;box-shadow:inset 0 -1px #fff,inset 0 1px 1px #0000000d;cursor:pointer}.switch-input{position:absolute;top:0;left:0;opacity:0}.switch-label{position:relative;display:block;height:inherit;font-size:12px;background:#eceeef;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label:before,.switch-label:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;-webkit-transition:inherit;-moz-transition:inherit;-o-transition:inherit;transition:inherit}.switch-label:before{content:attr(data-off);right:11px;color:#aaa;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label:after{content:attr(data-on);left:11px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-input:checked~.switch-label{background:#03a9f4;border-color:#03a9f4;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input:checked~.switch-label:before{opacity:0}.switch-input:checked~.switch-label:after{opacity:1}.switch-handle{position:absolute;top:0;left:0;width:19px;height:22px;background:linear-gradient(to bottom,#fff 40%,#f0f0f0);background-image:-webkit-linear-gradient(top,#FFFFFF 40%,#f0f0f0);border-radius:100%;box-shadow:1px 1px 5px #0003}.switch-handle:before{content:\"\";position:absolute;top:50%;left:50%;margin:-6px 0 0 -6px;width:12px;height:12px;background:linear-gradient(to bottom,#eee,#fff);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF);border-radius:6px;box-shadow:inset 0 1px #00000005}.switch-input:checked~.switch-handle{left:86px;box-shadow:-1px 1px 5px #0003;border:2px solid aquamarine}.switch-label,.switch-handle{transition:All .3s ease;-webkit-transition:All .3s ease;-moz-transition:All .3s ease;-o-transition:All .3s ease}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] });
|
|
28
|
-
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownWithFlagComponent, decorators: [{
|
|
30
|
-
type: Component,
|
|
31
|
-
args: [{ selector: 'app-dropdown-with-flag', template: "<div class=\"she-title\">\n <label class=\"switch\">\n <input class=\"switch-input\" type=\"checkbox\" disabled=\"true\" [checked]=\"certified\"/>\n <span class=\"switch-label\" data-on=\"Certified\" data-off=\"Not Certified\"></span> \n <span class=\"switch-handle\"></span> \n </label> \n <!-- HA 19DEC23 For translation -->\n <ng-select *ngIf=\"certified\"\n style=\"margin-left: 36px; width: 205px; margin-bottom: 8px;\" \n [items]=\"JobPerformerCertificates\"\n [(ngModel)]=\"selectedValue\"\n (change)=\"onJobPerformerCertified($event)\"\n placeholder=\"---{{ 'select' | i18n:i18nService.currentLanguage }}---\">\n </ng-select>\n </div> ", styles: [".she-title{display:flex;flex-direction:row;align-items:center}.switch{position:relative;width:105px;height:23px;margin-left:5px;margin-top:3px;background:linear-gradient(to bottom,#eee,#fff 25px);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF 25px);border-radius:18px;box-shadow:inset 0 -1px #fff,inset 0 1px 1px #0000000d;cursor:pointer}.switch-input{position:absolute;top:0;left:0;opacity:0}.switch-label{position:relative;display:block;height:inherit;font-size:12px;background:#eceeef;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label:before,.switch-label:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;-webkit-transition:inherit;-moz-transition:inherit;-o-transition:inherit;transition:inherit}.switch-label:before{content:attr(data-off);right:11px;color:#aaa;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label:after{content:attr(data-on);left:11px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-input:checked~.switch-label{background:#03a9f4;border-color:#03a9f4;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input:checked~.switch-label:before{opacity:0}.switch-input:checked~.switch-label:after{opacity:1}.switch-handle{position:absolute;top:0;left:0;width:19px;height:22px;background:linear-gradient(to bottom,#fff 40%,#f0f0f0);background-image:-webkit-linear-gradient(top,#FFFFFF 40%,#f0f0f0);border-radius:100%;box-shadow:1px 1px 5px #0003}.switch-handle:before{content:\"\";position:absolute;top:50%;left:50%;margin:-6px 0 0 -6px;width:12px;height:12px;background:linear-gradient(to bottom,#eee,#fff);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF);border-radius:6px;box-shadow:inset 0 1px #00000005}.switch-input:checked~.switch-handle{left:86px;box-shadow:-1px 1px 5px #0003;border:2px solid aquamarine}.switch-label,.switch-handle{transition:All .3s ease;-webkit-transition:All .3s ease;-moz-transition:All .3s ease;-o-transition:All .3s ease}\n"] }]
|
|
32
|
-
}], ctorParameters: () => [{ type: i1.I18nService }], propDecorators: { certified: [{
|
|
33
|
-
type: Input
|
|
34
|
-
}], JobPerformerCertificates: [{
|
|
35
|
-
type: Input
|
|
36
|
-
}], flagDropDownChange: [{
|
|
37
|
-
type: Output
|
|
38
|
-
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24td2l0aC1mbGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duLXdpdGgtZmxhZy9kcm9wZG93bi13aXRoLWZsYWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZHJvcGRvd24td2l0aC1mbGFnL2Ryb3Bkb3duLXdpdGgtZmxhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBUy9FLE1BQU0sT0FBTyx5QkFBeUI7SUFPakI7SUFOVixTQUFTLEdBQVUsS0FBSyxDQUFDO0lBQ2xDLGlDQUFpQztJQUN4Qix3QkFBd0IsR0FBVSxFQUFFLENBQUM7SUFDcEMsa0JBQWtCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFDMUUsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUUxQixZQUFtQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFJLENBQUM7SUFFaEQsUUFBUTtJQUNSLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQVM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO3dHQWpCVSx5QkFBeUI7NEZBQXpCLHlCQUF5QixvT0NUdEMsZ3NCQWNXOzs0RkRMRSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCO2dGQUt6QixTQUFTO3NCQUFqQixLQUFLO2dCQUVHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRyb3Bkb3duLXdpdGgtZmxhZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi13aXRoLWZsYWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi13aXRoLWZsYWcuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duV2l0aEZsYWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjZXJ0aWZpZWQ6Ym9vbGVhbj0gZmFsc2U7XG4gIC8vIEBJbnB1dCgpIGdldFZhbHVlOnN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBKb2JQZXJmb3JtZXJDZXJ0aWZpY2F0ZXM6IGFueVtdID0gW107XG4gIEBPdXRwdXQoKSBmbGFnRHJvcERvd25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IFxuICBzZWxlY3RlZFZhbHVlOnN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG4gIG5nT25DaGFuZ2VzKCl7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gbnVsbDtcbiAgfVxuICBcbiAgb25Kb2JQZXJmb3JtZXJDZXJ0aWZpZWQoZXZlbnQ6YW55KXtcbiAgICAgdGhpcy5mbGFnRHJvcERvd25DaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInNoZS10aXRsZVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxuICAgICAgPGlucHV0ICBjbGFzcz1cInN3aXRjaC1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGRpc2FibGVkPVwidHJ1ZVwiIFtjaGVja2VkXT1cImNlcnRpZmllZFwiLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3dpdGNoLWxhYmVsXCIgZGF0YS1vbj1cIkNlcnRpZmllZFwiIGRhdGEtb2ZmPVwiTm90IENlcnRpZmllZFwiPjwvc3Bhbj4gXG4gICAgICA8c3BhbiBjbGFzcz1cInN3aXRjaC1oYW5kbGVcIj48L3NwYW4+IFxuICAgIDwvbGFiZWw+IFxuICAgIDwhLS0gSEEgMTlERUMyMyBGb3IgdHJhbnNsYXRpb24gLS0+XG4gICAgPG5nLXNlbGVjdCAqbmdJZj1cImNlcnRpZmllZFwiXG4gICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAzNnB4OyB3aWR0aDogMjA1cHg7IG1hcmdpbi1ib3R0b206IDhweDtcIiBcbiAgICAgIFtpdGVtc109XCJKb2JQZXJmb3JtZXJDZXJ0aWZpY2F0ZXNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlXCJcbiAgICAgIChjaGFuZ2UpPVwib25Kb2JQZXJmb3JtZXJDZXJ0aWZpZWQoJGV2ZW50KVwiXG4gICAgICBwbGFjZWhvbGRlcj1cIi0tLXt7ICdzZWxlY3QnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgfX0tLS1cIj5cbiAgICA8L25nLXNlbGVjdD5cbiAgPC9kaXY+ICAgIl19
|
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
import { Component, Output, EventEmitter, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../services/shared.service";
|
|
4
|
-
import * as i2 from "../../services/data.service";
|
|
5
|
-
import * as i3 from "@angular/platform-browser";
|
|
6
|
-
import * as i4 from "../../i18n.service";
|
|
7
|
-
import * as i5 from "@angular/common";
|
|
8
|
-
import * as i6 from "../../i18n.pipe";
|
|
9
|
-
export class FileUploadComponent {
|
|
10
|
-
SharedService;
|
|
11
|
-
dataService;
|
|
12
|
-
sanitizer;
|
|
13
|
-
i18nService;
|
|
14
|
-
selectedFileData = new EventEmitter();
|
|
15
|
-
deletedFileData = new EventEmitter();
|
|
16
|
-
allFiles;
|
|
17
|
-
limitFileUploading;
|
|
18
|
-
isDeleteFileButtonVisible;
|
|
19
|
-
isShowNoFileIcon;
|
|
20
|
-
tableFile; // file Upload from table
|
|
21
|
-
question;
|
|
22
|
-
error;
|
|
23
|
-
//RS 09JAN2025
|
|
24
|
-
allowedFileTypes = [];
|
|
25
|
-
maxFileSize = 0; // in bytes(Binary)
|
|
26
|
-
maxFiles = 4; // default limit
|
|
27
|
-
validationErrors = [];
|
|
28
|
-
selectedFileNameArray = [];
|
|
29
|
-
copyOfInputAllFiles;
|
|
30
|
-
copyOfFileUploadingLimit;
|
|
31
|
-
fileUrl;
|
|
32
|
-
showFile = false;
|
|
33
|
-
isImage = false;
|
|
34
|
-
fileName = '';
|
|
35
|
-
currentFile;
|
|
36
|
-
constructor(SharedService, dataService, sanitizer, i18nService) {
|
|
37
|
-
this.SharedService = SharedService;
|
|
38
|
-
this.dataService = dataService;
|
|
39
|
-
this.sanitizer = sanitizer;
|
|
40
|
-
this.i18nService = i18nService;
|
|
41
|
-
}
|
|
42
|
-
//RS 09JAN2025
|
|
43
|
-
ngOnInit() {
|
|
44
|
-
this.initializeFileConfigs();
|
|
45
|
-
}
|
|
46
|
-
// VD 03May24 file upload fix
|
|
47
|
-
// onFileUpload(event: any) {
|
|
48
|
-
// const fileUploaderElement: HTMLElement = document.getElementById(
|
|
49
|
-
// 'fileUpload'
|
|
50
|
-
// ) as HTMLElement;
|
|
51
|
-
// fileUploaderElement.click();
|
|
52
|
-
// }
|
|
53
|
-
ngOnChanges(simpleChanges) {
|
|
54
|
-
console.log('simple changes', simpleChanges);
|
|
55
|
-
if (simpleChanges.allFiles) { //SKS5NOV25
|
|
56
|
-
this.copyOfInputAllFiles = simpleChanges.allFiles.currentValue || [];
|
|
57
|
-
}
|
|
58
|
-
if (simpleChanges.limitFileUploading) {
|
|
59
|
-
this.copyOfFileUploadingLimit = simpleChanges.limitFileUploading?.currentValue;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
//RS 09JAN2025 Initializes file upload settings (allowed types, max size, and max files) by parsing metadata from fieldsMeta
|
|
63
|
-
initializeFileConfigs() {
|
|
64
|
-
if (this.question?.fieldsMeta) {
|
|
65
|
-
try {
|
|
66
|
-
const metaData = JSON.parse(this.question.fieldsMeta);
|
|
67
|
-
const fileConfig = metaData[0]; // Get first config object
|
|
68
|
-
if (fileConfig) {
|
|
69
|
-
this.allowedFileTypes = fileConfig.allowedTypes || [];
|
|
70
|
-
this.maxFileSize = fileConfig.maxFileSize || 0;
|
|
71
|
-
this.maxFiles = fileConfig.maxFiles || 5;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
console.error('Error parsing fieldsMeta:', error);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
uploadMultipleFiles(event) {
|
|
80
|
-
console.log('File uploader initiated');
|
|
81
|
-
this.validationErrors = []; // RS 17JAN2025 Clear previous errors
|
|
82
|
-
let inputFiles = this.copyOfInputAllFiles ? this.copyOfInputAllFiles : [];
|
|
83
|
-
const selectedFileData = [];
|
|
84
|
-
const uploadedFiles = event.target.files;
|
|
85
|
-
// RS 09JAN2025 Check file count limit
|
|
86
|
-
if (uploadedFiles.length + inputFiles.length > this.maxFiles) {
|
|
87
|
-
this.validationErrors.push(`Maximum ${this.maxFiles} files allowed`);
|
|
88
|
-
event.target.value = '';
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
const readFilesPromises = [];
|
|
92
|
-
for (const eachUploadedFile of uploadedFiles) {
|
|
93
|
-
const file = eachUploadedFile;
|
|
94
|
-
//RS 09JAN2025 Check file type
|
|
95
|
-
const fileExt = '.' + file.name.split('.').pop().toLowerCase();
|
|
96
|
-
if (this.allowedFileTypes.length > 0 && !this.allowedFileTypes.includes(fileExt)) {
|
|
97
|
-
this.validationErrors.push(`File type ${fileExt} not allowed. Allowed types: ${this.allowedFileTypes.join(', ')}`);
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
//RS 09JAN2025 Check file size
|
|
101
|
-
if (this.maxFileSize > 0 && file.size > this.maxFileSize) {
|
|
102
|
-
this.validationErrors.push(`File "${file.name}" exceeds size limit of ${this.maxFileSize / 1048576}MB`);
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
105
|
-
if (!this.validationErrors.length) {
|
|
106
|
-
const format = fileExt.substring(1);
|
|
107
|
-
const fileReadPromise = new Promise((resolve, reject) => {
|
|
108
|
-
const reader = new FileReader();
|
|
109
|
-
reader.readAsDataURL(file);
|
|
110
|
-
reader.onload = () => {
|
|
111
|
-
const fileData = {
|
|
112
|
-
doc: reader.result,
|
|
113
|
-
name: file.name,
|
|
114
|
-
type: file.type,
|
|
115
|
-
format,
|
|
116
|
-
size: file.size, // RS 17JAN2025
|
|
117
|
-
id: null,
|
|
118
|
-
};
|
|
119
|
-
selectedFileData.push(fileData);
|
|
120
|
-
inputFiles.push(fileData);
|
|
121
|
-
resolve();
|
|
122
|
-
};
|
|
123
|
-
reader.onerror = () => {
|
|
124
|
-
reject();
|
|
125
|
-
this.validationErrors.push(`Error reading file "${file.name}"`); // RS 17JAN2025
|
|
126
|
-
};
|
|
127
|
-
});
|
|
128
|
-
readFilesPromises.push(fileReadPromise);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
if (readFilesPromises.length > 0) {
|
|
132
|
-
// Wait for all promises to resolve
|
|
133
|
-
Promise.all(readFilesPromises).then(() => {
|
|
134
|
-
this.copyOfInputAllFiles = inputFiles;
|
|
135
|
-
console.log('uploadedFiles', inputFiles);
|
|
136
|
-
this.selectedFileData.emit(inputFiles);
|
|
137
|
-
}).catch(() => {
|
|
138
|
-
console.error('Error reading files');
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
console.warn('You can upload max 5 files');
|
|
143
|
-
// this.toastr.warning(TOASTER_MESSAGES.MAX_FIVE_FILES, TOASTER_MESSAGES.WARNING_TITLE);
|
|
144
|
-
}
|
|
145
|
-
event.target.value = '';
|
|
146
|
-
}
|
|
147
|
-
// uploadMultipleFiles(event: any) {
|
|
148
|
-
// console.log('File uploader initiated');
|
|
149
|
-
// let inputFiles: any[] = this.copyOfInputAllFiles ? this.copyOfInputAllFiles : [];
|
|
150
|
-
// const selectedFileData = [];
|
|
151
|
-
// const uploadedFiles = event.target.files;
|
|
152
|
-
// if (uploadedFiles.length + inputFiles.length <= this.copyOfFileUploadingLimit) {
|
|
153
|
-
// for (const eachUploadedFile of uploadedFiles) {
|
|
154
|
-
// const reader = new FileReader();
|
|
155
|
-
// const file: File = eachUploadedFile;
|
|
156
|
-
// const format = file.name.split('.')[1];
|
|
157
|
-
// reader.readAsDataURL(file);
|
|
158
|
-
// reader.onload = () => {
|
|
159
|
-
// selectedFileData.push({
|
|
160
|
-
// doc: reader.result,
|
|
161
|
-
// name: file.name,
|
|
162
|
-
// type: file.type,
|
|
163
|
-
// format,
|
|
164
|
-
// id: null,
|
|
165
|
-
// });
|
|
166
|
-
// inputFiles.push({
|
|
167
|
-
// doc: reader.result,
|
|
168
|
-
// name: file.name,
|
|
169
|
-
// type: file.type,
|
|
170
|
-
// format,
|
|
171
|
-
// id: null,
|
|
172
|
-
// });
|
|
173
|
-
// };
|
|
174
|
-
// }
|
|
175
|
-
// } else {
|
|
176
|
-
// console.warn('You can upload max 5 files');
|
|
177
|
-
// //this.toastr.warning(TOASTER_MESSAGES.MAX_FIVE_FILES, TOASTER_MESSAGES.WARNING_TITLE);
|
|
178
|
-
// }
|
|
179
|
-
// event.target.value = '';
|
|
180
|
-
// this.copyOfInputAllFiles = inputFiles;
|
|
181
|
-
// console.log('uploadedFiles',inputFiles);
|
|
182
|
-
// this.selectedFileData.emit(inputFiles);
|
|
183
|
-
// }
|
|
184
|
-
deleteFile(currentFileIndex) {
|
|
185
|
-
const deletedFileName = this.selectedFileNameArray.splice(currentFileIndex, 1);
|
|
186
|
-
const deletedFile = this.copyOfInputAllFiles.splice(currentFileIndex, 1);
|
|
187
|
-
console.log('emit', deletedFile[0]);
|
|
188
|
-
this.deletedFileData.emit(deletedFile[0]);
|
|
189
|
-
this.selectedFileData.emit(this.copyOfInputAllFiles);
|
|
190
|
-
}
|
|
191
|
-
// VD 20May24 - preview changes
|
|
192
|
-
// RS 09DEC24 Changed keys
|
|
193
|
-
viewFile(currentFile) {
|
|
194
|
-
this.currentFile = currentFile;
|
|
195
|
-
this.showFile = true;
|
|
196
|
-
console.log(currentFile);
|
|
197
|
-
if (this.question.subText != undefined) {
|
|
198
|
-
let fileMeta = JSON.parse(this.question.subText);
|
|
199
|
-
let endpoint = fileMeta.endpoint;
|
|
200
|
-
let queryParameter = fileMeta.queryParameter;
|
|
201
|
-
let file = currentFile;
|
|
202
|
-
if (endpoint) {
|
|
203
|
-
const fullEndPoint = endpoint + '?' + queryParameter + '=' + file[queryParameter];
|
|
204
|
-
if (fullEndPoint) {
|
|
205
|
-
this.dataService.apiResponse(fullEndPoint).subscribe((apiResponse) => {
|
|
206
|
-
if (apiResponse) {
|
|
207
|
-
this.handleFileContent(apiResponse);
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
this.viewLocalFile();
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
// // VD 03Aug24 process local preview
|
|
218
|
-
viewLocalFile() {
|
|
219
|
-
if (this.currentFile) {
|
|
220
|
-
this.setFileUrl(this.currentFile?.doc);
|
|
221
|
-
this.fileName = this.currentFile.name;
|
|
222
|
-
this.isImage = this.currentFile.type.startsWith('image/');
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
handleFileContent(fileResponse) {
|
|
226
|
-
const byteArray = new Uint8Array(fileResponse.content.data);
|
|
227
|
-
const blob = new Blob([byteArray], { type: fileResponse.type });
|
|
228
|
-
const url = window.URL.createObjectURL(blob);
|
|
229
|
-
this.setFileUrl(url);
|
|
230
|
-
this.isImage = false;
|
|
231
|
-
if (fileResponse.name) {
|
|
232
|
-
this.fileName = fileResponse.name;
|
|
233
|
-
const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];
|
|
234
|
-
const fileExtension = fileResponse.name.split('.').pop()?.toLowerCase();
|
|
235
|
-
this.isImage = imageExtensions.includes(fileExtension || '');
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
setFileUrl(url) {
|
|
239
|
-
this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);
|
|
240
|
-
}
|
|
241
|
-
getDocIcon(docName) {
|
|
242
|
-
const ext = docName.split('.').pop(-1);
|
|
243
|
-
return this.SharedService.docIcon(ext);
|
|
244
|
-
}
|
|
245
|
-
close() {
|
|
246
|
-
this.showFile = false;
|
|
247
|
-
this.fileName = '';
|
|
248
|
-
this.fileUrl = '';
|
|
249
|
-
this.isImage = false;
|
|
250
|
-
if (this.fileUrl) {
|
|
251
|
-
URL.revokeObjectURL(this.fileUrl);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.SharedService }, { token: i2.DataService }, { token: i3.DomSanitizer }, { token: i4.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
255
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileUploadComponent, selector: "app-file-upload", inputs: { allFiles: "allFiles", limitFileUploading: "limitFileUploading", isDeleteFileButtonVisible: "isDeleteFileButtonVisible", isShowNoFileIcon: "isShowNoFileIcon", tableFile: "tableFile", question: "question", error: "error" }, outputs: { selectedFileData: "selectedFileData", deletedFileData: "deletedFileData" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-md-12\" *ngIf=\"!isDeleteFileButtonVisible\" style=\"text-align: left;\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n\n <div class=\"col-lg-5 document-cnt m-t-10 m-b-10\"\n *ngFor=\"let eachFile of copyOfInputAllFiles; let currentFileIndex = index\">\n <div *ngIf=\"!tableFile\"> <!-- (click)=\"viewFile(eachFile)\" -->\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.name)\">\n </div>\n <div class=\"col-lg-9 document_name\">\n {{eachFile?.name}}\n </div>\n <div class=\"document_delete\" (click)=\"deleteFile(currentFileIndex);$event.stopPropagation()\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/bin.svg\">\n </div>\n <!-- VD 20May24 - preview changes-->\n <div class=\"preview-icon\" (click)=\"viewFile(eachFile)\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/icons8-eye-24.png\">\n </div>\n </div>\n <div *ngIf=\"tableFile\" class=\"row\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{eachFile?.name}}\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"copyOfInputAllFiles?.length === 0 && isShowNoFileIcon\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <label class=\"custom-file\" *ngIf=\"isDeleteFileButtonVisible && !tableFile\">\n <!-- HA 19DEC23 For translation -->\n <!-- VD 03May24 file upload fix-->\n <!-- RS 09JAN2025 -->\n <button [class]=\"error ? 'she-btn-primary-bordered Invalid' : 'she-btn-primary-bordered'\" style=\"width:275px;\" (click)=\"fileInput.click()\"[ngClass]=\"{ 'btn-disabled': copyOfInputAllFiles?.length >= maxFiles }\" [disabled]=\"copyOfInputAllFiles?.length >= maxFiles\">Choose Files</button>\n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" [accept]=\"allowedFileTypes.join(',')\"\n style=\"display:none;\"\n (change) = uploadMultipleFiles($event)\n />\n </label>\n\n <!-- RS 09JAN2025 -->\n <!-- Error messages section -->\n <div class=\"file-constraints\" *ngIf=\"validationErrors.length > 0\">\n <small class=\"text-danger\">\n <div *ngFor=\"let error of validationErrors\">{{ error }}</div>\n </small>\n </div>\n\n<!-- HA 19DEC23 For translation -->\n <label *ngIf=\"tableFile\" class=\"btn btn-primary\">\n {{ 'uploadFile' | i18n:i18nService.currentLanguage }}\n <input id=\"file\" style=\"display: none;\" type=\"file\" class=\"form-control\" (change)= uploadMultipleFiles($event) />\n </label>\n <!-- <span class=\"error-msg\" *ngIf=\"(formControl?.documents?.touched || formControl?.documents?.dirty) &&\n formControl?.documents?.errors?.required\">\n {{LM_POLICY_VALIDATION_MESSAGE.REQUIRED}}\n </span> -->\n <!-- RS 09DEC24 Changed keys--> \n</div>\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.errorMessage}}</div>\n<div class=\"nxt-file-overlay\" *ngIf=\"showFile\">\n <div class=\"nxt-file-map-modal\">\n <div class=\"nxt-file-model-content\">\n <div class=\"nxt-file-model-header\">\n <h4>{{fileName}}</h4>\n <button class=\"close-button\" (click)=\"close()\">X</button>\n </div>\n <ng-container *ngIf=\"isImage; else otherFile\">\n <img [src]=\"fileUrl\" class=\"img-fluid\" alt=\"File Preview\" />\n </ng-container>\n <ng-template #otherFile>\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n </ng-template>\n </div>\n </div>\n</div>\n\n\n", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.label{margin-bottom:0}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}@media (min-width: 992px){.document-cnt{margin-left:10px}}.btn-disabled{background:#e1e1e1;color:#fff;border:none;border-radius:5px;height:50px}.form-control[disabled]{border-radius:5px}.custom-file{color:#9a9a9a;font-size:14px;font-weight:400;display:inline-block;width:auto;margin-bottom:5px}.she-btn-primary-bordered{background:#fff;color:#48b7ff;border:1px solid #48B7FF;border-radius:5px;height:50px;outline:none!important}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.nxt-file-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.nxt-file-map-modal{background-color:#fff;border-radius:8px;overflow:hidden;width:80%;max-width:800px;max-height:90%;display:flex;flex-direction:column}.nxt-file-model-content{display:flex;flex-direction:column;height:100%}.nxt-file-model-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background-color:#f5f5f5;border-bottom:1px solid #ddd}.nxt-file-model-header h4{margin:0;font-size:1.25em}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.Invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.I18nPipe, name: "i18n" }] });
|
|
256
|
-
}
|
|
257
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
258
|
-
type: Component,
|
|
259
|
-
args: [{ selector: 'app-file-upload', template: "<div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-md-12\" *ngIf=\"!isDeleteFileButtonVisible\" style=\"text-align: left;\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n\n <div class=\"col-lg-5 document-cnt m-t-10 m-b-10\"\n *ngFor=\"let eachFile of copyOfInputAllFiles; let currentFileIndex = index\">\n <div *ngIf=\"!tableFile\"> <!-- (click)=\"viewFile(eachFile)\" -->\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.name)\">\n </div>\n <div class=\"col-lg-9 document_name\">\n {{eachFile?.name}}\n </div>\n <div class=\"document_delete\" (click)=\"deleteFile(currentFileIndex);$event.stopPropagation()\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/bin.svg\">\n </div>\n <!-- VD 20May24 - preview changes-->\n <div class=\"preview-icon\" (click)=\"viewFile(eachFile)\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/icons8-eye-24.png\">\n </div>\n </div>\n <div *ngIf=\"tableFile\" class=\"row\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{eachFile?.name}}\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"copyOfInputAllFiles?.length === 0 && isShowNoFileIcon\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <label class=\"custom-file\" *ngIf=\"isDeleteFileButtonVisible && !tableFile\">\n <!-- HA 19DEC23 For translation -->\n <!-- VD 03May24 file upload fix-->\n <!-- RS 09JAN2025 -->\n <button [class]=\"error ? 'she-btn-primary-bordered Invalid' : 'she-btn-primary-bordered'\" style=\"width:275px;\" (click)=\"fileInput.click()\"[ngClass]=\"{ 'btn-disabled': copyOfInputAllFiles?.length >= maxFiles }\" [disabled]=\"copyOfInputAllFiles?.length >= maxFiles\">Choose Files</button>\n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" [accept]=\"allowedFileTypes.join(',')\"\n style=\"display:none;\"\n (change) = uploadMultipleFiles($event)\n />\n </label>\n\n <!-- RS 09JAN2025 -->\n <!-- Error messages section -->\n <div class=\"file-constraints\" *ngIf=\"validationErrors.length > 0\">\n <small class=\"text-danger\">\n <div *ngFor=\"let error of validationErrors\">{{ error }}</div>\n </small>\n </div>\n\n<!-- HA 19DEC23 For translation -->\n <label *ngIf=\"tableFile\" class=\"btn btn-primary\">\n {{ 'uploadFile' | i18n:i18nService.currentLanguage }}\n <input id=\"file\" style=\"display: none;\" type=\"file\" class=\"form-control\" (change)= uploadMultipleFiles($event) />\n </label>\n <!-- <span class=\"error-msg\" *ngIf=\"(formControl?.documents?.touched || formControl?.documents?.dirty) &&\n formControl?.documents?.errors?.required\">\n {{LM_POLICY_VALIDATION_MESSAGE.REQUIRED}}\n </span> -->\n <!-- RS 09DEC24 Changed keys--> \n</div>\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.errorMessage}}</div>\n<div class=\"nxt-file-overlay\" *ngIf=\"showFile\">\n <div class=\"nxt-file-map-modal\">\n <div class=\"nxt-file-model-content\">\n <div class=\"nxt-file-model-header\">\n <h4>{{fileName}}</h4>\n <button class=\"close-button\" (click)=\"close()\">X</button>\n </div>\n <ng-container *ngIf=\"isImage; else otherFile\">\n <img [src]=\"fileUrl\" class=\"img-fluid\" alt=\"File Preview\" />\n </ng-container>\n <ng-template #otherFile>\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n </ng-template>\n </div>\n </div>\n</div>\n\n\n", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.label{margin-bottom:0}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}@media (min-width: 992px){.document-cnt{margin-left:10px}}.btn-disabled{background:#e1e1e1;color:#fff;border:none;border-radius:5px;height:50px}.form-control[disabled]{border-radius:5px}.custom-file{color:#9a9a9a;font-size:14px;font-weight:400;display:inline-block;width:auto;margin-bottom:5px}.she-btn-primary-bordered{background:#fff;color:#48b7ff;border:1px solid #48B7FF;border-radius:5px;height:50px;outline:none!important}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.nxt-file-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.nxt-file-map-modal{background-color:#fff;border-radius:8px;overflow:hidden;width:80%;max-width:800px;max-height:90%;display:flex;flex-direction:column}.nxt-file-model-content{display:flex;flex-direction:column;height:100%}.nxt-file-model-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background-color:#f5f5f5;border-bottom:1px solid #ddd}.nxt-file-model-header h4{margin:0;font-size:1.25em}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.Invalid{border:1px solid red!important}\n"] }]
|
|
260
|
-
}], ctorParameters: () => [{ type: i1.SharedService }, { type: i2.DataService }, { type: i3.DomSanitizer }, { type: i4.I18nService }], propDecorators: { selectedFileData: [{
|
|
261
|
-
type: Output
|
|
262
|
-
}], deletedFileData: [{
|
|
263
|
-
type: Output
|
|
264
|
-
}], allFiles: [{
|
|
265
|
-
type: Input
|
|
266
|
-
}], limitFileUploading: [{
|
|
267
|
-
type: Input
|
|
268
|
-
}], isDeleteFileButtonVisible: [{
|
|
269
|
-
type: Input
|
|
270
|
-
}], isShowNoFileIcon: [{
|
|
271
|
-
type: Input
|
|
272
|
-
}], tableFile: [{
|
|
273
|
-
type: Input
|
|
274
|
-
}], question: [{
|
|
275
|
-
type: Input
|
|
276
|
-
}], error: [{
|
|
277
|
-
type: Input
|
|
278
|
-
}] } });
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBc0MsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBV2pILE1BQU0sT0FBTyxtQkFBbUI7SUF5QlY7SUFBdUM7SUFBaUM7SUFDbkY7SUF6QkMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUM3QyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUMzQyxRQUFRLENBQUM7SUFDVCxrQkFBa0IsQ0FBQztJQUNuQix5QkFBeUIsQ0FBQztJQUMxQixnQkFBZ0IsQ0FBQztJQUNqQixTQUFTLENBQUMsQ0FBRSx5QkFBeUI7SUFDckMsUUFBUSxDQUFDO0lBQ1QsS0FBSyxDQUFLO0lBQ3JCLGNBQWM7SUFDTCxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFDaEMsV0FBVyxHQUFXLENBQUMsQ0FBQyxDQUFFLG1CQUFtQjtJQUM3QyxRQUFRLEdBQVcsQ0FBQyxDQUFDLENBQUssZ0JBQWdCO0lBQzFDLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUdoQyxxQkFBcUIsR0FBYSxFQUFFLENBQUM7SUFDckMsbUJBQW1CLENBQUM7SUFDcEIsd0JBQXdCLENBQUM7SUFDekIsT0FBTyxDQUFDO0lBQ1IsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFFBQVEsR0FB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QkFBakMsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LE91dHB1dCxFdmVudEVtaXR0ZXIsIElucHV0ICxFbGVtZW50UmVmLCBPbkNoYW5nZXMsU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzIHtcbiAgQE91dHB1dCgpIHNlbGVjdGVkRmlsZURhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICBAT3V0cHV0KCkgZGVsZXRlZEZpbGVEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFsbEZpbGVzO1xuICBASW5wdXQoKSBsaW1pdEZpbGVVcGxvYWRpbmc7XG4gIEBJbnB1dCgpIGlzRGVsZXRlRmlsZUJ1dHRvblZpc2libGU7XG4gIEBJbnB1dCgpIGlzU2hvd05vRmlsZUljb247XG4gIEBJbnB1dCgpIHRhYmxlRmlsZTsgIC8vIGZpbGUgVXBsb2FkIGZyb20gdGFibGVcbiAgQElucHV0KCkgcXVlc3Rpb247XG4gIEBJbnB1dCgpIGVycm9yOmFueTtcbi8vUlMgMDlKQU4yMDI1XG4gIHB1YmxpYyBhbGxvd2VkRmlsZVR5cGVzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlciA9IDA7ICAvLyBpbiBieXRlcyhCaW5hcnkpXG4gIHB1YmxpYyBtYXhGaWxlczogbnVtYmVyID0gNDsgICAgIC8vIGRlZmF1bHQgbGltaXRcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvcnM6IHN0cmluZ1tdID0gW107XG4gXG5cbiAgcHVibGljIHNlbGVjdGVkRmlsZU5hbWVBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGNvcHlPZklucHV0QWxsRmlsZXM7XG4gIHB1YmxpYyBjb3B5T2ZGaWxlVXBsb2FkaW5nTGltaXQ7XG4gIHB1YmxpYyBmaWxlVXJsO1xuICBwdWJsaWMgc2hvd0ZpbGUgPSBmYWxzZTtcbiAgcHVibGljIGlzSW1hZ2UgPSBmYWxzZTtcbiAgcHVibGljIGZpbGVOYW1lID0gJyc7XG4gIGN1cnJlbnRGaWxlOiBhbnk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgU2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSwgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZVxuICApIHsgfVxuICAvL1JTIDA5SkFOMjAyNVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVGaWxlQ29uZmlncygpO1xuICAgfVxuICAvLyBWRCAwM01heTI0IGZpbGUgdXBsb2FkIGZpeFxuICAvLyBvbkZpbGVVcGxvYWQoZXZlbnQ6IGFueSkge1xuICAvLyAgIGNvbnN0IGZpbGVVcGxvYWRlckVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gIC8vICAgICAnZmlsZVVwbG9hZCdcbiAgLy8gICApIGFzIEhUTUxFbGVtZW50O1xuICAvLyAgIGZpbGVVcGxvYWRlckVsZW1lbnQuY2xpY2soKTtcbiAgLy8gfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zb2xlLmxvZygnc2ltcGxlIGNoYW5nZXMnLCBzaW1wbGVDaGFuZ2VzKTtcbiAgICBpZiAoc2ltcGxlQ2hhbmdlcy5hbGxGaWxlcykgeyAgLy9TS1M1Tk9WMjVcbiAgICAgIHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA9IHNpbXBsZUNoYW5nZXMuYWxsRmlsZXMuY3VycmVudFZhbHVlIHx8IFtdO1xuICAgIH1cblxuICAgIGlmIChzaW1wbGVDaGFuZ2VzLmxpbWl0RmlsZVVwbG9hZGluZykge1xuICAgICAgdGhpcy5jb3B5T2ZGaWxlVXBsb2FkaW5nTGltaXQgPSBzaW1wbGVDaGFuZ2VzLmxpbWl0RmlsZVVwbG9hZGluZz8uY3VycmVudFZhbHVlO1xuICAgIH1cblxuICB9XG5cbiAgLy9SUyAwOUpBTjIwMjUgSW5pdGlhbGl6ZXMgZmlsZSB1cGxvYWQgc2V0dGluZ3MgKGFsbG93ZWQgdHlwZXMsIG1heCBzaXplLCBhbmQgbWF4IGZpbGVzKSBieSBwYXJzaW5nIG1ldGFkYXRhIGZyb20gZmllbGRzTWV0YVxuICAgaW5pdGlhbGl6ZUZpbGVDb25maWdzKCkge1xuICAgIGlmICh0aGlzLnF1ZXN0aW9uPy5maWVsZHNNZXRhKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBtZXRhRGF0YSA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5maWVsZHNNZXRhKTtcbiAgICAgICAgY29uc3QgZmlsZUNvbmZpZyA9IG1ldGFEYXRhWzBdOyAgLy8gR2V0IGZpcnN0IGNvbmZpZyBvYmplY3RcbiAgICAgICAgaWYgKGZpbGVDb25maWcpIHtcbiAgICAgICAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXMgPSBmaWxlQ29uZmlnLmFsbG93ZWRUeXBlcyB8fCBbXTtcbiAgICAgICAgICB0aGlzLm1heEZpbGVTaXplID0gZmlsZUNvbmZpZy5tYXhGaWxlU2l6ZSB8fCAwO1xuICAgICAgICAgIHRoaXMubWF4RmlsZXMgPSBmaWxlQ29uZmlnLm1heEZpbGVzIHx8IDU7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgZmllbGRzTWV0YTonLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkTXVsdGlwbGVGaWxlcyhldmVudDogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0ZpbGUgdXBsb2FkZXIgaW5pdGlhdGVkJyk7XG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gW107IC8vIFJTIDE3SkFOMjAyNSBDbGVhciBwcmV2aW91cyBlcnJvcnNcbiAgICBsZXQgaW5wdXRGaWxlczogYW55W10gPSB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgPyB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgOiBbXTtcbiAgICBjb25zdCBzZWxlY3RlZEZpbGVEYXRhID0gW107XG4gICAgY29uc3QgdXBsb2FkZWRGaWxlcyA9IGV2ZW50LnRhcmdldC5maWxlcztcblxuICAgIC8vIFJTIDA5SkFOMjAyNSBDaGVjayBmaWxlIGNvdW50IGxpbWl0XG4gICAgaWYgKHVwbG9hZGVkRmlsZXMubGVuZ3RoICsgaW5wdXRGaWxlcy5sZW5ndGggPiB0aGlzLm1heEZpbGVzKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaChgTWF4aW11bSAke3RoaXMubWF4RmlsZXN9IGZpbGVzIGFsbG93ZWRgKTtcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlYWRGaWxlc1Byb21pc2VzID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGVhY2hVcGxvYWRlZEZpbGUgb2YgdXBsb2FkZWRGaWxlcykge1xuICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGVhY2hVcGxvYWRlZEZpbGU7XG4gICAgICBcbiAgICAgIC8vUlMgMDlKQU4yMDI1IENoZWNrIGZpbGUgdHlwZVxuICAgICAgY29uc3QgZmlsZUV4dCA9ICcuJyArIGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodGhpcy5hbGxvd2VkRmlsZVR5cGVzLmxlbmd0aCA+IDAgJiYgIXRoaXMuYWxsb3dlZEZpbGVUeXBlcy5pbmNsdWRlcyhmaWxlRXh0KSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaChgRmlsZSB0eXBlICR7ZmlsZUV4dH0gbm90IGFsbG93ZWQuIEFsbG93ZWQgdHlwZXM6ICR7dGhpcy5hbGxvd2VkRmlsZVR5cGVzLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvL1JTIDA5SkFOMjAyNSBDaGVjayBmaWxlIHNpemVcbiAgICAgIGlmICh0aGlzLm1heEZpbGVTaXplID4gMCAmJiBmaWxlLnNpemUgPiB0aGlzLm1heEZpbGVTaXplKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5wdXNoKGBGaWxlIFwiJHtmaWxlLm5hbWV9XCIgZXhjZWVkcyBzaXplIGxpbWl0IG9mICR7dGhpcy5tYXhGaWxlU2l6ZSAvIDEwNDg1NzZ9TUJgKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy52YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBmaWxlRXh0LnN1YnN0cmluZygxKTtcbiAgICAgICAgY29uc3QgZmlsZVJlYWRQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIFxuICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlRGF0YSA9IHtcbiAgICAgICAgICAgICAgZG9jOiByZWFkZXIucmVzdWx0LFxuICAgICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgICAgICBzaXplOiBmaWxlLnNpemUsIC8vIFJTIDE3SkFOMjAyNSBcbiAgICAgICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgICB9O1xuICBcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsZURhdGEucHVzaChmaWxlRGF0YSk7XG4gICAgICAgICAgICBpbnB1dEZpbGVzLnB1c2goZmlsZURhdGEpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH07XG4gIFxuICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaChgRXJyb3IgcmVhZGluZyBmaWxlIFwiJHtmaWxlLm5hbWV9XCJgKTsvLyBSUyAxN0pBTjIwMjUgXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlYWRGaWxlc1Byb21pc2VzLnB1c2goZmlsZVJlYWRQcm9taXNlKTsgICAgIFxuICAgIH1cbiAgfVxuICAgIGlmIChyZWFkRmlsZXNQcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBXYWl0IGZvciBhbGwgcHJvbWlzZXMgdG8gcmVzb2x2ZVxuICAgICAgUHJvbWlzZS5hbGwocmVhZEZpbGVzUHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgPSBpbnB1dEZpbGVzO1xuICAgICAgICBjb25zb2xlLmxvZygndXBsb2FkZWRGaWxlcycsIGlucHV0RmlsZXMpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZURhdGEuZW1pdChpbnB1dEZpbGVzKTtcbiAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVhZGluZyBmaWxlcycpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignWW91IGNhbiB1cGxvYWQgbWF4IDUgZmlsZXMnKTtcbiAgICAgIC8vIHRoaXMudG9hc3RyLndhcm5pbmcoVE9BU1RFUl9NRVNTQUdFUy5NQVhfRklWRV9GSUxFUywgVE9BU1RFUl9NRVNTQUdFUy5XQVJOSU5HX1RJVExFKTtcbiAgICB9XG4gIFxuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuICB9XG4gIFxuXG4gIC8vIHVwbG9hZE11bHRpcGxlRmlsZXMoZXZlbnQ6IGFueSkge1xuICAvLyAgIGNvbnNvbGUubG9nKCdGaWxlIHVwbG9hZGVyIGluaXRpYXRlZCcpO1xuICAvLyAgIGxldCBpbnB1dEZpbGVzOiBhbnlbXSA9IHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA/IHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA6IFtdO1xuICAvLyAgIGNvbnN0IHNlbGVjdGVkRmlsZURhdGEgPSBbXTtcbiAgLy8gICBjb25zdCB1cGxvYWRlZEZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAvLyAgIGlmICh1cGxvYWRlZEZpbGVzLmxlbmd0aCArIGlucHV0RmlsZXMubGVuZ3RoIDw9IHRoaXMuY29weU9mRmlsZVVwbG9hZGluZ0xpbWl0KSB7XG4gIC8vICAgICBmb3IgKGNvbnN0IGVhY2hVcGxvYWRlZEZpbGUgb2YgdXBsb2FkZWRGaWxlcykge1xuICAvLyAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAvLyAgICAgICBjb25zdCBmaWxlOiBGaWxlID0gZWFjaFVwbG9hZGVkRmlsZTtcbiAgLy8gICAgICAgY29uc3QgZm9ybWF0ID0gZmlsZS5uYW1lLnNwbGl0KCcuJylbMV07XG4gIC8vICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAvLyAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAvLyAgICAgICAgIHNlbGVjdGVkRmlsZURhdGEucHVzaCh7XG4gIC8vICAgICAgICAgICBkb2M6IHJlYWRlci5yZXN1bHQsXG4gIC8vICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gIC8vICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gIC8vICAgICAgICAgICBmb3JtYXQsXG4gIC8vICAgICAgICAgICBpZDogbnVsbCxcbiAgLy8gICAgICAgICB9KTtcbiAgLy8gICAgICAgICBpbnB1dEZpbGVzLnB1c2goe1xuICAvLyAgICAgICAgICAgZG9jOiByZWFkZXIucmVzdWx0LFxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAvLyAgICAgICAgICAgdHlwZTogZmlsZS50eXBlLFxuICAvLyAgICAgICAgICAgZm9ybWF0LFxuICAvLyAgICAgICAgICAgaWQ6IG51bGwsXG4gIC8vICAgICAgICAgfSk7XG4gIC8vICAgICAgIH07XG4gIC8vICAgICB9XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIGNvbnNvbGUud2FybignWW91IGNhbiB1cGxvYWQgbWF4IDUgZmlsZXMnKTtcbiAgLy8gICAgIC8vdGhpcy50b2FzdHIud2FybmluZyhUT0FTVEVSX01FU1NBR0VTLk1BWF9GSVZFX0ZJTEVTLCBUT0FTVEVSX01FU1NBR0VTLldBUk5JTkdfVElUTEUpO1xuICAvLyAgIH1cbiAgLy8gICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgLy8gICB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgPSBpbnB1dEZpbGVzO1xuICAvLyAgIGNvbnNvbGUubG9nKCd1cGxvYWRlZEZpbGVzJyxpbnB1dEZpbGVzKTtcbiAgLy8gICB0aGlzLnNlbGVjdGVkRmlsZURhdGEuZW1pdChpbnB1dEZpbGVzKTtcbiAgLy8gfVxuXG5cbiAgZGVsZXRlRmlsZShjdXJyZW50RmlsZUluZGV4KSB7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWRGaWxlTmFtZSA9IHRoaXMuc2VsZWN0ZWRGaWxlTmFtZUFycmF5LnNwbGljZShjdXJyZW50RmlsZUluZGV4LCAxKTtcbiAgICAgICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMuc3BsaWNlKGN1cnJlbnRGaWxlSW5kZXgsIDEpO1xuICAgICAgICBjb25zb2xlLmxvZygnZW1pdCcsIGRlbGV0ZWRGaWxlWzBdKTtcbiAgICAgICAgdGhpcy5kZWxldGVkRmlsZURhdGEuZW1pdChkZWxldGVkRmlsZVswXSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlRGF0YS5lbWl0KHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyk7XG4gIH1cblxuXG4vLyBWRCAyME1heTI0IC0gcHJldmlldyBjaGFuZ2VzXG4vLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xuICB2aWV3RmlsZShjdXJyZW50RmlsZSkge1xuICAgIHRoaXMuY3VycmVudEZpbGUgPSBjdXJyZW50RmlsZTtcbiAgICB0aGlzLnNob3dGaWxlID0gdHJ1ZTtcbiAgICBjb25zb2xlLmxvZyhjdXJyZW50RmlsZSk7XG4gICAgaWYodGhpcy5xdWVzdGlvbi5zdWJUZXh0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGZpbGVNZXRhID0gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uLnN1YlRleHQpO1xuICAgICAgbGV0IGVuZHBvaW50ID0gZmlsZU1ldGEuZW5kcG9pbnQ7XG4gICAgICBsZXQgcXVlcnlQYXJhbWV0ZXIgPSBmaWxlTWV0YS5xdWVyeVBhcmFtZXRlcjtcbiAgICAgICAgbGV0IGZpbGUgPSBjdXJyZW50RmlsZTtcbiAgICAgICAgICBpZihlbmRwb2ludCl7XG4gICAgICAgICAgICBjb25zdCBmdWxsRW5kUG9pbnQgPSBlbmRwb2ludCArICc/JysgcXVlcnlQYXJhbWV0ZXIgKyAnPScgKyBmaWxlW3F1ZXJ5UGFyYW1ldGVyXTtcbiAgICAgICAgICAgIGlmKGZ1bGxFbmRQb2ludCl7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpUmVzcG9uc2UoZnVsbEVuZFBvaW50KS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoYXBpUmVzcG9uc2Upe1xuICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWxlQ29udGVudChhcGlSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgfVxuICAgICAgIH1cbiAgICB9ZWxzZSB7XG4gICAgICAgIHRoaXMudmlld0xvY2FsRmlsZSgpXG4gICAgfVxuICB9XG5cbi8vIC8vIFZEIDAzQXVnMjQgcHJvY2VzcyBsb2NhbCBwcmV2aWV3IFxuICB2aWV3TG9jYWxGaWxlKCl7XG4gICAgaWYodGhpcy5jdXJyZW50RmlsZSl7XG4gICAgICB0aGlzLnNldEZpbGVVcmwodGhpcy5jdXJyZW50RmlsZT8uZG9jKTtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSB0aGlzLmN1cnJlbnRGaWxlLm5hbWU7XG4gICAgICB0aGlzLmlzSW1hZ2UgPSB0aGlzLmN1cnJlbnRGaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJyk7XG4gICAgfVxuXG4gIH1cblxuIFxuICBoYW5kbGVGaWxlQ29udGVudChmaWxlUmVzcG9uc2U6IGFueSkge1xuICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGZpbGVSZXNwb25zZS5jb250ZW50LmRhdGEpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiBmaWxlUmVzcG9uc2UudHlwZSB9KTtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICB0aGlzLnNldEZpbGVVcmwodXJsKTtcbiAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcbiAgICBpZihmaWxlUmVzcG9uc2UubmFtZSl7XG4gICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZVJlc3BvbnNlLm5hbWU7XG4gICAgICBjb25zdCBpbWFnZUV4dGVuc2lvbnMgPSBbJ2pwZycsICdqcGVnJywgJ3BuZycsICdnaWYnLCAnYm1wJywgJ3dlYnAnXTtcbiAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlUmVzcG9uc2UubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5pc0ltYWdlID0gaW1hZ2VFeHRlbnNpb25zLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24gfHwgJycpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpbGVVcmwodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbGVVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKTtcbiAgfVxuXG4gIGdldERvY0ljb24oZG9jTmFtZSkge1xuICAgIGNvbnN0IGV4dCA9IGRvY05hbWUuc3BsaXQoJy4nKS5wb3AoLTEpO1xuICAgIHJldHVybiB0aGlzLlNoYXJlZFNlcnZpY2UuZG9jSWNvbihleHQpO1xuICB9XG5cbiAgY2xvc2UoKXtcbiAgICB0aGlzLnNob3dGaWxlID0gZmFsc2U7XG4gICAgdGhpcy5maWxlTmFtZSA9ICcnO1xuICAgIHRoaXMuZmlsZVVybCA9ICcnO1xuICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmZpbGVVcmwpIHtcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5maWxlVXJsKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luOiAwO1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgKm5nSWY9XCIhaXNEZWxldGVGaWxlQnV0dG9uVmlzaWJsZVwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj5cbiAgICA8IS0tIEhBIDE5REVDMjMgRm9yIHRyYW5zbGF0aW9uIC0tPlxuICAgIDxsYWJlbCBjbGFzcz1cInNoZS1sYWJlbFwiPnt7ICdhdHRhY2htZW50JyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19PC9sYWJlbD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNvbC1sZy01IGRvY3VtZW50LWNudCBtLXQtMTAgbS1iLTEwXCJcbiAgICAqbmdGb3I9XCJsZXQgZWFjaEZpbGUgb2YgY29weU9mSW5wdXRBbGxGaWxlczsgbGV0IGN1cnJlbnRGaWxlSW5kZXggPSBpbmRleFwiPlxuICAgICA8ZGl2ICpuZ0lmPVwiIXRhYmxlRmlsZVwiPiA8IS0tIChjbGljayk9XCJ2aWV3RmlsZShlYWNoRmlsZSlcIiAgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgZG9jdW1lbnRfaW1hZ2VcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cImdldERvY0ljb24oZWFjaEZpbGU/Lm5hbWUpXCI+XG4gICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgZG9jdW1lbnRfbmFtZVwiPlxuICAgICAgICB7e2VhY2hGaWxlPy5uYW1lfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50X2RlbGV0ZVwiIChjbGljayk9XCJkZWxldGVGaWxlKGN1cnJlbnRGaWxlSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiICpuZ0lmPVwiaXNEZWxldGVGaWxlQnV0dG9uVmlzaWJsZVwiPlxuICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcm54dC5zMy5hbWF6b25hd3MuY29tL0ljb25zL2ZpbGVUeXBlSWNvbnMvYmluLnN2Z1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFZEIDIwTWF5MjQgLSBwcmV2aWV3IGNoYW5nZXMtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWljb25cIiAoY2xpY2spPVwidmlld0ZpbGUoZWFjaEZpbGUpXCIgKm5nSWY9XCJpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9ybnh0LnMzLmFtYXpvbmF3cy5jb20vSWNvbnMvZmlsZVR5cGVJY29ucy9pY29uczgtZXllLTI0LnBuZ1wiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRhYmxlRmlsZVwiIGNsYXNzPVwicm93XCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgZG9jdW1lbnRfaW1hZ2VcIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0RG9jSWNvbihlYWNoRmlsZT8uZG9jKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4O2hlaWdodDogNDBweDtcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05IGRvY3VtZW50X25hbWVcIiBzdHlsZT1cIm92ZXJmbG93OmhpZGRlbjtoZWlnaHQ6MzVweDtcIj5cbiAgICAgICAgICB7e2VhY2hGaWxlPy5uYW1lfX1cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbS1iLTMwIHRleHQtY2VudGVyXCIgKm5nSWY9XCJjb3B5T2ZJbnB1dEFsbEZpbGVzPy5sZW5ndGggPT09IDAgJiYgaXNTaG93Tm9GaWxlSWNvblwiPlxuICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9ybnh0LnMzLmFtYXpvbmF3cy5jb20vSWNvbnMvZmlsZVR5cGVJY29ucy9pY19ub19hdHRhY2htZW50cy5zdmdcIiBzdHlsZT1cImhlaWdodDogMTQwcHg7XCI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJjb2wtbGctNlwiIHN0eWxlPVwicGFkZGluZzowO21hcmdpbi10b3A6IDEwcHg7XCI+XG4gIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1maWxlXCIgKm5nSWY9XCJpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlICYmICF0YWJsZUZpbGVcIj5cbiAgICA8IS0tIEhBIDE5REVDMjMgRm9yIHRyYW5zbGF0aW9uIC0tPlxuICAgIDwhLS0gVkQgMDNNYXkyNCBmaWxlIHVwbG9hZCBmaXgtLT5cbiAgICA8IS0tIFJTIDA5SkFOMjAyNSAtLT5cbiAgICA8YnV0dG9uIFtjbGFzc109XCJlcnJvciA/ICdzaGUtYnRuLXByaW1hcnktYm9yZGVyZWQgSW52YWxpZCcgOiAnc2hlLWJ0bi1wcmltYXJ5LWJvcmRlcmVkJ1wiIHN0eWxlPVwid2lkdGg6Mjc1cHg7XCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCJbbmdDbGFzc109XCJ7ICdidG4tZGlzYWJsZWQnOiBjb3B5T2ZJbnB1dEFsbEZpbGVzPy5sZW5ndGggPj0gbWF4RmlsZXMgfVwiIFtkaXNhYmxlZF09XCJjb3B5T2ZJbnB1dEFsbEZpbGVzPy5sZW5ndGggPj0gbWF4RmlsZXNcIj5DaG9vc2UgRmlsZXM8L2J1dHRvbj5cbiAgICA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiICBuYW1lPVwiZmlsZVVwbG9hZFwiIG11bHRpcGxlPVwibXVsdGlwbGVcIiAgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVzLmpvaW4oJywnKVwiXG4gICAgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCJcbiAgICAoY2hhbmdlKSA9IHVwbG9hZE11bHRpcGxlRmlsZXMoJGV2ZW50KVxuICAgIC8+XG4gIDwvbGFiZWw+XG5cbiAgPCEtLSBSUyAwOUpBTjIwMjUgLS0+XG4gIDwhLS0gRXJyb3IgbWVzc2FnZXMgc2VjdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImZpbGUtY29uc3RyYWludHNcIiAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMFwiPlxuICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlcnJvciBvZiB2YWxpZGF0aW9uRXJyb3JzXCI+e3sgZXJyb3IgfX08L2Rpdj5cbiAgICA8L3NtYWxsPlxuICA8L2Rpdj5cblxuPCEtLSBIQSAxOURFQzIzIEZvciB0cmFuc2xhdGlvbiAtLT5cbiAgPGxhYmVsICpuZ0lmPVwidGFibGVGaWxlXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5cbiAgICB7eyAndXBsb2FkRmlsZScgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fVxuICAgIDxpbnB1dCBpZD1cImZpbGVcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgdHlwZT1cImZpbGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPSB1cGxvYWRNdWx0aXBsZUZpbGVzKCRldmVudCkgLz5cbiAgPC9sYWJlbD5cbiAgPCEtLSA8c3BhbiBjbGFzcz1cImVycm9yLW1zZ1wiICpuZ0lmPVwiKGZvcm1Db250cm9sPy5kb2N1bWVudHM/LnRvdWNoZWQgfHwgICAgICAgIGZvcm1Db250cm9sPy5kb2N1bWVudHM/LmRpcnR5KSAmJlxuICBmb3JtQ29udHJvbD8uZG9jdW1lbnRzPy5lcnJvcnM/LnJlcXVpcmVkXCI+XG4gICAge3tMTV9QT0xJQ1lfVkFMSURBVElPTl9NRVNTQUdFLlJFUVVJUkVEfX1cbiAgPC9zcGFuPiAtLT5cbiAgPCEtLSBSUyAwOURFQzI0IENoYW5nZWQga2V5cy0tPiBcbjwvZGl2PlxuPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1tc2dcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+e3txdWVzdGlvbj8uZXJyb3JNZXNzYWdlfX08L2Rpdj5cbjxkaXYgY2xhc3M9XCJueHQtZmlsZS1vdmVybGF5XCIgKm5nSWY9XCJzaG93RmlsZVwiPlxuICA8ZGl2IGNsYXNzPVwibnh0LWZpbGUtbWFwLW1vZGFsXCI+XG4gICAgPGRpdiBjbGFzcz1cIm54dC1maWxlLW1vZGVsLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJueHQtZmlsZS1tb2RlbC1oZWFkZXJcIj5cbiAgICAgICAgPGg0Pnt7ZmlsZU5hbWV9fTwvaDQ+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlg8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2U7IGVsc2Ugb3RoZXJGaWxlXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJmaWxlVXJsXCIgY2xhc3M9XCJpbWctZmx1aWRcIiBhbHQ9XCJGaWxlIFByZXZpZXdcIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI290aGVyRmlsZT5cbiAgICAgICAgPGlmcmFtZSBbc3JjXT1cImZpbGVVcmxcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI1MDBweFwiPjwvaWZyYW1lPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG4iXX0=
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../services/shared.service";
|
|
4
|
-
import * as i2 from "../../i18n.service";
|
|
5
|
-
import * as i3 from "@angular/common";
|
|
6
|
-
import * as i4 from "../../i18n.pipe";
|
|
7
|
-
export class FileViewComponent {
|
|
8
|
-
SharedService;
|
|
9
|
-
i18nService;
|
|
10
|
-
documentData;
|
|
11
|
-
api;
|
|
12
|
-
constructor(SharedService, i18nService) {
|
|
13
|
-
this.SharedService = SharedService;
|
|
14
|
-
this.i18nService = i18nService;
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
}
|
|
18
|
-
viewDoc(link) {
|
|
19
|
-
/*
|
|
20
|
-
Author: Vinay Jadhav
|
|
21
|
-
@description: This function will view the file from azure blob.
|
|
22
|
-
The link passed as a parameter will extract file name and pass it to the service
|
|
23
|
-
@param link: It will accept a doc link
|
|
24
|
-
@return: It will not return anything but it will either show or download the file.
|
|
25
|
-
*/
|
|
26
|
-
if (link && link !== null) {
|
|
27
|
-
this.SharedService.processViewFile(link.split('/').pop(), this.api);
|
|
28
|
-
}
|
|
29
|
-
// window.open(environment.api.substring(0, environment.api.length - 1) + link, '_blank');
|
|
30
|
-
}
|
|
31
|
-
getDocIcon(docName) {
|
|
32
|
-
const ext = docName.split('.').pop(-1);
|
|
33
|
-
return this.SharedService.docIcon(ext);
|
|
34
|
-
}
|
|
35
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileViewComponent, deps: [{ token: i1.SharedService }, { token: i2.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileViewComponent, selector: "app-file-view", inputs: { documentData: "documentData", api: "api" }, ngImport: i0, template: "<div class=\"col-lg-12\">\n <div class=\"row\" style=\"text-align: left;\">\n <div class=\"col-md-12\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label attachment\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n </div>\n <div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-lg-3 document-cnt\" *ngFor=\"let file of documentData;let i = index;\" style=\"margin-bottom: 10px;\">\n <div class=\"row\" (click)=\"viewDoc(file?.doc)\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(file?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{file?.name}}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"documentData?.length === 0\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n </div>\n ", styles: [".document-cnt{border:1px solid #48B7FF;border-radius:5px;margin-right:30px}.document_image{background:#48b7ff66;padding:10px}.document_name{padding:15px 5px}.document_delete{position:absolute;background:#c20808;display:block;height:30px;width:30px;border-radius:50px;bottom:32px;right:-15px;cursor:pointer}.document_delete img{position:relative;left:8px;top:3px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] });
|
|
37
|
-
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileViewComponent, decorators: [{
|
|
39
|
-
type: Component,
|
|
40
|
-
args: [{ selector: 'app-file-view', template: "<div class=\"col-lg-12\">\n <div class=\"row\" style=\"text-align: left;\">\n <div class=\"col-md-12\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label attachment\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n </div>\n <div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-lg-3 document-cnt\" *ngFor=\"let file of documentData;let i = index;\" style=\"margin-bottom: 10px;\">\n <div class=\"row\" (click)=\"viewDoc(file?.doc)\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(file?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{file?.name}}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"documentData?.length === 0\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n </div>\n ", styles: [".document-cnt{border:1px solid #48B7FF;border-radius:5px;margin-right:30px}.document_image{background:#48b7ff66;padding:10px}.document_name{padding:15px 5px}.document_delete{position:absolute;background:#c20808;display:block;height:30px;width:30px;border-radius:50px;bottom:32px;right:-15px;cursor:pointer}.document_delete img{position:relative;left:8px;top:3px}\n"] }]
|
|
41
|
-
}], ctorParameters: () => [{ type: i1.SharedService }, { type: i2.I18nService }], propDecorators: { documentData: [{
|
|
42
|
-
type: Input
|
|
43
|
-
}], api: [{
|
|
44
|
-
type: Input
|
|
45
|
-
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtdmlldy9maWxlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS12aWV3L2ZpbGUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFXLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBVXpELE1BQU0sT0FBTyxpQkFBaUI7SUFJUjtJQUNUO0lBSkYsWUFBWSxDQUFDO0lBQ2IsR0FBRyxDQUFDO0lBRWIsWUFBb0IsYUFBNEIsRUFDckMsV0FBd0I7UUFEZixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUM3QixDQUFDO0lBRVAsUUFBUTtJQUNSLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBSTtRQUNUOzs7Ozs7T0FNRDtRQUNELElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0MsMEZBQTBGO0lBQzVGLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTztRQUNoQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQzt3R0E1QlUsaUJBQWlCOzRGQUFqQixpQkFBaUIsMkdDVjlCLHdwQ0F1QkU7OzRGRGJXLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzRHQUtoQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0ICwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmlsZS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdmlldy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkb2N1bWVudERhdGE7XG4gIEBJbnB1dCgpIGFwaTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIFNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXG4gICAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlXG4gICAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIHZpZXdEb2MobGluaykge1xuICAgICAvKlxuICAgIEF1dGhvcjogVmluYXkgSmFkaGF2XG4gICAgQGRlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdmlldyB0aGUgZmlsZSBmcm9tIGF6dXJlIGJsb2IuXG4gICAgICAgICAgICAgICAgICBUaGUgbGluayBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIgd2lsbCBleHRyYWN0IGZpbGUgbmFtZSBhbmQgcGFzcyBpdCB0byB0aGUgc2VydmljZVxuICAgIEBwYXJhbSBsaW5rOiBJdCB3aWxsIGFjY2VwdCBhIGRvYyBsaW5rXG4gICAgQHJldHVybjogSXQgd2lsbCBub3QgcmV0dXJuIGFueXRoaW5nIGJ1dCBpdCB3aWxsIGVpdGhlciBzaG93IG9yIGRvd25sb2FkIHRoZSBmaWxlLlxuICAqL1xuICAgaWYgKGxpbmsgJiYgbGluayAhPT0gbnVsbCkge1xuICAgIHRoaXMuU2hhcmVkU2VydmljZS5wcm9jZXNzVmlld0ZpbGUobGluay5zcGxpdCgnLycpLnBvcCgpLHRoaXMuYXBpKTtcbiAgfVxuICAgIC8vIHdpbmRvdy5vcGVuKGVudmlyb25tZW50LmFwaS5zdWJzdHJpbmcoMCwgZW52aXJvbm1lbnQuYXBpLmxlbmd0aCAtIDEpICsgbGluaywgJ19ibGFuaycpO1xuICB9XG5cbiAgZ2V0RG9jSWNvbihkb2NOYW1lKSB7XG4gICAgY29uc3QgZXh0ID0gZG9jTmFtZS5zcGxpdCgnLicpLnBvcCgtMSk7XG4gICAgcmV0dXJuIHRoaXMuU2hhcmVkU2VydmljZS5kb2NJY29uKGV4dCk7XG4gIH1cblxuICBcblxufVxuIiwiPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPCEtLSBIQSAxOURFQzIzIEZvciB0cmFuc2xhdGlvbiAtLT5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic2hlLWxhYmVsIGF0dGFjaG1lbnRcIj57eyAnYXR0YWNobWVudCcgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fTwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW46IDA7XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBkb2N1bWVudC1jbnRcIiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBkb2N1bWVudERhdGE7bGV0IGkgPSBpbmRleDtcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKGNsaWNrKT1cInZpZXdEb2MoZmlsZT8uZG9jKVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBkb2N1bWVudF9pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0RG9jSWNvbihmaWxlPy5kb2MpXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHg7aGVpZ2h0OiA0MHB4O1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBkb2N1bWVudF9uYW1lXCIgc3R5bGU9XCJvdmVyZmxvdzpoaWRkZW47aGVpZ2h0OjM1cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ZmlsZT8ubmFtZX19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtLWItMzAgdGV4dC1jZW50ZXJcIiAqbmdJZj1cImRvY3VtZW50RGF0YT8ubGVuZ3RoID09PSAwXCI+XG4gICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcm54dC5zMy5hbWF6b25hd3MuY29tL0ljb25zL2ZpbGVUeXBlSWNvbnMvaWNfbm9fYXR0YWNobWVudHMuc3ZnXCIgc3R5bGU9XCJoZWlnaHQ6IDE0MHB4O1wiPlxuICA8L2Rpdj5cbiAgPC9kaXY+XG4gICJdfQ==
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../services/shared.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
export class LoaderComponent {
|
|
6
|
-
loaderService;
|
|
7
|
-
isLoading = false;
|
|
8
|
-
constructor(loaderService) {
|
|
9
|
-
this.loaderService = loaderService;
|
|
10
|
-
}
|
|
11
|
-
ngOnInit() {
|
|
12
|
-
this.loaderService.isLoading$.subscribe((loading) => {
|
|
13
|
-
this.isLoading = loading;
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoaderComponent, deps: [{ token: i1.SharedService }], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"loader\" *ngIf=\"isLoading\">\n <div class=\"spinner\"></div>\n </div>\n ", styles: [".loader{position:fixed;inset:0;background:#fffc;display:flex;justify-content:center;align-items:center;z-index:9999}.spinner{border:4px solid rgba(0,0,0,.1);border-left-color:#000;border-radius:50%;width:50px;height:50px;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoaderComponent, decorators: [{
|
|
20
|
-
type: Component,
|
|
21
|
-
args: [{ selector: 'app-loader', template: "<div class=\"loader\" *ngIf=\"isLoading\">\n <div class=\"spinner\"></div>\n </div>\n ", styles: [".loader{position:fixed;inset:0;background:#fffc;display:flex;justify-content:center;align-items:center;z-index:9999}.spinner{border:4px solid rgba(0,0,0,.1);border-left-color:#000;border-radius:50%;width:50px;height:50px;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] }]
|
|
22
|
-
}], ctorParameters: () => [{ type: i1.SharedService }] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvbG9hZGVyL2xvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7O0FBUWxELE1BQU0sT0FBTyxlQUFlO0lBSU47SUFGcEIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUUzQixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUFHLENBQUM7SUFFcEQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FWVSxlQUFlOzRGQUFmLGVBQWUsa0RDUjVCLDZGQUdFOzs0RkRLVyxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NoYXJlZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb2FkZXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2FkZXJTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGVyU2VydmljZS5pc0xvYWRpbmckLnN1YnNjcmliZSgobG9hZGluZykgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBsb2FkaW5nO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkZXJcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+XG4gIDwvZGl2PlxuICAiXX0=
|