@skyux/datetime 6.0.0-beta.1 → 6.0.0-beta.4

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 (39) hide show
  1. package/documentation.json +570 -651
  2. package/esm2020/lib/modules/date-pipe/date-pipe.module.mjs +4 -4
  3. package/esm2020/lib/modules/date-pipe/date.pipe.mjs +3 -3
  4. package/esm2020/lib/modules/date-pipe/fuzzy-date.pipe.mjs +3 -3
  5. package/esm2020/lib/modules/date-range-picker/date-range-picker.component.mjs +12 -23
  6. package/esm2020/lib/modules/date-range-picker/date-range-picker.module.mjs +4 -4
  7. package/esm2020/lib/modules/date-range-picker/date-range.service.mjs +3 -3
  8. package/esm2020/lib/modules/date-range-picker/types/date-range-calculator.mjs +1 -4
  9. package/esm2020/lib/modules/datepicker/datepicker-adapter.service.mjs +3 -3
  10. package/esm2020/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +3 -3
  11. package/esm2020/lib/modules/datepicker/datepicker-calendar.component.mjs +5 -5
  12. package/esm2020/lib/modules/datepicker/datepicker-config.service.mjs +3 -3
  13. package/esm2020/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +4 -6
  14. package/esm2020/lib/modules/datepicker/datepicker-input.directive.mjs +4 -6
  15. package/esm2020/lib/modules/datepicker/datepicker.component.mjs +3 -3
  16. package/esm2020/lib/modules/datepicker/datepicker.module.mjs +4 -4
  17. package/esm2020/lib/modules/datepicker/datepicker.service.mjs +3 -3
  18. package/esm2020/lib/modules/datepicker/daypicker-button.component.mjs +3 -3
  19. package/esm2020/lib/modules/datepicker/daypicker-cell.component.mjs +3 -3
  20. package/esm2020/lib/modules/datepicker/daypicker.component.mjs +3 -3
  21. package/esm2020/lib/modules/datepicker/fuzzy-date.service.mjs +4 -5
  22. package/esm2020/lib/modules/datepicker/monthpicker.component.mjs +3 -3
  23. package/esm2020/lib/modules/datepicker/yearpicker.component.mjs +3 -3
  24. package/esm2020/lib/modules/shared/sky-datetime-resources.module.mjs +4 -4
  25. package/esm2020/lib/modules/timepicker/timepicker.component.mjs +3 -3
  26. package/esm2020/lib/modules/timepicker/timepicker.directive.mjs +4 -6
  27. package/esm2020/lib/modules/timepicker/timepicker.module.mjs +4 -4
  28. package/esm2020/testing/datepicker-fixture.mjs +1 -2
  29. package/fesm2015/skyux-datetime-testing.mjs +0 -1
  30. package/fesm2015/skyux-datetime-testing.mjs.map +1 -1
  31. package/fesm2015/skyux-datetime.mjs +83 -102
  32. package/fesm2015/skyux-datetime.mjs.map +1 -1
  33. package/fesm2020/skyux-datetime-testing.mjs +0 -1
  34. package/fesm2020/skyux-datetime-testing.mjs.map +1 -1
  35. package/fesm2020/skyux-datetime.mjs +83 -102
  36. package/fesm2020/skyux-datetime.mjs.map +1 -1
  37. package/lib/modules/date-range-picker/date-range-picker.component.d.ts +2 -6
  38. package/lib/modules/datepicker/datepicker-calendar.component.d.ts +1 -1
  39. package/package.json +28 -25
@@ -13,9 +13,9 @@ export class SkyDatepickerService {
13
13
  this.keyDatePopoverStream = new Subject();
14
14
  }
15
15
  }
16
- SkyDatepickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDatepickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
- SkyDatepickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDatepickerService });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDatepickerService, decorators: [{
16
+ SkyDatepickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
+ SkyDatepickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerService });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatepickerService, decorators: [{
19
19
  type: Injectable
20
20
  }] });
21
21
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSS9COztHQUVHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjtJQURqQztRQUVFOzs7V0FHRztRQUNJLHlCQUFvQixHQUN6QixJQUFJLE9BQU8sRUFBcUIsQ0FBQztLQUNwQzs7aUhBUFksb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXRlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBpZiBhIGtleSBkYXRlIHBvcG92ZXIgaXMgY3VycmVudGx5IGRpc3BsYXllZC5cbiAgICogVXNlZnVsIGZvciBjb21tdW5pY2F0aW5nIGFjcm9zcyBhbGwgZGF5cGlja2VyIHNpYmxpbmdzIHdoZW4gYSBwb3BvdmVyIGlzIGRpc3BsYXllZC5cbiAgICovXG4gIHB1YmxpYyBrZXlEYXRlUG9wb3ZlclN0cmVhbTogU3ViamVjdDxTa3lEYXRlcGlja2VyRGF0ZT4gPVxuICAgIG5ldyBTdWJqZWN0PFNreURhdGVwaWNrZXJEYXRlPigpO1xufVxuIl19
@@ -11,9 +11,9 @@ export class SkyDayPickerButtonComponent {
11
11
  this.datepicker = datepicker;
12
12
  }
13
13
  }
