@onemrvapublic/design-system 18.2.16-develop.8 → 18.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/shared/index.mjs +1 -2
- package/esm2022/shared/src/lib/adapters/index.mjs +3 -3
- package/esm2022/shared/src/lib/adapters/luxon.date.adapter.mjs +253 -0
- package/esm2022/shared/src/lib/adapters/luxon.utils.mjs +23 -0
- package/esm2022/shared/src/lib/adapters/native.date.adapter.mjs +66 -0
- package/esm2022/shared/src/lib/providers/onemrva.date.luxon.provider.mjs +9 -8
- package/esm2022/shared/src/lib/providers/onemrva.date.luxon.year.month.provider.mjs +9 -8
- package/esm2022/shared/src/lib/providers/onemrva.date.native.provider.mjs +4 -10
- package/esm2022/shared/src/lib/providers/onemrva.date.native.year.month.provider.mjs +4 -10
- package/fesm2022/onemrvapublic-design-system-shared.mjs +270 -138
- package/fesm2022/onemrvapublic-design-system-shared.mjs.map +1 -1
- package/package.json +1 -1
- package/shared/index.d.ts +0 -1
- package/shared/src/lib/adapters/index.d.ts +2 -2
- package/shared/src/lib/adapters/luxon.date.adapter.d.ts +50 -0
- package/shared/src/lib/adapters/luxon.utils.d.ts +26 -0
- package/shared/src/lib/adapters/{date.adapter.d.ts → native.date.adapter.d.ts} +3 -3
- package/esm2022/shared/src/lib/adapters/date.adapter.mjs +0 -66
- package/esm2022/shared/src/lib/adapters/year-month.adapter.mjs +0 -59
- package/esm2022/shared/src/lib/modules/index.mjs +0 -3
- package/esm2022/shared/src/lib/modules/shared.datepicker.luxon.module.mjs +0 -46
- package/esm2022/shared/src/lib/modules/shared.datepicker.luxon.year.month.module.mjs +0 -46
- package/shared/src/lib/adapters/year-month.adapter.d.ts +0 -15
- package/shared/src/lib/modules/index.d.ts +0 -2
- package/shared/src/lib/modules/shared.datepicker.luxon.module.d.ts +0 -12
- package/shared/src/lib/modules/shared.datepicker.luxon.year.month.module.d.ts +0 -12
package/esm2022/shared/index.mjs
CHANGED
|
@@ -13,7 +13,6 @@ export * from './src/lib/pipes';
|
|
|
13
13
|
export * from './src/lib/services';
|
|
14
14
|
export * from './src/lib/validators';
|
|
15
15
|
export * from './src/lib/shared.module';
|
|
16
|
-
export * from './src/lib/modules';
|
|
17
16
|
export * from './src/lib/adapters';
|
|
18
17
|
export * from './src/lib/providers';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBzaGFyZWRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3NyYy9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9saWIvY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2xpYi9jb250YWluZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2xpYi9kZWNvcmF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2xpYi9oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2xpYi9sb2FkZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2xpYi9pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2xpYi9waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9saWIvc2VydmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvbGliL3ZhbGlkYXRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvbGliL3NoYXJlZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvbGliL2FkYXB0ZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2xpYi9wcm92aWRlcnMnO1xuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './date.adapter';
|
|
2
|
-
export * from './
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './native.date.adapter';
|
|
2
|
+
export * from './luxon.date.adapter';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vc2hhcmVkL3NyYy9saWIvYWRhcHRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uYXRpdmUuZGF0ZS5hZGFwdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbHV4b24uZGF0ZS5hZGFwdGVyJztcbiJdfQ==
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
7
|
+
*/
|
|
8
|
+
import { Injectable, inject } from '@angular/core';
|
|
9
|
+
import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
|
|
10
|
+
import { DateTime as LuxonDateTime, Info as LuxonInfo, } from 'luxon';
|
|
11
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
12
|
+
import { luxonRange, MAT_LUXON_DATE_ADAPTER_OPTIONS, } from './luxon.utils';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "@ngx-translate/core";
|
|
15
|
+
/** Adapts Luxon Dates for use with Angular Material. */
|
|
16
|
+
export class OnemrvaLuxonDateAdapter extends DateAdapter {
|
|
17
|
+
constructor(translateService) {
|
|
18
|
+
super();
|
|
19
|
+
this.translateService = translateService;
|
|
20
|
+
const dateLocale = inject(MAT_DATE_LOCALE, { optional: true });
|
|
21
|
+
const options = inject(MAT_LUXON_DATE_ADAPTER_OPTIONS, {
|
|
22
|
+
optional: true,
|
|
23
|
+
});
|
|
24
|
+
this._useUTC = !!options?.useUtc;
|
|
25
|
+
this._firstDayOfWeek = options?.firstDayOfWeek || 0;
|
|
26
|
+
this._defaultOutputCalendar = options?.defaultOutputCalendar || 'gregory';
|
|
27
|
+
this.setLocale(dateLocale || LuxonDateTime.local().locale);
|
|
28
|
+
this.setLocale(this.translateService.currentLang);
|
|
29
|
+
if (this.translateService !== undefined) {
|
|
30
|
+
this.translateService.onLangChange
|
|
31
|
+
.pipe(takeUntilDestroyed())
|
|
32
|
+
.subscribe(({ lang }) => {
|
|
33
|
+
this.setLocale(lang);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
getYear(date) {
|
|
38
|
+
return date.year;
|
|
39
|
+
}
|
|
40
|
+
getMonth(date) {
|
|
41
|
+
// Luxon works with 1-indexed months whereas our code expects 0-indexed.
|
|
42
|
+
return date.month - 1;
|
|
43
|
+
}
|
|
44
|
+
getDate(date) {
|
|
45
|
+
return date.day;
|
|
46
|
+
}
|
|
47
|
+
getDayOfWeek(date) {
|
|
48
|
+
return date.weekday;
|
|
49
|
+
}
|
|
50
|
+
getMonthNames(style) {
|
|
51
|
+
// Adding outputCalendar option, because LuxonInfo doesn't get effected by LuxonSettings
|
|
52
|
+
return LuxonInfo.months(style, {
|
|
53
|
+
locale: this.locale,
|
|
54
|
+
outputCalendar: this._defaultOutputCalendar,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
getDateNames() {
|
|
58
|
+
// At the time of writing, Luxon doesn't offer similar
|
|
59
|
+
// functionality so we have to fall back to the Intl API.
|
|
60
|
+
const dtf = new Intl.DateTimeFormat(this.locale, {
|
|
61
|
+
day: 'numeric',
|
|
62
|
+
timeZone: 'utc',
|
|
63
|
+
});
|
|
64
|
+
// Format a UTC date in order to avoid DST issues.
|
|
65
|
+
return luxonRange(31, i => dtf.format(LuxonDateTime.utc(2017, 1, i + 1).toJSDate()));
|
|
66
|
+
}
|
|
67
|
+
getDayOfWeekNames(style) {
|
|
68
|
+
// Note that we shift the array once, because Luxon returns Monday as the
|
|
69
|
+
// first day of the week, whereas our logic assumes that it's Sunday. See:
|
|
70
|
+
// https://moment.github.io/luxon/api-docs/index.html#infoweekdays
|
|
71
|
+
const days = LuxonInfo.weekdays(style, { locale: this.locale });
|
|
72
|
+
days.unshift(days.pop());
|
|
73
|
+
return days;
|
|
74
|
+
}
|
|
75
|
+
getYearName(date) {
|
|
76
|
+
return date.toFormat('yyyy', this._getOptions());
|
|
77
|
+
}
|
|
78
|
+
getFirstDayOfWeek() {
|
|
79
|
+
return this._firstDayOfWeek;
|
|
80
|
+
}
|
|
81
|
+
getNumDaysInMonth(date) {
|
|
82
|
+
return date.daysInMonth;
|
|
83
|
+
}
|
|
84
|
+
clone(date) {
|
|
85
|
+
return LuxonDateTime.fromObject(date.toObject(), this._getOptions());
|
|
86
|
+
}
|
|
87
|
+
createDate(year, month, date) {
|
|
88
|
+
const options = this._getOptions();
|
|
89
|
+
if (month < 0 || month > 11) {
|
|
90
|
+
throw Error(`Invalid month index "${month}". Month index has to be between 0 and 11.`);
|
|
91
|
+
}
|
|
92
|
+
if (date < 1) {
|
|
93
|
+
throw Error(`Invalid date "${date}". Date has to be greater than 0.`);
|
|
94
|
+
}
|
|
95
|
+
// Luxon uses 1-indexed months so we need to add one to the month.
|
|
96
|
+
const result = this._useUTC
|
|
97
|
+
? LuxonDateTime.utc(year, month + 1, date, options)
|
|
98
|
+
: LuxonDateTime.local(year, month + 1, date, options);
|
|
99
|
+
if (!this.isValid(result)) {
|
|
100
|
+
throw Error(`Invalid date "${date}". Reason: "${result.invalidReason}".`);
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
today() {
|
|
105
|
+
const options = this._getOptions();
|
|
106
|
+
return this._useUTC
|
|
107
|
+
? LuxonDateTime.utc(options)
|
|
108
|
+
: LuxonDateTime.local(options);
|
|
109
|
+
}
|
|
110
|
+
parse(value, parseFormat) {
|
|
111
|
+
const options = this._getOptions();
|
|
112
|
+
if (typeof value == 'string' && value.length > 0) {
|
|
113
|
+
// This is screwing things up as 062005 would become 05 0602
|
|
114
|
+
// const iso8601Date = LuxonDateTime.fromISO(value, options);
|
|
115
|
+
//
|
|
116
|
+
// if (this.isValid(iso8601Date)) {
|
|
117
|
+
// console.log(iso8601Date);
|
|
118
|
+
// return iso8601Date;
|
|
119
|
+
// }
|
|
120
|
+
const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];
|
|
121
|
+
if (!parseFormat.length) {
|
|
122
|
+
throw Error('Formats array must not be empty.');
|
|
123
|
+
}
|
|
124
|
+
console.log(formats);
|
|
125
|
+
for (const format of formats) {
|
|
126
|
+
console.log(format);
|
|
127
|
+
const fromFormat = LuxonDateTime.fromFormat(value, format, options);
|
|
128
|
+
if (this.isValid(fromFormat)) {
|
|
129
|
+
return fromFormat;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return this.invalid();
|
|
133
|
+
}
|
|
134
|
+
else if (typeof value === 'number') {
|
|
135
|
+
return LuxonDateTime.fromMillis(value, options);
|
|
136
|
+
}
|
|
137
|
+
else if (value instanceof Date) {
|
|
138
|
+
return LuxonDateTime.fromJSDate(value, options);
|
|
139
|
+
}
|
|
140
|
+
else if (value instanceof LuxonDateTime) {
|
|
141
|
+
return LuxonDateTime.fromMillis(value.toMillis(), options);
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
format(date, displayFormat) {
|
|
146
|
+
if (!this.isValid(date)) {
|
|
147
|
+
throw Error('LuxonDateAdapter: Cannot format invalid date.');
|
|
148
|
+
}
|
|
149
|
+
if (this._useUTC) {
|
|
150
|
+
return date.setLocale(this.locale).setZone('utc').toFormat(displayFormat);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
return date.setLocale(this.locale).toFormat(displayFormat);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
addCalendarYears(date, years) {
|
|
157
|
+
return date.reconfigure(this._getOptions()).plus({ years });
|
|
158
|
+
}
|
|
159
|
+
addCalendarMonths(date, months) {
|
|
160
|
+
return date.reconfigure(this._getOptions()).plus({ months });
|
|
161
|
+
}
|
|
162
|
+
addCalendarDays(date, days) {
|
|
163
|
+
return date.reconfigure(this._getOptions()).plus({ days });
|
|
164
|
+
}
|
|
165
|
+
toIso8601(date) {
|
|
166
|
+
return date.toISO();
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Returns the given value if given a valid Luxon or null. Deserializes valid ISO 8601 strings
|
|
170
|
+
* (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid DateTime and empty
|
|
171
|
+
* string into null. Returns an invalid date for all other values.
|
|
172
|
+
*/
|
|
173
|
+
deserialize(value) {
|
|
174
|
+
const options = this._getOptions();
|
|
175
|
+
let date;
|
|
176
|
+
if (value instanceof Date) {
|
|
177
|
+
date = LuxonDateTime.fromJSDate(value, options);
|
|
178
|
+
}
|
|
179
|
+
if (typeof value === 'string') {
|
|
180
|
+
if (!value) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
date = LuxonDateTime.fromISO(value, options);
|
|
184
|
+
}
|
|
185
|
+
if (date && this.isValid(date)) {
|
|
186
|
+
return date;
|
|
187
|
+
}
|
|
188
|
+
return super.deserialize(value);
|
|
189
|
+
}
|
|
190
|
+
isDateInstance(obj) {
|
|
191
|
+
return obj instanceof LuxonDateTime;
|
|
192
|
+
}
|
|
193
|
+
isValid(date) {
|
|
194
|
+
return date.isValid;
|
|
195
|
+
}
|
|
196
|
+
invalid() {
|
|
197
|
+
return LuxonDateTime.invalid('Invalid Luxon DateTime object.');
|
|
198
|
+
}
|
|
199
|
+
setTime(target, hours, minutes, seconds) {
|
|
200
|
+
//if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
201
|
+
if (hours < 0 || hours > 23) {
|
|
202
|
+
throw Error(`Invalid hours "${hours}". Hours value must be between 0 and 23.`);
|
|
203
|
+
}
|
|
204
|
+
if (minutes < 0 || minutes > 59) {
|
|
205
|
+
throw Error(`Invalid minutes "${minutes}". Minutes value must be between 0 and 59.`);
|
|
206
|
+
}
|
|
207
|
+
if (seconds < 0 || seconds > 59) {
|
|
208
|
+
throw Error(`Invalid seconds "${seconds}". Seconds value must be between 0 and 59.`);
|
|
209
|
+
}
|
|
210
|
+
//}
|
|
211
|
+
return this.clone(target).set({
|
|
212
|
+
hour: hours,
|
|
213
|
+
minute: minutes,
|
|
214
|
+
second: seconds,
|
|
215
|
+
millisecond: 0,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
getHours(date) {
|
|
219
|
+
return date.hour;
|
|
220
|
+
}
|
|
221
|
+
getMinutes(date) {
|
|
222
|
+
return date.minute;
|
|
223
|
+
}
|
|
224
|
+
getSeconds(date) {
|
|
225
|
+
return date.second;
|
|
226
|
+
}
|
|
227
|
+
parseTime(value, parseFormat) {
|
|
228
|
+
const result = this.parse(value, parseFormat);
|
|
229
|
+
if ((!result || !this.isValid(result)) && typeof value === 'string') {
|
|
230
|
+
// It seems like Luxon doesn't work well cross-browser for strings that have
|
|
231
|
+
// additional characters around the time. Try parsing without those characters.
|
|
232
|
+
return (this.parse(value.replace(/[^0-9:(AM|PM)]/gi, ''), parseFormat) || result);
|
|
233
|
+
}
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
addSeconds(date, amount) {
|
|
237
|
+
return date.reconfigure(this._getOptions()).plus({ seconds: amount });
|
|
238
|
+
}
|
|
239
|
+
/** Gets the options that should be used when constructing a new `DateTime` object. */
|
|
240
|
+
_getOptions() {
|
|
241
|
+
return {
|
|
242
|
+
zone: this._useUTC ? 'utc' : undefined,
|
|
243
|
+
locale: this.locale,
|
|
244
|
+
outputCalendar: this._defaultOutputCalendar,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: OnemrvaLuxonDateAdapter, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
248
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: OnemrvaLuxonDateAdapter }); }
|
|
249
|
+
}
|
|
250
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: OnemrvaLuxonDateAdapter, decorators: [{
|
|
251
|
+
type: Injectable
|
|
252
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHV4b24uZGF0ZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL3NoYXJlZC9zcmMvbGliL2FkYXB0ZXJzL2x1eG9uLmRhdGUuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxRQUFRLElBQUksYUFBYSxFQUN6QixJQUFJLElBQUksU0FBUyxHQUdsQixNQUFNLE9BQU8sQ0FBQztBQUVmLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsOEJBQThCLEdBRS9CLE1BQU0sZUFBZSxDQUFDOzs7QUFFdkIsd0RBQXdEO0FBRXhELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxXQUEwQjtJQUtyRSxZQUFvQixnQkFBa0M7UUFDcEQsS0FBSyxFQUFFLENBQUM7UUFEVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBR3BELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQ3BCLDhCQUE4QixFQUM5QjtZQUNFLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sRUFBRSxjQUFjLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxzQkFBc0IsR0FB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LENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BFLDRFQUE0RTtZQUM1RSwrRUFBK0U7WUFDL0UsT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsSUFBSSxNQUFNLENBQ3pFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFtQixFQUFFLE1BQWM7UUFDNUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxzRkFBc0Y7SUFDOUUsV0FBVztRQUNqQixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN0QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsY0FBYyxFQUFFLElBQUksQ0FBQyxzQkFBc0I7U0FDNUMsQ0FBQztJQUNKLENBQUM7OEdBNVNVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIERhdGVUaW1lIGFzIEx1eG9uRGF0ZVRpbWUsXG4gIEluZm8gYXMgTHV4b25JbmZvLFxuICBEYXRlVGltZU9wdGlvbnMgYXMgTHV4b25EYXRlVGltZU9wdGlvbnMsXG4gIENhbGVuZGFyU3lzdGVtIGFzIEx1eG9uQ2FsZW5kYXJTeXN0ZW0sXG59IGZyb20gJ2x1eG9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIGx1eG9uUmFuZ2UsXG4gIE1BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OUyxcbiAgTWF0THV4b25EYXRlQWRhcHRlck9wdGlvbnMsXG59IGZyb20gJy4vbHV4b24udXRpbHMnO1xuXG4vKiogQWRhcHRzIEx1eG9uIERhdGVzIGZvciB1c2Ugd2l0aCBBbmd1bGFyIE1hdGVyaWFsLiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFMdXhvbkRhdGVBZGFwdGVyIGV4dGVuZHMgRGF0ZUFkYXB0ZXI8THV4b25EYXRlVGltZT4ge1xuICBwcml2YXRlIF91c2VVVEM6IGJvb2xlYW47XG4gIHByaXZhdGUgX2ZpcnN0RGF5T2ZXZWVrOiBudW1iZXI7XG4gIHByaXZhdGUgX2RlZmF1bHRPdXRwdXRDYWxlbmRhcjogTHV4b25DYWxlbmRhclN5c3RlbTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgY29uc3QgZGF0ZUxvY2FsZSA9IGluamVjdChNQVRfREFURV9MT0NBTEUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGluamVjdDxNYXRMdXhvbkRhdGVBZGFwdGVyT3B0aW9ucz4oXG4gICAgICBNQVRfTFVYT05fREFURV9BREFQVEVSX09QVElPTlMsXG4gICAgICB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5fdXNlVVRDID0gISFvcHRpb25zPy51c2VVdGM7XG4gICAgdGhpcy5fZmlyc3REYXlPZldlZWsgPSBvcHRpb25zPy5maXJzdERheU9mV2VlayB8fCAwO1xuICAgIHRoaXMuX2RlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG9wdGlvbnM/LmRlZmF1bHRPdXRwdXRDYWxlbmRhciB8fCAnZ3JlZ29yeSc7XG4gICAgdGhpcy5zZXRMb2NhbGUoZGF0ZUxvY2FsZSB8fCBMdXhvbkRhdGVUaW1lLmxvY2FsKCkubG9jYWxlKTtcblxuICAgIHRoaXMuc2V0TG9jYWxlKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyk7XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCh7IGxhbmcgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0TG9jYWxlKGxhbmcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRZZWFyKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLnllYXI7XG4gIH1cblxuICBnZXRNb250aChkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICAvLyBMdXhvbiB3b3JrcyB3aXRoIDEtaW5kZXhlZCBtb250aHMgd2hlcmVhcyBvdXIgY29kZSBleHBlY3RzIDAtaW5kZXhlZC5cbiAgICByZXR1cm4gZGF0ZS5tb250aCAtIDE7XG4gIH1cblxuICBnZXREYXRlKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmRheTtcbiAgfVxuXG4gIGdldERheU9mV2VlayhkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS53ZWVrZGF5O1xuICB9XG5cbiAgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIC8vIEFkZGluZyBvdXRwdXRDYWxlbmRhciBvcHRpb24sIGJlY2F1c2UgTHV4b25JbmZvIGRvZXNuJ3QgZ2V0IGVmZmVjdGVkIGJ5IEx1eG9uU2V0dGluZ3NcbiAgICByZXR1cm4gTHV4b25JbmZvLm1vbnRocyhzdHlsZSwge1xuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgIG91dHB1dENhbGVuZGFyOiB0aGlzLl9kZWZhdWx0T3V0cHV0Q2FsZW5kYXIsXG4gICAgfSk7XG4gIH1cblxuICBnZXREYXRlTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIC8vIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIEx1eG9uIGRvZXNuJ3Qgb2ZmZXIgc2ltaWxhclxuICAgIC8vIGZ1bmN0aW9uYWxpdHkgc28gd2UgaGF2ZSB0byBmYWxsIGJhY2sgdG8gdGhlIEludGwgQVBJLlxuICAgIGNvbnN0IGR0ZiA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7XG4gICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgIHRpbWVab25lOiAndXRjJyxcbiAgICB9KTtcblxuICAgIC8vIEZvcm1hdCBhIFVUQyBkYXRlIGluIG9yZGVyIHRvIGF2b2lkIERTVCBpc3N1ZXMuXG4gICAgcmV0dXJuIGx1eG9uUmFuZ2UoMzEsIGkgPT5cbiAgICAgIGR0Zi5mb3JtYXQoTHV4b25EYXRlVGltZS51dGMoMjAxNywgMSwgaSArIDEpLnRvSlNEYXRlKCkpLFxuICAgICk7XG4gIH1cblxuICBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIC8vIE5vdGUgdGhhdCB3ZSBzaGlmdCB0aGUgYXJyYXkgb25jZSwgYmVjYXVzZSBMdXhvbiByZXR1cm5zIE1vbmRheSBhcyB0aGVcbiAgICAvLyBmaXJzdCBkYXkgb2YgdGhlIHdlZWssIHdoZXJlYXMgb3VyIGxvZ2ljIGFzc3VtZXMgdGhhdCBpdCdzIFN1bmRheS4gU2VlOlxuICAgIC8vIGh0dHBzOi8vbW9tZW50LmdpdGh1Yi5pby9sdXhvbi9hcGktZG9jcy9pbmRleC5odG1sI2luZm93ZWVrZGF5c1xuICAgIGNvbnN0IGRheXMgPSBMdXhvbkluZm8ud2Vla2RheXMoc3R5bGUsIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KTtcbiAgICBkYXlzLnVuc2hpZnQoZGF5cy5wb3AoKSEpO1xuICAgIHJldHVybiBkYXlzO1xuICB9XG5cbiAgZ2V0WWVhck5hbWUoZGF0ZTogTHV4b25EYXRlVGltZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUudG9Gb3JtYXQoJ3l5eXknLCB0aGlzLl9nZXRPcHRpb25zKCkpO1xuICB9XG5cbiAgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWs7XG4gIH1cblxuICBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5kYXlzSW5Nb250aCE7XG4gIH1cblxuICBjbG9uZShkYXRlOiBMdXhvbkRhdGVUaW1lKTogTHV4b25EYXRlVGltZSB7XG4gICAgcmV0dXJuIEx1eG9uRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlLnRvT2JqZWN0KCksIHRoaXMuX2dldE9wdGlvbnMoKSk7XG4gIH1cblxuICBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTogTHV4b25EYXRlVGltZSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMoKTtcblxuICAgIGlmIChtb250aCA8IDAgfHwgbW9udGggPiAxMSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIG1vbnRoIGluZGV4IFwiJHttb250aH1cIi4gTW9udGggaW5kZXggaGFzIHRvIGJlIGJldHdlZW4gMCBhbmQgMTEuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUgPCAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXRlfVwiLiBEYXRlIGhhcyB0byBiZSBncmVhdGVyIHRoYW4gMC5gKTtcbiAgICB9XG5cbiAgICAvLyBMdXhvbiB1c2VzIDEtaW5kZXhlZCBtb250aHMgc28gd2UgbmVlZCB0byBhZGQgb25lIHRvIHRoZSBtb250aC5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl91c2VVVENcbiAgICAgID8gTHV4b25EYXRlVGltZS51dGMoeWVhciwgbW9udGggKyAxLCBkYXRlLCBvcHRpb25zKVxuICAgICAgOiBMdXhvbkRhdGVUaW1lLmxvY2FsKHllYXIsIG1vbnRoICsgMSwgZGF0ZSwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZChyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXRlfVwiLiBSZWFzb246IFwiJHtyZXN1bHQuaW52YWxpZFJlYXNvbn1cIi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgdG9kYXkoKTogTHV4b25EYXRlVGltZSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMoKTtcblxuICAgIHJldHVybiB0aGlzLl91c2VVVENcbiAgICAgID8gTHV4b25EYXRlVGltZS51dGMob3B0aW9ucylcbiAgICAgIDogTHV4b25EYXRlVGltZS5sb2NhbChvcHRpb25zKTtcbiAgfVxuXG4gIHBhcnNlKHZhbHVlOiBhbnksIHBhcnNlRm9ybWF0OiBzdHJpbmcgfCBzdHJpbmdbXSk6IEx1eG9uRGF0ZVRpbWUgfCBudWxsIHtcbiAgICBjb25zdCBvcHRpb25zOiBMdXhvbkRhdGVUaW1lT3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMoKTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgLy8gVGhpcyBpcyBzY3Jld2luZyB0aGluZ3MgdXAgYXMgMDYyMDA1IHdvdWxkIGJlY29tZSAwNSAwNjAyXG4gICAgICAvLyBjb25zdCBpc284NjAxRGF0ZSA9IEx1eG9uRGF0ZVRpbWUuZnJvbUlTTyh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICAvL1xuICAgICAgLy8gaWYgKHRoaXMuaXNWYWxpZChpc284NjAxRGF0ZSkpIHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coaXNvODYwMURhdGUpO1xuICAgICAgLy8gICByZXR1cm4gaXNvODYwMURhdGU7XG4gICAgICAvLyB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdHMgPSBBcnJheS5pc0FycmF5KHBhcnNlRm9ybWF0KSA/IHBhcnNlRm9ybWF0IDogW3BhcnNlRm9ybWF0XTtcblxuICAgICAgaWYgKCFwYXJzZUZvcm1hdC5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0Zvcm1hdHMgYXJyYXkgbXVzdCBub3QgYmUgZW1wdHkuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGZvcm1hdHMpO1xuICAgICAgZm9yIChjb25zdCBmb3JtYXQgb2YgZm9ybWF0cykge1xuICAgICAgICBjb25zb2xlLmxvZyhmb3JtYXQpO1xuICAgICAgICBjb25zdCBmcm9tRm9ybWF0ID0gTHV4b25EYXRlVGltZS5mcm9tRm9ybWF0KHZhbHVlLCBmb3JtYXQsIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoZnJvbUZvcm1hdCkpIHtcbiAgICAgICAgICByZXR1cm4gZnJvbUZvcm1hdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCgpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIEx1eG9uRGF0ZVRpbWUuZnJvbU1pbGxpcyh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiBMdXhvbkRhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBMdXhvbkRhdGVUaW1lKSB7XG4gICAgICByZXR1cm4gTHV4b25EYXRlVGltZS5mcm9tTWlsbGlzKHZhbHVlLnRvTWlsbGlzKCksIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9ybWF0KGRhdGU6IEx1eG9uRGF0ZVRpbWUsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdMdXhvbkRhdGVBZGFwdGVyOiBDYW5ub3QgZm9ybWF0IGludmFsaWQgZGF0ZS4nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3VzZVVUQykge1xuICAgICAgcmV0dXJuIGRhdGUuc2V0TG9jYWxlKHRoaXMubG9jYWxlKS5zZXRab25lKCd1dGMnKS50b0Zvcm1hdChkaXNwbGF5Rm9ybWF0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRhdGUuc2V0TG9jYWxlKHRoaXMubG9jYWxlKS50b0Zvcm1hdChkaXNwbGF5Rm9ybWF0KTtcbiAgICB9XG4gIH1cblxuICBhZGRDYWxlbmRhclllYXJzKGRhdGU6IEx1eG9uRGF0ZVRpbWUsIHllYXJzOiBudW1iZXIpOiBMdXhvbkRhdGVUaW1lIHtcbiAgICByZXR1cm4gZGF0ZS5yZWNvbmZpZ3VyZSh0aGlzLl9nZXRPcHRpb25zKCkpLnBsdXMoeyB5ZWFycyB9KTtcbiAgfVxuXG4gIGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IEx1eG9uRGF0ZVRpbWUsIG1vbnRoczogbnVtYmVyKTogTHV4b25EYXRlVGltZSB7XG4gICAgcmV0dXJuIGRhdGUucmVjb25maWd1cmUodGhpcy5fZ2V0T3B0aW9ucygpKS5wbHVzKHsgbW9udGhzIH0pO1xuICB9XG5cbiAgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IEx1eG9uRGF0ZVRpbWUsIGRheXM6IG51bWJlcik6IEx1eG9uRGF0ZVRpbWUge1xuICAgIHJldHVybiBkYXRlLnJlY29uZmlndXJlKHRoaXMuX2dldE9wdGlvbnMoKSkucGx1cyh7IGRheXMgfSk7XG4gIH1cblxuICB0b0lzbzg2MDEoZGF0ZTogTHV4b25EYXRlVGltZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUudG9JU08oKSE7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZ2l2ZW4gdmFsdWUgaWYgZ2l2ZW4gYSB2YWxpZCBMdXhvbiBvciBudWxsLiBEZXNlcmlhbGl6ZXMgdmFsaWQgSVNPIDg2MDEgc3RyaW5nc1xuICAgKiAoaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMzMzkudHh0KSBhbmQgdmFsaWQgRGF0ZSBvYmplY3RzIGludG8gdmFsaWQgRGF0ZVRpbWUgYW5kIGVtcHR5XG4gICAqIHN0cmluZyBpbnRvIG51bGwuIFJldHVybnMgYW4gaW52YWxpZCBkYXRlIGZvciBhbGwgb3RoZXIgdmFsdWVzLlxuICAgKi9cbiAgb3ZlcnJpZGUgZGVzZXJpYWxpemUodmFsdWU6IGFueSk6IEx1eG9uRGF0ZVRpbWUgfCBudWxsIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0T3B0aW9ucygpO1xuICAgIGxldCBkYXRlOiBMdXhvbkRhdGVUaW1lIHwgdW5kZWZpbmVkO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGRhdGUgPSBMdXhvbkRhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGRhdGUgPSBMdXhvbkRhdGVUaW1lLmZyb21JU08odmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAoZGF0ZSAmJiB0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuZGVzZXJpYWxpemUodmFsdWUpO1xuICB9XG5cbiAgaXNEYXRlSW5zdGFuY2Uob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgTHV4b25EYXRlVGltZTtcbiAgfVxuXG4gIGlzVmFsaWQoZGF0ZTogTHV4b25EYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlLmlzVmFsaWQ7XG4gIH1cblxuICBpbnZhbGlkKCk6IEx1eG9uRGF0ZVRpbWUge1xuICAgIHJldHVybiBMdXhvbkRhdGVUaW1lLmludmFsaWQoJ0ludmFsaWQgTHV4b24gRGF0ZVRpbWUgb2JqZWN0LicpO1xuICB9XG5cbiAgc2V0VGltZShcbiAgICB0YXJnZXQ6IEx1eG9uRGF0ZVRpbWUsXG4gICAgaG91cnM6IG51bWJlcixcbiAgICBtaW51dGVzOiBudW1iZXIsXG4gICAgc2Vjb25kczogbnVtYmVyLFxuICApOiBMdXhvbkRhdGVUaW1lIHtcbiAgICAvL2lmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICBpZiAoaG91cnMgPCAwIHx8IGhvdXJzID4gMjMpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBob3VycyBcIiR7aG91cnN9XCIuIEhvdXJzIHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMy5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlcyA8IDAgfHwgbWludXRlcyA+IDU5KSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgbWludXRlcyBcIiR7bWludXRlc31cIi4gTWludXRlcyB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNTkuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgPCAwIHx8IHNlY29uZHMgPiA1OSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIHNlY29uZHMgXCIke3NlY29uZHN9XCIuIFNlY29uZHMgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDU5LmAsXG4gICAgICApO1xuICAgIH1cbiAgICAvL31cblxuICAgIHJldHVybiB0aGlzLmNsb25lKHRhcmdldCkuc2V0KHtcbiAgICAgIGhvdXI6IGhvdXJzLFxuICAgICAgbWludXRlOiBtaW51dGVzLFxuICAgICAgc2Vjb25kOiBzZWNvbmRzLFxuICAgICAgbWlsbGlzZWNvbmQ6IDAsXG4gICAgfSk7XG4gIH1cblxuICBnZXRIb3VycyhkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5ob3VyO1xuICB9XG5cbiAgZ2V0TWludXRlcyhkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5taW51dGU7XG4gIH1cblxuICBnZXRTZWNvbmRzKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLnNlY29uZDtcbiAgfVxuXG4gIHBhcnNlVGltZSh2YWx1ZTogYW55LCBwYXJzZUZvcm1hdDogc3RyaW5nIHwgc3RyaW5nW10pOiBMdXhvbkRhdGVUaW1lIHwgbnVsbCB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wYXJzZSh2YWx1ZSwgcGFyc2VGb3JtYXQpO1xuXG4gICAgaWYgKCghcmVzdWx0IHx8ICF0aGlzLmlzVmFsaWQocmVzdWx0KSkgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gSXQgc2VlbXMgbGlrZSBMdXhvbiBkb2Vzbid0IHdvcmsgd2VsbCBjcm9zcy1icm93c2VyIGZvciBzdHJpbmdzIHRoYXQgaGF2ZVxuICAgICAgLy8gYWRkaXRpb25hbCBjaGFyYWN0ZXJzIGFyb3VuZCB0aGUgdGltZS4gVHJ5IHBhcnNpbmcgd2l0aG91dCB0aG9zZSBjaGFyYWN0ZXJzLlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5wYXJzZSh2YWx1ZS5yZXBsYWNlKC9bXjAtOTooQU18UE0pXS9naSwgJycpLCBwYXJzZUZvcm1hdCkgfHwgcmVzdWx0XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhZGRTZWNvbmRzKGRhdGU6IEx1eG9uRGF0ZVRpbWUsIGFtb3VudDogbnVtYmVyKTogTHV4b25EYXRlVGltZSB7XG4gICAgcmV0dXJuIGRhdGUucmVjb25maWd1cmUodGhpcy5fZ2V0T3B0aW9ucygpKS5wbHVzKHsgc2Vjb25kczogYW1vdW50IH0pO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIG9wdGlvbnMgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIGNvbnN0cnVjdGluZyBhIG5ldyBgRGF0ZVRpbWVgIG9iamVjdC4gKi9cbiAgcHJpdmF0ZSBfZ2V0T3B0aW9ucygpOiBMdXhvbkRhdGVUaW1lT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHpvbmU6IHRoaXMuX3VzZVVUQyA/ICd1dGMnIDogdW5kZWZpbmVkLFxuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgIG91dHB1dENhbGVuZGFyOiB0aGlzLl9kZWZhdWx0T3V0cHV0Q2FsZW5kYXIsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/** InjectionToken for LuxonDateAdapter to configure options. */
|
|
3
|
+
export const MAT_LUXON_DATE_ADAPTER_OPTIONS = new InjectionToken('MAT_LUXON_DATE_ADAPTER_OPTIONS', {
|
|
4
|
+
providedIn: 'root',
|
|
5
|
+
factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY,
|
|
6
|
+
});
|
|
7
|
+
/** @docs-private */
|
|
8
|
+
export function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY() {
|
|
9
|
+
return {
|
|
10
|
+
useUtc: false,
|
|
11
|
+
firstDayOfWeek: 0,
|
|
12
|
+
defaultOutputCalendar: 'gregory',
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/** Creates an array and fills it with values. */
|
|
16
|
+
export function luxonRange(length, valueFunction) {
|
|
17
|
+
const valuesArray = Array(length);
|
|
18
|
+
for (let i = 0; i < length; i++) {
|
|
19
|
+
valuesArray[i] = valueFunction(i);
|
|
20
|
+
}
|
|
21
|
+
return valuesArray;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHV4b24udXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vc2hhcmVkL3NyYy9saWIvYWRhcHRlcnMvbHV4b24udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXVCL0MsZ0VBQWdFO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUN6QyxJQUFJLGNBQWMsQ0FDaEIsZ0NBQWdDLEVBQ2hDO0lBQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLHNDQUFzQztDQUNoRCxDQUNGLENBQUM7QUFFSixvQkFBb0I7QUFDcEIsTUFBTSxVQUFVLHNDQUFzQztJQUNwRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLEtBQUs7UUFDYixjQUFjLEVBQUUsQ0FBQztRQUNqQixxQkFBcUIsRUFBRSxTQUFTO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBRUQsaURBQWlEO0FBQ2pELE1BQU0sVUFBVSxVQUFVLENBQ3hCLE1BQWMsRUFDZCxhQUFtQztJQUVuQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWxlbmRhclN5c3RlbSBhcyBMdXhvbkNhbGVuZGFyU3lzdGVtIH0gZnJvbSAnbHV4b24vc3JjL21pc2MnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqIENvbmZpZ3VyYWJsZSBvcHRpb25zIGZvciB0aGUgYEx1eG9uRGF0ZUFkYXB0ZXJgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRMdXhvbkRhdGVBZGFwdGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUdXJucyB0aGUgdXNlIG9mIHV0YyBkYXRlcyBvbiBvciBvZmYuXG4gICAqIENoYW5naW5nIHRoaXMgd2lsbCBjaGFuZ2UgaG93IEFuZ3VsYXIgTWF0ZXJpYWwgY29tcG9uZW50cyBsaWtlIERhdGVQaWNrZXIgb3V0cHV0IGRhdGVzLlxuICAgKi9cbiAgdXNlVXRjOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBmaXJzdCBkYXkgb2Ygd2Vlay5cbiAgICogQ2hhbmdpbmcgdGhpcyB3aWxsIGNoYW5nZSBob3cgQW5ndWxhciBNYXRlcmlhbCBjb21wb25lbnRzIGxpa2UgRGF0ZVBpY2tlciBzaG93cyBzdGFydCBvZiB3ZWVrLlxuICAgKi9cbiAgZmlyc3REYXlPZldlZWs6IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgb3V0cHV0IENhbGVuZGFyLlxuICAgKiBDaGFuZ2luZyB0aGlzIHdpbGwgY2hhbmdlIGhvdyBBbmd1bGFyIE1hdGVyaWFsIGNvbXBvbmVudHMgbGlrZSBEYXRlUGlja2VyIG91dHB1dCBkYXRlcy5cbiAgICovXG4gIGRlZmF1bHRPdXRwdXRDYWxlbmRhcjogTHV4b25DYWxlbmRhclN5c3RlbTtcbn1cblxuLyoqIEluamVjdGlvblRva2VuIGZvciBMdXhvbkRhdGVBZGFwdGVyIHRvIGNvbmZpZ3VyZSBvcHRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OUyA9XG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxNYXRMdXhvbkRhdGVBZGFwdGVyT3B0aW9ucz4oXG4gICAgJ01BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OUycsXG4gICAge1xuICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgICAgZmFjdG9yeTogTUFUX0xVWE9OX0RBVEVfQURBUFRFUl9PUFRJT05TX0ZBQ1RPUlksXG4gICAgfSxcbiAgKTtcblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBNQVRfTFVYT05fREFURV9BREFQVEVSX09QVElPTlNfRkFDVE9SWSgpOiBNYXRMdXhvbkRhdGVBZGFwdGVyT3B0aW9ucyB7XG4gIHJldHVybiB7XG4gICAgdXNlVXRjOiBmYWxzZSxcbiAgICBmaXJzdERheU9mV2VlazogMCxcbiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI6ICdncmVnb3J5JyxcbiAgfTtcbn1cblxuLyoqIENyZWF0ZXMgYW4gYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdmFsdWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGx1eG9uUmFuZ2U8VD4oXG4gIGxlbmd0aDogbnVtYmVyLFxuICB2YWx1ZUZ1bmN0aW9uOiAoaW5kZXg6IG51bWJlcikgPT4gVCxcbik6IFRbXSB7XG4gIGNvbnN0IHZhbHVlc0FycmF5ID0gQXJyYXkobGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhbHVlc0FycmF5W2ldID0gdmFsdWVGdW5jdGlvbihpKTtcbiAgfVxuICByZXR1cm4gdmFsdWVzQXJyYXk7XG59XG4iXX0=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { NativeDateAdapter } from '@angular/material/core';
|
|
3
|
+
import { DateTime } from 'luxon';
|
|
4
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
+
import { ONEMRVA_MAT_NATIVE_DATE_FORMAT } from '../constants';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@ngx-translate/core";
|
|
8
|
+
export class OnemrvaNativeDateAdapter extends NativeDateAdapter {
|
|
9
|
+
constructor(translateService) {
|
|
10
|
+
super();
|
|
11
|
+
this.translateService = translateService;
|
|
12
|
+
this.destroyNotifier$ = new Subject();
|
|
13
|
+
this.localeChanges = new Subject();
|
|
14
|
+
this.setLocale(this.translateService.currentLang);
|
|
15
|
+
this.localeChanges.next(this);
|
|
16
|
+
if (this.translateService !== undefined) {
|
|
17
|
+
this.translateService.onLangChange
|
|
18
|
+
.pipe(takeUntil(this.destroyNotifier$))
|
|
19
|
+
.subscribe(({ lang }) => {
|
|
20
|
+
this.setLocale(lang);
|
|
21
|
+
this.localeChanges.next(this);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
format(date, formats) {
|
|
26
|
+
const dt = DateTime.fromJSDate(date);
|
|
27
|
+
return dt.toFormat(formats);
|
|
28
|
+
}
|
|
29
|
+
parse(value) {
|
|
30
|
+
const formats = ONEMRVA_MAT_NATIVE_DATE_FORMAT;
|
|
31
|
+
if (value && typeof value === 'string') {
|
|
32
|
+
value = value.replace(/\D/g, '/');
|
|
33
|
+
}
|
|
34
|
+
if (value === null || value === '') {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const dt = DateTime.fromFormat(value, formats.display.dateInput, {
|
|
38
|
+
locale: this.locale,
|
|
39
|
+
});
|
|
40
|
+
if (dt.isValid) {
|
|
41
|
+
return dt.toJSDate();
|
|
42
|
+
}
|
|
43
|
+
for (const format of formats.parse.dateInput) {
|
|
44
|
+
const parsed = DateTime.fromFormat(value, format, {
|
|
45
|
+
locale: this.locale,
|
|
46
|
+
});
|
|
47
|
+
if (parsed.isValid) {
|
|
48
|
+
return parsed.toJSDate();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return this.invalid();
|
|
52
|
+
}
|
|
53
|
+
getFirstDayOfWeek() {
|
|
54
|
+
return 1;
|
|
55
|
+
}
|
|
56
|
+
ngOnDestroy() {
|
|
57
|
+
this.destroyNotifier$.next();
|
|
58
|
+
this.destroyNotifier$.complete();
|
|
59
|
+
}
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: OnemrvaNativeDateAdapter, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
61
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: OnemrvaNativeDateAdapter }); }
|
|
62
|
+
}
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: OnemrvaNativeDateAdapter, decorators: [{
|
|
64
|
+
type: Injectable
|
|
65
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmRhdGUuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9zaGFyZWQvc3JjL2xpYi9hZGFwdGVycy9uYXRpdmUuZGF0ZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFrQixpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFHakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFHOUQsTUFBTSxPQUFPLHdCQUNYLFNBQVEsaUJBQWlCO0lBT3pCLFlBQW9CLGdCQUFrQztRQUNwRCxLQUFLLEVBQUUsQ0FBQztRQURVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFKOUMscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV0QyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFLMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVk7aUJBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3RDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVRLE1BQU0sQ0FBQyxJQUFVLEVBQUUsT0FBWTtRQUN0QyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVEsS0FBSyxDQUFDLEtBQVU7UUFDdkIsTUFBTSxPQUFPLEdBQUcsOEJBQThCLENBQUM7UUFDL0MsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQy9ELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQUM7UUFFSCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUNoRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDcEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVRLGlCQUFpQjtRQUN4QixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzhHQWpFVSx3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZUZvcm1hdHMsIE5hdGl2ZURhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPTkVNUlZBX01BVF9OQVRJVkVfREFURV9GT1JNQVQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT25lbXJ2YU5hdGl2ZURhdGVBZGFwdGVyXG4gIGV4dGVuZHMgTmF0aXZlRGF0ZUFkYXB0ZXJcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSBkZXN0cm95Tm90aWZpZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBvdmVycmlkZSBsb2NhbGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnNldExvY2FsZSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpO1xuICAgIHRoaXMubG9jYWxlQ2hhbmdlcy5uZXh0KHRoaXMpO1xuICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95Tm90aWZpZXIkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoeyBsYW5nIH0pID0+IHtcbiAgICAgICAgICB0aGlzLnNldExvY2FsZShsYW5nKTtcbiAgICAgICAgICB0aGlzLmxvY2FsZUNoYW5nZXMubmV4dCh0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgZm9ybWF0KGRhdGU6IERhdGUsIGZvcm1hdHM6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgZHQgPSBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGUpO1xuICAgIHJldHVybiBkdC50b0Zvcm1hdChmb3JtYXRzKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHBhcnNlKHZhbHVlOiBhbnkpOiBEYXRlIHwgbnVsbCB7XG4gICAgY29uc3QgZm9ybWF0cyA9IE9ORU1SVkFfTUFUX05BVElWRV9EQVRFX0ZPUk1BVDtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9cXEQvZywgJy8nKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkdCA9IERhdGVUaW1lLmZyb21Gb3JtYXQodmFsdWUsIGZvcm1hdHMuZGlzcGxheS5kYXRlSW5wdXQsIHtcbiAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgfSk7XG5cbiAgICBpZiAoZHQuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIGR0LnRvSlNEYXRlKCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmb3JtYXQgb2YgZm9ybWF0cy5wYXJzZS5kYXRlSW5wdXQpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IERhdGVUaW1lLmZyb21Gb3JtYXQodmFsdWUsIGZvcm1hdCwge1xuICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgfSk7XG4gICAgICBpZiAocGFyc2VkLmlzVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlZC50b0pTRGF0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmludmFsaWQoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3lOb3RpZmllciQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveU5vdGlmaWVyJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { provideLuxonDateAdapter } from '@angular/material-luxon-adapter';
|
|
2
1
|
import { ONEMRVA_MAT_LUXON_DATE_FORMATS } from '../constants';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
3
|
+
import { OnemrvaLuxonDateAdapter } from '../adapters';
|
|
5
4
|
export function onemrvaDateLuxonProvider() {
|
|
6
5
|
return [
|
|
7
6
|
{
|
|
8
|
-
provide:
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
provide: MAT_DATE_FORMATS,
|
|
8
|
+
useValue: ONEMRVA_MAT_LUXON_DATE_FORMATS,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
provide: DateAdapter,
|
|
12
|
+
useClass: OnemrvaLuxonDateAdapter,
|
|
11
13
|
},
|
|
12
|
-
provideLuxonDateAdapter(ONEMRVA_MAT_LUXON_DATE_FORMATS),
|
|
13
14
|
];
|
|
14
15
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS5kYXRlLmx1eG9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL3NoYXJlZC9zcmMvbGliL3Byb3ZpZGVycy9vbmVtcnZhLmRhdGUubHV4b24ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEQsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFFBQVEsRUFBRSw4QkFBOEI7U0FDekM7UUFDRDtZQUNFLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLFFBQVEsRUFBRSx1QkFBdUI7U0FDbEM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPTkVNUlZBX01BVF9MVVhPTl9EQVRFX0ZPUk1BVFMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE9uZW1ydmFMdXhvbkRhdGVBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gb25lbXJ2YURhdGVMdXhvblByb3ZpZGVyKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsXG4gICAgICB1c2VWYWx1ZTogT05FTVJWQV9NQVRfTFVYT05fREFURV9GT1JNQVRTLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXG4gICAgICB1c2VDbGFzczogT25lbXJ2YUx1eG9uRGF0ZUFkYXB0ZXIsXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { provideLuxonDateAdapter } from '@angular/material-luxon-adapter';
|
|
2
1
|
import { ONEMRVA_MAT_LUXON_YEAR_MONTH_FORMATS } from '../constants';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
3
|
+
import { OnemrvaLuxonDateAdapter } from '../adapters';
|
|
5
4
|
export function onemrvaDateLuxonYearMonthProvider() {
|
|
6
5
|
return [
|
|
7
6
|
{
|
|
8
|
-
provide:
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
provide: MAT_DATE_FORMATS,
|
|
8
|
+
useValue: ONEMRVA_MAT_LUXON_YEAR_MONTH_FORMATS,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
provide: DateAdapter,
|
|
12
|
+
useClass: OnemrvaLuxonDateAdapter,
|
|
11
13
|
},
|
|
12
|
-
provideLuxonDateAdapter(ONEMRVA_MAT_LUXON_YEAR_MONTH_FORMATS),
|
|
13
14
|
];
|
|
14
15
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS5kYXRlLmx1eG9uLnllYXIubW9udGgucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vc2hhcmVkL3NyYy9saWIvcHJvdmlkZXJzL29uZW1ydmEuZGF0ZS5sdXhvbi55ZWFyLm1vbnRoLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE1BQU0sVUFBVSxpQ0FBaUM7SUFDL0MsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixRQUFRLEVBQUUsb0NBQW9DO1NBQy9DO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsV0FBVztZQUNwQixRQUFRLEVBQUUsdUJBQXVCO1NBQ2xDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT05FTVJWQV9NQVRfTFVYT05fWUVBUl9NT05USF9GT1JNQVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBPbmVtcnZhTHV4b25EYXRlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzJztcblxuZXhwb3J0IGZ1bmN0aW9uIG9uZW1ydmFEYXRlTHV4b25ZZWFyTW9udGhQcm92aWRlcigpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLFxuICAgICAgdXNlVmFsdWU6IE9ORU1SVkFfTUFUX0xVWE9OX1lFQVJfTU9OVEhfRk9STUFUUyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgdXNlQ2xhc3M6IE9uZW1ydmFMdXhvbkRhdGVBZGFwdGVyLFxuICAgIH0sXG4gIF07XG59XG4iXX0=
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
1
|
+
import { MAT_DATE_FORMATS, DateAdapter } from '@angular/material/core';
|
|
3
2
|
import { ONEMRVA_MAT_NATIVE_DATE_FORMAT } from '../constants';
|
|
4
|
-
import {
|
|
3
|
+
import { OnemrvaNativeDateAdapter } from '../adapters';
|
|
5
4
|
export function onemrvaDateNativeProvider() {
|
|
6
5
|
return [
|
|
7
|
-
{
|
|
8
|
-
provide: MAT_DATE_LOCALE,
|
|
9
|
-
useFactory: (translateService) => translateService.currentLang,
|
|
10
|
-
deps: [TranslateService],
|
|
11
|
-
},
|
|
12
6
|
{
|
|
13
7
|
provide: MAT_DATE_FORMATS,
|
|
14
8
|
useValue: ONEMRVA_MAT_NATIVE_DATE_FORMAT,
|
|
15
9
|
},
|
|
16
10
|
{
|
|
17
11
|
provide: DateAdapter,
|
|
18
|
-
useClass:
|
|
12
|
+
useClass: OnemrvaNativeDateAdapter,
|
|
19
13
|
},
|
|
20
14
|
];
|
|
21
15
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS5kYXRlLm5hdGl2ZS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9zaGFyZWQvc3JjL2xpYi9wcm92aWRlcnMvb25lbXJ2YS5kYXRlLm5hdGl2ZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2RCxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsUUFBUSxFQUFFLDhCQUE4QjtTQUN6QztRQUNEO1lBQ0UsT0FBTyxFQUFFLFdBQVc7WUFDcEIsUUFBUSxFQUFFLHdCQUF3QjtTQUNuQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9EQVRFX0ZPUk1BVFMsIERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBPTkVNUlZBX01BVF9OQVRJVkVfREFURV9GT1JNQVQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT25lbXJ2YU5hdGl2ZURhdGVBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gb25lbXJ2YURhdGVOYXRpdmVQcm92aWRlcigpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLFxuICAgICAgdXNlVmFsdWU6IE9ORU1SVkFfTUFUX05BVElWRV9EQVRFX0ZPUk1BVCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgdXNlQ2xhc3M6IE9uZW1ydmFOYXRpdmVEYXRlQWRhcHRlcixcbiAgICB9LFxuICBdO1xufVxuIl19
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
1
|
+
import { MAT_DATE_FORMATS, DateAdapter } from '@angular/material/core';
|
|
3
2
|
import { ONEMRVA_MAT_NATIVE_YEAR_MONTH_FORMAT } from '../constants';
|
|
4
|
-
import {
|
|
3
|
+
import { OnemrvaNativeDateAdapter } from '../adapters';
|
|
5
4
|
export function onemrvaDateNativeYearMonthProvider() {
|
|
6
5
|
return [
|
|
7
|
-
{
|
|
8
|
-
provide: MAT_DATE_LOCALE,
|
|
9
|
-
useFactory: (translateService) => translateService.currentLang,
|
|
10
|
-
deps: [TranslateService],
|
|
11
|
-
},
|
|
12
6
|
{
|
|
13
7
|
provide: MAT_DATE_FORMATS,
|
|
14
8
|
useValue: ONEMRVA_MAT_NATIVE_YEAR_MONTH_FORMAT,
|
|
15
9
|
},
|
|
16
10
|
{
|
|
17
11
|
provide: DateAdapter,
|
|
18
|
-
|
|
12
|
+
useClass: OnemrvaNativeDateAdapter,
|
|
19
13
|
},
|
|
20
14
|
];
|
|
21
15
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS5kYXRlLm5hdGl2ZS55ZWFyLm1vbnRoLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL3NoYXJlZC9zcmMvbGliL3Byb3ZpZGVycy9vbmVtcnZhLmRhdGUubmF0aXZlLnllYXIubW9udGgucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkQsTUFBTSxVQUFVLGtDQUFrQztJQUNoRCxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFFBQVEsRUFBRSxvQ0FBb0M7U0FDL0M7UUFDRDtZQUNFLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLFFBQVEsRUFBRSx3QkFBd0I7U0FDbkM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfREFURV9GT1JNQVRTLCBEYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgT05FTVJWQV9NQVRfTkFUSVZFX1lFQVJfTU9OVEhfRk9STUFUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9uZW1ydmFOYXRpdmVEYXRlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzJztcblxuZXhwb3J0IGZ1bmN0aW9uIG9uZW1ydmFEYXRlTmF0aXZlWWVhck1vbnRoUHJvdmlkZXIoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUyxcbiAgICAgIHVzZVZhbHVlOiBPTkVNUlZBX01BVF9OQVRJVkVfWUVBUl9NT05USF9GT1JNQVQsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICAgIHVzZUNsYXNzOiBPbmVtcnZhTmF0aXZlRGF0ZUFkYXB0ZXIsXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
|