@onemrvapublic/design-system 17.8.4 → 17.8.6

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.
@@ -26,10 +26,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
26
26
  export class MatTimePickerToggle {
27
27
  /** Whether the toggle button is disabled. */
28
28
  get disabled() {
29
- if (this._disabled === undefined && this.timepicker) {
30
- return this.timepicker.timepickerInput.disabled;
29
+ if (this.timepicker) {
30
+ return this.timepicker.timepickerInput._disabled;
31
31
  }
32
- return !!this._disabled;
32
+ return this._disabled;
33
33
  }
34
34
  set disabled(value) {
35
35
  this._disabled = coerceBooleanProperty(value);
@@ -44,6 +44,7 @@ export class MatTimePickerToggle {
44
44
  this._disabled = false;
45
45
  /** Whether ripples on the toggle should be disabled. */
46
46
  this.disableRipple = false;
47
+ this.$event = new Event('abrupt');
47
48
  const parsedTabIndex = Number(defaultTabIndex);
48
49
  this.tabIndex =
49
50
  parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;
@@ -111,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
111
112
  }], disableRipple: [{
112
113
  type: Input
113
114
  }] } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC10aW1lcGlja2VyL3NyYy90aW1lcGlja2VyLXRvZ2dsZS90aW1lcGlja2VyLXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL3RpbWVwaWNrZXItdG9nZ2xlL3RpbWVwaWNrZXItdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUwsU0FBUyxFQUNULHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsU0FBUyxFQUNULEtBQUssRUFJTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUczRSxtRUFBbUU7QUFJbkUsTUFBTSxPQUFPLGdDQUFnQzsrR0FBaEMsZ0NBQWdDO21HQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBSDVDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7O0FBeUJELG1FQUFtRTtBQUNuRSxNQUFNLE9BQU8sbUJBQW1CO0lBZTlCLDZDQUE2QztJQUM3QyxJQUNJLFFBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxDQUFD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RTt3QkFDakUsMEJBQTBCLEVBQUUsbUNBQW1DO3dCQUMvRCxvRkFBb0Y7d0JBQ3BGLHlGQUF5Rjt3QkFDekYseUZBQXlGO3dCQUN6RixTQUFTLEVBQUUsZUFBZTtxQkFDM0IsWUFDUyxxQkFBcUIsaUJBQ2hCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQXlDNUMsU0FBUzsyQkFBQyxVQUFVO3lDQS9CVCxVQUFVO3NCQUF2QixLQUFLO3VCQUFDLEtBQUs7Z0JBR0gsUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlGLFFBQVE7c0JBRFgsS0FBSztnQkFlRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vb25lbXJ2YS1tYXQtdGltZXBpY2tlci5jb21wb25lbnQnO1xuXG4vKiogQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGljb24gb2YgYSBgbWF0RGF0ZXBpY2tlclRvZ2dsZWAuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbWF0RGF0ZXBpY2tlclRvZ2dsZUljb25dJyxcbn0pXG5leHBvcnQgY2xhc3MgTWF0VGltZXBpY2tlclRvZ2dsZUljb25EaXJlY3RpdmUge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LXRpbWVwaWNrZXItdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICd0aW1lcGlja2VyLXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyd0aW1lcGlja2VyLXRvZ2dsZS5jb21wb25lbnQuc2NzcyddLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbWF0LXRpbWVwaWNrZXItdG9nZ2xlJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ251bGwnLFxuICAgICdbY2xhc3MubWF0LXRpbWVwaWNrZXItdG9nZ2xlLWFjdGl2ZV0nOiAndGltZXBpY2tlciAmJiB0aW1lcGlja2VyLm9wZW5lZCcsXG4gICAgJ1tjbGFzcy5tYXQtYWNjZW50XSc6ICd0aW1lcGlja2VyICYmIHRpbWVwaWNrZXIuY29sb3IgPT09IFwiYWNjZW50XCInLFxuICAgICdbY2xhc3MubWF0LXdhcm5dJzogJ3RpbWVwaWNrZXIgJiYgdGltZXBpY2tlci5jb2xvciA9PT0gXCJ3YXJuXCInLFxuICAgIC8vIFVzZWQgYnkgdGhlIHRlc3QgaGFybmVzcyB0byB0aWUgdGhpcyB0b2dnbGUgdG8gaXRzIHRpbWVwaWNrZXIuXG4gICAgJ1thdHRyLmRhdGEtbWF0LWNhbGVuZGFyXSc6ICd0aW1lcGlja2VyID8gdGltZXBpY2tlci5pZCA6IG51bGwnLFxuICAgIC8vIEJpbmQgdGhlIGBjbGlja2Agb24gdGhlIGhvc3QsIHJhdGhlciB0aGFuIHRoZSBpbm5lciBgYnV0dG9uYCwgc28gdGhhdCB3ZSBjYW4gY2FsbFxuICAgIC8vIGBzdG9wUHJvcGFnYXRpb25gIG9uIGl0IHdpdGhvdXQgYWZmZWN0aW5nIHRoZSB1c2VyJ3MgYGNsaWNrYCBoYW5kbGVycy4gV2UgbmVlZCB0byBzdG9wXG4gICAgLy8gaXQgc28gdGhhdCB0aGUgaW5wdXQgZG9lc24ndCBnZXQgZm9jdXNlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBmb3JtIGZpZWxkIChTZWUgIzIxODM2KS5cbiAgICAnKGNsaWNrKSc6ICdfb3BlbigkZXZlbnQpJyxcbiAgfSxcbiAgZXhwb3J0QXM6ICdtYXREYXRlcGlja2VyVG9nZ2xlJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIE1hdFRpbWVQaWNrZXJUb2dnbGVcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICBwcml2YXRlIF9zdGF0ZUNoYW5nZXMgPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgLyoqIERhdGVwaWNrZXIgaW5zdGFuY2UgdGhhdCB0aGUgYnV0dG9uIHdpbGwgdG9nZ2xlLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2ZvcicpIHRpbWVwaWNrZXIhOiBPbmVtcnZhTWF0VGltZXBpY2tlckNvbXBvbmVudDtcblxuICAvKiogVGFiaW5kZXggZm9yIHRoZSB0b2dnbGUuICovXG4gIEBJbnB1dCgpIHRhYkluZGV4OiBudW1iZXIgfCBudWxsO1xuXG4gIC8qKiBTY3JlZW5yZWFkZXIgbGFiZWwgZm9yIHRoZSBidXR0b24uICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHRvZ2dsZSBidXR0b24gaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnRpbWVwaWNrZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnRpbWVwaWNrZXIudGltZXBpY2tlcklucHV0LmRpc2FibGVkO1xuICAgIH1cbiAgICByZXR1cm4gISF0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciByaXBwbGVzIG9uIHRoZSB0b2dnbGUgc2hvdWxkIGJlIGRpc2FibGVkLiAqL1xuICBASW5wdXQoKSBkaXNhYmxlUmlwcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFVuZGVybHlpbmcgYnV0dG9uIGVsZW1lbnQuICovXG4gIC8vQFZpZXdDaGlsZCgnYnV0dG9uJykgX2J1dHRvbjogTWF0QnV0dG9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAQXR0cmlidXRlKCd0YWJpbmRleCcpIGRlZmF1bHRUYWJJbmRleDogc3RyaW5nLFxuICApIHtcbiAgICBjb25zdCBwYXJzZWRUYWJJbmRleCA9IE51bWJlcihkZWZhdWx0VGFiSW5kZXgpO1xuICAgIHRoaXMudGFiSW5kZXggPVxuICAgICAgcGFyc2VkVGFiSW5kZXggfHwgcGFyc2VkVGFiSW5kZXggPT09IDAgPyBwYXJzZWRUYWJJbmRleCA6IG51bGw7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3RpbWVwaWNrZXInXSkge1xuICAgICAgdGhpcy5fd2F0Y2hTdGF0ZUNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl93YXRjaFN0YXRlQ2hhbmdlcygpO1xuICB9XG5cbiAgX29wZW4oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXBpY2tlciAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy50aW1lcGlja2VyLm9wZW4oKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3dhdGNoU3RhdGVDaGFuZ2VzKCkge1xuICAgIGNvbnN0IGRhdGVwaWNrZXJTdGF0ZUNoYW5nZWQgPSB0aGlzLnRpbWVwaWNrZXJcbiAgICAgID8gdGhpcy50aW1lcGlja2VyLnN0YXRlQ2hhbmdlc1xuICAgICAgOiBvYnNlcnZhYmxlT2YoKTtcbiAgICBjb25zdCBpbnB1dFN0YXRlQ2hhbmdlZCA9XG4gICAgICB0aGlzLnRpbWVwaWNrZXIgJiYgdGhpcy50aW1lcGlja2VyLnRpbWVwaWNrZXJJbnB1dFxuICAgICAgICA/IHRoaXMudGltZXBpY2tlci50aW1lcGlja2VySW5wdXQuc3RhdGVDaGFuZ2VzXG4gICAgICAgIDogb2JzZXJ2YWJsZU9mKCk7XG4gICAgY29uc3QgZGF0ZXBpY2tlclRvZ2dsZWQgPSB0aGlzLnRpbWVwaWNrZXJcbiAgICAgID8gbWVyZ2UodGhpcy50aW1lcGlja2VyLm9wZW5lZFN0cmVhbSwgdGhpcy50aW1lcGlja2VyLmNsb3NlZFN0cmVhbSlcbiAgICAgIDogb2JzZXJ2YWJsZU9mKCk7XG5cbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMgPSBtZXJnZShcbiAgICAgIGRhdGVwaWNrZXJTdGF0ZUNoYW5nZWQgYXMgT2JzZXJ2YWJsZTx2b2lkPixcbiAgICAgIGlucHV0U3RhdGVDaGFuZ2VkLFxuICAgICAgZGF0ZXBpY2tlclRvZ2dsZWQsXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gICNidXR0b25cbiAgbWF0LWljb24tYnV0dG9uXG4gIHR5cGU9XCJidXR0b25cIlxuICBbdGl0bGVdPVwiYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJ0aW1lcGlja2VyID8gJ2RpYWxvZycgOiBudWxsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogdGFiSW5kZXhcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbZGlzYWJsZVJpcHBsZV09XCJkaXNhYmxlUmlwcGxlXCJcbj5cbiAgPG1hdC1pY29uPnNjaGVkdWxlPC9tYXQtaWNvbj5cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0dGltZXBpY2tlclRvZ2dsZUljb25dXCI+PC9uZy1jb250ZW50PlxuPC9idXR0b24+XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC10aW1lcGlja2VyL3NyYy90aW1lcGlja2VyLXRvZ2dsZS90aW1lcGlja2VyLXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL3RpbWVwaWNrZXItdG9nZ2xlL3RpbWVwaWNrZXItdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUwsU0FBUyxFQUNULHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsU0FBUyxFQUNULEtBQUssRUFJTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUczRSxtRUFBbUU7QUFJbkUsTUFBTSxPQUFPLGdDQUFnQzsrR0FBaEMsZ0NBQWdDO21HQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBSDVDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7O0FBeUJELG1FQUFtRTtBQUNuRSxNQUFNLE9BQU8sbUJBQW1CO0lBZTlCLDZDQUE2QztJQUM3QyxJQUNJLFFBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFD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LGlFQUFpRTt3QkFDakUsMEJBQTBCLEVBQUUsbUNBQW1DO3dCQUMvRCxvRkFBb0Y7d0JBQ3BGLHlGQUF5Rjt3QkFDekYseUZBQXlGO3dCQUN6RixTQUFTLEVBQUUsZUFBZTtxQkFDM0IsWUFDUyxxQkFBcUIsaUJBQ2hCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQTBDNUMsU0FBUzsyQkFBQyxVQUFVO3lDQWhDVCxVQUFVO3NCQUF2QixLQUFLO3VCQUFDLEtBQUs7Z0JBR0gsUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlGLFFBQVE7c0JBRFgsS0FBSztnQkFlRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vb25lbXJ2YS1tYXQtdGltZXBpY2tlci5jb21wb25lbnQnO1xuXG4vKiogQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGljb24gb2YgYSBgbWF0RGF0ZXBpY2tlclRvZ2dsZWAuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbWF0RGF0ZXBpY2tlclRvZ2dsZUljb25dJyxcbn0pXG5leHBvcnQgY2xhc3MgTWF0VGltZXBpY2tlclRvZ2dsZUljb25EaXJlY3RpdmUge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LXRpbWVwaWNrZXItdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICd0aW1lcGlja2VyLXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyd0aW1lcGlja2VyLXRvZ2dsZS5jb21wb25lbnQuc2NzcyddLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbWF0LXRpbWVwaWNrZXItdG9nZ2xlJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ251bGwnLFxuICAgICdbY2xhc3MubWF0LXRpbWVwaWNrZXItdG9nZ2xlLWFjdGl2ZV0nOiAndGltZXBpY2tlciAmJiB0aW1lcGlja2VyLm9wZW5lZCcsXG4gICAgJ1tjbGFzcy5tYXQtYWNjZW50XSc6ICd0aW1lcGlja2VyICYmIHRpbWVwaWNrZXIuY29sb3IgPT09IFwiYWNjZW50XCInLFxuICAgICdbY2xhc3MubWF0LXdhcm5dJzogJ3RpbWVwaWNrZXIgJiYgdGltZXBpY2tlci5jb2xvciA9PT0gXCJ3YXJuXCInLFxuICAgIC8vIFVzZWQgYnkgdGhlIHRlc3QgaGFybmVzcyB0byB0aWUgdGhpcyB0b2dnbGUgdG8gaXRzIHRpbWVwaWNrZXIuXG4gICAgJ1thdHRyLmRhdGEtbWF0LWNhbGVuZGFyXSc6ICd0aW1lcGlja2VyID8gdGltZXBpY2tlci5pZCA6IG51bGwnLFxuICAgIC8vIEJpbmQgdGhlIGBjbGlja2Agb24gdGhlIGhvc3QsIHJhdGhlciB0aGFuIHRoZSBpbm5lciBgYnV0dG9uYCwgc28gdGhhdCB3ZSBjYW4gY2FsbFxuICAgIC8vIGBzdG9wUHJvcGFnYXRpb25gIG9uIGl0IHdpdGhvdXQgYWZmZWN0aW5nIHRoZSB1c2VyJ3MgYGNsaWNrYCBoYW5kbGVycy4gV2UgbmVlZCB0byBzdG9wXG4gICAgLy8gaXQgc28gdGhhdCB0aGUgaW5wdXQgZG9lc24ndCBnZXQgZm9jdXNlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBmb3JtIGZpZWxkIChTZWUgIzIxODM2KS5cbiAgICAnKGNsaWNrKSc6ICdfb3BlbigkZXZlbnQpJyxcbiAgfSxcbiAgZXhwb3J0QXM6ICdtYXREYXRlcGlja2VyVG9nZ2xlJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIE1hdFRpbWVQaWNrZXJUb2dnbGVcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICBwcml2YXRlIF9zdGF0ZUNoYW5nZXMgPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgLyoqIERhdGVwaWNrZXIgaW5zdGFuY2UgdGhhdCB0aGUgYnV0dG9uIHdpbGwgdG9nZ2xlLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2ZvcicpIHRpbWVwaWNrZXIhOiBPbmVtcnZhTWF0VGltZXBpY2tlckNvbXBvbmVudDtcblxuICAvKiogVGFiaW5kZXggZm9yIHRoZSB0b2dnbGUuICovXG4gIEBJbnB1dCgpIHRhYkluZGV4OiBudW1iZXIgfCBudWxsO1xuXG4gIC8qKiBTY3JlZW5yZWFkZXIgbGFiZWwgZm9yIHRoZSBidXR0b24uICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHRvZ2dsZSBidXR0b24gaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy50aW1lcGlja2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy50aW1lcGlja2VyLnRpbWVwaWNrZXJJbnB1dC5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciByaXBwbGVzIG9uIHRoZSB0b2dnbGUgc2hvdWxkIGJlIGRpc2FibGVkLiAqL1xuICBASW5wdXQoKSBkaXNhYmxlUmlwcGxlOiBib29sZWFuID0gZmFsc2U7XG4gICRldmVudDogRXZlbnQgPSBuZXcgRXZlbnQoJ2FicnVwdCcpO1xuXG4gIC8qKiBVbmRlcmx5aW5nIGJ1dHRvbiBlbGVtZW50LiAqL1xuICAvL0BWaWV3Q2hpbGQoJ2J1dHRvbicpIF9idXR0b246IE1hdEJ1dHRvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSBkZWZhdWx0VGFiSW5kZXg6IHN0cmluZyxcbiAgKSB7XG4gICAgY29uc3QgcGFyc2VkVGFiSW5kZXggPSBOdW1iZXIoZGVmYXVsdFRhYkluZGV4KTtcbiAgICB0aGlzLnRhYkluZGV4ID1cbiAgICAgIHBhcnNlZFRhYkluZGV4IHx8IHBhcnNlZFRhYkluZGV4ID09PSAwID8gcGFyc2VkVGFiSW5kZXggOiBudWxsO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWyd0aW1lcGlja2VyJ10pIHtcbiAgICAgIHRoaXMuX3dhdGNoU3RhdGVDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5fd2F0Y2hTdGF0ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIF9vcGVuKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXIgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudGltZXBpY2tlci5vcGVuKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF93YXRjaFN0YXRlQ2hhbmdlcygpIHtcbiAgICBjb25zdCBkYXRlcGlja2VyU3RhdGVDaGFuZ2VkID0gdGhpcy50aW1lcGlja2VyXG4gICAgICA/IHRoaXMudGltZXBpY2tlci5zdGF0ZUNoYW5nZXNcbiAgICAgIDogb2JzZXJ2YWJsZU9mKCk7XG4gICAgY29uc3QgaW5wdXRTdGF0ZUNoYW5nZWQgPVxuICAgICAgdGhpcy50aW1lcGlja2VyICYmIHRoaXMudGltZXBpY2tlci50aW1lcGlja2VySW5wdXRcbiAgICAgICAgPyB0aGlzLnRpbWVwaWNrZXIudGltZXBpY2tlcklucHV0LnN0YXRlQ2hhbmdlc1xuICAgICAgICA6IG9ic2VydmFibGVPZigpO1xuICAgIGNvbnN0IGRhdGVwaWNrZXJUb2dnbGVkID0gdGhpcy50aW1lcGlja2VyXG4gICAgICA/IG1lcmdlKHRoaXMudGltZXBpY2tlci5vcGVuZWRTdHJlYW0sIHRoaXMudGltZXBpY2tlci5jbG9zZWRTdHJlYW0pXG4gICAgICA6IG9ic2VydmFibGVPZigpO1xuXG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzID0gbWVyZ2UoXG4gICAgICBkYXRlcGlja2VyU3RhdGVDaGFuZ2VkIGFzIE9ic2VydmFibGU8dm9pZD4sXG4gICAgICBpbnB1dFN0YXRlQ2hhbmdlZCxcbiAgICAgIGRhdGVwaWNrZXJUb2dnbGVkLFxuICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICAjYnV0dG9uXG4gIG1hdC1pY29uLWJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgW3RpdGxlXT1cImFyaWFMYWJlbFwiXG4gIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwidGltZXBpY2tlciA/ICdkaWFsb2cnIDogbnVsbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IHRhYkluZGV4XCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2Rpc2FibGVSaXBwbGVdPVwiZGlzYWJsZVJpcHBsZVwiXG4+XG4gIDxtYXQtaWNvbj5zY2hlZHVsZTwvbWF0LWljb24+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdHRpbWVwaWNrZXJUb2dnbGVJY29uXVwiPjwvbmctY29udGVudD5cbjwvYnV0dG9uPlxuIl19
@@ -48,8 +48,8 @@ export class MatTimepickerDirective {
48
48
  // Reset from here to ensure that the element doesn't become stuck.
49
49
  if (this.focused) {
50
50
  this.focused = false;
51
- this.stateChanges.next();
52
51
  }
52
+ this.stateChanges.next();
53
53
  }
54
54
  get id() {
55
55
  return this._id;
@@ -266,7 +266,6 @@ export class MatTimepickerDirective {
266
266
  this._id = '0';
267
267
  // tslint:disable-next-line:variable-name
268
268
  this._readonly = false;
269
- this.isAlive = new Subject();
270
269
  this.stateChanges = new Subject();
271
270
  // tslint:disable-next-line:variable-name
272
271
  this._uid = `mat-input-${MatTimepickerDirective.nextId++}`;
@@ -288,9 +287,6 @@ export class MatTimepickerDirective {
288
287
  this.disableDialogOpenOnClick = false;
289
288
  this.strict = true;
290
289
  this.controlType = 'angular-material-timepicker';
291
- this.listeners = [];
292
- // tslint:disable-next-line:variable-name
293
- this._isPm = false;
294
290
  // tslint:disable-next-line:variable-name
295
291
  this._value = null;
296
292
  // tslint:disable-next-line:variable-name
@@ -534,4 +530,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
534
530
  type: HostListener,
535
531
  args: ['focusout']
536
532
  }] } });
