@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 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, formatDate, 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 };
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, formatDate, 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 };
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 import_date5 = require("@internationalized/date");
232
+ var import_date4 = require("@internationalized/date");
286
233
 
287
234
  // src/get-day-formatter.ts
288
- var import_date4 = require("@internationalized/date");
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, import_date4.toCalendarDateTime)((0, import_date4.today)(timeZone));
298
- return new import_date4.DateFormatter(locale, {
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, import_date5.isSameDay)(start, end)) {
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 import_date7 = require("@internationalized/date");
267
+ var import_date6 = require("@internationalized/date");
321
268
 
322
269
  // src/get-month-formatter.ts
323
- var import_date6 = require("@internationalized/date");
270
+ var import_date5 = require("@internationalized/date");
324
271
  function getMonthFormatter(locale, timeZone) {
325
- const date = (0, import_date6.toCalendarDate)((0, import_date6.today)(timeZone));
326
- return new import_date6.DateFormatter(locale, {
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, import_date7.isSameDay)(start, (0, import_date7.startOfMonth)(start))) {
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, import_date7.isSameDay)(end, (0, import_date7.endOfMonth)(start))) {
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, import_date7.isSameDay)(end, (0, import_date7.endOfMonth)(end))) {
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 import_date9 = require("@internationalized/date");
312
+ var import_date8 = require("@internationalized/date");
366
313
 
367
314
  // src/get-start-of-week.ts
368
- var import_date8 = require("@internationalized/date");
315
+ var import_date7 = require("@internationalized/date");
369
316
  function getStartOfWeek(date, locale, firstDayOfWeek = 0) {
370
- const day = (0, import_date8.getDayOfWeek)(date, locale);
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, import_date9.isSameDay)(date, nextDate)) {
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, import_date9.getWeeksInMonth)(from, locale);
339
+ return (0, import_date8.getWeeksInMonth)(from, locale);
393
340
  }