14
- SkyDayPickerButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDayPickerButtonComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
15
- SkyDayPickerButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyDayPickerButtonComponent, selector: "sky-daypicker-button", inputs: { date: "date" }, ngImport: i0, 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 [ngClass]=\"{ 'sky-datepicker-secondary': date.secondary }\">\n {{ date.label }}\n </span>\n</button>\n", 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}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDayPickerButtonComponent, decorators: [{
14
+ SkyDayPickerButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDayPickerButtonComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
15
+ SkyDayPickerButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDayPickerButtonComponent, selector: "sky-daypicker-button", inputs: { date: "date" }, ngImport: i0, 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 [ngClass]=\"{ 'sky-datepicker-secondary': date.secondary }\">\n {{ date.label }}\n </span>\n</button>\n", 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}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDayPickerButtonComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'sky-daypicker-button', 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 [ngClass]=\"{ 'sky-datepicker-secondary': date.secondary }\">\n {{ date.label }}\n </span>\n</button>\n", 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}\n"] }]
19
19
  }], ctorParameters: function () { return [{ type: i1.SkyDatepickerCalendarInnerComponent }]; }, propDecorators: { date: [{
@@ -113,9 +113,9 @@ export class SkyDayPickerCellComponent {
113
113
  }
114
114
  }
115
115
  }
116
- SkyDayPickerCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDayPickerCellComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }, { token: i2.SkyDatepickerService }], target: i0.ɵɵFactoryTarget.Component });
117
- SkyDayPickerCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: { activeDateHasChanged: "activeDateHasChanged", date: "date" }, ngImport: i0, template: "<div\n *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\n *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 [date]=\"date\"> </sky-daypicker-button>\n</ng-template>\n", components: [{ type: i3.λ6, selector: "sky-popover", inputs: ["alignment", "dismissOnBlur", "placement", "popoverTitle", "popoverType"], outputs: ["popoverClosed", "popoverOpened"] }, { type: i4.SkyDayPickerButtonComponent, selector: "sky-daypicker-button", inputs: ["date"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDayPickerCellComponent, decorators: [{
116
+ SkyDayPickerCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDayPickerCellComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }, { token: i2.SkyDatepickerService }], target: i0.ɵɵFactoryTarget.Component });
117
+ SkyDayPickerCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: { activeDateHasChanged: "activeDateHasChanged", date: "date" }, ngImport: i0, template: "<div\n *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\n *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 [date]=\"date\"> </sky-daypicker-button>\n</ng-template>\n", components: [{ type: i3.λ6, selector: "sky-popover", inputs: ["alignment", "dismissOnBlur", "placement", "popoverTitle", "popoverType"], outputs: ["popoverClosed", "popoverOpened"] }, { type: i4.SkyDayPickerButtonComponent, selector: "sky-daypicker-button", inputs: ["date"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDayPickerCellComponent, decorators: [{
119
119
  type: Component,
120
120
  args: [{ selector: 'sky-daypicker-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *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\n *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 [date]=\"date\"> </sky-daypicker-button>\n</ng-template>\n" }]
121
121
  }], ctorParameters: function () { return [{ type: i1.SkyDatepickerCalendarInnerComponent }, { type: i2.SkyDatepickerService }]; }, propDecorators: { activeDateHasChanged: [{
@@ -196,9 +196,9 @@ export class SkyDayPickerComponent {
196
196
  }
197
197
  }
198
198
  }
199
- SkyDayPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDayPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
200
- SkyDayPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyDayPickerComponent, selector: "sky-daypicker", inputs: { customDates: "customDates", isWaiting: "isWaiting" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange" }, ngImport: i0, template: "<div *ngIf=\"datepicker.datepickerMode === 'day'\" class=\"sky-daypicker-wrapper\">\n <table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId + '-title'\"\n >\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th scope=\"col\" [attr.colspan]=\"5\">\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled':\n datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let label of labels\"\n class=\"sky-datepicker-center sky-datepicker-weekdays\"\n >\n <small [attr.aria-label]=\"label.full\">\n <b>{{ label.abbr }}</b>\n </small>\n </th>\n </tr>\n </thead>\n <tbody>\n <!-- Wait indicator for async custom date stream -->\n <sky-wait [isWaiting]=\"isWaiting\"> </sky-wait>\n <ng-template ngFor [ngForOf]=\"rows\" let-row=\"$implicit\" let-index=\"index\">\n <tr role=\"row\">\n <td\n *ngFor=\"let date of row\"\n class=\"sky-datepicker-center\"\n role=\"gridcell\"\n [id]=\"date.uid\"\n >\n <sky-daypicker-cell\n [activeDateHasChanged]=\"activeDateHasChanged\"\n [date]=\"date\"\n >\n </sky-daypicker-cell>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n</div>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i2.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking"] }, { type: i3.SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: ["activeDateHasChanged", "date"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDayPickerComponent, decorators: [{
199
+ SkyDayPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDayPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
200
+ SkyDayPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDayPickerComponent, selector: "sky-daypicker", inputs: { customDates: "customDates", isWaiting: "isWaiting" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange" }, ngImport: i0, template: "<div *ngIf=\"datepicker.datepickerMode === 'day'\" class=\"sky-daypicker-wrapper\">\n <table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId + '-title'\"\n >\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th scope=\"col\" [attr.colspan]=\"5\">\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled':\n datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let label of labels\"\n class=\"sky-datepicker-center sky-datepicker-weekdays\"\n >\n <small [attr.aria-label]=\"label.full\">\n <b>{{ label.abbr }}</b>\n </small>\n </th>\n </tr>\n </thead>\n <tbody>\n <!-- Wait indicator for async custom date stream -->\n <sky-wait [isWaiting]=\"isWaiting\"> </sky-wait>\n <ng-template ngFor [ngForOf]=\"rows\" let-row=\"$implicit\" let-index=\"index\">\n <tr role=\"row\">\n <td\n *ngFor=\"let date of row\"\n class=\"sky-datepicker-center\"\n role=\"gridcell\"\n [id]=\"date.uid\"\n >\n <sky-daypicker-cell\n [activeDateHasChanged]=\"activeDateHasChanged\"\n [date]=\"date\"\n >\n </sky-daypicker-cell>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n</div>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i2.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking"] }, { type: i3.SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: ["activeDateHasChanged", "date"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDayPickerComponent, decorators: [{
202
202
  type: Component,
203
203
  args: [{ selector: 'sky-daypicker', template: "<div *ngIf=\"datepicker.datepickerMode === 'day'\" class=\"sky-daypicker-wrapper\">\n <table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId + '-title'\"\n >\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th scope=\"col\" [attr.colspan]=\"5\">\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled':\n datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let label of labels\"\n class=\"sky-datepicker-center sky-datepicker-weekdays\"\n >\n <small [attr.aria-label]=\"label.full\">\n <b>{{ label.abbr }}</b>\n </small>\n </th>\n </tr>\n </thead>\n <tbody>\n <!-- Wait indicator for async custom date stream -->\n <sky-wait [isWaiting]=\"isWaiting\"> </sky-wait>\n <ng-template ngFor [ngForOf]=\"rows\" let-row=\"$implicit\" let-index=\"index\">\n <tr role=\"row\">\n <td\n *ngFor=\"let date of row\"\n class=\"sky-datepicker-center\"\n role=\"gridcell\"\n [id]=\"date.uid\"\n >\n <sky-daypicker-cell\n [activeDateHasChanged]=\"activeDateHasChanged\"\n [date]=\"date\"\n >\n </sky-daypicker-cell>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n</div>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"] }]
204
204
  }], ctorParameters: function () { return [{ type: i1.SkyDatepickerCalendarInnerComponent }]; }, propDecorators: { customDates: [{
@@ -57,7 +57,6 @@ export class SkyFuzzyDateService {
57
57
  const token = formatTokens[index];
58
58
  /* istanbul ignore else */
59
59
  if (token) {
60
- // tslint:disable-next-line: switch-default
61
60
  switch (token.substr(0, 1).toLowerCase()) {
62
61
  case 'y':
63
62
  if (fuzzyDate.year) {
@@ -392,12 +391,12 @@ export class SkyFuzzyDateService {
392
391
  return true;
393
392
  }
394
393
  }
395
- SkyFuzzyDateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyFuzzyDateService, deps: [{ token: i1.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Injectable });
396
- SkyFuzzyDateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyFuzzyDateService, providedIn: 'root' });
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyFuzzyDateService, decorators: [{
394
+ SkyFuzzyDateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyFuzzyDateService, deps: [{ token: i1.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Injectable });
395
+ SkyFuzzyDateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyFuzzyDateService, providedIn: 'root' });
396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyFuzzyDateService, decorators: [{
398
397
  type: Injectable,
399
398
  args: [{
400
399
  providedIn: 'root',
401
400
  }]
402
401
  }], ctorParameters: function () { return [{ type: i1.SkyAppLocaleProvider }]; } });
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2Z1enp5LWRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQXVCM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQW9CLGNBQW9DO1FBQXBDLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQUZoRCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFHMUMsSUFBSSxDQUFDLGNBQWM7YUFDaEIsYUFBYSxFQUFFO2FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDBCQUEwQjtJQUNuQixXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7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QUM7O2dIQWxkVSxtQkFBbUI7b0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZ1enp5RGF0ZSB9IGZyb20gJy4vZnV6enktZGF0ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lEYXRlSW5kZXhlcyB7XG4gIHllYXJJbmRleDogbnVtYmVyO1xuICBtb250aEluZGV4OiBudW1iZXI7XG4gIGRheUluZGV4OiBudW1iZXI7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lGdXp6eURhdGVSYW5nZSB7XG4gIHllYXJzOiBzdHJpbmc7XG4gIG1vbnRoczogc3RyaW5nO1xuICBkYXlzOiBzdHJpbmc7XG4gIHZhbGlkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RnV6enlEYXRlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY3VycmVudExvY2FsZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NhbGVQcm92aWRlcjogU2t5QXBwTG9jYWxlUHJvdmlkZXIpIHtcbiAgICB0aGlzLmxvY2FsZVByb3ZpZGVyXG4gICAgICAuZ2V0TG9jYWxlSW5mbygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZUluZm8pID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJyb3dzZXIncyBjdXJyZW50IGxvY2FsZSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudExvY2FsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRMb2NhbGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2hvcnQgZm9ybWF0IG9mIHRoZSBwcm92aWRlZCBsb2NhbGUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgdGhlIGxvY2FsZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIGJyb3dzZXIncyBkZWZhdWx0IGxvY2FsZS5cbiAgICovXG4gIHB1YmxpYyBnZXRMb2NhbGVTaG9ydEZvcm1hdChsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb21lbnQubG9jYWxlRGF0YShsb2NhbGUgfHwgdGhpcy5jdXJyZW50TG9jYWxlKS5sb25nRGF0ZUZvcm1hdCgnTCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgYSBmdXp6eSBkYXRlIGJ5IHVzaW5nIHRoZSBwcm92aWRlZCBmb3JtYXQgYW5kIGxvY2FsZSBzdHJpbmdzLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBsb2NhbGUgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBicm93c2VyJ3MgZGVmYXVsdCBsb2NhbGUuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0KFxuICAgIGZ1enp5RGF0ZTogU2t5RnV6enlEYXRlLFxuICAgIGZvcm1hdDogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5pc0Z1enp5RGF0ZVZhbGlkKGZ1enp5RGF0ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoIWZvcm1hdCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZ2V0RGF0ZVNlcGFyYXRvcihmb3JtYXQpO1xuICAgIGNvbnN0IGRhdGVQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBmb3JtYXRUb2tlbnM6IHN0cmluZ1tdID0gZm9ybWF0LnNwbGl0KHNlcGFyYXRvcik7XG4gICAgbG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuY3VycmVudExvY2FsZTtcbiAgICBjb25zdCBmdXp6eURhdGVNb21lbnQgPVxuICAgICAgdGhpcy5nZXRNb21lbnRGcm9tRnV6enlEYXRlKGZ1enp5RGF0ZSkubG9jYWxlKGxvY2FsZSk7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZm9ybWF0VG9rZW5zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgdG9rZW4gPSBmb3JtYXRUb2tlbnNbaW5kZXhdO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogc3dpdGNoLWRlZmF1bHRcbiAgICAgICAgc3dpdGNoICh0b2tlbi5zdWJzdHIoMCwgMSkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgaWYgKGZ1enp5RGF0ZS55ZWFyKSB7XG4gICAgICAgICAgICAgIGRhdGVQYXJ0cy5wdXNoKGZ1enp5RGF0ZU1vbWVudC5mb3JtYXQodG9rZW4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgaWYgKGZ1enp5RGF0ZS5tb250aCkge1xuICAgICAgICAgICAgICBkYXRlUGFydHMucHVzaChmdXp6eURhdGVNb21lbnQuZm9ybWF0KHRva2VuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIGlmIChmdXp6eURhdGUuZGF5KSB7XG4gICAgICAgICAgICAgIGRhdGVQYXJ0cy5wdXNoKGZ1enp5RGF0ZU1vbWVudC5mb3JtYXQodG9rZW4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGVQYXJ0cy5qb2luKHNlcGFyYXRvcik7XG4gIH1cblxuICAvKipcbiAgICogSWYgbm90IHByb3ZpZGVkLCB5ZWFycyB3aWxsIGRlZmF1bHQgdG8gY3VycmVudCB5ZWFyOyBtb250aHMgd2lsbCBkZWZhdWx0IHRvIEphbnVhcnk7XG4gICAqIGRheXMgd2lsbCBkZWZhdWx0IHRvIDFzdCBvZiB0aGUgbW9udGguXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShmdXp6eURhdGU6IFNreUZ1enp5RGF0ZSk6IGFueSB7XG4gICAgaWYgKCFmdXp6eURhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB5ZWFyID0gZnV6enlEYXRlLnllYXIgfHwgdGhpcy5nZXREZWZhdWx0WWVhcihmdXp6eURhdGUpO1xuICAgIGNvbnN0IG1vbnRoID0gZnV6enlEYXRlLm1vbnRoID4gMCA/IGZ1enp5RGF0ZS5tb250aCAtIDEgOiAwO1xuICAgIGNvbnN0IGRheSA9IGZ1enp5RGF0ZS5kYXkgfHwgMTtcblxuICAgIHJldHVybiBtb21lbnQoW3llYXIsIG1vbnRoLCBkYXldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgc3RyaW5nIGluc3RhbmNlIG9mIGEgZnV6enkgZGF0ZS5cbiAgICogQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUgYGZvcm1hdGAgZnVuY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0U3RyaW5nRnJvbUZ1enp5RGF0ZShcbiAgICBmdXp6eURhdGU6IFNreUZ1enp5RGF0ZSxcbiAgICBkYXRlRm9ybWF0OiBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIWZ1enp5RGF0ZSB8fCAhZGF0ZUZvcm1hdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZ2V0RGF0ZVNlcGFyYXRvcihkYXRlRm9ybWF0KTtcbiAgICBjb25zdCBkYXRlRm9ybWF0SW5kZXhlcyA9IHRoaXMuZ2V0RGF0ZUZvcm1hdEluZGV4ZXMoZGF0ZUZvcm1hdCk7XG4gICAgbGV0IGRhdGVTdHJpbmcgPSAnJztcblxuICAgIC8vIEdldCB0aGUgY29tcG9uZW50cyBvZiB0aGUgZGF0ZSBpbiB0aGUgb3JkZXIgZXhwZWN0ZWQgb2YgdGhlIGxvY2FsIGZvcm1hdC5cbiAgICBjb25zdCBkYXRlQ29tcG9uZW50cyA9IFtcbiAgICAgIHsgdmFsdWU6IGZ1enp5RGF0ZS55ZWFyIHx8IDAsIGluZGV4OiBkYXRlRm9ybWF0SW5kZXhlcy55ZWFySW5kZXggfSxcbiAgICAgIHsgdmFsdWU6IGZ1enp5RGF0ZS5tb250aCB8fCAwLCBpbmRleDogZGF0ZUZvcm1hdEluZGV4ZXMubW9udGhJbmRleCB9LFxuICAgICAgeyB2YWx1ZTogZnV6enlEYXRlLmRheSB8fCAwLCBpbmRleDogZGF0ZUZvcm1hdEluZGV4ZXMuZGF5SW5kZXggfSxcbiAgICBdO1xuICAgIGRhdGVDb21wb25lbnRzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG5cbiAgICBkYXRlQ29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnQpID0+IHtcbiAgICAgIGlmIChjb21wb25lbnQudmFsdWUgPiAwICYmIGNvbXBvbmVudC5pbmRleCA+IC0xKSB7XG4gICAgICAgIGlmIChkYXRlU3RyaW5nKSB7XG4gICAgICAgICAgZGF0ZVN0cmluZyArPSBzZXBhcmF0b3I7XG4gICAgICAgIH1cbiAgICAgICAgZGF0ZVN0cmluZyArPSBjb21wb25lbnQudmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRlU3RyaW5nLnRyaW0oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGdXp6eURhdGVGcm9tU2VsZWN0ZWREYXRlKFxuICAgIHNlbGVjdGVkRGF0ZTogRGF0ZSxcbiAgICBkYXRlRm9ybWF0OiBzdHJpbmdcbiAgKTogU2t5RnV6enlEYXRlIHtcbiAgICBpZiAoIXNlbGVjdGVkRGF0ZSB8fCAhZGF0ZUZvcm1hdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1enp5RGF0ZTogU2t5RnV6enlEYXRlID0ge307XG4gICAgY29uc3QgZGF0ZUZvcm1hdEluZGV4ZXMgPSB0aGlzLmdldERhdGVGb3JtYXRJbmRleGVzKGRhdGVGb3JtYXQpO1xuXG4gICAgaWYgKGRhdGVGb3JtYXRJbmRleGVzLnllYXJJbmRleCA+IC0xKSB7XG4gICAgICBmdXp6eURhdGUueWVhciA9IHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy5kYXlJbmRleCA+IC0xKSB7XG4gICAgICBmdXp6eURhdGUuZGF5ID0gc2VsZWN0ZWREYXRlLmdldERhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0ZUZvcm1hdEluZGV4ZXMubW9udGhJbmRleCA+IC0xKSB7XG4gICAgICBmdXp6eURhdGUubW9udGggPSBzZWxlY3RlZERhdGUuZ2V0TW9udGgoKSArIDE7IC8vIGdldE1vbnRoKCkgaXMgMC1pbmRleGVkLlxuICAgIH1cblxuICAgIHJldHVybiBmdXp6eURhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnV6enlEYXRlRnJvbVN0cmluZyhcbiAgICBkYXRlOiBzdHJpbmcsXG4gICAgZGF0ZUZvcm1hdDogc3RyaW5nXG4gICk6IFNreUZ1enp5RGF0ZSB7XG4gICAgaWYgKCFkYXRlIHx8ICFkYXRlRm9ybWF0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGRheTogYW55O1xuICAgIGxldCBtb250aDogYW55O1xuICAgIGxldCB5ZWFyOiBhbnk7XG5cbiAgICBjb25zdCBkYXRlQ29tcG9uZW50cyA9IHRoaXMuZ2V0RGF0ZUNvbXBvbmVudHMoZGF0ZSk7XG4gICAgY29uc3QgaW5kZXhlcyA9IHRoaXMuZ2V0RGF0ZVZhbHVlSW5kZXhlcyhkYXRlLCBkYXRlRm9ybWF0KTtcblxuICAgIC8vIExvb2sgYXQgdGhlIGRhdGUgc3RyaW5nJ3MgY29tcG9uZW50IGNvdW50OlxuICAgIC8vIDMgaW5kaWNhdGVzIGEgZnVsbCBkYXRlXG4gICAgLy8gMiBpbmRpY2F0ZXMgYSBtb250aC15ZWFyIG9yIG1vbnRoLWRheSBkYXRlXG4gICAgLy8gMSBpbmRpY2F0ZXMgYSB5ZWFyXG4gICAgLy8gT3RoZXIgaW5kaWNhdGVzIGEgcHJvYmxlbVxuICAgIHN3aXRjaCAoZGF0ZUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHllYXIgPSBkYXRlQ29tcG9uZW50c1tpbmRleGVzLnllYXJJbmRleF07XG4gICAgICAgIG1vbnRoID0gZGF0ZUNvbXBvbmVudHNbaW5kZXhlcy5tb250aEluZGV4XTtcbiAgICAgICAgZGF5ID0gZGF0ZUNvbXBvbmVudHNbaW5kZXhlcy5kYXlJbmRleF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICAvLyBGaXJzdCwgY2hlY2sgZm9yIGEgNC1kaWdpdCB5ZWFyLiBJZiB5ZWFyIGV4aXN0cywgdGhlbiB3ZSBhc3N1bWUgdGhlIG90aGVyIGNvbXBvbmVudFxuICAgICAgICAvLyBpcyB0aGUgbW9udGguIE90aGVyd2lzZSwgd2UgY2FuIGFzc3VtZSB0aGUgaW5wdXQgaXMgbW0vZGQgb3IgbW0veXkgKDItZGlnaXQgeWVhcikuXG4gICAgICAgIHllYXIgPSB0aGlzLmdldDREaWdpdFllYXJGcm9tRGF0ZVN0cmluZyhkYXRlKTtcbiAgICAgICAgaWYgKHllYXIpIHtcbiAgICAgICAgICBtb250aCA9XG4gICAgICAgICAgICBkYXRlQ29tcG9uZW50c1swXSA9PT0geWVhci50b1N0cmluZygpXG4gICAgICAgICAgICAgID8gZGF0ZUNvbXBvbmVudHNbMV1cbiAgICAgICAgICAgICAgOiBkYXRlQ29tcG9uZW50c1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaW5kZXhlcy5kYXlJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAvLyBtbS9kZFxuICAgICAgICAgICAgbW9udGggPVxuICAgICAgICAgICAgICBpbmRleGVzLm1vbnRoSW5kZXggPCBpbmRleGVzLmRheUluZGV4XG4gICAgICAgICAgICAgICAgPyBkYXRlQ29tcG9uZW50c1swXVxuICAgICAgICAgICAgICAgIDogZGF0ZUNvbXBvbmVudHNbMV07XG4gICAgICAgICAgICBkYXkgPVxuICAgICAgICAgICAgICBtb250aCA9PT0gZGF0ZUNvbXBvbmVudHNbMV1cbiAgICAgICAgICAgICAgICA/IGRhdGVDb21wb25lbnRzWzBdXG4gICAgICAgICAgICAgICAgOiBkYXRlQ29tcG9uZW50c1sxXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gbW0veXlcbiAgICAgICAgICAgIG1vbnRoID1cbiAgICAgICAgICAgICAgaW5kZXhlcy5tb250aEluZGV4IDwgaW5kZXhlcy55ZWFySW5kZXhcbiAgICAgICAgICAgICAgICA/IGRhdGVDb21wb25lbnRzWzBdXG4gICAgICAgICAgICAgICAgOiBkYXRlQ29tcG9uZW50c1sxXTtcbiAgICAgICAgICAgIHllYXIgPVxuICAgICAgICAgICAgICBtb250aCA9PT0gZGF0ZUNvbXBvbmVudHNbMV1cbiAgICAgICAgICAgICAgICA/IGRhdGVDb21wb25lbnRzWzBdXG4gICAgICAgICAgICAgICAgOiBkYXRlQ29tcG9uZW50c1sxXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHllYXIgPSBkYXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobW9udGgpIHtcbiAgICAgIC8vIENoZWNrIGlmIG1vbnRoIGlzIHZhbGlkLlxuICAgICAgbW9udGggPSB0aGlzLmdldE1vbnRoTnVtYmVyKG1vbnRoKTtcbiAgICAgIGlmIChtb250aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgZGF5IGlzIHZhbGlkLlxuICAgICAgaWYgKGRheSkge1xuICAgICAgICBkYXkgPSBwYXJzZUludChkYXksIDEwKTtcbiAgICAgICAgY29uc3QgZnV6enlNb21lbnQgPSB0aGlzLmdldE1vbWVudEZyb21GdXp6eURhdGUoe1xuICAgICAgICAgIG1vbnRoOiBtb250aCxcbiAgICAgICAgICBkYXk6IGRheSxcbiAgICAgICAgICB5ZWFyOiB5ZWFyLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzTmFOKGRheSkgfHwgIWZ1enp5TW9tZW50LmlzVmFsaWQoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh5ZWFyKSB7XG4gICAgICB5ZWFyID1cbiAgICAgICAgeWVhci50b1N0cmluZygpLmxlbmd0aCA9PT0gMlxuICAgICAgICAgID8gbW9tZW50LnBhcnNlVHdvRGlnaXRZZWFyKHllYXIpXG4gICAgICAgICAgOiBwYXJzZUludCh5ZWFyLnRvU3RyaW5nKCksIDEwKTtcbiAgICAgIGlmIChpc05hTih5ZWFyKSB8fCB5ZWFyLnRvU3RyaW5nKCkubGVuZ3RoICE9PSA0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgZGF5OiBkYXksXG4gICAgICB5ZWFyOiB5ZWFyLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0RnV6enlEYXRlUmFuZ2UoXG4gICAgc3RhcnRGdXp6eURhdGU6IFNreUZ1enp5RGF0ZSxcbiAgICBlbmRGdXp6eURhdGU6IFNreUZ1enp5RGF0ZVxuICApOiBTa3lGdXp6eURhdGVSYW5nZSB7XG4gICAgbGV0IHN0YXJ0O1xuICAgIGxldCBlbmQ7XG4gICAgbGV0IGRheXM7XG4gICAgbGV0IG1vbnRocztcbiAgICBsZXQgeWVhcnM7XG4gICAgbGV0IHZhbGlkID0gZmFsc2U7XG5cbiAgICBpZiAoXG4gICAgICBzdGFydEZ1enp5RGF0ZSAmJlxuICAgICAgc3RhcnRGdXp6eURhdGUueWVhciAmJlxuICAgICAgZW5kRnV6enlEYXRlICYmXG4gICAgICBlbmRGdXp6eURhdGUueWVhclxuICAgICkge1xuICAgICAgc3RhcnQgPSB0aGlzLmdldE1vbWVudEZyb21GdXp6eURhdGUoc3RhcnRGdXp6eURhdGUpO1xuICAgICAgZW5kID0gdGhpcy5nZXRNb21lbnRGcm9tRnV6enlEYXRlKGVuZEZ1enp5RGF0ZSk7XG5cbiAgICAgIHllYXJzID0gZW5kLmRpZmYoc3RhcnQsICd5ZWFycycpO1xuICAgICAgbW9udGhzID0gZW5kLmRpZmYoc3RhcnQsICdtb250aHMnKTtcbiAgICAgIGRheXMgPSBlbmQuZGlmZihzdGFydCwgJ2RheXMnKTtcbiAgICAgIHZhbGlkID0gZW5kLmRpZmYoc3RhcnQpID49IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXJzOiB5ZWFycyxcbiAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgZGF5czogZGF5cyxcbiAgICAgIHZhbGlkOiB2YWxpZCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbnRGdXp6eURhdGUoKTogU2t5RnV6enlEYXRlIHtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG1vbWVudCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRheTogY3VycmVudERhdGUuZGF0ZSgpLFxuICAgICAgbW9udGg6IGN1cnJlbnREYXRlLm1vbnRoKCkgKyAxLCAvLyBtb250aCgpIGlzIDAtaW5kZXhlZC5cbiAgICAgIHllYXI6IGN1cnJlbnREYXRlLnllYXIoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb3N0UmVjZW50TGVhcFllYXIoKTogbnVtYmVyIHtcbiAgICBsZXQgbGVhcFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG5cbiAgICB3aGlsZSAoIXRoaXMuaXNMZWFwWWVhcihsZWFwWWVhcikpIHtcbiAgICAgIGxlYXBZZWFyIC09IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxlYXBZZWFyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpcnN0IHNlcGFyYXRvciBmb3VuZCBpbiB0aGUgcHJvdmlkZWQgZGF0ZSBmb3JtYXQgc3RyaW5nLlxuICAgKiBBY2NlcHRlZCBzZXBhcmF0b3JzOiBbJy8nLCAnLicsICctJywgJyAnXS5cbiAgICogQHBhcmFtIGRhdGVGb3JtYXRcbiAgICovXG4gIHByaXZhdGUgZ2V0RGF0ZVNlcGFyYXRvcihkYXRlRm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByZXR1cm5WYWx1ZTogc3RyaW5nO1xuICAgIGNvbnN0IHNlcGFyYXRvcnMgPSBbJy8nLCAnLicsICctJywgJyAnXTtcblxuICAgIHNlcGFyYXRvcnMuZm9yRWFjaCgoc2VwYXJhdG9yKSA9PiB7XG4gICAgICBpZiAoIXJldHVyblZhbHVlICYmIGRhdGVGb3JtYXQuaW5kZXhPZihzZXBhcmF0b3IpID4gMCkge1xuICAgICAgICByZXR1cm5WYWx1ZSA9IHNlcGFyYXRvcjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0NERpZ2l0WWVhckZyb21EYXRlU3RyaW5nKGRhdGU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IHllYXI6IHN0cmluZztcbiAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLmdldERhdGVTZXBhcmF0b3IoZGF0ZSk7XG5cbiAgICAvLyBGaW5kIHRoZSBudW1iZXIgdmFsdWUgaW4gdGhlIHN0cmluZyB0aGF0IGlzIDQgZGlnaXRzIGxvbmcuXG4gICAgZGF0ZS5zcGxpdChzZXBhcmF0b3IpLmZvckVhY2goKGRhdGVDb21wb25lbnQpID0+IHtcbiAgICAgIGlmICgheWVhciAmJiBwYXJzZUludChkYXRlQ29tcG9uZW50LCAxMCkudG9TdHJpbmcoKS5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgeWVhciA9IGRhdGVDb21wb25lbnQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoeWVhciAmJiAhaXNOYU4oTnVtYmVyKHllYXIpKSkge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KHllYXIsIDEwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTGVhcFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb250aE51bWJlcihtb250aDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgcmV0dXJuVmFsdWU6IG51bWJlcjtcbiAgICBjb25zdCBtb250aEFzTnVtYmVyID0gcGFyc2VJbnQobW9udGgsIDEwKTtcblxuICAgIC8vIElmIHRoZSBtb250aCBjb21wb25lbnQgaXMgYSBzdHJpbmcgKFwiSmFuYXVyeVwiKSwgd2UgY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGEgdmFsaWQgbW9udGhcbiAgICBpZiAoaXNOYU4obW9udGhBc051bWJlcikpIHtcbiAgICAgIGlmICghbW9tZW50KG1vbnRoLCAnTU1NTScpLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50KG1vbWVudCgpLm1vbnRoKG1vbnRoKS5mb3JtYXQoJ00nKSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm5WYWx1ZSA9IG1vbnRoQXNOdW1iZXI7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoYXQgdGhlIG1vbnRoIGlzIGJldHdlZW4gMSBhbmQgMTJcbiAgICBpZiAoISgxIDw9IHJldHVyblZhbHVlICYmIHJldHVyblZhbHVlIDw9IDEyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFllYXIoZnV6enlEYXRlOiBTa3lGdXp6eURhdGUpOiBudW1iZXIge1xuICAgIC8vIENoZWNrIGlmIHdlIG5lZWQgdG8gcmV0dXJuIGEgbGVhcCB5ZWFyIG9yIHRoZSBjdXJyZW50IHllYXIuXG4gICAgaWYgKGZ1enp5RGF0ZS5tb250aCA9PT0gMiAmJiBmdXp6eURhdGUuZGF5ID09PSAyOSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9zdFJlY2VudExlYXBZZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXRlQ29tcG9uZW50cyhkYXRlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5nZXREYXRlU2VwYXJhdG9yKGRhdGUpO1xuICAgIHJldHVybiBkYXRlLnNwbGl0KHNlcGFyYXRvcik7XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBvcmRlciBvZiB5ZWFyLCBtb250aCwgYW5kIGRheSBmcm9tIHRoZSBwcm92aWRlZCBkYXRlIGZvcm1hdC5cbiAgcHJpdmF0ZSBnZXREYXRlRm9ybWF0SW5kZXhlcyhkYXRlRm9ybWF0OiBzdHJpbmcpOiBTa3lEYXRlSW5kZXhlcyB7XG4gICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4ge1xuICAgICAgeWVhckluZGV4OiBkYXRlRm9ybWF0LmluZGV4T2YoJ3knKSxcbiAgICAgIG1vbnRoSW5kZXg6IGRhdGVGb3JtYXQuaW5kZXhPZignbScpLFxuICAgICAgZGF5SW5kZXg6IGRhdGVGb3JtYXQuaW5kZXhPZignZCcpLFxuICAgIH07XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiBlYWNoIG9mIHRoZSBkYXRlIGNvbXBvbmVudHMgaW4gdGhlIHByb3ZpZGVkIHN0cmluZyAobW9udGgsIGRheSwgeWVhcikuXG4gIHByaXZhdGUgZ2V0RGF0ZVZhbHVlSW5kZXhlcyhcbiAgICBkYXRlOiBzdHJpbmcsXG4gICAgZGF0ZUZvcm1hdDogc3RyaW5nXG4gICk6IFNreURhdGVJbmRleGVzIHtcbiAgICBjb25zdCBkYXRlRm9ybWF0SW5kZXhlcyA9IHRoaXMuZ2V0RGF0ZUZvcm1hdEluZGV4ZXMoZGF0ZUZvcm1hdCk7XG4gICAgY29uc3QgZGF0ZUNvbXBvbmVudEluZGV4ZXMgPSBbXTtcbiAgICBpZiAoZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4ID4gLTEpIHtcbiAgICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnB1c2goZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAoZGF0ZUZvcm1hdEluZGV4ZXMubW9udGhJbmRleCA+IC0xKSB7XG4gICAgICBkYXRlQ29tcG9uZW50SW5kZXhlcy5wdXNoKGRhdGVGb3JtYXRJbmRleGVzLm1vbnRoSW5kZXgpO1xuICAgIH1cblxuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy5kYXlJbmRleCA+IC0xKSB7XG4gICAgICBkYXRlQ29tcG9uZW50SW5kZXhlcy5wdXNoKGRhdGVGb3JtYXRJbmRleGVzLmRheUluZGV4KTtcbiAgICB9XG5cbiAgICBkYXRlQ29tcG9uZW50SW5kZXhlcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgeWVhckluZGV4OiBkYXRlQ29tcG9uZW50SW5kZXhlcy5pbmRleE9mKGRhdGVGb3JtYXRJbmRleGVzLnllYXJJbmRleCksXG4gICAgICBtb250aEluZGV4OiBkYXRlQ29tcG9uZW50SW5kZXhlcy5pbmRleE9mKGRhdGVGb3JtYXRJbmRleGVzLm1vbnRoSW5kZXgpLFxuICAgICAgZGF5SW5kZXg6IGRhdGVDb21wb25lbnRJbmRleGVzLmluZGV4T2YoZGF0ZUZvcm1hdEluZGV4ZXMuZGF5SW5kZXgpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBwcm92aWRlZCBTa3lGdXp6eURhdGUgb2JqZWN0LiBWYWxpZCBmdXp6eSBkYXRlcyBhcmUgYXMgZm9sbG93czpcbiAgICogbW9udGgsIGRheSwgeWVhclxuICAgKiBtb250aCwgeWVhclxuICAgKiBtb250aCwgZGF5XG4gICAqIHllYXIgb25seVxuICAgKi9cbiAgcHJpdmF0ZSBpc0Z1enp5RGF0ZVZhbGlkKGZ1enp5RGF0ZTogU2t5RnV6enlEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFmdXp6eURhdGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJZiBub25lIG9mIHRoZSBkYXRlcyBwYXJ0IGFyZSBzcGVjaWZpZWQsIHJldHVybiBmYWxzZS5cbiAgICBpZiAoIWZ1enp5RGF0ZS5kYXkgJiYgIWZ1enp5RGF0ZS5tb250aCAmJiAhZnV6enlEYXRlLnllYXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJZiBvbmx5IG1vbnRoIGlzIHNwZWNpZmllZCwgcmV0dXJuIGZhbHNlLlxuICAgIGlmICghZnV6enlEYXRlLmRheSAmJiBmdXp6eURhdGUubW9udGggJiYgIWZ1enp5RGF0ZS55ZWFyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgb25seSBkYXkgaXMgc3BlY2lmaWVkLCByZXR1cm4gZmFsc2UuXG4gICAgaWYgKGZ1enp5RGF0ZS5kYXkgJiYgIWZ1enp5RGF0ZS5tb250aCAmJiAhZnV6enlEYXRlLnllYXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2Z1enp5LWRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQXVCM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQW9CLGNBQW9DO1FBQXBDLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQUZoRCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFHMUMsSUFBSSxDQUFDLGNBQWM7YUFDaEIsYUFBYSxFQUFFO2FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDBCQUEwQjtJQUNuQixXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7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QW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lBcHBMb2NhbGVQcm92aWRlciB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lGdXp6eURhdGUgfSBmcm9tICcuL2Z1enp5LWRhdGUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgU2t5RGF0ZUluZGV4ZXMge1xuICB5ZWFySW5kZXg6IG51bWJlcjtcbiAgbW9udGhJbmRleDogbnVtYmVyO1xuICBkYXlJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgU2t5RnV6enlEYXRlUmFuZ2Uge1xuICB5ZWFyczogc3RyaW5nO1xuICBtb250aHM6IHN0cmluZztcbiAgZGF5czogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreUZ1enp5RGF0ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGN1cnJlbnRMb2NhbGU6IHN0cmluZztcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9jYWxlUHJvdmlkZXI6IFNreUFwcExvY2FsZVByb3ZpZGVyKSB7XG4gICAgdGhpcy5sb2NhbGVQcm92aWRlclxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChsb2NhbGVJbmZvKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudExvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBicm93c2VyJ3MgY3VycmVudCBsb2NhbGUgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIGdldEN1cnJlbnRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50TG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNob3J0IGZvcm1hdCBvZiB0aGUgcHJvdmlkZWQgbG9jYWxlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBsb2NhbGUgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBicm93c2VyJ3MgZGVmYXVsdCBsb2NhbGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0TG9jYWxlU2hvcnRGb3JtYXQobG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9tZW50LmxvY2FsZURhdGEobG9jYWxlIHx8IHRoaXMuY3VycmVudExvY2FsZSkubG9uZ0RhdGVGb3JtYXQoJ0wnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgZnV6enkgZGF0ZSBieSB1c2luZyB0aGUgcHJvdmlkZWQgZm9ybWF0IGFuZCBsb2NhbGUgc3RyaW5ncy5cbiAgICogSWYgbm90IHByb3ZpZGVkLCB0aGUgbG9jYWxlIHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgYnJvd3NlcidzIGRlZmF1bHQgbG9jYWxlLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdChcbiAgICBmdXp6eURhdGU6IFNreUZ1enp5RGF0ZSxcbiAgICBmb3JtYXQ6IHN0cmluZyxcbiAgICBsb2NhbGU/OiBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuaXNGdXp6eURhdGVWYWxpZChmdXp6eURhdGUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKCFmb3JtYXQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLmdldERhdGVTZXBhcmF0b3IoZm9ybWF0KTtcbiAgICBjb25zdCBkYXRlUGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZm9ybWF0VG9rZW5zOiBzdHJpbmdbXSA9IGZvcm1hdC5zcGxpdChzZXBhcmF0b3IpO1xuICAgIGxvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLmN1cnJlbnRMb2NhbGU7XG4gICAgY29uc3QgZnV6enlEYXRlTW9tZW50ID1cbiAgICAgIHRoaXMuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShmdXp6eURhdGUpLmxvY2FsZShsb2NhbGUpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZvcm1hdFRva2Vucy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHRva2VuID0gZm9ybWF0VG9rZW5zW2luZGV4XTtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0b2tlbikge1xuICAgICAgICBzd2l0Y2ggKHRva2VuLnN1YnN0cigwLCAxKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICBpZiAoZnV6enlEYXRlLnllYXIpIHtcbiAgICAgICAgICAgICAgZGF0ZVBhcnRzLnB1c2goZnV6enlEYXRlTW9tZW50LmZvcm1hdCh0b2tlbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICBpZiAoZnV6enlEYXRlLm1vbnRoKSB7XG4gICAgICAgICAgICAgIGRhdGVQYXJ0cy5wdXNoKGZ1enp5RGF0ZU1vbWVudC5mb3JtYXQodG9rZW4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgaWYgKGZ1enp5RGF0ZS5kYXkpIHtcbiAgICAgICAgICAgICAgZGF0ZVBhcnRzLnB1c2goZnV6enlEYXRlTW9tZW50LmZvcm1hdCh0b2tlbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZVBhcnRzLmpvaW4oc2VwYXJhdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHllYXJzIHdpbGwgZGVmYXVsdCB0byBjdXJyZW50IHllYXI7IG1vbnRocyB3aWxsIGRlZmF1bHQgdG8gSmFudWFyeTtcbiAgICogZGF5cyB3aWxsIGRlZmF1bHQgdG8gMXN0IG9mIHRoZSBtb250aC5cbiAgICovXG4gIHB1YmxpYyBnZXRNb21lbnRGcm9tRnV6enlEYXRlKGZ1enp5RGF0ZTogU2t5RnV6enlEYXRlKTogYW55IHtcbiAgICBpZiAoIWZ1enp5RGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHllYXIgPSBmdXp6eURhdGUueWVhciB8fCB0aGlzLmdldERlZmF1bHRZZWFyKGZ1enp5RGF0ZSk7XG4gICAgY29uc3QgbW9udGggPSBmdXp6eURhdGUubW9udGggPiAwID8gZnV6enlEYXRlLm1vbnRoIC0gMSA6IDA7XG4gICAgY29uc3QgZGF5ID0gZnV6enlEYXRlLmRheSB8fCAxO1xuXG4gICAgcmV0dXJuIG1vbWVudChbeWVhciwgbW9udGgsIGRheV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBzdHJpbmcgaW5zdGFuY2Ugb2YgYSBmdXp6eSBkYXRlLlxuICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBgZm9ybWF0YCBmdW5jdGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXRTdHJpbmdGcm9tRnV6enlEYXRlKFxuICAgIGZ1enp5RGF0ZTogU2t5RnV6enlEYXRlLFxuICAgIGRhdGVGb3JtYXQ6IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGlmICghZnV6enlEYXRlIHx8ICFkYXRlRm9ybWF0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5nZXREYXRlU2VwYXJhdG9yKGRhdGVGb3JtYXQpO1xuICAgIGNvbnN0IGRhdGVGb3JtYXRJbmRleGVzID0gdGhpcy5nZXREYXRlRm9ybWF0SW5kZXhlcyhkYXRlRm9ybWF0KTtcbiAgICBsZXQgZGF0ZVN0cmluZyA9ICcnO1xuXG4gICAgLy8gR2V0IHRoZSBjb21wb25lbnRzIG9mIHRoZSBkYXRlIGluIHRoZSBvcmRlciBleHBlY3RlZCBvZiB0aGUgbG9jYWwgZm9ybWF0LlxuICAgIGNvbnN0IGRhdGVDb21wb25lbnRzID0gW1xuICAgICAgeyB2YWx1ZTogZnV6enlEYXRlLnllYXIgfHwgMCwgaW5kZXg6IGRhdGVGb3JtYXRJbmRleGVzLnllYXJJbmRleCB9LFxuICAgICAgeyB2YWx1ZTogZnV6enlEYXRlLm1vbnRoIHx8IDAsIGluZGV4OiBkYXRlRm9ybWF0SW5kZXhlcy5tb250aEluZGV4IH0sXG4gICAgICB7IHZhbHVlOiBmdXp6eURhdGUuZGF5IHx8IDAsIGluZGV4OiBkYXRlRm9ybWF0SW5kZXhlcy5kYXlJbmRleCB9LFxuICAgIF07XG4gICAgZGF0ZUNvbXBvbmVudHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcblxuICAgIGRhdGVDb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudCkgPT4ge1xuICAgICAgaWYgKGNvbXBvbmVudC52YWx1ZSA+IDAgJiYgY29tcG9uZW50LmluZGV4ID4gLTEpIHtcbiAgICAgICAgaWYgKGRhdGVTdHJpbmcpIHtcbiAgICAgICAgICBkYXRlU3RyaW5nICs9IHNlcGFyYXRvcjtcbiAgICAgICAgfVxuICAgICAgICBkYXRlU3RyaW5nICs9IGNvbXBvbmVudC52YWx1ZS50b1N0cmluZygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGVTdHJpbmcudHJpbSgpO1xuICB9XG5cbiAgcHVibGljIGdldEZ1enp5RGF0ZUZyb21TZWxlY3RlZERhdGUoXG4gICAgc2VsZWN0ZWREYXRlOiBEYXRlLFxuICAgIGRhdGVGb3JtYXQ6IHN0cmluZ1xuICApOiBTa3lGdXp6eURhdGUge1xuICAgIGlmICghc2VsZWN0ZWREYXRlIHx8ICFkYXRlRm9ybWF0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnV6enlEYXRlOiBTa3lGdXp6eURhdGUgPSB7fTtcbiAgICBjb25zdCBkYXRlRm9ybWF0SW5kZXhlcyA9IHRoaXMuZ2V0RGF0ZUZvcm1hdEluZGV4ZXMoZGF0ZUZvcm1hdCk7XG5cbiAgICBpZiAoZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4ID4gLTEpIHtcbiAgICAgIGZ1enp5RGF0ZS55ZWFyID0gc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGVGb3JtYXRJbmRleGVzLmRheUluZGV4ID4gLTEpIHtcbiAgICAgIGZ1enp5RGF0ZS5kYXkgPSBzZWxlY3RlZERhdGUuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy5tb250aEluZGV4ID4gLTEpIHtcbiAgICAgIGZ1enp5RGF0ZS5tb250aCA9IHNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICsgMTsgLy8gZ2V0TW9udGgoKSBpcyAwLWluZGV4ZWQuXG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1enp5RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGdXp6eURhdGVGcm9tU3RyaW5nKFxuICAgIGRhdGU6IHN0cmluZyxcbiAgICBkYXRlRm9ybWF0OiBzdHJpbmdcbiAgKTogU2t5RnV6enlEYXRlIHtcbiAgICBpZiAoIWRhdGUgfHwgIWRhdGVGb3JtYXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZGF5OiBhbnk7XG4gICAgbGV0IG1vbnRoOiBhbnk7XG4gICAgbGV0IHllYXI6IGFueTtcblxuICAgIGNvbnN0IGRhdGVDb21wb25lbnRzID0gdGhpcy5nZXREYXRlQ29tcG9uZW50cyhkYXRlKTtcbiAgICBjb25zdCBpbmRleGVzID0gdGhpcy5nZXREYXRlVmFsdWVJbmRleGVzKGRhdGUsIGRhdGVGb3JtYXQpO1xuXG4gICAgLy8gTG9vayBhdCB0aGUgZGF0ZSBzdHJpbmcncyBjb21wb25lbnQgY291bnQ6XG4gICAgLy8gMyBpbmRpY2F0ZXMgYSBmdWxsIGRhdGVcbiAgICAvLyAyIGluZGljYXRlcyBhIG1vbnRoLXllYXIgb3IgbW9udGgtZGF5IGRhdGVcbiAgICAvLyAxIGluZGljYXRlcyBhIHllYXJcbiAgICAvLyBPdGhlciBpbmRpY2F0ZXMgYSBwcm9ibGVtXG4gICAgc3dpdGNoIChkYXRlQ29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgeWVhciA9IGRhdGVDb21wb25lbnRzW2luZGV4ZXMueWVhckluZGV4XTtcbiAgICAgICAgbW9udGggPSBkYXRlQ29tcG9uZW50c1tpbmRleGVzLm1vbnRoSW5kZXhdO1xuICAgICAgICBkYXkgPSBkYXRlQ29tcG9uZW50c1tpbmRleGVzLmRheUluZGV4XTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIC8vIEZpcnN0LCBjaGVjayBmb3IgYSA0LWRpZ2l0IHllYXIuIElmIHllYXIgZXhpc3RzLCB0aGVuIHdlIGFzc3VtZSB0aGUgb3RoZXIgY29tcG9uZW50XG4gICAgICAgIC8vIGlzIHRoZSBtb250aC4gT3RoZXJ3aXNlLCB3ZSBjYW4gYXNzdW1lIHRoZSBpbnB1dCBpcyBtbS9kZCBvciBtbS95eSAoMi1kaWdpdCB5ZWFyKS5cbiAgICAgICAgeWVhciA9IHRoaXMuZ2V0NERpZ2l0WWVhckZyb21EYXRlU3RyaW5nKGRhdGUpO1xuICAgICAgICBpZiAoeWVhcikge1xuICAgICAgICAgIG1vbnRoID1cbiAgICAgICAgICAgIGRhdGVDb21wb25lbnRzWzBdID09PSB5ZWFyLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgPyBkYXRlQ29tcG9uZW50c1sxXVxuICAgICAgICAgICAgICA6IGRhdGVDb21wb25lbnRzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpbmRleGVzLmRheUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIC8vIG1tL2RkXG4gICAgICAgICAgICBtb250aCA9XG4gICAgICAgICAgICAgIGluZGV4ZXMubW9udGhJbmRleCA8IGluZGV4ZXMuZGF5SW5kZXhcbiAgICAgICAgICAgICAgICA/IGRhdGVDb21wb25lbnRzWzBdXG4gICAgICAgICAgICAgICAgOiBkYXRlQ29tcG9uZW50c1sxXTtcbiAgICAgICAgICAgIGRheSA9XG4gICAgICAgICAgICAgIG1vbnRoID09PSBkYXRlQ29tcG9uZW50c1sxXVxuICAgICAgICAgICAgICAgID8gZGF0ZUNvbXBvbmVudHNbMF1cbiAgICAgICAgICAgICAgICA6IGRhdGVDb21wb25lbnRzWzFdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBtbS95eVxuICAgICAgICAgICAgbW9udGggPVxuICAgICAgICAgICAgICBpbmRleGVzLm1vbnRoSW5kZXggPCBpbmRleGVzLnllYXJJbmRleFxuICAgICAgICAgICAgICAgID8gZGF0ZUNvbXBvbmVudHNbMF1cbiAgICAgICAgICAgICAgICA6IGRhdGVDb21wb25lbnRzWzFdO1xuICAgICAgICAgICAgeWVhciA9XG4gICAgICAgICAgICAgIG1vbnRoID09PSBkYXRlQ29tcG9uZW50c1sxXVxuICAgICAgICAgICAgICAgID8gZGF0ZUNvbXBvbmVudHNbMF1cbiAgICAgICAgICAgICAgICA6IGRhdGVDb21wb25lbnRzWzFdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgeWVhciA9IGRhdGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtb250aCkge1xuICAgICAgLy8gQ2hlY2sgaWYgbW9udGggaXMgdmFsaWQuXG4gICAgICBtb250aCA9IHRoaXMuZ2V0TW9udGhOdW1iZXIobW9udGgpO1xuICAgICAgaWYgKG1vbnRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBkYXkgaXMgdmFsaWQuXG4gICAgICBpZiAoZGF5KSB7XG4gICAgICAgIGRheSA9IHBhcnNlSW50KGRheSwgMTApO1xuICAgICAgICBjb25zdCBmdXp6eU1vbWVudCA9IHRoaXMuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZSh7XG4gICAgICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgICAgIGRheTogZGF5LFxuICAgICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNOYU4oZGF5KSB8fCAhZnV6enlNb21lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHllYXIpIHtcbiAgICAgIHllYXIgPVxuICAgICAgICB5ZWFyLnRvU3RyaW5nKCkubGVuZ3RoID09PSAyXG4gICAgICAgICAgPyBtb21lbnQucGFyc2VUd29EaWdpdFllYXIoeWVhcilcbiAgICAgICAgICA6IHBhcnNlSW50KHllYXIudG9TdHJpbmcoKSwgMTApO1xuICAgICAgaWYgKGlzTmFOKHllYXIpIHx8IHllYXIudG9TdHJpbmcoKS5sZW5ndGggIT09IDQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBtb250aDogbW9udGgsXG4gICAgICBkYXk6IGRheSxcbiAgICAgIHllYXI6IHllYXIsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGdXp6eURhdGVSYW5nZShcbiAgICBzdGFydEZ1enp5RGF0ZTogU2t5RnV6enlEYXRlLFxuICAgIGVuZEZ1enp5RGF0ZTogU2t5RnV6enlEYXRlXG4gICk6IFNreUZ1enp5RGF0ZVJhbmdlIHtcbiAgICBsZXQgc3RhcnQ7XG4gICAgbGV0IGVuZDtcbiAgICBsZXQgZGF5cztcbiAgICBsZXQgbW9udGhzO1xuICAgIGxldCB5ZWFycztcbiAgICBsZXQgdmFsaWQgPSBmYWxzZTtcblxuICAgIGlmIChcbiAgICAgIHN0YXJ0RnV6enlEYXRlICYmXG4gICAgICBzdGFydEZ1enp5RGF0ZS55ZWFyICYmXG4gICAgICBlbmRGdXp6eURhdGUgJiZcbiAgICAgIGVuZEZ1enp5RGF0ZS55ZWFyXG4gICAgKSB7XG4gICAgICBzdGFydCA9IHRoaXMuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShzdGFydEZ1enp5RGF0ZSk7XG4gICAgICBlbmQgPSB0aGlzLmdldE1vbWVudEZyb21GdXp6eURhdGUoZW5kRnV6enlEYXRlKTtcblxuICAgICAgeWVhcnMgPSBlbmQuZGlmZihzdGFydCwgJ3llYXJzJyk7XG4gICAgICBtb250aHMgPSBlbmQuZGlmZihzdGFydCwgJ21vbnRocycpO1xuICAgICAgZGF5cyA9IGVuZC5kaWZmKHN0YXJ0LCAnZGF5cycpO1xuICAgICAgdmFsaWQgPSBlbmQuZGlmZihzdGFydCkgPj0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgeWVhcnM6IHllYXJzLFxuICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICBkYXlzOiBkYXlzLFxuICAgICAgdmFsaWQ6IHZhbGlkLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudEZ1enp5RGF0ZSgpOiBTa3lGdXp6eURhdGUge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbW9tZW50KCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF5OiBjdXJyZW50RGF0ZS5kYXRlKCksXG4gICAgICBtb250aDogY3VycmVudERhdGUubW9udGgoKSArIDEsIC8vIG1vbnRoKCkgaXMgMC1pbmRleGVkLlxuICAgICAgeWVhcjogY3VycmVudERhdGUueWVhcigpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldE1vc3RSZWNlbnRMZWFwWWVhcigpOiBudW1iZXIge1xuICAgIGxldCBsZWFwWWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcblxuICAgIHdoaWxlICghdGhpcy5pc0xlYXBZZWFyKGxlYXBZZWFyKSkge1xuICAgICAgbGVhcFllYXIgLT0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGVhcFllYXI7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmlyc3Qgc2VwYXJhdG9yIGZvdW5kIGluIHRoZSBwcm92aWRlZCBkYXRlIGZvcm1hdCBzdHJpbmcuXG4gICAqIEFjY2VwdGVkIHNlcGFyYXRvcnM6IFsnLycsICcuJywgJy0nLCAnICddLlxuICAgKiBAcGFyYW0gZGF0ZUZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSBnZXREYXRlU2VwYXJhdG9yKGRhdGVGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHJldHVyblZhbHVlOiBzdHJpbmc7XG4gICAgY29uc3Qgc2VwYXJhdG9ycyA9IFsnLycsICcuJywgJy0nLCAnICddO1xuXG4gICAgc2VwYXJhdG9ycy5mb3JFYWNoKChzZXBhcmF0b3IpID0+IHtcbiAgICAgIGlmICghcmV0dXJuVmFsdWUgJiYgZGF0ZUZvcm1hdC5pbmRleE9mKHNlcGFyYXRvcikgPiAwKSB7XG4gICAgICAgIHJldHVyblZhbHVlID0gc2VwYXJhdG9yO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQ0RGlnaXRZZWFyRnJvbURhdGVTdHJpbmcoZGF0ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgeWVhcjogc3RyaW5nO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZ2V0RGF0ZVNlcGFyYXRvcihkYXRlKTtcblxuICAgIC8vIEZpbmQgdGhlIG51bWJlciB2YWx1ZSBpbiB0aGUgc3RyaW5nIHRoYXQgaXMgNCBkaWdpdHMgbG9uZy5cbiAgICBkYXRlLnNwbGl0KHNlcGFyYXRvcikuZm9yRWFjaCgoZGF0ZUNvbXBvbmVudCkgPT4ge1xuICAgICAgaWYgKCF5ZWFyICYmIHBhcnNlSW50KGRhdGVDb21wb25lbnQsIDEwKS50b1N0cmluZygpLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICB5ZWFyID0gZGF0ZUNvbXBvbmVudDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh5ZWFyICYmICFpc05hTihOdW1iZXIoeWVhcikpKSB7XG4gICAgICByZXR1cm4gcGFyc2VJbnQoeWVhciwgMTApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNMZWFwWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApIHx8IHllYXIgJSA0MDAgPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGdldE1vbnRoTnVtYmVyKG1vbnRoOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCByZXR1cm5WYWx1ZTogbnVtYmVyO1xuICAgIGNvbnN0IG1vbnRoQXNOdW1iZXIgPSBwYXJzZUludChtb250aCwgMTApO1xuXG4gICAgLy8gSWYgdGhlIG1vbnRoIGNvbXBvbmVudCBpcyBhIHN0cmluZyAoXCJKYW5hdXJ5XCIpLCB3ZSBjaGVjayB0byBzZWUgaWYgaXQgaXMgYSB2YWxpZCBtb250aFxuICAgIGlmIChpc05hTihtb250aEFzTnVtYmVyKSkge1xuICAgICAgaWYgKCFtb21lbnQobW9udGgsICdNTU1NJykuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnQobW9tZW50KCkubW9udGgobW9udGgpLmZvcm1hdCgnTScpLCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblZhbHVlID0gbW9udGhBc051bWJlcjtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbW9udGggaXMgYmV0d2VlbiAxIGFuZCAxMlxuICAgIGlmICghKDEgPD0gcmV0dXJuVmFsdWUgJiYgcmV0dXJuVmFsdWUgPD0gMTIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0WWVhcihmdXp6eURhdGU6IFNreUZ1enp5RGF0ZSk6IG51bWJlciB7XG4gICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0byByZXR1cm4gYSBsZWFwIHllYXIgb3IgdGhlIGN1cnJlbnQgeWVhci5cbiAgICBpZiAoZnV6enlEYXRlLm1vbnRoID09PSAyICYmIGZ1enp5RGF0ZS5kYXkgPT09IDI5KSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNb3N0UmVjZW50TGVhcFllYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVDb21wb25lbnRzKGRhdGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLmdldERhdGVTZXBhcmF0b3IoZGF0ZSk7XG4gICAgcmV0dXJuIGRhdGUuc3BsaXQoc2VwYXJhdG9yKTtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIG9yZGVyIG9mIHllYXIsIG1vbnRoLCBhbmQgZGF5IGZyb20gdGhlIHByb3ZpZGVkIGRhdGUgZm9ybWF0LlxuICBwcml2YXRlIGdldERhdGVGb3JtYXRJbmRleGVzKGRhdGVGb3JtYXQ6IHN0cmluZyk6IFNreURhdGVJbmRleGVzIHtcbiAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB7XG4gICAgICB5ZWFySW5kZXg6IGRhdGVGb3JtYXQuaW5kZXhPZigneScpLFxuICAgICAgbW9udGhJbmRleDogZGF0ZUZvcm1hdC5pbmRleE9mKCdtJyksXG4gICAgICBkYXlJbmRleDogZGF0ZUZvcm1hdC5pbmRleE9mKCdkJyksXG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIGVhY2ggb2YgdGhlIGRhdGUgY29tcG9uZW50cyBpbiB0aGUgcHJvdmlkZWQgc3RyaW5nIChtb250aCwgZGF5LCB5ZWFyKS5cbiAgcHJpdmF0ZSBnZXREYXRlVmFsdWVJbmRleGVzKFxuICAgIGRhdGU6IHN0cmluZyxcbiAgICBkYXRlRm9ybWF0OiBzdHJpbmdcbiAgKTogU2t5RGF0ZUluZGV4ZXMge1xuICAgIGNvbnN0IGRhdGVGb3JtYXRJbmRleGVzID0gdGhpcy5nZXREYXRlRm9ybWF0SW5kZXhlcyhkYXRlRm9ybWF0KTtcbiAgICBjb25zdCBkYXRlQ29tcG9uZW50SW5kZXhlcyA9IFtdO1xuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy55ZWFySW5kZXggPiAtMSkge1xuICAgICAgZGF0ZUNvbXBvbmVudEluZGV4ZXMucHVzaChkYXRlRm9ybWF0SW5kZXhlcy55ZWFySW5kZXgpO1xuICAgIH1cblxuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy5tb250aEluZGV4ID4gLTEpIHtcbiAgICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnB1c2goZGF0ZUZvcm1hdEluZGV4ZXMubW9udGhJbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGVGb3JtYXRJbmRleGVzLmRheUluZGV4ID4gLTEpIHtcbiAgICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnB1c2goZGF0ZUZvcm1hdEluZGV4ZXMuZGF5SW5kZXgpO1xuICAgIH1cblxuICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB5ZWFySW5kZXg6IGRhdGVDb21wb25lbnRJbmRleGVzLmluZGV4T2YoZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4KSxcbiAgICAgIG1vbnRoSW5kZXg6IGRhdGVDb21wb25lbnRJbmRleGVzLmluZGV4T2YoZGF0ZUZvcm1hdEluZGV4ZXMubW9udGhJbmRleCksXG4gICAgICBkYXlJbmRleDogZGF0ZUNvbXBvbmVudEluZGV4ZXMuaW5kZXhPZihkYXRlRm9ybWF0SW5kZXhlcy5kYXlJbmRleCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHByb3ZpZGVkIFNreUZ1enp5RGF0ZSBvYmplY3QuIFZhbGlkIGZ1enp5IGRhdGVzIGFyZSBhcyBmb2xsb3dzOlxuICAgKiBtb250aCwgZGF5LCB5ZWFyXG4gICAqIG1vbnRoLCB5ZWFyXG4gICAqIG1vbnRoLCBkYXlcbiAgICogeWVhciBvbmx5XG4gICAqL1xuICBwcml2YXRlIGlzRnV6enlEYXRlVmFsaWQoZnV6enlEYXRlOiBTa3lGdXp6eURhdGUpOiBib29sZWFuIHtcbiAgICBpZiAoIWZ1enp5RGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGRhdGVzIHBhcnQgYXJlIHNwZWNpZmllZCwgcmV0dXJuIGZhbHNlLlxuICAgIGlmICghZnV6enlEYXRlLmRheSAmJiAhZnV6enlEYXRlLm1vbnRoICYmICFmdXp6eURhdGUueWVhcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIG9ubHkgbW9udGggaXMgc3BlY2lmaWVkLCByZXR1cm4gZmFsc2UuXG4gICAgaWYgKCFmdXp6eURhdGUuZGF5ICYmIGZ1enp5RGF0ZS5tb250aCAmJiAhZnV6enlEYXRlLnllYXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJZiBvbmx5IGRheSBpcyBzcGVjaWZpZWQsIHJldHVybiBmYWxzZS5cbiAgICBpZiAoZnV6enlEYXRlLmRheSAmJiAhZnV6enlEYXRlLm1vbnRoICYmICFmdXp6eURhdGUueWVhcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
@@ -71,9 +71,9 @@ export class SkyMonthPickerComponent {
71
71
  this.datepicker.activeDate.setMonth(date);
72
72
  }
73
73
  }
74
- SkyMonthPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyMonthPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
75
- SkyMonthPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyMonthPickerComponent, selector: "sky-monthpicker", ngImport: i0, template: "<table *ngIf=\"datepicker.datepickerMode === 'month'\" role=\"grid\">\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th\n [attr.colspan]=\"\n datepicker.monthColLimit - 2 <= 0 ? 1 : datepicker.monthColLimit - 2\n \"\n >\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepicker.datepickerMode === maxMode\n }\"\n tabindex=\"-1\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td\n *ngFor=\"let date of row\"\n class=\"text-center\"\n role=\"gridcell\"\n id=\"{{ date.uid }}\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date)\n }\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'sky-datepicker-current': date.current }\">{{\n date.label\n }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyMonthPickerComponent, decorators: [{
74
+ SkyMonthPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyMonthPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
75
+ SkyMonthPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyMonthPickerComponent, selector: "sky-monthpicker", ngImport: i0, template: "<table *ngIf=\"datepicker.datepickerMode === 'month'\" role=\"grid\">\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th\n [attr.colspan]=\"\n datepicker.monthColLimit - 2 <= 0 ? 1 : datepicker.monthColLimit - 2\n \"\n >\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepicker.datepickerMode === maxMode\n }\"\n tabindex=\"-1\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td\n *ngFor=\"let date of row\"\n class=\"text-center\"\n role=\"gridcell\"\n id=\"{{ date.uid }}\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date)\n }\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'sky-datepicker-current': date.current }\">{{\n date.label\n }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyMonthPickerComponent, decorators: [{
77
77
  type: Component,
78
78
  args: [{ selector: 'sky-monthpicker', template: "<table *ngIf=\"datepicker.datepickerMode === 'month'\" role=\"grid\">\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th\n [attr.colspan]=\"\n datepicker.monthColLimit - 2 <= 0 ? 1 : datepicker.monthColLimit - 2\n \"\n >\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepicker.datepickerMode === maxMode\n }\"\n tabindex=\"-1\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td\n *ngFor=\"let date of row\"\n class=\"text-center\"\n role=\"gridcell\"\n id=\"{{ date.uid }}\"\n >\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date)\n }\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'sky-datepicker-current': date.current }\">{{\n date.label\n }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"] }]
79
79
  }], ctorParameters: function () { return [{ type: i1.SkyDatepickerCalendarInnerComponent }]; } });
@@ -77,9 +77,9 @@ export class SkyYearPickerComponent {
77
77
  this.datepicker.activeDate.setFullYear(date);
78
78
  }
79
79
  }
80
- SkyYearPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyYearPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
81
- SkyYearPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyYearPickerComponent, selector: "sky-yearpicker", ngImport: i0, template: "<table *ngIf=\"datepicker.datepickerMode === 'year'\" role=\"grid\">\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th\n [attr.colspan]=\"\n datepicker.yearColLimit - 2 <= 0 ? 1 : datepicker.yearColLimit - 2\n \"\n >\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n role=\"heading\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td *ngFor=\"let date of row\" class=\"sky-datepicker-row\" role=\"gridcell\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date)\n }\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'sky-datepicker-current': date.current }\">{{\n date.label\n }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyYearPickerComponent, decorators: [{
80
+ SkyYearPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyYearPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
81
+ SkyYearPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyYearPickerComponent, selector: "sky-yearpicker", ngImport: i0, template: "<table *ngIf=\"datepicker.datepickerMode === 'year'\" role=\"grid\">\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th\n [attr.colspan]=\"\n datepicker.yearColLimit - 2 <= 0 ? 1 : datepicker.yearColLimit - 2\n \"\n >\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n role=\"heading\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td *ngFor=\"let date of row\" class=\"sky-datepicker-row\" role=\"gridcell\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date)\n }\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'sky-datepicker-current': date.current }\">{{\n date.label\n }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], components: [{ type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyYearPickerComponent, decorators: [{
83
83
  type: Component,
84
84
  args: [{ selector: 'sky-yearpicker', template: "<table *ngIf=\"datepicker.datepickerMode === 'year'\" role=\"grid\">\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th\n [attr.colspan]=\"\n datepicker.yearColLimit - 2 <= 0 ? 1 : datepicker.yearColLimit - 2\n \"\n >\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n role=\"heading\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows\">\n <td *ngFor=\"let date of row\" class=\"sky-datepicker-row\" role=\"gridcell\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-datepicker-btn-date\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date)\n }\"\n [disabled]=\"date.disabled\"\n (click)=\"datepicker.selectCalendar($event, date.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'sky-datepicker-current': date.current }\">{{\n date.label\n }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"] }]
85
85
  }], ctorParameters: function () { return [{ type: i1.SkyDatepickerCalendarInnerComponent }]; } });
