@skyux/datetime 8.7.2 → 9.0.0-alpha.1
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 +51 -51
- package/esm2022/lib/modules/date-pipe/date-format-utility.mjs +45 -0
- package/{esm2020 → esm2022}/lib/modules/date-pipe/date-pipe.module.mjs +5 -5
- package/esm2022/lib/modules/date-pipe/date.pipe.mjs +67 -0
- package/esm2022/lib/modules/date-pipe/fuzzy-date.pipe.mjs +47 -0
- package/{esm2020 → esm2022}/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.mjs +4 -4
- package/{esm2020 → 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 +518 -0
- package/{esm2020 → esm2022}/lib/modules/date-range-picker/date-range-picker.module.mjs +19 -19
- package/esm2022/lib/modules/date-range-picker/date-range.service.mjs +97 -0
- package/esm2022/lib/modules/date-range-picker/types/date-range-calculator.mjs +54 -0
- package/esm2022/lib/modules/datepicker/date-formatter.mjs +38 -0
- package/esm2022/lib/modules/datepicker/datepicker-adapter.service.mjs +23 -0
- package/esm2022/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +332 -0
- package/esm2022/lib/modules/datepicker/datepicker-calendar.component.mjs +95 -0
- package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker-config.service.mjs +4 -4
- package/esm2022/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +487 -0
- package/esm2022/lib/modules/datepicker/datepicker-input.directive.mjs +534 -0
- package/esm2022/lib/modules/datepicker/datepicker.component.mjs +327 -0
- package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker.module.mjs +35 -35
- package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/datepicker/daypicker-button.component.mjs +4 -4
- package/esm2022/lib/modules/datepicker/daypicker-cell.component.mjs +128 -0
- package/esm2022/lib/modules/datepicker/daypicker.component.mjs +224 -0
- package/esm2022/lib/modules/datepicker/fuzzy-date.service.mjs +412 -0
- package/esm2022/lib/modules/datepicker/monthpicker.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/modules/datepicker/yearpicker.component.mjs +53 -54
- package/{esm2020 → esm2022}/lib/modules/shared/sky-datetime-resources.module.mjs +11 -11
- package/esm2022/lib/modules/timepicker/timepicker.component.mjs +396 -0
- package/esm2022/lib/modules/timepicker/timepicker.directive.mjs +237 -0
- package/{esm2020 → esm2022}/lib/modules/timepicker/timepicker.module.mjs +17 -17
- package/esm2022/testing/datepicker-fixture.mjs +55 -0
- package/esm2022/testing/timepicker-fixture.mjs +52 -0
- package/fesm2022/skyux-datetime-testing.mjs +112 -0
- package/{fesm2020 → fesm2022}/skyux-datetime-testing.mjs.map +1 -1
- package/fesm2022/skyux-datetime.mjs +5030 -0
- package/fesm2022/skyux-datetime.mjs.map +1 -0
- package/lib/modules/date-range-picker/date-range-picker.component.d.ts +1 -1
- package/lib/modules/datepicker/datepicker-calendar-inner.component.d.ts +1 -1
- package/lib/modules/datepicker/datepicker-calendar.component.d.ts +1 -1
- package/lib/modules/datepicker/datepicker-input-fuzzy.directive.d.ts +1 -1
- package/lib/modules/datepicker/datepicker-input.directive.d.ts +1 -1
- package/lib/modules/datepicker/datepicker.component.d.ts +1 -1
- package/lib/modules/datepicker/daypicker-button.component.d.ts +1 -1
- package/lib/modules/datepicker/daypicker-cell.component.d.ts +1 -1
- package/lib/modules/datepicker/daypicker.component.d.ts +1 -1
- package/lib/modules/timepicker/timepicker.directive.d.ts +1 -1
- package/package.json +19 -27
- package/esm2020/lib/modules/date-pipe/date-format-utility.mjs +0 -45
- package/esm2020/lib/modules/date-pipe/date.pipe.mjs +0 -70
- package/esm2020/lib/modules/date-pipe/fuzzy-date.pipe.mjs +0 -50
- package/esm2020/lib/modules/date-range-picker/date-range-picker.component.mjs +0 -494
- package/esm2020/lib/modules/date-range-picker/date-range.service.mjs +0 -100
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator.mjs +0 -53
- package/esm2020/lib/modules/datepicker/date-formatter.mjs +0 -38
- package/esm2020/lib/modules/datepicker/datepicker-adapter.service.mjs +0 -26
- package/esm2020/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +0 -333
- package/esm2020/lib/modules/datepicker/datepicker-calendar.component.mjs +0 -96
- package/esm2020/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +0 -462
- package/esm2020/lib/modules/datepicker/datepicker-input.directive.mjs +0 -496
- package/esm2020/lib/modules/datepicker/datepicker.component.mjs +0 -319
- package/esm2020/lib/modules/datepicker/daypicker-cell.component.mjs +0 -126
- package/esm2020/lib/modules/datepicker/daypicker.component.mjs +0 -216
- package/esm2020/lib/modules/datepicker/fuzzy-date.service.mjs +0 -392
- package/esm2020/lib/modules/datepicker/monthpicker.component.mjs +0 -81
- package/esm2020/lib/modules/timepicker/timepicker.component.mjs +0 -389
- package/esm2020/lib/modules/timepicker/timepicker.directive.mjs +0 -236
- package/esm2020/testing/datepicker-fixture.mjs +0 -58
- package/esm2020/testing/timepicker-fixture.mjs +0 -55
- package/fesm2015/skyux-datetime-testing.mjs +0 -117
- package/fesm2015/skyux-datetime-testing.mjs.map +0 -1
- package/fesm2015/skyux-datetime.mjs +0 -4925
- package/fesm2015/skyux-datetime.mjs.map +0 -1
- package/fesm2020/skyux-datetime-testing.mjs +0 -117
- package/fesm2020/skyux-datetime.mjs +0 -4895
- package/fesm2020/skyux-datetime.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculation.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-id.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-calculator-validate-function.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-default-calculator-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-default-calculator-configs.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range-relative-value.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/date-range-picker/types/date-range.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker-calendar-change.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker-custom-date.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/datepicker/datepicker-date.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/datepicker/fuzzy-date.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/timepicker/timepicker-time-format-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/timepicker/timepicker-time-output.mjs +0 -0
- /package/{esm2020 → esm2022}/skyux-datetime.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/skyux-datetime-testing.mjs +0 -0
@@ -1,333 +0,0 @@
|
|
1
|
-
var _SkyDatepickerCalendarInnerComponent_instances, _SkyDatepickerCalendarInnerComponent_ngUnsubscribe, _SkyDatepickerCalendarInnerComponent__selectedDate, _SkyDatepickerCalendarInnerComponent__startingDay, _SkyDatepickerCalendarInnerComponent_getCustomDate;
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
|
-
import { Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
4
|
-
import { Subject } from 'rxjs';
|
5
|
-
import { SkyDateFormatter } from './date-formatter';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "@angular/common";
|
8
|
-
let nextDatepickerId = 0;
|
9
|
-
/**
|
10
|
-
* @internal
|
11
|
-
*/
|
12
|
-
export class SkyDatepickerCalendarInnerComponent {
|
13
|
-
constructor() {
|
14
|
-
_SkyDatepickerCalendarInnerComponent_instances.add(this);
|
15
|
-
this.selectedDateChange = new EventEmitter(undefined);
|
16
|
-
this.calendarModeChange = new EventEmitter();
|
17
|
-
// TODO: `activeDate` is very similar to `selectedDate` and at the very least should be able to be undefined. However, this would take considerable refactoring to do and thus has been deferred.
|
18
|
-
this.activeDate = new Date();
|
19
|
-
this.activeDateId = '';
|
20
|
-
this.minMode = 'day';
|
21
|
-
this.maxMode = 'year';
|
22
|
-
this.monthColLimit = 3;
|
23
|
-
this.yearColLimit = 5;
|
24
|
-
this.datepickerMode = 'day';
|
25
|
-
this.yearRange = 20;
|
26
|
-
this.formatDay = 'DD';
|
27
|
-
this.formatMonth = 'MMMM';
|
28
|
-
this.formatYear = 'YYYY';
|
29
|
-
this.formatDayHeader = 'dd';
|
30
|
-
this.formatDayTitle = 'MMMM YYYY';
|
31
|
-
this.formatMonthTitle = 'YYYY';
|
32
|
-
this.datepickerId = `sky-datepicker-${++nextDatepickerId}`;
|
33
|
-
this.stepDay = {};
|
34
|
-
this.stepMonth = {};
|
35
|
-
this.stepYear = {};
|
36
|
-
this.modes = ['day', 'month', 'year'];
|
37
|
-
this.dateFormatter = new SkyDateFormatter();
|
38
|
-
this.keys = {
|
39
|
-
13: 'enter',
|
40
|
-
32: 'space',
|
41
|
-
33: 'pageup',
|
42
|
-
34: 'pagedown',
|
43
|
-
35: 'end',
|
44
|
-
36: 'home',
|
45
|
-
37: 'left',
|
46
|
-
38: 'up',
|
47
|
-
39: 'right',
|
48
|
-
40: 'down',
|
49
|
-
};
|
50
|
-
_SkyDatepickerCalendarInnerComponent_ngUnsubscribe.set(this, new Subject());
|
51
|
-
_SkyDatepickerCalendarInnerComponent__selectedDate.set(this, void 0);
|
52
|
-
_SkyDatepickerCalendarInnerComponent__startingDay.set(this, 0);
|
53
|
-
}
|
54
|
-
set startingDay(value) {
|
55
|
-
__classPrivateFieldSet(this, _SkyDatepickerCalendarInnerComponent__startingDay, value || 0, "f");
|
56
|
-
}
|
57
|
-
get startingDay() {
|
58
|
-
return __classPrivateFieldGet(this, _SkyDatepickerCalendarInnerComponent__startingDay, "f");
|
59
|
-
}
|
60
|
-
set selectedDate(value) {
|
61
|
-
if (value && this.dateFormatter.dateIsValid(value)) {
|
62
|
-
__classPrivateFieldSet(this, _SkyDatepickerCalendarInnerComponent__selectedDate, value, "f");
|
63
|
-
this.activeDate = value;
|
64
|
-
}
|
65
|
-
else {
|
66
|
-
__classPrivateFieldSet(this, _SkyDatepickerCalendarInnerComponent__selectedDate, undefined, "f");
|
67
|
-
this.activeDate = new Date();
|
68
|
-
}
|
69
|
-
}
|
70
|
-
get selectedDate() {
|
71
|
-
return __classPrivateFieldGet(this, _SkyDatepickerCalendarInnerComponent__selectedDate, "f");
|
72
|
-
}
|
73
|
-
ngOnInit() {
|
74
|
-
if (this.selectedDate) {
|
75
|
-
this.activeDate = new Date(this.selectedDate);
|
76
|
-
}
|
77
|
-
else {
|
78
|
-
this.activeDate = new Date();
|
79
|
-
}
|
80
|
-
}
|
81
|
-
ngOnChanges(changes) {
|
82
|
-
this.refreshView();
|
83
|
-
}
|
84
|
-
ngOnDestroy() {
|
85
|
-
__classPrivateFieldGet(this, _SkyDatepickerCalendarInnerComponent_ngUnsubscribe, "f").next();
|
86
|
-
__classPrivateFieldGet(this, _SkyDatepickerCalendarInnerComponent_ngUnsubscribe, "f").complete();
|
87
|
-
}
|
88
|
-
setCompareHandler(handler, type) {
|
89
|
-
if (type === 'day') {
|
90
|
-
this.compareHandlerDay = handler;
|
91
|
-
}
|
92
|
-
if (type === 'month') {
|
93
|
-
this.compareHandlerMonth = handler;
|
94
|
-
}
|
95
|
-
if (type === 'year') {
|
96
|
-
this.compareHandlerYear = handler;
|
97
|
-
}
|
98
|
-
}
|
99
|
-
compare(date1, date2) {
|
100
|
-
if (date1 === undefined || date2 === undefined) {
|
101
|
-
return undefined;
|
102
|
-
}
|
103
|
-
if (this.datepickerMode === 'day' && this.compareHandlerDay) {
|
104
|
-
return this.compareHandlerDay(date1, date2);
|
105
|
-
}
|
106
|
-
if (this.datepickerMode === 'month' && this.compareHandlerMonth) {
|
107
|
-
return this.compareHandlerMonth(date1, date2);
|
108
|
-
}
|
109
|
-
/* istanbul ignore else */
|
110
|
-
/* sanity check */
|
111
|
-
if (this.datepickerMode === 'year' && this.compareHandlerYear) {
|
112
|
-
return this.compareHandlerYear(date1, date2);
|
113
|
-
}
|
114
|
-
/* istanbul ignore next */
|
115
|
-
return undefined;
|
116
|
-
}
|
117
|
-
setRefreshViewHandler(handler, type) {
|
118
|
-
if (type === 'day') {
|
119
|
-
this.refreshViewHandlerDay = handler;
|
120
|
-
}
|
121
|
-
if (type === 'month') {
|
122
|
-
this.refreshViewHandlerMonth = handler;
|
123
|
-
}
|
124
|
-
if (type === 'year') {
|
125
|
-
this.refreshViewHandlerYear = handler;
|
126
|
-
}
|
127
|
-
}
|
128
|
-
refreshView() {
|
129
|
-
if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {
|
130
|
-
this.refreshViewHandlerDay();
|
131
|
-
}
|
132
|
-
if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {
|
133
|
-
this.refreshViewHandlerMonth();
|
134
|
-
}
|
135
|
-
if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {
|
136
|
-
this.refreshViewHandlerYear();
|
137
|
-
}
|
138
|
-
}
|
139
|
-
setKeydownHandler(handler, type) {
|
140
|
-
if (type === 'day') {
|
141
|
-
this.handleKeydownDay = handler;
|
142
|
-
}
|
143
|
-
if (type === 'month') {
|
144
|
-
this.handleKeydownMonth = handler;
|
145
|
-
}
|
146
|
-
if (type === 'year') {
|
147
|
-
this.handleKeydownYear = handler;
|
148
|
-
}
|
149
|
-
}
|
150
|
-
handleKeydown(key, event) {
|
151
|
-
if (this.datepickerMode === 'day' && this.handleKeydownDay) {
|
152
|
-
this.handleKeydownDay(key, event);
|
153
|
-
}
|
154
|
-
if (this.datepickerMode === 'month' && this.handleKeydownMonth) {
|
155
|
-
this.handleKeydownMonth(key, event);
|
156
|
-
}
|
157
|
-
if (this.datepickerMode === 'year' && this.handleKeydownYear) {
|
158
|
-
this.handleKeydownYear(key, event);
|
159
|
-
}
|
160
|
-
}
|
161
|
-
dateFilter(date, format) {
|
162
|
-
return this.dateFormatter.format(date, format);
|
163
|
-
}
|
164
|
-
isActive(dateObject) {
|
165
|
-
if (this.compare(dateObject.date, this.activeDate) === 0) {
|
166
|
-
this.activeDateId = dateObject.uid;
|
167
|
-
return true;
|
168
|
-
}
|
169
|
-
return false;
|
170
|
-
}
|
171
|
-
onKeydown(event) {
|
172
|
-
const key = this.keys[event.which];
|
173
|
-
if (!key || event.shiftKey || event.altKey) {
|
174
|
-
return;
|
175
|
-
}
|
176
|
-
event.preventDefault();
|
177
|
-
event.stopPropagation();
|
178
|
-
if (key === 'enter' || key === 'space') {
|
179
|
-
if (this.isDisabled(this.activeDate)) {
|
180
|
-
return;
|
181
|
-
}
|
182
|
-
this.select(this.activeDate);
|
183
|
-
}
|
184
|
-
else if (event.ctrlKey && (key === 'up' || key === 'down')) {
|
185
|
-
this.toggleMode(key === 'up' ? 1 : -1);
|
186
|
-
}
|
187
|
-
else {
|
188
|
-
this.handleKeydown(key, event);
|
189
|
-
this.refreshView();
|
190
|
-
}
|
191
|
-
}
|
192
|
-
createDateObject(date, format, isSecondary, id) {
|
193
|
-
const customDateMatch = __classPrivateFieldGet(this, _SkyDatepickerCalendarInnerComponent_instances, "m", _SkyDatepickerCalendarInnerComponent_getCustomDate).call(this, date);
|
194
|
-
const dateObject = {
|
195
|
-
date: new Date(date.getFullYear(), date.getMonth(), date.getDate()),
|
196
|
-
label: this.dateFilter(date, format),
|
197
|
-
selected: !!this.selectedDate && this.compare(date, this.selectedDate) === 0,
|
198
|
-
disabled: this.isDisabled(date),
|
199
|
-
current: this.compare(date, new Date()) === 0,
|
200
|
-
secondary: isSecondary,
|
201
|
-
uid: id,
|
202
|
-
keyDate: customDateMatch ? customDateMatch.keyDate : undefined,
|
203
|
-
keyDateText: customDateMatch ? customDateMatch.keyDateText : [],
|
204
|
-
};
|
205
|
-
return dateObject;
|
206
|
-
}
|
207
|
-
createCalendarRows(dates, size) {
|
208
|
-
const rows = [];
|
209
|
-
while (dates.length > 0) {
|
210
|
-
rows.push(dates.splice(0, size));
|
211
|
-
}
|
212
|
-
return rows;
|
213
|
-
}
|
214
|
-
/*
|
215
|
-
This is ensures that no strangeness happens when converting a date to local time.
|
216
|
-
*/
|
217
|
-
fixTimeZone(date) {
|
218
|
-
const newDate = new Date(date);
|
219
|
-
newDate.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
|
220
|
-
return newDate;
|
221
|
-
}
|
222
|
-
selectCalendar(event, date, closePicker = false) {
|
223
|
-
if (!closePicker) {
|
224
|
-
event.preventDefault();
|
225
|
-
event.stopPropagation();
|
226
|
-
}
|
227
|
-
this.select(date);
|
228
|
-
}
|
229
|
-
select(date, isManual = true) {
|
230
|
-
this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
231
|
-
/*
|
232
|
-
Only actually select date if in minMode (day picker mode).
|
233
|
-
Otherwise, just change the active view for the datepicker.
|
234
|
-
*/
|
235
|
-
if (this.datepickerMode === this.minMode) {
|
236
|
-
this.selectedDate = new Date(this.activeDate);
|
237
|
-
if (isManual) {
|
238
|
-
this.selectedDateChange.emit(this.selectedDate);
|
239
|
-
}
|
240
|
-
}
|
241
|
-
else {
|
242
|
-
this.datepickerMode =
|
243
|
-
this.modes[this.modes.indexOf(this.datepickerMode) - 1];
|
244
|
-
this.calendarModeChange.emit(this.datepickerMode);
|
245
|
-
}
|
246
|
-
this.refreshView();
|
247
|
-
}
|
248
|
-
moveCalendar(event, direction) {
|
249
|
-
event.preventDefault();
|
250
|
-
event.stopPropagation();
|
251
|
-
this.move(direction);
|
252
|
-
}
|
253
|
-
move(direction) {
|
254
|
-
let expectedStep;
|
255
|
-
if (this.datepickerMode === 'day') {
|
256
|
-
expectedStep = this.stepDay;
|
257
|
-
}
|
258
|
-
if (this.datepickerMode === 'month') {
|
259
|
-
expectedStep = this.stepMonth;
|
260
|
-
}
|
261
|
-
if (this.datepickerMode === 'year') {
|
262
|
-
expectedStep = this.stepYear;
|
263
|
-
}
|
264
|
-
/* istanbul ignore else */
|
265
|
-
/* sanity check */
|
266
|
-
if (expectedStep) {
|
267
|
-
const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);
|
268
|
-
const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);
|
269
|
-
this.activeDate = new Date(year, month, 1);
|
270
|
-
this.refreshView();
|
271
|
-
}
|
272
|
-
}
|
273
|
-
toggleModeCalendar(event) {
|
274
|
-
event.preventDefault();
|
275
|
-
event.stopPropagation();
|
276
|
-
this.toggleMode(1);
|
277
|
-
}
|
278
|
-
toggleMode(direction) {
|
279
|
-
/*istanbul ignore next */
|
280
|
-
direction = direction || 1;
|
281
|
-
/* istanbul ignore else */
|
282
|
-
/* sanity check */
|
283
|
-
if (!(direction === 1 && this.datepickerMode === this.maxMode) &&
|
284
|
-
!(this.datepickerMode === this.minMode && direction === -1)) {
|
285
|
-
this.datepickerMode =
|
286
|
-
this.modes[this.modes.indexOf(this.datepickerMode) + direction];
|
287
|
-
this.calendarModeChange.emit(this.datepickerMode);
|
288
|
-
this.refreshView();
|
289
|
-
}
|
290
|
-
}
|
291
|
-
/**
|
292
|
-
* Date is disabled if it meets any of these criteria:
|
293
|
-
* 1. Date falls outside the min or max dates set by the SkyDatepickerConfigService.
|
294
|
-
* 2. Date is marked as disabled in the customDates array.
|
295
|
-
*/
|
296
|
-
isDisabled(date) {
|
297
|
-
const customDate = __classPrivateFieldGet(this, _SkyDatepickerCalendarInnerComponent_instances, "m", _SkyDatepickerCalendarInnerComponent_getCustomDate).call(this, date);
|
298
|
-
const minDateCompare = this.compare(date, this.minDate);
|
299
|
-
const maxDateCompare = this.compare(date, this.maxDate);
|
300
|
-
return ((minDateCompare !== undefined && minDateCompare < 0) ||
|
301
|
-
(maxDateCompare !== undefined && maxDateCompare > 0) ||
|
302
|
-
!!customDate?.disabled);
|
303
|
-
}
|
304
|
-
}
|
305
|
-
_SkyDatepickerCalendarInnerComponent_ngUnsubscribe = new WeakMap(), _SkyDatepickerCalendarInnerComponent__selectedDate = new WeakMap(), _SkyDatepickerCalendarInnerComponent__startingDay = new WeakMap(), _SkyDatepickerCalendarInnerComponent_instances = new WeakSet(), _SkyDatepickerCalendarInnerComponent_getCustomDate = function _SkyDatepickerCalendarInnerComponent_getCustomDate(date) {
|
306
|
-
if (this.customDates) {
|
307
|
-
return this.customDates.find((customDate) => {
|
308
|
-
return customDate.date.getTime() === date.getTime();
|
309
|
-
});
|
310
|
-
}
|
311
|
-
return undefined;
|
312
|
-
};
|
313
|
-
SkyDatepickerCalendarInnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
314
|
-
SkyDatepickerCalendarInnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: { customDates: "customDates", startingDay: "startingDay", minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate" }, outputs: { selectedDateChange: "selectedDateChange", calendarModeChange: "calendarModeChange" }, usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"datepickerMode\"\n class=\"sky-datepicker-calendar-inner\"\n (keydown)=\"onKeydown($event)\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".sky-datepicker-calendar-inner{border-radius:5px;background-color:#fff;border-top:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;border-right:1px solid #e2e3e4}.sky-datepicker-calendar-inner .sky-btn-default{border-color:transparent;border:2px solid #ffffff}.sky-datepicker-calendar-inner .sky-btn-default:hover{border-color:#eeeeef}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-selected:hover{background-color:#c1e8fb;border:2px solid #00b4f1}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:none}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:#686c73}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-chevron-modern{display:none}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-theme-modern .sky-datepicker-calendar-inner{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px;padding:5px 10px}.sky-theme-modern .sky-datepicker-calendar-inner:focus-within{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default{border:none;box-shadow:inset 0 0 0 1px transparent;padding:5px 7px}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-active,.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-datepicker-calendar-inner .sky-datepicker-btn-selected,.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-background-color-input-selected)}.sky-theme-modern .sky-btn-sm.sky-datepicker-btn-date{height:30px;min-width:0;padding:0;width:30px}.sky-theme-modern .sky-datepicker-chevron-default{display:none}.sky-theme-modern .sky-datepicker-chevron-modern{display:inline;font-size:16px}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner{background-color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner:not(:focus-within){border:none;box-shadow:inset 0 0 0 1px #686c73}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner .sky-datepicker-btn-selected{background-color:#009cd1}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
315
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, decorators: [{
|
316
|
-
type: Component,
|
317
|
-
args: [{ selector: 'sky-datepicker-inner', encapsulation: ViewEncapsulation.None, template: "<div\n *ngIf=\"datepickerMode\"\n class=\"sky-datepicker-calendar-inner\"\n (keydown)=\"onKeydown($event)\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".sky-datepicker-calendar-inner{border-radius:5px;background-color:#fff;border-top:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;border-right:1px solid #e2e3e4}.sky-datepicker-calendar-inner .sky-btn-default{border-color:transparent;border:2px solid #ffffff}.sky-datepicker-calendar-inner .sky-btn-default:hover{border-color:#eeeeef}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-selected:hover{background-color:#c1e8fb;border:2px solid #00b4f1}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:none}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:#686c73}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-chevron-modern{display:none}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-theme-modern .sky-datepicker-calendar-inner{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px;padding:5px 10px}.sky-theme-modern .sky-datepicker-calendar-inner:focus-within{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default{border:none;box-shadow:inset 0 0 0 1px transparent;padding:5px 7px}.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-active,.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-datepicker-calendar-inner .sky-datepicker-btn-selected,.sky-theme-modern .sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-background-color-input-selected)}.sky-theme-modern .sky-btn-sm.sky-datepicker-btn-date{height:30px;min-width:0;padding:0;width:30px}.sky-theme-modern .sky-datepicker-chevron-default{display:none}.sky-theme-modern .sky-datepicker-chevron-modern{display:inline;font-size:16px}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner{background-color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner:not(:focus-within){border:none;box-shadow:inset 0 0 0 1px #686c73}.sky-theme-modern.sky-theme-mode-dark .sky-datepicker-calendar-inner .sky-datepicker-btn-selected{background-color:#009cd1}\n"] }]
|
318
|
-
}], propDecorators: { customDates: [{
|
319
|
-
type: Input
|
320
|
-
}], startingDay: [{
|
321
|
-
type: Input
|
322
|
-
}], minDate: [{
|
323
|
-
type: Input
|
324
|
-
}], maxDate: [{
|
325
|
-
type: Input
|
326
|
-
}], selectedDate: [{
|
327
|
-
type: Input
|
328
|
-
}], selectedDateChange: [{
|
329
|
-
type: Output
|
330
|
-
}], calendarModeChange: [{
|
331
|
-
type: Output
|
332
|
-
}] } });
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQU9wRCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUV6Qjs7R0FFRztBQU9ILE1BQU0sT0FBTyxtQ0FBbUM7SUFOaEQ7O1FBMkNTLHVCQUFrQixHQUF1QixJQUFJLFlBQVksQ0FDOUQsU0FBUyxDQUNWLENBQUM7UUFHSyx1QkFBa0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUU3RSxpTUFBaU07UUFDMUwsZUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDeEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFbEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGNB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXRlJztcblxudHlwZSBEYXRlQ29tcGFyYXRvciA9IChkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbnR5cGUgS2V5Ym9hcmRFdmVudEhhbmRsZXIgPSAoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuXG5sZXQgbmV4dERhdGVwaWNrZXJJZCA9IDA7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXRlcGlja2VyLWlubmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tRGF0ZXM6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlW10gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydGluZ0RheSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3N0YXJ0aW5nRGF5ID0gdmFsdWUgfHwgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhcnRpbmdEYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0YXJ0aW5nRGF5O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1pbkRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1heERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZERhdGUodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5kYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgdGhpcy4jX3NlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI19zZWxlY3RlZERhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWREYXRlKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2VsZWN0ZWREYXRlO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhck1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8gVE9ETzogYGFjdGl2ZURhdGVgIGlzIHZlcnkgc2ltaWxhciB0byBgc2VsZWN0ZWREYXRlYCBhbmQgYXQgdGhlIHZlcnkgbGVhc3Qgc2hvdWxkIGJlIGFibGUgdG8gYmUgdW5kZWZpbmVkLiBIb3dldmVyLCB0aGlzIHdvdWxkIHRha2UgY29uc2lkZXJhYmxlIHJlZmFjdG9yaW5nIHRvIGRvIGFuZCB0aHVzIGhhcyBiZWVuIGRlZmVycmVkLlxuICBwdWJsaWMgYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHB1YmxpYyBhY3RpdmVEYXRlSWQgPSAnJztcblxuICBwdWJsaWMgbWluTW9kZSA9ICdkYXknO1xuICBwdWJsaWMgbWF4TW9kZSA9ICd5ZWFyJztcbiAgcHVibGljIG1vbnRoQ29sTGltaXQgPSAzO1xuICBwdWJsaWMgeWVhckNvbExpbWl0ID0gNTtcbiAgcHVibGljIGRhdGVwaWNrZXJNb2RlID0gJ2RheSc7XG4gIHB1YmxpYyB5ZWFyUmFuZ2UgPSAyMDtcblxuICBwdWJsaWMgZm9ybWF0RGF5ID0gJ0REJztcbiAgcHVibGljIGZvcm1hdE1vbnRoID0gJ01NTU0nO1xuICBwdWJsaWMgZm9ybWF0WWVhciA9ICdZWVlZJztcbiAgcHVibGljIGZvcm1hdERheUhlYWRlciA9ICdkZCc7XG4gIHB1YmxpYyBmb3JtYXREYXlUaXRsZSA9ICdNTU1NIFlZWVknO1xuICBwdWJsaWMgZm9ybWF0TW9udGhUaXRsZSA9ICdZWVlZJztcblxuICBwdWJsaWMgZGF0ZXBpY2tlcklkID0gYHNreS1kYXRlcGlja2VyLSR7KytuZXh0RGF0ZXBpY2tlcklkfWA7XG5cbiAgcHVibGljIHN0ZXBEYXk6IGFueSA9IHt9O1xuICBwdWJsaWMgc3RlcE1vbnRoOiBhbnkgPSB7fTtcbiAgcHVibGljIHN0ZXBZZWFyOiBhbnkgPSB7fTtcblxuICBwcm90ZWN0ZWQgbW9kZXM6IHN0cmluZ1tdID0gWydkYXknLCAnbW9udGgnLCAneWVhciddO1xuICBwcm90ZWN0ZWQgZGF0ZUZvcm1hdHRlcjogU2t5RGF0ZUZvcm1hdHRlciA9IG5ldyBTa3lEYXRlRm9ybWF0dGVyKCk7XG5cbiAgcHVibGljIHJlZnJlc2hWaWV3SGFuZGxlckRheTogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgY29tcGFyZUhhbmRsZXJEYXk6IERhdGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVmcmVzaFZpZXdIYW5kbGVyTW9udGg6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGNvbXBhcmVIYW5kbGVyTW9udGg6IERhdGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVmcmVzaFZpZXdIYW5kbGVyWWVhcjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgY29tcGFyZUhhbmRsZXJZZWFyOiBEYXRlQ29tcGFyYXRvciB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaGFuZGxlS2V5ZG93bkRheTogS2V5Ym9hcmRFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duTW9udGg6IEtleWJvYXJkRXZlbnRIYW5kbGVyIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgaGFuZGxlS2V5ZG93blllYXI6IEtleWJvYXJkRXZlbnRIYW5kbGVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBrZXlzOiBhbnkgPSB7XG4gICAgMTM6ICdlbnRlcicsXG4gICAgMzI6ICdzcGFjZScsXG4gICAgMzM6ICdwYWdldXAnLFxuICAgIDM0OiAncGFnZWRvd24nLFxuICAgIDM1OiAnZW5kJyxcbiAgICAzNjogJ2hvbWUnLFxuICAgIDM3OiAnbGVmdCcsXG4gICAgMzg6ICd1cCcsXG4gICAgMzk6ICdyaWdodCcsXG4gICAgNDA6ICdkb3duJyxcbiAgfTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI19zZWxlY3RlZERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gICNfc3RhcnRpbmdEYXkgPSAwO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gbmV3IERhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcGFyZUhhbmRsZXIoaGFuZGxlcjogRGF0ZUNvbXBhcmF0b3IsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5jb21wYXJlSGFuZGxlckRheSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMuY29tcGFyZUhhbmRsZXJNb250aCA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5jb21wYXJlSGFuZGxlclllYXIgPSBoYW5kbGVyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb21wYXJlKFxuICAgIGRhdGUxOiBEYXRlIHwgdW5kZWZpbmVkLFxuICAgIGRhdGUyOiBEYXRlIHwgdW5kZWZpbmVkXG4gICk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGRhdGUxID09PSB1bmRlZmluZWQgfHwgZGF0ZTIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheScgJiYgdGhpcy5jb21wYXJlSGFuZGxlckRheSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZUhhbmRsZXJEYXkoZGF0ZTEsIGRhdGUyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ21vbnRoJyAmJiB0aGlzLmNvbXBhcmVIYW5kbGVyTW9udGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVIYW5kbGVyTW9udGgoZGF0ZTEsIGRhdGUyKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAneWVhcicgJiYgdGhpcy5jb21wYXJlSGFuZGxlclllYXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVIYW5kbGVyWWVhcihkYXRlMSwgZGF0ZTIpO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZWZyZXNoVmlld0hhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCwgdHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyTW9udGggPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhciA9IGhhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2hWaWV3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5JyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSkge1xuICAgICAgdGhpcy5yZWZyZXNoVmlld0hhbmRsZXJEYXkoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ21vbnRoJyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlclllYXIpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRLZXlkb3duSGFuZGxlcihoYW5kbGVyOiBLZXlib2FyZEV2ZW50SGFuZGxlciwgdHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25EYXkgPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25Nb250aCA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duWWVhciA9IGhhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleWRvd24oa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICdkYXknICYmIHRoaXMuaGFuZGxlS2V5ZG93bkRheSkge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duRGF5KGtleSwgZXZlbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnICYmIHRoaXMuaGFuZGxlS2V5ZG93bk1vbnRoKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25Nb250aChrZXksIGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInICYmIHRoaXMuaGFuZGxlS2V5ZG93blllYXIpIHtcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93blllYXIoa2V5LCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRhdGVGaWx0ZXIoZGF0ZTogRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXR0ZXIuZm9ybWF0KGRhdGUsIGZvcm1hdCk7XG4gIH1cblxuICBwdWJsaWMgaXNBY3RpdmUoZGF0ZU9iamVjdDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29tcGFyZShkYXRlT2JqZWN0LmRhdGUsIHRoaXMuYWN0aXZlRGF0ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZUlkID0gZGF0ZU9iamVjdC51aWQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5rZXlzW2V2ZW50LndoaWNoXTtcblxuICAgIGlmICgha2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoa2V5ID09PSAnZW50ZXInIHx8IGtleSA9PT0gJ3NwYWNlJykge1xuICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCh0aGlzLmFjdGl2ZURhdGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuYWN0aXZlRGF0ZSk7XG4gICAgfSBlbHNlIGlmIChldmVudC5jdHJsS2V5ICYmIChrZXkgPT09ICd1cCcgfHwga2V5ID09PSAnZG93bicpKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGUoa2V5ID09PSAndXAnID8gMSA6IC0xKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duKGtleSwgZXZlbnQpO1xuICAgICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVEYXRlT2JqZWN0KFxuICAgIGRhdGU6IERhdGUsXG4gICAgZm9ybWF0OiBzdHJpbmcsXG4gICAgaXNTZWNvbmRhcnk6IGJvb2xlYW4sXG4gICAgaWQ6IHN0cmluZ1xuICApOiBTa3lEYXRlcGlja2VyRGF0ZSB7XG4gICAgY29uc3QgY3VzdG9tRGF0ZU1hdGNoID0gdGhpcy4jZ2V0Q3VzdG9tRGF0ZShkYXRlKTtcblxuICAgIGNvbnN0IGRhdGVPYmplY3Q6IFNreURhdGVwaWNrZXJEYXRlID0ge1xuICAgICAgZGF0ZTogbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSxcbiAgICAgIGxhYmVsOiB0aGlzLmRhdGVGaWx0ZXIoZGF0ZSwgZm9ybWF0KSxcbiAgICAgIHNlbGVjdGVkOlxuICAgICAgICAhIXRoaXMuc2VsZWN0ZWREYXRlICYmIHRoaXMuY29tcGFyZShkYXRlLCB0aGlzLnNlbGVjdGVkRGF0ZSkgPT09IDAsXG4gICAgICBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkKGRhdGUpLFxuICAgICAgY3VycmVudDogdGhpcy5jb21wYXJlKGRhdGUsIG5ldyBEYXRlKCkpID09PSAwLFxuICAgICAgc2Vjb25kYXJ5OiBpc1NlY29uZGFyeSxcbiAgICAgIHVpZDogaWQsXG4gICAgICBrZXlEYXRlOiBjdXN0b21EYXRlTWF0Y2ggPyBjdXN0b21EYXRlTWF0Y2gua2V5RGF0ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGtleURhdGVUZXh0OiBjdXN0b21EYXRlTWF0Y2ggPyBjdXN0b21EYXRlTWF0Y2gua2V5RGF0ZVRleHQgOiBbXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRhdGVPYmplY3Q7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQ2FsZW5kYXJSb3dzKFxuICAgIGRhdGVzOiBBcnJheTxTa3lEYXRlcGlja2VyRGF0ZT4sXG4gICAgc2l6ZTogbnVtYmVyXG4gICk6IEFycmF5PEFycmF5PFNreURhdGVwaWNrZXJEYXRlPj4ge1xuICAgIGNvbnN0IHJvd3M6IEFycmF5PEFycmF5PFNreURhdGVwaWNrZXJEYXRlPj4gPSBbXTtcbiAgICB3aGlsZSAoZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgcm93cy5wdXNoKGRhdGVzLnNwbGljZSgwLCBzaXplKSk7XG4gICAgfVxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgLypcbiAgICBUaGlzIGlzIGVuc3VyZXMgdGhhdCBubyBzdHJhbmdlbmVzcyBoYXBwZW5zIHdoZW4gY29udmVydGluZyBhIGRhdGUgdG8gbG9jYWwgdGltZS5cbiAgKi9cbiAgcHVibGljIGZpeFRpbWVab25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgbmV3RGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgcmV0dXJuIG5ld0RhdGU7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0Q2FsZW5kYXIoXG4gICAgZXZlbnQ6IEV2ZW50LFxuICAgIGRhdGU6IERhdGUsXG4gICAgY2xvc2VQaWNrZXI6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICBpZiAoIWNsb3NlUGlja2VyKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0KGRhdGUpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdChkYXRlOiBEYXRlLCBpc01hbnVhbDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgKTtcblxuICAgIC8qXG4gICAgICAgIE9ubHkgYWN0dWFsbHkgc2VsZWN0IGRhdGUgaWYgaW4gbWluTW9kZSAoZGF5IHBpY2tlciBtb2RlKS5cbiAgICAgICAgT3RoZXJ3aXNlLCBqdXN0IGNoYW5nZSB0aGUgYWN0aXZlIHZpZXcgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgICovXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgaWYgKGlzTWFudWFsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJNb2RlID1cbiAgICAgICAgdGhpcy5tb2Rlc1t0aGlzLm1vZGVzLmluZGV4T2YodGhpcy5kYXRlcGlja2VyTW9kZSkgLSAxXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgcHVibGljIG1vdmVDYWxlbmRhcihldmVudDogRXZlbnQsIGRpcmVjdGlvbjogbnVtYmVyKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm1vdmUoZGlyZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IGV4cGVjdGVkU3RlcDogYW55O1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5Jykge1xuICAgICAgZXhwZWN0ZWRTdGVwID0gdGhpcy5zdGVwRGF5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBNb250aDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBZZWFyO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKGV4cGVjdGVkU3RlcCkge1xuICAgICAgY29uc3QgeWVhciA9XG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpICsgZGlyZWN0aW9uICogKGV4cGVjdGVkU3RlcC55ZWFycyB8fCAwKTtcbiAgICAgIGNvbnN0IG1vbnRoID1cbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlLmdldE1vbnRoKCkgKyBkaXJlY3Rpb24gKiAoZXhwZWN0ZWRTdGVwLm1vbnRocyB8fCAwKTtcblxuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuXG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZU1vZGVDYWxlbmRhcihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudG9nZ2xlTW9kZSgxKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNb2RlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAxO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoXG4gICAgICAhKGRpcmVjdGlvbiA9PT0gMSAmJiB0aGlzLmRhdGVwaWNrZXJNb2RlID09PSB0aGlzLm1heE1vZGUpICYmXG4gICAgICAhKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSAmJiBkaXJlY3Rpb24gPT09IC0xKVxuICAgICkge1xuICAgICAgdGhpcy5kYXRlcGlja2VyTW9kZSA9XG4gICAgICAgIHRoaXMubW9kZXNbdGhpcy5tb2Rlcy5pbmRleE9mKHRoaXMuZGF0ZXBpY2tlck1vZGUpICsgZGlyZWN0aW9uXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERhdGUgaXMgZGlzYWJsZWQgaWYgaXQgbWVldHMgYW55IG9mIHRoZXNlIGNyaXRlcmlhOlxuICAgKiAxLiBEYXRlIGZhbGxzIG91dHNpZGUgdGhlIG1pbiBvciBtYXggZGF0ZXMgc2V0IGJ5IHRoZSBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZS5cbiAgICogMi4gRGF0ZSBpcyBtYXJrZWQgYXMgZGlzYWJsZWQgaW4gdGhlIGN1c3RvbURhdGVzIGFycmF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1c3RvbURhdGUgPSB0aGlzLiNnZXRDdXN0b21EYXRlKGRhdGUpO1xuICAgIGNvbnN0IG1pbkRhdGVDb21wYXJlID0gdGhpcy5jb21wYXJlKGRhdGUsIHRoaXMubWluRGF0ZSk7XG4gICAgY29uc3QgbWF4RGF0ZUNvbXBhcmUgPSB0aGlzLmNvbXBhcmUoZGF0ZSwgdGhpcy5tYXhEYXRlKTtcblxuICAgIHJldHVybiAoXG4gICAgICAobWluRGF0ZUNvbXBhcmUgIT09IHVuZGVmaW5lZCAmJiBtaW5EYXRlQ29tcGFyZSA8IDApIHx8XG4gICAgICAobWF4RGF0ZUNvbXBhcmUgIT09IHVuZGVmaW5lZCAmJiBtYXhEYXRlQ29tcGFyZSA+IDApIHx8XG4gICAgICAhIWN1c3RvbURhdGU/LmRpc2FibGVkXG4gICAgKTtcbiAgfVxuXG4gICNnZXRDdXN0b21EYXRlKGRhdGU6IERhdGUpOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuY3VzdG9tRGF0ZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbURhdGVzLmZpbmQoKGN1c3RvbURhdGU6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlKSA9PiB7XG4gICAgICAgIHJldHVybiBjdXN0b21EYXRlLmRhdGUuZ2V0VGltZSgpID09PSBkYXRlLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiZGF0ZXBpY2tlck1vZGVcIlxuICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyXCJcbiAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
@@ -1,96 +0,0 @@
|
|
1
|
-
var _SkyDatepickerCalendarComponent_formatter, _SkyDatepickerCalendarComponent__startingDay, _SkyDatepickerCalendarComponent_config;
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
|
-
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
4
|
-
import { SkyDateFormatter } from './date-formatter';
|
5
|
-
import { SkyDatepickerAdapterService } from './datepicker-adapter.service';
|
6
|
-
import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
|
7
|
-
import * as i0 from "@angular/core";
|
8
|
-
import * as i1 from "./datepicker-config.service";
|
9
|
-
import * as i2 from "./datepicker-calendar-inner.component";
|
10
|
-
import * as i3 from "./daypicker.component";
|
11
|
-
import * as i4 from "./monthpicker.component";
|
12
|
-
import * as i5 from "./yearpicker.component";
|
13
|
-
/**
|
14
|
-
* @internal
|
15
|
-
*/
|
16
|
-
export class SkyDatepickerCalendarComponent {
|
17
|
-
/** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */
|
18
|
-
set startingDay(start) {
|
19
|
-
__classPrivateFieldSet(this, _SkyDatepickerCalendarComponent__startingDay, start ?? 0, "f");
|
20
|
-
}
|
21
|
-
get startingDay() {
|
22
|
-
return __classPrivateFieldGet(this, _SkyDatepickerCalendarComponent__startingDay, "f");
|
23
|
-
}
|
24
|
-
constructor(config) {
|
25
|
-
this.calendarDateRangeChange = new EventEmitter();
|
26
|
-
this.calendarModeChange = new EventEmitter();
|
27
|
-
this.selectedDateChange = new EventEmitter(undefined);
|
28
|
-
this._now = new Date();
|
29
|
-
_SkyDatepickerCalendarComponent_formatter.set(this, new SkyDateFormatter());
|
30
|
-
_SkyDatepickerCalendarComponent__startingDay.set(this, 0);
|
31
|
-
_SkyDatepickerCalendarComponent_config.set(this, void 0);
|
32
|
-
__classPrivateFieldSet(this, _SkyDatepickerCalendarComponent_config, config, "f");
|
33
|
-
this.configureOptions();
|
34
|
-
}
|
35
|
-
configureOptions() {
|
36
|
-
Object.assign(this, __classPrivateFieldGet(this, _SkyDatepickerCalendarComponent_config, "f"));
|
37
|
-
}
|
38
|
-
onCalendarDateRangeChange(event) {
|
39
|
-
this.calendarDateRangeChange.next(event);
|
40
|
-
}
|
41
|
-
onCalendarModeChange(event) {
|
42
|
-
this.calendarModeChange.emit(event);
|
43
|
-
}
|
44
|
-
onSelectedDateChange(event) {
|
45
|
-
this.selectedDateChange.emit(event);
|
46
|
-
}
|
47
|
-
writeValue(value) {
|
48
|
-
if (value !== undefined &&
|
49
|
-
__classPrivateFieldGet(this, _SkyDatepickerCalendarComponent_formatter, "f").dateIsValid(value) &&
|
50
|
-
this.selectedDate !== undefined &&
|
51
|
-
this.datepicker?.compareHandlerDay &&
|
52
|
-
this.datepicker.compareHandlerDay(value, this.selectedDate) === 0) {
|
53
|
-
return;
|
54
|
-
}
|
55
|
-
if (value && __classPrivateFieldGet(this, _SkyDatepickerCalendarComponent_formatter, "f").dateIsValid(value)) {
|
56
|
-
this.selectedDate = value;
|
57
|
-
this.datepicker?.select(value, false);
|
58
|
-
}
|
59
|
-
else {
|
60
|
-
this.selectedDate = new Date();
|
61
|
-
this.datepicker?.select(new Date(), false);
|
62
|
-
}
|
63
|
-
}
|
64
|
-
}
|
65
|
-
_SkyDatepickerCalendarComponent_formatter = new WeakMap(), _SkyDatepickerCalendarComponent__startingDay = new WeakMap(), _SkyDatepickerCalendarComponent_config = new WeakMap();
|
66
|
-
SkyDatepickerCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDatepickerCalendarComponent, deps: [{ token: i1.SkyDatepickerConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
67
|
-
SkyDatepickerCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyDatepickerCalendarComponent, selector: "sky-datepicker-calendar", inputs: { customDates: "customDates", isDaypickerWaiting: "isDaypickerWaiting", minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate", startingDay: "startingDay" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange", calendarModeChange: "calendarModeChange", selectedDateChange: "selectedDateChange" }, providers: [SkyDatepickerAdapterService], viewQueries: [{ propertyName: "datepicker", first: true, predicate: SkyDatepickerCalendarInnerComponent, descendants: true, read: SkyDatepickerCalendarInnerComponent, static: true }], ngImport: i0, template: "<div class=\"sky-datepicker-calendar\">\n <sky-datepicker-inner\n [customDates]=\"customDates\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectedDate]=\"selectedDate\"\n [startingDay]=\"startingDay\"\n (calendarModeChange)=\"onCalendarModeChange($event)\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n <sky-daypicker\n tabindex=\"0\"\n [customDates]=\"customDates\"\n [isWaiting]=\"isDaypickerWaiting\"\n (calendarDateRangeChange)=\"onCalendarDateRangeChange($event)\"\n ></sky-daypicker>\n <sky-monthpicker tabindex=\"0\"></sky-monthpicker>\n <sky-yearpicker tabindex=\"0\"></sky-yearpicker>\n </sky-datepicker-inner>\n</div>\n", styles: [".sky-datepicker-calendar{display:block}\n"], dependencies: [{ kind: "component", type: i2.SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: ["customDates", "startingDay", "minDate", "maxDate", "selectedDate"], outputs: ["selectedDateChange", "calendarModeChange"] }, { kind: "component", type: i3.SkyDayPickerComponent, selector: "sky-daypicker", inputs: ["customDates", "isWaiting"], outputs: ["calendarDateRangeChange"] }, { kind: "component", type: i4.SkyMonthPickerComponent, selector: "sky-monthpicker" }, { kind: "component", type: i5.SkyYearPickerComponent, selector: "sky-yearpicker" }] });
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDatepickerCalendarComponent, decorators: [{
|
69
|
-
type: Component,
|
70
|
-
args: [{ selector: 'sky-datepicker-calendar', providers: [SkyDatepickerAdapterService], template: "<div class=\"sky-datepicker-calendar\">\n <sky-datepicker-inner\n [customDates]=\"customDates\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectedDate]=\"selectedDate\"\n [startingDay]=\"startingDay\"\n (calendarModeChange)=\"onCalendarModeChange($event)\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n <sky-daypicker\n tabindex=\"0\"\n [customDates]=\"customDates\"\n [isWaiting]=\"isDaypickerWaiting\"\n (calendarDateRangeChange)=\"onCalendarDateRangeChange($event)\"\n ></sky-daypicker>\n <sky-monthpicker tabindex=\"0\"></sky-monthpicker>\n <sky-yearpicker tabindex=\"0\"></sky-yearpicker>\n </sky-datepicker-inner>\n</div>\n", styles: [".sky-datepicker-calendar{display:block}\n"] }]
|
71
|
-
}], ctorParameters: function () { return [{ type: i1.SkyDatepickerConfigService }]; }, propDecorators: { customDates: [{
|
72
|
-
type: Input
|
73
|
-
}], isDaypickerWaiting: [{
|
74
|
-
type: Input
|
75
|
-
}], minDate: [{
|
76
|
-
type: Input
|
77
|
-
}], maxDate: [{
|
78
|
-
type: Input
|
79
|
-
}], selectedDate: [{
|
80
|
-
type: Input
|
81
|
-
}], startingDay: [{
|
82
|
-
type: Input
|
83
|
-
}], calendarDateRangeChange: [{
|
84
|
-
type: Output
|
85
|
-
}], calendarModeChange: [{
|
86
|
-
type: Output
|
87
|
-
}], selectedDateChange: [{
|
88
|
-
type: Output
|
89
|
-
}], datepicker: [{
|
90
|
-
type: ViewChild,
|
91
|
-
args: [SkyDatepickerCalendarInnerComponent, {
|
92
|
-
read: SkyDatepickerCalendarInnerComponent,
|
93
|
-
static: true,
|
94
|
-
}]
|
95
|
-
}] } });
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7O0FBSTVGOztHQUVHO0FBT0gsTUFBTSxPQUFPLDhCQUE4QjtJQWlCekMsb0VBQW9FO0lBQ3BFLElBQ1csV0FBVyxDQUFDLEtBQXlCO1FBQzlDLHVCQUFBLElBQUksZ0RBQWlCLEtBQUssSUFBSSxDQUFDLE1BQUEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sdUJBQUEsSUFBSSxvREFBYyxDQUFDO0lBQzVCLENBQUM7SUEyQkQsWUFBWSxNQUFrQztRQXhCdkMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBRTlDLENBQUM7UUFHRyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR2hELHVCQUFrQixHQUFHLElBQUksWUFBWSxDQUFPLFNBQVMsQ0FBQyxDQUFDO1FBUXBELFNBQUksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRWxDLG9EQUFhLElBQUksZ0JBQWdCLEVBQUUsRUFBQztRQUVwQyx1REFBZ0IsQ0FBQyxFQUFDO1FBRWxCLHlEQUFvQztRQUdsQyx1QkFBQSxJQUFJLDBDQUFXLE1BQU0sTUFBQSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsdUJBQUEsSUFBSSw4Q0FBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLHlCQUF5QixDQUM5QixLQUE4QztRQUU5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxLQUFhO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLG9CQUFvQixDQUFDLEtBQVc7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQXVCO1FBQ3ZDLElBQ0UsS0FBSyxLQUFLLFNBQVM7WUFDbkIsdUJBQUEsSUFBSSxpREFBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTO1lBQy9CLElBQUksQ0FBQyxVQUFVLEVBQUUsaUJBQWlCO1lBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQ2pFO1lBQ0EsT0FBTztTQUNSO1FBRUQsSUFBSSxLQUFLLElBQUksdUJBQUEsSUFBSSxpREFBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkM7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQzs7OzJIQTdGVSw4QkFBOEI7K0dBQTlCLDhCQUE4QiwyWEFGOUIsQ0FBQywyQkFBMkIsQ0FBQyxzRUF3QzdCLG1DQUFtQywyQkFDdEMsbUNBQW1DLDJDQy9EN0Msd3NCQW9CQTsyRkRJYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UseUJBQXlCLGFBR3hCLENBQUMsMkJBQTJCLENBQUM7aUhBSWpDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBS0MsWUFBWTtzQkFEbEIsS0FBSztnQkFLSyxXQUFXO3NCQURyQixLQUFLO2dCQVVDLHVCQUF1QjtzQkFEN0IsTUFBTTtnQkFNQSxrQkFBa0I7c0JBRHhCLE1BQU07Z0JBSUEsa0JBQWtCO3NCQUR4QixNQUFNO2dCQU9BLFVBQVU7c0JBSmhCLFNBQVM7dUJBQUMsbUNBQW1DLEVBQUU7d0JBQzlDLElBQUksRUFBRSxtQ0FBbUM7d0JBQ3pDLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreURhdGVGb3JtYXR0ZXIgfSBmcm9tICcuL2RhdGUtZm9ybWF0dGVyJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2RhdGVwaWNrZXItY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckN1c3RvbURhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItY3VzdG9tLWRhdGUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF0ZXBpY2tlci1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lEYXRlcGlja2VyQWRhcHRlclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tRGF0ZXM6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlW10gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzRGF5cGlja2VyV2FpdGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWluRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICAvKiogY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICAvKiogc3RhcnRpbmcgZGF5IG9mIHRoZSB3ZWVrIGZyb20gMC02ICgwPVN1bmRheSwgLi4uLCA2PVNhdHVyZGF5KSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0aW5nRGF5KHN0YXJ0OiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc3RhcnRpbmdEYXkgPSBzdGFydCA/PyAwO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGFydGluZ0RheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfc3RhcnRpbmdEYXk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgfCB1bmRlZmluZWRcbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2FsZW5kYXJNb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KHVuZGVmaW5lZCk7XG5cbiAgQFZpZXdDaGlsZChTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCwge1xuICAgIHJlYWQ6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50LFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBfbm93OiBEYXRlID0gbmV3IERhdGUoKTtcblxuICAjZm9ybWF0dGVyID0gbmV3IFNreURhdGVGb3JtYXR0ZXIoKTtcblxuICAjX3N0YXJ0aW5nRGF5ID0gMDtcblxuICAjY29uZmlnOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlKSB7XG4gICAgdGhpcy4jY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuY29uZmlndXJlT3B0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCB0aGlzLiNjb25maWcpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UoXG4gICAgZXZlbnQ6IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSB8IHVuZGVmaW5lZFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJNb2RlQ2hhbmdlKGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyTW9kZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkRGF0ZUNoYW5nZShldmVudDogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLiNmb3JtYXR0ZXIuZGF0ZUlzVmFsaWQodmFsdWUpICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLmRhdGVwaWNrZXI/LmNvbXBhcmVIYW5kbGVyRGF5ICYmXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuY29tcGFyZUhhbmRsZXJEYXkodmFsdWUsIHRoaXMuc2VsZWN0ZWREYXRlKSA9PT0gMFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLiNmb3JtYXR0ZXIuZGF0ZUlzVmFsaWQodmFsdWUpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5kYXRlcGlja2VyPy5zZWxlY3QodmFsdWUsIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyPy5zZWxlY3QobmV3IERhdGUoKSwgZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyXCI+XG4gIDxza3ktZGF0ZXBpY2tlci1pbm5lclxuICAgIFtjdXN0b21EYXRlc109XCJjdXN0b21EYXRlc1wiXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGVcIlxuICAgIFtzdGFydGluZ0RheV09XCJzdGFydGluZ0RheVwiXG4gICAgKGNhbGVuZGFyTW9kZUNoYW5nZSk9XCJvbkNhbGVuZGFyTW9kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoc2VsZWN0ZWREYXRlQ2hhbmdlKT1cIm9uU2VsZWN0ZWREYXRlQ2hhbmdlKCRldmVudClcIlxuICA+XG4gICAgPHNreS1kYXlwaWNrZXJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbY3VzdG9tRGF0ZXNdPVwiY3VzdG9tRGF0ZXNcIlxuICAgICAgW2lzV2FpdGluZ109XCJpc0RheXBpY2tlcldhaXRpbmdcIlxuICAgICAgKGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvc2t5LWRheXBpY2tlcj5cbiAgICA8c2t5LW1vbnRocGlja2VyIHRhYmluZGV4PVwiMFwiPjwvc2t5LW1vbnRocGlja2VyPlxuICAgIDxza3kteWVhcnBpY2tlciB0YWJpbmRleD1cIjBcIj48L3NreS15ZWFycGlja2VyPlxuICA8L3NreS1kYXRlcGlja2VyLWlubmVyPlxuPC9kaXY+XG4iXX0=
|