bpm-core 0.0.53 → 0.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +6 -3
  2. package/esm2022/lib/components/app-component-sections/approvals/approvals.component.mjs +3 -6
  3. package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +69 -56
  4. package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +1 -1
  5. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +5 -6
  6. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +2 -2
  7. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +6 -4
  8. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +8 -7
  9. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +21 -5
  10. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +14 -18
  11. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +15 -18
  12. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +12 -13
  13. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +7 -11
  14. package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +9 -9
  15. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +19 -33
  16. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +16 -26
  17. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +16 -27
  18. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +3 -6
  19. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +16 -24
  20. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +11 -12
  21. package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +9 -11
  22. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +11 -18
  23. package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +2 -2
  24. package/esm2022/lib/components/shared-components/form-field/shared-imports.mjs +19 -1
  25. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +17 -29
  26. package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +11 -20
  27. package/esm2022/lib/i18n/ar.mjs +2 -2
  28. package/esm2022/lib/i18n/en.mjs +2 -2
  29. package/esm2022/lib/services/i18n.service.mjs +2 -2
  30. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +2 -2
  31. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +300 -33
  32. package/fesm2022/bpm-core.mjs +753 -545
  33. package/fesm2022/bpm-core.mjs.map +1 -1
  34. package/lib/components/app-component-sections/activities/activities.component.d.ts +2 -0
  35. package/lib/components/app-component-sections/approvals/approvals.component.d.ts +1 -1
  36. package/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.d.ts +19 -5
  37. package/lib/components/app-component-sections/feedback-section/feedback-section.component.d.ts +1 -1
  38. package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +1 -1
  39. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +2 -1
  40. package/lib/components/shared-components/form-field/date-picker/date-picker.component.d.ts +1 -2
  41. package/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.d.ts +1 -3
  42. package/lib/components/shared-components/form-field/form-label/form-label.component.d.ts +2 -3
  43. package/lib/components/shared-components/form-field/input/input.component.d.ts +1 -2
  44. package/lib/components/shared-components/form-field/input-currency/input-currency.component.d.ts +1 -2
  45. package/lib/components/shared-components/form-field/input-email/input-email.component.d.ts +1 -2
  46. package/lib/components/shared-components/form-field/input-mask/input-mask.component.d.ts +1 -2
  47. package/lib/components/shared-components/form-field/input-number/input-number.component.d.ts +1 -2
  48. package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +1 -3
  49. package/lib/components/shared-components/form-field/shared-imports.d.ts +11 -2
  50. package/lib/components/shared-components/form-field/textarea/textarea.component.d.ts +0 -3
  51. package/lib/components/shared-components/form-field/toggle-button/toggle-button.component.d.ts +1 -3
  52. package/lib/i18n/ar.d.ts +1 -1
  53. package/lib/i18n/en.d.ts +1 -1
  54. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +40 -0
  55. package/package.json +2 -2
  56. package/src/lib/assets/scss/_upgrade.scss +2 -0
  57. package/esm2022/lib/environments/environment.local.mjs +0 -27
  58. package/lib/environments/environment.local.d.ts +0 -26
@@ -12,6 +12,7 @@ export class ControlValueAccessorDirective {
12
12
  coreService;
13
13
  sanitizer;
14
14
  fb;
15
+ tooltip;
15
16
  isReadOnly;
16
17
  hint = '';
17
18
  loading;
@@ -79,6 +80,16 @@ export class ControlValueAccessorDirective {
79
80
  }
80
81
  setFormValidators() {
81
82
  this.required = this.control?.hasValidator(Validators.required) ?? false;
83
+ if (this.required) {
84
+ this.searchControl.setValidators(Validators.required);
85
+ this.employeeSearchControl.setValidators(Validators.required);
86
+ }
87
+ else {
88
+ this.searchControl.clearValidators();
89
+ this.employeeSearchControl.clearValidators();
90
+ this.searchControl.updateValueAndValidity();
91
+ this.employeeSearchControl.updateValueAndValidity();
92
+ }
82
93
  }
83
94
  writeValue(value) {
84
95
  this.value = value;
@@ -88,9 +99,12 @@ export class ControlValueAccessorDirective {
88
99
  this.attachments = [];
89
100
  }
90
101
  else {
91
- this.startDateControl.setValue(this.value.startDate);
92
- this.endDateControl.setValue(this.value.endDate);
102
+ this.startDateControl.setValue(this.value?.startDate);
103
+ this.endDateControl.setValue(this.value?.endDate);
93
104
  this.searchControl.setValue(value['value']);
105
+ if (this.value['value'] === '') {
106
+ this.control.setValue(null);
107
+ }
94
108
  this.employeeSearchControl.setValue(value['personName']);
95
109
  }
96
110
  }
@@ -102,14 +116,16 @@ export class ControlValueAccessorDirective {
102
116
  this.isDisabled = isDisabled;
103
117
  }
104
118
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ControlValueAccessorDirective, deps: [{ token: i0.Injector }, { token: i1.CoreI18nService }, { token: i2.ToastrService }, { token: i1.CoreService }, { token: i3.DomSanitizer }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Directive });
105
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: ControlValueAccessorDirective, selector: "[appControlValueAccessor]", inputs: { isReadOnly: "isReadOnly", hint: "hint", loading: "loading", placeholder: "placeholder", type: "type", showErrorMessage: "showErrorMessage", showHint: "showHint", showIfEmpty: "showIfEmpty", insideTable: "insideTable", mask: "mask", label: "label", matSuffix: "matSuffix", hasTooltip: "hasTooltip", name: "name", randomID: "randomID", multiple: "multiple", maxDate: "maxDate", minDate: "minDate", customMaxDate: "customMaxDate", customMinDate: "customMinDate" }, ngImport: i0 });
119
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: ControlValueAccessorDirective, selector: "[appControlValueAccessor]", inputs: { tooltip: "tooltip", isReadOnly: "isReadOnly", hint: "hint", loading: "loading", placeholder: "placeholder", type: "type", showErrorMessage: "showErrorMessage", showHint: "showHint", showIfEmpty: "showIfEmpty", insideTable: "insideTable", mask: "mask", label: "label", matSuffix: "matSuffix", hasTooltip: "hasTooltip", name: "name", randomID: "randomID", multiple: "multiple", maxDate: "maxDate", minDate: "minDate", customMaxDate: "customMaxDate", customMinDate: "customMinDate" }, ngImport: i0 });
106
120
  }
