@skyux/datetime 11.26.0 → 11.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +2325 -2306
- package/esm2022/index.mjs +4 -4
- package/esm2022/lib/modules/date-pipe/date-pipe.module.mjs +5 -5
- package/esm2022/lib/modules/date-pipe/date.pipe.mjs +4 -4
- package/esm2022/lib/modules/date-pipe/date.service.mjs +4 -4
- package/esm2022/lib/modules/date-pipe/fuzzy-date.pipe.mjs +5 -5
- package/esm2022/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.mjs +4 -4
- package/esm2022/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.mjs +4 -4
- package/esm2022/lib/modules/date-range-picker/date-range-picker.component.mjs +24 -11
- package/esm2022/lib/modules/date-range-picker/date-range-picker.module.mjs +5 -5
- package/esm2022/lib/modules/date-range-picker/date-range.service.mjs +4 -4
- package/esm2022/lib/modules/datepicker/calendar/datepicker-calendar-change.mjs +2 -0
- package/esm2022/lib/modules/datepicker/calendar/datepicker-calendar-inner.component.mjs +383 -0
- package/esm2022/lib/modules/datepicker/calendar/datepicker-calendar-label.pipe.mjs +39 -0
- package/esm2022/lib/modules/datepicker/calendar/datepicker-calendar.component.mjs +100 -0
- package/esm2022/lib/modules/datepicker/calendar/datepicker-calendar.service.mjs +22 -0
- package/esm2022/lib/modules/datepicker/calendar/daypicker-button.component.mjs +23 -0
- package/esm2022/lib/modules/datepicker/calendar/daypicker-cell.component.mjs +129 -0
- package/esm2022/lib/modules/datepicker/calendar/daypicker-context.mjs +2 -0
- package/esm2022/lib/modules/datepicker/calendar/daypicker.component.mjs +221 -0
- package/esm2022/lib/modules/datepicker/calendar/monthpicker.component.mjs +80 -0
- package/esm2022/lib/modules/datepicker/calendar/yearpicker.component.mjs +87 -0
- package/esm2022/lib/modules/datepicker/datepicker-config.service.mjs +4 -4
- package/esm2022/lib/modules/datepicker/datepicker-host.service.mjs +4 -4
- package/esm2022/lib/modules/datepicker/datepicker-input.directive.mjs +7 -6
- package/esm2022/lib/modules/datepicker/datepicker.component.mjs +26 -10
- package/esm2022/lib/modules/datepicker/datepicker.module.mjs +33 -69
- package/esm2022/lib/modules/datepicker/fuzzy/datepicker-input-fuzzy.directive.mjs +516 -0
- package/esm2022/lib/modules/datepicker/fuzzy/fuzzy-date.mjs +2 -0
- package/esm2022/lib/modules/datepicker/fuzzy/fuzzy-date.service.mjs +411 -0
- package/esm2022/lib/modules/shared/sky-datetime-resources.module.mjs +5 -5
- package/esm2022/lib/modules/timepicker/timepicker.component.mjs +4 -4
- package/esm2022/lib/modules/timepicker/timepicker.directive.mjs +4 -4
- package/esm2022/lib/modules/timepicker/timepicker.module.mjs +5 -5
- package/esm2022/testing/modules/date-range-picker/date-range-picker-harness.mjs +19 -15
- package/esm2022/testing/modules/datepicker/datepicker-harness.mjs +3 -2
- package/esm2022/testing/modules/datepicker/fuzzy-datepicker-input-harness.mjs +29 -0
- package/fesm2022/skyux-datetime-testing.mjs +47 -15
- package/fesm2022/skyux-datetime-testing.mjs.map +1 -1
- package/fesm2022/skyux-datetime.mjs +626 -618
- package/fesm2022/skyux-datetime.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/modules/date-pipe/fuzzy-date.pipe.d.ts +2 -2
- package/lib/modules/date-range-picker/date-range-picker.component.d.ts +6 -1
- package/lib/modules/datepicker/{datepicker-calendar-change.d.ts → calendar/datepicker-calendar-change.d.ts} +1 -1
- package/lib/modules/datepicker/{datepicker-calendar-inner.component.d.ts → calendar/datepicker-calendar-inner.component.d.ts} +6 -6
- package/lib/modules/datepicker/{datepicker-calendar.component.d.ts → calendar/datepicker-calendar.component.d.ts} +3 -3
- package/lib/modules/datepicker/calendar/datepicker-calendar.service.d.ts +16 -0
- package/lib/modules/datepicker/{daypicker-button.component.d.ts → calendar/daypicker-button.component.d.ts} +3 -3
- package/lib/modules/datepicker/{daypicker-cell.component.d.ts → calendar/daypicker-cell.component.d.ts} +5 -5
- package/lib/modules/datepicker/{datepicker-date.d.ts → calendar/daypicker-context.d.ts} +2 -1
- package/lib/modules/datepicker/{daypicker.component.d.ts → calendar/daypicker.component.d.ts} +4 -4
- package/lib/modules/datepicker/{monthpicker.component.d.ts → calendar/monthpicker.component.d.ts} +3 -3
- package/lib/modules/datepicker/{yearpicker.component.d.ts → calendar/yearpicker.component.d.ts} +3 -3
- package/lib/modules/datepicker/datepicker-input.directive.d.ts +1 -1
- package/lib/modules/datepicker/datepicker.component.d.ts +8 -3
- package/lib/modules/datepicker/datepicker.module.d.ts +11 -22
- package/lib/modules/datepicker/{datepicker-input-fuzzy.directive.d.ts → fuzzy/datepicker-input-fuzzy.directive.d.ts} +3 -3
- package/package.json +14 -14
- package/testing/modules/datepicker/datepicker-harness.d.ts +2 -1
- package/testing/modules/datepicker/fuzzy-datepicker-input-harness.d.ts +18 -0
- package/esm2022/lib/modules/datepicker/datepicker-calendar-change.mjs +0 -2
- package/esm2022/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +0 -381
- package/esm2022/lib/modules/datepicker/datepicker-calendar-label.pipe.mjs +0 -39
- package/esm2022/lib/modules/datepicker/datepicker-calendar.component.mjs +0 -96
- package/esm2022/lib/modules/datepicker/datepicker-date.mjs +0 -2
- package/esm2022/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +0 -515
- package/esm2022/lib/modules/datepicker/datepicker.service.mjs +0 -21
- package/esm2022/lib/modules/datepicker/daypicker-button.component.mjs +0 -22
- package/esm2022/lib/modules/datepicker/daypicker-cell.component.mjs +0 -128
- package/esm2022/lib/modules/datepicker/daypicker.component.mjs +0 -220
- package/esm2022/lib/modules/datepicker/fuzzy-date.mjs +0 -2
- package/esm2022/lib/modules/datepicker/fuzzy-date.service.mjs +0 -411
- package/esm2022/lib/modules/datepicker/monthpicker.component.mjs +0 -79
- package/esm2022/lib/modules/datepicker/yearpicker.component.mjs +0 -86
- package/lib/modules/datepicker/datepicker.service.d.ts +0 -15
- /package/lib/modules/datepicker/{datepicker-calendar-label.pipe.d.ts → calendar/datepicker-calendar-label.pipe.d.ts} +0 -0
- /package/lib/modules/datepicker/{fuzzy-date.d.ts → fuzzy/fuzzy-date.d.ts} +0 -0
- /package/lib/modules/datepicker/{fuzzy-date.service.d.ts → fuzzy/fuzzy-date.service.d.ts} +0 -0
@@ -1,128 +0,0 @@
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
2
|
-
import { SkyPopoverMessageType } from '@skyux/popovers';
|
3
|
-
import { Subject } from 'rxjs';
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "./datepicker-calendar-inner.component";
|
7
|
-
import * as i2 from "./datepicker.service";
|
8
|
-
import * as i3 from "@angular/common";
|
9
|
-
import * as i4 from "@skyux/popovers";
|
10
|
-
import * as i5 from "./daypicker-button.component";
|
11
|
-
/**
|
12
|
-
* @internal
|
13
|
-
*/
|
14
|
-
export class SkyDayPickerCellComponent {
|
15
|
-
#activeUid;
|
16
|
-
#cancelPopover;
|
17
|
-
#popoverOpen;
|
18
|
-
#ngUnsubscribe;
|
19
|
-
#datepicker;
|
20
|
-
#datepickerService;
|
21
|
-
constructor(datepicker, datepickerService) {
|
22
|
-
this.hasTooltip = false;
|
23
|
-
this.popoverController = new Subject();
|
24
|
-
this.#activeUid = '';
|
25
|
-
this.#cancelPopover = false;
|
26
|
-
this.#popoverOpen = false;
|
27
|
-
this.#ngUnsubscribe = new Subject();
|
28
|
-
this.#datepicker = datepicker;
|
29
|
-
this.#datepickerService = datepickerService;
|
30
|
-
}
|
31
|
-
ngOnInit() {
|
32
|
-
this.hasTooltip = !!(this.date &&
|
33
|
-
this.date.keyDate &&
|
34
|
-
this.date.keyDateText &&
|
35
|
-
this.date.keyDateText.length > 0 &&
|
36
|
-
this.date.keyDateText[0].length > 0);
|
37
|
-
// show the tooltip if this is the active date and is not the
|
38
|
-
// initial active date (activeDateHasChanged)
|
39
|
-
if (!!this.date &&
|
40
|
-
this.#datepicker.isActive(this.date) &&
|
41
|
-
this.activeDateHasChanged &&
|
42
|
-
this.hasTooltip) {
|
43
|
-
this.#activeUid = this.date.uid;
|
44
|
-
this.#showTooltip();
|
45
|
-
}
|
46
|
-
if (this.hasTooltip) {
|
47
|
-
this.#datepickerService.keyDatePopoverStream
|
48
|
-
.pipe(takeUntil(this.#ngUnsubscribe))
|
49
|
-
.subscribe((date) => {
|
50
|
-
if (date) {
|
51
|
-
this.#activeUid = date.uid;
|
52
|
-
}
|
53
|
-
else {
|
54
|
-
this.#activeUid = '';
|
55
|
-
}
|
56
|
-
// If this day has an open popover and they have moved off of the day close the popover.
|
57
|
-
if (this.date?.uid !== this.#activeUid) {
|
58
|
-
this.#hideTooltip();
|
59
|
-
}
|
60
|
-
});
|
61
|
-
}
|
62
|
-
}
|
63
|
-
ngOnDestroy() {
|
64
|
-
this.#ngUnsubscribe.next();
|
65
|
-
this.#ngUnsubscribe.complete();
|
66
|
-
}
|
67
|
-
onDayMouseenter() {
|
68
|
-
this.#cancelPopover = false;
|
69
|
-
if (this.hasTooltip) {
|
70
|
-
this.#showTooltip();
|
71
|
-
this.#datepickerService.keyDatePopoverStream.next(this.date);
|
72
|
-
}
|
73
|
-
}
|
74
|
-
onDayMouseleave() {
|
75
|
-
this.#cancelPopover = true;
|
76
|
-
if (this.hasTooltip) {
|
77
|
-
this.#hideTooltip();
|
78
|
-
}
|
79
|
-
this.#datepickerService.keyDatePopoverStream.next(undefined);
|
80
|
-
}
|
81
|
-
onPopoverClosed() {
|
82
|
-
this.#popoverOpen = false;
|
83
|
-
}
|
84
|
-
onPopoverOpened() {
|
85
|
-
this.#popoverOpen = true;
|
86
|
-
/* istanbul ignore else */
|
87
|
-
if (this.#cancelPopover) {
|
88
|
-
// If the popover gets opened just as a mouseout event happens, close it.
|
89
|
-
this.#hideTooltip();
|
90
|
-
this.#cancelPopover = false;
|
91
|
-
}
|
92
|
-
}
|
93
|
-
getKeyDateLabel() {
|
94
|
-
return this.hasTooltip && this.date?.keyDateText
|
95
|
-
? this.date.keyDateText.join(', ')
|
96
|
-
: '';
|
97
|
-
}
|
98
|
-
#hideTooltip() {
|
99
|
-
/* istanbul ignore else */
|
100
|
-
if (this.#popoverOpen) {
|
101
|
-
this.popoverController.next({ type: SkyPopoverMessageType.Close });
|
102
|
-
}
|
103
|
-
}
|
104
|
-
#showTooltip() {
|
105
|
-
/* istanbul ignore else */
|
106
|
-
if (this.hasTooltip && !this.#popoverOpen) {
|
107
|
-
/**
|
108
|
-
* Delay 1/2 second before opening the popover as long as mouse hasn't moved off the date.
|
109
|
-
*/
|
110
|
-
setTimeout(() => {
|
111
|
-
if (!this.#cancelPopover && this.#activeUid === this.date?.uid) {
|
112
|
-
this.popoverController.next({ type: SkyPopoverMessageType.Open });
|
113
|
-
}
|
114
|
-
}, 500);
|
115
|
-
}
|
116
|
-
}
|
117
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyDayPickerCellComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }, { token: i2.SkyDatepickerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: { activeDateHasChanged: "activeDateHasChanged", date: "date" }, ngImport: i0, template: "@if (hasTooltip) {\n <div\n class=\"sky-daypicker-cell\"\n skyPopoverPlacement=\"left\"\n [attr.aria-label]=\"getKeyDateLabel()\"\n [skyPopover]=\"dayInfoPopover\"\n [skyPopoverMessageStream]=\"popoverController\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n >\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\" />\n <sky-popover\n #dayInfoPopover\n (popoverClosed)=\"onPopoverClosed()\"\n (popoverOpened)=\"onPopoverOpened()\"\n >\n @for (text of date?.keyDateText; track text) {\n <div>\n {{ text }}\n </div>\n }\n </sky-popover>\n </div>\n} @else {\n <div\n class=\"sky-daypicker-cell\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n >\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\" />\n </div>\n}\n\n<ng-template #daypickerButtonTemplateRef>\n <sky-daypicker-button [date]=\"date\" />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.λ6, selector: "sky-popover", inputs: ["alignment", "placement", "popoverTitle", "popoverType"], outputs: ["popoverClosed", "popoverOpened"] }, { kind: "directive", type: i4.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }, { kind: "component", type: i5.SkyDayPickerButtonComponent, selector: "sky-daypicker-button", inputs: ["date"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
119
|
-
}
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyDayPickerCellComponent, decorators: [{
|
121
|
-
type: Component,
|
122
|
-
args: [{ selector: 'sky-daypicker-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (hasTooltip) {\n <div\n class=\"sky-daypicker-cell\"\n skyPopoverPlacement=\"left\"\n [attr.aria-label]=\"getKeyDateLabel()\"\n [skyPopover]=\"dayInfoPopover\"\n [skyPopoverMessageStream]=\"popoverController\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n >\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\" />\n <sky-popover\n #dayInfoPopover\n (popoverClosed)=\"onPopoverClosed()\"\n (popoverOpened)=\"onPopoverOpened()\"\n >\n @for (text of date?.keyDateText; track text) {\n <div>\n {{ text }}\n </div>\n }\n </sky-popover>\n </div>\n} @else {\n <div\n class=\"sky-daypicker-cell\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n >\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\" />\n </div>\n}\n\n<ng-template #daypickerButtonTemplateRef>\n <sky-daypicker-button [date]=\"date\" />\n</ng-template>\n" }]
|
123
|
-
}], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }, { type: i2.SkyDatepickerService }], propDecorators: { activeDateHasChanged: [{
|
124
|
-
type: Input
|
125
|
-
}], date: [{
|
126
|
-
type: Input
|
127
|
-
}] } });
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXlwaWNrZXItY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQixxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBTTNDOztHQUVHO0FBTUgsTUFBTSxPQUFPLHlCQUF5QjtJQWlCcEMsVUFBVSxDQUFNO0lBRWhCLGNBQWMsQ0FBUztJQUV2QixZQUFZLENBQVM7SUFFckIsY0FBYyxDQUF1QjtJQUVyQyxXQUFXLENBQXNDO0lBQ2pELGtCQUFrQixDQUF1QjtJQUV6QyxZQUNFLFVBQStDLEVBQy9DLGlCQUF1QztRQWpCbEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztRQUU1RCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztR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ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lQb3BvdmVyTWVzc2FnZSwgU2t5UG9wb3Zlck1lc3NhZ2VUeXBlIH0gZnJvbSAnQHNreXV4L3BvcG92ZXJzJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckRhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItZGF0ZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyU2VydmljZSB9IGZyb20gJy4vZGF0ZXBpY2tlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRheXBpY2tlci1jZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICdkYXlwaWNrZXItY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXlQaWNrZXJDZWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgYWN0aXZlIGRhdGUgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY3RpdmVEYXRlSGFzQ2hhbmdlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGRhdGUgdGhpcyBwaWNrZXIgY2VsbCB3aWxsIHJlcHJlc2VudCBvbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0ZTogU2t5RGF0ZXBpY2tlckRhdGUgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGhhc1Rvb2x0aXAgPSBmYWxzZTtcblxuICBwdWJsaWMgcG9wb3ZlckNvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lQb3BvdmVyTWVzc2FnZT4oKTtcblxuICAjYWN0aXZlVWlkID0gJyc7XG5cbiAgI2NhbmNlbFBvcG92ZXIgPSBmYWxzZTtcblxuICAjcG9wb3Zlck9wZW4gPSBmYWxzZTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI2RhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50O1xuICAjZGF0ZXBpY2tlclNlcnZpY2U6IFNreURhdGVwaWNrZXJTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50LFxuICAgIGRhdGVwaWNrZXJTZXJ2aWNlOiBTa3lEYXRlcGlja2VyU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jZGF0ZXBpY2tlciA9IGRhdGVwaWNrZXI7XG4gICAgdGhpcy4jZGF0ZXBpY2tlclNlcnZpY2UgPSBkYXRlcGlja2VyU2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc1Rvb2x0aXAgPSAhIShcbiAgICAgIHRoaXMuZGF0ZSAmJlxuICAgICAgdGhpcy5kYXRlLmtleURhdGUgJiZcbiAgICAgIHRoaXMuZGF0ZS5rZXlEYXRlVGV4dCAmJlxuICAgICAgdGhpcy5kYXRlLmtleURhdGVUZXh0Lmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuZGF0ZS5rZXlEYXRlVGV4dFswXS5sZW5ndGggPiAwXG4gICAgKTtcblxuICAgIC8vIHNob3cgdGhlIHRvb2x0aXAgaWYgdGhpcyBpcyB0aGUgYWN0aXZlIGRhdGUgYW5kIGlzIG5vdCB0aGVcbiAgICAvLyBpbml0aWFsIGFjdGl2ZSBkYXRlIChhY3RpdmVEYXRlSGFzQ2hhbmdlZClcbiAgICBpZiAoXG4gICAgICAhIXRoaXMuZGF0ZSAmJlxuICAgICAgdGhpcy4jZGF0ZXBpY2tlci5pc0FjdGl2ZSh0aGlzLmRhdGUpICYmXG4gICAgICB0aGlzLmFjdGl2ZURhdGVIYXNDaGFuZ2VkICYmXG4gICAgICB0aGlzLmhhc1Rvb2x0aXBcbiAgICApIHtcbiAgICAgIHRoaXMuI2FjdGl2ZVVpZCA9IHRoaXMuZGF0ZS51aWQ7XG4gICAgICB0aGlzLiNzaG93VG9vbHRpcCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc1Rvb2x0aXApIHtcbiAgICAgIHRoaXMuI2RhdGVwaWNrZXJTZXJ2aWNlLmtleURhdGVQb3BvdmVyU3RyZWFtXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLiNhY3RpdmVVaWQgPSBkYXRlLnVpZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jYWN0aXZlVWlkID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIElmIHRoaXMgZGF5IGhhcyBhbiBvcGVuIHBvcG92ZXIgYW5kIHRoZXkgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhlIGRheSBjbG9zZSB0aGUgcG9wb3Zlci5cbiAgICAgICAgICBpZiAodGhpcy5kYXRlPy51aWQgIT09IHRoaXMuI2FjdGl2ZVVpZCkge1xuICAgICAgICAgICAgdGhpcy4jaGlkZVRvb2x0aXAoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25EYXlNb3VzZWVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuI2NhbmNlbFBvcG92ZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5oYXNUb29sdGlwKSB7XG4gICAgICB0aGlzLiNzaG93VG9vbHRpcCgpO1xuICAgICAgdGhpcy4jZGF0ZXBpY2tlclNlcnZpY2Uua2V5RGF0ZVBvcG92ZXJTdHJlYW0ubmV4dCh0aGlzLmRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkRheU1vdXNlbGVhdmUoKTogdm9pZCB7XG4gICAgdGhpcy4jY2FuY2VsUG9wb3ZlciA9IHRydWU7XG4gICAgaWYgKHRoaXMuaGFzVG9vbHRpcCkge1xuICAgICAgdGhpcy4jaGlkZVRvb2x0aXAoKTtcbiAgICB9XG4gICAgdGhpcy4jZGF0ZXBpY2tlclNlcnZpY2Uua2V5RGF0ZVBvcG92ZXJTdHJlYW0ubmV4dCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIG9uUG9wb3ZlckNsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNwb3BvdmVyT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uUG9wb3Zlck9wZW5lZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNwb3BvdmVyT3BlbiA9IHRydWU7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jY2FuY2VsUG9wb3Zlcikge1xuICAgICAgLy8gSWYgdGhlIHBvcG92ZXIgZ2V0cyBvcGVuZWQganVzdCBhcyBhIG1vdXNlb3V0IGV2ZW50IGhhcHBlbnMsIGNsb3NlIGl0LlxuICAgICAgdGhpcy4jaGlkZVRvb2x0aXAoKTtcbiAgICAgIHRoaXMuI2NhbmNlbFBvcG92ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0S2V5RGF0ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaGFzVG9vbHRpcCAmJiB0aGlzLmRhdGU/LmtleURhdGVUZXh0XG4gICAgICA/IHRoaXMuZGF0ZS5rZXlEYXRlVGV4dC5qb2luKCcsICcpXG4gICAgICA6ICcnO1xuICB9XG5cbiAgI2hpZGVUb29sdGlwKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI3BvcG92ZXJPcGVuKSB7XG4gICAgICB0aGlzLnBvcG92ZXJDb250cm9sbGVyLm5leHQoeyB0eXBlOiBTa3lQb3BvdmVyTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgI3Nob3dUb29sdGlwKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuaGFzVG9vbHRpcCAmJiAhdGhpcy4jcG9wb3Zlck9wZW4pIHtcbiAgICAgIC8qKlxuICAgICAgICogRGVsYXkgMS8yIHNlY29uZCBiZWZvcmUgb3BlbmluZyB0aGUgcG9wb3ZlciBhcyBsb25nIGFzIG1vdXNlIGhhc24ndCBtb3ZlZCBvZmYgdGhlIGRhdGUuXG4gICAgICAgKi9cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuI2NhbmNlbFBvcG92ZXIgJiYgdGhpcy4jYWN0aXZlVWlkID09PSB0aGlzLmRhdGU/LnVpZCkge1xuICAgICAgICAgIHRoaXMucG9wb3ZlckNvbnRyb2xsZXIubmV4dCh7IHR5cGU6IFNreVBvcG92ZXJNZXNzYWdlVHlwZS5PcGVuIH0pO1xuICAgICAgICB9XG4gICAgICB9LCA1MDApO1xuICAgIH1cbiAgfVxufVxuIiwiQGlmIChoYXNUb29sdGlwKSB7XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kYXlwaWNrZXItY2VsbFwiXG4gICAgc2t5UG9wb3ZlclBsYWNlbWVudD1cImxlZnRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0S2V5RGF0ZUxhYmVsKClcIlxuICAgIFtza3lQb3BvdmVyXT1cImRheUluZm9Qb3BvdmVyXCJcbiAgICBbc2t5UG9wb3Zlck1lc3NhZ2VTdHJlYW1dPVwicG9wb3ZlckNvbnRyb2xsZXJcIlxuICAgIChtb3VzZWVudGVyKT1cIm9uRGF5TW91c2VlbnRlcigpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJvbkRheU1vdXNlbGVhdmUoKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF5cGlja2VyQnV0dG9uVGVtcGxhdGVSZWZcIiAvPlxuICAgIDxza3ktcG9wb3ZlclxuICAgICAgI2RheUluZm9Qb3BvdmVyXG4gICAgICAocG9wb3ZlckNsb3NlZCk9XCJvblBvcG92ZXJDbG9zZWQoKVwiXG4gICAgICAocG9wb3Zlck9wZW5lZCk9XCJvblBvcG92ZXJPcGVuZWQoKVwiXG4gICAgPlxuICAgICAgQGZvciAodGV4dCBvZiBkYXRlPy5rZXlEYXRlVGV4dDsgdHJhY2sgdGV4dCkge1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgIHt7IHRleHQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9za3ktcG9wb3Zlcj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRheXBpY2tlci1jZWxsXCJcbiAgICAobW91c2VlbnRlcik9XCJvbkRheU1vdXNlZW50ZXIoKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwib25EYXlNb3VzZWxlYXZlKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRheXBpY2tlckJ1dHRvblRlbXBsYXRlUmVmXCIgLz5cbiAgPC9kaXY+XG59XG5cbjxuZy10ZW1wbGF0ZSAjZGF5cGlja2VyQnV0dG9uVGVtcGxhdGVSZWY+XG4gIDxza3ktZGF5cGlja2VyLWJ1dHRvbiBbZGF0ZV09XCJkYXRlXCIgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
@@ -1,220 +0,0 @@
|
|
1
|
-
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
2
|
-
import { Subject } from 'rxjs';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
import * as i1 from "./datepicker-calendar-inner.component";
|
5
|
-
import * as i2 from "@skyux/indicators";
|
6
|
-
import * as i3 from "./daypicker-cell.component";
|
7
|
-
/**
|
8
|
-
* @internal
|
9
|
-
*/
|
10
|
-
export class SkyDayPickerComponent {
|
11
|
-
set customDates(value) {
|
12
|
-
/* istanbul ignore else */
|
13
|
-
if (value) {
|
14
|
-
this.#applyCustomDates(value, this.rows);
|
15
|
-
}
|
16
|
-
}
|
17
|
-
#daysInMonth;
|
18
|
-
#initialDate;
|
19
|
-
#ngUnsubscribe;
|
20
|
-
constructor(datepicker) {
|
21
|
-
this.calendarDateRangeChange = new EventEmitter();
|
22
|
-
this.isWaiting = false;
|
23
|
-
this.activeDateHasChanged = false;
|
24
|
-
this.labels = [];
|
25
|
-
this.title = '';
|
26
|
-
this.rows = [];
|
27
|
-
this.weekNumbers = [];
|
28
|
-
this.#daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
29
|
-
this.#ngUnsubscribe = new Subject();
|
30
|
-
this.datepicker = datepicker;
|
31
|
-
}
|
32
|
-
ngOnInit() {
|
33
|
-
this.datepicker.stepDay = { months: 1 };
|
34
|
-
this.#initialDate = this.datepicker.activeDate.getDate();
|
35
|
-
this.datepicker.setRefreshViewHandler(() => this.#refreshDayView(), 'day');
|
36
|
-
this.datepicker.setCompareHandler(this.#compareDays, 'day');
|
37
|
-
this.datepicker.setKeydownHandler((key, event) => {
|
38
|
-
this.#keydownDays(key, event);
|
39
|
-
}, 'day');
|
40
|
-
this.datepicker.refreshView();
|
41
|
-
}
|
42
|
-
ngOnDestroy() {
|
43
|
-
this.#ngUnsubscribe.next();
|
44
|
-
this.#ngUnsubscribe.complete();
|
45
|
-
}
|
46
|
-
getDates(startDate, n) {
|
47
|
-
const dates = new Array(n);
|
48
|
-
let current = new Date(startDate.getTime());
|
49
|
-
let i = 0;
|
50
|
-
let date;
|
51
|
-
while (i < n) {
|
52
|
-
date = new Date(current.getTime());
|
53
|
-
date = this.datepicker.fixTimeZone(date);
|
54
|
-
dates[i++] = date;
|
55
|
-
current = new Date(current.getFullYear(), current.getMonth(), current.getDate() + 1);
|
56
|
-
}
|
57
|
-
return dates;
|
58
|
-
}
|
59
|
-
#compareDays(date1, date2) {
|
60
|
-
const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
|
61
|
-
const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
|
62
|
-
return d1.getTime() - d2.getTime();
|
63
|
-
}
|
64
|
-
#refreshDayView() {
|
65
|
-
const year = this.datepicker.activeDate.getFullYear();
|
66
|
-
const month = this.datepicker.activeDate.getMonth();
|
67
|
-
const firstDayOfMonth = new Date(year, month, 1);
|
68
|
-
const difference = this.datepicker.startingDay - firstDayOfMonth.getDay();
|
69
|
-
const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;
|
70
|
-
const firstDate = new Date(firstDayOfMonth.getTime());
|
71
|
-
if (this.datepicker.activeDate.getDate() !== this.#initialDate) {
|
72
|
-
this.activeDateHasChanged = true;
|
73
|
-
}
|
74
|
-
/* istanbul ignore else */
|
75
|
-
/* sanity check */
|
76
|
-
if (numDisplayedFromPreviousMonth > 0) {
|
77
|
-
firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
|
78
|
-
}
|
79
|
-
// 42 is the number of days on a six-week calendar
|
80
|
-
const days = this.getDates(firstDate, 42);
|
81
|
-
const pickerDates = [];
|
82
|
-
for (let i = 0; i < 42; i++) {
|
83
|
-
const _dateObject = this.datepicker.createDateObject(days[i], this.datepicker.formatDay, days[i].getMonth() !== month, this.datepicker.datepickerId + '-' + i);
|
84
|
-
pickerDates[i] = _dateObject;
|
85
|
-
}
|
86
|
-
this.labels = [];
|
87
|
-
for (let j = 0; j < 7; j++) {
|
88
|
-
this.labels[j] = {};
|
89
|
-
this.labels[j].abbr = this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);
|
90
|
-
this.labels[j].full = this.datepicker.dateFilter(pickerDates[j].date, 'EEEE');
|
91
|
-
}
|
92
|
-
const oldDateRange = this.#getDateRange(this.rows);
|
93
|
-
this.rows = this.datepicker.createCalendarRows(pickerDates, 7);
|
94
|
-
const newDateRange = this.#getDateRange(this.rows);
|
95
|
-
if (!this.#dateRangeRowsAreEqual(oldDateRange, newDateRange)) {
|
96
|
-
// Safety check
|
97
|
-
/* istanbul ignore else */
|
98
|
-
if (newDateRange) {
|
99
|
-
this.calendarDateRangeChange.next({
|
100
|
-
startDate: newDateRange.startDate,
|
101
|
-
endDate: newDateRange.endDate,
|
102
|
-
});
|
103
|
-
}
|
104
|
-
else {
|
105
|
-
this.calendarDateRangeChange.next(undefined);
|
106
|
-
}
|
107
|
-
}
|
108
|
-
return this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);
|
109
|
-
}
|
110
|
-
#keydownDays(key, event) {
|
111
|
-
let date = this.datepicker.activeDate.getDate();
|
112
|
-
/* istanbul ignore else */
|
113
|
-
/* sanity check */
|
114
|
-
if (key === 'arrowleft') {
|
115
|
-
date = date - 1;
|
116
|
-
}
|
117
|
-
else if (key === 'arrowup') {
|
118
|
-
date = date - 7;
|
119
|
-
}
|
120
|
-
else if (key === 'arrowright') {
|
121
|
-
date = date + 1;
|
122
|
-
}
|
123
|
-
else if (key === 'arrowdown') {
|
124
|
-
date = date + 7;
|
125
|
-
}
|
126
|
-
else if (key === 'pageup' || key === 'pagedown') {
|
127
|
-
const month = this.datepicker.activeDate.getMonth() + (key === 'pageup' ? -1 : 1);
|
128
|
-
this.datepicker.activeDate.setMonth(month, 1);
|
129
|
-
date = Math.min(this.#getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);
|
130
|
-
}
|
131
|
-
else if (key === 'home') {
|
132
|
-
date = 1;
|
133
|
-
}
|
134
|
-
else if (key === 'end') {
|
135
|
-
date = this.#getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth());
|
136
|
-
}
|
137
|
-
this.datepicker.activeDate.setDate(date);
|
138
|
-
this.datepicker.announceDate(this.datepicker.activeDate, this.datepicker.formatDayLabel);
|
139
|
-
}
|
140
|
-
#getDaysInMonth(year, month) {
|
141
|
-
return month === 1 &&
|
142
|
-
year % 4 === 0 &&
|
143
|
-
(year % 400 === 0 || year % 100 !== 0)
|
144
|
-
? 29
|
145
|
-
: this.#daysInMonth[month];
|
146
|
-
}
|
147
|
-
/**
|
148
|
-
* Applies custom date properties to the existing dates displayed in the calendar.
|
149
|
-
*/
|
150
|
-
#applyCustomDates(customDates, dateRows) {
|
151
|
-
let date;
|
152
|
-
let newDate;
|
153
|
-
let dateIndex;
|
154
|
-
/* istanbul ignore else */
|
155
|
-
if (customDates && dateRows) {
|
156
|
-
customDates.forEach((customDate) => {
|
157
|
-
dateIndex = -1;
|
158
|
-
dateRows.forEach((row) => {
|
159
|
-
if (dateIndex === -1) {
|
160
|
-
dateIndex = row.findIndex((d) => {
|
161
|
-
return d.date.getTime() === customDate.date.getTime();
|
162
|
-
});
|
163
|
-
if (dateIndex > -1) {
|
164
|
-
date = row[dateIndex];
|
165
|
-
// Replace the date with a new instance so the display gets updated.
|
166
|
-
newDate = {
|
167
|
-
current: date.current,
|
168
|
-
date: date.date,
|
169
|
-
disabled: !!date.disabled || !!customDate.disabled,
|
170
|
-
keyDate: !!customDate.keyDate || !!date.keyDate,
|
171
|
-
keyDateText: customDate.keyDateText || date.keyDateText,
|
172
|
-
label: date.label,
|
173
|
-
secondary: date.secondary,
|
174
|
-
selected: date.selected,
|
175
|
-
uid: date.uid,
|
176
|
-
};
|
177
|
-
row[dateIndex] = newDate;
|
178
|
-
}
|
179
|
-
}
|
180
|
-
});
|
181
|
-
});
|
182
|
-
}
|
183
|
-
}
|
184
|
-
#dateRangeRowsAreEqual(rangeA, rangeB) {
|
185
|
-
/* istanbul ignore if */
|
186
|
-
if (!rangeA && !rangeB) {
|
187
|
-
return true;
|
188
|
-
}
|
189
|
-
else if (rangeA && rangeB) {
|
190
|
-
return (this.#compareDays(rangeA.startDate, rangeB.startDate) === 0 &&
|
191
|
-
this.#compareDays(rangeA.endDate, rangeB.endDate) === 0);
|
192
|
-
}
|
193
|
-
else {
|
194
|
-
return false;
|
195
|
-
}
|
196
|
-
}
|
197
|
-
#getDateRange(rows) {
|
198
|
-
/* istanbul ignore else */
|
199
|
-
if (rows && rows.length > 0) {
|
200
|
-
return {
|
201
|
-
startDate: rows[0][0].date,
|
202
|
-
endDate: rows[rows.length - 1][rows[rows.length - 1].length - 1].date,
|
203
|
-
};
|
204
|
-
}
|
205
|
-
return undefined;
|
206
|
-
}
|
207
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyDayPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component }); }
|
208
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: SkyDayPickerComponent, selector: "sky-daypicker", inputs: { customDates: "customDates", isWaiting: "isWaiting" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange" }, ngImport: i0, template: "<table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId + '-title'\"\n>\n <thead>\n <tr>\n @for (label of labels; track label.full) {\n <th scope=\"col\" class=\"sky-datepicker-center sky-datepicker-weekdays\">\n <!-- display: inline -->\n <span\n class=\"sky-datepicker-weekday-text\"\n [attr.aria-label]=\"label.full\"\n >{{ label.abbr }}</span\n >\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <!-- Wait indicator for async custom date stream -->\n <sky-wait [isWaiting]=\"isWaiting\" />\n @for (row of rows; track $index) {\n <tr role=\"row\">\n @for (date of row; track date.uid) {\n <td class=\"sky-datepicker-center\" role=\"gridcell\" [id]=\"date.uid\">\n <sky-daypicker-cell\n [activeDateHasChanged]=\"activeDateHasChanged\"\n [date]=\"date\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: i2.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking", "screenReaderCompletedText"] }, { kind: "component", type: i3.SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: ["activeDateHasChanged", "date"] }] }); }
|
209
|
-
}
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyDayPickerComponent, decorators: [{
|
211
|
-
type: Component,
|
212
|
-
args: [{ selector: 'sky-daypicker', template: "<table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId + '-title'\"\n>\n <thead>\n <tr>\n @for (label of labels; track label.full) {\n <th scope=\"col\" class=\"sky-datepicker-center sky-datepicker-weekdays\">\n <!-- display: inline -->\n <span\n class=\"sky-datepicker-weekday-text\"\n [attr.aria-label]=\"label.full\"\n >{{ label.abbr }}</span\n >\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <!-- Wait indicator for async custom date stream -->\n <sky-wait [isWaiting]=\"isWaiting\" />\n @for (row of rows; track $index) {\n <tr role=\"row\">\n @for (date of row; track date.uid) {\n <td class=\"sky-datepicker-center\" role=\"gridcell\" [id]=\"date.uid\">\n <sky-daypicker-cell\n [activeDateHasChanged]=\"activeDateHasChanged\"\n [date]=\"date\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n" }]
|
213
|
-
}], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }], propDecorators: { customDates: [{
|
214
|
-
type: Input
|
215
|
-
}], calendarDateRangeChange: [{
|
216
|
-
type: Output
|
217
|
-
}], isWaiting: [{
|
218
|
-
type: Input
|
219
|
-
}] } });
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXlwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2RheXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBaUIvQjs7R0FFRztBQUtILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsSUFDVyxXQUFXLENBQUMsS0FBNEM7UUFDakUsMEJBQTBCO1FBQzFCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQWtCRCxZQUFZLENBQThEO0lBQzFFLFlBQVksQ0FBcUI7SUFDakMsY0FBYyxDQUF1QjtJQUVyQyxZQUFZLFVBQStDO1FBbkJwRCw0QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFFOUMsQ0FBQztRQUdHLGNBQVMsR0FBd0IsS0FBSyxDQUFDO1FBRXZDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixXQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ25CLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxTQUFJLEdBQTBCLEVBQUUsQ0FBQztRQUNqQyxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUlsQyxpQkFBWSxHQUFhLENBQUMsRUFBRSxFQUFFLEVB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LElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDdEUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOzhHQW5RVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixzTENqQ2xDLDJoQ0FvQ0E7OzJGREhhLHFCQUFxQjtrQkFKakMsU0FBUzsrQkFDRSxlQUFlO3dHQUtkLFdBQVc7c0JBRHJCLEtBQUs7Z0JBU0MsdUJBQXVCO3NCQUQ3QixNQUFNO2dCQU1BLFNBQVM7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckN1c3RvbURhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItY3VzdG9tLWRhdGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckRhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItZGF0ZSc7XG5cbi8qKlxuICogSGVscGVyIGludGVyZmFjZSB0byBjb21wYXJlIGRhdGUgcmFuZ2VzLlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lEYXRlUmFuZ2Uge1xuICBlbmREYXRlOiBEYXRlO1xuXG4gIHN0YXJ0RGF0ZTogRGF0ZTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRheXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnZGF5cGlja2VyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF5UGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGN1c3RvbURhdGVzKHZhbHVlOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2FwcGx5Q3VzdG9tRGF0ZXModmFsdWUsIHRoaXMucm93cyk7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVSYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlIHwgdW5kZWZpbmVkXG4gID4oKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNXYWl0aW5nOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgcHVibGljIGFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gZmFsc2U7XG4gIHB1YmxpYyBsYWJlbHM6IGFueVtdID0gW107XG4gIHB1YmxpYyB0aXRsZSA9ICcnO1xuICBwdWJsaWMgcm93czogU2t5RGF0ZXBpY2tlckRhdGVbXVtdID0gW107XG4gIHB1YmxpYyB3ZWVrTnVtYmVyczogbnVtYmVyW10gPSBbXTtcbiAgcHVibGljIGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50O1xuICBwdWJsaWMgQ1VSUkVOVF9USEVNRV9URU1QTEFURTogYW55O1xuXG4gICNkYXlzSW5Nb250aDogbnVtYmVyW10gPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG4gICNpbml0aWFsRGF0ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQpIHtcbiAgICB0aGlzLmRhdGVwaWNrZXIgPSBkYXRlcGlja2VyO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZXBpY2tlci5zdGVwRGF5ID0geyBtb250aHM6IDEgfTtcbiAgICB0aGlzLiNpbml0aWFsRGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldERhdGUoKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRSZWZyZXNoVmlld0hhbmRsZXIoKCkgPT4gdGhpcy4jcmVmcmVzaERheVZpZXcoKSwgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldENvbXBhcmVIYW5kbGVyKHRoaXMuI2NvbXBhcmVEYXlzLCAnZGF5Jyk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0S2V5ZG93bkhhbmRsZXIoKGtleTogc3RyaW5nLCBldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgdGhpcy4ja2V5ZG93bkRheXMoa2V5LCBldmVudCk7XG4gICAgfSwgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnJlZnJlc2hWaWV3KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERhdGVzKHN0YXJ0RGF0ZTogRGF0ZSwgbjogbnVtYmVyKTogRGF0ZVtdIHtcbiAgICBjb25zdCBkYXRlczogRGF0ZVtdID0gbmV3IEFycmF5KG4pO1xuICAgIGxldCBjdXJyZW50ID0gbmV3IERhdGUoc3RhcnREYXRlLmdldFRpbWUoKSk7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBkYXRlOiBEYXRlO1xuICAgIHdoaWxlIChpIDwgbikge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKGN1cnJlbnQuZ2V0VGltZSgpKTtcbiAgICAgIGRhdGUgPSB0aGlzLmRhdGVwaWNrZXIuZml4VGltZVpvbmUoZGF0ZSk7XG4gICAgICBkYXRlc1tpKytdID0gZGF0ZTtcbiAgICAgIGN1cnJlbnQgPSBuZXcgRGF0ZShcbiAgICAgICAgY3VycmVudC5nZXRGdWxsWWVhcigpLFxuICAgICAgICBjdXJyZW50LmdldE1vbnRoKCksXG4gICAgICAgIGN1cnJlbnQuZ2V0RGF0ZSgpICsgMSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlcztcbiAgfVxuXG4gICNjb21wYXJlRGF5cyhkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpOiBudW1iZXIge1xuICAgIGNvbnN0IGQxID0gbmV3IERhdGUoZGF0ZTEuZ2V0RnVsbFllYXIoKSwgZGF0ZTEuZ2V0TW9udGgoKSwgZGF0ZTEuZ2V0RGF0ZSgpKTtcbiAgICBjb25zdCBkMiA9IG5ldyBEYXRlKGRhdGUyLmdldEZ1bGxZZWFyKCksIGRhdGUyLmdldE1vbnRoKCksIGRhdGUyLmdldERhdGUoKSk7XG4gICAgcmV0dXJuIGQxLmdldFRpbWUoKSAtIGQyLmdldFRpbWUoKTtcbiAgfVxuXG4gICNyZWZyZXNoRGF5VmlldygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHllYXIgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMuZGF0ZXBpY2tlci5zdGFydGluZ0RheSAtIGZpcnN0RGF5T2ZNb250aC5nZXREYXkoKTtcbiAgICBjb25zdCBudW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCA9XG4gICAgICBkaWZmZXJlbmNlID4gMCA/IDcgLSBkaWZmZXJlbmNlIDogLWRpZmZlcmVuY2U7XG4gICAgY29uc3QgZmlyc3REYXRlID0gbmV3IERhdGUoZmlyc3REYXlPZk1vbnRoLmdldFRpbWUoKSk7XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RGF0ZSgpICE9PSB0aGlzLiNpbml0aWFsRGF0ZSkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlSGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAobnVtRGlzcGxheWVkRnJvbVByZXZpb3VzTW9udGggPiAwKSB7XG4gICAgICBmaXJzdERhdGUuc2V0RGF0ZSgtbnVtRGlzcGxheWVkRnJvbVByZXZpb3VzTW9udGggKyAxKTtcbiAgICB9XG5cbiAgICAvLyA0MiBpcyB0aGUgbnVtYmVyIG9mIGRheXMgb24gYSBzaXgtd2VlayBjYWxlbmRhclxuICAgIGNvbnN0IGRheXM6IERhdGVbXSA9IHRoaXMuZ2V0RGF0ZXMoZmlyc3REYXRlLCA0Mik7XG4gICAgY29uc3QgcGlja2VyRGF0ZXM6IFNreURhdGVwaWNrZXJEYXRlW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQyOyBpKyspIHtcbiAgICAgIGNvbnN0IF9kYXRlT2JqZWN0ID0gdGhpcy5kYXRlcGlja2VyLmNyZWF0ZURhdGVPYmplY3QoXG4gICAgICAgIGRheXNbaV0sXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXREYXksXG4gICAgICAgIGRheXNbaV0uZ2V0TW9udGgoKSAhPT0gbW9udGgsXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5kYXRlcGlja2VySWQgKyAnLScgKyBpLFxuICAgICAgKTtcbiAgICAgIHBpY2tlckRhdGVzW2ldID0gX2RhdGVPYmplY3Q7XG4gICAgfVxuXG4gICAgdGhpcy5sYWJlbHMgPSBbXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDc7IGorKykge1xuICAgICAgdGhpcy5sYWJlbHNbal0gPSB7fTtcbiAgICAgIHRoaXMubGFiZWxzW2pdLmFiYnIgPSB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcihcbiAgICAgICAgcGlja2VyRGF0ZXNbal0uZGF0ZSxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdERheUhlYWRlcixcbiAgICAgICk7XG4gICAgICB0aGlzLmxhYmVsc1tqXS5mdWxsID0gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXIoXG4gICAgICAgIHBpY2tlckRhdGVzW2pdLmRhdGUsXG4gICAgICAgICdFRUVFJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkRGF0ZVJhbmdlID0gdGhpcy4jZ2V0RGF0ZVJhbmdlKHRoaXMucm93cyk7XG4gICAgdGhpcy5yb3dzID0gdGhpcy5kYXRlcGlja2VyLmNyZWF0ZUNhbGVuZGFyUm93cyhwaWNrZXJEYXRlcywgNyk7XG4gICAgY29uc3QgbmV3RGF0ZVJhbmdlID0gdGhpcy4jZ2V0RGF0ZVJhbmdlKHRoaXMucm93cyk7XG5cbiAgICBpZiAoIXRoaXMuI2RhdGVSYW5nZVJvd3NBcmVFcXVhbChvbGREYXRlUmFuZ2UsIG5ld0RhdGVSYW5nZSkpIHtcbiAgICAgIC8vIFNhZmV0eSBjaGVja1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdEYXRlUmFuZ2UpIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRhdGVSYW5nZUNoYW5nZS5uZXh0KHtcbiAgICAgICAgICBzdGFydERhdGU6IG5ld0RhdGVSYW5nZS5zdGFydERhdGUsXG4gICAgICAgICAgZW5kRGF0ZTogbmV3RGF0ZVJhbmdlLmVuZERhdGUsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRhdGVSYW5nZUNoYW5nZS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlci5kYXRlRmlsdGVyKFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUsXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0RGF5VGl0bGUsXG4gICAgKTtcbiAgfVxuXG4gICNrZXlkb3duRGF5cyhrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldERhdGUoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChrZXkgPT09ICdhcnJvd2xlZnQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSAtIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcnJvd3VwJykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSA3O1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYXJyb3dyaWdodCcpIHtcbiAgICAgIGRhdGUgPSBkYXRlICsgMTtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2Fycm93ZG93bicpIHtcbiAgICAgIGRhdGUgPSBkYXRlICsgNztcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3BhZ2V1cCcgfHwga2V5ID09PSAncGFnZWRvd24nKSB7XG4gICAgICBjb25zdCBtb250aCA9XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKCkgKyAoa2V5ID09PSAncGFnZXVwJyA/IC0xIDogMSk7XG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5zZXRNb250aChtb250aCwgMSk7XG4gICAgICBkYXRlID0gTWF0aC5taW4oXG4gICAgICAgIHRoaXMuI2dldERheXNJbk1vbnRoKFxuICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgKSxcbiAgICAgICAgZGF0ZSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdob21lJykge1xuICAgICAgZGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdlbmQnKSB7XG4gICAgICBkYXRlID0gdGhpcy4jZ2V0RGF5c0luTW9udGgoXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKCksXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5zZXREYXRlKGRhdGUpO1xuICAgIHRoaXMuZGF0ZXBpY2tlci5hbm5vdW5jZURhdGUoXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZSxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXREYXlMYWJlbCxcbiAgICApO1xuICB9XG5cbiAgI2dldERheXNJbk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIG1vbnRoID09PSAxICYmXG4gICAgICB5ZWFyICUgNCA9PT0gMCAmJlxuICAgICAgKHllYXIgJSA0MDAgPT09IDAgfHwgeWVhciAlIDEwMCAhPT0gMClcbiAgICAgID8gMjlcbiAgICAgIDogdGhpcy4jZGF5c0luTW9udGhbbW9udGhdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgY3VzdG9tIGRhdGUgcHJvcGVydGllcyB0byB0aGUgZXhpc3RpbmcgZGF0ZXMgZGlzcGxheWVkIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gICNhcHBseUN1c3RvbURhdGVzKFxuICAgIGN1c3RvbURhdGVzOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdLFxuICAgIGRhdGVSb3dzOiBTa3lEYXRlcGlja2VyRGF0ZVtdW10sXG4gICk6IHZvaWQge1xuICAgIGxldCBkYXRlOiBTa3lEYXRlcGlja2VyRGF0ZTtcbiAgICBsZXQgbmV3RGF0ZTogU2t5RGF0ZXBpY2tlckRhdGU7XG4gICAgbGV0IGRhdGVJbmRleDogbnVtYmVyO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY3VzdG9tRGF0ZXMgJiYgZGF0ZVJvd3MpIHtcbiAgICAgIGN1c3RvbURhdGVzLmZvckVhY2goKGN1c3RvbURhdGUpID0+IHtcbiAgICAgICAgZGF0ZUluZGV4ID0gLTE7XG4gICAgICAgIGRhdGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGlmIChkYXRlSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBkYXRlSW5kZXggPSByb3cuZmluZEluZGV4KChkKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBkLmRhdGUuZ2V0VGltZSgpID09PSBjdXN0b21EYXRlLmRhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZGF0ZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgZGF0ZSA9IHJvd1tkYXRlSW5kZXhdO1xuICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBkYXRlIHdpdGggYSBuZXcgaW5zdGFuY2Ugc28gdGhlIGRpc3BsYXkgZ2V0cyB1cGRhdGVkLlxuICAgICAgICAgICAgICBuZXdEYXRlID0ge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGRhdGUuY3VycmVudCxcbiAgICAgICAgICAgICAgICBkYXRlOiBkYXRlLmRhdGUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhZGF0ZS5kaXNhYmxlZCB8fCAhIWN1c3RvbURhdGUuZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAga2V5RGF0ZTogISFjdXN0b21EYXRlLmtleURhdGUgfHwgISFkYXRlLmtleURhdGUsXG4gICAgICAgICAgICAgICAga2V5RGF0ZVRleHQ6IGN1c3RvbURhdGUua2V5RGF0ZVRleHQgfHwgZGF0ZS5rZXlEYXRlVGV4dCxcbiAgICAgICAgICAgICAgICBsYWJlbDogZGF0ZS5sYWJlbCxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IGRhdGUuc2Vjb25kYXJ5LFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBkYXRlLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAgIHVpZDogZGF0ZS51aWQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHJvd1tkYXRlSW5kZXhdID0gbmV3RGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI2RhdGVSYW5nZVJvd3NBcmVFcXVhbChcbiAgICByYW5nZUE/OiBTa3lEYXRlUmFuZ2UsXG4gICAgcmFuZ2VCPzogU2t5RGF0ZVJhbmdlLFxuICApOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXJhbmdlQSAmJiAhcmFuZ2VCKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHJhbmdlQSAmJiByYW5nZUIpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuI2NvbXBhcmVEYXlzKHJhbmdlQS5zdGFydERhdGUsIHJhbmdlQi5zdGFydERhdGUpID09PSAwICYmXG4gICAgICAgIHRoaXMuI2NvbXBhcmVEYXlzKHJhbmdlQS5lbmREYXRlLCByYW5nZUIuZW5kRGF0ZSkgPT09IDBcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAjZ2V0RGF0ZVJhbmdlKHJvd3M6IFNreURhdGVwaWNrZXJEYXRlW11bXSk6IFNreURhdGVSYW5nZSB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocm93cyAmJiByb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0RGF0ZTogcm93c1swXVswXS5kYXRlLFxuICAgICAgICBlbmREYXRlOiByb3dzW3Jvd3MubGVuZ3RoIC0gMV1bcm93c1tyb3dzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIDFdLmRhdGUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8dGFibGVcbiAgY2xhc3M9XCJza3ktZGF5cGlja2VyLXRhYmxlXCJcbiAgcm9sZT1cImdyaWRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZGF0ZXBpY2tlci5kYXRlcGlja2VySWQgKyAnLXRpdGxlJ1wiXG4+XG4gIDx0aGVhZD5cbiAgICA8dHI+XG4gICAgICBAZm9yIChsYWJlbCBvZiBsYWJlbHM7IHRyYWNrIGxhYmVsLmZ1bGwpIHtcbiAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jZW50ZXIgc2t5LWRhdGVwaWNrZXItd2Vla2RheXNcIj5cbiAgICAgICAgICA8IS0tIGRpc3BsYXk6IGlubGluZSAtLT5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci13ZWVrZGF5LXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbC5mdWxsXCJcbiAgICAgICAgICAgID57eyBsYWJlbC5hYmJyIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3RoPlxuICAgICAgfVxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keT5cbiAgICA8IS0tIFdhaXQgaW5kaWNhdG9yIGZvciBhc3luYyBjdXN0b20gZGF0ZSBzdHJlYW0gLS0+XG4gICAgPHNreS13YWl0IFtpc1dhaXRpbmddPVwiaXNXYWl0aW5nXCIgLz5cbiAgICBAZm9yIChyb3cgb2Ygcm93czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICBAZm9yIChkYXRlIG9mIHJvdzsgdHJhY2sgZGF0ZS51aWQpIHtcbiAgICAgICAgICA8dGQgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jZW50ZXJcIiByb2xlPVwiZ3JpZGNlbGxcIiBbaWRdPVwiZGF0ZS51aWRcIj5cbiAgICAgICAgICAgIDxza3ktZGF5cGlja2VyLWNlbGxcbiAgICAgICAgICAgICAgW2FjdGl2ZURhdGVIYXNDaGFuZ2VkXT1cImFjdGl2ZURhdGVIYXNDaGFuZ2VkXCJcbiAgICAgICAgICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgfVxuICA8L3Rib2R5PlxuPC90YWJsZT5cbiJdfQ==
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9mdXp6eS1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNreUZ1enp5RGF0ZSB7XG4gIC8qKlxuICAgKiBUaGUgZGF5IGluIGEgZnV6enkgZGF0ZSwgd2hlcmUgYDFgIHNldHMgdGhlIGRheVxuICAgKiB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBzcGVjaWZpZWQgbW9udGguXG4gICAqL1xuICBkYXk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtb250aCBpbiBhIGZ1enp5IGRhdGUsIHdoZXJlIGAxYCBzZXRzIHRoZSBtb250aCB0byBKYW51YXJ5LlxuICAgKi9cbiAgbW9udGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB5ZWFyIGluIGEgZnV6enkgZGF0ZS5cbiAgICovXG4gIHllYXI/OiBudW1iZXI7XG59XG4iXX0=
|