@skyux/datetime 4.12.0 → 4.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/bundles/skyux-datetime.umd.js +1321 -948
  3. package/bundles/skyux-datetime.umd.js.map +1 -1
  4. package/bundles/skyux-datetime.umd.min.js +2 -2
  5. package/bundles/skyux-datetime.umd.min.js.map +1 -1
  6. package/esm2015/modules/date-range-picker/date-range-picker.component.js +1 -1
  7. package/esm2015/modules/datepicker/datepicker-calendar-change.js +1 -0
  8. package/esm2015/modules/datepicker/datepicker-calendar-inner.component.js +30 -4
  9. package/esm2015/modules/datepicker/datepicker-calendar.component.js +15 -2
  10. package/esm2015/modules/datepicker/datepicker-custom-date.js +1 -0
  11. package/esm2015/modules/datepicker/datepicker-date.js +1 -1
  12. package/esm2015/modules/datepicker/datepicker-input-fuzzy.directive.js +10 -6
  13. package/esm2015/modules/datepicker/datepicker-input.directive.js +1 -1
  14. package/esm2015/modules/datepicker/datepicker.component.js +52 -7
  15. package/esm2015/modules/datepicker/datepicker.module.js +20 -9
  16. package/esm2015/modules/datepicker/datepicker.service.js +20 -0
  17. package/esm2015/modules/datepicker/daypicker-button.component.js +26 -0
  18. package/esm2015/modules/datepicker/daypicker-cell.component.js +131 -0
  19. package/esm2015/modules/datepicker/daypicker.component.js +96 -4
  20. package/esm2015/modules/datepicker/fuzzy-date.service.js +11 -1
  21. package/esm2015/modules/datepicker/monthpicker.component.js +1 -1
  22. package/esm2015/modules/datepicker/yearpicker.component.js +1 -1
  23. package/esm2015/modules/timepicker/timepicker.component.js +7 -4
  24. package/esm2015/modules/timepicker/timepicker.directive.js +3 -2
  25. package/esm2015/public_api.js +1 -1
  26. package/esm2015/skyux-datetime.js +6 -3
  27. package/esm5/modules/date-range-picker/date-range-picker.component.js +1 -1
  28. package/esm5/modules/datepicker/datepicker-calendar-change.js +1 -0
  29. package/esm5/modules/datepicker/datepicker-calendar-inner.component.js +30 -4
  30. package/esm5/modules/datepicker/datepicker-calendar.component.js +15 -2
  31. package/esm5/modules/datepicker/datepicker-custom-date.js +1 -0
  32. package/esm5/modules/datepicker/datepicker-date.js +1 -1
  33. package/esm5/modules/datepicker/datepicker-input-fuzzy.directive.js +10 -6
  34. package/esm5/modules/datepicker/datepicker-input.directive.js +1 -1
  35. package/esm5/modules/datepicker/datepicker.component.js +53 -7
  36. package/esm5/modules/datepicker/datepicker.module.js +20 -9
  37. package/esm5/modules/datepicker/datepicker.service.js +21 -0
  38. package/esm5/modules/datepicker/daypicker-button.component.js +27 -0
  39. package/esm5/modules/datepicker/daypicker-cell.component.js +134 -0
  40. package/esm5/modules/datepicker/daypicker.component.js +100 -4
  41. package/esm5/modules/datepicker/fuzzy-date.service.js +11 -1
  42. package/esm5/modules/datepicker/monthpicker.component.js +1 -1
  43. package/esm5/modules/datepicker/yearpicker.component.js +1 -1
  44. package/esm5/modules/timepicker/timepicker.component.js +7 -4
  45. package/esm5/modules/timepicker/timepicker.directive.js +3 -2
  46. package/esm5/public_api.js +1 -1
  47. package/esm5/skyux-datetime.js +6 -3
  48. package/fesm2015/skyux-datetime.js +1397 -1036
  49. package/fesm2015/skyux-datetime.js.map +1 -1
  50. package/fesm5/skyux-datetime.js +1316 -945
  51. package/fesm5/skyux-datetime.js.map +1 -1
  52. package/modules/datepicker/datepicker-calendar-change.d.ts +24 -0
  53. package/modules/datepicker/datepicker-calendar-inner.component.d.ts +12 -2
  54. package/modules/datepicker/datepicker-calendar.component.d.ts +6 -0
  55. package/modules/datepicker/datepicker-custom-date.d.ts +21 -0
  56. package/modules/datepicker/datepicker-date.d.ts +2 -0
  57. package/modules/datepicker/datepicker-input-fuzzy.directive.d.ts +1 -0
  58. package/modules/datepicker/datepicker-input.directive.d.ts +1 -1
  59. package/modules/datepicker/datepicker.component.d.ts +15 -1
  60. package/modules/datepicker/datepicker.service.d.ts +12 -0
  61. package/modules/datepicker/daypicker-button.component.d.ts +13 -0
  62. package/modules/datepicker/daypicker-cell.component.d.ts +37 -0
  63. package/modules/datepicker/daypicker.component.d.ts +17 -2
  64. package/modules/datepicker/fuzzy-date.service.d.ts +5 -1
  65. package/modules/timepicker/timepicker.component.d.ts +2 -1
  66. package/package.json +3 -2
  67. package/public_api.d.ts +2 -0
  68. package/skyux-datetime.d.ts +5 -2
  69. package/skyux-datetime.metadata.json +1 -1
  70. package/src/assets/img/guidelines/date-range-picker/content-error.png +0 -0
@@ -1,10 +1,10 @@
1
1
  import { __decorate, __param } from "tslib";
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, TemplateRef, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, TemplateRef, OnDestroy, OnInit, Optional, Output, ViewChild } from '@angular/core';
3
3
  import { SkyAffixAutoFitContext, SkyAffixer, SkyAffixService, SkyCoreAdapterService, SkyOverlayInstance, SkyOverlayService } from '@skyux/core';
4
4
  import { SkyInputBoxHostService } from '@skyux/forms';
5
5
  import { SkyThemeService } from '@skyux/theme';
6
6
  import { fromEvent, Subject } from 'rxjs';
7
- import { takeUntil } from 'rxjs/operators';
7
+ import { debounceTime, takeUntil } from 'rxjs/operators';
8
8
  import { SkyDatepickerCalendarComponent } from './datepicker-calendar.component';
9
9
  var nextId = 0;