107
121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ControlValueAccessorDirective, decorators: [{
108
122
  type: Directive,
109
123
  args: [{
110
124
  selector: '[appControlValueAccessor]',
111
125
  }]
112
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CoreI18nService }, { type: i2.ToastrService }, { type: i1.CoreService }, { type: i3.DomSanitizer }, { type: i4.FormBuilder }], propDecorators: { isReadOnly: [{
126
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CoreI18nService }, { type: i2.ToastrService }, { type: i1.CoreService }, { type: i3.DomSanitizer }, { type: i4.FormBuilder }], propDecorators: { tooltip: [{
127
+ type: Input
128
+ }], isReadOnly: [{
113
129
  type: Input
114
130
  }], hint: [{
115
131
  type: Input
@@ -150,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
150
166
  }], customMinDate: [{
151
167
  type: Input
152
168
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQW9DLFdBQVcsRUFBd0IsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxVQUFVLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBU2pLLE1BQU0sT0FBTyw2QkFBNkI7SUE4Q3JCO0lBQTJCO0lBQzNCO0lBQ0E7SUFBaUM7SUFDakM7SUE5Q1YsVUFBVSxDQUFVO0lBQ3BCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDVixPQUFPLENBQVc7SUFDbEIsV0FBVyxDQUFTO0lBQ3BCLElBQUksQ0FBUztJQUNiLGdCQUFnQixDQUFTO0lBQ3pCLFFBQVEsQ0FBUztJQUNqQixXQUFXLENBQVM7SUFDcEIsV0FBVyxDQUFNO0lBQ2pCLElBQUksQ0FBTTtJQUNWLEtBQUssQ0FBVTtJQUNmLFNBQVMsQ0FBVTtJQUNuQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLElBQUksQ0FBVTtJQUNkLFFBQVEsQ0FBVTtJQUNsQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQ25DLGFBQWEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFBO0lBQ2pDLHFCQUFxQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUE7SUFDekMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUdqQixnQkFBZ0IsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLGNBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBS25DLFlB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QUE3Qiw2QkFBNkI7OzJGQUE3Qiw2QkFBNkI7a0JBSHpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7c05BSVUsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQWNHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybUNvbnRyb2xOYW1lLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyx9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQge1RvYXN0clNlcnZpY2V9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBDb250cm9sVmFsdWVBY2Nlc3Nvcl0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT5cclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXRcclxue1xyXG4gIEBJbnB1dCgpIGlzUmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGludCA9ICcnO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dFcnJvck1lc3NhZ2U6IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93SGludDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dJZkVtcHR5OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5zaWRlVGFibGU6IGFueTtcclxuICBASW5wdXQoKSBtYXNrOiBhbnk7XHJcbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF0U3VmZml4OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhhc1Rvb2x0aXAgPSBmYWxzZTtcclxuICBASW5wdXQoKSBuYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJhbmRvbUlEITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpXHJcbiAgZW1wbG95ZWVTZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKClcclxuICBhdHRhY2htZW50cyA9IFtdO1xyXG5cclxuXHJcbiAgc3RhcnREYXRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIGVuZERhdGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcblxyXG5cclxuXHJcblxyXG4gIG1pbkRhdGVWYWx1ZTogYW55XHJcbiAgbWF4RGF0ZVZhbHVlOiBhbnlcclxuICBASW5wdXQoKSBtYXhEYXRlOiBzdHJpbmc7XHJcbiAgLy8gQFZpZXdDaGlsZCgnZGVmYXVsdCcpXHJcbiAgcHVibGljIGRhdGVwaWNrZXJPYmohOiBhbnk7XHJcbiAgQElucHV0KCkgbWluRGF0ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbU1heERhdGU6IGFueVxyXG4gIEBJbnB1dCgpIGN1c3RvbU1pbkRhdGU6IGFueVxyXG5cclxuICB2YWx1ZTogYW55O1xyXG4gIGNvbnRyb2w6IEZvcm1Db250cm9sIHwgdW5kZWZpbmVkO1xyXG4gIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgbWF4TGVuZ3RoOiBhbnk7XHJcblxyXG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLCBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyB0b2FzdGVyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgY29yZVNlcnZpY2U6IENvcmVTZXJ2aWNlLCBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgICAgICAgcHVibGljIGZiOiBGb3JtQnVpbGRlclxyXG4gICkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybUNvbnRyb2woKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XHJcbiAgICAgIHN3aXRjaCAoZm9ybUNvbnRyb2wuY29uc3RydWN0b3IpIHtcclxuICAgICAgICBjYXNlIEZvcm1Db250cm9sTmFtZTpcclxuICAgICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3JcclxuICAgICAgICAgICAgLmdldChGb3JtR3JvdXBEaXJlY3RpdmUpXHJcbiAgICAgICAgICAgIC5nZXRDb250cm9sKGZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sTmFtZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5jb250cm9sID0gKGZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sRGlyZWN0aXZlKVxyXG4gICAgICAgICAgICAuZm9ybSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEZvcm1WYWxpZGF0b3JzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtVmFsaWRhdG9ycygpe1xyXG4gICAgdGhpcy5yZXF1aXJlZCA9IHRoaXMuY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IFR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmKCF0aGlzLnZhbHVlKXtcclxuICAgICAgdGhpcy5zdGFydERhdGVDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmVuZERhdGVDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmF0dGFjaG1lbnRzID0gW11cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RhcnREYXRlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlLnN0YXJ0RGF0ZSk7XHJcbiAgICAgIHRoaXMuZW5kRGF0ZUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZS5lbmREYXRlKTtcclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKHZhbHVlWyd2YWx1ZSddKVxyXG4gICAgICB0aGlzLmVtcGxveWVlU2VhcmNoQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZVsncGVyc29uTmFtZSddKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbDogVHlwZSB8IG51bGwpID0+IFR5cGUpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gVHlwZSk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbn1cclxuIl19
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQW9DLFdBQVcsRUFBd0IsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxVQUFVLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBU2pLLE1BQU0sT0FBTyw2QkFBNkI7SUErQ3JCO0lBQTJCO0lBQzNCO0lBQ0E7SUFBaUM7SUFDakM7SUEvQ1YsT0FBTyxDQUFDO0lBQ1IsVUFBVSxDQUFVO0lBQ3BCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDVixPQUFPLENBQVc7SUFDbEIsV0FBVyxDQUFTO0lBQ3BCLElBQUksQ0FBUztJQUNiLGdCQUFnQixDQUFTO0lBQ3pCLFFBQVEsQ0FBUztJQUNqQixXQUFXLENBQVM7SUFDcEIsV0FBVyxDQUFNO0lBQ2pCLElBQUksQ0FBTTtJQUNWLEtBQUssQ0FBVTtJQUNmLFNBQVMsQ0FBVTtJQUNuQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLElBQUksQ0FBVTtJQUNkLFFBQVEsQ0FBVTtJQUNsQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQ25DLGFBQWEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLHFCQUFxQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDMUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUdqQixnQkFBZ0IsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLGNBQWMsR0FBRyxJQUFJLFdBQVcsRUFB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QUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQWNHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybUNvbnRyb2xOYW1lLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyx9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQge1RvYXN0clNlcnZpY2V9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBDb250cm9sVmFsdWVBY2Nlc3Nvcl0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT5cclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXRcclxue1xyXG4gIEBJbnB1dCgpIHRvb2x0aXA7XHJcbiAgQElucHV0KCkgaXNSZWFkT25seTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBoaW50ID0gJyc7XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0Vycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dIaW50OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0lmRW1wdHk6IHN0cmluZztcclxuICBASW5wdXQoKSBpbnNpZGVUYWJsZTogYW55O1xyXG4gIEBJbnB1dCgpIG1hc2s6IGFueTtcclxuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcclxuICBASW5wdXQoKSBtYXRTdWZmaXg6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGFzVG9vbHRpcCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmFuZG9tSUQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZW1wbG95ZWVTZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgYXR0YWNobWVudHMgPSBbXTtcclxuXHJcblxyXG4gIHN0YXJ0RGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBlbmREYXRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG5cclxuXHJcblxyXG5cclxuICBtaW5EYXRlVmFsdWU6IGFueVxyXG4gIG1heERhdGVWYWx1ZTogYW55XHJcbiAgQElucHV0KCkgbWF4RGF0ZTogc3RyaW5nO1xyXG4gIC8vIEBWaWV3Q2hpbGQoJ2RlZmF1bHQnKVxyXG4gIHB1YmxpYyBkYXRlcGlja2VyT2JqITogYW55O1xyXG4gIEBJbnB1dCgpIG1pbkRhdGU6IHN0cmluZztcclxuICBASW5wdXQoKSBjdXN0b21NYXhEYXRlOiBhbnlcclxuICBASW5wdXQoKSBjdXN0b21NaW5EYXRlOiBhbnlcclxuXHJcbiAgdmFsdWU6IGFueTtcclxuICBjb250cm9sOiBGb3JtQ29udHJvbCB8IHVuZGVmaW5lZDtcclxuICByZXF1aXJlZCA9IGZhbHNlO1xyXG4gIG1heExlbmd0aDogYW55O1xyXG5cclxuICBpc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvciwgcHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgdG9hc3RlclNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIGNvcmVTZXJ2aWNlOiBDb3JlU2VydmljZSwgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBmYjogRm9ybUJ1aWxkZXJcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2woKTtcclxuICB9XHJcblxyXG4gIHNldEZvcm1Db250cm9sKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpO1xyXG4gICAgICBzd2l0Y2ggKGZvcm1Db250cm9sLmNvbnN0cnVjdG9yKSB7XHJcbiAgICAgICAgY2FzZSBGb3JtQ29udHJvbE5hbWU6XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yXHJcbiAgICAgICAgICAgIC5nZXQoRm9ybUdyb3VwRGlyZWN0aXZlKVxyXG4gICAgICAgICAgICAuZ2V0Q29udHJvbChmb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbE5hbWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuY29udHJvbCA9IChmb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbERpcmVjdGl2ZSlcclxuICAgICAgICAgICAgLmZvcm0gYXMgRm9ybUNvbnRyb2w7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRGb3JtVmFsaWRhdG9ycygpO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybVZhbGlkYXRvcnMoKXtcclxuICAgIHRoaXMucmVxdWlyZWQgPSB0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKXtcclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmVtcGxveWVlU2VhcmNoQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYoIXRoaXMudmFsdWUpe1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMuZW5kRGF0ZUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMuYXR0YWNobWVudHMgPSBbXVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGFydERhdGVDb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWU/LnN0YXJ0RGF0ZSk7XHJcbiAgICAgIHRoaXMuZW5kRGF0ZUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZT8uZW5kRGF0ZSk7XHJcbiAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZVsndmFsdWUnXSlcclxuICAgICAgaWYodGhpcy52YWx1ZVsndmFsdWUnXSA9PT0gJycpe1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLnNldFZhbHVlKHZhbHVlWydwZXJzb25OYW1lJ10pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsOiBUeXBlIHwgbnVsbCkgPT4gVHlwZSk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBUeXBlKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,26 +1,23 @@
1
- /* eslint-disable @typescript-eslint/no-this-alias */
2
- /* eslint-disable no-var */
3
- import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
4
- /* eslint-disable @typescript-eslint/no-explicit-any */
5
- /* eslint-disable @angular-eslint/use-lifecycle-interface */
6
- /* eslint-disable @angular-eslint/component-selector */
1
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
7
2
  import { Component, Input, Output, EventEmitter, CUSTOM_ELEMENTS_SCHEMA, forwardRef } from '@angular/core';
8
- import { InfoItemComponent } from "../info-item/info-item.component";
9
3
  import { NgClass } from "@angular/common";
10
4
  import { MatAutocomplete, MatAutocompleteTrigger, MatOption } from "@angular/material/autocomplete";
11
5
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
12
6
  import { MatInputModule } from '@angular/material/input';
13
- import { ValidationErrorsComponent } from "../validation-errors/validation-errors.component";
7
+ import { Shareds } from '../shared-imports';
14
8
  import * as i0 from "@angular/core";
15
- import * as i1 from "@angular/forms";
16
- import * as i2 from "@angular/material/input";
17
- import * as i3 from "@angular/material/form-field";
9
+ import * as i1 from "@angular/material/input";
10
+ import * as i2 from "@angular/material/form-field";
11
+ import * as i3 from "../form-label/form-label.component";
12
+ import * as i4 from "../validation-errors/validation-errors.component";
13
+ import * as i5 from "../info-item/info-item.component";
14
+ import * as i6 from "@angular/forms";
18
15
  export class CustomSearchableComponent extends ControlValueAccessorDirective {
19
16
  options;
20
17
  selectedValue = new EventEmitter();
21
18
  isLengthGreaterThan4 = new EventEmitter();
22
19
  disabled = false;
23
- displayedLabel;
20
+ displayedLabel = 'description';
24
21
  key = 'description';
25
22
  floatLabel = 'auto';
26
23
  className = 'bordered-input';
@@ -75,6 +72,7 @@ export class CustomSearchableComponent extends ControlValueAccessorDirective {
75
72
  getAutoComplete(value) {
76
73
  this.control.setValue({ key: value[this.key], value: value[this.displayedLabel] });
77
74
  this.searchControl.setValue(value[this.displayedLabel]);
75
+ this.selectedValue.emit(value);
78
76
  }
79
77
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CustomSearchableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
80
78
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: CustomSearchableComponent, isStandalone: true, selector: "app-custom-searchable", inputs: { options: "options", disabled: "disabled", displayedLabel: "displayedLabel", key: "key", floatLabel: "floatLabel", className: "className" }, outputs: { selectedValue: "selectedValue", isLengthGreaterThan4: "isLengthGreaterThan4" }, providers: [
@@ -83,26 +81,24 @@ export class CustomSearchableComponent extends ControlValueAccessorDirective {
83
81
  useExisting: forwardRef(() => CustomSearchableComponent),
84
82
  multi: true,
85
83
  },
86
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(isReadOnly && control?.value){\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value.key\"\r\n ></app-info-item>\r\n</ng-container>\r\n} @if(!isReadOnly){\r\n<ng-container>\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{ label }}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">\r\n {{ i18n.translate(\"Optional\") }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': disabled || loading }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <!-- (click)=\"clearInput()\" -->\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <!-- <bdi> -->\r\n <input\r\n #autocompleteInput\r\n type=\"text\"\r\n (keydown)=\"onKeyDown($event, autocompleteInput)\"\r\n [attr.disabled]=\"disabled\"\r\n [placeholder]=\"label\"\r\n aria-label=\"Number\"\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [formControl]=\"searchControl\"\r\n [name]=\"name\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value?.key\"\r\n (focusout)=\"onFocusOut()\"\r\n />\r\n <!-- </bdi> -->\r\n </label>\r\n @if(loading){\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n } @if(!loading && control?.value){\r\n <span\r\n class=\"sfi sfi-close d-inline-block fc-black cursor-pointer\"\r\n (click)=\"clearInput()\"\r\n matSuffix\r\n ></span>\r\n }\r\n\r\n <mat-autocomplete\r\n autoActiveFirstOption\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n (optionSelected)=\"getAutoComplete($event.option.value)\"\r\n >\r\n @if(!noData){\r\n <ng-container>\r\n @for(option of filteredOptions; track option){\r\n <mat-option [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n @if(option['avatar_url']){\r\n <figure class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\" />\r\n </figure>\r\n } @if(option['avatar_url']){\r\n <span class=\"mx-2\"></span>\r\n }\r\n\r\n <!-- <bdi> -->\r\n {{ option[displayedLabel] }}\r\n <!-- </bdi> -->\r\n </div>\r\n </mat-option>\r\n }\r\n </ng-container>\r\n } @if(noData){\r\n <ng-container>\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n }\r\n </mat-autocomplete>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n</ng-container>\r\n}\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"], dependencies: [{ kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }] });
84
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(isReadOnly && control?.value){\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value.value\"\r\n ></app-info-item>\r\n</ng-container>\r\n} @if(!isReadOnly){\r\n<ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"!required\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': disabled || loading }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <!-- (click)=\"clearInput()\" -->\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <!-- <bdi> -->\r\n <input\r\n #autocompleteInput\r\n type=\"text\"\r\n (keydown)=\"onKeyDown($event, autocompleteInput)\"\r\n [attr.disabled]=\"disabled\"\r\n [placeholder]=\"label\"\r\n aria-label=\"Number\"\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [formControl]=\"searchControl\"\r\n [name]=\"name\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value?.key\"\r\n (focusout)=\"onFocusOut()\"\r\n />\r\n <!-- </bdi> -->\r\n </label>\r\n @if(loading){\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n } @if(!loading && searchControl?.value){\r\n <span\r\n class=\"sfi sfi-close d-inline-block fc-black cursor-pointer fs-10\"\r\n (click)=\"clearInput()\"\r\n matSuffix\r\n ></span>\r\n }\r\n\r\n <mat-autocomplete\r\n autoActiveFirstOption\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n (optionSelected)=\"getAutoComplete($event.option.value)\"\r\n >\r\n @if(!noData){\r\n <ng-container>\r\n @for(option of filteredOptions; track option){\r\n <mat-option [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n @if(option['avatar_url']){\r\n <figure class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\" />\r\n </figure>\r\n } @if(option['avatar_url']){\r\n <span class=\"mx-2\"></span>\r\n }\r\n\r\n <!-- <bdi> -->\r\n {{ option[displayedLabel] }}\r\n <!-- </bdi> -->\r\n </div>\r\n </mat-option>\r\n }\r\n </ng-container>\r\n } @if(noData){\r\n <ng-container>\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n }\r\n </mat-autocomplete>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n</ng-container>\r\n}\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3.FormLabelComponent, selector: "app-form-label", inputs: ["tooltip", "label", "optional"] }, { kind: "component", type: i4.ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }, { kind: "component", type: i5.InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: i6.ReactiveFormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
87
85
  }
88
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CustomSearchableComponent, decorators: [{
89
87
  type: Component,
90
88
  args: [{ selector: 'app-custom-searchable', schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [
91
- InfoItemComponent,
92
89
  NgClass,
93
- ReactiveFormsModule,
94
90
  MatAutocomplete,
95
91
  MatOption,
96
92
  MatAutocompleteTrigger,
97
93
  MatInputModule,
98
- ValidationErrorsComponent
94
+ ...Shareds
99
95
  ], standalone: true, providers: [
100
96
  {
101
97
  provide: NG_VALUE_ACCESSOR,
102
98
  useExisting: forwardRef(() => CustomSearchableComponent),
103
99
  multi: true,
104
100
  },
105
- ], template: "@if(isReadOnly && control?.value){\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value.key\"\r\n ></app-info-item>\r\n</ng-container>\r\n} @if(!isReadOnly){\r\n<ng-container>\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{ label }}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">\r\n {{ i18n.translate(\"Optional\") }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': disabled || loading }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <!-- (click)=\"clearInput()\" -->\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <!-- <bdi> -->\r\n <input\r\n #autocompleteInput\r\n type=\"text\"\r\n (keydown)=\"onKeyDown($event, autocompleteInput)\"\r\n [attr.disabled]=\"disabled\"\r\n [placeholder]=\"label\"\r\n aria-label=\"Number\"\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [formControl]=\"searchControl\"\r\n [name]=\"name\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value?.key\"\r\n (focusout)=\"onFocusOut()\"\r\n />\r\n <!-- </bdi> -->\r\n </label>\r\n @if(loading){\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n } @if(!loading && control?.value){\r\n <span\r\n class=\"sfi sfi-close d-inline-block fc-black cursor-pointer\"\r\n (click)=\"clearInput()\"\r\n matSuffix\r\n ></span>\r\n }\r\n\r\n <mat-autocomplete\r\n autoActiveFirstOption\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n (optionSelected)=\"getAutoComplete($event.option.value)\"\r\n >\r\n @if(!noData){\r\n <ng-container>\r\n @for(option of filteredOptions; track option){\r\n <mat-option [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n @if(option['avatar_url']){\r\n <figure class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\" />\r\n </figure>\r\n } @if(option['avatar_url']){\r\n <span class=\"mx-2\"></span>\r\n }\r\n\r\n <!-- <bdi> -->\r\n {{ option[displayedLabel] }}\r\n <!-- </bdi> -->\r\n </div>\r\n </mat-option>\r\n }\r\n </ng-container>\r\n } @if(noData){\r\n <ng-container>\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n }\r\n </mat-autocomplete>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n</ng-container>\r\n}\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"] }]
101
+ ], template: "@if(isReadOnly && control?.value){\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value.value\"\r\n ></app-info-item>\r\n</ng-container>\r\n} @if(!isReadOnly){\r\n<ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"!required\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': disabled || loading }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <!-- (click)=\"clearInput()\" -->\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <!-- <bdi> -->\r\n <input\r\n #autocompleteInput\r\n type=\"text\"\r\n (keydown)=\"onKeyDown($event, autocompleteInput)\"\r\n [attr.disabled]=\"disabled\"\r\n [placeholder]=\"label\"\r\n aria-label=\"Number\"\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [formControl]=\"searchControl\"\r\n [name]=\"name\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value?.key\"\r\n (focusout)=\"onFocusOut()\"\r\n />\r\n <!-- </bdi> -->\r\n </label>\r\n @if(loading){\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n } @if(!loading && searchControl?.value){\r\n <span\r\n class=\"sfi sfi-close d-inline-block fc-black cursor-pointer fs-10\"\r\n (click)=\"clearInput()\"\r\n matSuffix\r\n ></span>\r\n }\r\n\r\n <mat-autocomplete\r\n autoActiveFirstOption\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n (optionSelected)=\"getAutoComplete($event.option.value)\"\r\n >\r\n @if(!noData){\r\n <ng-container>\r\n @for(option of filteredOptions; track option){\r\n <mat-option [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n @if(option['avatar_url']){\r\n <figure class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\" />\r\n </figure>\r\n } @if(option['avatar_url']){\r\n <span class=\"mx-2\"></span>\r\n }\r\n\r\n <!-- <bdi> -->\r\n {{ option[displayedLabel] }}\r\n <!-- </bdi> -->\r\n </div>\r\n </mat-option>\r\n }\r\n </ng-container>\r\n } @if(noData){\r\n <ng-container>\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n }\r\n </mat-autocomplete>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n</ng-container>\r\n}\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"] }]
106
102
  }], propDecorators: { options: [{
107
103
  type: Input
108
104
  }], selectedValue: [{
@@ -120,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
120
116
  }], className: [{
121
117
  type: Input
122
118
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlYXJjaGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvY3VzdG9tLXNlYXJjaGFibGUtYXV0b2NvbXBsZXRlL2N1c3RvbS1zZWFyY2hhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL2N1c3RvbS1zZWFyY2hhYmxlLWF1dG9jb21wbGV0ZS9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsMkJBQTJCO0FBQzNCLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLHVEQUF1RDtBQUN2RCw0REFBNEQ7QUFDNUQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWlCLHNCQUFzQixFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUlsSSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsT0FBTyxFQUFnQixNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxN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NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFNUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0UsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhcyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12YXIgKi9cclxuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC91c2UtbGlmZWN5Y2xlLWludGVyZmFjZSAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBmb3J3YXJkUmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEVycm9yLCBNYXRIaW50fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuXHJcbmltcG9ydCB7SW5mb0l0ZW1Db21wb25lbnR9IGZyb20gXCIuLi9pbmZvLWl0ZW0vaW5mby1pdGVtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nRm9yT2YsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJy4uL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQgfSBmcm9tIFwiLi4vdmFsaWRhdGlvbi1lcnJvcnMvdmFsaWRhdGlvbi1lcnJvcnMuY29tcG9uZW50XCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLXNlYXJjaGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXNlYXJjaGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgSW5mb0l0ZW1Db21wb25lbnQsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZSxcclxuICAgIE1hdE9wdGlvbixcclxuICAgIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnRcclxuXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VzdG9tU2VhcmNoYWJsZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21TZWFyY2hhYmxlQ29tcG9uZW50IDxUeXBlPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFR5cGU+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBvcHRpb25zITogYW55O1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBpc0xlbmd0aEdyZWF0ZXJUaGFuNCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpc3BsYXllZExhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkga2V5OiBzdHJpbmcgPSAnZGVzY3JpcHRpb24nO1xyXG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IGFueSA9ICdhdXRvJztcclxuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnYm9yZGVyZWQtaW5wdXQnO1xyXG5cclxuICBub0RhdGEgPSBmYWxzZTtcclxuICBmaWx0ZXJlZE9wdGlvbnMhOiBhbnk7XHJcblxyXG4gIGNsZWFySW5wdXQoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobnVsbClcclxuICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZShudWxsKVxyXG4gICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5zZXRGaWx0ZXJlZE9wdGlvbnMoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Gb2N1c091dCgpe1xyXG4gICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKVxyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQsIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KXtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvL3Jlc2V0IGluIGNhc2Ugbm8gdmFsdWUgYW5kIGRlbGV0ZSBvciBiYWNrc3BhY2UgcHJlc3NlZFxyXG4gICAgICBpZiggKGUua2V5Q29kZSA9PSA4IHx8IGUua2V5Q29kZSA9PSA0NikgJiYgIXRoaXMuY29udHJvbC52YWx1ZSl7XHJcbiAgICAgICAgaWYodGhpcy5jb250cm9sKXtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKVxyXG4gICAgICAgICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnB1dC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJlZE9wdGlvbnMoKVxyXG4gIH1cclxuICBvblZhbHVlQ2hhbmdlKGRhdGEpIHtcclxuICAgIHRoaXMuc2V0RmlsdGVyZWRPcHRpb25zKGRhdGEpXHJcbiAgfVxyXG5cclxuICBzZXRGaWx0ZXJlZE9wdGlvbnMoZGF0YT8pIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZVxyXG4gICAgICAvLyB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IGRhdGE/LnRhcmdldD8udmFsdWUgPyB0aGlzLl9maWx0ZXIoZGF0YS50YXJnZXQudmFsdWUpIDogdGhpcy5vcHRpb25zLnNsaWNlKDAsIDMwKVxyXG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXIodmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZT8udG9Mb3dlckNhc2UoKSA6IHZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKChvcHRpb246IGFueSkgPT4gT2JqZWN0LnZhbHVlcyhvcHRpb24pLmpvaW4oJycpPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkuc2xpY2UoMCwgMzApO1xyXG4gIH1cclxuXHJcbiAgZGlzcGxheUZuKG9wdGlvbjogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24gOiAnJztcclxuICB9XHJcblxyXG4gIGdldEF1dG9Db21wbGV0ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoe2tleTp2YWx1ZVt0aGlzLmtleV0sdmFsdWU6dmFsdWVbdGhpcy5kaXNwbGF5ZWRMYWJlbF19KTtcclxuICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZVt0aGlzLmRpc3BsYXllZExhYmVsXSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCJAaWYoaXNSZWFkT25seSAmJiBjb250cm9sPy52YWx1ZSl7XHJcbjxuZy1jb250YWluZXI+XHJcbiAgPGFwcC1pbmZvLWl0ZW1cclxuICAgIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCJcclxuICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICBbaW5zaWRlVGFibGVdPVwiaW5zaWRlVGFibGVcIlxyXG4gICAgW2hhc0xhYmVsXT1cIiEhbGFiZWxcIlxyXG4gICAgW3ZhbHVlXT1cImNvbnRyb2w/LnZhbHVlLmtleVwiXHJcbiAgPjwvYXBwLWluZm8taXRlbT5cclxuPC9uZy1jb250YWluZXI+XHJcbn0gQGlmKCFpc1JlYWRPbmx5KXtcclxuPG5nLWNvbnRhaW5lcj5cclxuICBAaWYobGFiZWwpe1xyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgIEBpZighcmVxdWlyZWQpe1xyXG4gICAgPHNwYW4gY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXlcIj5cclxuICAgICAge3sgaTE4bi50cmFuc2xhdGUoXCJPcHRpb25hbFwiKSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIH1cclxuICA8bWF0LWZvcm0tZmllbGRcclxuICAgIGNsYXNzPVwicHJpbWFyeS1mb3JtIHt7IGNsYXNzTmFtZSB9fVwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICdpbnB1dC1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IGxvYWRpbmcgfVwiXHJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcclxuICA+XHJcbiAgICA8IS0tIChjbGljayk9XCJjbGVhcklucHV0KClcIiAtLT5cclxuICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1zZWFyY2ggZmMtY29yYWwgZnMtMThcIiBtYXRQcmVmaXg+PC9zcGFuPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICA8IS0tIDxiZGk+IC0tPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICAjYXV0b2NvbXBsZXRlSW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgYXV0b2NvbXBsZXRlSW5wdXQpXCJcclxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsXCJcclxuICAgICAgICBhcmlhLWxhYmVsPVwiTnVtYmVyXCJcclxuICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcclxuICAgICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZT8ua2V5XCJcclxuICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcclxuICAgICAgLz5cclxuICAgICAgPCEtLSA8L2JkaT4gLS0+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgQGlmKGxvYWRpbmcpe1xyXG4gICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLXNwaW5uZXIgZC1pbmxpbmUtYmxvY2sgc3BpbiBmYy1jb3JhbFwiIG1hdFN1ZmZpeD48L3NwYW4+XHJcbiAgICB9IEBpZighbG9hZGluZyAmJiBjb250cm9sPy52YWx1ZSl7XHJcbiAgICA8c3BhblxyXG4gICAgICBjbGFzcz1cInNmaSBzZmktY2xvc2UgZC1pbmxpbmUtYmxvY2sgZmMtYmxhY2sgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dCgpXCJcclxuICAgICAgbWF0U3VmZml4XHJcbiAgICA+PC9zcGFuPlxyXG4gICAgfVxyXG5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlXHJcbiAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxyXG4gICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIlxyXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiZ2V0QXV0b0NvbXBsZXRlKCRldmVudC5vcHRpb24udmFsdWUpXCJcclxuICAgID5cclxuICAgICAgQGlmKCFub0RhdGEpe1xyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgIEBmb3Iob3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uczsgdHJhY2sgb3B0aW9uKXtcclxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYob3B0aW9uWydhdmF0YXJfdXJsJ10pe1xyXG4gICAgICAgICAgICA8ZmlndXJlIGNsYXNzPVwiaW1nLWNhcmQgc21hbGwgY2lyY2xlZC1pbWcgcC0wIG0tMFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJvcHRpb25bJ2F2YXRhcl91cmwnXVwiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDwvZmlndXJlPlxyXG4gICAgICAgICAgICB9IEBpZihvcHRpb25bJ2F2YXRhcl91cmwnXSl7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPCEtLSA8YmRpPiAtLT5cclxuICAgICAgICAgICAge3sgb3B0aW9uW2Rpc3BsYXllZExhYmVsXSB9fVxyXG4gICAgICAgICAgICA8IS0tIDwvYmRpPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICB9IEBpZihub0RhdGEpe1xyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPk5vIERhdGE8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICA8IS0tIDxtYXQtZXJyb3IgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCIoIWNvbnRyb2w/LnZhbGlkKVwiPnt7aTE4bi50cmFuc2xhdGUoJ3ZhbGlkU2VsZWN0RXJyb3InKX19e3tsYWJlbH19XHJcbiAgICA8L21hdC1lcnJvcj4gLS0+XHJcbiAgICBAaWYoc2hvd0hpbnQpe1xyXG4gICAgPG1hdC1oaW50PlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwic2ZpIHNmaS1jaGVjay1jaXJjbGUgZm9udC0xMCBmYy1kYXJrLWdyYXlcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZjLW9hc2lzLWxpZ2h0LWltcCc6IHZhbHVlIH1cIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm14LTFcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZmMtb255eFwiPnt7IGhpbnQgfX08L3NwYW4+XHJcbiAgICA8L21hdC1oaW50PlxyXG4gICAgfVxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPGFwcC12YWxpZGF0aW9uLWVycm9ycyBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCI+PC9hcHAtdmFsaWRhdGlvbi1lcnJvcnM+XHJcbjwvbmctY29udGFpbmVyPlxyXG59XHJcbiJdfQ==
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlYXJjaGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvY3VzdG9tLXNlYXJjaGFibGUtYXV0b2NvbXBsZXRlL2N1c3RvbS1zZWFyY2hhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL2N1c3RvbS1zZWFyY2hhYmxlLWF1dG9jb21wbGV0ZS9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFpQixzQkFBc0IsRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7QUE0QjVDLE1BQU0sT0FBTyx5QkFBaUMsU0FBUSw2QkFBbUM7SUFDOUUsT0FBTyxDQUFPO0lBQ2IsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDbkMsb0JBQW9CLEdB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Q0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZm9yd2FyZFJlZiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TmdDbGFzc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgTWF0T3B0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnLi4vY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgU2hhcmVkcyB9IGZyb20gJy4uL3NoYXJlZC1pbXBvcnRzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tc2VhcmNoYWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1zZWFyY2hhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlLFxyXG4gICAgTWF0T3B0aW9uLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgLi4uU2hhcmVkc1xyXG5dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDdXN0b21TZWFyY2hhYmxlQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF1cclxufSlcclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEN1c3RvbVNlYXJjaGFibGVDb21wb25lbnQgPFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG9wdGlvbnMhOiBhbnk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlzTGVuZ3RoR3JlYXRlclRoYW40ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlzcGxheWVkTGFiZWw6IHN0cmluZz0gJ2Rlc2NyaXB0aW9uJztcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICdkZXNjcmlwdGlvbic7XHJcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogYW55ID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICdib3JkZXJlZC1pbnB1dCc7XHJcblxyXG4gIG5vRGF0YSA9IGZhbHNlO1xyXG4gIGZpbHRlcmVkT3B0aW9ucyE6IGFueTtcclxuXHJcbiAgY2xlYXJJbnB1dCgpIHtcclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKVxyXG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKG51bGwpXHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSkge1xyXG4gICAgICB0aGlzLnNldEZpbHRlcmVkT3B0aW9ucygpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzT3V0KCl7XHJcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpXHJcbiAgfVxyXG5cclxuICBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCwgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vcmVzZXQgaW4gY2FzZSBubyB2YWx1ZSBhbmQgZGVsZXRlIG9yIGJhY2tzcGFjZSBwcmVzc2VkXHJcbiAgICAgIGlmKCAoZS5rZXlDb2RlID09IDggfHwgZS5rZXlDb2RlID09IDQ2KSAmJiAhdGhpcy5jb250cm9sLnZhbHVlKXtcclxuICAgICAgICBpZih0aGlzLmNvbnRyb2wpe1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG51bGwpXHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlucHV0LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB0aGlzLnNldEZpbHRlcmVkT3B0aW9ucygpXHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2UoZGF0YSkge1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJlZE9wdGlvbnMoZGF0YSlcclxuICB9XHJcblxyXG4gIHNldEZpbHRlcmVkT3B0aW9ucyhkYXRhPykge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlXHJcbiAgICAgIC8vIHRoaXMubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gZGF0YT8udGFyZ2V0Py52YWx1ZSA/IHRoaXMuX2ZpbHRlcihkYXRhLnRhcmdldC52YWx1ZSkgOiB0aGlzLm9wdGlvbnMuc2xpY2UoMCwgMzApXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5vRGF0YSA9IHRydWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbHRlcih2YWx1ZTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlPy50b0xvd2VyQ2FzZSgpIDogdmFsdWU7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiBPYmplY3QudmFsdWVzKG9wdGlvbikuam9pbignJyk/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKS5zbGljZSgwLCAzMCk7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5Rm4ob3B0aW9uOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbiA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXV0b0NvbXBsZXRlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh7a2V5OnZhbHVlW3RoaXMua2V5XSx2YWx1ZTp2YWx1ZVt0aGlzLmRpc3BsYXllZExhYmVsXX0pO1xyXG4gICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKHZhbHVlW3RoaXMuZGlzcGxheWVkTGFiZWxdKTtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KHZhbHVlKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiQGlmKGlzUmVhZE9ubHkgJiYgY29udHJvbD8udmFsdWUpe1xyXG48bmctY29udGFpbmVyPlxyXG4gIDxhcHAtaW5mby1pdGVtXHJcbiAgICBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiXHJcbiAgICBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgW2luc2lkZVRhYmxlXT1cImluc2lkZVRhYmxlXCJcclxuICAgIFtoYXNMYWJlbF09XCIhIWxhYmVsXCJcclxuICAgIFt2YWx1ZV09XCJjb250cm9sPy52YWx1ZS52YWx1ZVwiXHJcbiAgPjwvYXBwLWluZm8taXRlbT5cclxuPC9uZy1jb250YWluZXI+XHJcbn0gQGlmKCFpc1JlYWRPbmx5KXtcclxuPG5nLWNvbnRhaW5lcj5cclxuICBAaWYobGFiZWwpe1xyXG4gICAgPGFwcC1mb3JtLWxhYmVsIFtsYWJlbF09XCJsYWJlbFwiIFtvcHRpb25hbF09XCIhcmVxdWlyZWRcIiBbdG9vbHRpcF09XCJ0b29sdGlwXCI+PC9hcHAtZm9ybS1sYWJlbD5cclxuICAgIH1cclxuICA8bWF0LWZvcm0tZmllbGRcclxuICAgIGNsYXNzPVwicHJpbWFyeS1mb3JtIHt7IGNsYXNzTmFtZSB9fVwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICdpbnB1dC1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IGxvYWRpbmcgfVwiXHJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcclxuICA+XHJcbiAgICA8IS0tIChjbGljayk9XCJjbGVhcklucHV0KClcIiAtLT5cclxuICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1zZWFyY2ggZmMtY29yYWwgZnMtMThcIiBtYXRQcmVmaXg+PC9zcGFuPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICA8IS0tIDxiZGk+IC0tPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICAjYXV0b2NvbXBsZXRlSW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgYXV0b2NvbXBsZXRlSW5wdXQpXCJcclxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsXCJcclxuICAgICAgICBhcmlhLWxhYmVsPVwiTnVtYmVyXCJcclxuICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcclxuICAgICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZT8ua2V5XCJcclxuICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcclxuICAgICAgLz5cclxuICAgICAgPCEtLSA8L2JkaT4gLS0+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgQGlmKGxvYWRpbmcpe1xyXG4gICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLXNwaW5uZXIgZC1pbmxpbmUtYmxvY2sgc3BpbiBmYy1jb3JhbFwiIG1hdFN1ZmZpeD48L3NwYW4+XHJcbiAgICB9IEBpZighbG9hZGluZyAmJiBzZWFyY2hDb250cm9sPy52YWx1ZSl7XHJcbiAgICA8c3BhblxyXG4gICAgICBjbGFzcz1cInNmaSBzZmktY2xvc2UgZC1pbmxpbmUtYmxvY2sgZmMtYmxhY2sgY3Vyc29yLXBvaW50ZXIgZnMtMTBcIlxyXG4gICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dCgpXCJcclxuICAgICAgbWF0U3VmZml4XHJcbiAgICA+PC9zcGFuPlxyXG4gICAgfVxyXG5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlXHJcbiAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxyXG4gICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIlxyXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiZ2V0QXV0b0NvbXBsZXRlKCRldmVudC5vcHRpb24udmFsdWUpXCJcclxuICAgID5cclxuICAgICAgQGlmKCFub0RhdGEpe1xyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgIEBmb3Iob3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uczsgdHJhY2sgb3B0aW9uKXtcclxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYob3B0aW9uWydhdmF0YXJfdXJsJ10pe1xyXG4gICAgICAgICAgICA8ZmlndXJlIGNsYXNzPVwiaW1nLWNhcmQgc21hbGwgY2lyY2xlZC1pbWcgcC0wIG0tMFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJvcHRpb25bJ2F2YXRhcl91cmwnXVwiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDwvZmlndXJlPlxyXG4gICAgICAgICAgICB9IEBpZihvcHRpb25bJ2F2YXRhcl91cmwnXSl7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPCEtLSA8YmRpPiAtLT5cclxuICAgICAgICAgICAge3sgb3B0aW9uW2Rpc3BsYXllZExhYmVsXSB9fVxyXG4gICAgICAgICAgICA8IS0tIDwvYmRpPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICB9IEBpZihub0RhdGEpe1xyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPk5vIERhdGE8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICA8IS0tIDxtYXQtZXJyb3IgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCIoIWNvbnRyb2w/LnZhbGlkKVwiPnt7aTE4bi50cmFuc2xhdGUoJ3ZhbGlkU2VsZWN0RXJyb3InKX19e3tsYWJlbH19XHJcbiAgICA8L21hdC1lcnJvcj4gLS0+XHJcbiAgICBAaWYoc2hvd0hpbnQpe1xyXG4gICAgPG1hdC1oaW50PlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwic2ZpIHNmaS1jaGVjay1jaXJjbGUgZm9udC0xMCBmYy1kYXJrLWdyYXlcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZjLW9hc2lzLWxpZ2h0LWltcCc6IHZhbHVlIH1cIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm14LTFcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZmMtb255eFwiPnt7IGhpbnQgfX08L3NwYW4+XHJcbiAgICA8L21hdC1oaW50PlxyXG4gICAgfVxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPGFwcC12YWxpZGF0aW9uLWVycm9ycyBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCI+PC9hcHAtdmFsaWRhdGlvbi1lcnJvcnM+XHJcbjwvbmctY29udGFpbmVyPlxyXG59XHJcbiJdfQ==
@@ -1,19 +1,21 @@
1
- import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators, } from '@angular/forms';
1
+ import { FormControl, NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
2
2
  import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, forwardRef, Inject, Input, Output, ViewChild, } from '@angular/core';
3
3
  import { MatNativeDateModule } from '@angular/material/core';
4
4
  import { CustomDateFormat } from './date-format';
5
5
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
6
- import { ValidationErrorsComponent } from '../validation-errors/validation-errors.component';
7
6
  import { format } from 'date-fns';
8
- import { MatDatePickerImports, MatFormImports } from '../shared-imports';
7
+ import { MatDatePickerImports, MatFormImports, Shareds } from '../shared-imports';
9
8
  import { MAT_DATE_FORMATS } from '@angular/material/core';
10
9
  import { MatDatepicker } from '@angular/material/datepicker';
11
- import { InfoItemComponent } from '../info-item/info-item.component';
12
10
  import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/forms";
14
- import * as i2 from "@angular/material/datepicker";
15
- import * as i3 from "@angular/material/form-field";
16
- import * as i4 from "@angular/material/input";
11
+ import * as i1 from "@angular/material/datepicker";
12
+ import * as i2 from "@angular/material/form-field";
13
+ import * as i3 from "@angular/material/input";
14
+ import * as i4 from "../form-label/form-label.component";
15
+ import * as i5 from "../validation-errors/validation-errors.component";
16
+ import * as i6 from "../info-item/info-item.component";
17
+ import * as i7 from "@angular/forms";
18
+ import * as i8 from "@angular/common";
17
19
  const YEAR_ONLY_FORMAT = {
18
20
  parse: {
19
21
  dateInput: 'YYYY',
@@ -29,7 +31,6 @@ export class DatePickerComponent extends ControlValueAccessorDirective {
29
31
  date = new FormControl();
30
32
  className;
31
33
  calendarType;
32
- showLabel = true;
33
34
  yearOnly;
34
35
  dateValue = new EventEmitter();
35
36
  showIslamic = false;
@@ -109,7 +110,7 @@ export class DatePickerComponent extends ControlValueAccessorDirective {
109
110
  });
110
111
  }
111
112
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DatePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
112
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: DatePickerComponent, isStandalone: true, selector: "app-datepicker", inputs: { className: "className", calendarType: "calendarType", showLabel: "showLabel", yearOnly: "yearOnly", error: "error", format: "format" }, outputs: { dateValue: "dateValue" }, providers: [
113
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: DatePickerComponent, isStandalone: true, selector: "app-datepicker", inputs: { className: "className", calendarType: "calendarType", yearOnly: "yearOnly", error: "error", format: "format" }, outputs: { dateValue: "dateValue" }, providers: [
113
114
  {
114
115
  provide: NG_VALUE_ACCESSOR,
115
116
  useExisting: forwardRef(() => DatePickerComponent),
@@ -119,7 +120,7 @@ export class DatePickerComponent extends ControlValueAccessorDirective {
119
120
  provide: MAT_DATE_FORMATS,
120
121
  useClass: CustomDateFormat,
121
122
  },
122
- ], viewQueries: [{ propertyName: "datepicker", first: true, predicate: MatDatepicker, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isReadOnly){\r\n<ng-container>\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{ label }}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\"> {{ i18n.translate(\"optional\") }} </span>\r\n }\r\n </div>\r\n }\r\n <div class=\"justify-content-between mb-1\">\r\n <mat-form-field\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n (dateInput)=\"dateChange($event)\"\r\n [placeholder]=\"label ? i18n.translate('select') + ' ' + label : ''\"\r\n (focus)=\"focusPicker(dp)\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n readonly\r\n [matDatepicker]=\"dp\"\r\n [formControl]=\"control\"\r\n />\r\n </label>\r\n @if(control?.value){\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-onyx fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"dp\">\r\n <ds-icon\r\n icon=\"calendar-o\"\r\n class=\"fc-black fs-18\"\r\n matDatepickerToggleIcon\r\n ></ds-icon>\r\n </mat-datepicker-toggle>\r\n <mat-datepicker #dp> </mat-datepicker>\r\n <!-- <mat-error *ngIf=\"errorMessage\">{{errorMessage}}</mat-error> -->\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n </div>\r\n</ng-container>\r\n} @if(isReadOnly && control){\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"control.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n", styles: [":host{flex-grow:1}::ng-deep .year-only .mat-calendar-period-button{pointer-events:none}::ng-deep .year-only .mat-calendar-arrow{display:none}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "component", type: i2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: i2.MatDatepickerModule }, { kind: "directive", type: i2.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "ngmodule", type: i3.MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }] });
123
+ ], viewQueries: [{ propertyName: "datepicker", first: true, predicate: MatDatepicker, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isReadOnly){\r\n<ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"!required\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <div class=\"justify-content-between mb-1\">\r\n <mat-form-field\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n (dateInput)=\"dateChange($event)\"\r\n [placeholder]=\"label ? i18n.translate('select') + ' ' + label : ''\"\r\n (focus)=\"focusPicker(dp)\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n readonly\r\n [matDatepicker]=\"dp\"\r\n [formControl]=\"control\"\r\n />\r\n </label>\r\n @if(control?.value){\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-onyx fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"dp\">\r\n <ds-icon\r\n icon=\"calendar-o\"\r\n class=\"fc-black fs-18\"\r\n matDatepickerToggleIcon\r\n ></ds-icon>\r\n </mat-datepicker-toggle>\r\n <mat-datepicker #dp> </mat-datepicker>\r\n <!-- <mat-error *ngIf=\"errorMessage\">{{errorMessage}}</mat-error> -->\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n </div>\r\n</ng-container>\r\n} @if(isReadOnly && control){\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"control.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n", styles: [":host{flex-grow:1}::ng-deep .year-only .mat-calendar-period-button{pointer-events:none}::ng-deep .year-only .mat-calendar-arrow{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatNativeDateModule }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "component", type: i1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: i1.MatDatepickerModule }, { kind: "directive", type: i1.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "ngmodule", type: i2.MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.FormLabelComponent, selector: "app-form-label", inputs: ["tooltip", "label", "optional"] }, { kind: "component", type: i5.ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }, { kind: "component", type: i6.InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: i7.ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
123
124
  }
124
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DatePickerComponent, decorators: [{
125
126
  type: Component,
@@ -134,20 +135,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
134
135
  useClass: CustomDateFormat,
135
136
  },
136
137
  ], imports: [
137
- ReactiveFormsModule,
138
- ValidationErrorsComponent,
139
138
  MatNativeDateModule,
140
139
  MatDatepicker,
141
140
  ...MatDatePickerImports,
142
141
  ...MatFormImports,
143
- InfoItemComponent,
144
- ], template: "@if(!isReadOnly){\r\n<ng-container>\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{ label }}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\"> {{ i18n.translate(\"optional\") }} </span>\r\n }\r\n </div>\r\n }\r\n <div class=\"justify-content-between mb-1\">\r\n <mat-form-field\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n (dateInput)=\"dateChange($event)\"\r\n [placeholder]=\"label ? i18n.translate('select') + ' ' + label : ''\"\r\n (focus)=\"focusPicker(dp)\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n readonly\r\n [matDatepicker]=\"dp\"\r\n [formControl]=\"control\"\r\n />\r\n </label>\r\n @if(control?.value){\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-onyx fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"dp\">\r\n <ds-icon\r\n icon=\"calendar-o\"\r\n class=\"fc-black fs-18\"\r\n matDatepickerToggleIcon\r\n ></ds-icon>\r\n </mat-datepicker-toggle>\r\n <mat-datepicker #dp> </mat-datepicker>\r\n <!-- <mat-error *ngIf=\"errorMessage\">{{errorMessage}}</mat-error> -->\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n </div>\r\n</ng-container>\r\n} @if(isReadOnly && control){\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"control.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n", styles: [":host{flex-grow:1}::ng-deep .year-only .mat-calendar-period-button{pointer-events:none}::ng-deep .year-only .mat-calendar-arrow{display:none}\n"] }]
142
+ ...Shareds
143
+ ], template: "@if(!isReadOnly){\r\n<ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"!required\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <div class=\"justify-content-between mb-1\">\r\n <mat-form-field\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n (dateInput)=\"dateChange($event)\"\r\n [placeholder]=\"label ? i18n.translate('select') + ' ' + label : ''\"\r\n (focus)=\"focusPicker(dp)\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n readonly\r\n [matDatepicker]=\"dp\"\r\n [formControl]=\"control\"\r\n />\r\n </label>\r\n @if(control?.value){\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-onyx fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"dp\">\r\n <ds-icon\r\n icon=\"calendar-o\"\r\n class=\"fc-black fs-18\"\r\n matDatepickerToggleIcon\r\n ></ds-icon>\r\n </mat-datepicker-toggle>\r\n <mat-datepicker #dp> </mat-datepicker>\r\n <!-- <mat-error *ngIf=\"errorMessage\">{{errorMessage}}</mat-error> -->\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n </div>\r\n</ng-container>\r\n} @if(isReadOnly && control){\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"control.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n", styles: [":host{flex-grow:1}::ng-deep .year-only .mat-calendar-period-button{pointer-events:none}::ng-deep .year-only .mat-calendar-arrow{display:none}\n"] }]
145
144
  }], propDecorators: { className: [{
146
145
  type: Input
147
146
  }], calendarType: [{
148
147
  type: Input
149
- }], showLabel: [{
150
- type: Input
151
148
  }], yearOnly: [{
152
149
  type: Input
153
150
  }], dateValue: [{
@@ -163,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
163
160
  type: ViewChild,
164
161
  args: [MatDatepicker]
165
162
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFFTCxTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0s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Q25CLHlCQUF5Qiw0R0FDekIsbUJBQW1CLCtCQUNuQixhQUFhLGt6Q0FHYixpQkFBaUI7OzJGQUdSLG1CQUFtQjtrQkE1Qi9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsSUFBSSxXQUNQLENBQUMsc0JBQXNCLENBQUMsYUFDdEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7NEJBQ3pCLFFBQVEsRUFBRSxnQkFBZ0I7eUJBQzNCO3FCQUNGLFdBRVE7d0JBQ1AsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixHQUFHLG9CQUFvQjt3QkFDdkIsR0FBRyxjQUFjO3dCQUNqQixpQkFBaUI7cUJBQ2xCOzhCQU9RLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFFRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQzJCLFVBQVU7c0JBQTFDLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUVYLE1BQU07c0JBQWxCLEtBQUs7Z0JBU29CLFVBQVU7c0JBQW5DLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZUZvcm1hdCB9IGZyb20gJy4vZGF0ZS1mb3JtYXQnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJy4uL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudCB9IGZyb20gJy4uL3ZhbGlkYXRpb24tZXJyb3JzL3ZhbGlkYXRpb24tZXJyb3JzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgTWF0RGF0ZVBpY2tlckltcG9ydHMsIE1hdEZvcm1JbXBvcnRzIH0gZnJvbSAnLi4vc2hhcmVkLWltcG9ydHMnO1xyXG5pbXBvcnQgeyBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgSW5mb0l0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9pbmZvLWl0ZW0vaW5mby1pdGVtLmNvbXBvbmVudCc7XHJcblxyXG5jb25zdCBZRUFSX09OTFlfRk9STUFUID0ge1xyXG4gIHBhcnNlOiB7XHJcbiAgICBkYXRlSW5wdXQ6ICdZWVlZJyxcclxuICB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogJ1lZWVknLFxyXG4gICAgbW9udGhZZWFyTGFiZWw6ICdZWVlZJyxcclxuICAgIGRhdGVBMTF5TGFiZWw6ICdMTCcsXHJcbiAgICBtb250aFllYXJBMTF5TGFiZWw6ICdZWVlZJyxcclxuICB9LFxyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUyxcclxuICAgICAgdXNlQ2xhc3M6IEN1c3RvbURhdGVGb3JtYXQsXHJcbiAgICB9LFxyXG4gIF0sXHJcblxyXG4gIGltcG9ydHM6IFtcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBWYWxpZGF0aW9uRXJyb3JzQ29tcG9uZW50LFxyXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcclxuICAgIE1hdERhdGVwaWNrZXIsXHJcbiAgICAuLi5NYXREYXRlUGlja2VySW1wb3J0cyxcclxuICAgIC4uLk1hdEZvcm1JbXBvcnRzLFxyXG4gICAgSW5mb0l0ZW1Db21wb25lbnQsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQ8VHlwZT5cclxuICBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFR5cGU+XHJcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0XHJcbntcclxuICBkYXRlID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNhbGVuZGFyVHlwZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93TGFiZWwgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHllYXJPbmx5OiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBkYXRlVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHNob3dJc2xhbWljID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3IhOiBzdHJpbmc7XHJcbiAgQEluamVjdChNQVRfREFURV9GT1JNQVRTKSBwdWJsaWMgZGF0ZUZvcm1hdDogQ3VzdG9tRGF0ZUZvcm1hdDtcclxuXHJcbiAgQElucHV0KCkgc2V0IGZvcm1hdChfZm9ybWF0OiBzdHJpbmcpIHtcclxuICAgIGlmIChfZm9ybWF0KSB7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdC51cGRhdGVEYXRlRm9ybWF0KFxyXG4gICAgICAgIHsgZGF0ZUlucHV0OiBfZm9ybWF0IH0sXHJcbiAgICAgICAgeyBkYXRlSW5wdXQ6IF9mb3JtYXQgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZChNYXREYXRlcGlja2VyKSBkYXRlcGlja2VyOiBNYXREYXRlcGlja2VyPGFueT47XHJcbiAgZmxvYXRMYWJlbDogYW55ID0gJ2F1dG8nO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLnllYXJPbmx5KSB0aGlzLmFjdGl2YXRlWWVhck9ubHlNb2RlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB0aGlzLnNldERhdGVGb3JtQ29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZUZvcm1Db250cm9sKCkge1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudFllYXIgPSB0b2RheS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGN1cnJlbnREYXkgPSB0b2RheS5nZXREYXRlKCk7XHJcbiAgICBpZiAodGhpcy5taW5EYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbkRhdGUgPT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIHRoaXMubWluRGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIsIGN1cnJlbnRNb250aCwgY3VycmVudERheSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tYXhEYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLm1heERhdGUgPT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIsIGN1cnJlbnRNb250aCwgY3VycmVudERheSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlID09ICdvbmVZZWFyJykge1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoXHJcbiAgICAgICAgICBjdXJyZW50WWVhciArIDEsXHJcbiAgICAgICAgICBjdXJyZW50TW9udGgsXHJcbiAgICAgICAgICBjdXJyZW50RGF5IC0gMVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmN1c3RvbU1heERhdGUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VzdG9tTWF4RGF0ZSk7XHJcbiAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoXHJcbiAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICBkYXRlLmdldERhdGUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VzdG9tTWluRGF0ZSkge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5jdXN0b21NaW5EYXRlKTtcclxuICAgICAgdGhpcy5taW5EYXRlVmFsdWUgPSBuZXcgRGF0ZShcclxuICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICAgIGRhdGUuZ2V0RGF0ZSgpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yZXF1aXJlZCkgdGhpcy5jb250cm9sLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c1BpY2tlcihwaWNrZXIpIHtcclxuICAgIHBpY2tlci5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBkYXRlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudD8udmFsdWUgJiYgIXRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICBsZXQgaW5wdXRWYWx1ZTtcclxuICAgICAgaW5wdXRWYWx1ZSA9IGZvcm1hdChcclxuICAgICAgICBuZXcgRGF0ZShldmVudC52YWx1ZSksXHJcbiAgICAgICAgXCJ5eXl5LU1NLWRkJ1QnSEg6bW06c3MuU1NTeHh4XCJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGlucHV0VmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJEYXRlVmFsdWUoZXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZhdGVZZWFyT25seU1vZGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQudXBkYXRlRGF0ZUZvcm1hdChcclxuICAgICAgWUVBUl9PTkxZX0ZPUk1BVC5wYXJzZSxcclxuICAgICAgWUVBUl9PTkxZX0ZPUk1BVC5kaXNwbGF5XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0KG5ldyBEYXRlKHRoaXMuY29udHJvbC52YWx1ZSksICd5eXl5JykpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRlcGlja2VyLnN0YXJ0VmlldyA9ICdtdWx0aS15ZWFyJztcclxuICAgIHRoaXMuZGF0ZXBpY2tlci55ZWFyU2VsZWN0ZWQuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShmb3JtYXQobmV3IERhdGUoZSksICd5eXl5JykpO1xyXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuY2xvc2UoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kYXRlcGlja2VyLm9wZW5lZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3llYXItb25seScpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXIuY2xvc2VkU3RyZWFtLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgneWVhci1vbmx5Jyk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiQGlmKCFpc1JlYWRPbmx5KXtcclxuPG5nLWNvbnRhaW5lcj5cclxuICBAaWYobGFiZWwpe1xyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgIEBpZighcmVxdWlyZWQpe1xyXG4gICAgPHNwYW4gY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXlcIj4ge3sgaTE4bi50cmFuc2xhdGUoXCJvcHRpb25hbFwiKSB9fSA8L3NwYW4+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0xXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtZGlzYWJsZWQnOiBpc0Rpc2FibGVkIH1cIlxyXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcclxuICAgID5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIChkYXRlSW5wdXQpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbCA/IGkxOG4udHJhbnNsYXRlKCdzZWxlY3QnKSArICcgJyArIGxhYmVsIDogJydcIlxyXG4gICAgICAgICAgKGZvY3VzKT1cImZvY3VzUGlja2VyKGRwKVwiXHJcbiAgICAgICAgICBbbWluXT1cIm1pbkRhdGVWYWx1ZVwiXHJcbiAgICAgICAgICBbbWF4XT1cIm1heERhdGVWYWx1ZVwiXHJcbiAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZHBcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIEBpZihjb250cm9sPy52YWx1ZSl7XHJcbiAgICAgIDxkcy1pY29uXHJcbiAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgaWNvbj1cImNsb3NlXCJcclxuICAgICAgICBjbGFzcz1cImZjLW9ueXggZnMtMTAgbXgtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyRGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgICA+PC9kcy1pY29uPlxyXG4gICAgICB9XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZHBcIj5cclxuICAgICAgICA8ZHMtaWNvblxyXG4gICAgICAgICAgaWNvbj1cImNhbGVuZGFyLW9cIlxyXG4gICAgICAgICAgY2xhc3M9XCJmYy1ibGFjayBmcy0xOFwiXHJcbiAgICAgICAgICBtYXREYXRlcGlja2VyVG9nZ2xlSWNvblxyXG4gICAgICAgID48L2RzLWljb24+XHJcbiAgICAgIDwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RwPiA8L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICA8IS0tIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+IC0tPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxhcHAtdmFsaWRhdGlvbi1lcnJvcnMgW2Vycm9yc109XCJjb250cm9sLmVycm9yc1wiPjwvYXBwLXZhbGlkYXRpb24tZXJyb3JzPlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxufSBAaWYoaXNSZWFkT25seSAmJiBjb250cm9sKXtcclxuPG5nLWNvbnRhaW5lcj5cclxuICA8YXBwLWluZm8taXRlbVxyXG4gICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgdHlwZT1cImRhdGVcIlxyXG4gICAgW2luc2lkZVRhYmxlXT1cImluc2lkZVRhYmxlXCJcclxuICAgIFtkYXRlVHlwZV09XCJjYWxlbmRhclR5cGVcIlxyXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcclxuICAgIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCJcclxuICAgIFtoYXNMYWJlbF09XCIhIWxhYmVsXCJcclxuICA+XHJcbiAgPC9hcHAtaW5mby1pdGVtPlxyXG48L25nLWNvbnRhaW5lcj5cclxufVxyXG4iXX0=
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUVMLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7QUFFN0QsTUFBTSxnQkFBZ0IsR0FBRztJQUN2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NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixRQUFRLEVBQUUsZ0JBQWdCO3lCQUMzQjtxQkFDRixXQUVRO3dCQUNQLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixHQUFHLG9CQUFvQjt3QkFDdkIsR0FBRyxjQUFjO3dCQUNqQixHQUFHLE9BQU87cUJBQ1g7OEJBT1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFFRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQzJCLFVBQVU7c0JBQTFDLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUVYLE1BQU07c0JBQWxCLEtBQUs7Z0JBU29CLFVBQVU7c0JBQW5DLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXROYXRpdmVEYXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVGb3JtYXQgfSBmcm9tICcuL2RhdGUtZm9ybWF0JztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgTWF0RGF0ZVBpY2tlckltcG9ydHMsIE1hdEZvcm1JbXBvcnRzLCBTaGFyZWRzIH0gZnJvbSAnLi4vc2hhcmVkLWltcG9ydHMnO1xyXG5pbXBvcnQgeyBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuXHJcbmNvbnN0IFlFQVJfT05MWV9GT1JNQVQgPSB7XHJcbiAgcGFyc2U6IHtcclxuICAgIGRhdGVJbnB1dDogJ1lZWVknLFxyXG4gIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnWVlZWScsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ1lZWVknLFxyXG4gICAgZGF0ZUExMXlMYWJlbDogJ0xMJyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ1lZWVknLFxyXG4gIH0sXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kYXRlcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUGlja2VyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLFxyXG4gICAgICB1c2VDbGFzczogQ3VzdG9tRGF0ZUZvcm1hdCxcclxuICAgIH0sXHJcbiAgXSxcclxuXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcclxuICAgIE1hdERhdGVwaWNrZXIsXHJcbiAgICAuLi5NYXREYXRlUGlja2VySW1wb3J0cyxcclxuICAgIC4uLk1hdEZvcm1JbXBvcnRzLFxyXG4gICAgLi4uU2hhcmVkc1xyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50PFR5cGU+XHJcbiAgZXh0ZW5kcyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZTxUeXBlPlxyXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdFxyXG57XHJcbiAgZGF0ZSA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBjYWxlbmRhclR5cGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgeWVhck9ubHk6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIGRhdGVWYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgc2hvd0lzbGFtaWMgPSBmYWxzZTtcclxuICBASW5wdXQoKSBlcnJvciE6IHN0cmluZztcclxuICBASW5qZWN0KE1BVF9EQVRFX0ZPUk1BVFMpIHB1YmxpYyBkYXRlRm9ybWF0OiBDdXN0b21EYXRlRm9ybWF0O1xyXG5cclxuICBASW5wdXQoKSBzZXQgZm9ybWF0KF9mb3JtYXQ6IHN0cmluZykge1xyXG4gICAgaWYgKF9mb3JtYXQpIHtcclxuICAgICAgdGhpcy5kYXRlRm9ybWF0LnVwZGF0ZURhdGVGb3JtYXQoXHJcbiAgICAgICAgeyBkYXRlSW5wdXQ6IF9mb3JtYXQgfSxcclxuICAgICAgICB7IGRhdGVJbnB1dDogX2Zvcm1hdCB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKE1hdERhdGVwaWNrZXIpIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PjtcclxuICBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1JlYWRPbmx5ICYmIHRoaXMueWVhck9ubHkpIHRoaXMuYWN0aXZhdGVZZWFyT25seU1vZGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIHRoaXMuc2V0RGF0ZUZvcm1Db250cm9sKCk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRlRm9ybUNvbnRyb2woKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50WWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBjdXJyZW50TW9udGggPSB0b2RheS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgY3VycmVudERheSA9IHRvZGF5LmdldERhdGUoKTtcclxuICAgIGlmICh0aGlzLm1pbkRhdGUpIHtcclxuICAgICAgaWYgKHRoaXMubWluRGF0ZSA9PSAndG9kYXknKSB7XHJcbiAgICAgICAgdGhpcy5taW5EYXRlVmFsdWUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCBjdXJyZW50RGF5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1heERhdGUpIHtcclxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSA9PSAndG9kYXknKSB7XHJcbiAgICAgICAgdGhpcy5tYXhEYXRlVmFsdWUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCBjdXJyZW50RGF5KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm1heERhdGUgPT0gJ29uZVllYXInKSB7XHJcbiAgICAgICAgdGhpcy5tYXhEYXRlVmFsdWUgPSBuZXcgRGF0ZShcclxuICAgICAgICAgIGN1cnJlbnRZZWFyICsgMSxcclxuICAgICAgICAgIGN1cnJlbnRNb250aCxcclxuICAgICAgICAgIGN1cnJlbnREYXkgLSAxXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VzdG9tTWF4RGF0ZSkge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5jdXN0b21NYXhEYXRlKTtcclxuICAgICAgdGhpcy5tYXhEYXRlVmFsdWUgPSBuZXcgRGF0ZShcclxuICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICAgIGRhdGUuZ2V0RGF0ZSgpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXN0b21NaW5EYXRlKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1c3RvbU1pbkRhdGUpO1xyXG4gICAgICB0aGlzLm1pbkRhdGVWYWx1ZSA9IG5ldyBEYXRlKFxyXG4gICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICBkYXRlLmdldE1vbnRoKCksXHJcbiAgICAgICAgZGF0ZS5nZXREYXRlKClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB0aGlzLmNvbnRyb2wuYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICB9XHJcblxyXG4gIGZvY3VzUGlja2VyKHBpY2tlcikge1xyXG4gICAgcGlja2VyLm9wZW4oKTtcclxuICB9XHJcblxyXG4gIGRhdGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50Py52YWx1ZSAmJiAhdGhpcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIGxldCBpbnB1dFZhbHVlO1xyXG4gICAgICBpbnB1dFZhbHVlID0gZm9ybWF0KFxyXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LnZhbHVlKSxcclxuICAgICAgICBcInl5eXktTU0tZGQnVCdISDptbTpzcy5TU1N4eHhcIlxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoaW5wdXRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhckRhdGVWYWx1ZShldmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhY3RpdmF0ZVllYXJPbmx5TW9kZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0ZUZvcm1hdC51cGRhdGVEYXRlRm9ybWF0KFxyXG4gICAgICBZRUFSX09OTFlfRk9STUFULnBhcnNlLFxyXG4gICAgICBZRUFSX09OTFlfRk9STUFULmRpc3BsYXlcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5jb250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShmb3JtYXQobmV3IERhdGUodGhpcy5jb250cm9sLnZhbHVlKSwgJ3l5eXknKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVwaWNrZXIuc3RhcnRWaWV3ID0gJ211bHRpLXllYXInO1xyXG4gICAgdGhpcy5kYXRlcGlja2VyLnllYXJTZWxlY3RlZC5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGZvcm1hdChuZXcgRGF0ZShlKSwgJ3l5eXknKSk7XHJcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5jbG9zZSgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXIub3BlbmVkU3RyZWFtLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgneWVhci1vbmx5Jyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGF0ZXBpY2tlci5jbG9zZWRTdHJlYW0uc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCd5ZWFyLW9ubHknKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCJAaWYoIWlzUmVhZE9ubHkpe1xyXG48bmctY29udGFpbmVyPlxyXG4gIEBpZihsYWJlbCl7XHJcbiAgICA8YXBwLWZvcm0tbGFiZWwgW2xhYmVsXT1cImxhYmVsXCIgW29wdGlvbmFsXT1cIiFyZXF1aXJlZFwiIFt0b29sdGlwXT1cInRvb2x0aXBcIj48L2FwcC1mb3JtLWxhYmVsPlxyXG4gICAgfVxyXG4gIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0xXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtZGlzYWJsZWQnOiBpc0Rpc2FibGVkIH1cIlxyXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcclxuICAgID5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIChkYXRlSW5wdXQpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbCA/IGkxOG4udHJhbnNsYXRlKCdzZWxlY3QnKSArICcgJyArIGxhYmVsIDogJydcIlxyXG4gICAgICAgICAgKGZvY3VzKT1cImZvY3VzUGlja2VyKGRwKVwiXHJcbiAgICAgICAgICBbbWluXT1cIm1pbkRhdGVWYWx1ZVwiXHJcbiAgICAgICAgICBbbWF4XT1cIm1heERhdGVWYWx1ZVwiXHJcbiAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZHBcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIEBpZihjb250cm9sPy52YWx1ZSl7XHJcbiAgICAgIDxkcy1pY29uXHJcbiAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgaWNvbj1cImNsb3NlXCJcclxuICAgICAgICBjbGFzcz1cImZjLW9ueXggZnMtMTAgbXgtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyRGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgICA+PC9kcy1pY29uPlxyXG4gICAgICB9XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZHBcIj5cclxuICAgICAgICA8ZHMtaWNvblxyXG4gICAgICAgICAgaWNvbj1cImNhbGVuZGFyLW9cIlxyXG4gICAgICAgICAgY2xhc3M9XCJmYy1ibGFjayBmcy0xOFwiXHJcbiAgICAgICAgICBtYXREYXRlcGlja2VyVG9nZ2xlSWNvblxyXG4gICAgICAgID48L2RzLWljb24+XHJcbiAgICAgIDwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RwPiA8L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICA8IS0tIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+IC0tPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxhcHAtdmFsaWRhdGlvbi1lcnJvcnMgW2Vycm9yc109XCJjb250cm9sLmVycm9yc1wiPjwvYXBwLXZhbGlkYXRpb24tZXJyb3JzPlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxufSBAaWYoaXNSZWFkT25seSAmJiBjb250cm9sKXtcclxuPG5nLWNvbnRhaW5lcj5cclxuICA8YXBwLWluZm8taXRlbVxyXG4gICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgdHlwZT1cImRhdGVcIlxyXG4gICAgW2luc2lkZVRhYmxlXT1cImluc2lkZVRhYmxlXCJcclxuICAgIFtkYXRlVHlwZV09XCJjYWxlbmRhclR5cGVcIlxyXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcclxuICAgIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCJcclxuICAgIFtoYXNMYWJlbF09XCIhIWxhYmVsXCJcclxuICA+XHJcbiAgPC9hcHAtaW5mby1pdGVtPlxyXG48L25nLWNvbnRhaW5lcj5cclxufVxyXG4iXX0=