@acorex/core 18.16.0-next.9 → 18.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-core-config.mjs +3 -3
- package/fesm2022/acorex-core-date-time.mjs +23 -20
- package/fesm2022/acorex-core-date-time.mjs.map +1 -1
- package/fesm2022/acorex-core-events.mjs +3 -3
- package/fesm2022/acorex-core-file.mjs +10 -10
- package/fesm2022/acorex-core-format.mjs +17 -16
- package/fesm2022/acorex-core-format.mjs.map +1 -1
- package/fesm2022/acorex-core-image.mjs +3 -3
- package/fesm2022/acorex-core-network.mjs +3 -3
- package/fesm2022/acorex-core-pipes.mjs +3 -3
- package/fesm2022/acorex-core-platform.mjs +3 -3
- package/fesm2022/acorex-core-storage.mjs +9 -9
- package/fesm2022/acorex-core-translation.mjs +27 -27
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/fesm2022/acorex-core-utils.mjs +12 -11
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/fesm2022/acorex-core-validation.mjs +40 -40
- package/package.json +3 -37
- package/esm2022/acorex-core.mjs +0 -5
- package/esm2022/common/acorex-core-common.mjs +0 -5
- package/esm2022/common/countries/countries.data.mjs +0 -2640
- package/esm2022/common/countries/country.mjs +0 -2
- package/esm2022/common/index.mjs +0 -3
- package/esm2022/config/acorex-core-config.mjs +0 -5
- package/esm2022/config/index.mjs +0 -3
- package/esm2022/config/lib/configs.mjs +0 -7
- package/esm2022/config/lib/configs.service.mjs +0 -27
- package/esm2022/date-time/acorex-core-date-time.mjs +0 -5
- package/esm2022/date-time/index.mjs +0 -11
- package/esm2022/date-time/lib/calendar.service.mjs +0 -93
- package/esm2022/date-time/lib/dateTime.config.mjs +0 -50
- package/esm2022/date-time/lib/datetime.class.mjs +0 -337
- package/esm2022/date-time/lib/datetime.module.mjs +0 -28
- package/esm2022/date-time/lib/datetime.pipe.mjs +0 -29
- package/esm2022/date-time/lib/formatters/datetime-formatter.mjs +0 -38
- package/esm2022/date-time/lib/formatters/time-duration-formatter.mjs +0 -52
- package/esm2022/date-time/lib/formatters/timeleft-formatter.mjs +0 -90
- package/esm2022/date-time/lib/georgian.calendar.mjs +0 -198
- package/esm2022/date-time/lib/holidays.loader.mjs +0 -13
- package/esm2022/date-time/lib/jalali.calendar.mjs +0 -417
- package/esm2022/events/acorex-core-events.mjs +0 -5
- package/esm2022/events/index.mjs +0 -3
- package/esm2022/events/lib/event.service.mjs +0 -43
- package/esm2022/events/lib/event.type.mjs +0 -6
- package/esm2022/file/acorex-core-file.mjs +0 -5
- package/esm2022/file/index.mjs +0 -4
- package/esm2022/file/lib/file-size-formatter.mjs +0 -24
- package/esm2022/file/lib/file.module.mjs +0 -20
- package/esm2022/file/lib/file.service.mjs +0 -77
- package/esm2022/format/acorex-core-format.mjs +0 -5
- package/esm2022/format/index.mjs +0 -8
- package/esm2022/format/lib/format.config.mjs +0 -3
- package/esm2022/format/lib/format.module.mjs +0 -64
- package/esm2022/format/lib/format.pipe.mjs +0 -33
- package/esm2022/format/lib/format.service.mjs +0 -93
- package/esm2022/format/lib/format.types.mjs +0 -2
- package/esm2022/format/lib/formatters/number-formatter.mjs +0 -74
- package/esm2022/format/lib/formatters/string-formatter.mjs +0 -17
- package/esm2022/image/acorex-core-image.mjs +0 -5
- package/esm2022/image/index.mjs +0 -2
- package/esm2022/image/lib/image.service.mjs +0 -48
- package/esm2022/index.mjs +0 -2
- package/esm2022/memorize/acorex-core-memorize.mjs +0 -5
- package/esm2022/memorize/index.mjs +0 -2
- package/esm2022/memorize/lib/memorize.decorator.mjs +0 -19
- package/esm2022/network/acorex-core-network.mjs +0 -5
- package/esm2022/network/index.mjs +0 -5
- package/esm2022/network/lib/download-task.mjs +0 -47
- package/esm2022/network/lib/network.service.mjs +0 -85
- package/esm2022/network/lib/network.types.mjs +0 -16
- package/esm2022/network/lib/upload-task.mjs +0 -81
- package/esm2022/pipes/acorex-core-pipes.mjs +0 -5
- package/esm2022/pipes/index.mjs +0 -2
- package/esm2022/pipes/lib/safe/safe.pipe.mjs +0 -38
- package/esm2022/platform/acorex-core-platform.mjs +0 -5
- package/esm2022/platform/index.mjs +0 -2
- package/esm2022/platform/lib/platform.service.mjs +0 -293
- package/esm2022/storage/acorex-core-storage.mjs +0 -5
- package/esm2022/storage/cookie-storage.service.mjs +0 -196
- package/esm2022/storage/index.mjs +0 -5
- package/esm2022/storage/local-storage.service.mjs +0 -59
- package/esm2022/storage/session-storage.service.mjs +0 -35
- package/esm2022/storage/storage.interface.mjs +0 -2
- package/esm2022/translation/acorex-core-translation.mjs +0 -5
- package/esm2022/translation/index.mjs +0 -9
- package/esm2022/translation/lib/translation-scope.resolver.mjs +0 -11
- package/esm2022/translation/lib/translation.config.mjs +0 -20
- package/esm2022/translation/lib/translation.loader.mjs +0 -14
- package/esm2022/translation/lib/translation.module.mjs +0 -40
- package/esm2022/translation/lib/translation.service.mjs +0 -215
- package/esm2022/translation/lib/translation.types.mjs +0 -2
- package/esm2022/translation/lib/translator.directive.mjs +0 -28
- package/esm2022/translation/lib/translator.pipe.mjs +0 -23
- package/esm2022/types/acorex-core-types.mjs +0 -5
- package/esm2022/types/index.mjs +0 -2
- package/esm2022/utils/acorex-core-utils.mjs +0 -5
- package/esm2022/utils/index.mjs +0 -8
- package/esm2022/utils/lib/auto-unsubscribe.mjs +0 -36
- package/esm2022/utils/lib/color-util.mjs +0 -136
- package/esm2022/utils/lib/drawing-util.mjs +0 -32
- package/esm2022/utils/lib/html-util.mjs +0 -54
- package/esm2022/utils/lib/resize.directive.mjs +0 -124
- package/esm2022/utils/lib/string-util.mjs +0 -19
- package/esm2022/utils/lib/utils.module.mjs +0 -18
- package/esm2022/validation/acorex-core-validation.mjs +0 -5
- package/esm2022/validation/index.mjs +0 -18
- package/esm2022/validation/lib/rules/between-rule.mjs +0 -31
- package/esm2022/validation/lib/rules/callback-rule.mjs +0 -36
- package/esm2022/validation/lib/rules/equal-rule.mjs +0 -26
- package/esm2022/validation/lib/rules/greater-than.mjs +0 -25
- package/esm2022/validation/lib/rules/length-rule.mjs +0 -23
- package/esm2022/validation/lib/rules/less-than-rule.mjs +0 -25
- package/esm2022/validation/lib/rules/maxlength-rule.mjs +0 -24
- package/esm2022/validation/lib/rules/minlength-rule.mjs +0 -23
- package/esm2022/validation/lib/rules/regex-rule.mjs +0 -46
- package/esm2022/validation/lib/rules/required-rule.mjs +0 -39
- package/esm2022/validation/lib/validation.config.mjs +0 -33
- package/esm2022/validation/lib/validation.module.mjs +0 -84
- package/esm2022/validation/lib/validation.service.mjs +0 -98
- package/esm2022/validation/lib/validation.types.mjs +0 -3
@@ -1,337 +0,0 @@
|
|
1
|
-
import { isBrowser } from '@acorex/core/platform';
|
2
|
-
import { translateSync } from '@acorex/core/translation';
|
3
|
-
import { defaults, orderBy } from 'lodash-es';
|
4
|
-
export class AXCalendar {
|
5
|
-
/**
|
6
|
-
* @ignore
|
7
|
-
*/
|
8
|
-
constructor(config) {
|
9
|
-
this._config = config;
|
10
|
-
}
|
11
|
-
get weekend() {
|
12
|
-
return this._config.weekend;
|
13
|
-
}
|
14
|
-
get formats() {
|
15
|
-
return this._config.formats;
|
16
|
-
}
|
17
|
-
get weekdays() {
|
18
|
-
return this._config.weekdays;
|
19
|
-
}
|
20
|
-
}
|
21
|
-
export class AXDateTime {
|
22
|
-
get date() {
|
23
|
-
return this._date;
|
24
|
-
}
|
25
|
-
get calendar() {
|
26
|
-
return this._calendar;
|
27
|
-
}
|
28
|
-
constructor(value, calendar) {
|
29
|
-
//TODO: remove unused items
|
30
|
-
this._formatKeys = {
|
31
|
-
ss: () => this.pad(this.date.getSeconds(), 2),
|
32
|
-
s: () => this.date.getSeconds().toString(),
|
33
|
-
//
|
34
|
-
dd: () => this.pad(this.calendar.dayOfMonth(this.date), 2),
|
35
|
-
DD: () => this.pad(this.calendar.dayOfMonth(this.date), 2),
|
36
|
-
d: () => this.calendar.dayOfMonth(this.date).toString(),
|
37
|
-
//
|
38
|
-
mm: () => this.pad(this.date.getMinutes(), 2),
|
39
|
-
m: () => this.date.getMinutes().toString(),
|
40
|
-
//
|
41
|
-
MMMM: () => translateSync(`dateTime.months.${this.calendar.name()}.long.${this.calendar.monthOfYear(this.date) - 1}`),
|
42
|
-
MMM: () => translateSync(`dateTime.months.${this.calendar.name()}.short.${this.calendar.monthOfYear(this.date) - 1}`),
|
43
|
-
MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),
|
44
|
-
M: () => this.calendar.monthOfYear(this.date),
|
45
|
-
//
|
46
|
-
E: () => translateSync(`dateTime.weekdays.long.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),
|
47
|
-
DDD: () => translateSync(`dateTime.weekdays.short.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),
|
48
|
-
DDDD: () => this._formatKeys['E'](),
|
49
|
-
//
|
50
|
-
yyyy: () => this.pad(this.calendar.year(this.date), 4),
|
51
|
-
YYYY: () => this.pad(this.calendar.year(this.date), 4),
|
52
|
-
yy: () => this.pad(this.calendar.year(this.date), 4).substring(2),
|
53
|
-
YY: () => this.pad(this.calendar.year(this.date), 4).substring(2),
|
54
|
-
//
|
55
|
-
HH: () => this.pad(this.date.getHours(), 2),
|
56
|
-
H: () => this.date.getHours().toString(),
|
57
|
-
//
|
58
|
-
hh: () => this.pad(this.date.getHours() % 12 || 12, 2),
|
59
|
-
h: () => (this.date.getHours() % 12 || 12).toString(),
|
60
|
-
//
|
61
|
-
A: () => (this.date.getHours() < 12 ? 'am' : 'pm'),
|
62
|
-
a: () => (this.date.getHours() < 12 ? 'am' : 'pm'),
|
63
|
-
date: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortDate')),
|
64
|
-
shortDate: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortDate')),
|
65
|
-
longDate: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'longDate')),
|
66
|
-
//
|
67
|
-
shortTime: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortTime')),
|
68
|
-
time: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortTime')),
|
69
|
-
longTime: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'longTime')),
|
70
|
-
//
|
71
|
-
datetime: (options) => this.format('date time', { locale: options.locale }),
|
72
|
-
};
|
73
|
-
this._language = () => (isBrowser() ? navigator.language : 'en-GB');
|
74
|
-
this._calendar = calendar;
|
75
|
-
this._date = value;
|
76
|
-
}
|
77
|
-
clone() {
|
78
|
-
return new AXDateTime(this.date, this.calendar);
|
79
|
-
}
|
80
|
-
get dayOfMonth() {
|
81
|
-
return this._calendar.dayOfMonth(this.date);
|
82
|
-
}
|
83
|
-
get dayOfYear() {
|
84
|
-
return this._calendar.dayOfYear(this.date);
|
85
|
-
}
|
86
|
-
get dayOfWeek() {
|
87
|
-
return this._calendar.dayOfWeek(this.date);
|
88
|
-
}
|
89
|
-
get hour() {
|
90
|
-
return this._date.getHours();
|
91
|
-
}
|
92
|
-
get minute() {
|
93
|
-
return this._date.getMinutes();
|
94
|
-
}
|
95
|
-
get second() {
|
96
|
-
return this._date.getSeconds();
|
97
|
-
}
|
98
|
-
get year() {
|
99
|
-
return this._calendar.year(this.date);
|
100
|
-
}
|
101
|
-
get monthOfYear() {
|
102
|
-
return this._calendar.monthOfYear(this.date);
|
103
|
-
}
|
104
|
-
get weekOfYear() {
|
105
|
-
return this._calendar.weekOfYear(this.date);
|
106
|
-
}
|
107
|
-
get month() {
|
108
|
-
return new AXCalendarMonth(this);
|
109
|
-
}
|
110
|
-
add(unit, amount) {
|
111
|
-
return this._calendar.add(this.date, unit, amount);
|
112
|
-
}
|
113
|
-
set(unit = 'day', value) {
|
114
|
-
return this._calendar.set(this.date, unit, value);
|
115
|
-
}
|
116
|
-
duration(end) {
|
117
|
-
const date = end instanceof AXDateTime ? end.date : end;
|
118
|
-
const val = new AXDateTime(date, this.calendar);
|
119
|
-
const range = new AXDateTimeRange(this, val);
|
120
|
-
return range.duration();
|
121
|
-
}
|
122
|
-
startOf(unit = 'day') {
|
123
|
-
return this._calendar.startOf(this.date, unit);
|
124
|
-
}
|
125
|
-
endOf(unit = 'day') {
|
126
|
-
return this._calendar.endOf(this.date, unit);
|
127
|
-
}
|
128
|
-
format(format = this.getDateTimeFormatByLocale(this._language(), 'shortDate'), options) {
|
129
|
-
const effectiveOptions = defaults({}, options, {
|
130
|
-
locale: this._language(),
|
131
|
-
});
|
132
|
-
const re = new RegExp(orderBy(Object.keys(this._formatKeys), (c) => c.length, ['desc']).join('|'), 'gi');
|
133
|
-
return format.replace(re, (matched) => {
|
134
|
-
const f = this._formatKeys[matched];
|
135
|
-
const r = f(effectiveOptions);
|
136
|
-
return r;
|
137
|
-
});
|
138
|
-
}
|
139
|
-
getDateTimeFormatByLocale(locale, style) {
|
140
|
-
let options = {};
|
141
|
-
switch (style) {
|
142
|
-
case 'shortDate': // Year, Month, Day
|
143
|
-
options = { year: 'numeric', month: '2-digit', day: '2-digit' };
|
144
|
-
break;
|
145
|
-
case 'longDate': // Weekday, Month name, Day, Year
|
146
|
-
options = {
|
147
|
-
weekday: 'long',
|
148
|
-
year: 'numeric',
|
149
|
-
month: 'long',
|
150
|
-
day: 'numeric',
|
151
|
-
};
|
152
|
-
break;
|
153
|
-
case 'shortTime': // Hour, Minute
|
154
|
-
options = { hour: '2-digit', minute: '2-digit', hour12: false };
|
155
|
-
break;
|
156
|
-
case 'longTime': // Hour, Minute, Second
|
157
|
-
options = {
|
158
|
-
hour: '2-digit',
|
159
|
-
minute: '2-digit',
|
160
|
-
second: '2-digit',
|
161
|
-
hour12: false,
|
162
|
-
};
|
163
|
-
break;
|
164
|
-
}
|
165
|
-
const formatter = new Intl.DateTimeFormat(locale, options);
|
166
|
-
// Get parts of the date and/or time
|
167
|
-
const parts = formatter.formatToParts(new Date());
|
168
|
-
// Map parts to their respective format
|
169
|
-
const formatMap = {
|
170
|
-
day: 'dd',
|
171
|
-
month: style == 'longDate' ? 'MMMM' : 'MM',
|
172
|
-
year: 'yyyy',
|
173
|
-
hour: 'HH',
|
174
|
-
minute: 'mm',
|
175
|
-
second: 'ss',
|
176
|
-
weekday: 'E',
|
177
|
-
literal: '',
|
178
|
-
};
|
179
|
-
// Construct the date and/or time format string
|
180
|
-
return parts
|
181
|
-
.map((part) => {
|
182
|
-
if (part.type === 'literal') {
|
183
|
-
// Use the literal part directly as separator
|
184
|
-
return part.value;
|
185
|
-
}
|
186
|
-
else {
|
187
|
-
return formatMap[part.type] || part.value;
|
188
|
-
}
|
189
|
-
})
|
190
|
-
.join('');
|
191
|
-
}
|
192
|
-
pad(n, width, z = '0') {
|
193
|
-
n = n + '';
|
194
|
-
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
|
195
|
-
}
|
196
|
-
equal(value, unit = 'day') {
|
197
|
-
return this.compare(value, unit) == 0;
|
198
|
-
}
|
199
|
-
compare(value, unit = 'day') {
|
200
|
-
const date = value instanceof AXDateTime ? value.date : value;
|
201
|
-
const val = new AXDateTime(date, this.calendar);
|
202
|
-
const func = (v1, v2) => {
|
203
|
-
if (v1 == v2) {
|
204
|
-
return 0;
|
205
|
-
}
|
206
|
-
else if (v1 > v2) {
|
207
|
-
return 1;
|
208
|
-
}
|
209
|
-
else {
|
210
|
-
return -1;
|
211
|
-
}
|
212
|
-
};
|
213
|
-
let p = 0;
|
214
|
-
switch (unit) {
|
215
|
-
case 'year':
|
216
|
-
return func(this.year, val.year);
|
217
|
-
case 'week':
|
218
|
-
p = this.compare(val, 'year');
|
219
|
-
return p == 0 ? func(this.weekOfYear, val.weekOfYear) : p;
|
220
|
-
case 'month':
|
221
|
-
p = this.compare(val, 'year');
|
222
|
-
return p == 0 ? func(this.monthOfYear, val.monthOfYear) : p;
|
223
|
-
case 'day':
|
224
|
-
p = this.compare(val, 'year');
|
225
|
-
return p == 0 ? func(this.dayOfYear, val.dayOfYear) : p;
|
226
|
-
case 'hour':
|
227
|
-
p = this.compare(val, 'day');
|
228
|
-
return p == 0 ? func(this.hour, val.hour) : p;
|
229
|
-
case 'minute':
|
230
|
-
p = this.compare(val, 'hour');
|
231
|
-
return p == 0 ? func(this.minute, val.minute) : p;
|
232
|
-
case 'second':
|
233
|
-
p = this.compare(val, 'minute');
|
234
|
-
return p == 0 ? func(this.second, val.second) : p;
|
235
|
-
default:
|
236
|
-
return func(this.date.getTime(), val.date.getTime());
|
237
|
-
}
|
238
|
-
}
|
239
|
-
}
|
240
|
-
export class AXCalendarMonth {
|
241
|
-
get range() {
|
242
|
-
return this._range;
|
243
|
-
}
|
244
|
-
set range(v) {
|
245
|
-
this._range = v;
|
246
|
-
}
|
247
|
-
get totalDays() {
|
248
|
-
return this.range.endTime.dayOfMonth;
|
249
|
-
}
|
250
|
-
constructor(date) {
|
251
|
-
this.index = date.date.getMonth();
|
252
|
-
this.name = date.format('MMMM');
|
253
|
-
this.range = new AXDateTimeRange(new AXDateTime(date.startOf('month').date, date.calendar), new AXDateTime(date.endOf('month').date, date.calendar));
|
254
|
-
}
|
255
|
-
}
|
256
|
-
export class AXDateTimeRange {
|
257
|
-
get startTime() {
|
258
|
-
return this._startTime;
|
259
|
-
}
|
260
|
-
get endTime() {
|
261
|
-
return this._endTime;
|
262
|
-
}
|
263
|
-
constructor(startTime, endTime) {
|
264
|
-
this._startTime = startTime;
|
265
|
-
this._endTime = endTime;
|
266
|
-
}
|
267
|
-
duration() {
|
268
|
-
const result = {
|
269
|
-
miliseconds: 0,
|
270
|
-
seconds: 0,
|
271
|
-
minutes: 0,
|
272
|
-
hours: 0,
|
273
|
-
days: 0,
|
274
|
-
months: 0,
|
275
|
-
years: 0,
|
276
|
-
total: {
|
277
|
-
miliseconds: 0,
|
278
|
-
seconds: 0,
|
279
|
-
minutes: 0,
|
280
|
-
hours: 0,
|
281
|
-
days: 0,
|
282
|
-
weeks: 0,
|
283
|
-
months: 0,
|
284
|
-
years: 0,
|
285
|
-
},
|
286
|
-
};
|
287
|
-
const one_second = 1000;
|
288
|
-
const one_min = one_second * 60;
|
289
|
-
const one_hour = one_min * 60;
|
290
|
-
const one_day = one_hour * 24;
|
291
|
-
const one_week = one_day * 7;
|
292
|
-
const one_year = 365.25 * one_day;
|
293
|
-
const one_month = one_year / 12;
|
294
|
-
const startTime = this._startTime.date.getTime();
|
295
|
-
const endTime = this._endTime.date.getTime();
|
296
|
-
const diff = Math.abs(endTime - startTime);
|
297
|
-
//
|
298
|
-
result.total.miliseconds = diff;
|
299
|
-
result.total.seconds = Number((diff / one_second).toFixed(2));
|
300
|
-
result.total.minutes = Number((diff / one_min).toFixed(2));
|
301
|
-
result.total.hours = Number((diff / one_hour).toFixed(2));
|
302
|
-
result.total.days = Number((diff / one_day).toFixed(2));
|
303
|
-
result.total.weeks = Number((diff / one_week).toFixed(2));
|
304
|
-
//
|
305
|
-
// let months = (this.endTime.year - this.startTime.year) * 12;
|
306
|
-
// months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;
|
307
|
-
// if (this.endTime.dayOfYear < this.startTime.dayOfYear) {
|
308
|
-
// months--;
|
309
|
-
// }
|
310
|
-
// result.total.months = Math.abs(months);
|
311
|
-
// TODO: review
|
312
|
-
result.total.months = Number((diff / one_month).toFixed(2));
|
313
|
-
result.total.years = Number((diff / one_year).toFixed(2));
|
314
|
-
//
|
315
|
-
result.miliseconds = result.total.miliseconds % 1000;
|
316
|
-
result.seconds = Number((result.total.seconds % 60).toFixed(0));
|
317
|
-
result.minutes = Number((result.total.minutes % 60).toFixed(0));
|
318
|
-
result.hours = Number((result.total.hours % 24).toFixed(0));
|
319
|
-
// TODO: review
|
320
|
-
result.days = Number((result.total.days % 30.4).toFixed(0));
|
321
|
-
result.months = Number((result.total.months % 12).toFixed(0));
|
322
|
-
result.years = Number(result.total.years.toFixed(0));
|
323
|
-
return result;
|
324
|
-
}
|
325
|
-
enumurate(unit = 'day', amount = 1) {
|
326
|
-
const result = [];
|
327
|
-
let item = this._startTime.clone();
|
328
|
-
while (item.compare(this._endTime, unit) < 1) {
|
329
|
-
if (!result.some((c) => c.equal(item, unit))) {
|
330
|
-
result.push(item);
|
331
|
-
}
|
332
|
-
item = item.add(unit, amount);
|
333
|
-
}
|
334
|
-
return result;
|
335
|
-
}
|
336
|
-
}
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZS10aW1lL3NyYy9saWIvZGF0ZXRpbWUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQXNEOUMsTUFBTSxPQUFnQixVQUFVO0lBRzlCOztPQUVHO0lBQ0gsWUFBWSxNQUF3QjtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0NBMkJGO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFHckIsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVksS0FBVyxFQUFFLFFBQW9CO1FBd0U3QywyQkFBMkI7UUFDbkIsZ0JBQVcsR0FBRztZQUNwQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDMUMsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUQsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRCxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN2RCxFQUFFO1lBQ0YsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzFDLEVBQUU7WUFDRixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLG1CQUFtQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNySCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLG1CQUFtQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNySCxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNELENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdDLEVBQUU7WUFDRixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLDBCQUEwQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsSCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLDJCQUEyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNySCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuQyxFQUFFO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0RCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLEVBQUU7WUFDRixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDeEMsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3JELEVBQUU7WUFDRixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbEQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2xELElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFF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c0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7IHRyYW5zbGF0ZVN5bmMgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgZGVmYXVsdHMsIG9yZGVyQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgdHlwZSBUaW1lVW5pdCA9ICdtcycgfCAnc2Vjb25kJyB8ICdtaW51dGUnIHwgJ2hvdXInIHwgJ2RheScgfCAnbW9udGgnIHwgJ3llYXInIHwgJ3dlZWsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0ZVZhbHVlIHtcbiAgeWVhcjogbnVtYmVyO1xuICBtb250aDogbnVtYmVyO1xuICBkYXRlOiBudW1iZXI7XG4gIGhvdXJzPzogbnVtYmVyO1xuICBtaW51dGVzPzogbnVtYmVyO1xuICBzZWNvbmRzPzogbnVtYmVyO1xuICBtcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWERhdGVUaW1lRGlzcGxheUZvcm1hdHMge1xuICBkYXRlSW5wdXQ6IHN0cmluZztcbiAgdGltZUlucHV0OiBzdHJpbmc7XG4gIGRhdGVUaW1lSW5wdXQ6IHN0cmluZztcbiAgZGF0ZURpc3BsYXk6IHN0cmluZztcbiAgdGltZURpc3BsYXk6IHN0cmluZztcbiAgZGF0ZVRpbWVEaXNwbGF5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFYRGF0ZVRpbWVVbml0TmFtZXMgPSB7XG4gIGxvbmc6IHN0cmluZztcbiAgc2hvcnQ6IHN0cmluZztcbiAgbGV0dGVyOiBzdHJpbmc7XG59W107XG5cbmV4cG9ydCB0eXBlIEFYRGF0ZVRpbWVQYXJ0ID0ge1xuICBrZXk6IHN0cmluZztcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgcGxhY2Vob2xkZXJzOiBzdHJpbmdbXTtcbiAgdHlwZWRWYWx1ZT86IHN0cmluZyB8IG51bGw7XG4gIGRlZmF1bHQ6IG51bWJlcjtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhbFZhbHVlOiAoKSA9PiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBWERhdGVUaW1lUGFydHMgPSB7XG4gIHllYXI6IEFYRGF0ZVRpbWVQYXJ0O1xuICBtb250aDogQVhEYXRlVGltZVBhcnQ7XG4gIGRheTogQVhEYXRlVGltZVBhcnQ7XG4gIGhvdXI6IEFYRGF0ZVRpbWVQYXJ0O1xuICBtaW51dGU6IEFYRGF0ZVRpbWVQYXJ0O1xuICBzZWNvbmQ6IEFYRGF0ZVRpbWVQYXJ0O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyQ29uZmlnIHtcbiAgd2Vla2RheXM6IG51bWJlcltdO1xuICB3ZWVrZW5kOiBudW1iZXJbXTtcbiAgZm9ybWF0czogQVhEYXRlVGltZURpc3BsYXlGb3JtYXRzO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhDYWxlbmRhciB7XG4gIHByaXZhdGUgX2NvbmZpZzogQVhDYWxlbmRhckNvbmZpZztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBBWENhbGVuZGFyQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgcHVibGljIGdldCB3ZWVrZW5kKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLndlZWtlbmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcm1hdHMoKTogQVhEYXRlVGltZURpc3BsYXlGb3JtYXRzIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmZvcm1hdHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHdlZWtkYXlzKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLndlZWtkYXlzO1xuICB9XG5cbiAgYWJzdHJhY3QgbmFtZSgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IGRheU9mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IGRheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3Qgd2Vla09mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IHllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcblxuICBhYnN0cmFjdCBhZGQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZTtcblxuICBhYnN0cmFjdCBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IHN0YXJ0T2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZTtcblxuICBhYnN0cmFjdCBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlKTogQVhEYXRlVGltZTtcblxuICBhYnN0cmFjdCBwYXJzZSh2YWx1ZTogc3RyaW5nKTogQVhEYXRlVGltZTtcbn1cblxuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWUge1xuICBwcml2YXRlIF9kYXRlOiBEYXRlO1xuXG4gIGdldCBkYXRlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9kYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXI6IEFYQ2FsZW5kYXI7XG4gIGdldCBjYWxlbmRhcigpOiBBWENhbGVuZGFyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXI7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogRGF0ZSwgY2FsZW5kYXI6IEFYQ2FsZW5kYXIpIHtcbiAgICB0aGlzLl9jYWxlbmRhciA9IGNhbGVuZGFyO1xuICAgIHRoaXMuX2RhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIGNsb25lKCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZSh0aGlzLmRhdGUsIHRoaXMuY2FsZW5kYXIpO1xuICB9XG5cbiAgZ2V0IGRheU9mTW9udGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZNb250aCh0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IGRheU9mWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZlllYXIodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBkYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgaG91cigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldEhvdXJzKCk7XG4gIH1cblxuICBnZXQgbWludXRlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0TWludXRlcygpO1xuICB9XG5cbiAgZ2V0IHNlY29uZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldFNlY29uZHMoKTtcbiAgfVxuXG4gIGdldCB5ZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLnllYXIodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBtb250aE9mWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IHdlZWtPZlllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIud2Vla09mWWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IG1vbnRoKCk6IEFYQ2FsZW5kYXJNb250aCB7XG4gICAgcmV0dXJuIG5ldyBBWENhbGVuZGFyTW9udGgodGhpcyk7XG4gIH1cblxuICBhZGQodW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmFkZCh0aGlzLmRhdGUsIHVuaXQsIGFtb3VudCk7XG4gIH1cblxuICBzZXQodW5pdDogVGltZVVuaXQgPSAnZGF5JywgdmFsdWU6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5zZXQodGhpcy5kYXRlLCB1bml0LCB2YWx1ZSk7XG4gIH1cblxuICBkdXJhdGlvbihlbmQ6IERhdGUgfCBBWERhdGVUaW1lKTogQVhUaW1lU3BhbiB7XG4gICAgY29uc3QgZGF0ZSA9IGVuZCBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUgPyBlbmQuZGF0ZSA6IChlbmQgYXMgRGF0ZSk7XG4gICAgY29uc3QgdmFsID0gbmV3IEFYRGF0ZVRpbWUoZGF0ZSwgdGhpcy5jYWxlbmRhcik7XG4gICAgY29uc3QgcmFuZ2UgPSBuZXcgQVhEYXRlVGltZVJhbmdlKHRoaXMsIHZhbCk7XG4gICAgcmV0dXJuIHJhbmdlLmR1cmF0aW9uKCk7XG4gIH1cblxuICBzdGFydE9mKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuc3RhcnRPZih0aGlzLmRhdGUsIHVuaXQpO1xuICB9XG5cbiAgZW5kT2YodW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5lbmRPZih0aGlzLmRhdGUsIHVuaXQpO1xuICB9XG5cbiAgLy9UT0RPOiByZW1vdmUgdW51c2VkIGl0ZW1zXG4gIHByaXZhdGUgX2Zvcm1hdEtleXMgPSB7XG4gICAgc3M6ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCksIDIpLFxuICAgIHM6ICgpID0+IHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCkudG9TdHJpbmcoKSxcbiAgICAvL1xuICAgIGRkOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKSwgMiksXG4gICAgREQ6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIuZGF5T2ZNb250aCh0aGlzLmRhdGUpLCAyKSxcbiAgICBkOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIC8vXG4gICAgbW06ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRNaW51dGVzKCksIDIpLFxuICAgIG06ICgpID0+IHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKSxcbiAgICAvL1xuICAgIE1NTU06ICgpID0+IHRyYW5zbGF0ZVN5bmMoYGRhdGVUaW1lLm1vbnRocy4ke3RoaXMuY2FsZW5kYXIubmFtZSgpfS5sb25nLiR7dGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpIC0gMX1gKSxcbiAgICBNTU06ICgpID0+IHRyYW5zbGF0ZVN5bmMoYGRhdGVUaW1lLm1vbnRocy4ke3RoaXMuY2FsZW5kYXIubmFtZSgpfS5zaG9ydC4ke3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDF9YCksXG4gICAgTU06ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSwgMiksXG4gICAgTTogKCkgPT4gdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpLFxuICAgIC8vXG4gICAgRTogKCkgPT4gdHJhbnNsYXRlU3luYyhgZGF0ZVRpbWUud2Vla2RheXMubG9uZy4ke3RoaXMuY2FsZW5kYXIud2Vla2RheXNbdGhpcy5jYWxlbmRhci5kYXlPZldlZWsodGhpcy5kYXRlKSAtIDFdfWApLFxuICAgIERERDogKCkgPT4gdHJhbnNsYXRlU3luYyhgZGF0ZVRpbWUud2Vla2RheXMuc2hvcnQuJHt0aGlzLmNhbGVuZGFyLndlZWtkYXlzW3RoaXMuY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSkgLSAxXX1gKSxcbiAgICBEREREOiAoKSA9PiB0aGlzLl9mb3JtYXRLZXlzWydFJ10oKSxcbiAgICAvL1xuICAgIHl5eXk6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLCA0KSxcbiAgICBZWVlZOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLnllYXIodGhpcy5kYXRlKSwgNCksXG4gICAgeXk6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLCA0KS5zdWJzdHJpbmcoMiksXG4gICAgWVk6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLCA0KS5zdWJzdHJpbmcoMiksXG4gICAgLy9cbiAgICBISDogKCkgPT4gdGhpcy5wYWQodGhpcy5kYXRlLmdldEhvdXJzKCksIDIpLFxuICAgIEg6ICgpID0+IHRoaXMuZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCksXG4gICAgLy9cbiAgICBoaDogKCkgPT4gdGhpcy5wYWQodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMiwgMiksXG4gICAgaDogKCkgPT4gKHRoaXMuZGF0ZS5nZXRIb3VycygpICUgMTIgfHwgMTIpLnRvU3RyaW5nKCksXG4gICAgLy9cbiAgICBBOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgPCAxMiA/ICdhbScgOiAncG0nKSxcbiAgICBhOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgPCAxMiA/ICdhbScgOiAncG0nKSxcbiAgICBkYXRlOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQodGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKG9wdGlvbnMubG9jYWxlLCAnc2hvcnREYXRlJykpLFxuICAgIHNob3J0RGF0ZTogKG9wdGlvbnMpID0+IHRoaXMuZm9ybWF0KHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShvcHRpb25zLmxvY2FsZSwgJ3Nob3J0RGF0ZScpKSxcbiAgICBsb25nRGF0ZTogKG9wdGlvbnMpID0+IHRoaXMuZm9ybWF0KHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShvcHRpb25zLmxvY2FsZSwgJ2xvbmdEYXRlJykpLFxuICAgIC8vXG4gICAgc2hvcnRUaW1lOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQodGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKG9wdGlvbnMubG9jYWxlLCAnc2hvcnRUaW1lJykpLFxuICAgIHRpbWU6IChvcHRpb25zKSA9PiB0aGlzLmZvcm1hdCh0aGlzLmdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUob3B0aW9ucy5sb2NhbGUsICdzaG9ydFRpbWUnKSksXG4gICAgbG9uZ1RpbWU6IChvcHRpb25zKSA9PiB0aGlzLmZvcm1hdCh0aGlzLmdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUob3B0aW9ucy5sb2NhbGUsICdsb25nVGltZScpKSxcbiAgICAvL1xuICAgIGRhdGV0aW1lOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQoJ2RhdGUgdGltZScsIHsgbG9jYWxlOiBvcHRpb25zLmxvY2FsZSB9KSxcbiAgfTtcblxuICBwcm90ZWN0ZWQgX2xhbmd1YWdlID0gKCkgPT4gKGlzQnJvd3NlcigpID8gbmF2aWdhdG9yLmxhbmd1YWdlIDogJ2VuLUdCJyk7XG5cbiAgZm9ybWF0KGZvcm1hdDogc3RyaW5nID0gdGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKHRoaXMuX2xhbmd1YWdlKCksICdzaG9ydERhdGUnKSwgb3B0aW9ucz86IHsgbG9jYWxlPzogc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IGVmZmVjdGl2ZU9wdGlvbnMgPSBkZWZhdWx0cyh7fSwgb3B0aW9ucywge1xuICAgICAgbG9jYWxlOiB0aGlzLl9sYW5ndWFnZSgpLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChvcmRlckJ5KE9iamVjdC5rZXlzKHRoaXMuX2Zvcm1hdEtleXMpLCAoYykgPT4gYy5sZW5ndGgsIFsnZGVzYyddKS5qb2luKCd8JyksICdnaScpO1xuICAgIHJldHVybiBmb3JtYXQucmVwbGFjZShyZSwgKG1hdGNoZWQpID0+IHtcbiAgICAgIGNvbnN0IGYgPSB0aGlzLl9mb3JtYXRLZXlzW21hdGNoZWRdO1xuICAgICAgY29uc3QgciA9IGYoZWZmZWN0aXZlT3B0aW9ucyk7XG4gICAgICByZXR1cm4gcjtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUobG9jYWxlOiBzdHJpbmcsIHN0eWxlOiAnc2hvcnREYXRlJyB8ICdsb25nRGF0ZScgfCAnc2hvcnRUaW1lJyB8ICdsb25nVGltZScpOiBzdHJpbmcge1xuICAgIGxldCBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9O1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ3Nob3J0RGF0ZSc6IC8vIFllYXIsIE1vbnRoLCBEYXlcbiAgICAgICAgb3B0aW9ucyA9IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJzItZGlnaXQnLCBkYXk6ICcyLWRpZ2l0JyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xvbmdEYXRlJzogLy8gV2Vla2RheSwgTW9udGggbmFtZSwgRGF5LCBZZWFyXG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgd2Vla2RheTogJ2xvbmcnLFxuICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Nob3J0VGltZSc6IC8vIEhvdXIsIE1pbnV0ZVxuICAgICAgICBvcHRpb25zID0geyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnLCBob3VyMTI6IGZhbHNlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbG9uZ1RpbWUnOiAvLyBIb3VyLCBNaW51dGUsIFNlY29uZFxuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgICAgICBob3VyMTI6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIG9wdGlvbnMpO1xuXG4gICAgLy8gR2V0IHBhcnRzIG9mIHRoZSBkYXRlIGFuZC9vciB0aW1lXG4gICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgpKTtcblxuICAgIC8vIE1hcCBwYXJ0cyB0byB0aGVpciByZXNwZWN0aXZlIGZvcm1hdFxuICAgIGNvbnN0IGZvcm1hdE1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgIGRheTogJ2RkJyxcbiAgICAgIG1vbnRoOiBzdHlsZSA9PSAnbG9uZ0RhdGUnID8gJ01NTU0nIDogJ01NJyxcbiAgICAgIHllYXI6ICd5eXl5JyxcbiAgICAgIGhvdXI6ICdISCcsXG4gICAgICBtaW51dGU6ICdtbScsXG4gICAgICBzZWNvbmQ6ICdzcycsXG4gICAgICB3ZWVrZGF5OiAnRScsXG4gICAgICBsaXRlcmFsOiAnJyxcbiAgICB9O1xuXG4gICAgLy8gQ29uc3RydWN0IHRoZSBkYXRlIGFuZC9vciB0aW1lIGZvcm1hdCBzdHJpbmdcbiAgICByZXR1cm4gcGFydHNcbiAgICAgIC5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ2xpdGVyYWwnKSB7XG4gICAgICAgICAgLy8gVXNlIHRoZSBsaXRlcmFsIHBhcnQgZGlyZWN0bHkgYXMgc2VwYXJhdG9yXG4gICAgICAgICAgcmV0dXJuIHBhcnQudmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZvcm1hdE1hcFtwYXJ0LnR5cGVdIHx8IHBhcnQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuam9pbignJyk7XG4gIH1cblxuICBwcml2YXRlIHBhZChuLCB3aWR0aCwgeiA9ICcwJykge1xuICAgIG4gPSBuICsgJyc7XG4gICAgcmV0dXJuIG4ubGVuZ3RoID49IHdpZHRoID8gbiA6IG5ldyBBcnJheSh3aWR0aCAtIG4ubGVuZ3RoICsgMSkuam9pbih6KSArIG47XG4gIH1cblxuICBlcXVhbCh2YWx1ZTogRGF0ZSB8IEFYRGF0ZVRpbWUsIHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpIHtcbiAgICByZXR1cm4gdGhpcy5jb21wYXJlKHZhbHVlLCB1bml0KSA9PSAwO1xuICB9XG5cbiAgY29tcGFyZSh2YWx1ZTogRGF0ZSB8IEFYRGF0ZVRpbWUsIHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpIHtcbiAgICBjb25zdCBkYXRlID0gdmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lID8gdmFsdWUuZGF0ZSA6ICh2YWx1ZSBhcyBEYXRlKTtcbiAgICBjb25zdCB2YWwgPSBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzLmNhbGVuZGFyKTtcbiAgICBjb25zdCBmdW5jID0gKHYxOiBudW1iZXIsIHYyOiBudW1iZXIpID0+IHtcbiAgICAgIGlmICh2MSA9PSB2Mikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSBpZiAodjEgPiB2Mikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGxldCBwID0gMDtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICByZXR1cm4gZnVuYyh0aGlzLnllYXIsIHZhbC55ZWFyKTtcbiAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy53ZWVrT2ZZZWFyLCB2YWwud2Vla09mWWVhcikgOiBwO1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5tb250aE9mWWVhciwgdmFsLm1vbnRoT2ZZZWFyKSA6IHA7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5kYXlPZlllYXIsIHZhbC5kYXlPZlllYXIpIDogcDtcbiAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2RheScpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLmhvdXIsIHZhbC5ob3VyKSA6IHA7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2hvdXInKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5taW51dGUsIHZhbC5taW51dGUpIDogcDtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnbWludXRlJyk7XG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMuc2Vjb25kLCB2YWwuc2Vjb25kKSA6IHA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZnVuYyh0aGlzLmRhdGUuZ2V0VGltZSgpLCB2YWwuZGF0ZS5nZXRUaW1lKCkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhck1vbnRoIHtcbiAgcHJpdmF0ZSBfcmFuZ2U6IEFYRGF0ZVRpbWVSYW5nZTtcbiAgcHVibGljIGdldCByYW5nZSgpOiBBWERhdGVUaW1lUmFuZ2Uge1xuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcbiAgfVxuICBwdWJsaWMgc2V0IHJhbmdlKHY6IEFYRGF0ZVRpbWVSYW5nZSkge1xuICAgIHRoaXMuX3JhbmdlID0gdjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG90YWxEYXlzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmFuZ2UuZW5kVGltZS5kYXlPZk1vbnRoO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIHRoaXMuaW5kZXggPSBkYXRlLmRhdGUuZ2V0TW9udGgoKTtcbiAgICB0aGlzLm5hbWUgPSBkYXRlLmZvcm1hdCgnTU1NTScpO1xuICAgIHRoaXMucmFuZ2UgPSBuZXcgQVhEYXRlVGltZVJhbmdlKFxuICAgICAgbmV3IEFYRGF0ZVRpbWUoZGF0ZS5zdGFydE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpLFxuICAgICAgbmV3IEFYRGF0ZVRpbWUoZGF0ZS5lbmRPZignbW9udGgnKS5kYXRlLCBkYXRlLmNhbGVuZGFyKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbmRleDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFRpbWVTcGFuVG90YWwge1xuICBtaWxpc2Vjb25kczogbnVtYmVyO1xuICBzZWNvbmRzOiBudW1iZXI7XG4gIG1pbnV0ZXM6IG51bWJlcjtcbiAgaG91cnM6IG51bWJlcjtcbiAgZGF5czogbnVtYmVyO1xuICB3ZWVrczogbnVtYmVyO1xuICBtb250aHM6IG51bWJlcjtcbiAgeWVhcnM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFRpbWVTcGFuIHtcbiAgbWlsaXNlY29uZHM6IG51bWJlcjtcbiAgc2Vjb25kczogbnVtYmVyO1xuICBtaW51dGVzOiBudW1iZXI7XG4gIGhvdXJzOiBudW1iZXI7XG4gIGRheXM6IG51bWJlcjtcbiAgbW9udGhzOiBudW1iZXI7XG4gIHllYXJzOiBudW1iZXI7XG4gIHRvdGFsOiBBWFRpbWVTcGFuVG90YWw7XG59XG5cbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lUmFuZ2Uge1xuICBwcml2YXRlIF9zdGFydFRpbWU6IEFYRGF0ZVRpbWU7XG4gIHByaXZhdGUgX2VuZFRpbWU6IEFYRGF0ZVRpbWU7XG5cbiAgcHVibGljIGdldCBzdGFydFRpbWUoKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5kVGltZSgpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kVGltZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHN0YXJ0VGltZTogQVhEYXRlVGltZSwgZW5kVGltZTogQVhEYXRlVGltZSkge1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTtcbiAgICB0aGlzLl9lbmRUaW1lID0gZW5kVGltZTtcbiAgfVxuXG4gIGR1cmF0aW9uKCk6IEFYVGltZVNwYW4ge1xuICAgIGNvbnN0IHJlc3VsdDogQVhUaW1lU3BhbiA9IHtcbiAgICAgIG1pbGlzZWNvbmRzOiAwLFxuICAgICAgc2Vjb25kczogMCxcbiAgICAgIG1pbnV0ZXM6IDAsXG4gICAgICBob3VyczogMCxcbiAgICAgIGRheXM6IDAsXG4gICAgICBtb250aHM6IDAsXG4gICAgICB5ZWFyczogMCxcbiAgICAgIHRvdGFsOiB7XG4gICAgICAgIG1pbGlzZWNvbmRzOiAwLFxuICAgICAgICBzZWNvbmRzOiAwLFxuICAgICAgICBtaW51dGVzOiAwLFxuICAgICAgICBob3VyczogMCxcbiAgICAgICAgZGF5czogMCxcbiAgICAgICAgd2Vla3M6IDAsXG4gICAgICAgIG1vbnRoczogMCxcbiAgICAgICAgeWVhcnM6IDAsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBvbmVfc2Vjb25kID0gMTAwMDtcbiAgICBjb25zdCBvbmVfbWluID0gb25lX3NlY29uZCAqIDYwO1xuICAgIGNvbnN0IG9uZV9ob3VyID0gb25lX21pbiAqIDYwO1xuICAgIGNvbnN0IG9uZV9kYXkgPSBvbmVfaG91ciAqIDI0O1xuICAgIGNvbnN0IG9uZV93ZWVrID0gb25lX2RheSAqIDc7XG4gICAgY29uc3Qgb25lX3llYXIgPSAzNjUuMjUgKiBvbmVfZGF5O1xuICAgIGNvbnN0IG9uZV9tb250aCA9IG9uZV95ZWFyIC8gMTI7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5fc3RhcnRUaW1lLmRhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGVuZFRpbWUgPSB0aGlzLl9lbmRUaW1lLmRhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhlbmRUaW1lIC0gc3RhcnRUaW1lKTtcbiAgICAvL1xuICAgIHJlc3VsdC50b3RhbC5taWxpc2Vjb25kcyA9IGRpZmY7XG4gICAgcmVzdWx0LnRvdGFsLnNlY29uZHMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfc2Vjb25kKS50b0ZpeGVkKDIpKTtcbiAgICByZXN1bHQudG90YWwubWludXRlcyA9IE51bWJlcigoZGlmZiAvIG9uZV9taW4pLnRvRml4ZWQoMikpO1xuICAgIHJlc3VsdC50b3RhbC5ob3VycyA9IE51bWJlcigoZGlmZiAvIG9uZV9ob3VyKS50b0ZpeGVkKDIpKTtcbiAgICByZXN1bHQudG90YWwuZGF5cyA9IE51bWJlcigoZGlmZiAvIG9uZV9kYXkpLnRvRml4ZWQoMikpO1xuICAgIHJlc3VsdC50b3RhbC53ZWVrcyA9IE51bWJlcigoZGlmZiAvIG9uZV93ZWVrKS50b0ZpeGVkKDIpKTtcbiAgICAvL1xuICAgIC8vIGxldCBtb250aHMgPSAodGhpcy5lbmRUaW1lLnllYXIgLSB0aGlzLnN0YXJ0VGltZS55ZWFyKSAqIDEyO1xuICAgIC8vIG1vbnRocyArPSB0aGlzLmVuZFRpbWUubW9udGhPZlllYXIgLSB0aGlzLnN0YXJ0VGltZS5tb250aE9mWWVhciArIDE7XG4gICAgLy8gaWYgKHRoaXMuZW5kVGltZS5kYXlPZlllYXIgPCB0aGlzLnN0YXJ0VGltZS5kYXlPZlllYXIpIHtcbiAgICAvLyAgICAgbW9udGhzLS07XG4gICAgLy8gfVxuICAgIC8vIHJlc3VsdC50b3RhbC5tb250aHMgPSBNYXRoLmFicyhtb250aHMpO1xuICAgIC8vIFRPRE86IHJldmlld1xuICAgIHJlc3VsdC50b3RhbC5tb250aHMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfbW9udGgpLnRvRml4ZWQoMikpO1xuICAgIHJlc3VsdC50b3RhbC55ZWFycyA9IE51bWJlcigoZGlmZiAvIG9uZV95ZWFyKS50b0ZpeGVkKDIpKTtcbiAgICAvL1xuICAgIHJlc3VsdC5taWxpc2Vjb25kcyA9IHJlc3VsdC50b3RhbC5taWxpc2Vjb25kcyAlIDEwMDA7XG4gICAgcmVzdWx0LnNlY29uZHMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5zZWNvbmRzICUgNjApLnRvRml4ZWQoMCkpO1xuICAgIHJlc3VsdC5taW51dGVzID0gTnVtYmVyKChyZXN1bHQudG90YWwubWludXRlcyAlIDYwKS50b0ZpeGVkKDApKTtcbiAgICByZXN1bHQuaG91cnMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5ob3VycyAlIDI0KS50b0ZpeGVkKDApKTtcbiAgICAvLyBUT0RPOiByZXZpZXdcbiAgICByZXN1bHQuZGF5cyA9IE51bWJlcigocmVzdWx0LnRvdGFsLmRheXMgJSAzMC40KS50b0ZpeGVkKDApKTtcbiAgICByZXN1bHQubW9udGhzID0gTnVtYmVyKChyZXN1bHQudG90YWwubW9udGhzICUgMTIpLnRvRml4ZWQoMCkpO1xuICAgIHJlc3VsdC55ZWFycyA9IE51bWJlcihyZXN1bHQudG90YWwueWVhcnMudG9GaXhlZCgwKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGVudW11cmF0ZSh1bml0OiBUaW1lVW5pdCA9ICdkYXknLCBhbW91bnQgPSAxKTogQVhEYXRlVGltZVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IEFYRGF0ZVRpbWVbXSA9IFtdO1xuICAgIGxldCBpdGVtID0gdGhpcy5fc3RhcnRUaW1lLmNsb25lKCk7XG4gICAgd2hpbGUgKGl0ZW0uY29tcGFyZSh0aGlzLl9lbmRUaW1lLCB1bml0KSA8IDEpIHtcbiAgICAgIGlmICghcmVzdWx0LnNvbWUoKGMpID0+IGMuZXF1YWwoaXRlbSwgdW5pdCkpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgaXRlbSA9IGl0ZW0uYWRkKHVuaXQsIGFtb3VudCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,28 +0,0 @@
|
|
1
|
-
import { AXFormatModule } from '@acorex/core/format';
|
2
|
-
import { NgModule } from '@angular/core';
|
3
|
-
import { AXDateTimePipe } from './datetime.pipe';
|
4
|
-
import { AXDateTimeFormatter } from './formatters/datetime-formatter';
|
5
|
-
import { AXTimeDurationFormatter } from './formatters/time-duration-formatter';
|
6
|
-
import { AXTimeLeftFormatter } from './formatters/timeleft-formatter';
|
7
|
-
import * as i0 from "@angular/core";
|
8
|
-
import * as i1 from "@acorex/core/format";
|
9
|
-
export class AXDateTimeModule {
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
11
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], imports: [i1.AXFormatModule], exports: [AXDateTimePipe] }); }
|
12
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimeModule, imports: [AXFormatModule.forChild({
|
13
|
-
formatters: [AXDateTimeFormatter, AXTimeLeftFormatter, AXTimeDurationFormatter],
|
14
|
-
})] }); }
|
15
|
-
}
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimeModule, decorators: [{
|
17
|
-
type: NgModule,
|
18
|
-
args: [{
|
19
|
-
imports: [
|
20
|
-
AXFormatModule.forChild({
|
21
|
-
formatters: [AXDateTimeFormatter, AXTimeLeftFormatter, AXTimeDurationFormatter],
|
22
|
-
}),
|
23
|
-
],
|
24
|
-
exports: [AXDateTimePipe],
|
25
|
-
declarations: [AXDateTimePipe],
|
26
|
-
}]
|
27
|
-
}] });
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2RhdGV0aW1lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQVd0RSxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixpQkFGWixjQUFjLDJDQURuQixjQUFjOytHQUdiLGdCQUFnQixZQVB6QixjQUFjLENBQUMsUUFBUSxDQUFDO2dCQUN0QixVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBQzthQUNoRixDQUFDOzsyRkFLTyxnQkFBZ0I7a0JBVDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGNBQWMsQ0FBQyxRQUFRLENBQUM7NEJBQ3RCLFVBQVUsRUFBRSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDO3lCQUNoRixDQUFDO3FCQUNIO29CQUNELE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDekIsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEYXRlVGltZVBpcGUgfSBmcm9tICcuL2RhdGV0aW1lLnBpcGUnO1xuaW1wb3J0IHsgQVhEYXRlVGltZUZvcm1hdHRlciB9IGZyb20gJy4vZm9ybWF0dGVycy9kYXRldGltZS1mb3JtYXR0ZXInO1xuaW1wb3J0IHsgQVhUaW1lRHVyYXRpb25Gb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcnMvdGltZS1kdXJhdGlvbi1mb3JtYXR0ZXInO1xuaW1wb3J0IHsgQVhUaW1lTGVmdEZvcm1hdHRlciB9IGZyb20gJy4vZm9ybWF0dGVycy90aW1lbGVmdC1mb3JtYXR0ZXInO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQVhGb3JtYXRNb2R1bGUuZm9yQ2hpbGQoe1xuICAgICAgZm9ybWF0dGVyczogW0FYRGF0ZVRpbWVGb3JtYXR0ZXIsIEFYVGltZUxlZnRGb3JtYXR0ZXIsIEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyXSxcbiAgICB9KSxcbiAgXSxcbiAgZXhwb3J0czogW0FYRGF0ZVRpbWVQaXBlXSxcbiAgZGVjbGFyYXRpb25zOiBbQVhEYXRlVGltZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lTW9kdWxlIHt9XG4iXX0=
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import { Pipe, inject } from '@angular/core';
|
2
|
-
import { AXCalendarService } from './calendar.service';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
/**
|
5
|
-
* @deprecated The pipe should not be used, use format instead
|
6
|
-
*/
|
7
|
-
export class AXDateTimePipe {
|
8
|
-
constructor() {
|
9
|
-
this._calendarService = inject(AXCalendarService);
|
10
|
-
}
|
11
|
-
transform(value, format, calendarName) {
|
12
|
-
if (value == null) {
|
13
|
-
return '';
|
14
|
-
}
|
15
|
-
let calendar = this._calendarService.calendar;
|
16
|
-
if (calendarName) {
|
17
|
-
calendar = this._calendarService.resolveCalendar(calendarName);
|
18
|
-
}
|
19
|
-
const val = this._calendarService.convert(value, calendar.name());
|
20
|
-
return val.format(format);
|
21
|
-
}
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
23
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimePipe, name: "axDate" }); }
|
24
|
-
}
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimePipe, decorators: [{
|
26
|
-
type: Pipe,
|
27
|
-
args: [{ name: 'axDate' }]
|
28
|
-
}] });
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9kYXRldGltZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHdkQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVVLHFCQUFnQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQWF6RTtJQVhDLFNBQVMsQ0FBQyxLQUFpQyxFQUFFLE1BQWUsRUFBRSxZQUFxQjtRQUNqRixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1FBQzlDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFlLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQWJVLGNBQWM7NEdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYRGF0ZVRpbWUgfSBmcm9tICcuL2RhdGV0aW1lLmNsYXNzJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGUgcGlwZSBzaG91bGQgbm90IGJlIHVzZWQsIHVzZSBmb3JtYXQgaW5zdGVhZFxuICovXG5AUGlwZSh7IG5hbWU6ICdheERhdGUnIH0pXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBfY2FsZW5kYXJTZXJ2aWNlOiBBWENhbGVuZGFyU2VydmljZSA9IGluamVjdChBWENhbGVuZGFyU2VydmljZSk7XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSB8IHN0cmluZywgZm9ybWF0Pzogc3RyaW5nLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGxldCBjYWxlbmRhciA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5jYWxlbmRhcjtcbiAgICBpZiAoY2FsZW5kYXJOYW1lKSB7XG4gICAgICBjYWxlbmRhciA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5yZXNvbHZlQ2FsZW5kYXIoY2FsZW5kYXJOYW1lKTtcbiAgICB9XG4gICAgY29uc3QgdmFsOiBBWERhdGVUaW1lID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmNvbnZlcnQodmFsdWUsIGNhbGVuZGFyLm5hbWUoKSk7XG4gICAgcmV0dXJuIHZhbC5mb3JtYXQoZm9ybWF0KTtcbiAgfVxufVxuIl19
|
@@ -1,38 +0,0 @@
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
2
|
-
import { AXCalendarService } from '../calendar.service';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class AXDateTimeFormatter {
|
5
|
-
constructor() {
|
6
|
-
this.calendarService = inject(AXCalendarService);
|
7
|
-
}
|
8
|
-
get name() {
|
9
|
-
return 'datetime';
|
10
|
-
}
|
11
|
-
format(value, options) {
|
12
|
-
const effectiveOptions = typeof options == 'object'
|
13
|
-
? {
|
14
|
-
format: options.format ?? 'date',
|
15
|
-
locale: options.locale,
|
16
|
-
calendar: options.calendar ?? this.calendarService.calendar.name(),
|
17
|
-
}
|
18
|
-
: {
|
19
|
-
format: options,
|
20
|
-
calendar: this.calendarService.calendar.name(),
|
21
|
-
};
|
22
|
-
const date = (value instanceof Date) ? value :
|
23
|
-
(typeof value == "number" || typeof value == "string" ? new Date(value) : null);
|
24
|
-
//
|
25
|
-
if (!date)
|
26
|
-
return "";
|
27
|
-
//
|
28
|
-
return this.calendarService
|
29
|
-
.create(date, effectiveOptions.calendar)
|
30
|
-
.format(effectiveOptions.format, { locale: effectiveOptions.locale });
|
31
|
-
}
|
32
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
33
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimeFormatter }); }
|
34
|
-
}
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimeFormatter, decorators: [{
|
36
|
-
type: Injectable
|
37
|
-
}] });
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2Zvcm1hdHRlcnMvZGF0ZXRpbWUtZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQWV4RCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQTZCckQ7SUEzQkMsSUFBSSxJQUFJO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFjLEVBQUUsT0FBNkM7UUFDbEUsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxPQUFPLElBQUksUUFBUTtZQUN4QixDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksTUFBTTtnQkFDaEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7YUFDbkU7WUFDSCxDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTthQUMvQyxDQUFDO1FBRVIsTUFBTSxJQUFJLEdBQWUsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUMsT0FBTyxLQUFLLElBQUUsUUFBUSxJQUFJLE9BQU8sS0FBSyxJQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFFO1FBQzdHLEVBQUU7UUFDRixJQUFHLENBQUMsSUFBSTtZQUNOLE9BQU8sRUFBRSxDQUFDO1FBQ1osRUFBRTtRQUNGLE9BQU8sSUFBSSxDQUFDLGVBQWU7YUFDeEIsTUFBTSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxRQUFrQixDQUFDO2FBQ2pELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDOzhHQTdCVSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0T3B0aW9ucywgQVhGb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucyBleHRlbmRzIEFYRm9ybWF0T3B0aW9ucyB7XG4gIGZvcm1hdD86IHN0cmluZztcbiAgY2FsZW5kYXI/OiBzdHJpbmc7XG4gIGxvY2FsZT86IHN0cmluZztcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvY29yZS9mb3JtYXQnIHtcbiAgaW50ZXJmYWNlIEFYRm9ybWF0T3B0aW9uc01hcCB7XG4gICAgZGF0ZXRpbWU6IEFYRGF0ZVRpbWVGb3JtYXR0ZXJPcHRpb25zO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lRm9ybWF0dGVyIGltcGxlbWVudHMgQVhGb3JtYXR0ZXIge1xuICBwcml2YXRlIGNhbGVuZGFyU2VydmljZSA9IGluamVjdChBWENhbGVuZGFyU2VydmljZSk7XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2RhdGV0aW1lJztcbiAgfVxuXG4gIGZvcm1hdCh2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IEFYRGF0ZVRpbWVGb3JtYXR0ZXJPcHRpb25zIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZmZlY3RpdmVPcHRpb25zID1cbiAgICAgIHR5cGVvZiBvcHRpb25zID09ICdvYmplY3QnXG4gICAgICAgID8ge1xuICAgICAgICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCA/PyAnZGF0ZScsXG4gICAgICAgICAgICBsb2NhbGU6IG9wdGlvbnMubG9jYWxlLFxuICAgICAgICAgICAgY2FsZW5kYXI6IG9wdGlvbnMuY2FsZW5kYXIgPz8gdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXIubmFtZSgpLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMsXG4gICAgICAgICAgICBjYWxlbmRhcjogdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXIubmFtZSgpLFxuICAgICAgICAgIH07XG5cbiAgICBjb25zdCBkYXRlOkRhdGUgfCBudWxsID0gKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSApID8gdmFsdWUgOiAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdmFsdWU9PVwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlPT1cInN0cmluZ1wiID8gbmV3IERhdGUodmFsdWUgYXMgYW55KSA6IG51bGwpIDtcbiAgICAvL1xuICAgIGlmKCFkYXRlKVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgLy9cbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhclNlcnZpY2VcbiAgICAgIC5jcmVhdGUoZGF0ZSwgZWZmZWN0aXZlT3B0aW9ucy5jYWxlbmRhciBhcyBzdHJpbmcpXG4gICAgICAuZm9ybWF0KGVmZmVjdGl2ZU9wdGlvbnMuZm9ybWF0LCB7IGxvY2FsZTogZWZmZWN0aXZlT3B0aW9ucy5sb2NhbGUgfSk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,52 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class AXTimeDurationFormatter {
|
4
|
-
get name() {
|
5
|
-
return 'time-duration';
|
6
|
-
}
|
7
|
-
format(value, options) {
|
8
|
-
const milliseconds = Number(value);
|
9
|
-
if (milliseconds === null || isNaN(milliseconds)) {
|
10
|
-
return '...';
|
11
|
-
}
|
12
|
-
// Convert milliseconds to various units
|
13
|
-
const totalMilliseconds = milliseconds % 1000;
|
14
|
-
const totalSeconds = Math.floor(milliseconds / 1000);
|
15
|
-
const seconds = totalSeconds % 60;
|
16
|
-
const totalMinutes = Math.floor(totalSeconds / 60);
|
17
|
-
const minutes = totalMinutes % 60;
|
18
|
-
const totalHours = Math.floor(totalMinutes / 60);
|
19
|
-
// Helper function for zero-padding
|
20
|
-
const pad = (num, length = 2) => num.toString().padStart(length, '0');
|
21
|
-
// Default format if none provided
|
22
|
-
const format = options?.format || (totalHours >= 0 ? 'HH:mm:ss' : 'mm:ss');
|
23
|
-
const formattedTime = [];
|
24
|
-
// Parse format and build the time string accordingly
|
25
|
-
if (format.includes('HH') || format.includes('H')) {
|
26
|
-
formattedTime.push(pad(totalHours));
|
27
|
-
}
|
28
|
-
if (format.includes('mm')) {
|
29
|
-
formattedTime.push(pad(minutes));
|
30
|
-
}
|
31
|
-
else if (format.includes('m')) {
|
32
|
-
formattedTime.push(minutes.toString());
|
33
|
-
}
|
34
|
-
if (format.includes('ss')) {
|
35
|
-
formattedTime.push(pad(seconds));
|
36
|
-
}
|
37
|
-
else if (format.includes('s')) {
|
38
|
-
formattedTime.push(seconds.toString());
|
39
|
-
}
|
40
|
-
if (format.includes('ms') || format.includes('MS')) {
|
41
|
-
formattedTime.push(pad(totalMilliseconds, 3));
|
42
|
-
}
|
43
|
-
// Join the parts according to the format
|
44
|
-
return formattedTime.join(format.includes('ms') || format.includes('MS') ? ':' : ':');
|
45
|
-
}
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTimeDurationFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
47
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTimeDurationFormatter }); }
|
48
|
-
}
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTimeDurationFormatter, decorators: [{
|
50
|
-
type: Injectable
|
51
|
-
}] });
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kdXJhdGlvbi1mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZS10aW1lL3NyYy9saWIvZm9ybWF0dGVycy90aW1lLWR1cmF0aW9uLWZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWEzQyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLElBQUksSUFBSTtRQUNOLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYSxFQUFFLE9BQXdDO1FBQzVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLFlBQVksS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsd0NBQXdDO1FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQztRQUM5QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sT0FBTyxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFakQsbUNBQW1DO1FBQ25DLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTlFLGtDQUFrQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUzRSxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFFekIscURBQXFEO1FBQ3JELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEQsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUIsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUIsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCx5Q0FBeUM7UUFDekMsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RixDQUFDOzhHQS9DVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0T3B0aW9ucywgQVhGb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFRpbWVEdXJhdGlvbkZvcm1hdHRlck9wdGlvbnMgZXh0ZW5kcyBBWEZvcm1hdE9wdGlvbnMge1xuICBmb3JtYXQ6IHN0cmluZztcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvY29yZS9mb3JtYXQnIHtcbiAgaW50ZXJmYWNlIEFYRm9ybWF0T3B0aW9uc01hcCB7XG4gICAgZHVyYXRpb246IEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhUaW1lRHVyYXRpb25Gb3JtYXR0ZXIgaW1wbGVtZW50cyBBWEZvcm1hdHRlciB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICd0aW1lLWR1cmF0aW9uJztcbiAgfVxuXG4gIGZvcm1hdCh2YWx1ZTogbnVtYmVyLCBvcHRpb25zPzogQVhUaW1lRHVyYXRpb25Gb3JtYXR0ZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmIChtaWxsaXNlY29uZHMgPT09IG51bGwgfHwgaXNOYU4obWlsbGlzZWNvbmRzKSkge1xuICAgICAgcmV0dXJuICcuLi4nO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgbWlsbGlzZWNvbmRzIHRvIHZhcmlvdXMgdW5pdHNcbiAgICBjb25zdCB0b3RhbE1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG4gICAgY29uc3QgdG90YWxTZWNvbmRzID0gTWF0aC5mbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICBjb25zdCBzZWNvbmRzID0gdG90YWxTZWNvbmRzICUgNjA7XG4gICAgY29uc3QgdG90YWxNaW51dGVzID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyA2MCk7XG4gICAgY29uc3QgbWludXRlcyA9IHRvdGFsTWludXRlcyAlIDYwO1xuICAgIGNvbnN0IHRvdGFsSG91cnMgPSBNYXRoLmZsb29yKHRvdGFsTWludXRlcyAvIDYwKTtcblxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgemVyby1wYWRkaW5nXG4gICAgY29uc3QgcGFkID0gKG51bTogbnVtYmVyLCBsZW5ndGggPSAyKSA9PiBudW0udG9TdHJpbmcoKS5wYWRTdGFydChsZW5ndGgsICcwJyk7XG5cbiAgICAvLyBEZWZhdWx0IGZvcm1hdCBpZiBub25lIHByb3ZpZGVkXG4gICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucz8uZm9ybWF0IHx8ICh0b3RhbEhvdXJzID49IDAgPyAnSEg6bW06c3MnIDogJ21tOnNzJyk7XG5cbiAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gW107XG5cbiAgICAvLyBQYXJzZSBmb3JtYXQgYW5kIGJ1aWxkIHRoZSB0aW1lIHN0cmluZyBhY2NvcmRpbmdseVxuICAgIGlmIChmb3JtYXQuaW5jbHVkZXMoJ0hIJykgfHwgZm9ybWF0LmluY2x1ZGVzKCdIJykpIHtcbiAgICAgIGZvcm1hdHRlZFRpbWUucHVzaChwYWQodG90YWxIb3VycykpO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0LmluY2x1ZGVzKCdtbScpKSB7XG4gICAgICBmb3JtYXR0ZWRUaW1lLnB1c2gocGFkKG1pbnV0ZXMpKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdC5pbmNsdWRlcygnbScpKSB7XG4gICAgICBmb3JtYXR0ZWRUaW1lLnB1c2gobWludXRlcy50b1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdC5pbmNsdWRlcygnc3MnKSkge1xuICAgICAgZm9ybWF0dGVkVGltZS5wdXNoKHBhZChzZWNvbmRzKSk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQuaW5jbHVkZXMoJ3MnKSkge1xuICAgICAgZm9ybWF0dGVkVGltZS5wdXNoKHNlY29uZHMudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChmb3JtYXQuaW5jbHVkZXMoJ21zJykgfHwgZm9ybWF0LmluY2x1ZGVzKCdNUycpKSB7XG4gICAgICBmb3JtYXR0ZWRUaW1lLnB1c2gocGFkKHRvdGFsTWlsbGlzZWNvbmRzLCAzKSk7XG4gICAgfVxuXG4gICAgLy8gSm9pbiB0aGUgcGFydHMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtYXRcbiAgICByZXR1cm4gZm9ybWF0dGVkVGltZS5qb2luKGZvcm1hdC5pbmNsdWRlcygnbXMnKSB8fCBmb3JtYXQuaW5jbHVkZXMoJ01TJykgPyAnOicgOiAnOicpO1xuICB9XG59XG4iXX0=
|