394
- const paddingDays = ((0, import_date9.getDayOfWeek)((0, import_date9.startOfMonth)(from), locale) - firstDayOfWeek + 7) % 7;
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 import_date10 = require("@internationalized/date");
362
+ var import_date9 = require("@internationalized/date");
416
363
  function getWeekdayFormats(locale, timeZone) {
417
- const longFormat = new import_date10.DateFormatter(locale, { weekday: "long", timeZone });
418
- const shortFormat = new import_date10.DateFormatter(locale, { weekday: "short", timeZone });
419
- const narrowFormat = new import_date10.DateFormatter(locale, { weekday: "narrow", timeZone });
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 import_date11 = require("@internationalized/date");
396
+ var import_date10 = require("@internationalized/date");
450
397
  function getTodayDate(timeZone) {
451
- return (0, import_date11.today)(timeZone ?? (0, import_date11.getLocalTimeZone)());
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, import_date11.toCalendar)((0, import_date11.toCalendarDateTime)(date), calendar);
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 import_date12 = require("@internationalized/date");
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, import_date12.startOfWeek)(focusedDate, locale),
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, import_date12.startOfMonth)(focusedDate),
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, import_date12.endOfWeek)(focusedDate, locale),
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, import_date12.endOfMonth)(focusedDate),
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 import_date13 = require("@internationalized/date");
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 import_date13.CalendarDate(+year, +month, +day);
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 import_date13.CalendarDate(date2.getFullYear(), date2.getMonth() + 1, date2.getDate());
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 import_date13.DateFormatter(locale, { day: "numeric", month: "numeric", year: "numeric", timeZone });
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 import_date14 = require("@internationalized/date");
658
+ var import_date13 = require("@internationalized/date");
712
659
  function getDateRangePreset(preset, locale, timeZone) {
713
- const today4 = (0, import_date14.now)(timeZone);
660
+ const today4 = (0, import_date13.now)(timeZone);
714
661
  switch (preset) {
715
662
  case "thisWeek":
716
- return [(0, import_date14.startOfWeek)(today4, locale), (0, import_date14.endOfWeek)(today4, locale)];
663
+ return [(0, import_date13.startOfWeek)(today4, locale), (0, import_date13.endOfWeek)(today4, locale)];
717
664
  case "thisMonth":
718
- return [(0, import_date14.startOfMonth)(today4), today4];
665
+ return [(0, import_date13.startOfMonth)(today4), today4];
719
666
  case "thisQuarter":
720
- return [(0, import_date14.startOfMonth)(today4).add({ months: -today4.month % 3 }), today4];
667
+ return [(0, import_date13.startOfMonth)(today4).add({ months: -today4.month % 3 }), today4];
721
668
  case "thisYear":
722
- return [(0, import_date14.startOfYear)(today4), today4];
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, import_date14.startOfMonth)(today4.add({ months: -1 })), (0, import_date14.endOfMonth)(today4.add({ months: -1 }))];
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, import_date14.startOfMonth)(today4.add({ months: -today4.month % 3 - 3 })),
738
- (0, import_date14.endOfMonth)(today4.add({ months: -today4.month % 3 - 1 }))
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, import_date14.startOfWeek)(today4, locale).add({ weeks: -1 }), (0, import_date14.endOfWeek)(today4, locale).add({ weeks: -1 })];
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, import_date14.startOfYear)(today4.add({ years: -1 })), (0, import_date14.endOfYear)(today4.add({ years: -1 }))];
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":"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","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 as toCalendarDateTime2, today } from "@internationalized/date";
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 = toCalendarDateTime2(today(timeZone));
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 toCalendarDateTime3,
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(toCalendarDateTime3(date), calendar);
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,
@@ -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":";AAAA;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;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,cAAU,YAAY,IAAI;AAAA,EAC5B,WAAW,SAAS,QAAQ;AAC1B,cAAU,aAAa,IAAI;AAAA,EAC7B,WAAW,SAAS,OAAO;AACzB,cAAU,YAAY,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,cAAU,QAAQ,SAAS,WAAW,eAAe,GAAG,GAAG,UAAU,MAAM,CAAC;AAAA,EAC9E;AAEA,MAAI,OAAO,KAAK,QAAQ,GAAG,KAAK,GAAG;AACjC,cAAU,QAAQ,SAAS,SAAS,eAAe,GAAG,GAAG,UAAU,MAAM,CAAC;AAAA,EAC5E;AAEA,SAAO;AACT;AAEO,SAAS,eAAe,MAAiB,UAAsB,UAAiC;AACrG,MAAI,UAAU;AACZ,WAAO,QAAQ,MAAM,eAAe,QAAQ,CAAC;AAAA,EAC/C;AACA,MAAI,UAAU;AACZ,WAAO,QAAQ,MAAM,eAAe,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,SAAyB,WAAW,eAAe;AAG5C,SAAS,YAAY,MAAiB,UAAkB;AAC7D,SAAO,QAAQ,MAAM,QAAQ;AAC/B;AAEO,SAAS,YAAY,OAAkB,OAA0B;AACtE,SAAO,SAAS,QAAQ,UAAU,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,SAAO,UAAU,UAAU,SAAS,KAAK,cAAc,UAAU,UAAU,QAAQ;AACrF;AAEO,SAAS,0BACd,SACA,UACA,UACA;AACA,QAAM,WAAW,QAAQ,IAAI,EAAE,MAAM,EAAE,CAAC;AACxC,SAAO,UAAU,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;;;AClBA,SAAyB,0BAA0B;AAEnD,SAAS,YAAY,MAAc;AACjC,MAAI,UAAU;AACd,SAAO,IAAI,OAAO,UAAU,UAAU,OAAO,OAAO,WAAW,UAAU,KAAK,GAAG;AACnF;AAMO,SAAS,WAAW,OAAkB,cAAsB,QAAgB,WAAmB,OAAO;AAC3G,QAAM,WAAW,mBAAmB,KAAK;AACzC,QAAM,OAAO,SAAS,OAAO,QAAQ;AAErC,QAAM,UAAU;AAAA;AAAA,IAEd,GAAG,KAAK,QAAQ;AAAA;AAAA,IAGhB,GAAG,KAAK,eAAe,QAAQ,EAAE,QAAQ,UAAU,CAAC;AAAA,IACpD,IAAI,KAAK,eAAe,QAAQ,EAAE,QAAQ,UAAU,CAAC;AAAA;AAAA,IAGrD,GAAG,KAAK,eAAe,QAAQ,EAAE,QAAQ,UAAU,CAAC;AAAA,IACpD,IAAI,KAAK,eAAe,QAAQ,EAAE,QAAQ,UAAU,CAAC;AAAA;AAAA,IAGrD,GAAG,KAAK,eAAe,QAAQ,EAAE,MAAM,WAAW,QAAQ,KAAK,CAAC;AAAA,IAChE,IAAI,KAAK,eAAe,QAAQ,EAAE,MAAM,WAAW,QAAQ,KAAK,CAAC;AAAA,IACjE,GAAG,KAAK,eAAe,QAAQ,EAAE,MAAM,WAAW,QAAQ,MAAM,CAAC;AAAA,IACjE,IAAI,KAAK,eAAe,QAAQ,EAAE,MAAM,WAAW,QAAQ,MAAM,CAAC;AAAA;AAAA,IAGlE,IAAI,KAAK,eAAe,QAAQ,EAAE,MAAM,WAAW,QAAQ,KAAK,CAAC,EAAE,YAAY;AAAA,IAC/E,IAAI,KAAK,eAAe,QAAQ,EAAE,MAAM,WAAW,QAAQ,KAAK,CAAC,EAAE,YAAY;AAAA;AAAA,IAG/E,GAAG,KAAK,eAAe,QAAQ,EAAE,SAAS,QAAQ,CAAC;AAAA,IACnD,IAAI,KAAK,eAAe,QAAQ,EAAE,SAAS,QAAQ,CAAC;AAAA,IACpD,KAAK,KAAK,eAAe,QAAQ,EAAE,SAAS,QAAQ,CAAC;AAAA,IACrD,MAAM,KAAK,eAAe,QAAQ,EAAE,SAAS,OAAO,CAAC;AAAA;AAAA,IAGrD,GAAG,SAAS;AAAA,IACZ,IAAI,KAAK,eAAe,QAAQ,EAAE,KAAK,UAAU,CAAC;AAAA;AAAA,IAGlD,GAAG,SAAS,QAAQ;AAAA,IACpB,IAAI,KAAK,eAAe,QAAQ,EAAE,OAAO,UAAU,CAAC;AAAA,IACpD,KAAK,KAAK,eAAe,QAAQ,EAAE,OAAO,QAAQ,CAAC;AAAA,IACnD,MAAM,KAAK,eAAe,QAAQ,EAAE,OAAO,OAAO,CAAC;AAAA;AAAA,IAGnD,IAAI,KAAK,eAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AAAA,IACnD,MAAM,KAAK,eAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AAAA,IACrD,IAAI,KAAK,eAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AAAA,IACnD,MAAM,KAAK,eAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AAAA,EACvD;AAEA,MAAI,SAAS;AACb,aAAW,OAAO,SAAS;AACzB,aAAS,OAAO,QAAQ,YAAY,GAAG,GAAG,OAAO,QAAQ,GAAG,IAAI,IAAI;AAAA,EACtE;AAEA,SAAO;AACT;;;AChEO,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,SAAyB,aAAAA,kBAAiB;;;ACA1C,SAAS,eAAe,sBAAAC,qBAAoB,aAAa;;;ACElD,SAAS,aAAa,MAAkD;AAC7E,SAAO,MAAM,SAAS,eAAe,aAAa,KAAK,QAAQ,OAAO,UAAU;AAClF;;;ADDO,SAAS,gBAAgB,QAAgB,UAAkB;AAChE,QAAM,OAAOC,oBAAmB,MAAM,QAAQ,CAAC;AAC/C,SAAO,IAAI,cAAc,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,MAAIC,WAAU,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,SAAyB,YAAY,aAAAC,YAAW,gBAAAC,qBAAoB;;;ACApE,SAAS,SAAAC,QAAO,kBAAAC,iBAAgB,iBAAAC,sBAAqB;AAG9C,SAAS,kBAAkB,QAAgB,UAAkB;AAClE,QAAM,OAAOC,gBAAeC,OAAM,QAAQ,CAAC;AAC3C,SAAO,IAAIC,eAAc,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,CAACC,WAAU,OAAOC,cAAa,KAAK,CAAC,GAAG;AAC1C,WAAO,aAAa,YAAY,MAAM,OAAO,QAAQ,GAAG,IAAI,OAAO,QAAQ,CAAC;AAAA,EAC9E;AAEA,QAAM,iBAAiB,kBAAkB,QAAQ,QAAQ;AAEzD,MAAID,WAAU,KAAK,WAAW,KAAK,CAAC,GAAG;AACrC,WAAO,eAAe,OAAO,MAAM,OAAO,QAAQ,CAAC;AAAA,EACrD;AAEA,MAAIA,WAAU,KAAK,WAAW,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,SAAyB,iBAAiB,aAAAE,YAAW,gBAAAC,eAAc,gBAAAC,qBAAoB;;;ACAvF,SAAyB,oBAAoB;AAEtC,SAAS,eAAe,MAAiB,QAAgB,iBAAyB,GAAG;AAC1F,QAAM,MAAM,aAAa,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,QAAIC,WAAU,MAAM,QAAQ,GAAG;AAC7B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,sBAAsB,MAAiB,QAAgB,gBAAyB;AAC9F,MAAI,kBAAkB,MAAM;AAC1B,WAAO,gBAAgB,MAAM,MAAM;AAAA,EACrC;AACA,QAAM,eAAeC,cAAaC,cAAa,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,SAAyB,iBAAAC,sBAAqB;AAEvC,SAAS,kBAAkB,QAAgB,UAAkB;AAClE,QAAM,aAAa,IAAIA,eAAc,QAAQ,EAAE,SAAS,QAAQ,SAAS,CAAC;AAC1E,QAAM,cAAc,IAAIA,eAAc,QAAQ,EAAE,SAAS,SAAS,SAAS,CAAC;AAC5E,QAAM,eAAe,IAAIA,eAAc,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;AAAA,EAGE;AAAA,EACA;AAAA,EACA,sBAAAC;AAAA,EACA,SAAAC;AAAA,OACK;AAIA,SAAS,aAAa,UAAmB;AAC9C,SAAOC,OAAM,YAAY,iBAAiB,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,SAAO,WAAWC,oBAAmB,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;AAAA,EAGE,cAAAC;AAAA,EACA;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,OACK;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,aAAaC,aAAY,aAAa,MAAM;AAAA,MAC5C;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,UAAU,gBAAgB,OAAO;AACnD,WAAO,OAAO;AAAA,MACZ,aAAaC,cAAa,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,aAAa,UAAU,aAAa,MAAM;AAAA,MAC1C;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,UAAU,gBAAgB,OAAO;AACnD,WAAO,OAAO;AAAA,MACZ,aAAaC,YAAW,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,SAAS,cAAc,iBAAAC,sBAAqC;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,aAAa,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,aAAaA,MAAK,YAAY,GAAGA,MAAK,SAAS,IAAI,GAAGA,MAAK,QAAQ,CAAC;AAAA,EACjF;AACF;AAEA,SAAS,YAAY,QAAgB,UAAkB;AACrD,QAAM,YAAY,IAAID,eAAc,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;AAAA,EACE,cAAAE;AAAA,EACA,aAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,OAEK;AAiBA,SAAS,mBAAmB,QAAyB,QAAgB,UAA0C;AACpH,QAAMC,SAAQ,IAAI,QAAQ;AAE1B,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,CAACF,aAAYE,QAAO,MAAM,GAAGJ,WAAUI,QAAO,MAAM,CAAC;AAAA,IAC9D,KAAK;AACH,aAAO,CAACH,cAAaG,MAAK,GAAGA,MAAK;AAAA,IACpC,KAAK;AACH,aAAO,CAACH,cAAaG,MAAK,EAAE,IAAI,EAAE,QAAQ,CAACA,OAAM,QAAQ,EAAE,CAAC,GAAGA,MAAK;AAAA,IACtE,KAAK;AACH,aAAO,CAACD,aAAYC,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,CAACH,cAAaG,OAAM,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAGL,YAAWK,OAAM,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;AAAA,IACxF,KAAK;AACH,aAAO;AAAA,QACLH,cAAaG,OAAM,IAAI,EAAE,QAAS,CAACA,OAAM,QAAQ,IAAK,EAAE,CAAC,CAAC;AAAA,QAC1DL,YAAWK,OAAM,IAAI,EAAE,QAAS,CAACA,OAAM,QAAQ,IAAK,EAAE,CAAC,CAAC;AAAA,MAC1D;AAAA,IACF,KAAK;AACH,aAAO,CAACF,aAAYE,QAAO,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,GAAGJ,WAAUI,QAAO,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC;AAAA,IACpG,KAAK;AACH,aAAO,CAACD,aAAYC,OAAM,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,UAAUA,OAAM,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA,IACpF;AACE,YAAM,IAAI,MAAM,8BAA8B,MAAM,EAAE;AAAA,EAC1D;AACF;","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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zag-js/date-utils",
3
- "version": "0.39.0",
3
+ "version": "0.41.0",
4
4
  "description": "Date utilities for zag.js",
5
5
  "keywords": [
6
6
  "js",
package/src/index.ts CHANGED
@@ -2,7 +2,6 @@ export * from "./align"
2
2
  export * from "./assertion"
3
3
  export * from "./constrain"
4
4
  export * from "./duration"
5
- export * from "./format-date"
6
5
  export * from "./format-range"
7
6
  export * from "./format-selected-date"
8
7
  export * from "./format-visible-range"
@@ -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
- }