bpm-core 0.0.104 → 0.0.105

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 (131) hide show
  1. package/esm2022/bpm-core.mjs +5 -0
  2. package/esm2022/lib/app/app.component.mjs +79 -0
  3. package/esm2022/lib/classes/form-validation.mjs +80 -0
  4. package/esm2022/lib/classes/index.mjs +2 -0
  5. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +44 -0
  6. package/esm2022/lib/components/app-component-sections/approvals/approvals.component.mjs +23 -0
  7. package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +113 -0
  8. package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +25 -0
  9. package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +27 -0
  10. package/esm2022/lib/components/app-component-sections/faqs/index.mjs +2 -0
  11. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +237 -0
  12. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +255 -0
  13. package/esm2022/lib/components/app-component-sections/index.mjs +9 -0
  14. package/esm2022/lib/components/app-component-sections/layout/header/header.component.mjs +79 -0
  15. package/esm2022/lib/components/app-component-sections/layout/layout.component.mjs +89 -0
  16. package/esm2022/lib/components/app-component-sections/layout/side-nav/side-nav.component.mjs +158 -0
  17. package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +34 -0
  18. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +345 -0
  19. package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs +45 -0
  20. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +271 -0
  21. package/esm2022/lib/components/app-component-sections/status/status.component.mjs +38 -0
  22. package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +164 -0
  23. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +138 -0
  24. package/esm2022/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.mjs +30 -0
  25. package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +29 -0
  26. package/esm2022/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.mjs +67 -0
  27. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +138 -0
  28. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +234 -0
  29. package/esm2022/lib/components/shared-components/form-field/base-component/base-component.component.mjs +198 -0
  30. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +91 -0
  31. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +185 -0
  32. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +131 -0
  33. package/esm2022/lib/components/shared-components/form-field/date-picker/date-format.mjs +31 -0
  34. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +175 -0
  35. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +186 -0
  36. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +525 -0
  37. package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +33 -0
  38. package/esm2022/lib/components/shared-components/form-field/index.mjs +26 -0
  39. package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +76 -0
  40. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +71 -0
  41. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/index.mjs +3 -0
  42. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.mjs +2 -0
  43. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +73 -0
  44. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +69 -0
  45. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +61 -0
  46. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +74 -0
  47. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +85 -0
  48. package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +52 -0
  49. package/esm2022/lib/components/shared-components/form-field/repeated-list/repeated-list.component.mjs +32 -0
  50. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +192 -0
  51. package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +191 -0
  52. package/esm2022/lib/components/shared-components/form-field/shared-imports.mjs +36 -0
  53. package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs +116 -0
  54. package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs +39 -0
  55. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +57 -0
  56. package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +90 -0
  57. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +43 -0
  58. package/esm2022/lib/components/shared-components/index.mjs +9 -0
  59. package/esm2022/lib/components/shared-components/table/table.component.mjs +243 -0
  60. package/esm2022/lib/components/shared-components/terms-conditions/terms-conditions.component.mjs +31 -0
  61. package/esm2022/lib/components/shared-components/title-section/title-section.component.mjs +31 -0
  62. package/esm2022/lib/constants/constants.mjs +149 -0
  63. package/esm2022/lib/constants/index.mjs +2 -0
  64. package/esm2022/lib/directives/ar.directive.mjs +54 -0
  65. package/esm2022/lib/directives/currency.directive.mjs +92 -0
  66. package/esm2022/lib/directives/en.directive.mjs +51 -0
  67. package/esm2022/lib/directives/number.directive.mjs +68 -0
  68. package/esm2022/lib/directives/skip-location.directive.mjs +28 -0
  69. package/esm2022/lib/enums/actions.enum.mjs +22 -0
  70. package/esm2022/lib/enums/colors.enum.mjs +6 -0
  71. package/esm2022/lib/enums/events.enum.mjs +6 -0
  72. package/esm2022/lib/functions/data-to-blob.mjs +12 -0
  73. package/esm2022/lib/functions/encode-password.mjs +14 -0
  74. package/esm2022/lib/functions/handel-error-response.mjs +12 -0
  75. package/esm2022/lib/functions/index.mjs +5 -0
  76. package/esm2022/lib/functions/is-valid-data.mjs +42 -0
  77. package/esm2022/lib/helpers/shared.helper.mjs +26 -0
  78. package/esm2022/lib/hooks/index.mjs +3 -0
  79. package/esm2022/lib/hooks/load-form.mjs +13 -0
  80. package/esm2022/lib/hooks/save-form.mjs +18 -0
  81. package/esm2022/lib/i18n/ar.mjs +200 -0
  82. package/esm2022/lib/i18n/en.mjs +204 -0
  83. package/esm2022/lib/i18n/index.mjs +3 -0
  84. package/esm2022/lib/interfaces/action.interface.mjs +2 -0
  85. package/esm2022/lib/interfaces/api-response.interface.mjs +2 -0
  86. package/esm2022/lib/interfaces/document-file.interface.mjs +2 -0
  87. package/esm2022/lib/interfaces/form-items.interface.mjs +2 -0
  88. package/esm2022/lib/interfaces/form.interface.mjs +150 -0
  89. package/esm2022/lib/interfaces/igate-user.interface.mjs +2 -0
  90. package/esm2022/lib/interfaces/index.mjs +8 -0
  91. package/esm2022/lib/interfaces/lov-list.interface.mjs +2 -0
  92. package/esm2022/lib/interfaces/lov.interface.mjs +2 -0
  93. package/esm2022/lib/interfaces/shared.interface.mjs +2 -0
  94. package/esm2022/lib/pipes/currency.pipe.mjs +66 -0
  95. package/esm2022/lib/pipes/format-as-password.pipe.mjs +19 -0
  96. package/esm2022/lib/pipes/index.mjs +3 -0
  97. package/esm2022/lib/pipes/status-style.pipe.mjs +57 -0
  98. package/esm2022/lib/pipes/translate.pipe.mjs +36 -0
  99. package/esm2022/lib/regex/index.mjs +2 -0
  100. package/esm2022/lib/regex/regex-patterns.mjs +4 -0
  101. package/esm2022/lib/services/action.service.ts.mjs +25 -0
  102. package/esm2022/lib/services/core.service.ts.mjs +527 -0
  103. package/esm2022/lib/services/feedBack.service.mjs +81 -0
  104. package/esm2022/lib/services/i18n.service.mjs +36 -0
  105. package/esm2022/lib/services/index.mjs +6 -0
  106. package/esm2022/lib/services/sidenav.service.mjs +36 -0
  107. package/esm2022/lib/testComponent/config/segment-dynamic-loader.config.mjs +8 -0
  108. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +90 -0
  109. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +482 -0
  110. package/esm2022/lib/testComponent/services/i18n.service.mjs +39 -0
  111. package/esm2022/lib/testComponent/services/segment-dynamic-loader.service.mjs +54 -0
  112. package/esm2022/lib/validators/id.validator.mjs +66 -0
  113. package/esm2022/lib/validators/index.mjs +8 -0
  114. package/esm2022/lib/validators/string-to-boolean.pipe.mjs +16 -0
  115. package/esm2022/lib/validators/text.directive.mjs +50 -0
  116. package/esm2022/lib/validators/timer.pipe.mjs +19 -0
  117. package/esm2022/public-api.mjs +19 -0
  118. package/fesm2022/bpm-core.mjs +244 -226
  119. package/fesm2022/bpm-core.mjs.map +1 -1
  120. package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +1 -2
  121. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +1 -1
  122. package/lib/components/shared-components/form-field/shared-imports.d.ts +2 -2
  123. package/lib/components/shared-components/form-field/textarea/special-chars.directive.d.ts +1 -1
  124. package/lib/components/shared-components/title-section/title-section.component.d.ts +1 -1
  125. package/lib/directives/currency.directive.d.ts +1 -0
  126. package/lib/pipes/currency.pipe.d.ts +1 -1
  127. package/lib/pipes/format-as-password.pipe.d.ts +1 -1
  128. package/lib/validators/string-to-boolean.pipe.d.ts +1 -1
  129. package/lib/validators/text.directive.d.ts +1 -1
  130. package/lib/validators/timer.pipe.d.ts +1 -1
  131. package/package.json +4 -2