537
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL3RpbWVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUVSLFdBQVcsRUFDWCxJQUFJLEVBQ0osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQTJCOUQsTUFBTSxPQUFPLHNCQUFzQjthQUcxQixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFPbEIseURBQXlEO0lBQ3pELElBQ0ksYUFBYSxDQUFDLFVBQXlDO1FBQ3pELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDaEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUNsQixDQUFDO1lBQ0Ysc0RBQXNEO1FBQ3hELENBQUM7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Q0csWUFBWTtzQkFBckIsTUFBTTtnQkFFZ0IsWUFBWTtzQkFBbEMsWUFBWTt1QkFBQyxPQUFPO2dCQTJFZ0IsY0FBYztzQkFBbEQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0RBLFlBQVk7c0JBQTlDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlWLFlBQVk7c0JBQWxDLFlBQVk7dUJBQUMsT0FBTztnQkFJSyxlQUFlO3NCQUF4QyxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdGb3JtLFxuICBOZ0NvbnRyb2wsXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgT25Jbml0LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBFbGVtZW50UmVmLFxuICBPbkNoYW5nZXMsXG4gIFJlbmRlcmVyMixcbiAgT3B0aW9uYWwsXG4gIE5nWm9uZSxcbiAgSG9zdEJpbmRpbmcsXG4gIFNlbGYsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gIE1hdEZvcm1GaWVsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBJQWxsb3dlZDI0SG91ck1hcCB9IGZyb20gJy4vaW50ZXJmYWNlcy1hbmQtdHlwZXMnO1xuaW1wb3J0IHsgdHdvRGlnaXRzLCBpc0FsbG93ZWQsIGlzRGF0ZUluUmFuZ2UsIGlzVGltZUluUmFuZ2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9vbmVtcnZhLW1hdC10aW1lcGlja2VyLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W21hdFRpbWVwaWNrZXJdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTWF0VGltZXBpY2tlckRpcmVjdGl2ZSB9LFxuICBdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgaG9zdDoge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpvYmplY3QtbGl0ZXJhbC1rZXktcXVvdGVzXG4gICAgY2xhc3M6ICdtYXQtaW5wdXQtZWxlbWVudCBtYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sJyxcbiAgICAnW2NsYXNzLm1hdC1pbnB1dC1zZXJ2ZXJdJzogJ19pc1NlcnZlcicsXG4gICAgLy8gTmF0aXZlIGlucHV0IHByb3BlcnRpZXMgdGhhdCBhcmUgb3ZlcndyaXR0ZW4gYnkgQW5ndWxhciBpbnB1dHMgbmVlZCB0byBiZSBzeW5jZWQgd2l0aFxuICAgIC8vIHRoZSBuYXRpdmUgaW5wdXQgZWxlbWVudC4gT3RoZXJ3aXNlIHByb3BlcnR5IGJpbmRpbmdzIGZvciB0aG9zZSBkb24ndCB3b3JrLlxuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbYXR0ci5wbGFjZWhvbGRlcl0nOiAncGxhY2Vob2xkZXInLFxuICAgICdbZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW3JlcXVpcmVkXSc6ICdyZXF1aXJlZCcsXG4gICAgJ1thdHRyLnJlYWRvbmx5XSc6ICdyZWFkb25seSB8fCBudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2F0dHIuYXJpYS1yZXF1aXJlZF0nOiAncmVxdWlyZWQudG9TdHJpbmcoKScsXG4gIH0sXG4gIGV4cG9ydEFzOiAnbWF0VGltZXBpY2tlcicsXG59KVxuZXhwb3J0IGNsYXNzIE1hdFRpbWVwaWNrZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55Plxue1xuICBzdGF0aWMgbmV4dElkID0gMDtcblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGJlaW5nIHJlbmRlcmVkIG9uIHRoZSBzZXJ2ZXIuICovXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHJlYWRvbmx5IF9pc1NlcnZlcjogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfY2xvc2VkU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIC8qKiBUaGUgZGF0ZXBpY2tlciB0aGF0IHRoaXMgaW5wdXQgaXMgYXNzb2NpYXRlZCB3aXRoLiAqL1xuICBASW5wdXQoKVxuICBzZXQgbWF0VGltZXBpY2tlcih0aW1lcGlja2VyOiBPbmVtcnZhTWF0VGltZXBpY2tlckNvbXBvbmVudCkge1xuICAgIGlmICh0aW1lcGlja2VyKSB7XG4gICAgICB0aGlzLl90aW1lcGlja2VyID0gdGltZXBpY2tlcjtcbiAgICAgIHRoaXMuX3RpbWVwaWNrZXIuc2V0VGltZXBpY2tlcklucHV0KHRoaXMpO1xuICAgICAgdGhpcy5fY2xvc2VkU3Vic2NyaXB0aW9uID0gdGltZXBpY2tlci5jbG9zZWRTdHJlYW0uc3Vic2NyaWJlKCgpID0+XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpLFxuICAgICAgKTtcbiAgICAgIC8vdGhpcy5fcmVnaXN0ZXJNb2RlbChkYXRlcGlja2VyLnJlZ2lzdGVySW5wdXQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIF90aW1lcGlja2VyITogT25lbXJ2YU1hdFRpbWVwaWNrZXJDb21wb25lbnQ7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgX2Vycm9yU3RhdGUgPSBmYWxzZTtcbiAgZ2V0IGVycm9yU3RhdGUoKSB7XG4gICAgY29uc3Qgb2xkU3RhdGUgPSB0aGlzLl9lcnJvclN0YXRlO1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3BhcmVudEZvcm1Hcm91cCB8fCB0aGlzLl9wYXJlbnRGb3JtO1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbFxuICAgICAgPyAodGhpcy5uZ0NvbnRyb2wuY29udHJvbCBhcyBGb3JtQ29udHJvbClcbiAgICAgIDogbnVsbDtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHRoaXMuZXJyb3JTdGF0ZU1hdGNoZXJcbiAgICAgID8gdGhpcy5lcnJvclN0YXRlTWF0Y2hlci5pc0Vycm9yU3RhdGUoY29udHJvbCwgcGFyZW50KVxuICAgICAgOiBvbGRTdGF0ZTtcblxuICAgIGlmIChuZXdTdGF0ZSAhPT0gb2xkU3RhdGUpIHtcbiAgICAgIHRoaXMuX2Vycm9yU3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3U3RhdGU7XG4gIH1cblxuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAvLyBCcm93c2VycyBtYXkgbm90IGZpcmUgdGhlIGJsdXIgZXZlbnQgaWYgdGhlIGlucHV0IGlzIGRpc2FibGVkIHRvbyBxdWlja2x5LlxuICAgIC8vIFJlc2V0IGZyb20gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBkb2Vzbid0IGJlY29tZSBzdHVjay5cbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcm90ZWN0ZWQgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2lkO1xuICB9XG5cbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByb3RlY3RlZCBfaWQ6IHN0cmluZyA9ICcwJztcblxuICBASW5wdXQoKSBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICB9XG5cbiAgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfcmVhZG9ubHkgPSBmYWxzZTtcblxuICBwcml2YXRlIGlzQWxpdmU6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcm90ZWN0ZWQgX3VpZCA9IGBtYXQtaW5wdXQtJHtNYXRUaW1lcGlja2VyRGlyZWN0aXZlLm5leHRJZCsrfWA7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mbG9hdGluZycpIGdldCBzaG91bGRMYWJlbEZsb2F0KCkge1xuICAgIHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGRlc2NyaWJlZEJ5ID0gJyc7XG5cbiAgQElucHV0KCkgZXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyO1xuXG4gIEBJbnB1dCgpIGdldCByZXF1aXJlZCgpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5jb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHJlcSkge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgc2V0IHBsYWNlaG9sZGVyKHBsaCkge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICBmb2N1c2VkID0gZmFsc2U7XG4gIHByaXZhdGUgcGF0dGVybjogUmVnRXhwID0gbmV3IFJlZ0V4cCgnWzAtMl0/WzAtOV06WzAtNl0/WzAtOV0nKTtcblxuICBwcml2YXRlIGFsbG93ZWQyNEhvdXJNYXA6IElBbGxvd2VkMjRIb3VyTWFwID0gdGhpcy5nZW5lcmF0ZUFsbG93ZWRNYXAoKTtcblxuICBwcml2YXRlIGlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG5cbiAgLyoqIE92ZXJyaWRlIHRoZSBsYWJlbCBvZiB0aGUgb2sgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBva0xhYmVsID0gJ09rJztcbiAgLyoqIE92ZXJyaWRlIHRoZSBsYWJlbCBvZiB0aGUgY2FuY2VsIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgY2FuY2VsTGFiZWwgPSAnQ2FuY2VsJztcblxuICAvKiogU2V0cyB0aGUgY2xvY2sgbW9kZSwgMTItaG91ciBvciAyNC1ob3VyIGNsb2NrcyBhcmUgc3VwcG9ydGVkLiAqL1xuICBASW5wdXQoKSBjb2xvciA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgZGlzYWJsZURpYWxvZ09wZW5PbkNsaWNrID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN0cmljdCA9IHRydWU7XG5cbiAgY29udHJvbFR5cGUgPSAnYW5ndWxhci1tYXRlcmlhbC10aW1lcGlja2VyJztcblxuICBwcml2YXRlIGxpc3RlbmVyczogKCgpID0+IHZvaWQpW10gPSBbXTtcblxuICBASW5wdXQoKSBtaW5EYXRlITogRGF0ZTtcbiAgQElucHV0KCkgbWF4RGF0ZSE6IERhdGU7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfaXNQbTogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF92YWx1ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9mb3JtYXR0ZWRWYWx1ZVN0cmluZzogc3RyaW5nID0gJyc7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5fZm9ybWF0dGVkVmFsdWVTdHJpbmcgPSAnJztcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSB2YWx1ZSA/PyBuZXcgRGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1hdHRlZFZhbHVlU3RyaW5nID0gYCR7dHdvRGlnaXRzKHZhbHVlLmdldEhvdXJzKCkpfToke3R3b0RpZ2l0cyhcbiAgICAgIHZhbHVlLmdldE1pbnV0ZXMoKSxcbiAgICApfWA7XG5cbiAgICBpZiAoIXRoaXMuaXNJbnB1dEZvY3VzZWQpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodGhpcy5mb3JtYXR0ZWRWYWx1ZVN0cmluZyk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudGltZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFZhbHVlKTtcblxuICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBnZXQgZW1wdHkoKSB7XG4gICAgcmV0dXJuICEodGhpcy5jdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBEYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZvcm1hdHRlZFZhbHVlU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRWYWx1ZVN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFZhbHVlITogRGF0ZTtcblxuICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueTtcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55O1xuICBwcml2YXRlIGNvbWJpbmF0aW9uOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSB0aW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW52YWxpZElucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JykgaW5wdXRIYW5kbGVyKCkge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCBhcyBhbnkpLnZhbHVlIGFzIHN0cmluZztcbiAgICBjb25zdCBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUobnVsbCwgdHJ1ZSk7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IHRydWU7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+ICh0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IGZhbHNlKSk7XG5cbiAgICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVIYXNDb2x1bW4gPSB2YWx1ZS5pbmNsdWRlcygnOicpO1xuICAgIGxldCBbaG91cnMsIG1pbnV0ZXNdOiBhbnkgPVxuICAgICAgbGVuZ3RoID09PSAxXG4gICAgICAgID8gW3ZhbHVlLCAwXVxuICAgICAgICA6IGxlbmd0aCA9PT0gMiAmJiAhdmFsdWVIYXNDb2x1bW5cbiAgICAgICAgICA/IFt2YWx1ZSwgMF1cbiAgICAgICAgICA6IHZhbHVlSGFzQ29sdW1uXG4gICAgICAgICAgICA/IHZhbHVlLnNwbGl0KCc6JylcbiAgICAgICAgICAgIDogdmFsdWUuc3BsaXQoLyhcXGRcXGQpLykuZmlsdGVyKHYgPT4gdik7XG5cbiAgICBob3VycyA9ICtob3VycztcblxuICAgIGlmICgvXFxzLy50ZXN0KG1pbnV0ZXMpKSB7XG4gICAgICBsZXQgb3RoZXI7XG4gICAgICBbbWludXRlcywgb3RoZXJdID0gbWludXRlcy5zcGxpdCgvXFxzLyk7XG4gICAgICBpZiAob3RoZXIgPT09ICdwbScgJiYgIWlzTmFOKGhvdXJzKSAmJiBob3VycyA8IDEyKSB7XG4gICAgICAgIGhvdXJzICs9IDEyO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1pbnV0ZXMgPSArbWludXRlcztcblxuICAgIGlmIChpc05hTihob3VycykgfHwgaXNOYU4obWludXRlcykpIHtcbiAgICAgIC8vdGhpcy53cml0ZVZhbHVlKG51bGwsIHRydWUpO1xuICAgICAgdGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiAodGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSBmYWxzZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgraG91cnMgPiAyNCkge1xuICAgICAgaG91cnMgPSAnMjQnO1xuICAgIH0gZWxzZSBpZiAoK2hvdXJzIDwgMCkge1xuICAgICAgaG91cnMgPSAnMCc7XG4gICAgfVxuXG4gICAgaWYgKCttaW51dGVzID4gNTkpIHtcbiAgICAgIG1pbnV0ZXMgPSAnNTknO1xuICAgIH0gZWxzZSBpZiAoK21pbnV0ZXMgPCAwKSB7XG4gICAgICBtaW51dGVzID0gJzAnO1xuICAgIH1cblxuICAgIGNvbnN0IGQgPSB0aGlzLnZhbHVlID8gbmV3IERhdGUodGhpcy52YWx1ZS5nZXRUaW1lKCkpIDogbmV3IERhdGUoKTtcbiAgICBkLnNldEhvdXJzKCtob3Vycyk7XG4gICAgZC5zZXRNaW51dGVzKCttaW51dGVzKTtcbiAgICBkLnNldFNlY29uZHMoMCk7XG4gICAgZC5zZXRNaWxsaXNlY29uZHMoMCk7XG5cbiAgICBjb25zdCBpc1ZhbHVlSW5SYW5nZSA9IGlzRGF0ZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIGQpO1xuICAgIGlmICghaXNWYWx1ZUluUmFuZ2UpIHtcbiAgICAgIHRoaXMuaW52YWxpZElucHV0LmVtaXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLndyaXRlVmFsdWUoZCwgdHJ1ZSk7XG4gICAgaWYgKHRoaXMub25DaGFuZ2VGbikge1xuICAgICAgdGhpcy5vbkNoYW5nZUZuKGQpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBrZXlkb3duSGFuZGxlcihldmVudDogYW55KSB7XG4gICAgY29uc3QgZSA9IDxLZXlib2FyZEV2ZW50PmV2ZW50O1xuXG4gICAgY29uc3QgYWxsb3dlZEtleSA9IFtcbiAgICAgICcwJyxcbiAgICAgICcxJyxcbiAgICAgICcyJyxcbiAgICAgICczJyxcbiAgICAgICc0JyxcbiAgICAgICc1JyxcbiAgICAgICc2JyxcbiAgICAgICc3JyxcbiAgICAgICc4JyxcbiAgICAgICc5JyxcbiAgICAgICc6JyxcbiAgICAgICdCYWNrc3BhY2UnLFxuICAgICAgJ0RlbGV0ZScsXG4gICAgICAnVGFiJyxcbiAgICAgICdFbnRlcicsXG4gICAgICAnQXJyb3dMZWZ0JyxcbiAgICAgICdBcnJvd1JpZ2h0JyxcbiAgICAgICdBcnJvd1VwJyxcbiAgICAgICdBcnJvd0Rvd24nLFxuICAgICAgJ0hvbWUnLFxuICAgICAgJ0VuZCcsXG4gICAgXTtcbiAgICBpZiAoYWxsb3dlZEtleS5pbmRleE9mKGUua2V5KSA+PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBhbGxvd2VkQ3RybFNob3J0Y3V0cyA9IFsnYScsICdjJywgJ3gnLCAndiddO1xuICAgIGlmIChlLmN0cmxLZXkgJiYgYWxsb3dlZEN0cmxTaG9ydGN1dHMuaW5kZXhPZihlLmtleSkgPj0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkpIHtcbiAgICAgIHRoaXMuY29tYmluYXRpb24gPSB0aGlzLmNvbWJpbmF0aW9uLmNvbmNhdChldmVudC5jb2RlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHRWYWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICBjb25zdCB2YWx1ZSA9IGAke3RWYWx1ZS5zbGljZSgwLCB0YXJnZXQuc2VsZWN0aW9uU3RhcnQpfSR7XG4gICAgICBldmVudC5rZXlcbiAgICB9JHt0VmFsdWUuc2xpY2UodGFyZ2V0LnNlbGVjdGlvbkVuZCl9YDtcbiAgICBpZiAodmFsdWUubWF0Y2godGhpcy5wYXR0ZXJuKSB8fCB0aGlzLmNvbWJpbmF0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSkga2V5dXBIYW5kbGVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNvbWJpbmF0aW9uID0gdGhpcy5jb21iaW5hdGlvbi5maWx0ZXIodiA9PiB2ICE9PSBldmVudC5jb2RlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJykgZm9jdXNIYW5kbGVyKCkge1xuICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKSBmb2N1c291dEhhbmRsZXIoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodGhpcy5mb3JtYXR0ZWRWYWx1ZVN0cmluZyk7XG4gICAgaWYgKHRoaXMub25Ub3VjaGVkRm4gJiYgIXRoaXMuX3RpbWVwaWNrZXIubW9kYWxSZWYpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBmbTogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBwcm90ZWN0ZWQgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX21hdEZvcm1GaWxlZDogTWF0Rm9ybUZpZWxkLFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgKSB7XG4gICAgdGhpcy5lcnJvclN0YXRlTWF0Y2hlciA9IF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIGlmIChfcGxhdGZvcm0uSU9TKSB7XG4gICAgICBuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgaWYgKCFlbC52YWx1ZSAmJiAhZWwuc2VsZWN0aW9uU3RhcnQgJiYgIWVsLnNlbGVjdGlvbkVuZCkge1xuICAgICAgICAgICAgLy8gTm90ZTogSnVzdCBzZXR0aW5nIGAwLCAwYCBkb2Vzbid0IGZpeCB0aGUgaXNzdWUuIFNldHRpbmdcbiAgICAgICAgICAgIC8vIGAxLCAxYCBmaXhlcyBpdCBmb3IgdGhlIGZpcnN0IHRpbWUgdGhhdCB5b3UgdHlwZSB0ZXh0IGFuZFxuICAgICAgICAgICAgLy8gdGhlbiBob2xkIGRlbGV0ZS4gVG9nZ2xpbmcgdG8gYDEsIDFgIGFuZCB0aGVuIGJhY2sgdG9cbiAgICAgICAgICAgIC8vIGAwLCAwYCBzZWVtcyB0byBjb21wbGV0ZWx5IGZpeCBpdC5cbiAgICAgICAgICAgIGVsLnNldFNlbGVjdGlvblJhbmdlKDEsIDEpO1xuICAgICAgICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VydmVyID0gIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcjtcbiAgfVxuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHNldElucHV0RWxlbWVudFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIGNvbnN0IGlzVmFsdWVJblJhbmdlID0gdGhpcy5zdHJpY3RcbiAgICAgID8gaXNEYXRlSW5SYW5nZSh0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSwgdGhpcy5jdXJyZW50VmFsdWUpXG4gICAgICA6IGlzVGltZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIHRoaXMuY3VycmVudFZhbHVlKTtcblxuICAgIHJldHVybiBpc1ZhbHVlSW5SYW5nZSA/IG51bGwgOiB7IGRhdGVSYW5nZTogdHJ1ZSB9O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgdGhpcy5mbS5tb25pdG9yKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9ICEhb3JpZ2luO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICBjb25zdCBoYXNNYXhEYXRlID0gISF0aGlzLm1heERhdGU7XG4gICAgICBjb25zdCBoYXNNaW5EYXRlID0gISF0aGlzLm1pbkRhdGU7XG5cbiAgICAgIC8vaWYgKGhhc01pbkRhdGUgfHwgaGFzTWF4RGF0ZSkge1xuICAgICAgaWYgKGhhc01pbkRhdGUpIHtcbiAgICAgICAgdGhpcy5taW5EYXRlLnNldFNlY29uZHMoMCk7XG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICB9XG4gICAgICBpZiAoaGFzTWF4RGF0ZSkge1xuICAgICAgICB0aGlzLm1heERhdGUuc2V0U2Vjb25kcygwKTtcbiAgICAgICAgdGhpcy5tYXhEYXRlLnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhKHRoaXMubmdDb250cm9sIGFzIGFueSkuX3Jhd1ZhbGlkYXRvcnMuZmluZCgodjogYW55KSA9PiB2ID09PSB0aGlzKVxuICAgICAgKSB7XG4gICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzLnB1c2godGhpcyk7XG4gICAgICB9XG4gICAgICAvL31cbiAgICB9XG4gICAgdGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSBmYWxzZTtcbiAgfVxuXG4gIGdlbmVyYXRlQWxsb3dlZE1hcCgpOiBJQWxsb3dlZDI0SG91ck1hcCB7XG4gICAgY29uc3QgaXNTdHJpY3RNb2RlID0gdGhpcy5zdHJpY3QgJiYgdGhpcy52YWx1ZSBpbnN0YW5jZW9mIERhdGU7XG4gICAgY29uc3QgYTI0aG06IElBbGxvd2VkMjRIb3VyTWFwID0ge307XG4gICAgZm9yIChsZXQgaCA9IDA7IGggPCAyNDsgaCsrKSB7XG4gICAgICBmb3IgKGxldCBtID0gMDsgbSA8IDYwOyBtKyspIHtcbiAgICAgICAgY29uc3QgaG91ck1hcCA9IGEyNGhtW2hdIHx8IHt9O1xuICAgICAgICBpZiAoaXNTdHJpY3RNb2RlICYmIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUuZ2V0VGltZSgpKTtcbiAgICAgICAgICBjdXJyZW50RGF0ZS5zZXRIb3VycyhoKTtcbiAgICAgICAgICBjdXJyZW50RGF0ZS5zZXRNaW51dGVzKG0pO1xuICAgICAgICAgIGN1cnJlbnREYXRlLnNldFNlY29uZHMoMCk7XG4gICAgICAgICAgY3VycmVudERhdGUuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgICAgIGhvdXJNYXBbbV0gPSBpc0RhdGVJblJhbmdlKHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCBjdXJyZW50RGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaG91ck1hcFttXSA9IGlzQWxsb3dlZChoLCBtLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYTI0aG1baF0gPSBob3VyTWFwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhMjRobTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMucGF0dGVybiA9IC9eWzAtOV17MSwyfTo/KFswLTldezEsMn0pPyQvO1xuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuX3RpbWVwaWNrZXIubW9kYWxSZWYgfHxcbiAgICAgICF0aGlzLl90aW1lcGlja2VyLm1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGltZXBpY2tlci5tb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0ge1xuICAgICAgdmFsdWU6IHRoaXMuY3VycmVudFZhbHVlLFxuICAgICAgb2tMYWJlbDogdGhpcy5va0xhYmVsLFxuICAgICAgY2FuY2VsTGFiZWw6IHRoaXMuY2FuY2VsTGFiZWwsXG4gICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZSxcbiAgICAgIGFsbG93ZWQyNEhvdXJNYXA6IHRoaXMuYWxsb3dlZDI0SG91ck1hcCxcbiAgICB9O1xuICB9XG5cbiAgY2hlY2tWYWxpZGl0eSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaG91ciA9IHZhbHVlLmdldEhvdXJzKCk7XG4gICAgY29uc3QgbWludXRlcyA9IHZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICByZXR1cm4gaXNBbGxvd2VkKGhvdXIsIG1pbnV0ZXMsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBudWxsLCBpc0lubmVyQ2FsbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCFpc0lubmVyQ2FsbCkge1xuICAgICAgdGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiAodGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSBmYWxzZSkpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUuc2V0U2Vjb25kcygwKTtcbiAgICAgIHZhbHVlLnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSAmJiArdGhpcy52YWx1ZSA9PT0gKyh2YWx1ZSA/PyAwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG4iXX0=
533
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL3RpbWVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUVSLFdBQVcsRUFDWCxJQUFJLEVBQ0osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQTJCOUQsTUFBTSxPQUFPLHNCQUFzQjthQUcxQixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFPbEIseURBQXlEO0lBQ3pELElBQ0ksYUFBYSxDQUFDLFVBQXlDO1FBQ3pELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDaEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUNsQixDQUFDO1lBQ0Ysc0RBQXNEO1FBQ3hELENBQUM7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QVEsQ0FBQztnQkFnREEsWUFBWTtzQkFBOUMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSVYsWUFBWTtzQkFBbEMsWUFBWTt1QkFBQyxPQUFPO2dCQUlLLGVBQWU7c0JBQXhDLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOZ0Zvcm0sXG4gIE5nQ29udHJvbCxcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICBGb3JtQ29udHJvbCxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBPbkluaXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgUmVuZGVyZXIyLFxuICBPcHRpb25hbCxcbiAgTmdab25lLFxuICBIb3N0QmluZGluZyxcbiAgU2VsZixcbiAgT3V0cHV0LFxuICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgTWF0Rm9ybUZpZWxkLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IElBbGxvd2VkMjRIb3VyTWFwIH0gZnJvbSAnLi9pbnRlcmZhY2VzLWFuZC10eXBlcyc7XG5pbXBvcnQgeyB0d29EaWdpdHMsIGlzQWxsb3dlZCwgaXNEYXRlSW5SYW5nZSwgaXNUaW1lSW5SYW5nZSB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgT25lbXJ2YU1hdFRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL29uZW1ydmEtbWF0LXRpbWVwaWNrZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbbWF0VGltZXBpY2tlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNYXRUaW1lcGlja2VyRGlyZWN0aXZlIH0sXG4gIF0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBob3N0OiB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm9iamVjdC1saXRlcmFsLWtleS1xdW90ZXNcbiAgICBjbGFzczogJ21hdC1pbnB1dC1lbGVtZW50IG1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2wnLFxuICAgICdbY2xhc3MubWF0LWlucHV0LXNlcnZlcl0nOiAnX2lzU2VydmVyJyxcbiAgICAvLyBOYXRpdmUgaW5wdXQgcHJvcGVydGllcyB0aGF0IGFyZSBvdmVyd3JpdHRlbiBieSBBbmd1bGFyIGlucHV0cyBuZWVkIHRvIGJlIHN5bmNlZCB3aXRoXG4gICAgLy8gdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50LiBPdGhlcndpc2UgcHJvcGVydHkgYmluZGluZ3MgZm9yIHRob3NlIGRvbid0IHdvcmsuXG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgJ1thdHRyLnBsYWNlaG9sZGVyXSc6ICdwbGFjZWhvbGRlcicsXG4gICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2F0dHIucmVhZG9ubHldJzogJ3JlYWRvbmx5IHx8IG51bGwnLFxuICAgICdbYXR0ci5hcmlhLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbYXR0ci5hcmlhLXJlcXVpcmVkXSc6ICdyZXF1aXJlZC50b1N0cmluZygpJyxcbiAgfSxcbiAgZXhwb3J0QXM6ICdtYXRUaW1lcGlja2VyJyxcbn0pXG5leHBvcnQgY2xhc3MgTWF0VGltZXBpY2tlckRpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+XG57XG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgcmVuZGVyZWQgb24gdGhlIHNlcnZlci4gKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcmVhZG9ubHkgX2lzU2VydmVyOiBib29sZWFuO1xuICBwcml2YXRlIF9jbG9zZWRTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgLyoqIFRoZSBkYXRlcGlja2VyIHRoYXQgdGhpcyBpbnB1dCBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gIEBJbnB1dCgpXG4gIHNldCBtYXRUaW1lcGlja2VyKHRpbWVwaWNrZXI6IE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50KSB7XG4gICAgaWYgKHRpbWVwaWNrZXIpIHtcbiAgICAgIHRoaXMuX3RpbWVwaWNrZXIgPSB0aW1lcGlja2VyO1xuICAgICAgdGhpcy5fdGltZXBpY2tlci5zZXRUaW1lcGlja2VySW5wdXQodGhpcyk7XG4gICAgICB0aGlzLl9jbG9zZWRTdWJzY3JpcHRpb24gPSB0aW1lcGlja2VyLmNsb3NlZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT5cbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCksXG4gICAgICApO1xuICAgICAgLy90aGlzLl9yZWdpc3Rlck1vZGVsKGRhdGVwaWNrZXIucmVnaXN0ZXJJbnB1dCh0aGlzKSk7XG4gICAgfVxuICB9XG5cbiAgX3RpbWVwaWNrZXIhOiBPbmVtcnZhTWF0VGltZXBpY2tlckNvbXBvbmVudDtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBfZXJyb3JTdGF0ZSA9IGZhbHNlO1xuICBnZXQgZXJyb3JTdGF0ZSgpIHtcbiAgICBjb25zdCBvbGRTdGF0ZSA9IHRoaXMuX2Vycm9yU3RhdGU7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50Rm9ybUdyb3VwIHx8IHRoaXMuX3BhcmVudEZvcm07XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sXG4gICAgICA/ICh0aGlzLm5nQ29udHJvbC5jb250cm9sIGFzIEZvcm1Db250cm9sKVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5lcnJvclN0YXRlTWF0Y2hlclxuICAgICAgPyB0aGlzLmVycm9yU3RhdGVNYXRjaGVyLmlzRXJyb3JTdGF0ZShjb250cm9sLCBwYXJlbnQpXG4gICAgICA6IG9sZFN0YXRlO1xuXG4gICAgaWYgKG5ld1N0YXRlICE9PSBvbGRTdGF0ZSkge1xuICAgICAgdGhpcy5fZXJyb3JTdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgfVxuXG4gIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmRpc2FibGVkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgIC8vIEJyb3dzZXJzIG1heSBub3QgZmlyZSB0aGUgYmx1ciBldmVudCBpZiB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgdG9vIHF1aWNrbHkuXG4gICAgLy8gUmVzZXQgZnJvbSBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGRvZXNuJ3QgYmVjb21lIHN0dWNrLlxuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcm90ZWN0ZWQgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2lkO1xuICB9XG5cbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByb3RlY3RlZCBfaWQ6IHN0cmluZyA9ICcwJztcblxuICBASW5wdXQoKSBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICB9XG5cbiAgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfcmVhZG9ubHkgPSBmYWxzZTtcblxuICBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByb3RlY3RlZCBfdWlkID0gYG1hdC1pbnB1dC0ke01hdFRpbWVwaWNrZXJEaXJlY3RpdmUubmV4dElkKyt9YDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZsb2F0aW5nJykgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgZGVzY3JpYmVkQnkgPSAnJztcblxuICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgQElucHV0KCkgZ2V0IHJlcXVpcmVkKCkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xuICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBzZXQgcmVxdWlyZWQocmVxKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBzZXQgcGxhY2Vob2xkZXIocGxoKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBwbGg7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIGZvY3VzZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBwYXR0ZXJuOiBSZWdFeHAgPSBuZXcgUmVnRXhwKCdbMC0yXT9bMC05XTpbMC02XT9bMC05XScpO1xuXG4gIHByaXZhdGUgYWxsb3dlZDI0SG91ck1hcDogSUFsbG93ZWQyNEhvdXJNYXAgPSB0aGlzLmdlbmVyYXRlQWxsb3dlZE1hcCgpO1xuXG4gIHByaXZhdGUgaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcblxuICAvKiogT3ZlcnJpZGUgdGhlIGxhYmVsIG9mIHRoZSBvayBidXR0b24uICovXG4gIEBJbnB1dCgpIG9rTGFiZWwgPSAnT2snO1xuICAvKiogT3ZlcnJpZGUgdGhlIGxhYmVsIG9mIHRoZSBjYW5jZWwgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBjYW5jZWxMYWJlbCA9ICdDYW5jZWwnO1xuXG4gIC8qKiBTZXRzIHRoZSBjbG9jayBtb2RlLCAxMi1ob3VyIG9yIDI0LWhvdXIgY2xvY2tzIGFyZSBzdXBwb3J0ZWQuICovXG4gIEBJbnB1dCgpIGNvbG9yID0gJ3ByaW1hcnknO1xuICBASW5wdXQoKSBkaXNhYmxlRGlhbG9nT3Blbk9uQ2xpY2sgPSBmYWxzZTtcbiAgQElucHV0KCkgc3RyaWN0ID0gdHJ1ZTtcblxuICBjb250cm9sVHlwZSA9ICdhbmd1bGFyLW1hdGVyaWFsLXRpbWVwaWNrZXInO1xuXG4gIEBJbnB1dCgpIG1pbkRhdGUhOiBEYXRlO1xuICBASW5wdXQoKSBtYXhEYXRlITogRGF0ZTtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF92YWx1ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9mb3JtYXR0ZWRWYWx1ZVN0cmluZzogc3RyaW5nID0gJyc7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5fZm9ybWF0dGVkVmFsdWVTdHJpbmcgPSAnJztcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSB2YWx1ZSA/PyBuZXcgRGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1hdHRlZFZhbHVlU3RyaW5nID0gYCR7dHdvRGlnaXRzKHZhbHVlLmdldEhvdXJzKCkpfToke3R3b0RpZ2l0cyhcbiAgICAgIHZhbHVlLmdldE1pbnV0ZXMoKSxcbiAgICApfWA7XG5cbiAgICBpZiAoIXRoaXMuaXNJbnB1dEZvY3VzZWQpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodGhpcy5mb3JtYXR0ZWRWYWx1ZVN0cmluZyk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuX3NraXBWYWx1ZUNoYW5nZUVtaXNzaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudGltZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFZhbHVlKTtcblxuICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBnZXQgZW1wdHkoKSB7XG4gICAgcmV0dXJuICEodGhpcy5jdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBEYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZvcm1hdHRlZFZhbHVlU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRWYWx1ZVN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFZhbHVlITogRGF0ZTtcblxuICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueTtcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55O1xuICBwcml2YXRlIGNvbWJpbmF0aW9uOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSB0aW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW52YWxpZElucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JykgaW5wdXRIYW5kbGVyKCkge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCBhcyBhbnkpLnZhbHVlIGFzIHN0cmluZztcbiAgICBjb25zdCBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUobnVsbCwgdHJ1ZSk7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IHRydWU7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+ICh0aGlzLl9za2lwVmFsdWVDaGFuZ2VFbWlzc2lvbiA9IGZhbHNlKSk7XG5cbiAgICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVIYXNDb2x1bW4gPSB2YWx1ZS5pbmNsdWRlcygnOicpO1xuICAgIGxldCBbaG91cnMsIG1pbnV0ZXNdOiBhbnkgPVxuICAgICAgbGVuZ3RoID09PSAxXG4gICAgICAgID8gW3ZhbHVlLCAwXVxuICAgICAgICA6IGxlbmd0aCA9PT0gMiAmJiAhdmFsdWVIYXNDb2x1bW5cbiAgICAgICAgICA/IFt2YWx1ZSwgMF1cbiAgICAgICAgICA6IHZhbHVlSGFzQ29sdW1uXG4gICAgICAgICAgICA/IHZhbHVlLnNwbGl0KCc6JylcbiAgICAgICAgICAgIDogdmFsdWUuc3BsaXQoLyhcXGRcXGQpLykuZmlsdGVyKHYgPT4gdik7XG5cbiAgICBob3VycyA9ICtob3VycztcblxuICAgIGlmICgvXFxzLy50ZXN0KG1pbnV0ZXMpKSB7XG4gICAgICBsZXQgb3RoZXI7XG4gICAgICBbbWludXRlcywgb3RoZXJdID0gbWludXRlcy5zcGxpdCgvXFxzLyk7XG4gICAgICBpZiAob3RoZXIgPT09ICdwbScgJiYgIWlzTmFOKGhvdXJzKSAmJiBob3VycyA8IDEyKSB7XG4gICAgICAgIGhvdXJzICs9IDEyO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1pbnV0ZXMgPSArbWludXRlcztcblxuICAgIGlmIChpc05hTihob3VycykgfHwgaXNOYU4obWludXRlcykpIHtcbiAgICAgIC8vdGhpcy53cml0ZVZhbHVlKG51bGwsIHRydWUpO1xuICAgICAgdGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiAodGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSBmYWxzZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgraG91cnMgPiAyNCkge1xuICAgICAgaG91cnMgPSAnMjQnO1xuICAgIH0gZWxzZSBpZiAoK2hvdXJzIDwgMCkge1xuICAgICAgaG91cnMgPSAnMCc7XG4gICAgfVxuXG4gICAgaWYgKCttaW51dGVzID4gNTkpIHtcbiAgICAgIG1pbnV0ZXMgPSAnNTknO1xuICAgIH0gZWxzZSBpZiAoK21pbnV0ZXMgPCAwKSB7XG4gICAgICBtaW51dGVzID0gJzAnO1xuICAgIH1cblxuICAgIGNvbnN0IGQgPSB0aGlzLnZhbHVlID8gbmV3IERhdGUodGhpcy52YWx1ZS5nZXRUaW1lKCkpIDogbmV3IERhdGUoKTtcbiAgICBkLnNldEhvdXJzKCtob3Vycyk7XG4gICAgZC5zZXRNaW51dGVzKCttaW51dGVzKTtcbiAgICBkLnNldFNlY29uZHMoMCk7XG4gICAgZC5zZXRNaWxsaXNlY29uZHMoMCk7XG5cbiAgICBjb25zdCBpc1ZhbHVlSW5SYW5nZSA9IGlzRGF0ZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIGQpO1xuICAgIGlmICghaXNWYWx1ZUluUmFuZ2UpIHtcbiAgICAgIHRoaXMuaW52YWxpZElucHV0LmVtaXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLndyaXRlVmFsdWUoZCwgdHJ1ZSk7XG4gICAgaWYgKHRoaXMub25DaGFuZ2VGbikge1xuICAgICAgdGhpcy5vbkNoYW5nZUZuKGQpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBrZXlkb3duSGFuZGxlcihldmVudDogYW55KSB7XG4gICAgY29uc3QgZSA9IDxLZXlib2FyZEV2ZW50PmV2ZW50O1xuXG4gICAgY29uc3QgYWxsb3dlZEtleSA9IFtcbiAgICAgICcwJyxcbiAgICAgICcxJyxcbiAgICAgICcyJyxcbiAgICAgICczJyxcbiAgICAgICc0JyxcbiAgICAgICc1JyxcbiAgICAgICc2JyxcbiAgICAgICc3JyxcbiAgICAgICc4JyxcbiAgICAgICc5JyxcbiAgICAgICc6JyxcbiAgICAgICdCYWNrc3BhY2UnLFxuICAgICAgJ0RlbGV0ZScsXG4gICAgICAnVGFiJyxcbiAgICAgICdFbnRlcicsXG4gICAgICAnQXJyb3dMZWZ0JyxcbiAgICAgICdBcnJvd1JpZ2h0JyxcbiAgICAgICdBcnJvd1VwJyxcbiAgICAgICdBcnJvd0Rvd24nLFxuICAgICAgJ0hvbWUnLFxuICAgICAgJ0VuZCcsXG4gICAgXTtcbiAgICBpZiAoYWxsb3dlZEtleS5pbmRleE9mKGUua2V5KSA+PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBhbGxvd2VkQ3RybFNob3J0Y3V0cyA9IFsnYScsICdjJywgJ3gnLCAndiddO1xuICAgIGlmIChlLmN0cmxLZXkgJiYgYWxsb3dlZEN0cmxTaG9ydGN1dHMuaW5kZXhPZihlLmtleSkgPj0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkpIHtcbiAgICAgIHRoaXMuY29tYmluYXRpb24gPSB0aGlzLmNvbWJpbmF0aW9uLmNvbmNhdChldmVudC5jb2RlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHRWYWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICBjb25zdCB2YWx1ZSA9IGAke3RWYWx1ZS5zbGljZSgwLCB0YXJnZXQuc2VsZWN0aW9uU3RhcnQpfSR7XG4gICAgICBldmVudC5rZXlcbiAgICB9JHt0VmFsdWUuc2xpY2UodGFyZ2V0LnNlbGVjdGlvbkVuZCl9YDtcbiAgICBpZiAodmFsdWUubWF0Y2godGhpcy5wYXR0ZXJuKSB8fCB0aGlzLmNvbWJpbmF0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSkga2V5dXBIYW5kbGVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNvbWJpbmF0aW9uID0gdGhpcy5jb21iaW5hdGlvbi5maWx0ZXIodiA9PiB2ICE9PSBldmVudC5jb2RlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJykgZm9jdXNIYW5kbGVyKCkge1xuICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKSBmb2N1c291dEhhbmRsZXIoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUodGhpcy5mb3JtYXR0ZWRWYWx1ZVN0cmluZyk7XG4gICAgaWYgKHRoaXMub25Ub3VjaGVkRm4gJiYgIXRoaXMuX3RpbWVwaWNrZXIubW9kYWxSZWYpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBmbTogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBwcm90ZWN0ZWQgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX21hdEZvcm1GaWxlZDogTWF0Rm9ybUZpZWxkLFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgKSB7XG4gICAgdGhpcy5lcnJvclN0YXRlTWF0Y2hlciA9IF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIGlmIChfcGxhdGZvcm0uSU9TKSB7XG4gICAgICBuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgaWYgKCFlbC52YWx1ZSAmJiAhZWwuc2VsZWN0aW9uU3RhcnQgJiYgIWVsLnNlbGVjdGlvbkVuZCkge1xuICAgICAgICAgICAgLy8gTm90ZTogSnVzdCBzZXR0aW5nIGAwLCAwYCBkb2Vzbid0IGZpeCB0aGUgaXNzdWUuIFNldHRpbmdcbiAgICAgICAgICAgIC8vIGAxLCAxYCBmaXhlcyBpdCBmb3IgdGhlIGZpcnN0IHRpbWUgdGhhdCB5b3UgdHlwZSB0ZXh0IGFuZFxuICAgICAgICAgICAgLy8gdGhlbiBob2xkIGRlbGV0ZS4gVG9nZ2xpbmcgdG8gYDEsIDFgIGFuZCB0aGVuIGJhY2sgdG9cbiAgICAgICAgICAgIC8vIGAwLCAwYCBzZWVtcyB0byBjb21wbGV0ZWx5IGZpeCBpdC5cbiAgICAgICAgICAgIGVsLnNldFNlbGVjdGlvblJhbmdlKDEsIDEpO1xuICAgICAgICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VydmVyID0gIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcjtcbiAgfVxuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHNldElucHV0RWxlbWVudFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIGNvbnN0IGlzVmFsdWVJblJhbmdlID0gdGhpcy5zdHJpY3RcbiAgICAgID8gaXNEYXRlSW5SYW5nZSh0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSwgdGhpcy5jdXJyZW50VmFsdWUpXG4gICAgICA6IGlzVGltZUluUmFuZ2UodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIHRoaXMuY3VycmVudFZhbHVlKTtcblxuICAgIHJldHVybiBpc1ZhbHVlSW5SYW5nZSA/IG51bGwgOiB7IGRhdGVSYW5nZTogdHJ1ZSB9O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgdGhpcy5mbS5tb25pdG9yKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9ICEhb3JpZ2luO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICBjb25zdCBoYXNNYXhEYXRlID0gISF0aGlzLm1heERhdGU7XG4gICAgICBjb25zdCBoYXNNaW5EYXRlID0gISF0aGlzLm1pbkRhdGU7XG5cbiAgICAgIC8vaWYgKGhhc01pbkRhdGUgfHwgaGFzTWF4RGF0ZSkge1xuICAgICAgaWYgKGhhc01pbkRhdGUpIHtcbiAgICAgICAgdGhpcy5taW5EYXRlLnNldFNlY29uZHMoMCk7XG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICB9XG4gICAgICBpZiAoaGFzTWF4RGF0ZSkge1xuICAgICAgICB0aGlzLm1heERhdGUuc2V0U2Vjb25kcygwKTtcbiAgICAgICAgdGhpcy5tYXhEYXRlLnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhKHRoaXMubmdDb250cm9sIGFzIGFueSkuX3Jhd1ZhbGlkYXRvcnMuZmluZCgodjogYW55KSA9PiB2ID09PSB0aGlzKVxuICAgICAgKSB7XG4gICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzLnB1c2godGhpcyk7XG4gICAgICB9XG4gICAgICAvL31cbiAgICB9XG4gICAgdGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSBmYWxzZTtcbiAgfVxuXG4gIGdlbmVyYXRlQWxsb3dlZE1hcCgpOiBJQWxsb3dlZDI0SG91ck1hcCB7XG4gICAgY29uc3QgaXNTdHJpY3RNb2RlID0gdGhpcy5zdHJpY3QgJiYgdGhpcy52YWx1ZSBpbnN0YW5jZW9mIERhdGU7XG4gICAgY29uc3QgYTI0aG06IElBbGxvd2VkMjRIb3VyTWFwID0ge307XG4gICAgZm9yIChsZXQgaCA9IDA7IGggPCAyNDsgaCsrKSB7XG4gICAgICBmb3IgKGxldCBtID0gMDsgbSA8IDYwOyBtKyspIHtcbiAgICAgICAgY29uc3QgaG91ck1hcCA9IGEyNGhtW2hdIHx8IHt9O1xuICAgICAgICBpZiAoaXNTdHJpY3RNb2RlICYmIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUuZ2V0VGltZSgpKTtcbiAgICAgICAgICBjdXJyZW50RGF0ZS5zZXRIb3VycyhoKTtcbiAgICAgICAgICBjdXJyZW50RGF0ZS5zZXRNaW51dGVzKG0pO1xuICAgICAgICAgIGN1cnJlbnREYXRlLnNldFNlY29uZHMoMCk7XG4gICAgICAgICAgY3VycmVudERhdGUuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgICAgIGhvdXJNYXBbbV0gPSBpc0RhdGVJblJhbmdlKHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCBjdXJyZW50RGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaG91ck1hcFttXSA9IGlzQWxsb3dlZChoLCBtLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYTI0aG1baF0gPSBob3VyTWFwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhMjRobTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMucGF0dGVybiA9IC9eWzAtOV17MSwyfTo/KFswLTldezEsMn0pPyQvO1xuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuX3RpbWVwaWNrZXIubW9kYWxSZWYgfHxcbiAgICAgICF0aGlzLl90aW1lcGlja2VyLm1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGltZXBpY2tlci5tb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0ge1xuICAgICAgdmFsdWU6IHRoaXMuY3VycmVudFZhbHVlLFxuICAgICAgb2tMYWJlbDogdGhpcy5va0xhYmVsLFxuICAgICAgY2FuY2VsTGFiZWw6IHRoaXMuY2FuY2VsTGFiZWwsXG4gICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZSxcbiAgICAgIGFsbG93ZWQyNEhvdXJNYXA6IHRoaXMuYWxsb3dlZDI0SG91ck1hcCxcbiAgICB9O1xuICB9XG5cbiAgY2hlY2tWYWxpZGl0eSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaG91ciA9IHZhbHVlLmdldEhvdXJzKCk7XG4gICAgY29uc3QgbWludXRlcyA9IHZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICByZXR1cm4gaXNBbGxvd2VkKGhvdXIsIG1pbnV0ZXMsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBudWxsLCBpc0lubmVyQ2FsbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCFpc0lubmVyQ2FsbCkge1xuICAgICAgdGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSB0cnVlO1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiAodGhpcy5fc2tpcFZhbHVlQ2hhbmdlRW1pc3Npb24gPSBmYWxzZSkpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUuc2V0U2Vjb25kcygwKTtcbiAgICAgIHZhbHVlLnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSAmJiArdGhpcy52YWx1ZSA9PT0gKyh2YWx1ZSA/PyAwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG4iXX0=
@@ -746,10 +746,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
746
746
  class MatTimePickerToggle {
747
747
  /** Whether the toggle button is disabled. */
748
748
  get disabled() {
749
- if (this._disabled === undefined && this.timepicker) {
750
- return this.timepicker.timepickerInput.disabled;
749
+ if (this.timepicker) {
750
+ return this.timepicker.timepickerInput._disabled;
751
751
  }
752
- return !!this._disabled;
752
+ return this._disabled;
753
753
  }
754
754
  set disabled(value) {
755
755
  this._disabled = coerceBooleanProperty(value);
@@ -764,6 +764,7 @@ class MatTimePickerToggle {
764
764
  this._disabled = false;
765
765
  /** Whether ripples on the toggle should be disabled. */
766
766
  this.disableRipple = false;
767
+ this.$event = new Event('abrupt');
767
768
  const parsedTabIndex = Number(defaultTabIndex);
768
769
  this.tabIndex =
769
770
  parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;
@@ -870,8 +871,8 @@ class MatTimepickerDirective {
870
871
  // Reset from here to ensure that the element doesn't become stuck.
871
872
  if (this.focused) {
872
873
  this.focused = false;
873
- this.stateChanges.next();
874
874
  }
875
+ this.stateChanges.next();
875
876
  }
876
877
  get id() {
877
878
  return this._id;
@@ -1088,7 +1089,6 @@ class MatTimepickerDirective {
1088
1089
  this._id = '0';
1089
1090
  // tslint:disable-next-line:variable-name
1090
1091
  this._readonly = false;
1091
- this.isAlive = new Subject();
1092
1092
  this.stateChanges = new Subject();
1093
1093
  // tslint:disable-next-line:variable-name
1094
1094
  this._uid = `mat-input-${MatTimepickerDirective.nextId++}`;
@@ -1110,9 +1110,6 @@ class MatTimepickerDirective {
1110
1110
  this.disableDialogOpenOnClick = false;
1111
1111
  this.strict = true;
1112
1112
  this.controlType = 'angular-material-timepicker';
1113
- this.listeners = [];
1114
- // tslint:disable-next-line:variable-name
1115
- this._isPm = false;
1116
1113
  // tslint:disable-next-line:variable-name
1117
1114
  this._value = null;
1118
1115
  // tslint:disable-next-line:variable-name
@@ -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 { 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 (\n (!minDate || +minDate <= unixCurrentDate) &&\n (!maxDate || unixCurrentDate <= +maxDate)\n );\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 (\n (!minDate || +minDate <= unixCurrentDate) &&\n (!maxDate || unixCurrentDate <= +maxDate)\n );\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) {\n return false;\n }\n\n if (!minDate && !maxDate) {\n return true;\n }\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) {\n return true;\n }\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 // eslint-disable-next-line\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\n class=\"circle\"\n (touchmove)=\"handleTouchMove($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (touchstart)=\"disableAnimatedPointer()\"\n (mousedown)=\"disableAnimatedPointer()\"\n (touchend)=\"handleTouchEnd($event)\"\n (mouseup)=\"enableAnimatedPointer()\"\n (click)=\"handleClick($event)\"\n >\n <div\n class=\"pointer-container\"\n [ngClass]=\"{\n 'small-pointer':\n viewType === 'hours' && (formattedValue === 0 || formattedValue > 12),\n 'animated-pointer': !touching\n }\"\n [style.transform]=\"'rotate(' + angle + 'deg)'\"\n >\n <button\n aria-disabled=\"true\"\n mat-mini-fab\n [color]=\"color\"\n class=\"inner-dot\"\n aria-label=\"Inner Dot\"\n ></button>\n <mat-toolbar [color]=\"color\" class=\"pointer\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"outer-dot\"\n aria-label=\"Outer dot\"\n [ngClass]=\"{\n 'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0\n }\"\n >\n <ng-container\n *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\"\n >·</ng-container\n >\n </button>\n </mat-toolbar>\n </div>\n <ng-container *ngFor=\"let digit of minuteDots\">\n <button\n mat-mini-fab\n class=\"number minute-dot\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 0 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display)\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\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\n mat-mini-fab\n [color]=\"color\"\n class=\"number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 60 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display)\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n <ng-template #minutesTemplate>{{\n digit.display === 60 ? '00' : digit.display\n }}</ng-template>\n <ng-container\n *ngIf=\"\n viewType === 'minutes';\n then minutesTemplate;\n else hoursTemplate\n \"\n ></ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of secondaryNumbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number small-number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 24 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 24 ? 0 : digit.display)\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n {{ digit.display === 24 ? '00' : digit.display }}\n </button>\n </ng-container>\n </div>\n</div>\n","import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport {\n Component,\n EventEmitter,\n Output,\n Inject,\n DoCheck,\n} 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 implements DoCheck {\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\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 OnDestroy,\n Output,\n} from '@angular/core';\nimport {\n OnemrvaMatColor,\n OnemrvaMatSize,\n} 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 implements OnDestroy {\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\n timepickerInput: any;\n\n /** Emits when the timepicker's state changes. */\n readonly stateChanges = new Subject<void>();\n\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('opened') readonly openedStream = new EventEmitter<void>();\n\n // eslint-disable-next-line @angular-eslint/no-output-rename\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 @Input()\n public dialogLabel = 'Pick a Time';\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\n /** @hidden @internal */\n @HostBinding('class.mat-accent')\n public get _isAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\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 ariaLabel: this.dialogLabel,\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 MatTimepickerToggleIconDirective {}\n\n@Component({\n selector: 'mat-timepicker-toggle',\n templateUrl: 'timepicker-toggle.component.html',\n styleUrls: ['timepicker-toggle.component.scss'],\n // eslint-disable-next-line\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})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class MatTimePickerToggle\n implements AfterContentInit, OnChanges, OnDestroy\n{\n private _stateChanges = Subscription.EMPTY;\n\n /** Datepicker instance that the button will toggle. */\n // eslint-disable-next-line @angular-eslint/no-input-rename\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\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\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 Optional,\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 { twoDigits, isAllowed, isDateInRange, isTimeInRange } 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 // eslint-disable-next-line\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 OnInit, OnChanges, ControlValueAccessor, 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\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\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\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\n // tslint:disable-next-line:variable-name\n protected _disabled = false;\n\n @Input() get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this._uid;\n }\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\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\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\n @HostBinding('class.floating') get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\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\n // tslint:disable-next-line:variable-name\n private _required = false;\n\n @Input() get placeholder() {\n return this._placeholder;\n }\n\n set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\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 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 const 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 const 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.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 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() {\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 MatTimepickerToggleIconDirective,\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 MatTimepickerToggleIconDirective,\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 { 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 (\n (!minDate || +minDate <= unixCurrentDate) &&\n (!maxDate || unixCurrentDate <= +maxDate)\n );\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 (\n (!minDate || +minDate <= unixCurrentDate) &&\n (!maxDate || unixCurrentDate <= +maxDate)\n );\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) {\n return false;\n }\n\n if (!minDate && !maxDate) {\n return true;\n }\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) {\n return true;\n }\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 // eslint-disable-next-line\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\n class=\"circle\"\n (touchmove)=\"handleTouchMove($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (touchstart)=\"disableAnimatedPointer()\"\n (mousedown)=\"disableAnimatedPointer()\"\n (touchend)=\"handleTouchEnd($event)\"\n (mouseup)=\"enableAnimatedPointer()\"\n (click)=\"handleClick($event)\"\n >\n <div\n class=\"pointer-container\"\n [ngClass]=\"{\n 'small-pointer':\n viewType === 'hours' && (formattedValue === 0 || formattedValue > 12),\n 'animated-pointer': !touching\n }\"\n [style.transform]=\"'rotate(' + angle + 'deg)'\"\n >\n <button\n aria-disabled=\"true\"\n mat-mini-fab\n [color]=\"color\"\n class=\"inner-dot\"\n aria-label=\"Inner Dot\"\n ></button>\n <mat-toolbar [color]=\"color\" class=\"pointer\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"outer-dot\"\n aria-label=\"Outer dot\"\n [ngClass]=\"{\n 'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0\n }\"\n >\n <ng-container\n *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\"\n >·</ng-container\n >\n </button>\n </mat-toolbar>\n </div>\n <ng-container *ngFor=\"let digit of minuteDots\">\n <button\n mat-mini-fab\n class=\"number minute-dot\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 0 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display)\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\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\n mat-mini-fab\n [color]=\"color\"\n class=\"number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 60 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display)\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n <ng-template #minutesTemplate>{{\n digit.display === 60 ? '00' : digit.display\n }}</ng-template>\n <ng-container\n *ngIf=\"\n viewType === 'minutes';\n then minutesTemplate;\n else hoursTemplate\n \"\n ></ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of secondaryNumbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number small-number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 24 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 24 ? 0 : digit.display)\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n {{ digit.display === 24 ? '00' : digit.display }}\n </button>\n </ng-container>\n </div>\n</div>\n","import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport {\n Component,\n EventEmitter,\n Output,\n Inject,\n DoCheck,\n} 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 implements DoCheck {\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\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 OnDestroy,\n Output,\n} from '@angular/core';\nimport {\n OnemrvaMatColor,\n OnemrvaMatSize,\n} 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 implements OnDestroy {\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\n timepickerInput: any;\n\n /** Emits when the timepicker's state changes. */\n readonly stateChanges = new Subject<void>();\n\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('opened') readonly openedStream = new EventEmitter<void>();\n\n // eslint-disable-next-line @angular-eslint/no-output-rename\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 @Input()\n public dialogLabel = 'Pick a Time';\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\n /** @hidden @internal */\n @HostBinding('class.mat-accent')\n public get _isAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\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 ariaLabel: this.dialogLabel,\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 MatTimepickerToggleIconDirective {}\n\n@Component({\n selector: 'mat-timepicker-toggle',\n templateUrl: 'timepicker-toggle.component.html',\n styleUrls: ['timepicker-toggle.component.scss'],\n // eslint-disable-next-line\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})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class MatTimePickerToggle\n implements AfterContentInit, OnChanges, OnDestroy\n{\n private _stateChanges = Subscription.EMPTY;\n\n /** Datepicker instance that the button will toggle. */\n // eslint-disable-next-line @angular-eslint/no-input-rename\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.timepicker) {\n return this.timepicker.timepickerInput._disabled;\n }\n return this._disabled;\n }\n\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n\n /** Whether ripples on the toggle should be disabled. */\n @Input() disableRipple: boolean = false;\n $event: Event = new Event('abrupt');\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 Optional,\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 { twoDigits, isAllowed, isDateInRange, isTimeInRange } 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 // eslint-disable-next-line\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 OnInit, OnChanges, ControlValueAccessor, 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\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\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\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 }\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\n set id(value: string) {\n this._id = value || this._uid;\n }\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\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n\n // tslint:disable-next-line:variable-name\n private _readonly = false;\n\n stateChanges = new Subject<void>();\n\n // tslint:disable-next-line:variable-name\n protected _uid = `mat-input-${MatTimepickerDirective.nextId++}`;\n\n @HostBinding('class.floating') get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\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\n // tslint:disable-next-line:variable-name\n private _required = false;\n\n @Input() get placeholder() {\n return this._placeholder;\n }\n\n set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\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 @Input() minDate!: Date;\n @Input() maxDate!: Date;\n\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 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 const 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 const 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.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 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() {\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 MatTimepickerToggleIconDirective,\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 MatTimepickerToggleIconDirective,\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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"}
@@ -29,6 +29,7 @@ export declare class MatTimePickerToggle implements AfterContentInit, OnChanges,
29
29
  private _disabled;
30
30
  /** Whether ripples on the toggle should be disabled. */
31
31
  disableRipple: boolean;
32
+ $event: Event;
32
33
  /** Underlying button element. */
33
34
  constructor(_changeDetectorRef: ChangeDetectorRef, defaultTabIndex: string);
34
35
  ngOnChanges(changes: SimpleChanges): void;
@@ -38,7 +38,6 @@ export declare class MatTimepickerDirective implements OnInit, OnChanges, Contro
38
38
  get readonly(): boolean;
39
39
  set readonly(value: boolean);
40
40
  private _readonly;
41
- private isAlive;
42
41
  stateChanges: Subject<void>;
43
42
  protected _uid: string;
44
43
  get shouldLabelFloat(): boolean;
@@ -63,10 +62,8 @@ export declare class MatTimepickerDirective implements OnInit, OnChanges, Contro
63
62
  disableDialogOpenOnClick: boolean;
64
63
  strict: boolean;
65
64
  controlType: string;
66
- private listeners;
67
65
  minDate: Date;
68
66
  maxDate: Date;
69
- private _isPm;
70
67
  private _value;
71
68
  private _formattedValueString;
72
69
  private _skipValueChangeEmission;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onemrvapublic/design-system",
3
- "version": "17.8.4",
3
+ "version": "17.8.6",
4
4
  "description": "Design System Onem/Rva without theme included",
5
5
  "publishConfig": {
6
6
  "access": "public"