@ardium-ui/ui 3.4.4 → 3.5.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/esm2022/lib/_internal/disablable-component.mjs +1 -1
- package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +2 -2
- package/esm2022/lib/calendar/calendar.component.mjs +437 -0
- package/esm2022/lib/calendar/calendar.defaults.mjs +26 -0
- package/esm2022/lib/calendar/calendar.internal-types.mjs +2 -0
- package/esm2022/lib/calendar/calendar.module.mjs +24 -0
- package/esm2022/lib/calendar/calendar.types.mjs +6 -0
- package/esm2022/lib/calendar/index.mjs +5 -0
- package/esm2022/lib/calendar/views/days-view/days-view.component.mjs +282 -0
- package/esm2022/lib/calendar/views/days-view/days-view.helpers.mjs +65 -0
- package/esm2022/lib/calendar/views/months-view/months-view.component.mjs +245 -0
- package/esm2022/lib/calendar/views/months-view/months-view.helpers.mjs +22 -0
- package/esm2022/lib/calendar/views/years-view/years-view.component.mjs +244 -0
- package/esm2022/lib/calendar/views/years-view/years-view.helpers.mjs +14 -0
- package/esm2022/lib/inputs/date-input/date-input.component.mjs +357 -0
- package/esm2022/lib/inputs/date-input/date-input.defaults.mjs +38 -0
- package/esm2022/lib/inputs/date-input/date-input.directive.mjs +59 -0
- package/esm2022/lib/inputs/date-input/date-input.module.mjs +50 -0
- package/esm2022/lib/inputs/date-input/date-input.serializers.mjs +49 -0
- package/esm2022/lib/inputs/date-input/date-input.types.mjs +5 -0
- package/esm2022/lib/inputs/date-input/index.mjs +6 -0
- package/esm2022/public-api.mjs +3 -2
- package/fesm2022/ardium-ui-ui.mjs +1878 -52
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/disablable-component.d.ts +1 -1
- package/lib/calendar/calendar.component.d.ts +94 -0
- package/lib/calendar/calendar.defaults.d.ts +18 -0
- package/lib/calendar/calendar.internal-types.d.ts +4 -0
- package/lib/calendar/calendar.module.d.ts +14 -0
- package/lib/calendar/calendar.types.d.ts +83 -0
- package/lib/calendar/index.d.ts +4 -0
- package/lib/calendar/views/days-view/days-view.component.d.ts +68 -0
- package/lib/calendar/views/days-view/days-view.helpers.d.ts +20 -0
- package/lib/calendar/views/months-view/months-view.component.d.ts +61 -0
- package/lib/calendar/views/months-view/months-view.helpers.d.ts +3 -0
- package/lib/calendar/views/years-view/years-view.component.d.ts +59 -0
- package/lib/calendar/views/years-view/years-view.helpers.d.ts +3 -0
- package/lib/inputs/date-input/date-input.component.d.ts +95 -0
- package/lib/inputs/date-input/date-input.defaults.d.ts +30 -0
- package/lib/inputs/date-input/date-input.directive.d.ts +33 -0
- package/lib/inputs/date-input/date-input.module.d.ts +14 -0
- package/lib/inputs/date-input/date-input.serializers.d.ts +3 -0
- package/lib/inputs/date-input/date-input.types.d.ts +16 -0
- package/lib/inputs/date-input/index.d.ts +5 -0
- package/package.json +1 -1
- package/prebuilt-themes/default/calendar-OLD.css +294 -0
- package/prebuilt-themes/default/calendar-OLD.css.map +1 -0
- package/prebuilt-themes/default/calendar.css +100 -80
- package/prebuilt-themes/default/calendar.css.map +1 -1
- package/prebuilt-themes/default/inputs/date-input.css +68 -0
- package/prebuilt-themes/default/inputs/date-input.css.map +1 -0
- package/public-api.d.ts +2 -0
- package/themes/default/calendar-OLD.scss +183 -0
- package/themes/default/calendar.scss +120 -98
- package/themes/default/inputs/date-input.scss +32 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, HostListener, input, output, viewChild, } from '@angular/core';
|
|
2
|
+
import { isNull } from 'simple-bool';
|
|
3
|
+
import { getCalendarYearsArray, isYearOutOfRange } from './years-view.helpers';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "../../../buttons/icon-button/icon-button.component";
|
|
7
|
+
import * as i3 from "../../../icon/icon.component";
|
|
8
|
+
import * as i4 from "../../../buttons/button/button.component";
|
|
9
|
+
const TODAY = new Date();
|
|
10
|
+
export class YearsViewComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.tabIndex = input.required();
|
|
13
|
+
this.readOnly = input.required();
|
|
14
|
+
this.disabled = input.required();
|
|
15
|
+
this.autoFocus = input.required();
|
|
16
|
+
this._isUsingKeyboard = input.required();
|
|
17
|
+
this.activeYear = input.required();
|
|
18
|
+
this.selectedDate = input.required();
|
|
19
|
+
this.min = input.required();
|
|
20
|
+
this.max = input.required();
|
|
21
|
+
this.currentYearRangeStart = input.required();
|
|
22
|
+
this.yearsArray = computed(() => getCalendarYearsArray(this.currentYearRangeStart(), 24, this.min(), this.max()));
|
|
23
|
+
this.currentAriaLabel = computed(() => {
|
|
24
|
+
return this.highlightedYear()?.toString() ?? '';
|
|
25
|
+
});
|
|
26
|
+
//! outputs
|
|
27
|
+
this.triggerOpenMonthsView = output();
|
|
28
|
+
this.triggerOpenDaysView = output();
|
|
29
|
+
this.focusEvent = output({ alias: 'focus' });
|
|
30
|
+
this.blurEvent = output({ alias: 'blur' });
|
|
31
|
+
this.triggerSelectYear = output();
|
|
32
|
+
this.triggerChangeYearsViewPage = output();
|
|
33
|
+
this.triggerHighlightYear = output();
|
|
34
|
+
this.triggerHighlightNextYear = output();
|
|
35
|
+
this.triggerHighlightPreviousYear = output();
|
|
36
|
+
this.triggerHighlightFirstYear = output();
|
|
37
|
+
this.triggerHighlightLastYear = output();
|
|
38
|
+
this.triggerHighlightSameYearPreviousPage = output();
|
|
39
|
+
this.triggerHighlightSameYearNextPage = output();
|
|
40
|
+
//! calendar entry hover & click
|
|
41
|
+
this.highlightedYear = input.required();
|
|
42
|
+
//! focusing
|
|
43
|
+
this.focusableElement = viewChild.required('focusableElement');
|
|
44
|
+
//! templates
|
|
45
|
+
this.yearsViewHeaderTemplate = input.required();
|
|
46
|
+
this.yearTemplate = input.required();
|
|
47
|
+
//! template contexts
|
|
48
|
+
this.yearsViewHeaderContext = computed(() => {
|
|
49
|
+
const yearRangeStart = this.currentYearRangeStart();
|
|
50
|
+
const yearRangeEnd = yearRangeStart + 23;
|
|
51
|
+
const dateRange = {
|
|
52
|
+
low: new Date(yearRangeStart, 0, 1),
|
|
53
|
+
high: new Date(yearRangeEnd, 0, 1),
|
|
54
|
+
};
|
|
55
|
+
const yearRange = {
|
|
56
|
+
low: yearRangeStart,
|
|
57
|
+
high: yearRangeEnd,
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
nextPage: () => {
|
|
61
|
+
this.triggerChangeYearsViewPage.emit(1);
|
|
62
|
+
},
|
|
63
|
+
prevPage: () => {
|
|
64
|
+
this.triggerChangeYearsViewPage.emit(-1);
|
|
65
|
+
},
|
|
66
|
+
openMonthsView: () => {
|
|
67
|
+
this.triggerOpenMonthsView.emit();
|
|
68
|
+
},
|
|
69
|
+
openDaysView: () => {
|
|
70
|
+
this.triggerOpenDaysView.emit();
|
|
71
|
+
},
|
|
72
|
+
canGoToNextPage: !this.isYearOutOfRange(yearRangeEnd + 1),
|
|
73
|
+
canGoToPreviousPage: !this.isYearOutOfRange(yearRangeStart - 1),
|
|
74
|
+
yearRange: yearRange,
|
|
75
|
+
dateRange,
|
|
76
|
+
$implicit: dateRange,
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
this.yearContext = computed(() => {
|
|
80
|
+
return (year) => {
|
|
81
|
+
const date = new Date(year, 1, 1);
|
|
82
|
+
return {
|
|
83
|
+
value: year,
|
|
84
|
+
date,
|
|
85
|
+
$implicit: date,
|
|
86
|
+
select: (year) => {
|
|
87
|
+
this.triggerSelectYear.emit(year);
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
onMouseMove() {
|
|
94
|
+
if (this._isUsingKeyboard())
|
|
95
|
+
return;
|
|
96
|
+
if (this.highlightedYear())
|
|
97
|
+
this.triggerHighlightYear.emit(null);
|
|
98
|
+
}
|
|
99
|
+
ngAfterViewInit() {
|
|
100
|
+
if (!this.autoFocus())
|
|
101
|
+
return;
|
|
102
|
+
this.focus();
|
|
103
|
+
this.triggerHighlightYear.emit(this.currentYearRangeStart());
|
|
104
|
+
}
|
|
105
|
+
onCalendarYearMouseover(year) {
|
|
106
|
+
if (this._isUsingKeyboard() || this.disabled() || this.readOnly())
|
|
107
|
+
return;
|
|
108
|
+
this.triggerHighlightYear.emit(year);
|
|
109
|
+
}
|
|
110
|
+
onCalendarYearClick(year) {
|
|
111
|
+
if (this.disabled() || this.readOnly())
|
|
112
|
+
return;
|
|
113
|
+
this.triggerSelectYear.emit(year);
|
|
114
|
+
}
|
|
115
|
+
onYearGridFocus() {
|
|
116
|
+
if (this.disabled() || this.readOnly())
|
|
117
|
+
return;
|
|
118
|
+
this.triggerHighlightFirstYear.emit();
|
|
119
|
+
}
|
|
120
|
+
onYearGridBlur() {
|
|
121
|
+
if (this.disabled() || this.readOnly())
|
|
122
|
+
return;
|
|
123
|
+
this.triggerHighlightYear.emit(null);
|
|
124
|
+
}
|
|
125
|
+
onYearGridClick() {
|
|
126
|
+
if (this.disabled() || this.readOnly())
|
|
127
|
+
return;
|
|
128
|
+
if (this.highlightedYear() !== null)
|
|
129
|
+
return;
|
|
130
|
+
this.triggerHighlightFirstYear.emit();
|
|
131
|
+
}
|
|
132
|
+
//! helpers
|
|
133
|
+
isYearToday(year) {
|
|
134
|
+
return year === TODAY.getFullYear();
|
|
135
|
+
}
|
|
136
|
+
isYearSelected(year) {
|
|
137
|
+
if (year instanceof Date)
|
|
138
|
+
year = year.getFullYear();
|
|
139
|
+
return this.selectedDate() !== null && year === this.selectedDate()?.getFullYear();
|
|
140
|
+
}
|
|
141
|
+
isYearOutOfRange(year) {
|
|
142
|
+
return isYearOutOfRange(year, this.min(), this.max());
|
|
143
|
+
}
|
|
144
|
+
focus() {
|
|
145
|
+
this.focusableElement().nativeElement.focus();
|
|
146
|
+
}
|
|
147
|
+
//! keyboard controls
|
|
148
|
+
onMainGridKeydown(event) {
|
|
149
|
+
if (this.disabled() || this.readOnly())
|
|
150
|
+
return;
|
|
151
|
+
switch (event.code) {
|
|
152
|
+
case 'Space':
|
|
153
|
+
case 'Enter':
|
|
154
|
+
this._onEnterPress(event);
|
|
155
|
+
break;
|
|
156
|
+
case 'ArrowUp':
|
|
157
|
+
this._onArrowUpPress(event);
|
|
158
|
+
break;
|
|
159
|
+
case 'ArrowDown':
|
|
160
|
+
this._onArrowDownPress(event);
|
|
161
|
+
break;
|
|
162
|
+
case 'ArrowLeft':
|
|
163
|
+
this._onArrowLeftPress(event);
|
|
164
|
+
break;
|
|
165
|
+
case 'ArrowRight':
|
|
166
|
+
this._onArrowRightPress(event);
|
|
167
|
+
break;
|
|
168
|
+
case 'Home':
|
|
169
|
+
this._onHomePress(event);
|
|
170
|
+
break;
|
|
171
|
+
case 'End':
|
|
172
|
+
this._onEndPress(event);
|
|
173
|
+
break;
|
|
174
|
+
case 'PageUp':
|
|
175
|
+
this._onPageUpPress(event);
|
|
176
|
+
break;
|
|
177
|
+
case 'PageDown':
|
|
178
|
+
this._onPageDownPress(event);
|
|
179
|
+
break;
|
|
180
|
+
default:
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//select currently selected entry
|
|
185
|
+
_onEnterPress(event) {
|
|
186
|
+
event.preventDefault();
|
|
187
|
+
const year = this.highlightedYear();
|
|
188
|
+
if (isNull(year))
|
|
189
|
+
return;
|
|
190
|
+
this.triggerSelectYear.emit(year);
|
|
191
|
+
}
|
|
192
|
+
//highlight the entry one line below
|
|
193
|
+
_onArrowDownPress(event) {
|
|
194
|
+
event.preventDefault();
|
|
195
|
+
this.triggerHighlightNextYear.emit(4); //4 years per line
|
|
196
|
+
}
|
|
197
|
+
//highlight the entry one line above
|
|
198
|
+
_onArrowUpPress(event) {
|
|
199
|
+
event.preventDefault();
|
|
200
|
+
this.triggerHighlightPreviousYear.emit(4); //4 years per line
|
|
201
|
+
}
|
|
202
|
+
//highlight next entry
|
|
203
|
+
_onArrowRightPress(event) {
|
|
204
|
+
event.preventDefault();
|
|
205
|
+
this.triggerHighlightNextYear.emit(1);
|
|
206
|
+
}
|
|
207
|
+
//highlight previous entry
|
|
208
|
+
_onArrowLeftPress(event) {
|
|
209
|
+
event.preventDefault();
|
|
210
|
+
this.triggerHighlightPreviousYear.emit(1);
|
|
211
|
+
}
|
|
212
|
+
//highlight first entry on the page
|
|
213
|
+
_onHomePress(event) {
|
|
214
|
+
event.preventDefault();
|
|
215
|
+
this.triggerHighlightFirstYear.emit();
|
|
216
|
+
}
|
|
217
|
+
//highlight last entry on the page
|
|
218
|
+
_onEndPress(event) {
|
|
219
|
+
event.preventDefault();
|
|
220
|
+
this.triggerHighlightLastYear.emit();
|
|
221
|
+
}
|
|
222
|
+
//alone: highlight same entry on the previous page
|
|
223
|
+
//with alt: highlight same entry multiple pages before
|
|
224
|
+
_onPageUpPress(event) {
|
|
225
|
+
event.preventDefault();
|
|
226
|
+
this.triggerHighlightSameYearPreviousPage.emit(event.altKey);
|
|
227
|
+
}
|
|
228
|
+
//alone: highlight same entry on the next page
|
|
229
|
+
//with alt: highlight same entry multiple pages after
|
|
230
|
+
_onPageDownPress(event) {
|
|
231
|
+
event.preventDefault();
|
|
232
|
+
this.triggerHighlightSameYearNextPage.emit(event.altKey);
|
|
233
|
+
}
|
|
234
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YearsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
235
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: YearsViewComponent, selector: "ard-years-view", inputs: { tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: true, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: true, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: true, transformFunction: null }, _isUsingKeyboard: { classPropertyName: "_isUsingKeyboard", publicName: "_isUsingKeyboard", isSignal: true, isRequired: true, transformFunction: null }, activeYear: { classPropertyName: "activeYear", publicName: "activeYear", isSignal: true, isRequired: true, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: true, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: true, transformFunction: null }, currentYearRangeStart: { classPropertyName: "currentYearRangeStart", publicName: "currentYearRangeStart", isSignal: true, isRequired: true, transformFunction: null }, highlightedYear: { classPropertyName: "highlightedYear", publicName: "highlightedYear", isSignal: true, isRequired: true, transformFunction: null }, yearsViewHeaderTemplate: { classPropertyName: "yearsViewHeaderTemplate", publicName: "yearsViewHeaderTemplate", isSignal: true, isRequired: true, transformFunction: null }, yearTemplate: { classPropertyName: "yearTemplate", publicName: "yearTemplate", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { triggerOpenMonthsView: "triggerOpenMonthsView", triggerOpenDaysView: "triggerOpenDaysView", focusEvent: "focus", blurEvent: "blur", triggerSelectYear: "triggerSelectYear", triggerChangeYearsViewPage: "triggerChangeYearsViewPage", triggerHighlightYear: "triggerHighlightYear", triggerHighlightNextYear: "triggerHighlightNextYear", triggerHighlightPreviousYear: "triggerHighlightPreviousYear", triggerHighlightFirstYear: "triggerHighlightFirstYear", triggerHighlightLastYear: "triggerHighlightLastYear", triggerHighlightSameYearPreviousPage: "triggerHighlightSameYearPreviousPage", triggerHighlightSameYearNextPage: "triggerHighlightSameYearNextPage" }, host: { listeners: { "mousemove": "onMouseMove()" } }, viewQueries: [{ propertyName: "focusableElement", first: true, predicate: ["focusableElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ard-years-view\">\r\n @if (!readOnly()) {\r\n <div class=\"ard-calendar__top-toolbar\">\r\n <ng-template\r\n #defaultYearsViewHeaderTemplate\r\n let-dateRange=\"dateRange\"\r\n let-nextPage=\"nextPage\"\r\n let-prevPage=\"prevPage\"\r\n let-canGoToNextPage=\"canGoToNextPage\"\r\n let-canGoToPreviousPage=\"canGoToPreviousPage\"\r\n let-openDaysView=\"openDaysView\"\r\n >\r\n <div class=\"ard-calendar__calendar-header\">\r\n <ard-button\r\n class=\"ard-calendar__header-button\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n [tabIndex]=\"tabIndex()\"\r\n (click)=\"openDaysView()\"\r\n variant=\"pill\"\r\n >\r\n {{ dateRange.low | date : 'YYYY' }}\r\n —\r\n {{ dateRange.high | date : 'YYYY' }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div class=\"ard-calendar-arrows\">\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevPage()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousPage\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextPage()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextPage\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"yearsViewHeaderTemplate() || defaultYearsViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"yearsViewHeaderContext()\"\r\n />\r\n </div>\r\n }\r\n <div\r\n #focusableElement\r\n class=\"ard-calendar__simple-grid\"\r\n [tabindex]=\"tabIndex()\"\r\n [ariaLabel]=\"currentAriaLabel()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (focus)=\"onYearGridFocus()\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n (blur)=\"onYearGridBlur()\"\r\n (click)=\"onYearGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n @for (year of yearsArray(); track year) {\r\n <div\r\n class=\"ard-calendar__entry\"\r\n [class.ard-calendar__entry-highlighted]=\"highlightedYear() === year.value\"\r\n [class.ard-calendar__entry-disabled]=\"year.disabled\"\r\n [class.ard-calendar__entry-selected]=\"isYearSelected(year.value)\"\r\n [class.ard-calendar-today]=\"isYearToday(year.value)\"\r\n (click)=\"onCalendarYearClick(year.value)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarYearMouseover(year.value)\"\r\n role=\"gridcell\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"ard-calendar__entry-button\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultYearTemplate\r\n let-year\r\n >\r\n {{ year | date : 'YYYY' }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"yearTemplate() || defaultYearTemplate\"\r\n [ngTemplateOutletContext]=\"yearContext()(year.value)\"\r\n />\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact"] }, { kind: "component", type: i3.ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "component", type: i4.ArdiumButtonComponent, selector: "ard-button", inputs: ["icon", "variant", "alignIcon", "vertical"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
236
|
+
}
|
|
237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YearsViewComponent, decorators: [{
|
|
238
|
+
type: Component,
|
|
239
|
+
args: [{ selector: 'ard-years-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ard-years-view\">\r\n @if (!readOnly()) {\r\n <div class=\"ard-calendar__top-toolbar\">\r\n <ng-template\r\n #defaultYearsViewHeaderTemplate\r\n let-dateRange=\"dateRange\"\r\n let-nextPage=\"nextPage\"\r\n let-prevPage=\"prevPage\"\r\n let-canGoToNextPage=\"canGoToNextPage\"\r\n let-canGoToPreviousPage=\"canGoToPreviousPage\"\r\n let-openDaysView=\"openDaysView\"\r\n >\r\n <div class=\"ard-calendar__calendar-header\">\r\n <ard-button\r\n class=\"ard-calendar__header-button\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n [tabIndex]=\"tabIndex()\"\r\n (click)=\"openDaysView()\"\r\n variant=\"pill\"\r\n >\r\n {{ dateRange.low | date : 'YYYY' }}\r\n —\r\n {{ dateRange.high | date : 'YYYY' }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div class=\"ard-calendar-arrows\">\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevPage()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousPage\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextPage()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextPage\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"yearsViewHeaderTemplate() || defaultYearsViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"yearsViewHeaderContext()\"\r\n />\r\n </div>\r\n }\r\n <div\r\n #focusableElement\r\n class=\"ard-calendar__simple-grid\"\r\n [tabindex]=\"tabIndex()\"\r\n [ariaLabel]=\"currentAriaLabel()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (focus)=\"onYearGridFocus()\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n (blur)=\"onYearGridBlur()\"\r\n (click)=\"onYearGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n @for (year of yearsArray(); track year) {\r\n <div\r\n class=\"ard-calendar__entry\"\r\n [class.ard-calendar__entry-highlighted]=\"highlightedYear() === year.value\"\r\n [class.ard-calendar__entry-disabled]=\"year.disabled\"\r\n [class.ard-calendar__entry-selected]=\"isYearSelected(year.value)\"\r\n [class.ard-calendar-today]=\"isYearToday(year.value)\"\r\n (click)=\"onCalendarYearClick(year.value)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarYearMouseover(year.value)\"\r\n role=\"gridcell\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"ard-calendar__entry-button\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultYearTemplate\r\n let-year\r\n >\r\n {{ year | date : 'YYYY' }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"yearTemplate() || defaultYearTemplate\"\r\n [ngTemplateOutletContext]=\"yearContext()(year.value)\"\r\n />\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n" }]
|
|
240
|
+
}], propDecorators: { onMouseMove: [{
|
|
241
|
+
type: HostListener,
|
|
242
|
+
args: ['mousemove']
|
|
243
|
+
}] } });
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcnMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NhbGVuZGFyL3ZpZXdzL3llYXJzLXZpZXcveWVhcnMtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NhbGVuZGFyL3ZpZXdzL3llYXJzLXZpZXcveWVhcnMtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBRVIsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUUvRSxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBUXpCLE1BQU0sT0FBTyxrQkFBa0I7SUFOL0I7UUFPVyxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFDckMsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUVyQyxjQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBRXRDLHFCQUFnQixHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQWM3QyxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRXRDLGlCQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZSxDQUFDO1FBRTdDLFFBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFlLENBQUM7UUFDcEMsUUFB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QixpQkFBaUIsQ0FBQyxLQUFvQjtRQUM1QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsbUNBQW1DO0lBQzNCLFlBQVksQ0FBQyxLQUFvQjtRQUN2QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxrQ0FBa0M7SUFDMUIsV0FBVyxDQUFDLEtBQW9CO1FBQ3RDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELGtEQUFrRDtJQUNsRCxzREFBc0Q7SUFDOUMsY0FBYyxDQUFDLEtBQW9CO1FBQ3pDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsOENBQThDO0lBQzlDLHFEQUFxRDtJQUM3QyxnQkFBZ0IsQ0FBQyxLQUFvQjtRQUMzQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQzsrR0FqTVUsa0JBQWtCO21HQUFsQixrQkFBa0IsMHBGQ3hCL0IsMG1IQTBHQTs7NEZEbEZhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTTs4QkFZL0MsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIGlucHV0LFxyXG4gIG91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzTnVsbCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJZZWFyQ29udGV4dCwgQ2FsZW5kYXJZZWFyc1ZpZXdIZWFkZXJDb250ZXh0LCBEYXRlUmFuZ2UsIFllYXJSYW5nZSB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLnR5cGVzJztcclxuaW1wb3J0IHsgZ2V0Q2FsZW5kYXJZZWFyc0FycmF5LCBpc1llYXJPdXRPZlJhbmdlIH0gZnJvbSAnLi95ZWFycy12aWV3LmhlbHBlcnMnO1xyXG5cclxuY29uc3QgVE9EQVkgPSBuZXcgRGF0ZSgpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQteWVhcnMtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3llYXJzLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi95ZWFycy12aWV3LmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFllYXJzVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIHJlYWRvbmx5IHRhYkluZGV4ID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xyXG4gIHJlYWRvbmx5IHJlYWRPbmx5ID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcclxuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XHJcblxyXG4gIHJlYWRvbmx5IGF1dG9Gb2N1cyA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XHJcblxyXG4gIHJlYWRvbmx5IF9pc1VzaW5nS2V5Ym9hcmQgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnKVxyXG4gIG9uTW91c2VNb3ZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2lzVXNpbmdLZXlib2FyZCgpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZFllYXIoKSkgdGhpcy50cmlnZ2VySGlnaGxpZ2h0WWVhci5lbWl0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmF1dG9Gb2N1cygpKSByZXR1cm47XHJcbiAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRZZWFyLmVtaXQodGhpcy5jdXJyZW50WWVhclJhbmdlU3RhcnQoKSk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBhY3RpdmVZZWFyID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xyXG5cclxuICByZWFkb25seSBzZWxlY3RlZERhdGUgPSBpbnB1dC5yZXF1aXJlZDxEYXRlIHwgbnVsbD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgbWluID0gaW5wdXQucmVxdWlyZWQ8RGF0ZSB8IG51bGw+KCk7XHJcbiAgcmVhZG9ubHkgbWF4ID0gaW5wdXQucmVxdWlyZWQ8RGF0ZSB8IG51bGw+KCk7XHJcblxyXG4gIHJlYWRvbmx5IGN1cnJlbnRZZWFyUmFuZ2VTdGFydCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuICByZWFkb25seSB5ZWFyc0FycmF5ID0gY29tcHV0ZWQoKCkgPT4gZ2V0Q2FsZW5kYXJZZWFyc0FycmF5KHRoaXMuY3VycmVudFllYXJSYW5nZVN0YXJ0KCksIDI0LCB0aGlzLm1pbigpLCB0aGlzLm1heCgpKSk7XHJcblxyXG4gIHJlYWRvbmx5IGN1cnJlbnRBcmlhTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRlZFllYXIoKT8udG9TdHJpbmcoKSA/PyAnJztcclxuICB9KTtcclxuXHJcbiAgLy8hIG91dHB1dHNcclxuICByZWFkb25seSB0cmlnZ2VyT3Blbk1vbnRoc1ZpZXcgPSBvdXRwdXQ8dm9pZD4oKTtcclxuICByZWFkb25seSB0cmlnZ2VyT3BlbkRheXNWaWV3ID0gb3V0cHV0PHZvaWQ+KCk7XHJcblxyXG4gIHJlYWRvbmx5IGZvY3VzRXZlbnQgPSBvdXRwdXQ8Rm9jdXNFdmVudD4oeyBhbGlhczogJ2ZvY3VzJyB9KTtcclxuICByZWFkb25seSBibHVyRXZlbnQgPSBvdXRwdXQ8Rm9jdXNFdmVudD4oeyBhbGlhczogJ2JsdXInIH0pO1xyXG5cclxuICByZWFkb25seSB0cmlnZ2VyU2VsZWN0WWVhciA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgcmVhZG9ubHkgdHJpZ2dlckNoYW5nZVllYXJzVmlld1BhZ2UgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG5cclxuICByZWFkb25seSB0cmlnZ2VySGlnaGxpZ2h0WWVhciA9IG91dHB1dDxudW1iZXIgfCBudWxsPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHROZXh0WWVhciA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgcmVhZG9ubHkgdHJpZ2dlckhpZ2hsaWdodFByZXZpb3VzWWVhciA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgcmVhZG9ubHkgdHJpZ2dlckhpZ2hsaWdodEZpcnN0WWVhciA9IG91dHB1dDx2b2lkPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHRMYXN0WWVhciA9IG91dHB1dDx2b2lkPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHRTYW1lWWVhclByZXZpb3VzUGFnZSA9IG91dHB1dDxib29sZWFuPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHRTYW1lWWVhck5leHRQYWdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XHJcblxyXG4gIC8vISBjYWxlbmRhciBlbnRyeSBob3ZlciAmIGNsaWNrXHJcbiAgcmVhZG9ubHkgaGlnaGxpZ2h0ZWRZZWFyID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyIHwgbnVsbD4oKTtcclxuXHJcbiAgb25DYWxlbmRhclllYXJNb3VzZW92ZXIoeWVhcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNVc2luZ0tleWJvYXJkKCkgfHwgdGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMucmVhZE9ubHkoKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodFllYXIuZW1pdCh5ZWFyKTtcclxuICB9XHJcbiAgb25DYWxlbmRhclllYXJDbGljayh5ZWFyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5yZWFkT25seSgpKSByZXR1cm47XHJcbiAgICB0aGlzLnRyaWdnZXJTZWxlY3RZZWFyLmVtaXQoeWVhcik7XHJcbiAgfVxyXG4gIG9uWWVhckdyaWRGb2N1cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5yZWFkT25seSgpKSByZXR1cm47XHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRGaXJzdFllYXIuZW1pdCgpO1xyXG4gIH1cclxuICBvblllYXJHcmlkQmx1cigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5yZWFkT25seSgpKSByZXR1cm47XHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRZZWFyLmVtaXQobnVsbCk7XHJcbiAgfVxyXG4gIG9uWWVhckdyaWRDbGljaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5yZWFkT25seSgpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZFllYXIoKSAhPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0Rmlyc3RZZWFyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8vISBoZWxwZXJzXHJcbiAgaXNZZWFyVG9kYXkoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4geWVhciA9PT0gVE9EQVkuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcbiAgaXNZZWFyU2VsZWN0ZWQoeWVhcjogbnVtYmVyIHwgRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHllYXIgaW5zdGFuY2VvZiBEYXRlKSB5ZWFyID0geWVhci5nZXRGdWxsWWVhcigpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlKCkgIT09IG51bGwgJiYgeWVhciA9PT0gdGhpcy5zZWxlY3RlZERhdGUoKT8uZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcbiAgaXNZZWFyT3V0T2ZSYW5nZSh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGlzWWVhck91dE9mUmFuZ2UoeWVhciwgdGhpcy5taW4oKSwgdGhpcy5tYXgoKSk7XHJcbiAgfVxyXG5cclxuICAvLyEgZm9jdXNpbmdcclxuICByZWFkb25seSBmb2N1c2FibGVFbGVtZW50ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZm9jdXNhYmxlRWxlbWVudCcpO1xyXG5cclxuICBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9jdXNhYmxlRWxlbWVudCgpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIC8vISBrZXlib2FyZCBjb250cm9sc1xyXG4gIG9uTWFpbkdyaWRLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMucmVhZE9ubHkoKSkgcmV0dXJuO1xyXG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgY2FzZSAnRW50ZXInOlxyXG4gICAgICAgIHRoaXMuX29uRW50ZXJQcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxyXG4gICAgICAgIHRoaXMuX29uQXJyb3dVcFByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICB0aGlzLl9vbkFycm93RG93blByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcclxuICAgICAgICB0aGlzLl9vbkFycm93TGVmdFByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XHJcbiAgICAgICAgdGhpcy5fb25BcnJvd1JpZ2h0UHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdIb21lJzpcclxuICAgICAgICB0aGlzLl9vbkhvbWVQcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0VuZCc6XHJcbiAgICAgICAgdGhpcy5fb25FbmRQcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1BhZ2VVcCc6XHJcbiAgICAgICAgdGhpcy5fb25QYWdlVXBQcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcclxuICAgICAgICB0aGlzLl9vblBhZ2VEb3duUHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vc2VsZWN0IGN1cnJlbnRseSBzZWxlY3RlZCBlbnRyeVxyXG4gIHByaXZhdGUgX29uRW50ZXJQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5oaWdobGlnaHRlZFllYXIoKTtcclxuICAgIGlmIChpc051bGwoeWVhcikpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXJTZWxlY3RZZWFyLmVtaXQoeWVhcik7XHJcbiAgfVxyXG4gIC8vaGlnaGxpZ2h0IHRoZSBlbnRyeSBvbmUgbGluZSBiZWxvd1xyXG4gIHByaXZhdGUgX29uQXJyb3dEb3duUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0TmV4dFllYXIuZW1pdCg0KTsgLy80IHllYXJzIHBlciBsaW5lXHJcbiAgfVxyXG4gIC8vaGlnaGxpZ2h0IHRoZSBlbnRyeSBvbmUgbGluZSBhYm92ZVxyXG4gIHByaXZhdGUgX29uQXJyb3dVcFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodFByZXZpb3VzWWVhci5lbWl0KDQpOyAvLzQgeWVhcnMgcGVyIGxpbmVcclxuICB9XHJcbiAgLy9oaWdobGlnaHQgbmV4dCBlbnRyeVxyXG4gIHByaXZhdGUgX29uQXJyb3dSaWdodFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodE5leHRZZWFyLmVtaXQoMSk7XHJcbiAgfVxyXG4gIC8vaGlnaGxpZ2h0IHByZXZpb3VzIGVudHJ5XHJcbiAgcHJpdmF0ZSBfb25BcnJvd0xlZnRQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRQcmV2aW91c1llYXIuZW1pdCgxKTtcclxuICB9XHJcbiAgLy9oaWdobGlnaHQgZmlyc3QgZW50cnkgb24gdGhlIHBhZ2VcclxuICBwcml2YXRlIF9vbkhvbWVQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRGaXJzdFllYXIuZW1pdCgpO1xyXG4gIH1cclxuICAvL2hpZ2hsaWdodCBsYXN0IGVudHJ5IG9uIHRoZSBwYWdlXHJcbiAgcHJpdmF0ZSBfb25FbmRQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRMYXN0WWVhci5lbWl0KCk7XHJcbiAgfVxyXG4gIC8vYWxvbmU6IGhpZ2hsaWdodCBzYW1lIGVudHJ5IG9uIHRoZSBwcmV2aW91cyBwYWdlXHJcbiAgLy93aXRoIGFsdDogaGlnaGxpZ2h0IHNhbWUgZW50cnkgbXVsdGlwbGUgcGFnZXMgYmVmb3JlXHJcbiAgcHJpdmF0ZSBfb25QYWdlVXBQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRTYW1lWWVhclByZXZpb3VzUGFnZS5lbWl0KGV2ZW50LmFsdEtleSk7XHJcbiAgfVxyXG4gIC8vYWxvbmU6IGhpZ2hsaWdodCBzYW1lIGVudHJ5IG9uIHRoZSBuZXh0IHBhZ2VcclxuICAvL3dpdGggYWx0OiBoaWdobGlnaHQgc2FtZSBlbnRyeSBtdWx0aXBsZSBwYWdlcyBhZnRlclxyXG4gIHByaXZhdGUgX29uUGFnZURvd25QcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRTYW1lWWVhck5leHRQYWdlLmVtaXQoZXZlbnQuYWx0S2V5KTtcclxuICB9XHJcblxyXG4gIC8vISB0ZW1wbGF0ZXNcclxuICByZWFkb25seSB5ZWFyc1ZpZXdIZWFkZXJUZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPFRlbXBsYXRlUmVmPENhbGVuZGFyWWVhcnNWaWV3SGVhZGVyQ29udGV4dD4gfCB1bmRlZmluZWQ+KCk7XHJcbiAgcmVhZG9ubHkgeWVhclRlbXBsYXRlID0gaW5wdXQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8Q2FsZW5kYXJZZWFyQ29udGV4dD4gfCB1bmRlZmluZWQ+KCk7XHJcblxyXG4gIC8vISB0ZW1wbGF0ZSBjb250ZXh0c1xyXG4gIHJlYWRvbmx5IHllYXJzVmlld0hlYWRlckNvbnRleHQgPSBjb21wdXRlZDxDYWxlbmRhclllYXJzVmlld0hlYWRlckNvbnRleHQ+KCgpID0+IHtcclxuICAgIGNvbnN0IHllYXJSYW5nZVN0YXJ0ID0gdGhpcy5jdXJyZW50WWVhclJhbmdlU3RhcnQoKTtcclxuICAgIGNvbnN0IHllYXJSYW5nZUVuZCA9IHllYXJSYW5nZVN0YXJ0ICsgMjM7XHJcbiAgICBjb25zdCBkYXRlUmFuZ2U6IERhdGVSYW5nZSA9IHtcclxuICAgICAgbG93OiBuZXcgRGF0ZSh5ZWFyUmFuZ2VTdGFydCwgMCwgMSksXHJcbiAgICAgIGhpZ2g6IG5ldyBEYXRlKHllYXJSYW5nZUVuZCwgMCwgMSksXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeWVhclJhbmdlOiBZZWFyUmFuZ2UgPSB7XHJcbiAgICAgIGxvdzogeWVhclJhbmdlU3RhcnQsXHJcbiAgICAgIGhpZ2g6IHllYXJSYW5nZUVuZCxcclxuICAgIH07XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZXh0UGFnZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHJpZ2dlckNoYW5nZVllYXJzVmlld1BhZ2UuZW1pdCgxKTtcclxuICAgICAgfSxcclxuICAgICAgcHJldlBhZ2U6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnRyaWdnZXJDaGFuZ2VZZWFyc1ZpZXdQYWdlLmVtaXQoLTEpO1xyXG4gICAgICB9LFxyXG4gICAgICBvcGVuTW9udGhzVmlldzogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHJpZ2dlck9wZW5Nb250aHNWaWV3LmVtaXQoKTtcclxuICAgICAgfSxcclxuICAgICAgb3BlbkRheXNWaWV3OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyT3BlbkRheXNWaWV3LmVtaXQoKTtcclxuICAgICAgfSxcclxuICAgICAgY2FuR29Ub05leHRQYWdlOiAhdGhpcy5pc1llYXJPdXRPZlJhbmdlKHllYXJSYW5nZUVuZCArIDEpLFxyXG4gICAgICBjYW5Hb1RvUHJldmlvdXNQYWdlOiAhdGhpcy5pc1llYXJPdXRPZlJhbmdlKHllYXJSYW5nZVN0YXJ0IC0gMSksXHJcbiAgICAgIHllYXJSYW5nZTogeWVhclJhbmdlLFxyXG4gICAgICBkYXRlUmFuZ2UsXHJcbiAgICAgICRpbXBsaWNpdDogZGF0ZVJhbmdlLFxyXG4gICAgfTtcclxuICB9KTtcclxuICByZWFkb25seSB5ZWFyQ29udGV4dCA9IGNvbXB1dGVkPCh5ZWFyOiBudW1iZXIpID0+IENhbGVuZGFyWWVhckNvbnRleHQ+KCgpID0+IHtcclxuICAgIHJldHVybiAoeWVhcjogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAxLCAxKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB2YWx1ZTogeWVhcixcclxuICAgICAgICBkYXRlLFxyXG4gICAgICAgICRpbXBsaWNpdDogZGF0ZSxcclxuICAgICAgICBzZWxlY3Q6ICh5ZWFyOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIHRoaXMudHJpZ2dlclNlbGVjdFllYXIuZW1pdCh5ZWFyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICB9KTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXJkLXllYXJzLXZpZXdcIj5cclxuICBAaWYgKCFyZWFkT25seSgpKSB7XHJcbiAgPGRpdiBjbGFzcz1cImFyZC1jYWxlbmRhcl9fdG9wLXRvb2xiYXJcIj5cclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAjZGVmYXVsdFllYXJzVmlld0hlYWRlclRlbXBsYXRlXHJcbiAgICAgIGxldC1kYXRlUmFuZ2U9XCJkYXRlUmFuZ2VcIlxyXG4gICAgICBsZXQtbmV4dFBhZ2U9XCJuZXh0UGFnZVwiXHJcbiAgICAgIGxldC1wcmV2UGFnZT1cInByZXZQYWdlXCJcclxuICAgICAgbGV0LWNhbkdvVG9OZXh0UGFnZT1cImNhbkdvVG9OZXh0UGFnZVwiXHJcbiAgICAgIGxldC1jYW5Hb1RvUHJldmlvdXNQYWdlPVwiY2FuR29Ub1ByZXZpb3VzUGFnZVwiXHJcbiAgICAgIGxldC1vcGVuRGF5c1ZpZXc9XCJvcGVuRGF5c1ZpZXdcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXJkLWNhbGVuZGFyX19jYWxlbmRhci1oZWFkZXJcIj5cclxuICAgICAgICA8YXJkLWJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJhcmQtY2FsZW5kYXJfX2hlYWRlci1idXR0b25cIlxyXG4gICAgICAgICAgYXBwZWFyYW5jZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgIGNvbG9yPVwibm9uZVwiXHJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkRheXNWaWV3KClcIlxyXG4gICAgICAgICAgdmFyaWFudD1cInBpbGxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGRhdGVSYW5nZS5sb3cgfCBkYXRlIDogJ1lZWVknIH19XHJcbiAgICAgICAgICAmbWRhc2g7XHJcbiAgICAgICAgICB7eyBkYXRlUmFuZ2UuaGlnaCB8IGRhdGUgOiAnWVlZWScgfX1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZHJvcGRvd24tYXJyb3dcIj48L2Rpdj5cclxuICAgICAgICA8L2FyZC1idXR0b24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1jYWxlbmRhci1hcnJvd3NcIj5cclxuICAgICAgICAgIDxhcmQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgY29sb3I9XCJub25lXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInByZXZQYWdlKClcIlxyXG4gICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29Ub1ByZXZpb3VzUGFnZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcmQtaWNvbj5jaGV2cm9uX2xlZnQ8L2FyZC1pY29uPlxyXG4gICAgICAgICAgPC9hcmQtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICA8YXJkLWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwibm9uZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJuZXh0UGFnZSgpXCJcclxuICAgICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4KClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkdvVG9OZXh0UGFnZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcmQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9hcmQtaWNvbj5cclxuICAgICAgICAgIDwvYXJkLWljb24tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInllYXJzVmlld0hlYWRlclRlbXBsYXRlKCkgfHwgZGVmYXVsdFllYXJzVmlld0hlYWRlclRlbXBsYXRlXCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInllYXJzVmlld0hlYWRlckNvbnRleHQoKVwiXHJcbiAgICAvPlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuICA8ZGl2XHJcbiAgICAjZm9jdXNhYmxlRWxlbWVudFxyXG4gICAgY2xhc3M9XCJhcmQtY2FsZW5kYXJfX3NpbXBsZS1ncmlkXCJcclxuICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgIFthcmlhTGFiZWxdPVwiY3VycmVudEFyaWFMYWJlbCgpXCJcclxuICAgIChmb2N1cyk9XCJmb2N1c0V2ZW50LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoZm9jdXMpPVwib25ZZWFyR3JpZEZvY3VzKClcIlxyXG4gICAgKGJsdXIpPVwiYmx1ckV2ZW50LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYmx1cik9XCJvblllYXJHcmlkQmx1cigpXCJcclxuICAgIChjbGljayk9XCJvblllYXJHcmlkQ2xpY2soKVwiXHJcbiAgICAoa2V5ZG93bik9XCJvbk1haW5HcmlkS2V5ZG93bigkZXZlbnQpXCJcclxuICAgIHJvbGU9XCJncmlkXCJcclxuICA+XHJcbiAgICBAZm9yICh5ZWFyIG9mIHllYXJzQXJyYXkoKTsgdHJhY2sgeWVhcikge1xyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImFyZC1jYWxlbmRhcl9fZW50cnlcIlxyXG4gICAgICBbY2xhc3MuYXJkLWNhbGVuZGFyX19lbnRyeS1oaWdobGlnaHRlZF09XCJoaWdobGlnaHRlZFllYXIoKSA9PT0geWVhci52YWx1ZVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtY2FsZW5kYXJfX2VudHJ5LWRpc2FibGVkXT1cInllYXIuZGlzYWJsZWRcIlxyXG4gICAgICBbY2xhc3MuYXJkLWNhbGVuZGFyX19lbnRyeS1zZWxlY3RlZF09XCJpc1llYXJTZWxlY3RlZCh5ZWFyLnZhbHVlKVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtY2FsZW5kYXItdG9kYXldPVwiaXNZZWFyVG9kYXkoeWVhci52YWx1ZSlcIlxyXG4gICAgICAoY2xpY2spPVwib25DYWxlbmRhclllYXJDbGljayh5ZWFyLnZhbHVlKVwiXHJcbiAgICAgIChtb3VzZW1vdmUpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgKG1vdXNlb3Zlcik9XCJvbkNhbGVuZGFyWWVhck1vdXNlb3Zlcih5ZWFyLnZhbHVlKVwiXHJcbiAgICAgIHJvbGU9XCJncmlkY2VsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBjbGFzcz1cImFyZC1jYWxlbmRhcl9fZW50cnktYnV0dG9uXCJcclxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1mb2N1cy1vdmVybGF5XCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1idXR0b24tY29udGVudFwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICNkZWZhdWx0WWVhclRlbXBsYXRlXHJcbiAgICAgICAgICAgIGxldC15ZWFyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHllYXIgfCBkYXRlIDogJ1lZWVknIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInllYXJUZW1wbGF0ZSgpIHx8IGRlZmF1bHRZZWFyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieWVhckNvbnRleHQoKSh5ZWFyLnZhbHVlKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { isDefined } from 'simple-bool';
|
|
2
|
+
export function getCalendarYearsArray(startYear, yearCount, min, max) {
|
|
3
|
+
return new Array(yearCount).fill(startYear).map((v, i) => ({ value: v + i, disabled: !!isYearOutOfRange(v + i, min, max) }));
|
|
4
|
+
}
|
|
5
|
+
export function isYearOutOfRange(year, min, max) {
|
|
6
|
+
const dateForMinComparison = new Date(year, 11, 31);
|
|
7
|
+
if (isDefined(min) && dateForMinComparison < min)
|
|
8
|
+
return -1;
|
|
9
|
+
const dateForMaxComparison = new Date(year, 0, 1);
|
|
10
|
+
if (isDefined(max) && dateForMaxComparison > max)
|
|
11
|
+
return 1;
|
|
12
|
+
return 0;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcnMtdmlldy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jYWxlbmRhci92aWV3cy95ZWFycy12aWV3L3llYXJzLXZpZXcuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3hDLE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsR0FBZ0IsRUFDaEIsR0FBZ0I7SUFFaEIsT0FBTyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0gsQ0FBQztBQUNELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsR0FBZ0IsRUFBRSxHQUFnQjtJQUMvRSxNQUFNLG9CQUFvQixHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksb0JBQW9CLEdBQUcsR0FBRztRQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFNUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xELElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLG9CQUFvQixHQUFHLEdBQUc7UUFBRSxPQUFPLENBQUMsQ0FBQztJQUUzRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICdzaW1wbGUtYm9vbCc7XHJcbmltcG9ydCB7IENhbGVuZGFyQXJyYXlJdGVtIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIuaW50ZXJuYWwtdHlwZXMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbGVuZGFyWWVhcnNBcnJheShcclxuICBzdGFydFllYXI6IG51bWJlcixcclxuICB5ZWFyQ291bnQ6IG51bWJlcixcclxuICBtaW46IERhdGUgfCBudWxsLFxyXG4gIG1heDogRGF0ZSB8IG51bGxcclxuKTogQ2FsZW5kYXJBcnJheUl0ZW1bXSB7XHJcbiAgcmV0dXJuIG5ldyBBcnJheSh5ZWFyQ291bnQpLmZpbGwoc3RhcnRZZWFyKS5tYXAoKHYsIGkpID0+ICh7IHZhbHVlOiB2ICsgaSwgZGlzYWJsZWQ6ICEhaXNZZWFyT3V0T2ZSYW5nZSh2ICsgaSwgbWluLCBtYXgpIH0pKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNZZWFyT3V0T2ZSYW5nZSh5ZWFyOiBudW1iZXIsIG1pbjogRGF0ZSB8IG51bGwsIG1heDogRGF0ZSB8IG51bGwpOiBudW1iZXIge1xyXG4gIGNvbnN0IGRhdGVGb3JNaW5Db21wYXJpc29uID0gbmV3IERhdGUoeWVhciwgMTEsIDMxKTtcclxuICBpZiAoaXNEZWZpbmVkKG1pbikgJiYgZGF0ZUZvck1pbkNvbXBhcmlzb24gPCBtaW4pIHJldHVybiAtMTtcclxuXHJcbiAgY29uc3QgZGF0ZUZvck1heENvbXBhcmlzb24gPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcclxuICBpZiAoaXNEZWZpbmVkKG1heCkgJiYgZGF0ZUZvck1heENvbXBhcmlzb24gPiBtYXgpIHJldHVybiAxO1xyXG5cclxuICByZXR1cm4gMDtcclxufVxyXG4iXX0=
|