@@ -0,0 +1,186 @@
1
+ /* eslint-disable @angular-eslint/component-selector */
2
+ /* eslint-disable @typescript-eslint/no-empty-function */
3
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Inject, Input, ViewChild, } from '@angular/core';
4
+ import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
5
+ import { NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
6
+ import { MatDatepicker } from '@angular/material/datepicker';
7
+ import { MAT_DATE_FORMATS } from '@angular/material/core';
8
+ import { CustomDateFormat } from '../date-picker/date-format';
9
+ import { format } from 'date-fns';
10
+ import { MatDatePickerImports, MatFormImports, Shareds } from '../shared-imports';
11
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/material/datepicker";
14
+ import * as i2 from "@angular/material/core";
15
+ import * as i3 from "@angular/material/form-field";
16
+ import * as i4 from "../form-label/form-label.component";
17
+ import * as i5 from "../validation-errors/validation-errors.component";
18
+ import * as i6 from "../info-item/info-item.component";
19
+ import * as i7 from "@angular/forms";
20
+ import * as i8 from "@angular/common";
21
+ import * as i9 from "../../../../pipes/translate.pipe";
22
+ const YEAR_ONLY_FORMAT = {
23
+ parse: {
24
+ dateInput: 'YYYY',
25
+ },
26
+ display: {
27
+ dateInput: 'YYYY',
28
+ monthYearLabel: 'YYYY',
29
+ dateA11yLabel: 'LL',
30
+ monthYearA11yLabel: 'YYYY',
31
+ },
32
+ };
33
+ export class DateRangePickerComponent extends ControlValueAccessorDirective {
34
+ className = 'white-input';
35
+ yearOnly;
36
+ dateFormat;
37
+ datepicker;
38
+ calendarType;
39
+ startInputValue;
40
+ endInputValue;
41
+ destroyRef = inject(DestroyRef);
42
+ dateRange;
43
+ ngOnInit() {
44
+ super.ngOnInit();
45
+ this.actionStateService.resetAction$
46
+ .pipe(takeUntilDestroyed(this.destroyRef))
47
+ .subscribe(res => {
48
+ if (!this.isReadOnly && this.control.enabled) {
49
+ this.control.reset();
50
+ }
51
+ });
52
+ }
53
+ ngAfterViewInit() {
54
+ if (!this.isReadOnly && this.yearOnly)
55
+ this.activateYearOnlyMode();
56
+ }
57
+ ngOnChanges(changes) {
58
+ this.setDateFormControl();
59
+ }
60
+ setDateFormControl() {
61
+ const today = new Date();
62
+ const currentYear = today.getFullYear();
63
+ const currentMonth = today.getMonth();
64
+ const currentDay = today.getDate();
65
+ if (this.minDate) {
66
+ if (this.minDate == 'today') {
67
+ this.minDateValue = new Date(currentYear, currentMonth, currentDay);
68
+ }
69
+ }
70
+ if (this.maxDate) {
71
+ if (this.maxDate == 'today') {
72
+ this.maxDateValue = new Date(currentYear, currentMonth, currentDay);
73
+ }
74
+ if (this.maxDate == 'oneYear') {
75
+ this.maxDateValue = new Date(currentYear + 1, currentMonth, currentDay - 1);
76
+ }
77
+ }
78
+ if (this.customMaxDate) {
79
+ const date = new Date(this.customMaxDate);
80
+ this.maxDateValue = new Date(date.getFullYear(), date.getMonth(), date.getDate());
81
+ }
82
+ if (this.customMinDate) {
83
+ const date = new Date(this.customMinDate);
84
+ this.minDateValue = new Date(date.getFullYear(), date.getMonth(), date.getDate());
85
+ }
86
+ if (this.required)
87
+ this.control.addValidators(Validators.required);
88
+ }
89
+ focusPicker(picker) {
90
+ picker.open();
91
+ this.control.markAsTouched();
92
+ }
93
+ startDateChange(event) {
94
+ if (event?.value && !this.isDisabled) {
95
+ if (this.startDateControl.value) {
96
+ this.startDateControl.setValue(format(new Date(event.value), "yyyy-MM-dd'T'HH:mm:ss.SSSxxx"));
97
+ }
98
+ }
99
+ }
100
+ endDateChange(event) {
101
+ if (event?.value && !this.isDisabled) {
102
+ if (this.startDateControl.value && this.endDateControl.value) {
103
+ this.endDateControl.setValue(format(new Date(event.value), "yyyy-MM-dd'T'HH:mm:ss.SSSxxx"));
104
+ this.setDateRangeControlValue();
105
+ }
106
+ }
107
+ }
108
+ setDateRangeControlValue() {
109
+ this.dateRange = {
110
+ startDate: this.startDateControl.value,
111
+ endDate: this.endDateControl.value,
112
+ };
113
+ this.control.setValue(this.dateRange);
114
+ }
115
+ clearDateValue(event) {
116
+ this.dateRange = null;
117
+ this.startInputValue = null;
118
+ this.endInputValue = null;
119
+ this.control.reset();
120
+ this.endDateControl.reset();
121
+ this.startDateControl.reset();
122
+ this.control.markAsTouched();
123
+ this.endDateControl.markAsTouched();
124
+ this.startDateControl.markAsTouched();
125
+ }
126
+ activateYearOnlyMode() {
127
+ this.dateFormat.updateDateFormat(YEAR_ONLY_FORMAT.parse, YEAR_ONLY_FORMAT.display);
128
+ if (this.control) {
129
+ this.control.setValue(format(new Date(this.control.value), 'yyyy'));
130
+ }
131
+ this.datepicker.startView = 'multi-year';
132
+ this.datepicker.yearSelected.subscribe((e) => {
133
+ this.control.setValue(format(new Date(e), 'yyyy'));
134
+ this.datepicker.close();
135
+ });
136
+ this.datepicker.openedStream.subscribe(() => {
137
+ document.body.classList.add('year-only');
138
+ });
139
+ this.datepicker.closedStream.subscribe(() => {
140
+ document.body.classList.remove('year-only');
141
+ });
142
+ }
143
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DateRangePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
144
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: DateRangePickerComponent, isStandalone: true, selector: "app-date-range-picker", inputs: { className: "className", yearOnly: "yearOnly", calendarType: "calendarType" }, providers: [
145
+ {
146
+ provide: NG_VALUE_ACCESSOR,
147
+ useExisting: forwardRef(() => DateRangePickerComponent),
148
+ multi: true,
149
+ },
150
+ {
151
+ provide: MAT_DATE_FORMATS,
152
+ useClass: CustomDateFormat,
153
+ },
154
+ ], viewQueries: [{ propertyName: "datepicker", first: true, predicate: MatDatepicker, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isReadOnly) {\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n<div class=\"datePicker\">\r\n <mat-form-field class=\"date-range primary-form {{ className }}\"\r\n [ngClass]=\"{\r\n 'custom-validation-error': !startDateControl.value && !endDateControl.value && startDateControl.touched\r\n }\">\r\n <label class=\"mat-form-content\">\r\n <mat-date-range-input\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n >\r\n <input\r\n matStartDate\r\n placeholder=\"{{ 'startDate' | translate }}\"\r\n [formControl]=\"startDateControl\"\r\n (dateInput)=\"startDateChange($event)\"\r\n (click)=\"focusPicker(picker)\"\r\n readonly\r\n />\r\n <input\r\n matEndDate\r\n placeholder=\"{{ 'endDate' | translate }}\"\r\n [formControl]=\"endDateControl\"\r\n (dateInput)=\"endDateChange($event)\"\r\n (click)=\"focusPicker(picker)\"\r\n readonly\r\n />\r\n </mat-date-range-input>\r\n </label>\r\n\r\n @if(control?.value) {\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-coral fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\" [disableRipple]=\"true\">\r\n <i class=\"sfi sfi-calendar-o fc-black font-18\" matDatepickerToggleIcon></i>\r\n </mat-datepicker-toggle>\r\n\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n </mat-form-field>\r\n</div>\r\n<app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n\r\n\r\n} @else if(isReadOnly && control.value) {\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]=\"{\r\n startDate: control?.value?.startDate,\r\n endDate: control?.value?.endDate\r\n }\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n", styles: [":host{flex-grow:1}\n"], dependencies: [{ kind: "component", type: i1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: i1.MatDatepickerModule }, { kind: "directive", type: i1.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: i1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: i2.MatNativeDateModule }, { 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: "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"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
155
+ }
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DateRangePickerComponent, decorators: [{
157
+ type: Component,
158
+ args: [{ selector: 'app-date-range-picker', schemas: [CUSTOM_ELEMENTS_SCHEMA], standalone: true, providers: [
159
+ {
160
+ provide: NG_VALUE_ACCESSOR,
161
+ useExisting: forwardRef(() => DateRangePickerComponent),
162
+ multi: true,
163
+ },
164
+ {
165
+ provide: MAT_DATE_FORMATS,
166
+ useClass: CustomDateFormat,
167
+ },
168
+ ], imports: [
169
+ ...MatDatePickerImports,
170
+ ...MatFormImports,
171
+ ...Shareds
172
+ ], template: "@if(!isReadOnly) {\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n<div class=\"datePicker\">\r\n <mat-form-field class=\"date-range primary-form {{ className }}\"\r\n [ngClass]=\"{\r\n 'custom-validation-error': !startDateControl.value && !endDateControl.value && startDateControl.touched\r\n }\">\r\n <label class=\"mat-form-content\">\r\n <mat-date-range-input\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n >\r\n <input\r\n matStartDate\r\n placeholder=\"{{ 'startDate' | translate }}\"\r\n [formControl]=\"startDateControl\"\r\n (dateInput)=\"startDateChange($event)\"\r\n (click)=\"focusPicker(picker)\"\r\n readonly\r\n />\r\n <input\r\n matEndDate\r\n placeholder=\"{{ 'endDate' | translate }}\"\r\n [formControl]=\"endDateControl\"\r\n (dateInput)=\"endDateChange($event)\"\r\n (click)=\"focusPicker(picker)\"\r\n readonly\r\n />\r\n </mat-date-range-input>\r\n </label>\r\n\r\n @if(control?.value) {\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-coral fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\" [disableRipple]=\"true\">\r\n <i class=\"sfi sfi-calendar-o fc-black font-18\" matDatepickerToggleIcon></i>\r\n </mat-datepicker-toggle>\r\n\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n </mat-form-field>\r\n</div>\r\n<app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n\r\n\r\n} @else if(isReadOnly && control.value) {\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]=\"{\r\n startDate: control?.value?.startDate,\r\n endDate: control?.value?.endDate\r\n }\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n", styles: [":host{flex-grow:1}\n"] }]
173
+ }], propDecorators: { className: [{
174
+ type: Input
175
+ }], yearOnly: [{
176
+ type: Input
177
+ }], dateFormat: [{
178
+ type: Inject,
179
+ args: [MAT_DATE_FORMATS]
180
+ }], datepicker: [{
181
+ type: ViewChild,
182
+ args: [MatDatepicker]
183
+ }], calendarType: [{
184
+ type: Input
185
+ }] } });
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELHlEQUF5RDtBQUN6RCxPQUFPLEVBQ0wsU0FBUyxFQUNULHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0s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dUVBOzsyRkRYYSx3QkFBd0I7a0JBdkJwQyxTQUFTOytCQUNFLHVCQUF1QixXQUd4QixDQUFDLHNCQUFzQixDQUFDLGNBQ3JCLElBQUksYUFDTDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsUUFBUSxFQUFFLGdCQUFnQjt5QkFDM0I7cUJBQ0YsV0FDUTt3QkFDUCxHQUFHLG9CQUFvQjt3QkFDdkIsR0FBRyxjQUFjO3dCQUNqQixHQUFHLE9BQU87cUJBQ1g7OEJBS1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUMyQixVQUFVO3NCQUExQyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFDRSxVQUFVO3NCQUFuQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uICovXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXHJcbiAgRGVzdHJveVJlZixcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnLi4vY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge1xyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZUZvcm1hdCB9IGZyb20gJy4uL2RhdGUtcGlja2VyL2RhdGUtZm9ybWF0JztcclxuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBNYXREYXRlUGlja2VySW1wb3J0cywgTWF0Rm9ybUltcG9ydHMsIFNoYXJlZHMgfSBmcm9tICcuLi9zaGFyZWQtaW1wb3J0cyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbmNvbnN0IFlFQVJfT05MWV9GT1JNQVQgPSB7XHJcbiAgcGFyc2U6IHtcclxuICAgIGRhdGVJbnB1dDogJ1lZWVknLFxyXG4gIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnWVlZWScsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ1lZWVknLFxyXG4gICAgZGF0ZUExMXlMYWJlbDogJ0xMJyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ1lZWVknLFxyXG4gIH0sXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kYXRlLXJhbmdlLXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLFxyXG4gICAgICB1c2VDbGFzczogQ3VzdG9tRGF0ZUZvcm1hdCxcclxuICAgIH0sXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICAuLi5NYXREYXRlUGlja2VySW1wb3J0cyxcclxuICAgIC4uLk1hdEZvcm1JbXBvcnRzLFxyXG4gICAgLi4uU2hhcmVkc1xyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQ8XHJcbiAgVHlwZVxyXG4+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4ge1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICd3aGl0ZS1pbnB1dCc7XHJcbiAgQElucHV0KCkgeWVhck9ubHk6IGJvb2xlYW47XHJcbiAgQEluamVjdChNQVRfREFURV9GT1JNQVRTKSBwdWJsaWMgZGF0ZUZvcm1hdDogQ3VzdG9tRGF0ZUZvcm1hdDtcclxuICBAVmlld0NoaWxkKE1hdERhdGVwaWNrZXIpIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PjtcclxuICBASW5wdXQoKSBjYWxlbmRhclR5cGUhOiBzdHJpbmc7XHJcbiAgc3RhcnRJbnB1dFZhbHVlOiBzdHJpbmc7XHJcbiAgZW5kSW5wdXRWYWx1ZTogc3RyaW5nO1xyXG4gIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgZGF0ZVJhbmdlOiBhbnk7XHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpXHJcbiAgICB0aGlzLmFjdGlvblN0YXRlU2VydmljZS5yZXNldEFjdGlvbiRcclxuICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLmNvbnRyb2wuZW5hYmxlZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5yZXNldCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLnllYXJPbmx5KSB0aGlzLmFjdGl2YXRlWWVhck9ubHlNb2RlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB0aGlzLnNldERhdGVGb3JtQ29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZUZvcm1Db250cm9sKCkge1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudFllYXIgPSB0b2RheS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGN1cnJlbnREYXkgPSB0b2RheS5nZXREYXRlKCk7XHJcbiAgICBpZiAodGhpcy5taW5EYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbkRhdGUgPT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIHRoaXMubWluRGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIsIGN1cnJlbnRNb250aCwgY3VycmVudERheSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tYXhEYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLm1heERhdGUgPT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIsIGN1cnJlbnRNb250aCwgY3VycmVudERheSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSA9PSAnb25lWWVhcicpIHtcclxuICAgICAgICB0aGlzLm1heERhdGVWYWx1ZSA9IG5ldyBEYXRlKFxyXG4gICAgICAgICAgY3VycmVudFllYXIgKyAxLFxyXG4gICAgICAgICAgY3VycmVudE1vbnRoLFxyXG4gICAgICAgICAgY3VycmVudERheSAtIDFcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXN0b21NYXhEYXRlKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1c3RvbU1heERhdGUpO1xyXG4gICAgICB0aGlzLm1heERhdGVWYWx1ZSA9IG5ldyBEYXRlKFxyXG4gICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICBkYXRlLmdldE1vbnRoKCksXHJcbiAgICAgICAgZGF0ZS5nZXREYXRlKClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmN1c3RvbU1pbkRhdGUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VzdG9tTWluRGF0ZSk7XHJcbiAgICAgIHRoaXMubWluRGF0ZVZhbHVlID0gbmV3IERhdGUoXHJcbiAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICBkYXRlLmdldERhdGUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB0aGlzLmNvbnRyb2wuYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICB9XHJcblxyXG4gIGZvY3VzUGlja2VyKHBpY2tlcikge1xyXG4gICAgcGlja2VyLm9wZW4oKTtcclxuICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBzdGFydERhdGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50Py52YWx1ZSAmJiAhdGhpcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0RGF0ZUNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICBmb3JtYXQobmV3IERhdGUoZXZlbnQudmFsdWUpLCBcInl5eXktTU0tZGQnVCdISDptbTpzcy5TU1N4eHhcIilcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmREYXRlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudD8udmFsdWUgJiYgIXRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICBpZiAodGhpcy5zdGFydERhdGVDb250cm9sLnZhbHVlICYmIHRoaXMuZW5kRGF0ZUNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICB0aGlzLmVuZERhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgZm9ybWF0KG5ldyBEYXRlKGV2ZW50LnZhbHVlKSwgXCJ5eXl5LU1NLWRkJ1QnSEg6bW06c3MuU1NTeHh4XCIpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNldERhdGVSYW5nZUNvbnRyb2xWYWx1ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRlUmFuZ2VDb250cm9sVmFsdWUoKSB7XHJcbiAgICB0aGlzLmRhdGVSYW5nZSA9IHtcclxuICAgICAgc3RhcnREYXRlOiB0aGlzLnN0YXJ0RGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgIGVuZERhdGU6IHRoaXMuZW5kRGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHRoaXMuZGF0ZVJhbmdlKTtcclxuICB9XHJcblxyXG4gIGNsZWFyRGF0ZVZhbHVlKGV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVSYW5nZSA9IG51bGw7XHJcbiAgICB0aGlzLnN0YXJ0SW5wdXRWYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLmVuZElucHV0VmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5jb250cm9sLnJlc2V0KCk7XHJcbiAgICB0aGlzLmVuZERhdGVDb250cm9sLnJlc2V0KCk7XHJcbiAgICB0aGlzLnN0YXJ0RGF0ZUNvbnRyb2wucmVzZXQoKTtcclxuICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB0aGlzLmVuZERhdGVDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIHRoaXMuc3RhcnREYXRlQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjdGl2YXRlWWVhck9ubHlNb2RlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0LnVwZGF0ZURhdGVGb3JtYXQoXHJcbiAgICAgIFlFQVJfT05MWV9GT1JNQVQucGFyc2UsXHJcbiAgICAgIFlFQVJfT05MWV9GT1JNQVQuZGlzcGxheVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGZvcm1hdChuZXcgRGF0ZSh0aGlzLmNvbnRyb2wudmFsdWUpLCAneXl5eScpKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZXBpY2tlci5zdGFydFZpZXcgPSAnbXVsdGkteWVhcic7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXIueWVhclNlbGVjdGVkLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0KG5ldyBEYXRlKGUpLCAneXl5eScpKTtcclxuICAgICAgdGhpcy5kYXRlcGlja2VyLmNsb3NlKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGF0ZXBpY2tlci5vcGVuZWRTdHJlYW0uc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCd5ZWFyLW9ubHknKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kYXRlcGlja2VyLmNsb3NlZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ3llYXItb25seScpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZighaXNSZWFkT25seSkge1xyXG4gIEBpZihsYWJlbCkge1xyXG4gICAgPGFwcC1mb3JtLWxhYmVsIFtsYWJlbF09XCJsYWJlbFwiIFtvcHRpb25hbF09XCJyZXF1aXJlZCB8fCBtYW5kYXRvcnkgPyBmYWxzZSA6IHRydWVcIiBbdG9vbHRpcF09XCJ0b29sdGlwXCI+PC9hcHAtZm9ybS1sYWJlbD5cclxuICB9XHJcblxyXG48ZGl2IGNsYXNzPVwiZGF0ZVBpY2tlclwiPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtcmFuZ2UgcHJpbWFyeS1mb3JtIHt7IGNsYXNzTmFtZSB9fVwiXHJcbiAgW25nQ2xhc3NdPVwie1xyXG4gICAgJ2N1c3RvbS12YWxpZGF0aW9uLWVycm9yJzogIXN0YXJ0RGF0ZUNvbnRyb2wudmFsdWUgJiYgIWVuZERhdGVDb250cm9sLnZhbHVlICYmIHN0YXJ0RGF0ZUNvbnRyb2wudG91Y2hlZFxyXG4gICB9XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dFxyXG4gICAgICAgIFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgICAgIFttaW5dPVwibWluRGF0ZVZhbHVlXCJcclxuICAgICAgICBbbWF4XT1cIm1heERhdGVWYWx1ZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdFN0YXJ0RGF0ZVxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnc3RhcnREYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic3RhcnREYXRlQ29udHJvbFwiXHJcbiAgICAgICAgICAoZGF0ZUlucHV0KT1cInN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChjbGljayk9XCJmb2N1c1BpY2tlcihwaWNrZXIpXCJcclxuICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgLz5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdEVuZERhdGVcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2VuZERhdGUnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJlbmREYXRlQ29udHJvbFwiXHJcbiAgICAgICAgICAoZGF0ZUlucHV0KT1cImVuZERhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZm9jdXNQaWNrZXIocGlja2VyKVwiXHJcbiAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XHJcbiAgICA8L2xhYmVsPlxyXG5cclxuICAgIEBpZihjb250cm9sPy52YWx1ZSkge1xyXG4gICAgPGRzLWljb25cclxuICAgICAgbWF0U3VmZml4XHJcbiAgICAgIGljb249XCJjbG9zZVwiXHJcbiAgICAgIGNsYXNzPVwiZmMtY29yYWwgZnMtMTAgbXgtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgIChjbGljayk9XCJjbGVhckRhdGVWYWx1ZSgkZXZlbnQpXCJcclxuICAgID48L2RzLWljb24+XHJcbiAgICB9XHJcblxyXG4gICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwic2ZpIHNmaS1jYWxlbmRhci1vIGZjLWJsYWNrIGZvbnQtMThcIiBtYXREYXRlcGlja2VyVG9nZ2xlSWNvbj48L2k+XHJcbiAgICA8L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuXHJcbiAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZS1yYW5nZS1waWNrZXI+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9kaXY+XHJcbjxhcHAtdmFsaWRhdGlvbi1lcnJvcnMgW2Vycm9yc109XCJjb250cm9sLmVycm9yc1wiPjwvYXBwLXZhbGlkYXRpb24tZXJyb3JzPlxyXG5cclxuXHJcbn0gQGVsc2UgaWYoaXNSZWFkT25seSAmJiBjb250cm9sLnZhbHVlKSB7XHJcbjxuZy1jb250YWluZXI+XHJcbiAgPGFwcC1pbmZvLWl0ZW1cclxuICAgIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCJcclxuICAgIHR5cGU9XCJkYXRlXCJcclxuICAgIFtpbnNpZGVUYWJsZV09XCJpbnNpZGVUYWJsZVwiXHJcbiAgICBbZGF0ZVR5cGVdPVwiY2FsZW5kYXJUeXBlXCJcclxuICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICBbdmFsdWVdPVwie1xyXG4gICAgICBzdGFydERhdGU6IGNvbnRyb2w/LnZhbHVlPy5zdGFydERhdGUsXHJcbiAgICAgIGVuZERhdGU6IGNvbnRyb2w/LnZhbHVlPy5lbmREYXRlXHJcbiAgICB9XCJcclxuICAgIFtoYXNMYWJlbF09XCIhIWxhYmVsXCJcclxuICA+XHJcbiAgPC9hcHAtaW5mby1pdGVtPlxyXG48L25nLWNvbnRhaW5lcj5cclxufVxyXG4iXX0=