@@ -106,16 +106,16 @@ export class SkyDatetimeResourcesProvider {
106
106
  */
107
107
  export class SkyDatetimeResourcesModule {
108
108
  }
109
- SkyDatetimeResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDatetimeResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
110
- SkyDatetimeResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDatetimeResourcesModule, exports: [SkyI18nModule] });
111
- SkyDatetimeResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDatetimeResourcesModule, providers: [
109
+ SkyDatetimeResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatetimeResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
110
+ SkyDatetimeResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatetimeResourcesModule, exports: [SkyI18nModule] });
111
+ SkyDatetimeResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatetimeResourcesModule, providers: [
112
112
  {
113
113
  provide: SKY_LIB_RESOURCES_PROVIDERS,
114
114
  useClass: SkyDatetimeResourcesProvider,
115
115
  multi: true,
116
116
  },
117
117
  ], imports: [SkyI18nModule] });
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDatetimeResourcesModule, decorators: [{
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDatetimeResourcesModule, decorators: [{
119
119
  type: NgModule,
120
120
  args: [{
121
121
  exports: [SkyI18nModule],
@@ -319,9 +319,9 @@ export class SkyTimepickerComponent {
319
319
  this.overlayKeydownListner?.unsubscribe();
320
320
  }
321
321
  }
322
- SkyTimepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyTimepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
323
- SkyTimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyTimepickerComponent, selector: "sky-timepicker", outputs: { selectedTimeChanged: "selectedTimeChanged" }, viewQueries: [{ propertyName: "timepickerRef", first: true, predicate: ["timepickerRef"], descendants: true, read: ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\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 class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"clock-o\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"clock\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonCick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"], components: [{ type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "skyLibResources": i6.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyTimepickerComponent, decorators: [{
322
+ SkyTimepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyTimepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
323
+ SkyTimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyTimepickerComponent, selector: "sky-timepicker", outputs: { selectedTimeChanged: "selectedTimeChanged" }, viewQueries: [{ propertyName: "timepickerRef", first: true, predicate: ["timepickerRef"], descendants: true, read: ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\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 class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"clock-o\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"clock\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonCick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"], components: [{ type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "skyLibResources": i6.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyTimepickerComponent, decorators: [{
325
325
  type: Component,
326
326
  args: [{ selector: 'sky-timepicker', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\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 class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"clock-o\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"clock\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonCick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"] }]
327
327
  }], ctorParameters: function () { return [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2.SkyInputBoxHostService, decorators: [{