@zag-js/date-utils 0.39.0 → 0.41.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/dist/index.d.mts +1 -7
- package/dist/index.d.ts +1 -7
- package/dist/index.js +45 -99
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -57
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +0 -1
- package/src/format-date.ts +0 -67
package/dist/index.d.mts
CHANGED
|
@@ -39,12 +39,6 @@ declare function getUnitDuration(duration: DateDuration): {
|
|
|
39
39
|
};
|
|
40
40
|
declare function getEndDate(startDate: DateValue, duration: DateDuration): _internationalized_date.CalendarDate | _internationalized_date.CalendarDateTime | _internationalized_date.ZonedDateTime;
|
|
41
41
|
|
|
42
|
-
/**
|
|
43
|
-
* Formats a date using the given format string as defined in:
|
|
44
|
-
* https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
|
|
45
|
-
*/
|
|
46
|
-
declare function formatDate(value: DateValue, formatString: string, locale: string, timeZone?: string): string;
|
|
47
|
-
|
|
48
42
|
declare function formatRange(startDate: DateValue, endDate: DateValue, formatter: DateFormatter, toString: (start: string, end: string) => string, timeZone: string): string;
|
|
49
43
|
|
|
50
44
|
declare function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string): string;
|
|
@@ -114,4 +108,4 @@ declare function parseDateString(date: string, locale: string, timeZone: string)
|
|
|
114
108
|
type DateRangePreset = "thisWeek" | "lastWeek" | "thisMonth" | "lastMonth" | "thisQuarter" | "lastQuarter" | "thisYear" | "lastYear" | "last3Days" | "last7Days" | "last14Days" | "last30Days" | "last90Days";
|
|
115
109
|
declare function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue];
|
|
116
110
|
|
|
117
|
-
export { type AdjustDateParams, type AdjustDateReturn, type DateAdjustFn, type DateGranularity, type DateRangePreset, type YearsRange, alignCenter, alignDate, alignEnd, alignStart, alignStartDate, constrainStart, constrainValue,
|
|
111
|
+
export { type AdjustDateParams, type AdjustDateReturn, type DateAdjustFn, type DateGranularity, type DateRangePreset, type YearsRange, alignCenter, alignDate, alignEnd, alignStart, alignStartDate, constrainStart, constrainValue, formatRange, formatSelectedDate, formatVisibleRange, getAdjustedDateFn, getCustomWeeksInMonth, getDateRangePreset, getDayFormatter, getDaysInWeek, getDecadeRange, getEndDate, getMonthDays, getMonthFormatter, getMonthNames, getNextDay, getNextPage, getNextRow, getNextSection, getPreviousAvailableDate, getPreviousDay, getPreviousPage, getPreviousRow, getPreviousSection, getSectionEnd, getSectionStart, getTodayDate, getUnitDuration, getWeekDays, getWeekdayFormats, getYearsRange, isDateDisabled, isDateEqual, isDateInvalid, isDateOutsideVisibleRange, isDateUnavailable, isNextVisibleRangeInvalid, isPreviousVisibleRangeInvalid, isTodayDate, parseDateString, setCalendar, setDate, setMonth, setYear };
|
package/dist/index.d.ts
CHANGED
|
@@ -39,12 +39,6 @@ declare function getUnitDuration(duration: DateDuration): {
|
|
|
39
39
|
};
|
|
40
40
|
declare function getEndDate(startDate: DateValue, duration: DateDuration): _internationalized_date.CalendarDate | _internationalized_date.CalendarDateTime | _internationalized_date.ZonedDateTime;
|
|
41
41
|
|
|
42
|
-
/**
|
|
43
|
-
* Formats a date using the given format string as defined in:
|
|
44
|
-
* https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
|
|
45
|
-
*/
|
|
46
|
-
declare function formatDate(value: DateValue, formatString: string, locale: string, timeZone?: string): string;
|
|
47
|
-
|
|
48
42
|
declare function formatRange(startDate: DateValue, endDate: DateValue, formatter: DateFormatter, toString: (start: string, end: string) => string, timeZone: string): string;
|
|
49
43
|
|
|
50
44
|
declare function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string): string;
|
|
@@ -114,4 +108,4 @@ declare function parseDateString(date: string, locale: string, timeZone: string)
|
|
|
114
108
|
type DateRangePreset = "thisWeek" | "lastWeek" | "thisMonth" | "lastMonth" | "thisQuarter" | "lastQuarter" | "thisYear" | "lastYear" | "last3Days" | "last7Days" | "last14Days" | "last30Days" | "last90Days";
|
|
115
109
|
declare function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue];
|
|
116
110
|
|
|
117
|
-
export { type AdjustDateParams, type AdjustDateReturn, type DateAdjustFn, type DateGranularity, type DateRangePreset, type YearsRange, alignCenter, alignDate, alignEnd, alignStart, alignStartDate, constrainStart, constrainValue,
|
|
111
|
+
export { type AdjustDateParams, type AdjustDateReturn, type DateAdjustFn, type DateGranularity, type DateRangePreset, type YearsRange, alignCenter, alignDate, alignEnd, alignStart, alignStartDate, constrainStart, constrainValue, formatRange, formatSelectedDate, formatVisibleRange, getAdjustedDateFn, getCustomWeeksInMonth, getDateRangePreset, getDayFormatter, getDaysInWeek, getDecadeRange, getEndDate, getMonthDays, getMonthFormatter, getMonthNames, getNextDay, getNextPage, getNextRow, getNextSection, getPreviousAvailableDate, getPreviousDay, getPreviousPage, getPreviousRow, getPreviousSection, getSectionEnd, getSectionStart, getTodayDate, getUnitDuration, getWeekDays, getWeekdayFormats, getYearsRange, isDateDisabled, isDateEqual, isDateInvalid, isDateOutsideVisibleRange, isDateUnavailable, isNextVisibleRangeInvalid, isPreviousVisibleRangeInvalid, isTodayDate, parseDateString, setCalendar, setDate, setMonth, setYear };
|
package/dist/index.js
CHANGED
|
@@ -27,7 +27,6 @@ __export(src_exports, {
|
|
|
27
27
|
alignStartDate: () => alignStartDate,
|
|
28
28
|
constrainStart: () => constrainStart,
|
|
29
29
|
constrainValue: () => constrainValue,
|
|
30
|
-
formatDate: () => formatDate,
|
|
31
30
|
formatRange: () => formatRange,
|
|
32
31
|
formatSelectedDate: () => formatSelectedDate,
|
|
33
32
|
formatVisibleRange: () => formatVisibleRange,
|
|
@@ -205,58 +204,6 @@ function getEndDate(startDate, duration) {
|
|
|
205
204
|
return startDate.add(d);
|
|
206
205
|
}
|
|
207
206
|
|
|
208
|
-
// src/format-date.ts
|
|
209
|
-
var import_date3 = require("@internationalized/date");
|
|
210
|
-
function createRegEx(sign) {
|
|
211
|
-
let symbols = "\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";
|
|
212
|
-
return new RegExp("(^|>|" + symbols + ")(" + sign + ")($|<|" + symbols + ")", "g");
|
|
213
|
-
}
|
|
214
|
-
function formatDate(value, formatString, locale, timeZone = "UTC") {
|
|
215
|
-
const datetime = (0, import_date3.toCalendarDateTime)(value);
|
|
216
|
-
const date = datetime.toDate(timeZone);
|
|
217
|
-
const formats = {
|
|
218
|
-
// Time in ms
|
|
219
|
-
T: date.getTime(),
|
|
220
|
-
// Minutes
|
|
221
|
-
m: date.toLocaleString(locale, { minute: "numeric" }),
|
|
222
|
-
mm: date.toLocaleString(locale, { minute: "2-digit" }),
|
|
223
|
-
// Seconds
|
|
224
|
-
s: date.toLocaleString(locale, { second: "numeric" }),
|
|
225
|
-
ss: date.toLocaleString(locale, { second: "2-digit" }),
|
|
226
|
-
// Hours
|
|
227
|
-
h: date.toLocaleString(locale, { hour: "numeric", hour12: true }),
|
|
228
|
-
hh: date.toLocaleString(locale, { hour: "2-digit", hour12: true }),
|
|
229
|
-
H: date.toLocaleString(locale, { hour: "numeric", hour12: false }),
|
|
230
|
-
HH: date.toLocaleString(locale, { hour: "2-digit", hour12: false }),
|
|
231
|
-
// Day period
|
|
232
|
-
aa: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toLowerCase(),
|
|
233
|
-
AA: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toUpperCase(),
|
|
234
|
-
// Day of week
|
|
235
|
-
E: date.toLocaleString(locale, { weekday: "short" }),
|
|
236
|
-
EE: date.toLocaleString(locale, { weekday: "short" }),
|
|
237
|
-
EEE: date.toLocaleString(locale, { weekday: "short" }),
|
|
238
|
-
EEEE: date.toLocaleString(locale, { weekday: "long" }),
|
|
239
|
-
// Date of month
|
|
240
|
-
d: datetime.day,
|
|
241
|
-
dd: date.toLocaleString(locale, { day: "2-digit" }),
|
|
242
|
-
// Months
|
|
243
|
-
M: datetime.month + 1,
|
|
244
|
-
MM: date.toLocaleString(locale, { month: "2-digit" }),
|
|
245
|
-
MMM: date.toLocaleString(locale, { month: "short" }),
|
|
246
|
-
MMMM: date.toLocaleString(locale, { month: "long" }),
|
|
247
|
-
// Years
|
|
248
|
-
yy: date.toLocaleString(locale, { year: "2-digit" }),
|
|
249
|
-
yyyy: date.toLocaleString(locale, { year: "numeric" }),
|
|
250
|
-
YY: date.toLocaleString(locale, { year: "2-digit" }),
|
|
251
|
-
YYYY: date.toLocaleString(locale, { year: "numeric" })
|
|
252
|
-
};
|
|
253
|
-
let result = formatString;
|
|
254
|
-
for (const key in formats) {
|
|
255
|
-
result = result.replace(createRegEx(key), "$1" + formats[key] + "$3");
|
|
256
|
-
}
|
|
257
|
-
return result;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
207
|
// src/format-range.ts
|
|
261
208
|
function formatRange(startDate, endDate, formatter, toString, timeZone) {
|
|
262
209
|
let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone));
|
|
@@ -282,10 +229,10 @@ function formatRange(startDate, endDate, formatter, toString, timeZone) {
|
|
|
282
229
|
}
|
|
283
230
|
|
|
284
231
|
// src/format-selected-date.ts
|
|
285
|
-
var
|
|
232
|
+
var import_date4 = require("@internationalized/date");
|
|
286
233
|
|
|
287
234
|
// src/get-day-formatter.ts
|
|
288
|
-
var
|
|
235
|
+
var import_date3 = require("@internationalized/date");
|
|
289
236
|
|
|
290
237
|
// src/get-era-format.ts
|
|
291
238
|
function getEraFormat(date) {
|
|
@@ -294,8 +241,8 @@ function getEraFormat(date) {
|
|
|
294
241
|
|
|
295
242
|
// src/get-day-formatter.ts
|
|
296
243
|
function getDayFormatter(locale, timeZone) {
|
|
297
|
-
const date = (0,
|
|
298
|
-
return new
|
|
244
|
+
const date = (0, import_date3.toCalendarDateTime)((0, import_date3.today)(timeZone));
|
|
245
|
+
return new import_date3.DateFormatter(locale, {
|
|
299
246
|
weekday: "long",
|
|
300
247
|
month: "long",
|
|
301
248
|
year: "numeric",
|
|
@@ -310,20 +257,20 @@ function formatSelectedDate(startDate, endDate, locale, timeZone) {
|
|
|
310
257
|
let start = startDate;
|
|
311
258
|
let end = endDate ?? startDate;
|
|
312
259
|
let formatter = getDayFormatter(locale, timeZone);
|
|
313
|
-
if ((0,
|
|
260
|
+
if ((0, import_date4.isSameDay)(start, end)) {
|
|
314
261
|
return formatter.format(start.toDate(timeZone));
|
|
315
262
|
}
|
|
316
263
|
return formatRange(start, end, formatter, (start2, end2) => `${start2} \u2013 ${end2}`, timeZone);
|
|
317
264
|
}
|
|
318
265
|
|
|
319
266
|
// src/format-visible-range.ts
|
|
320
|
-
var
|
|
267
|
+
var import_date6 = require("@internationalized/date");
|
|
321
268
|
|
|
322
269
|
// src/get-month-formatter.ts
|
|
323
|
-
var
|
|
270
|
+
var import_date5 = require("@internationalized/date");
|
|
324
271
|
function getMonthFormatter(locale, timeZone) {
|
|
325
|
-
const date = (0,
|
|
326
|
-
return new
|
|
272
|
+
const date = (0, import_date5.toCalendarDate)((0, import_date5.today)(timeZone));
|
|
273
|
+
return new import_date5.DateFormatter(locale, {
|
|
327
274
|
month: "long",
|
|
328
275
|
year: "numeric",
|
|
329
276
|
era: getEraFormat(date),
|
|
@@ -337,14 +284,14 @@ function formatVisibleRange(startDate, endDate, locale, timeZone) {
|
|
|
337
284
|
const start = startDate;
|
|
338
285
|
const end = endDate ?? startDate;
|
|
339
286
|
const dayFormatter = getDayFormatter(locale, timeZone);
|
|
340
|
-
if (!(0,
|
|
287
|
+
if (!(0, import_date6.isSameDay)(start, (0, import_date6.startOfMonth)(start))) {
|
|
341
288
|
return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));
|
|
342
289
|
}
|
|
343
290
|
const monthFormatter = getMonthFormatter(locale, timeZone);
|
|
344
|
-
if ((0,
|
|
291
|
+
if ((0, import_date6.isSameDay)(end, (0, import_date6.endOfMonth)(start))) {
|
|
345
292
|
return monthFormatter.format(start.toDate(timeZone));
|
|
346
293
|
}
|
|
347
|
-
if ((0,
|
|
294
|
+
if ((0, import_date6.isSameDay)(end, (0, import_date6.endOfMonth)(end))) {
|
|
348
295
|
return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));
|
|
349
296
|
}
|
|
350
297
|
return "";
|
|
@@ -362,12 +309,12 @@ function getDecadeRange(year) {
|
|
|
362
309
|
}
|
|
363
310
|
|
|
364
311
|
// src/get-month-days.ts
|
|
365
|
-
var
|
|
312
|
+
var import_date8 = require("@internationalized/date");
|
|
366
313
|
|
|
367
314
|
// src/get-start-of-week.ts
|
|
368
|
-
var
|
|
315
|
+
var import_date7 = require("@internationalized/date");
|
|
369
316
|
function getStartOfWeek(date, locale, firstDayOfWeek = 0) {
|
|
370
|
-
const day = (0,
|
|
317
|
+
const day = (0, import_date7.getDayOfWeek)(date, locale);
|
|
371
318
|
const diff = (day - firstDayOfWeek + 7) % 7;
|
|
372
319
|
return date.subtract({ days: diff });
|
|
373
320
|
}
|
|
@@ -380,7 +327,7 @@ function getDaysInWeek(weekIndex, from, locale, firstDayOfWeek) {
|
|
|
380
327
|
while (dates.length < 7) {
|
|
381
328
|
dates.push(date);
|
|
382
329
|
let nextDate = date.add({ days: 1 });
|
|
383
|
-
if ((0,
|
|
330
|
+
if ((0, import_date8.isSameDay)(date, nextDate)) {
|
|
384
331
|
break;
|
|
385
332
|
}
|
|
386
333
|
date = nextDate;
|
|
@@ -389,9 +336,9 @@ function getDaysInWeek(weekIndex, from, locale, firstDayOfWeek) {
|
|
|
389
336
|
}
|
|
390
337
|
function getCustomWeeksInMonth(from, locale, firstDayOfWeek) {
|
|
391
338
|
if (firstDayOfWeek == null) {
|
|
392
|
-
return (0,
|
|
339
|
+
return (0, import_date8.getWeeksInMonth)(from, locale);
|
|
393
340
|
}
|
|
394
|
-
const paddingDays = ((0,
|
|
341
|
+
const paddingDays = ((0, import_date8.getDayOfWeek)((0, import_date8.startOfMonth)(from), locale) - firstDayOfWeek + 7) % 7;
|
|
395
342
|
return Math.ceil((paddingDays + from.calendar.getDaysInMonth(from)) / 7);
|
|
396
343
|
}
|
|
397
344
|
function getMonthDays(from, locale, numOfWeeks, firstDayOfWeek) {
|
|
@@ -412,11 +359,11 @@ function getMonthNames(locale, format = "long") {
|
|
|
412
359
|
}
|
|
413
360
|
|
|
414
361
|
// src/get-weekday-formats.ts
|
|
415
|
-
var
|
|
362
|
+
var import_date9 = require("@internationalized/date");
|
|
416
363
|
function getWeekdayFormats(locale, timeZone) {
|
|
417
|
-
const longFormat = new
|
|
418
|
-
const shortFormat = new
|
|
419
|
-
const narrowFormat = new
|
|
364
|
+
const longFormat = new import_date9.DateFormatter(locale, { weekday: "long", timeZone });
|
|
365
|
+
const shortFormat = new import_date9.DateFormatter(locale, { weekday: "short", timeZone });
|
|
366
|
+
const narrowFormat = new import_date9.DateFormatter(locale, { weekday: "narrow", timeZone });
|
|
420
367
|
return (value) => {
|
|
421
368
|
const date = value instanceof Date ? value : value.toDate(timeZone);
|
|
422
369
|
return {
|
|
@@ -446,9 +393,9 @@ function getYearsRange(range) {
|
|
|
446
393
|
}
|
|
447
394
|
|
|
448
395
|
// src/mutation.ts
|
|
449
|
-
var
|
|
396
|
+
var import_date10 = require("@internationalized/date");
|
|
450
397
|
function getTodayDate(timeZone) {
|
|
451
|
-
return (0,
|
|
398
|
+
return (0, import_date10.today)(timeZone ?? (0, import_date10.getLocalTimeZone)());
|
|
452
399
|
}
|
|
453
400
|
function getNextDay(date) {
|
|
454
401
|
return date.add({ days: 1 });
|
|
@@ -463,7 +410,7 @@ function setYear(date, year) {
|
|
|
463
410
|
return date.set({ year });
|
|
464
411
|
}
|
|
465
412
|
function setCalendar(date, calendar) {
|
|
466
|
-
return (0,
|
|
413
|
+
return (0, import_date10.toCalendar)((0, import_date10.toCalendarDateTime)(date), calendar);
|
|
467
414
|
}
|
|
468
415
|
function setDate(date, startDate, isDateUnavailable2, locale, minValue, maxValue) {
|
|
469
416
|
let result;
|
|
@@ -484,7 +431,7 @@ function getPreviousAvailableDate(date, minValue, locale, isDateUnavailable2) {
|
|
|
484
431
|
}
|
|
485
432
|
|
|
486
433
|
// src/pagination.ts
|
|
487
|
-
var
|
|
434
|
+
var import_date11 = require("@internationalized/date");
|
|
488
435
|
function getAdjustedDateFn(visibleDuration, locale, minValue, maxValue) {
|
|
489
436
|
return function getDate(options) {
|
|
490
437
|
const { startDate, focusedDate } = options;
|
|
@@ -575,13 +522,13 @@ function getSectionStart(focusedDate, startDate, visibleDuration, locale, minVal
|
|
|
575
522
|
}
|
|
576
523
|
if (visibleDuration.weeks) {
|
|
577
524
|
return adjust({
|
|
578
|
-
focusedDate: (0,
|
|
525
|
+
focusedDate: (0, import_date11.startOfWeek)(focusedDate, locale),
|
|
579
526
|
startDate
|
|
580
527
|
});
|
|
581
528
|
}
|
|
582
529
|
if (visibleDuration.months || visibleDuration.years) {
|
|
583
530
|
return adjust({
|
|
584
|
-
focusedDate: (0,
|
|
531
|
+
focusedDate: (0, import_date11.startOfMonth)(focusedDate),
|
|
585
532
|
startDate
|
|
586
533
|
});
|
|
587
534
|
}
|
|
@@ -598,13 +545,13 @@ function getSectionEnd(focusedDate, startDate, visibleDuration, locale, minValue
|
|
|
598
545
|
if (visibleDuration.weeks) {
|
|
599
546
|
return adjust({
|
|
600
547
|
//@ts-expect-error - endOfWeek is loosely typed
|
|
601
|
-
focusedDate: (0,
|
|
548
|
+
focusedDate: (0, import_date11.endOfWeek)(focusedDate, locale),
|
|
602
549
|
startDate
|
|
603
550
|
});
|
|
604
551
|
}
|
|
605
552
|
if (visibleDuration.months || visibleDuration.years) {
|
|
606
553
|
return adjust({
|
|
607
|
-
focusedDate: (0,
|
|
554
|
+
focusedDate: (0, import_date11.endOfMonth)(focusedDate),
|
|
608
555
|
startDate
|
|
609
556
|
});
|
|
610
557
|
}
|
|
@@ -659,7 +606,7 @@ function getPreviousSection(focusedDate, startDate, larger, visibleDuration, loc
|
|
|
659
606
|
}
|
|
660
607
|
|
|
661
608
|
// src/parse-date.ts
|
|
662
|
-
var
|
|
609
|
+
var import_date12 = require("@internationalized/date");
|
|
663
610
|
var isValidYear = (year) => year != null && year.length === 4;
|
|
664
611
|
var isValidMonth = (month) => month != null && parseFloat(month) <= 12;
|
|
665
612
|
var isValidDay = (day) => day != null && parseFloat(day) <= 31;
|
|
@@ -674,16 +621,16 @@ function parseDateString(date, locale, timeZone) {
|
|
|
674
621
|
day || (day = curr.getDate().toString());
|
|
675
622
|
}
|
|
676
623
|
if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {
|
|
677
|
-
return new
|
|
624
|
+
return new import_date12.CalendarDate(+year, +month, +day);
|
|
678
625
|
}
|
|
679
626
|
const time = Date.parse(date);
|
|
680
627
|
if (!isNaN(time)) {
|
|
681
628
|
const date2 = new Date(time);
|
|
682
|
-
return new
|
|
629
|
+
return new import_date12.CalendarDate(date2.getFullYear(), date2.getMonth() + 1, date2.getDate());
|
|
683
630
|
}
|
|
684
631
|
}
|
|
685
632
|
function createRegex(locale, timeZone) {
|
|
686
|
-
const formatter = new
|
|
633
|
+
const formatter = new import_date12.DateFormatter(locale, { day: "numeric", month: "numeric", year: "numeric", timeZone });
|
|
687
634
|
const parts = formatter.formatToParts(new Date(2e3, 11, 25));
|
|
688
635
|
return parts.map(({ type, value }) => type === "literal" ? `${value}?` : `((?!=<${type}>)\\d+)?`).join("");
|
|
689
636
|
}
|
|
@@ -708,18 +655,18 @@ function extract(pattern, str) {
|
|
|
708
655
|
}
|
|
709
656
|
|
|
710
657
|
// src/preset.ts
|
|
711
|
-
var
|
|
658
|
+
var import_date13 = require("@internationalized/date");
|
|
712
659
|
function getDateRangePreset(preset, locale, timeZone) {
|
|
713
|
-
const today4 = (0,
|
|
660
|
+
const today4 = (0, import_date13.now)(timeZone);
|
|
714
661
|
switch (preset) {
|
|
715
662
|
case "thisWeek":
|
|
716
|
-
return [(0,
|
|
663
|
+
return [(0, import_date13.startOfWeek)(today4, locale), (0, import_date13.endOfWeek)(today4, locale)];
|
|
717
664
|
case "thisMonth":
|
|
718
|
-
return [(0,
|
|
665
|
+
return [(0, import_date13.startOfMonth)(today4), today4];
|
|
719
666
|
case "thisQuarter":
|
|
720
|
-
return [(0,
|
|
667
|
+
return [(0, import_date13.startOfMonth)(today4).add({ months: -today4.month % 3 }), today4];
|
|
721
668
|
case "thisYear":
|
|
722
|
-
return [(0,
|
|
669
|
+
return [(0, import_date13.startOfYear)(today4), today4];
|
|
723
670
|
case "last3Days":
|
|
724
671
|
return [today4.add({ days: -2 }), today4];
|
|
725
672
|
case "last7Days":
|
|
@@ -731,16 +678,16 @@ function getDateRangePreset(preset, locale, timeZone) {
|
|
|
731
678
|
case "last90Days":
|
|
732
679
|
return [today4.add({ days: -89 }), today4];
|
|
733
680
|
case "lastMonth":
|
|
734
|
-
return [(0,
|
|
681
|
+
return [(0, import_date13.startOfMonth)(today4.add({ months: -1 })), (0, import_date13.endOfMonth)(today4.add({ months: -1 }))];
|
|
735
682
|
case "lastQuarter":
|
|
736
683
|
return [
|
|
737
|
-
(0,
|
|
738
|
-
(0,
|
|
684
|
+
(0, import_date13.startOfMonth)(today4.add({ months: -today4.month % 3 - 3 })),
|
|
685
|
+
(0, import_date13.endOfMonth)(today4.add({ months: -today4.month % 3 - 1 }))
|
|
739
686
|
];
|
|
740
687
|
case "lastWeek":
|
|
741
|
-
return [(0,
|
|
688
|
+
return [(0, import_date13.startOfWeek)(today4, locale).add({ weeks: -1 }), (0, import_date13.endOfWeek)(today4, locale).add({ weeks: -1 })];
|
|
742
689
|
case "lastYear":
|
|
743
|
-
return [(0,
|
|
690
|
+
return [(0, import_date13.startOfYear)(today4.add({ years: -1 })), (0, import_date13.endOfYear)(today4.add({ years: -1 }))];
|
|
744
691
|
default:
|
|
745
692
|
throw new Error(`Invalid date range preset: ${preset}`);
|
|
746
693
|
}
|
|
@@ -754,7 +701,6 @@ function getDateRangePreset(preset, locale, timeZone) {
|
|
|
754
701
|
alignStartDate,
|
|
755
702
|
constrainStart,
|
|
756
703
|
constrainValue,
|
|
757
|
-
formatDate,
|
|
758
704
|
formatRange,
|
|
759
705
|
formatSelectedDate,
|
|
760
706
|
formatVisibleRange,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/constrain.ts","../src/align.ts","../src/assertion.ts","../src/duration.ts","../src/format-date.ts","../src/format-range.ts","../src/format-selected-date.ts","../src/get-day-formatter.ts","../src/get-era-format.ts","../src/format-visible-range.ts","../src/get-month-formatter.ts","../src/get-decade-range.ts","../src/get-month-days.ts","../src/get-start-of-week.ts","../src/get-month-names.ts","../src/get-weekday-formats.ts","../src/get-week-days.ts","../src/get-year-range.ts","../src/mutation.ts","../src/pagination.ts","../src/parse-date.ts","../src/preset.ts"],"sourcesContent":["export * from \"./align\"\nexport * from \"./assertion\"\nexport * from \"./constrain\"\nexport * from \"./duration\"\nexport * from \"./format-date\"\nexport * from \"./format-range\"\nexport * from \"./format-selected-date\"\nexport * from \"./format-visible-range\"\nexport * from \"./get-day-formatter\"\nexport * from \"./get-decade-range\"\nexport * from \"./get-month-days\"\nexport * from \"./get-month-formatter\"\nexport * from \"./get-month-names\"\nexport * from \"./get-week-days\"\nexport * from \"./get-weekday-formats\"\nexport * from \"./get-year-range\"\nexport * from \"./mutation\"\nexport * from \"./pagination\"\nexport * from \"./parse-date\"\nexport * from \"./preset\"\nexport type { DateAdjustFn, DateGranularity } from \"./types\"\n","import {\n type DateDuration,\n type DateValue,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate,\n} from \"@internationalized/date\"\n\n/* -----------------------------------------------------------------------------\n * Align date to start, end, or center of a duration\n * -----------------------------------------------------------------------------*/\n\nexport function alignCenter(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let halfDuration: DateDuration = {}\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2)\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignStart(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n // align to the start of the largest unit\n let aligned = date\n if (duration.years) {\n aligned = startOfYear(date)\n } else if (duration.months) {\n aligned = startOfMonth(date)\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale)\n }\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignEnd(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let d: DateDuration = { ...duration }\n // subtract 1 from the smallest unit\n if (d.days) {\n d.days--\n } else if (d.weeks) {\n d.weeks--\n } else if (d.months) {\n d.months--\n } else if (d.years) {\n d.years--\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\n/* -----------------------------------------------------------------------------\n * Constrain a date to a min/max range\n * -----------------------------------------------------------------------------*/\n\nexport function constrainStart(\n date: DateValue,\n aligned: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n if (min && date.compare(min) >= 0) {\n aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale))\n }\n\n if (max && date.compare(max) <= 0) {\n aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale))\n }\n\n return aligned\n}\n\nexport function constrainValue(date: DateValue, minValue?: DateValue, maxValue?: DateValue): DateValue {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue))\n }\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue))\n }\n return date\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\nimport { alignCenter, alignEnd, alignStart } from \"./constrain\"\nimport type { DateAlignment } from \"./types\"\n\nexport function alignDate(\n date: DateValue,\n alignment: DateAlignment,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n switch (alignment) {\n case \"start\":\n return alignStart(date, duration, locale, min, max)\n case \"end\":\n return alignEnd(date, duration, locale, min, max)\n case \"center\":\n default:\n return alignCenter(date, duration, locale, min, max)\n }\n}\n\nexport function alignStartDate(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n if (date.compare(startDate) < 0) {\n return alignEnd(date, duration, locale, min, max)\n }\n if (date.compare(endDate) > 0) {\n return alignStart(date, duration, locale, min, max)\n }\n return startDate\n}\n","import { type DateValue, isSameDay, isToday } from \"@internationalized/date\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function isTodayDate(date: DateValue, timeZone: string) {\n return isToday(date, timeZone)\n}\n\nexport function isDateEqual(dateA: DateValue, dateB?: DateValue | null) {\n return dateB != null && isSameDay(dateA, dateB)\n}\n\nexport function isDateInvalid(date: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null) {\n return (minValue != null && date.compare(minValue) < 0) || (maxValue != null && date.compare(maxValue) > 0)\n}\n\nexport function isDateDisabled(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateUnavailable(\n date: DateValue | null,\n isUnavailable: DateAvailableFn | undefined,\n locale: string,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n if (!date) {\n return false\n }\n if (isUnavailable?.(date, locale)) {\n return true\n }\n return isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateOutsideVisibleRange(date: DateValue, startDate: DateValue, endDate: DateValue) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0\n}\n\nexport function isPreviousVisibleRangeInvalid(\n startDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const prevDate = startDate.subtract({ days: 1 })\n return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue)\n}\n\nexport function isNextVisibleRangeInvalid(\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const nextDate = endDate.add({ days: 1 })\n return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue)\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\n\nexport function getUnitDuration(duration: DateDuration) {\n let d = { ...duration }\n for (let key in d) {\n d[key] = 1\n }\n return d\n}\n\nexport function getEndDate(startDate: DateValue, duration: DateDuration) {\n let d = { ...duration }\n if (d.days) {\n d.days--\n } else {\n d.days = -1\n }\n return startDate.add(d)\n}\n","import { type DateValue, toCalendarDateTime } from \"@internationalized/date\"\n\nfunction createRegEx(sign: string) {\n let symbols = \"\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;\"\n return new RegExp(\"(^|>|\" + symbols + \")(\" + sign + \")($|<|\" + symbols + \")\", \"g\")\n}\n\n/**\n * Formats a date using the given format string as defined in:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n */\nexport function formatDate(value: DateValue, formatString: string, locale: string, timeZone: string = \"UTC\") {\n const datetime = toCalendarDateTime(value)\n const date = datetime.toDate(timeZone)\n\n const formats = {\n // Time in ms\n T: date.getTime(),\n\n // Minutes\n m: date.toLocaleString(locale, { minute: \"numeric\" }),\n mm: date.toLocaleString(locale, { minute: \"2-digit\" }),\n\n // Seconds\n s: date.toLocaleString(locale, { second: \"numeric\" }),\n ss: date.toLocaleString(locale, { second: \"2-digit\" }),\n\n // Hours\n h: date.toLocaleString(locale, { hour: \"numeric\", hour12: true }),\n hh: date.toLocaleString(locale, { hour: \"2-digit\", hour12: true }),\n H: date.toLocaleString(locale, { hour: \"numeric\", hour12: false }),\n HH: date.toLocaleString(locale, { hour: \"2-digit\", hour12: false }),\n\n // Day period\n aa: date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLowerCase(),\n AA: date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toUpperCase(),\n\n // Day of week\n E: date.toLocaleString(locale, { weekday: \"short\" }),\n EE: date.toLocaleString(locale, { weekday: \"short\" }),\n EEE: date.toLocaleString(locale, { weekday: \"short\" }),\n EEEE: date.toLocaleString(locale, { weekday: \"long\" }),\n\n // Date of month\n d: datetime.day,\n dd: date.toLocaleString(locale, { day: \"2-digit\" }),\n\n // Months\n M: datetime.month + 1,\n MM: date.toLocaleString(locale, { month: \"2-digit\" }),\n MMM: date.toLocaleString(locale, { month: \"short\" }),\n MMMM: date.toLocaleString(locale, { month: \"long\" }),\n\n // Years\n yy: date.toLocaleString(locale, { year: \"2-digit\" }),\n yyyy: date.toLocaleString(locale, { year: \"numeric\" }),\n YY: date.toLocaleString(locale, { year: \"2-digit\" }),\n YYYY: date.toLocaleString(locale, { year: \"numeric\" }),\n }\n\n let result = formatString\n for (const key in formats) {\n result = result.replace(createRegEx(key), \"$1\" + formats[key] + \"$3\")\n }\n\n return result\n}\n","import type { DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function formatRange(\n startDate: DateValue,\n endDate: DateValue,\n formatter: DateFormatter,\n toString: (start: string, end: string) => string,\n timeZone: string,\n) {\n let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone))\n\n let separatorIndex = -1\n\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i]\n if (part.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i\n } else if (part.source === \"endRange\") {\n break\n }\n }\n\n let start = \"\"\n let end = \"\"\n\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n start += parts[i].value\n } else if (i > separatorIndex) {\n end += parts[i].value\n }\n }\n\n return toString(start, end)\n}\n","import { type DateValue, isSameDay } from \"@internationalized/date\"\nimport { formatRange } from \"./format-range\"\nimport { getDayFormatter } from \"./get-day-formatter\"\n\nexport function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n let start = startDate\n let end = endDate ?? startDate\n\n let formatter = getDayFormatter(locale, timeZone)\n\n if (isSameDay(start, end)) {\n return formatter.format(start.toDate(timeZone))\n }\n\n return formatRange(start, end, formatter, (start, end) => `${start} – ${end}`, timeZone)\n}\n","import { DateFormatter, toCalendarDateTime, today } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getDayFormatter(locale: string, timeZone: string) {\n const date = toCalendarDateTime(today(timeZone))\n return new DateFormatter(locale, {\n weekday: \"long\",\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era: getEraFormat(date),\n timeZone,\n })\n}\n","import type { DateValue } from \"@internationalized/date\"\n\nexport function getEraFormat(date: DateValue | undefined): \"short\" | undefined {\n return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : undefined\n}\n","import { type DateValue, endOfMonth, isSameDay, startOfMonth } from \"@internationalized/date\"\nimport { getDayFormatter } from \"./get-day-formatter\"\nimport { getMonthFormatter } from \"./get-month-formatter\"\n\nexport function formatVisibleRange(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n const start = startDate\n const end = endDate ?? startDate\n\n const dayFormatter = getDayFormatter(locale, timeZone)\n\n if (!isSameDay(start, startOfMonth(start))) {\n return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n const monthFormatter = getMonthFormatter(locale, timeZone)\n\n if (isSameDay(end, endOfMonth(start))) {\n return monthFormatter.format(start.toDate(timeZone))\n }\n\n if (isSameDay(end, endOfMonth(end))) {\n return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n return \"\"\n}\n","import { today, toCalendarDate, DateFormatter } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getMonthFormatter(locale: string, timeZone: string) {\n const date = toCalendarDate(today(timeZone))\n return new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n era: getEraFormat(date),\n calendar: date?.calendar.identifier,\n timeZone: timeZone,\n })\n}\n","export function getDecadeRange(year: number) {\n const computedYear = year - (year % 10) - 1\n\n const years: number[] = []\n\n for (let i = 0; i < 12; i += 1) {\n const value = computedYear + i\n years.push(value)\n }\n\n return years\n}\n","import { type DateValue, getWeeksInMonth, isSameDay, getDayOfWeek, startOfMonth } from \"@internationalized/date\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getDaysInWeek(weekIndex: number, from: DateValue, locale: string, firstDayOfWeek?: number) {\n const weekDate = from.add({ weeks: weekIndex })\n const dates: DateValue[] = []\n let date = getStartOfWeek(weekDate, locale, firstDayOfWeek)\n while (dates.length < 7) {\n dates.push(date)\n let nextDate = date.add({ days: 1 })\n if (isSameDay(date, nextDate)) {\n break\n }\n date = nextDate\n }\n return dates\n}\n\nexport function getCustomWeeksInMonth(from: DateValue, locale: string, firstDayOfWeek?: number) {\n if (firstDayOfWeek == null) {\n return getWeeksInMonth(from, locale)\n }\n const paddingDays = (getDayOfWeek(startOfMonth(from), locale) - firstDayOfWeek + 7) % 7\n\n return Math.ceil((paddingDays + from.calendar.getDaysInMonth(from)) / 7)\n}\n\nexport function getMonthDays(from: DateValue, locale: string, numOfWeeks?: number, firstDayOfWeek?: number) {\n const monthWeeks = numOfWeeks ?? getCustomWeeksInMonth(from, locale, firstDayOfWeek)\n\n const weeks = [...new Array(monthWeeks).keys()]\n return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek))\n}\n","import { type DateValue, getDayOfWeek } from \"@internationalized/date\"\n\nexport function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek: number = 0) {\n const day = getDayOfWeek(date, locale)\n const diff = (day - firstDayOfWeek + 7) % 7\n return date.subtract({ days: diff })\n}\n","export function getMonthNames(locale: string, format: Intl.DateTimeFormatOptions[\"month\"] = \"long\") {\n const date = new Date(2021, 0, 1)\n const monthNames: string[] = []\n for (let i = 0; i < 12; i++) {\n monthNames.push(date.toLocaleString(locale, { month: format }))\n date.setMonth(date.getMonth() + 1)\n }\n return monthNames\n}\n","import { type DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function getWeekdayFormats(locale: string, timeZone: string) {\n const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone })\n const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone })\n const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone })\n return <T extends DateValue | Date>(value: T) => {\n const date = value instanceof Date ? value : value.toDate(timeZone)\n return {\n value,\n short: shortFormat.format(date),\n long: longFormat.format(date),\n narrow: narrowFormat.format(date),\n }\n }\n}\n","import type { DateValue } from \"@internationalized/date\"\nimport { getWeekdayFormats } from \"./get-weekday-formats\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getWeekDays(date: DateValue, startOfWeekProp: number | undefined, timeZone: string, locale: string) {\n const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp)\n const weeks = [...new Array(7).keys()]\n const format = getWeekdayFormats(locale, timeZone)\n return weeks.map((index) => format(firstDayOfWeek.add({ days: index })))\n}\n","export interface YearsRange {\n from: number\n to: number\n}\n\nexport function getYearsRange(range: YearsRange) {\n const years: number[] = []\n\n for (let year = range.from; year <= range.to; year += 1) {\n years.push(year)\n }\n\n return years\n}\n","import {\n type Calendar,\n type DateValue,\n getLocalTimeZone,\n toCalendar,\n toCalendarDateTime,\n today,\n} from \"@internationalized/date\"\nimport { constrainValue } from \"./constrain\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function getTodayDate(timeZone?: string) {\n return today(timeZone ?? getLocalTimeZone())\n}\n\nexport function getNextDay(date: DateValue) {\n return date.add({ days: 1 })\n}\n\nexport function getPreviousDay(date: DateValue) {\n return date.subtract({ days: 1 })\n}\n\nexport function setMonth(date: DateValue, month: number) {\n return date.set({ month })\n}\n\nexport function setYear(date: DateValue, year: number) {\n return date.set({ year })\n}\n\nexport function setCalendar(date: DateValue, calendar: Calendar) {\n return toCalendar(toCalendarDateTime(date), calendar)\n}\n\nexport function setDate(\n date: DateValue,\n startDate: DateValue,\n isDateUnavailable: DateAvailableFn,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue,\n) {\n let result: DateValue | undefined\n result = constrainValue(date, minValue, maxValue)\n result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable)\n return result\n}\n\nexport function getPreviousAvailableDate(\n date: DateValue,\n minValue: DateValue,\n locale: string,\n isDateUnavailable?: DateAvailableFn,\n) {\n if (!isDateUnavailable) {\n return date\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date, locale)) {\n date = date.subtract({ days: 1 })\n }\n\n if (date.compare(minValue) >= 0) {\n return date\n }\n}\n","import {\n type DateDuration,\n type DateValue,\n endOfMonth,\n endOfWeek,\n startOfMonth,\n startOfWeek,\n} from \"@internationalized/date\"\nimport { isDateInvalid } from \"./assertion\"\nimport { alignEnd, alignStart, constrainStart, constrainValue } from \"./constrain\"\nimport { getEndDate, getUnitDuration } from \"./duration\"\n\nexport interface AdjustDateParams {\n startDate: DateValue\n focusedDate: DateValue\n}\n\nexport interface AdjustDateReturn extends AdjustDateParams {\n endDate: DateValue\n}\n\nexport function getAdjustedDateFn(\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n return function getDate(options: AdjustDateParams): AdjustDateReturn {\n const { startDate, focusedDate } = options\n const endDate = getEndDate(startDate, visibleDuration)\n\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n if (isDateInvalid(focusedDate, minValue, maxValue)) {\n return {\n startDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(startDate) < 0) {\n return {\n startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(endDate) > 0) {\n return {\n startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n\n return {\n startDate,\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get next and previous page (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const start = startDate.add(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.add(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\nexport function getPreviousPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n let start = startDate.subtract(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.subtract(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\n/* -----------------------------------------------------------------------------\n * Get the next and previous row (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ weeks: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ weeks: 1 }),\n startDate,\n })\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get start and end date for a date section\n * -----------------------------------------------------------------------------*/\n\nexport function getSectionStart(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: startDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: startOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: startOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getSectionEnd(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const endDate = getEndDate(startDate, visibleDuration)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: endDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n //@ts-expect-error - endOfWeek is loosely typed\n focusedDate: endOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: endOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getNextSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.add({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ years: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.subtract({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ years: 1 }),\n startDate,\n })\n }\n}\n","import { CalendarDate, DateFormatter, type DateValue } from \"@internationalized/date\"\n\nconst isValidYear = (year: string | undefined): year is string => year != null && year.length === 4\nconst isValidMonth = (month: string | undefined): month is string => month != null && parseFloat(month) <= 12\nconst isValidDay = (day: string | undefined): day is string => day != null && parseFloat(day) <= 31\n\nexport function parseDateString(date: string, locale: string, timeZone: string): DateValue | undefined {\n const regex = createRegex(locale, timeZone)\n\n let { year, month, day } = extract(regex, date) ?? {}\n\n const hasMatch = year != null || month != null || day != null\n\n if (hasMatch) {\n const curr = new Date()\n year ||= curr.getFullYear().toString()\n month ||= (curr.getMonth() + 1).toString()\n day ||= curr.getDate().toString()\n }\n\n if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n return new CalendarDate(+year, +month, +day)\n }\n\n // We should never get here, but just in case\n const time = Date.parse(date)\n if (!isNaN(time)) {\n const date = new Date(time)\n return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate())\n }\n}\n\nfunction createRegex(locale: string, timeZone: string) {\n const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone })\n const parts = formatter.formatToParts(new Date(2000, 11, 25))\n return parts.map(({ type, value }) => (type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`)).join(\"\")\n}\n\ninterface DateParts {\n year: string\n month: string\n day: string\n}\n\nfunction extract(pattern: string | RegExp, str: string) {\n const matches = str.match(pattern)\n return pattern\n .toString()\n .match(/<(.+?)>/g)\n ?.map((group) => {\n const groupMatches = group.match(/<(.+)>/)\n if (!groupMatches || groupMatches.length <= 0) {\n return null\n }\n return group.match(/<(.+)>/)?.[1]\n })\n .reduce((acc, curr, index) => {\n if (!curr) return acc\n if (matches && matches.length > index) {\n acc[curr] = matches[index + 1]\n } else {\n acc[curr] = null\n }\n return acc\n }, {} as DateParts)\n}\n","import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type DateValue,\n} from \"@internationalized/date\"\n\nexport type DateRangePreset =\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisQuarter\"\n | \"lastQuarter\"\n | \"thisYear\"\n | \"lastYear\"\n | \"last3Days\"\n | \"last7Days\"\n | \"last14Days\"\n | \"last30Days\"\n | \"last90Days\"\n\nexport function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue] {\n const today = now(timeZone)\n\n switch (preset) {\n case \"thisWeek\":\n return [startOfWeek(today, locale), endOfWeek(today, locale)]\n case \"thisMonth\":\n return [startOfMonth(today), today]\n case \"thisQuarter\":\n return [startOfMonth(today).add({ months: -today.month % 3 }), today]\n case \"thisYear\":\n return [startOfYear(today), today]\n case \"last3Days\":\n return [today.add({ days: -2 }), today]\n case \"last7Days\":\n return [today.add({ days: -6 }), today]\n case \"last14Days\":\n return [today.add({ days: -13 }), today]\n case \"last30Days\":\n return [today.add({ days: -29 }), today]\n case \"last90Days\":\n return [today.add({ days: -89 }), today]\n case \"lastMonth\":\n return [startOfMonth(today.add({ months: -1 })), endOfMonth(today.add({ months: -1 }))]\n case \"lastQuarter\":\n return [\n startOfMonth(today.add({ months: (-today.month % 3) - 3 })),\n endOfMonth(today.add({ months: (-today.month % 3) - 1 })),\n ]\n case \"lastWeek\":\n return [startOfWeek(today, locale).add({ weeks: -1 }), endOfWeek(today, locale).add({ weeks: -1 })]\n case \"lastYear\":\n return [startOfYear(today.add({ years: -1 })), endOfYear(today.add({ years: -1 }))]\n default:\n throw new Error(`Invalid date range preset: ${preset}`)\n }\n}\n"],"mappings":"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","names":["import_date","import_date","import_date","import_date","start","end","import_date","import_date","import_date","import_date","import_date","import_date","isDateUnavailable","import_date","import_date","date","import_date","today"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/constrain.ts","../src/align.ts","../src/assertion.ts","../src/duration.ts","../src/format-range.ts","../src/format-selected-date.ts","../src/get-day-formatter.ts","../src/get-era-format.ts","../src/format-visible-range.ts","../src/get-month-formatter.ts","../src/get-decade-range.ts","../src/get-month-days.ts","../src/get-start-of-week.ts","../src/get-month-names.ts","../src/get-weekday-formats.ts","../src/get-week-days.ts","../src/get-year-range.ts","../src/mutation.ts","../src/pagination.ts","../src/parse-date.ts","../src/preset.ts"],"sourcesContent":["export * from \"./align\"\nexport * from \"./assertion\"\nexport * from \"./constrain\"\nexport * from \"./duration\"\nexport * from \"./format-range\"\nexport * from \"./format-selected-date\"\nexport * from \"./format-visible-range\"\nexport * from \"./get-day-formatter\"\nexport * from \"./get-decade-range\"\nexport * from \"./get-month-days\"\nexport * from \"./get-month-formatter\"\nexport * from \"./get-month-names\"\nexport * from \"./get-week-days\"\nexport * from \"./get-weekday-formats\"\nexport * from \"./get-year-range\"\nexport * from \"./mutation\"\nexport * from \"./pagination\"\nexport * from \"./parse-date\"\nexport * from \"./preset\"\nexport type { DateAdjustFn, DateGranularity } from \"./types\"\n","import {\n type DateDuration,\n type DateValue,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate,\n} from \"@internationalized/date\"\n\n/* -----------------------------------------------------------------------------\n * Align date to start, end, or center of a duration\n * -----------------------------------------------------------------------------*/\n\nexport function alignCenter(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let halfDuration: DateDuration = {}\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2)\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignStart(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n // align to the start of the largest unit\n let aligned = date\n if (duration.years) {\n aligned = startOfYear(date)\n } else if (duration.months) {\n aligned = startOfMonth(date)\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale)\n }\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignEnd(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let d: DateDuration = { ...duration }\n // subtract 1 from the smallest unit\n if (d.days) {\n d.days--\n } else if (d.weeks) {\n d.weeks--\n } else if (d.months) {\n d.months--\n } else if (d.years) {\n d.years--\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\n/* -----------------------------------------------------------------------------\n * Constrain a date to a min/max range\n * -----------------------------------------------------------------------------*/\n\nexport function constrainStart(\n date: DateValue,\n aligned: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n if (min && date.compare(min) >= 0) {\n aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale))\n }\n\n if (max && date.compare(max) <= 0) {\n aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale))\n }\n\n return aligned\n}\n\nexport function constrainValue(date: DateValue, minValue?: DateValue, maxValue?: DateValue): DateValue {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue))\n }\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue))\n }\n return date\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\nimport { alignCenter, alignEnd, alignStart } from \"./constrain\"\nimport type { DateAlignment } from \"./types\"\n\nexport function alignDate(\n date: DateValue,\n alignment: DateAlignment,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n switch (alignment) {\n case \"start\":\n return alignStart(date, duration, locale, min, max)\n case \"end\":\n return alignEnd(date, duration, locale, min, max)\n case \"center\":\n default:\n return alignCenter(date, duration, locale, min, max)\n }\n}\n\nexport function alignStartDate(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n if (date.compare(startDate) < 0) {\n return alignEnd(date, duration, locale, min, max)\n }\n if (date.compare(endDate) > 0) {\n return alignStart(date, duration, locale, min, max)\n }\n return startDate\n}\n","import { type DateValue, isSameDay, isToday } from \"@internationalized/date\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function isTodayDate(date: DateValue, timeZone: string) {\n return isToday(date, timeZone)\n}\n\nexport function isDateEqual(dateA: DateValue, dateB?: DateValue | null) {\n return dateB != null && isSameDay(dateA, dateB)\n}\n\nexport function isDateInvalid(date: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null) {\n return (minValue != null && date.compare(minValue) < 0) || (maxValue != null && date.compare(maxValue) > 0)\n}\n\nexport function isDateDisabled(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateUnavailable(\n date: DateValue | null,\n isUnavailable: DateAvailableFn | undefined,\n locale: string,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n if (!date) {\n return false\n }\n if (isUnavailable?.(date, locale)) {\n return true\n }\n return isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateOutsideVisibleRange(date: DateValue, startDate: DateValue, endDate: DateValue) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0\n}\n\nexport function isPreviousVisibleRangeInvalid(\n startDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const prevDate = startDate.subtract({ days: 1 })\n return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue)\n}\n\nexport function isNextVisibleRangeInvalid(\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const nextDate = endDate.add({ days: 1 })\n return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue)\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\n\nexport function getUnitDuration(duration: DateDuration) {\n let d = { ...duration }\n for (let key in d) {\n d[key] = 1\n }\n return d\n}\n\nexport function getEndDate(startDate: DateValue, duration: DateDuration) {\n let d = { ...duration }\n if (d.days) {\n d.days--\n } else {\n d.days = -1\n }\n return startDate.add(d)\n}\n","import type { DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function formatRange(\n startDate: DateValue,\n endDate: DateValue,\n formatter: DateFormatter,\n toString: (start: string, end: string) => string,\n timeZone: string,\n) {\n let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone))\n\n let separatorIndex = -1\n\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i]\n if (part.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i\n } else if (part.source === \"endRange\") {\n break\n }\n }\n\n let start = \"\"\n let end = \"\"\n\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n start += parts[i].value\n } else if (i > separatorIndex) {\n end += parts[i].value\n }\n }\n\n return toString(start, end)\n}\n","import { type DateValue, isSameDay } from \"@internationalized/date\"\nimport { formatRange } from \"./format-range\"\nimport { getDayFormatter } from \"./get-day-formatter\"\n\nexport function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n let start = startDate\n let end = endDate ?? startDate\n\n let formatter = getDayFormatter(locale, timeZone)\n\n if (isSameDay(start, end)) {\n return formatter.format(start.toDate(timeZone))\n }\n\n return formatRange(start, end, formatter, (start, end) => `${start} – ${end}`, timeZone)\n}\n","import { DateFormatter, toCalendarDateTime, today } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getDayFormatter(locale: string, timeZone: string) {\n const date = toCalendarDateTime(today(timeZone))\n return new DateFormatter(locale, {\n weekday: \"long\",\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era: getEraFormat(date),\n timeZone,\n })\n}\n","import type { DateValue } from \"@internationalized/date\"\n\nexport function getEraFormat(date: DateValue | undefined): \"short\" | undefined {\n return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : undefined\n}\n","import { type DateValue, endOfMonth, isSameDay, startOfMonth } from \"@internationalized/date\"\nimport { getDayFormatter } from \"./get-day-formatter\"\nimport { getMonthFormatter } from \"./get-month-formatter\"\n\nexport function formatVisibleRange(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n const start = startDate\n const end = endDate ?? startDate\n\n const dayFormatter = getDayFormatter(locale, timeZone)\n\n if (!isSameDay(start, startOfMonth(start))) {\n return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n const monthFormatter = getMonthFormatter(locale, timeZone)\n\n if (isSameDay(end, endOfMonth(start))) {\n return monthFormatter.format(start.toDate(timeZone))\n }\n\n if (isSameDay(end, endOfMonth(end))) {\n return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n return \"\"\n}\n","import { today, toCalendarDate, DateFormatter } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getMonthFormatter(locale: string, timeZone: string) {\n const date = toCalendarDate(today(timeZone))\n return new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n era: getEraFormat(date),\n calendar: date?.calendar.identifier,\n timeZone: timeZone,\n })\n}\n","export function getDecadeRange(year: number) {\n const computedYear = year - (year % 10) - 1\n\n const years: number[] = []\n\n for (let i = 0; i < 12; i += 1) {\n const value = computedYear + i\n years.push(value)\n }\n\n return years\n}\n","import { type DateValue, getWeeksInMonth, isSameDay, getDayOfWeek, startOfMonth } from \"@internationalized/date\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getDaysInWeek(weekIndex: number, from: DateValue, locale: string, firstDayOfWeek?: number) {\n const weekDate = from.add({ weeks: weekIndex })\n const dates: DateValue[] = []\n let date = getStartOfWeek(weekDate, locale, firstDayOfWeek)\n while (dates.length < 7) {\n dates.push(date)\n let nextDate = date.add({ days: 1 })\n if (isSameDay(date, nextDate)) {\n break\n }\n date = nextDate\n }\n return dates\n}\n\nexport function getCustomWeeksInMonth(from: DateValue, locale: string, firstDayOfWeek?: number) {\n if (firstDayOfWeek == null) {\n return getWeeksInMonth(from, locale)\n }\n const paddingDays = (getDayOfWeek(startOfMonth(from), locale) - firstDayOfWeek + 7) % 7\n\n return Math.ceil((paddingDays + from.calendar.getDaysInMonth(from)) / 7)\n}\n\nexport function getMonthDays(from: DateValue, locale: string, numOfWeeks?: number, firstDayOfWeek?: number) {\n const monthWeeks = numOfWeeks ?? getCustomWeeksInMonth(from, locale, firstDayOfWeek)\n\n const weeks = [...new Array(monthWeeks).keys()]\n return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek))\n}\n","import { type DateValue, getDayOfWeek } from \"@internationalized/date\"\n\nexport function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek: number = 0) {\n const day = getDayOfWeek(date, locale)\n const diff = (day - firstDayOfWeek + 7) % 7\n return date.subtract({ days: diff })\n}\n","export function getMonthNames(locale: string, format: Intl.DateTimeFormatOptions[\"month\"] = \"long\") {\n const date = new Date(2021, 0, 1)\n const monthNames: string[] = []\n for (let i = 0; i < 12; i++) {\n monthNames.push(date.toLocaleString(locale, { month: format }))\n date.setMonth(date.getMonth() + 1)\n }\n return monthNames\n}\n","import { type DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function getWeekdayFormats(locale: string, timeZone: string) {\n const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone })\n const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone })\n const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone })\n return <T extends DateValue | Date>(value: T) => {\n const date = value instanceof Date ? value : value.toDate(timeZone)\n return {\n value,\n short: shortFormat.format(date),\n long: longFormat.format(date),\n narrow: narrowFormat.format(date),\n }\n }\n}\n","import type { DateValue } from \"@internationalized/date\"\nimport { getWeekdayFormats } from \"./get-weekday-formats\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getWeekDays(date: DateValue, startOfWeekProp: number | undefined, timeZone: string, locale: string) {\n const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp)\n const weeks = [...new Array(7).keys()]\n const format = getWeekdayFormats(locale, timeZone)\n return weeks.map((index) => format(firstDayOfWeek.add({ days: index })))\n}\n","export interface YearsRange {\n from: number\n to: number\n}\n\nexport function getYearsRange(range: YearsRange) {\n const years: number[] = []\n\n for (let year = range.from; year <= range.to; year += 1) {\n years.push(year)\n }\n\n return years\n}\n","import {\n type Calendar,\n type DateValue,\n getLocalTimeZone,\n toCalendar,\n toCalendarDateTime,\n today,\n} from \"@internationalized/date\"\nimport { constrainValue } from \"./constrain\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function getTodayDate(timeZone?: string) {\n return today(timeZone ?? getLocalTimeZone())\n}\n\nexport function getNextDay(date: DateValue) {\n return date.add({ days: 1 })\n}\n\nexport function getPreviousDay(date: DateValue) {\n return date.subtract({ days: 1 })\n}\n\nexport function setMonth(date: DateValue, month: number) {\n return date.set({ month })\n}\n\nexport function setYear(date: DateValue, year: number) {\n return date.set({ year })\n}\n\nexport function setCalendar(date: DateValue, calendar: Calendar) {\n return toCalendar(toCalendarDateTime(date), calendar)\n}\n\nexport function setDate(\n date: DateValue,\n startDate: DateValue,\n isDateUnavailable: DateAvailableFn,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue,\n) {\n let result: DateValue | undefined\n result = constrainValue(date, minValue, maxValue)\n result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable)\n return result\n}\n\nexport function getPreviousAvailableDate(\n date: DateValue,\n minValue: DateValue,\n locale: string,\n isDateUnavailable?: DateAvailableFn,\n) {\n if (!isDateUnavailable) {\n return date\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date, locale)) {\n date = date.subtract({ days: 1 })\n }\n\n if (date.compare(minValue) >= 0) {\n return date\n }\n}\n","import {\n type DateDuration,\n type DateValue,\n endOfMonth,\n endOfWeek,\n startOfMonth,\n startOfWeek,\n} from \"@internationalized/date\"\nimport { isDateInvalid } from \"./assertion\"\nimport { alignEnd, alignStart, constrainStart, constrainValue } from \"./constrain\"\nimport { getEndDate, getUnitDuration } from \"./duration\"\n\nexport interface AdjustDateParams {\n startDate: DateValue\n focusedDate: DateValue\n}\n\nexport interface AdjustDateReturn extends AdjustDateParams {\n endDate: DateValue\n}\n\nexport function getAdjustedDateFn(\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n return function getDate(options: AdjustDateParams): AdjustDateReturn {\n const { startDate, focusedDate } = options\n const endDate = getEndDate(startDate, visibleDuration)\n\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n if (isDateInvalid(focusedDate, minValue, maxValue)) {\n return {\n startDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(startDate) < 0) {\n return {\n startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(endDate) > 0) {\n return {\n startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n\n return {\n startDate,\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get next and previous page (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const start = startDate.add(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.add(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\nexport function getPreviousPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n let start = startDate.subtract(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.subtract(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\n/* -----------------------------------------------------------------------------\n * Get the next and previous row (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ weeks: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ weeks: 1 }),\n startDate,\n })\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get start and end date for a date section\n * -----------------------------------------------------------------------------*/\n\nexport function getSectionStart(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: startDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: startOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: startOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getSectionEnd(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const endDate = getEndDate(startDate, visibleDuration)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: endDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n //@ts-expect-error - endOfWeek is loosely typed\n focusedDate: endOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: endOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getNextSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.add({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ years: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.subtract({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ years: 1 }),\n startDate,\n })\n }\n}\n","import { CalendarDate, DateFormatter, type DateValue } from \"@internationalized/date\"\n\nconst isValidYear = (year: string | undefined): year is string => year != null && year.length === 4\nconst isValidMonth = (month: string | undefined): month is string => month != null && parseFloat(month) <= 12\nconst isValidDay = (day: string | undefined): day is string => day != null && parseFloat(day) <= 31\n\nexport function parseDateString(date: string, locale: string, timeZone: string): DateValue | undefined {\n const regex = createRegex(locale, timeZone)\n\n let { year, month, day } = extract(regex, date) ?? {}\n\n const hasMatch = year != null || month != null || day != null\n\n if (hasMatch) {\n const curr = new Date()\n year ||= curr.getFullYear().toString()\n month ||= (curr.getMonth() + 1).toString()\n day ||= curr.getDate().toString()\n }\n\n if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n return new CalendarDate(+year, +month, +day)\n }\n\n // We should never get here, but just in case\n const time = Date.parse(date)\n if (!isNaN(time)) {\n const date = new Date(time)\n return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate())\n }\n}\n\nfunction createRegex(locale: string, timeZone: string) {\n const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone })\n const parts = formatter.formatToParts(new Date(2000, 11, 25))\n return parts.map(({ type, value }) => (type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`)).join(\"\")\n}\n\ninterface DateParts {\n year: string\n month: string\n day: string\n}\n\nfunction extract(pattern: string | RegExp, str: string) {\n const matches = str.match(pattern)\n return pattern\n .toString()\n .match(/<(.+?)>/g)\n ?.map((group) => {\n const groupMatches = group.match(/<(.+)>/)\n if (!groupMatches || groupMatches.length <= 0) {\n return null\n }\n return group.match(/<(.+)>/)?.[1]\n })\n .reduce((acc, curr, index) => {\n if (!curr) return acc\n if (matches && matches.length > index) {\n acc[curr] = matches[index + 1]\n } else {\n acc[curr] = null\n }\n return acc\n }, {} as DateParts)\n}\n","import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type DateValue,\n} from \"@internationalized/date\"\n\nexport type DateRangePreset =\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisQuarter\"\n | \"lastQuarter\"\n | \"thisYear\"\n | \"lastYear\"\n | \"last3Days\"\n | \"last7Days\"\n | \"last14Days\"\n | \"last30Days\"\n | \"last90Days\"\n\nexport function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue] {\n const today = now(timeZone)\n\n switch (preset) {\n case \"thisWeek\":\n return [startOfWeek(today, locale), endOfWeek(today, locale)]\n case \"thisMonth\":\n return [startOfMonth(today), today]\n case \"thisQuarter\":\n return [startOfMonth(today).add({ months: -today.month % 3 }), today]\n case \"thisYear\":\n return [startOfYear(today), today]\n case \"last3Days\":\n return [today.add({ days: -2 }), today]\n case \"last7Days\":\n return [today.add({ days: -6 }), today]\n case \"last14Days\":\n return [today.add({ days: -13 }), today]\n case \"last30Days\":\n return [today.add({ days: -29 }), today]\n case \"last90Days\":\n return [today.add({ days: -89 }), today]\n case \"lastMonth\":\n return [startOfMonth(today.add({ months: -1 })), endOfMonth(today.add({ months: -1 }))]\n case \"lastQuarter\":\n return [\n startOfMonth(today.add({ months: (-today.month % 3) - 3 })),\n endOfMonth(today.add({ months: (-today.month % 3) - 1 })),\n ]\n case \"lastWeek\":\n return [startOfWeek(today, locale).add({ weeks: -1 }), endOfWeek(today, locale).add({ weeks: -1 })]\n case \"lastYear\":\n return [startOfYear(today.add({ years: -1 })), endOfYear(today.add({ years: -1 }))]\n default:\n throw new Error(`Invalid date range preset: ${preset}`)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,kBASO;AAMA,SAAS,YACd,MACA,UACA,QACA,KACA,KACW;AACX,MAAI,eAA6B,CAAC;AAClC,WAAS,OAAO,UAAU;AACxB,iBAAa,GAAG,IAAI,KAAK,MAAM,SAAS,GAAG,IAAI,CAAC;AAChD,QAAI,aAAa,GAAG,IAAI,KAAK,SAAS,GAAG,IAAI,MAAM,GAAG;AACpD,mBAAa,GAAG;AAAA,IAClB;AAAA,EACF;AAEA,MAAI,UAAU,WAAW,MAAM,UAAU,MAAM,EAAE,SAAS,YAAY;AACtE,SAAO,eAAe,MAAM,SAAS,UAAU,QAAQ,KAAK,GAAG;AACjE;AAEO,SAAS,WACd,MACA,UACA,QACA,KACA,KACW;AAEX,MAAI,UAAU;AACd,MAAI,SAAS,OAAO;AAClB,kBAAU,yBAAY,IAAI;AAAA,EAC5B,WAAW,SAAS,QAAQ;AAC1B,kBAAU,0BAAa,IAAI;AAAA,EAC7B,WAAW,SAAS,OAAO;AACzB,kBAAU,yBAAY,MAAM,MAAM;AAAA,EACpC;AAEA,SAAO,eAAe,MAAM,SAAS,UAAU,QAAQ,KAAK,GAAG;AACjE;AAEO,SAAS,SACd,MACA,UACA,QACA,KACA,KACW;AACX,MAAI,IAAkB,EAAE,GAAG,SAAS;AAEpC,MAAI,EAAE,MAAM;AACV,MAAE;AAAA,EACJ,WAAW,EAAE,OAAO;AAClB,MAAE;AAAA,EACJ,WAAW,EAAE,QAAQ;AACnB,MAAE;AAAA,EACJ,WAAW,EAAE,OAAO;AAClB,MAAE;AAAA,EACJ;AAEA,MAAI,UAAU,WAAW,MAAM,UAAU,MAAM,EAAE,SAAS,CAAC;AAC3D,SAAO,eAAe,MAAM,SAAS,UAAU,QAAQ,KAAK,GAAG;AACjE;AAMO,SAAS,eACd,MACA,SACA,UACA,QACA,KACA,KACW;AACX,MAAI,OAAO,KAAK,QAAQ,GAAG,KAAK,GAAG;AACjC,kBAAU,qBAAQ,SAAS,eAAW,4BAAe,GAAG,GAAG,UAAU,MAAM,CAAC;AAAA,EAC9E;AAEA,MAAI,OAAO,KAAK,QAAQ,GAAG,KAAK,GAAG;AACjC,kBAAU,qBAAQ,SAAS,aAAS,4BAAe,GAAG,GAAG,UAAU,MAAM,CAAC;AAAA,EAC5E;AAEA,SAAO;AACT;AAEO,SAAS,eAAe,MAAiB,UAAsB,UAAiC;AACrG,MAAI,UAAU;AACZ,eAAO,qBAAQ,UAAM,4BAAe,QAAQ,CAAC;AAAA,EAC/C;AACA,MAAI,UAAU;AACZ,eAAO,qBAAQ,UAAM,4BAAe,QAAQ,CAAC;AAAA,EAC/C;AACA,SAAO;AACT;;;ACxGO,SAAS,UACd,MACA,WACA,UACA,QACA,KACA,KACA;AACA,UAAQ,WAAW;AAAA,IACjB,KAAK;AACH,aAAO,WAAW,MAAM,UAAU,QAAQ,KAAK,GAAG;AAAA,IACpD,KAAK;AACH,aAAO,SAAS,MAAM,UAAU,QAAQ,KAAK,GAAG;AAAA,IAClD,KAAK;AAAA,IACL;AACE,aAAO,YAAY,MAAM,UAAU,QAAQ,KAAK,GAAG;AAAA,EACvD;AACF;AAEO,SAAS,eACd,MACA,WACA,SACA,UACA,QACA,KACA,KACA;AACA,MAAI,KAAK,QAAQ,SAAS,IAAI,GAAG;AAC/B,WAAO,SAAS,MAAM,UAAU,QAAQ,KAAK,GAAG;AAAA,EAClD;AACA,MAAI,KAAK,QAAQ,OAAO,IAAI,GAAG;AAC7B,WAAO,WAAW,MAAM,UAAU,QAAQ,KAAK,GAAG;AAAA,EACpD;AACA,SAAO;AACT;;;ACvCA,IAAAA,eAAmD;AAG5C,SAAS,YAAY,MAAiB,UAAkB;AAC7D,aAAO,sBAAQ,MAAM,QAAQ;AAC/B;AAEO,SAAS,YAAY,OAAkB,OAA0B;AACtE,SAAO,SAAS,YAAQ,wBAAU,OAAO,KAAK;AAChD;AAEO,SAAS,cAAc,MAAiB,UAA6B,UAA6B;AACvG,SAAQ,YAAY,QAAQ,KAAK,QAAQ,QAAQ,IAAI,KAAO,YAAY,QAAQ,KAAK,QAAQ,QAAQ,IAAI;AAC3G;AAEO,SAAS,eACd,MACA,WACA,SACA,UACA,UACA;AACA,SAAO,KAAK,QAAQ,SAAS,IAAI,KAAK,KAAK,QAAQ,OAAO,IAAI,KAAK,cAAc,MAAM,UAAU,QAAQ;AAC3G;AAEO,SAAS,kBACd,MACA,eACA,QACA,UACA,UACA;AACA,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,MAAM,MAAM,GAAG;AACjC,WAAO;AAAA,EACT;AACA,SAAO,cAAc,MAAM,UAAU,QAAQ;AAC/C;AAEO,SAAS,0BAA0B,MAAiB,WAAsB,SAAoB;AACnG,SAAO,KAAK,QAAQ,SAAS,IAAI,KAAK,KAAK,QAAQ,OAAO,IAAI;AAChE;AAEO,SAAS,8BACd,WACA,UACA,UACA;AACA,QAAM,WAAW,UAAU,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/C,aAAO,wBAAU,UAAU,SAAS,KAAK,cAAc,UAAU,UAAU,QAAQ;AACrF;AAEO,SAAS,0BACd,SACA,UACA,UACA;AACA,QAAM,WAAW,QAAQ,IAAI,EAAE,MAAM,EAAE,CAAC;AACxC,aAAO,wBAAU,UAAU,OAAO,KAAK,cAAc,UAAU,UAAU,QAAQ;AACnF;;;AC3DO,SAAS,gBAAgB,UAAwB;AACtD,MAAI,IAAI,EAAE,GAAG,SAAS;AACtB,WAAS,OAAO,GAAG;AACjB,MAAE,GAAG,IAAI;AAAA,EACX;AACA,SAAO;AACT;AAEO,SAAS,WAAW,WAAsB,UAAwB;AACvE,MAAI,IAAI,EAAE,GAAG,SAAS;AACtB,MAAI,EAAE,MAAM;AACV,MAAE;AAAA,EACJ,OAAO;AACL,MAAE,OAAO;AAAA,EACX;AACA,SAAO,UAAU,IAAI,CAAC;AACxB;;;AChBO,SAAS,YACd,WACA,SACA,WACA,UACA,UACA;AACA,MAAI,QAAQ,UAAU,mBAAmB,UAAU,OAAO,QAAQ,GAAG,QAAQ,OAAO,QAAQ,CAAC;AAE7F,MAAI,iBAAiB;AAErB,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QAAI,OAAO,MAAM,CAAC;AAClB,QAAI,KAAK,WAAW,YAAY,KAAK,SAAS,WAAW;AACvD,uBAAiB;AAAA,IACnB,WAAW,KAAK,WAAW,YAAY;AACrC;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ;AACZ,MAAI,MAAM;AAEV,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QAAI,IAAI,gBAAgB;AACtB,eAAS,MAAM,CAAC,EAAE;AAAA,IACpB,WAAW,IAAI,gBAAgB;AAC7B,aAAO,MAAM,CAAC,EAAE;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,SAAS,OAAO,GAAG;AAC5B;;;AClCA,IAAAC,eAA0C;;;ACA1C,IAAAC,eAAyD;;;ACElD,SAAS,aAAa,MAAkD;AAC7E,SAAO,MAAM,SAAS,eAAe,aAAa,KAAK,QAAQ,OAAO,UAAU;AAClF;;;ADDO,SAAS,gBAAgB,QAAgB,UAAkB;AAChE,QAAM,WAAO,qCAAmB,oBAAM,QAAQ,CAAC;AAC/C,SAAO,IAAI,2BAAc,QAAQ;AAAA,IAC/B,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK,aAAa,IAAI;AAAA,IACtB;AAAA,EACF,CAAC;AACH;;;ADTO,SAAS,mBAAmB,WAAsB,SAA2B,QAAgB,UAAkB;AACpH,MAAI,QAAQ;AACZ,MAAI,MAAM,WAAW;AAErB,MAAI,YAAY,gBAAgB,QAAQ,QAAQ;AAEhD,UAAI,wBAAU,OAAO,GAAG,GAAG;AACzB,WAAO,UAAU,OAAO,MAAM,OAAO,QAAQ,CAAC;AAAA,EAChD;AAEA,SAAO,YAAY,OAAO,KAAK,WAAW,CAACC,QAAOC,SAAQ,GAAGD,MAAK,WAAMC,IAAG,IAAI,QAAQ;AACzF;;;AGfA,IAAAC,eAAoE;;;ACApE,IAAAC,eAAqD;AAG9C,SAAS,kBAAkB,QAAgB,UAAkB;AAClE,QAAM,WAAO,iCAAe,oBAAM,QAAQ,CAAC;AAC3C,SAAO,IAAI,2BAAc,QAAQ;AAAA,IAC/B,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK,aAAa,IAAI;AAAA,IACtB,UAAU,MAAM,SAAS;AAAA,IACzB;AAAA,EACF,CAAC;AACH;;;ADRO,SAAS,mBAAmB,WAAsB,SAA2B,QAAgB,UAAkB;AACpH,QAAM,QAAQ;AACd,QAAM,MAAM,WAAW;AAEvB,QAAM,eAAe,gBAAgB,QAAQ,QAAQ;AAErD,MAAI,KAAC,wBAAU,WAAO,2BAAa,KAAK,CAAC,GAAG;AAC1C,WAAO,aAAa,YAAY,MAAM,OAAO,QAAQ,GAAG,IAAI,OAAO,QAAQ,CAAC;AAAA,EAC9E;AAEA,QAAM,iBAAiB,kBAAkB,QAAQ,QAAQ;AAEzD,UAAI,wBAAU,SAAK,yBAAW,KAAK,CAAC,GAAG;AACrC,WAAO,eAAe,OAAO,MAAM,OAAO,QAAQ,CAAC;AAAA,EACrD;AAEA,UAAI,wBAAU,SAAK,yBAAW,GAAG,CAAC,GAAG;AACnC,WAAO,eAAe,YAAY,MAAM,OAAO,QAAQ,GAAG,IAAI,OAAO,QAAQ,CAAC;AAAA,EAChF;AAEA,SAAO;AACT;;;AEzBO,SAAS,eAAe,MAAc;AAC3C,QAAM,eAAe,OAAQ,OAAO,KAAM;AAE1C,QAAM,QAAkB,CAAC;AAEzB,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC9B,UAAM,QAAQ,eAAe;AAC7B,UAAM,KAAK,KAAK;AAAA,EAClB;AAEA,SAAO;AACT;;;ACXA,IAAAC,eAAuF;;;ACAvF,IAAAC,eAA6C;AAEtC,SAAS,eAAe,MAAiB,QAAgB,iBAAyB,GAAG;AAC1F,QAAM,UAAM,2BAAa,MAAM,MAAM;AACrC,QAAM,QAAQ,MAAM,iBAAiB,KAAK;AAC1C,SAAO,KAAK,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC;;;ADHO,SAAS,cAAc,WAAmB,MAAiB,QAAgB,gBAAyB;AACzG,QAAM,WAAW,KAAK,IAAI,EAAE,OAAO,UAAU,CAAC;AAC9C,QAAM,QAAqB,CAAC;AAC5B,MAAI,OAAO,eAAe,UAAU,QAAQ,cAAc;AAC1D,SAAO,MAAM,SAAS,GAAG;AACvB,UAAM,KAAK,IAAI;AACf,QAAI,WAAW,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC;AACnC,YAAI,wBAAU,MAAM,QAAQ,GAAG;AAC7B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,sBAAsB,MAAiB,QAAgB,gBAAyB;AAC9F,MAAI,kBAAkB,MAAM;AAC1B,eAAO,8BAAgB,MAAM,MAAM;AAAA,EACrC;AACA,QAAM,mBAAe,+BAAa,2BAAa,IAAI,GAAG,MAAM,IAAI,iBAAiB,KAAK;AAEtF,SAAO,KAAK,MAAM,cAAc,KAAK,SAAS,eAAe,IAAI,KAAK,CAAC;AACzE;AAEO,SAAS,aAAa,MAAiB,QAAgB,YAAqB,gBAAyB;AAC1G,QAAM,aAAa,cAAc,sBAAsB,MAAM,QAAQ,cAAc;AAEnF,QAAM,QAAQ,CAAC,GAAG,IAAI,MAAM,UAAU,EAAE,KAAK,CAAC;AAC9C,SAAO,MAAM,IAAI,CAAC,SAAS,cAAc,MAAM,MAAM,QAAQ,cAAc,CAAC;AAC9E;;;AEhCO,SAAS,cAAc,QAAgB,SAA8C,QAAQ;AAClG,QAAM,OAAO,IAAI,KAAK,MAAM,GAAG,CAAC;AAChC,QAAM,aAAuB,CAAC;AAC9B,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,eAAW,KAAK,KAAK,eAAe,QAAQ,EAAE,OAAO,OAAO,CAAC,CAAC;AAC9D,SAAK,SAAS,KAAK,SAAS,IAAI,CAAC;AAAA,EACnC;AACA,SAAO;AACT;;;ACRA,IAAAC,eAA8C;AAEvC,SAAS,kBAAkB,QAAgB,UAAkB;AAClE,QAAM,aAAa,IAAI,2BAAc,QAAQ,EAAE,SAAS,QAAQ,SAAS,CAAC;AAC1E,QAAM,cAAc,IAAI,2BAAc,QAAQ,EAAE,SAAS,SAAS,SAAS,CAAC;AAC5E,QAAM,eAAe,IAAI,2BAAc,QAAQ,EAAE,SAAS,UAAU,SAAS,CAAC;AAC9E,SAAO,CAA6B,UAAa;AAC/C,UAAM,OAAO,iBAAiB,OAAO,QAAQ,MAAM,OAAO,QAAQ;AAClE,WAAO;AAAA,MACL;AAAA,MACA,OAAO,YAAY,OAAO,IAAI;AAAA,MAC9B,MAAM,WAAW,OAAO,IAAI;AAAA,MAC5B,QAAQ,aAAa,OAAO,IAAI;AAAA,IAClC;AAAA,EACF;AACF;;;ACXO,SAAS,YAAY,MAAiB,iBAAqC,UAAkB,QAAgB;AAClH,QAAM,iBAAiB,eAAe,MAAM,QAAQ,eAAe;AACnE,QAAM,QAAQ,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC;AACrC,QAAM,SAAS,kBAAkB,QAAQ,QAAQ;AACjD,SAAO,MAAM,IAAI,CAAC,UAAU,OAAO,eAAe,IAAI,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC;AACzE;;;ACJO,SAAS,cAAc,OAAmB;AAC/C,QAAM,QAAkB,CAAC;AAEzB,WAAS,OAAO,MAAM,MAAM,QAAQ,MAAM,IAAI,QAAQ,GAAG;AACvD,UAAM,KAAK,IAAI;AAAA,EACjB;AAEA,SAAO;AACT;;;ACbA,IAAAC,gBAOO;AAIA,SAAS,aAAa,UAAmB;AAC9C,aAAO,qBAAM,gBAAY,gCAAiB,CAAC;AAC7C;AAEO,SAAS,WAAW,MAAiB;AAC1C,SAAO,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7B;AAEO,SAAS,eAAe,MAAiB;AAC9C,SAAO,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC;AAClC;AAEO,SAAS,SAAS,MAAiB,OAAe;AACvD,SAAO,KAAK,IAAI,EAAE,MAAM,CAAC;AAC3B;AAEO,SAAS,QAAQ,MAAiB,MAAc;AACrD,SAAO,KAAK,IAAI,EAAE,KAAK,CAAC;AAC1B;AAEO,SAAS,YAAY,MAAiB,UAAoB;AAC/D,aAAO,8BAAW,kCAAmB,IAAI,GAAG,QAAQ;AACtD;AAEO,SAAS,QACd,MACA,WACAC,oBACA,QACA,UACA,UACA;AACA,MAAI;AACJ,WAAS,eAAe,MAAM,UAAU,QAAQ;AAChD,WAAS,yBAAyB,MAAM,WAAW,QAAQA,kBAAiB;AAC5E,SAAO;AACT;AAEO,SAAS,yBACd,MACA,UACA,QACAA,oBACA;AACA,MAAI,CAACA,oBAAmB;AACtB,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,QAAQ,QAAQ,KAAK,KAAKA,mBAAkB,MAAM,MAAM,GAAG;AACrE,WAAO,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC;AAAA,EAClC;AAEA,MAAI,KAAK,QAAQ,QAAQ,KAAK,GAAG;AAC/B,WAAO;AAAA,EACT;AACF;;;AClEA,IAAAC,gBAOO;AAcA,SAAS,kBACd,iBACA,QACA,UACA,UACA;AACA,SAAO,SAAS,QAAQ,SAA6C;AACnE,UAAM,EAAE,WAAW,YAAY,IAAI;AACnC,UAAM,UAAU,WAAW,WAAW,eAAe;AAGrD,QAAI,cAAc,aAAa,UAAU,QAAQ,GAAG;AAClD,aAAO;AAAA,QACL;AAAA,QACA,aAAa,eAAe,aAAa,UAAU,QAAQ;AAAA,QAC3D;AAAA,MACF;AAAA,IACF;AAEA,QAAI,YAAY,QAAQ,SAAS,IAAI,GAAG;AACtC,aAAO;AAAA,QACL,WAAW,SAAS,aAAa,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,QAC5E,aAAa,eAAe,aAAa,UAAU,QAAQ;AAAA,QAC3D;AAAA,MACF;AAAA,IACF;AAEA,QAAI,YAAY,QAAQ,OAAO,IAAI,GAAG;AACpC,aAAO;AAAA,QACL,WAAW,WAAW,aAAa,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,QAC9E;AAAA,QACA,aAAa,eAAe,aAAa,UAAU,QAAQ;AAAA,MAC7D;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,aAAa,eAAe,aAAa,UAAU,QAAQ;AAAA,IAC7D;AAAA,EACF;AACF;AAMO,SAAS,YACd,aACA,WACA,iBACA,QACA,UACA,UACA;AACA,QAAM,SAAS,kBAAkB,iBAAiB,QAAQ,UAAU,QAAQ;AAC5E,QAAM,QAAQ,UAAU,IAAI,eAAe;AAE3C,SAAO,OAAO;AAAA,IACZ,aAAa,YAAY,IAAI,eAAe;AAAA,IAC5C,WAAW;AAAA,MACT,eAAe,aAAa,OAAO,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,MAC9E;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,gBACd,aACA,WACA,iBACA,QACA,UACA,UACA;AACA,QAAM,SAAS,kBAAkB,iBAAiB,QAAQ,UAAU,QAAQ;AAC5E,MAAI,QAAQ,UAAU,SAAS,eAAe;AAE9C,SAAO,OAAO;AAAA,IACZ,aAAa,YAAY,SAAS,eAAe;AAAA,IACjD,WAAW;AAAA,MACT,eAAe,aAAa,OAAO,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,MAC9E;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAMO,SAAS,WACd,aACA,WACA,iBACA,QACA,UACA,UACA;AACA,QAAM,SAAS,kBAAkB,iBAAiB,QAAQ,UAAU,QAAQ;AAE5E,MAAI,gBAAgB,MAAM;AACxB,WAAO,YAAY,aAAa,WAAW,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,EACxF;AAEA,MAAI,gBAAgB,SAAS,gBAAgB,UAAU,gBAAgB,OAAO;AAC5E,WAAO,OAAO;AAAA,MACZ,aAAa,YAAY,IAAI,EAAE,OAAO,EAAE,CAAC;AAAA,MACzC;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,SAAS,eACd,aACA,WACA,iBACA,QACA,UACA,UACA;AACA,QAAM,SAAS,kBAAkB,iBAAiB,QAAQ,UAAU,QAAQ;AAE5E,MAAI,gBAAgB,MAAM;AACxB,WAAO,gBAAgB,aAAa,WAAW,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,EAC5F;AAEA,MAAI,gBAAgB,SAAS,gBAAgB,UAAU,gBAAgB,OAAO;AAC5E,WAAO,OAAO;AAAA,MACZ,aAAa,YAAY,SAAS,EAAE,OAAO,EAAE,CAAC;AAAA,MAC9C;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAMO,SAAS,gBACd,aACA,WACA,iBACA,QACA,UACA,UACA;AACA,QAAM,SAAS,kBAAkB,iBAAiB,QAAQ,UAAU,QAAQ;AAE5E,MAAI,gBAAgB,MAAM;AACxB,WAAO,OAAO;AAAA,MACZ,aAAa;AAAA,MACb;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,OAAO;AACzB,WAAO,OAAO;AAAA,MACZ,iBAAa,2BAAY,aAAa,MAAM;AAAA,MAC5C;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,UAAU,gBAAgB,OAAO;AACnD,WAAO,OAAO;AAAA,MACZ,iBAAa,4BAAa,WAAW;AAAA,MACrC;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,SAAS,cACd,aACA,WACA,iBACA,QACA,UACA,UACA;AACA,QAAM,SAAS,kBAAkB,iBAAiB,QAAQ,UAAU,QAAQ;AAC5E,QAAM,UAAU,WAAW,WAAW,eAAe;AAErD,MAAI,gBAAgB,MAAM;AACxB,WAAO,OAAO;AAAA,MACZ,aAAa;AAAA,MACb;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,OAAO;AACzB,WAAO,OAAO;AAAA;AAAA,MAEZ,iBAAa,yBAAU,aAAa,MAAM;AAAA,MAC1C;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,UAAU,gBAAgB,OAAO;AACnD,WAAO,OAAO;AAAA,MACZ,iBAAa,0BAAW,WAAW;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,SAAS,eACd,aACA,WACA,QACA,iBACA,QACA,UACA,UACA;AACA,QAAM,SAAS,kBAAkB,iBAAiB,QAAQ,UAAU,QAAQ;AAE5E,MAAI,CAAC,UAAU,CAAC,gBAAgB,MAAM;AACpC,WAAO,OAAO;AAAA,MACZ,aAAa,YAAY,IAAI,gBAAgB,eAAe,CAAC;AAAA,MAC7D;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,MAAM;AACxB,WAAO,YAAY,aAAa,WAAW,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,EACxF;AAEA,MAAI,gBAAgB,OAAO;AACzB,WAAO,OAAO;AAAA,MACZ,aAAa,YAAY,IAAI,EAAE,QAAQ,EAAE,CAAC;AAAA,MAC1C;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,UAAU,gBAAgB,OAAO;AACnD,WAAO,OAAO;AAAA,MACZ,aAAa,YAAY,IAAI,EAAE,OAAO,EAAE,CAAC;AAAA,MACzC;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,SAAS,mBACd,aACA,WACA,QACA,iBACA,QACA,UACA,UACA;AACA,QAAM,SAAS,kBAAkB,iBAAiB,QAAQ,UAAU,QAAQ;AAE5E,MAAI,CAAC,UAAU,CAAC,gBAAgB,MAAM;AACpC,WAAO,OAAO;AAAA,MACZ,aAAa,YAAY,SAAS,gBAAgB,eAAe,CAAC;AAAA,MAClE;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,MAAM;AACxB,WAAO,gBAAgB,aAAa,WAAW,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,EAC5F;AAEA,MAAI,gBAAgB,OAAO;AACzB,WAAO,OAAO;AAAA,MACZ,aAAa,YAAY,SAAS,EAAE,QAAQ,EAAE,CAAC;AAAA,MAC/C;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,UAAU,gBAAgB,OAAO;AACnD,WAAO,OAAO;AAAA,MACZ,aAAa,YAAY,SAAS,EAAE,OAAO,EAAE,CAAC;AAAA,MAC9C;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC5SA,IAAAC,gBAA4D;AAE5D,IAAM,cAAc,CAAC,SAA6C,QAAQ,QAAQ,KAAK,WAAW;AAClG,IAAM,eAAe,CAAC,UAA+C,SAAS,QAAQ,WAAW,KAAK,KAAK;AAC3G,IAAM,aAAa,CAAC,QAA2C,OAAO,QAAQ,WAAW,GAAG,KAAK;AAE1F,SAAS,gBAAgB,MAAc,QAAgB,UAAyC;AACrG,QAAM,QAAQ,YAAY,QAAQ,QAAQ;AAE1C,MAAI,EAAE,MAAM,OAAO,IAAI,IAAI,QAAQ,OAAO,IAAI,KAAK,CAAC;AAEpD,QAAM,WAAW,QAAQ,QAAQ,SAAS,QAAQ,OAAO;AAEzD,MAAI,UAAU;AACZ,UAAM,OAAO,oBAAI,KAAK;AACtB,oBAAS,KAAK,YAAY,EAAE,SAAS;AACrC,uBAAW,KAAK,SAAS,IAAI,GAAG,SAAS;AACzC,kBAAQ,KAAK,QAAQ,EAAE,SAAS;AAAA,EAClC;AAEA,MAAI,YAAY,IAAI,KAAK,aAAa,KAAK,KAAK,WAAW,GAAG,GAAG;AAC/D,WAAO,IAAI,2BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;AAAA,EAC7C;AAGA,QAAM,OAAO,KAAK,MAAM,IAAI;AAC5B,MAAI,CAAC,MAAM,IAAI,GAAG;AAChB,UAAMC,QAAO,IAAI,KAAK,IAAI;AAC1B,WAAO,IAAI,2BAAaA,MAAK,YAAY,GAAGA,MAAK,SAAS,IAAI,GAAGA,MAAK,QAAQ,CAAC;AAAA,EACjF;AACF;AAEA,SAAS,YAAY,QAAgB,UAAkB;AACrD,QAAM,YAAY,IAAI,4BAAc,QAAQ,EAAE,KAAK,WAAW,OAAO,WAAW,MAAM,WAAW,SAAS,CAAC;AAC3G,QAAM,QAAQ,UAAU,cAAc,IAAI,KAAK,KAAM,IAAI,EAAE,CAAC;AAC5D,SAAO,MAAM,IAAI,CAAC,EAAE,MAAM,MAAM,MAAO,SAAS,YAAY,GAAG,KAAK,MAAM,SAAS,IAAI,UAAW,EAAE,KAAK,EAAE;AAC7G;AAQA,SAAS,QAAQ,SAA0B,KAAa;AACtD,QAAM,UAAU,IAAI,MAAM,OAAO;AACjC,SAAO,QACJ,SAAS,EACT,MAAM,UAAU,GACf,IAAI,CAAC,UAAU;AACf,UAAM,eAAe,MAAM,MAAM,QAAQ;AACzC,QAAI,CAAC,gBAAgB,aAAa,UAAU,GAAG;AAC7C,aAAO;AAAA,IACT;AACA,WAAO,MAAM,MAAM,QAAQ,IAAI,CAAC;AAAA,EAClC,CAAC,EACA,OAAO,CAAC,KAAK,MAAM,UAAU;AAC5B,QAAI,CAAC;AAAM,aAAO;AAClB,QAAI,WAAW,QAAQ,SAAS,OAAO;AACrC,UAAI,IAAI,IAAI,QAAQ,QAAQ,CAAC;AAAA,IAC/B,OAAO;AACL,UAAI,IAAI,IAAI;AAAA,IACd;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAc;AACtB;;;ACjEA,IAAAC,gBASO;AAiBA,SAAS,mBAAmB,QAAyB,QAAgB,UAA0C;AACpH,QAAMC,aAAQ,mBAAI,QAAQ;AAE1B,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,KAAC,2BAAYA,QAAO,MAAM,OAAG,yBAAUA,QAAO,MAAM,CAAC;AAAA,IAC9D,KAAK;AACH,aAAO,KAAC,4BAAaA,MAAK,GAAGA,MAAK;AAAA,IACpC,KAAK;AACH,aAAO,KAAC,4BAAaA,MAAK,EAAE,IAAI,EAAE,QAAQ,CAACA,OAAM,QAAQ,EAAE,CAAC,GAAGA,MAAK;AAAA,IACtE,KAAK;AACH,aAAO,KAAC,2BAAYA,MAAK,GAAGA,MAAK;AAAA,IACnC,KAAK;AACH,aAAO,CAACA,OAAM,IAAI,EAAE,MAAM,GAAG,CAAC,GAAGA,MAAK;AAAA,IACxC,KAAK;AACH,aAAO,CAACA,OAAM,IAAI,EAAE,MAAM,GAAG,CAAC,GAAGA,MAAK;AAAA,IACxC,KAAK;AACH,aAAO,CAACA,OAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GAAGA,MAAK;AAAA,IACzC,KAAK;AACH,aAAO,CAACA,OAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GAAGA,MAAK;AAAA,IACzC,KAAK;AACH,aAAO,CAACA,OAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GAAGA,MAAK;AAAA,IACzC,KAAK;AACH,aAAO,KAAC,4BAAaA,OAAM,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,OAAG,0BAAWA,OAAM,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;AAAA,IACxF,KAAK;AACH,aAAO;AAAA,YACL,4BAAaA,OAAM,IAAI,EAAE,QAAS,CAACA,OAAM,QAAQ,IAAK,EAAE,CAAC,CAAC;AAAA,YAC1D,0BAAWA,OAAM,IAAI,EAAE,QAAS,CAACA,OAAM,QAAQ,IAAK,EAAE,CAAC,CAAC;AAAA,MAC1D;AAAA,IACF,KAAK;AACH,aAAO,KAAC,2BAAYA,QAAO,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,OAAG,yBAAUA,QAAO,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC;AAAA,IACpG,KAAK;AACH,aAAO,KAAC,2BAAYA,OAAM,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,OAAG,yBAAUA,OAAM,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA,IACpF;AACE,YAAM,IAAI,MAAM,8BAA8B,MAAM,EAAE;AAAA,EAC1D;AACF;","names":["import_date","import_date","import_date","start","end","import_date","import_date","import_date","import_date","import_date","import_date","isDateUnavailable","import_date","import_date","date","import_date","today"]}
|
package/dist/index.mjs
CHANGED
|
@@ -137,58 +137,6 @@ function getEndDate(startDate, duration) {
|
|
|
137
137
|
return startDate.add(d);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
// src/format-date.ts
|
|
141
|
-
import { toCalendarDateTime } from "@internationalized/date";
|
|
142
|
-
function createRegEx(sign) {
|
|
143
|
-
let symbols = "\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";
|
|
144
|
-
return new RegExp("(^|>|" + symbols + ")(" + sign + ")($|<|" + symbols + ")", "g");
|
|
145
|
-
}
|
|
146
|
-
function formatDate(value, formatString, locale, timeZone = "UTC") {
|
|
147
|
-
const datetime = toCalendarDateTime(value);
|
|
148
|
-
const date = datetime.toDate(timeZone);
|
|
149
|
-
const formats = {
|
|
150
|
-
// Time in ms
|
|
151
|
-
T: date.getTime(),
|
|
152
|
-
// Minutes
|
|
153
|
-
m: date.toLocaleString(locale, { minute: "numeric" }),
|
|
154
|
-
mm: date.toLocaleString(locale, { minute: "2-digit" }),
|
|
155
|
-
// Seconds
|
|
156
|
-
s: date.toLocaleString(locale, { second: "numeric" }),
|
|
157
|
-
ss: date.toLocaleString(locale, { second: "2-digit" }),
|
|
158
|
-
// Hours
|
|
159
|
-
h: date.toLocaleString(locale, { hour: "numeric", hour12: true }),
|
|
160
|
-
hh: date.toLocaleString(locale, { hour: "2-digit", hour12: true }),
|
|
161
|
-
H: date.toLocaleString(locale, { hour: "numeric", hour12: false }),
|
|
162
|
-
HH: date.toLocaleString(locale, { hour: "2-digit", hour12: false }),
|
|
163
|
-
// Day period
|
|
164
|
-
aa: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toLowerCase(),
|
|
165
|
-
AA: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toUpperCase(),
|
|
166
|
-
// Day of week
|
|
167
|
-
E: date.toLocaleString(locale, { weekday: "short" }),
|
|
168
|
-
EE: date.toLocaleString(locale, { weekday: "short" }),
|
|
169
|
-
EEE: date.toLocaleString(locale, { weekday: "short" }),
|
|
170
|
-
EEEE: date.toLocaleString(locale, { weekday: "long" }),
|
|
171
|
-
// Date of month
|
|
172
|
-
d: datetime.day,
|
|
173
|
-
dd: date.toLocaleString(locale, { day: "2-digit" }),
|
|
174
|
-
// Months
|
|
175
|
-
M: datetime.month + 1,
|
|
176
|
-
MM: date.toLocaleString(locale, { month: "2-digit" }),
|
|
177
|
-
MMM: date.toLocaleString(locale, { month: "short" }),
|
|
178
|
-
MMMM: date.toLocaleString(locale, { month: "long" }),
|
|
179
|
-
// Years
|
|
180
|
-
yy: date.toLocaleString(locale, { year: "2-digit" }),
|
|
181
|
-
yyyy: date.toLocaleString(locale, { year: "numeric" }),
|
|
182
|
-
YY: date.toLocaleString(locale, { year: "2-digit" }),
|
|
183
|
-
YYYY: date.toLocaleString(locale, { year: "numeric" })
|
|
184
|
-
};
|
|
185
|
-
let result = formatString;
|
|
186
|
-
for (const key in formats) {
|
|
187
|
-
result = result.replace(createRegEx(key), "$1" + formats[key] + "$3");
|
|
188
|
-
}
|
|
189
|
-
return result;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
140
|
// src/format-range.ts
|
|
193
141
|
function formatRange(startDate, endDate, formatter, toString, timeZone) {
|
|
194
142
|
let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone));
|
|
@@ -217,7 +165,7 @@ function formatRange(startDate, endDate, formatter, toString, timeZone) {
|
|
|
217
165
|
import { isSameDay as isSameDay2 } from "@internationalized/date";
|
|
218
166
|
|
|
219
167
|
// src/get-day-formatter.ts
|
|
220
|
-
import { DateFormatter, toCalendarDateTime
|
|
168
|
+
import { DateFormatter, toCalendarDateTime, today } from "@internationalized/date";
|
|
221
169
|
|
|
222
170
|
// src/get-era-format.ts
|
|
223
171
|
function getEraFormat(date) {
|
|
@@ -226,7 +174,7 @@ function getEraFormat(date) {
|
|
|
226
174
|
|
|
227
175
|
// src/get-day-formatter.ts
|
|
228
176
|
function getDayFormatter(locale, timeZone) {
|
|
229
|
-
const date =
|
|
177
|
+
const date = toCalendarDateTime(today(timeZone));
|
|
230
178
|
return new DateFormatter(locale, {
|
|
231
179
|
weekday: "long",
|
|
232
180
|
month: "long",
|
|
@@ -381,7 +329,7 @@ function getYearsRange(range) {
|
|
|
381
329
|
import {
|
|
382
330
|
getLocalTimeZone,
|
|
383
331
|
toCalendar,
|
|
384
|
-
toCalendarDateTime as
|
|
332
|
+
toCalendarDateTime as toCalendarDateTime2,
|
|
385
333
|
today as today3
|
|
386
334
|
} from "@internationalized/date";
|
|
387
335
|
function getTodayDate(timeZone) {
|
|
@@ -400,7 +348,7 @@ function setYear(date, year) {
|
|
|
400
348
|
return date.set({ year });
|
|
401
349
|
}
|
|
402
350
|
function setCalendar(date, calendar) {
|
|
403
|
-
return toCalendar(
|
|
351
|
+
return toCalendar(toCalendarDateTime2(date), calendar);
|
|
404
352
|
}
|
|
405
353
|
function setDate(date, startDate, isDateUnavailable2, locale, minValue, maxValue) {
|
|
406
354
|
let result;
|
|
@@ -703,7 +651,6 @@ export {
|
|
|
703
651
|
alignStartDate,
|
|
704
652
|
constrainStart,
|
|
705
653
|
constrainValue,
|
|
706
|
-
formatDate,
|
|
707
654
|
formatRange,
|
|
708
655
|
formatSelectedDate,
|
|
709
656
|
formatVisibleRange,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constrain.ts","../src/align.ts","../src/assertion.ts","../src/duration.ts","../src/format-date.ts","../src/format-range.ts","../src/format-selected-date.ts","../src/get-day-formatter.ts","../src/get-era-format.ts","../src/format-visible-range.ts","../src/get-month-formatter.ts","../src/get-decade-range.ts","../src/get-month-days.ts","../src/get-start-of-week.ts","../src/get-month-names.ts","../src/get-weekday-formats.ts","../src/get-week-days.ts","../src/get-year-range.ts","../src/mutation.ts","../src/pagination.ts","../src/parse-date.ts","../src/preset.ts"],"sourcesContent":["import {\n type DateDuration,\n type DateValue,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate,\n} from \"@internationalized/date\"\n\n/* -----------------------------------------------------------------------------\n * Align date to start, end, or center of a duration\n * -----------------------------------------------------------------------------*/\n\nexport function alignCenter(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let halfDuration: DateDuration = {}\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2)\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignStart(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n // align to the start of the largest unit\n let aligned = date\n if (duration.years) {\n aligned = startOfYear(date)\n } else if (duration.months) {\n aligned = startOfMonth(date)\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale)\n }\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignEnd(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let d: DateDuration = { ...duration }\n // subtract 1 from the smallest unit\n if (d.days) {\n d.days--\n } else if (d.weeks) {\n d.weeks--\n } else if (d.months) {\n d.months--\n } else if (d.years) {\n d.years--\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\n/* -----------------------------------------------------------------------------\n * Constrain a date to a min/max range\n * -----------------------------------------------------------------------------*/\n\nexport function constrainStart(\n date: DateValue,\n aligned: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n if (min && date.compare(min) >= 0) {\n aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale))\n }\n\n if (max && date.compare(max) <= 0) {\n aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale))\n }\n\n return aligned\n}\n\nexport function constrainValue(date: DateValue, minValue?: DateValue, maxValue?: DateValue): DateValue {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue))\n }\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue))\n }\n return date\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\nimport { alignCenter, alignEnd, alignStart } from \"./constrain\"\nimport type { DateAlignment } from \"./types\"\n\nexport function alignDate(\n date: DateValue,\n alignment: DateAlignment,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n switch (alignment) {\n case \"start\":\n return alignStart(date, duration, locale, min, max)\n case \"end\":\n return alignEnd(date, duration, locale, min, max)\n case \"center\":\n default:\n return alignCenter(date, duration, locale, min, max)\n }\n}\n\nexport function alignStartDate(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n if (date.compare(startDate) < 0) {\n return alignEnd(date, duration, locale, min, max)\n }\n if (date.compare(endDate) > 0) {\n return alignStart(date, duration, locale, min, max)\n }\n return startDate\n}\n","import { type DateValue, isSameDay, isToday } from \"@internationalized/date\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function isTodayDate(date: DateValue, timeZone: string) {\n return isToday(date, timeZone)\n}\n\nexport function isDateEqual(dateA: DateValue, dateB?: DateValue | null) {\n return dateB != null && isSameDay(dateA, dateB)\n}\n\nexport function isDateInvalid(date: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null) {\n return (minValue != null && date.compare(minValue) < 0) || (maxValue != null && date.compare(maxValue) > 0)\n}\n\nexport function isDateDisabled(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateUnavailable(\n date: DateValue | null,\n isUnavailable: DateAvailableFn | undefined,\n locale: string,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n if (!date) {\n return false\n }\n if (isUnavailable?.(date, locale)) {\n return true\n }\n return isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateOutsideVisibleRange(date: DateValue, startDate: DateValue, endDate: DateValue) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0\n}\n\nexport function isPreviousVisibleRangeInvalid(\n startDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const prevDate = startDate.subtract({ days: 1 })\n return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue)\n}\n\nexport function isNextVisibleRangeInvalid(\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const nextDate = endDate.add({ days: 1 })\n return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue)\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\n\nexport function getUnitDuration(duration: DateDuration) {\n let d = { ...duration }\n for (let key in d) {\n d[key] = 1\n }\n return d\n}\n\nexport function getEndDate(startDate: DateValue, duration: DateDuration) {\n let d = { ...duration }\n if (d.days) {\n d.days--\n } else {\n d.days = -1\n }\n return startDate.add(d)\n}\n","import { type DateValue, toCalendarDateTime } from \"@internationalized/date\"\n\nfunction createRegEx(sign: string) {\n let symbols = \"\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;\"\n return new RegExp(\"(^|>|\" + symbols + \")(\" + sign + \")($|<|\" + symbols + \")\", \"g\")\n}\n\n/**\n * Formats a date using the given format string as defined in:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n */\nexport function formatDate(value: DateValue, formatString: string, locale: string, timeZone: string = \"UTC\") {\n const datetime = toCalendarDateTime(value)\n const date = datetime.toDate(timeZone)\n\n const formats = {\n // Time in ms\n T: date.getTime(),\n\n // Minutes\n m: date.toLocaleString(locale, { minute: \"numeric\" }),\n mm: date.toLocaleString(locale, { minute: \"2-digit\" }),\n\n // Seconds\n s: date.toLocaleString(locale, { second: \"numeric\" }),\n ss: date.toLocaleString(locale, { second: \"2-digit\" }),\n\n // Hours\n h: date.toLocaleString(locale, { hour: \"numeric\", hour12: true }),\n hh: date.toLocaleString(locale, { hour: \"2-digit\", hour12: true }),\n H: date.toLocaleString(locale, { hour: \"numeric\", hour12: false }),\n HH: date.toLocaleString(locale, { hour: \"2-digit\", hour12: false }),\n\n // Day period\n aa: date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLowerCase(),\n AA: date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toUpperCase(),\n\n // Day of week\n E: date.toLocaleString(locale, { weekday: \"short\" }),\n EE: date.toLocaleString(locale, { weekday: \"short\" }),\n EEE: date.toLocaleString(locale, { weekday: \"short\" }),\n EEEE: date.toLocaleString(locale, { weekday: \"long\" }),\n\n // Date of month\n d: datetime.day,\n dd: date.toLocaleString(locale, { day: \"2-digit\" }),\n\n // Months\n M: datetime.month + 1,\n MM: date.toLocaleString(locale, { month: \"2-digit\" }),\n MMM: date.toLocaleString(locale, { month: \"short\" }),\n MMMM: date.toLocaleString(locale, { month: \"long\" }),\n\n // Years\n yy: date.toLocaleString(locale, { year: \"2-digit\" }),\n yyyy: date.toLocaleString(locale, { year: \"numeric\" }),\n YY: date.toLocaleString(locale, { year: \"2-digit\" }),\n YYYY: date.toLocaleString(locale, { year: \"numeric\" }),\n }\n\n let result = formatString\n for (const key in formats) {\n result = result.replace(createRegEx(key), \"$1\" + formats[key] + \"$3\")\n }\n\n return result\n}\n","import type { DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function formatRange(\n startDate: DateValue,\n endDate: DateValue,\n formatter: DateFormatter,\n toString: (start: string, end: string) => string,\n timeZone: string,\n) {\n let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone))\n\n let separatorIndex = -1\n\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i]\n if (part.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i\n } else if (part.source === \"endRange\") {\n break\n }\n }\n\n let start = \"\"\n let end = \"\"\n\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n start += parts[i].value\n } else if (i > separatorIndex) {\n end += parts[i].value\n }\n }\n\n return toString(start, end)\n}\n","import { type DateValue, isSameDay } from \"@internationalized/date\"\nimport { formatRange } from \"./format-range\"\nimport { getDayFormatter } from \"./get-day-formatter\"\n\nexport function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n let start = startDate\n let end = endDate ?? startDate\n\n let formatter = getDayFormatter(locale, timeZone)\n\n if (isSameDay(start, end)) {\n return formatter.format(start.toDate(timeZone))\n }\n\n return formatRange(start, end, formatter, (start, end) => `${start} – ${end}`, timeZone)\n}\n","import { DateFormatter, toCalendarDateTime, today } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getDayFormatter(locale: string, timeZone: string) {\n const date = toCalendarDateTime(today(timeZone))\n return new DateFormatter(locale, {\n weekday: \"long\",\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era: getEraFormat(date),\n timeZone,\n })\n}\n","import type { DateValue } from \"@internationalized/date\"\n\nexport function getEraFormat(date: DateValue | undefined): \"short\" | undefined {\n return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : undefined\n}\n","import { type DateValue, endOfMonth, isSameDay, startOfMonth } from \"@internationalized/date\"\nimport { getDayFormatter } from \"./get-day-formatter\"\nimport { getMonthFormatter } from \"./get-month-formatter\"\n\nexport function formatVisibleRange(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n const start = startDate\n const end = endDate ?? startDate\n\n const dayFormatter = getDayFormatter(locale, timeZone)\n\n if (!isSameDay(start, startOfMonth(start))) {\n return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n const monthFormatter = getMonthFormatter(locale, timeZone)\n\n if (isSameDay(end, endOfMonth(start))) {\n return monthFormatter.format(start.toDate(timeZone))\n }\n\n if (isSameDay(end, endOfMonth(end))) {\n return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n return \"\"\n}\n","import { today, toCalendarDate, DateFormatter } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getMonthFormatter(locale: string, timeZone: string) {\n const date = toCalendarDate(today(timeZone))\n return new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n era: getEraFormat(date),\n calendar: date?.calendar.identifier,\n timeZone: timeZone,\n })\n}\n","export function getDecadeRange(year: number) {\n const computedYear = year - (year % 10) - 1\n\n const years: number[] = []\n\n for (let i = 0; i < 12; i += 1) {\n const value = computedYear + i\n years.push(value)\n }\n\n return years\n}\n","import { type DateValue, getWeeksInMonth, isSameDay, getDayOfWeek, startOfMonth } from \"@internationalized/date\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getDaysInWeek(weekIndex: number, from: DateValue, locale: string, firstDayOfWeek?: number) {\n const weekDate = from.add({ weeks: weekIndex })\n const dates: DateValue[] = []\n let date = getStartOfWeek(weekDate, locale, firstDayOfWeek)\n while (dates.length < 7) {\n dates.push(date)\n let nextDate = date.add({ days: 1 })\n if (isSameDay(date, nextDate)) {\n break\n }\n date = nextDate\n }\n return dates\n}\n\nexport function getCustomWeeksInMonth(from: DateValue, locale: string, firstDayOfWeek?: number) {\n if (firstDayOfWeek == null) {\n return getWeeksInMonth(from, locale)\n }\n const paddingDays = (getDayOfWeek(startOfMonth(from), locale) - firstDayOfWeek + 7) % 7\n\n return Math.ceil((paddingDays + from.calendar.getDaysInMonth(from)) / 7)\n}\n\nexport function getMonthDays(from: DateValue, locale: string, numOfWeeks?: number, firstDayOfWeek?: number) {\n const monthWeeks = numOfWeeks ?? getCustomWeeksInMonth(from, locale, firstDayOfWeek)\n\n const weeks = [...new Array(monthWeeks).keys()]\n return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek))\n}\n","import { type DateValue, getDayOfWeek } from \"@internationalized/date\"\n\nexport function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek: number = 0) {\n const day = getDayOfWeek(date, locale)\n const diff = (day - firstDayOfWeek + 7) % 7\n return date.subtract({ days: diff })\n}\n","export function getMonthNames(locale: string, format: Intl.DateTimeFormatOptions[\"month\"] = \"long\") {\n const date = new Date(2021, 0, 1)\n const monthNames: string[] = []\n for (let i = 0; i < 12; i++) {\n monthNames.push(date.toLocaleString(locale, { month: format }))\n date.setMonth(date.getMonth() + 1)\n }\n return monthNames\n}\n","import { type DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function getWeekdayFormats(locale: string, timeZone: string) {\n const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone })\n const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone })\n const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone })\n return <T extends DateValue | Date>(value: T) => {\n const date = value instanceof Date ? value : value.toDate(timeZone)\n return {\n value,\n short: shortFormat.format(date),\n long: longFormat.format(date),\n narrow: narrowFormat.format(date),\n }\n }\n}\n","import type { DateValue } from \"@internationalized/date\"\nimport { getWeekdayFormats } from \"./get-weekday-formats\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getWeekDays(date: DateValue, startOfWeekProp: number | undefined, timeZone: string, locale: string) {\n const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp)\n const weeks = [...new Array(7).keys()]\n const format = getWeekdayFormats(locale, timeZone)\n return weeks.map((index) => format(firstDayOfWeek.add({ days: index })))\n}\n","export interface YearsRange {\n from: number\n to: number\n}\n\nexport function getYearsRange(range: YearsRange) {\n const years: number[] = []\n\n for (let year = range.from; year <= range.to; year += 1) {\n years.push(year)\n }\n\n return years\n}\n","import {\n type Calendar,\n type DateValue,\n getLocalTimeZone,\n toCalendar,\n toCalendarDateTime,\n today,\n} from \"@internationalized/date\"\nimport { constrainValue } from \"./constrain\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function getTodayDate(timeZone?: string) {\n return today(timeZone ?? getLocalTimeZone())\n}\n\nexport function getNextDay(date: DateValue) {\n return date.add({ days: 1 })\n}\n\nexport function getPreviousDay(date: DateValue) {\n return date.subtract({ days: 1 })\n}\n\nexport function setMonth(date: DateValue, month: number) {\n return date.set({ month })\n}\n\nexport function setYear(date: DateValue, year: number) {\n return date.set({ year })\n}\n\nexport function setCalendar(date: DateValue, calendar: Calendar) {\n return toCalendar(toCalendarDateTime(date), calendar)\n}\n\nexport function setDate(\n date: DateValue,\n startDate: DateValue,\n isDateUnavailable: DateAvailableFn,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue,\n) {\n let result: DateValue | undefined\n result = constrainValue(date, minValue, maxValue)\n result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable)\n return result\n}\n\nexport function getPreviousAvailableDate(\n date: DateValue,\n minValue: DateValue,\n locale: string,\n isDateUnavailable?: DateAvailableFn,\n) {\n if (!isDateUnavailable) {\n return date\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date, locale)) {\n date = date.subtract({ days: 1 })\n }\n\n if (date.compare(minValue) >= 0) {\n return date\n }\n}\n","import {\n type DateDuration,\n type DateValue,\n endOfMonth,\n endOfWeek,\n startOfMonth,\n startOfWeek,\n} from \"@internationalized/date\"\nimport { isDateInvalid } from \"./assertion\"\nimport { alignEnd, alignStart, constrainStart, constrainValue } from \"./constrain\"\nimport { getEndDate, getUnitDuration } from \"./duration\"\n\nexport interface AdjustDateParams {\n startDate: DateValue\n focusedDate: DateValue\n}\n\nexport interface AdjustDateReturn extends AdjustDateParams {\n endDate: DateValue\n}\n\nexport function getAdjustedDateFn(\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n return function getDate(options: AdjustDateParams): AdjustDateReturn {\n const { startDate, focusedDate } = options\n const endDate = getEndDate(startDate, visibleDuration)\n\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n if (isDateInvalid(focusedDate, minValue, maxValue)) {\n return {\n startDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(startDate) < 0) {\n return {\n startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(endDate) > 0) {\n return {\n startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n\n return {\n startDate,\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get next and previous page (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const start = startDate.add(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.add(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\nexport function getPreviousPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n let start = startDate.subtract(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.subtract(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\n/* -----------------------------------------------------------------------------\n * Get the next and previous row (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ weeks: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ weeks: 1 }),\n startDate,\n })\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get start and end date for a date section\n * -----------------------------------------------------------------------------*/\n\nexport function getSectionStart(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: startDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: startOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: startOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getSectionEnd(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const endDate = getEndDate(startDate, visibleDuration)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: endDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n //@ts-expect-error - endOfWeek is loosely typed\n focusedDate: endOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: endOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getNextSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.add({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ years: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.subtract({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ years: 1 }),\n startDate,\n })\n }\n}\n","import { CalendarDate, DateFormatter, type DateValue } from \"@internationalized/date\"\n\nconst isValidYear = (year: string | undefined): year is string => year != null && year.length === 4\nconst isValidMonth = (month: string | undefined): month is string => month != null && parseFloat(month) <= 12\nconst isValidDay = (day: string | undefined): day is string => day != null && parseFloat(day) <= 31\n\nexport function parseDateString(date: string, locale: string, timeZone: string): DateValue | undefined {\n const regex = createRegex(locale, timeZone)\n\n let { year, month, day } = extract(regex, date) ?? {}\n\n const hasMatch = year != null || month != null || day != null\n\n if (hasMatch) {\n const curr = new Date()\n year ||= curr.getFullYear().toString()\n month ||= (curr.getMonth() + 1).toString()\n day ||= curr.getDate().toString()\n }\n\n if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n return new CalendarDate(+year, +month, +day)\n }\n\n // We should never get here, but just in case\n const time = Date.parse(date)\n if (!isNaN(time)) {\n const date = new Date(time)\n return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate())\n }\n}\n\nfunction createRegex(locale: string, timeZone: string) {\n const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone })\n const parts = formatter.formatToParts(new Date(2000, 11, 25))\n return parts.map(({ type, value }) => (type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`)).join(\"\")\n}\n\ninterface DateParts {\n year: string\n month: string\n day: string\n}\n\nfunction extract(pattern: string | RegExp, str: string) {\n const matches = str.match(pattern)\n return pattern\n .toString()\n .match(/<(.+?)>/g)\n ?.map((group) => {\n const groupMatches = group.match(/<(.+)>/)\n if (!groupMatches || groupMatches.length <= 0) {\n return null\n }\n return group.match(/<(.+)>/)?.[1]\n })\n .reduce((acc, curr, index) => {\n if (!curr) return acc\n if (matches && matches.length > index) {\n acc[curr] = matches[index + 1]\n } else {\n acc[curr] = null\n }\n return acc\n }, {} as DateParts)\n}\n","import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type DateValue,\n} from \"@internationalized/date\"\n\nexport type DateRangePreset =\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisQuarter\"\n | \"lastQuarter\"\n | \"thisYear\"\n | \"lastYear\"\n | \"last3Days\"\n | \"last7Days\"\n | \"last14Days\"\n | \"last30Days\"\n | \"last90Days\"\n\nexport function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue] {\n const today = now(timeZone)\n\n switch (preset) {\n case \"thisWeek\":\n return [startOfWeek(today, locale), endOfWeek(today, locale)]\n case \"thisMonth\":\n return [startOfMonth(today), today]\n case \"thisQuarter\":\n return [startOfMonth(today).add({ months: -today.month % 3 }), today]\n case \"thisYear\":\n return [startOfYear(today), today]\n case \"last3Days\":\n return [today.add({ days: -2 }), today]\n case \"last7Days\":\n return [today.add({ days: -6 }), today]\n case \"last14Days\":\n return [today.add({ days: -13 }), today]\n case \"last30Days\":\n return [today.add({ days: -29 }), today]\n case \"last90Days\":\n return [today.add({ days: -89 }), today]\n case \"lastMonth\":\n return [startOfMonth(today.add({ months: -1 })), endOfMonth(today.add({ months: -1 }))]\n case \"lastQuarter\":\n return [\n startOfMonth(today.add({ months: (-today.month % 3) - 3 })),\n endOfMonth(today.add({ months: (-today.month % 3) - 1 })),\n ]\n case \"lastWeek\":\n return [startOfWeek(today, locale).add({ weeks: -1 }), endOfWeek(today, locale).add({ weeks: -1 })]\n case \"lastYear\":\n return [startOfYear(today.add({ years: -1 })), endOfYear(today.add({ years: -1 }))]\n default:\n throw new Error(`Invalid date range preset: ${preset}`)\n }\n}\n"],"mappings":"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","names":["isSameDay","toCalendarDateTime","toCalendarDateTime","isSameDay","start","end","isSameDay","startOfMonth","today","toCalendarDate","DateFormatter","toCalendarDate","today","DateFormatter","isSameDay","startOfMonth","isSameDay","getDayOfWeek","startOfMonth","isSameDay","getDayOfWeek","startOfMonth","DateFormatter","toCalendarDateTime","today","today","toCalendarDateTime","isDateUnavailable","endOfMonth","startOfMonth","startOfWeek","startOfWeek","startOfMonth","endOfMonth","DateFormatter","date","endOfMonth","endOfWeek","startOfMonth","startOfWeek","startOfYear","today"]}
|
|
1
|
+
{"version":3,"sources":["../src/constrain.ts","../src/align.ts","../src/assertion.ts","../src/duration.ts","../src/format-range.ts","../src/format-selected-date.ts","../src/get-day-formatter.ts","../src/get-era-format.ts","../src/format-visible-range.ts","../src/get-month-formatter.ts","../src/get-decade-range.ts","../src/get-month-days.ts","../src/get-start-of-week.ts","../src/get-month-names.ts","../src/get-weekday-formats.ts","../src/get-week-days.ts","../src/get-year-range.ts","../src/mutation.ts","../src/pagination.ts","../src/parse-date.ts","../src/preset.ts"],"sourcesContent":["import {\n type DateDuration,\n type DateValue,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate,\n} from \"@internationalized/date\"\n\n/* -----------------------------------------------------------------------------\n * Align date to start, end, or center of a duration\n * -----------------------------------------------------------------------------*/\n\nexport function alignCenter(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let halfDuration: DateDuration = {}\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2)\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignStart(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n // align to the start of the largest unit\n let aligned = date\n if (duration.years) {\n aligned = startOfYear(date)\n } else if (duration.months) {\n aligned = startOfMonth(date)\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale)\n }\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignEnd(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let d: DateDuration = { ...duration }\n // subtract 1 from the smallest unit\n if (d.days) {\n d.days--\n } else if (d.weeks) {\n d.weeks--\n } else if (d.months) {\n d.months--\n } else if (d.years) {\n d.years--\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\n/* -----------------------------------------------------------------------------\n * Constrain a date to a min/max range\n * -----------------------------------------------------------------------------*/\n\nexport function constrainStart(\n date: DateValue,\n aligned: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n if (min && date.compare(min) >= 0) {\n aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale))\n }\n\n if (max && date.compare(max) <= 0) {\n aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale))\n }\n\n return aligned\n}\n\nexport function constrainValue(date: DateValue, minValue?: DateValue, maxValue?: DateValue): DateValue {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue))\n }\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue))\n }\n return date\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\nimport { alignCenter, alignEnd, alignStart } from \"./constrain\"\nimport type { DateAlignment } from \"./types\"\n\nexport function alignDate(\n date: DateValue,\n alignment: DateAlignment,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n switch (alignment) {\n case \"start\":\n return alignStart(date, duration, locale, min, max)\n case \"end\":\n return alignEnd(date, duration, locale, min, max)\n case \"center\":\n default:\n return alignCenter(date, duration, locale, min, max)\n }\n}\n\nexport function alignStartDate(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n if (date.compare(startDate) < 0) {\n return alignEnd(date, duration, locale, min, max)\n }\n if (date.compare(endDate) > 0) {\n return alignStart(date, duration, locale, min, max)\n }\n return startDate\n}\n","import { type DateValue, isSameDay, isToday } from \"@internationalized/date\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function isTodayDate(date: DateValue, timeZone: string) {\n return isToday(date, timeZone)\n}\n\nexport function isDateEqual(dateA: DateValue, dateB?: DateValue | null) {\n return dateB != null && isSameDay(dateA, dateB)\n}\n\nexport function isDateInvalid(date: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null) {\n return (minValue != null && date.compare(minValue) < 0) || (maxValue != null && date.compare(maxValue) > 0)\n}\n\nexport function isDateDisabled(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateUnavailable(\n date: DateValue | null,\n isUnavailable: DateAvailableFn | undefined,\n locale: string,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n if (!date) {\n return false\n }\n if (isUnavailable?.(date, locale)) {\n return true\n }\n return isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateOutsideVisibleRange(date: DateValue, startDate: DateValue, endDate: DateValue) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0\n}\n\nexport function isPreviousVisibleRangeInvalid(\n startDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const prevDate = startDate.subtract({ days: 1 })\n return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue)\n}\n\nexport function isNextVisibleRangeInvalid(\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const nextDate = endDate.add({ days: 1 })\n return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue)\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\n\nexport function getUnitDuration(duration: DateDuration) {\n let d = { ...duration }\n for (let key in d) {\n d[key] = 1\n }\n return d\n}\n\nexport function getEndDate(startDate: DateValue, duration: DateDuration) {\n let d = { ...duration }\n if (d.days) {\n d.days--\n } else {\n d.days = -1\n }\n return startDate.add(d)\n}\n","import type { DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function formatRange(\n startDate: DateValue,\n endDate: DateValue,\n formatter: DateFormatter,\n toString: (start: string, end: string) => string,\n timeZone: string,\n) {\n let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone))\n\n let separatorIndex = -1\n\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i]\n if (part.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i\n } else if (part.source === \"endRange\") {\n break\n }\n }\n\n let start = \"\"\n let end = \"\"\n\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n start += parts[i].value\n } else if (i > separatorIndex) {\n end += parts[i].value\n }\n }\n\n return toString(start, end)\n}\n","import { type DateValue, isSameDay } from \"@internationalized/date\"\nimport { formatRange } from \"./format-range\"\nimport { getDayFormatter } from \"./get-day-formatter\"\n\nexport function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n let start = startDate\n let end = endDate ?? startDate\n\n let formatter = getDayFormatter(locale, timeZone)\n\n if (isSameDay(start, end)) {\n return formatter.format(start.toDate(timeZone))\n }\n\n return formatRange(start, end, formatter, (start, end) => `${start} – ${end}`, timeZone)\n}\n","import { DateFormatter, toCalendarDateTime, today } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getDayFormatter(locale: string, timeZone: string) {\n const date = toCalendarDateTime(today(timeZone))\n return new DateFormatter(locale, {\n weekday: \"long\",\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era: getEraFormat(date),\n timeZone,\n })\n}\n","import type { DateValue } from \"@internationalized/date\"\n\nexport function getEraFormat(date: DateValue | undefined): \"short\" | undefined {\n return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : undefined\n}\n","import { type DateValue, endOfMonth, isSameDay, startOfMonth } from \"@internationalized/date\"\nimport { getDayFormatter } from \"./get-day-formatter\"\nimport { getMonthFormatter } from \"./get-month-formatter\"\n\nexport function formatVisibleRange(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n const start = startDate\n const end = endDate ?? startDate\n\n const dayFormatter = getDayFormatter(locale, timeZone)\n\n if (!isSameDay(start, startOfMonth(start))) {\n return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n const monthFormatter = getMonthFormatter(locale, timeZone)\n\n if (isSameDay(end, endOfMonth(start))) {\n return monthFormatter.format(start.toDate(timeZone))\n }\n\n if (isSameDay(end, endOfMonth(end))) {\n return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n return \"\"\n}\n","import { today, toCalendarDate, DateFormatter } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getMonthFormatter(locale: string, timeZone: string) {\n const date = toCalendarDate(today(timeZone))\n return new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n era: getEraFormat(date),\n calendar: date?.calendar.identifier,\n timeZone: timeZone,\n })\n}\n","export function getDecadeRange(year: number) {\n const computedYear = year - (year % 10) - 1\n\n const years: number[] = []\n\n for (let i = 0; i < 12; i += 1) {\n const value = computedYear + i\n years.push(value)\n }\n\n return years\n}\n","import { type DateValue, getWeeksInMonth, isSameDay, getDayOfWeek, startOfMonth } from \"@internationalized/date\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getDaysInWeek(weekIndex: number, from: DateValue, locale: string, firstDayOfWeek?: number) {\n const weekDate = from.add({ weeks: weekIndex })\n const dates: DateValue[] = []\n let date = getStartOfWeek(weekDate, locale, firstDayOfWeek)\n while (dates.length < 7) {\n dates.push(date)\n let nextDate = date.add({ days: 1 })\n if (isSameDay(date, nextDate)) {\n break\n }\n date = nextDate\n }\n return dates\n}\n\nexport function getCustomWeeksInMonth(from: DateValue, locale: string, firstDayOfWeek?: number) {\n if (firstDayOfWeek == null) {\n return getWeeksInMonth(from, locale)\n }\n const paddingDays = (getDayOfWeek(startOfMonth(from), locale) - firstDayOfWeek + 7) % 7\n\n return Math.ceil((paddingDays + from.calendar.getDaysInMonth(from)) / 7)\n}\n\nexport function getMonthDays(from: DateValue, locale: string, numOfWeeks?: number, firstDayOfWeek?: number) {\n const monthWeeks = numOfWeeks ?? getCustomWeeksInMonth(from, locale, firstDayOfWeek)\n\n const weeks = [...new Array(monthWeeks).keys()]\n return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek))\n}\n","import { type DateValue, getDayOfWeek } from \"@internationalized/date\"\n\nexport function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek: number = 0) {\n const day = getDayOfWeek(date, locale)\n const diff = (day - firstDayOfWeek + 7) % 7\n return date.subtract({ days: diff })\n}\n","export function getMonthNames(locale: string, format: Intl.DateTimeFormatOptions[\"month\"] = \"long\") {\n const date = new Date(2021, 0, 1)\n const monthNames: string[] = []\n for (let i = 0; i < 12; i++) {\n monthNames.push(date.toLocaleString(locale, { month: format }))\n date.setMonth(date.getMonth() + 1)\n }\n return monthNames\n}\n","import { type DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function getWeekdayFormats(locale: string, timeZone: string) {\n const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone })\n const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone })\n const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone })\n return <T extends DateValue | Date>(value: T) => {\n const date = value instanceof Date ? value : value.toDate(timeZone)\n return {\n value,\n short: shortFormat.format(date),\n long: longFormat.format(date),\n narrow: narrowFormat.format(date),\n }\n }\n}\n","import type { DateValue } from \"@internationalized/date\"\nimport { getWeekdayFormats } from \"./get-weekday-formats\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getWeekDays(date: DateValue, startOfWeekProp: number | undefined, timeZone: string, locale: string) {\n const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp)\n const weeks = [...new Array(7).keys()]\n const format = getWeekdayFormats(locale, timeZone)\n return weeks.map((index) => format(firstDayOfWeek.add({ days: index })))\n}\n","export interface YearsRange {\n from: number\n to: number\n}\n\nexport function getYearsRange(range: YearsRange) {\n const years: number[] = []\n\n for (let year = range.from; year <= range.to; year += 1) {\n years.push(year)\n }\n\n return years\n}\n","import {\n type Calendar,\n type DateValue,\n getLocalTimeZone,\n toCalendar,\n toCalendarDateTime,\n today,\n} from \"@internationalized/date\"\nimport { constrainValue } from \"./constrain\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function getTodayDate(timeZone?: string) {\n return today(timeZone ?? getLocalTimeZone())\n}\n\nexport function getNextDay(date: DateValue) {\n return date.add({ days: 1 })\n}\n\nexport function getPreviousDay(date: DateValue) {\n return date.subtract({ days: 1 })\n}\n\nexport function setMonth(date: DateValue, month: number) {\n return date.set({ month })\n}\n\nexport function setYear(date: DateValue, year: number) {\n return date.set({ year })\n}\n\nexport function setCalendar(date: DateValue, calendar: Calendar) {\n return toCalendar(toCalendarDateTime(date), calendar)\n}\n\nexport function setDate(\n date: DateValue,\n startDate: DateValue,\n isDateUnavailable: DateAvailableFn,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue,\n) {\n let result: DateValue | undefined\n result = constrainValue(date, minValue, maxValue)\n result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable)\n return result\n}\n\nexport function getPreviousAvailableDate(\n date: DateValue,\n minValue: DateValue,\n locale: string,\n isDateUnavailable?: DateAvailableFn,\n) {\n if (!isDateUnavailable) {\n return date\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date, locale)) {\n date = date.subtract({ days: 1 })\n }\n\n if (date.compare(minValue) >= 0) {\n return date\n }\n}\n","import {\n type DateDuration,\n type DateValue,\n endOfMonth,\n endOfWeek,\n startOfMonth,\n startOfWeek,\n} from \"@internationalized/date\"\nimport { isDateInvalid } from \"./assertion\"\nimport { alignEnd, alignStart, constrainStart, constrainValue } from \"./constrain\"\nimport { getEndDate, getUnitDuration } from \"./duration\"\n\nexport interface AdjustDateParams {\n startDate: DateValue\n focusedDate: DateValue\n}\n\nexport interface AdjustDateReturn extends AdjustDateParams {\n endDate: DateValue\n}\n\nexport function getAdjustedDateFn(\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n return function getDate(options: AdjustDateParams): AdjustDateReturn {\n const { startDate, focusedDate } = options\n const endDate = getEndDate(startDate, visibleDuration)\n\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n if (isDateInvalid(focusedDate, minValue, maxValue)) {\n return {\n startDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(startDate) < 0) {\n return {\n startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(endDate) > 0) {\n return {\n startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n\n return {\n startDate,\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get next and previous page (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const start = startDate.add(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.add(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\nexport function getPreviousPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n let start = startDate.subtract(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.subtract(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\n/* -----------------------------------------------------------------------------\n * Get the next and previous row (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ weeks: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ weeks: 1 }),\n startDate,\n })\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get start and end date for a date section\n * -----------------------------------------------------------------------------*/\n\nexport function getSectionStart(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: startDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: startOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: startOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getSectionEnd(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const endDate = getEndDate(startDate, visibleDuration)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: endDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n //@ts-expect-error - endOfWeek is loosely typed\n focusedDate: endOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: endOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getNextSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.add({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ years: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.subtract({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ years: 1 }),\n startDate,\n })\n }\n}\n","import { CalendarDate, DateFormatter, type DateValue } from \"@internationalized/date\"\n\nconst isValidYear = (year: string | undefined): year is string => year != null && year.length === 4\nconst isValidMonth = (month: string | undefined): month is string => month != null && parseFloat(month) <= 12\nconst isValidDay = (day: string | undefined): day is string => day != null && parseFloat(day) <= 31\n\nexport function parseDateString(date: string, locale: string, timeZone: string): DateValue | undefined {\n const regex = createRegex(locale, timeZone)\n\n let { year, month, day } = extract(regex, date) ?? {}\n\n const hasMatch = year != null || month != null || day != null\n\n if (hasMatch) {\n const curr = new Date()\n year ||= curr.getFullYear().toString()\n month ||= (curr.getMonth() + 1).toString()\n day ||= curr.getDate().toString()\n }\n\n if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n return new CalendarDate(+year, +month, +day)\n }\n\n // We should never get here, but just in case\n const time = Date.parse(date)\n if (!isNaN(time)) {\n const date = new Date(time)\n return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate())\n }\n}\n\nfunction createRegex(locale: string, timeZone: string) {\n const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone })\n const parts = formatter.formatToParts(new Date(2000, 11, 25))\n return parts.map(({ type, value }) => (type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`)).join(\"\")\n}\n\ninterface DateParts {\n year: string\n month: string\n day: string\n}\n\nfunction extract(pattern: string | RegExp, str: string) {\n const matches = str.match(pattern)\n return pattern\n .toString()\n .match(/<(.+?)>/g)\n ?.map((group) => {\n const groupMatches = group.match(/<(.+)>/)\n if (!groupMatches || groupMatches.length <= 0) {\n return null\n }\n return group.match(/<(.+)>/)?.[1]\n })\n .reduce((acc, curr, index) => {\n if (!curr) return acc\n if (matches && matches.length > index) {\n acc[curr] = matches[index + 1]\n } else {\n acc[curr] = null\n }\n return acc\n }, {} as DateParts)\n}\n","import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type DateValue,\n} from \"@internationalized/date\"\n\nexport type DateRangePreset =\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisQuarter\"\n | \"lastQuarter\"\n | \"thisYear\"\n | \"lastYear\"\n | \"last3Days\"\n | \"last7Days\"\n | \"last14Days\"\n | \"last30Days\"\n | \"last90Days\"\n\nexport function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue] {\n const today = now(timeZone)\n\n switch (preset) {\n case \"thisWeek\":\n return [startOfWeek(today, locale), endOfWeek(today, locale)]\n case \"thisMonth\":\n return [startOfMonth(today), today]\n case \"thisQuarter\":\n return [startOfMonth(today).add({ months: -today.month % 3 }), today]\n case \"thisYear\":\n return [startOfYear(today), today]\n case \"last3Days\":\n return [today.add({ days: -2 }), today]\n case \"last7Days\":\n return [today.add({ days: -6 }), today]\n case \"last14Days\":\n return [today.add({ days: -13 }), today]\n case \"last30Days\":\n return [today.add({ days: -29 }), today]\n case \"last90Days\":\n return [today.add({ days: -89 }), today]\n case \"lastMonth\":\n return [startOfMonth(today.add({ months: -1 })), endOfMonth(today.add({ months: -1 }))]\n case \"lastQuarter\":\n return [\n startOfMonth(today.add({ months: (-today.month % 3) - 3 })),\n endOfMonth(today.add({ months: (-today.month % 3) - 1 })),\n ]\n case \"lastWeek\":\n return [startOfWeek(today, locale).add({ weeks: -1 }), endOfWeek(today, locale).add({ weeks: -1 })]\n case \"lastYear\":\n return [startOfYear(today.add({ years: -1 })), endOfYear(today.add({ years: -1 }))]\n default:\n throw new Error(`Invalid date range preset: ${preset}`)\n }\n}\n"],"mappings":"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","names":["isSameDay","isSameDay","start","end","isSameDay","startOfMonth","today","toCalendarDate","DateFormatter","toCalendarDate","today","DateFormatter","isSameDay","startOfMonth","isSameDay","getDayOfWeek","startOfMonth","isSameDay","getDayOfWeek","startOfMonth","DateFormatter","toCalendarDateTime","today","today","toCalendarDateTime","isDateUnavailable","endOfMonth","startOfMonth","startOfWeek","startOfWeek","startOfMonth","endOfMonth","DateFormatter","date","endOfMonth","endOfWeek","startOfMonth","startOfWeek","startOfYear","today"]}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
package/src/format-date.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { type DateValue, toCalendarDateTime } from "@internationalized/date"
|
|
2
|
-
|
|
3
|
-
function createRegEx(sign: string) {
|
|
4
|
-
let symbols = "\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;"
|
|
5
|
-
return new RegExp("(^|>|" + symbols + ")(" + sign + ")($|<|" + symbols + ")", "g")
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Formats a date using the given format string as defined in:
|
|
10
|
-
* https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
|
|
11
|
-
*/
|
|
12
|
-
export function formatDate(value: DateValue, formatString: string, locale: string, timeZone: string = "UTC") {
|
|
13
|
-
const datetime = toCalendarDateTime(value)
|
|
14
|
-
const date = datetime.toDate(timeZone)
|
|
15
|
-
|
|
16
|
-
const formats = {
|
|
17
|
-
// Time in ms
|
|
18
|
-
T: date.getTime(),
|
|
19
|
-
|
|
20
|
-
// Minutes
|
|
21
|
-
m: date.toLocaleString(locale, { minute: "numeric" }),
|
|
22
|
-
mm: date.toLocaleString(locale, { minute: "2-digit" }),
|
|
23
|
-
|
|
24
|
-
// Seconds
|
|
25
|
-
s: date.toLocaleString(locale, { second: "numeric" }),
|
|
26
|
-
ss: date.toLocaleString(locale, { second: "2-digit" }),
|
|
27
|
-
|
|
28
|
-
// Hours
|
|
29
|
-
h: date.toLocaleString(locale, { hour: "numeric", hour12: true }),
|
|
30
|
-
hh: date.toLocaleString(locale, { hour: "2-digit", hour12: true }),
|
|
31
|
-
H: date.toLocaleString(locale, { hour: "numeric", hour12: false }),
|
|
32
|
-
HH: date.toLocaleString(locale, { hour: "2-digit", hour12: false }),
|
|
33
|
-
|
|
34
|
-
// Day period
|
|
35
|
-
aa: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toLowerCase(),
|
|
36
|
-
AA: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toUpperCase(),
|
|
37
|
-
|
|
38
|
-
// Day of week
|
|
39
|
-
E: date.toLocaleString(locale, { weekday: "short" }),
|
|
40
|
-
EE: date.toLocaleString(locale, { weekday: "short" }),
|
|
41
|
-
EEE: date.toLocaleString(locale, { weekday: "short" }),
|
|
42
|
-
EEEE: date.toLocaleString(locale, { weekday: "long" }),
|
|
43
|
-
|
|
44
|
-
// Date of month
|
|
45
|
-
d: datetime.day,
|
|
46
|
-
dd: date.toLocaleString(locale, { day: "2-digit" }),
|
|
47
|
-
|
|
48
|
-
// Months
|
|
49
|
-
M: datetime.month + 1,
|
|
50
|
-
MM: date.toLocaleString(locale, { month: "2-digit" }),
|
|
51
|
-
MMM: date.toLocaleString(locale, { month: "short" }),
|
|
52
|
-
MMMM: date.toLocaleString(locale, { month: "long" }),
|
|
53
|
-
|
|
54
|
-
// Years
|
|
55
|
-
yy: date.toLocaleString(locale, { year: "2-digit" }),
|
|
56
|
-
yyyy: date.toLocaleString(locale, { year: "numeric" }),
|
|
57
|
-
YY: date.toLocaleString(locale, { year: "2-digit" }),
|
|
58
|
-
YYYY: date.toLocaleString(locale, { year: "numeric" }),
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
let result = formatString
|
|
62
|
-
for (const key in formats) {
|
|
63
|
-
result = result.replace(createRegEx(key), "$1" + formats[key] + "$3")
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return result
|
|
67
|
-
}
|