mmhglobal-dynamicform 1.3.13 → 2.0.0-beta.0
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/lib/animations/component-animations.mjs +12 -0
- package/esm2020/lib/components/buttonfieldbase.component.mjs +62 -0
- package/esm2020/lib/components/containerfieldbase.component.mjs +42 -0
- package/esm2020/lib/components/datalistingfieldbase.component.mjs +138 -0
- package/esm2020/lib/components/fieldbase.component.mjs +90 -0
- package/esm2020/lib/components/inputfieldbase.component.mjs +78 -0
- package/esm2020/lib/directives/scrollbar.theme.directive.mjs +13 -11
- package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +69 -0
- package/esm2020/lib/input-error-message/input-error-message.component.mjs +33 -0
- package/esm2020/lib/kcard/kcard.component.mjs +84 -0
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +53 -12
- package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +18 -0
- package/esm2020/lib/services/component-error-handler.service.mjs +84 -0
- package/esm2020/lib/services/main.service.mjs +171 -73
- package/esm2020/lib/services/zcomponent.debug.service.mjs +17 -8
- package/esm2020/lib/services/zcomponent.service.mjs +133 -9
- package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +15 -23
- package/esm2020/lib/uicontainer/uicontainer.component.mjs +2 -2
- package/esm2020/lib/uicontent/uicontent.component.mjs +21 -9
- package/esm2020/lib/uiheader/uiheader.component.mjs +61 -28
- package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +3 -3
- package/esm2020/lib/uipage/uipage.component.mjs +41 -26
- package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +2 -2
- package/esm2020/lib/zbullet/zbullet.component.mjs +3 -2
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +45 -91
- package/esm2020/lib/zcard/zcard.component.mjs +13 -60
- package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +14 -159
- package/esm2020/lib/zchip/zchip.component.mjs +34 -64
- package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +4 -3
- package/esm2020/lib/zdaterange/zdaterange.component.mjs +3 -3
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +22 -74
- package/esm2020/lib/zdiv/zdiv.component.mjs +63 -40
- package/esm2020/lib/zdiv/zdiv.pipe.mjs +2 -2
- package/esm2020/lib/zform/zform.component.mjs +9 -7
- package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +5 -3
- package/esm2020/lib/zgauge/zgauge.component.mjs +34 -70
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +32 -30
- package/esm2020/lib/zgrid/zgrid.component.mjs +243 -135
- package/esm2020/lib/zimg/zimg.component.mjs +44 -108
- package/esm2020/lib/zinput-container/zinput-container.component.mjs +63 -0
- package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +120 -0
- package/esm2020/lib/zkcard/zkcard.component.mjs +2 -2
- package/esm2020/lib/zlabel/zlabel.component.mjs +18 -94
- package/esm2020/lib/zmfb/zmfb.component.mjs +70 -91
- package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +15 -11
- package/esm2020/lib/zmodal/zmodal.component.mjs +14 -10
- package/esm2020/lib/znumeric/znumeric.component.mjs +18 -94
- package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +35 -87
- package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +59 -0
- package/esm2020/lib/zreport/zreport.component.mjs +25 -27
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +39 -194
- package/esm2020/lib/ztab/ztab.component.mjs +17 -45
- package/esm2020/lib/ztab/ztab.pipe.mjs +6 -4
- package/esm2020/lib/ztext/ztext.component.mjs +20 -180
- package/esm2020/lib/ztextarea/ztextarea.component.mjs +23 -101
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -2
- package/esm2020/lib/ztree/ztree.component.mjs +25 -41
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +104 -143
- package/esm2020/lib/zudf/zudf.component.mjs +12 -8
- package/esm2020/lib/zupload/zupload.component.mjs +18 -39
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +45 -77
- package/esm2020/public-api.mjs +15 -2
- package/fesm2015/mmhglobal-dynamicform.mjs +4491 -4359
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +4490 -4366
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/animations/component-animations.d.ts +1 -0
- package/lib/components/buttonfieldbase.component.d.ts +18 -0
- package/lib/components/containerfieldbase.component.d.ts +19 -0
- package/lib/components/datalistingfieldbase.component.d.ts +30 -0
- package/lib/components/fieldbase.component.d.ts +30 -0
- package/lib/components/inputfieldbase.component.d.ts +19 -0
- package/lib/embed-components/input-field-addons/input-field-addons.component.d.ts +16 -0
- package/lib/input-error-message/input-error-message.component.d.ts +15 -0
- package/lib/kcard/kcard.component.d.ts +21 -0
- package/lib/mmhglobal-dynamicform.module.d.ts +40 -32
- package/lib/pipe/htmlSanitize.pipe.d.ts +10 -0
- package/lib/services/component-error-handler.service.d.ts +14 -0
- package/lib/services/main.service.d.ts +23 -5
- package/lib/services/zcomponent.debug.service.d.ts +4 -1
- package/lib/services/zcomponent.service.d.ts +20 -4
- package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +4 -3
- package/lib/uicontent/uicontent.component.d.ts +6 -2
- package/lib/uiheader/uiheader.component.d.ts +13 -9
- package/lib/zbuttons/zbuttons.component.d.ts +11 -20
- package/lib/zcard/zcard.component.d.ts +6 -20
- package/lib/zcheckbox/zcheckbox.component.d.ts +6 -36
- package/lib/zchip/zchip.component.d.ts +7 -16
- package/lib/zdatetime/zdatetime.component.d.ts +6 -14
- package/lib/zdiv/zdiv.component.d.ts +11 -18
- package/lib/zformcontrol/zformcontrol.component.d.ts +2 -1
- package/lib/zgauge/zgauge.component.d.ts +11 -14
- package/lib/zgrid/zgrid.binding.directive.d.ts +4 -2
- package/lib/zgrid/zgrid.component.d.ts +26 -27
- package/lib/zimg/zimg.component.d.ts +12 -31
- package/lib/zinput-container/zinput-container.component.d.ts +26 -0
- package/lib/zinput-container/zinput-container.pipe.d.ts +20 -0
- package/lib/zlabel/zlabel.component.d.ts +6 -25
- package/lib/zmfb/zmfb.component.d.ts +12 -20
- package/lib/zmodal/zmodal-mobile.component.d.ts +4 -1
- package/lib/zmodal/zmodal.component.d.ts +4 -1
- package/lib/znumeric/znumeric.component.d.ts +7 -29
- package/lib/zpostselectinput/zpostselectinput.component.d.ts +9 -19
- package/lib/zprogressbar/zprogressbar.component.d.ts +28 -0
- package/lib/zreport/zreport.component.d.ts +8 -11
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +10 -35
- package/lib/ztab/ztab.component.d.ts +6 -19
- package/lib/ztext/ztext.component.d.ts +7 -35
- package/lib/ztextarea/ztextarea.component.d.ts +9 -27
- package/lib/ztree/ztree.component.d.ts +6 -12
- package/lib/ztreelist/ztreelist.component.d.ts +17 -27
- package/lib/zupload/zupload.component.d.ts +6 -13
- package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +6 -20
- package/package.json +1 -1
- package/public-api.d.ts +14 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/********** Angular **********/
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { ZComponentHelper } from 'mmhglobal-zcore';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "mmhglobal-zcore";
|
|
6
|
+
export class ComponentErrorHandlerService {
|
|
7
|
+
constructor(alertService) {
|
|
8
|
+
this.alertService = alertService;
|
|
9
|
+
}
|
|
10
|
+
showFormGroupErrorMessage(group, formGroup) {
|
|
11
|
+
formGroup = formGroup || group.form;
|
|
12
|
+
const errorMessage = this.getErrorMessageForInvalidInput(group, formGroup);
|
|
13
|
+
this.alertService.showOkay('Form validation failed', errorMessage.join("<br/>"), ['col-4']);
|
|
14
|
+
console.warn("Form Validation got error(s):", errorMessage);
|
|
15
|
+
}
|
|
16
|
+
getErrorMessageForInvalidInput(group, formGroup, controlName) {
|
|
17
|
+
formGroup = formGroup || group.form;
|
|
18
|
+
if (controlName) {
|
|
19
|
+
return this.extractErrorMessageFromControl(formGroup, controlName, group);
|
|
20
|
+
}
|
|
21
|
+
const fildsErrorMsgArr = [];
|
|
22
|
+
Object.keys(formGroup.controls).forEach(key => {
|
|
23
|
+
const err = this.extractErrorMessageFromControl(formGroup, key, group);
|
|
24
|
+
if (err && err.length > 0) {
|
|
25
|
+
fildsErrorMsgArr.push(err);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return fildsErrorMsgArr;
|
|
29
|
+
}
|
|
30
|
+
extractErrorMessageFromControl(formGroup, key, group) {
|
|
31
|
+
const errorMsgArr = [];
|
|
32
|
+
const control = formGroup.get(key);
|
|
33
|
+
const controlErrors = control?.errors;
|
|
34
|
+
if (control && controlErrors) {
|
|
35
|
+
const errorTypes = Object.keys(controlErrors);
|
|
36
|
+
errorTypes.forEach(errorType => {
|
|
37
|
+
const err = this.getErrorMessageByErrorType(errorType, key, group.fields, controlErrors);
|
|
38
|
+
if (err && err.length > 0) {
|
|
39
|
+
errorMsgArr.push(err);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return errorMsgArr;
|
|
44
|
+
}
|
|
45
|
+
getErrorMessageByErrorType(errorType, controlName, fields, errorDetail) {
|
|
46
|
+
const field = ZComponentHelper.getFieldFromFieldsByValue(fields, controlName);
|
|
47
|
+
switch (errorType) {
|
|
48
|
+
case 'required':
|
|
49
|
+
return `${this.getErrorMsgAction_Required(field.Type)} the ${ZComponentHelper.getFieldLabel(fields, controlName)}`;
|
|
50
|
+
case 'minlength':
|
|
51
|
+
return `${ZComponentHelper.getFieldLabel(fields, controlName)} must be more than ${errorDetail[errorType].requiredLength} characters`;
|
|
52
|
+
case 'maxlength':
|
|
53
|
+
return `${ZComponentHelper.getFieldLabel(fields, controlName)} must be less than ${errorDetail[errorType].requiredLength} characters`;
|
|
54
|
+
case 'email':
|
|
55
|
+
return `Enter a valid email address for ${ZComponentHelper.getFieldLabel(fields, controlName)}`;
|
|
56
|
+
case 'min':
|
|
57
|
+
return `${ZComponentHelper.getFieldLabel(fields, controlName)} must be more than ${errorDetail[errorType].min}`;
|
|
58
|
+
case 'max':
|
|
59
|
+
return `${ZComponentHelper.getFieldLabel(fields, controlName)} must be less than ${errorDetail[errorType].max}`;
|
|
60
|
+
default:
|
|
61
|
+
console.error(`Field Error is not properly handled : ${ZComponentHelper.getFieldLabel(fields, controlName)}`);
|
|
62
|
+
return `Invalid Field: ${ZComponentHelper.getFieldLabel(fields, controlName)}`;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
getErrorMsgAction_Required(type) {
|
|
66
|
+
switch (type) {
|
|
67
|
+
case 'zuiselectmultiple':
|
|
68
|
+
case 'zuiselectmultiple_button':
|
|
69
|
+
case 'select':
|
|
70
|
+
return "Choose";
|
|
71
|
+
default:
|
|
72
|
+
return "Enter";
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
ComponentErrorHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComponentErrorHandlerService, deps: [{ token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
77
|
+
ComponentErrorHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComponentErrorHandlerService, providedIn: 'root' });
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComponentErrorHandlerService, decorators: [{
|
|
79
|
+
type: Injectable,
|
|
80
|
+
args: [{
|
|
81
|
+
providedIn: 'root',
|
|
82
|
+
}]
|
|
83
|
+
}], ctorParameters: function () { return [{ type: i1.AlertService }]; } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWVycm9yLWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3NlcnZpY2VzL2NvbXBvbmVudC1lcnJvci1oYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUtuRCxNQUFNLE9BQU8sNEJBQTRCO0lBRXZDLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUksQ0FBQztJQUU1Qyx5QkFBeUIsQ0FBQyxLQUFhLEVBQUUsU0FBcUI7UUFDbkUsU0FBUyxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDNUYsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sOEJBQThCLENBQUMsS0FBYSxFQUFFLFNBQXFCLEVBQUUsV0FBb0I7UUFDOUYsU0FBUyxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXBDLElBQUksV0FBVyxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzRTtRQUVELE1BQU0s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QUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RyxPQUFPLGtCQUFrQixnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7U0FDbEY7SUFDSCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsSUFBWTtRQUM3QyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssbUJBQW1CLENBQUM7WUFDekIsS0FBSywwQkFBMEIsQ0FBQztZQUNoQyxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7WUFDbEI7Z0JBQ0UsT0FBTyxPQUFPLENBQUM7U0FDbEI7SUFDSCxDQUFDOzswSEE1RVUsNEJBQTRCOzhIQUE1Qiw0QkFBNEIsY0FGM0IsTUFBTTs0RkFFUCw0QkFBNEI7a0JBSHhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBaRmllbGQsIFpHcm91cCB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IFpDb21wb25lbnRIZWxwZXIgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVycm9ySGFuZGxlclNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7IH1cclxuXHJcbiAgcHVibGljIHNob3dGb3JtR3JvdXBFcnJvck1lc3NhZ2UoZ3JvdXA6IFpHcm91cCwgZm9ybUdyb3VwPzogRm9ybUdyb3VwKSB7XHJcbiAgICBmb3JtR3JvdXAgPSBmb3JtR3JvdXAgfHwgZ3JvdXAuZm9ybTtcclxuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlRm9ySW52YWxpZElucHV0KGdyb3VwLCBmb3JtR3JvdXApO1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd09rYXkoJ0Zvcm0gdmFsaWRhdGlvbiBmYWlsZWQnLCBlcnJvck1lc3NhZ2Uuam9pbihcIjxici8+XCIpLCBbJ2NvbC00J10pO1xyXG4gICAgY29uc29sZS53YXJuKFwiRm9ybSBWYWxpZGF0aW9uIGdvdCBlcnJvcihzKTpcIiwgZXJyb3JNZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRFcnJvck1lc3NhZ2VGb3JJbnZhbGlkSW5wdXQoZ3JvdXA6IFpHcm91cCwgZm9ybUdyb3VwPzogRm9ybUdyb3VwLCBjb250cm9sTmFtZT86IHN0cmluZyk6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgZm9ybUdyb3VwID0gZm9ybUdyb3VwIHx8IGdyb3VwLmZvcm07XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RFcnJvck1lc3NhZ2VGcm9tQ29udHJvbChmb3JtR3JvdXAsIGNvbnRyb2xOYW1lLCBncm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsZHNFcnJvck1zZ0FyciA9IFtdO1xyXG4gICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIGNvbnN0IGVyciA9IHRoaXMuZXh0cmFjdEVycm9yTWVzc2FnZUZyb21Db250cm9sKGZvcm1Hcm91cCwga2V5LCBncm91cCk7XHJcbiAgICAgIGlmIChlcnIgJiYgZXJyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmaWxkc0Vycm9yTXNnQXJyLnB1c2goZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZmlsZHNFcnJvck1zZ0FycjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdEVycm9yTWVzc2FnZUZyb21Db250cm9sKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBrZXk6IHN0cmluZywgZ3JvdXA6IFpHcm91cCk6IEFycmF5PGFueT4ge1xyXG4gICAgY29uc3QgZXJyb3JNc2dBcnIgPSBbXTtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGtleSk7XHJcbiAgICBjb25zdCBjb250cm9sRXJyb3JzID0gY29udHJvbD8uZXJyb3JzO1xyXG5cclxuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2xFcnJvcnMpIHtcclxuICAgICAgY29uc3QgZXJyb3JUeXBlcyA9IE9iamVjdC5rZXlzKGNvbnRyb2xFcnJvcnMpO1xyXG4gICAgICBlcnJvclR5cGVzLmZvckVhY2goZXJyb3JUeXBlID0+IHtcclxuICAgICAgICBjb25zdCBlcnIgPSB0aGlzLmdldEVycm9yTWVzc2FnZUJ5RXJyb3JUeXBlKGVycm9yVHlwZSwga2V5LCBncm91cC5maWVsZHMsIGNvbnRyb2xFcnJvcnMpO1xyXG4gICAgICAgIGlmIChlcnIgJiYgZXJyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGVycm9yTXNnQXJyLnB1c2goZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVycm9yTXNnQXJyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFcnJvck1lc3NhZ2VCeUVycm9yVHlwZShlcnJvclR5cGU6IGFueSwgY29udHJvbE5hbWU6IHN0cmluZywgZmllbGRzOiBaRmllbGRbXSwgZXJyb3JEZXRhaWw6IGFueSkge1xyXG4gICAgY29uc3QgZmllbGQgPSBaQ29tcG9uZW50SGVscGVyLmdldEZpZWxkRnJvbUZpZWxkc0J5VmFsdWUoZmllbGRzLCBjb250cm9sTmFtZSk7XHJcbiAgICBzd2l0Y2ggKGVycm9yVHlwZSkge1xyXG4gICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0RXJyb3JNc2dBY3Rpb25fUmVxdWlyZWQoZmllbGQuVHlwZSl9IHRoZSAke1pDb21wb25lbnRIZWxwZXIuZ2V0RmllbGRMYWJlbChmaWVsZHMsIGNvbnRyb2xOYW1lKX1gO1xyXG4gICAgICBjYXNlICdtaW5sZW5ndGgnOlxyXG4gICAgICAgIHJldHVybiBgJHtaQ29tcG9uZW50SGVscGVyLmdldEZpZWxkTGFiZWwoZmllbGRzLCBjb250cm9sTmFtZSl9IG11c3QgYmUgbW9yZSB0aGFuICR7ZXJyb3JEZXRhaWxbZXJyb3JUeXBlXS5yZXF1aXJlZExlbmd0aH0gY2hhcmFjdGVyc2A7XHJcbiAgICAgIGNhc2UgJ21heGxlbmd0aCc6XHJcbiAgICAgICAgcmV0dXJuIGAke1pDb21wb25lbnRIZWxwZXIuZ2V0RmllbGRMYWJlbChmaWVsZHMsIGNvbnRyb2xOYW1lKX0gbXVzdCBiZSBsZXNzIHRoYW4gJHtlcnJvckRldGFpbFtlcnJvclR5cGVdLnJlcXVpcmVkTGVuZ3RofSBjaGFyYWN0ZXJzYDtcclxuICAgICAgY2FzZSAnZW1haWwnOlxyXG4gICAgICAgIHJldHVybiBgRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIGZvciAke1pDb21wb25lbnRIZWxwZXIuZ2V0RmllbGRMYWJlbChmaWVsZHMsIGNvbnRyb2xOYW1lKX1gO1xyXG4gICAgICBjYXNlICdtaW4nOlxyXG4gICAgICAgIHJldHVybiBgJHtaQ29tcG9uZW50SGVscGVyLmdldEZpZWxkTGFiZWwoZmllbGRzLCBjb250cm9sTmFtZSl9IG11c3QgYmUgbW9yZSB0aGFuICR7ZXJyb3JEZXRhaWxbZXJyb3JUeXBlXS5taW59YDtcclxuICAgICAgY2FzZSAnbWF4JzpcclxuICAgICAgICByZXR1cm4gYCR7WkNvbXBvbmVudEhlbHBlci5nZXRGaWVsZExhYmVsKGZpZWxkcywgY29udHJvbE5hbWUpfSBtdXN0IGJlIGxlc3MgdGhhbiAke2Vycm9yRGV0YWlsW2Vycm9yVHlwZV0ubWF4fWA7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmllbGQgRXJyb3IgaXMgbm90IHByb3Blcmx5IGhhbmRsZWQgOiAke1pDb21wb25lbnRIZWxwZXIuZ2V0RmllbGRMYWJlbChmaWVsZHMsIGNvbnRyb2xOYW1lKX1gKTtcclxuICAgICAgICByZXR1cm4gYEludmFsaWQgRmllbGQ6ICR7WkNvbXBvbmVudEhlbHBlci5nZXRGaWVsZExhYmVsKGZpZWxkcywgY29udHJvbE5hbWUpfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVycm9yTXNnQWN0aW9uX1JlcXVpcmVkKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnenVpc2VsZWN0bXVsdGlwbGUnOlxyXG4gICAgICBjYXNlICd6dWlzZWxlY3RtdWx0aXBsZV9idXR0b24nOlxyXG4gICAgICBjYXNlICdzZWxlY3QnOlxyXG4gICAgICAgIHJldHVybiBcIkNob29zZVwiO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBcIkVudGVyXCI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|