@gipisistemas/ng-core 1.1.11 → 1.1.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. package/assets/styles/colors.scss +228 -211
  2. package/assets/styles/styles.scss +54 -5
  3. package/bundles/gipisistemas-ng-core.umd.js +3516 -146
  4. package/bundles/gipisistemas-ng-core.umd.js.map +1 -1
  5. package/bundles/gipisistemas-ng-core.umd.min.js +9 -9
  6. package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -1
  7. package/core/gipi-components/components/abstract-find.component.d.ts +1 -0
  8. package/core/gipi-components/components/abstract.component.d.ts +1 -0
  9. package/esm2015/core/gipi-components/components/abstract-find.component.js +22 -1
  10. package/esm2015/core/gipi-components/components/abstract.component.js +5 -2
  11. package/esm2015/gipi-components.js +19 -6
  12. package/esm2015/gipisistemas-ng-core.js +3 -1
  13. package/esm2015/shared/components/button/button.component.js +2 -2
  14. package/esm2015/shared/components/icon/icon.component.js +2 -4
  15. package/esm2015/shared/gipi-components/button/button.component.js +2 -2
  16. package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +1 -1
  17. package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +3 -3
  18. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +1 -1
  19. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +1 -1
  20. package/esm2015/shared/gipi-components/datetime-picker/datetime-picker/datetime-picker.component.js +158 -0
  21. package/esm2015/shared/gipi-components/datetime-picker/datetime-picker.module.js +82 -0
  22. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar-body.js +116 -0
  23. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar.js +676 -0
  24. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/clock.js +306 -0
  25. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-animations.js +30 -0
  26. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-errors.js +7 -0
  27. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-filtertype.js +7 -0
  28. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-input.js +346 -0
  29. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-toggle.js +83 -0
  30. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-type.js +1 -0
  31. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker.js +451 -0
  32. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/month-view.js +151 -0
  33. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/multi-year-view.js +230 -0
  34. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/adapter.module.js +43 -0
  35. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-adapter.js +139 -0
  36. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-formats.js +3 -0
  37. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-adapter.js +138 -0
  38. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-formats.js +20 -0
  39. package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/year-view.js +141 -0
  40. package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +1 -1
  41. package/esm2015/shared/gipi-components/form-field/form-field.component.js +8 -3
  42. package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +1 -1
  43. package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +1 -1
  44. package/esm2015/shared/gipi-components/input-select/input-select.component.js +1 -1
  45. package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +20 -6
  46. package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +1 -1
  47. package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +1 -1
  48. package/esm2015/shared/gipi-components/range-page/range-page.component.js +1 -1
  49. package/esm2015/shared/gipi-components/range-slider/range-slider.component.js +1 -1
  50. package/esm2015/shared/gipi-components/select-button/select-button.component.js +1 -1
  51. package/esm2015/shared/gipi-components/split-button/split-button.component.js +2 -2
  52. package/esm2015/shared/gipi-components/tabs/tab-group/tab-group.component.js +5 -2
  53. package/esm2015/shared/gipi-components/textarea/textarea.component.js +1 -1
  54. package/esm2015/shared/shared.module.js +51 -3
  55. package/esm5/core/gipi-components/components/abstract-find.component.js +22 -1
  56. package/esm5/core/gipi-components/components/abstract.component.js +5 -2
  57. package/esm5/gipi-components.js +19 -6
  58. package/esm5/gipisistemas-ng-core.js +3 -1
  59. package/esm5/shared/components/button/button.component.js +2 -2
  60. package/esm5/shared/components/icon/icon.component.js +2 -4
  61. package/esm5/shared/gipi-components/button/button.component.js +2 -2
  62. package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +1 -1
  63. package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +3 -3
  64. package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +1 -1
  65. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +1 -1
  66. package/esm5/shared/gipi-components/datetime-picker/datetime-picker/datetime-picker.component.js +176 -0
  67. package/esm5/shared/gipi-components/datetime-picker/datetime-picker.module.js +85 -0
  68. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar-body.js +119 -0
  69. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar.js +747 -0
  70. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/clock.js +332 -0
  71. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-animations.js +30 -0
  72. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-errors.js +7 -0
  73. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-filtertype.js +7 -0
  74. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-input.js +377 -0
  75. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-toggle.js +89 -0
  76. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-type.js +1 -0
  77. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker.js +495 -0
  78. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/month-view.js +160 -0
  79. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/multi-year-view.js +248 -0
  80. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/adapter.module.js +49 -0
  81. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-adapter.js +145 -0
  82. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-formats.js +3 -0
  83. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-adapter.js +141 -0
  84. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-formats.js +20 -0
  85. package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/year-view.js +151 -0
  86. package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +1 -1
  87. package/esm5/shared/gipi-components/form-field/form-field.component.js +8 -3
  88. package/esm5/shared/gipi-components/input-currency/input-currency.component.js +1 -1
  89. package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +1 -1
  90. package/esm5/shared/gipi-components/input-select/input-select.component.js +1 -1
  91. package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +25 -6
  92. package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +1 -1
  93. package/esm5/shared/gipi-components/radio-group/radio-group.component.js +1 -1
  94. package/esm5/shared/gipi-components/range-page/range-page.component.js +1 -1
  95. package/esm5/shared/gipi-components/range-slider/range-slider.component.js +1 -1
  96. package/esm5/shared/gipi-components/select-button/select-button.component.js +1 -1
  97. package/esm5/shared/gipi-components/split-button/split-button.component.js +2 -2
  98. package/esm5/shared/gipi-components/tabs/tab-group/tab-group.component.js +5 -2
  99. package/esm5/shared/gipi-components/textarea/textarea.component.js +1 -1
  100. package/esm5/shared/shared.module.js +51 -3
  101. package/fesm2015/gipisistemas-ng-core.js +3244 -157
  102. package/fesm2015/gipisistemas-ng-core.js.map +1 -1
  103. package/fesm5/gipisistemas-ng-core.js +3494 -152
  104. package/fesm5/gipisistemas-ng-core.js.map +1 -1
  105. package/gipi-components.d.ts +16 -0
  106. package/gipisistemas-ng-core.d.ts +2 -0
  107. package/gipisistemas-ng-core.metadata.json +1 -1
  108. package/package.json +4 -4
  109. package/shared/components/icon/icon.component.d.ts +1 -3
  110. package/shared/gipi-components/datetime-picker/datetime-picker/datetime-picker.component.d.ts +40 -0
  111. package/shared/gipi-components/datetime-picker/datetime-picker.module.d.ts +2 -0
  112. package/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar-body.d.ts +50 -0
  113. package/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar.d.ts +140 -0
  114. package/shared/gipi-components/datetime-picker/mat-datetime-picker/clock.d.ts +66 -0
  115. package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-animations.d.ts +8 -0
  116. package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-errors.d.ts +2 -0
  117. package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-filtertype.d.ts +5 -0
  118. package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-input.d.ts +98 -0
  119. package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-toggle.d.ts +20 -0
  120. package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-type.d.ts +1 -0
  121. package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker.d.ts +133 -0
  122. package/shared/gipi-components/datetime-picker/mat-datetime-picker/month-view.d.ts +53 -0
  123. package/shared/gipi-components/datetime-picker/mat-datetime-picker/multi-year-view.d.ts +80 -0
  124. package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/adapter.module.d.ts +4 -0
  125. package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-adapter.d.ts +46 -0
  126. package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-formats.d.ts +20 -0
  127. package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-adapter.d.ts +36 -0
  128. package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-formats.d.ts +2 -0
  129. package/shared/gipi-components/datetime-picker/mat-datetime-picker/year-view.d.ts +52 -0
  130. package/shared/gipi-components/form-field/form-field.component.d.ts +1 -0
  131. package/shared/gipi-components/input-select-enum/input-select-enum.component.d.ts +4 -2
