@internationalized/date 3.12.0 → 3.12.1

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.
Files changed (165) hide show
  1. package/dist/index.cjs +113 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.js +45 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +45 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/dist/{CalendarDate.main.js → private/CalendarDate.cjs} +102 -120
  8. package/dist/private/CalendarDate.cjs.map +1 -0
  9. package/dist/{CalendarDate.mjs → private/CalendarDate.js} +65 -65
  10. package/dist/private/CalendarDate.js.map +1 -0
  11. package/dist/{CalendarDate.module.js → private/CalendarDate.mjs} +99 -117
  12. package/dist/private/CalendarDate.mjs.map +1 -0
  13. package/dist/{DateFormatter.main.js → private/DateFormatter.cjs} +27 -27
  14. package/dist/private/DateFormatter.cjs.map +1 -0
  15. package/dist/{DateFormatter.module.js → private/DateFormatter.js} +23 -23
  16. package/dist/{DateFormatter.module.js.map → private/DateFormatter.js.map} +1 -1
  17. package/dist/{DateFormatter.mjs → private/DateFormatter.mjs} +27 -27
  18. package/dist/private/DateFormatter.mjs.map +1 -0
  19. package/dist/{BuddhistCalendar.main.js → private/calendars/BuddhistCalendar.cjs} +13 -13
  20. package/dist/{BuddhistCalendar.main.js.map → private/calendars/BuddhistCalendar.cjs.map} +1 -1
  21. package/dist/{BuddhistCalendar.module.js → private/calendars/BuddhistCalendar.js} +13 -13
  22. package/dist/{BuddhistCalendar.module.js.map → private/calendars/BuddhistCalendar.js.map} +1 -1
  23. package/dist/{BuddhistCalendar.mjs → private/calendars/BuddhistCalendar.mjs} +13 -13
  24. package/dist/private/calendars/BuddhistCalendar.mjs.map +1 -0
  25. package/dist/{EthiopicCalendar.main.js → private/calendars/EthiopicCalendar.cjs} +32 -32
  26. package/dist/{EthiopicCalendar.main.js.map → private/calendars/EthiopicCalendar.cjs.map} +1 -1
  27. package/dist/{EthiopicCalendar.module.js → private/calendars/EthiopicCalendar.js} +30 -30
  28. package/dist/{EthiopicCalendar.module.js.map → private/calendars/EthiopicCalendar.js.map} +1 -1
  29. package/dist/{EthiopicCalendar.mjs → private/calendars/EthiopicCalendar.mjs} +30 -30
  30. package/dist/private/calendars/EthiopicCalendar.mjs.map +1 -0
  31. package/dist/{GregorianCalendar.main.js → private/calendars/GregorianCalendar.cjs} +31 -31
  32. package/dist/{GregorianCalendar.main.js.map → private/calendars/GregorianCalendar.cjs.map} +1 -1
  33. package/dist/{GregorianCalendar.module.js → private/calendars/GregorianCalendar.js} +27 -27
  34. package/dist/{GregorianCalendar.module.js.map → private/calendars/GregorianCalendar.js.map} +1 -1
  35. package/dist/{GregorianCalendar.mjs → private/calendars/GregorianCalendar.mjs} +27 -27
  36. package/dist/private/calendars/GregorianCalendar.mjs.map +1 -0
  37. package/dist/{HebrewCalendar.main.js → private/calendars/HebrewCalendar.cjs} +44 -44
  38. package/dist/{HebrewCalendar.main.js.map → private/calendars/HebrewCalendar.cjs.map} +1 -1
  39. package/dist/{HebrewCalendar.module.js → private/calendars/HebrewCalendar.js} +44 -44
  40. package/dist/{HebrewCalendar.module.js.map → private/calendars/HebrewCalendar.js.map} +1 -1
  41. package/dist/{HebrewCalendar.mjs → private/calendars/HebrewCalendar.mjs} +44 -44
  42. package/dist/private/calendars/HebrewCalendar.mjs.map +1 -0
  43. package/dist/{IndianCalendar.main.js → private/calendars/IndianCalendar.cjs} +20 -20
  44. package/dist/{IndianCalendar.main.js.map → private/calendars/IndianCalendar.cjs.map} +1 -1
  45. package/dist/{IndianCalendar.module.js → private/calendars/IndianCalendar.js} +20 -20
  46. package/dist/{IndianCalendar.module.js.map → private/calendars/IndianCalendar.js.map} +1 -1
  47. package/dist/{IndianCalendar.mjs → private/calendars/IndianCalendar.mjs} +20 -20
  48. package/dist/private/calendars/IndianCalendar.mjs.map +1 -0
  49. package/dist/private/calendars/IslamicCalendar.cjs +168 -0
  50. package/dist/private/calendars/IslamicCalendar.cjs.map +1 -0
  51. package/dist/private/calendars/IslamicCalendar.js +161 -0
  52. package/dist/{IslamicCalendar.module.js.map → private/calendars/IslamicCalendar.js.map} +1 -1
  53. package/dist/private/calendars/IslamicCalendar.mjs +161 -0
  54. package/dist/private/calendars/IslamicCalendar.mjs.map +1 -0
  55. package/dist/{JapaneseCalendar.main.js → private/calendars/JapaneseCalendar.cjs} +37 -37
  56. package/dist/{JapaneseCalendar.main.js.map → private/calendars/JapaneseCalendar.cjs.map} +1 -1
  57. package/dist/{JapaneseCalendar.module.js → private/calendars/JapaneseCalendar.js} +37 -37
  58. package/dist/{JapaneseCalendar.module.js.map → private/calendars/JapaneseCalendar.js.map} +1 -1
  59. package/dist/{JapaneseCalendar.mjs → private/calendars/JapaneseCalendar.mjs} +37 -37
  60. package/dist/private/calendars/JapaneseCalendar.mjs.map +1 -0
  61. package/dist/{PersianCalendar.main.js → private/calendars/PersianCalendar.cjs} +13 -13
  62. package/dist/{PersianCalendar.main.js.map → private/calendars/PersianCalendar.cjs.map} +1 -1
  63. package/dist/{PersianCalendar.module.js → private/calendars/PersianCalendar.js} +13 -13
  64. package/dist/{PersianCalendar.module.js.map → private/calendars/PersianCalendar.js.map} +1 -1
  65. package/dist/{PersianCalendar.mjs → private/calendars/PersianCalendar.mjs} +13 -13
  66. package/dist/private/calendars/PersianCalendar.mjs.map +1 -0
  67. package/dist/{TaiwanCalendar.main.js → private/calendars/TaiwanCalendar.cjs} +20 -20
  68. package/dist/{TaiwanCalendar.main.js.map → private/calendars/TaiwanCalendar.cjs.map} +1 -1
  69. package/dist/private/calendars/TaiwanCalendar.js +75 -0
  70. package/dist/{TaiwanCalendar.module.js.map → private/calendars/TaiwanCalendar.js.map} +1 -1
  71. package/dist/{TaiwanCalendar.mjs → private/calendars/TaiwanCalendar.mjs} +20 -20
  72. package/dist/private/calendars/TaiwanCalendar.mjs.map +1 -0
  73. package/dist/{conversion.main.js → private/conversion.cjs} +85 -85
  74. package/dist/{conversion.main.js.map → private/conversion.cjs.map} +1 -1
  75. package/dist/{conversion.module.js → private/conversion.js} +71 -71
  76. package/dist/{conversion.module.js.map → private/conversion.js.map} +1 -1
  77. package/dist/{conversion.mjs → private/conversion.mjs} +71 -71
  78. package/dist/private/conversion.mjs.map +1 -0
  79. package/dist/private/createCalendar.cjs +69 -0
  80. package/dist/{createCalendar.main.js.map → private/createCalendar.cjs.map} +1 -1
  81. package/dist/private/createCalendar.js +64 -0
  82. package/dist/{createCalendar.module.js.map → private/createCalendar.js.map} +1 -1
  83. package/dist/private/createCalendar.mjs +64 -0
  84. package/dist/private/createCalendar.mjs.map +1 -0
  85. package/dist/{manipulation.main.js → private/manipulation.cjs} +106 -109
  86. package/dist/private/manipulation.cjs.map +1 -0
  87. package/dist/{manipulation.mjs → private/manipulation.js} +88 -88
  88. package/dist/{manipulation.module.js.map → private/manipulation.js.map} +1 -1
  89. package/dist/{manipulation.module.js → private/manipulation.mjs} +93 -96
  90. package/dist/private/manipulation.mjs.map +1 -0
  91. package/dist/private/queries.cjs +359 -0
  92. package/dist/private/queries.cjs.map +1 -0
  93. package/dist/private/queries.js +326 -0
  94. package/dist/private/queries.js.map +1 -0
  95. package/dist/private/queries.mjs +324 -0
  96. package/dist/private/queries.mjs.map +1 -0
  97. package/dist/private/string.cjs +181 -0
  98. package/dist/private/string.cjs.map +1 -0
  99. package/dist/{string.mjs → private/string.js} +64 -64
  100. package/dist/{string.module.js.map → private/string.js.map} +1 -1
  101. package/dist/private/string.mjs +166 -0
  102. package/dist/private/string.mjs.map +1 -0
  103. package/dist/{utils.main.js → private/utils.cjs} +3 -3
  104. package/dist/{utils.main.js.map → private/utils.cjs.map} +1 -1
  105. package/dist/{utils.module.js → private/utils.js} +3 -3
  106. package/dist/{utils.module.js.map → private/utils.js.map} +1 -1
  107. package/dist/{utils.mjs → private/utils.mjs} +3 -3
  108. package/dist/private/utils.mjs.map +1 -0
  109. package/dist/{weekStartData.main.js → private/weekStartData.cjs} +3 -3
  110. package/dist/{weekStartData.main.js.map → private/weekStartData.cjs.map} +1 -1
  111. package/dist/{weekStartData.module.js → private/weekStartData.js} +3 -3
  112. package/dist/{weekStartData.module.js.map → private/weekStartData.js.map} +1 -1
  113. package/dist/{weekStartData.mjs → private/weekStartData.mjs} +3 -3
  114. package/dist/private/weekStartData.mjs.map +1 -0
  115. package/dist/types/src/CalendarDate.d.ts +177 -0
  116. package/dist/types/src/DateFormatter.d.ts +21 -0
  117. package/dist/types/src/calendars/BuddhistCalendar.d.ts +16 -0
  118. package/dist/types/src/calendars/EthiopicCalendar.d.ts +45 -0
  119. package/dist/types/src/calendars/GregorianCalendar.d.ts +25 -0
  120. package/dist/types/src/calendars/HebrewCalendar.d.ts +21 -0
  121. package/dist/types/src/calendars/IndianCalendar.d.ts +17 -0
  122. package/dist/types/src/calendars/IslamicCalendar.d.ts +48 -0
  123. package/dist/types/src/calendars/JapaneseCalendar.d.ts +21 -0
  124. package/dist/types/src/calendars/PersianCalendar.d.ts +19 -0
  125. package/dist/types/src/calendars/TaiwanCalendar.d.ts +19 -0
  126. package/dist/types/src/conversion.d.ts +42 -0
  127. package/dist/types/src/createCalendar.d.ts +3 -0
  128. package/dist/types/src/index.d.ts +17 -0
  129. package/dist/types/src/manipulation.d.ts +25 -0
  130. package/dist/types/src/queries.d.ts +87 -0
  131. package/dist/types/src/string.d.ts +35 -0
  132. package/dist/types/src/types.d.ts +132 -0
  133. package/dist/types/src/utils.d.ts +4 -0
  134. package/dist/types/src/weekStartData.d.ts +97 -0
  135. package/package.json +26 -11
  136. package/src/CalendarDate.ts +2 -0
  137. package/src/index.ts +1 -0
  138. package/src/queries.ts +1 -3
  139. package/dist/CalendarDate.main.js.map +0 -1
  140. package/dist/CalendarDate.module.js.map +0 -1
  141. package/dist/DateFormatter.main.js.map +0 -1
  142. package/dist/IslamicCalendar.main.js +0 -168
  143. package/dist/IslamicCalendar.main.js.map +0 -1
  144. package/dist/IslamicCalendar.mjs +0 -161
  145. package/dist/IslamicCalendar.module.js +0 -161
  146. package/dist/TaiwanCalendar.module.js +0 -75
  147. package/dist/createCalendar.main.js +0 -69
  148. package/dist/createCalendar.mjs +0 -64
  149. package/dist/createCalendar.module.js +0 -64
  150. package/dist/import.mjs +0 -45
  151. package/dist/main.js +0 -113
  152. package/dist/main.js.map +0 -1
  153. package/dist/manipulation.main.js.map +0 -1
  154. package/dist/module.js +0 -45
  155. package/dist/module.js.map +0 -1
  156. package/dist/queries.main.js +0 -361
  157. package/dist/queries.main.js.map +0 -1
  158. package/dist/queries.mjs +0 -326
  159. package/dist/queries.module.js +0 -326
  160. package/dist/queries.module.js.map +0 -1
  161. package/dist/string.main.js +0 -190
  162. package/dist/string.main.js.map +0 -1
  163. package/dist/string.module.js +0 -175
  164. package/dist/types.d.ts +0 -672
  165. package/dist/types.d.ts.map +0 -1
