frey-ui 1.0.16 → 1.2.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.
Files changed (134) hide show
  1. package/dist/cjs/Calendar/calendar.css +216 -0
  2. package/dist/cjs/Calendar/calendar.module.css.cjs +10 -0
  3. package/dist/cjs/Calendar/calendar.module.css.cjs.map +1 -0
  4. package/dist/cjs/Calendar/calendarInteractions.cjs +34 -0
  5. package/dist/cjs/Calendar/calendarInteractions.cjs.map +1 -0
  6. package/dist/cjs/Calendar/calendarModel.cjs +232 -0
  7. package/dist/cjs/Calendar/calendarModel.cjs.map +1 -0
  8. package/dist/cjs/Calendar/index.cjs +204 -0
  9. package/dist/cjs/Calendar/index.cjs.map +1 -0
  10. package/dist/cjs/DateField/DateFieldSegments.cjs +71 -0
  11. package/dist/cjs/DateField/DateFieldSegments.cjs.map +1 -0
  12. package/dist/cjs/DateField/DateSegmentInput.cjs +17 -0
  13. package/dist/cjs/DateField/DateSegmentInput.cjs.map +1 -0
  14. package/dist/cjs/DateField/dateFieldInteractions.cjs +205 -0
  15. package/dist/cjs/DateField/dateFieldInteractions.cjs.map +1 -0
  16. package/dist/cjs/DateField/dateFieldState.cjs +127 -0
  17. package/dist/cjs/DateField/dateFieldState.cjs.map +1 -0
  18. package/dist/cjs/DateField/datefield.css +134 -0
  19. package/dist/cjs/DateField/datefield.module.css.cjs +10 -0
  20. package/dist/cjs/DateField/datefield.module.css.cjs.map +1 -0
  21. package/dist/cjs/DateField/index.cjs +203 -0
  22. package/dist/cjs/DateField/index.cjs.map +1 -0
  23. package/dist/cjs/DatePicker/datepicker.css +24 -0
  24. package/dist/cjs/DatePicker/datepicker.module.css.cjs +10 -0
  25. package/dist/cjs/DatePicker/datepicker.module.css.cjs.map +1 -0
  26. package/dist/cjs/DatePicker/index.cjs +98 -0
  27. package/dist/cjs/DatePicker/index.cjs.map +1 -0
  28. package/dist/cjs/Icons/CalendarIcon.cjs +12 -0
  29. package/dist/cjs/Icons/CalendarIcon.cjs.map +1 -0
  30. package/dist/cjs/Popover/index.cjs +2 -2
  31. package/dist/cjs/Popover/index.cjs.map +1 -1
  32. package/dist/cjs/SegmentedControl/index.cjs +60 -0
  33. package/dist/cjs/SegmentedControl/index.cjs.map +1 -0
  34. package/dist/cjs/SegmentedControl/segmentedcontrol.css +131 -0
  35. package/dist/cjs/SegmentedControl/segmentedcontrol.module.css.cjs +10 -0
  36. package/dist/cjs/SegmentedControl/segmentedcontrol.module.css.cjs.map +1 -0
  37. package/dist/cjs/date/dateEngine.cjs +591 -0
  38. package/dist/cjs/date/dateEngine.cjs.map +1 -0
  39. package/dist/cjs/date/dateLocale.cjs +239 -0
  40. package/dist/cjs/date/dateLocale.cjs.map +1 -0
  41. package/dist/cjs/date/japaneseEraData.cjs +252 -0
  42. package/dist/cjs/date/japaneseEraData.cjs.map +1 -0
  43. package/dist/cjs/date/useDateLocale.cjs +24 -0
  44. package/dist/cjs/date/useDateLocale.cjs.map +1 -0
  45. package/dist/cjs/index.cjs +68 -58
  46. package/dist/cjs/index.cjs.map +1 -1
  47. package/dist/cjs/theme.css +32 -0
  48. package/dist/esm/Calendar/calendar.css +216 -0
  49. package/dist/esm/Calendar/calendar.module.css.mjs +6 -0
  50. package/dist/esm/Calendar/calendar.module.css.mjs.map +1 -0
  51. package/dist/esm/Calendar/calendarInteractions.mjs +32 -0
  52. package/dist/esm/Calendar/calendarInteractions.mjs.map +1 -0
  53. package/dist/esm/Calendar/calendarModel.mjs +224 -0
  54. package/dist/esm/Calendar/calendarModel.mjs.map +1 -0
  55. package/dist/esm/Calendar/index.mjs +200 -0
  56. package/dist/esm/Calendar/index.mjs.map +1 -0
  57. package/dist/esm/DateField/DateFieldSegments.mjs +69 -0
  58. package/dist/esm/DateField/DateFieldSegments.mjs.map +1 -0
  59. package/dist/esm/DateField/DateSegmentInput.mjs +15 -0
  60. package/dist/esm/DateField/DateSegmentInput.mjs.map +1 -0
  61. package/dist/esm/DateField/dateFieldInteractions.mjs +198 -0
  62. package/dist/esm/DateField/dateFieldInteractions.mjs.map +1 -0
  63. package/dist/esm/DateField/dateFieldState.mjs +119 -0
  64. package/dist/esm/DateField/dateFieldState.mjs.map +1 -0
  65. package/dist/esm/DateField/datefield.css +134 -0
  66. package/dist/esm/DateField/datefield.module.css.mjs +6 -0
  67. package/dist/esm/DateField/datefield.module.css.mjs.map +1 -0
  68. package/dist/esm/DateField/index.mjs +198 -0
  69. package/dist/esm/DateField/index.mjs.map +1 -0
  70. package/dist/esm/DatePicker/datepicker.css +24 -0
  71. package/dist/esm/DatePicker/datepicker.module.css.mjs +6 -0
  72. package/dist/esm/DatePicker/datepicker.module.css.mjs.map +1 -0
  73. package/dist/esm/DatePicker/index.mjs +94 -0
  74. package/dist/esm/DatePicker/index.mjs.map +1 -0
  75. package/dist/esm/Icons/CalendarIcon.mjs +10 -0
  76. package/dist/esm/Icons/CalendarIcon.mjs.map +1 -0
  77. package/dist/esm/Popover/index.mjs +2 -2
  78. package/dist/esm/Popover/index.mjs.map +1 -1
  79. package/dist/esm/SegmentedControl/index.mjs +55 -0
  80. package/dist/esm/SegmentedControl/index.mjs.map +1 -0
  81. package/dist/esm/SegmentedControl/segmentedcontrol.css +131 -0
  82. package/dist/esm/SegmentedControl/segmentedcontrol.module.css.mjs +6 -0
  83. package/dist/esm/SegmentedControl/segmentedcontrol.module.css.mjs.map +1 -0
  84. package/dist/esm/date/dateEngine.mjs +573 -0
  85. package/dist/esm/date/dateEngine.mjs.map +1 -0
  86. package/dist/esm/date/dateLocale.mjs +226 -0
  87. package/dist/esm/date/dateLocale.mjs.map +1 -0
  88. package/dist/esm/date/japaneseEraData.mjs +250 -0
  89. package/dist/esm/date/japaneseEraData.mjs.map +1 -0
  90. package/dist/esm/date/useDateLocale.mjs +22 -0
  91. package/dist/esm/date/useDateLocale.mjs.map +1 -0
  92. package/dist/esm/index.mjs +5 -0
  93. package/dist/esm/index.mjs.map +1 -1
  94. package/dist/esm/theme.css +32 -0
  95. package/dist/index.d.ts +116 -3
  96. package/dist/types/src/Calendar/calendarInteractions.d.ts +9 -0
  97. package/dist/types/src/Calendar/calendarInteractions.d.ts.map +1 -0
  98. package/dist/types/src/Calendar/calendarModel.d.ts +81 -0
  99. package/dist/types/src/Calendar/calendarModel.d.ts.map +1 -0
  100. package/dist/types/src/Calendar/index.d.ts +26 -0
  101. package/dist/types/src/Calendar/index.d.ts.map +1 -0
  102. package/dist/types/src/DateField/DateFieldSegments.d.ts +28 -0
  103. package/dist/types/src/DateField/DateFieldSegments.d.ts.map +1 -0
  104. package/dist/types/src/DateField/DateSegmentInput.d.ts +23 -0
  105. package/dist/types/src/DateField/DateSegmentInput.d.ts.map +1 -0
  106. package/dist/types/src/DateField/dateFieldInteractions.d.ts +66 -0
  107. package/dist/types/src/DateField/dateFieldInteractions.d.ts.map +1 -0
  108. package/dist/types/src/DateField/dateFieldState.d.ts +32 -0
  109. package/dist/types/src/DateField/dateFieldState.d.ts.map +1 -0
  110. package/dist/types/src/DateField/index.d.ts +42 -0
  111. package/dist/types/src/DateField/index.d.ts.map +1 -0
  112. package/dist/types/src/DatePicker/index.d.ts +19 -0
  113. package/dist/types/src/DatePicker/index.d.ts.map +1 -0
  114. package/dist/types/src/Icons/CalendarIcon.d.ts +4 -0
  115. package/dist/types/src/Icons/CalendarIcon.d.ts.map +1 -0
  116. package/dist/types/src/Icons/index.d.ts +1 -0
  117. package/dist/types/src/Icons/index.d.ts.map +1 -1
  118. package/dist/types/src/Popover/index.d.ts +3 -1
  119. package/dist/types/src/Popover/index.d.ts.map +1 -1
  120. package/dist/types/src/SegmentedControl/index.d.ts +38 -0
  121. package/dist/types/src/SegmentedControl/index.d.ts.map +1 -0
  122. package/dist/types/src/date/dateEngine.d.ts +22 -0
  123. package/dist/types/src/date/dateEngine.d.ts.map +1 -0
  124. package/dist/types/src/date/dateLocale.d.ts +30 -0
  125. package/dist/types/src/date/dateLocale.d.ts.map +1 -0
  126. package/dist/types/src/date/japaneseEraData.d.ts +7 -0
  127. package/dist/types/src/date/japaneseEraData.d.ts.map +1 -0
  128. package/dist/types/src/date/types.d.ts +23 -0
  129. package/dist/types/src/date/types.d.ts.map +1 -0
  130. package/dist/types/src/date/useDateLocale.d.ts +2 -0
  131. package/dist/types/src/date/useDateLocale.d.ts.map +1 -0
  132. package/dist/types/src/index.d.ts +10 -1
  133. package/dist/types/src/index.d.ts.map +1 -1
  134. package/package.json +4 -4
