ecabs-components 0.0.64 → 0.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.mjs +43 -19
- package/fesm2015/ecabs-components.mjs +43 -18
- package/fesm2015/ecabs-components.mjs.map +1 -1
- package/fesm2020/ecabs-components.mjs +42 -18
- package/fesm2020/ecabs-components.mjs.map +1 -1
- package/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.d.ts +6 -2
- package/package.json +1 -1
|
@@ -15,10 +15,11 @@ import * as i7 from "../base/directives/digits-only.directive";
|
|
|
15
15
|
import * as i8 from "../base/directives/number-border.directive";
|
|
16
16
|
import * as i9 from "../base/directives/date-mask.directive";
|
|
17
17
|
export class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
18
|
-
constructor(injector, decimalPipe) {
|
|
18
|
+
constructor(injector, decimalPipe, cd) {
|
|
19
19
|
super();
|
|
20
20
|
this.injector = injector;
|
|
21
21
|
this.decimalPipe = decimalPipe;
|
|
22
|
+
this.cd = cd;
|
|
22
23
|
this.touchUi = false;
|
|
23
24
|
this.hideSeconds = true;
|
|
24
25
|
this.cancleLabel = 'Cancel';
|
|
@@ -31,6 +32,8 @@ export class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
|
31
32
|
this.header = EcabsDateTimePickerHeaderComponent;
|
|
32
33
|
this.maxValueHours = 23;
|
|
33
34
|
this.maxValueMinutesSeconds = 59;
|
|
35
|
+
this.preventCallSetterPickerValue = false;
|
|
36
|
+
this.runTimeout = false;
|
|
34
37
|
this.onChange = () => { };
|
|
35
38
|
this.onTouch = () => { };
|
|
36
39
|
}
|
|
@@ -65,19 +68,40 @@ export class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
|
65
68
|
}
|
|
66
69
|
}
|
|
67
70
|
set value(val) {
|
|
68
|
-
if (val && this.val !== new Date(val)) {
|
|
69
|
-
this.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.
|
|
71
|
+
if (val && this.val?.getTime() !== new Date(val).getTime()) {
|
|
72
|
+
if (!this.preventCallSetterPickerValue) {
|
|
73
|
+
this.pickerValue = this.formatDateTime(val);
|
|
74
|
+
}
|
|
75
|
+
this.preventCallSetterPickerValue = false;
|
|
73
76
|
}
|
|
74
77
|
}
|
|
75
78
|
set pickerValue(val) {
|
|
76
79
|
if (val) {
|
|
77
80
|
const date = parse(val.replace('_', ''), this.hideSeconds ? `dd/MM/yyyy, HH:mm` : `dd/MM/yyyy, HH:mm:ss`, new Date());
|
|
78
81
|
if (isValid(date) && this._pickerValue !== val) {
|
|
82
|
+
if (this.minDate && date < this.minDate) {
|
|
83
|
+
this.setValues(this.minDate);
|
|
84
|
+
this._pickerValue = val;
|
|
85
|
+
this.preventCallSetterPickerValue = true;
|
|
86
|
+
this.value = this.minDate;
|
|
87
|
+
this.runTimeout = true;
|
|
88
|
+
this.refreshPickerValue(this.minDate);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (this.maxDate && date > this.maxDate) {
|
|
92
|
+
this.setValues(this.maxDate);
|
|
93
|
+
this._pickerValue = val;
|
|
94
|
+
this.preventCallSetterPickerValue = true;
|
|
95
|
+
this.value = this.maxDate;
|
|
96
|
+
this.runTimeout = true;
|
|
97
|
+
this.refreshPickerValue(this.maxDate);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this.runTimeout = false;
|
|
79
101
|
this._pickerValue = val;
|
|
102
|
+
this.preventCallSetterPickerValue = true;
|
|
80
103
|
this.value = date;
|
|
104
|
+
this.setValues(date);
|
|
81
105
|
}
|
|
82
106
|
}
|
|
83
107
|
}
|
|
@@ -108,19 +132,17 @@ export class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
|
108
132
|
onApply() {
|
|
109
133
|
if (this._date && this._seconds && this._minutes && this._hours) {
|
|
110
134
|
const date = setSeconds(setMinutes(setHours(new Date(this._date), +this._hours), +this._minutes), +this._seconds);
|
|
111
|
-
if (this.minDate && date < this.minDate) {
|
|
112
|
-
this.setValues(this.minDate);
|
|
113
|
-
this.value = this.minDate;
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
if (this.maxDate && date > this.maxDate) {
|
|
117
|
-
this.setValues(this.maxDate);
|
|
118
|
-
this.value = this.maxDate;
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
135
|
this.value = date;
|
|
122
136
|
}
|
|
123
137
|
}
|
|
138
|
+
refreshPickerValue(date) {
|
|
139
|
+
setTimeout(() => {
|
|
140
|
+
if (this.runTimeout) {
|
|
141
|
+
this._pickerValue = this.formatDateTime(date);
|
|
142
|
+
this.cd.detectChanges();
|
|
143
|
+
}
|
|
144
|
+
}, 3000);
|
|
145
|
+
}
|
|
124
146
|
formatDateTime(date) {
|
|
125
147
|
let result = '';
|
|
126
148
|
if (date && isValid(new Date(date))) {
|
|
@@ -134,13 +156,15 @@ export class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
|
134
156
|
return this.decimalPipe.transform(num, '2.0-0') ?? '00';
|
|
135
157
|
}
|
|
136
158
|
setValues(date) {
|
|
159
|
+
this.onChange(date);
|
|
160
|
+
this.onTouch(date);
|
|
137
161
|
this._date = date;
|
|
138
162
|
this.hours = date.getHours().toString();
|
|
139
163
|
this.minutes = date.getMinutes().toString();
|
|
140
164
|
this.seconds = date.getSeconds().toString();
|
|
141
165
|
}
|
|
142
166
|
}
|
|
143
|
-
EcabsDateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EcabsDateTimePickerComponent, deps: [{ token: i0.Injector }, { token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
167
|
+
EcabsDateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EcabsDateTimePickerComponent, deps: [{ token: i0.Injector }, { token: i1.DecimalPipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
144
168
|
EcabsDateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: EcabsDateTimePickerComponent, selector: "ecabs-date-time-picker", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", hideSeconds: "hideSeconds", cancleLabel: "cancleLabel", applyLabel: "applyLabel", selectDateLabel: "selectDateLabel" }, outputs: { onblur: "onblur" }, providers: [
|
|
145
169
|
{
|
|
146
170
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -159,7 +183,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
159
183
|
},
|
|
160
184
|
DecimalPipe,
|
|
161
185
|
], template: "<app-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__input--wrapper w-full\">\r\n <input\r\n class=\"fake-input\"\r\n [id]=\"_date\"\r\n [(ngModel)]=\"_date\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"picker\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <mat-datepicker #picker [calendarHeaderComponent]=\"header\" [touchUi]=\"touchUi\">\r\n <mat-datepicker-actions>\r\n <div class=\"actions\">\r\n <div class=\"time-inputs time--inputs\">\r\n <input\r\n class=\"form-field__input time\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [id]=\"hours\"\r\n [value]=\"_hours\"\r\n [maxValue]=\"maxValueHours\"\r\n [(ngModel)]=\"hours\"\r\n />\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"minutes\"\r\n [(ngModel)]=\"minutes\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n\r\n <ng-container *ngIf=\"!hideSeconds\">\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"seconds\"\r\n [(ngModel)]=\"seconds\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"grid-picker-actions\">\r\n <button type=\"button\" mat-stroked-button class=\"w-full\" color=\"primary\" matDatepickerCancel>\r\n {{ cancleLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n mat-button\r\n class=\"w-full ml-0\"\r\n color=\"primary\"\r\n matDatepickerApply\r\n (click)=\"onApply()\"\r\n >\r\n {{ applyLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n </mat-datepicker-actions>\r\n </mat-datepicker>\r\n <input\r\n class=\"form-field__input w-full date-input\"\r\n [id]=\"name\"\r\n [(ngModel)]=\"pickerValue\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n appMaskDate\r\n [isDateTimeMask]=\"true\"\r\n [considerSeconds]=\"!hideSeconds\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <button type=\"button\" mat-icon-button class=\"datepicker-toggle\" (click)=\"picker.open()\">\r\n <mat-icon>calendar_today</mat-icon>\r\n </button>\r\n </div>\r\n</app-element-wrapper>\r\n", styles: [".time--inputs:before,.time--inputs:after{position:absolute;content:\"\"}.datepicker-toggle{transform:translate(-1.25rem);left:-.125rem}.time{width:3.375rem}.fake-input{visibility:hidden;width:0;padding:0;margin:0}.date-input{margin:0rem -1.25rem 0rem .125rem}.time--inputs{position:relative;margin-top:2.4rem;margin-bottom:2.4rem}.time--inputs:before,.time--inputs:after{height:1px;right:0;left:0;background-color:var(--color-gray-300)}.time--inputs:before{top:-1.6rem}.time--inputs:after{bottom:-1.6rem}:host ::ng-deep .form-field{margin-right:-1.25rem;margin-left:-.125rem}.font-bold{font-weight:700}.actions{display:flex;flex-direction:column;width:100%!important;row-gap:1rem}.time-inputs{display:flex;gap:.5rem;justify-content:center;align-items:center}\n"] }]
|
|
162
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.DecimalPipe }]; }, propDecorators: { minDate: [{
|
|
186
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.DecimalPipe }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { minDate: [{
|
|
163
187
|
type: Input
|
|
164
188
|
}], maxDate: [{
|
|
165
189
|
type: Input
|
|
@@ -176,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
176
200
|
}], onblur: [{
|
|
177
201
|
type: Output
|
|
178
202
|
}] } });
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtZGF0ZS10aW1lLXBpY2tlci9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1kYXRlLXRpbWUtcGlja2VyL2VjYWJzLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBWSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFNBQVMsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLG9CQUFvQixNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7Ozs7OztBQWV4SSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsb0JBQW9CO0lBa0ZwRSxZQUE4QixRQUFrQixFQUFtQixXQUF3QjtRQUN6RixLQUFLLEVBQUUsQ0FBQztRQURvQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQW1CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBL0VsRixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsUUFBUSxD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QUFDLFdBQVcsQ0FBQyxTQUFTLENBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBRSxJQUFJLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBRU8sU0FBUyxDQUFFLElBQVU7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7eUhBbktVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDhRQVQ1QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsNEJBQTRCO1lBQ3pDLEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRCxXQUFXO0tBQ1osaURDbEJILHk4RkF1RkE7MkZEbkVhLDRCQUE0QjtrQkFieEMsU0FBUzsrQkFDRSx3QkFBd0IsYUFHdkI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyw4QkFBOEI7NEJBQ3pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELFdBQVc7cUJBQ1o7eUhBR1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JtYXQsIGlzVmFsaWQsIHBhcnNlLCBzZXRIb3Vycywgc2V0TWludXRlcywgc2V0U2Vjb25kcyB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IEVsZW1lbnRCYXNlQ29tcG9uZW50IGZyb20gJy4uL2Jhc2UvZWxlbWVudC1iYXNlJztcclxuaW1wb3J0IHsgRWNhYnNEYXRlVGltZVBpY2tlckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLWhlYWRlci9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLWhlYWRlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCgge1xyXG4gIHNlbGVjdG9yOiAnZWNhYnMtZGF0ZS10aW1lLXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VjYWJzLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWyAnLi9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJyBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IEVjYWJzRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIERlY2ltYWxQaXBlLFxyXG4gIF0sXHJcbn0gKVxyXG5leHBvcnQgY2xhc3MgRWNhYnNEYXRlVGltZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEVsZW1lbnRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIG1pbkRhdGU6IERhdGU7XHJcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZTtcclxuICBASW5wdXQoKSB0b3VjaFVpID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZVNlY29uZHMgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNhbmNsZUxhYmVsID0gJ0NhbmNlbCc7XHJcbiAgQElucHV0KCkgYXBwbHlMYWJlbCA9ICdBcHBseSc7XHJcbiAgQElucHV0KCkgc2VsZWN0RGF0ZUxhYmVsID0gJ1NlbGVjdCBkYXRlIGFuZCB0aW1lJztcclxuXHJcbiAgQE91dHB1dCgpIG9uYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBfaG91cnMgPSAnMTInO1xyXG4gIF9taW51dGVzID0gJzAwJztcclxuICBfc2Vjb25kcyA9ICcwMCc7XHJcbiAgX2RhdGU6IERhdGU7XHJcbiAgX3BpY2tlclZhbHVlOiBzdHJpbmc7XHJcbiAgdmFsOiBEYXRlO1xyXG4gIGhlYWRlciA9IEVjYWJzRGF0ZVRpbWVQaWNrZXJIZWFkZXJDb21wb25lbnQ7XHJcbiAgbWF4VmFsdWVIb3VycyA9IDIzO1xyXG4gIG1heFZhbHVlTWludXRlc1NlY29uZHMgPSA1OTtcclxuXHJcbiAgZ2V0IHZhbHVlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBpY2tlclZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGlja2VyVmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaG91cnMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9ob3VycztcclxuICB9XHJcblxyXG4gIGdldCBtaW51dGVzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWludXRlcztcclxuICB9XHJcblxyXG4gIGdldCBzZWNvbmRzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2Vjb25kcztcclxuICB9XHJcblxyXG4gIHNldCBob3VycyggdmFsdWU6IHN0cmluZyApIHtcclxuICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9ob3VycyAhPT0gdmFsdWUgKSB7XHJcbiAgICAgIHRoaXMuX2hvdXJzID0gdGhpcy5yb3VuZE51bWJlciggK3ZhbHVlICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgbWludXRlcyggdmFsdWU6IHN0cmluZyApIHtcclxuICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9taW51dGVzICE9PSB2YWx1ZSApIHtcclxuICAgICAgdGhpcy5fbWludXRlcyA9IHRoaXMucm91bmROdW1iZXIoICt2YWx1ZSApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IHNlY29uZHMoIHZhbHVlOiBzdHJpbmcgKSB7XHJcbiAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fc2Vjb25kcyAhPT0gdmFsdWUgKSB7XHJcbiAgICAgIHRoaXMuX3NlY29uZHMgPSB0aGlzLnJvdW5kTnVtYmVyKCArdmFsdWUgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSggdmFsICkge1xyXG4gICAgaWYgKCB2YWwgJiYgdGhpcy52YWwgIT09IG5ldyBEYXRlKCB2YWwgKSApIHtcclxuICAgICAgdGhpcy52YWwgPSBuZXcgRGF0ZSggdmFsICk7XHJcbiAgICAgIHRoaXMucGlja2VyVmFsdWUgPSB0aGlzLmZvcm1hdERhdGVUaW1lKCB2YWwgKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZSggdmFsICk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCggdmFsICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgcGlja2VyVmFsdWUoIHZhbDogc3RyaW5nICkge1xyXG4gICAgaWYgKCB2YWwgKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBwYXJzZShcclxuICAgICAgICB2YWwucmVwbGFjZSggJ18nLCAnJyApLFxyXG4gICAgICAgIHRoaXMuaGlkZVNlY29uZHMgPyBgZGQvTU0veXl5eSwgSEg6bW1gIDogYGRkL01NL3l5eXksIEhIOm1tOnNzYCxcclxuICAgICAgICBuZXcgRGF0ZSgpXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICggaXNWYWxpZCggZGF0ZSApICYmIHRoaXMuX3BpY2tlclZhbHVlICE9PSB2YWwgKSB7XHJcbiAgICAgICAgdGhpcy5fcGlja2VyVmFsdWUgPSB2YWw7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSByZWFkb25seSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldCggTmdDb250cm9sLCBudWxsICk7XHJcbiAgICBpZiAoIG5nQ29udHJvbCApIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG5cclxuICAgICAgc2V0VGltZW91dCggKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xEYXRlID0gISF0aGlzLmNvbnRyb2wudmFsdWUgPyBuZXcgRGF0ZSggdGhpcy5jb250cm9sLnZhbHVlICkgOiBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICBpZiAoIGNvbnRyb2xEYXRlICkge1xyXG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZXMoIGNvbnRyb2xEYXRlICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMCApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcclxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7IH07XHJcblxyXG4gIHdyaXRlVmFsdWUoIHZhbHVlOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKCBmbjogYW55ICk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoIGZuOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcblxyXG4gIGJsdXJDaGFuZ2UoIGU6IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMub25ibHVyLmVtaXQoIGUgKTtcclxuICB9XHJcblxyXG4gIG9uQXBwbHkoKTogdm9pZCB7XHJcbiAgICBpZiAoIHRoaXMuX2RhdGUgJiYgdGhpcy5fc2Vjb25kcyAmJiB0aGlzLl9taW51dGVzICYmIHRoaXMuX2hvdXJzICkge1xyXG4gICAgICBjb25zdCBkYXRlID0gc2V0U2Vjb25kcyggc2V0TWludXRlcyggc2V0SG91cnMoIG5ldyBEYXRlKCB0aGlzLl9kYXRlICksICt0aGlzLl9ob3VycyApLCArdGhpcy5fbWludXRlcyApLCArdGhpcy5fc2Vjb25kcyApO1xyXG5cclxuICAgICAgaWYgKCB0aGlzLm1pbkRhdGUgJiYgZGF0ZSA8IHRoaXMubWluRGF0ZSApIHtcclxuICAgICAgICB0aGlzLnNldFZhbHVlcyggdGhpcy5taW5EYXRlICk7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluRGF0ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIHRoaXMubWF4RGF0ZSAmJiBkYXRlID4gdGhpcy5tYXhEYXRlICkge1xyXG4gICAgICAgIHRoaXMuc2V0VmFsdWVzKCB0aGlzLm1heERhdGUgKTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXhEYXRlO1xyXG5cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmFsdWUgPSBkYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXREYXRlVGltZSggZGF0ZTogRGF0ZSApOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG5cclxuICAgIGlmICggZGF0ZSAmJiBpc1ZhbGlkKCBuZXcgRGF0ZSggZGF0ZSApICkgKSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuaGlkZVNlY29uZHNcclxuICAgICAgICA/IGZvcm1hdCggbmV3IERhdGUoIGRhdGUgKSwgYGRkL01NL3l5eXksIEhIOm1tYCApXHJcbiAgICAgICAgOiBmb3JtYXQoIG5ldyBEYXRlKCBkYXRlICksIGBkZC9NTS95eXl5LCBISDptbTpzc2AgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByb3VuZE51bWJlciggbnVtOiBudW1iZXIgKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oIG51bSwgJzIuMC0wJyApID8/ICcwMCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFZhbHVlcyggZGF0ZTogRGF0ZSApOiB2b2lkIHtcclxuICAgIHRoaXMuX2RhdGUgPSBkYXRlO1xyXG4gICAgdGhpcy5ob3VycyA9IGRhdGUuZ2V0SG91cnMoKS50b1N0cmluZygpO1xyXG4gICAgdGhpcy5taW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKTtcclxuICAgIHRoaXMuc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dC0td3JhcHBlciB3LWZ1bGxcIj5cclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cImZha2UtaW5wdXRcIlxyXG4gICAgICBbaWRdPVwiX2RhdGVcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cIl9kYXRlXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcclxuICAgICAgW21pbl09XCJtaW5EYXRlXCJcclxuICAgICAgW21heF09XCJtYXhEYXRlXCJcclxuICAgICAgKGJsdXIpPVwib25Ub3VjaCgpXCJcclxuICAgIC8+XHJcbiAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlciBbY2FsZW5kYXJIZWFkZXJDb21wb25lbnRdPVwiaGVhZGVyXCIgW3RvdWNoVWldPVwidG91Y2hVaVwiPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXItYWN0aW9ucz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtaW5wdXRzIHRpbWUtLWlucHV0c1wiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0IHRpbWVcIlxyXG4gICAgICAgICAgICAgIGFwcERpZ2l0c09ubHlcclxuICAgICAgICAgICAgICBhcHBOdW1iZXJCb3JkZXJcclxuICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaG91cnNcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJfaG91cnNcIlxyXG4gICAgICAgICAgICAgIFttYXhWYWx1ZV09XCJtYXhWYWx1ZUhvdXJzXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhvdXJzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0IHRpbWVcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJtaW51dGVzXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1pbnV0ZXNcIlxyXG4gICAgICAgICAgICAgIGFwcERpZ2l0c09ubHlcclxuICAgICAgICAgICAgICBhcHBOdW1iZXJCb3JkZXJcclxuICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbbWF4VmFsdWVdPVwibWF4VmFsdWVNaW51dGVzU2Vjb25kc1wiXHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGVTZWNvbmRzXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dCB0aW1lXCJcclxuICAgICAgICAgICAgICAgIFtpZF09XCJzZWNvbmRzXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kc1wiXHJcbiAgICAgICAgICAgICAgICBhcHBEaWdpdHNPbmx5XHJcbiAgICAgICAgICAgICAgICBhcHBOdW1iZXJCb3JkZXJcclxuICAgICAgICAgICAgICAgIFtkaWdpdHNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW21heFZhbHVlXT1cIm1heFZhbHVlTWludXRlc1NlY29uZHNcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtcGlja2VyLWFjdGlvbnNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidy1mdWxsXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0RGF0ZXBpY2tlckNhbmNlbD5cclxuICAgICAgICAgICAgICB7eyBjYW5jbGVMYWJlbCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbWwtMFwiXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICBtYXREYXRlcGlja2VyQXBwbHlcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25BcHBseSgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBhcHBseUxhYmVsIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LWRhdGVwaWNrZXItYWN0aW9ucz5cclxuICAgIDwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dCB3LWZ1bGwgZGF0ZS1pbnB1dFwiXHJcbiAgICAgIFtpZF09XCJuYW1lXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJwaWNrZXJWYWx1ZVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIGFwcE1hc2tEYXRlXHJcbiAgICAgIFtpc0RhdGVUaW1lTWFza109XCJ0cnVlXCJcclxuICAgICAgW2NvbnNpZGVyU2Vjb25kc109XCIhaGlkZVNlY29uZHNcIlxyXG4gICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxyXG4gICAgLz5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImRhdGVwaWNrZXItdG9nZ2xlXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIj5cclxuICAgICAgPG1hdC1pY29uPmNhbGVuZGFyX3RvZGF5PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2FwcC1lbGVtZW50LXdyYXBwZXI+XHJcbiJdfQ==
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtZGF0ZS10aW1lLXBpY2tlci9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1kYXRlLXRpbWUtcGlja2VyL2VjYWJzLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBb0MsU0FBUyxFQUFFLFlBQVksRUFBWSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFNBQVMsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLG9CQUFvQixNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7Ozs7OztBQWV4SSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsb0JBQW9CO0lBNkdwRSxZQUE4QixRQUFrQixFQUFtQixXQUF3QixFQUFVLEVBQXFCO1FBQ3hILEtBQUssRUFBRSxDQUFDO1FBRG9CLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBbUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTFHakgsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixnQkFBVyxH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LENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7eUhBMUxVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDhRQVQ1QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsNEJBQTRCO1lBQ3pDLEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRCxXQUFXO0tBQ1osaURDbEJILHk4RkF1RkE7MkZEbkVhLDRCQUE0QjtrQkFieEMsU0FBUzsrQkFDRSx3QkFBd0IsYUFHdkI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyw4QkFBOEI7NEJBQ3pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELFdBQVc7cUJBQ1o7eUpBR1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ybWF0LCBpc1ZhbGlkLCBwYXJzZSwgc2V0SG91cnMsIHNldE1pbnV0ZXMsIHNldFNlY29uZHMgfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCBFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XHJcbmltcG9ydCB7IEVjYWJzRGF0ZVRpbWVQaWNrZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZWNhYnMtZGF0ZS10aW1lLXBpY2tlci1oZWFkZXIvZWNhYnMtZGF0ZS10aW1lLXBpY2tlci1oZWFkZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoIHtcclxuICBzZWxlY3RvcjogJ2VjYWJzLWRhdGUtdGltZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsgJy4vZWNhYnMtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcycgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBFY2Fic0RhdGVUaW1lUGlja2VyQ29tcG9uZW50LFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBEZWNpbWFsUGlwZSxcclxuICBdLFxyXG59IClcclxuZXhwb3J0IGNsYXNzIEVjYWJzRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBFbGVtZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlO1xyXG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGU7XHJcbiAgQElucHV0KCkgdG91Y2hVaSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVTZWNvbmRzID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjYW5jbGVMYWJlbCA9ICdDYW5jZWwnO1xyXG4gIEBJbnB1dCgpIGFwcGx5TGFiZWwgPSAnQXBwbHknO1xyXG4gIEBJbnB1dCgpIHNlbGVjdERhdGVMYWJlbCA9ICdTZWxlY3QgZGF0ZSBhbmQgdGltZSc7XHJcblxyXG4gIEBPdXRwdXQoKSBvbmJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgX2hvdXJzID0gJzEyJztcclxuICBfbWludXRlcyA9ICcwMCc7XHJcbiAgX3NlY29uZHMgPSAnMDAnO1xyXG4gIF9kYXRlOiBEYXRlO1xyXG4gIF9waWNrZXJWYWx1ZTogc3RyaW5nO1xyXG4gIHZhbDogRGF0ZTtcclxuICBoZWFkZXIgPSBFY2Fic0RhdGVUaW1lUGlja2VySGVhZGVyQ29tcG9uZW50O1xyXG4gIG1heFZhbHVlSG91cnMgPSAyMztcclxuICBtYXhWYWx1ZU1pbnV0ZXNTZWNvbmRzID0gNTk7XHJcbiAgcHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSA9IGZhbHNlO1xyXG4gIHJ1blRpbWVvdXQgPSBmYWxzZTtcclxuXHJcbiAgZ2V0IHZhbHVlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBpY2tlclZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGlja2VyVmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaG91cnMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9ob3VycztcclxuICB9XHJcblxyXG4gIGdldCBtaW51dGVzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWludXRlcztcclxuICB9XHJcblxyXG4gIGdldCBzZWNvbmRzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2Vjb25kcztcclxuICB9XHJcblxyXG4gIHNldCBob3VycyggdmFsdWU6IHN0cmluZyApIHtcclxuICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9ob3VycyAhPT0gdmFsdWUgKSB7XHJcbiAgICAgIHRoaXMuX2hvdXJzID0gdGhpcy5yb3VuZE51bWJlciggK3ZhbHVlICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgbWludXRlcyggdmFsdWU6IHN0cmluZyApIHtcclxuICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9taW51dGVzICE9PSB2YWx1ZSApIHtcclxuICAgICAgdGhpcy5fbWludXRlcyA9IHRoaXMucm91bmROdW1iZXIoICt2YWx1ZSApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IHNlY29uZHMoIHZhbHVlOiBzdHJpbmcgKSB7XHJcbiAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fc2Vjb25kcyAhPT0gdmFsdWUgKSB7XHJcbiAgICAgIHRoaXMuX3NlY29uZHMgPSB0aGlzLnJvdW5kTnVtYmVyKCArdmFsdWUgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWwpIHtcclxuICAgIGlmICh2YWwgJiYgdGhpcy52YWw/LmdldFRpbWUoKSAhPT0gbmV3IERhdGUodmFsKS5nZXRUaW1lKCkpIHtcclxuICAgICAgaWYgKCF0aGlzLnByZXZlbnRDYWxsU2V0dGVyUGlja2VyVmFsdWUpIHtcclxuICAgICAgICB0aGlzLnBpY2tlclZhbHVlID0gdGhpcy5mb3JtYXREYXRlVGltZSh2YWwpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IHBpY2tlclZhbHVlKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBwYXJzZShcclxuICAgICAgICB2YWwucmVwbGFjZSgnXycsICcnKSxcclxuICAgICAgICB0aGlzLmhpZGVTZWNvbmRzID8gYGRkL01NL3l5eXksIEhIOm1tYCA6IGBkZC9NTS95eXl5LCBISDptbTpzc2AsXHJcbiAgICAgICAgbmV3IERhdGUoKSxcclxuICAgICAgKTtcclxuICAgICAgaWYgKGlzVmFsaWQoZGF0ZSkgJiYgdGhpcy5fcGlja2VyVmFsdWUgIT09IHZhbCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgZGF0ZSA8IHRoaXMubWluRGF0ZSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZXModGhpcy5taW5EYXRlKTtcclxuICAgICAgICAgIHRoaXMuX3BpY2tlclZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgdGhpcy5wcmV2ZW50Q2FsbFNldHRlclBpY2tlclZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbkRhdGU7XHJcbiAgICAgICAgICB0aGlzLnJ1blRpbWVvdXQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoUGlja2VyVmFsdWUodGhpcy5taW5EYXRlKTtcclxuXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5tYXhEYXRlICYmIGRhdGUgPiB0aGlzLm1heERhdGUpIHtcclxuICAgICAgICAgIHRoaXMuc2V0VmFsdWVzKHRoaXMubWF4RGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLl9waWNrZXJWYWx1ZSA9IHZhbDtcclxuICAgICAgICAgIHRoaXMucHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXhEYXRlO1xyXG4gICAgICAgICAgdGhpcy5ydW5UaW1lb3V0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFBpY2tlclZhbHVlKHRoaXMubWF4RGF0ZSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5ydW5UaW1lb3V0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fcGlja2VyVmFsdWUgPSB2YWw7XHJcbiAgICAgICAgdGhpcy5wcmV2ZW50Q2FsbFNldHRlclBpY2tlclZhbHVlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZTtcclxuICAgICAgICB0aGlzLnNldFZhbHVlcyhkYXRlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIHJlYWRvbmx5IGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCBOZ0NvbnRyb2wsIG51bGwgKTtcclxuICAgIGlmICggbmdDb250cm9sICkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbERhdGUgPSAhIXRoaXMuY29udHJvbC52YWx1ZSA/IG5ldyBEYXRlKCB0aGlzLmNvbnRyb2wudmFsdWUgKSA6IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgIGlmICggY29udHJvbERhdGUgKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFZhbHVlcyggY29udHJvbERhdGUgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9O1xyXG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHsgfTtcclxuXHJcbiAgd3JpdGVWYWx1ZSggdmFsdWU6IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoIGZuOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZCggZm46IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgYmx1ckNoYW5nZSggZTogYW55ICk6IHZvaWQge1xyXG4gICAgdGhpcy5vbmJsdXIuZW1pdCggZSApO1xyXG4gIH1cclxuXHJcbiAgb25BcHBseSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9kYXRlICYmIHRoaXMuX3NlY29uZHMgJiYgdGhpcy5fbWludXRlcyAmJiB0aGlzLl9ob3Vycykge1xyXG4gICAgICBjb25zdCBkYXRlID0gc2V0U2Vjb25kcyhzZXRNaW51dGVzKHNldEhvdXJzKG5ldyBEYXRlKHRoaXMuX2RhdGUpLCArdGhpcy5faG91cnMpLCArdGhpcy5fbWludXRlcyksICt0aGlzLl9zZWNvbmRzKTtcclxuICAgICAgdGhpcy52YWx1ZSA9IGRhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoUGlja2VyVmFsdWUoZGF0ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnJ1blRpbWVvdXQpIHtcclxuICAgICAgICB0aGlzLl9waWNrZXJWYWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZVRpbWUoZGF0ZSk7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDMwMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXREYXRlVGltZSggZGF0ZTogRGF0ZSApOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG5cclxuICAgIGlmICggZGF0ZSAmJiBpc1ZhbGlkKCBuZXcgRGF0ZSggZGF0ZSApICkgKSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuaGlkZVNlY29uZHNcclxuICAgICAgICA/IGZvcm1hdCggbmV3IERhdGUoIGRhdGUgKSwgYGRkL01NL3l5eXksIEhIOm1tYCApXHJcbiAgICAgICAgOiBmb3JtYXQoIG5ldyBEYXRlKCBkYXRlICksIGBkZC9NTS95eXl5LCBISDptbTpzc2AgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByb3VuZE51bWJlciggbnVtOiBudW1iZXIgKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oIG51bSwgJzIuMC0wJyApID8/ICcwMCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFZhbHVlcyggZGF0ZTogRGF0ZSApOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UoZGF0ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2goZGF0ZSk7XHJcbiAgICB0aGlzLl9kYXRlID0gZGF0ZTtcclxuICAgIHRoaXMuaG91cnMgPSBkYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKTtcclxuICAgIHRoaXMubWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLnNlY29uZHMgPSBkYXRlLmdldFNlY29uZHMoKS50b1N0cmluZygpO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQtLXdyYXBwZXIgdy1mdWxsXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgY2xhc3M9XCJmYWtlLWlucHV0XCJcclxuICAgICAgW2lkXT1cIl9kYXRlXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJfZGF0ZVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiXHJcbiAgICAgIFttaW5dPVwibWluRGF0ZVwiXHJcbiAgICAgIFttYXhdPVwibWF4RGF0ZVwiXHJcbiAgICAgIChibHVyKT1cIm9uVG91Y2goKVwiXHJcbiAgICAvPlxyXG4gICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXIgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImhlYWRlclwiIFt0b3VjaFVpXT1cInRvdWNoVWlcIj5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyLWFjdGlvbnM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWlucHV0cyB0aW1lLS1pbnB1dHNcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dCB0aW1lXCJcclxuICAgICAgICAgICAgICBhcHBEaWdpdHNPbmx5XHJcbiAgICAgICAgICAgICAgYXBwTnVtYmVyQm9yZGVyXHJcbiAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2lkXT1cImhvdXJzXCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwiX2hvdXJzXCJcclxuICAgICAgICAgICAgICBbbWF4VmFsdWVdPVwibWF4VmFsdWVIb3Vyc1wiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJob3Vyc1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+Ojwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dCB0aW1lXCJcclxuICAgICAgICAgICAgICBbaWRdPVwibWludXRlc1wiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtaW51dGVzXCJcclxuICAgICAgICAgICAgICBhcHBEaWdpdHNPbmx5XHJcbiAgICAgICAgICAgICAgYXBwTnVtYmVyQm9yZGVyXHJcbiAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW21heFZhbHVlXT1cIm1heFZhbHVlTWludXRlc1NlY29uZHNcIlxyXG4gICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlU2Vjb25kc1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdGltZVwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwic2Vjb25kc1wiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZHNcIlxyXG4gICAgICAgICAgICAgICAgYXBwRGlnaXRzT25seVxyXG4gICAgICAgICAgICAgICAgYXBwTnVtYmVyQm9yZGVyXHJcbiAgICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFttYXhWYWx1ZV09XCJtYXhWYWx1ZU1pbnV0ZXNTZWNvbmRzXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXBpY2tlci1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInctZnVsbFwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdERhdGVwaWNrZXJDYW5jZWw+XHJcbiAgICAgICAgICAgICAge3sgY2FuY2xlTGFiZWwgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIG1sLTBcIlxyXG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgbWF0RGF0ZXBpY2tlckFwcGx5XHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHkoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgYXBwbHlMYWJlbCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XHJcbiAgICA8L21hdC1kYXRlcGlja2VyPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdy1mdWxsIGRhdGUtaW5wdXRcIlxyXG4gICAgICBbaWRdPVwibmFtZVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGlja2VyVmFsdWVcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBhcHBNYXNrRGF0ZVxyXG4gICAgICBbaXNEYXRlVGltZU1hc2tdPVwidHJ1ZVwiXHJcbiAgICAgIFtjb25zaWRlclNlY29uZHNdPVwiIWhpZGVTZWNvbmRzXCJcclxuICAgICAgKGJsdXIpPVwib25Ub3VjaCgpXCJcclxuICAgIC8+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJkYXRlcGlja2VyLXRvZ2dsZVwiIChjbGljayk9XCJwaWNrZXIub3BlbigpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5jYWxlbmRhcl90b2RheTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9hcHAtZWxlbWVudC13cmFwcGVyPlxyXG4iXX0=
|
|
@@ -1638,10 +1638,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
1638
1638
|
}] } });
|
|
1639
1639
|
|
|
1640
1640
|
class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
1641
|
-
constructor(injector, decimalPipe) {
|
|
1641
|
+
constructor(injector, decimalPipe, cd) {
|
|
1642
1642
|
super();
|
|
1643
1643
|
this.injector = injector;
|
|
1644
1644
|
this.decimalPipe = decimalPipe;
|
|
1645
|
+
this.cd = cd;
|
|
1645
1646
|
this.touchUi = false;
|
|
1646
1647
|
this.hideSeconds = true;
|
|
1647
1648
|
this.cancleLabel = 'Cancel';
|
|
@@ -1654,6 +1655,8 @@ class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
|
1654
1655
|
this.header = EcabsDateTimePickerHeaderComponent;
|
|
1655
1656
|
this.maxValueHours = 23;
|
|
1656
1657
|
this.maxValueMinutesSeconds = 59;
|
|
1658
|
+
this.preventCallSetterPickerValue = false;
|
|
1659
|
+
this.runTimeout = false;
|
|
1657
1660
|
this.onChange = () => { };
|
|
1658
1661
|
this.onTouch = () => { };
|
|
1659
1662
|
}
|
|
@@ -1688,19 +1691,41 @@ class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
|
1688
1691
|
}
|
|
1689
1692
|
}
|
|
1690
1693
|
set value(val) {
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1694
|
+
var _a;
|
|
1695
|
+
if (val && ((_a = this.val) === null || _a === void 0 ? void 0 : _a.getTime()) !== new Date(val).getTime()) {
|
|
1696
|
+
if (!this.preventCallSetterPickerValue) {
|
|
1697
|
+
this.pickerValue = this.formatDateTime(val);
|
|
1698
|
+
}
|
|
1699
|
+
this.preventCallSetterPickerValue = false;
|
|
1696
1700
|
}
|
|
1697
1701
|
}
|
|
1698
1702
|
set pickerValue(val) {
|
|
1699
1703
|
if (val) {
|
|
1700
1704
|
const date = parse(val.replace('_', ''), this.hideSeconds ? `dd/MM/yyyy, HH:mm` : `dd/MM/yyyy, HH:mm:ss`, new Date());
|
|
1701
1705
|
if (isValid(date) && this._pickerValue !== val) {
|
|
1706
|
+
if (this.minDate && date < this.minDate) {
|
|
1707
|
+
this.setValues(this.minDate);
|
|
1708
|
+
this._pickerValue = val;
|
|
1709
|
+
this.preventCallSetterPickerValue = true;
|
|
1710
|
+
this.value = this.minDate;
|
|
1711
|
+
this.runTimeout = true;
|
|
1712
|
+
this.refreshPickerValue(this.minDate);
|
|
1713
|
+
return;
|
|
1714
|
+
}
|
|
1715
|
+
if (this.maxDate && date > this.maxDate) {
|
|
1716
|
+
this.setValues(this.maxDate);
|
|
1717
|
+
this._pickerValue = val;
|
|
1718
|
+
this.preventCallSetterPickerValue = true;
|
|
1719
|
+
this.value = this.maxDate;
|
|
1720
|
+
this.runTimeout = true;
|
|
1721
|
+
this.refreshPickerValue(this.maxDate);
|
|
1722
|
+
return;
|
|
1723
|
+
}
|
|
1724
|
+
this.runTimeout = false;
|
|
1702
1725
|
this._pickerValue = val;
|
|
1726
|
+
this.preventCallSetterPickerValue = true;
|
|
1703
1727
|
this.value = date;
|
|
1728
|
+
this.setValues(date);
|
|
1704
1729
|
}
|
|
1705
1730
|
}
|
|
1706
1731
|
}
|
|
@@ -1731,19 +1756,17 @@ class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
|
1731
1756
|
onApply() {
|
|
1732
1757
|
if (this._date && this._seconds && this._minutes && this._hours) {
|
|
1733
1758
|
const date = setSeconds(setMinutes(setHours(new Date(this._date), +this._hours), +this._minutes), +this._seconds);
|
|
1734
|
-
if (this.minDate && date < this.minDate) {
|
|
1735
|
-
this.setValues(this.minDate);
|
|
1736
|
-
this.value = this.minDate;
|
|
1737
|
-
return;
|
|
1738
|
-
}
|
|
1739
|
-
if (this.maxDate && date > this.maxDate) {
|
|
1740
|
-
this.setValues(this.maxDate);
|
|
1741
|
-
this.value = this.maxDate;
|
|
1742
|
-
return;
|
|
1743
|
-
}
|
|
1744
1759
|
this.value = date;
|
|
1745
1760
|
}
|
|
1746
1761
|
}
|
|
1762
|
+
refreshPickerValue(date) {
|
|
1763
|
+
setTimeout(() => {
|
|
1764
|
+
if (this.runTimeout) {
|
|
1765
|
+
this._pickerValue = this.formatDateTime(date);
|
|
1766
|
+
this.cd.detectChanges();
|
|
1767
|
+
}
|
|
1768
|
+
}, 3000);
|
|
1769
|
+
}
|
|
1747
1770
|
formatDateTime(date) {
|
|
1748
1771
|
let result = '';
|
|
1749
1772
|
if (date && isValid(new Date(date))) {
|
|
@@ -1758,13 +1781,15 @@ class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
|
1758
1781
|
return (_a = this.decimalPipe.transform(num, '2.0-0')) !== null && _a !== void 0 ? _a : '00';
|
|
1759
1782
|
}
|
|
1760
1783
|
setValues(date) {
|
|
1784
|
+
this.onChange(date);
|
|
1785
|
+
this.onTouch(date);
|
|
1761
1786
|
this._date = date;
|
|
1762
1787
|
this.hours = date.getHours().toString();
|
|
1763
1788
|
this.minutes = date.getMinutes().toString();
|
|
1764
1789
|
this.seconds = date.getSeconds().toString();
|
|
1765
1790
|
}
|
|
1766
1791
|
}
|
|
1767
|
-
EcabsDateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EcabsDateTimePickerComponent, deps: [{ token: i0.Injector }, { token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
1792
|
+
EcabsDateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EcabsDateTimePickerComponent, deps: [{ token: i0.Injector }, { token: i1.DecimalPipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1768
1793
|
EcabsDateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: EcabsDateTimePickerComponent, selector: "ecabs-date-time-picker", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", hideSeconds: "hideSeconds", cancleLabel: "cancleLabel", applyLabel: "applyLabel", selectDateLabel: "selectDateLabel" }, outputs: { onblur: "onblur" }, providers: [
|
|
1769
1794
|
{
|
|
1770
1795
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -1783,7 +1808,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
1783
1808
|
},
|
|
1784
1809
|
DecimalPipe,
|
|
1785
1810
|
], template: "<app-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__input--wrapper w-full\">\r\n <input\r\n class=\"fake-input\"\r\n [id]=\"_date\"\r\n [(ngModel)]=\"_date\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"picker\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <mat-datepicker #picker [calendarHeaderComponent]=\"header\" [touchUi]=\"touchUi\">\r\n <mat-datepicker-actions>\r\n <div class=\"actions\">\r\n <div class=\"time-inputs time--inputs\">\r\n <input\r\n class=\"form-field__input time\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [id]=\"hours\"\r\n [value]=\"_hours\"\r\n [maxValue]=\"maxValueHours\"\r\n [(ngModel)]=\"hours\"\r\n />\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"minutes\"\r\n [(ngModel)]=\"minutes\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n\r\n <ng-container *ngIf=\"!hideSeconds\">\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"seconds\"\r\n [(ngModel)]=\"seconds\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"grid-picker-actions\">\r\n <button type=\"button\" mat-stroked-button class=\"w-full\" color=\"primary\" matDatepickerCancel>\r\n {{ cancleLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n mat-button\r\n class=\"w-full ml-0\"\r\n color=\"primary\"\r\n matDatepickerApply\r\n (click)=\"onApply()\"\r\n >\r\n {{ applyLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n </mat-datepicker-actions>\r\n </mat-datepicker>\r\n <input\r\n class=\"form-field__input w-full date-input\"\r\n [id]=\"name\"\r\n [(ngModel)]=\"pickerValue\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n appMaskDate\r\n [isDateTimeMask]=\"true\"\r\n [considerSeconds]=\"!hideSeconds\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <button type=\"button\" mat-icon-button class=\"datepicker-toggle\" (click)=\"picker.open()\">\r\n <mat-icon>calendar_today</mat-icon>\r\n </button>\r\n </div>\r\n</app-element-wrapper>\r\n", styles: [".time--inputs:before,.time--inputs:after{position:absolute;content:\"\"}.datepicker-toggle{transform:translate(-1.25rem);left:-.125rem}.time{width:3.375rem}.fake-input{visibility:hidden;width:0;padding:0;margin:0}.date-input{margin:0rem -1.25rem 0rem .125rem}.time--inputs{position:relative;margin-top:2.4rem;margin-bottom:2.4rem}.time--inputs:before,.time--inputs:after{height:1px;right:0;left:0;background-color:var(--color-gray-300)}.time--inputs:before{top:-1.6rem}.time--inputs:after{bottom:-1.6rem}:host ::ng-deep .form-field{margin-right:-1.25rem;margin-left:-.125rem}.font-bold{font-weight:700}.actions{display:flex;flex-direction:column;width:100%!important;row-gap:1rem}.time-inputs{display:flex;gap:.5rem;justify-content:center;align-items:center}\n"] }]
|
|
1786
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.DecimalPipe }]; }, propDecorators: { minDate: [{
|
|
1811
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.DecimalPipe }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { minDate: [{
|
|
1787
1812
|
type: Input
|
|
1788
1813
|
}], maxDate: [{
|
|
1789
1814
|
type: Input
|