@@ -0,0 +1,25 @@
1
+ import { AnyCalendarDate, AnyTime, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields } from './types';
2
+ import { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from './CalendarDate';
3
+ import { Mutable } from './utils';
4
+ export declare function add(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;
5
+ export declare function add(date: CalendarDate, duration: DateDuration): CalendarDate;
6
+ export declare function add(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): CalendarDate | CalendarDateTime;
7
+ export declare function constrain(date: Mutable<AnyCalendarDate>): void;
8
+ export declare function invertDuration(duration: DateTimeDuration): DateTimeDuration;
9
+ export declare function subtract(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;
10
+ export declare function subtract(date: CalendarDate, duration: DateDuration): CalendarDate;
11
+ export declare function set(date: CalendarDateTime, fields: DateFields): CalendarDateTime;
12
+ export declare function set(date: CalendarDate, fields: DateFields): CalendarDate;
13
+ export declare function setTime(value: CalendarDateTime, fields: TimeFields): CalendarDateTime;
14
+ export declare function setTime(value: Time, fields: TimeFields): Time;
15
+ export declare function constrainTime(time: Mutable<AnyTime>): void;
16
+ export declare function addTime(time: Time, duration: TimeDuration): Time;
17
+ export declare function subtractTime(time: Time, duration: TimeDuration): Time;
18
+ export declare function cycleDate(value: CalendarDateTime, field: DateField, amount: number, options?: CycleOptions): CalendarDateTime;
19
+ export declare function cycleDate(value: CalendarDate, field: DateField, amount: number, options?: CycleOptions): CalendarDate;
20
+ export declare function cycleTime(value: CalendarDateTime, field: TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime;
21
+ export declare function cycleTime(value: Time, field: TimeField, amount: number, options?: CycleTimeOptions): Time;
22
+ export declare function addZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime;
23
+ export declare function subtractZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime;
24
+ export declare function cycleZoned(dateTime: ZonedDateTime, field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime;
25
+ export declare function setZoned(dateTime: ZonedDateTime, fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime;
@@ -0,0 +1,87 @@
1
+ import { AnyCalendarDate, AnyTime, Calendar } from './types';
2
+ import { CalendarDate, CalendarDateTime, DateValue, ZonedDateTime } from './CalendarDate';
3
+ /** Returns whether the given dates occur on the same day, regardless of the time or calendar system. */
4
+ export declare function isSameDay(a: DateValue, b: DateValue): boolean;
5
+ /** Returns whether the given dates occur in the same month, using the calendar system of the first date. */
6
+ export declare function isSameMonth(a: DateValue, b: DateValue): boolean;
7
+ /** Returns whether the given dates occur in the same year, using the calendar system of the first date. */
8
+ export declare function isSameYear(a: DateValue, b: DateValue): boolean;
9
+ /** Returns whether the given dates occur on the same day, and are of the same calendar system. */
10
+ export declare function isEqualDay(a: DateValue, b: DateValue): boolean;
11
+ /** Returns whether the given dates occur in the same month, and are of the same calendar system. */
12
+ export declare function isEqualMonth(a: DateValue, b: DateValue): boolean;
13
+ /** Returns whether the given dates occur in the same year, and are of the same calendar system. */
14
+ export declare function isEqualYear(a: DateValue, b: DateValue): boolean;
15
+ /** Returns whether two calendars are the same. */
16
+ export declare function isEqualCalendar(a: Calendar, b: Calendar): boolean;
17
+ /** Returns whether the date is today in the given time zone. */
18
+ export declare function isToday(date: DateValue, timeZone: string): boolean;
19
+ type DayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';
20
+ /**
21
+ * Returns the day of week for the given date and locale. Days are numbered from zero to six,
22
+ * where zero is the first day of the week in the given locale. For example, in the United States,
23
+ * the first day of the week is Sunday, but in France it is Monday.
24
+ */
25
+ export declare function getDayOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): number;
26
+ /** Returns the current time in the given time zone. */
27
+ export declare function now(timeZone: string): ZonedDateTime;
28
+ /** Returns today's date in the given time zone. */
29
+ export declare function today(timeZone: string): CalendarDate;
30
+ export declare function compareDate(a: AnyCalendarDate, b: AnyCalendarDate): number;
31
+ export declare function compareTime(a: AnyTime, b: AnyTime): number;
32
+ /**
33
+ * Returns the number of hours in the given date and time zone.
34
+ * Usually this is 24, but it could be 23 or 25 if the date is on a daylight saving transition.
35
+ */
36
+ export declare function getHoursInDay(a: CalendarDate, timeZone: string): number;
37
+ /** Returns the time zone identifier for the current user. */
38
+ export declare function getLocalTimeZone(): string;
39
+ /** Sets the time zone identifier for the current user. */
40
+ export declare function setLocalTimeZone(timeZone: string): void;
41
+ /** Resets the time zone identifier for the current user. */
42
+ export declare function resetLocalTimeZone(): void;
43
+ /** Returns whether the local time zone has been explicitly overridden via `setLocalTimeZone`. */
44
+ export declare function isLocalTimeZoneOverridden(): boolean;
45
+ /** Returns the first date of the month for the given date. */
46
+ export declare function startOfMonth(date: ZonedDateTime): ZonedDateTime;
47
+ export declare function startOfMonth(date: CalendarDateTime): CalendarDateTime;
48
+ export declare function startOfMonth(date: CalendarDate): CalendarDate;
49
+ export declare function startOfMonth(date: DateValue): DateValue;
50
+ /** Returns the last date of the month for the given date. */
51
+ export declare function endOfMonth(date: ZonedDateTime): ZonedDateTime;
52
+ export declare function endOfMonth(date: CalendarDateTime): CalendarDateTime;
53
+ export declare function endOfMonth(date: CalendarDate): CalendarDate;
54
+ export declare function endOfMonth(date: DateValue): DateValue;
55
+ /** Returns the first day of the year for the given date. */
56
+ export declare function startOfYear(date: ZonedDateTime): ZonedDateTime;
57
+ export declare function startOfYear(date: CalendarDateTime): CalendarDateTime;
58
+ export declare function startOfYear(date: CalendarDate): CalendarDate;
59
+ export declare function startOfYear(date: DateValue): DateValue;
60
+ /** Returns the last day of the year for the given date. */
61
+ export declare function endOfYear(date: ZonedDateTime): ZonedDateTime;
62
+ export declare function endOfYear(date: CalendarDateTime): CalendarDateTime;
63
+ export declare function endOfYear(date: CalendarDate): CalendarDate;
64
+ export declare function endOfYear(date: DateValue): DateValue;
65
+ export declare function getMinimumMonthInYear(date: AnyCalendarDate): number;
66
+ export declare function getMinimumDayInMonth(date: AnyCalendarDate): number;
67
+ /** Returns the first date of the week for the given date and locale. */
68
+ export declare function startOfWeek(date: ZonedDateTime, locale: string, firstDayOfWeek?: DayOfWeek): ZonedDateTime;
69
+ export declare function startOfWeek(date: CalendarDateTime, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDateTime;
70
+ export declare function startOfWeek(date: CalendarDate, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDate;
71
+ export declare function startOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue;
72
+ /** Returns the last date of the week for the given date and locale. */
73
+ export declare function endOfWeek(date: ZonedDateTime, locale: string, firstDayOfWeek?: DayOfWeek): ZonedDateTime;
74
+ export declare function endOfWeek(date: CalendarDateTime, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDateTime;
75
+ export declare function endOfWeek(date: CalendarDate, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDate;
76
+ export declare function endOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue;
77
+ /** Returns the number of weeks in the given month and locale. */
78
+ export declare function getWeeksInMonth(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): number;
79
+ /** Returns the lesser of the two provider dates. */
80
+ export declare function minDate<A extends DateValue, B extends DateValue>(a?: A | null, b?: B | null): A | B | null | undefined;
81
+ /** Returns the greater of the two provider dates. */
82
+ export declare function maxDate<A extends DateValue, B extends DateValue>(a?: A | null, b?: B | null): A | B | null | undefined;
83
+ /** Returns whether the given date is on a weekend in the given locale. */
84
+ export declare function isWeekend(date: DateValue, locale: string): boolean;
85
+ /** Returns whether the given date is on a weekday in the given locale. */
86
+ export declare function isWeekday(date: DateValue, locale: string): boolean;
87
+ export {};
@@ -0,0 +1,35 @@
1
+ import { AnyDateTime, DateTimeDuration, Disambiguation } from './types';
2
+ import { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from './CalendarDate';
3
+ /** Parses an ISO 8601 time string. */
4
+ export declare function parseTime(value: string): Time;
5
+ /** Parses an ISO 8601 date string, with no time components. */
6
+ export declare function parseDate(value: string): CalendarDate;
7
+ /** Parses an ISO 8601 date and time string, with no time zone. */
8
+ export declare function parseDateTime(value: string): CalendarDateTime;
9
+ /**
10
+ * Parses an ISO 8601 date and time string with a time zone extension and optional UTC offset
11
+ * (e.g. "2021-11-07T00:45[America/Los_Angeles]" or "2021-11-07T00:45-07:00[America/Los_Angeles]").
12
+ * Ambiguous times due to daylight saving time transitions are resolved according to the `disambiguation`
13
+ * parameter.
14
+ */
15
+ export declare function parseZonedDateTime(value: string, disambiguation?: Disambiguation): ZonedDateTime;
16
+ /**
17
+ * Parses an ISO 8601 date and time string with a UTC offset (e.g. "2021-11-07T07:45:00Z"
18
+ * or "2021-11-07T07:45:00-07:00"). The result is converted to the provided time zone.
19
+ */
20
+ export declare function parseAbsolute(value: string, timeZone: string): ZonedDateTime;
21
+ /**
22
+ * Parses an ISO 8601 date and time string with a UTC offset (e.g. "2021-11-07T07:45:00Z"
23
+ * or "2021-11-07T07:45:00-07:00"). The result is converted to the user's local time zone.
24
+ */
25
+ export declare function parseAbsoluteToLocal(value: string): ZonedDateTime;
26
+ export declare function timeToString(time: Time): string;
27
+ export declare function dateToString(date: CalendarDate): string;
28
+ export declare function dateTimeToString(date: AnyDateTime): string;
29
+ export declare function zonedDateTimeToString(date: ZonedDateTime): string;
30
+ /**
31
+ * Parses an ISO 8601 duration string (e.g. "P3Y6M6W4DT12H30M5S").
32
+ * @param value An ISO 8601 duration string.
33
+ * @returns A DateTimeDuration object.
34
+ */
35
+ export declare function parseDuration(value: string): Required<DateTimeDuration>;
@@ -0,0 +1,132 @@
1
+ import { CalendarDate } from './CalendarDate';
2
+ /** An interface that is compatible with any object with date fields. */
3
+ export interface AnyCalendarDate {
4
+ readonly calendar: Calendar;
5
+ readonly era: string;
6
+ readonly year: number;
7
+ readonly month: number;
8
+ readonly day: number;
9
+ copy(): this;
10
+ }
11
+ /** An interface that is compatible with any object with time fields. */
12
+ export interface AnyTime {
13
+ readonly hour: number;
14
+ readonly minute: number;
15
+ readonly second: number;
16
+ readonly millisecond: number;
17
+ copy(): this;
18
+ }
19
+ /** An interface that is compatible with any object with both date and time fields. */
20
+ export interface AnyDateTime extends AnyCalendarDate, AnyTime {
21
+ }
22
+ export type CalendarIdentifier = 'gregory' | 'buddhist' | 'chinese' | 'coptic' | 'dangi' | 'ethioaa' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic' | 'islamic-umalqura' | 'islamic-tbla' | 'islamic-civil' | 'islamic-rgsa' | 'iso8601' | 'japanese' | 'persian' | 'roc';
23
+ /**
24
+ * The Calendar interface represents a calendar system, including information
25
+ * about how days, months, years, and eras are organized, and methods to perform
26
+ * arithmetic on dates.
27
+ */
28
+ export interface Calendar {
29
+ /**
30
+ * A string identifier for the calendar, as defined by Unicode CLDR.
31
+ * See [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/supportedValuesOf#supported_calendar_types).
32
+ */
33
+ identifier: CalendarIdentifier;
34
+ /** Creates a CalendarDate in this calendar from the given Julian day number. */
35
+ fromJulianDay(jd: number): CalendarDate;
36
+ /** Converts a date in this calendar to a Julian day number. */
37
+ toJulianDay(date: AnyCalendarDate): number;
38
+ /** Returns the number of days in the month of the given date. */
39
+ getDaysInMonth(date: AnyCalendarDate): number;
40
+ /** Returns the number of months in the year of the given date. */
41
+ getMonthsInYear(date: AnyCalendarDate): number;
42
+ /** Returns the number of years in the era of the given date. */
43
+ getYearsInEra(date: AnyCalendarDate): number;
44
+ /** Returns a list of era identifiers for the calendar. */
45
+ getEras(): string[];
46
+ /**
47
+ * Returns the minimum month number of the given date's year.
48
+ * Normally, this is 1, but in some calendars such as the Japanese,
49
+ * eras may begin in the middle of a year.
50
+ */
51
+ getMinimumMonthInYear?(date: AnyCalendarDate): number;
52
+ /**
53
+ * Returns the minimum day number of the given date's month.
54
+ * Normally, this is 1, but in some calendars such as the Japanese,
55
+ * eras may begin in the middle of a month.
56
+ */
57
+ getMinimumDayInMonth?(date: AnyCalendarDate): number;
58
+ /** Returns the maximum months across all years. */
59
+ getMaximumMonthsInYear(): number;
60
+ /** Returns the maximum days across all months. */
61
+ getMaximumDaysInMonth(): number;
62
+ /**
63
+ * Returns a date that is the first day of the month for the given date.
64
+ * This is used to determine the month that the given date falls in, if
65
+ * the calendar has months that do not align with the standard calendar months
66
+ * (e.g. fiscal calendars).
67
+ */
68
+ getFormattableMonth?(date: AnyCalendarDate): CalendarDate;
69
+ /** Returns whether the given calendar is the same as this calendar. */
70
+ isEqual?(calendar: Calendar): boolean;
71
+ /** @private */
72
+ balanceDate?(date: AnyCalendarDate): void;
73
+ /** @private */
74
+ balanceYearMonth?(date: AnyCalendarDate, previousDate: AnyCalendarDate): void;
75
+ /** @private */
76
+ constrainDate?(date: AnyCalendarDate): void;
77
+ /** @private */
78
+ isInverseEra?(date: AnyCalendarDate): boolean;
79
+ }
80
+ /** Represents an amount of time in calendar-specific units, for use when performing arithmetic. */
81
+ export interface DateDuration {
82
+ /** The number of years to add or subtract. */
83
+ years?: number;
84
+ /** The number of months to add or subtract. */
85
+ months?: number;
86
+ /** The number of weeks to add or subtract. */
87
+ weeks?: number;
88
+ /** The number of days to add or subtract. */
89
+ days?: number;
90
+ }
91
+ /** Represents an amount of time, for use whe performing arithmetic. */
92
+ export interface TimeDuration {
93
+ /** The number of hours to add or subtract. */
94
+ hours?: number;
95
+ /** The number of minutes to add or subtract. */
96
+ minutes?: number;
97
+ /** The number of seconds to add or subtract. */
98
+ seconds?: number;
99
+ /** The number of milliseconds to add or subtract. */
100
+ milliseconds?: number;
101
+ }
102
+ /** Represents an amount of time with both date and time components, for use when performing arithmetic. */
103
+ export interface DateTimeDuration extends DateDuration, TimeDuration {
104
+ }
105
+ export interface DateFields {
106
+ era?: string;
107
+ year?: number;
108
+ month?: number;
109
+ day?: number;
110
+ }
111
+ export interface TimeFields {
112
+ hour?: number;
113
+ minute?: number;
114
+ second?: number;
115
+ millisecond?: number;
116
+ }
117
+ export type DateField = keyof DateFields;
118
+ export type TimeField = keyof TimeFields;
119
+ export type Disambiguation = 'compatible' | 'earlier' | 'later' | 'reject';
120
+ export interface CycleOptions {
121
+ /** Whether to round the field value to the nearest interval of the amount. */
122
+ round?: boolean;
123
+ }
124
+ export interface CycleTimeOptions extends CycleOptions {
125
+ /**
126
+ * Whether to use 12 or 24 hour time. If 12 hour time is chosen, the resulting value
127
+ * will remain in the same day period as the original value (e.g. if the value is AM,
128
+ * the resulting value also be AM).
129
+ * @default 24
130
+ */
131
+ hourCycle?: 12 | 24;
132
+ }
@@ -0,0 +1,4 @@
1
+ export type Mutable<T> = {
2
+ -readonly [P in keyof T]: T[P];
3
+ };
4
+ export declare function mod(amount: number, numerator: number): number;
@@ -0,0 +1,97 @@
1
+ export declare const weekStartData: {
2
+ '001': number;
3
+ AD: number;
4
+ AE: number;
5
+ AF: number;
6
+ AI: number;
7
+ AL: number;
8
+ AM: number;
9
+ AN: number;
10
+ AR: number;
11
+ AT: number;
12
+ AU: number;
13
+ AX: number;
14
+ AZ: number;
15
+ BA: number;
16
+ BE: number;
17
+ BG: number;
18
+ BH: number;
19
+ BM: number;
20
+ BN: number;
21
+ BY: number;
22
+ CH: number;
23
+ CL: number;
24
+ CM: number;
25
+ CN: number;
26
+ CR: number;
27
+ CY: number;
28
+ CZ: number;
29
+ DE: number;
30
+ DJ: number;
31
+ DK: number;
32
+ DZ: number;
33
+ EC: number;
34
+ EE: number;
35
+ EG: number;
36
+ ES: number;
37
+ FI: number;
38
+ FJ: number;
39
+ FO: number;
40
+ FR: number;
41
+ GB: number;
42
+ GE: number;
43
+ GF: number;
44
+ GP: number;
45
+ GR: number;
46
+ HR: number;
47
+ HU: number;
48
+ IE: number;
49
+ IQ: number;
50
+ IR: number;
51
+ IS: number;
52
+ IT: number;
53
+ JO: number;
54
+ KG: number;
55
+ KW: number;
56
+ KZ: number;
57
+ LB: number;
58
+ LI: number;
59
+ LK: number;
60
+ LT: number;
61
+ LU: number;
62
+ LV: number;
63
+ LY: number;
64
+ MC: number;
65
+ MD: number;
66
+ ME: number;
67
+ MK: number;
68
+ MN: number;
69
+ MQ: number;
70
+ MV: number;
71
+ MY: number;
72
+ NL: number;
73
+ NO: number;
74
+ NZ: number;
75
+ OM: number;
76
+ PL: number;
77
+ QA: number;
78
+ RE: number;
79
+ RO: number;
80
+ RS: number;
81
+ RU: number;
82
+ SD: number;
83
+ SE: number;
84
+ SI: number;
85
+ SK: number;
86
+ SM: number;
87
+ SY: number;
88
+ TJ: number;
89
+ TM: number;
90
+ TR: number;
91
+ UA: number;
92
+ UY: number;
93
+ UZ: number;
94
+ VA: number;
95
+ VN: number;
96
+ XK: number;
97
+ };
package/package.json CHANGED
@@ -1,20 +1,18 @@
1
1
  {
2
2
  "name": "@internationalized/date",
3
- "version": "3.12.0",
3
+ "version": "3.12.1",
4
4
  "description": "Internationalized calendar, date, and time manipulation utilities",
5
5
  "license": "Apache-2.0",
6
- "main": "dist/main.js",
7
- "module": "dist/module.js",
6
+ "main": "dist/index.cjs",
7
+ "module": "dist/index.js",
8
+ "import": "dist/index.mjs",
8
9
  "exports": {
9
10
  "source": "./src/index.ts",
10
- "types": [
11
- "./dist/types.d.ts",
12
- "./src/index.ts"
13
- ],
14
- "import": "./dist/import.mjs",
15
- "require": "./dist/main.js"
11
+ "types": "./dist/types/src/index.d.ts",
12
+ "import": "./dist/index.mjs",
13
+ "require": "./dist/index.cjs"
16
14
  },
17
- "types": "dist/types.d.ts",
15
+ "types": "./dist/types/src/index.d.ts",
18
16
  "source": "src/index.ts",
19
17
  "files": [
20
18
  "dist",
@@ -31,5 +29,22 @@
31
29
  "publishConfig": {
32
30
  "access": "public"
33
31
  },
34
- "gitHead": "8df187370053aa35f553cb388ad670f65e1ab371"
32
+ "targets": {
33
+ "types": false,
34
+ "module": {
35
+ "engines": {
36
+ "browsers": [
37
+ "chrome >= 79",
38
+ "firefox >= 85",
39
+ "safari >= 13"
40
+ ]
41
+ }
42
+ },
43
+ "import": {
44
+ "isLibrary": true,
45
+ "outputFormat": "esmodule",
46
+ "includeNodeModules": false
47
+ }
48
+ },
49
+ "gitHead": "a6999bdf494a2e9c0381a5881908328bdd22ddae"
35
50
  }
@@ -17,6 +17,8 @@ import {dateTimeToString, dateToString, timeToString, zonedDateTimeToString} fro
17
17
  import {GregorianCalendar} from './calendars/GregorianCalendar';
18
18
  import {toCalendarDateTime, toDate, toZoned, zonedToDate} from './conversion';
19
19
 
20
+ export type DateValue = CalendarDate | CalendarDateTime | ZonedDateTime;
21
+
20
22
  function shiftArgs(args: any[]) {
21
23
  let calendar: Calendar = typeof args[0] === 'object'
22
24
  ? args.shift()
package/src/index.ts CHANGED
@@ -27,6 +27,7 @@ export type {
27
27
  CycleOptions,
28
28
  CycleTimeOptions
29
29
  } from './types';
30
+ export type {DateValue} from './CalendarDate';
30
31
 
31
32
  export {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';
32
33
  export {GregorianCalendar} from './calendars/GregorianCalendar';
package/src/queries.ts CHANGED
@@ -11,12 +11,10 @@
11
11
  */
12
12
 
13
13
  import {AnyCalendarDate, AnyTime, Calendar} from './types';
14
- import {CalendarDate, CalendarDateTime, ZonedDateTime} from './CalendarDate';
14
+ import {CalendarDate, CalendarDateTime, DateValue, ZonedDateTime} from './CalendarDate';
15
15
  import {fromAbsolute, toAbsolute, toCalendar, toCalendarDate} from './conversion';
16
16
  import {weekStartData} from './weekStartData';
17
17
 
18
- type DateValue = CalendarDate | CalendarDateTime | ZonedDateTime;
19
-
20
18
  /** Returns whether the given dates occur on the same day, regardless of the time or calendar system. */
21
19
  export function isSameDay(a: DateValue, b: DateValue): boolean {
22
20
  b = toCalendar(b, a.calendar);
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/@internationalized/date/src/CalendarDate.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {add, addTime, addZoned, constrain, constrainTime, cycleDate, cycleTime, cycleZoned, set, setTime, setZoned, subtract, subtractTime, subtractZoned} from './manipulation';\nimport {AnyCalendarDate, AnyTime, Calendar, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {compareDate, compareTime} from './queries';\nimport {dateTimeToString, dateToString, timeToString, zonedDateTimeToString} from './string';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {toCalendarDateTime, toDate, toZoned, zonedToDate} from './conversion';\n\nfunction shiftArgs(args: any[]) {\n let calendar: Calendar = typeof args[0] === 'object'\n ? args.shift()\n : new GregorianCalendar();\n\n let era: string;\n if (typeof args[0] === 'string') {\n era = args.shift();\n } else {\n let eras = calendar.getEras();\n era = eras[eras.length - 1];\n }\n\n let year = args.shift();\n let month = args.shift();\n let day = args.shift();\n\n return [calendar, era, year, month, day];\n}\n\n/** A CalendarDate represents a date without any time components in a specific calendar system. */\nexport class CalendarDate {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // i.e. a ZonedDateTime should not be be passable to a parameter that expects CalendarDate.\n // If that behavior is desired, use the AnyCalendarDate interface instead.\n // @ts-ignore\n #type;\n /** The calendar system associated with this date, e.g. Gregorian. */\n public readonly calendar: Calendar;\n /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n public readonly era: string;\n /** The year of this date within the era. */\n public readonly year: number;\n /**\n * The month number within the year. Note that some calendar systems such as Hebrew\n * may have a variable number of months per year. Therefore, month numbers may not\n * always correspond to the same month names in different years.\n */\n public readonly month: number;\n /** The day number within the month. */\n public readonly day: number;\n\n constructor(year: number, month: number, day: number);\n constructor(era: string, year: number, month: number, day: number);\n constructor(calendar: Calendar, year: number, month: number, day: number);\n constructor(calendar: Calendar, era: string, year: number, month: number, day: number);\n constructor(...args: any[]) {\n let [calendar, era, year, month, day] = shiftArgs(args);\n this.calendar = calendar;\n this.era = era;\n this.year = year;\n this.month = month;\n this.day = day;\n\n constrain(this);\n }\n\n /** Returns a copy of this date. */\n copy(): CalendarDate {\n if (this.era) {\n return new CalendarDate(this.calendar, this.era, this.year, this.month, this.day);\n } else {\n return new CalendarDate(this.calendar, this.year, this.month, this.day);\n }\n }\n\n /** Returns a new `CalendarDate` with the given duration added to it. */\n add(duration: DateDuration): CalendarDate {\n return add(this, duration);\n }\n\n /** Returns a new `CalendarDate` with the given duration subtracted from it. */\n subtract(duration: DateDuration): CalendarDate {\n return subtract(this, duration);\n }\n\n /** Returns a new `CalendarDate` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: DateFields): CalendarDate {\n return set(this, fields);\n }\n\n /**\n * Returns a new `CalendarDate` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: DateField, amount: number, options?: CycleOptions): CalendarDate {\n return cycleDate(this, field, amount, options);\n }\n\n /** Converts the date to a native JavaScript Date object, with the time set to midnight in the given time zone. */\n toDate(timeZone: string): Date {\n return toDate(this, timeZone);\n }\n\n /** Converts the date to an ISO 8601 formatted string. */\n toString(): string {\n return dateToString(this);\n }\n\n /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n compare(b: AnyCalendarDate): number {\n return compareDate(this, b);\n }\n}\n\n/** A Time represents a clock time without any date components. */\nexport class Time {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // @ts-ignore\n #type;\n /** The hour, numbered from 0 to 23. */\n public readonly hour: number;\n /** The minute in the hour. */\n public readonly minute: number;\n /** The second in the minute. */\n public readonly second: number;\n /** The millisecond in the second. */\n public readonly millisecond: number;\n\n constructor(\n hour: number = 0,\n minute: number = 0,\n second: number = 0,\n millisecond: number = 0\n ) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond;\n constrainTime(this);\n }\n\n /** Returns a copy of this time. */\n copy(): Time {\n return new Time(this.hour, this.minute, this.second, this.millisecond);\n }\n\n /** Returns a new `Time` with the given duration added to it. */\n add(duration: TimeDuration): Time {\n return addTime(this, duration);\n }\n\n /** Returns a new `Time` with the given duration subtracted from it. */\n subtract(duration: TimeDuration): Time {\n return subtractTime(this, duration);\n }\n\n /** Returns a new `Time` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: TimeFields): Time {\n return setTime(this, fields);\n }\n\n /**\n * Returns a new `Time` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: TimeField, amount: number, options?: CycleTimeOptions): Time {\n return cycleTime(this, field, amount, options);\n }\n\n /** Converts the time to an ISO 8601 formatted string. */\n toString(): string {\n return timeToString(this);\n }\n\n /** Compares this time with another. A negative result indicates that this time is before the given one, and a positive time indicates that it is after. */\n compare(b: AnyTime): number {\n return compareTime(this, b);\n }\n}\n\n/** A CalendarDateTime represents a date and time without a time zone, in a specific calendar system. */\nexport class CalendarDateTime {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // @ts-ignore\n #type;\n /** The calendar system associated with this date, e.g. Gregorian. */\n public readonly calendar: Calendar;\n /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n public readonly era: string;\n /** The year of this date within the era. */\n public readonly year: number;\n /**\n * The month number within the year. Note that some calendar systems such as Hebrew\n * may have a variable number of months per year. Therefore, month numbers may not\n * always correspond to the same month names in different years.\n */\n public readonly month: number;\n /** The day number within the month. */\n public readonly day: number;\n /** The hour in the day, numbered from 0 to 23. */\n public readonly hour: number;\n /** The minute in the hour. */\n public readonly minute: number;\n /** The second in the minute. */\n public readonly second: number;\n /** The millisecond in the second. */\n public readonly millisecond: number;\n\n constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(...args: any[]) {\n let [calendar, era, year, month, day] = shiftArgs(args);\n this.calendar = calendar;\n this.era = era;\n this.year = year;\n this.month = month;\n this.day = day;\n this.hour = args.shift() || 0;\n this.minute = args.shift() || 0;\n this.second = args.shift() || 0;\n this.millisecond = args.shift() || 0;\n\n constrain(this);\n }\n\n /** Returns a copy of this date. */\n copy(): CalendarDateTime {\n if (this.era) {\n return new CalendarDateTime(this.calendar, this.era, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n } else {\n return new CalendarDateTime(this.calendar, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n }\n }\n\n /** Returns a new `CalendarDateTime` with the given duration added to it. */\n add(duration: DateTimeDuration): CalendarDateTime {\n return add(this, duration);\n }\n\n /** Returns a new `CalendarDateTime` with the given duration subtracted from it. */\n subtract(duration: DateTimeDuration): CalendarDateTime {\n return subtract(this, duration);\n }\n\n /** Returns a new `CalendarDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: DateFields & TimeFields): CalendarDateTime {\n return set(setTime(this, fields), fields);\n }\n\n /**\n * Returns a new `CalendarDateTime` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime {\n switch (field) {\n case 'era':\n case 'year':\n case 'month':\n case 'day':\n return cycleDate(this, field, amount, options);\n default:\n return cycleTime(this, field, amount, options);\n }\n }\n\n /** Converts the date to a native JavaScript Date object in the given time zone. */\n toDate(timeZone: string, disambiguation?: Disambiguation): Date {\n return toDate(this, timeZone, disambiguation);\n }\n\n /** Converts the date to an ISO 8601 formatted string. */\n toString(): string {\n return dateTimeToString(this);\n }\n\n /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n let res = compareDate(this, b);\n if (res === 0) {\n return compareTime(this, toCalendarDateTime(b));\n }\n\n return res;\n }\n}\n\n/** A ZonedDateTime represents a date and time in a specific time zone and calendar system. */\nexport class ZonedDateTime {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // @ts-ignore\n #type;\n /** The calendar system associated with this date, e.g. Gregorian. */\n public readonly calendar: Calendar;\n /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n public readonly era: string;\n /** The year of this date within the era. */\n public readonly year: number;\n /**\n * The month number within the year. Note that some calendar systems such as Hebrew\n * may have a variable number of months per year. Therefore, month numbers may not\n * always correspond to the same month names in different years.\n */\n public readonly month: number;\n /** The day number within the month. */\n public readonly day: number;\n /** The hour in the day, numbered from 0 to 23. */\n public readonly hour: number;\n /** The minute in the hour. */\n public readonly minute: number;\n /** The second in the minute. */\n public readonly second: number;\n /** The millisecond in the second. */\n public readonly millisecond: number;\n /** The IANA time zone identifier that this date and time is represented in. */\n public readonly timeZone: string;\n /** The UTC offset for this time, in milliseconds. */\n public readonly offset: number;\n\n constructor(year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(...args: any[]) {\n let [calendar, era, year, month, day] = shiftArgs(args);\n let timeZone = args.shift();\n let offset = args.shift();\n this.calendar = calendar;\n this.era = era;\n this.year = year;\n this.month = month;\n this.day = day;\n this.timeZone = timeZone;\n this.offset = offset;\n this.hour = args.shift() || 0;\n this.minute = args.shift() || 0;\n this.second = args.shift() || 0;\n this.millisecond = args.shift() || 0;\n\n constrain(this);\n }\n\n /** Returns a copy of this date. */\n copy(): ZonedDateTime {\n if (this.era) {\n return new ZonedDateTime(this.calendar, this.era, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n } else {\n return new ZonedDateTime(this.calendar, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n }\n }\n\n /** Returns a new `ZonedDateTime` with the given duration added to it. */\n add(duration: DateTimeDuration): ZonedDateTime {\n return addZoned(this, duration);\n }\n\n /** Returns a new `ZonedDateTime` with the given duration subtracted from it. */\n subtract(duration: DateTimeDuration): ZonedDateTime {\n return subtractZoned(this, duration);\n }\n\n /** Returns a new `ZonedDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime {\n return setZoned(this, fields, disambiguation);\n }\n\n /**\n * Returns a new `ZonedDateTime` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime {\n return cycleZoned(this, field, amount, options);\n }\n\n /** Converts the date to a native JavaScript Date object. */\n toDate(): Date {\n return zonedToDate(this);\n }\n\n /** Converts the date to an ISO 8601 formatted string, including the UTC offset and time zone identifier. */\n toString(): string {\n return zonedDateTimeToString(this);\n }\n\n /** Converts the date to an ISO 8601 formatted string in UTC. */\n toAbsoluteString(): string {\n return this.toDate().toISOString();\n }\n\n /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n // TODO: Is this a bad idea??\n return this.toDate().getTime() - toZoned(b, this.timeZone).toDate().getTime();\n }\n}\n"],"names":[],"version":3,"file":"CalendarDate.main.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/@internationalized/date/src/CalendarDate.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {add, addTime, addZoned, constrain, constrainTime, cycleDate, cycleTime, cycleZoned, set, setTime, setZoned, subtract, subtractTime, subtractZoned} from './manipulation';\nimport {AnyCalendarDate, AnyTime, Calendar, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {compareDate, compareTime} from './queries';\nimport {dateTimeToString, dateToString, timeToString, zonedDateTimeToString} from './string';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {toCalendarDateTime, toDate, toZoned, zonedToDate} from './conversion';\n\nfunction shiftArgs(args: any[]) {\n let calendar: Calendar = typeof args[0] === 'object'\n ? args.shift()\n : new GregorianCalendar();\n\n let era: string;\n if (typeof args[0] === 'string') {\n era = args.shift();\n } else {\n let eras = calendar.getEras();\n era = eras[eras.length - 1];\n }\n\n let year = args.shift();\n let month = args.shift();\n let day = args.shift();\n\n return [calendar, era, year, month, day];\n}\n\n/** A CalendarDate represents a date without any time components in a specific calendar system. */\nexport class CalendarDate {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // i.e. a ZonedDateTime should not be be passable to a parameter that expects CalendarDate.\n // If that behavior is desired, use the AnyCalendarDate interface instead.\n // @ts-ignore\n #type;\n /** The calendar system associated with this date, e.g. Gregorian. */\n public readonly calendar: Calendar;\n /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n public readonly era: string;\n /** The year of this date within the era. */\n public readonly year: number;\n /**\n * The month number within the year. Note that some calendar systems such as Hebrew\n * may have a variable number of months per year. Therefore, month numbers may not\n * always correspond to the same month names in different years.\n */\n public readonly month: number;\n /** The day number within the month. */\n public readonly day: number;\n\n constructor(year: number, month: number, day: number);\n constructor(era: string, year: number, month: number, day: number);\n constructor(calendar: Calendar, year: number, month: number, day: number);\n constructor(calendar: Calendar, era: string, year: number, month: number, day: number);\n constructor(...args: any[]) {\n let [calendar, era, year, month, day] = shiftArgs(args);\n this.calendar = calendar;\n this.era = era;\n this.year = year;\n this.month = month;\n this.day = day;\n\n constrain(this);\n }\n\n /** Returns a copy of this date. */\n copy(): CalendarDate {\n if (this.era) {\n return new CalendarDate(this.calendar, this.era, this.year, this.month, this.day);\n } else {\n return new CalendarDate(this.calendar, this.year, this.month, this.day);\n }\n }\n\n /** Returns a new `CalendarDate` with the given duration added to it. */\n add(duration: DateDuration): CalendarDate {\n return add(this, duration);\n }\n\n /** Returns a new `CalendarDate` with the given duration subtracted from it. */\n subtract(duration: DateDuration): CalendarDate {\n return subtract(this, duration);\n }\n\n /** Returns a new `CalendarDate` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: DateFields): CalendarDate {\n return set(this, fields);\n }\n\n /**\n * Returns a new `CalendarDate` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: DateField, amount: number, options?: CycleOptions): CalendarDate {\n return cycleDate(this, field, amount, options);\n }\n\n /** Converts the date to a native JavaScript Date object, with the time set to midnight in the given time zone. */\n toDate(timeZone: string): Date {\n return toDate(this, timeZone);\n }\n\n /** Converts the date to an ISO 8601 formatted string. */\n toString(): string {\n return dateToString(this);\n }\n\n /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n compare(b: AnyCalendarDate): number {\n return compareDate(this, b);\n }\n}\n\n/** A Time represents a clock time without any date components. */\nexport class Time {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // @ts-ignore\n #type;\n /** The hour, numbered from 0 to 23. */\n public readonly hour: number;\n /** The minute in the hour. */\n public readonly minute: number;\n /** The second in the minute. */\n public readonly second: number;\n /** The millisecond in the second. */\n public readonly millisecond: number;\n\n constructor(\n hour: number = 0,\n minute: number = 0,\n second: number = 0,\n millisecond: number = 0\n ) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond;\n constrainTime(this);\n }\n\n /** Returns a copy of this time. */\n copy(): Time {\n return new Time(this.hour, this.minute, this.second, this.millisecond);\n }\n\n /** Returns a new `Time` with the given duration added to it. */\n add(duration: TimeDuration): Time {\n return addTime(this, duration);\n }\n\n /** Returns a new `Time` with the given duration subtracted from it. */\n subtract(duration: TimeDuration): Time {\n return subtractTime(this, duration);\n }\n\n /** Returns a new `Time` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: TimeFields): Time {\n return setTime(this, fields);\n }\n\n /**\n * Returns a new `Time` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: TimeField, amount: number, options?: CycleTimeOptions): Time {\n return cycleTime(this, field, amount, options);\n }\n\n /** Converts the time to an ISO 8601 formatted string. */\n toString(): string {\n return timeToString(this);\n }\n\n /** Compares this time with another. A negative result indicates that this time is before the given one, and a positive time indicates that it is after. */\n compare(b: AnyTime): number {\n return compareTime(this, b);\n }\n}\n\n/** A CalendarDateTime represents a date and time without a time zone, in a specific calendar system. */\nexport class CalendarDateTime {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // @ts-ignore\n #type;\n /** The calendar system associated with this date, e.g. Gregorian. */\n public readonly calendar: Calendar;\n /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n public readonly era: string;\n /** The year of this date within the era. */\n public readonly year: number;\n /**\n * The month number within the year. Note that some calendar systems such as Hebrew\n * may have a variable number of months per year. Therefore, month numbers may not\n * always correspond to the same month names in different years.\n */\n public readonly month: number;\n /** The day number within the month. */\n public readonly day: number;\n /** The hour in the day, numbered from 0 to 23. */\n public readonly hour: number;\n /** The minute in the hour. */\n public readonly minute: number;\n /** The second in the minute. */\n public readonly second: number;\n /** The millisecond in the second. */\n public readonly millisecond: number;\n\n constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(...args: any[]) {\n let [calendar, era, year, month, day] = shiftArgs(args);\n this.calendar = calendar;\n this.era = era;\n this.year = year;\n this.month = month;\n this.day = day;\n this.hour = args.shift() || 0;\n this.minute = args.shift() || 0;\n this.second = args.shift() || 0;\n this.millisecond = args.shift() || 0;\n\n constrain(this);\n }\n\n /** Returns a copy of this date. */\n copy(): CalendarDateTime {\n if (this.era) {\n return new CalendarDateTime(this.calendar, this.era, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n } else {\n return new CalendarDateTime(this.calendar, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n }\n }\n\n /** Returns a new `CalendarDateTime` with the given duration added to it. */\n add(duration: DateTimeDuration): CalendarDateTime {\n return add(this, duration);\n }\n\n /** Returns a new `CalendarDateTime` with the given duration subtracted from it. */\n subtract(duration: DateTimeDuration): CalendarDateTime {\n return subtract(this, duration);\n }\n\n /** Returns a new `CalendarDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: DateFields & TimeFields): CalendarDateTime {\n return set(setTime(this, fields), fields);\n }\n\n /**\n * Returns a new `CalendarDateTime` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime {\n switch (field) {\n case 'era':\n case 'year':\n case 'month':\n case 'day':\n return cycleDate(this, field, amount, options);\n default:\n return cycleTime(this, field, amount, options);\n }\n }\n\n /** Converts the date to a native JavaScript Date object in the given time zone. */\n toDate(timeZone: string, disambiguation?: Disambiguation): Date {\n return toDate(this, timeZone, disambiguation);\n }\n\n /** Converts the date to an ISO 8601 formatted string. */\n toString(): string {\n return dateTimeToString(this);\n }\n\n /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n let res = compareDate(this, b);\n if (res === 0) {\n return compareTime(this, toCalendarDateTime(b));\n }\n\n return res;\n }\n}\n\n/** A ZonedDateTime represents a date and time in a specific time zone and calendar system. */\nexport class ZonedDateTime {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // @ts-ignore\n #type;\n /** The calendar system associated with this date, e.g. Gregorian. */\n public readonly calendar: Calendar;\n /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n public readonly era: string;\n /** The year of this date within the era. */\n public readonly year: number;\n /**\n * The month number within the year. Note that some calendar systems such as Hebrew\n * may have a variable number of months per year. Therefore, month numbers may not\n * always correspond to the same month names in different years.\n */\n public readonly month: number;\n /** The day number within the month. */\n public readonly day: number;\n /** The hour in the day, numbered from 0 to 23. */\n public readonly hour: number;\n /** The minute in the hour. */\n public readonly minute: number;\n /** The second in the minute. */\n public readonly second: number;\n /** The millisecond in the second. */\n public readonly millisecond: number;\n /** The IANA time zone identifier that this date and time is represented in. */\n public readonly timeZone: string;\n /** The UTC offset for this time, in milliseconds. */\n public readonly offset: number;\n\n constructor(year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(...args: any[]) {\n let [calendar, era, year, month, day] = shiftArgs(args);\n let timeZone = args.shift();\n let offset = args.shift();\n this.calendar = calendar;\n this.era = era;\n this.year = year;\n this.month = month;\n this.day = day;\n this.timeZone = timeZone;\n this.offset = offset;\n this.hour = args.shift() || 0;\n this.minute = args.shift() || 0;\n this.second = args.shift() || 0;\n this.millisecond = args.shift() || 0;\n\n constrain(this);\n }\n\n /** Returns a copy of this date. */\n copy(): ZonedDateTime {\n if (this.era) {\n return new ZonedDateTime(this.calendar, this.era, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n } else {\n return new ZonedDateTime(this.calendar, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n }\n }\n\n /** Returns a new `ZonedDateTime` with the given duration added to it. */\n add(duration: DateTimeDuration): ZonedDateTime {\n return addZoned(this, duration);\n }\n\n /** Returns a new `ZonedDateTime` with the given duration subtracted from it. */\n subtract(duration: DateTimeDuration): ZonedDateTime {\n return subtractZoned(this, duration);\n }\n\n /** Returns a new `ZonedDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime {\n return setZoned(this, fields, disambiguation);\n }\n\n /**\n * Returns a new `ZonedDateTime` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime {\n return cycleZoned(this, field, amount, options);\n }\n\n /** Converts the date to a native JavaScript Date object. */\n toDate(): Date {\n return zonedToDate(this);\n }\n\n /** Converts the date to an ISO 8601 formatted string, including the UTC offset and time zone identifier. */\n toString(): string {\n return zonedDateTimeToString(this);\n }\n\n /** Converts the date to an ISO 8601 formatted string in UTC. */\n toAbsoluteString(): string {\n return this.toDate().toISOString();\n }\n\n /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n // TODO: Is this a bad idea??\n return this.toDate().getTime() - toZoned(b, this.timeZone).toDate().getTime();\n }\n}\n"],"names":[],"version":3,"file":"CalendarDate.module.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/@internationalized/date/src/DateFormatter.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nlet formatterCache = new Map<string, Intl.DateTimeFormat>();\n\ninterface DateRangeFormatPart extends Intl.DateTimeFormatPart {\n source: 'startRange' | 'endRange' | 'shared'\n}\n\n/** A wrapper around Intl.DateTimeFormat that fixes various browser bugs, and polyfills new features. */\nexport class DateFormatter implements Intl.DateTimeFormat {\n private formatter: Intl.DateTimeFormat;\n private options: Intl.DateTimeFormatOptions;\n private resolvedHourCycle: Intl.DateTimeFormatOptions['hourCycle'];\n\n constructor(locale: string, options: Intl.DateTimeFormatOptions = {}) {\n this.formatter = getCachedDateFormatter(locale, options);\n this.options = options;\n }\n\n /** Formats a date as a string according to the locale and format options passed to the constructor. */\n format(value: Date): string {\n return this.formatter.format(value);\n }\n\n /** Formats a date to an array of parts such as separators, numbers, punctuation, and more. */\n formatToParts(value: Date): Intl.DateTimeFormatPart[] {\n return this.formatter.formatToParts(value);\n }\n\n /** Formats a date range as a string. */\n formatRange(start: Date, end: Date): string {\n // @ts-ignore\n if (typeof this.formatter.formatRange === 'function') {\n // @ts-ignore\n return this.formatter.formatRange(start, end);\n }\n\n if (end < start) {\n throw new RangeError('End date must be >= start date');\n }\n\n // Very basic fallback for old browsers.\n return `${this.formatter.format(start)} – ${this.formatter.format(end)}`;\n }\n\n /** Formats a date range as an array of parts. */\n formatRangeToParts(start: Date, end: Date): DateRangeFormatPart[] {\n // @ts-ignore\n if (typeof this.formatter.formatRangeToParts === 'function') {\n // @ts-ignore\n return this.formatter.formatRangeToParts(start, end);\n }\n\n if (end < start) {\n throw new RangeError('End date must be >= start date');\n }\n\n let startParts = this.formatter.formatToParts(start);\n let endParts = this.formatter.formatToParts(end);\n return [\n ...startParts.map(p => ({...p, source: 'startRange'} as DateRangeFormatPart)),\n {type: 'literal', value: ' – ', source: 'shared'},\n ...endParts.map(p => ({...p, source: 'endRange'} as DateRangeFormatPart))\n ];\n }\n\n /** Returns the resolved formatting options based on the values passed to the constructor. */\n resolvedOptions(): Intl.ResolvedDateTimeFormatOptions {\n let resolvedOptions = this.formatter.resolvedOptions();\n if (hasBuggyResolvedHourCycle()) {\n if (!this.resolvedHourCycle) {\n this.resolvedHourCycle = getResolvedHourCycle(resolvedOptions.locale, this.options);\n }\n resolvedOptions.hourCycle = this.resolvedHourCycle;\n resolvedOptions.hour12 = this.resolvedHourCycle === 'h11' || this.resolvedHourCycle === 'h12';\n }\n\n // Safari uses a different name for the Ethiopic (Amete Alem) calendar.\n // https://bugs.webkit.org/show_bug.cgi?id=241564\n if (resolvedOptions.calendar === 'ethiopic-amete-alem') {\n resolvedOptions.calendar = 'ethioaa';\n }\n\n return resolvedOptions;\n }\n}\n\n// There are multiple bugs involving the hour12 and hourCycle options in various browser engines.\n// - Chrome [1] (and the ECMA 402 spec [2]) resolve hour12: false in English and other locales to h24 (24:00 - 23:59)\n// rather than h23 (00:00 - 23:59). Same can happen with hour12: true in French, which Chrome resolves to h11 (00:00 - 11:59)\n// rather than h12 (12:00 - 11:59).\n// - WebKit returns an incorrect hourCycle resolved option in the French locale due to incorrect parsing of 'h' literal\n// in the resolved pattern. It also formats incorrectly when specifying the hourCycle option for the same reason. [3]\n// [1] https://bugs.chromium.org/p/chromium/issues/detail?id=1045791\n// [2] https://github.com/tc39/ecma402/issues/402\n// [3] https://bugs.webkit.org/show_bug.cgi?id=229313\n\n// https://github.com/unicode-org/cldr/blob/018b55eff7ceb389c7e3fc44e2f657eae3b10b38/common/supplemental/supplementalData.xml#L4774-L4802\nconst hour12Preferences = {\n true: {\n // Only Japanese uses the h11 style for 12 hour time. All others use h12.\n ja: 'h11'\n },\n false: {\n // All locales use h23 for 24 hour time. None use h24.\n }\n};\n\nfunction getCachedDateFormatter(locale: string, options: Intl.DateTimeFormatOptions = {}): Intl.DateTimeFormat {\n // Work around buggy hour12 behavior in Chrome / ECMA 402 spec by using hourCycle instead.\n // Only apply the workaround if the issue is detected, because the hourCycle option is buggy in Safari.\n if (typeof options.hour12 === 'boolean' && hasBuggyHour12Behavior()) {\n options = {...options};\n let pref = hour12Preferences[String(options.hour12)][locale.split('-')[0]];\n let defaultHourCycle = options.hour12 ? 'h12' : 'h23';\n options.hourCycle = pref ?? defaultHourCycle;\n delete options.hour12;\n }\n\n let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : '');\n if (formatterCache.has(cacheKey)) {\n return formatterCache.get(cacheKey)!;\n }\n\n let numberFormatter = new Intl.DateTimeFormat(locale, options);\n formatterCache.set(cacheKey, numberFormatter);\n return numberFormatter;\n}\n\nlet _hasBuggyHour12Behavior: boolean | null = null;\nfunction hasBuggyHour12Behavior() {\n if (_hasBuggyHour12Behavior == null) {\n _hasBuggyHour12Behavior = new Intl.DateTimeFormat('en-US', {\n hour: 'numeric',\n hour12: false\n }).format(new Date(2020, 2, 3, 0)) === '24';\n }\n\n return _hasBuggyHour12Behavior;\n}\n\nlet _hasBuggyResolvedHourCycle: boolean | null = null;\nfunction hasBuggyResolvedHourCycle() {\n if (_hasBuggyResolvedHourCycle == null) {\n _hasBuggyResolvedHourCycle = new Intl.DateTimeFormat('fr', {\n hour: 'numeric',\n hour12: false\n }).resolvedOptions().hourCycle === 'h12';\n }\n\n return _hasBuggyResolvedHourCycle;\n}\n\nfunction getResolvedHourCycle(locale: string, options: Intl.DateTimeFormatOptions) {\n if (!options.timeStyle && !options.hour) {\n return undefined;\n }\n\n // Work around buggy results in resolved hourCycle and hour12 options in WebKit.\n // Format the minimum possible hour and maximum possible hour in a day and parse the results.\n locale = locale.replace(/(-u-)?-nu-[a-zA-Z0-9]+/, '');\n locale += (locale.includes('-u-') ? '' : '-u') + '-nu-latn';\n let formatter = getCachedDateFormatter(locale, {\n ...options,\n timeZone: undefined // use local timezone\n });\n\n let min = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 0)).find(p => p.type === 'hour')!.value, 10);\n let max = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 23)).find(p => p.type === 'hour')!.value, 10);\n\n if (min === 0 && max === 23) {\n return 'h23';\n }\n\n if (min === 24 && max === 23) {\n return 'h24';\n }\n\n if (min === 0 && max === 11) {\n return 'h11';\n }\n\n if (min === 12 && max === 11) {\n return 'h12';\n }\n\n throw new Error('Unexpected hour cycle result');\n}\n"],"names":[],"version":3,"file":"DateFormatter.main.js.map"}