@fundamental-ngx/datetime-adapter 0.36.3-rc.6 → 0.36.3-rc.8
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/esm2020/lib/dayjs-datetime-adapter.mjs +47 -3
- package/fesm2015/fundamental-ngx-datetime-adapter.mjs +46 -2
- package/fesm2015/fundamental-ngx-datetime-adapter.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-datetime-adapter.mjs +46 -2
- package/fesm2020/fundamental-ngx-datetime-adapter.mjs.map +1 -1
- package/fundamental-ngx-datetime-adapter-v0.36.3-rc.8.tgz +0 -0
- package/lib/dayjs-datetime-adapter.d.ts +47 -0
- package/package.json +2 -2
- package/fundamental-ngx-datetime-adapter-v0.36.3-rc.6.tgz +0 -0
|
@@ -16,7 +16,7 @@ export const DAYJS_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken('DAYJS_DATE_TI
|
|
|
16
16
|
providedIn: 'root',
|
|
17
17
|
factory: DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY
|
|
18
18
|
});
|
|
19
|
-
|
|
19
|
+
/** @hidden */
|
|
20
20
|
export function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY() {
|
|
21
21
|
return {
|
|
22
22
|
useUtc: false,
|
|
@@ -30,6 +30,7 @@ export function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY() {
|
|
|
30
30
|
* It relies on dayjs implementation for formatting and translation purposes.
|
|
31
31
|
*/
|
|
32
32
|
export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
33
|
+
/** @hidden */
|
|
33
34
|
constructor(localeId, _options) {
|
|
34
35
|
super();
|
|
35
36
|
this._options = _options;
|
|
@@ -42,6 +43,7 @@ export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
42
43
|
dayjs.extend(customParseFormat);
|
|
43
44
|
this.setLocale(localeId || dayjs.locale());
|
|
44
45
|
}
|
|
46
|
+
/** Set locale */
|
|
45
47
|
setLocale(locale) {
|
|
46
48
|
if (locale.toLowerCase() === 'en-us') {
|
|
47
49
|
// Handle English locale name as it's a default one and it is different
|
|
@@ -65,39 +67,51 @@ export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
65
67
|
};
|
|
66
68
|
super.setLocale(locale);
|
|
67
69
|
}
|
|
70
|
+
/** Get year */
|
|
68
71
|
getYear(date) {
|
|
69
72
|
return date.year();
|
|
70
73
|
}
|
|
74
|
+
/** Get month */
|
|
71
75
|
getMonth(date) {
|
|
72
76
|
return date.month() + 1;
|
|
73
77
|
}
|
|
78
|
+
/** Get date */
|
|
74
79
|
getDate(date) {
|
|
75
80
|
return date.date();
|
|
76
81
|
}
|
|
82
|
+
/** Get day of the week */
|
|
77
83
|
getDayOfWeek(date) {
|
|
78
84
|
return date.day() + 1;
|
|
79
85
|
}
|
|
86
|
+
/** Get hours */
|
|
80
87
|
getHours(date) {
|
|
81
88
|
return date.hour();
|
|
82
89
|
}
|
|
90
|
+
/** Get minutes */
|
|
83
91
|
getMinutes(date) {
|
|
84
92
|
return date.minute();
|
|
85
93
|
}
|
|
94
|
+
/** Get seconds */
|
|
86
95
|
getSeconds(date) {
|
|
87
96
|
return date.second();
|
|
88
97
|
}
|
|
98
|
+
/** Set hours in date object */
|
|
89
99
|
setHours(date, hours) {
|
|
90
100
|
return date.hour(hours);
|
|
91
101
|
}
|
|
102
|
+
/** Set minutes in date object */
|
|
92
103
|
setMinutes(date, minutes) {
|
|
93
104
|
return date.minute(minutes);
|
|
94
105
|
}
|
|
106
|
+
/** Set seconds in date object */
|
|
95
107
|
setSeconds(date, seconds) {
|
|
96
108
|
return date.second(seconds);
|
|
97
109
|
}
|
|
110
|
+
/** Get week number */
|
|
98
111
|
getWeekNumber(date) {
|
|
99
112
|
return date.week();
|
|
100
113
|
}
|
|
114
|
+
/** Get months names */
|
|
101
115
|
getMonthNames(style) {
|
|
102
116
|
switch (style) {
|
|
103
117
|
case 'narrow':
|
|
@@ -109,9 +123,11 @@ export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
109
123
|
return this._localeData.longMonths;
|
|
110
124
|
}
|
|
111
125
|
}
|
|
126
|
+
/** Get date names */
|
|
112
127
|
getDateNames() {
|
|
113
128
|
return range(31, (i) => this.createDate(2017, 0, i + 1).format('D'));
|
|
114
129
|
}
|
|
130
|
+
/** Get days of week names */
|
|
115
131
|
getDayOfWeekNames(style) {
|
|
116
132
|
switch (style) {
|
|
117
133
|
case 'narrow':
|
|
@@ -123,39 +139,50 @@ export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
123
139
|
return this._localeData.longDaysOfWeek;
|
|
124
140
|
}
|
|
125
141
|
}
|
|
142
|
+
/** Get year name */
|
|
126
143
|
getYearName(date) {
|
|
127
144
|
return date.format('YYYY');
|
|
128
145
|
}
|
|
146
|
+
/** Get week name */
|
|
129
147
|
getWeekName(date) {
|
|
130
148
|
return date.week().toLocaleString(this.locale);
|
|
131
149
|
}
|
|
150
|
+
/** Get hour names */
|
|
132
151
|
getHourNames({ meridian, twoDigit }) {
|
|
133
152
|
const format = meridian ? (twoDigit ? 'hh' : 'h') : twoDigit ? 'HH' : 'H';
|
|
134
153
|
const dayjsDate = this._createDayjsDate();
|
|
135
154
|
return range(24, (i) => this.clone(dayjsDate).hour(i).format(format));
|
|
136
155
|
}
|
|
156
|
+
/** Get minute names */
|
|
137
157
|
getMinuteNames({ twoDigit }) {
|
|
138
158
|
const format = twoDigit ? 'mm' : 'm';
|
|
139
159
|
const dayjsDate = this._createDayjsDate();
|
|
140
160
|
return range(60, (i) => this.clone(dayjsDate).minute(i).format(format));
|
|
141
161
|
}
|
|
162
|
+
/** Get second names */
|
|
142
163
|
getSecondNames({ twoDigit }) {
|
|
143
164
|
const format = twoDigit ? 'ss' : 's';
|
|
144
165
|
const dayjsDate = this._createDayjsDate();
|
|
145
166
|
return range(60, (i) => this.clone(dayjsDate).second(i).format(format));
|
|
146
167
|
}
|
|
147
|
-
|
|
168
|
+
/**
|
|
169
|
+
* Get day period names
|
|
170
|
+
* @param isLower responsible for the lower and upper cases of the result
|
|
171
|
+
*/
|
|
148
172
|
getDayPeriodNames(isLower = false) {
|
|
149
173
|
const AM = this._dayjsLocaleData.meridiem?.(6, 0, isLower) ?? (isLower ? 'am' : 'AM');
|
|
150
174
|
const PM = this._dayjsLocaleData.meridiem?.(16, 0, isLower) ?? (isLower ? 'pm' : 'PM');
|
|
151
175
|
return [AM, PM];
|
|
152
176
|
}
|
|
177
|
+
/** Get first day of the week */
|
|
153
178
|
getFirstDayOfWeek() {
|
|
154
179
|
return this._localeData.firstDayOfWeek;
|
|
155
180
|
}
|
|
181
|
+
/** Get number of days in the month */
|
|
156
182
|
getNumDaysInMonth(date) {
|
|
157
183
|
return date.daysInMonth();
|
|
158
184
|
}
|
|
185
|
+
/** Try to parse a string to a date object */
|
|
159
186
|
parse(value, parseFormat = '') {
|
|
160
187
|
if (value && typeof value === 'string') {
|
|
161
188
|
return this._createDayjsDate(value, parseFormat);
|
|
@@ -166,6 +193,7 @@ export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
166
193
|
}
|
|
167
194
|
return value ? this._createDayjsDate(value).locale(this.locale) : null;
|
|
168
195
|
}
|
|
196
|
+
/** Format a date as a string */
|
|
169
197
|
format(date, displayFormat) {
|
|
170
198
|
if (!date) {
|
|
171
199
|
return '';
|
|
@@ -175,6 +203,7 @@ export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
175
203
|
}
|
|
176
204
|
return date.locale(dayjs.locale()).format(displayFormat);
|
|
177
205
|
}
|
|
206
|
+
/** Create date object from values */
|
|
178
207
|
createDate(year, month, date) {
|
|
179
208
|
const result = this._createDayjsDate(new Date(year, month - 1, date));
|
|
180
209
|
if (!result.isValid()) {
|
|
@@ -182,21 +211,27 @@ export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
182
211
|
}
|
|
183
212
|
return result;
|
|
184
213
|
}
|
|
214
|
+
/** Get today */
|
|
185
215
|
today() {
|
|
186
216
|
return this._createDayjsDate().locale(this.locale).startOf('day');
|
|
187
217
|
}
|
|
218
|
+
/** Get now */
|
|
188
219
|
now() {
|
|
189
220
|
return this._createDayjsDate().locale(this.locale);
|
|
190
221
|
}
|
|
222
|
+
/** Add years to date */
|
|
191
223
|
addCalendarYears(date, years) {
|
|
192
224
|
return date.add(years, 'year');
|
|
193
225
|
}
|
|
226
|
+
/** Add months to date */
|
|
194
227
|
addCalendarMonths(date, months) {
|
|
195
228
|
return date.add(months, 'month');
|
|
196
229
|
}
|
|
230
|
+
/** Add days to date */
|
|
197
231
|
addCalendarDays(date, days) {
|
|
198
232
|
return date.add(days, 'day');
|
|
199
233
|
}
|
|
234
|
+
/** Clone date */
|
|
200
235
|
clone(date) {
|
|
201
236
|
if (!date) {
|
|
202
237
|
return date;
|
|
@@ -206,42 +241,51 @@ export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
206
241
|
}
|
|
207
242
|
return date.clone();
|
|
208
243
|
}
|
|
244
|
+
/** Compare if dates are equal */
|
|
209
245
|
datesEqual(date1, date2) {
|
|
210
246
|
if (!date1 || !date2) {
|
|
211
247
|
return false;
|
|
212
248
|
}
|
|
213
249
|
return date1.isSame(date2, 'day');
|
|
214
250
|
}
|
|
251
|
+
/** Compare if dates and time are equal */
|
|
215
252
|
dateTimesEqual(date1, date2) {
|
|
216
253
|
if (!date1 || !date2) {
|
|
217
254
|
return false;
|
|
218
255
|
}
|
|
219
256
|
return date1.isSame(date2);
|
|
220
257
|
}
|
|
258
|
+
/** Check if date is in range */
|
|
221
259
|
isBetween(dateToCheck, startDate, endDate) {
|
|
222
260
|
if (!dateToCheck || !startDate || !endDate) {
|
|
223
261
|
return false;
|
|
224
262
|
}
|
|
225
263
|
return dateToCheck.isBetween(startDate, endDate);
|
|
226
264
|
}
|
|
265
|
+
/** Check if date is valid date object */
|
|
227
266
|
isValid(date) {
|
|
228
267
|
return !!date?.isValid();
|
|
229
268
|
}
|
|
269
|
+
/** Convert date to ISO8601 string */
|
|
230
270
|
toIso8601(date) {
|
|
231
271
|
return date.toISOString();
|
|
232
272
|
}
|
|
273
|
+
/** Check if time format includes day period */
|
|
233
274
|
isTimeFormatIncludesDayPeriod(displayFormat) {
|
|
234
275
|
const format = this._prepareFormat(displayFormat);
|
|
235
276
|
return !!format.match(/[aA]/);
|
|
236
277
|
}
|
|
278
|
+
/** Check if time format includes hours */
|
|
237
279
|
isTimeFormatIncludesHours(displayFormat) {
|
|
238
280
|
const format = this._prepareFormat(displayFormat);
|
|
239
281
|
return !!format.match(/[hH]/);
|
|
240
282
|
}
|
|
283
|
+
/** Check if time format includes minutes */
|
|
241
284
|
isTimeFormatIncludesMinutes(displayFormat) {
|
|
242
285
|
const format = this._prepareFormat(displayFormat);
|
|
243
286
|
return !!format.match(/[m]/);
|
|
244
287
|
}
|
|
288
|
+
/** Check if time format includes seconds */
|
|
245
289
|
isTimeFormatIncludesSeconds(displayFormat) {
|
|
246
290
|
const format = this._prepareFormat(displayFormat);
|
|
247
291
|
return !!format.match(/[s]/);
|
|
@@ -290,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
290
334
|
type: Inject,
|
|
291
335
|
args: [DAYJS_DATE_TIME_ADAPTER_OPTIONS]
|
|
292
336
|
}] }]; } });
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5anMtZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0ZXRpbWUtYWRhcHRlci9zcmMvbGliL2RheWpzLWRhdGV0aW1lLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxLQUE0QixNQUFNLE9BQU8sQ0FBQztBQUNqRCxPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLFNBQVMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLGFBQWEsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLGVBQWUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBR3pFLFNBQVMsS0FBSyxDQUFJLE1BQWMsRUFBRSxLQUEyQjtJQUN6RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBT0QsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxjQUFjLENBQzdELGlDQUFpQyxFQUNqQztJQUNJLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSx1Q0FBdUM7Q0FDbkQsQ0FDSixDQUFDO0FBRUYsZ0VBQWdFO0FBQ2hFLE1B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LENBQUM7UUFDMUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUMsNkNBQTZDO1FBQzdDLDhGQUE4RjtRQUM5RixJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBRTtZQUN6QyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOztpSEFyVVEsb0JBQW9CLGtCQVVMLFNBQVMsNkJBQ1QsK0JBQStCO3FIQVg5QyxvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVTs7MEJBV0YsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxTQUFTOzswQkFDNUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBMT0NBTEVfSUQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZGF5anMsIHsgQ29uZmlnVHlwZSwgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgbG9jYWxlRGF0YSBmcm9tICdkYXlqcy9wbHVnaW4vbG9jYWxlRGF0YSc7XG5pbXBvcnQgd2Vla09mWWVhciBmcm9tICdkYXlqcy9wbHVnaW4vd2Vla09mWWVhcic7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcbmltcG9ydCBvYmplY3RTdXBwb3J0IGZyb20gJ2RheWpzL3BsdWdpbi9vYmplY3RTdXBwb3J0JztcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdCc7XG5pbXBvcnQgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0JztcblxuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyLCBGZERhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuZnVuY3Rpb24gcmFuZ2U8VD4obGVuZ3RoOiBudW1iZXIsIG1hcEZuOiAoaW5kZXg6IG51bWJlcikgPT4gVCk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IEFycmF5KGxlbmd0aCkpLm1hcCgoXywgaW5kZXgpID0+IG1hcEZuKGluZGV4KSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF5anNEYXRldGltZUFkYXB0ZXJPcHRpb25zIHtcbiAgICBzdHJpY3Q/OiBib29sZWFuO1xuICAgIHVzZVV0Yz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBEQVlKU19EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPERheWpzRGF0ZXRpbWVBZGFwdGVyT3B0aW9ucz4oXG4gICAgJ0RBWUpTX0RBVEVfVElNRV9BREFQVEVSX09QVElPTlMnLFxuICAgIHtcbiAgICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgICAgICBmYWN0b3J5OiBEQVlKU19EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TX0ZBQ1RPUllcbiAgICB9XG4pO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgZnVuY3Rpb24gREFZSlNfREFURV9USU1FX0FEQVBURVJfT1BUSU9OU19GQUNUT1JZKCk6IERheWpzRGF0ZXRpbWVBZGFwdGVyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdXNlVXRjOiBmYWxzZSxcbiAgICAgICAgc3RyaWN0OiBmYWxzZVxuICAgIH07XG59XG5cbi8qKlxuICogRGF0ZXRpbWVBZGFwdGVyIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGRheWpzLlxuICpcbiAqIFRoaXMgdXNlcyBkYXlqcyBhcyBhIGRhdGUgbW9kZWwgaW5zdGFuY2UuXG4gKiBJdCByZWxpZXMgb24gZGF5anMgaW1wbGVtZW50YXRpb24gZm9yIGZvcm1hdHRpbmcgYW5kIHRyYW5zbGF0aW9uIHB1cnBvc2VzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGF5anNEYXRldGltZUFkYXB0ZXIgZXh0ZW5kcyBEYXRldGltZUFkYXB0ZXI8RGF5anM+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RheWpzTG9jYWxlRGF0YTogZGF5anMuR2xvYmFsTG9jYWxlRGF0YVJldHVybjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbG9jYWxlRGF0YTogRGF0ZUxvY2FsZTtcblxuICAgIGZyb21Ob3c6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlSWQ6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVlKU19EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TKSBwcml2YXRlIF9vcHRpb25zPzogRGF5anNEYXRldGltZUFkYXB0ZXJPcHRpb25zXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgZGF5anMuZXh0ZW5kKGxvY2FsZURhdGEpO1xuICAgICAgICBkYXlqcy5leHRlbmQod2Vla09mWWVhcik7XG4gICAgICAgIGRheWpzLmV4dGVuZCh1dGMpO1xuICAgICAgICBkYXlqcy5leHRlbmQoaXNCZXR3ZWVuKTtcbiAgICAgICAgZGF5anMuZXh0ZW5kKG9iamVjdFN1cHBvcnQpO1xuICAgICAgICBkYXlqcy5leHRlbmQobG9jYWxpemVkRm9ybWF0KTtcbiAgICAgICAgZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcblxuICAgICAgICB0aGlzLnNldExvY2FsZShsb2NhbGVJZCB8fCBkYXlqcy5sb2NhbGUoKSk7XG4gICAgfVxuXG4gICAgc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChsb2NhbGUudG9Mb3dlckNhc2UoKSA9PT0gJ2VuLXVzJykge1xuICAgICAgICAgICAgLy8gSGFuZGxlIEVuZ2xpc2ggbG9jYWxlIG5hbWUgYXMgaXQncyBhIGRlZmF1bHQgb25lIGFuZCBpdCBpcyBkaWZmZXJlbnRcbiAgICAgICAgICAgIGxvY2FsZSA9ICdlbic7XG4gICAgICAgIH1cbiAgICAgICAgZGF5anMubG9jYWxlKGxvY2FsZSk7XG5cbiAgICAgICAgaWYgKGRheWpzLmxvY2FsZSgpICE9PSBsb2NhbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIGxvYWQgbG9jYWxlICR7bG9jYWxlfS4gYCArXG4gICAgICAgICAgICAgICAgICAgICdNYWtlIHN1cmUgaXQgZXhpc3RzIGFuZCBpcyBwcmVsb2FkZWQuIFlvdSBtYXkgdXNlIFwibG9hZExvY2FsZVwiIGZ1bmN0aW9uIGZyb20gdGhpcyBwYWNrYWdlIHRvIGxvYWQgdGhlIGxvY2FsZSB5b3UgbmVlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICdMaXN0IG9mIHN1cHBvcnRlZCBsb2NhbGVzIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwczovL2RheS5qcy5vcmcvZG9jcy9lbi9pMThuL2kxOG4uJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RheWpzTG9jYWxlRGF0YSA9IGRheWpzLmxvY2FsZURhdGEoKTtcblxuICAgICAgICB0aGlzLl9sb2NhbGVEYXRhID0ge1xuICAgICAgICAgICAgZmlyc3REYXlPZldlZWs6IHRoaXMuX2RheWpzTG9jYWxlRGF0YS5maXJzdERheU9mV2VlaygpLFxuICAgICAgICAgICAgbG9uZ01vbnRoczogdGhpcy5fZGF5anNMb2NhbGVEYXRhLm1vbnRocygpLFxuICAgICAgICAgICAgc2hvcnRNb250aHM6IHRoaXMuX2RheWpzTG9jYWxlRGF0YS5tb250aHNTaG9ydCgpLFxuICAgICAgICAgICAgbmFycm93TW9udGhzOiB0aGlzLl9kYXlqc0xvY2FsZURhdGEubW9udGhzKCkubWFwKChuYW1lOiBzdHJpbmcpID0+IG5hbWUuY2hhckF0KDApKSxcbiAgICAgICAgICAgIGxvbmdEYXlzT2ZXZWVrOiB0aGlzLl9kYXlqc0xvY2FsZURhdGEud2Vla2RheXMoKSxcbiAgICAgICAgICAgIHNob3J0RGF5c09mV2VlazogdGhpcy5fZGF5anNMb2NhbGVEYXRhLndlZWtkYXlzU2hvcnQoKSxcbiAgICAgICAgICAgIG5hcnJvd0RheXNPZldlZWs6IHRoaXMuX2RheWpzTG9jYWxlRGF0YS53ZWVrZGF5c01pbigpXG4gICAgICAgIH07XG5cbiAgICAgICAgc3VwZXIuc2V0TG9jYWxlKGxvY2FsZSk7XG4gICAgfVxuXG4gICAgZ2V0WWVhcihkYXRlOiBEYXlqcyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkYXRlLnllYXIoKTtcbiAgICB9XG5cbiAgICBnZXRNb250aChkYXRlOiBEYXlqcyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkYXRlLm1vbnRoKCkgKyAxO1xuICAgIH1cblxuICAgIGdldERhdGUoZGF0ZTogRGF5anMpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5kYXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0RGF5T2ZXZWVrKGRhdGU6IERheWpzKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZGF5KCkgKyAxO1xuICAgIH1cblxuICAgIGdldEhvdXJzKGRhdGU6IERheWpzKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuaG91cigpO1xuICAgIH1cblxuICAgIGdldE1pbnV0ZXMoZGF0ZTogRGF5anMpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5taW51dGUoKTtcbiAgICB9XG5cbiAgICBnZXRTZWNvbmRzKGRhdGU6IERheWpzKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuc2Vjb25kKCk7XG4gICAgfVxuXG4gICAgc2V0SG91cnMoZGF0ZTogRGF5anMsIGhvdXJzOiBudW1iZXIpOiBEYXlqcyB7XG4gICAgICAgIHJldHVybiBkYXRlLmhvdXIoaG91cnMpO1xuICAgIH1cblxuICAgIHNldE1pbnV0ZXMoZGF0ZTogRGF5anMsIG1pbnV0ZXM6IG51bWJlcik6IERheWpzIHtcbiAgICAgICAgcmV0dXJuIGRhdGUubWludXRlKG1pbnV0ZXMpO1xuICAgIH1cblxuICAgIHNldFNlY29uZHMoZGF0ZTogRGF5anMsIHNlY29uZHM6IG51bWJlcik6IERheWpzIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuc2Vjb25kKHNlY29uZHMpO1xuICAgIH1cblxuICAgIGdldFdlZWtOdW1iZXIoZGF0ZTogRGF5anMpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS53ZWVrKCk7XG4gICAgfVxuXG4gICAgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgICAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICAgICAgICBjYXNlICduYXJyb3cnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLm5hcnJvd01vbnRocztcbiAgICAgICAgICAgIGNhc2UgJ3Nob3J0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5zaG9ydE1vbnRocztcbiAgICAgICAgICAgIGNhc2UgJ2xvbmcnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5sb25nTW9udGhzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlKDMxLCAoaSkgPT4gdGhpcy5jcmVhdGVEYXRlKDIwMTcsIDAsIGkgKyAxKS5mb3JtYXQoJ0QnKSk7XG4gICAgfVxuXG4gICAgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICAgICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgICAgICAgY2FzZSAnbmFycm93JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5uYXJyb3dEYXlzT2ZXZWVrO1xuICAgICAgICAgICAgY2FzZSAnc2hvcnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLnNob3J0RGF5c09mV2VlaztcbiAgICAgICAgICAgIGNhc2UgJ2xvbmcnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5sb25nRGF5c09mV2VlaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFllYXJOYW1lKGRhdGU6IERheWpzKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KCdZWVlZJyk7XG4gICAgfVxuXG4gICAgZ2V0V2Vla05hbWUoZGF0ZTogRGF5anMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZGF0ZS53ZWVrKCkudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUpO1xuICAgIH1cblxuICAgIGdldEhvdXJOYW1lcyh7IG1lcmlkaWFuLCB0d29EaWdpdCB9OiB7IHR3b0RpZ2l0OiBib29sZWFuOyBtZXJpZGlhbjogYm9vbGVhbiB9KTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBmb3JtYXQ6IHN0cmluZyA9IG1lcmlkaWFuID8gKHR3b0RpZ2l0ID8gJ2hoJyA6ICdoJykgOiB0d29EaWdpdCA/ICdISCcgOiAnSCc7XG4gICAgICAgIGNvbnN0IGRheWpzRGF0ZSA9IHRoaXMuX2NyZWF0ZURheWpzRGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiByYW5nZSgyNCwgKGkpID0+IHRoaXMuY2xvbmUoZGF5anNEYXRlKS5ob3VyKGkpLmZvcm1hdChmb3JtYXQpKTtcbiAgICB9XG5cbiAgICBnZXRNaW51dGVOYW1lcyh7IHR3b0RpZ2l0IH06IHsgdHdvRGlnaXQ6IGJvb2xlYW4gfSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgZm9ybWF0OiBzdHJpbmcgPSB0d29EaWdpdCA/ICdtbScgOiAnbSc7XG4gICAgICAgIGNvbnN0IGRheWpzRGF0ZSA9IHRoaXMuX2NyZWF0ZURheWpzRGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiByYW5nZSg2MCwgKGkpID0+IHRoaXMuY2xvbmUoZGF5anNEYXRlKS5taW51dGUoaSkuZm9ybWF0KGZvcm1hdCkpO1xuICAgIH1cblxuICAgIGdldFNlY29uZE5hbWVzKHsgdHdvRGlnaXQgfTogeyB0d29EaWdpdDogYm9vbGVhbiB9KTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBmb3JtYXQ6IHN0cmluZyA9IHR3b0RpZ2l0ID8gJ3NzJyA6ICdzJztcbiAgICAgICAgY29uc3QgZGF5anNEYXRlID0gdGhpcy5fY3JlYXRlRGF5anNEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIHJhbmdlKDYwLCAoaSkgPT4gdGhpcy5jbG9uZShkYXlqc0RhdGUpLnNlY29uZChpKS5mb3JtYXQoZm9ybWF0KSk7XG4gICAgfVxuXG4gICAgLy8gaXNMb3dlciBwcm9wZXJ0eSBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGxvd2VyIGFuZCB1cHBlciBjYXNlcyBvZiB0aGUgcmVzdWx0XG4gICAgZ2V0RGF5UGVyaW9kTmFtZXMoaXNMb3dlciA9IGZhbHNlKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgICAgIGNvbnN0IEFNID0gdGhpcy5fZGF5anNMb2NhbGVEYXRhLm1lcmlkaWVtPy4oNiwgMCwgaXNMb3dlcikgPz8gKGlzTG93ZXIgPyAnYW0nIDogJ0FNJyk7XG4gICAgICAgIGNvbnN0IFBNID0gdGhpcy5fZGF5anNMb2NhbGVEYXRhLm1lcmlkaWVtPy4oMTYsIDAsIGlzTG93ZXIpID8/IChpc0xvd2VyID8gJ3BtJyA6ICdQTScpO1xuXG4gICAgICAgIHJldHVybiBbQU0sIFBNXTtcbiAgICB9XG5cbiAgICBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5maXJzdERheU9mV2VlaztcbiAgICB9XG5cbiAgICBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEYXlqcyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkYXRlLmRheXNJbk1vbnRoKCk7XG4gICAgfVxuXG4gICAgcGFyc2UodmFsdWU6IGFueSwgcGFyc2VGb3JtYXQ6IHN0cmluZyA9ICcnKTogRGF5anMgfCBudWxsIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVEYXlqc0RhdGUodmFsdWUsIHBhcnNlRm9ybWF0KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZkRGF0ZSkge1xuICAgICAgICAgICAgLy8gRmREYXRlIGluc3RhbmNlIG1heSBiZSBpbmNvcnJlY3RseSBwYXJzZWQgYnkgRGF5SlNcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuX2NyZWF0ZURheWpzRGF0ZSh2YWx1ZSkubG9jYWxlKHRoaXMubG9jYWxlKSA6IG51bGw7XG4gICAgfVxuXG4gICAgZm9ybWF0KGRhdGU6IERheWpzLCBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignRGF5anNEYXRlVGltZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGUubG9jYWxlKGRheWpzLmxvY2FsZSgpKS5mb3JtYXQoZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuXG4gICAgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik6IERheWpzIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRGF5anNEYXRlKG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF0ZSkpO1xuXG4gICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSBcIiR7ZGF0ZX1cIiBmb3IgbW9udGggd2l0aCBpbmRleCBcIiR7bW9udGh9XCIgYW5kIHllYXIgXCIke3llYXJ9XCIuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHRvZGF5KCk6IERheWpzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZURheWpzRGF0ZSgpLmxvY2FsZSh0aGlzLmxvY2FsZSkuc3RhcnRPZignZGF5Jyk7XG4gICAgfVxuXG4gICAgbm93KCk6IERheWpzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZURheWpzRGF0ZSgpLmxvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgfVxuXG4gICAgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBEYXlqcywgeWVhcnM6IG51bWJlcik6IERheWpzIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuYWRkKHllYXJzLCAneWVhcicpO1xuICAgIH1cblxuICAgIGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IERheWpzLCBtb250aHM6IG51bWJlcik6IERheWpzIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuYWRkKG1vbnRocywgJ21vbnRoJyk7XG4gICAgfVxuXG4gICAgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IERheWpzLCBkYXlzOiBudW1iZXIpOiBEYXlqcyB7XG4gICAgICAgIHJldHVybiBkYXRlLmFkZChkYXlzLCAnZGF5Jyk7XG4gICAgfVxuXG4gICAgY2xvbmUoZGF0ZTogRGF5anMpOiBEYXlqcyB7XG4gICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2NhbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmNsb25lKCkubG9jYWxlKHRoaXMubG9jYWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRlLmNsb25lKCk7XG4gICAgfVxuXG4gICAgZGF0ZXNFcXVhbChkYXRlMTogRGF5anMsIGRhdGUyOiBEYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWRhdGUxIHx8ICFkYXRlMikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGUxLmlzU2FtZShkYXRlMiwgJ2RheScpO1xuICAgIH1cblxuICAgIGRhdGVUaW1lc0VxdWFsKGRhdGUxOiBEYXlqcywgZGF0ZTI6IERheWpzKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghZGF0ZTEgfHwgIWRhdGUyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTEuaXNTYW1lKGRhdGUyKTtcbiAgICB9XG5cbiAgICBpc0JldHdlZW4oZGF0ZVRvQ2hlY2s6IERheWpzLCBzdGFydERhdGU6IERheWpzLCBlbmREYXRlOiBEYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWRhdGVUb0NoZWNrIHx8ICFzdGFydERhdGUgfHwgIWVuZERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRlVG9DaGVjay5pc0JldHdlZW4oc3RhcnREYXRlLCBlbmREYXRlKTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkKGRhdGU6IE51bGxhYmxlPERheWpzPik6IGRhdGUgaXMgRGF5anMge1xuICAgICAgICByZXR1cm4gISFkYXRlPy5pc1ZhbGlkKCk7XG4gICAgfVxuXG4gICAgdG9Jc284NjAxKGRhdGU6IERheWpzKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGRhdGUudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpc1RpbWVGb3JtYXRJbmNsdWRlc0RheVBlcmlvZChkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5fcHJlcGFyZUZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcblxuICAgICAgICByZXR1cm4gISFmb3JtYXQubWF0Y2goL1thQV0vKTtcbiAgICB9XG5cbiAgICBpc1RpbWVGb3JtYXRJbmNsdWRlc0hvdXJzKGRpc3BsYXlGb3JtYXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLl9wcmVwYXJlRm9ybWF0KGRpc3BsYXlGb3JtYXQpO1xuXG4gICAgICAgIHJldHVybiAhIWZvcm1hdC5tYXRjaCgvW2hIXS8pO1xuICAgIH1cblxuICAgIGlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5fcHJlcGFyZUZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcblxuICAgICAgICByZXR1cm4gISFmb3JtYXQubWF0Y2goL1ttXS8pO1xuICAgIH1cblxuICAgIGlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5fcHJlcGFyZUZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcblxuICAgICAgICByZXR1cm4gISFmb3JtYXQubWF0Y2goL1tzXS8pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiB3aWxsIGF0dGVtcHQgdG8gcGFyc2UgbG9uZ0RhdGFGb3JtYXQgKGUuZy4gXCJMXCIsIFwiTFRcIikgYW5kIGNvbnZlcnQgaXQgdG8gc2ltcGxlIG9uZS5cbiAgICAgKi9cbiAgICBfcHJlcGFyZUZvcm1hdChkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBkaXNwbGF5Rm9ybWF0ID0gZGlzcGxheUZvcm1hdC50cmltKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXRzOiBvYmplY3QgPSBkYXlqcy5Mc1tkYXlqcy5sb2NhbGUoKV0uZm9ybWF0cztcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBwYXJzZSBmb3JtYXQgdGFrZW4gZnJvbSBkYXlqcyByZXBvXG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaWFta3VuL2RheWpzL2Jsb2IvZGV2L3NyYy9wbHVnaW4vbG9jYWxpemVkRm9ybWF0L3V0aWxzLmpzXG4gICAgICAgICAgICByZXR1cm4gZGlzcGxheUZvcm1hdC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIC8oXFxbW15cXF1dK10pfChMVFM/fGx7MSw0fXxMezEsNH0pL2csXG4gICAgICAgICAgICAgICAgKF8sIGEsIGIpID0+IGEgfHwgZm9ybWF0c1tiXSB8fCBkaXNwbGF5Rm9ybWF0XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzcGxheUZvcm1hdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NyZWF0ZURheWpzRGF0ZShkYXRlPzogQ29uZmlnVHlwZSwgZm9ybWF0Pzogc3RyaW5nKTogRGF5anMge1xuICAgICAgICBjb25zdCB7IHN0cmljdCwgdXNlVXRjIH06IERheWpzRGF0ZXRpbWVBZGFwdGVyT3B0aW9ucyA9IHRoaXMuX29wdGlvbnMgfHwge307XG5cbiAgICAgICAgY29uc3QgbWV0aG9kID0gdXNlVXRjID8gZGF5anMudXRjIDogZGF5anM7XG4gICAgICAgIGxldCBwYXJzZWQgPSBtZXRob2QoZGF0ZSwgZm9ybWF0LCBzdHJpY3QpO1xuICAgICAgICAvLyBkYXlqcyBzdHJpY3RseSBmb2xsb3dzIHRoZSBwcm92aWRlZCBmb3JtYXRcbiAgICAgICAgLy8gc28gcGFydGlhbCBzdHJpbmdzIHdpbGwgbm90IGJlIHJlc29sdmVkLiBpbiB0aGlzIGNhc2UgYXR0ZW1wdCB0byByZXNvbHZlIHdpdGhvdXQgZm9ybWF0dGluZ1xuICAgICAgICBpZiAoIXBhcnNlZD8uaXNWYWxpZCgpICYmICFzdHJpY3QgJiYgZm9ybWF0KSB7XG4gICAgICAgICAgICBwYXJzZWQgPSBtZXRob2QoZGF0ZSwgdW5kZWZpbmVkLCBzdHJpY3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgRGF0ZUxvY2FsZSB7XG4gICAgZmlyc3REYXlPZldlZWs6IG51bWJlcjtcbiAgICBsb25nTW9udGhzOiBzdHJpbmdbXTtcbiAgICBzaG9ydE1vbnRoczogc3RyaW5nW107XG4gICAgbmFycm93TW9udGhzOiBzdHJpbmdbXTtcbiAgICBsb25nRGF5c09mV2Vlazogc3RyaW5nW107XG4gICAgc2hvcnREYXlzT2ZXZWVrOiBzdHJpbmdbXTtcbiAgICBuYXJyb3dEYXlzT2ZXZWVrOiBzdHJpbmdbXTtcbn1cbiJdfQ==
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5anMtZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0ZXRpbWUtYWRhcHRlci9zcmMvbGliL2RheWpzLWRhdGV0aW1lLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxLQUE0QixNQUFNLE9BQU8sQ0FBQztBQUNqRCxPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLFNBQVMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLGFBQWEsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLGVBQWUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBR3pFLFNBQVMsS0FBSyxDQUFJLE1BQWMsRUFBRSxLQUEyQjtJQUN6RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBT0QsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxjQUFjLENBQzdELGlDQUFpQyxFQUNqQztJQUNJLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSx1Q0FBdUM7Q0FDbkQsQ0FDSixDQUFDO0FBRUYsY0FBYztBQUNkLE1BQU0s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LFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTE9DQUxFX0lELCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzLCB7IENvbmZpZ1R5cGUsIERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IGxvY2FsZURhdGEgZnJvbSAnZGF5anMvcGx1Z2luL2xvY2FsZURhdGEnO1xuaW1wb3J0IHdlZWtPZlllYXIgZnJvbSAnZGF5anMvcGx1Z2luL3dlZWtPZlllYXInO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBpc0JldHdlZW4gZnJvbSAnZGF5anMvcGx1Z2luL2lzQmV0d2Vlbic7XG5pbXBvcnQgb2JqZWN0U3VwcG9ydCBmcm9tICdkYXlqcy9wbHVnaW4vb2JqZWN0U3VwcG9ydCc7XG5pbXBvcnQgbG9jYWxpemVkRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXQnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5cbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciwgRmREYXRlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbmZ1bmN0aW9uIHJhbmdlPFQ+KGxlbmd0aDogbnVtYmVyLCBtYXBGbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBBcnJheShsZW5ndGgpKS5tYXAoKF8sIGluZGV4KSA9PiBtYXBGbihpbmRleCkpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERheWpzRGF0ZXRpbWVBZGFwdGVyT3B0aW9ucyB7XG4gICAgc3RyaWN0PzogYm9vbGVhbjtcbiAgICB1c2VVdGM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREFZSlNfREFURV9USU1FX0FEQVBURVJfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEYXlqc0RhdGV0aW1lQWRhcHRlck9wdGlvbnM+KFxuICAgICdEQVlKU19EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TJyxcbiAgICB7XG4gICAgICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICAgICAgZmFjdG9yeTogREFZSlNfREFURV9USU1FX0FEQVBURVJfT1BUSU9OU19GQUNUT1JZXG4gICAgfVxuKTtcblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEQVlKU19EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TX0ZBQ1RPUlkoKTogRGF5anNEYXRldGltZUFkYXB0ZXJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VVdGM6IGZhbHNlLFxuICAgICAgICBzdHJpY3Q6IGZhbHNlXG4gICAgfTtcbn1cblxuLyoqXG4gKiBEYXRldGltZUFkYXB0ZXIgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gZGF5anMuXG4gKlxuICogVGhpcyB1c2VzIGRheWpzIGFzIGEgZGF0ZSBtb2RlbCBpbnN0YW5jZS5cbiAqIEl0IHJlbGllcyBvbiBkYXlqcyBpbXBsZW1lbnRhdGlvbiBmb3IgZm9ybWF0dGluZyBhbmQgdHJhbnNsYXRpb24gcHVycG9zZXMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXlqc0RhdGV0aW1lQWRhcHRlciBleHRlbmRzIERhdGV0aW1lQWRhcHRlcjxEYXlqcz4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF5anNMb2NhbGVEYXRhOiBkYXlqcy5HbG9iYWxMb2NhbGVEYXRhUmV0dXJuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sb2NhbGVEYXRhOiBEYXRlTG9jYWxlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmcm9tTm93OiB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlSWQ6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVlKU19EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TKSBwcml2YXRlIF9vcHRpb25zPzogRGF5anNEYXRldGltZUFkYXB0ZXJPcHRpb25zXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgZGF5anMuZXh0ZW5kKGxvY2FsZURhdGEpO1xuICAgICAgICBkYXlqcy5leHRlbmQod2Vla09mWWVhcik7XG4gICAgICAgIGRheWpzLmV4dGVuZCh1dGMpO1xuICAgICAgICBkYXlqcy5leHRlbmQoaXNCZXR3ZWVuKTtcbiAgICAgICAgZGF5anMuZXh0ZW5kKG9iamVjdFN1cHBvcnQpO1xuICAgICAgICBkYXlqcy5leHRlbmQobG9jYWxpemVkRm9ybWF0KTtcbiAgICAgICAgZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcblxuICAgICAgICB0aGlzLnNldExvY2FsZShsb2NhbGVJZCB8fCBkYXlqcy5sb2NhbGUoKSk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBsb2NhbGUgKi9cbiAgICBzZXRMb2NhbGUobG9jYWxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKGxvY2FsZS50b0xvd2VyQ2FzZSgpID09PSAnZW4tdXMnKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgRW5nbGlzaCBsb2NhbGUgbmFtZSBhcyBpdCdzIGEgZGVmYXVsdCBvbmUgYW5kIGl0IGlzIGRpZmZlcmVudFxuICAgICAgICAgICAgbG9jYWxlID0gJ2VuJztcbiAgICAgICAgfVxuICAgICAgICBkYXlqcy5sb2NhbGUobG9jYWxlKTtcblxuICAgICAgICBpZiAoZGF5anMubG9jYWxlKCkgIT09IGxvY2FsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBGYWlsZWQgdG8gbG9hZCBsb2NhbGUgJHtsb2NhbGV9LiBgICtcbiAgICAgICAgICAgICAgICAgICAgJ01ha2Ugc3VyZSBpdCBleGlzdHMgYW5kIGlzIHByZWxvYWRlZC4gWW91IG1heSB1c2UgXCJsb2FkTG9jYWxlXCIgZnVuY3Rpb24gZnJvbSB0aGlzIHBhY2thZ2UgdG8gbG9hZCB0aGUgbG9jYWxlIHlvdSBuZWVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgJ0xpc3Qgb2Ygc3VwcG9ydGVkIGxvY2FsZXMgY2FuIGJlIGZvdW5kIGhlcmU6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL2kxOG4vaTE4bi4nXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGF5anNMb2NhbGVEYXRhID0gZGF5anMubG9jYWxlRGF0YSgpO1xuXG4gICAgICAgIHRoaXMuX2xvY2FsZURhdGEgPSB7XG4gICAgICAgICAgICBmaXJzdERheU9mV2VlazogdGhpcy5fZGF5anNMb2NhbGVEYXRhLmZpcnN0RGF5T2ZXZWVrKCksXG4gICAgICAgICAgICBsb25nTW9udGhzOiB0aGlzLl9kYXlqc0xvY2FsZURhdGEubW9udGhzKCksXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogdGhpcy5fZGF5anNMb2NhbGVEYXRhLm1vbnRoc1Nob3J0KCksXG4gICAgICAgICAgICBuYXJyb3dNb250aHM6IHRoaXMuX2RheWpzTG9jYWxlRGF0YS5tb250aHMoKS5tYXAoKG5hbWU6IHN0cmluZykgPT4gbmFtZS5jaGFyQXQoMCkpLFxuICAgICAgICAgICAgbG9uZ0RheXNPZldlZWs6IHRoaXMuX2RheWpzTG9jYWxlRGF0YS53ZWVrZGF5cygpLFxuICAgICAgICAgICAgc2hvcnREYXlzT2ZXZWVrOiB0aGlzLl9kYXlqc0xvY2FsZURhdGEud2Vla2RheXNTaG9ydCgpLFxuICAgICAgICAgICAgbmFycm93RGF5c09mV2VlazogdGhpcy5fZGF5anNMb2NhbGVEYXRhLndlZWtkYXlzTWluKClcbiAgICAgICAgfTtcblxuICAgICAgICBzdXBlci5zZXRMb2NhbGUobG9jYWxlKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHllYXIgKi9cbiAgICBnZXRZZWFyKGRhdGU6IERheWpzKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUueWVhcigpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgbW9udGggKi9cbiAgICBnZXRNb250aChkYXRlOiBEYXlqcyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkYXRlLm1vbnRoKCkgKyAxO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZGF0ZSAqL1xuICAgIGdldERhdGUoZGF0ZTogRGF5anMpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5kYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBkYXkgb2YgdGhlIHdlZWsgKi9cbiAgICBnZXREYXlPZldlZWsoZGF0ZTogRGF5anMpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5kYXkoKSArIDE7XG4gICAgfVxuXG4gICAgLyoqIEdldCBob3VycyAqL1xuICAgIGdldEhvdXJzKGRhdGU6IERheWpzKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuaG91cigpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgbWludXRlcyAqL1xuICAgIGdldE1pbnV0ZXMoZGF0ZTogRGF5anMpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5taW51dGUoKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHNlY29uZHMgKi9cbiAgICBnZXRTZWNvbmRzKGRhdGU6IERheWpzKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuc2Vjb25kKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBob3VycyBpbiBkYXRlIG9iamVjdCAqL1xuICAgIHNldEhvdXJzKGRhdGU6IERheWpzLCBob3VyczogbnVtYmVyKTogRGF5anMge1xuICAgICAgICByZXR1cm4gZGF0ZS5ob3VyKGhvdXJzKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IG1pbnV0ZXMgaW4gZGF0ZSBvYmplY3QgKi9cbiAgICBzZXRNaW51dGVzKGRhdGU6IERheWpzLCBtaW51dGVzOiBudW1iZXIpOiBEYXlqcyB7XG4gICAgICAgIHJldHVybiBkYXRlLm1pbnV0ZShtaW51dGVzKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IHNlY29uZHMgaW4gZGF0ZSBvYmplY3QgKi9cbiAgICBzZXRTZWNvbmRzKGRhdGU6IERheWpzLCBzZWNvbmRzOiBudW1iZXIpOiBEYXlqcyB7XG4gICAgICAgIHJldHVybiBkYXRlLnNlY29uZChzZWNvbmRzKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHdlZWsgbnVtYmVyICovXG4gICAgZ2V0V2Vla051bWJlcihkYXRlOiBEYXlqcyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkYXRlLndlZWsoKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IG1vbnRocyBuYW1lcyAqL1xuICAgIGdldE1vbnRoTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICAgICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgICAgICAgY2FzZSAnbmFycm93JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5uYXJyb3dNb250aHM7XG4gICAgICAgICAgICBjYXNlICdzaG9ydCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZURhdGEuc2hvcnRNb250aHM7XG4gICAgICAgICAgICBjYXNlICdsb25nJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZURhdGEubG9uZ01vbnRocztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBHZXQgZGF0ZSBuYW1lcyAqL1xuICAgIGdldERhdGVOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiByYW5nZSgzMSwgKGkpID0+IHRoaXMuY3JlYXRlRGF0ZSgyMDE3LCAwLCBpICsgMSkuZm9ybWF0KCdEJykpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZGF5cyBvZiB3ZWVrIG5hbWVzICovXG4gICAgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICAgICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgICAgICAgY2FzZSAnbmFycm93JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5uYXJyb3dEYXlzT2ZXZWVrO1xuICAgICAgICAgICAgY2FzZSAnc2hvcnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLnNob3J0RGF5c09mV2VlaztcbiAgICAgICAgICAgIGNhc2UgJ2xvbmcnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5sb25nRGF5c09mV2VlaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBHZXQgeWVhciBuYW1lICovXG4gICAgZ2V0WWVhck5hbWUoZGF0ZTogRGF5anMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoJ1lZWVknKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHdlZWsgbmFtZSAqL1xuICAgIGdldFdlZWtOYW1lKGRhdGU6IERheWpzKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGRhdGUud2VlaygpLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGhvdXIgbmFtZXMgKi9cbiAgICBnZXRIb3VyTmFtZXMoeyBtZXJpZGlhbiwgdHdvRGlnaXQgfTogeyB0d29EaWdpdDogYm9vbGVhbjsgbWVyaWRpYW46IGJvb2xlYW4gfSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgZm9ybWF0OiBzdHJpbmcgPSBtZXJpZGlhbiA/ICh0d29EaWdpdCA/ICdoaCcgOiAnaCcpIDogdHdvRGlnaXQgPyAnSEgnIDogJ0gnO1xuICAgICAgICBjb25zdCBkYXlqc0RhdGUgPSB0aGlzLl9jcmVhdGVEYXlqc0RhdGUoKTtcblxuICAgICAgICByZXR1cm4gcmFuZ2UoMjQsIChpKSA9PiB0aGlzLmNsb25lKGRheWpzRGF0ZSkuaG91cihpKS5mb3JtYXQoZm9ybWF0KSk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBtaW51dGUgbmFtZXMgKi9cbiAgICBnZXRNaW51dGVOYW1lcyh7IHR3b0RpZ2l0IH06IHsgdHdvRGlnaXQ6IGJvb2xlYW4gfSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgZm9ybWF0OiBzdHJpbmcgPSB0d29EaWdpdCA/ICdtbScgOiAnbSc7XG4gICAgICAgIGNvbnN0IGRheWpzRGF0ZSA9IHRoaXMuX2NyZWF0ZURheWpzRGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiByYW5nZSg2MCwgKGkpID0+IHRoaXMuY2xvbmUoZGF5anNEYXRlKS5taW51dGUoaSkuZm9ybWF0KGZvcm1hdCkpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgc2Vjb25kIG5hbWVzICovXG4gICAgZ2V0U2Vjb25kTmFtZXMoeyB0d29EaWdpdCB9OiB7IHR3b0RpZ2l0OiBib29sZWFuIH0pOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdDogc3RyaW5nID0gdHdvRGlnaXQgPyAnc3MnIDogJ3MnO1xuICAgICAgICBjb25zdCBkYXlqc0RhdGUgPSB0aGlzLl9jcmVhdGVEYXlqc0RhdGUoKTtcblxuICAgICAgICByZXR1cm4gcmFuZ2UoNjAsIChpKSA9PiB0aGlzLmNsb25lKGRheWpzRGF0ZSkuc2Vjb25kKGkpLmZvcm1hdChmb3JtYXQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgR2V0IGRheSBwZXJpb2QgbmFtZXNcbiAgICAgKiBAcGFyYW0gaXNMb3dlciByZXNwb25zaWJsZSBmb3IgdGhlIGxvd2VyIGFuZCB1cHBlciBjYXNlcyBvZiB0aGUgcmVzdWx0XG4gICAgICovXG4gICAgZ2V0RGF5UGVyaW9kTmFtZXMoaXNMb3dlciA9IGZhbHNlKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgICAgIGNvbnN0IEFNID0gdGhpcy5fZGF5anNMb2NhbGVEYXRhLm1lcmlkaWVtPy4oNiwgMCwgaXNMb3dlcikgPz8gKGlzTG93ZXIgPyAnYW0nIDogJ0FNJyk7XG4gICAgICAgIGNvbnN0IFBNID0gdGhpcy5fZGF5anNMb2NhbGVEYXRhLm1lcmlkaWVtPy4oMTYsIDAsIGlzTG93ZXIpID8/IChpc0xvd2VyID8gJ3BtJyA6ICdQTScpO1xuXG4gICAgICAgIHJldHVybiBbQU0sIFBNXTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGZpcnN0IGRheSBvZiB0aGUgd2VlayAqL1xuICAgIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLmZpcnN0RGF5T2ZXZWVrO1xuICAgIH1cblxuICAgIC8qKiBHZXQgbnVtYmVyIG9mIGRheXMgaW4gdGhlIG1vbnRoICovXG4gICAgZ2V0TnVtRGF5c0luTW9udGgoZGF0ZTogRGF5anMpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5kYXlzSW5Nb250aCgpO1xuICAgIH1cblxuICAgIC8qKiBUcnkgdG8gcGFyc2UgYSBzdHJpbmcgdG8gYSBkYXRlIG9iamVjdCAqL1xuICAgIHBhcnNlKHZhbHVlOiBhbnksIHBhcnNlRm9ybWF0OiBzdHJpbmcgPSAnJyk6IERheWpzIHwgbnVsbCB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGF5anNEYXRlKHZhbHVlLCBwYXJzZUZvcm1hdCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBGZERhdGUpIHtcbiAgICAgICAgICAgIC8vIEZkRGF0ZSBpbnN0YW5jZSBtYXkgYmUgaW5jb3JyZWN0bHkgcGFyc2VkIGJ5IERheUpTXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWUgPyB0aGlzLl9jcmVhdGVEYXlqc0RhdGUodmFsdWUpLmxvY2FsZSh0aGlzLmxvY2FsZSkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBGb3JtYXQgYSBkYXRlIGFzIGEgc3RyaW5nICovXG4gICAgZm9ybWF0KGRhdGU6IERheWpzLCBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignRGF5anNEYXRlVGltZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGUubG9jYWxlKGRheWpzLmxvY2FsZSgpKS5mb3JtYXQoZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBkYXRlIG9iamVjdCBmcm9tIHZhbHVlcyAqL1xuICAgIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIpOiBEYXlqcyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2NyZWF0ZURheWpzRGF0ZShuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRhdGUpKTtcblxuICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGRhdGUgXCIke2RhdGV9XCIgZm9yIG1vbnRoIHdpdGggaW5kZXggXCIke21vbnRofVwiIGFuZCB5ZWFyIFwiJHt5ZWFyfVwiLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKiogR2V0IHRvZGF5ICovXG4gICAgdG9kYXkoKTogRGF5anMge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGF5anNEYXRlKCkubG9jYWxlKHRoaXMubG9jYWxlKS5zdGFydE9mKCdkYXknKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IG5vdyAqL1xuICAgIG5vdygpOiBEYXlqcyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVEYXlqc0RhdGUoKS5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIH1cblxuICAgIC8qKiBBZGQgeWVhcnMgdG8gZGF0ZSAqL1xuICAgIGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogRGF5anMsIHllYXJzOiBudW1iZXIpOiBEYXlqcyB7XG4gICAgICAgIHJldHVybiBkYXRlLmFkZCh5ZWFycywgJ3llYXInKTtcbiAgICB9XG5cbiAgICAvKiogQWRkIG1vbnRocyB0byBkYXRlICovXG4gICAgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogRGF5anMsIG1vbnRoczogbnVtYmVyKTogRGF5anMge1xuICAgICAgICByZXR1cm4gZGF0ZS5hZGQobW9udGhzLCAnbW9udGgnKTtcbiAgICB9XG5cbiAgICAvKiogQWRkIGRheXMgdG8gZGF0ZSAqL1xuICAgIGFkZENhbGVuZGFyRGF5cyhkYXRlOiBEYXlqcywgZGF5czogbnVtYmVyKTogRGF5anMge1xuICAgICAgICByZXR1cm4gZGF0ZS5hZGQoZGF5cywgJ2RheScpO1xuICAgIH1cblxuICAgIC8qKiBDbG9uZSBkYXRlICovXG4gICAgY2xvbmUoZGF0ZTogRGF5anMpOiBEYXlqcyB7XG4gICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2NhbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmNsb25lKCkubG9jYWxlKHRoaXMubG9jYWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRlLmNsb25lKCk7XG4gICAgfVxuXG4gICAgLyoqIENvbXBhcmUgaWYgZGF0ZXMgYXJlIGVxdWFsICovXG4gICAgZGF0ZXNFcXVhbChkYXRlMTogRGF5anMsIGRhdGUyOiBEYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWRhdGUxIHx8ICFkYXRlMikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGUxLmlzU2FtZShkYXRlMiwgJ2RheScpO1xuICAgIH1cblxuICAgIC8qKiBDb21wYXJlIGlmIGRhdGVzIGFuZCB0aW1lIGFyZSBlcXVhbCAqL1xuICAgIGRhdGVUaW1lc0VxdWFsKGRhdGUxOiBEYXlqcywgZGF0ZTI6IERheWpzKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghZGF0ZTEgfHwgIWRhdGUyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTEuaXNTYW1lKGRhdGUyKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgZGF0ZSBpcyBpbiByYW5nZSAqL1xuICAgIGlzQmV0d2VlbihkYXRlVG9DaGVjazogRGF5anMsIHN0YXJ0RGF0ZTogRGF5anMsIGVuZERhdGU6IERheWpzKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghZGF0ZVRvQ2hlY2sgfHwgIXN0YXJ0RGF0ZSB8fCAhZW5kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGVUb0NoZWNrLmlzQmV0d2VlbihzdGFydERhdGUsIGVuZERhdGUpO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiBkYXRlIGlzIHZhbGlkIGRhdGUgb2JqZWN0ICovXG4gICAgaXNWYWxpZChkYXRlOiBOdWxsYWJsZTxEYXlqcz4pOiBkYXRlIGlzIERheWpzIHtcbiAgICAgICAgcmV0dXJuICEhZGF0ZT8uaXNWYWxpZCgpO1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IGRhdGUgdG8gSVNPODYwMSBzdHJpbmcgKi9cbiAgICB0b0lzbzg2MDEoZGF0ZTogRGF5anMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiB0aW1lIGZvcm1hdCBpbmNsdWRlcyBkYXkgcGVyaW9kICovXG4gICAgaXNUaW1lRm9ybWF0SW5jbHVkZXNEYXlQZXJpb2QoZGlzcGxheUZvcm1hdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuX3ByZXBhcmVGb3JtYXQoZGlzcGxheUZvcm1hdCk7XG5cbiAgICAgICAgcmV0dXJuICEhZm9ybWF0Lm1hdGNoKC9bYUFdLyk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIHRpbWUgZm9ybWF0IGluY2x1ZGVzIGhvdXJzICovXG4gICAgaXNUaW1lRm9ybWF0SW5jbHVkZXNIb3VycyhkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5fcHJlcGFyZUZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcblxuICAgICAgICByZXR1cm4gISFmb3JtYXQubWF0Y2goL1toSF0vKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgbWludXRlcyAqL1xuICAgIGlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5fcHJlcGFyZUZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcblxuICAgICAgICByZXR1cm4gISFmb3JtYXQubWF0Y2goL1ttXS8pO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiB0aW1lIGZvcm1hdCBpbmNsdWRlcyBzZWNvbmRzICovXG4gICAgaXNUaW1lRm9ybWF0SW5jbHVkZXNTZWNvbmRzKGRpc3BsYXlGb3JtYXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLl9wcmVwYXJlRm9ybWF0KGRpc3BsYXlGb3JtYXQpO1xuXG4gICAgICAgIHJldHVybiAhIWZvcm1hdC5tYXRjaCgvW3NdLyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHdpbGwgYXR0ZW1wdCB0byBwYXJzZSBsb25nRGF0YUZvcm1hdCAoZS5nLiBcIkxcIiwgXCJMVFwiKSBhbmQgY29udmVydCBpdCB0byBzaW1wbGUgb25lLlxuICAgICAqL1xuICAgIF9wcmVwYXJlRm9ybWF0KGRpc3BsYXlGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGRpc3BsYXlGb3JtYXQgPSBkaXNwbGF5Rm9ybWF0LnRyaW0oKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHM6IG9iamVjdCA9IGRheWpzLkxzW2RheWpzLmxvY2FsZSgpXS5mb3JtYXRzO1xuICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgcmVndWxhciBleHByZXNzaW9uIHRvIHBhcnNlIGZvcm1hdCB0YWtlbiBmcm9tIGRheWpzIHJlcG9cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pYW1rdW4vZGF5anMvYmxvYi9kZXYvc3JjL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXQvdXRpbHMuanNcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Rm9ybWF0LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgLyhcXFtbXlxcXV0rXSl8KExUUz98bHsxLDR9fEx7MSw0fSkvZyxcbiAgICAgICAgICAgICAgICAoXywgYSwgYikgPT4gYSB8fCBmb3JtYXRzW2JdIHx8IGRpc3BsYXlGb3JtYXRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Rm9ybWF0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY3JlYXRlRGF5anNEYXRlKGRhdGU/OiBDb25maWdUeXBlLCBmb3JtYXQ/OiBzdHJpbmcpOiBEYXlqcyB7XG4gICAgICAgIGNvbnN0IHsgc3RyaWN0LCB1c2VVdGMgfTogRGF5anNEYXRldGltZUFkYXB0ZXJPcHRpb25zID0gdGhpcy5fb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICBjb25zdCBtZXRob2QgPSB1c2VVdGMgPyBkYXlqcy51dGMgOiBkYXlqcztcbiAgICAgICAgbGV0IHBhcnNlZCA9IG1ldGhvZChkYXRlLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIC8vIGRheWpzIHN0cmljdGx5IGZvbGxvd3MgdGhlIHByb3ZpZGVkIGZvcm1hdFxuICAgICAgICAvLyBzbyBwYXJ0aWFsIHN0cmluZ3Mgd2lsbCBub3QgYmUgcmVzb2x2ZWQuIGluIHRoaXMgY2FzZSBhdHRlbXB0IHRvIHJlc29sdmUgd2l0aG91dCBmb3JtYXR0aW5nXG4gICAgICAgIGlmICghcGFyc2VkPy5pc1ZhbGlkKCkgJiYgIXN0cmljdCAmJiBmb3JtYXQpIHtcbiAgICAgICAgICAgIHBhcnNlZCA9IG1ldGhvZChkYXRlLCB1bmRlZmluZWQsIHN0cmljdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICB9XG59XG5cbmludGVyZmFjZSBEYXRlTG9jYWxlIHtcbiAgICBmaXJzdERheU9mV2VlazogbnVtYmVyO1xuICAgIGxvbmdNb250aHM6IHN0cmluZ1tdO1xuICAgIHNob3J0TW9udGhzOiBzdHJpbmdbXTtcbiAgICBuYXJyb3dNb250aHM6IHN0cmluZ1tdO1xuICAgIGxvbmdEYXlzT2ZXZWVrOiBzdHJpbmdbXTtcbiAgICBzaG9ydERheXNPZldlZWs6IHN0cmluZ1tdO1xuICAgIG5hcnJvd0RheXNPZldlZWs6IHN0cmluZ1tdO1xufVxuIl19
|
|
@@ -17,7 +17,7 @@ const DAYJS_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken('DAYJS_DATE_TIME_ADAP
|
|
|
17
17
|
providedIn: 'root',
|
|
18
18
|
factory: DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY
|
|
19
19
|
});
|
|
20
|
-
|
|
20
|
+
/** @hidden */
|
|
21
21
|
function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY() {
|
|
22
22
|
return {
|
|
23
23
|
useUtc: false,
|
|
@@ -31,6 +31,7 @@ function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY() {
|
|
|
31
31
|
* It relies on dayjs implementation for formatting and translation purposes.
|
|
32
32
|
*/
|
|
33
33
|
class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
34
|
+
/** @hidden */
|
|
34
35
|
constructor(localeId, _options) {
|
|
35
36
|
super();
|
|
36
37
|
this._options = _options;
|
|
@@ -43,6 +44,7 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
43
44
|
dayjs.extend(customParseFormat);
|
|
44
45
|
this.setLocale(localeId || dayjs.locale());
|
|
45
46
|
}
|
|
47
|
+
/** Set locale */
|
|
46
48
|
setLocale(locale) {
|
|
47
49
|
if (locale.toLowerCase() === 'en-us') {
|
|
48
50
|
// Handle English locale name as it's a default one and it is different
|
|
@@ -66,39 +68,51 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
66
68
|
};
|
|
67
69
|
super.setLocale(locale);
|
|
68
70
|
}
|
|
71
|
+
/** Get year */
|
|
69
72
|
getYear(date) {
|
|
70
73
|
return date.year();
|
|
71
74
|
}
|
|
75
|
+
/** Get month */
|
|
72
76
|
getMonth(date) {
|
|
73
77
|
return date.month() + 1;
|
|
74
78
|
}
|
|
79
|
+
/** Get date */
|
|
75
80
|
getDate(date) {
|
|
76
81
|
return date.date();
|
|
77
82
|
}
|
|
83
|
+
/** Get day of the week */
|
|
78
84
|
getDayOfWeek(date) {
|
|
79
85
|
return date.day() + 1;
|
|
80
86
|
}
|
|
87
|
+
/** Get hours */
|
|
81
88
|
getHours(date) {
|
|
82
89
|
return date.hour();
|
|
83
90
|
}
|
|
91
|
+
/** Get minutes */
|
|
84
92
|
getMinutes(date) {
|
|
85
93
|
return date.minute();
|
|
86
94
|
}
|
|
95
|
+
/** Get seconds */
|
|
87
96
|
getSeconds(date) {
|
|
88
97
|
return date.second();
|
|
89
98
|
}
|
|
99
|
+
/** Set hours in date object */
|
|
90
100
|
setHours(date, hours) {
|
|
91
101
|
return date.hour(hours);
|
|
92
102
|
}
|
|
103
|
+
/** Set minutes in date object */
|
|
93
104
|
setMinutes(date, minutes) {
|
|
94
105
|
return date.minute(minutes);
|
|
95
106
|
}
|
|
107
|
+
/** Set seconds in date object */
|
|
96
108
|
setSeconds(date, seconds) {
|
|
97
109
|
return date.second(seconds);
|
|
98
110
|
}
|
|
111
|
+
/** Get week number */
|
|
99
112
|
getWeekNumber(date) {
|
|
100
113
|
return date.week();
|
|
101
114
|
}
|
|
115
|
+
/** Get months names */
|
|
102
116
|
getMonthNames(style) {
|
|
103
117
|
switch (style) {
|
|
104
118
|
case 'narrow':
|
|
@@ -110,9 +124,11 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
110
124
|
return this._localeData.longMonths;
|
|
111
125
|
}
|
|
112
126
|
}
|
|
127
|
+
/** Get date names */
|
|
113
128
|
getDateNames() {
|
|
114
129
|
return range(31, (i) => this.createDate(2017, 0, i + 1).format('D'));
|
|
115
130
|
}
|
|
131
|
+
/** Get days of week names */
|
|
116
132
|
getDayOfWeekNames(style) {
|
|
117
133
|
switch (style) {
|
|
118
134
|
case 'narrow':
|
|
@@ -124,40 +140,51 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
124
140
|
return this._localeData.longDaysOfWeek;
|
|
125
141
|
}
|
|
126
142
|
}
|
|
143
|
+
/** Get year name */
|
|
127
144
|
getYearName(date) {
|
|
128
145
|
return date.format('YYYY');
|
|
129
146
|
}
|
|
147
|
+
/** Get week name */
|
|
130
148
|
getWeekName(date) {
|
|
131
149
|
return date.week().toLocaleString(this.locale);
|
|
132
150
|
}
|
|
151
|
+
/** Get hour names */
|
|
133
152
|
getHourNames({ meridian, twoDigit }) {
|
|
134
153
|
const format = meridian ? (twoDigit ? 'hh' : 'h') : twoDigit ? 'HH' : 'H';
|
|
135
154
|
const dayjsDate = this._createDayjsDate();
|
|
136
155
|
return range(24, (i) => this.clone(dayjsDate).hour(i).format(format));
|
|
137
156
|
}
|
|
157
|
+
/** Get minute names */
|
|
138
158
|
getMinuteNames({ twoDigit }) {
|
|
139
159
|
const format = twoDigit ? 'mm' : 'm';
|
|
140
160
|
const dayjsDate = this._createDayjsDate();
|
|
141
161
|
return range(60, (i) => this.clone(dayjsDate).minute(i).format(format));
|
|
142
162
|
}
|
|
163
|
+
/** Get second names */
|
|
143
164
|
getSecondNames({ twoDigit }) {
|
|
144
165
|
const format = twoDigit ? 'ss' : 's';
|
|
145
166
|
const dayjsDate = this._createDayjsDate();
|
|
146
167
|
return range(60, (i) => this.clone(dayjsDate).second(i).format(format));
|
|
147
168
|
}
|
|
148
|
-
|
|
169
|
+
/**
|
|
170
|
+
* Get day period names
|
|
171
|
+
* @param isLower responsible for the lower and upper cases of the result
|
|
172
|
+
*/
|
|
149
173
|
getDayPeriodNames(isLower = false) {
|
|
150
174
|
var _a, _b, _c, _d, _e, _f;
|
|
151
175
|
const AM = (_c = (_b = (_a = this._dayjsLocaleData).meridiem) === null || _b === void 0 ? void 0 : _b.call(_a, 6, 0, isLower)) !== null && _c !== void 0 ? _c : (isLower ? 'am' : 'AM');
|
|
152
176
|
const PM = (_f = (_e = (_d = this._dayjsLocaleData).meridiem) === null || _e === void 0 ? void 0 : _e.call(_d, 16, 0, isLower)) !== null && _f !== void 0 ? _f : (isLower ? 'pm' : 'PM');
|
|
153
177
|
return [AM, PM];
|
|
154
178
|
}
|
|
179
|
+
/** Get first day of the week */
|
|
155
180
|
getFirstDayOfWeek() {
|
|
156
181
|
return this._localeData.firstDayOfWeek;
|
|
157
182
|
}
|
|
183
|
+
/** Get number of days in the month */
|
|
158
184
|
getNumDaysInMonth(date) {
|
|
159
185
|
return date.daysInMonth();
|
|
160
186
|
}
|
|
187
|
+
/** Try to parse a string to a date object */
|
|
161
188
|
parse(value, parseFormat = '') {
|
|
162
189
|
if (value && typeof value === 'string') {
|
|
163
190
|
return this._createDayjsDate(value, parseFormat);
|
|
@@ -168,6 +195,7 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
168
195
|
}
|
|
169
196
|
return value ? this._createDayjsDate(value).locale(this.locale) : null;
|
|
170
197
|
}
|
|
198
|
+
/** Format a date as a string */
|
|
171
199
|
format(date, displayFormat) {
|
|
172
200
|
if (!date) {
|
|
173
201
|
return '';
|
|
@@ -177,6 +205,7 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
177
205
|
}
|
|
178
206
|
return date.locale(dayjs.locale()).format(displayFormat);
|
|
179
207
|
}
|
|
208
|
+
/** Create date object from values */
|
|
180
209
|
createDate(year, month, date) {
|
|
181
210
|
const result = this._createDayjsDate(new Date(year, month - 1, date));
|
|
182
211
|
if (!result.isValid()) {
|
|
@@ -184,21 +213,27 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
184
213
|
}
|
|
185
214
|
return result;
|
|
186
215
|
}
|
|
216
|
+
/** Get today */
|
|
187
217
|
today() {
|
|
188
218
|
return this._createDayjsDate().locale(this.locale).startOf('day');
|
|
189
219
|
}
|
|
220
|
+
/** Get now */
|
|
190
221
|
now() {
|
|
191
222
|
return this._createDayjsDate().locale(this.locale);
|
|
192
223
|
}
|
|
224
|
+
/** Add years to date */
|
|
193
225
|
addCalendarYears(date, years) {
|
|
194
226
|
return date.add(years, 'year');
|
|
195
227
|
}
|
|
228
|
+
/** Add months to date */
|
|
196
229
|
addCalendarMonths(date, months) {
|
|
197
230
|
return date.add(months, 'month');
|
|
198
231
|
}
|
|
232
|
+
/** Add days to date */
|
|
199
233
|
addCalendarDays(date, days) {
|
|
200
234
|
return date.add(days, 'day');
|
|
201
235
|
}
|
|
236
|
+
/** Clone date */
|
|
202
237
|
clone(date) {
|
|
203
238
|
if (!date) {
|
|
204
239
|
return date;
|
|
@@ -208,42 +243,51 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
208
243
|
}
|
|
209
244
|
return date.clone();
|
|
210
245
|
}
|
|
246
|
+
/** Compare if dates are equal */
|
|
211
247
|
datesEqual(date1, date2) {
|
|
212
248
|
if (!date1 || !date2) {
|
|
213
249
|
return false;
|
|
214
250
|
}
|
|
215
251
|
return date1.isSame(date2, 'day');
|
|
216
252
|
}
|
|
253
|
+
/** Compare if dates and time are equal */
|
|
217
254
|
dateTimesEqual(date1, date2) {
|
|
218
255
|
if (!date1 || !date2) {
|
|
219
256
|
return false;
|
|
220
257
|
}
|
|
221
258
|
return date1.isSame(date2);
|
|
222
259
|
}
|
|
260
|
+
/** Check if date is in range */
|
|
223
261
|
isBetween(dateToCheck, startDate, endDate) {
|
|
224
262
|
if (!dateToCheck || !startDate || !endDate) {
|
|
225
263
|
return false;
|
|
226
264
|
}
|
|
227
265
|
return dateToCheck.isBetween(startDate, endDate);
|
|
228
266
|
}
|
|
267
|
+
/** Check if date is valid date object */
|
|
229
268
|
isValid(date) {
|
|
230
269
|
return !!(date === null || date === void 0 ? void 0 : date.isValid());
|
|
231
270
|
}
|
|
271
|
+
/** Convert date to ISO8601 string */
|
|
232
272
|
toIso8601(date) {
|
|
233
273
|
return date.toISOString();
|
|
234
274
|
}
|
|
275
|
+
/** Check if time format includes day period */
|
|
235
276
|
isTimeFormatIncludesDayPeriod(displayFormat) {
|
|
236
277
|
const format = this._prepareFormat(displayFormat);
|
|
237
278
|
return !!format.match(/[aA]/);
|
|
238
279
|
}
|
|
280
|
+
/** Check if time format includes hours */
|
|
239
281
|
isTimeFormatIncludesHours(displayFormat) {
|
|
240
282
|
const format = this._prepareFormat(displayFormat);
|
|
241
283
|
return !!format.match(/[hH]/);
|
|
242
284
|
}
|
|
285
|
+
/** Check if time format includes minutes */
|
|
243
286
|
isTimeFormatIncludesMinutes(displayFormat) {
|
|
244
287
|
const format = this._prepareFormat(displayFormat);
|
|
245
288
|
return !!format.match(/[m]/);
|
|
246
289
|
}
|
|
290
|
+
/** Check if time format includes seconds */
|
|
247
291
|
isTimeFormatIncludesSeconds(displayFormat) {
|
|
248
292
|
const format = this._prepareFormat(displayFormat);
|
|
249
293
|
return !!format.match(/[s]/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-datetime-adapter.mjs","sources":["../../../../libs/datetime-adapter/src/lib/dayjs-datetime-adapter.ts","../../../../libs/datetime-adapter/src/lib/dayjs-datetime-formats.ts","../../../../libs/datetime-adapter/src/lib/dayjs-datetime-adapter.module.ts","../../../../libs/datetime-adapter/src/fundamental-ngx-datetime-adapter.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, LOCALE_ID, Optional } from '@angular/core';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\nimport utc from 'dayjs/plugin/utc';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport objectSupport from 'dayjs/plugin/objectSupport';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { DatetimeAdapter, FdDate } from '@fundamental-ngx/core/datetime';\nimport { Nullable } from '@fundamental-ngx/core/shared';\n\nfunction range<T>(length: number, mapFn: (index: number) => T): T[] {\n return Array.from(new Array(length)).map((_, index) => mapFn(index));\n}\n\nexport interface DayjsDatetimeAdapterOptions {\n strict?: boolean;\n useUtc?: boolean;\n}\n\nexport const DAYJS_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken<DayjsDatetimeAdapterOptions>(\n 'DAYJS_DATE_TIME_ADAPTER_OPTIONS',\n {\n providedIn: 'root',\n factory: DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY\n }\n);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY(): DayjsDatetimeAdapterOptions {\n return {\n useUtc: false,\n strict: false\n };\n}\n\n/**\n * DatetimeAdapter implementation based on dayjs.\n *\n * This uses dayjs as a date model instance.\n * It relies on dayjs implementation for formatting and translation purposes.\n */\n@Injectable()\nexport class DayjsDatetimeAdapter extends DatetimeAdapter<Dayjs> {\n /** @hidden */\n private _dayjsLocaleData: dayjs.GlobalLocaleDataReturn;\n\n /** @hidden */\n private _localeData: DateLocale;\n\n fromNow: undefined;\n\n constructor(\n @Optional() @Inject(LOCALE_ID) localeId: string,\n @Optional() @Inject(DAYJS_DATE_TIME_ADAPTER_OPTIONS) private _options?: DayjsDatetimeAdapterOptions\n ) {\n super();\n\n dayjs.extend(localeData);\n dayjs.extend(weekOfYear);\n dayjs.extend(utc);\n dayjs.extend(isBetween);\n dayjs.extend(objectSupport);\n dayjs.extend(localizedFormat);\n dayjs.extend(customParseFormat);\n\n this.setLocale(localeId || dayjs.locale());\n }\n\n setLocale(locale: string): void {\n if (locale.toLowerCase() === 'en-us') {\n // Handle English locale name as it's a default one and it is different\n locale = 'en';\n }\n dayjs.locale(locale);\n\n if (dayjs.locale() !== locale) {\n throw new Error(\n `Failed to load locale ${locale}. ` +\n 'Make sure it exists and is preloaded. You may use \"loadLocale\" function from this package to load the locale you need. ' +\n 'List of supported locales can be found here: https://day.js.org/docs/en/i18n/i18n.'\n );\n }\n\n this._dayjsLocaleData = dayjs.localeData();\n\n this._localeData = {\n firstDayOfWeek: this._dayjsLocaleData.firstDayOfWeek(),\n longMonths: this._dayjsLocaleData.months(),\n shortMonths: this._dayjsLocaleData.monthsShort(),\n narrowMonths: this._dayjsLocaleData.months().map((name: string) => name.charAt(0)),\n longDaysOfWeek: this._dayjsLocaleData.weekdays(),\n shortDaysOfWeek: this._dayjsLocaleData.weekdaysShort(),\n narrowDaysOfWeek: this._dayjsLocaleData.weekdaysMin()\n };\n\n super.setLocale(locale);\n }\n\n getYear(date: Dayjs): number {\n return date.year();\n }\n\n getMonth(date: Dayjs): number {\n return date.month() + 1;\n }\n\n getDate(date: Dayjs): number {\n return date.date();\n }\n\n getDayOfWeek(date: Dayjs): number {\n return date.day() + 1;\n }\n\n getHours(date: Dayjs): number {\n return date.hour();\n }\n\n getMinutes(date: Dayjs): number {\n return date.minute();\n }\n\n getSeconds(date: Dayjs): number {\n return date.second();\n }\n\n setHours(date: Dayjs, hours: number): Dayjs {\n return date.hour(hours);\n }\n\n setMinutes(date: Dayjs, minutes: number): Dayjs {\n return date.minute(minutes);\n }\n\n setSeconds(date: Dayjs, seconds: number): Dayjs {\n return date.second(seconds);\n }\n\n getWeekNumber(date: Dayjs): number {\n return date.week();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n switch (style) {\n case 'narrow':\n return this._localeData.narrowMonths;\n case 'short':\n return this._localeData.shortMonths;\n case 'long':\n default:\n return this._localeData.longMonths;\n }\n }\n\n getDateNames(): string[] {\n return range(31, (i) => this.createDate(2017, 0, i + 1).format('D'));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n switch (style) {\n case 'narrow':\n return this._localeData.narrowDaysOfWeek;\n case 'short':\n return this._localeData.shortDaysOfWeek;\n case 'long':\n default:\n return this._localeData.longDaysOfWeek;\n }\n }\n\n getYearName(date: Dayjs): string {\n return date.format('YYYY');\n }\n\n getWeekName(date: Dayjs): string {\n return date.week().toLocaleString(this.locale);\n }\n\n getHourNames({ meridian, twoDigit }: { twoDigit: boolean; meridian: boolean }): string[] {\n const format: string = meridian ? (twoDigit ? 'hh' : 'h') : twoDigit ? 'HH' : 'H';\n const dayjsDate = this._createDayjsDate();\n\n return range(24, (i) => this.clone(dayjsDate).hour(i).format(format));\n }\n\n getMinuteNames({ twoDigit }: { twoDigit: boolean }): string[] {\n const format: string = twoDigit ? 'mm' : 'm';\n const dayjsDate = this._createDayjsDate();\n\n return range(60, (i) => this.clone(dayjsDate).minute(i).format(format));\n }\n\n getSecondNames({ twoDigit }: { twoDigit: boolean }): string[] {\n const format: string = twoDigit ? 'ss' : 's';\n const dayjsDate = this._createDayjsDate();\n\n return range(60, (i) => this.clone(dayjsDate).second(i).format(format));\n }\n\n // isLower property is responsible for the lower and upper cases of the result\n getDayPeriodNames(isLower = false): [string, string] {\n const AM = this._dayjsLocaleData.meridiem?.(6, 0, isLower) ?? (isLower ? 'am' : 'AM');\n const PM = this._dayjsLocaleData.meridiem?.(16, 0, isLower) ?? (isLower ? 'pm' : 'PM');\n\n return [AM, PM];\n }\n\n getFirstDayOfWeek(): number {\n return this._localeData.firstDayOfWeek;\n }\n\n getNumDaysInMonth(date: Dayjs): number {\n return date.daysInMonth();\n }\n\n parse(value: any, parseFormat: string = ''): Dayjs | null {\n if (value && typeof value === 'string') {\n return this._createDayjsDate(value, parseFormat);\n } else if (value instanceof FdDate) {\n // FdDate instance may be incorrectly parsed by DayJS\n value = value.toString();\n }\n\n return value ? this._createDayjsDate(value).locale(this.locale) : null;\n }\n\n format(date: Dayjs, displayFormat: string): string {\n if (!date) {\n return '';\n }\n\n if (!this.isValid(date)) {\n throw Error('DayjsDateTimeAdapter: Cannot format invalid date.');\n }\n\n return date.locale(dayjs.locale()).format(displayFormat);\n }\n\n createDate(year: number, month: number, date: number): Dayjs {\n const result = this._createDayjsDate(new Date(year, month - 1, date));\n\n if (!result.isValid()) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\" and year \"${year}\".`);\n }\n\n return result;\n }\n\n today(): Dayjs {\n return this._createDayjsDate().locale(this.locale).startOf('day');\n }\n\n now(): Dayjs {\n return this._createDayjsDate().locale(this.locale);\n }\n\n addCalendarYears(date: Dayjs, years: number): Dayjs {\n return date.add(years, 'year');\n }\n\n addCalendarMonths(date: Dayjs, months: number): Dayjs {\n return date.add(months, 'month');\n }\n\n addCalendarDays(date: Dayjs, days: number): Dayjs {\n return date.add(days, 'day');\n }\n\n clone(date: Dayjs): Dayjs {\n if (!date) {\n return date;\n }\n\n if (this.locale) {\n return date.clone().locale(this.locale);\n }\n\n return date.clone();\n }\n\n datesEqual(date1: Dayjs, date2: Dayjs): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return date1.isSame(date2, 'day');\n }\n\n dateTimesEqual(date1: Dayjs, date2: Dayjs): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return date1.isSame(date2);\n }\n\n isBetween(dateToCheck: Dayjs, startDate: Dayjs, endDate: Dayjs): boolean {\n if (!dateToCheck || !startDate || !endDate) {\n return false;\n }\n\n return dateToCheck.isBetween(startDate, endDate);\n }\n\n isValid(date: Nullable<Dayjs>): date is Dayjs {\n return !!date?.isValid();\n }\n\n toIso8601(date: Dayjs): string {\n return date.toISOString();\n }\n\n isTimeFormatIncludesDayPeriod(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[aA]/);\n }\n\n isTimeFormatIncludesHours(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[hH]/);\n }\n\n isTimeFormatIncludesMinutes(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[m]/);\n }\n\n isTimeFormatIncludesSeconds(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[s]/);\n }\n\n /**\n * @hidden\n * will attempt to parse longDataFormat (e.g. \"L\", \"LT\") and convert it to simple one.\n */\n _prepareFormat(displayFormat: string): string {\n displayFormat = displayFormat.trim();\n try {\n const formats: object = dayjs.Ls[dayjs.locale()].formats;\n // this is the regular expression to parse format taken from dayjs repo\n // https://github.com/iamkun/dayjs/blob/dev/src/plugin/localizedFormat/utils.js\n return displayFormat.replace(\n /(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,\n (_, a, b) => a || formats[b] || displayFormat\n );\n } catch (e) {\n return displayFormat;\n }\n }\n\n /** @hidden */\n _createDayjsDate(date?: ConfigType, format?: string): Dayjs {\n const { strict, useUtc }: DayjsDatetimeAdapterOptions = this._options || {};\n\n const method = useUtc ? dayjs.utc : dayjs;\n let parsed = method(date, format, strict);\n // dayjs strictly follows the provided format\n // so partial strings will not be resolved. in this case attempt to resolve without formatting\n if (!parsed?.isValid() && !strict && format) {\n parsed = method(date, undefined, strict);\n }\n return parsed;\n }\n}\n\ninterface DateLocale {\n firstDayOfWeek: number;\n longMonths: string[];\n shortMonths: string[];\n narrowMonths: string[];\n longDaysOfWeek: string[];\n shortDaysOfWeek: string[];\n narrowDaysOfWeek: string[];\n}\n","import { DateTimeFormats } from '@fundamental-ngx/core/datetime';\n\nexport const DAYJS_DATETIME_FORMATS: DateTimeFormats = {\n parse: {\n dateInput: 'L',\n timeInput: 'h:mm A',\n dateTimeInput: 'L h:mm A'\n },\n display: {\n dateInput: 'L',\n timeInput: 'h:mm A',\n dateTimeInput: 'L h:mm A',\n\n dateA11yLabel: 'YYYY MMMM DD',\n monthA11yLabel: 'MMMM',\n yearA11yLabel: 'YYYY'\n },\n rangeDelimiter: ' - '\n};\n","import { NgModule } from '@angular/core';\nimport { DATE_TIME_FORMATS, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { DayjsDatetimeAdapter } from './dayjs-datetime-adapter';\nimport { DAYJS_DATETIME_FORMATS } from './dayjs-datetime-formats';\n\n@NgModule({\n providers: [{ provide: DatetimeAdapter, useClass: DayjsDatetimeAdapter }]\n})\nexport class DayjsDatetimeAdapterRawModule {}\n\n@NgModule({\n imports: [DayjsDatetimeAdapterRawModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: DAYJS_DATETIME_FORMATS }]\n})\nexport class DayjsDatetimeAdapterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-datetime-adapter.mjs","sources":["../../../../libs/datetime-adapter/src/lib/dayjs-datetime-adapter.ts","../../../../libs/datetime-adapter/src/lib/dayjs-datetime-formats.ts","../../../../libs/datetime-adapter/src/lib/dayjs-datetime-adapter.module.ts","../../../../libs/datetime-adapter/src/fundamental-ngx-datetime-adapter.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, LOCALE_ID, Optional } from '@angular/core';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\nimport utc from 'dayjs/plugin/utc';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport objectSupport from 'dayjs/plugin/objectSupport';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { DatetimeAdapter, FdDate } from '@fundamental-ngx/core/datetime';\nimport { Nullable } from '@fundamental-ngx/core/shared';\n\nfunction range<T>(length: number, mapFn: (index: number) => T): T[] {\n return Array.from(new Array(length)).map((_, index) => mapFn(index));\n}\n\nexport interface DayjsDatetimeAdapterOptions {\n strict?: boolean;\n useUtc?: boolean;\n}\n\nexport const DAYJS_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken<DayjsDatetimeAdapterOptions>(\n 'DAYJS_DATE_TIME_ADAPTER_OPTIONS',\n {\n providedIn: 'root',\n factory: DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY\n }\n);\n\n/** @hidden */\nexport function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY(): DayjsDatetimeAdapterOptions {\n return {\n useUtc: false,\n strict: false\n };\n}\n\n/**\n * DatetimeAdapter implementation based on dayjs.\n *\n * This uses dayjs as a date model instance.\n * It relies on dayjs implementation for formatting and translation purposes.\n */\n@Injectable()\nexport class DayjsDatetimeAdapter extends DatetimeAdapter<Dayjs> {\n /** @hidden */\n private _dayjsLocaleData: dayjs.GlobalLocaleDataReturn;\n\n /** @hidden */\n private _localeData: DateLocale;\n\n /** @hidden */\n fromNow: undefined;\n\n /** @hidden */\n constructor(\n @Optional() @Inject(LOCALE_ID) localeId: string,\n @Optional() @Inject(DAYJS_DATE_TIME_ADAPTER_OPTIONS) private _options?: DayjsDatetimeAdapterOptions\n ) {\n super();\n\n dayjs.extend(localeData);\n dayjs.extend(weekOfYear);\n dayjs.extend(utc);\n dayjs.extend(isBetween);\n dayjs.extend(objectSupport);\n dayjs.extend(localizedFormat);\n dayjs.extend(customParseFormat);\n\n this.setLocale(localeId || dayjs.locale());\n }\n\n /** Set locale */\n setLocale(locale: string): void {\n if (locale.toLowerCase() === 'en-us') {\n // Handle English locale name as it's a default one and it is different\n locale = 'en';\n }\n dayjs.locale(locale);\n\n if (dayjs.locale() !== locale) {\n throw new Error(\n `Failed to load locale ${locale}. ` +\n 'Make sure it exists and is preloaded. You may use \"loadLocale\" function from this package to load the locale you need. ' +\n 'List of supported locales can be found here: https://day.js.org/docs/en/i18n/i18n.'\n );\n }\n\n this._dayjsLocaleData = dayjs.localeData();\n\n this._localeData = {\n firstDayOfWeek: this._dayjsLocaleData.firstDayOfWeek(),\n longMonths: this._dayjsLocaleData.months(),\n shortMonths: this._dayjsLocaleData.monthsShort(),\n narrowMonths: this._dayjsLocaleData.months().map((name: string) => name.charAt(0)),\n longDaysOfWeek: this._dayjsLocaleData.weekdays(),\n shortDaysOfWeek: this._dayjsLocaleData.weekdaysShort(),\n narrowDaysOfWeek: this._dayjsLocaleData.weekdaysMin()\n };\n\n super.setLocale(locale);\n }\n\n /** Get year */\n getYear(date: Dayjs): number {\n return date.year();\n }\n\n /** Get month */\n getMonth(date: Dayjs): number {\n return date.month() + 1;\n }\n\n /** Get date */\n getDate(date: Dayjs): number {\n return date.date();\n }\n\n /** Get day of the week */\n getDayOfWeek(date: Dayjs): number {\n return date.day() + 1;\n }\n\n /** Get hours */\n getHours(date: Dayjs): number {\n return date.hour();\n }\n\n /** Get minutes */\n getMinutes(date: Dayjs): number {\n return date.minute();\n }\n\n /** Get seconds */\n getSeconds(date: Dayjs): number {\n return date.second();\n }\n\n /** Set hours in date object */\n setHours(date: Dayjs, hours: number): Dayjs {\n return date.hour(hours);\n }\n\n /** Set minutes in date object */\n setMinutes(date: Dayjs, minutes: number): Dayjs {\n return date.minute(minutes);\n }\n\n /** Set seconds in date object */\n setSeconds(date: Dayjs, seconds: number): Dayjs {\n return date.second(seconds);\n }\n\n /** Get week number */\n getWeekNumber(date: Dayjs): number {\n return date.week();\n }\n\n /** Get months names */\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n switch (style) {\n case 'narrow':\n return this._localeData.narrowMonths;\n case 'short':\n return this._localeData.shortMonths;\n case 'long':\n default:\n return this._localeData.longMonths;\n }\n }\n\n /** Get date names */\n getDateNames(): string[] {\n return range(31, (i) => this.createDate(2017, 0, i + 1).format('D'));\n }\n\n /** Get days of week names */\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n switch (style) {\n case 'narrow':\n return this._localeData.narrowDaysOfWeek;\n case 'short':\n return this._localeData.shortDaysOfWeek;\n case 'long':\n default:\n return this._localeData.longDaysOfWeek;\n }\n }\n\n /** Get year name */\n getYearName(date: Dayjs): string {\n return date.format('YYYY');\n }\n\n /** Get week name */\n getWeekName(date: Dayjs): string {\n return date.week().toLocaleString(this.locale);\n }\n\n /** Get hour names */\n getHourNames({ meridian, twoDigit }: { twoDigit: boolean; meridian: boolean }): string[] {\n const format: string = meridian ? (twoDigit ? 'hh' : 'h') : twoDigit ? 'HH' : 'H';\n const dayjsDate = this._createDayjsDate();\n\n return range(24, (i) => this.clone(dayjsDate).hour(i).format(format));\n }\n\n /** Get minute names */\n getMinuteNames({ twoDigit }: { twoDigit: boolean }): string[] {\n const format: string = twoDigit ? 'mm' : 'm';\n const dayjsDate = this._createDayjsDate();\n\n return range(60, (i) => this.clone(dayjsDate).minute(i).format(format));\n }\n\n /** Get second names */\n getSecondNames({ twoDigit }: { twoDigit: boolean }): string[] {\n const format: string = twoDigit ? 'ss' : 's';\n const dayjsDate = this._createDayjsDate();\n\n return range(60, (i) => this.clone(dayjsDate).second(i).format(format));\n }\n\n /**\n * Get day period names\n * @param isLower responsible for the lower and upper cases of the result\n */\n getDayPeriodNames(isLower = false): [string, string] {\n const AM = this._dayjsLocaleData.meridiem?.(6, 0, isLower) ?? (isLower ? 'am' : 'AM');\n const PM = this._dayjsLocaleData.meridiem?.(16, 0, isLower) ?? (isLower ? 'pm' : 'PM');\n\n return [AM, PM];\n }\n\n /** Get first day of the week */\n getFirstDayOfWeek(): number {\n return this._localeData.firstDayOfWeek;\n }\n\n /** Get number of days in the month */\n getNumDaysInMonth(date: Dayjs): number {\n return date.daysInMonth();\n }\n\n /** Try to parse a string to a date object */\n parse(value: any, parseFormat: string = ''): Dayjs | null {\n if (value && typeof value === 'string') {\n return this._createDayjsDate(value, parseFormat);\n } else if (value instanceof FdDate) {\n // FdDate instance may be incorrectly parsed by DayJS\n value = value.toString();\n }\n\n return value ? this._createDayjsDate(value).locale(this.locale) : null;\n }\n\n /** Format a date as a string */\n format(date: Dayjs, displayFormat: string): string {\n if (!date) {\n return '';\n }\n\n if (!this.isValid(date)) {\n throw Error('DayjsDateTimeAdapter: Cannot format invalid date.');\n }\n\n return date.locale(dayjs.locale()).format(displayFormat);\n }\n\n /** Create date object from values */\n createDate(year: number, month: number, date: number): Dayjs {\n const result = this._createDayjsDate(new Date(year, month - 1, date));\n\n if (!result.isValid()) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\" and year \"${year}\".`);\n }\n\n return result;\n }\n\n /** Get today */\n today(): Dayjs {\n return this._createDayjsDate().locale(this.locale).startOf('day');\n }\n\n /** Get now */\n now(): Dayjs {\n return this._createDayjsDate().locale(this.locale);\n }\n\n /** Add years to date */\n addCalendarYears(date: Dayjs, years: number): Dayjs {\n return date.add(years, 'year');\n }\n\n /** Add months to date */\n addCalendarMonths(date: Dayjs, months: number): Dayjs {\n return date.add(months, 'month');\n }\n\n /** Add days to date */\n addCalendarDays(date: Dayjs, days: number): Dayjs {\n return date.add(days, 'day');\n }\n\n /** Clone date */\n clone(date: Dayjs): Dayjs {\n if (!date) {\n return date;\n }\n\n if (this.locale) {\n return date.clone().locale(this.locale);\n }\n\n return date.clone();\n }\n\n /** Compare if dates are equal */\n datesEqual(date1: Dayjs, date2: Dayjs): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return date1.isSame(date2, 'day');\n }\n\n /** Compare if dates and time are equal */\n dateTimesEqual(date1: Dayjs, date2: Dayjs): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return date1.isSame(date2);\n }\n\n /** Check if date is in range */\n isBetween(dateToCheck: Dayjs, startDate: Dayjs, endDate: Dayjs): boolean {\n if (!dateToCheck || !startDate || !endDate) {\n return false;\n }\n\n return dateToCheck.isBetween(startDate, endDate);\n }\n\n /** Check if date is valid date object */\n isValid(date: Nullable<Dayjs>): date is Dayjs {\n return !!date?.isValid();\n }\n\n /** Convert date to ISO8601 string */\n toIso8601(date: Dayjs): string {\n return date.toISOString();\n }\n\n /** Check if time format includes day period */\n isTimeFormatIncludesDayPeriod(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[aA]/);\n }\n\n /** Check if time format includes hours */\n isTimeFormatIncludesHours(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[hH]/);\n }\n\n /** Check if time format includes minutes */\n isTimeFormatIncludesMinutes(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[m]/);\n }\n\n /** Check if time format includes seconds */\n isTimeFormatIncludesSeconds(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[s]/);\n }\n\n /**\n * @hidden\n * will attempt to parse longDataFormat (e.g. \"L\", \"LT\") and convert it to simple one.\n */\n _prepareFormat(displayFormat: string): string {\n displayFormat = displayFormat.trim();\n try {\n const formats: object = dayjs.Ls[dayjs.locale()].formats;\n // this is the regular expression to parse format taken from dayjs repo\n // https://github.com/iamkun/dayjs/blob/dev/src/plugin/localizedFormat/utils.js\n return displayFormat.replace(\n /(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,\n (_, a, b) => a || formats[b] || displayFormat\n );\n } catch (e) {\n return displayFormat;\n }\n }\n\n /** @hidden */\n _createDayjsDate(date?: ConfigType, format?: string): Dayjs {\n const { strict, useUtc }: DayjsDatetimeAdapterOptions = this._options || {};\n\n const method = useUtc ? dayjs.utc : dayjs;\n let parsed = method(date, format, strict);\n // dayjs strictly follows the provided format\n // so partial strings will not be resolved. in this case attempt to resolve without formatting\n if (!parsed?.isValid() && !strict && format) {\n parsed = method(date, undefined, strict);\n }\n return parsed;\n }\n}\n\ninterface DateLocale {\n firstDayOfWeek: number;\n longMonths: string[];\n shortMonths: string[];\n narrowMonths: string[];\n longDaysOfWeek: string[];\n shortDaysOfWeek: string[];\n narrowDaysOfWeek: string[];\n}\n","import { DateTimeFormats } from '@fundamental-ngx/core/datetime';\n\nexport const DAYJS_DATETIME_FORMATS: DateTimeFormats = {\n parse: {\n dateInput: 'L',\n timeInput: 'h:mm A',\n dateTimeInput: 'L h:mm A'\n },\n display: {\n dateInput: 'L',\n timeInput: 'h:mm A',\n dateTimeInput: 'L h:mm A',\n\n dateA11yLabel: 'YYYY MMMM DD',\n monthA11yLabel: 'MMMM',\n yearA11yLabel: 'YYYY'\n },\n rangeDelimiter: ' - '\n};\n","import { NgModule } from '@angular/core';\nimport { DATE_TIME_FORMATS, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { DayjsDatetimeAdapter } from './dayjs-datetime-adapter';\nimport { DAYJS_DATETIME_FORMATS } from './dayjs-datetime-formats';\n\n@NgModule({\n providers: [{ provide: DatetimeAdapter, useClass: DayjsDatetimeAdapter }]\n})\nexport class DayjsDatetimeAdapterRawModule {}\n\n@NgModule({\n imports: [DayjsDatetimeAdapterRawModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: DAYJS_DATETIME_FORMATS }]\n})\nexport class DayjsDatetimeAdapterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ const DAYJS_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken('DAYJS_DATE_TIME_ADAP
|
|
|
17
17
|
providedIn: 'root',
|
|
18
18
|
factory: DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY
|
|
19
19
|
});
|
|
20
|
-
|
|
20
|
+
/** @hidden */
|
|
21
21
|
function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY() {
|
|
22
22
|
return {
|
|
23
23
|
useUtc: false,
|
|
@@ -31,6 +31,7 @@ function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY() {
|
|
|
31
31
|
* It relies on dayjs implementation for formatting and translation purposes.
|
|
32
32
|
*/
|
|
33
33
|
class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
34
|
+
/** @hidden */
|
|
34
35
|
constructor(localeId, _options) {
|
|
35
36
|
super();
|
|
36
37
|
this._options = _options;
|
|
@@ -43,6 +44,7 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
43
44
|
dayjs.extend(customParseFormat);
|
|
44
45
|
this.setLocale(localeId || dayjs.locale());
|
|
45
46
|
}
|
|
47
|
+
/** Set locale */
|
|
46
48
|
setLocale(locale) {
|
|
47
49
|
if (locale.toLowerCase() === 'en-us') {
|
|
48
50
|
// Handle English locale name as it's a default one and it is different
|
|
@@ -66,39 +68,51 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
66
68
|
};
|
|
67
69
|
super.setLocale(locale);
|
|
68
70
|
}
|
|
71
|
+
/** Get year */
|
|
69
72
|
getYear(date) {
|
|
70
73
|
return date.year();
|
|
71
74
|
}
|
|
75
|
+
/** Get month */
|
|
72
76
|
getMonth(date) {
|
|
73
77
|
return date.month() + 1;
|
|
74
78
|
}
|
|
79
|
+
/** Get date */
|
|
75
80
|
getDate(date) {
|
|
76
81
|
return date.date();
|
|
77
82
|
}
|
|
83
|
+
/** Get day of the week */
|
|
78
84
|
getDayOfWeek(date) {
|
|
79
85
|
return date.day() + 1;
|
|
80
86
|
}
|
|
87
|
+
/** Get hours */
|
|
81
88
|
getHours(date) {
|
|
82
89
|
return date.hour();
|
|
83
90
|
}
|
|
91
|
+
/** Get minutes */
|
|
84
92
|
getMinutes(date) {
|
|
85
93
|
return date.minute();
|
|
86
94
|
}
|
|
95
|
+
/** Get seconds */
|
|
87
96
|
getSeconds(date) {
|
|
88
97
|
return date.second();
|
|
89
98
|
}
|
|
99
|
+
/** Set hours in date object */
|
|
90
100
|
setHours(date, hours) {
|
|
91
101
|
return date.hour(hours);
|
|
92
102
|
}
|
|
103
|
+
/** Set minutes in date object */
|
|
93
104
|
setMinutes(date, minutes) {
|
|
94
105
|
return date.minute(minutes);
|
|
95
106
|
}
|
|
107
|
+
/** Set seconds in date object */
|
|
96
108
|
setSeconds(date, seconds) {
|
|
97
109
|
return date.second(seconds);
|
|
98
110
|
}
|
|
111
|
+
/** Get week number */
|
|
99
112
|
getWeekNumber(date) {
|
|
100
113
|
return date.week();
|
|
101
114
|
}
|
|
115
|
+
/** Get months names */
|
|
102
116
|
getMonthNames(style) {
|
|
103
117
|
switch (style) {
|
|
104
118
|
case 'narrow':
|
|
@@ -110,9 +124,11 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
110
124
|
return this._localeData.longMonths;
|
|
111
125
|
}
|
|
112
126
|
}
|
|
127
|
+
/** Get date names */
|
|
113
128
|
getDateNames() {
|
|
114
129
|
return range(31, (i) => this.createDate(2017, 0, i + 1).format('D'));
|
|
115
130
|
}
|
|
131
|
+
/** Get days of week names */
|
|
116
132
|
getDayOfWeekNames(style) {
|
|
117
133
|
switch (style) {
|
|
118
134
|
case 'narrow':
|
|
@@ -124,39 +140,50 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
124
140
|
return this._localeData.longDaysOfWeek;
|
|
125
141
|
}
|
|
126
142
|
}
|
|
143
|
+
/** Get year name */
|
|
127
144
|
getYearName(date) {
|
|
128
145
|
return date.format('YYYY');
|
|
129
146
|
}
|
|
147
|
+
/** Get week name */
|
|
130
148
|
getWeekName(date) {
|
|
131
149
|
return date.week().toLocaleString(this.locale);
|
|
132
150
|
}
|
|
151
|
+
/** Get hour names */
|
|
133
152
|
getHourNames({ meridian, twoDigit }) {
|
|
134
153
|
const format = meridian ? (twoDigit ? 'hh' : 'h') : twoDigit ? 'HH' : 'H';
|
|
135
154
|
const dayjsDate = this._createDayjsDate();
|
|
136
155
|
return range(24, (i) => this.clone(dayjsDate).hour(i).format(format));
|
|
137
156
|
}
|
|
157
|
+
/** Get minute names */
|
|
138
158
|
getMinuteNames({ twoDigit }) {
|
|
139
159
|
const format = twoDigit ? 'mm' : 'm';
|
|
140
160
|
const dayjsDate = this._createDayjsDate();
|
|
141
161
|
return range(60, (i) => this.clone(dayjsDate).minute(i).format(format));
|
|
142
162
|
}
|
|
163
|
+
/** Get second names */
|
|
143
164
|
getSecondNames({ twoDigit }) {
|
|
144
165
|
const format = twoDigit ? 'ss' : 's';
|
|
145
166
|
const dayjsDate = this._createDayjsDate();
|
|
146
167
|
return range(60, (i) => this.clone(dayjsDate).second(i).format(format));
|
|
147
168
|
}
|
|
148
|
-
|
|
169
|
+
/**
|
|
170
|
+
* Get day period names
|
|
171
|
+
* @param isLower responsible for the lower and upper cases of the result
|
|
172
|
+
*/
|
|
149
173
|
getDayPeriodNames(isLower = false) {
|
|
150
174
|
const AM = this._dayjsLocaleData.meridiem?.(6, 0, isLower) ?? (isLower ? 'am' : 'AM');
|
|
151
175
|
const PM = this._dayjsLocaleData.meridiem?.(16, 0, isLower) ?? (isLower ? 'pm' : 'PM');
|
|
152
176
|
return [AM, PM];
|
|
153
177
|
}
|
|
178
|
+
/** Get first day of the week */
|
|
154
179
|
getFirstDayOfWeek() {
|
|
155
180
|
return this._localeData.firstDayOfWeek;
|
|
156
181
|
}
|
|
182
|
+
/** Get number of days in the month */
|
|
157
183
|
getNumDaysInMonth(date) {
|
|
158
184
|
return date.daysInMonth();
|
|
159
185
|
}
|
|
186
|
+
/** Try to parse a string to a date object */
|
|
160
187
|
parse(value, parseFormat = '') {
|
|
161
188
|
if (value && typeof value === 'string') {
|
|
162
189
|
return this._createDayjsDate(value, parseFormat);
|
|
@@ -167,6 +194,7 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
167
194
|
}
|
|
168
195
|
return value ? this._createDayjsDate(value).locale(this.locale) : null;
|
|
169
196
|
}
|
|
197
|
+
/** Format a date as a string */
|
|
170
198
|
format(date, displayFormat) {
|
|
171
199
|
if (!date) {
|
|
172
200
|
return '';
|
|
@@ -176,6 +204,7 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
176
204
|
}
|
|
177
205
|
return date.locale(dayjs.locale()).format(displayFormat);
|
|
178
206
|
}
|
|
207
|
+
/** Create date object from values */
|
|
179
208
|
createDate(year, month, date) {
|
|
180
209
|
const result = this._createDayjsDate(new Date(year, month - 1, date));
|
|
181
210
|
if (!result.isValid()) {
|
|
@@ -183,21 +212,27 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
183
212
|
}
|
|
184
213
|
return result;
|
|
185
214
|
}
|
|
215
|
+
/** Get today */
|
|
186
216
|
today() {
|
|
187
217
|
return this._createDayjsDate().locale(this.locale).startOf('day');
|
|
188
218
|
}
|
|
219
|
+
/** Get now */
|
|
189
220
|
now() {
|
|
190
221
|
return this._createDayjsDate().locale(this.locale);
|
|
191
222
|
}
|
|
223
|
+
/** Add years to date */
|
|
192
224
|
addCalendarYears(date, years) {
|
|
193
225
|
return date.add(years, 'year');
|
|
194
226
|
}
|
|
227
|
+
/** Add months to date */
|
|
195
228
|
addCalendarMonths(date, months) {
|
|
196
229
|
return date.add(months, 'month');
|
|
197
230
|
}
|
|
231
|
+
/** Add days to date */
|
|
198
232
|
addCalendarDays(date, days) {
|
|
199
233
|
return date.add(days, 'day');
|
|
200
234
|
}
|
|
235
|
+
/** Clone date */
|
|
201
236
|
clone(date) {
|
|
202
237
|
if (!date) {
|
|
203
238
|
return date;
|
|
@@ -207,42 +242,51 @@ class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
207
242
|
}
|
|
208
243
|
return date.clone();
|
|
209
244
|
}
|
|
245
|
+
/** Compare if dates are equal */
|
|
210
246
|
datesEqual(date1, date2) {
|
|
211
247
|
if (!date1 || !date2) {
|
|
212
248
|
return false;
|
|
213
249
|
}
|
|
214
250
|
return date1.isSame(date2, 'day');
|
|
215
251
|
}
|
|
252
|
+
/** Compare if dates and time are equal */
|
|
216
253
|
dateTimesEqual(date1, date2) {
|
|
217
254
|
if (!date1 || !date2) {
|
|
218
255
|
return false;
|
|
219
256
|
}
|
|
220
257
|
return date1.isSame(date2);
|
|
221
258
|
}
|
|
259
|
+
/** Check if date is in range */
|
|
222
260
|
isBetween(dateToCheck, startDate, endDate) {
|
|
223
261
|
if (!dateToCheck || !startDate || !endDate) {
|
|
224
262
|
return false;
|
|
225
263
|
}
|
|
226
264
|
return dateToCheck.isBetween(startDate, endDate);
|
|
227
265
|
}
|
|
266
|
+
/** Check if date is valid date object */
|
|
228
267
|
isValid(date) {
|
|
229
268
|
return !!date?.isValid();
|
|
230
269
|
}
|
|
270
|
+
/** Convert date to ISO8601 string */
|
|
231
271
|
toIso8601(date) {
|
|
232
272
|
return date.toISOString();
|
|
233
273
|
}
|
|
274
|
+
/** Check if time format includes day period */
|
|
234
275
|
isTimeFormatIncludesDayPeriod(displayFormat) {
|
|
235
276
|
const format = this._prepareFormat(displayFormat);
|
|
236
277
|
return !!format.match(/[aA]/);
|
|
237
278
|
}
|
|
279
|
+
/** Check if time format includes hours */
|
|
238
280
|
isTimeFormatIncludesHours(displayFormat) {
|
|
239
281
|
const format = this._prepareFormat(displayFormat);
|
|
240
282
|
return !!format.match(/[hH]/);
|
|
241
283
|
}
|
|
284
|
+
/** Check if time format includes minutes */
|
|
242
285
|
isTimeFormatIncludesMinutes(displayFormat) {
|
|
243
286
|
const format = this._prepareFormat(displayFormat);
|
|
244
287
|
return !!format.match(/[m]/);
|
|
245
288
|
}
|
|
289
|
+
/** Check if time format includes seconds */
|
|
246
290
|
isTimeFormatIncludesSeconds(displayFormat) {
|
|
247
291
|
const format = this._prepareFormat(displayFormat);
|
|
248
292
|
return !!format.match(/[s]/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-datetime-adapter.mjs","sources":["../../../../libs/datetime-adapter/src/lib/dayjs-datetime-adapter.ts","../../../../libs/datetime-adapter/src/lib/dayjs-datetime-formats.ts","../../../../libs/datetime-adapter/src/lib/dayjs-datetime-adapter.module.ts","../../../../libs/datetime-adapter/src/fundamental-ngx-datetime-adapter.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, LOCALE_ID, Optional } from '@angular/core';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\nimport utc from 'dayjs/plugin/utc';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport objectSupport from 'dayjs/plugin/objectSupport';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { DatetimeAdapter, FdDate } from '@fundamental-ngx/core/datetime';\nimport { Nullable } from '@fundamental-ngx/core/shared';\n\nfunction range<T>(length: number, mapFn: (index: number) => T): T[] {\n return Array.from(new Array(length)).map((_, index) => mapFn(index));\n}\n\nexport interface DayjsDatetimeAdapterOptions {\n strict?: boolean;\n useUtc?: boolean;\n}\n\nexport const DAYJS_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken<DayjsDatetimeAdapterOptions>(\n 'DAYJS_DATE_TIME_ADAPTER_OPTIONS',\n {\n providedIn: 'root',\n factory: DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY\n }\n);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY(): DayjsDatetimeAdapterOptions {\n return {\n useUtc: false,\n strict: false\n };\n}\n\n/**\n * DatetimeAdapter implementation based on dayjs.\n *\n * This uses dayjs as a date model instance.\n * It relies on dayjs implementation for formatting and translation purposes.\n */\n@Injectable()\nexport class DayjsDatetimeAdapter extends DatetimeAdapter<Dayjs> {\n /** @hidden */\n private _dayjsLocaleData: dayjs.GlobalLocaleDataReturn;\n\n /** @hidden */\n private _localeData: DateLocale;\n\n fromNow: undefined;\n\n constructor(\n @Optional() @Inject(LOCALE_ID) localeId: string,\n @Optional() @Inject(DAYJS_DATE_TIME_ADAPTER_OPTIONS) private _options?: DayjsDatetimeAdapterOptions\n ) {\n super();\n\n dayjs.extend(localeData);\n dayjs.extend(weekOfYear);\n dayjs.extend(utc);\n dayjs.extend(isBetween);\n dayjs.extend(objectSupport);\n dayjs.extend(localizedFormat);\n dayjs.extend(customParseFormat);\n\n this.setLocale(localeId || dayjs.locale());\n }\n\n setLocale(locale: string): void {\n if (locale.toLowerCase() === 'en-us') {\n // Handle English locale name as it's a default one and it is different\n locale = 'en';\n }\n dayjs.locale(locale);\n\n if (dayjs.locale() !== locale) {\n throw new Error(\n `Failed to load locale ${locale}. ` +\n 'Make sure it exists and is preloaded. You may use \"loadLocale\" function from this package to load the locale you need. ' +\n 'List of supported locales can be found here: https://day.js.org/docs/en/i18n/i18n.'\n );\n }\n\n this._dayjsLocaleData = dayjs.localeData();\n\n this._localeData = {\n firstDayOfWeek: this._dayjsLocaleData.firstDayOfWeek(),\n longMonths: this._dayjsLocaleData.months(),\n shortMonths: this._dayjsLocaleData.monthsShort(),\n narrowMonths: this._dayjsLocaleData.months().map((name: string) => name.charAt(0)),\n longDaysOfWeek: this._dayjsLocaleData.weekdays(),\n shortDaysOfWeek: this._dayjsLocaleData.weekdaysShort(),\n narrowDaysOfWeek: this._dayjsLocaleData.weekdaysMin()\n };\n\n super.setLocale(locale);\n }\n\n getYear(date: Dayjs): number {\n return date.year();\n }\n\n getMonth(date: Dayjs): number {\n return date.month() + 1;\n }\n\n getDate(date: Dayjs): number {\n return date.date();\n }\n\n getDayOfWeek(date: Dayjs): number {\n return date.day() + 1;\n }\n\n getHours(date: Dayjs): number {\n return date.hour();\n }\n\n getMinutes(date: Dayjs): number {\n return date.minute();\n }\n\n getSeconds(date: Dayjs): number {\n return date.second();\n }\n\n setHours(date: Dayjs, hours: number): Dayjs {\n return date.hour(hours);\n }\n\n setMinutes(date: Dayjs, minutes: number): Dayjs {\n return date.minute(minutes);\n }\n\n setSeconds(date: Dayjs, seconds: number): Dayjs {\n return date.second(seconds);\n }\n\n getWeekNumber(date: Dayjs): number {\n return date.week();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n switch (style) {\n case 'narrow':\n return this._localeData.narrowMonths;\n case 'short':\n return this._localeData.shortMonths;\n case 'long':\n default:\n return this._localeData.longMonths;\n }\n }\n\n getDateNames(): string[] {\n return range(31, (i) => this.createDate(2017, 0, i + 1).format('D'));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n switch (style) {\n case 'narrow':\n return this._localeData.narrowDaysOfWeek;\n case 'short':\n return this._localeData.shortDaysOfWeek;\n case 'long':\n default:\n return this._localeData.longDaysOfWeek;\n }\n }\n\n getYearName(date: Dayjs): string {\n return date.format('YYYY');\n }\n\n getWeekName(date: Dayjs): string {\n return date.week().toLocaleString(this.locale);\n }\n\n getHourNames({ meridian, twoDigit }: { twoDigit: boolean; meridian: boolean }): string[] {\n const format: string = meridian ? (twoDigit ? 'hh' : 'h') : twoDigit ? 'HH' : 'H';\n const dayjsDate = this._createDayjsDate();\n\n return range(24, (i) => this.clone(dayjsDate).hour(i).format(format));\n }\n\n getMinuteNames({ twoDigit }: { twoDigit: boolean }): string[] {\n const format: string = twoDigit ? 'mm' : 'm';\n const dayjsDate = this._createDayjsDate();\n\n return range(60, (i) => this.clone(dayjsDate).minute(i).format(format));\n }\n\n getSecondNames({ twoDigit }: { twoDigit: boolean }): string[] {\n const format: string = twoDigit ? 'ss' : 's';\n const dayjsDate = this._createDayjsDate();\n\n return range(60, (i) => this.clone(dayjsDate).second(i).format(format));\n }\n\n // isLower property is responsible for the lower and upper cases of the result\n getDayPeriodNames(isLower = false): [string, string] {\n const AM = this._dayjsLocaleData.meridiem?.(6, 0, isLower) ?? (isLower ? 'am' : 'AM');\n const PM = this._dayjsLocaleData.meridiem?.(16, 0, isLower) ?? (isLower ? 'pm' : 'PM');\n\n return [AM, PM];\n }\n\n getFirstDayOfWeek(): number {\n return this._localeData.firstDayOfWeek;\n }\n\n getNumDaysInMonth(date: Dayjs): number {\n return date.daysInMonth();\n }\n\n parse(value: any, parseFormat: string = ''): Dayjs | null {\n if (value && typeof value === 'string') {\n return this._createDayjsDate(value, parseFormat);\n } else if (value instanceof FdDate) {\n // FdDate instance may be incorrectly parsed by DayJS\n value = value.toString();\n }\n\n return value ? this._createDayjsDate(value).locale(this.locale) : null;\n }\n\n format(date: Dayjs, displayFormat: string): string {\n if (!date) {\n return '';\n }\n\n if (!this.isValid(date)) {\n throw Error('DayjsDateTimeAdapter: Cannot format invalid date.');\n }\n\n return date.locale(dayjs.locale()).format(displayFormat);\n }\n\n createDate(year: number, month: number, date: number): Dayjs {\n const result = this._createDayjsDate(new Date(year, month - 1, date));\n\n if (!result.isValid()) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\" and year \"${year}\".`);\n }\n\n return result;\n }\n\n today(): Dayjs {\n return this._createDayjsDate().locale(this.locale).startOf('day');\n }\n\n now(): Dayjs {\n return this._createDayjsDate().locale(this.locale);\n }\n\n addCalendarYears(date: Dayjs, years: number): Dayjs {\n return date.add(years, 'year');\n }\n\n addCalendarMonths(date: Dayjs, months: number): Dayjs {\n return date.add(months, 'month');\n }\n\n addCalendarDays(date: Dayjs, days: number): Dayjs {\n return date.add(days, 'day');\n }\n\n clone(date: Dayjs): Dayjs {\n if (!date) {\n return date;\n }\n\n if (this.locale) {\n return date.clone().locale(this.locale);\n }\n\n return date.clone();\n }\n\n datesEqual(date1: Dayjs, date2: Dayjs): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return date1.isSame(date2, 'day');\n }\n\n dateTimesEqual(date1: Dayjs, date2: Dayjs): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return date1.isSame(date2);\n }\n\n isBetween(dateToCheck: Dayjs, startDate: Dayjs, endDate: Dayjs): boolean {\n if (!dateToCheck || !startDate || !endDate) {\n return false;\n }\n\n return dateToCheck.isBetween(startDate, endDate);\n }\n\n isValid(date: Nullable<Dayjs>): date is Dayjs {\n return !!date?.isValid();\n }\n\n toIso8601(date: Dayjs): string {\n return date.toISOString();\n }\n\n isTimeFormatIncludesDayPeriod(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[aA]/);\n }\n\n isTimeFormatIncludesHours(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[hH]/);\n }\n\n isTimeFormatIncludesMinutes(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[m]/);\n }\n\n isTimeFormatIncludesSeconds(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[s]/);\n }\n\n /**\n * @hidden\n * will attempt to parse longDataFormat (e.g. \"L\", \"LT\") and convert it to simple one.\n */\n _prepareFormat(displayFormat: string): string {\n displayFormat = displayFormat.trim();\n try {\n const formats: object = dayjs.Ls[dayjs.locale()].formats;\n // this is the regular expression to parse format taken from dayjs repo\n // https://github.com/iamkun/dayjs/blob/dev/src/plugin/localizedFormat/utils.js\n return displayFormat.replace(\n /(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,\n (_, a, b) => a || formats[b] || displayFormat\n );\n } catch (e) {\n return displayFormat;\n }\n }\n\n /** @hidden */\n _createDayjsDate(date?: ConfigType, format?: string): Dayjs {\n const { strict, useUtc }: DayjsDatetimeAdapterOptions = this._options || {};\n\n const method = useUtc ? dayjs.utc : dayjs;\n let parsed = method(date, format, strict);\n // dayjs strictly follows the provided format\n // so partial strings will not be resolved. in this case attempt to resolve without formatting\n if (!parsed?.isValid() && !strict && format) {\n parsed = method(date, undefined, strict);\n }\n return parsed;\n }\n}\n\ninterface DateLocale {\n firstDayOfWeek: number;\n longMonths: string[];\n shortMonths: string[];\n narrowMonths: string[];\n longDaysOfWeek: string[];\n shortDaysOfWeek: string[];\n narrowDaysOfWeek: string[];\n}\n","import { DateTimeFormats } from '@fundamental-ngx/core/datetime';\n\nexport const DAYJS_DATETIME_FORMATS: DateTimeFormats = {\n parse: {\n dateInput: 'L',\n timeInput: 'h:mm A',\n dateTimeInput: 'L h:mm A'\n },\n display: {\n dateInput: 'L',\n timeInput: 'h:mm A',\n dateTimeInput: 'L h:mm A',\n\n dateA11yLabel: 'YYYY MMMM DD',\n monthA11yLabel: 'MMMM',\n yearA11yLabel: 'YYYY'\n },\n rangeDelimiter: ' - '\n};\n","import { NgModule } from '@angular/core';\nimport { DATE_TIME_FORMATS, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { DayjsDatetimeAdapter } from './dayjs-datetime-adapter';\nimport { DAYJS_DATETIME_FORMATS } from './dayjs-datetime-formats';\n\n@NgModule({\n providers: [{ provide: DatetimeAdapter, useClass: DayjsDatetimeAdapter }]\n})\nexport class DayjsDatetimeAdapterRawModule {}\n\n@NgModule({\n imports: [DayjsDatetimeAdapterRawModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: DAYJS_DATETIME_FORMATS }]\n})\nexport class DayjsDatetimeAdapterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-datetime-adapter.mjs","sources":["../../../../libs/datetime-adapter/src/lib/dayjs-datetime-adapter.ts","../../../../libs/datetime-adapter/src/lib/dayjs-datetime-formats.ts","../../../../libs/datetime-adapter/src/lib/dayjs-datetime-adapter.module.ts","../../../../libs/datetime-adapter/src/fundamental-ngx-datetime-adapter.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, LOCALE_ID, Optional } from '@angular/core';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\nimport utc from 'dayjs/plugin/utc';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport objectSupport from 'dayjs/plugin/objectSupport';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { DatetimeAdapter, FdDate } from '@fundamental-ngx/core/datetime';\nimport { Nullable } from '@fundamental-ngx/core/shared';\n\nfunction range<T>(length: number, mapFn: (index: number) => T): T[] {\n return Array.from(new Array(length)).map((_, index) => mapFn(index));\n}\n\nexport interface DayjsDatetimeAdapterOptions {\n strict?: boolean;\n useUtc?: boolean;\n}\n\nexport const DAYJS_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken<DayjsDatetimeAdapterOptions>(\n 'DAYJS_DATE_TIME_ADAPTER_OPTIONS',\n {\n providedIn: 'root',\n factory: DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY\n }\n);\n\n/** @hidden */\nexport function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY(): DayjsDatetimeAdapterOptions {\n return {\n useUtc: false,\n strict: false\n };\n}\n\n/**\n * DatetimeAdapter implementation based on dayjs.\n *\n * This uses dayjs as a date model instance.\n * It relies on dayjs implementation for formatting and translation purposes.\n */\n@Injectable()\nexport class DayjsDatetimeAdapter extends DatetimeAdapter<Dayjs> {\n /** @hidden */\n private _dayjsLocaleData: dayjs.GlobalLocaleDataReturn;\n\n /** @hidden */\n private _localeData: DateLocale;\n\n /** @hidden */\n fromNow: undefined;\n\n /** @hidden */\n constructor(\n @Optional() @Inject(LOCALE_ID) localeId: string,\n @Optional() @Inject(DAYJS_DATE_TIME_ADAPTER_OPTIONS) private _options?: DayjsDatetimeAdapterOptions\n ) {\n super();\n\n dayjs.extend(localeData);\n dayjs.extend(weekOfYear);\n dayjs.extend(utc);\n dayjs.extend(isBetween);\n dayjs.extend(objectSupport);\n dayjs.extend(localizedFormat);\n dayjs.extend(customParseFormat);\n\n this.setLocale(localeId || dayjs.locale());\n }\n\n /** Set locale */\n setLocale(locale: string): void {\n if (locale.toLowerCase() === 'en-us') {\n // Handle English locale name as it's a default one and it is different\n locale = 'en';\n }\n dayjs.locale(locale);\n\n if (dayjs.locale() !== locale) {\n throw new Error(\n `Failed to load locale ${locale}. ` +\n 'Make sure it exists and is preloaded. You may use \"loadLocale\" function from this package to load the locale you need. ' +\n 'List of supported locales can be found here: https://day.js.org/docs/en/i18n/i18n.'\n );\n }\n\n this._dayjsLocaleData = dayjs.localeData();\n\n this._localeData = {\n firstDayOfWeek: this._dayjsLocaleData.firstDayOfWeek(),\n longMonths: this._dayjsLocaleData.months(),\n shortMonths: this._dayjsLocaleData.monthsShort(),\n narrowMonths: this._dayjsLocaleData.months().map((name: string) => name.charAt(0)),\n longDaysOfWeek: this._dayjsLocaleData.weekdays(),\n shortDaysOfWeek: this._dayjsLocaleData.weekdaysShort(),\n narrowDaysOfWeek: this._dayjsLocaleData.weekdaysMin()\n };\n\n super.setLocale(locale);\n }\n\n /** Get year */\n getYear(date: Dayjs): number {\n return date.year();\n }\n\n /** Get month */\n getMonth(date: Dayjs): number {\n return date.month() + 1;\n }\n\n /** Get date */\n getDate(date: Dayjs): number {\n return date.date();\n }\n\n /** Get day of the week */\n getDayOfWeek(date: Dayjs): number {\n return date.day() + 1;\n }\n\n /** Get hours */\n getHours(date: Dayjs): number {\n return date.hour();\n }\n\n /** Get minutes */\n getMinutes(date: Dayjs): number {\n return date.minute();\n }\n\n /** Get seconds */\n getSeconds(date: Dayjs): number {\n return date.second();\n }\n\n /** Set hours in date object */\n setHours(date: Dayjs, hours: number): Dayjs {\n return date.hour(hours);\n }\n\n /** Set minutes in date object */\n setMinutes(date: Dayjs, minutes: number): Dayjs {\n return date.minute(minutes);\n }\n\n /** Set seconds in date object */\n setSeconds(date: Dayjs, seconds: number): Dayjs {\n return date.second(seconds);\n }\n\n /** Get week number */\n getWeekNumber(date: Dayjs): number {\n return date.week();\n }\n\n /** Get months names */\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n switch (style) {\n case 'narrow':\n return this._localeData.narrowMonths;\n case 'short':\n return this._localeData.shortMonths;\n case 'long':\n default:\n return this._localeData.longMonths;\n }\n }\n\n /** Get date names */\n getDateNames(): string[] {\n return range(31, (i) => this.createDate(2017, 0, i + 1).format('D'));\n }\n\n /** Get days of week names */\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n switch (style) {\n case 'narrow':\n return this._localeData.narrowDaysOfWeek;\n case 'short':\n return this._localeData.shortDaysOfWeek;\n case 'long':\n default:\n return this._localeData.longDaysOfWeek;\n }\n }\n\n /** Get year name */\n getYearName(date: Dayjs): string {\n return date.format('YYYY');\n }\n\n /** Get week name */\n getWeekName(date: Dayjs): string {\n return date.week().toLocaleString(this.locale);\n }\n\n /** Get hour names */\n getHourNames({ meridian, twoDigit }: { twoDigit: boolean; meridian: boolean }): string[] {\n const format: string = meridian ? (twoDigit ? 'hh' : 'h') : twoDigit ? 'HH' : 'H';\n const dayjsDate = this._createDayjsDate();\n\n return range(24, (i) => this.clone(dayjsDate).hour(i).format(format));\n }\n\n /** Get minute names */\n getMinuteNames({ twoDigit }: { twoDigit: boolean }): string[] {\n const format: string = twoDigit ? 'mm' : 'm';\n const dayjsDate = this._createDayjsDate();\n\n return range(60, (i) => this.clone(dayjsDate).minute(i).format(format));\n }\n\n /** Get second names */\n getSecondNames({ twoDigit }: { twoDigit: boolean }): string[] {\n const format: string = twoDigit ? 'ss' : 's';\n const dayjsDate = this._createDayjsDate();\n\n return range(60, (i) => this.clone(dayjsDate).second(i).format(format));\n }\n\n /**\n * Get day period names\n * @param isLower responsible for the lower and upper cases of the result\n */\n getDayPeriodNames(isLower = false): [string, string] {\n const AM = this._dayjsLocaleData.meridiem?.(6, 0, isLower) ?? (isLower ? 'am' : 'AM');\n const PM = this._dayjsLocaleData.meridiem?.(16, 0, isLower) ?? (isLower ? 'pm' : 'PM');\n\n return [AM, PM];\n }\n\n /** Get first day of the week */\n getFirstDayOfWeek(): number {\n return this._localeData.firstDayOfWeek;\n }\n\n /** Get number of days in the month */\n getNumDaysInMonth(date: Dayjs): number {\n return date.daysInMonth();\n }\n\n /** Try to parse a string to a date object */\n parse(value: any, parseFormat: string = ''): Dayjs | null {\n if (value && typeof value === 'string') {\n return this._createDayjsDate(value, parseFormat);\n } else if (value instanceof FdDate) {\n // FdDate instance may be incorrectly parsed by DayJS\n value = value.toString();\n }\n\n return value ? this._createDayjsDate(value).locale(this.locale) : null;\n }\n\n /** Format a date as a string */\n format(date: Dayjs, displayFormat: string): string {\n if (!date) {\n return '';\n }\n\n if (!this.isValid(date)) {\n throw Error('DayjsDateTimeAdapter: Cannot format invalid date.');\n }\n\n return date.locale(dayjs.locale()).format(displayFormat);\n }\n\n /** Create date object from values */\n createDate(year: number, month: number, date: number): Dayjs {\n const result = this._createDayjsDate(new Date(year, month - 1, date));\n\n if (!result.isValid()) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\" and year \"${year}\".`);\n }\n\n return result;\n }\n\n /** Get today */\n today(): Dayjs {\n return this._createDayjsDate().locale(this.locale).startOf('day');\n }\n\n /** Get now */\n now(): Dayjs {\n return this._createDayjsDate().locale(this.locale);\n }\n\n /** Add years to date */\n addCalendarYears(date: Dayjs, years: number): Dayjs {\n return date.add(years, 'year');\n }\n\n /** Add months to date */\n addCalendarMonths(date: Dayjs, months: number): Dayjs {\n return date.add(months, 'month');\n }\n\n /** Add days to date */\n addCalendarDays(date: Dayjs, days: number): Dayjs {\n return date.add(days, 'day');\n }\n\n /** Clone date */\n clone(date: Dayjs): Dayjs {\n if (!date) {\n return date;\n }\n\n if (this.locale) {\n return date.clone().locale(this.locale);\n }\n\n return date.clone();\n }\n\n /** Compare if dates are equal */\n datesEqual(date1: Dayjs, date2: Dayjs): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return date1.isSame(date2, 'day');\n }\n\n /** Compare if dates and time are equal */\n dateTimesEqual(date1: Dayjs, date2: Dayjs): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return date1.isSame(date2);\n }\n\n /** Check if date is in range */\n isBetween(dateToCheck: Dayjs, startDate: Dayjs, endDate: Dayjs): boolean {\n if (!dateToCheck || !startDate || !endDate) {\n return false;\n }\n\n return dateToCheck.isBetween(startDate, endDate);\n }\n\n /** Check if date is valid date object */\n isValid(date: Nullable<Dayjs>): date is Dayjs {\n return !!date?.isValid();\n }\n\n /** Convert date to ISO8601 string */\n toIso8601(date: Dayjs): string {\n return date.toISOString();\n }\n\n /** Check if time format includes day period */\n isTimeFormatIncludesDayPeriod(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[aA]/);\n }\n\n /** Check if time format includes hours */\n isTimeFormatIncludesHours(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[hH]/);\n }\n\n /** Check if time format includes minutes */\n isTimeFormatIncludesMinutes(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[m]/);\n }\n\n /** Check if time format includes seconds */\n isTimeFormatIncludesSeconds(displayFormat: string): boolean {\n const format = this._prepareFormat(displayFormat);\n\n return !!format.match(/[s]/);\n }\n\n /**\n * @hidden\n * will attempt to parse longDataFormat (e.g. \"L\", \"LT\") and convert it to simple one.\n */\n _prepareFormat(displayFormat: string): string {\n displayFormat = displayFormat.trim();\n try {\n const formats: object = dayjs.Ls[dayjs.locale()].formats;\n // this is the regular expression to parse format taken from dayjs repo\n // https://github.com/iamkun/dayjs/blob/dev/src/plugin/localizedFormat/utils.js\n return displayFormat.replace(\n /(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,\n (_, a, b) => a || formats[b] || displayFormat\n );\n } catch (e) {\n return displayFormat;\n }\n }\n\n /** @hidden */\n _createDayjsDate(date?: ConfigType, format?: string): Dayjs {\n const { strict, useUtc }: DayjsDatetimeAdapterOptions = this._options || {};\n\n const method = useUtc ? dayjs.utc : dayjs;\n let parsed = method(date, format, strict);\n // dayjs strictly follows the provided format\n // so partial strings will not be resolved. in this case attempt to resolve without formatting\n if (!parsed?.isValid() && !strict && format) {\n parsed = method(date, undefined, strict);\n }\n return parsed;\n }\n}\n\ninterface DateLocale {\n firstDayOfWeek: number;\n longMonths: string[];\n shortMonths: string[];\n narrowMonths: string[];\n longDaysOfWeek: string[];\n shortDaysOfWeek: string[];\n narrowDaysOfWeek: string[];\n}\n","import { DateTimeFormats } from '@fundamental-ngx/core/datetime';\n\nexport const DAYJS_DATETIME_FORMATS: DateTimeFormats = {\n parse: {\n dateInput: 'L',\n timeInput: 'h:mm A',\n dateTimeInput: 'L h:mm A'\n },\n display: {\n dateInput: 'L',\n timeInput: 'h:mm A',\n dateTimeInput: 'L h:mm A',\n\n dateA11yLabel: 'YYYY MMMM DD',\n monthA11yLabel: 'MMMM',\n yearA11yLabel: 'YYYY'\n },\n rangeDelimiter: ' - '\n};\n","import { NgModule } from '@angular/core';\nimport { DATE_TIME_FORMATS, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { DayjsDatetimeAdapter } from './dayjs-datetime-adapter';\nimport { DAYJS_DATETIME_FORMATS } from './dayjs-datetime-formats';\n\n@NgModule({\n providers: [{ provide: DatetimeAdapter, useClass: DayjsDatetimeAdapter }]\n})\nexport class DayjsDatetimeAdapterRawModule {}\n\n@NgModule({\n imports: [DayjsDatetimeAdapterRawModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: DAYJS_DATETIME_FORMATS }]\n})\nexport class DayjsDatetimeAdapterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
@@ -8,6 +8,7 @@ export interface DayjsDatetimeAdapterOptions {
|
|
|
8
8
|
useUtc?: boolean;
|
|
9
9
|
}
|
|
10
10
|
export declare const DAYJS_DATE_TIME_ADAPTER_OPTIONS: InjectionToken<DayjsDatetimeAdapterOptions>;
|
|
11
|
+
/** @hidden */
|
|
11
12
|
export declare function DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY(): DayjsDatetimeAdapterOptions;
|
|
12
13
|
/**
|
|
13
14
|
* DatetimeAdapter implementation based on dayjs.
|
|
@@ -21,55 +22,101 @@ export declare class DayjsDatetimeAdapter extends DatetimeAdapter<Dayjs> {
|
|
|
21
22
|
private _dayjsLocaleData;
|
|
22
23
|
/** @hidden */
|
|
23
24
|
private _localeData;
|
|
25
|
+
/** @hidden */
|
|
24
26
|
fromNow: undefined;
|
|
27
|
+
/** @hidden */
|
|
25
28
|
constructor(localeId: string, _options?: DayjsDatetimeAdapterOptions | undefined);
|
|
29
|
+
/** Set locale */
|
|
26
30
|
setLocale(locale: string): void;
|
|
31
|
+
/** Get year */
|
|
27
32
|
getYear(date: Dayjs): number;
|
|
33
|
+
/** Get month */
|
|
28
34
|
getMonth(date: Dayjs): number;
|
|
35
|
+
/** Get date */
|
|
29
36
|
getDate(date: Dayjs): number;
|
|
37
|
+
/** Get day of the week */
|
|
30
38
|
getDayOfWeek(date: Dayjs): number;
|
|
39
|
+
/** Get hours */
|
|
31
40
|
getHours(date: Dayjs): number;
|
|
41
|
+
/** Get minutes */
|
|
32
42
|
getMinutes(date: Dayjs): number;
|
|
43
|
+
/** Get seconds */
|
|
33
44
|
getSeconds(date: Dayjs): number;
|
|
45
|
+
/** Set hours in date object */
|
|
34
46
|
setHours(date: Dayjs, hours: number): Dayjs;
|
|
47
|
+
/** Set minutes in date object */
|
|
35
48
|
setMinutes(date: Dayjs, minutes: number): Dayjs;
|
|
49
|
+
/** Set seconds in date object */
|
|
36
50
|
setSeconds(date: Dayjs, seconds: number): Dayjs;
|
|
51
|
+
/** Get week number */
|
|
37
52
|
getWeekNumber(date: Dayjs): number;
|
|
53
|
+
/** Get months names */
|
|
38
54
|
getMonthNames(style: 'long' | 'short' | 'narrow'): string[];
|
|
55
|
+
/** Get date names */
|
|
39
56
|
getDateNames(): string[];
|
|
57
|
+
/** Get days of week names */
|
|
40
58
|
getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];
|
|
59
|
+
/** Get year name */
|
|
41
60
|
getYearName(date: Dayjs): string;
|
|
61
|
+
/** Get week name */
|
|
42
62
|
getWeekName(date: Dayjs): string;
|
|
63
|
+
/** Get hour names */
|
|
43
64
|
getHourNames({ meridian, twoDigit }: {
|
|
44
65
|
twoDigit: boolean;
|
|
45
66
|
meridian: boolean;
|
|
46
67
|
}): string[];
|
|
68
|
+
/** Get minute names */
|
|
47
69
|
getMinuteNames({ twoDigit }: {
|
|
48
70
|
twoDigit: boolean;
|
|
49
71
|
}): string[];
|
|
72
|
+
/** Get second names */
|
|
50
73
|
getSecondNames({ twoDigit }: {
|
|
51
74
|
twoDigit: boolean;
|
|
52
75
|
}): string[];
|
|
76
|
+
/**
|
|
77
|
+
* Get day period names
|
|
78
|
+
* @param isLower responsible for the lower and upper cases of the result
|
|
79
|
+
*/
|
|
53
80
|
getDayPeriodNames(isLower?: boolean): [string, string];
|
|
81
|
+
/** Get first day of the week */
|
|
54
82
|
getFirstDayOfWeek(): number;
|
|
83
|
+
/** Get number of days in the month */
|
|
55
84
|
getNumDaysInMonth(date: Dayjs): number;
|
|
85
|
+
/** Try to parse a string to a date object */
|
|
56
86
|
parse(value: any, parseFormat?: string): Dayjs | null;
|
|
87
|
+
/** Format a date as a string */
|
|
57
88
|
format(date: Dayjs, displayFormat: string): string;
|
|
89
|
+
/** Create date object from values */
|
|
58
90
|
createDate(year: number, month: number, date: number): Dayjs;
|
|
91
|
+
/** Get today */
|
|
59
92
|
today(): Dayjs;
|
|
93
|
+
/** Get now */
|
|
60
94
|
now(): Dayjs;
|
|
95
|
+
/** Add years to date */
|
|
61
96
|
addCalendarYears(date: Dayjs, years: number): Dayjs;
|
|
97
|
+
/** Add months to date */
|
|
62
98
|
addCalendarMonths(date: Dayjs, months: number): Dayjs;
|
|
99
|
+
/** Add days to date */
|
|
63
100
|
addCalendarDays(date: Dayjs, days: number): Dayjs;
|
|
101
|
+
/** Clone date */
|
|
64
102
|
clone(date: Dayjs): Dayjs;
|
|
103
|
+
/** Compare if dates are equal */
|
|
65
104
|
datesEqual(date1: Dayjs, date2: Dayjs): boolean;
|
|
105
|
+
/** Compare if dates and time are equal */
|
|
66
106
|
dateTimesEqual(date1: Dayjs, date2: Dayjs): boolean;
|
|
107
|
+
/** Check if date is in range */
|
|
67
108
|
isBetween(dateToCheck: Dayjs, startDate: Dayjs, endDate: Dayjs): boolean;
|
|
109
|
+
/** Check if date is valid date object */
|
|
68
110
|
isValid(date: Nullable<Dayjs>): date is Dayjs;
|
|
111
|
+
/** Convert date to ISO8601 string */
|
|
69
112
|
toIso8601(date: Dayjs): string;
|
|
113
|
+
/** Check if time format includes day period */
|
|
70
114
|
isTimeFormatIncludesDayPeriod(displayFormat: string): boolean;
|
|
115
|
+
/** Check if time format includes hours */
|
|
71
116
|
isTimeFormatIncludesHours(displayFormat: string): boolean;
|
|
117
|
+
/** Check if time format includes minutes */
|
|
72
118
|
isTimeFormatIncludesMinutes(displayFormat: string): boolean;
|
|
119
|
+
/** Check if time format includes seconds */
|
|
73
120
|
isTimeFormatIncludesSeconds(displayFormat: string): boolean;
|
|
74
121
|
/**
|
|
75
122
|
* @hidden
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fundamental-ngx/datetime-adapter",
|
|
3
|
-
"version": "0.36.3-rc.
|
|
3
|
+
"version": "0.36.3-rc.8",
|
|
4
4
|
"description": "Datetime adapter for SAP Fundamentals, based on Day.js package",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://sap.github.io/fundamental-ngx/home",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"peerDependencies": {
|
|
12
12
|
"@angular/common": "^14.0.0",
|
|
13
13
|
"@angular/core": "^14.0.0",
|
|
14
|
-
"@fundamental-ngx/core": "0.36.3-rc.
|
|
14
|
+
"@fundamental-ngx/core": "0.36.3-rc.8",
|
|
15
15
|
"dayjs": "1.11.4"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
Binary file
|