@onemrvapublic/design-system 17.0.50 → 17.0.52
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.
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Validators, } from '@angular/forms';
|
|
1
2
|
import { Directive, EventEmitter, Input, Optional, HostBinding, Self, Output, HostListener, } from '@angular/core';
|
|
2
3
|
import { MatFormFieldControl, } from '@angular/material/form-field';
|
|
3
4
|
import { twoDigits, convertHoursForMode, isAllowed, isDateInRange, isTimeInRange, } from './util';
|
|
@@ -96,6 +97,9 @@ export class MatTimepickerDirective {
|
|
|
96
97
|
describedBy = '';
|
|
97
98
|
errorStateMatcher;
|
|
98
99
|
get required() {
|
|
100
|
+
if (this.ngControl?.control) {
|
|
101
|
+
return this.ngControl.control.hasValidator(Validators.required);
|
|
102
|
+
}
|
|
99
103
|
return this._required;
|
|
100
104
|
}
|
|
101
105
|
set required(req) {
|
|
@@ -132,7 +136,7 @@ export class MatTimepickerDirective {
|
|
|
132
136
|
// tslint:disable-next-line:variable-name
|
|
133
137
|
_isPm = false;
|
|
134
138
|
// tslint:disable-next-line:variable-name
|
|
135
|
-
_value;
|
|
139
|
+
_value = null;
|
|
136
140
|
// tslint:disable-next-line:variable-name
|
|
137
141
|
_formattedValueString = '';
|
|
138
142
|
// tslint:disable-next-line:variable-name
|
|
@@ -145,7 +149,7 @@ export class MatTimepickerDirective {
|
|
|
145
149
|
if (!value) {
|
|
146
150
|
this._formattedValueString = '';
|
|
147
151
|
this.setInputElementValue(value);
|
|
148
|
-
this.currentValue = value;
|
|
152
|
+
this.currentValue = value ?? new Date();
|
|
149
153
|
return;
|
|
150
154
|
}
|
|
151
155
|
const { hour, isPm } = convertHoursForMode(value.getHours());
|
|
@@ -181,7 +185,8 @@ export class MatTimepickerDirective {
|
|
|
181
185
|
let value = this.elRef.nativeElement.value;
|
|
182
186
|
const length = value.length;
|
|
183
187
|
if (length === 0) {
|
|
184
|
-
|
|
188
|
+
this.writeValue(null, true);
|
|
189
|
+
this._value = null;
|
|
185
190
|
this._skipValueChangeEmission = true;
|
|
186
191
|
Promise.resolve().then(() => (this._skipValueChangeEmission = false));
|
|
187
192
|
if (this.onChangeFn) {
|
|
@@ -392,7 +397,7 @@ export class MatTimepickerDirective {
|
|
|
392
397
|
for (let h = 0; h < 24; h++) {
|
|
393
398
|
for (let m = 0; m < 60; m++) {
|
|
394
399
|
const hourMap = a24hm[h] || {};
|
|
395
|
-
if (isStrictMode) {
|
|
400
|
+
if (isStrictMode && this.value) {
|
|
396
401
|
const currentDate = new Date(this.value.getTime());
|
|
397
402
|
currentDate.setHours(h);
|
|
398
403
|
currentDate.setMinutes(m);
|
|
@@ -441,7 +446,10 @@ export class MatTimepickerDirective {
|
|
|
441
446
|
value.setSeconds(0);
|
|
442
447
|
value.setMilliseconds(0);
|
|
443
448
|
}
|
|
444
|
-
if (+this.value
|
|
449
|
+
if (this.value && +this.value === +(value ?? 0)) {
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
445
453
|
this.value = value;
|
|
446
454
|
}
|
|
447
455
|
}
|
|
@@ -549,4 +557,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
|
|
|
549
557
|
type: HostListener,
|
|
550
558
|
args: ['focusout']
|
|
551
559
|
}] } });
|
|
552
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL3RpbWVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFLTCxRQUFRLEVBR1IsV0FBVyxFQUNYLElBQUksRUFDSixNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxtQkFBbUIsR0FFcEIsTUFBTSw4QkFBOEIsQ0FBQztBQUV0QyxPQUFPLEVBQ0wsU0FBUyxFQUNULG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsR0FDZCxNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQTJCOUQsTUFBTSxPQUFPLHNCQUFzQjtJQTBWSjtJQUNuQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBRUU7SUFFVTtJQUVBO0lBRUE7SUEvVnRCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWxCLDZEQUE2RDtJQUM3RCx5Q0FBeUM7SUFDaEMsU0FBUyxDQUFVO0lBQ3BCLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFFakQseURBQXlEO0lBQ3pELElBQ0ksYUFBYSxDQUFDLFVBQXlDO1FBQ3pELElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7WUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsbUJBQW1CLEdB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Qjs7MEJBMlZJLFFBQVE7OzBCQUFJLElBQUk7OzBCQVNoQixRQUFROzswQkFFUixRQUFROzswQkFFUixRQUFRO3lFQXRWUCxhQUFhO3NCQURoQixLQUFLO2dCQW1DRixRQUFRO3NCQURYLEtBQUs7Z0JBb0JPLEVBQUU7c0JBQWQsS0FBSztnQkFTTyxRQUFRO3NCQUFwQixLQUFLO2dCQWM2QixnQkFBZ0I7c0JBQWxELFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUdTLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUUzQixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRU8sUUFBUTtzQkFBcEIsS0FBSztnQkFXTyxXQUFXO3NCQUF2QixLQUFLO2dCQWtCRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFNRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQVlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBaURJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFZ0IsWUFBWTtzQkFBbEMsWUFBWTt1QkFBQyxPQUFPO2dCQTBFZ0IsY0FBYztzQkFBbEQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0RBLFlBQVk7c0JBQTlDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlWLFlBQVk7c0JBQWxDLFlBQVk7dUJBQUMsT0FBTztnQkFJSyxlQUFlO3NCQUF4QyxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdGb3JtLFxuICBOZ0NvbnRyb2wsXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgRm9ybUNvbnRyb2wsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgT25Jbml0LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBFbGVtZW50UmVmLFxuICBPbkNoYW5nZXMsXG4gIFJlbmRlcmVyMixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE5nWm9uZSxcbiAgSG9zdEJpbmRpbmcsXG4gIFNlbGYsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gIE1hdEZvcm1GaWVsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBJQWxsb3dlZDI0SG91ck1hcCB9IGZyb20gJy4vaW50ZXJmYWNlcy1hbmQtdHlwZXMnO1xuaW1wb3J0IHtcbiAgdHdvRGlnaXRzLFxuICBjb252ZXJ0SG91cnNGb3JNb2RlLFxuICBpc0FsbG93ZWQsXG4gIGlzRGF0ZUluUmFuZ2UsXG4gIGlzVGltZUluUmFuZ2UsXG59IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgT25lbXJ2YU1hdFRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL29uZW1ydmEtbWF0LXRpbWVwaWNrZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbbWF0VGltZXBpY2tlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNYXRUaW1lcGlja2VyRGlyZWN0aXZlIH0sXG4gIF0sXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6b2JqZWN0LWxpdGVyYWwta2V5LXF1b3Rlc1xuICAgIGNsYXNzOiAnbWF0LWlucHV0LWVsZW1lbnQgbWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbCcsXG4gICAgJ1tjbGFzcy5tYXQtaW5wdXQtc2VydmVyXSc6ICdfaXNTZXJ2ZXInLFxuICAgIC8vIE5hdGl2ZSBpbnB1dCBwcm9wZXJ0aWVzIHRoYXQgYXJlIG92ZXJ3cml0dGVuIGJ5IEFuZ3VsYXIgaW5wdXRzIG5lZWQgdG8gYmUgc3luY2VkIHdpdGhcbiAgICAvLyB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuIE90aGVyd2lzZSBwcm9wZXJ0eSBiaW5kaW5ncyBmb3IgdGhvc2UgZG9uJ3Qgd29yay5cbiAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAnW2F0dHIucGxhY2Vob2xkZXJdJzogJ3BsYWNlaG9sZGVyJyxcbiAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJ1tyZXF1aXJlZF0nOiAncmVxdWlyZWQnLFxuICAgICdbYXR0ci5yZWFkb25seV0nOiAncmVhZG9ubHkgfHwgbnVsbCcsXG4gICAgJ1thdHRyLmFyaWEtaW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1thdHRyLmFyaWEtcmVxdWlyZWRdJzogJ3JlcXVpcmVkLnRvU3RyaW5nKCknLFxuICB9LFxuICBleHBvcnRBczogJ21hdFRpbWVwaWNrZXInLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRUaW1lcGlja2VyRGlyZWN0aXZlXG4gIGltcGxlbWVudHNcbiAgICBPbkluaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+XG57XG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgcmVuZGVyZWQgb24gdGhlIHNlcnZlci4gKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcmVhZG9ubHkgX2lzU2VydmVyOiBib29sZWFuO1xuICBwcml2YXRlIF9jbG9zZWRTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgLyoqIFRoZSBkYXRlcGlja2VyIHRoYXQgdGhpcyBpbnB1dCBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gIEBJbnB1dCgpXG4gIHNldCBtYXRUaW1lcGlja2VyKHRpbWVwaWNrZXI6IE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50KSB7XG4gICAgaWYgKHRpbWVwaWNrZXIpIHtcbiAgICAgIHRoaXMuX3RpbWVwaWNrZXIgPSB0aW1lcGlja2VyO1xuICAgICAgdGhpcy5fdGltZXBpY2tlci5zZXRUaW1lcGlja2VySW5wdXQodGhpcyk7XG4gICAgICB0aGlzLl9jbG9zZWRTdWJzY3JpcHRpb24gPSB0aW1lcGlja2VyLmNsb3NlZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT5cbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKClcbiAgICAgICk7XG4gICAgICAvL3RoaXMuX3JlZ2lzdGVyTW9kZWwoZGF0ZXBpY2tlci5yZWdpc3RlcklucHV0KHRoaXMpKTtcbiAgICB9XG4gIH1cbiAgX3RpbWVwaWNrZXIhOiBPbmVtcnZhTWF0VGltZXBpY2tlckNvbXBvbmVudDtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBfZXJyb3JTdGF0ZSA9IGZhbHNlO1xuICBnZXQgZXJyb3JTdGF0ZSgpIHtcbiAgICBjb25zdCBvbGRTdGF0ZSA9IHRoaXMuX2Vycm9yU3RhdGU7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50Rm9ybUdyb3VwIHx8IHRoaXMuX3BhcmVudEZvcm07XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sXG4gICAgICA/ICh0aGlzLm5nQ29udHJvbC5jb250cm9sIGFzIEZvcm1Db250cm9sKVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5lcnJvclN0YXRlTWF0Y2hlclxuICAgICAgPyB0aGlzLmVycm9yU3RhdGVNYXRjaGVyLmlzRXJyb3JTdGF0ZShjb250cm9sLCBwYXJlbnQpXG4gICAgICA6IG9sZFN0YXRlO1xuXG4gICAgaWYgKG5ld1N0YXRlICE9PSBvbGRTdGF0ZSkge1xuICAgICAgdGhpcy5fZXJyb3JTdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgfVxuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cbiAgICAvLyBSZXNldCBmcm9tIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgZG9lc24ndCBiZWNvbWUgc3R1Y2suXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmcgPSAnMCc7XG5cbiAgQElucHV0KCkgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuICBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZWFkb25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfcmVhZG9ubHkgPSBmYWxzZTtcblxuICBwcml2YXRlIGlzQWxpdmU6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcm90ZWN0ZWQgX3VpZCA9IGBtYXQtaW5wdXQtJHtNYXRUaW1lcGlja2VyRGlyZWN0aXZlLm5leHRJZCsrfWA7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmxvYXRpbmcnKSBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xuICB9XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgZGVzY3JpYmVkQnkgPSAnJztcblxuICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgQElucHV0KCkgZ2V0IHJlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCByZXF1aXJlZChyZXEpIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cbiAgc2V0IHBsYWNlaG9sZGVyKHBsaCkge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBwcml2YXRlIHBhdHRlcm46IFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ1swLTJdP1swLTldOlswLTZdP1swLTldJyk7XG5cbiAgcHJpdmF0ZSBhbGxvd2VkMjRIb3VyTWFwOiBJQWxsb3dlZDI0SG91ck1hcCA9IHRoaXMuZ2VuZXJhdGVBbGxvd2VkTWFwKCk7XG5cbiAgcHJpdmF0ZSBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIC8qKiBPdmVycmlkZSB0aGUgbGFiZWwgb2YgdGhlIG9rIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgb2tMYWJlbCA9ICdPayc7XG4gIC8qKiBPdmVycmlkZSB0aGUgbGFiZWwgb2YgdGhlIGNhbmNlbCBidXR0b24uICovXG4gIEBJbnB1dCgpIGNhbmNlbExhYmVsID0gJ0NhbmNlbCc7XG5cbiAgLyoqIFNldHMgdGhlIGNsb2NrIG1vZGUsIDEyLWhvdXIgb3IgMjQtaG91ciBjbG9ja3MgYXJlIHN1cHBvcnRlZC4gKi9cbiAgQElucHV0KCkgY29sb3IgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIGRpc2FibGVEaWFsb2dPcGVuT25DbGljayA9IGZhbHNlO1xuICBASW5wdXQoKSBzdHJpY3QgPSB0cnVlO1xuXG4gIGNvbnRyb2xUeXBlID0gJ2FuZ3VsYXItbWF0ZXJpYWwtdGltZXBpY2tlcic7XG5cbiAgcHJpdmF0ZSBsaXN0ZW5lcnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgQElucHV0KCkgbWluRGF0ZSE6IERhdGU7XG4gIEBJbnB1dCgpIG1heERhdGUhOiBEYXRlO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX2lzUG06IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfdmFsdWUhOiBEYXRlO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9mb3JtYXR0ZWRWYWx1ZVN0cmluZzogc3RyaW5nID0gJyc7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLl9mb3JtYXR0ZWRWYWx1ZVN0cmluZyA9ICcnO1xuICAgICAgdGhpcy5zZXRJbnB1dEVsZW1lbnRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgaG91ciwgaXNQbSB9ID0gY29udmVydEhvdXJzRm9yTW9kZSh2YWx1ZS5nZXRIb3VycygpKTtcbiAgICB0aGlzLl9mb3JtYXR0ZWRWYWx1ZVN0cmluZyA9IGAke3R3b0RpZ2l0cyh2YWx1ZS5nZXRIb3VycygpKX06JHt0d29EaWdpdHMoXG4gICAgICB2YWx1ZS5nZXRNaW51dGVzKClcbiAgICApfWA7XG5cbiAgICBpZiAoIXRoaXMuaXNJbnB1dEZvY3VzZWQpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodGhpcy5mb3JtYXR0ZWRWYWx1ZVN0cmluZyk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudGltZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFZhbHVlKTtcblxuICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBnZXQgZW1wdHkoKSB7XG4gICAgcmV0dXJuICEodGhpcy5jdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBEYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZvcm1hdHRlZFZhbHVlU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRWYWx1ZVN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFZhbHVlITogRGF0ZTtcblxuICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueTtcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55O1xuICBwcml2YXRlIGNvbWJpbmF0aW9uOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSB0aW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW52YWxpZElucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JykgaW5wdXRIYW5kbGVyKCkge1xuICAgIGxldCB2YWx1ZSA9ICh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQgYXMgYW55KS52YWx1ZSBhcyBzdHJpbmc7XG4gICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgLy90aGlzLndyaXRlVmFsdWUobnVsbCwgdHJ1ZSk7XG4gICAgICB0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IHRydWU7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+ICh0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IGZhbHNlKSk7XG5cbiAgICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVIYXNDb2x1bW4gPSB2YWx1ZS5pbmNsdWRlcygnOicpO1xuICAgIGxldCBbaG91cnMsIG1pbnV0ZXNdOiBhbnkgPVxuICAgICAgbGVuZ3RoID09PSAxXG4gICAgICAgID8gW3ZhbHVlLCAwXVxuICAgICAgICA6IGxlbmd0aCA9PT0gMiAmJiAhdmFsdWVIYXNDb2x1bW5cbiAgICAgICAgPyBbdmFsdWUsIDBdXG4gICAgICAgIDogdmFsdWVIYXNDb2x1bW5cbiAgICAgICAgPyB2YWx1ZS5zcGxpdCgnOicpXG4gICAgICAgIDogdmFsdWUuc3BsaXQoLyhcXGRcXGQpLykuZmlsdGVyKCh2KSA9PiB2KTtcblxuICAgIGhvdXJzID0gK2hvdXJzO1xuXG4gICAgaWYgKC9cXHMvLnRlc3QobWludXRlcykpIHtcbiAgICAgIGxldCBvdGhlcjtcbiAgICAgIFttaW51dGVzLCBvdGhlcl0gPSBtaW51dGVzLnNwbGl0KC9cXHMvKTtcbiAgICAgIGlmIChvdGhlciA9PT0gJ3BtJyAmJiAhaXNOYU4oaG91cnMpICYmIGhvdXJzIDwgMTIpIHtcbiAgICAgICAgaG91cnMgKz0gMTI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWludXRlcyA9ICttaW51dGVzO1xuXG4gICAgaWYgKGlzTmFOKGhvdXJzKSB8fCBpc05hTihtaW51dGVzKSkge1xuICAgICAgLy90aGlzLndyaXRlVmFsdWUobnVsbCwgdHJ1ZSk7XG4gICAgICB0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IHRydWU7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+ICh0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IGZhbHNlKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCtob3VycyA+IDI0KSB7XG4gICAgICBob3VycyA9ICcyNCc7XG4gICAgfSBlbHNlIGlmICgraG91cnMgPCAwKSB7XG4gICAgICBob3VycyA9ICcwJztcbiAgICB9XG5cbiAgICBpZiAoK21pbnV0ZXMgPiA1OSkge1xuICAgICAgbWludXRlcyA9ICc1OSc7XG4gICAgfSBlbHNlIGlmICgrbWludXRlcyA8IDApIHtcbiAgICAgIG1pbnV0ZXMgPSAnMCc7XG4gICAgfVxuXG4gICAgY29uc3QgZCA9IHRoaXMudmFsdWUgPyBuZXcgRGF0ZSh0aGlzLnZhbHVlLmdldFRpbWUoKSkgOiBuZXcgRGF0ZSgpO1xuICAgIGQuc2V0SG91cnMoK2hvdXJzKTtcbiAgICBkLnNldE1pbnV0ZXMoK21pbnV0ZXMpO1xuICAgIGQuc2V0U2Vjb25kcygwKTtcbiAgICBkLnNldE1pbGxpc2Vjb25kcygwKTtcblxuICAgIGNvbnN0IGlzVmFsdWVJblJhbmdlID0gaXNEYXRlSW5SYW5nZSh0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSwgZCk7XG4gICAgaWYgKCFpc1ZhbHVlSW5SYW5nZSkge1xuICAgICAgdGhpcy5pbnZhbGlkSW5wdXQuZW1pdCgpO1xuICAgIH1cblxuICAgIHRoaXMud3JpdGVWYWx1ZShkLCB0cnVlKTtcbiAgICBpZiAodGhpcy5vbkNoYW5nZUZuKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlRm4oZCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIGtleWRvd25IYW5kbGVyKGV2ZW50OiBhbnkpIHtcbiAgICBsZXQgZSA9IDxLZXlib2FyZEV2ZW50PmV2ZW50O1xuXG4gICAgY29uc3QgYWxsb3dlZEtleSA9IFtcbiAgICAgICcwJyxcbiAgICAgICcxJyxcbiAgICAgICcyJyxcbiAgICAgICczJyxcbiAgICAgICc0JyxcbiAgICAgICc1JyxcbiAgICAgICc2JyxcbiAgICAgICc3JyxcbiAgICAgICc4JyxcbiAgICAgICc5JyxcbiAgICAgICc6JyxcbiAgICAgICdCYWNrc3BhY2UnLFxuICAgICAgJ0RlbGV0ZScsXG4gICAgICAnVGFiJyxcbiAgICAgICdFbnRlcicsXG4gICAgICAnQXJyb3dMZWZ0JyxcbiAgICAgICdBcnJvd1JpZ2h0JyxcbiAgICAgICdBcnJvd1VwJyxcbiAgICAgICdBcnJvd0Rvd24nLFxuICAgICAgJ0hvbWUnLFxuICAgICAgJ0VuZCcsXG4gICAgXTtcbiAgICBpZiAoYWxsb3dlZEtleS5pbmRleE9mKGUua2V5KSA+PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBhbGxvd2VkQ3RybFNob3J0Y3V0cyA9IFsnYScsICdjJywgJ3gnLCAndiddO1xuICAgIGlmIChlLmN0cmxLZXkgJiYgYWxsb3dlZEN0cmxTaG9ydGN1dHMuaW5kZXhPZihlLmtleSkgPj0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkpIHtcbiAgICAgIHRoaXMuY29tYmluYXRpb24gPSB0aGlzLmNvbWJpbmF0aW9uLmNvbmNhdChldmVudC5jb2RlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHRWYWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICBjb25zdCB2YWx1ZSA9IGAke3RWYWx1ZS5zbGljZSgwLCB0YXJnZXQuc2VsZWN0aW9uU3RhcnQpfSR7XG4gICAgICBldmVudC5rZXlcbiAgICB9JHt0VmFsdWUuc2xpY2UodGFyZ2V0LnNlbGVjdGlvbkVuZCl9YDtcbiAgICBpZiAodmFsdWUubWF0Y2godGhpcy5wYXR0ZXJuKSB8fCB0aGlzLmNvbWJpbmF0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSkga2V5dXBIYW5kbGVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNvbWJpbmF0aW9uID0gdGhpcy5jb21iaW5hdGlvbi5maWx0ZXIoKHYpID0+IHYgIT09IGV2ZW50LmNvZGUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKSBmb2N1c0hhbmRsZXIoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcpIGZvY3Vzb3V0SGFuZGxlcigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRJbnB1dEVsZW1lbnRWYWx1ZSh0aGlzLmZvcm1hdHRlZFZhbHVlU3RyaW5nKTtcbiAgICBpZiAodGhpcy5vblRvdWNoZWRGbiAmJiAhdGhpcy5fdGltZXBpY2tlci5tb2RhbFJlZikge1xuICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGZtOiBGb2N1c01vbml0b3IsXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHByb3RlY3RlZCBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbWF0Rm9ybUZpbGVkOiBNYXRGb3JtRmllbGQsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyXG4gICkge1xuICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xuXG4gICAgdGhpcy5lcnJvclN0YXRlTWF0Y2hlciA9IF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIGlmIChfcGxhdGZvcm0uSU9TKSB7XG4gICAgICBuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgaWYgKCFlbC52YWx1ZSAmJiAhZWwuc2VsZWN0aW9uU3RhcnQgJiYgIWVsLnNlbGVjdGlvbkVuZCkge1xuICAgICAgICAgICAgLy8gTm90ZTogSnVzdCBzZXR0aW5nIGAwLCAwYCBkb2Vzbid0IGZpeCB0aGUgaXNzdWUuIFNldHRpbmdcbiAgICAgICAgICAgIC8vIGAxLCAxYCBmaXhlcyBpdCBmb3IgdGhlIGZpcnN0IHRpbWUgdGhhdCB5b3UgdHlwZSB0ZXh0IGFuZFxuICAgICAgICAgICAgLy8gdGhlbiBob2xkIGRlbGV0ZS4gVG9nZ2xpbmcgdG8gYDEsIDFgIGFuZCB0aGVuIGJhY2sgdG9cbiAgICAgICAgICAgIC8vIGAwLCAwYCBzZWVtcyB0byBjb21wbGV0ZWx5IGZpeCBpdC5cbiAgICAgICAgICAgIGVsLnNldFNlbGVjdGlvblJhbmdlKDEsIDEpO1xuICAgICAgICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VydmVyID0gIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcjtcbiAgfVxuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHNldElucHV0RWxlbWVudFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIGNvbnN0IGlzVmFsdWVJblJhbmdlID0gdGhpcy5zdHJpY3RcbiAgICAgID8gaXNEYXRlSW5SYW5nZSh0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSwgdGhpcy5jdXJyZW50VmFsdWUpXG4gICAgICA6IGlzVGltZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIHRoaXMuY3VycmVudFZhbHVlKTtcblxuICAgIHJldHVybiBpc1ZhbHVlSW5SYW5nZSA/IG51bGwgOiB7IGRhdGVSYW5nZTogdHJ1ZSB9O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICB0aGlzLmZtLm1vbml0b3IodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKS5zdWJzY3JpYmUoKG9yaWdpbikgPT4ge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgY29uc3QgaGFzTWF4RGF0ZSA9ICEhdGhpcy5tYXhEYXRlO1xuICAgICAgY29uc3QgaGFzTWluRGF0ZSA9ICEhdGhpcy5taW5EYXRlO1xuXG4gICAgICAvL2lmIChoYXNNaW5EYXRlIHx8IGhhc01heERhdGUpIHtcbiAgICAgIGlmIChoYXNNaW5EYXRlKSB7XG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRTZWNvbmRzKDApO1xuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgfVxuICAgICAgaWYgKGhhc01heERhdGUpIHtcbiAgICAgICAgdGhpcy5tYXhEYXRlLnNldFNlY29uZHMoMCk7XG4gICAgICAgIHRoaXMubWF4RGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgISh0aGlzLm5nQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzLmZpbmQoKHY6IGFueSkgPT4gdiA9PT0gdGhpcylcbiAgICAgICkge1xuICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycy5wdXNoKHRoaXMpO1xuICAgICAgfVxuICAgICAgLy99XG4gICAgfVxuICAgIHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uID0gZmFsc2U7XG4gIH1cblxuICBnZW5lcmF0ZUFsbG93ZWRNYXAoKTogSUFsbG93ZWQyNEhvdXJNYXAge1xuICAgIGNvbnN0IGlzU3RyaWN0TW9kZSA9IHRoaXMuc3RyaWN0ICYmIHRoaXMudmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuICAgIGNvbnN0IGEyNGhtOiBJQWxsb3dlZDI0SG91ck1hcCA9IHt9O1xuICAgIGZvciAobGV0IGggPSAwOyBoIDwgMjQ7IGgrKykge1xuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCA2MDsgbSsrKSB7XG4gICAgICAgIGNvbnN0IGhvdXJNYXAgPSBhMjRobVtoXSB8fCB7fTtcbiAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy52YWx1ZS5nZXRUaW1lKCkpO1xuICAgICAgICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKGgpO1xuICAgICAgICAgIGN1cnJlbnREYXRlLnNldE1pbnV0ZXMobSk7XG4gICAgICAgICAgY3VycmVudERhdGUuc2V0U2Vjb25kcygwKTtcbiAgICAgICAgICBjdXJyZW50RGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICAgICAgaG91ck1hcFttXSA9IGlzRGF0ZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIGN1cnJlbnREYXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBob3VyTWFwW21dID0gaXNBbGxvd2VkKGgsIG0sIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBhMjRobVtoXSA9IGhvdXJNYXA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGEyNGhtO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMucGF0dGVybiA9IC9eWzAtOV17MSwyfTo/KFswLTldezEsMn0pPyQvO1xuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuX3RpbWVwaWNrZXIubW9kYWxSZWYgfHxcbiAgICAgICF0aGlzLl90aW1lcGlja2VyLm1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGltZXBpY2tlci5tb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0ge1xuICAgICAgdmFsdWU6IHRoaXMuY3VycmVudFZhbHVlLFxuICAgICAgb2tMYWJlbDogdGhpcy5va0xhYmVsLFxuICAgICAgY2FuY2VsTGFiZWw6IHRoaXMuY2FuY2VsTGFiZWwsXG4gICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZSxcbiAgICAgIGFsbG93ZWQyNEhvdXJNYXA6IHRoaXMuYWxsb3dlZDI0SG91ck1hcCxcbiAgICB9O1xuICB9XG5cbiAgY2hlY2tWYWxpZGl0eSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaG91ciA9IHZhbHVlLmdldEhvdXJzKCk7XG4gICAgY29uc3QgbWludXRlcyA9IHZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICByZXR1cm4gaXNBbGxvd2VkKGhvdXIsIG1pbnV0ZXMsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUsIGlzSW5uZXJDYWxsID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIWlzSW5uZXJDYWxsKSB7XG4gICAgICB0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IHRydWU7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+ICh0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IGZhbHNlKSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZS5zZXRTZWNvbmRzKDApO1xuICAgICAgdmFsdWUuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgIH1cblxuICAgIGlmICgrdGhpcy52YWx1ZSAhPT0gK3ZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG4iXX0=
|
|
560
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL3RpbWVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBS0wsUUFBUSxFQUdSLFdBQVcsRUFDWCxJQUFJLEVBQ0osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUNMLFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsU0FBUyxFQUNULGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUEyQjlELE1BQU0sT0FBTyxzQkFBc0I7SUE4Vko7SUFDbkI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUVFO0lBRVU7SUFFQTtJQUVBO0lBbld0QixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVsQiw2REFBNkQ7SUFDN0QseUNBQXlDO0lBQ2hDLFNBQVMsQ0FBVTtJQUNwQixtQkFBbUIsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBRWpELHlEQUF5RDtJQUN6RCxJQUNJLGFBQWEsQ0FBQyxVQUF5QztRQUN6RCxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENB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bEMsWUFBWTt1QkFBQyxPQUFPO2dCQTJFZ0IsY0FBYztzQkFBbEQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0RBLFlBQVk7c0JBQTlDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlWLFlBQVk7c0JBQWxDLFlBQVk7dUJBQUMsT0FBTztnQkFJSyxlQUFlO3NCQUF4QyxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdGb3JtLFxuICBOZ0NvbnRyb2wsXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgT25Jbml0LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBFbGVtZW50UmVmLFxuICBPbkNoYW5nZXMsXG4gIFJlbmRlcmVyMixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE5nWm9uZSxcbiAgSG9zdEJpbmRpbmcsXG4gIFNlbGYsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gIE1hdEZvcm1GaWVsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBJQWxsb3dlZDI0SG91ck1hcCB9IGZyb20gJy4vaW50ZXJmYWNlcy1hbmQtdHlwZXMnO1xuaW1wb3J0IHtcbiAgdHdvRGlnaXRzLFxuICBjb252ZXJ0SG91cnNGb3JNb2RlLFxuICBpc0FsbG93ZWQsXG4gIGlzRGF0ZUluUmFuZ2UsXG4gIGlzVGltZUluUmFuZ2UsXG59IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgT25lbXJ2YU1hdFRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL29uZW1ydmEtbWF0LXRpbWVwaWNrZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbbWF0VGltZXBpY2tlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNYXRUaW1lcGlja2VyRGlyZWN0aXZlIH0sXG4gIF0sXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6b2JqZWN0LWxpdGVyYWwta2V5LXF1b3Rlc1xuICAgIGNsYXNzOiAnbWF0LWlucHV0LWVsZW1lbnQgbWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbCcsXG4gICAgJ1tjbGFzcy5tYXQtaW5wdXQtc2VydmVyXSc6ICdfaXNTZXJ2ZXInLFxuICAgIC8vIE5hdGl2ZSBpbnB1dCBwcm9wZXJ0aWVzIHRoYXQgYXJlIG92ZXJ3cml0dGVuIGJ5IEFuZ3VsYXIgaW5wdXRzIG5lZWQgdG8gYmUgc3luY2VkIHdpdGhcbiAgICAvLyB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuIE90aGVyd2lzZSBwcm9wZXJ0eSBiaW5kaW5ncyBmb3IgdGhvc2UgZG9uJ3Qgd29yay5cbiAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAnW2F0dHIucGxhY2Vob2xkZXJdJzogJ3BsYWNlaG9sZGVyJyxcbiAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJ1tyZXF1aXJlZF0nOiAncmVxdWlyZWQnLFxuICAgICdbYXR0ci5yZWFkb25seV0nOiAncmVhZG9ubHkgfHwgbnVsbCcsXG4gICAgJ1thdHRyLmFyaWEtaW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1thdHRyLmFyaWEtcmVxdWlyZWRdJzogJ3JlcXVpcmVkLnRvU3RyaW5nKCknLFxuICB9LFxuICBleHBvcnRBczogJ21hdFRpbWVwaWNrZXInLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRUaW1lcGlja2VyRGlyZWN0aXZlXG4gIGltcGxlbWVudHNcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBNYXRGb3JtRmllbGRDb250cm9sPGFueT5cbntcbiAgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBiZWluZyByZW5kZXJlZCBvbiB0aGUgc2VydmVyLiAqL1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICByZWFkb25seSBfaXNTZXJ2ZXI6IGJvb2xlYW47XG4gIHByaXZhdGUgX2Nsb3NlZFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAvKiogVGhlIGRhdGVwaWNrZXIgdGhhdCB0aGlzIGlucHV0IGlzIGFzc29jaWF0ZWQgd2l0aC4gKi9cbiAgQElucHV0KClcbiAgc2V0IG1hdFRpbWVwaWNrZXIodGltZXBpY2tlcjogT25lbXJ2YU1hdFRpbWVwaWNrZXJDb21wb25lbnQpIHtcbiAgICBpZiAodGltZXBpY2tlcikge1xuICAgICAgdGhpcy5fdGltZXBpY2tlciA9IHRpbWVwaWNrZXI7XG4gICAgICB0aGlzLl90aW1lcGlja2VyLnNldFRpbWVwaWNrZXJJbnB1dCh0aGlzKTtcbiAgICAgIHRoaXMuX2Nsb3NlZFN1YnNjcmlwdGlvbiA9IHRpbWVwaWNrZXIuY2xvc2VkU3RyZWFtLnN1YnNjcmliZSgoKSA9PlxuICAgICAgICB0aGlzLl9vblRvdWNoZWQoKVxuICAgICAgKTtcbiAgICAgIC8vdGhpcy5fcmVnaXN0ZXJNb2RlbChkYXRlcGlja2VyLnJlZ2lzdGVySW5wdXQodGhpcykpO1xuICAgIH1cbiAgfVxuICBfdGltZXBpY2tlciE6IE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50O1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIF9lcnJvclN0YXRlID0gZmFsc2U7XG4gIGdldCBlcnJvclN0YXRlKCkge1xuICAgIGNvbnN0IG9sZFN0YXRlID0gdGhpcy5fZXJyb3JTdGF0ZTtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9wYXJlbnRGb3JtR3JvdXAgfHwgdGhpcy5fcGFyZW50Rm9ybTtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2xcbiAgICAgID8gKHRoaXMubmdDb250cm9sLmNvbnRyb2wgYXMgRm9ybUNvbnRyb2wpXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLmVycm9yU3RhdGVNYXRjaGVyXG4gICAgICA/IHRoaXMuZXJyb3JTdGF0ZU1hdGNoZXIuaXNFcnJvclN0YXRlKGNvbnRyb2wsIHBhcmVudClcbiAgICAgIDogb2xkU3RhdGU7XG5cbiAgICBpZiAobmV3U3RhdGUgIT09IG9sZFN0YXRlKSB7XG4gICAgICB0aGlzLl9lcnJvclN0YXRlID0gbmV3U3RhdGU7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1N0YXRlO1xuICB9XG4gIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmRpc2FibGVkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAvLyBCcm93c2VycyBtYXkgbm90IGZpcmUgdGhlIGJsdXIgZXZlbnQgaWYgdGhlIGlucHV0IGlzIGRpc2FibGVkIHRvbyBxdWlja2x5LlxuICAgIC8vIFJlc2V0IGZyb20gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBkb2Vzbid0IGJlY29tZSBzdHVjay5cbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdGhpcy5fdWlkO1xuICB9XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByb3RlY3RlZCBfaWQ6IHN0cmluZyA9ICcwJztcblxuICBASW5wdXQoKSBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICB9XG4gIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlYWRvbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9yZWFkb25seSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgaXNBbGl2ZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByb3RlY3RlZCBfdWlkID0gYG1hdC1pbnB1dC0ke01hdFRpbWVwaWNrZXJEaXJlY3RpdmUubmV4dElkKyt9YDtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mbG9hdGluZycpIGdldCBzaG91bGRMYWJlbEZsb2F0KCkge1xuICAgIHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xuXG4gIEBJbnB1dCgpIGVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcjtcblxuICBASW5wdXQoKSBnZXQgcmVxdWlyZWQoKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sPy5jb250cm9sKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCByZXF1aXJlZChyZXEpIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cbiAgc2V0IHBsYWNlaG9sZGVyKHBsaCkge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBwcml2YXRlIHBhdHRlcm46IFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ1swLTJdP1swLTldOlswLTZdP1swLTldJyk7XG5cbiAgcHJpdmF0ZSBhbGxvd2VkMjRIb3VyTWFwOiBJQWxsb3dlZDI0SG91ck1hcCA9IHRoaXMuZ2VuZXJhdGVBbGxvd2VkTWFwKCk7XG5cbiAgcHJpdmF0ZSBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIC8qKiBPdmVycmlkZSB0aGUgbGFiZWwgb2YgdGhlIG9rIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgb2tMYWJlbCA9ICdPayc7XG4gIC8qKiBPdmVycmlkZSB0aGUgbGFiZWwgb2YgdGhlIGNhbmNlbCBidXR0b24uICovXG4gIEBJbnB1dCgpIGNhbmNlbExhYmVsID0gJ0NhbmNlbCc7XG5cbiAgLyoqIFNldHMgdGhlIGNsb2NrIG1vZGUsIDEyLWhvdXIgb3IgMjQtaG91ciBjbG9ja3MgYXJlIHN1cHBvcnRlZC4gKi9cbiAgQElucHV0KCkgY29sb3IgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIGRpc2FibGVEaWFsb2dPcGVuT25DbGljayA9IGZhbHNlO1xuICBASW5wdXQoKSBzdHJpY3QgPSB0cnVlO1xuXG4gIGNvbnRyb2xUeXBlID0gJ2FuZ3VsYXItbWF0ZXJpYWwtdGltZXBpY2tlcic7XG5cbiAgcHJpdmF0ZSBsaXN0ZW5lcnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgQElucHV0KCkgbWluRGF0ZSE6IERhdGU7XG4gIEBJbnB1dCgpIG1heERhdGUhOiBEYXRlO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX2lzUG06IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfdmFsdWU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfZm9ybWF0dGVkVmFsdWVTdHJpbmc6IHN0cmluZyA9ICcnO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLl92YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuX2Zvcm1hdHRlZFZhbHVlU3RyaW5nID0gJyc7XG4gICAgICB0aGlzLnNldElucHV0RWxlbWVudFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWUgPz8gbmV3IERhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGhvdXIsIGlzUG0gfSA9IGNvbnZlcnRIb3Vyc0Zvck1vZGUodmFsdWUuZ2V0SG91cnMoKSk7XG4gICAgdGhpcy5fZm9ybWF0dGVkVmFsdWVTdHJpbmcgPSBgJHt0d29EaWdpdHModmFsdWUuZ2V0SG91cnMoKSl9OiR7dHdvRGlnaXRzKFxuICAgICAgdmFsdWUuZ2V0TWludXRlcygpXG4gICAgKX1gO1xuXG4gICAgaWYgKCF0aGlzLmlzSW5wdXRGb2N1c2VkKSB7XG4gICAgICB0aGlzLnNldElucHV0RWxlbWVudFZhbHVlKHRoaXMuZm9ybWF0dGVkVmFsdWVTdHJpbmcpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcblxuICAgIGlmICh0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRpbWVDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRWYWx1ZSk7XG5cbiAgICBpZiAodGhpcy5vbkNoYW5nZUZuKSB0aGlzLm9uQ2hhbmdlRm4odGhpcy52YWx1ZSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgZ2V0IGVtcHR5KCkge1xuICAgIHJldHVybiAhKHRoaXMuY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBmb3JtYXR0ZWRWYWx1ZVN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkVmFsdWVTdHJpbmc7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRWYWx1ZSE6IERhdGU7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZUZuOiBhbnk7XG4gIHByaXZhdGUgb25Ub3VjaGVkRm46IGFueTtcbiAgcHJpdmF0ZSBjb21iaW5hdGlvbjogc3RyaW5nW10gPSBbXTtcblxuICBAT3V0cHV0KCkgdGltZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGludmFsaWRJbnB1dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcpIGlucHV0SGFuZGxlcigpIHtcbiAgICBsZXQgdmFsdWUgPSAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50IGFzIGFueSkudmFsdWUgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShudWxsLCB0cnVlKTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uID0gdHJ1ZTtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gKHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uID0gZmFsc2UpKTtcblxuICAgICAgaWYgKHRoaXMub25DaGFuZ2VGbikge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4obnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUhhc0NvbHVtbiA9IHZhbHVlLmluY2x1ZGVzKCc6Jyk7XG4gICAgbGV0IFtob3VycywgbWludXRlc106IGFueSA9XG4gICAgICBsZW5ndGggPT09IDFcbiAgICAgICAgPyBbdmFsdWUsIDBdXG4gICAgICAgIDogbGVuZ3RoID09PSAyICYmICF2YWx1ZUhhc0NvbHVtblxuICAgICAgICAgID8gW3ZhbHVlLCAwXVxuICAgICAgICAgIDogdmFsdWVIYXNDb2x1bW5cbiAgICAgICAgICAgID8gdmFsdWUuc3BsaXQoJzonKVxuICAgICAgICAgICAgOiB2YWx1ZS5zcGxpdCgvKFxcZFxcZCkvKS5maWx0ZXIoKHYpID0+IHYpO1xuXG4gICAgaG91cnMgPSAraG91cnM7XG5cbiAgICBpZiAoL1xccy8udGVzdChtaW51dGVzKSkge1xuICAgICAgbGV0IG90aGVyO1xuICAgICAgW21pbnV0ZXMsIG90aGVyXSA9IG1pbnV0ZXMuc3BsaXQoL1xccy8pO1xuICAgICAgaWYgKG90aGVyID09PSAncG0nICYmICFpc05hTihob3VycykgJiYgaG91cnMgPCAxMikge1xuICAgICAgICBob3VycyArPSAxMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtaW51dGVzID0gK21pbnV0ZXM7XG5cbiAgICBpZiAoaXNOYU4oaG91cnMpIHx8IGlzTmFOKG1pbnV0ZXMpKSB7XG4gICAgICAvL3RoaXMud3JpdGVWYWx1ZShudWxsLCB0cnVlKTtcbiAgICAgIHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uID0gdHJ1ZTtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gKHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uID0gZmFsc2UpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoK2hvdXJzID4gMjQpIHtcbiAgICAgIGhvdXJzID0gJzI0JztcbiAgICB9IGVsc2UgaWYgKCtob3VycyA8IDApIHtcbiAgICAgIGhvdXJzID0gJzAnO1xuICAgIH1cblxuICAgIGlmICgrbWludXRlcyA+IDU5KSB7XG4gICAgICBtaW51dGVzID0gJzU5JztcbiAgICB9IGVsc2UgaWYgKCttaW51dGVzIDwgMCkge1xuICAgICAgbWludXRlcyA9ICcwJztcbiAgICB9XG5cbiAgICBjb25zdCBkID0gdGhpcy52YWx1ZSA/IG5ldyBEYXRlKHRoaXMudmFsdWUuZ2V0VGltZSgpKSA6IG5ldyBEYXRlKCk7XG4gICAgZC5zZXRIb3VycygraG91cnMpO1xuICAgIGQuc2V0TWludXRlcygrbWludXRlcyk7XG4gICAgZC5zZXRTZWNvbmRzKDApO1xuICAgIGQuc2V0TWlsbGlzZWNvbmRzKDApO1xuXG4gICAgY29uc3QgaXNWYWx1ZUluUmFuZ2UgPSBpc0RhdGVJblJhbmdlKHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCBkKTtcbiAgICBpZiAoIWlzVmFsdWVJblJhbmdlKSB7XG4gICAgICB0aGlzLmludmFsaWRJbnB1dC5lbWl0KCk7XG4gICAgfVxuXG4gICAgdGhpcy53cml0ZVZhbHVlKGQsIHRydWUpO1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHtcbiAgICAgIHRoaXMub25DaGFuZ2VGbihkKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkga2V5ZG93bkhhbmRsZXIoZXZlbnQ6IGFueSkge1xuICAgIGxldCBlID0gPEtleWJvYXJkRXZlbnQ+ZXZlbnQ7XG5cbiAgICBjb25zdCBhbGxvd2VkS2V5ID0gW1xuICAgICAgJzAnLFxuICAgICAgJzEnLFxuICAgICAgJzInLFxuICAgICAgJzMnLFxuICAgICAgJzQnLFxuICAgICAgJzUnLFxuICAgICAgJzYnLFxuICAgICAgJzcnLFxuICAgICAgJzgnLFxuICAgICAgJzknLFxuICAgICAgJzonLFxuICAgICAgJ0JhY2tzcGFjZScsXG4gICAgICAnRGVsZXRlJyxcbiAgICAgICdUYWInLFxuICAgICAgJ0VudGVyJyxcbiAgICAgICdBcnJvd0xlZnQnLFxuICAgICAgJ0Fycm93UmlnaHQnLFxuICAgICAgJ0Fycm93VXAnLFxuICAgICAgJ0Fycm93RG93bicsXG4gICAgICAnSG9tZScsXG4gICAgICAnRW5kJyxcbiAgICBdO1xuICAgIGlmIChhbGxvd2VkS2V5LmluZGV4T2YoZS5rZXkpID49IDApIHJldHVybjtcblxuICAgIGNvbnN0IGFsbG93ZWRDdHJsU2hvcnRjdXRzID0gWydhJywgJ2MnLCAneCcsICd2J107XG4gICAgaWYgKGUuY3RybEtleSAmJiBhbGxvd2VkQ3RybFNob3J0Y3V0cy5pbmRleE9mKGUua2V5KSA+PSAwKSByZXR1cm47XG5cbiAgICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgdGhpcy5jb21iaW5hdGlvbiA9IHRoaXMuY29tYmluYXRpb24uY29uY2F0KGV2ZW50LmNvZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgdFZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHZhbHVlID0gYCR7dFZhbHVlLnNsaWNlKDAsIHRhcmdldC5zZWxlY3Rpb25TdGFydCl9JHtcbiAgICAgIGV2ZW50LmtleVxuICAgICAgfSR7dFZhbHVlLnNsaWNlKHRhcmdldC5zZWxlY3Rpb25FbmQpfWA7XG4gICAgaWYgKHZhbHVlLm1hdGNoKHRoaXMucGF0dGVybikgfHwgdGhpcy5jb21iaW5hdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pIGtleXVwSGFuZGxlcihldmVudDogYW55KSB7XG4gICAgdGhpcy5jb21iaW5hdGlvbiA9IHRoaXMuY29tYmluYXRpb24uZmlsdGVyKCh2KSA9PiB2ICE9PSBldmVudC5jb2RlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJykgZm9jdXNIYW5kbGVyKCkge1xuICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKSBmb2N1c291dEhhbmRsZXIoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodGhpcy5mb3JtYXR0ZWRWYWx1ZVN0cmluZyk7XG4gICAgaWYgKHRoaXMub25Ub3VjaGVkRm4gJiYgIXRoaXMuX3RpbWVwaWNrZXIubW9kYWxSZWYpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBmbTogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBwcm90ZWN0ZWQgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX21hdEZvcm1GaWxlZDogTWF0Rm9ybUZpZWxkLFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlclxuICApIHtcbiAgICB0aGlzLmlkID0gdGhpcy5pZDtcblxuICAgIHRoaXMuZXJyb3JTdGF0ZU1hdGNoZXIgPSBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyO1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoX3BsYXRmb3JtLklPUykge1xuICAgICAgbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgZWxSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgIGlmICghZWwudmFsdWUgJiYgIWVsLnNlbGVjdGlvblN0YXJ0ICYmICFlbC5zZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICAgIC8vIE5vdGU6IEp1c3Qgc2V0dGluZyBgMCwgMGAgZG9lc24ndCBmaXggdGhlIGlzc3VlLiBTZXR0aW5nXG4gICAgICAgICAgICAvLyBgMSwgMWAgZml4ZXMgaXQgZm9yIHRoZSBmaXJzdCB0aW1lIHRoYXQgeW91IHR5cGUgdGV4dCBhbmRcbiAgICAgICAgICAgIC8vIHRoZW4gaG9sZCBkZWxldGUuIFRvZ2dsaW5nIHRvIGAxLCAxYCBhbmQgdGhlbiBiYWNrIHRvXG4gICAgICAgICAgICAvLyBgMCwgMGAgc2VlbXMgdG8gY29tcGxldGVseSBmaXggaXQuXG4gICAgICAgICAgICBlbC5zZXRTZWxlY3Rpb25SYW5nZSgxLCAxKTtcbiAgICAgICAgICAgIGVsLnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlcnZlciA9ICF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXI7XG4gIH1cblxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XG4gIH1cblxuICBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKChldmVudC50YXJnZXQgYXMgRWxlbWVudCkudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnaW5wdXQnKSB7XG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBzZXRJbnB1dEVsZW1lbnRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICBjb25zdCBpc1ZhbHVlSW5SYW5nZSA9IHRoaXMuc3RyaWN0XG4gICAgICA/IGlzRGF0ZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIHRoaXMuY3VycmVudFZhbHVlKVxuICAgICAgOiBpc1RpbWVJblJhbmdlKHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmN1cnJlbnRWYWx1ZSk7XG5cbiAgICByZXR1cm4gaXNWYWx1ZUluUmFuZ2UgPyBudWxsIDogeyBkYXRlUmFuZ2U6IHRydWUgfTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgdGhpcy5mbS5tb25pdG9yKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdHJ1ZSkuc3Vic2NyaWJlKChvcmlnaW4pID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIGNvbnN0IGhhc01heERhdGUgPSAhIXRoaXMubWF4RGF0ZTtcbiAgICAgIGNvbnN0IGhhc01pbkRhdGUgPSAhIXRoaXMubWluRGF0ZTtcblxuICAgICAgLy9pZiAoaGFzTWluRGF0ZSB8fCBoYXNNYXhEYXRlKSB7XG4gICAgICBpZiAoaGFzTWluRGF0ZSkge1xuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0U2Vjb25kcygwKTtcbiAgICAgICAgdGhpcy5taW5EYXRlLnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNNYXhEYXRlKSB7XG4gICAgICAgIHRoaXMubWF4RGF0ZS5zZXRTZWNvbmRzKDApO1xuICAgICAgICB0aGlzLm1heERhdGUuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICEodGhpcy5uZ0NvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycy5maW5kKCh2OiBhbnkpID0+IHYgPT09IHRoaXMpXG4gICAgICApIHtcbiAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIGFueSkuX3Jhd1ZhbGlkYXRvcnMucHVzaCh0aGlzKTtcbiAgICAgIH1cbiAgICAgIC8vfVxuICAgIH1cbiAgICB0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IGZhbHNlO1xuICB9XG5cbiAgZ2VuZXJhdGVBbGxvd2VkTWFwKCk6IElBbGxvd2VkMjRIb3VyTWFwIHtcbiAgICBjb25zdCBpc1N0cmljdE1vZGUgPSB0aGlzLnN0cmljdCAmJiB0aGlzLnZhbHVlIGluc3RhbmNlb2YgRGF0ZTtcbiAgICBjb25zdCBhMjRobTogSUFsbG93ZWQyNEhvdXJNYXAgPSB7fTtcbiAgICBmb3IgKGxldCBoID0gMDsgaCA8IDI0OyBoKyspIHtcbiAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgNjA7IG0rKykge1xuICAgICAgICBjb25zdCBob3VyTWFwID0gYTI0aG1baF0gfHwge307XG4gICAgICAgIGlmIChpc1N0cmljdE1vZGUgJiYgdGhpcy52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy52YWx1ZS5nZXRUaW1lKCkpO1xuICAgICAgICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKGgpO1xuICAgICAgICAgIGN1cnJlbnREYXRlLnNldE1pbnV0ZXMobSk7XG4gICAgICAgICAgY3VycmVudERhdGUuc2V0U2Vjb25kcygwKTtcbiAgICAgICAgICBjdXJyZW50RGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICAgICAgaG91ck1hcFttXSA9IGlzRGF0ZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIGN1cnJlbnREYXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBob3VyTWFwW21dID0gaXNBbGxvd2VkKGgsIG0sIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBhMjRobVtoXSA9IGhvdXJNYXA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGEyNGhtO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMucGF0dGVybiA9IC9eWzAtOV17MSwyfTo/KFswLTldezEsMn0pPyQvO1xuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuX3RpbWVwaWNrZXIubW9kYWxSZWYgfHxcbiAgICAgICF0aGlzLl90aW1lcGlja2VyLm1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGltZXBpY2tlci5tb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0ge1xuICAgICAgdmFsdWU6IHRoaXMuY3VycmVudFZhbHVlLFxuICAgICAgb2tMYWJlbDogdGhpcy5va0xhYmVsLFxuICAgICAgY2FuY2VsTGFiZWw6IHRoaXMuY2FuY2VsTGFiZWwsXG4gICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZSxcbiAgICAgIGFsbG93ZWQyNEhvdXJNYXA6IHRoaXMuYWxsb3dlZDI0SG91ck1hcCxcbiAgICB9O1xuICB9XG5cbiAgY2hlY2tWYWxpZGl0eSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaG91ciA9IHZhbHVlLmdldEhvdXJzKCk7XG4gICAgY29uc3QgbWludXRlcyA9IHZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICByZXR1cm4gaXNBbGxvd2VkKGhvdXIsIG1pbnV0ZXMsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBudWxsLCBpc0lubmVyQ2FsbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCFpc0lubmVyQ2FsbCkge1xuICAgICAgdGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiAodGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSBmYWxzZSkpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUuc2V0U2Vjb25kcygwKTtcbiAgICAgIHZhbHVlLnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSAmJiArdGhpcy52YWx1ZSA9PT0gKyh2YWx1ZSA/PyAwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG4iXX0=
|
|
@@ -15,9 +15,10 @@ import * as i2$1 from '@angular/material/icon';
|
|
|
15
15
|
import { MatIconModule } from '@angular/material/icon';
|
|
16
16
|
import { MatInputModule } from '@angular/material/input';
|
|
17
17
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
18
|
+
import * as i1$2 from '@angular/forms';
|
|
19
|
+
import { Validators } from '@angular/forms';
|
|
18
20
|
import * as i4 from '@angular/material/form-field';
|
|
19
21
|
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
20
|
-
import * as i1$2 from '@angular/forms';
|
|
21
22
|
import * as i2$2 from '@angular/cdk/a11y';
|
|
22
23
|
import * as i3$1 from '@angular/cdk/platform';
|
|
23
24
|
import * as i5 from '@angular/material/core';
|
|
@@ -944,6 +945,9 @@ class MatTimepickerDirective {
|
|
|
944
945
|
describedBy = '';
|
|
945
946
|
errorStateMatcher;
|
|
946
947
|
get required() {
|
|
948
|
+
if (this.ngControl?.control) {
|
|
949
|
+
return this.ngControl.control.hasValidator(Validators.required);
|
|
950
|
+
}
|
|
947
951
|
return this._required;
|
|
948
952
|
}
|
|
949
953
|
set required(req) {
|
|
@@ -980,7 +984,7 @@ class MatTimepickerDirective {
|
|
|
980
984
|
// tslint:disable-next-line:variable-name
|
|
981
985
|
_isPm = false;
|
|
982
986
|
// tslint:disable-next-line:variable-name
|
|
983
|
-
_value;
|
|
987
|
+
_value = null;
|
|
984
988
|
// tslint:disable-next-line:variable-name
|
|
985
989
|
_formattedValueString = '';
|
|
986
990
|
// tslint:disable-next-line:variable-name
|
|
@@ -993,7 +997,7 @@ class MatTimepickerDirective {
|
|
|
993
997
|
if (!value) {
|
|
994
998
|
this._formattedValueString = '';
|
|
995
999
|
this.setInputElementValue(value);
|
|
996
|
-
this.currentValue = value;
|
|
1000
|
+
this.currentValue = value ?? new Date();
|
|
997
1001
|
return;
|
|
998
1002
|
}
|
|
999
1003
|
const { hour, isPm } = convertHoursForMode(value.getHours());
|
|
@@ -1029,7 +1033,8 @@ class MatTimepickerDirective {
|
|
|
1029
1033
|
let value = this.elRef.nativeElement.value;
|
|
1030
1034
|
const length = value.length;
|
|
1031
1035
|
if (length === 0) {
|
|
1032
|
-
|
|
1036
|
+
this.writeValue(null, true);
|
|
1037
|
+
this._value = null;
|
|
1033
1038
|
this._skipValueChangeEmission = true;
|
|
1034
1039
|
Promise.resolve().then(() => (this._skipValueChangeEmission = false));
|
|
1035
1040
|
if (this.onChangeFn) {
|
|
@@ -1240,7 +1245,7 @@ class MatTimepickerDirective {
|
|
|
1240
1245
|
for (let h = 0; h < 24; h++) {
|
|
1241
1246
|
for (let m = 0; m < 60; m++) {
|
|
1242
1247
|
const hourMap = a24hm[h] || {};
|
|
1243
|
-
if (isStrictMode) {
|
|
1248
|
+
if (isStrictMode && this.value) {
|
|
1244
1249
|
const currentDate = new Date(this.value.getTime());
|
|
1245
1250
|
currentDate.setHours(h);
|
|
1246
1251
|
currentDate.setMinutes(m);
|
|
@@ -1289,7 +1294,10 @@ class MatTimepickerDirective {
|
|
|
1289
1294
|
value.setSeconds(0);
|
|
1290
1295
|
value.setMilliseconds(0);
|
|
1291
1296
|
}
|
|
1292
|
-
if (+this.value
|
|
1297
|
+
if (this.value && +this.value === +(value ?? 0)) {
|
|
1298
|
+
return;
|
|
1299
|
+
}
|
|
1300
|
+
else {
|
|
1293
1301
|
this.value = value;
|
|
1294
1302
|
}
|
|
1295
1303
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onemrvapublic-design-system-mat-timepicker.mjs","sources":["../../../../projects/onemrva/design-system/mat-timepicker/src/util.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/clock/clock.component.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/clock/clock.component.html","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.html","../../../../projects/onemrva/design-system/mat-timepicker/src/onemrva-mat-timepicker.component.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/onemrva-mat-timepicker.component.html","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.html","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker.directive.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/onemrva-mat-timepicker.module.ts","../../../../projects/onemrva/design-system/mat-timepicker/onemrvapublic-design-system-mat-timepicker.ts"],"sourcesContent":["import { ITimeData, ClockViewType } from './interfaces-and-types';\n\nexport function twoDigits(n: number) {\n return n < 10 ? `0${n}` : `${n}`;\n}\n\nexport function addDays(date: Date, days: number) {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n}\n\nexport function convertHoursForMode(hour: number) {\n const isPm = hour >= 12;\n return { hour, isPm };\n}\n\nfunction mod(a: number, b: number) {\n return a - Math.floor(a / b) * b;\n}\n\nexport function getShortestAngle(from: number, to: number) {\n const difference = to - from;\n return from + mod(difference + 180, 360) - 180;\n}\n\nexport function isDateInRange(minDate: Date, maxDate: Date, current: Date) {\n const unixCurrentDate = +current;\n return (!minDate || +minDate <= unixCurrentDate) && (!maxDate || unixCurrentDate <= +maxDate);\n}\n\nexport function isTimeInRange(minDate: Date, maxDate: Date, current: Date) {\n if (minDate instanceof Date) {\n const newMinDate = new Date();\n newMinDate.setHours(minDate.getHours());\n newMinDate.setMinutes(minDate.getMinutes());\n newMinDate.setSeconds(0);\n newMinDate.setMilliseconds(0);\n minDate = newMinDate;\n }\n if (maxDate instanceof Date) {\n const newMaxDate = new Date();\n newMaxDate.setHours(maxDate.getHours());\n newMaxDate.setMinutes(maxDate.getMinutes());\n newMaxDate.setSeconds(0);\n newMaxDate.setMilliseconds(0);\n maxDate = newMaxDate;\n }\n if (current instanceof Date) {\n const newCurrent = new Date();\n newCurrent.setHours(current.getHours());\n newCurrent.setMinutes(current.getMinutes());\n newCurrent.setSeconds(0);\n newCurrent.setMilliseconds(0);\n current = newCurrent;\n }\n const unixCurrentDate = +current;\n return (!minDate || +minDate <= unixCurrentDate) && (!maxDate || unixCurrentDate <= +maxDate);\n}\n\n// used when generating the allowed maps\n\nexport function isAllowed(\n hour: number,\n minutes: number,\n minDate: Date,\n maxDate: Date\n) {\n if (hour > 24 || hour < 0 || minutes > 60 || minutes < 0) { return false; }\n\n if (!minDate && !maxDate) { return true; }\n\n const checkDate = new Date();\n\n checkDate.setHours(hour);\n checkDate.setMinutes(minutes);\n checkDate.setSeconds(0);\n checkDate.setMilliseconds(0);\n\n return isDateInRange(minDate, maxDate, checkDate);\n}\n\n// used by the clock component to visually disable the not allowed values\n\nexport function getIsAvailabeFn( allowed24HourMap : any) {\n return (value: number, viewType: ClockViewType, h: number) => {\n const isHourCheck = viewType === 'hours';\n const [hour, minutes] = isHourCheck ? [value, 0] : [h, value];\n\n if (!allowed24HourMap) { return true; }\n\n if (isHourCheck) {\n return !!Object.values(allowed24HourMap[hour]).find(v => v === true);\n }\n return allowed24HourMap[hour][minutes];\n };\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {\n ClockViewType,\n ClockNumber,\n IAllowed24HourMap,\n} from '../interfaces-and-types';\nimport { getIsAvailabeFn } from '../util';\nimport { ThemePalette } from '@angular/material/core';\n\n@Component({\n selector: 'mat-clock',\n templateUrl: './clock.component.html',\n styleUrls: ['./clock.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClockComponent implements OnChanges {\n @Input() viewType: ClockViewType = 'hours';\n @Input() color: ThemePalette = 'primary';\n @Input() formattedValue: number = 0;\n @Input() minDate!: Date;\n @Input() maxDate!: Date;\n @Input() formattedHours: number = 0;\n @Input() minutes!: number;\n @Output() changeEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() unavailableSelection: EventEmitter<any> = new EventEmitter<any>();\n @Output() invalidSelection: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() allowed24HourMap!: IAllowed24HourMap;\n\n isFormattedValueAllowed = true;\n\n isAvailableFn?: ReturnType<typeof getIsAvailabeFn>;\n\n touching = false;\n angle?: number;\n numbers: ClockNumber[] = [];\n secondaryNumbers: ClockNumber[] = [];\n minuteDots: ClockNumber[] = [];\n invalidMeridiemEmitted = true;\n\n initIsAllowedFn() {\n if (!this.allowed24HourMap) {\n return;\n }\n this.isAvailableFn = getIsAvailabeFn(this.allowed24HourMap);\n }\n\n isAvailable(value: number) {\n return this.isAvailableFn\n ? this.isAvailableFn(value, this.viewType, this.formattedHours)\n : true;\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n if (\n simpleChanges['allowed24HourMap'] ||\n (simpleChanges['mode'] && !simpleChanges['mode'].firstChange)\n ) {\n this.initIsAllowedFn();\n }\n\n this.calculateAngule();\n this.setNumbers();\n\n if (simpleChanges['formattedValue'] && this.allowed24HourMap) {\n this.isFormattedValueAllowed = this.isAvailable(this.formattedValue);\n }\n\n const isSelectedTimeAvailable = this.isAvailableFn\n ? this.isAvailableFn(this.formattedValue, 'minutes', this.formattedHours)\n : true;\n\n if (this.viewType === 'minutes' && this.isAvailableFn) {\n const areMinitesAvailable = this.isAvailableFn(\n this.minutes,\n 'minutes',\n this.formattedHours\n );\n if (!areMinitesAvailable) {\n if (this.minDate && this.minDate.getMinutes() > this.minutes) {\n setTimeout(() => {\n this.changeEvent.emit({\n value: this.minDate.getMinutes(),\n type: 'minutes',\n });\n });\n } else {\n setTimeout(() => {\n this.changeEvent.emit({\n value: this.maxDate.getMinutes(),\n type: 'minutes',\n });\n });\n }\n }\n }\n\n if (isSelectedTimeAvailable && this.invalidMeridiemEmitted) {\n this.invalidMeridiemEmitted = false;\n }\n\n this.invalidSelection.emit(!isSelectedTimeAvailable);\n }\n\n calculateAngule() {\n this.angle = this.getPointerAngle(this.formattedValue, this.viewType);\n }\n\n setNumbers() {\n if (this.viewType === 'hours') {\n // if (this.mode === '12h') {\n // const meridiem : string = this.isPm ? 'pm' : 'am';\n // const isAllowedFn = this.allowed12HourMap ? (num : number) => this.allowed12HourMap[meridiem][num + 1][0] : undefined;\n // this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);\n // this.secondaryNumbers = [];\n // this.minuteDots = [];\n // } else if (this.mode === '24h') {\n const isAllowedFn = this.allowed24HourMap\n ? (num: number) => this.allowed24HourMap[num][0]\n : undefined;\n this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);\n this.secondaryNumbers = this.getNumbers(\n 12,\n { size: 256 - 64, start: 13 },\n isAllowedFn\n );\n this.minuteDots = [];\n //}\n } else {\n //const meridiem : string = this.isPm ? 'pm' : 'am';\n const isAllowedFn =\n // !!this.allowed12HourMap ? (num : number) => this.allowed12HourMap[meridiem][this.formattedHours][num] :\n !!this.allowed24HourMap\n ? (num: number) => this.allowed24HourMap[this.formattedHours][num]\n : undefined;\n\n this.numbers = this.getNumbers(\n 12,\n { size: 256, start: 5, step: 5 },\n isAllowedFn\n );\n this.minuteDots = this.getNumbers(60, { size: 256, start: 13 }).map(\n (digit) => {\n if (digit.display <= 59) {\n digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;\n return digit;\n }\n digit.display = digit.display - 60;\n digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;\n return digit;\n }\n );\n this.secondaryNumbers = [];\n }\n }\n\n disableAnimatedPointer() {\n this.touching = true;\n }\n\n enableAnimatedPointer() {\n this.touching = false;\n }\n\n handleTouchMove = (e: any) => {\n e.preventDefault(); // prevent scrolling behind the clock on iOS\n const rect = e.target.getBoundingClientRect();\n this.movePointer(\n e.changedTouches[0].clientX - rect.left,\n e.changedTouches[0].clientY - rect.top\n );\n };\n\n handleTouchEnd(e: any) {\n this.handleTouchMove(e);\n this.enableAnimatedPointer();\n }\n\n handleMouseMove(e: any) {\n // MouseEvent.which is deprecated, but MouseEvent.buttons is not supported in Safari\n if (e.buttons === 1 || e.which === 1) {\n const rect = e.target.getBoundingClientRect();\n this.movePointer(e.clientX - rect.left, e.clientY - rect.top);\n }\n }\n\n handleClick(e: any) {\n const rect = e.target.getBoundingClientRect();\n this.movePointer(e.clientX - rect.left, e.clientY - rect.top);\n }\n\n movePointer(x: number, y: number) {\n const value = this.getPointerValue(x, y, 256);\n if (!this.isAvailable(value)) {\n this.unavailableSelection.emit();\n return;\n }\n if (value !== this.formattedValue) {\n this.changeEvent.emit({\n value,\n type: this.viewType !== 'minutes' ? 'hours' : 'minutes',\n });\n if (this.viewType !== 'minutes') {\n if (!this.isAvailable(value)) {\n if (this.minDate && this.isAvailable(value)) {\n this.changeEvent.emit({\n value: this.minDate.getMinutes(),\n type: 'minutes',\n });\n } else if (this.maxDate && this.isAvailable(value)) {\n this.changeEvent.emit({\n value: this.maxDate.getMinutes(),\n type: 'minutes',\n });\n }\n }\n }\n }\n }\n\n getNumbers(\n count: number,\n { size = 0, start = 1, step = 1 },\n isAllowedFn?: (num: number) => boolean\n ) {\n return Array.apply(null, Array(count)).map((_, i) => ({\n display: i * step + start,\n translateX: (size / 2 - 20) * Math.cos((2 * Math.PI * (i - 2)) / count),\n translateY: (size / 2 - 20) * Math.sin((2 * Math.PI * (i - 2)) / count),\n allowed: isAllowedFn ? isAllowedFn(i) : true,\n }));\n }\n\n getPointerAngle(value: number, mode: ClockViewType) {\n if (this.viewType === 'hours') {\n return (360 / 12) * ((value % 12) - 3);\n }\n return (360 / 60) * (value - 15);\n }\n\n getPointerValue(x: number, y: number, size: number) {\n let value;\n let angle = (Math.atan2(size / 2 - x, size / 2 - y) / Math.PI) * 180;\n if (angle < 0) {\n angle = 360 + angle;\n }\n\n if (this.viewType === 'hours') {\n const radius = Math.sqrt(\n Math.pow(size / 2 - x, 2) + Math.pow(size / 2 - y, 2)\n );\n value = 12 - Math.round((angle * 12) / 360);\n if (value === 0) {\n value = 12;\n }\n if (radius < size / 2 - 32) {\n value = value === 12 ? 0 : value + 12;\n }\n return value;\n }\n\n value = Math.round(60 - (60 * angle) / 360);\n return value === 60 ? 0 : value;\n }\n}\n","<div class=\"root\">\n <div class=\"circle\" (touchmove)=\"handleTouchMove($event)\" (mousemove)=\"handleMouseMove($event)\"\n (touchstart)=\"disableAnimatedPointer()\" (mousedown)=\"disableAnimatedPointer()\" (touchend)=\"handleTouchEnd($event)\"\n (mouseup)=\"enableAnimatedPointer()\" (click)=\"handleClick($event)\">\n <div class=\"pointer-container\"\n [ngClass]=\"{ 'small-pointer': viewType === 'hours' && (formattedValue === 0 || formattedValue > 12), 'animated-pointer': !touching }\"\n [style.transform]=\"'rotate(' + angle + 'deg)'\">\n <button mat-mini-fab [color]=\"color\" class=\"inner-dot\"></button>\n <mat-toolbar [color]=\"color\" class=\"pointer\">\n <button mat-mini-fab [color]=\"color\" class=\"outer-dot\"\n [ngClass]=\" { 'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0 }\">\n <ng-container *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\">·</ng-container>\n </button>\n </mat-toolbar>\n </div>\n <ng-container *ngFor=\"let digit of minuteDots;\">\n <button mat-mini-fab class=\"number minute-dot\"\n [ngClass]=\"{ 'selected': formattedValue === digit.display || (digit.display === 0 && formattedValue === 0), 'disabled': !isAvailable(digit.display === 60 ? 0 : digit.display)}\"\n [style.transform]=\"'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\">\n <ng-container *ngIf=\"digit.display % 5 !== 0\">·</ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of numbers;\">\n <button mat-mini-fab [color]=\"color\" class=\"number\"\n [ngClass]=\"{ 'selected': formattedValue === digit.display || (digit.display === 60 && formattedValue === 0), 'disabled': !isAvailable(digit.display === 60 ? 0 : digit.display)}\"\n [style.transform]=\"'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\">\n <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n <ng-template #minutesTemplate>{{ digit.display === 60 ? '00' : digit.display }}</ng-template>\n <ng-container *ngIf=\"viewType === 'minutes' then minutesTemplate else hoursTemplate;\"></ng-container>\n </button>\n\n </ng-container>\n <ng-container *ngFor=\"let digit of secondaryNumbers;\">\n <button mat-mini-fab [color]=\"color\" class=\"number small-number\"\n [ngClass]=\"{ 'selected': formattedValue === digit.display || (digit.display === 24 && formattedValue === 0), 'disabled': !isAvailable(digit.display === 24 ? 0 : digit.display)}\"\n [style.transform]=\"'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\">\n {{ digit.display === 24 ? '00' : digit.display }}\n </button>\n\n </ng-container>\n </div>\n</div>","import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { Component, EventEmitter, Output, Inject } from '@angular/core';\nimport { ClockViewType, IAllowed24HourMap } from '../interfaces-and-types';\nimport { twoDigits, convertHoursForMode } from '../util';\nimport { Subject } from 'rxjs';\nimport { ThemePalette } from '@angular/material/core';\n\n@Component({\n selector: 'mat-timepicker-dialog',\n templateUrl: './timepicker-dialog.component.html',\n styleUrls: ['./timepicker-dialog.component.scss'],\n})\nexport class MatTimepickerComponentDialogComponent {\n twoDigits = twoDigits;\n\n @Output() changeEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() okClickEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() cancelClickEvent: EventEmitter<any> = new EventEmitter<any>();\n\n allowed24HourMap!: IAllowed24HourMap;\n\n invalidSelection = false;\n\n okLabel: string = '';\n cancelLabel: string = '';\n\n set value(value: any) {\n value = value || this.minDate || this.maxDate || new Date();\n this.hours = value.getHours();\n this.minutes = value.getMinutes();\n this._value = value;\n }\n\n get value() {\n return this._value;\n }\n\n viewType: ClockViewType = 'hours';\n\n minutes: any;\n color: ThemePalette = 'primary';\n isPm = false;\n skipMinuteAutoSwitch = false;\n autoSwitchID: any;\n editHoursClicked = false;\n isClosing = false;\n\n minDate!: Date;\n maxDate!: Date;\n\n // tslint:disable-next-line:variable-name\n _formattedHour: any;\n // tslint:disable-next-line:variable-name\n _hours: any;\n // tslint:disable-next-line:variable-name\n _value?: Date;\n\n set hours(value: any) {\n this._hours = value;\n this._formattedHour = convertHoursForMode(this.hours).hour;\n }\n get hours() {\n return this._hours;\n }\n\n get formattedHours() {\n return this._formattedHour;\n }\n\n bindData(data: any) {\n this.okLabel = data.okLabel;\n this.cancelLabel = data.cancelLabel;\n this.color = data.color;\n this.minDate = data.minDate;\n this.maxDate = data.maxDate;\n this.allowed24HourMap = data.allowed24HourMap;\n }\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n public dialog: MatDialog\n ) {\n this.isPm = data.isPm;\n this.bindData(data);\n // keep this always at the bottom\n this.value = data.value;\n }\n\n timepickerInput!: any;\n\n ngDoCheck() {\n this.bindData(this.data);\n }\n\n handleClockChange({\n value,\n type,\n }: {\n value: number;\n type: 'minutes' | 'hours';\n }) {\n if ((type && type === 'hours') || (!type && this.viewType === 'hours')) {\n this.hours = value;\n } else if (\n (type && type === 'minutes') ||\n (!type && this.viewType === 'minutes')\n ) {\n this.minutes = value;\n }\n\n const newValue = new Date();\n const hours = this.hours;\n // newValue.setFullYear(0);\n // newValue.setMonth(0);\n // newValue.setDate(0);\n newValue.setHours(hours);\n newValue.setMinutes(this.minutes);\n newValue.setSeconds(0);\n newValue.setMilliseconds(0);\n this.value = newValue;\n this.changeEvent.emit(newValue);\n }\n\n handleUnavailableSelection() {\n clearTimeout(this.autoSwitchID);\n }\n\n handleClockChangeDone(e: Event) {\n e.preventDefault(); // prevent mouseUp after touchEnd\n\n if (this.viewType === 'hours' && !this.skipMinuteAutoSwitch) {\n this.autoSwitchID = setTimeout(() => {\n this.editMinutes();\n this.autoSwitchID = null;\n }, 300);\n }\n }\n\n editHours() {\n this.viewType = 'hours';\n this.editHoursClicked = true;\n setTimeout(() => {\n this.editHoursClicked = false;\n }, 0);\n }\n\n editMinutes() {\n this.viewType = 'minutes';\n }\n\n invalidSelectionHandler(value: boolean) {\n this.invalidSelection = value;\n }\n\n okClickHandler() {\n this.okClickEvent.emit();\n }\n\n cancelClickHandler() {\n this.cancelClickEvent.emit();\n }\n\n closedStream!: EventEmitter<void>;\n disabled!: boolean;\n id!: string;\n opened!: boolean;\n openedStream!: EventEmitter<void>;\n stateChanges!: Subject<void>;\n}\n","<mat-dialog-content>\n <div class=\"root\">\n <mat-toolbar [color]=\"color\" class=\"header\">\n <div class=\"time-frame\">\n <span\n class=\"time fixed-font-size\"\n [ngClass]=\"{ select: this.viewType === 'hours' && 'active' }\"\n (click)=\"editHours()\"\n >\n {{ twoDigits(formattedHours) }}\n </span>\n <span class=\"fixed-font-size\">:</span>\n <span\n class=\"time fixed-font-size\"\n [ngClass]=\"{ select: this.viewType === 'minutes' && 'active' }\"\n (click)=\"editMinutes()\"\n >\n {{ twoDigits(minutes) }}\n </span>\n </div>\n </mat-toolbar>\n <div class=\"body\">\n <mat-clock\n [allowed24HourMap]=\"allowed24HourMap\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [color]=\"color\"\n [viewType]=\"viewType\"\n [formattedHours]=\"formattedHours\"\n [minutes]=\"minutes\"\n (changeEvent)=\"handleClockChange($event)\"\n (unavailableSelection)=\"handleUnavailableSelection()\"\n [formattedValue]=\"viewType === 'minutes' ? minutes : formattedHours\"\n (mouseup)=\"handleClockChangeDone($event)\"\n (touchend)=\"handleClockChangeDone($event)\"\n (invalidSelection)=\"invalidSelectionHandler($event)\"\n ></mat-clock>\n </div>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button color=\"primary\" (click)=\"cancelClickHandler()\">\n {{ cancelLabel }}\n </button>\n <button\n mat-flat-button\n [disabled]=\"invalidSelection\"\n [color]=\"color\"\n (click)=\"okClickHandler()\"\n >\n {{ okLabel }}\n </button>\n</mat-dialog-actions>\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport { OnemrvaMatColor, OnemrvaMatSize } from '@onemrvapublic/design-system/utils';\nimport { MatTimepickerComponentDialogComponent } from './timepicker-dialog/timepicker-dialog.component';\nimport { Subject } from 'rxjs';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatTimepickerDirective } from './timepicker.directive';\nimport { ThemePalette } from '@angular/material/core';\nimport { first, takeUntil } from 'rxjs/operators';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'mat-timepicker',\n templateUrl: 'onemrva-mat-timepicker.component.html',\n})\nexport class OnemrvaMatTimepickerComponent {\n public modalRef!: MatDialogRef<MatTimepickerComponentDialogComponent>;\n private onChangeFn: any;\n private _value!: Date;\n\n get value(): Date {\n return this._value;\n }\n\n set value(value: Date) {\n this._value = value;\n }\n\n private isAlive: Subject<any> = new Subject<any>();\n\n constructor(public dialog: MatDialog) {}\n\n opened: boolean = false;\n\n public setTimepickerInput(t: MatTimepickerDirective) {\n this.timepickerInput = t;\n }\n timepickerInput: any;\n\n /** Emits when the timepicker's state changes. */\n readonly stateChanges = new Subject<void>();\n\n /** Emits when the timepicker has been opened. */\n @Output('opened') readonly openedStream = new EventEmitter<void>();\n\n /** Emits when the timepicker has been closed. */\n @Output('closed') readonly closedStream = new EventEmitter<void>();\n\n /**\n * Returns the `aria-label` attribute of the element.\n *\n * @example\n * ```typescript\n * let timepickerLabel = this.timepicker.ariaLabel;\n * ```\n *\n */\n @HostBinding('attr.aria-label')\n public ariaLabel = '';\n\n /**\n * Returns the `role` attribute of the element.\n *\n * @example\n * ```typescript\n * let timepickerRole = this.timepicker.role;\n * ```\n */\n @HostBinding('attr.role')\n public role = '';\n\n /**\n * Host `class.onemrva-mat-timepicker` binding.\n *\n * @hidden\n * @internal\n */\n @HostBinding('class.onemrva-mat-timepicker')\n public cssClass = 'onemrva-mat-timepicker';\n\n /**\n * Sets the `id` of the element. If not set, the first component instance will have `id` = `\"onemrva-mat-timepicker-0\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-timepicker id=\"my-first-timepicker\"></onemrva-mat-timepicker>\n * ```\n */\n @HostBinding('attr.id')\n @Input()\n public id = `onemrva-mat-timepicker-${NEXT_ID++}`;\n\n /**\n * Sets the `data-cy` of the element. If not set, the first component instance will have `data-cy` = `\"onemrva-mat-timepicker-0\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-timepicker id=\"my-first-timepicker\"></onemrva-mat-timepicker>\n * ```\n */\n @HostBinding('attr.data-cy')\n @Input()\n public dataCy = `onemrva-mat-timepicker-${NEXT_ID++}`;\n\n /**\n * @hidden\n * @internal\n */\n private _color: ThemePalette = 'primary';\n\n /**\n * Returns the color of the element.\n *\n * @example\n * ```typescript\n * let color = this.timepicker.color;\n * ```\n */\n @Input()\n public get color(): ThemePalette {\n return this._color;\n }\n\n /**\n * Sets the size of the element.\n * By default, the color is `\"primary\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-timepicker size=\"large\"></onemrva-mat-timepicker>\n * ```\n */\n public set color(value: ThemePalette) {\n switch (value) {\n case OnemrvaMatColor.PRIMARY:\n case OnemrvaMatColor.ACCENT:\n case OnemrvaMatColor.WARN:\n this._color = value;\n break;\n default:\n this._color = OnemrvaMatColor.PRIMARY;\n }\n }\n\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-accent')\n public get _isAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n /**\n * @hidden\n * @internal\n */\n private _size: string | OnemrvaMatSize = OnemrvaMatSize.SMALL;\n\n /**\n * Returns the size of the element.\n *\n * @example\n * ```typescript\n * let timepickerSize = this.timepicker.size;\n * ```\n */\n @Input()\n public get size(): string | OnemrvaMatSize {\n return this._size;\n }\n\n /**\n * Sets the size of the element.\n * By default, the size is `\"medium\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-timepicker size=\"large\"></onemrva-mat-timepicker>\n * ```\n */\n public set size(value: string | OnemrvaMatSize) {\n switch (value) {\n case OnemrvaMatSize.XSMALL:\n case OnemrvaMatSize.SMALL:\n case OnemrvaMatSize.MEDIUM:\n case OnemrvaMatSize.LARGE:\n case OnemrvaMatSize.XLARGE:\n this._size = value;\n break;\n default:\n this._size = OnemrvaMatSize.MEDIUM;\n }\n }\n\n open() {\n if (this.timepickerInput.disabled) {\n return;\n }\n\n this.value = this.timepickerInput.currentValue;\n if (this.value === undefined || this.value === null) {\n this.value = new Date();\n }\n\n this.modalRef = this.dialog.open(MatTimepickerComponentDialogComponent, {\n autoFocus: false,\n data: {\n value: this.timepickerInput.currentValue,\n okLabel: this.timepickerInput.okLabel,\n cancelLabel: this.timepickerInput.cancelLabel,\n color: this.color,\n minDate: this.timepickerInput.minDate,\n maxDate: this.timepickerInput.maxDate,\n allowed24HourMap: this.timepickerInput.allowed24HourMap,\n },\n });\n\n const instance = this.modalRef.componentInstance;\n instance.changeEvent\n .pipe(takeUntil(this.isAlive))\n .subscribe(this.handleChange);\n instance.okClickEvent\n .pipe(takeUntil(this.isAlive))\n .subscribe(this.handleOk);\n instance.cancelClickEvent\n .pipe(takeUntil(this.isAlive))\n .subscribe(this.handleCancel);\n this.modalRef\n .beforeClosed()\n .pipe(first())\n .subscribe(() => (instance.isClosing = true));\n this.modalRef\n .afterClosed()\n .pipe(first())\n .subscribe(() => {\n if (this.timepickerInput.onTouchedFn) {\n this.timepickerInput.onTouchedFn();\n }\n //this.modalRef = null;\n this.timepickerInput.elRef.nativeElement.focus();\n });\n this.timepickerInput.currentValue = this.value as Date;\n }\n\n handleChange = (newValue: Date) => {\n if (!(newValue instanceof Date)) {\n return;\n }\n const v =\n this.value instanceof Date ? new Date(this.value.getTime()) : new Date();\n v.setHours(newValue.getHours());\n v.setMinutes(newValue.getMinutes());\n v.setSeconds(0);\n v.setMilliseconds(0);\n this.value = v;\n };\n\n handleOk = () => {\n if (this.onChangeFn) {\n this.onChangeFn(this.value);\n }\n this.timepickerInput.value = this.value;\n this.modalRef.close();\n };\n\n handleCancel = () => {\n this.modalRef.close();\n };\n\n ngOnDestroy() {\n this.isAlive.next('0');\n this.isAlive.complete();\n this.stateChanges.complete();\n\n // if (this._platform.isBrowser) {\n // this.fm.stopMonitoring(this.elRef.nativeElement);\n // }\n //\n // this.listeners.forEach(l => l());\n }\n}\n","","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { merge, Observable, of as observableOf, Subscription } from 'rxjs';\nimport { OnemrvaMatTimepickerComponent } from '../onemrva-mat-timepicker.component';\n\n/** Can be used to override the icon of a `matDatepickerToggle`. */\n@Directive({\n selector: '[matDatepickerToggleIcon]',\n})\nexport class MatTimepickerToggleIcon {}\n\n@Component({\n selector: 'mat-timepicker-toggle',\n templateUrl: 'timepicker-toggle.component.html',\n styleUrls: ['timepicker-toggle.component.scss'],\n host: {\n class: 'mat-timepicker-toggle',\n '[attr.tabindex]': 'null',\n '[class.mat-timepicker-toggle-active]': 'timepicker && timepicker.opened',\n '[class.mat-accent]': 'timepicker && timepicker.color === \"accent\"',\n '[class.mat-warn]': 'timepicker && timepicker.color === \"warn\"',\n // Used by the test harness to tie this toggle to its timepicker.\n '[attr.data-mat-calendar]': 'timepicker ? timepicker.id : null',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n },\n exportAs: 'matDatepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTimePickerToggle<D>\n implements AfterContentInit, OnChanges, OnDestroy\n{\n private _stateChanges = Subscription.EMPTY;\n\n /** Datepicker instance that the button will toggle. */\n @Input('for') timepicker!: OnemrvaMatTimepickerComponent;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Screenreader label for the button. */\n @Input() ariaLabel: string = '';\n\n /** Whether the toggle button is disabled. */\n @Input()\n get disabled(): boolean {\n if (this._disabled === undefined && this.timepicker) {\n return this.timepicker.timepickerInput.disabled;\n }\n return !!this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean = false;\n\n /** Whether ripples on the toggle should be disabled. */\n @Input() disableRipple: boolean = false;\n\n /** Underlying button element. */\n //@ViewChild('button') _button: MatButton;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string\n ) {\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex =\n parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['timepicker']) {\n this._watchStateChanges();\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n\n _open(event: Event): void {\n if (this.timepicker && !this.disabled) {\n this.timepicker.open();\n event.stopPropagation();\n }\n }\n\n private _watchStateChanges() {\n const datepickerStateChanged = this.timepicker\n ? this.timepicker.stateChanges\n : observableOf();\n const inputStateChanged =\n this.timepicker && this.timepicker.timepickerInput\n ? this.timepicker.timepickerInput.stateChanges\n : observableOf();\n const datepickerToggled = this.timepicker\n ? merge(this.timepicker.openedStream, this.timepicker.closedStream)\n : observableOf();\n\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(\n datepickerStateChanged as Observable<void>,\n inputStateChanged,\n datepickerToggled\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n}\n","<button\n #button\n mat-icon-button\n type=\"button\"\n [title]=\"ariaLabel\"\n [attr.aria-haspopup]=\"timepicker ? 'dialog' : null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\">\n\n <mat-icon>schedule</mat-icon>\n\n <ng-content select=\"[mattimepickerToggleIcon]\"></ng-content>\n</button>\n","import {\n ControlValueAccessor,\n NgForm,\n NgControl,\n FormGroupDirective,\n FormControl,\n} from '@angular/forms';\nimport {\n Directive,\n OnInit,\n EventEmitter,\n Input,\n ElementRef,\n OnChanges,\n Renderer2,\n AfterViewInit,\n Optional,\n SimpleChanges,\n NgZone,\n HostBinding,\n Self,\n Output,\n HostListener,\n} from '@angular/core';\nimport {\n MatFormFieldControl,\n MatFormField,\n} from '@angular/material/form-field';\nimport { IAllowed24HourMap } from './interfaces-and-types';\nimport {\n twoDigits,\n convertHoursForMode,\n isAllowed,\n isDateInRange,\n isTimeInRange,\n} from './util';\nimport { Subject, Subscription } from 'rxjs';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { OnemrvaMatTimepickerComponent } from './onemrva-mat-timepicker.component';\n\n@Directive({\n selector: 'input[matTimepicker]',\n providers: [\n { provide: MatFormFieldControl, useExisting: MatTimepickerDirective },\n ],\n // tslint:disable-next-line:no-host-metadata-property\n host: {\n // tslint:disable-next-line:object-literal-key-quotes\n class: 'mat-input-element mat-form-field-autofill-control',\n '[class.mat-input-server]': '_isServer',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.readonly]': 'readonly || null',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-required]': 'required.toString()',\n },\n exportAs: 'matTimepicker',\n})\nexport class MatTimepickerDirective\n implements\n OnInit,\n OnChanges,\n AfterViewInit,\n ControlValueAccessor,\n MatFormFieldControl<any>\n{\n static nextId = 0;\n\n /** Whether the component is being rendered on the server. */\n // tslint:disable-next-line:variable-name\n readonly _isServer: boolean;\n private _closedSubscription = Subscription.EMPTY;\n\n /** The datepicker that this input is associated with. */\n @Input()\n set matTimepicker(timepicker: OnemrvaMatTimepickerComponent) {\n if (timepicker) {\n this._timepicker = timepicker;\n this._timepicker.setTimepickerInput(this);\n this._closedSubscription = timepicker.closedStream.subscribe(() =>\n this._onTouched()\n );\n //this._registerModel(datepicker.registerInput(this));\n }\n }\n _timepicker!: OnemrvaMatTimepickerComponent;\n\n // tslint:disable-next-line:variable-name\n _errorState = false;\n get errorState() {\n const oldState = this._errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const control = this.ngControl\n ? (this.ngControl.control as FormControl)\n : null;\n const newState = this.errorStateMatcher\n ? this.errorStateMatcher.isErrorState(control, parent)\n : oldState;\n\n if (newState !== oldState) {\n this._errorState = newState;\n this.stateChanges.next();\n }\n\n return newState;\n }\n _onTouched = () => {};\n\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n // tslint:disable-next-line:variable-name\n protected _disabled = false;\n\n @Input() get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n // tslint:disable-next-line:variable-name\n protected _id: string = '0';\n\n @Input() get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n // tslint:disable-next-line:variable-name\n private _readonly = false;\n\n private isAlive: Subject<any> = new Subject<any>();\n stateChanges = new Subject<void>();\n\n // tslint:disable-next-line:variable-name\n protected _uid = `mat-input-${MatTimepickerDirective.nextId++}`;\n @HostBinding('class.floating') get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n @HostBinding('attr.aria-describedby') describedBy = '';\n\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n @Input() get required() {\n return this._required;\n }\n\n set required(req) {\n this._required = coerceBooleanProperty(req);\n this.stateChanges.next();\n }\n // tslint:disable-next-line:variable-name\n private _required = false;\n\n @Input() get placeholder() {\n return this._placeholder;\n }\n set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n // tslint:disable-next-line:variable-name\n private _placeholder: string = '';\n\n focused = false;\n private pattern: RegExp = new RegExp('[0-2]?[0-9]:[0-6]?[0-9]');\n\n private allowed24HourMap: IAllowed24HourMap = this.generateAllowedMap();\n\n private isInputFocused = false;\n\n /** Override the label of the ok button. */\n @Input() okLabel = 'Ok';\n /** Override the label of the cancel button. */\n @Input() cancelLabel = 'Cancel';\n\n /** Sets the clock mode, 12-hour or 24-hour clocks are supported. */\n @Input() color = 'primary';\n @Input() disableDialogOpenOnClick = false;\n @Input() strict = true;\n\n controlType = 'angular-material-timepicker';\n\n private listeners: (() => void)[] = [];\n\n @Input() minDate!: Date;\n @Input() maxDate!: Date;\n\n // tslint:disable-next-line:variable-name\n private _isPm: boolean = false;\n // tslint:disable-next-line:variable-name\n private _value!: Date;\n // tslint:disable-next-line:variable-name\n private _formattedValueString: string = '';\n\n // tslint:disable-next-line:variable-name\n private _skipValueChangeEmission = true;\n\n @Input() set value(value: Date) {\n if (value === this._value) {\n return;\n }\n this._value = value;\n if (!value) {\n this._formattedValueString = '';\n this.setInputElementValue(value);\n this.currentValue = value;\n return;\n }\n\n const { hour, isPm } = convertHoursForMode(value.getHours());\n this._formattedValueString = `${twoDigits(value.getHours())}:${twoDigits(\n value.getMinutes()\n )}`;\n\n if (!this.isInputFocused) {\n this.setInputElementValue(this.formattedValueString);\n }\n this.currentValue = value;\n this.stateChanges.next();\n\n if (this._skipValueChangeEmission) {\n return;\n }\n this.timeChange.emit(this.currentValue);\n\n if (this.onChangeFn) this.onChangeFn(this.value);\n }\n\n get value() {\n return this._value;\n }\n\n get empty() {\n return !(this.currentValue instanceof Date);\n }\n\n private get formattedValueString() {\n return this._formattedValueString;\n }\n\n private currentValue!: Date;\n\n private onChangeFn: any;\n private onTouchedFn: any;\n private combination: string[] = [];\n\n @Output() timeChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() invalidInput: EventEmitter<any> = new EventEmitter<any>();\n\n @HostListener('input') inputHandler() {\n let value = (this.elRef.nativeElement as any).value as string;\n const length = value.length;\n\n if (length === 0) {\n //this.writeValue(null, true);\n this._skipValueChangeEmission = true;\n Promise.resolve().then(() => (this._skipValueChangeEmission = false));\n\n if (this.onChangeFn) {\n this.onChangeFn(null);\n }\n\n return;\n }\n\n const valueHasColumn = value.includes(':');\n let [hours, minutes]: any =\n length === 1\n ? [value, 0]\n : length === 2 && !valueHasColumn\n ? [value, 0]\n : valueHasColumn\n ? value.split(':')\n : value.split(/(\\d\\d)/).filter((v) => v);\n\n hours = +hours;\n\n if (/\\s/.test(minutes)) {\n let other;\n [minutes, other] = minutes.split(/\\s/);\n if (other === 'pm' && !isNaN(hours) && hours < 12) {\n hours += 12;\n }\n }\n\n minutes = +minutes;\n\n if (isNaN(hours) || isNaN(minutes)) {\n //this.writeValue(null, true);\n this._skipValueChangeEmission = true;\n Promise.resolve().then(() => (this._skipValueChangeEmission = false));\n return;\n }\n\n if (+hours > 24) {\n hours = '24';\n } else if (+hours < 0) {\n hours = '0';\n }\n\n if (+minutes > 59) {\n minutes = '59';\n } else if (+minutes < 0) {\n minutes = '0';\n }\n\n const d = this.value ? new Date(this.value.getTime()) : new Date();\n d.setHours(+hours);\n d.setMinutes(+minutes);\n d.setSeconds(0);\n d.setMilliseconds(0);\n\n const isValueInRange = isDateInRange(this.minDate, this.maxDate, d);\n if (!isValueInRange) {\n this.invalidInput.emit();\n }\n\n this.writeValue(d, true);\n if (this.onChangeFn) {\n this.onChangeFn(d);\n }\n }\n\n @HostListener('keydown', ['$event']) keydownHandler(event: any) {\n let e = <KeyboardEvent>event;\n\n const allowedKey = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n ':',\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n ];\n if (allowedKey.indexOf(e.key) >= 0) return;\n\n const allowedCtrlShortcuts = ['a', 'c', 'x', 'v'];\n if (e.ctrlKey && allowedCtrlShortcuts.indexOf(e.key) >= 0) return;\n\n if (event.metaKey || event.ctrlKey || event.altKey) {\n this.combination = this.combination.concat(event.code);\n return;\n }\n const target = event.target;\n const tValue = target.value;\n const value = `${tValue.slice(0, target.selectionStart)}${\n event.key\n }${tValue.slice(target.selectionEnd)}`;\n if (value.match(this.pattern) || this.combination.length > 0) {\n return true;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n\n @HostListener('keyup', ['$event']) keyupHandler(event: any) {\n this.combination = this.combination.filter((v) => v !== event.code);\n }\n\n @HostListener('focus') focusHandler() {\n this.isInputFocused = true;\n }\n\n @HostListener('focusout') focusoutHandler() {\n this.isInputFocused = false;\n this.setInputElementValue(this.formattedValueString);\n if (this.onTouchedFn && !this._timepicker.modalRef) {\n this.onTouchedFn();\n }\n }\n\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n private renderer: Renderer2,\n private zone: NgZone,\n private fm: FocusMonitor,\n private elRef: ElementRef<HTMLElement>,\n private ngZone: NgZone,\n // tslint:disable-next-line:variable-name\n protected _platform: Platform,\n // tslint:disable-next-line:variable-name\n @Optional() private _parentForm: NgForm,\n // tslint:disable-next-line:variable-name\n @Optional() private _matFormFiled: MatFormField,\n // tslint:disable-next-line:variable-name\n @Optional() private _parentFormGroup: FormGroupDirective,\n // tslint:disable-next-line:variable-name\n _defaultErrorStateMatcher: ErrorStateMatcher\n ) {\n this.id = this.id;\n\n this.errorStateMatcher = _defaultErrorStateMatcher;\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n elRef.nativeElement.addEventListener('keyup', (event: Event) => {\n const el = event.target as HTMLInputElement;\n if (!el.value && !el.selectionStart && !el.selectionEnd) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n });\n });\n }\n\n this._isServer = !this._platform.isBrowser;\n }\n\n setDescribedByIds(ids: string[]) {\n this.describedBy = ids.join(' ');\n }\n\n onContainerClick(event: MouseEvent) {\n if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n this.elRef.nativeElement.focus();\n }\n }\n\n setInputElementValue(value: any) {\n Promise.resolve().then(() => {\n this.zone.runOutsideAngular(() => {\n this.renderer.setProperty(this.elRef.nativeElement, 'value', value);\n });\n });\n }\n\n validate() {\n const isValueInRange = this.strict\n ? isDateInRange(this.minDate, this.maxDate, this.currentValue)\n : isTimeInRange(this.minDate, this.maxDate, this.currentValue);\n\n return isValueInRange ? null : { dateRange: true };\n }\n\n ngAfterViewInit() {}\n\n ngOnInit() {\n if (this._platform.isBrowser) {\n this.fm.monitor(this.elRef.nativeElement, true).subscribe((origin) => {\n this.focused = !!origin;\n this.stateChanges.next();\n });\n }\n if (!this.value) {\n const hasMaxDate = !!this.maxDate;\n const hasMinDate = !!this.minDate;\n\n //if (hasMinDate || hasMaxDate) {\n if (hasMinDate) {\n this.minDate.setSeconds(0);\n this.minDate.setMilliseconds(0);\n }\n if (hasMaxDate) {\n this.maxDate.setSeconds(0);\n this.maxDate.setMilliseconds(0);\n }\n\n if (\n !(this.ngControl as any)._rawValidators.find((v: any) => v === this)\n ) {\n (this.ngControl as any)._rawValidators.push(this);\n }\n //}\n }\n this._skipValueChangeEmission = false;\n }\n\n generateAllowedMap(): IAllowed24HourMap {\n const isStrictMode = this.strict && this.value instanceof Date;\n const a24hm: IAllowed24HourMap = {};\n for (let h = 0; h < 24; h++) {\n for (let m = 0; m < 60; m++) {\n const hourMap = a24hm[h] || {};\n if (isStrictMode) {\n const currentDate = new Date(this.value.getTime());\n currentDate.setHours(h);\n currentDate.setMinutes(m);\n currentDate.setSeconds(0);\n currentDate.setMilliseconds(0);\n hourMap[m] = isDateInRange(this.minDate, this.maxDate, currentDate);\n } else {\n hourMap[m] = isAllowed(h, m, this.minDate, this.maxDate);\n }\n a24hm[h] = hourMap;\n }\n }\n\n return a24hm;\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n this.pattern = /^[0-9]{1,2}:?([0-9]{1,2})?$/;\n\n if (\n !this._timepicker.modalRef ||\n !this._timepicker.modalRef.componentInstance\n ) {\n return;\n }\n\n this._timepicker.modalRef.componentInstance.data = {\n value: this.currentValue,\n okLabel: this.okLabel,\n cancelLabel: this.cancelLabel,\n color: this.color,\n minDate: this.minDate,\n maxDate: this.maxDate,\n allowed24HourMap: this.allowed24HourMap,\n };\n }\n\n checkValidity(value: Date) {\n if (!value) {\n return false;\n }\n const hour = value.getHours();\n const minutes = value.getMinutes();\n return isAllowed(hour, minutes, this.minDate, this.maxDate);\n }\n\n writeValue(value: Date, isInnerCall = false): void {\n if (!isInnerCall) {\n this._skipValueChangeEmission = true;\n Promise.resolve().then(() => (this._skipValueChangeEmission = false));\n }\n\n if (value) {\n value.setSeconds(0);\n value.setMilliseconds(0);\n }\n\n if (+this.value !== +value) {\n this.value = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OnemrvaMatTimepickerComponent } from './onemrva-mat-timepicker.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport {\n MatTimePickerToggle,\n MatTimepickerToggleIcon,\n} from './timepicker-toggle/timepicker-toggle.component';\nimport { MatTimepickerDirective } from './timepicker.directive';\nimport { ClockComponent } from './clock/clock.component';\nimport { MatTimepickerComponentDialogComponent } from './timepicker-dialog/timepicker-dialog.component';\n\n@NgModule({\n declarations: [\n ClockComponent,\n MatTimepickerDirective,\n MatTimepickerComponentDialogComponent,\n MatTimepickerToggleIcon,\n MatTimePickerToggle,\n OnemrvaMatTimepickerComponent,\n ],\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MatInputModule,\n ],\n exports: [\n MatTimepickerDirective,\n MatTimePickerToggle,\n OnemrvaMatTimepickerComponent,\n ],\n})\nexport class OnemrvaMatTimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i5.ClockComponent","observableOf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"onemrvapublic-design-system-mat-timepicker.mjs","sources":["../../../../projects/onemrva/design-system/mat-timepicker/src/util.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/clock/clock.component.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/clock/clock.component.html","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.html","../../../../projects/onemrva/design-system/mat-timepicker/src/onemrva-mat-timepicker.component.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/onemrva-mat-timepicker.component.html","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.html","../../../../projects/onemrva/design-system/mat-timepicker/src/timepicker.directive.ts","../../../../projects/onemrva/design-system/mat-timepicker/src/onemrva-mat-timepicker.module.ts","../../../../projects/onemrva/design-system/mat-timepicker/onemrvapublic-design-system-mat-timepicker.ts"],"sourcesContent":["import { ITimeData, ClockViewType } from './interfaces-and-types';\n\nexport function twoDigits(n: number) {\n return n < 10 ? `0${n}` : `${n}`;\n}\n\nexport function addDays(date: Date, days: number) {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n}\n\nexport function convertHoursForMode(hour: number) {\n const isPm = hour >= 12;\n return { hour, isPm };\n}\n\nfunction mod(a: number, b: number) {\n return a - Math.floor(a / b) * b;\n}\n\nexport function getShortestAngle(from: number, to: number) {\n const difference = to - from;\n return from + mod(difference + 180, 360) - 180;\n}\n\nexport function isDateInRange(minDate: Date, maxDate: Date, current: Date) {\n const unixCurrentDate = +current;\n return (!minDate || +minDate <= unixCurrentDate) && (!maxDate || unixCurrentDate <= +maxDate);\n}\n\nexport function isTimeInRange(minDate: Date, maxDate: Date, current: Date) {\n if (minDate instanceof Date) {\n const newMinDate = new Date();\n newMinDate.setHours(minDate.getHours());\n newMinDate.setMinutes(minDate.getMinutes());\n newMinDate.setSeconds(0);\n newMinDate.setMilliseconds(0);\n minDate = newMinDate;\n }\n if (maxDate instanceof Date) {\n const newMaxDate = new Date();\n newMaxDate.setHours(maxDate.getHours());\n newMaxDate.setMinutes(maxDate.getMinutes());\n newMaxDate.setSeconds(0);\n newMaxDate.setMilliseconds(0);\n maxDate = newMaxDate;\n }\n if (current instanceof Date) {\n const newCurrent = new Date();\n newCurrent.setHours(current.getHours());\n newCurrent.setMinutes(current.getMinutes());\n newCurrent.setSeconds(0);\n newCurrent.setMilliseconds(0);\n current = newCurrent;\n }\n const unixCurrentDate = +current;\n return (!minDate || +minDate <= unixCurrentDate) && (!maxDate || unixCurrentDate <= +maxDate);\n}\n\n// used when generating the allowed maps\n\nexport function isAllowed(\n hour: number,\n minutes: number,\n minDate: Date,\n maxDate: Date\n) {\n if (hour > 24 || hour < 0 || minutes > 60 || minutes < 0) { return false; }\n\n if (!minDate && !maxDate) { return true; }\n\n const checkDate = new Date();\n\n checkDate.setHours(hour);\n checkDate.setMinutes(minutes);\n checkDate.setSeconds(0);\n checkDate.setMilliseconds(0);\n\n return isDateInRange(minDate, maxDate, checkDate);\n}\n\n// used by the clock component to visually disable the not allowed values\n\nexport function getIsAvailabeFn( allowed24HourMap : any) {\n return (value: number, viewType: ClockViewType, h: number) => {\n const isHourCheck = viewType === 'hours';\n const [hour, minutes] = isHourCheck ? [value, 0] : [h, value];\n\n if (!allowed24HourMap) { return true; }\n\n if (isHourCheck) {\n return !!Object.values(allowed24HourMap[hour]).find(v => v === true);\n }\n return allowed24HourMap[hour][minutes];\n };\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {\n ClockViewType,\n ClockNumber,\n IAllowed24HourMap,\n} from '../interfaces-and-types';\nimport { getIsAvailabeFn } from '../util';\nimport { ThemePalette } from '@angular/material/core';\n\n@Component({\n selector: 'mat-clock',\n templateUrl: './clock.component.html',\n styleUrls: ['./clock.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClockComponent implements OnChanges {\n @Input() viewType: ClockViewType = 'hours';\n @Input() color: ThemePalette = 'primary';\n @Input() formattedValue: number = 0;\n @Input() minDate!: Date;\n @Input() maxDate!: Date;\n @Input() formattedHours: number = 0;\n @Input() minutes!: number;\n @Output() changeEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() unavailableSelection: EventEmitter<any> = new EventEmitter<any>();\n @Output() invalidSelection: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() allowed24HourMap!: IAllowed24HourMap;\n\n isFormattedValueAllowed = true;\n\n isAvailableFn?: ReturnType<typeof getIsAvailabeFn>;\n\n touching = false;\n angle?: number;\n numbers: ClockNumber[] = [];\n secondaryNumbers: ClockNumber[] = [];\n minuteDots: ClockNumber[] = [];\n invalidMeridiemEmitted = true;\n\n initIsAllowedFn() {\n if (!this.allowed24HourMap) {\n return;\n }\n this.isAvailableFn = getIsAvailabeFn(this.allowed24HourMap);\n }\n\n isAvailable(value: number) {\n return this.isAvailableFn\n ? this.isAvailableFn(value, this.viewType, this.formattedHours)\n : true;\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n if (\n simpleChanges['allowed24HourMap'] ||\n (simpleChanges['mode'] && !simpleChanges['mode'].firstChange)\n ) {\n this.initIsAllowedFn();\n }\n\n this.calculateAngule();\n this.setNumbers();\n\n if (simpleChanges['formattedValue'] && this.allowed24HourMap) {\n this.isFormattedValueAllowed = this.isAvailable(this.formattedValue);\n }\n\n const isSelectedTimeAvailable = this.isAvailableFn\n ? this.isAvailableFn(this.formattedValue, 'minutes', this.formattedHours)\n : true;\n\n if (this.viewType === 'minutes' && this.isAvailableFn) {\n const areMinitesAvailable = this.isAvailableFn(\n this.minutes,\n 'minutes',\n this.formattedHours\n );\n if (!areMinitesAvailable) {\n if (this.minDate && this.minDate.getMinutes() > this.minutes) {\n setTimeout(() => {\n this.changeEvent.emit({\n value: this.minDate.getMinutes(),\n type: 'minutes',\n });\n });\n } else {\n setTimeout(() => {\n this.changeEvent.emit({\n value: this.maxDate.getMinutes(),\n type: 'minutes',\n });\n });\n }\n }\n }\n\n if (isSelectedTimeAvailable && this.invalidMeridiemEmitted) {\n this.invalidMeridiemEmitted = false;\n }\n\n this.invalidSelection.emit(!isSelectedTimeAvailable);\n }\n\n calculateAngule() {\n this.angle = this.getPointerAngle(this.formattedValue, this.viewType);\n }\n\n setNumbers() {\n if (this.viewType === 'hours') {\n // if (this.mode === '12h') {\n // const meridiem : string = this.isPm ? 'pm' : 'am';\n // const isAllowedFn = this.allowed12HourMap ? (num : number) => this.allowed12HourMap[meridiem][num + 1][0] : undefined;\n // this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);\n // this.secondaryNumbers = [];\n // this.minuteDots = [];\n // } else if (this.mode === '24h') {\n const isAllowedFn = this.allowed24HourMap\n ? (num: number) => this.allowed24HourMap[num][0]\n : undefined;\n this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);\n this.secondaryNumbers = this.getNumbers(\n 12,\n { size: 256 - 64, start: 13 },\n isAllowedFn\n );\n this.minuteDots = [];\n //}\n } else {\n //const meridiem : string = this.isPm ? 'pm' : 'am';\n const isAllowedFn =\n // !!this.allowed12HourMap ? (num : number) => this.allowed12HourMap[meridiem][this.formattedHours][num] :\n !!this.allowed24HourMap\n ? (num: number) => this.allowed24HourMap[this.formattedHours][num]\n : undefined;\n\n this.numbers = this.getNumbers(\n 12,\n { size: 256, start: 5, step: 5 },\n isAllowedFn\n );\n this.minuteDots = this.getNumbers(60, { size: 256, start: 13 }).map(\n (digit) => {\n if (digit.display <= 59) {\n digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;\n return digit;\n }\n digit.display = digit.display - 60;\n digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;\n return digit;\n }\n );\n this.secondaryNumbers = [];\n }\n }\n\n disableAnimatedPointer() {\n this.touching = true;\n }\n\n enableAnimatedPointer() {\n this.touching = false;\n }\n\n handleTouchMove = (e: any) => {\n e.preventDefault(); // prevent scrolling behind the clock on iOS\n const rect = e.target.getBoundingClientRect();\n this.movePointer(\n e.changedTouches[0].clientX - rect.left,\n e.changedTouches[0].clientY - rect.top\n );\n };\n\n handleTouchEnd(e: any) {\n this.handleTouchMove(e);\n this.enableAnimatedPointer();\n }\n\n handleMouseMove(e: any) {\n // MouseEvent.which is deprecated, but MouseEvent.buttons is not supported in Safari\n if (e.buttons === 1 || e.which === 1) {\n const rect = e.target.getBoundingClientRect();\n this.movePointer(e.clientX - rect.left, e.clientY - rect.top);\n }\n }\n\n handleClick(e: any) {\n const rect = e.target.getBoundingClientRect();\n this.movePointer(e.clientX - rect.left, e.clientY - rect.top);\n }\n\n movePointer(x: number, y: number) {\n const value = this.getPointerValue(x, y, 256);\n if (!this.isAvailable(value)) {\n this.unavailableSelection.emit();\n return;\n }\n if (value !== this.formattedValue) {\n this.changeEvent.emit({\n value,\n type: this.viewType !== 'minutes' ? 'hours' : 'minutes',\n });\n if (this.viewType !== 'minutes') {\n if (!this.isAvailable(value)) {\n if (this.minDate && this.isAvailable(value)) {\n this.changeEvent.emit({\n value: this.minDate.getMinutes(),\n type: 'minutes',\n });\n } else if (this.maxDate && this.isAvailable(value)) {\n this.changeEvent.emit({\n value: this.maxDate.getMinutes(),\n type: 'minutes',\n });\n }\n }\n }\n }\n }\n\n getNumbers(\n count: number,\n { size = 0, start = 1, step = 1 },\n isAllowedFn?: (num: number) => boolean\n ) {\n return Array.apply(null, Array(count)).map((_, i) => ({\n display: i * step + start,\n translateX: (size / 2 - 20) * Math.cos((2 * Math.PI * (i - 2)) / count),\n translateY: (size / 2 - 20) * Math.sin((2 * Math.PI * (i - 2)) / count),\n allowed: isAllowedFn ? isAllowedFn(i) : true,\n }));\n }\n\n getPointerAngle(value: number, mode: ClockViewType) {\n if (this.viewType === 'hours') {\n return (360 / 12) * ((value % 12) - 3);\n }\n return (360 / 60) * (value - 15);\n }\n\n getPointerValue(x: number, y: number, size: number) {\n let value;\n let angle = (Math.atan2(size / 2 - x, size / 2 - y) / Math.PI) * 180;\n if (angle < 0) {\n angle = 360 + angle;\n }\n\n if (this.viewType === 'hours') {\n const radius = Math.sqrt(\n Math.pow(size / 2 - x, 2) + Math.pow(size / 2 - y, 2)\n );\n value = 12 - Math.round((angle * 12) / 360);\n if (value === 0) {\n value = 12;\n }\n if (radius < size / 2 - 32) {\n value = value === 12 ? 0 : value + 12;\n }\n return value;\n }\n\n value = Math.round(60 - (60 * angle) / 360);\n return value === 60 ? 0 : value;\n }\n}\n","<div class=\"root\">\n <div class=\"circle\" (touchmove)=\"handleTouchMove($event)\" (mousemove)=\"handleMouseMove($event)\"\n (touchstart)=\"disableAnimatedPointer()\" (mousedown)=\"disableAnimatedPointer()\" (touchend)=\"handleTouchEnd($event)\"\n (mouseup)=\"enableAnimatedPointer()\" (click)=\"handleClick($event)\">\n <div class=\"pointer-container\"\n [ngClass]=\"{ 'small-pointer': viewType === 'hours' && (formattedValue === 0 || formattedValue > 12), 'animated-pointer': !touching }\"\n [style.transform]=\"'rotate(' + angle + 'deg)'\">\n <button mat-mini-fab [color]=\"color\" class=\"inner-dot\"></button>\n <mat-toolbar [color]=\"color\" class=\"pointer\">\n <button mat-mini-fab [color]=\"color\" class=\"outer-dot\"\n [ngClass]=\" { 'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0 }\">\n <ng-container *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\">·</ng-container>\n </button>\n </mat-toolbar>\n </div>\n <ng-container *ngFor=\"let digit of minuteDots;\">\n <button mat-mini-fab class=\"number minute-dot\"\n [ngClass]=\"{ 'selected': formattedValue === digit.display || (digit.display === 0 && formattedValue === 0), 'disabled': !isAvailable(digit.display === 60 ? 0 : digit.display)}\"\n [style.transform]=\"'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\">\n <ng-container *ngIf=\"digit.display % 5 !== 0\">·</ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of numbers;\">\n <button mat-mini-fab [color]=\"color\" class=\"number\"\n [ngClass]=\"{ 'selected': formattedValue === digit.display || (digit.display === 60 && formattedValue === 0), 'disabled': !isAvailable(digit.display === 60 ? 0 : digit.display)}\"\n [style.transform]=\"'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\">\n <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n <ng-template #minutesTemplate>{{ digit.display === 60 ? '00' : digit.display }}</ng-template>\n <ng-container *ngIf=\"viewType === 'minutes' then minutesTemplate else hoursTemplate;\"></ng-container>\n </button>\n\n </ng-container>\n <ng-container *ngFor=\"let digit of secondaryNumbers;\">\n <button mat-mini-fab [color]=\"color\" class=\"number small-number\"\n [ngClass]=\"{ 'selected': formattedValue === digit.display || (digit.display === 24 && formattedValue === 0), 'disabled': !isAvailable(digit.display === 24 ? 0 : digit.display)}\"\n [style.transform]=\"'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\">\n {{ digit.display === 24 ? '00' : digit.display }}\n </button>\n\n </ng-container>\n </div>\n</div>","import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { Component, EventEmitter, Output, Inject } from '@angular/core';\nimport { ClockViewType, IAllowed24HourMap } from '../interfaces-and-types';\nimport { twoDigits, convertHoursForMode } from '../util';\nimport { Subject } from 'rxjs';\nimport { ThemePalette } from '@angular/material/core';\n\n@Component({\n selector: 'mat-timepicker-dialog',\n templateUrl: './timepicker-dialog.component.html',\n styleUrls: ['./timepicker-dialog.component.scss'],\n})\nexport class MatTimepickerComponentDialogComponent {\n twoDigits = twoDigits;\n\n @Output() changeEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() okClickEvent: EventEmitter<any> = new EventEmitter<any>();\n @Output() cancelClickEvent: EventEmitter<any> = new EventEmitter<any>();\n\n allowed24HourMap!: IAllowed24HourMap;\n\n invalidSelection = false;\n\n okLabel: string = '';\n cancelLabel: string = '';\n\n set value(value: any) {\n value = value || this.minDate || this.maxDate || new Date();\n this.hours = value.getHours();\n this.minutes = value.getMinutes();\n this._value = value;\n }\n\n get value() {\n return this._value;\n }\n\n viewType: ClockViewType = 'hours';\n\n minutes: any;\n color: ThemePalette = 'primary';\n isPm = false;\n skipMinuteAutoSwitch = false;\n autoSwitchID: any;\n editHoursClicked = false;\n isClosing = false;\n\n minDate!: Date;\n maxDate!: Date;\n\n // tslint:disable-next-line:variable-name\n _formattedHour: any;\n // tslint:disable-next-line:variable-name\n _hours: any;\n // tslint:disable-next-line:variable-name\n _value?: Date;\n\n set hours(value: any) {\n this._hours = value;\n this._formattedHour = convertHoursForMode(this.hours).hour;\n }\n get hours() {\n return this._hours;\n }\n\n get formattedHours() {\n return this._formattedHour;\n }\n\n bindData(data: any) {\n this.okLabel = data.okLabel;\n this.cancelLabel = data.cancelLabel;\n this.color = data.color;\n this.minDate = data.minDate;\n this.maxDate = data.maxDate;\n this.allowed24HourMap = data.allowed24HourMap;\n }\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n public dialog: MatDialog\n ) {\n this.isPm = data.isPm;\n this.bindData(data);\n // keep this always at the bottom\n this.value = data.value;\n }\n\n timepickerInput!: any;\n\n ngDoCheck() {\n this.bindData(this.data);\n }\n\n handleClockChange({\n value,\n type,\n }: {\n value: number;\n type: 'minutes' | 'hours';\n }) {\n if ((type && type === 'hours') || (!type && this.viewType === 'hours')) {\n this.hours = value;\n } else if (\n (type && type === 'minutes') ||\n (!type && this.viewType === 'minutes')\n ) {\n this.minutes = value;\n }\n\n const newValue = new Date();\n const hours = this.hours;\n // newValue.setFullYear(0);\n // newValue.setMonth(0);\n // newValue.setDate(0);\n newValue.setHours(hours);\n newValue.setMinutes(this.minutes);\n newValue.setSeconds(0);\n newValue.setMilliseconds(0);\n this.value = newValue;\n this.changeEvent.emit(newValue);\n }\n\n handleUnavailableSelection() {\n clearTimeout(this.autoSwitchID);\n }\n\n handleClockChangeDone(e: Event) {\n e.preventDefault(); // prevent mouseUp after touchEnd\n\n if (this.viewType === 'hours' && !this.skipMinuteAutoSwitch) {\n this.autoSwitchID = setTimeout(() => {\n this.editMinutes();\n this.autoSwitchID = null;\n }, 300);\n }\n }\n\n editHours() {\n this.viewType = 'hours';\n this.editHoursClicked = true;\n setTimeout(() => {\n this.editHoursClicked = false;\n }, 0);\n }\n\n editMinutes() {\n this.viewType = 'minutes';\n }\n\n invalidSelectionHandler(value: boolean) {\n this.invalidSelection = value;\n }\n\n okClickHandler() {\n this.okClickEvent.emit();\n }\n\n cancelClickHandler() {\n this.cancelClickEvent.emit();\n }\n\n closedStream!: EventEmitter<void>;\n disabled!: boolean;\n id!: string;\n opened!: boolean;\n openedStream!: EventEmitter<void>;\n stateChanges!: Subject<void>;\n}\n","<mat-dialog-content>\n <div class=\"root\">\n <mat-toolbar [color]=\"color\" class=\"header\">\n <div class=\"time-frame\">\n <span\n class=\"time fixed-font-size\"\n [ngClass]=\"{ select: this.viewType === 'hours' && 'active' }\"\n (click)=\"editHours()\"\n >\n {{ twoDigits(formattedHours) }}\n </span>\n <span class=\"fixed-font-size\">:</span>\n <span\n class=\"time fixed-font-size\"\n [ngClass]=\"{ select: this.viewType === 'minutes' && 'active' }\"\n (click)=\"editMinutes()\"\n >\n {{ twoDigits(minutes) }}\n </span>\n </div>\n </mat-toolbar>\n <div class=\"body\">\n <mat-clock\n [allowed24HourMap]=\"allowed24HourMap\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [color]=\"color\"\n [viewType]=\"viewType\"\n [formattedHours]=\"formattedHours\"\n [minutes]=\"minutes\"\n (changeEvent)=\"handleClockChange($event)\"\n (unavailableSelection)=\"handleUnavailableSelection()\"\n [formattedValue]=\"viewType === 'minutes' ? minutes : formattedHours\"\n (mouseup)=\"handleClockChangeDone($event)\"\n (touchend)=\"handleClockChangeDone($event)\"\n (invalidSelection)=\"invalidSelectionHandler($event)\"\n ></mat-clock>\n </div>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button color=\"primary\" (click)=\"cancelClickHandler()\">\n {{ cancelLabel }}\n </button>\n <button\n mat-flat-button\n [disabled]=\"invalidSelection\"\n [color]=\"color\"\n (click)=\"okClickHandler()\"\n >\n {{ okLabel }}\n </button>\n</mat-dialog-actions>\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport { OnemrvaMatColor, OnemrvaMatSize } from '@onemrvapublic/design-system/utils';\nimport { MatTimepickerComponentDialogComponent } from './timepicker-dialog/timepicker-dialog.component';\nimport { Subject } from 'rxjs';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatTimepickerDirective } from './timepicker.directive';\nimport { ThemePalette } from '@angular/material/core';\nimport { first, takeUntil } from 'rxjs/operators';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'mat-timepicker',\n templateUrl: 'onemrva-mat-timepicker.component.html',\n})\nexport class OnemrvaMatTimepickerComponent {\n public modalRef!: MatDialogRef<MatTimepickerComponentDialogComponent>;\n private onChangeFn: any;\n private _value!: Date;\n\n get value(): Date {\n return this._value;\n }\n\n set value(value: Date) {\n this._value = value;\n }\n\n private isAlive: Subject<any> = new Subject<any>();\n\n constructor(public dialog: MatDialog) {}\n\n opened: boolean = false;\n\n public setTimepickerInput(t: MatTimepickerDirective) {\n this.timepickerInput = t;\n }\n timepickerInput: any;\n\n /** Emits when the timepicker's state changes. */\n readonly stateChanges = new Subject<void>();\n\n /** Emits when the timepicker has been opened. */\n @Output('opened') readonly openedStream = new EventEmitter<void>();\n\n /** Emits when the timepicker has been closed. */\n @Output('closed') readonly closedStream = new EventEmitter<void>();\n\n /**\n * Returns the `aria-label` attribute of the element.\n *\n * @example\n * ```typescript\n * let timepickerLabel = this.timepicker.ariaLabel;\n * ```\n *\n */\n @HostBinding('attr.aria-label')\n public ariaLabel = '';\n\n /**\n * Returns the `role` attribute of the element.\n *\n * @example\n * ```typescript\n * let timepickerRole = this.timepicker.role;\n * ```\n */\n @HostBinding('attr.role')\n public role = '';\n\n /**\n * Host `class.onemrva-mat-timepicker` binding.\n *\n * @hidden\n * @internal\n */\n @HostBinding('class.onemrva-mat-timepicker')\n public cssClass = 'onemrva-mat-timepicker';\n\n /**\n * Sets the `id` of the element. If not set, the first component instance will have `id` = `\"onemrva-mat-timepicker-0\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-timepicker id=\"my-first-timepicker\"></onemrva-mat-timepicker>\n * ```\n */\n @HostBinding('attr.id')\n @Input()\n public id = `onemrva-mat-timepicker-${NEXT_ID++}`;\n\n /**\n * Sets the `data-cy` of the element. If not set, the first component instance will have `data-cy` = `\"onemrva-mat-timepicker-0\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-timepicker id=\"my-first-timepicker\"></onemrva-mat-timepicker>\n * ```\n */\n @HostBinding('attr.data-cy')\n @Input()\n public dataCy = `onemrva-mat-timepicker-${NEXT_ID++}`;\n\n /**\n * @hidden\n * @internal\n */\n private _color: ThemePalette = 'primary';\n\n /**\n * Returns the color of the element.\n *\n * @example\n * ```typescript\n * let color = this.timepicker.color;\n * ```\n */\n @Input()\n public get color(): ThemePalette {\n return this._color;\n }\n\n /**\n * Sets the size of the element.\n * By default, the color is `\"primary\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-timepicker size=\"large\"></onemrva-mat-timepicker>\n * ```\n */\n public set color(value: ThemePalette) {\n switch (value) {\n case OnemrvaMatColor.PRIMARY:\n case OnemrvaMatColor.ACCENT:\n case OnemrvaMatColor.WARN:\n this._color = value;\n break;\n default:\n this._color = OnemrvaMatColor.PRIMARY;\n }\n }\n\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-accent')\n public get _isAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n /**\n * @hidden\n * @internal\n */\n private _size: string | OnemrvaMatSize = OnemrvaMatSize.SMALL;\n\n /**\n * Returns the size of the element.\n *\n * @example\n * ```typescript\n * let timepickerSize = this.timepicker.size;\n * ```\n */\n @Input()\n public get size(): string | OnemrvaMatSize {\n return this._size;\n }\n\n /**\n * Sets the size of the element.\n * By default, the size is `\"medium\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-timepicker size=\"large\"></onemrva-mat-timepicker>\n * ```\n */\n public set size(value: string | OnemrvaMatSize) {\n switch (value) {\n case OnemrvaMatSize.XSMALL:\n case OnemrvaMatSize.SMALL:\n case OnemrvaMatSize.MEDIUM:\n case OnemrvaMatSize.LARGE:\n case OnemrvaMatSize.XLARGE:\n this._size = value;\n break;\n default:\n this._size = OnemrvaMatSize.MEDIUM;\n }\n }\n\n open() {\n if (this.timepickerInput.disabled) {\n return;\n }\n\n this.value = this.timepickerInput.currentValue;\n if (this.value === undefined || this.value === null) {\n this.value = new Date();\n }\n\n this.modalRef = this.dialog.open(MatTimepickerComponentDialogComponent, {\n autoFocus: false,\n data: {\n value: this.timepickerInput.currentValue,\n okLabel: this.timepickerInput.okLabel,\n cancelLabel: this.timepickerInput.cancelLabel,\n color: this.color,\n minDate: this.timepickerInput.minDate,\n maxDate: this.timepickerInput.maxDate,\n allowed24HourMap: this.timepickerInput.allowed24HourMap,\n },\n });\n\n const instance = this.modalRef.componentInstance;\n instance.changeEvent\n .pipe(takeUntil(this.isAlive))\n .subscribe(this.handleChange);\n instance.okClickEvent\n .pipe(takeUntil(this.isAlive))\n .subscribe(this.handleOk);\n instance.cancelClickEvent\n .pipe(takeUntil(this.isAlive))\n .subscribe(this.handleCancel);\n this.modalRef\n .beforeClosed()\n .pipe(first())\n .subscribe(() => (instance.isClosing = true));\n this.modalRef\n .afterClosed()\n .pipe(first())\n .subscribe(() => {\n if (this.timepickerInput.onTouchedFn) {\n this.timepickerInput.onTouchedFn();\n }\n //this.modalRef = null;\n this.timepickerInput.elRef.nativeElement.focus();\n });\n this.timepickerInput.currentValue = this.value as Date;\n }\n\n handleChange = (newValue: Date) => {\n if (!(newValue instanceof Date)) {\n return;\n }\n const v =\n this.value instanceof Date ? new Date(this.value.getTime()) : new Date();\n v.setHours(newValue.getHours());\n v.setMinutes(newValue.getMinutes());\n v.setSeconds(0);\n v.setMilliseconds(0);\n this.value = v;\n };\n\n handleOk = () => {\n if (this.onChangeFn) {\n this.onChangeFn(this.value);\n }\n this.timepickerInput.value = this.value;\n this.modalRef.close();\n };\n\n handleCancel = () => {\n this.modalRef.close();\n };\n\n ngOnDestroy() {\n this.isAlive.next('0');\n this.isAlive.complete();\n this.stateChanges.complete();\n\n // if (this._platform.isBrowser) {\n // this.fm.stopMonitoring(this.elRef.nativeElement);\n // }\n //\n // this.listeners.forEach(l => l());\n }\n}\n","","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { merge, Observable, of as observableOf, Subscription } from 'rxjs';\nimport { OnemrvaMatTimepickerComponent } from '../onemrva-mat-timepicker.component';\n\n/** Can be used to override the icon of a `matDatepickerToggle`. */\n@Directive({\n selector: '[matDatepickerToggleIcon]',\n})\nexport class MatTimepickerToggleIcon {}\n\n@Component({\n selector: 'mat-timepicker-toggle',\n templateUrl: 'timepicker-toggle.component.html',\n styleUrls: ['timepicker-toggle.component.scss'],\n host: {\n class: 'mat-timepicker-toggle',\n '[attr.tabindex]': 'null',\n '[class.mat-timepicker-toggle-active]': 'timepicker && timepicker.opened',\n '[class.mat-accent]': 'timepicker && timepicker.color === \"accent\"',\n '[class.mat-warn]': 'timepicker && timepicker.color === \"warn\"',\n // Used by the test harness to tie this toggle to its timepicker.\n '[attr.data-mat-calendar]': 'timepicker ? timepicker.id : null',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n },\n exportAs: 'matDatepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTimePickerToggle<D>\n implements AfterContentInit, OnChanges, OnDestroy\n{\n private _stateChanges = Subscription.EMPTY;\n\n /** Datepicker instance that the button will toggle. */\n @Input('for') timepicker!: OnemrvaMatTimepickerComponent;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Screenreader label for the button. */\n @Input() ariaLabel: string = '';\n\n /** Whether the toggle button is disabled. */\n @Input()\n get disabled(): boolean {\n if (this._disabled === undefined && this.timepicker) {\n return this.timepicker.timepickerInput.disabled;\n }\n return !!this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean = false;\n\n /** Whether ripples on the toggle should be disabled. */\n @Input() disableRipple: boolean = false;\n\n /** Underlying button element. */\n //@ViewChild('button') _button: MatButton;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string\n ) {\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex =\n parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['timepicker']) {\n this._watchStateChanges();\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n\n _open(event: Event): void {\n if (this.timepicker && !this.disabled) {\n this.timepicker.open();\n event.stopPropagation();\n }\n }\n\n private _watchStateChanges() {\n const datepickerStateChanged = this.timepicker\n ? this.timepicker.stateChanges\n : observableOf();\n const inputStateChanged =\n this.timepicker && this.timepicker.timepickerInput\n ? this.timepicker.timepickerInput.stateChanges\n : observableOf();\n const datepickerToggled = this.timepicker\n ? merge(this.timepicker.openedStream, this.timepicker.closedStream)\n : observableOf();\n\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(\n datepickerStateChanged as Observable<void>,\n inputStateChanged,\n datepickerToggled\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n}\n","<button\n #button\n mat-icon-button\n type=\"button\"\n [title]=\"ariaLabel\"\n [attr.aria-haspopup]=\"timepicker ? 'dialog' : null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\">\n\n <mat-icon>schedule</mat-icon>\n\n <ng-content select=\"[mattimepickerToggleIcon]\"></ng-content>\n</button>\n","import {\n ControlValueAccessor,\n NgForm,\n NgControl,\n FormGroupDirective,\n FormControl,\n Validators,\n} from '@angular/forms';\nimport {\n Directive,\n OnInit,\n EventEmitter,\n Input,\n ElementRef,\n OnChanges,\n Renderer2,\n AfterViewInit,\n Optional,\n SimpleChanges,\n NgZone,\n HostBinding,\n Self,\n Output,\n HostListener,\n} from '@angular/core';\nimport {\n MatFormFieldControl,\n MatFormField,\n} from '@angular/material/form-field';\nimport { IAllowed24HourMap } from './interfaces-and-types';\nimport {\n twoDigits,\n convertHoursForMode,\n isAllowed,\n isDateInRange,\n isTimeInRange,\n} from './util';\nimport { Subject, Subscription } from 'rxjs';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { OnemrvaMatTimepickerComponent } from './onemrva-mat-timepicker.component';\n\n@Directive({\n selector: 'input[matTimepicker]',\n providers: [\n { provide: MatFormFieldControl, useExisting: MatTimepickerDirective },\n ],\n // tslint:disable-next-line:no-host-metadata-property\n host: {\n // tslint:disable-next-line:object-literal-key-quotes\n class: 'mat-input-element mat-form-field-autofill-control',\n '[class.mat-input-server]': '_isServer',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.readonly]': 'readonly || null',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-required]': 'required.toString()',\n },\n exportAs: 'matTimepicker',\n})\nexport class MatTimepickerDirective\n implements\n OnInit,\n OnChanges,\n AfterViewInit,\n ControlValueAccessor,\n MatFormFieldControl<any>\n{\n static nextId = 0;\n\n /** Whether the component is being rendered on the server. */\n // tslint:disable-next-line:variable-name\n readonly _isServer: boolean;\n private _closedSubscription = Subscription.EMPTY;\n\n /** The datepicker that this input is associated with. */\n @Input()\n set matTimepicker(timepicker: OnemrvaMatTimepickerComponent) {\n if (timepicker) {\n this._timepicker = timepicker;\n this._timepicker.setTimepickerInput(this);\n this._closedSubscription = timepicker.closedStream.subscribe(() =>\n this._onTouched()\n );\n //this._registerModel(datepicker.registerInput(this));\n }\n }\n _timepicker!: OnemrvaMatTimepickerComponent;\n\n // tslint:disable-next-line:variable-name\n _errorState = false;\n get errorState() {\n const oldState = this._errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const control = this.ngControl\n ? (this.ngControl.control as FormControl)\n : null;\n const newState = this.errorStateMatcher\n ? this.errorStateMatcher.isErrorState(control, parent)\n : oldState;\n\n if (newState !== oldState) {\n this._errorState = newState;\n this.stateChanges.next();\n }\n\n return newState;\n }\n _onTouched = () => {};\n\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n // tslint:disable-next-line:variable-name\n protected _disabled = false;\n\n @Input() get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n // tslint:disable-next-line:variable-name\n protected _id: string = '0';\n\n @Input() get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n // tslint:disable-next-line:variable-name\n private _readonly = false;\n\n private isAlive: Subject<any> = new Subject<any>();\n stateChanges = new Subject<void>();\n\n // tslint:disable-next-line:variable-name\n protected _uid = `mat-input-${MatTimepickerDirective.nextId++}`;\n @HostBinding('class.floating') get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n @HostBinding('attr.aria-describedby') describedBy = '';\n\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n @Input() get required() {\n if (this.ngControl?.control) {\n return this.ngControl.control.hasValidator(Validators.required);\n }\n return this._required;\n }\n\n set required(req) {\n this._required = coerceBooleanProperty(req);\n this.stateChanges.next();\n }\n // tslint:disable-next-line:variable-name\n private _required = false;\n\n @Input() get placeholder() {\n return this._placeholder;\n }\n set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n // tslint:disable-next-line:variable-name\n private _placeholder: string = '';\n\n focused = false;\n private pattern: RegExp = new RegExp('[0-2]?[0-9]:[0-6]?[0-9]');\n\n private allowed24HourMap: IAllowed24HourMap = this.generateAllowedMap();\n\n private isInputFocused = false;\n\n /** Override the label of the ok button. */\n @Input() okLabel = 'Ok';\n /** Override the label of the cancel button. */\n @Input() cancelLabel = 'Cancel';\n\n /** Sets the clock mode, 12-hour or 24-hour clocks are supported. */\n @Input() color = 'primary';\n @Input() disableDialogOpenOnClick = false;\n @Input() strict = true;\n\n controlType = 'angular-material-timepicker';\n\n private listeners: (() => void)[] = [];\n\n @Input() minDate!: Date;\n @Input() maxDate!: Date;\n\n // tslint:disable-next-line:variable-name\n private _isPm: boolean = false;\n // tslint:disable-next-line:variable-name\n private _value: Date | null = null;\n // tslint:disable-next-line:variable-name\n private _formattedValueString: string = '';\n\n // tslint:disable-next-line:variable-name\n private _skipValueChangeEmission = true;\n\n @Input() set value(value: Date | null) {\n if (value === this._value) {\n return;\n }\n this._value = value;\n if (!value) {\n this._formattedValueString = '';\n this.setInputElementValue(value);\n this.currentValue = value ?? new Date();\n return;\n }\n\n const { hour, isPm } = convertHoursForMode(value.getHours());\n this._formattedValueString = `${twoDigits(value.getHours())}:${twoDigits(\n value.getMinutes()\n )}`;\n\n if (!this.isInputFocused) {\n this.setInputElementValue(this.formattedValueString);\n }\n this.currentValue = value;\n this.stateChanges.next();\n\n if (this._skipValueChangeEmission) {\n return;\n }\n this.timeChange.emit(this.currentValue);\n\n if (this.onChangeFn) this.onChangeFn(this.value);\n }\n\n get value() {\n return this._value;\n }\n\n get empty() {\n return !(this.currentValue instanceof Date);\n }\n\n private get formattedValueString() {\n return this._formattedValueString;\n }\n\n private currentValue!: Date;\n\n private onChangeFn: any;\n private onTouchedFn: any;\n private combination: string[] = [];\n\n @Output() timeChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() invalidInput: EventEmitter<any> = new EventEmitter<any>();\n\n @HostListener('input') inputHandler() {\n let value = (this.elRef.nativeElement as any).value as string;\n const length = value.length;\n\n if (length === 0) {\n this.writeValue(null, true);\n this._value = null;\n this._skipValueChangeEmission = true;\n Promise.resolve().then(() => (this._skipValueChangeEmission = false));\n\n if (this.onChangeFn) {\n this.onChangeFn(null);\n }\n\n return;\n }\n\n const valueHasColumn = value.includes(':');\n let [hours, minutes]: any =\n length === 1\n ? [value, 0]\n : length === 2 && !valueHasColumn\n ? [value, 0]\n : valueHasColumn\n ? value.split(':')\n : value.split(/(\\d\\d)/).filter((v) => v);\n\n hours = +hours;\n\n if (/\\s/.test(minutes)) {\n let other;\n [minutes, other] = minutes.split(/\\s/);\n if (other === 'pm' && !isNaN(hours) && hours < 12) {\n hours += 12;\n }\n }\n\n minutes = +minutes;\n\n if (isNaN(hours) || isNaN(minutes)) {\n //this.writeValue(null, true);\n this._skipValueChangeEmission = true;\n Promise.resolve().then(() => (this._skipValueChangeEmission = false));\n return;\n }\n\n if (+hours > 24) {\n hours = '24';\n } else if (+hours < 0) {\n hours = '0';\n }\n\n if (+minutes > 59) {\n minutes = '59';\n } else if (+minutes < 0) {\n minutes = '0';\n }\n\n const d = this.value ? new Date(this.value.getTime()) : new Date();\n d.setHours(+hours);\n d.setMinutes(+minutes);\n d.setSeconds(0);\n d.setMilliseconds(0);\n\n const isValueInRange = isDateInRange(this.minDate, this.maxDate, d);\n if (!isValueInRange) {\n this.invalidInput.emit();\n }\n\n this.writeValue(d, true);\n if (this.onChangeFn) {\n this.onChangeFn(d);\n }\n }\n\n @HostListener('keydown', ['$event']) keydownHandler(event: any) {\n let e = <KeyboardEvent>event;\n\n const allowedKey = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n ':',\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n ];\n if (allowedKey.indexOf(e.key) >= 0) return;\n\n const allowedCtrlShortcuts = ['a', 'c', 'x', 'v'];\n if (e.ctrlKey && allowedCtrlShortcuts.indexOf(e.key) >= 0) return;\n\n if (event.metaKey || event.ctrlKey || event.altKey) {\n this.combination = this.combination.concat(event.code);\n return;\n }\n const target = event.target;\n const tValue = target.value;\n const value = `${tValue.slice(0, target.selectionStart)}${\n event.key\n }${tValue.slice(target.selectionEnd)}`;\n if (value.match(this.pattern) || this.combination.length > 0) {\n return true;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n\n @HostListener('keyup', ['$event']) keyupHandler(event: any) {\n this.combination = this.combination.filter((v) => v !== event.code);\n }\n\n @HostListener('focus') focusHandler() {\n this.isInputFocused = true;\n }\n\n @HostListener('focusout') focusoutHandler() {\n this.isInputFocused = false;\n this.setInputElementValue(this.formattedValueString);\n if (this.onTouchedFn && !this._timepicker.modalRef) {\n this.onTouchedFn();\n }\n }\n\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n private renderer: Renderer2,\n private zone: NgZone,\n private fm: FocusMonitor,\n private elRef: ElementRef<HTMLElement>,\n private ngZone: NgZone,\n // tslint:disable-next-line:variable-name\n protected _platform: Platform,\n // tslint:disable-next-line:variable-name\n @Optional() private _parentForm: NgForm,\n // tslint:disable-next-line:variable-name\n @Optional() private _matFormFiled: MatFormField,\n // tslint:disable-next-line:variable-name\n @Optional() private _parentFormGroup: FormGroupDirective,\n // tslint:disable-next-line:variable-name\n _defaultErrorStateMatcher: ErrorStateMatcher\n ) {\n this.id = this.id;\n\n this.errorStateMatcher = _defaultErrorStateMatcher;\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n elRef.nativeElement.addEventListener('keyup', (event: Event) => {\n const el = event.target as HTMLInputElement;\n if (!el.value && !el.selectionStart && !el.selectionEnd) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n });\n });\n }\n\n this._isServer = !this._platform.isBrowser;\n }\n\n setDescribedByIds(ids: string[]) {\n this.describedBy = ids.join(' ');\n }\n\n onContainerClick(event: MouseEvent) {\n if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n this.elRef.nativeElement.focus();\n }\n }\n\n setInputElementValue(value: any) {\n Promise.resolve().then(() => {\n this.zone.runOutsideAngular(() => {\n this.renderer.setProperty(this.elRef.nativeElement, 'value', value);\n });\n });\n }\n\n validate() {\n const isValueInRange = this.strict\n ? isDateInRange(this.minDate, this.maxDate, this.currentValue)\n : isTimeInRange(this.minDate, this.maxDate, this.currentValue);\n\n return isValueInRange ? null : { dateRange: true };\n }\n\n ngAfterViewInit() {}\n\n ngOnInit() {\n if (this._platform.isBrowser) {\n this.fm.monitor(this.elRef.nativeElement, true).subscribe((origin) => {\n this.focused = !!origin;\n this.stateChanges.next();\n });\n }\n if (!this.value) {\n const hasMaxDate = !!this.maxDate;\n const hasMinDate = !!this.minDate;\n\n //if (hasMinDate || hasMaxDate) {\n if (hasMinDate) {\n this.minDate.setSeconds(0);\n this.minDate.setMilliseconds(0);\n }\n if (hasMaxDate) {\n this.maxDate.setSeconds(0);\n this.maxDate.setMilliseconds(0);\n }\n\n if (\n !(this.ngControl as any)._rawValidators.find((v: any) => v === this)\n ) {\n (this.ngControl as any)._rawValidators.push(this);\n }\n //}\n }\n this._skipValueChangeEmission = false;\n }\n\n generateAllowedMap(): IAllowed24HourMap {\n const isStrictMode = this.strict && this.value instanceof Date;\n const a24hm: IAllowed24HourMap = {};\n for (let h = 0; h < 24; h++) {\n for (let m = 0; m < 60; m++) {\n const hourMap = a24hm[h] || {};\n if (isStrictMode && this.value) {\n const currentDate = new Date(this.value.getTime());\n currentDate.setHours(h);\n currentDate.setMinutes(m);\n currentDate.setSeconds(0);\n currentDate.setMilliseconds(0);\n hourMap[m] = isDateInRange(this.minDate, this.maxDate, currentDate);\n } else {\n hourMap[m] = isAllowed(h, m, this.minDate, this.maxDate);\n }\n a24hm[h] = hourMap;\n }\n }\n\n return a24hm;\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n this.pattern = /^[0-9]{1,2}:?([0-9]{1,2})?$/;\n\n if (\n !this._timepicker.modalRef ||\n !this._timepicker.modalRef.componentInstance\n ) {\n return;\n }\n\n this._timepicker.modalRef.componentInstance.data = {\n value: this.currentValue,\n okLabel: this.okLabel,\n cancelLabel: this.cancelLabel,\n color: this.color,\n minDate: this.minDate,\n maxDate: this.maxDate,\n allowed24HourMap: this.allowed24HourMap,\n };\n }\n\n checkValidity(value: Date) {\n if (!value) {\n return false;\n }\n const hour = value.getHours();\n const minutes = value.getMinutes();\n return isAllowed(hour, minutes, this.minDate, this.maxDate);\n }\n\n writeValue(value: Date | null, isInnerCall = false): void {\n if (!isInnerCall) {\n this._skipValueChangeEmission = true;\n Promise.resolve().then(() => (this._skipValueChangeEmission = false));\n }\n\n if (value) {\n value.setSeconds(0);\n value.setMilliseconds(0);\n }\n\n if (this.value && +this.value === +(value ?? 0)) {\n return;\n } else {\n this.value = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OnemrvaMatTimepickerComponent } from './onemrva-mat-timepicker.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport {\n MatTimePickerToggle,\n MatTimepickerToggleIcon,\n} from './timepicker-toggle/timepicker-toggle.component';\nimport { MatTimepickerDirective } from './timepicker.directive';\nimport { ClockComponent } from './clock/clock.component';\nimport { MatTimepickerComponentDialogComponent } from './timepicker-dialog/timepicker-dialog.component';\n\n@NgModule({\n declarations: [\n ClockComponent,\n MatTimepickerDirective,\n MatTimepickerComponentDialogComponent,\n MatTimepickerToggleIcon,\n MatTimePickerToggle,\n OnemrvaMatTimepickerComponent,\n ],\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MatInputModule,\n ],\n exports: [\n MatTimepickerDirective,\n MatTimePickerToggle,\n OnemrvaMatTimepickerComponent,\n ],\n})\nexport class OnemrvaMatTimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i5.ClockComponent","observableOf"],"mappings":"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"}
|
|
@@ -70,8 +70,8 @@ export declare class MatTimepickerDirective implements OnInit, OnChanges, AfterV
|
|
|
70
70
|
private _value;
|
|
71
71
|
private _formattedValueString;
|
|
72
72
|
private _skipValueChangeEmission;
|
|
73
|
-
set value(value: Date);
|
|
74
|
-
get value(): Date;
|
|
73
|
+
set value(value: Date | null);
|
|
74
|
+
get value(): Date | null;
|
|
75
75
|
get empty(): boolean;
|
|
76
76
|
private get formattedValueString();
|
|
77
77
|
private currentValue;
|
|
@@ -97,7 +97,7 @@ export declare class MatTimepickerDirective implements OnInit, OnChanges, AfterV
|
|
|
97
97
|
generateAllowedMap(): IAllowed24HourMap;
|
|
98
98
|
ngOnChanges(simpleChanges: SimpleChanges): void;
|
|
99
99
|
checkValidity(value: Date): boolean;
|
|
100
|
-
writeValue(value: Date, isInnerCall?: boolean): void;
|
|
100
|
+
writeValue(value: Date | null, isInnerCall?: boolean): void;
|
|
101
101
|
registerOnChange(fn: any): void;
|
|
102
102
|
registerOnTouched(fn: any): void;
|
|
103
103
|
setDisabledState?(isDisabled: boolean): void;
|