@@ -0,0 +1,377 @@
1
+ import { __decorate, __metadata, __param } from "tslib";
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { DOWN_ARROW } from '@angular/cdk/keycodes';
4
+ import { AfterContentInit, Directive, ElementRef, EventEmitter, forwardRef, Inject, Input, OnDestroy, Optional, Output, } from '@angular/core';
5
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
6
+ import { MatFormField } from '@angular/material/form-field';
7
+ import { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';
8
+ import { Subscription } from 'rxjs';
9
+ import { GIPIDatetimepickerComponent } from './datetimepicker';
10
+ import { createMissingDateImplError } from './datetimepicker-errors';
11
+ import { GIPIDatetimepickerFilterType } from './datetimepicker-filtertype';
12
+ import { GIPIDatetimeAdapter } from './shared/adapter/datetime-adapter';
13
+ import { GIPI_DATETIME_FORMATS, } from './shared/adapter/datetime-formats';
14
+ export var GIPI_DATETIMEPICKER_VALUE_ACCESSOR = {
15
+ provide: NG_VALUE_ACCESSOR,
16
+ useExisting: forwardRef(function () { return GIPIDatetimepickerInputDirective; }),
17
+ multi: true,
18
+ };
19
+ export var GIPI_DATETIMEPICKER_VALIDATORS = {
20
+ provide: NG_VALIDATORS,
21
+ useExisting: forwardRef(function () { return GIPIDatetimepickerInputDirective; }),
22
+ multi: true,
23
+ };
24
+ /**
25
+ * An event used for datepicker input and change events. We don't always have access to a native
26
+ * input or change event because the event may have been triggered by the user clicking on the
27
+ * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.
28
+ */
29
+ var GIPIDatetimepickerInputEvent = /** @class */ (function () {
30
+ function GIPIDatetimepickerInputEvent(target, targetElement) {
31
+ this.target = target;
32
+ this.targetElement = targetElement;
33
+ this.value = this.target.value;
34
+ }
35
+ return GIPIDatetimepickerInputEvent;
36
+ }());
37
+ export { GIPIDatetimepickerInputEvent };
38
+ /** Directive used to connect an input to a MatDatepicker. */
39
+ var GIPIDatetimepickerInputDirective = /** @class */ (function () {
40
+ function GIPIDatetimepickerInputDirective(_elementRef, _dateAdapter, _dateFormats, _formField) {
41
+ var _this = this;
42
+ this._elementRef = _elementRef;
43
+ this._dateAdapter = _dateAdapter;
44
+ this._dateFormats = _dateFormats;
45
+ this._formField = _formField;
46
+ /** Emits when the value changes (either due to user input or programmatic change). */
47
+ this._valueChange = new EventEmitter();
48
+ /** Emits when the disabled state has changed */
49
+ this._disabledChange = new EventEmitter();
50
+ this._datepickerSubscription = Subscription.EMPTY;
51
+ this._localeSubscription = Subscription.EMPTY;
52
+ /** Whether the last value set on the input was valid. */
53
+ this._lastValueValid = false;
54
+ /** Emits when a `change` event is fired on this `<input>`. */
55
+ this.dateChange = new EventEmitter();
56
+ /** Emits when an `input` event is fired on this `<input>`. */
57
+ this.dateInput = new EventEmitter();
58
+ this._onTouched = function () { };
59
+ this._cvaOnChange = function () { };
60
+ this._validatorOnChange = function () { };
61
+ /** The form control validator for whether the input parses. */
62
+ this._parseValidator = function () {
63
+ return _this._lastValueValid
64
+ ? null
65
+ : { matDatepickerParse: { text: _this._elementRef.nativeElement.value } };
66
+ };
67
+ /** The form control validator for the min date. */
68
+ this._minValidator = function (control) {
69
+ var controlValue = _this._dateAdapter.getValidDateOrNull(_this._dateAdapter.deserialize(control.value));
70
+ return !_this.min ||
71
+ !controlValue ||
72
+ _this._dateAdapter.compareDatetime(_this.min, controlValue) <= 0 ? null : { matDatepickerMin: { min: _this.min, actual: controlValue } };
73
+ };
74
+ /** The form control validator for the max date. */
75
+ this._maxValidator = function (control) {
76
+ var controlValue = _this._dateAdapter.getValidDateOrNull(_this._dateAdapter.deserialize(control.value));
77
+ return !_this.max ||
78
+ !controlValue ||
79
+ _this._dateAdapter.compareDatetime(_this.max, controlValue) >= 0 ? null : { matDatepickerMax: { max: _this.max, actual: controlValue } };
80
+ };
81
+ /** The form control validator for the date filter. */
82
+ this._filterValidator = function (control) {
83
+ var controlValue = _this._dateAdapter.getValidDateOrNull(_this._dateAdapter.deserialize(control.value));
84
+ return !_this._dateFilter ||
85
+ !controlValue ||
86
+ _this._dateFilter(controlValue, GIPIDatetimepickerFilterType.DATE)
87
+ ? null
88
+ : { matDatepickerFilter: true };
89
+ };
90
+ /** The combined form control validator for this input. */
91
+ this._validator = Validators.compose([
92
+ this._parseValidator,
93
+ this._minValidator,
94
+ this._maxValidator,
95
+ this._filterValidator,
96
+ ]);
97
+ if (!this._dateAdapter) {
98
+ throw createMissingDateImplError('GIPIDatetimeAdapter');
99
+ }
100
+ if (!this._dateFormats) {
101
+ throw createMissingDateImplError('GIPI_DATETIME_FORMATS');
102
+ }
103
+ // Update the displayed date when the locale changes.
104
+ this._localeSubscription = _dateAdapter.localeChanges.subscribe(function () { return _this.value = _this.value; });
105
+ }
106
+ GIPIDatetimepickerInputDirective_1 = GIPIDatetimepickerInputDirective;
107
+ Object.defineProperty(GIPIDatetimepickerInputDirective.prototype, "gipiMatDatetimePicker", {
108
+ /** The datepicker that this input is associated with. */
109
+ set: function (value) {
110
+ this.registerDatepicker(value);
111
+ },
112
+ enumerable: false,
113
+ configurable: true
114
+ });
115
+ Object.defineProperty(GIPIDatetimepickerInputDirective.prototype, "matDatepickerFilter", {
116
+ set: function (filter) {
117
+ this._dateFilter = filter;
118
+ this._validatorOnChange();
119
+ },
120
+ enumerable: false,
121
+ configurable: true
122
+ });
123
+ Object.defineProperty(GIPIDatetimepickerInputDirective.prototype, "value", {
124
+ get: function () {
125
+ return this._value;
126
+ },
127
+ set: function (value) {
128
+ var _this = this;
129
+ value = this._dateAdapter.deserialize(value);
130
+ this._lastValueValid = !value || this._dateAdapter.isValid(value);
131
+ value = this._dateAdapter.getValidDateOrNull(value);
132
+ var oldDate = this.value;
133
+ this._value = value;
134
+ this._formatValue(value);
135
+ // use timeout to ensure the datetimepicker is instantiated and we get the correct format
136
+ setTimeout(function () {
137
+ if (!_this._dateAdapter.sameDatetime(oldDate, value)) {
138
+ _this._valueChange.emit(value);
139
+ }
140
+ });
141
+ },
142
+ enumerable: false,
143
+ configurable: true
144
+ });
145
+ Object.defineProperty(GIPIDatetimepickerInputDirective.prototype, "min", {
146
+ get: function () {
147
+ return this._min;
148
+ },
149
+ set: function (value) {
150
+ this._min = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
151
+ this._validatorOnChange();
152
+ },
153
+ enumerable: false,
154
+ configurable: true
155
+ });
156
+ Object.defineProperty(GIPIDatetimepickerInputDirective.prototype, "max", {
157
+ get: function () {
158
+ return this._max;
159
+ },
160
+ set: function (value) {
161
+ this._max = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
162
+ this._validatorOnChange();
163
+ },
164
+ enumerable: false,
165
+ configurable: true
166
+ });
167
+ Object.defineProperty(GIPIDatetimepickerInputDirective.prototype, "disabled", {
168
+ get: function () {
169
+ return !!this._disabled;
170
+ },
171
+ set: function (value) {
172
+ var newValue = coerceBooleanProperty(value);
173
+ if (this._disabled !== newValue) {
174
+ this._disabled = newValue;
175
+ this._disabledChange.emit(newValue);
176
+ }
177
+ },
178
+ enumerable: false,
179
+ configurable: true
180
+ });
181
+ GIPIDatetimepickerInputDirective.prototype.ngAfterContentInit = function () {
182
+ var _this = this;
183
+ if (this._datepicker) {
184
+ this._datepickerSubscription = this._datepicker.selectedChanged.subscribe(function (selected) {
185
+ _this.value = selected;
186
+ _this._cvaOnChange(selected);
187
+ _this._onTouched();
188
+ _this.dateInput.emit(new GIPIDatetimepickerInputEvent(_this, _this._elementRef.nativeElement));
189
+ _this.dateChange.emit(new GIPIDatetimepickerInputEvent(_this, _this._elementRef.nativeElement));
190
+ });
191
+ }
192
+ };
193
+ GIPIDatetimepickerInputDirective.prototype.ngOnDestroy = function () {
194
+ this._datepickerSubscription.unsubscribe();
195
+ this._localeSubscription.unsubscribe();
196
+ this._valueChange.complete();
197
+ this._disabledChange.complete();
198
+ };
199
+ GIPIDatetimepickerInputDirective.prototype.registerOnValidatorChange = function (fn) {
200
+ this._validatorOnChange = fn;
201
+ };
202
+ GIPIDatetimepickerInputDirective.prototype.validate = function (c) {
203
+ return this._validator ? this._validator(c) : null;
204
+ };
205
+ /**
206
+ * Gets the element that the datepicker popup should be connected to.
207
+ * @return The element to connect the popup to.
208
+ */
209
+ GIPIDatetimepickerInputDirective.prototype.getConnectedOverlayOrigin = function () {
210
+ return this._formField
211
+ ? this._formField.getConnectedOverlayOrigin()
212
+ : this._elementRef;
213
+ };
214
+ // Implemented as part of ControlValueAccessor
215
+ GIPIDatetimepickerInputDirective.prototype.writeValue = function (value) {
216
+ this.value = value;
217
+ };
218
+ // Implemented as part of ControlValueAccessor
219
+ GIPIDatetimepickerInputDirective.prototype.registerOnChange = function (fn) {
220
+ this._cvaOnChange = fn;
221
+ };
222
+ // Implemented as part of ControlValueAccessor
223
+ GIPIDatetimepickerInputDirective.prototype.registerOnTouched = function (fn) {
224
+ this._onTouched = fn;
225
+ };
226
+ // Implemented as part of ControlValueAccessor
227
+ GIPIDatetimepickerInputDirective.prototype.setDisabledState = function (disabled) {
228
+ this.disabled = disabled;
229
+ };
230
+ GIPIDatetimepickerInputDirective.prototype._onKeydown = function (event) {
231
+ if (event.altKey && event.keyCode === DOWN_ARROW) {
232
+ this._datepicker.open();
233
+ event.preventDefault();
234
+ }
235
+ };
236
+ GIPIDatetimepickerInputDirective.prototype._onInput = function (value) {
237
+ var date = this._dateAdapter.parse(value, this.getParseFormat());
238
+ this._lastValueValid = !date || this._dateAdapter.isValid(date);
239
+ date = this._dateAdapter.getValidDateOrNull(date);
240
+ this._value = date;
241
+ this._cvaOnChange(date);
242
+ this._valueChange.emit(date);
243
+ this.dateInput.emit(new GIPIDatetimepickerInputEvent(this, this._elementRef.nativeElement));
244
+ };
245
+ GIPIDatetimepickerInputDirective.prototype._onChange = function () {
246
+ this.dateChange.emit(new GIPIDatetimepickerInputEvent(this, this._elementRef.nativeElement));
247
+ };
248
+ /** Handles blur events on the input. */
249
+ GIPIDatetimepickerInputDirective.prototype._onBlur = function () {
250
+ // Reformat the input only if we have a valid value.
251
+ if (this.value) {
252
+ this._formatValue(this.value);
253
+ }
254
+ this._onTouched();
255
+ };
256
+ GIPIDatetimepickerInputDirective.prototype.registerDatepicker = function (value) {
257
+ if (value) {
258
+ this._datepicker = value;
259
+ this._datepicker._registerInput(this);
260
+ }
261
+ };
262
+ GIPIDatetimepickerInputDirective.prototype.getDisplayFormat = function () {
263
+ switch (this._datepicker.type) {
264
+ case 'date': return this._dateFormats.display.dateInput;
265
+ case 'datetime': return this._dateFormats.display.datetimeInput;
266
+ case 'time': return this._dateFormats.display.timeInput;
267
+ case 'month': return this._dateFormats.display.monthInput;
268
+ }
269
+ };
270
+ GIPIDatetimepickerInputDirective.prototype.getParseFormat = function () {
271
+ var parseFormat;
272
+ switch (this._datepicker.type) {
273
+ case 'date':
274
+ parseFormat = this._dateFormats.parse.dateInput;
275
+ break;
276
+ case 'datetime':
277
+ parseFormat = this._dateFormats.parse.datetimeInput;
278
+ break;
279
+ case 'time':
280
+ parseFormat = this._dateFormats.parse.timeInput;
281
+ break;
282
+ case 'month':
283
+ parseFormat = this._dateFormats.parse.monthInput;
284
+ break;
285
+ }
286
+ if (!parseFormat) {
287
+ parseFormat = this._dateFormats.parse.dateInput;
288
+ }
289
+ return parseFormat;
290
+ };
291
+ /** Formats a value and sets it on the input element. */
292
+ GIPIDatetimepickerInputDirective.prototype._formatValue = function (value) {
293
+ this._elementRef.nativeElement.value = value
294
+ ? this._dateAdapter.format(value, this.getDisplayFormat())
295
+ : '';
296
+ };
297
+ var GIPIDatetimepickerInputDirective_1;
298
+ GIPIDatetimepickerInputDirective.ctorParameters = function () { return [
299
+ { type: ElementRef },
300
+ { type: GIPIDatetimeAdapter, decorators: [{ type: Optional }] },
301
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [GIPI_DATETIME_FORMATS,] }] },
302
+ { type: MatFormField, decorators: [{ type: Optional }] }
303
+ ]; };
304
+ __decorate([
305
+ Input(),
306
+ __metadata("design:type", GIPIDatetimepickerComponent),
307
+ __metadata("design:paramtypes", [GIPIDatetimepickerComponent])
308
+ ], GIPIDatetimepickerInputDirective.prototype, "gipiMatDatetimePicker", null);
309
+ __decorate([
310
+ Input(),
311
+ __metadata("design:type", Function),
312
+ __metadata("design:paramtypes", [Function])
313
+ ], GIPIDatetimepickerInputDirective.prototype, "matDatepickerFilter", null);
314
+ __decorate([
315
+ Input(),
316
+ __metadata("design:type", Object),
317
+ __metadata("design:paramtypes", [Object])
318
+ ], GIPIDatetimepickerInputDirective.prototype, "value", null);
319
+ __decorate([
320
+ Input(),
321
+ __metadata("design:type", Object),
322
+ __metadata("design:paramtypes", [Object])
323
+ ], GIPIDatetimepickerInputDirective.prototype, "min", null);
324
+ __decorate([
325
+ Input(),
326
+ __metadata("design:type", Object),
327
+ __metadata("design:paramtypes", [Object])
328
+ ], GIPIDatetimepickerInputDirective.prototype, "max", null);
329
+ __decorate([
330
+ Input(),
331
+ __metadata("design:type", Object),
332
+ __metadata("design:paramtypes", [Object])
333
+ ], GIPIDatetimepickerInputDirective.prototype, "disabled", null);
334
+ __decorate([
335
+ Output(),
336
+ __metadata("design:type", Object)
337
+ ], GIPIDatetimepickerInputDirective.prototype, "dateChange", void 0);
338
+ __decorate([
339
+ Output(),
340
+ __metadata("design:type", Object)
341
+ ], GIPIDatetimepickerInputDirective.prototype, "dateInput", void 0);
342
+ GIPIDatetimepickerInputDirective = GIPIDatetimepickerInputDirective_1 = __decorate([
343
+ Directive({
344
+ selector: 'input[gipiMatDatetimePicker]',
345
+ exportAs: 'matDatepickerInput',
346
+ providers: [
347
+ GIPI_DATETIMEPICKER_VALUE_ACCESSOR,
348
+ GIPI_DATETIMEPICKER_VALIDATORS,
349
+ {
350
+ provide: MAT_INPUT_VALUE_ACCESSOR,
351
+ useExisting: GIPIDatetimepickerInputDirective_1,
352
+ },
353
+ ],
354
+ host: {
355
+ '[attr.aria-haspopup]': 'true',
356
+ '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',
357
+ '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',
358
+ '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',
359
+ '[disabled]': 'disabled',
360
+ '(focus)': '_datepicker._handleFocus()',
361
+ '(input)': '_onInput($event.target.value)',
362
+ '(change)': '_onChange()',
363
+ '(blur)': '_onBlur()',
364
+ '(keydown)': '_onKeydown($event)',
365
+ },
366
+ }),
367
+ __param(1, Optional()),
368
+ __param(2, Optional()),
369
+ __param(2, Inject(GIPI_DATETIME_FORMATS)),
370
+ __param(3, Optional()),
371
+ __metadata("design:paramtypes", [ElementRef,
372
+ GIPIDatetimeAdapter, Object, MatFormField])
373
+ ], GIPIDatetimepickerInputDirective);
374
+ return GIPIDatetimepickerInputDirective;
375
+ }());
376
+ export { GIPIDatetimepickerInputDirective };
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWVwaWNrZXItaW5wdXQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci9tYXQtZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lcGlja2VyLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQy9JLE9BQU8sRUFBeUMsYUFBYSxFQUFFLGlCQUFpQixFQUE0QyxVQUFVLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEdBQXdCLE1BQU0sbUNBQW1DLENBQUM7QUFFaEcsTUFBTSxDQUFDLElBQU0sa0NBQWtDLEdBQVE7SUFDbkQsT0FBTyxFQUFF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QUFBLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBRTdCLFdBQUEsUUFBUSxFQUFFLENBQUE7eUNBTFUsVUFBVTtZQUNFLG1CQUFtQixVQUlwQixZQUFZO09BNUZ2QyxnQ0FBZ0MsQ0E2UjVDO0lBQUQsdUNBQUM7Q0FBQSxBQTdSRCxJQTZSQztTQTdSWSxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRE9XTl9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCwgT3V0cHV0LCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNQVRfSU5QVVRfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgR0lQSURhdGV0aW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRldGltZXBpY2tlcic7XG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxFcnJvciB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItZXJyb3JzJztcbmltcG9ydCB7IEdJUElEYXRldGltZXBpY2tlckZpbHRlclR5cGUgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWZpbHRlcnR5cGUnO1xuaW1wb3J0IHsgR0lQSURhdGV0aW1lQWRhcHRlciB9IGZyb20gJy4vc2hhcmVkL2FkYXB0ZXIvZGF0ZXRpbWUtYWRhcHRlcic7XG5pbXBvcnQgeyBHSVBJX0RBVEVUSU1FX0ZPUk1BVFMsIEdJUElEYXRldGltZUZvcm1hdHMsIH0gZnJvbSAnLi9zaGFyZWQvYWRhcHRlci9kYXRldGltZS1mb3JtYXRzJztcblxuZXhwb3J0IGNvbnN0IEdJUElfREFURVRJTUVQSUNLRVJfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHSVBJRGF0ZXRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSksXG4gICAgbXVsdGk6IHRydWUsXG59O1xuXG5leHBvcnQgY29uc3QgR0lQSV9EQVRFVElNRVBJQ0tFUl9WQUxJREFUT1JTOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHSVBJRGF0ZXRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSksXG4gICAgbXVsdGk6IHRydWUsXG59O1xuXG4vKipcbiAqIEFuIGV2ZW50IHVzZWQgZm9yIGRhdGVwaWNrZXIgaW5wdXQgYW5kIGNoYW5nZSBldmVudHMuIFdlIGRvbid0IGFsd2F5cyBoYXZlIGFjY2VzcyB0byBhIG5hdGl2ZVxuICogaW5wdXQgb3IgY2hhbmdlIGV2ZW50IGJlY2F1c2UgdGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyIGNsaWNraW5nIG9uIHRoZVxuICogY2FsZW5kYXIgcG9wdXAuIEZvciBjb25zaXN0ZW5jeSwgd2UgYWx3YXlzIHVzZSBNYXREYXRlcGlja2VySW5wdXRFdmVudCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgR0lQSURhdGV0aW1lcGlja2VySW5wdXRFdmVudDxEPiB7XG4gICAgLyoqIFRoZSBuZXcgdmFsdWUgZm9yIHRoZSB0YXJnZXQgZGF0ZXBpY2tlciBpbnB1dC4gKi9cbiAgICB2YWx1ZTogRCB8IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHRhcmdldDogR0lQSURhdGV0aW1lcGlja2VySW5wdXREaXJlY3RpdmU8RD4sXG4gICAgICAgIHB1YmxpYyB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudFxuICAgICkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy50YXJnZXQudmFsdWU7XG4gICAgfVxufVxuXG4vKiogRGlyZWN0aXZlIHVzZWQgdG8gY29ubmVjdCBhbiBpbnB1dCB0byBhIE1hdERhdGVwaWNrZXIuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2lucHV0W2dpcGlNYXREYXRldGltZVBpY2tlcl0nLFxuICAgIGV4cG9ydEFzOiAnbWF0RGF0ZXBpY2tlcklucHV0JyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgR0lQSV9EQVRFVElNRVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgR0lQSV9EQVRFVElNRVBJQ0tFUl9WQUxJREFUT1JTLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBNQVRfSU5QVVRfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogR0lQSURhdGV0aW1lcGlja2VySW5wdXREaXJlY3RpdmUsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICd0cnVlJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtb3duc10nOiAnKF9kYXRlcGlja2VyPy5vcGVuZWQgJiYgX2RhdGVwaWNrZXIuaWQpIHx8IG51bGwnLFxuICAgICAgICAnW2F0dHIubWluXSc6ICdtaW4gPyBfZGF0ZUFkYXB0ZXIudG9Jc284NjAxKG1pbikgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLm1heF0nOiAnbWF4ID8gX2RhdGVBZGFwdGVyLnRvSXNvODYwMShtYXgpIDogbnVsbCcsXG4gICAgICAgICdbZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJyhmb2N1cyknOiAnX2RhdGVwaWNrZXIuX2hhbmRsZUZvY3VzKCknLFxuICAgICAgICAnKGlucHV0KSc6ICdfb25JbnB1dCgkZXZlbnQudGFyZ2V0LnZhbHVlKScsXG4gICAgICAgICcoY2hhbmdlKSc6ICdfb25DaGFuZ2UoKScsXG4gICAgICAgICcoYmx1ciknOiAnX29uQmx1cigpJyxcbiAgICAgICAgJyhrZXlkb3duKSc6ICdfb25LZXlkb3duKCRldmVudCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdJUElEYXRldGltZXBpY2tlcklucHV0RGlyZWN0aXZlPEQ+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgVmFsaWRhdG9yIHtcbiAgICBfZGF0ZXBpY2tlcjogR0lQSURhdGV0aW1lcGlja2VyQ29tcG9uZW50PEQ+O1xuXG4gICAgX2RhdGVGaWx0ZXI6IChkYXRlOiBEIHwgbnVsbCwgdHlwZTogR0lQSURhdGV0aW1lcGlja2VyRmlsdGVyVHlwZSkgPT4gYm9vbGVhbjtcblxuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzIChlaXRoZXIgZHVlIHRvIHVzZXIgaW5wdXQgb3IgcHJvZ3JhbW1hdGljIGNoYW5nZSkuICovXG4gICAgX3ZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEIHwgbnVsbD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBkaXNhYmxlZCBzdGF0ZSBoYXMgY2hhbmdlZCAqL1xuICAgIF9kaXNhYmxlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIF9kYXRlcGlja2VyU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuICAgIHByaXZhdGUgX2xvY2FsZVN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBsYXN0IHZhbHVlIHNldCBvbiB0aGUgaW5wdXQgd2FzIHZhbGlkLiAqL1xuICAgIHByaXZhdGUgX2xhc3RWYWx1ZVZhbGlkID0gZmFsc2U7XG5cbiAgICAvKiogVGhlIGRhdGVwaWNrZXIgdGhhdCB0aGlzIGlucHV0IGlzIGFzc29jaWF0ZWQgd2l0aC4gKi9cbiAgICBASW5wdXQoKSBzZXQgZ2lwaU1hdERhdGV0aW1lUGlja2VyKHZhbHVlOiBHSVBJRGF0ZXRpbWVwaWNrZXJDb21wb25lbnQ8RD4pIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRhdGVwaWNrZXIodmFsdWUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtYXREYXRlcGlja2VyRmlsdGVyKGZpbHRlcjogKGRhdGU6IEQgfCBudWxsLCB0eXBlOiBHSVBJRGF0ZXRpbWVwaWNrZXJGaWx0ZXJUeXBlKSA9PiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2RhdGVGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvck9uQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQuICovXG4gICAgcHJpdmF0ZSBfdmFsdWU6IEQgfCBudWxsO1xuICAgIEBJbnB1dCgpIGdldCB2YWx1ZSgpOiBEIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgc2V0IHZhbHVlKHZhbHVlOiBEIHwgbnVsbCkge1xuICAgICAgICB2YWx1ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fbGFzdFZhbHVlVmFsaWQgPSAhdmFsdWUgfHwgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZCh2YWx1ZSk7XG4gICAgICAgIHZhbHVlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHZhbHVlKTtcbiAgICAgICAgY29uc3Qgb2xkRGF0ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2Zvcm1hdFZhbHVlKHZhbHVlKTtcblxuICAgICAgICAvLyB1c2UgdGltZW91dCB0byBlbnN1cmUgdGhlIGRhdGV0aW1lcGlja2VyIGlzIGluc3RhbnRpYXRlZCBhbmQgd2UgZ2V0IHRoZSBjb3JyZWN0IGZvcm1hdFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fZGF0ZUFkYXB0ZXIuc2FtZURhdGV0aW1lKG9sZERhdGUsIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIG1pbmltdW0gdmFsaWQgZGF0ZS4gKi9cbiAgICBwcml2YXRlIF9taW46IEQgfCBudWxsO1xuICAgIEBJbnB1dCgpIGdldCBtaW4oKTogRCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluO1xuICAgIH1cbiAgICBzZXQgbWluKHZhbHVlOiBEIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9taW4gPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yT25DaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIG1heGltdW0gdmFsaWQgZGF0ZS4gKi9cbiAgICBwcml2YXRlIF9tYXg6IEQgfCBudWxsO1xuICAgIEBJbnB1dCgpIGdldCBtYXgoKTogRCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4O1xuICAgIH1cbiAgICBzZXQgbWF4KHZhbHVlOiBEIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9tYXggPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yT25DaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgZGF0ZXBpY2tlci1pbnB1dCBpcyBkaXNhYmxlZC4gKi9cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2Rpc2FibGVkO1xuICAgIH1cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZENoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBFbWl0cyB3aGVuIGEgYGNoYW5nZWAgZXZlbnQgaXMgZmlyZWQgb24gdGhpcyBgPGlucHV0PmAuICovXG4gICAgQE91dHB1dCgpIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEdJUElEYXRldGltZXBpY2tlcklucHV0RXZlbnQ8RD4+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBhbiBgaW5wdXRgIGV2ZW50IGlzIGZpcmVkIG9uIHRoaXMgYDxpbnB1dD5gLiAqL1xuICAgIEBPdXRwdXQoKSBkYXRlSW5wdXQgPSBuZXcgRXZlbnRFbWl0dGVyPEdJUElEYXRldGltZXBpY2tlcklucHV0RXZlbnQ8RD4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIF9kYXRlQWRhcHRlcjogR0lQSURhdGV0aW1lQWRhcHRlcjxEPixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChHSVBJX0RBVEVUSU1FX0ZPUk1BVFMpXG4gICAgICAgIHByaXZhdGUgX2RhdGVGb3JtYXRzOiBHSVBJRGF0ZXRpbWVGb3JtYXRzLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9mb3JtRmllbGQ6IE1hdEZvcm1GaWVsZFxuICAgICkge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGVBZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxFcnJvcignR0lQSURhdGV0aW1lQWRhcHRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZUZvcm1hdHMpIHtcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbEVycm9yKCdHSVBJX0RBVEVUSU1FX0ZPUk1BVFMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgZGlzcGxheWVkIGRhdGUgd2hlbiB0aGUgbG9jYWxlIGNoYW5nZXMuXG4gICAgICAgIHRoaXMuX2xvY2FsZVN1YnNjcmlwdGlvbiA9IF9kYXRlQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgX29uVG91Y2hlZCA9ICgpID0+IHsgfTtcblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVwaWNrZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVwaWNrZXJTdWJzY3JpcHRpb24gPSB0aGlzLl9kYXRlcGlja2VyLnNlbGVjdGVkQ2hhbmdlZC5zdWJzY3JpYmUoKHNlbGVjdGVkOiBEKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkO1xuICAgICAgICAgICAgICAgIHRoaXMuX2N2YU9uQ2hhbmdlKHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVJbnB1dC5lbWl0KG5ldyBHSVBJRGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50KHRoaXMsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KG5ldyBHSVBJRGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50KHRoaXMsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fZGF0ZXBpY2tlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9sb2NhbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvck9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yID8gdGhpcy5fdmFsaWRhdG9yKGMpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBlbGVtZW50IHRoYXQgdGhlIGRhdGVwaWNrZXIgcG9wdXAgc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICAgKiBAcmV0dXJuIFRoZSBlbGVtZW50IHRvIGNvbm5lY3QgdGhlIHBvcHVwIHRvLlxuICAgICAqL1xuICAgIGdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtRmllbGRcbiAgICAgICAgICAgID8gdGhpcy5fZm9ybUZpZWxkLmdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKVxuICAgICAgICAgICAgOiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBEKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3ZhT25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIH1cblxuICAgIF9vbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFsdEtleSAmJiBldmVudC5rZXlDb2RlID09PSBET1dOX0FSUk9XKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlcGlja2VyLm9wZW4oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfb25JbnB1dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGxldCBkYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIucGFyc2UodmFsdWUsIHRoaXMuZ2V0UGFyc2VGb3JtYXQoKSk7XG4gICAgICAgIHRoaXMuX2xhc3RWYWx1ZVZhbGlkID0gIWRhdGUgfHwgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlKTtcbiAgICAgICAgZGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbChkYXRlKTtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBkYXRlO1xuICAgICAgICB0aGlzLl9jdmFPbkNoYW5nZShkYXRlKTtcbiAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgICAgICAgdGhpcy5kYXRlSW5wdXQuZW1pdChuZXcgR0lQSURhdGV0aW1lcGlja2VySW5wdXRFdmVudCh0aGlzLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcbiAgICB9XG5cbiAgICBfb25DaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KG5ldyBHSVBJRGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50KHRoaXMsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGVzIGJsdXIgZXZlbnRzIG9uIHRoZSBpbnB1dC4gKi9cbiAgICBfb25CbHVyKCkge1xuICAgICAgICAvLyBSZWZvcm1hdCB0aGUgaW5wdXQgb25seSBpZiB3ZSBoYXZlIGEgdmFsaWQgdmFsdWUuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJEYXRlcGlja2VyKHZhbHVlOiBHSVBJRGF0ZXRpbWVwaWNrZXJDb21wb25lbnQ8RD4pIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlcGlja2VyID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9kYXRlcGlja2VyLl9yZWdpc3RlcklucHV0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREaXNwbGF5Rm9ybWF0KCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuX2RhdGVwaWNrZXIudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6IHJldHVybiB0aGlzLl9kYXRlRm9ybWF0cy5kaXNwbGF5LmRhdGVJbnB1dDtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGV0aW1lJzogcmV0dXJuIHRoaXMuX2RhdGVGb3JtYXRzLmRpc3BsYXkuZGF0ZXRpbWVJbnB1dDtcbiAgICAgICAgICAgIGNhc2UgJ3RpbWUnOiByZXR1cm4gdGhpcy5fZGF0ZUZvcm1hdHMuZGlzcGxheS50aW1lSW5wdXQ7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6IHJldHVybiB0aGlzLl9kYXRlRm9ybWF0cy5kaXNwbGF5Lm1vbnRoSW5wdXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhcnNlRm9ybWF0KCkge1xuICAgICAgICBsZXQgcGFyc2VGb3JtYXQ7XG4gICAgICAgIHN3aXRjaCAodGhpcy5fZGF0ZXBpY2tlci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICBwYXJzZUZvcm1hdCA9IHRoaXMuX2RhdGVGb3JtYXRzLnBhcnNlLmRhdGVJbnB1dDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcbiAgICAgICAgICAgICAgICBwYXJzZUZvcm1hdCA9IHRoaXMuX2RhdGVGb3JtYXRzLnBhcnNlLmRhdGV0aW1lSW5wdXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgICAgICAgICBwYXJzZUZvcm1hdCA9IHRoaXMuX2RhdGVGb3JtYXRzLnBhcnNlLnRpbWVJbnB1dDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICBwYXJzZUZvcm1hdCA9IHRoaXMuX2RhdGVGb3JtYXRzLnBhcnNlLm1vbnRoSW5wdXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXJzZUZvcm1hdCkge1xuICAgICAgICAgICAgcGFyc2VGb3JtYXQgPSB0aGlzLl9kYXRlRm9ybWF0cy5wYXJzZS5kYXRlSW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyc2VGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3ZhT25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4geyB9O1xuXG4gICAgcHJpdmF0ZSBfdmFsaWRhdG9yT25DaGFuZ2UgPSAoKSA9PiB7IH07XG5cbiAgICAvKiogVGhlIGZvcm0gY29udHJvbCB2YWxpZGF0b3IgZm9yIHdoZXRoZXIgdGhlIGlucHV0IHBhcnNlcy4gKi9cbiAgICBwcml2YXRlIF9wYXJzZVZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFZhbHVlVmFsaWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB7IG1hdERhdGVwaWNrZXJQYXJzZTogeyB0ZXh0OiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgfSB9O1xuICAgIH07XG5cbiAgICAvKiogVGhlIGZvcm0gY29udHJvbCB2YWxpZGF0b3IgZm9yIHRoZSBtaW4gZGF0ZS4gKi9cbiAgICBwcml2YXRlIF9taW5WYWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKGNvbnRyb2wudmFsdWUpKTtcbiAgICAgICAgcmV0dXJuICF0aGlzLm1pbiB8fFxuICAgICAgICAgICAgIWNvbnRyb2xWYWx1ZSB8fFxuICAgICAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGV0aW1lKHRoaXMubWluLCBjb250cm9sVmFsdWUpIDw9IDAgPyBudWxsIDogeyBtYXREYXRlcGlja2VyTWluOiB7IG1pbjogdGhpcy5taW4sIGFjdHVhbDogY29udHJvbFZhbHVlIH0gfTtcbiAgICB9O1xuXG4gICAgLyoqIFRoZSBmb3JtIGNvbnRyb2wgdmFsaWRhdG9yIGZvciB0aGUgbWF4IGRhdGUuICovXG4gICAgcHJpdmF0ZSBfbWF4VmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShjb250cm9sLnZhbHVlKSk7XG4gICAgICAgIHJldHVybiAhdGhpcy5tYXggfHxcbiAgICAgICAgICAgICFjb250cm9sVmFsdWUgfHxcbiAgICAgICAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRldGltZSh0aGlzLm1heCwgY29udHJvbFZhbHVlKSA+PSAwID8gbnVsbCA6IHsgbWF0RGF0ZXBpY2tlck1heDogeyBtYXg6IHRoaXMubWF4LCBhY3R1YWw6IGNvbnRyb2xWYWx1ZSB9IH07XG4gICAgfTtcblxuICAgIC8qKiBUaGUgZm9ybSBjb250cm9sIHZhbGlkYXRvciBmb3IgdGhlIGRhdGUgZmlsdGVyLiAqL1xuICAgIHByaXZhdGUgX2ZpbHRlclZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sVmFsdWUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUoY29udHJvbC52YWx1ZSkpO1xuICAgICAgICByZXR1cm4gIXRoaXMuX2RhdGVGaWx0ZXIgfHxcbiAgICAgICAgICAgICFjb250cm9sVmFsdWUgfHxcbiAgICAgICAgICAgIHRoaXMuX2RhdGVGaWx0ZXIoY29udHJvbFZhbHVlLCBHSVBJRGF0ZXRpbWVwaWNrZXJGaWx0ZXJUeXBlLkRBVEUpXG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDogeyBtYXREYXRlcGlja2VyRmlsdGVyOiB0cnVlIH07XG4gICAgfTtcblxuICAgIC8qKiBUaGUgY29tYmluZWQgZm9ybSBjb250cm9sIHZhbGlkYXRvciBmb3IgdGhpcyBpbnB1dC4gKi9cbiAgICBwcml2YXRlIF92YWxpZGF0b3I6IFZhbGlkYXRvckZuIHwgbnVsbCA9IFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIHRoaXMuX3BhcnNlVmFsaWRhdG9yLFxuICAgICAgICB0aGlzLl9taW5WYWxpZGF0b3IsXG4gICAgICAgIHRoaXMuX21heFZhbGlkYXRvcixcbiAgICAgICAgdGhpcy5fZmlsdGVyVmFsaWRhdG9yLFxuICAgIF0pO1xuXG4gICAgLyoqIEZvcm1hdHMgYSB2YWx1ZSBhbmQgc2V0cyBpdCBvbiB0aGUgaW5wdXQgZWxlbWVudC4gKi9cbiAgICBwcml2YXRlIF9mb3JtYXRWYWx1ZSh2YWx1ZTogRCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWVcbiAgICAgICAgICAgID8gdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KHZhbHVlLCB0aGlzLmdldERpc3BsYXlGb3JtYXQoKSlcbiAgICAgICAgICAgIDogJyc7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,89 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, SimpleChanges, ViewEncapsulation, } from '@angular/core';
4
+ import { MatDatepickerIntl } from '@angular/material/datepicker';
5
+ import { asyncScheduler, merge, of, Subscription } from 'rxjs';
6
+ import { GIPIDatetimepickerComponent } from './datetimepicker';
7
+ var GIPIDatetimepickerToggleComponent = /** @class */ (function () {
8
+ function GIPIDatetimepickerToggleComponent(_intl, _changeDetectorRef) {
9
+ this._intl = _intl;
10
+ this._changeDetectorRef = _changeDetectorRef;
11
+ this._stateChanges = Subscription.EMPTY;
12
+ }
13
+ Object.defineProperty(GIPIDatetimepickerToggleComponent.prototype, "disabled", {
14
+ /** Whether the toggle button is disabled. */
15
+ get: function () {
16
+ return this._disabled === undefined
17
+ ? this.datetimepicker.disabled
18
+ : !!this._disabled;
19
+ },
20
+ set: function (value) {
21
+ this._disabled = coerceBooleanProperty(value);
22
+ },
23
+ enumerable: false,
24
+ configurable: true
25
+ });
26
+ GIPIDatetimepickerToggleComponent.prototype.ngOnChanges = function (changes) {
27
+ if (changes.datepicker) {
28
+ this._watchStateChanges();
29
+ }
30
+ };
31
+ GIPIDatetimepickerToggleComponent.prototype.ngOnDestroy = function () {
32
+ this._stateChanges.unsubscribe();
33
+ };
34
+ GIPIDatetimepickerToggleComponent.prototype.ngAfterContentInit = function () {
35
+ this._watchStateChanges();
36
+ };
37
+ GIPIDatetimepickerToggleComponent.prototype._open = function (event) {
38
+ if (this.datetimepicker && !this.disabled) {
39
+ this.datetimepicker.open();
40
+ event.stopPropagation();
41
+ }
42
+ };
43
+ GIPIDatetimepickerToggleComponent.prototype._watchStateChanges = function () {
44
+ var _this = this;
45
+ var datepickerDisabled = this.datetimepicker
46
+ ? this.datetimepicker._disabledChange
47
+ : of([], asyncScheduler);
48
+ var inputDisabled = this.datetimepicker && this.datetimepicker._datepickerInput
49
+ ? this.datetimepicker._datepickerInput._disabledChange
50
+ : of([], asyncScheduler);
51
+ this._stateChanges.unsubscribe();
52
+ this._stateChanges = merge(this._intl.changes, datepickerDisabled, inputDisabled).subscribe(function () { return _this._changeDetectorRef.markForCheck(); });
53
+ };
54
+ GIPIDatetimepickerToggleComponent.ctorParameters = function () { return [
55
+ { type: MatDatepickerIntl },
56
+ { type: ChangeDetectorRef }
57
+ ]; };
58
+ __decorate([
59
+ Input('for'),
60
+ __metadata("design:type", GIPIDatetimepickerComponent)
61
+ ], GIPIDatetimepickerToggleComponent.prototype, "datetimepicker", void 0);
62
+ __decorate([
63
+ Input(),
64
+ __metadata("design:type", Boolean),
65
+ __metadata("design:paramtypes", [Boolean])
66
+ ], GIPIDatetimepickerToggleComponent.prototype, "disabled", null);
67
+ GIPIDatetimepickerToggleComponent = __decorate([
68
+ Component({
69
+ selector: 'gipi-mat-datetime-picker-toggle',
70
+ exportAs: 'gipiDatetimePickerToggle',
71
+ template: "<button [attr.aria-label]=\"_intl.openCalendarLabel\"\n [disabled]=\"disabled\"\n mat-icon-button\n type=\"button\">\n <mat-icon [ngSwitch]=\"datetimepicker.type\">\n <svg *ngSwitchCase=\"'time'\"\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"100%\"\n style=\"vertical-align: top\"\n viewBox=\"0 0 24 24\"\n width=\"100%\">\n <path\n d=\"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\">\n </path>\n </svg>\n <svg *ngSwitchCase=\"'datetime'\"\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"100%\"\n style=\"vertical-align: top\"\n viewBox=\"0 0 24 24\"\n width=\"100%\">\n <path\n d=\"M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z\">\n </path>\n </svg>\n <svg *ngSwitchDefault\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"100%\"\n style=\"vertical-align: top\"\n viewBox=\"0 0 24 24\"\n width=\"100%\">\n <path d=\"M0 0h24v24H0z\"\n fill=\"none\" />\n <path\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\" />\n </svg>\n </mat-icon>\n</button>",
72
+ encapsulation: ViewEncapsulation.None,
73
+ changeDetection: ChangeDetectionStrategy.OnPush,
74
+ preserveWhitespaces: false,
75
+ host: {
76
+ class: 'gipi-mat-datetime-picker-toggle',
77
+ // Bind the `click` on the host, rather than the inner `button`, so that we can call `stopPropagation`
78
+ // on it without affecting the user's `click` handlers. We need to stop it so that the input doesn't
79
+ // get focused automatically by the form field (See https://github.com/angular/components/pull/21856).
80
+ '(click)': '_open($event)',
81
+ }
82
+ }),
83
+ __metadata("design:paramtypes", [MatDatepickerIntl,
84
+ ChangeDetectorRef])
85
+ ], GIPIDatetimepickerToggleComponent);
86
+ return GIPIDatetimepickerToggleComponent;
87
+ }());
88
+ export { GIPIDatetimepickerToggleComponent };
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWVwaWNrZXItdG9nZ2xlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2dpcGktY29tcG9uZW50cy9kYXRldGltZS1waWNrZXIvbWF0LWRhdGV0aW1lLXBpY2tlci9kYXRldGltZXBpY2tlci10b2dnbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ3hLLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFpQi9EO0lBbUJJLDJDQUNXLEtBQXdCLEVBQ3ZCLGtCQUFxQztRQUR0QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN2Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBakJ6QyxrQkFBYSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFrQnZDLENBQUM7SUFaSSxzQkFBSSx1REFBUTtRQURyQiw2Q0FBNkM7YUFDcEM7WUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUztnQkFDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUTtnQkFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzNCLENBQUM7YUFDRCxVQUFhLEtBQWM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxDQUFDOzs7T0FIQTtJQVVELHVEQUFXLEdBQVgsVUFBWSxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRUQsdURBQVcsR0FBWDtRQUNJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELDhEQUFrQixHQUFsQjtRQUNJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxpREFBSyxHQUFMLFVBQU0sS0FBWTtRQUNkLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRU8sOERBQWtCLEdBQTFCO1FBQUEsaUJBVUM7UUFURyxJQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjO1lBQzFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWU7WUFDckMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDN0IsSUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQjtZQUM3RSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlO1lBQ3RELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQU0sT0FBQSxLQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLEVBQXRDLENBQXNDLENBQUMsQ0FBQztJQUM5SSxDQUFDOztnQkFuQ2lCLGlCQUFpQjtnQkFDSCxpQkFBaUI7O0lBZG5DO1FBQWIsS0FBSyxDQUFDLEtBQUssQ0FBQztrQ0FBaUIsMkJBQTJCOzZFQUFJO0lBR3BEO1FBQVIsS0FBSyxFQUFFOzs7cUVBSVA7SUFkUSxpQ0FBaUM7UUFmN0MsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGlDQUFpQztZQUMzQyxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLHUrREFBeUM7WUFDekMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7WUFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsbUJBQW1CLEVBQUUsS0FBSztZQUMxQixJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLGlDQUFpQztnQkFDeEMsc0dBQXNHO2dCQUN0RyxvR0FBb0c7Z0JBQ3BHLHNHQUFzRztnQkFDdEcsU0FBUyxFQUFFLGVBQWU7YUFDN0I7U0FDSixDQUFDO3lDQXFCb0IsaUJBQWlCO1lBQ0gsaUJBQWlCO09BckJ4QyxpQ0FBaUMsQ0F5RDdDO0lBQUQsd0NBQUM7Q0FBQSxBQXpERCxJQXlEQztTQXpEWSxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24sIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VySW50bCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgYXN5bmNTY2hlZHVsZXIsIG1lcmdlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEdJUElEYXRldGltZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dpcGktbWF0LWRhdGV0aW1lLXBpY2tlci10b2dnbGUnLFxuICAgIGV4cG9ydEFzOiAnZ2lwaURhdGV0aW1lUGlja2VyVG9nZ2xlJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2RhdGV0aW1lcGlja2VyLXRvZ2dsZS5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdnaXBpLW1hdC1kYXRldGltZS1waWNrZXItdG9nZ2xlJyxcbiAgICAgICAgLy8gQmluZCB0aGUgYGNsaWNrYCBvbiB0aGUgaG9zdCwgcmF0aGVyIHRoYW4gdGhlIGlubmVyIGBidXR0b25gLCBzbyB0aGF0IHdlIGNhbiBjYWxsIGBzdG9wUHJvcGFnYXRpb25gXG4gICAgICAgIC8vIG9uIGl0IHdpdGhvdXQgYWZmZWN0aW5nIHRoZSB1c2VyJ3MgYGNsaWNrYCBoYW5kbGVycy4gV2UgbmVlZCB0byBzdG9wIGl0IHNvIHRoYXQgdGhlIGlucHV0IGRvZXNuJ3RcbiAgICAgICAgLy8gZ2V0IGZvY3VzZWQgYXV0b21hdGljYWxseSBieSB0aGUgZm9ybSBmaWVsZCAoU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8yMTg1NikuXG4gICAgICAgICcoY2xpY2spJzogJ19vcGVuKCRldmVudCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdJUElEYXRldGltZXBpY2tlclRvZ2dsZUNvbXBvbmVudDxEPiBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBfc3RhdGVDaGFuZ2VzID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gICAgLyoqIERhdGVwaWNrZXIgaW5zdGFuY2UgdGhhdCB0aGUgYnV0dG9uIHdpbGwgdG9nZ2xlLiAqL1xuICAgIEBJbnB1dCgnZm9yJykgZGF0ZXRpbWVwaWNrZXI6IEdJUElEYXRldGltZXBpY2tlckNvbXBvbmVudDxEPjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0b2dnbGUgYnV0dG9uIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gdGhpcy5kYXRldGltZXBpY2tlci5kaXNhYmxlZFxuICAgICAgICAgICAgOiAhIXRoaXMuX2Rpc2FibGVkO1xuICAgIH1cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgX2ludGw6IE1hdERhdGVwaWNrZXJJbnRsLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHsgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5kYXRlcGlja2VyKSB7XG4gICAgICAgICAgICB0aGlzLl93YXRjaFN0YXRlQ2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlQ2hhbmdlcy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5fd2F0Y2hTdGF0ZUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBfb3BlbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZXRpbWVwaWNrZXIgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZXRpbWVwaWNrZXIub3BlbigpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF93YXRjaFN0YXRlQ2hhbmdlcygpIHtcbiAgICAgICAgY29uc3QgZGF0ZXBpY2tlckRpc2FibGVkID0gdGhpcy5kYXRldGltZXBpY2tlclxuICAgICAgICAgICAgPyB0aGlzLmRhdGV0aW1lcGlja2VyLl9kaXNhYmxlZENoYW5nZVxuICAgICAgICAgICAgOiBvZihbXSwgYXN5bmNTY2hlZHVsZXIpO1xuICAgICAgICBjb25zdCBpbnB1dERpc2FibGVkID0gdGhpcy5kYXRldGltZXBpY2tlciAmJiB0aGlzLmRhdGV0aW1lcGlja2VyLl9kYXRlcGlja2VySW5wdXRcbiAgICAgICAgICAgID8gdGhpcy5kYXRldGltZXBpY2tlci5fZGF0ZXBpY2tlcklucHV0Ll9kaXNhYmxlZENoYW5nZVxuICAgICAgICAgICAgOiBvZihbXSwgYXN5bmNTY2hlZHVsZXIpO1xuXG4gICAgICAgIHRoaXMuX3N0YXRlQ2hhbmdlcy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdGF0ZUNoYW5nZXMgPSBtZXJnZSh0aGlzLl9pbnRsLmNoYW5nZXMsIGRhdGVwaWNrZXJEaXNhYmxlZCwgaW5wdXREaXNhYmxlZCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWVwaWNrZXItdHlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyL21hdC1kYXRldGltZS1waWNrZXIvZGF0ZXRpbWVwaWNrZXItdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgR0lQSURhdGV0aW1lcGlja2VyVHlwZSA9IChcbiAgICB8ICdkYXRlJ1xuICAgIHwgJ3RpbWUnXG4gICAgfCAnbW9udGgnXG4gICAgfCAneWVhcidcbiAgICB8ICdkYXRldGltZSdcbik7XG4iXX0=