@@ -0,0 +1,573 @@
1
+ 'use client';
2
+ import { JAPANESE_ERAS } from './japaneseEraData.mjs';
3
+
4
+ const ISO_PATTERN = /^(\d{4})-(\d{2})-(\d{2})$/;
5
+ const MIN_EPOCH_DAY = -719162;
6
+ const MAX_EPOCH_DAY = 2932896;
7
+ const FIXED_FROM_UNIX_EPOCH = 719163;
8
+ const HEBREW_EPOCH = -1373427;
9
+ const DATE_CALENDARS = [
10
+ 'gregory',
11
+ 'buddhist',
12
+ 'japanese',
13
+ 'roc',
14
+ 'persian',
15
+ 'islamic-civil',
16
+ 'hebrew',
17
+ ];
18
+ function validateDateCalendar(calendar, propName = 'calendar') {
19
+ if (!DATE_CALENDARS.includes(calendar)) {
20
+ throw new RangeError(`${propName} must be a supported date calendar; received ${String(calendar)}.`);
21
+ }
22
+ return calendar;
23
+ }
24
+ function floorDiv(dividend, divisor) {
25
+ return Math.floor(dividend / divisor);
26
+ }
27
+ function modulo(dividend, divisor) {
28
+ return ((dividend % divisor) + divisor) % divisor;
29
+ }
30
+ function isIsoLeapYear(year) {
31
+ return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
32
+ }
33
+ function getDaysInIsoMonth(year, month) {
34
+ if (month === 2)
35
+ return isIsoLeapYear(year) ? 29 : 28;
36
+ return [4, 6, 9, 11].includes(month) ? 30 : 31;
37
+ }
38
+ function isValidIsoDate(date) {
39
+ return (Number.isInteger(date.year) &&
40
+ date.year >= 1 &&
41
+ date.year <= 9999 &&
42
+ Number.isInteger(date.month) &&
43
+ date.month >= 1 &&
44
+ date.month <= 12 &&
45
+ Number.isInteger(date.day) &&
46
+ date.day >= 1 &&
47
+ date.day <= getDaysInIsoMonth(date.year, date.month));
48
+ }
49
+ function parseDateValue(value, propName = 'value') {
50
+ const match = ISO_PATTERN.exec(value);
51
+ const parsed = match
52
+ ? {
53
+ year: Number(match[1]),
54
+ month: Number(match[2]),
55
+ day: Number(match[3]),
56
+ }
57
+ : null;
58
+ if (!parsed || !isValidIsoDate(parsed)) {
59
+ throw new RangeError(`${propName} must be a valid YYYY-MM-DD date; received ${value}.`);
60
+ }
61
+ return parsed;
62
+ }
63
+ function serializeDateValue(date) {
64
+ if (!isValidIsoDate(date)) {
65
+ throw new RangeError('date must be between 0001-01-01 and 9999-12-31.');
66
+ }
67
+ return `${String(date.year).padStart(4, '0')}-${String(date.month).padStart(2, '0')}-${String(date.day).padStart(2, '0')}`;
68
+ }
69
+ function isoDateToEpochDay(date) {
70
+ if (!isValidIsoDate(date)) {
71
+ throw new RangeError('date must be between 0001-01-01 and 9999-12-31.');
72
+ }
73
+ let year = date.year;
74
+ year -= date.month <= 2 ? 1 : 0;
75
+ const era = floorDiv(year, 400);
76
+ const yearOfEra = year - era * 400;
77
+ const adjustedMonth = date.month + (date.month > 2 ? -3 : 9);
78
+ const dayOfYear = floorDiv(153 * adjustedMonth + 2, 5) + date.day - 1;
79
+ const dayOfEra = yearOfEra * 365 +
80
+ floorDiv(yearOfEra, 4) -
81
+ floorDiv(yearOfEra, 100) +
82
+ dayOfYear;
83
+ return era * 146097 + dayOfEra - 719468;
84
+ }
85
+ function epochDayToIsoDate(epochDay) {
86
+ if (!Number.isInteger(epochDay) ||
87
+ epochDay < MIN_EPOCH_DAY ||
88
+ epochDay > MAX_EPOCH_DAY) {
89
+ throw new RangeError('epochDay is outside the supported ISO date range.');
90
+ }
91
+ const shifted = epochDay + 719468;
92
+ const era = floorDiv(shifted, 146097);
93
+ const dayOfEra = shifted - era * 146097;
94
+ const yearOfEra = floorDiv(dayOfEra -
95
+ floorDiv(dayOfEra, 1460) +
96
+ floorDiv(dayOfEra, 36524) -
97
+ floorDiv(dayOfEra, 146096), 365);
98
+ let year = yearOfEra + era * 400;
99
+ const dayOfYear = dayOfEra -
100
+ (365 * yearOfEra + floorDiv(yearOfEra, 4) - floorDiv(yearOfEra, 100));
101
+ const monthPrime = floorDiv(5 * dayOfYear + 2, 153);
102
+ const day = dayOfYear - floorDiv(153 * monthPrime + 2, 5) + 1;
103
+ const month = monthPrime + (monthPrime < 10 ? 3 : -9);
104
+ year += month <= 2 ? 1 : 0;
105
+ return { year, month, day };
106
+ }
107
+ function addIsoDays(date, amount) {
108
+ return epochDayToIsoDate(isoDateToEpochDay(date) + amount);
109
+ }
110
+ function addIsoMonths(date, amount) {
111
+ const monthIndex = date.year * 12 + date.month - 1 + amount;
112
+ const year = floorDiv(monthIndex, 12);
113
+ const month = modulo(monthIndex, 12) + 1;
114
+ const result = {
115
+ year,
116
+ month,
117
+ day: Math.min(date.day, getDaysInIsoMonth(year, month)),
118
+ };
119
+ if (!isValidIsoDate(result)) {
120
+ throw new RangeError('date arithmetic exceeded the supported ISO range.');
121
+ }
122
+ return result;
123
+ }
124
+ function addIsoYears(date, amount) {
125
+ const year = date.year + amount;
126
+ const result = {
127
+ year,
128
+ month: date.month,
129
+ day: Math.min(date.day, getDaysInIsoMonth(year, date.month)),
130
+ };
131
+ if (!isValidIsoDate(result)) {
132
+ throw new RangeError('date arithmetic exceeded the supported ISO range.');
133
+ }
134
+ return result;
135
+ }
136
+ function compareIsoDates(left, right) {
137
+ const difference = isoDateToEpochDay(left) - isoDateToEpochDay(right);
138
+ return difference < 0 ? -1 : difference > 0 ? 1 : 0;
139
+ }
140
+ function validateDateConstraints(minValue, maxValue) {
141
+ const minDate = minValue === undefined ? undefined : parseDateValue(minValue, 'minValue');
142
+ const maxDate = maxValue === undefined ? undefined : parseDateValue(maxValue, 'maxValue');
143
+ if (minDate && maxDate && compareIsoDates(minDate, maxDate) > 0) {
144
+ throw new RangeError('minValue must be on or before maxValue.');
145
+ }
146
+ return { minDate, maxDate };
147
+ }
148
+ function isDateWithinConstraints(date, minDate, maxDate) {
149
+ return !((minDate && compareIsoDates(date, minDate) < 0) ||
150
+ (maxDate && compareIsoDates(date, maxDate) > 0));
151
+ }
152
+ function fixedFromIso(date) {
153
+ return isoDateToEpochDay(date) + FIXED_FROM_UNIX_EPOCH;
154
+ }
155
+ function isoFromFixed(fixed) {
156
+ return epochDayToIsoDate(fixed - FIXED_FROM_UNIX_EPOCH);
157
+ }
158
+ function getPersianFixed(year, month, day) {
159
+ const epochBase = year - (year >= 0 ? 474 : 473);
160
+ const epochYear = 474 + modulo(epochBase, 2820);
161
+ const monthDays = month <= 7 ? (month - 1) * 31 : (month - 1) * 30 + 6;
162
+ return (day +
163
+ monthDays +
164
+ floorDiv(epochYear * 682 - 110, 2816) +
165
+ (epochYear - 1) * 365 +
166
+ floorDiv(epochBase, 2820) * 1029983 +
167
+ 226895);
168
+ }
169
+ function getPersianDate(fixed) {
170
+ const daysSince475 = fixed - getPersianFixed(475, 1, 1);
171
+ const cycle = floorDiv(daysSince475, 1029983);
172
+ const cycleDay = modulo(daysSince475, 1029983);
173
+ const yearInCycle = cycleDay === 1029982
174
+ ? 2820
175
+ : floorDiv(2134 * floorDiv(cycleDay, 366) + 2816 * modulo(cycleDay, 366) + 2815, 1028522) +
176
+ floorDiv(cycleDay, 366) +
177
+ 1;
178
+ let year = yearInCycle + 2820 * cycle + 474;
179
+ if (year <= 0)
180
+ year -= 1;
181
+ const dayOfYear = fixed - getPersianFixed(year, 1, 1) + 1;
182
+ const month = dayOfYear <= 186
183
+ ? Math.ceil(dayOfYear / 31)
184
+ : Math.ceil((dayOfYear - 6) / 30);
185
+ const day = fixed - getPersianFixed(year, month, 1) + 1;
186
+ const nextYear = year === -1 ? 1 : year + 1;
187
+ const nextYearLength = getPersianFixed(nextYear, 1, 1) - getPersianFixed(year, 1, 1);
188
+ const daysInMonth = month <= 6 ? 31 : month <= 11 ? 30 : nextYearLength === 366 ? 30 : 29;
189
+ const relatedDate = isoFromFixed(fixed);
190
+ return {
191
+ era: year > 0 ? 'ap' : 'before-ap',
192
+ year: Math.abs(year),
193
+ month,
194
+ monthCode: `M${String(month).padStart(2, '0')}`,
195
+ day,
196
+ monthsInYear: 12,
197
+ daysInMonth,
198
+ relatedYear: relatedDate.year,
199
+ relatedMonth: relatedDate.month,
200
+ relatedDay: relatedDate.day,
201
+ };
202
+ }
203
+ function getIslamicFixed(year, month, day) {
204
+ return (day +
205
+ Math.ceil(29.5 * (month - 1)) +
206
+ (year - 1) * 354 +
207
+ floorDiv(3 + 11 * year, 30) +
208
+ 227014);
209
+ }
210
+ function isIslamicLeapYear(year) {
211
+ return modulo(14 + 11 * year, 30) < 11;
212
+ }
213
+ function getIslamicDate(fixed) {
214
+ const year = floorDiv(30 * (fixed - 227015) + 10646, 10631);
215
+ const month = Math.min(12, Math.max(1, Math.ceil((fixed - (29 + getIslamicFixed(year, 1, 1))) / 29.5) + 1));
216
+ const day = fixed - getIslamicFixed(year, month, 1) + 1;
217
+ const daysInMonth = month % 2 === 1 || (month === 12 && isIslamicLeapYear(year)) ? 30 : 29;
218
+ const relatedDate = isoFromFixed(fixed);
219
+ return {
220
+ era: year > 0 ? 'ah' : 'before-ah',
221
+ year: Math.abs(year),
222
+ month,
223
+ monthCode: `M${String(month).padStart(2, '0')}`,
224
+ day,
225
+ monthsInYear: 12,
226
+ daysInMonth,
227
+ relatedYear: relatedDate.year,
228
+ relatedMonth: relatedDate.month,
229
+ relatedDay: relatedDate.day,
230
+ };
231
+ }
232
+ function isHebrewLeapYear(year) {
233
+ return modulo(7 * year + 1, 19) < 7;
234
+ }
235
+ function getHebrewElapsedDays(year) {
236
+ const months = floorDiv(235 * year - 234, 19);
237
+ const parts = 12084 + 13753 * months;
238
+ let day = months * 29 + floorDiv(parts, 25920);
239
+ if (modulo(3 * (day + 1), 7) < 3)
240
+ day += 1;
241
+ return day;
242
+ }
243
+ function getHebrewNewYear(year) {
244
+ const previous = getHebrewElapsedDays(year - 1);
245
+ const current = getHebrewElapsedDays(year);
246
+ const next = getHebrewElapsedDays(year + 1);
247
+ const correction = next - current === 356 ? 2 : current - previous === 382 ? 1 : 0;
248
+ return HEBREW_EPOCH + current + correction;
249
+ }
250
+ function getHebrewYearDays(year) {
251
+ return getHebrewNewYear(year + 1) - getHebrewNewYear(year);
252
+ }
253
+ function getHebrewTraditionalMonthDays(year, month) {
254
+ if ([2, 4, 6, 10, 13].includes(month))
255
+ return 29;
256
+ if (month === 12 && !isHebrewLeapYear(year))
257
+ return 29;
258
+ const yearDays = getHebrewYearDays(year);
259
+ if (month === 8 && modulo(yearDays, 10) !== 5)
260
+ return 29;
261
+ if (month === 9 && modulo(yearDays, 10) === 3)
262
+ return 29;
263
+ return 30;
264
+ }
265
+ function getHebrewFixed(year, month, day) {
266
+ let fixed = getHebrewNewYear(year) + day - 1;
267
+ const lastMonth = isHebrewLeapYear(year) ? 13 : 12;
268
+ if (month < 7) {
269
+ for (let current = 7; current <= lastMonth; current += 1) {
270
+ fixed += getHebrewTraditionalMonthDays(year, current);
271
+ }
272
+ for (let current = 1; current < month; current += 1) {
273
+ fixed += getHebrewTraditionalMonthDays(year, current);
274
+ }
275
+ }
276
+ else {
277
+ for (let current = 7; current < month; current += 1) {
278
+ fixed += getHebrewTraditionalMonthDays(year, current);
279
+ }
280
+ }
281
+ return fixed;
282
+ }
283
+ function hebrewTraditionalToDisplayMonth(year, traditionalMonth) {
284
+ const leap = isHebrewLeapYear(year);
285
+ if (traditionalMonth >= 7 && traditionalMonth <= 11) {
286
+ return traditionalMonth - 6;
287
+ }
288
+ if (traditionalMonth === 12)
289
+ return 6;
290
+ if (traditionalMonth === 13)
291
+ return 7;
292
+ return traditionalMonth + (leap ? 7 : 6);
293
+ }
294
+ function hebrewDisplayToTraditionalMonth(year, displayMonth) {
295
+ const leap = isHebrewLeapYear(year);
296
+ if (displayMonth <= 5)
297
+ return displayMonth + 6;
298
+ if (displayMonth === 6)
299
+ return 12;
300
+ if (leap && displayMonth === 7)
301
+ return 13;
302
+ return displayMonth - (leap ? 7 : 6);
303
+ }
304
+ function getHebrewDate(fixed) {
305
+ let year = floorDiv((fixed - HEBREW_EPOCH) * 98496, 35975351) + 1;
306
+ while (fixed >= getHebrewNewYear(year + 1))
307
+ year += 1;
308
+ while (fixed < getHebrewNewYear(year))
309
+ year -= 1;
310
+ const firstMonth = fixed < getHebrewFixed(year, 1, 1) ? 7 : 1;
311
+ let traditionalMonth = firstMonth;
312
+ while (fixed >
313
+ getHebrewFixed(year, traditionalMonth, getHebrewTraditionalMonthDays(year, traditionalMonth))) {
314
+ traditionalMonth += 1;
315
+ }
316
+ const day = fixed - getHebrewFixed(year, traditionalMonth, 1) + 1;
317
+ const month = hebrewTraditionalToDisplayMonth(year, traditionalMonth);
318
+ const isLeapAdar = traditionalMonth === 12 && isHebrewLeapYear(year);
319
+ const relatedDate = isoFromFixed(fixed);
320
+ return {
321
+ era: 'am',
322
+ year,
323
+ month,
324
+ monthCode: isLeapAdar ? 'M05L' : `M${String(month).padStart(2, '0')}`,
325
+ day,
326
+ monthsInYear: isHebrewLeapYear(year) ? 13 : 12,
327
+ daysInMonth: getHebrewTraditionalMonthDays(year, traditionalMonth),
328
+ relatedYear: relatedDate.year,
329
+ relatedMonth: relatedDate.month,
330
+ relatedDay: relatedDate.day,
331
+ };
332
+ }
333
+ const JAPANESE_ERA_DATES = JAPANESE_ERAS.map((era) => ({
334
+ ...era,
335
+ startDate: parseDateValue(era.start),
336
+ startEpochDay: isoDateToEpochDay(parseDateValue(era.start)),
337
+ }));
338
+ function getJapaneseEra(date) {
339
+ const epochDay = isoDateToEpochDay(date);
340
+ let low = 0;
341
+ let high = JAPANESE_ERA_DATES.length - 1;
342
+ while (low < high) {
343
+ const middle = Math.ceil((low + high) / 2);
344
+ if (JAPANESE_ERA_DATES[middle].startEpochDay <= epochDay) {
345
+ low = middle;
346
+ }
347
+ else {
348
+ high = middle - 1;
349
+ }
350
+ }
351
+ return JAPANESE_ERA_DATES[low];
352
+ }
353
+ function getJapaneseDate(date) {
354
+ const era = getJapaneseEra(date);
355
+ return {
356
+ era: era.id,
357
+ year: date.year - era.startDate.year + 1,
358
+ month: date.month,
359
+ monthCode: `M${String(date.month).padStart(2, '0')}`,
360
+ day: date.day,
361
+ monthsInYear: 12,
362
+ daysInMonth: getDaysInIsoMonth(date.year, date.month),
363
+ relatedYear: date.year,
364
+ relatedMonth: date.month,
365
+ relatedDay: date.day,
366
+ };
367
+ }
368
+ function getCalendarDate(date, calendar) {
369
+ const fixed = fixedFromIso(date);
370
+ switch (calendar) {
371
+ case 'gregory':
372
+ return {
373
+ era: 'ad',
374
+ year: date.year,
375
+ month: date.month,
376
+ monthCode: `M${String(date.month).padStart(2, '0')}`,
377
+ day: date.day,
378
+ monthsInYear: 12,
379
+ daysInMonth: getDaysInIsoMonth(date.year, date.month),
380
+ relatedYear: date.year,
381
+ relatedMonth: date.month,
382
+ relatedDay: date.day,
383
+ };
384
+ case 'buddhist':
385
+ return {
386
+ era: 'be',
387
+ year: date.year + 543,
388
+ month: date.month,
389
+ monthCode: `M${String(date.month).padStart(2, '0')}`,
390
+ day: date.day,
391
+ monthsInYear: 12,
392
+ daysInMonth: getDaysInIsoMonth(date.year, date.month),
393
+ relatedYear: date.year,
394
+ relatedMonth: date.month,
395
+ relatedDay: date.day,
396
+ };
397
+ case 'roc': {
398
+ const isRoc = date.year >= 1912;
399
+ return {
400
+ era: isRoc ? 'roc' : 'before-roc',
401
+ year: isRoc ? date.year - 1911 : 1912 - date.year,
402
+ month: date.month,
403
+ monthCode: `M${String(date.month).padStart(2, '0')}`,
404
+ day: date.day,
405
+ monthsInYear: 12,
406
+ daysInMonth: getDaysInIsoMonth(date.year, date.month),
407
+ relatedYear: date.year,
408
+ relatedMonth: date.month,
409
+ relatedDay: date.day,
410
+ };
411
+ }
412
+ case 'japanese':
413
+ return getJapaneseDate(date);
414
+ case 'persian':
415
+ return getPersianDate(fixed);
416
+ case 'islamic-civil':
417
+ return getIslamicDate(fixed);
418
+ case 'hebrew':
419
+ return getHebrewDate(fixed);
420
+ }
421
+ }
422
+ function validateCalendarRoundTrip(source, calendar, candidate) {
423
+ const converted = getCalendarDate(candidate, calendar);
424
+ if (converted.era !== source.era ||
425
+ converted.year !== source.year ||
426
+ converted.month !== source.month ||
427
+ converted.day !== source.day) {
428
+ throw new RangeError(`date is not valid in the ${calendar} calendar.`);
429
+ }
430
+ return candidate;
431
+ }
432
+ function fromCalendarDate(date, calendar) {
433
+ switch (calendar) {
434
+ case 'gregory':
435
+ return validateCalendarRoundTrip(date, calendar, parseDateValue(serializeDateValue({
436
+ year: date.year,
437
+ month: date.month,
438
+ day: date.day,
439
+ })));
440
+ case 'buddhist':
441
+ return validateCalendarRoundTrip(date, calendar, parseDateValue(serializeDateValue({
442
+ year: date.year - 543,
443
+ month: date.month,
444
+ day: date.day,
445
+ })));
446
+ case 'roc':
447
+ return validateCalendarRoundTrip(date, calendar, parseDateValue(serializeDateValue({
448
+ year: date.era === 'roc' ? date.year + 1911 : 1912 - date.year,
449
+ month: date.month,
450
+ day: date.day,
451
+ })));
452
+ case 'japanese': {
453
+ const era = JAPANESE_ERA_DATES.find((candidate) => candidate.id === date.era);
454
+ if (!era) {
455
+ throw new RangeError(`date.era is not a supported Japanese era: ${date.era}.`);
456
+ }
457
+ const candidate = parseDateValue(serializeDateValue({
458
+ year: era.startDate.year + date.year - 1,
459
+ month: date.month,
460
+ day: date.day,
461
+ }));
462
+ return validateCalendarRoundTrip(date, calendar, candidate);
463
+ }
464
+ case 'persian': {
465
+ const year = date.era === 'before-ap' ? -date.year : date.year;
466
+ return validateCalendarRoundTrip(date, calendar, isoFromFixed(getPersianFixed(year, date.month, date.day)));
467
+ }
468
+ case 'islamic-civil': {
469
+ const year = date.era === 'before-ah' ? -date.year : date.year;
470
+ return validateCalendarRoundTrip(date, calendar, isoFromFixed(getIslamicFixed(year, date.month, date.day)));
471
+ }
472
+ case 'hebrew':
473
+ return validateCalendarRoundTrip(date, calendar, isoFromFixed(getHebrewFixed(date.year, hebrewDisplayToTraditionalMonth(date.year, date.month), date.day)));
474
+ }
475
+ }
476
+ function shiftSignedCalendarYear(year, amount) {
477
+ let result = year;
478
+ const direction = Math.sign(amount);
479
+ for (let step = 0; step < Math.abs(amount); step += 1) {
480
+ result += direction;
481
+ if (result === 0)
482
+ result += direction;
483
+ }
484
+ return result;
485
+ }
486
+ function getSignedCalendarYear(date) {
487
+ return date.era.startsWith('before-') ? -date.year : date.year;
488
+ }
489
+ function setSignedCalendarYear(date, calendar, year) {
490
+ const beforeEra = calendar === 'persian' ? 'before-ap' : 'before-ah';
491
+ const afterEra = calendar === 'persian' ? 'ap' : 'ah';
492
+ return {
493
+ ...date,
494
+ era: year < 0 ? beforeEra : afterEra,
495
+ year: Math.abs(year),
496
+ };
497
+ }
498
+ function clampCalendarDay(source, target, calendar) {
499
+ const firstDay = fromCalendarDate({ ...target, day: 1 }, calendar);
500
+ const targetMonth = getCalendarDate(firstDay, calendar);
501
+ return fromCalendarDate({ ...targetMonth, day: Math.min(source.day, targetMonth.daysInMonth) }, calendar);
502
+ }
503
+ function stepVariableCalendarMonth(date, calendar, direction) {
504
+ if (direction > 0 && date.month < date.monthsInYear) {
505
+ return { ...date, month: date.month + 1 };
506
+ }
507
+ if (direction < 0 && date.month > 1) {
508
+ return { ...date, month: date.month - 1 };
509
+ }
510
+ if (calendar === 'hebrew') {
511
+ const nextYear = date.year + direction;
512
+ const firstDay = fromCalendarDate({ ...date, year: nextYear, month: 1, day: 1 }, calendar);
513
+ const nextYearDate = getCalendarDate(firstDay, calendar);
514
+ return {
515
+ ...nextYearDate,
516
+ month: direction > 0 ? 1 : nextYearDate.monthsInYear,
517
+ };
518
+ }
519
+ const nextYear = shiftSignedCalendarYear(getSignedCalendarYear(date), direction);
520
+ return {
521
+ ...setSignedCalendarYear(date, calendar, nextYear),
522
+ month: direction > 0 ? 1 : 12,
523
+ };
524
+ }
525
+ function addCalendarMonths(date, calendar, amount) {
526
+ if (!Number.isInteger(amount)) {
527
+ throw new RangeError('amount must be an integer number of calendar months.');
528
+ }
529
+ if (calendar === 'gregory' ||
530
+ calendar === 'buddhist' ||
531
+ calendar === 'roc' ||
532
+ calendar === 'japanese') {
533
+ return addIsoMonths(date, amount);
534
+ }
535
+ const source = getCalendarDate(date, calendar);
536
+ let target = source;
537
+ const direction = Math.sign(amount);
538
+ for (let step = 0; step < Math.abs(amount); step += 1) {
539
+ target = stepVariableCalendarMonth(target, calendar, direction);
540
+ const targetFirstDay = fromCalendarDate({ ...target, day: 1 }, calendar);
541
+ target = getCalendarDate(targetFirstDay, calendar);
542
+ }
543
+ return direction === 0 ? date : clampCalendarDay(source, target, calendar);
544
+ }
545
+ function addCalendarYears(date, calendar, amount) {
546
+ if (!Number.isInteger(amount)) {
547
+ throw new RangeError('amount must be an integer number of calendar years.');
548
+ }
549
+ if (calendar === 'gregory' ||
550
+ calendar === 'buddhist' ||
551
+ calendar === 'roc' ||
552
+ calendar === 'japanese') {
553
+ return addIsoYears(date, amount);
554
+ }
555
+ const source = getCalendarDate(date, calendar);
556
+ let target;
557
+ if (calendar === 'hebrew') {
558
+ const firstDay = fromCalendarDate({ ...source, year: source.year + amount, month: 1, day: 1 }, calendar);
559
+ const targetYear = getCalendarDate(firstDay, calendar);
560
+ target = {
561
+ ...targetYear,
562
+ month: Math.min(source.month, targetYear.monthsInYear),
563
+ };
564
+ }
565
+ else {
566
+ const targetYear = shiftSignedCalendarYear(getSignedCalendarYear(source), amount);
567
+ target = setSignedCalendarYear(source, calendar, targetYear);
568
+ }
569
+ return amount === 0 ? date : clampCalendarDay(source, target, calendar);
570
+ }
571
+
572
+ export { addCalendarMonths, addCalendarYears, addIsoDays, addIsoMonths, addIsoYears, compareIsoDates, epochDayToIsoDate, fromCalendarDate, getCalendarDate, getDaysInIsoMonth, isDateWithinConstraints, isIsoLeapYear, isoDateToEpochDay, parseDateValue, serializeDateValue, validateDateCalendar, validateDateConstraints };
573
+ //# sourceMappingURL=dateEngine.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateEngine.mjs","sources":["../../../src/date/dateEngine.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}