10
10
  /**
@@ -23,7 +23,14 @@ var SkyDatepickerComponent = /** @class */ (function () {
23
23
  * Adds a class to the datepicker.
24
24
  */
25
25
  this.pickerClass = '';
26
+ /**
27
+ * Fires when the range of displayed dates in the calendar changes. Provides the
28
+ * current range of displayed dates and a mutable `customDate` property consumers can use
29
+ * to modify individual dates on the calendar.
30
+ */
31
+ this.calendarDateRangeChange = new EventEmitter();
26
32
  this.dateChange = new EventEmitter();
33
+ this.isDaypickerWaiting = false;
27
34
  this.isOpen = false;
28
35
  this.isVisible = false;
29
36
  this.ngUnsubscribe = new Subject();
@@ -128,7 +135,6 @@ var SkyDatepickerComponent = /** @class */ (function () {
128
135
  configurable: true
129
136
  });
130
137
  SkyDatepickerComponent.prototype.ngOnInit = function () {
131
- this.addTriggerButtonEventListeners();
132
138
  if (this.inputBoxHostService) {
133
139
  this.inputBoxHostService.populate({
134
140
  inputTemplate: this.inputTemplateRef,
@@ -163,6 +169,34 @@ var SkyDatepickerComponent = /** @class */ (function () {
163
169
  this.openPicker();
164
170
  }
165
171
  };
172
+ SkyDatepickerComponent.prototype.onCalendarDateRangeChange = function (event) {
173
+ var _this = this;
174
+ /* istanbul ignore else */
175
+ if (event) {
176
+ this.cancelCustomDatesSubscription();
177
+ var args = {
178
+ startDate: event.startDate,
179
+ endDate: event.endDate,
180
+ customDates: undefined
181
+ };
182
+ this.calendarDateRangeChange.emit(args);
183
+ // If consumer has added an observable to the args, watch for incoming custom dates.
184
+ /* istanbul ignore else */
185
+ if (args.customDates) {
186
+ this.isDaypickerWaiting = true;
187
+ // Avoid an ExpressionChangedAfterItHasBeenCheckedError.
188
+ this.changeDetector.detectChanges();
189
+ this.customDatesSubscription = args.customDates
190
+ .pipe(debounceTime(250))
191
+ .subscribe(function (result) {
192
+ _this.customDates = result;
193
+ _this.isDaypickerWaiting = false;
194
+ // Trigger change detection in child components to show changes in the calendar.
195
+ _this.changeDetector.markForCheck();
196
+ });
197
+ }
198
+ }
199
+ };
166
200
  SkyDatepickerComponent.prototype.closePicker = function () {
167
201
  this.destroyAffixer();
168
202
  this.destroyOverlay();
@@ -220,6 +254,7 @@ var SkyDatepickerComponent = /** @class */ (function () {
220
254
  _this.closePicker();
221
255
  }
222
256
  });
257
+ this.addKeydownListner();
223
258
  overlay.attachTemplate(this.calendarTemplateRef);
224
259
  this.overlay = overlay;
225
260
  };
@@ -230,9 +265,9 @@ var SkyDatepickerComponent = /** @class */ (function () {
230
265
  this.overlay = undefined;
231
266
  }
232
267
  };
233
- SkyDatepickerComponent.prototype.addTriggerButtonEventListeners = function () {
268
+ SkyDatepickerComponent.prototype.addKeydownListner = function () {
234
269
  var _this = this;
235
- fromEvent(window.document, 'keydown')
270
+ this.overlayKeydownListner = fromEvent(window.document, 'keydown')
236
271
  .pipe(takeUntil(this.ngUnsubscribe))
237
272
  .subscribe(function (event) {
238
273
  var _a;
@@ -243,12 +278,20 @@ var SkyDatepickerComponent = /** @class */ (function () {
243
278
  });
244
279
  };
245
280
  SkyDatepickerComponent.prototype.removePickerEventListeners = function () {
281
+ var _a;
246
282
  /* istanbul ignore else */
247
283
  if (this.calendarUnsubscribe) {
248
284
  this.calendarUnsubscribe.next();
249
285
  this.calendarUnsubscribe.complete();
250
286
  this.calendarUnsubscribe = undefined;
251
287
  }
288
+ (_a = this.overlayKeydownListner) === null || _a === void 0 ? void 0 : _a.unsubscribe();
289
+ };
290
+ SkyDatepickerComponent.prototype.cancelCustomDatesSubscription = function () {
291
+ if (this.customDatesSubscription) {
292
+ this.customDatesSubscription.unsubscribe();
293
+ this.customDatesSubscription = undefined;
294
+ }
252
295
  };
253
296
  SkyDatepickerComponent.ctorParameters = function () { return [
254
297
  { type: SkyAffixService },
@@ -261,6 +304,9 @@ var SkyDatepickerComponent = /** @class */ (function () {
261
304
  __decorate([
262
305
  Input()
263
306
  ], SkyDatepickerComponent.prototype, "pickerClass", void 0);
307
+ __decorate([
308
+ Output()
309
+ ], SkyDatepickerComponent.prototype, "calendarDateRangeChange", void 0);
264
310
  __decorate([
265
311
  ViewChild(SkyDatepickerCalendarComponent)
266
312
  ], SkyDatepickerComponent.prototype, "calendar", void 0);
@@ -294,7 +340,7 @@ var SkyDatepickerComponent = /** @class */ (function () {
294
340
  SkyDatepickerComponent = __decorate([
295
341
  Component({
296
342
  selector: 'sky-datepicker',
297
- template: "<div\n class=\"sky-datepicker\"\n>\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div\n class=\"sky-input-group\"\n >\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div\n class=\"sky-input-group-btn\"\n >\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-datepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? calendarId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"calendar\"\n size=\"lg\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"calendar\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #calendarTemplateRef>\n <div\n class=\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"calendarId\"\n [class.sky-datepicker-hidden]=\"!isVisible\"\n #calendarRef\n >\n <sky-datepicker-calendar\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [startingDay]=\"startingDay\"\n (calendarModeChange)=\"onCalendarModeChange()\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n </sky-datepicker-calendar>\n </div>\n</ng-template>\n",
343
+ template: "<div\n class=\"sky-datepicker\"\n>\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div\n class=\"sky-input-group\"\n >\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div\n class=\"sky-input-group-btn\"\n >\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-datepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? calendarId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"calendar\"\n size=\"lg\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"calendar\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #calendarTemplateRef>\n <div\n class=\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"calendarId\"\n [class.sky-datepicker-hidden]=\"!isVisible\"\n #calendarRef\n >\n <sky-datepicker-calendar\n [customDates]=\"customDates\"\n [isDaypickerWaiting]=\"isDaypickerWaiting\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [startingDay]=\"startingDay\"\n (calendarDateRangeChange)=\"onCalendarDateRangeChange($event)\"\n (calendarModeChange)=\"onCalendarModeChange()\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n </sky-datepicker-calendar>\n </div>\n</ng-template>\n",
298
344
  changeDetection: ChangeDetectionStrategy.OnPush,
299
345
  styles: [".sky-datepicker-calendar-container{position:fixed;border-radius:5px}.sky-datepicker-hidden{visibility:hidden}"]
300
346
  }),
@@ -304,4 +350,4 @@ var SkyDatepickerComponent = /** @class */ (function () {
304
350
  return SkyDatepickerComponent;
305
351
  }());
306
352
  export { SkyDatepickerComponent };
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZGF0ZXRpbWUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCw4QkFBOEIsRUFDL0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZjs7O0dBR0c7QUFPSDtJQXFKRSxnQ0FDVSxZQUE2QixFQUM3QixjQUFpQyxFQUNqQyxXQUFrQyxFQUNsQyxjQUFpQyxFQUN0QixtQkFBNEMsRUFDbkQsUUFBMEI7UUFOeEMsaUJBa0JDO1FBakJTLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUN0Qix3QkFB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LGVBQWUsdUJBQXJDLFFBQVE7O0lBckpYO1FBREMsS0FBSyxFQUFFOytEQUNnQjtJQXlFeEI7UUFEQyxTQUFTLENBQUMsOEJBQThCLENBQUM7NERBQ087SUFLakQ7UUFIQyxTQUFTLENBQUMsYUFBYSxFQUFFO1lBQ3hCLElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUM7NkRBd0JEO0lBU0Q7UUFIQyxTQUFTLENBQUMscUJBQXFCLEVBQUU7WUFDaEMsSUFBSSxFQUFFLFdBQVc7U0FDbEIsQ0FBQzt1RUFDNEM7SUFLOUM7UUFIQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDN0IsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQztvRUFDbUM7SUFNckM7UUFKQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDN0IsSUFBSSxFQUFFLFdBQVc7WUFDakIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO29FQUN5QztJQU0zQztRQUpDLFNBQVMsQ0FBQywwQkFBMEIsRUFBRTtZQUNyQyxJQUFJLEVBQUUsV0FBVztZQUNqQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7NEVBQ2lEO0lBckl4QyxzQkFBc0I7UUFObEMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixxNkRBQTBDO1lBRTFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNoRCxDQUFDO1FBMkpHLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLFFBQVEsRUFBRSxDQUFBO09BM0pGLHNCQUFzQixDQXFUbEM7SUFBRCw2QkFBQztDQUFBLEFBclRELElBcVRDO1NBclRZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4ZXIsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5SW5wdXRCb3hIb3N0U2VydmljZVxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBTa3lUaGVtZVNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHtcbiAgZnJvbUV2ZW50LFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnRcbn0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGRhdGVwaWNrZXIgYnV0dG9uIGFuZCBjYWxlbmRhci5cbiAqIFlvdSBtdXN0IHdyYXAgdGhpcyBjb21wb25lbnQgYXJvdW5kIGFuIGlucHV0IHdpdGggdGhlIGBza3lEYXRlcGlja2VySW5wdXRgIGRpcmVjdGl2ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRhdGVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICAvKipcbiAgICogQWRkcyBhIGNsYXNzIHRvIHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBpY2tlckNsYXNzID0gJyc7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGNhbGVuZGFyIGJ1dHRvbiBlbGVtZW50IG9yIGFueSBvZiBpdHMgY2hpbGRyZW4gaGF2ZSBmb2N1cy5cbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlLlxuICAgKi9cbiAgcHVibGljIGdldCBidXR0b25Jc0ZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJCdXR0b25SZWYpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlRWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudCA9PT0gYWN0aXZlRWw7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY2FsZW5kYXIgZWxlbWVudCBvciBhbnkgb2YgaXRzIGNoaWxkcmVuIGhhdmUgZm9jdXMuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXJJc0ZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyUmVmKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZm9jdXNlZEVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhclJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGZvY3VzZWRFbCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY2FsZW5kYXIgZWxlbWVudCdzIHZpc2libGl0eSBwcm9wZXJ0eSBpcyAndmlzaWJsZScuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXJJc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXIgPyB0aGlzLmNhbGVuZGFyLmlzVmlzaWJsZSA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZERhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbGVuZGFySWQ6IHN0cmluZztcblxuICBwdWJsaWMgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlO1xuXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlO1xuXG4gIHB1YmxpYyBzdGFydGluZ0RheTogbnVtYmVyO1xuXG4gIHB1YmxpYyB0cmlnZ2VyQnV0dG9uSWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudClcbiAgcHJpdmF0ZSBjYWxlbmRhcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyUmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgfSlcbiAgcHJpdmF0ZSBzZXQgY2FsZW5kYXJSZWYodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2NhbGVuZGFyUmVmID0gdmFsdWU7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSBjYWxlbmRhciBjb21wb25lbnQgdG8gcmVuZGVyIGJlZm9yZSBnYXVnaW5nIGRpbWVuc2lvbnMuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhci53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG5cbiAgICAgICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZUFmZml4ZXIoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvcmVBZGFwdGVyLmdldEZvY3VzYWJsZUNoaWxkcmVuQW5kQXBwbHlGb2N1cyhcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJSZWYsXG4gICAgICAgICAgICAnLnNreS1kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyJyxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNhbGVuZGFyUmVmKCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhclJlZjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWZcbiAgfSlcbiAgcHJpdmF0ZSBjYWxlbmRhclRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25SZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZlxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b25SZWY6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWVcbiAgfSlcbiAgcHJpdmF0ZSBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWVcbiAgfSlcbiAgcHJpdmF0ZSB0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSBhZmZpeGVyOiBTa3lBZmZpeGVyO1xuXG4gIHByaXZhdGUgY2FsZW5kYXJVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlO1xuXG4gIHByaXZhdGUgX2NhbGVuZGFyUmVmOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWREYXRlOiBEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEJveEhvc3RTZXJ2aWNlPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZVxuICApIHtcbiAgICBjb25zdCB1bmlxdWVJZCA9IG5leHRJZCsrO1xuICAgIHRoaXMuY2FsZW5kYXJJZCA9IGBza3ktZGF0ZXBpY2tlci1jYWxlbmRhci0ke3VuaXF1ZUlkfWA7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBgc2t5LWRhdGVwaWNrZXItYnV0dG9uLSR7dW5pcXVlSWR9YDtcblxuICAgIC8vIFVwZGF0ZSBpY29ucyB3aGVuIHRoZW1lIGNoYW5nZXMuXG4gICAgdGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRUcmlnZ2VyQnV0dG9uRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UpIHtcbiAgICAgIHRoaXMuaW5wdXRCb3hIb3N0U2VydmljZS5wb3B1bGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0VGVtcGxhdGU6IHRoaXMuaW5wdXRUZW1wbGF0ZVJlZixcbiAgICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMudHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICBwdWJsaWMgb25DYWxlbmRhck1vZGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgLy8gTGV0IHRoZSBjYWxlbmRhciBwb3B1bGF0ZSBpbiB0aGUgRE9NIGJlZm9yZSByZWNhbGN1bGF0aW5nIHBsYWNlbWVudC5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWZmaXhlci5yZWFmZml4KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZERhdGVDaGFuZ2UodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlUGlja2VyKCkge1xuICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMudHJpZ2dlckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLnJlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBjb25zdCBhZmZpeGVyID0gdGhpcy5hZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcih0aGlzLmNhbGVuZGFyUmVmKTtcblxuICAgIC8vIEhpZGUgY2FsZW5kYXIgd2hlbiB0cmlnZ2VyIGJ1dHRvbiBpcyBzY3JvbGxlZCBvZmYgc2NyZWVuLlxuICAgIGFmZml4ZXIucGxhY2VtZW50Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IChjaGFuZ2UucGxhY2VtZW50ICE9PSBudWxsKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgYWZmaXhlci5hZmZpeFRvKHRoaXMudHJpZ2dlckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5WaWV3cG9ydCxcbiAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAncmlnaHQnLFxuICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICBwbGFjZW1lbnQ6ICdiZWxvdydcbiAgICB9KTtcblxuICAgIHRoaXMuYWZmaXhlciA9IGFmZml4ZXI7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lBZmZpeGVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLmFmZml4ZXIpIHtcbiAgICAgIHRoaXMuYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLmFmZml4ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMucGlja2VyQ2xhc3MsXG4gICAgICBlbmFibGVDbG9zZTogZmFsc2UsXG4gICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgb3ZlcmxheS5iYWNrZHJvcENsaWNrXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLmNhbGVuZGFyVGVtcGxhdGVSZWYpO1xuXG4gICAgdGhpcy5vdmVybGF5ID0gb3ZlcmxheTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLm92ZXJsYXkpO1xuICAgICAgdGhpcy5vdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkVHJpZ2dlckJ1dHRvbkV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGZyb21FdmVudCh3aW5kb3cuZG9jdW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoa2V5ID09PSAnZXNjYXBlJyAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZSkge1xuICAgICAgdGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZGF0ZXRpbWUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDbEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLHNCQUFzQixFQUN2QixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsT0FBTyxFQUNMLDhCQUE4QixFQUMvQixNQUFNLGlDQUFpQyxDQUFDO0FBTXpDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7R0FHRztBQU9IO0lBcUtFLGdDQUNVLFlBQTZCLEVBQzdCLGNBQWlDLEVBQ2pDLFdBQWtDLEVBQ2xDLGNBQWlDLEVBQ3RCLG1CQUE0QyxFQUNuRCxRQUEwQjtRQU54QyxpQkFrQkM7UUFqQlMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFDbEMsbUJBQWMsR0FBZCxj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Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeGVyLFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgU2t5T3ZlcmxheUluc3RhbmNlLFxuICBTa3lPdmVybGF5U2VydmljZVxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUlucHV0Qm94SG9zdFNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgU2t5VGhlbWVTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIGZyb21FdmVudCxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZVxufSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItY2hhbmdlJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50XG59IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVxufSBmcm9tICcuL2RhdGVwaWNrZXItY3VzdG9tLWRhdGUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBkYXRlcGlja2VyIGJ1dHRvbiBhbmQgY2FsZW5kYXIuXG4gKiBZb3UgbXVzdCB3cmFwIHRoaXMgY29tcG9uZW50IGFyb3VuZCBhbiBpbnB1dCB3aXRoIHRoZSBgc2t5RGF0ZXBpY2tlcklucHV0YCBkaXJlY3RpdmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjbGFzcyB0byB0aGUgZGF0ZXBpY2tlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwaWNrZXJDbGFzcyA9ICcnO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSByYW5nZSBvZiBkaXNwbGF5ZWQgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyIGNoYW5nZXMuIFByb3ZpZGVzIHRoZVxuICAgKiBjdXJyZW50IHJhbmdlIG9mIGRpc3BsYXllZCBkYXRlcyBhbmQgYSBtdXRhYmxlIGBjdXN0b21EYXRlYCBwcm9wZXJ0eSBjb25zdW1lcnMgY2FuIHVzZVxuICAgKiB0byBtb2RpZnkgaW5kaXZpZHVhbCBkYXRlcyBvbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGNhbGVuZGFyIGJ1dHRvbiBlbGVtZW50IG9yIGFueSBvZiBpdHMgY2hpbGRyZW4gaGF2ZSBmb2N1cy5cbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlLlxuICAgKi9cbiAgcHVibGljIGdldCBidXR0b25Jc0ZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJCdXR0b25SZWYpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlRWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudCA9PT0gYWN0aXZlRWw7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY2FsZW5kYXIgZWxlbWVudCBvciBhbnkgb2YgaXRzIGNoaWxkcmVuIGhhdmUgZm9jdXMuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXJJc0ZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyUmVmKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZm9jdXNlZEVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhclJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGZvY3VzZWRFbCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY2FsZW5kYXIgZWxlbWVudCdzIHZpc2libGl0eSBwcm9wZXJ0eSBpcyAndmlzaWJsZScuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXJJc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXIgPyB0aGlzLmNhbGVuZGFyLmlzVmlzaWJsZSA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZERhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbGVuZGFySWQ6IHN0cmluZztcblxuICBwdWJsaWMgY3VzdG9tRGF0ZXM6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlW107XG5cbiAgcHVibGljIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgcHVibGljIGlzRGF5cGlja2VyV2FpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIG1heERhdGU6IERhdGU7XG5cbiAgcHVibGljIG1pbkRhdGU6IERhdGU7XG5cbiAgcHVibGljIHN0YXJ0aW5nRGF5OiBudW1iZXI7XG5cbiAgcHVibGljIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50KVxuICBwcml2YXRlIGNhbGVuZGFyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZlxuICB9KVxuICBwcml2YXRlIHNldCBjYWxlbmRhclJlZih2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fY2FsZW5kYXJSZWYgPSB2YWx1ZTtcblxuICAgICAgLy8gV2FpdCBmb3IgdGhlIGNhbGVuZGFyIGNvbXBvbmVudCB0byByZW5kZXIgYmVmb3JlIGdhdWdpbmcgZGltZW5zaW9ucy5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbGVuZGFyLndyaXRlVmFsdWUodGhpcy5fc2VsZWN0ZWREYXRlKTtcblxuICAgICAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQWZmaXhlcigpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclJlZixcbiAgICAgICAgICAgICcuc2t5LWRhdGVwaWNrZXItY2FsZW5kYXItaW5uZXInLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY2FsZW5kYXJSZWYoKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyUmVmO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZlxuICB9KVxuICBwcml2YXRlIGNhbGVuZGFyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmXG4gIH0pXG4gIHByaXZhdGUgdHJpZ2dlckJ1dHRvblJlZjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIGFmZml4ZXI6IFNreUFmZml4ZXI7XG5cbiAgcHJpdmF0ZSBjYWxlbmRhclVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+O1xuXG4gIHByaXZhdGUgY3VzdG9tRGF0ZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlO1xuXG4gIHByaXZhdGUgb3ZlcmxheUtleWRvd25MaXN0bmVyOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJSZWY6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9zZWxlY3RlZERhdGU6IERhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFNlcnZpY2U/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIGNvbnN0IHVuaXF1ZUlkID0gbmV4dElkKys7XG4gICAgdGhpcy5jYWxlbmRhcklkID0gYHNreS1kYXRlcGlja2VyLWNhbGVuZGFyLSR7dW5pcXVlSWR9YDtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25JZCA9IGBza3ktZGF0ZXBpY2tlci1idXR0b24tJHt1bmlxdWVJZH1gO1xuXG4gICAgLy8gVXBkYXRlIGljb25zIHdoZW4gdGhlbWUgY2hhbmdlcy5cbiAgICB0aGVtZVN2Yz8uc2V0dGluZ3NDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UucG9wdWxhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgICAgYnV0dG9uc1RlbXBsYXRlOiB0aGlzLnRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZlxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMucmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJNb2RlQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIExldCB0aGUgY2FsZW5kYXIgcG9wdWxhdGUgaW4gdGhlIERPTSBiZWZvcmUgcmVjYWxjdWxhdGluZyBwbGFjZW1lbnQuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFmZml4ZXIucmVhZmZpeCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWREYXRlQ2hhbmdlKHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRyaWdnZXJCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UoZXZlbnQ6IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLmNhbmNlbEN1c3RvbURhdGVzU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAgIGNvbnN0IGFyZ3M6IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSA9IHtcbiAgICAgICAgc3RhcnREYXRlOiBldmVudC5zdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXG4gICAgICAgIGN1c3RvbURhdGVzOiB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlLmVtaXQoYXJncyk7XG4gICAgICAvLyBJZiBjb25zdW1lciBoYXMgYWRkZWQgYW4gb2JzZXJ2YWJsZSB0byB0aGUgYXJncywgd2F0Y2ggZm9yIGluY29taW5nIGN1c3RvbSBkYXRlcy5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoYXJncy5jdXN0b21EYXRlcykge1xuXG4gICAgICAgIHRoaXMuaXNEYXlwaWNrZXJXYWl0aW5nID0gdHJ1ZTtcbiAgICAgICAgLy8gQXZvaWQgYW4gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvci5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5jdXN0b21EYXRlc1N1YnNjcmlwdGlvbiA9IGFyZ3MuY3VzdG9tRGF0ZXNcbiAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjUwKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRGF0ZXMgPSByZXN1bHQ7XG4gICAgICAgICAgICB0aGlzLmlzRGF5cGlja2VyV2FpdGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gaW4gY2hpbGQgY29tcG9uZW50cyB0byBzaG93IGNoYW5nZXMgaW4gdGhlIGNhbGVuZGFyLlxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMucmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG9wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYWZmaXhlciA9IHRoaXMuYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy5jYWxlbmRhclJlZik7XG5cbiAgICAvLyBIaWRlIGNhbGVuZGFyIHdoZW4gdHJpZ2dlciBidXR0b24gaXMgc2Nyb2xsZWQgb2ZmIHNjcmVlbi5cbiAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSAoY2hhbmdlLnBsYWNlbWVudCAhPT0gbnVsbCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGFmZml4ZXIuYWZmaXhUbyh0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ3JpZ2h0JyxcbiAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgcGxhY2VtZW50OiAnYmVsb3cnXG4gICAgfSk7XG5cbiAgICB0aGlzLmFmZml4ZXIgPSBhZmZpeGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy5hZmZpeGVyKSB7XG4gICAgICB0aGlzLmFmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5hZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoe1xuICAgICAgd3JhcHBlckNsYXNzOiB0aGlzLnBpY2tlckNsYXNzLFxuICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2VcbiAgICB9KTtcblxuICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWRkS2V5ZG93bkxpc3RuZXIoKTtcblxuICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5jYWxlbmRhclRlbXBsYXRlUmVmKTtcblxuICAgIHRoaXMub3ZlcmxheSA9IG92ZXJsYXk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy5vdmVybGF5KTtcbiAgICAgIHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEtleWRvd25MaXN0bmVyKCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheUtleWRvd25MaXN0bmVyID0gZnJvbUV2ZW50KHdpbmRvdy5kb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChrZXkgPT09ICdlc2NhcGUnICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgdGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLmNhbGVuZGFyVW5zdWJzY3JpYmUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMub3ZlcmxheUtleWRvd25MaXN0bmVyPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5jZWxDdXN0b21EYXRlc1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXN0b21EYXRlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jdXN0b21EYXRlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jdXN0b21EYXRlc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -4,19 +4,23 @@ import { CommonModule } from '@angular/common';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  import { SkyAffixModule, SkyAppWindowRef, SkyCoreAdapterService, SkyOverlayModule } from '@skyux/core';
6
6
  import { SkyI18nModule } from '@skyux/i18n';
7
- import { SkyIconModule } from '@skyux/indicators';
7
+ import { SkyIconModule, SkyWaitModule } from '@skyux/indicators';
8
8
  import { SkyThemeModule, SkyThemeService } from '@skyux/theme';
9
+ import { SkyPopoverModule } from '@skyux/popovers';
9
10
  import { SkyDateTimeResourcesModule } from '../shared/datetime-resources.module';
10
11
  import { SkyDatepickerCalendarComponent } from './datepicker-calendar.component';
11
12
  import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
12
- import { SkyDayPickerComponent } from './daypicker.component';
13
- import { SkyMonthPickerComponent } from './monthpicker.component';
14
- import { SkyYearPickerComponent } from './yearpicker.component';
15
13
  import { SkyDatepickerComponent } from './datepicker.component';
16
14
  import { SkyDatepickerConfigService } from './datepicker-config.service';
17
15
  import { SkyDatepickerInputDirective } from './datepicker-input.directive';
18
16
  import { SkyFuzzyDatepickerInputDirective } from './datepicker-input-fuzzy.directive';
17
+ import { SkyDatepickerService } from './datepicker.service';
18
+ import { SkyDayPickerButtonComponent } from './daypicker-button.component';
19
+ import { SkyDayPickerCellComponent } from './daypicker-cell.component';
20
+ import { SkyDayPickerComponent } from './daypicker.component';
19
21
  import { SkyFuzzyDateService } from './fuzzy-date.service';
22
+ import { SkyMonthPickerComponent } from './monthpicker.component';
23
+ import { SkyYearPickerComponent } from './yearpicker.component';
20
24
  var SkyDatepickerModule = /** @class */ (function () {
21
25
  function SkyDatepickerModule() {
22
26
  }
@@ -30,7 +34,9 @@ var SkyDatepickerModule = /** @class */ (function () {
30
34
  SkyYearPickerComponent,
31
35
  SkyDatepickerComponent,
32
36
  SkyDatepickerInputDirective,
33
- SkyFuzzyDatepickerInputDirective
37
+ SkyFuzzyDatepickerInputDirective,
38
+ SkyDayPickerCellComponent,
39
+ SkyDayPickerButtonComponent
34
40
  ],
35
41
  imports: [
36
42
  CommonModule,
@@ -40,7 +46,9 @@ var SkyDatepickerModule = /** @class */ (function () {
40
46
  SkyDateTimeResourcesModule,
41
47
  SkyAffixModule,
42
48
  SkyOverlayModule,
43
- SkyThemeModule
49
+ SkyThemeModule,
50
+ SkyPopoverModule,
51
+ SkyWaitModule
44
52
  ],
45
53
  exports: [
46
54
  SkyDatepickerCalendarComponent,
@@ -50,18 +58,21 @@ var SkyDatepickerModule = /** @class */ (function () {
50
58
  SkyYearPickerComponent,
51
59
  SkyDatepickerComponent,
52
60
  SkyDatepickerInputDirective,
53
- SkyFuzzyDatepickerInputDirective
61
+ SkyFuzzyDatepickerInputDirective,
62
+ SkyDayPickerCellComponent,
63
+ SkyDayPickerButtonComponent
54
64
  ],
55
65
  providers: [
56
66
  SkyAppWindowRef,
57
67
  SkyDatepickerConfigService,
58
68
  SkyFuzzyDateService,
59
69
  SkyCoreAdapterService,
60
- SkyThemeService
70
+ SkyThemeService,
71
+ SkyDatepickerService
61
72
  ]
62
73
  })
63
74
  ], SkyDatepickerModule);
64
75
  return SkyDatepickerModule;
65
76
  }());
66
77
  export { SkyDatepickerModule };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZGF0ZXRpbWUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFlBQVksRUFDYixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFDTCxXQUFXLEVBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxhQUFhLEVBQ2QsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLGFBQWEsRUFDZCxNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNoQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsMEJBQTBCLEVBQzNCLE1BQU0scUNBQXFDLENBQUM7QUFFN0MsT0FBTyxFQUNMLDhCQUE4QixFQUMvQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFDTCxtQ0FBbUMsRUFDcEMsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvQyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3RCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNMLHVCQUF1QixFQUN4QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUNMLDBCQUEwQixFQUMzQixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFDTCwyQkFBMkIsRUFDNUIsTUFBTSw4QkFBOEIsQ0FBQztBQUV0QyxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2pDLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLHNCQUFzQixDQUFDO0FBeUM5QjtJQUFBO0lBQW1DLENBQUM7SUFBdkIsbUJBQW1CO1FBdkMvQixRQUFRLENBQUM7WUFDUixZQUFZLEVBQUU7Z0JBQ1osOEJBQThCO2dCQUM5QixtQ0FBbUM7Z0JBQ25DLHFCQUFxQjtnQkFDckIsdUJBQXVCO2dCQUN2QixzQkFBc0I7Z0JBQ3RCLHNCQUFzQjtnQkFDdEIsMkJBQTJCO2dCQUMzQixnQ0FBZ0M7YUFDakM7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsWUFBWTtnQkFDWixhQUFhO2dCQUNiLFdBQVc7Z0JBQ1gsYUFBYTtnQkFDYiwwQkFBMEI7Z0JBQzFCLGNBQWM7Z0JBQ2QsZ0JBQWdCO2dCQUNoQixjQUFjO2FBQ2Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsOEJBQThCO2dCQUM5QixtQ0FBbUM7Z0JBQ25DLHFCQUFxQjtnQkFDckIsdUJBQXVCO2dCQUN2QixzQkFBc0I7Z0JBQ3RCLHNCQUFzQjtnQkFDdEIsMkJBQTJCO2dCQUMzQixnQ0FBZ0M7YUFDakM7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsZUFBZTtnQkFDZiwwQkFBMEI7Z0JBQzFCLG1CQUFtQjtnQkFDbkIscUJBQXFCO2dCQUNyQixlQUFlO2FBQ2hCO1NBQ0YsQ0FBQztPQUNXLG1CQUFtQixDQUFJO0lBQUQsMEJBQUM7Q0FBQSxBQUFwQyxJQUFvQztTQUF2QixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBOZ01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQ29tbW9uTW9kdWxlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gIEZvcm1zTW9kdWxlXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgU2t5QWZmaXhNb2R1bGUsXG4gIFNreUFwcFdpbmRvd1JlZixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5TW9kdWxlXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5STE4bk1vZHVsZVxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7XG4gIFNreUljb25Nb2R1bGVcbn0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lUaGVtZU1vZHVsZSxcbiAgU2t5VGhlbWVTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIFNreURhdGVUaW1lUmVzb3VyY2VzTW9kdWxlXG59IGZyb20gJy4uL3NoYXJlZC9kYXRldGltZS1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50XG59IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudFxufSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5RGF5UGlja2VyQ29tcG9uZW50XG59IGZyb20gJy4vZGF5cGlja2VyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreU1vbnRoUGlja2VyQ29tcG9uZW50XG59IGZyb20gJy4vbW9udGhwaWNrZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5WWVhclBpY2tlckNvbXBvbmVudFxufSBmcm9tICcuL3llYXJwaWNrZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlckNvbXBvbmVudFxufSBmcm9tICcuL2RhdGVwaWNrZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2Vcbn0gZnJvbSAnLi9kYXRlcGlja2VyLWNvbmZpZy5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlXG59IGZyb20gJy4vZGF0ZXBpY2tlci1pbnB1dC5kaXJlY3RpdmUnO1xuXG5pbXBvcnQge1xuICBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZVxufSBmcm9tICcuL2RhdGVwaWNrZXItaW5wdXQtZnV6enkuZGlyZWN0aXZlJztcblxuaW1wb3J0IHtcbiAgU2t5RnV6enlEYXRlU2VydmljZVxufSBmcm9tICcuL2Z1enp5LWRhdGUuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCxcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCxcbiAgICBTa3lEYXlQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5TW9udGhQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5WWVhclBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgIFNreURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSxcbiAgICBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZVxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUkxOG5Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lEYXRlVGltZVJlc291cmNlc01vZHVsZSxcbiAgICBTa3lBZmZpeE1vZHVsZSxcbiAgICBTa3lPdmVybGF5TW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQsXG4gICAgU2t5RGF5UGlja2VyQ29tcG9uZW50LFxuICAgIFNreU1vbnRoUGlja2VyQ29tcG9uZW50LFxuICAgIFNreVllYXJQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lEYXRlcGlja2VySW5wdXREaXJlY3RpdmUsXG4gICAgU2t5RnV6enlEYXRlcGlja2VySW5wdXREaXJlY3RpdmVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5QXBwV2luZG93UmVmLFxuICAgIFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlLFxuICAgIFNreUZ1enp5RGF0ZVNlcnZpY2UsXG4gICAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreVRoZW1lU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJNb2R1bGUgeyB9XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZGF0ZXRpbWUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFlBQVksRUFDYixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFDTCxXQUFXLEVBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxhQUFhLEVBQ2QsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2QsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDaEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLGdCQUFnQixFQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFDTCwwQkFBMEIsRUFDM0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsOEJBQThCLEVBQy9CLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxFQUNMLG1DQUFtQyxFQUNwQyxNQUFNLHVDQUF1QyxDQUFDO0FBRS9DLE9BQU8sRUFDTCxzQkFBc0IsRUFDdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQ0wsMEJBQTBCLEVBQzNCLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUNMLDJCQUEyQixFQUM1QixNQUFNLDhCQUE4QixDQUFDO0FBRXRDLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDakMsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1QyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUNMLDJCQUEyQixFQUM1QixNQUFNLDhCQUE4QixDQUFDO0FBRXRDLE9BQU8sRUFDTCx5QkFBeUIsRUFDMUIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3RCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFDTCx1QkFBdUIsRUFDeEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sd0JBQXdCLENBQUM7QUFnRGhDO0lBQUE7SUFBbUMsQ0FBQztJQUF2QixtQkFBbUI7UUE5Qy9CLFFBQVEsQ0FBQztZQUNSLFlBQVksRUFBRTtnQkFDWiw4QkFBOEI7Z0JBQzlCLG1DQUFtQztnQkFDbkMscUJBQXFCO2dCQUNyQix1QkFBdUI7Z0JBQ3ZCLHNCQUFzQjtnQkFDdEIsc0JBQXNCO2dCQUN0QiwyQkFBMkI7Z0JBQzNCLGdDQUFnQztnQkFDaEMseUJBQXlCO2dCQUN6QiwyQkFBMkI7YUFDNUI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsWUFBWTtnQkFDWixhQUFhO2dCQUNiLFdBQVc7Z0JBQ1gsYUFBYTtnQkFDYiwwQkFBMEI7Z0JBQzFCLGNBQWM7Z0JBQ2QsZ0JBQWdCO2dCQUNoQixjQUFjO2dCQUNkLGdCQUFnQjtnQkFDaEIsYUFBYTthQUNkO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLDhCQUE4QjtnQkFDOUIsbUNBQW1DO2dCQUNuQyxxQkFBcUI7Z0JBQ3JCLHVCQUF1QjtnQkFDdkIsc0JBQXNCO2dCQUN0QixzQkFBc0I7Z0JBQ3RCLDJCQUEyQjtnQkFDM0IsZ0NBQWdDO2dCQUNoQyx5QkFBeUI7Z0JBQ3pCLDJCQUEyQjthQUM1QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxlQUFlO2dCQUNmLDBCQUEwQjtnQkFDMUIsbUJBQW1CO2dCQUNuQixxQkFBcUI7Z0JBQ3JCLGVBQWU7Z0JBQ2Ysb0JBQW9CO2FBQ3JCO1NBQ0YsQ0FBQztPQUNXLG1CQUFtQixDQUFJO0lBQUQsMEJBQUM7Q0FBQSxBQUFwQyxJQUFvQztTQUF2QixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBOZ01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQ29tbW9uTW9kdWxlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gIEZvcm1zTW9kdWxlXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgU2t5QWZmaXhNb2R1bGUsXG4gIFNreUFwcFdpbmRvd1JlZixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5TW9kdWxlXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5STE4bk1vZHVsZVxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7XG4gIFNreUljb25Nb2R1bGUsXG4gIFNreVdhaXRNb2R1bGVcbn0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lUaGVtZU1vZHVsZSxcbiAgU2t5VGhlbWVTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIFNreVBvcG92ZXJNb2R1bGVcbn0gZnJvbSAnQHNreXV4L3BvcG92ZXJzJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZVRpbWVSZXNvdXJjZXNNb2R1bGVcbn0gZnJvbSAnLi4vc2hhcmVkL2RhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnRcbn0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50XG59IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ29tcG9uZW50XG59IGZyb20gJy4vZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZVxufSBmcm9tICcuL2RhdGVwaWNrZXItY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VySW5wdXREaXJlY3RpdmVcbn0gZnJvbSAnLi9kYXRlcGlja2VyLWlucHV0LmRpcmVjdGl2ZSc7XG5cbmltcG9ydCB7XG4gIFNreUZ1enp5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlXG59IGZyb20gJy4vZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyU2VydmljZVxufSBmcm9tICcuL2RhdGVwaWNrZXIuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudFxufSBmcm9tICcuL2RheXBpY2tlci1idXR0b24uY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudFxufSBmcm9tICcuL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreURheVBpY2tlckNvbXBvbmVudFxufSBmcm9tICcuL2RheXBpY2tlci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lGdXp6eURhdGVTZXJ2aWNlXG59IGZyb20gJy4vZnV6enktZGF0ZS5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgU2t5TW9udGhQaWNrZXJDb21wb25lbnRcbn0gZnJvbSAnLi9tb250aHBpY2tlci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lZZWFyUGlja2VyQ29tcG9uZW50XG59IGZyb20gJy4veWVhcnBpY2tlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQsXG4gICAgU2t5RGF5UGlja2VyQ29tcG9uZW50LFxuICAgIFNreU1vbnRoUGlja2VyQ29tcG9uZW50LFxuICAgIFNreVllYXJQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lEYXRlcGlja2VySW5wdXREaXJlY3RpdmUsXG4gICAgU2t5RnV6enlEYXRlcGlja2VySW5wdXREaXJlY3RpdmUsXG4gICAgU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudCxcbiAgICBTa3lEYXlQaWNrZXJCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lJMThuTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5RGF0ZVRpbWVSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5QWZmaXhNb2R1bGUsXG4gICAgU2t5T3ZlcmxheU1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgICBTa3lQb3BvdmVyTW9kdWxlLFxuICAgIFNreVdhaXRNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCxcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCxcbiAgICBTa3lEYXlQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5TW9udGhQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5WWVhclBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgIFNreURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSxcbiAgICBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSxcbiAgICBTa3lEYXlQaWNrZXJDZWxsQ29tcG9uZW50LFxuICAgIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lBcHBXaW5kb3dSZWYsXG4gICAgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2UsXG4gICAgU2t5RnV6enlEYXRlU2VydmljZSxcbiAgICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgU2t5VGhlbWVTZXJ2aWNlLFxuICAgIFNreURhdGVwaWNrZXJTZXJ2aWNlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlck1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { Subject } from 'rxjs';
4
+ /**
5
+ * @internal
6
+ */
7
+ var SkyDatepickerService = /** @class */ (function () {
8
+ function SkyDatepickerService() {
9
+ /**
10
+ * Specifies if a key date popover is currently displayed.
11
+ * Useful for communicating across all daypicker siblings when a popover is displayed.
12
+ */
13
+ this.keyDatePopoverStream = new Subject();
14
+ }
15
+ SkyDatepickerService = __decorate([
16
+ Injectable()
17
+ ], SkyDatepickerService);
18
+ return SkyDatepickerService;
19
+ }());
20
+ export { SkyDatepickerService };
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNreXV4L2RhdGV0aW1lLyIsInNvdXJjZXMiOlsibW9kdWxlcy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBTWQ7O0dBRUc7QUFFSDtJQUFBO1FBRUU7OztXQUdHO1FBQ0kseUJBQW9CLEdBQStCLElBQUksT0FBTyxFQUFxQixDQUFDO0lBRTdGLENBQUM7SUFSWSxvQkFBb0I7UUFEaEMsVUFBVSxFQUFFO09BQ0Esb0JBQW9CLENBUWhDO0lBQUQsMkJBQUM7Q0FBQSxBQVJELElBUUM7U0FSWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyRGF0ZVxufSBmcm9tICcuL2RhdGVwaWNrZXItZGF0ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VyU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBpZiBhIGtleSBkYXRlIHBvcG92ZXIgaXMgY3VycmVudGx5IGRpc3BsYXllZC5cbiAgICogVXNlZnVsIGZvciBjb21tdW5pY2F0aW5nIGFjcm9zcyBhbGwgZGF5cGlja2VyIHNpYmxpbmdzIHdoZW4gYSBwb3BvdmVyIGlzIGRpc3BsYXllZC5cbiAgICovXG4gIHB1YmxpYyBrZXlEYXRlUG9wb3ZlclN0cmVhbTogU3ViamVjdDxTa3lEYXRlcGlja2VyRGF0ZT4gPSBuZXcgU3ViamVjdDxTa3lEYXRlcGlja2VyRGF0ZT4oKTtcblxufVxuIl19
@@ -0,0 +1,27 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, Input } from '@angular/core';
3
+ import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
4
+ /**
5
+ * @internal
6
+ */
7
+ var SkyDayPickerButtonComponent = /** @class */ (function () {
8
+ function SkyDayPickerButtonComponent(datepicker) {
9
+ this.datepicker = datepicker;
10
+ }
11
+ SkyDayPickerButtonComponent.ctorParameters = function () { return [
12
+ { type: SkyDatepickerCalendarInnerComponent }
13
+ ]; };
14
+ __decorate([
15
+ Input()
16
+ ], SkyDayPickerButtonComponent.prototype, "date", void 0);
17
+ SkyDayPickerButtonComponent = __decorate([
18
+ Component({
19
+ selector: 'sky-daypicker-button',
20
+ template: "<button\n class=\"sky-btn sky-btn-sm sky-btn-default sky-datepicker-btn-date\"\n tabindex=\"-1\"\n type=\"button\"\n [disabled]=\"date.disabled\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date),\n 'sky-datepicker-btn-disabled': date.disabled,\n 'sky-datepicker-btn-key-date': date.keyDate\n }\"\n (click)=\"datepicker.selectCalendar($event, date.date, true)\"\n>\n <span\n [ngClass]=\"{ 'sky-datepicker-secondary': date.secondary }\"\n >\n {{date.label}}\n </span>\n</button>\n",
21
+ styles: [".sky-datepicker-btn-disabled{font-style:italic}.sky-datepicker-btn-key-date{position:relative}.sky-datepicker-btn-key-date::before{position:absolute;content:\"\";height:5px;width:5px;background-color:#d93a3d;border-radius:50%;left:15px;top:22px}:host-context(.sky-theme-modern) .sky-datepicker-btn-key-date::before{left:12px}.sky-theme-modern .sky-datepicker-btn-key-date::before{left:12px}"]
22
+ })
23
+ ], SkyDayPickerButtonComponent);
24
+ return SkyDayPickerButtonComponent;
25
+ }());
26
+ export { SkyDayPickerButtonComponent };
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZGF0ZXRpbWUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RhdGVwaWNrZXIvZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxtQ0FBbUMsRUFDcEMsTUFBTSx1Q0FBdUMsQ0FBQztBQU0vQzs7R0FFRztBQU1IO0lBUUUscUNBQ1MsVUFBK0M7UUFBL0MsZUFBVSxHQUFWLFVBQVUsQ0FBcUM7SUFDckQsQ0FBQzs7Z0JBRGlCLG1DQUFtQzs7SUFIeEQ7UUFEQyxLQUFLLEVBQUU7NkRBQ3VCO0lBTnBCLDJCQUEyQjtRQUx2QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLHVuQkFBOEM7O1NBRS9DLENBQUM7T0FDVywyQkFBMkIsQ0FZdkM7SUFBRCxrQ0FBQztDQUFBLEFBWkQsSUFZQztTQVpZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50XG59IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyRGF0ZVxufSBmcm9tICcuL2RhdGVwaWNrZXItZGF0ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXlwaWNrZXItYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICdkYXlwaWNrZXItYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZGF0ZSB0aGlzIHBpY2tlciBidXR0b24gd2lsbCByZXByZXNlbnQgb24gdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGU6IFNreURhdGVwaWNrZXJEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudFxuICApIHt9XG5cbn1cbiJdfQ==
@@ -0,0 +1,134 @@
1
+ import { __decorate } from "tslib";
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import { SkyPopoverMessageType } from '@skyux/popovers';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { Subject } from 'rxjs';
6
+ import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
7
+ import { SkyDatepickerService } from './datepicker.service';
8
+ /**
9
+ * @internal
10
+ */
11
+ var SkyDayPickerCellComponent = /** @class */ (function () {
12
+ function SkyDayPickerCellComponent(datepicker, datepickerService) {
13
+ this.datepicker = datepicker;
14
+ this.datepickerService = datepickerService;
15
+ this.hasTooltip = false;
16
+ this.popoverController = new Subject();
17
+ this.activeUid = '';
18
+ this.cancelPopover = false;
19
+ this.popoverOpen = false;
20
+ this.ngUnsubscribe = new Subject();
21
+ }
22
+ SkyDayPickerCellComponent.prototype.ngOnInit = function () {
23
+ var _this = this;
24
+ this.hasTooltip =
25
+ this.date.keyDate &&
26
+ this.date.keyDateText &&
27
+ this.date.keyDateText.length > 0 &&
28
+ this.date.keyDateText[0].length > 0;
29
+ // show the tooltip if this is the active date and is not the
30
+ // initial active date (activeDateHasChanged)
31
+ if (this.datepicker.isActive(this.date) &&
32
+ this.activeDateHasChanged &&
33
+ this.hasTooltip) {
34
+ this.activeUid = this.date.uid;
35
+ this.showTooltip();
36
+ }
37
+ if (this.hasTooltip) {
38
+ this.datepickerService.keyDatePopoverStream
39
+ .pipe(takeUntil(this.ngUnsubscribe))
40
+ .subscribe(function (date) {
41
+ if (date) {
42
+ _this.activeUid = date.uid;
43
+ }
44
+ else {
45
+ _this.activeUid = '';
46
+ }
47
+ // If this day has an open popover and they have moved off of the day close the popover.
48
+ if (_this.date.uid !== _this.activeUid) {
49
+ _this.hideTooltip();
50
+ }
51
+ });
52
+ }
53
+ };
54
+ SkyDayPickerCellComponent.prototype.ngOnDestroy = function () {
55
+ this.ngUnsubscribe.next();
56
+ this.ngUnsubscribe.complete();
57
+ };
58
+ SkyDayPickerCellComponent.prototype.onDayMouseenter = function () {
59
+ this.cancelPopover = false;
60
+ if (this.hasTooltip) {
61
+ this.showTooltip();
62
+ this.datepickerService.keyDatePopoverStream.next(this.date);
63
+ }
64
+ };
65
+ SkyDayPickerCellComponent.prototype.onDayMouseleave = function () {
66
+ this.cancelPopover = true;
67
+ if (this.hasTooltip) {
68
+ this.hideTooltip();
69
+ }
70
+ this.datepickerService.keyDatePopoverStream.next(undefined);
71
+ };
72
+ SkyDayPickerCellComponent.prototype.onPopoverClosed = function () {
73
+ this.popoverOpen = false;
74
+ };
75
+ SkyDayPickerCellComponent.prototype.onPopoverOpened = function () {
76
+ this.popoverOpen = true;
77
+ /* istanbul ignore else */
78
+ if (this.cancelPopover) {
79
+ // If the popover gets opened just as a mouseout event happens, close it.
80
+ this.hideTooltip();
81
+ this.cancelPopover = false;
82
+ }
83
+ };
84
+ SkyDayPickerCellComponent.prototype.getKeyDateLabel = function () {
85
+ if (this.hasTooltip) {
86
+ return this.date.keyDateText.join(', ');
87
+ }
88
+ else {
89
+ return '';
90
+ }
91
+ };
92
+ SkyDayPickerCellComponent.prototype.hideTooltip = function () {
93
+ /* istanbul ignore else */
94
+ if (this.popoverOpen) {
95
+ this.popoverController.next({ type: SkyPopoverMessageType.Close });
96
+ }
97
+ };
98
+ SkyDayPickerCellComponent.prototype.showTooltip = function () {
99
+ var _this = this;
100
+ /* istanbul ignore else */
101
+ if (this.hasTooltip &&
102
+ !this.popoverOpen) {
103
+ /**
104
+ * Delay 1/2 second before opening the popover as long as mouse hasn't moved off the date.
105
+ */
106
+ setTimeout(function () {
107
+ if (!_this.cancelPopover &&
108
+ _this.activeUid === _this.date.uid) {
109
+ _this.popoverController.next({ type: SkyPopoverMessageType.Open });
110
+ }
111
+ }, 500);
112
+ }
113
+ };
114
+ SkyDayPickerCellComponent.ctorParameters = function () { return [
115
+ { type: SkyDatepickerCalendarInnerComponent },
116
+ { type: SkyDatepickerService }
117
+ ]; };
118
+ __decorate([
119
+ Input()
120
+ ], SkyDayPickerCellComponent.prototype, "activeDateHasChanged", void 0);
121
+ __decorate([
122
+ Input()
123
+ ], SkyDayPickerCellComponent.prototype, "date", void 0);
124
+ SkyDayPickerCellComponent = __decorate([
125
+ Component({
126
+ selector: 'sky-daypicker-cell',
127
+ template: "<div *ngIf=\"hasTooltip\"\n class=\"sky-daypicker-cell\"\n [attr.aria-label]=\"getKeyDateLabel()\"\n [skyPopover]=\"dayInfoPopover\"\n skyPopoverPlacement=\"left\"\n [skyPopoverMessageStream]=\"popoverController\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n>\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\"></ng-container>\n <sky-popover\n (popoverClosed)=\"onPopoverClosed()\"\n (popoverOpened)=\"onPopoverOpened()\"\n #dayInfoPopover\n >\n <div *ngFor=\"let text of date.keyDateText\">\n {{text}}\n </div>\n </sky-popover>\n</div>\n<div *ngIf=\"!hasTooltip\"\n class=\"sky-daypicker-cell\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n>\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\"></ng-container>\n</div>\n\n<ng-template #daypickerButtonTemplateRef>\n <sky-daypicker-button\n [date]=\"date\"\n >\n </sky-daypicker-button>\n</ng-template>\n",
128
+ changeDetection: ChangeDetectionStrategy.OnPush
129
+ })
130
+ ], SkyDayPickerCellComponent);
131
+ return SkyDayPickerCellComponent;
132
+ }());
133
+ export { SkyDayPickerCellComponent };
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNreXV4L2RhdGV0aW1lLyIsInNvdXJjZXMiOlsibW9kdWxlcy9kYXRlcGlja2VyL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFFTCxxQkFBcUIsRUFDdEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxtQ0FBbUMsRUFDcEMsTUFBTSx1Q0FBdUMsQ0FBQztBQU0vQyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUI7O0dBRUc7QUFNSDtJQTBCRSxtQ0FDVSxVQUErQyxFQUMvQyxpQkFBdUM7UUFEdkMsZUFBVSxHQUFWLFVBQVUsQ0FBcUM7UUFDL0Msc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQWQxQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO1FBRXBELGNBQVMsR0FBVyxFQUFFLENBQUM7UUFFdkIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0IsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0Isa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBS3pDLENBQUM7SUFFRyw0Q0FBUSxHQUFmO1FBQUEsaUJBa0NDO1FBakNDLElBQUksQ0FBQyxVQUFVO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRXRDLDZEQUE2RDtRQUM3RCw2Q0FBNkM7UUFDN0MsSUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxvQkFBb0I7WUFDekIsSUFBSSxDQUFDLFVBQVUsRUFDZjtZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0I7aUJBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUNuQyxTQUFTLENBQUMsVUFBQSxJQUFJO2dCQUNiLElBQUksSUFBSSxFQUFFO29CQUNSLEtBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDM0I7cUJBQU07b0JBQ0wsS0FBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7aUJBQ3JCO2dCQUNELHdGQUF3RjtnQkFDeEYsSUFBSSxLQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxLQUFJLENBQUMsU0FBUyxFQUFFO29CQUNwQyxLQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUVILENBQUM7SUFFTSwrQ0FBVyxHQUFsQjtRQUNFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sbURBQWUsR0FBdEI7UUFDRSxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVNLG1EQUFlLEdBQXRCO1FBQ0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLG1EQUFlLEdBQXRCO1FBQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVNLG1EQUFlLEdBQXRCO1FBQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0Qix5RUFBeUU7WUFDekUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVNLG1EQUFlLEdBQXRCO1FBQ0UsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pDO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVPLCtDQUFXLEdBQW5CO1FBQ0UsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDcEU7SUFDSCxDQUFDO0lBRU8sK0NBQVcsR0FBbkI7UUFBQSxpQkFrQkM7UUFqQkMsMEJBQTBCO1FBQzFCLElBQ0UsSUFBSSxDQUFDLFVBQVU7WUFDZixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ2pCO1lBQ0E7O2VBRUc7WUFDSCxVQUFVLENBQUM7Z0JBQ1QsSUFDRSxDQUFDLEtBQUksQ0FBQyxhQUFhO29CQUNuQixLQUFJLENBQUMsU0FBUyxLQUFLLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUNoQztvQkFDQSxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ25FO1lBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDOztnQkE1R3FCLG1DQUFtQztnQkFDNUIsb0JBQW9COztJQXRCakQ7UUFEQyxLQUFLLEVBQUU7MkVBQzZCO0lBTXJDO1FBREMsS0FBSyxFQUFFOzJEQUN1QjtJQVpwQix5QkFBeUI7UUFMckMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixrK0JBQTRDO1lBQzVDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1NBQ2hELENBQUM7T0FDVyx5QkFBeUIsQ0F3SXJDO0lBQUQsZ0NBQUM7Q0FBQSxBQXhJRCxJQXdJQztTQXhJWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreVBvcG92ZXJNZXNzYWdlLFxuICBTa3lQb3BvdmVyTWVzc2FnZVR5cGVcbn0gZnJvbSAnQHNreXV4L3BvcG92ZXJzJztcblxuaW1wb3J0IHtcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnRcbn0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreURhdGVwaWNrZXJEYXRlXG59IGZyb20gJy4vZGF0ZXBpY2tlci1kYXRlJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlclNlcnZpY2Vcbn0gZnJvbSAnLi9kYXRlcGlja2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF5cGlja2VyLWNlbGwnLFxuICB0ZW1wbGF0ZVVybDogJ2RheXBpY2tlci1jZWxsLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGlmIHRoZSBhY3RpdmUgZGF0ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjdGl2ZURhdGVIYXNDaGFuZ2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGRhdGUgdGhpcyBwaWNrZXIgY2VsbCB3aWxsIHJlcHJlc2VudCBvbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0ZTogU2t5RGF0ZXBpY2tlckRhdGU7XG5cbiAgcHVibGljIGhhc1Rvb2x0aXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgcG9wb3ZlckNvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lQb3BvdmVyTWVzc2FnZT4oKTtcblxuICBwcml2YXRlIGFjdGl2ZVVpZDogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBjYW5jZWxQb3BvdmVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBwb3BvdmVyT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBkYXRlcGlja2VyU2VydmljZTogU2t5RGF0ZXBpY2tlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc1Rvb2x0aXAgPVxuICAgICAgdGhpcy5kYXRlLmtleURhdGUgJiZcbiAgICAgIHRoaXMuZGF0ZS5rZXlEYXRlVGV4dCAmJlxuICAgICAgdGhpcy5kYXRlLmtleURhdGVUZXh0Lmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuZGF0ZS5rZXlEYXRlVGV4dFswXS5sZW5ndGggPiAwO1xuXG4gICAgLy8gc2hvdyB0aGUgdG9vbHRpcCBpZiB0aGlzIGlzIHRoZSBhY3RpdmUgZGF0ZSBhbmQgaXMgbm90IHRoZVxuICAgIC8vIGluaXRpYWwgYWN0aXZlIGRhdGUgKGFjdGl2ZURhdGVIYXNDaGFuZ2VkKVxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5pc0FjdGl2ZSh0aGlzLmRhdGUpICYmXG4gICAgICB0aGlzLmFjdGl2ZURhdGVIYXNDaGFuZ2VkICYmXG4gICAgICB0aGlzLmhhc1Rvb2x0aXBcbiAgICApIHtcbiAgICAgIHRoaXMuYWN0aXZlVWlkID0gdGhpcy5kYXRlLnVpZDtcbiAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNUb29sdGlwKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLmtleURhdGVQb3BvdmVyU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoZGF0ZSA9PiB7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVVaWQgPSBkYXRlLnVpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVVpZCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoaXMgZGF5IGhhcyBhbiBvcGVuIHBvcG92ZXIgYW5kIHRoZXkgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhlIGRheSBjbG9zZSB0aGUgcG9wb3Zlci5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZS51aWQgIT09IHRoaXMuYWN0aXZlVWlkKSB7XG4gICAgICAgICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRGF5TW91c2VlbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhbmNlbFBvcG92ZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5oYXNUb29sdGlwKSB7XG4gICAgICB0aGlzLnNob3dUb29sdGlwKCk7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLmtleURhdGVQb3BvdmVyU3RyZWFtLm5leHQodGhpcy5kYXRlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25EYXlNb3VzZWxlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsUG9wb3ZlciA9IHRydWU7XG4gICAgaWYgKHRoaXMuaGFzVG9vbHRpcCkge1xuICAgICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgIH1cbiAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLmtleURhdGVQb3BvdmVyU3RyZWFtLm5leHQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBvcG92ZXJDbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uUG9wb3Zlck9wZW5lZCgpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXJPcGVuID0gdHJ1ZTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmNhbmNlbFBvcG92ZXIpIHtcbiAgICAgIC8vIElmIHRoZSBwb3BvdmVyIGdldHMgb3BlbmVkIGp1c3QgYXMgYSBtb3VzZW91dCBldmVudCBoYXBwZW5zLCBjbG9zZSBpdC5cbiAgICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICAgIHRoaXMuY2FuY2VsUG9wb3ZlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRLZXlEYXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oYXNUb29sdGlwKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlLmtleURhdGVUZXh0LmpvaW4oJywgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVUb29sdGlwKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucG9wb3Zlck9wZW4pIHtcbiAgICAgIHRoaXMucG9wb3ZlckNvbnRyb2xsZXIubmV4dCh7IHR5cGU6IFNreVBvcG92ZXJNZXNzYWdlVHlwZS5DbG9zZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUb29sdGlwKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKFxuICAgICAgdGhpcy5oYXNUb29sdGlwICYmXG4gICAgICAhdGhpcy5wb3BvdmVyT3BlblxuICAgICkge1xuICAgICAgLyoqXG4gICAgICAgKiBEZWxheSAxLzIgc2Vjb25kIGJlZm9yZSBvcGVuaW5nIHRoZSBwb3BvdmVyIGFzIGxvbmcgYXMgbW91c2UgaGFzbid0IG1vdmVkIG9mZiB0aGUgZGF0ZS5cbiAgICAgICAqL1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5jYW5jZWxQb3BvdmVyICYmXG4gICAgICAgICAgdGhpcy5hY3RpdmVVaWQgPT09IHRoaXMuZGF0ZS51aWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5uZXh0KHsgdHlwZTogU2t5UG9wb3Zlck1lc3NhZ2VUeXBlLk9wZW4gfSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDUwMCk7XG4gICAgfVxuICB9XG59XG4iXX0=