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