best-react-datepicker 0.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.
- package/dist/chunk-A3NQUSC5.cjs +1155 -0
- package/dist/chunk-A3NQUSC5.cjs.map +1 -0
- package/dist/chunk-FBN3SFQJ.js +1140 -0
- package/dist/chunk-FBN3SFQJ.js.map +1 -0
- package/dist/chunk-HI4J64KK.cjs +592 -0
- package/dist/chunk-HI4J64KK.cjs.map +1 -0
- package/dist/chunk-NF5M43IO.js +49 -0
- package/dist/chunk-NF5M43IO.js.map +1 -0
- package/dist/chunk-QW2CUEX4.js +117 -0
- package/dist/chunk-QW2CUEX4.js.map +1 -0
- package/dist/chunk-R7HLYS5V.cjs +120 -0
- package/dist/chunk-R7HLYS5V.cjs.map +1 -0
- package/dist/chunk-W6KEY2SO.js +526 -0
- package/dist/chunk-W6KEY2SO.js.map +1 -0
- package/dist/chunk-WBWQ5RKN.cjs +51 -0
- package/dist/chunk-WBWQ5RKN.cjs.map +1 -0
- package/dist/hooks.cjs +66 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.cts +555 -0
- package/dist/hooks.d.ts +555 -0
- package/dist/hooks.js +5 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.cjs +1502 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +239 -0
- package/dist/index.d.ts +239 -0
- package/dist/index.js +1303 -0
- package/dist/index.js.map +1 -0
- package/dist/locales.cjs +16 -0
- package/dist/locales.cjs.map +1 -0
- package/dist/locales.d.cts +6 -0
- package/dist/locales.d.ts +6 -0
- package/dist/locales.js +3 -0
- package/dist/locales.js.map +1 -0
- package/dist/presets-B8wfaoTj.d.cts +54 -0
- package/dist/presets-CB5Rt4Li.d.ts +54 -0
- package/dist/styles.css +751 -0
- package/dist/types-DA2PcEiy.d.cts +104 -0
- package/dist/types-DA2PcEiy.d.ts +104 -0
- package/dist/utils.cjs +282 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +57 -0
- package/dist/utils.d.ts +57 -0
- package/dist/utils.js +5 -0
- package/dist/utils.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
// src/core/date-utils.ts
|
|
2
|
+
function createDate(year, month, day) {
|
|
3
|
+
const d = new Date(year, month, day);
|
|
4
|
+
return d;
|
|
5
|
+
}
|
|
6
|
+
function today() {
|
|
7
|
+
return startOfDay(/* @__PURE__ */ new Date());
|
|
8
|
+
}
|
|
9
|
+
function clone(date) {
|
|
10
|
+
return new Date(date.getTime());
|
|
11
|
+
}
|
|
12
|
+
function isSameDay(a, b) {
|
|
13
|
+
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
14
|
+
}
|
|
15
|
+
function isSameMonth(a, b) {
|
|
16
|
+
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
|
|
17
|
+
}
|
|
18
|
+
function isSameYear(a, b) {
|
|
19
|
+
return a.getFullYear() === b.getFullYear();
|
|
20
|
+
}
|
|
21
|
+
function isBefore(a, b) {
|
|
22
|
+
return startOfDay(a).getTime() < startOfDay(b).getTime();
|
|
23
|
+
}
|
|
24
|
+
function isAfter(a, b) {
|
|
25
|
+
return startOfDay(a).getTime() > startOfDay(b).getTime();
|
|
26
|
+
}
|
|
27
|
+
function isBetween(date, start, end, inclusive = true) {
|
|
28
|
+
const d = startOfDay(date).getTime();
|
|
29
|
+
const s = startOfDay(start).getTime();
|
|
30
|
+
const e = startOfDay(end).getTime();
|
|
31
|
+
return inclusive ? d >= s && d <= e : d > s && d < e;
|
|
32
|
+
}
|
|
33
|
+
function isToday(date) {
|
|
34
|
+
return isSameDay(date, /* @__PURE__ */ new Date());
|
|
35
|
+
}
|
|
36
|
+
function isWeekend(date) {
|
|
37
|
+
const day = date.getDay();
|
|
38
|
+
return day === 0 || day === 6;
|
|
39
|
+
}
|
|
40
|
+
function addDays(date, days) {
|
|
41
|
+
const d = clone(date);
|
|
42
|
+
d.setDate(d.getDate() + days);
|
|
43
|
+
return d;
|
|
44
|
+
}
|
|
45
|
+
function addMonths(date, months) {
|
|
46
|
+
const d = clone(date);
|
|
47
|
+
const targetMonth = d.getMonth() + months;
|
|
48
|
+
d.setMonth(targetMonth);
|
|
49
|
+
if (d.getMonth() !== (targetMonth % 12 + 12) % 12) {
|
|
50
|
+
d.setDate(0);
|
|
51
|
+
}
|
|
52
|
+
return d;
|
|
53
|
+
}
|
|
54
|
+
function addYears(date, years) {
|
|
55
|
+
const d = clone(date);
|
|
56
|
+
const targetYear = d.getFullYear() + years;
|
|
57
|
+
d.setFullYear(targetYear);
|
|
58
|
+
if (d.getMonth() !== date.getMonth()) {
|
|
59
|
+
d.setDate(0);
|
|
60
|
+
}
|
|
61
|
+
return d;
|
|
62
|
+
}
|
|
63
|
+
function addHours(date, hours) {
|
|
64
|
+
const d = clone(date);
|
|
65
|
+
d.setHours(d.getHours() + hours);
|
|
66
|
+
return d;
|
|
67
|
+
}
|
|
68
|
+
function addMinutes(date, minutes) {
|
|
69
|
+
const d = clone(date);
|
|
70
|
+
d.setMinutes(d.getMinutes() + minutes);
|
|
71
|
+
return d;
|
|
72
|
+
}
|
|
73
|
+
function subDays(date, days) {
|
|
74
|
+
return addDays(date, -days);
|
|
75
|
+
}
|
|
76
|
+
function subMonths(date, months) {
|
|
77
|
+
return addMonths(date, -months);
|
|
78
|
+
}
|
|
79
|
+
function subYears(date, years) {
|
|
80
|
+
return addYears(date, -years);
|
|
81
|
+
}
|
|
82
|
+
function startOfDay(date) {
|
|
83
|
+
const d = clone(date);
|
|
84
|
+
d.setHours(0, 0, 0, 0);
|
|
85
|
+
return d;
|
|
86
|
+
}
|
|
87
|
+
function endOfDay(date) {
|
|
88
|
+
const d = clone(date);
|
|
89
|
+
d.setHours(23, 59, 59, 999);
|
|
90
|
+
return d;
|
|
91
|
+
}
|
|
92
|
+
function startOfWeek(date, weekStartsOn = 0) {
|
|
93
|
+
const d = clone(date);
|
|
94
|
+
const day = d.getDay();
|
|
95
|
+
const diff = (day - weekStartsOn + 7) % 7;
|
|
96
|
+
d.setDate(d.getDate() - diff);
|
|
97
|
+
return startOfDay(d);
|
|
98
|
+
}
|
|
99
|
+
function endOfWeek(date, weekStartsOn = 0) {
|
|
100
|
+
const d = startOfWeek(date, weekStartsOn);
|
|
101
|
+
return endOfDay(addDays(d, 6));
|
|
102
|
+
}
|
|
103
|
+
function startOfMonth(date) {
|
|
104
|
+
return createDate(date.getFullYear(), date.getMonth(), 1);
|
|
105
|
+
}
|
|
106
|
+
function endOfMonth(date) {
|
|
107
|
+
const d = createDate(date.getFullYear(), date.getMonth() + 1, 0);
|
|
108
|
+
return endOfDay(d);
|
|
109
|
+
}
|
|
110
|
+
function startOfYear(date) {
|
|
111
|
+
return createDate(date.getFullYear(), 0, 1);
|
|
112
|
+
}
|
|
113
|
+
function endOfYear(date) {
|
|
114
|
+
return endOfDay(createDate(date.getFullYear(), 11, 31));
|
|
115
|
+
}
|
|
116
|
+
function getDaysInMonth(date) {
|
|
117
|
+
return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();
|
|
118
|
+
}
|
|
119
|
+
function getYear(date) {
|
|
120
|
+
return date.getFullYear();
|
|
121
|
+
}
|
|
122
|
+
function getMonth(date) {
|
|
123
|
+
return date.getMonth();
|
|
124
|
+
}
|
|
125
|
+
function getDay(date) {
|
|
126
|
+
return date.getDate();
|
|
127
|
+
}
|
|
128
|
+
function getHours(date) {
|
|
129
|
+
return date.getHours();
|
|
130
|
+
}
|
|
131
|
+
function getMinutes(date) {
|
|
132
|
+
return date.getMinutes();
|
|
133
|
+
}
|
|
134
|
+
function getSeconds(date) {
|
|
135
|
+
return date.getSeconds();
|
|
136
|
+
}
|
|
137
|
+
function setYear(date, year) {
|
|
138
|
+
const d = clone(date);
|
|
139
|
+
d.setFullYear(year);
|
|
140
|
+
return d;
|
|
141
|
+
}
|
|
142
|
+
function setMonth(date, month) {
|
|
143
|
+
const d = clone(date);
|
|
144
|
+
const day = d.getDate();
|
|
145
|
+
d.setMonth(month);
|
|
146
|
+
if (d.getDate() !== day) {
|
|
147
|
+
d.setDate(0);
|
|
148
|
+
}
|
|
149
|
+
return d;
|
|
150
|
+
}
|
|
151
|
+
function setHours(date, hours) {
|
|
152
|
+
const d = clone(date);
|
|
153
|
+
d.setHours(hours);
|
|
154
|
+
return d;
|
|
155
|
+
}
|
|
156
|
+
function setMinutes(date, minutes) {
|
|
157
|
+
const d = clone(date);
|
|
158
|
+
d.setMinutes(minutes);
|
|
159
|
+
return d;
|
|
160
|
+
}
|
|
161
|
+
function setSeconds(date, seconds) {
|
|
162
|
+
const d = clone(date);
|
|
163
|
+
d.setSeconds(seconds);
|
|
164
|
+
return d;
|
|
165
|
+
}
|
|
166
|
+
function differenceInDays(a, b) {
|
|
167
|
+
const msPerDay = 864e5;
|
|
168
|
+
return Math.round((startOfDay(a).getTime() - startOfDay(b).getTime()) / msPerDay);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// src/core/format-utils.ts
|
|
172
|
+
var TOKEN_REGEX = /YYYY|YY|MMMM|MMM|MM|M|DD|D|HH|hh|mm|ss|A|a/g;
|
|
173
|
+
function formatDate(date, formatStr, locale = "en-US") {
|
|
174
|
+
const tokens = {
|
|
175
|
+
YYYY: () => String(date.getFullYear()),
|
|
176
|
+
YY: () => String(date.getFullYear()).slice(-2),
|
|
177
|
+
MMMM: () => date.toLocaleString(locale, { month: "long" }),
|
|
178
|
+
MMM: () => date.toLocaleString(locale, { month: "short" }),
|
|
179
|
+
MM: () => String(date.getMonth() + 1).padStart(2, "0"),
|
|
180
|
+
M: () => String(date.getMonth() + 1),
|
|
181
|
+
DD: () => String(date.getDate()).padStart(2, "0"),
|
|
182
|
+
D: () => String(date.getDate()),
|
|
183
|
+
HH: () => String(date.getHours()).padStart(2, "0"),
|
|
184
|
+
hh: () => {
|
|
185
|
+
const h = date.getHours() % 12 || 12;
|
|
186
|
+
return String(h).padStart(2, "0");
|
|
187
|
+
},
|
|
188
|
+
mm: () => String(date.getMinutes()).padStart(2, "0"),
|
|
189
|
+
ss: () => String(date.getSeconds()).padStart(2, "0"),
|
|
190
|
+
A: () => date.getHours() < 12 ? "AM" : "PM",
|
|
191
|
+
a: () => date.getHours() < 12 ? "am" : "pm"
|
|
192
|
+
};
|
|
193
|
+
return formatStr.replace(TOKEN_REGEX, (match) => {
|
|
194
|
+
const fn = tokens[match];
|
|
195
|
+
return fn ? fn() : match;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
function parseDate(dateStr, formatStr, _locale = "en-US") {
|
|
199
|
+
try {
|
|
200
|
+
let year = 0;
|
|
201
|
+
let month = 0;
|
|
202
|
+
let day = 1;
|
|
203
|
+
let hours = 0;
|
|
204
|
+
let minutes = 0;
|
|
205
|
+
let seconds = 0;
|
|
206
|
+
let formatIndex = 0;
|
|
207
|
+
let strIndex = 0;
|
|
208
|
+
while (formatIndex < formatStr.length && strIndex < dateStr.length) {
|
|
209
|
+
let matched = false;
|
|
210
|
+
for (const token of ["YYYY", "YY", "MM", "M", "DD", "D", "HH", "hh", "mm", "ss"]) {
|
|
211
|
+
if (formatStr.startsWith(token, formatIndex)) {
|
|
212
|
+
const len = token.length <= 2 ? findNumberLength(dateStr, strIndex) : token.length;
|
|
213
|
+
const val = parseInt(dateStr.slice(strIndex, strIndex + len), 10);
|
|
214
|
+
if (isNaN(val)) return null;
|
|
215
|
+
switch (token) {
|
|
216
|
+
case "YYYY":
|
|
217
|
+
year = val;
|
|
218
|
+
break;
|
|
219
|
+
case "YY":
|
|
220
|
+
year = 2e3 + val;
|
|
221
|
+
break;
|
|
222
|
+
case "MM":
|
|
223
|
+
case "M":
|
|
224
|
+
month = val - 1;
|
|
225
|
+
break;
|
|
226
|
+
case "DD":
|
|
227
|
+
case "D":
|
|
228
|
+
day = val;
|
|
229
|
+
break;
|
|
230
|
+
case "HH":
|
|
231
|
+
case "hh":
|
|
232
|
+
hours = val;
|
|
233
|
+
break;
|
|
234
|
+
case "mm":
|
|
235
|
+
minutes = val;
|
|
236
|
+
break;
|
|
237
|
+
case "ss":
|
|
238
|
+
seconds = val;
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
formatIndex += token.length;
|
|
242
|
+
strIndex += len;
|
|
243
|
+
matched = true;
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (!matched) {
|
|
248
|
+
formatIndex++;
|
|
249
|
+
strIndex++;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
const result = new Date(year, month, day, hours, minutes, seconds);
|
|
253
|
+
if (isNaN(result.getTime())) return null;
|
|
254
|
+
return result;
|
|
255
|
+
} catch {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function findNumberLength(str, start) {
|
|
260
|
+
let len = 0;
|
|
261
|
+
while (start + len < str.length && /\d/.test(str[start + len])) {
|
|
262
|
+
len++;
|
|
263
|
+
}
|
|
264
|
+
return len;
|
|
265
|
+
}
|
|
266
|
+
function formatTime(date, format) {
|
|
267
|
+
if (format === "24h") {
|
|
268
|
+
return `${String(date.getHours()).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`;
|
|
269
|
+
}
|
|
270
|
+
const h = date.getHours() % 12 || 12;
|
|
271
|
+
const m = String(date.getMinutes()).padStart(2, "0");
|
|
272
|
+
const meridiem = date.getHours() < 12 ? "AM" : "PM";
|
|
273
|
+
return `${h}:${m} ${meridiem}`;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// src/core/week-utils.ts
|
|
277
|
+
function getISOWeekNumber(date) {
|
|
278
|
+
const d = clone(date);
|
|
279
|
+
d.setHours(0, 0, 0, 0);
|
|
280
|
+
d.setDate(d.getDate() + 4 - (d.getDay() || 7));
|
|
281
|
+
const yearStart = new Date(d.getFullYear(), 0, 1);
|
|
282
|
+
return Math.ceil(((d.getTime() - yearStart.getTime()) / 864e5 + 1) / 7);
|
|
283
|
+
}
|
|
284
|
+
function getWeekNumber(date, weekStartsOn = 0) {
|
|
285
|
+
if (weekStartsOn === 1) {
|
|
286
|
+
return getISOWeekNumber(date);
|
|
287
|
+
}
|
|
288
|
+
const d = clone(date);
|
|
289
|
+
d.setHours(0, 0, 0, 0);
|
|
290
|
+
const yearStart = new Date(d.getFullYear(), 0, 1);
|
|
291
|
+
const startDay = yearStart.getDay();
|
|
292
|
+
const diff = (startDay - weekStartsOn + 7) % 7;
|
|
293
|
+
const firstWeekStart = new Date(yearStart.getTime());
|
|
294
|
+
firstWeekStart.setDate(firstWeekStart.getDate() - diff);
|
|
295
|
+
const daysSinceFirstWeek = Math.floor(
|
|
296
|
+
(d.getTime() - firstWeekStart.getTime()) / 864e5
|
|
297
|
+
);
|
|
298
|
+
return Math.floor(daysSinceFirstWeek / 7) + 1;
|
|
299
|
+
}
|
|
300
|
+
function startOfISOWeek(date) {
|
|
301
|
+
const d = startOfDay(clone(date));
|
|
302
|
+
const day = d.getDay();
|
|
303
|
+
const diff = (day === 0 ? -6 : 1) - day;
|
|
304
|
+
d.setDate(d.getDate() + diff);
|
|
305
|
+
return d;
|
|
306
|
+
}
|
|
307
|
+
function endOfISOWeek(date) {
|
|
308
|
+
const d = startOfISOWeek(date);
|
|
309
|
+
d.setDate(d.getDate() + 6);
|
|
310
|
+
d.setHours(23, 59, 59, 999);
|
|
311
|
+
return d;
|
|
312
|
+
}
|
|
313
|
+
function getWeekDates(date, weekStartsOn = 0) {
|
|
314
|
+
const d = clone(date);
|
|
315
|
+
const day = d.getDay();
|
|
316
|
+
const diff = (day - weekStartsOn + 7) % 7;
|
|
317
|
+
const start = startOfDay(clone(d));
|
|
318
|
+
start.setDate(start.getDate() - diff);
|
|
319
|
+
const dates = [];
|
|
320
|
+
for (let i = 0; i < 7; i++) {
|
|
321
|
+
dates.push(addDays(start, i));
|
|
322
|
+
}
|
|
323
|
+
return dates;
|
|
324
|
+
}
|
|
325
|
+
function getWeekYear(date) {
|
|
326
|
+
const d = clone(date);
|
|
327
|
+
d.setDate(d.getDate() + 4 - (d.getDay() || 7));
|
|
328
|
+
return d.getFullYear();
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// src/core/calendar-utils.ts
|
|
332
|
+
function generateCalendarMonth(year, month, options = {}) {
|
|
333
|
+
const { weekStartsOn = 0, fixedWeeks = false } = options;
|
|
334
|
+
const firstDay = createDate(year, month, 1);
|
|
335
|
+
const gridStart = startOfWeek(firstDay, weekStartsOn);
|
|
336
|
+
const totalDays = fixedWeeks ? 42 : calculateGridDays(year, month, weekStartsOn);
|
|
337
|
+
const weeks = [];
|
|
338
|
+
let current = gridStart;
|
|
339
|
+
for (let i = 0; i < totalDays; i += 7) {
|
|
340
|
+
const days = [];
|
|
341
|
+
for (let j = 0; j < 7; j++) {
|
|
342
|
+
days.push({
|
|
343
|
+
date: current,
|
|
344
|
+
dayOfMonth: current.getDate(),
|
|
345
|
+
isCurrentMonth: isSameMonth(current, firstDay),
|
|
346
|
+
isToday: isToday(current),
|
|
347
|
+
isWeekend: isWeekend(current)
|
|
348
|
+
});
|
|
349
|
+
current = addDays(current, 1);
|
|
350
|
+
}
|
|
351
|
+
weeks.push({
|
|
352
|
+
weekNumber: getWeekNumber(days[0].date, weekStartsOn),
|
|
353
|
+
days
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
const monthNames = [
|
|
357
|
+
"January",
|
|
358
|
+
"February",
|
|
359
|
+
"March",
|
|
360
|
+
"April",
|
|
361
|
+
"May",
|
|
362
|
+
"June",
|
|
363
|
+
"July",
|
|
364
|
+
"August",
|
|
365
|
+
"September",
|
|
366
|
+
"October",
|
|
367
|
+
"November",
|
|
368
|
+
"December"
|
|
369
|
+
];
|
|
370
|
+
return {
|
|
371
|
+
year,
|
|
372
|
+
month,
|
|
373
|
+
label: `${monthNames[month]} ${year}`,
|
|
374
|
+
weeks
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
function calculateGridDays(year, month, weekStartsOn) {
|
|
378
|
+
const firstDay = createDate(year, month, 1);
|
|
379
|
+
const dayOfWeek = firstDay.getDay();
|
|
380
|
+
const daysInMonth = getDaysInMonth(firstDay);
|
|
381
|
+
const leadingDays = (dayOfWeek - weekStartsOn + 7) % 7;
|
|
382
|
+
const totalCells = leadingDays + daysInMonth;
|
|
383
|
+
return Math.ceil(totalCells / 7) * 7;
|
|
384
|
+
}
|
|
385
|
+
function generateCalendarMonths(year, month, count, options = {}) {
|
|
386
|
+
const months = [];
|
|
387
|
+
for (let i = 0; i < count; i++) {
|
|
388
|
+
const m = month + i;
|
|
389
|
+
const adjustedYear = year + Math.floor(m / 12);
|
|
390
|
+
const adjustedMonth = (m % 12 + 12) % 12;
|
|
391
|
+
months.push(generateCalendarMonth(adjustedYear, adjustedMonth, options));
|
|
392
|
+
}
|
|
393
|
+
return months;
|
|
394
|
+
}
|
|
395
|
+
function generateMonthGrid(year) {
|
|
396
|
+
const monthNames = [
|
|
397
|
+
"Jan",
|
|
398
|
+
"Feb",
|
|
399
|
+
"Mar",
|
|
400
|
+
"Apr",
|
|
401
|
+
"May",
|
|
402
|
+
"Jun",
|
|
403
|
+
"Jul",
|
|
404
|
+
"Aug",
|
|
405
|
+
"Sep",
|
|
406
|
+
"Oct",
|
|
407
|
+
"Nov",
|
|
408
|
+
"Dec"
|
|
409
|
+
];
|
|
410
|
+
return monthNames.map((label, month) => ({ month, label }));
|
|
411
|
+
}
|
|
412
|
+
function generateYearGrid(centerYear, range = 12) {
|
|
413
|
+
const startYear = centerYear - Math.floor(range / 2);
|
|
414
|
+
return Array.from({ length: range }, (_, i) => ({ year: startYear + i }));
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
// src/core/constraint-utils.ts
|
|
418
|
+
function isDateDisabled(date, disabled) {
|
|
419
|
+
if (!disabled) return false;
|
|
420
|
+
const matchers = Array.isArray(disabled) && !isDateArray(disabled) ? disabled : [disabled];
|
|
421
|
+
return matchers.some((matcher) => matchesDate(date, matcher));
|
|
422
|
+
}
|
|
423
|
+
function isDateHighlighted(date, highlighted) {
|
|
424
|
+
if (!highlighted) return false;
|
|
425
|
+
const matchers = Array.isArray(highlighted) && !isDateArray(highlighted) ? highlighted : [highlighted];
|
|
426
|
+
return matchers.some((matcher) => matchesDate(date, matcher));
|
|
427
|
+
}
|
|
428
|
+
function isDateInRange(date, min, max) {
|
|
429
|
+
if (min && isBefore(date, min)) return false;
|
|
430
|
+
if (max && isAfter(date, max)) return false;
|
|
431
|
+
return true;
|
|
432
|
+
}
|
|
433
|
+
function clampDate(date, min, max) {
|
|
434
|
+
let result = date;
|
|
435
|
+
if (min && isBefore(result, min)) result = startOfDay(min);
|
|
436
|
+
if (max && isAfter(result, max)) result = startOfDay(max);
|
|
437
|
+
return result;
|
|
438
|
+
}
|
|
439
|
+
function matchesDate(date, matcher) {
|
|
440
|
+
if (typeof matcher === "function") {
|
|
441
|
+
return matcher(date);
|
|
442
|
+
}
|
|
443
|
+
if (matcher instanceof Date) {
|
|
444
|
+
return isSameDay(date, matcher);
|
|
445
|
+
}
|
|
446
|
+
if (Array.isArray(matcher)) {
|
|
447
|
+
return matcher.some((d) => isSameDay(date, d));
|
|
448
|
+
}
|
|
449
|
+
if ("before" in matcher) {
|
|
450
|
+
return isBefore(date, matcher.before);
|
|
451
|
+
}
|
|
452
|
+
if ("after" in matcher) {
|
|
453
|
+
return isAfter(date, matcher.after);
|
|
454
|
+
}
|
|
455
|
+
if ("dayOfWeek" in matcher) {
|
|
456
|
+
return matcher.dayOfWeek.includes(date.getDay());
|
|
457
|
+
}
|
|
458
|
+
if ("from" in matcher && "to" in matcher) {
|
|
459
|
+
if (matcher.from && matcher.to) {
|
|
460
|
+
return isBetween(date, matcher.from, matcher.to);
|
|
461
|
+
}
|
|
462
|
+
if (matcher.from) return isSameDay(date, matcher.from);
|
|
463
|
+
if (matcher.to) return isSameDay(date, matcher.to);
|
|
464
|
+
}
|
|
465
|
+
return false;
|
|
466
|
+
}
|
|
467
|
+
function isDateArray(value) {
|
|
468
|
+
return Array.isArray(value) && value.length > 0 && value[0] instanceof Date;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// src/core/time-utils.ts
|
|
472
|
+
function generateHours(format) {
|
|
473
|
+
if (format === "24h") {
|
|
474
|
+
return Array.from({ length: 24 }, (_, i) => i);
|
|
475
|
+
}
|
|
476
|
+
return Array.from({ length: 12 }, (_, i) => i + 1);
|
|
477
|
+
}
|
|
478
|
+
function generateMinutes(step = 1) {
|
|
479
|
+
const minutes = [];
|
|
480
|
+
for (let i = 0; i < 60; i += step) {
|
|
481
|
+
minutes.push(i);
|
|
482
|
+
}
|
|
483
|
+
return minutes;
|
|
484
|
+
}
|
|
485
|
+
function generateSeconds(step = 1) {
|
|
486
|
+
const seconds = [];
|
|
487
|
+
for (let i = 0; i < 60; i += step) {
|
|
488
|
+
seconds.push(i);
|
|
489
|
+
}
|
|
490
|
+
return seconds;
|
|
491
|
+
}
|
|
492
|
+
function mergeDateTime(date, time) {
|
|
493
|
+
const d = clone(date);
|
|
494
|
+
d.setHours(time.hours, time.minutes, time.seconds ?? 0, 0);
|
|
495
|
+
return d;
|
|
496
|
+
}
|
|
497
|
+
function splitDateTime(date) {
|
|
498
|
+
const d = clone(date);
|
|
499
|
+
d.setHours(0, 0, 0, 0);
|
|
500
|
+
return {
|
|
501
|
+
date: d,
|
|
502
|
+
time: {
|
|
503
|
+
hours: date.getHours(),
|
|
504
|
+
minutes: date.getMinutes(),
|
|
505
|
+
seconds: date.getSeconds()
|
|
506
|
+
}
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
function formatMeridiem(hours) {
|
|
510
|
+
return hours < 12 ? "AM" : "PM";
|
|
511
|
+
}
|
|
512
|
+
function to24Hour(hours, meridiem) {
|
|
513
|
+
if (meridiem === "AM") {
|
|
514
|
+
return hours === 12 ? 0 : hours;
|
|
515
|
+
}
|
|
516
|
+
return hours === 12 ? 12 : hours + 12;
|
|
517
|
+
}
|
|
518
|
+
function to12Hour(hours) {
|
|
519
|
+
const meridiem = hours < 12 ? "AM" : "PM";
|
|
520
|
+
const h = hours % 12 || 12;
|
|
521
|
+
return { hours: h, meridiem };
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
export { addDays, addHours, addMinutes, addMonths, addYears, clampDate, clone, createDate, differenceInDays, endOfDay, endOfISOWeek, endOfMonth, endOfWeek, endOfYear, formatDate, formatMeridiem, formatTime, generateCalendarMonth, generateCalendarMonths, generateHours, generateMinutes, generateMonthGrid, generateSeconds, generateYearGrid, getDay, getDaysInMonth, getHours, getISOWeekNumber, getMinutes, getMonth, getSeconds, getWeekDates, getWeekNumber, getWeekYear, getYear, isAfter, isBefore, isBetween, isDateDisabled, isDateHighlighted, isDateInRange, isSameDay, isSameMonth, isSameYear, isToday, isWeekend, mergeDateTime, parseDate, setHours, setMinutes, setMonth, setSeconds, setYear, splitDateTime, startOfDay, startOfISOWeek, startOfMonth, startOfWeek, startOfYear, subDays, subMonths, subYears, to12Hour, to24Hour, today };
|
|
525
|
+
//# sourceMappingURL=chunk-W6KEY2SO.js.map
|
|
526
|
+
//# sourceMappingURL=chunk-W6KEY2SO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/date-utils.ts","../src/core/format-utils.ts","../src/core/week-utils.ts","../src/core/calendar-utils.ts","../src/core/constraint-utils.ts","../src/core/time-utils.ts"],"names":[],"mappings":"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","file":"chunk-W6KEY2SO.js","sourcesContent":["import type { WeekDay } from './types';\n\n// === Creation ===\n\nexport function createDate(year: number, month: number, day: number): Date {\n const d = new Date(year, month, day);\n return d;\n}\n\nexport function today(): Date {\n return startOfDay(new Date());\n}\n\nexport function clone(date: Date): Date {\n return new Date(date.getTime());\n}\n\n// === Comparison ===\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function isSameYear(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear();\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() < startOfDay(b).getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() > startOfDay(b).getTime();\n}\n\nexport function isBetween(date: Date, start: Date, end: Date, inclusive = true): boolean {\n const d = startOfDay(date).getTime();\n const s = startOfDay(start).getTime();\n const e = startOfDay(end).getTime();\n return inclusive ? d >= s && d <= e : d > s && d < e;\n}\n\nexport function isToday(date: Date): boolean {\n return isSameDay(date, new Date());\n}\n\nexport function isWeekend(date: Date): boolean {\n const day = date.getDay();\n return day === 0 || day === 6;\n}\n\n// === Arithmetic (all immutable) ===\n\nexport function addDays(date: Date, days: number): Date {\n const d = clone(date);\n d.setDate(d.getDate() + days);\n return d;\n}\n\nexport function addMonths(date: Date, months: number): Date {\n const d = clone(date);\n const targetMonth = d.getMonth() + months;\n d.setMonth(targetMonth);\n // Handle month-end clamping (e.g., Jan 31 + 1 month = Feb 28)\n if (d.getMonth() !== ((targetMonth % 12) + 12) % 12) {\n d.setDate(0); // Go to last day of previous month\n }\n return d;\n}\n\nexport function addYears(date: Date, years: number): Date {\n const d = clone(date);\n const targetYear = d.getFullYear() + years;\n d.setFullYear(targetYear);\n // Handle Feb 29 in non-leap years\n if (d.getMonth() !== date.getMonth()) {\n d.setDate(0);\n }\n return d;\n}\n\nexport function addHours(date: Date, hours: number): Date {\n const d = clone(date);\n d.setHours(d.getHours() + hours);\n return d;\n}\n\nexport function addMinutes(date: Date, minutes: number): Date {\n const d = clone(date);\n d.setMinutes(d.getMinutes() + minutes);\n return d;\n}\n\nexport function subDays(date: Date, days: number): Date {\n return addDays(date, -days);\n}\n\nexport function subMonths(date: Date, months: number): Date {\n return addMonths(date, -months);\n}\n\nexport function subYears(date: Date, years: number): Date {\n return addYears(date, -years);\n}\n\n// === Boundaries ===\n\nexport function startOfDay(date: Date): Date {\n const d = clone(date);\n d.setHours(0, 0, 0, 0);\n return d;\n}\n\nexport function endOfDay(date: Date): Date {\n const d = clone(date);\n d.setHours(23, 59, 59, 999);\n return d;\n}\n\nexport function startOfWeek(date: Date, weekStartsOn: WeekDay = 0): Date {\n const d = clone(date);\n const day = d.getDay();\n const diff = (day - weekStartsOn + 7) % 7;\n d.setDate(d.getDate() - diff);\n return startOfDay(d);\n}\n\nexport function endOfWeek(date: Date, weekStartsOn: WeekDay = 0): Date {\n const d = startOfWeek(date, weekStartsOn);\n return endOfDay(addDays(d, 6));\n}\n\nexport function startOfMonth(date: Date): Date {\n return createDate(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function endOfMonth(date: Date): Date {\n const d = createDate(date.getFullYear(), date.getMonth() + 1, 0);\n return endOfDay(d);\n}\n\nexport function startOfYear(date: Date): Date {\n return createDate(date.getFullYear(), 0, 1);\n}\n\nexport function endOfYear(date: Date): Date {\n return endOfDay(createDate(date.getFullYear(), 11, 31));\n}\n\n// === Queries ===\n\nexport function getDaysInMonth(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n}\n\nexport function getYear(date: Date): number {\n return date.getFullYear();\n}\n\nexport function getMonth(date: Date): number {\n return date.getMonth();\n}\n\nexport function getDay(date: Date): number {\n return date.getDate();\n}\n\nexport function getHours(date: Date): number {\n return date.getHours();\n}\n\nexport function getMinutes(date: Date): number {\n return date.getMinutes();\n}\n\nexport function getSeconds(date: Date): number {\n return date.getSeconds();\n}\n\n// === Setters (immutable) ===\n\nexport function setYear(date: Date, year: number): Date {\n const d = clone(date);\n d.setFullYear(year);\n return d;\n}\n\nexport function setMonth(date: Date, month: number): Date {\n const d = clone(date);\n const day = d.getDate();\n d.setMonth(month);\n // Handle month-end clamping\n if (d.getDate() !== day) {\n d.setDate(0);\n }\n return d;\n}\n\nexport function setHours(date: Date, hours: number): Date {\n const d = clone(date);\n d.setHours(hours);\n return d;\n}\n\nexport function setMinutes(date: Date, minutes: number): Date {\n const d = clone(date);\n d.setMinutes(minutes);\n return d;\n}\n\nexport function setSeconds(date: Date, seconds: number): Date {\n const d = clone(date);\n d.setSeconds(seconds);\n return d;\n}\n\n// === Diff ===\n\nexport function differenceInDays(a: Date, b: Date): number {\n const msPerDay = 86400000;\n return Math.round((startOfDay(a).getTime() - startOfDay(b).getTime()) / msPerDay);\n}\n","const TOKEN_REGEX = /YYYY|YY|MMMM|MMM|MM|M|DD|D|HH|hh|mm|ss|A|a/g;\n\nexport function formatDate(date: Date, formatStr: string, locale = 'en-US'): string {\n const tokens: Record<string, () => string> = {\n YYYY: () => String(date.getFullYear()),\n YY: () => String(date.getFullYear()).slice(-2),\n MMMM: () =>\n date.toLocaleString(locale, { month: 'long' }),\n MMM: () =>\n date.toLocaleString(locale, { month: 'short' }),\n MM: () => String(date.getMonth() + 1).padStart(2, '0'),\n M: () => String(date.getMonth() + 1),\n DD: () => String(date.getDate()).padStart(2, '0'),\n D: () => String(date.getDate()),\n HH: () => String(date.getHours()).padStart(2, '0'),\n hh: () => {\n const h = date.getHours() % 12 || 12;\n return String(h).padStart(2, '0');\n },\n mm: () => String(date.getMinutes()).padStart(2, '0'),\n ss: () => String(date.getSeconds()).padStart(2, '0'),\n A: () => (date.getHours() < 12 ? 'AM' : 'PM'),\n a: () => (date.getHours() < 12 ? 'am' : 'pm'),\n };\n\n return formatStr.replace(TOKEN_REGEX, (match) => {\n const fn = tokens[match];\n return fn ? fn() : match;\n });\n}\n\nexport function parseDate(dateStr: string, formatStr: string, _locale = 'en-US'): Date | null {\n try {\n let year = 0;\n let month = 0;\n let day = 1;\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n let formatIndex = 0;\n let strIndex = 0;\n\n while (formatIndex < formatStr.length && strIndex < dateStr.length) {\n // Try to match a token\n let matched = false;\n for (const token of ['YYYY', 'YY', 'MM', 'M', 'DD', 'D', 'HH', 'hh', 'mm', 'ss']) {\n if (formatStr.startsWith(token, formatIndex)) {\n const len = token.length <= 2 ? findNumberLength(dateStr, strIndex) : token.length;\n const val = parseInt(dateStr.slice(strIndex, strIndex + len), 10);\n if (isNaN(val)) return null;\n\n switch (token) {\n case 'YYYY': year = val; break;\n case 'YY': year = 2000 + val; break;\n case 'MM': case 'M': month = val - 1; break;\n case 'DD': case 'D': day = val; break;\n case 'HH': case 'hh': hours = val; break;\n case 'mm': minutes = val; break;\n case 'ss': seconds = val; break;\n }\n\n formatIndex += token.length;\n strIndex += len;\n matched = true;\n break;\n }\n }\n\n if (!matched) {\n // Skip literal characters\n formatIndex++;\n strIndex++;\n }\n }\n\n const result = new Date(year, month, day, hours, minutes, seconds);\n if (isNaN(result.getTime())) return null;\n return result;\n } catch {\n return null;\n }\n}\n\nfunction findNumberLength(str: string, start: number): number {\n let len = 0;\n while (start + len < str.length && /\\d/.test(str[start + len])) {\n len++;\n }\n return len;\n}\n\nexport function formatTime(date: Date, format: '12h' | '24h'): string {\n if (format === '24h') {\n return `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`;\n }\n const h = date.getHours() % 12 || 12;\n const m = String(date.getMinutes()).padStart(2, '0');\n const meridiem = date.getHours() < 12 ? 'AM' : 'PM';\n return `${h}:${m} ${meridiem}`;\n}\n","import type { WeekDay } from './types';\nimport { clone, startOfDay, addDays } from './date-utils';\n\nexport function getISOWeekNumber(date: Date): number {\n const d = clone(date);\n d.setHours(0, 0, 0, 0);\n // Set to nearest Thursday: current date + 4 - current day number (Mon=1, Sun=7)\n d.setDate(d.getDate() + 4 - (d.getDay() || 7));\n const yearStart = new Date(d.getFullYear(), 0, 1);\n return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n}\n\nexport function getWeekNumber(date: Date, weekStartsOn: WeekDay = 0): number {\n if (weekStartsOn === 1) {\n return getISOWeekNumber(date);\n }\n const d = clone(date);\n d.setHours(0, 0, 0, 0);\n const yearStart = new Date(d.getFullYear(), 0, 1);\n const startDay = yearStart.getDay();\n const diff = (startDay - weekStartsOn + 7) % 7;\n const firstWeekStart = new Date(yearStart.getTime());\n firstWeekStart.setDate(firstWeekStart.getDate() - diff);\n const daysSinceFirstWeek = Math.floor(\n (d.getTime() - firstWeekStart.getTime()) / 86400000\n );\n return Math.floor(daysSinceFirstWeek / 7) + 1;\n}\n\nexport function startOfISOWeek(date: Date): Date {\n const d = startOfDay(clone(date));\n const day = d.getDay();\n const diff = (day === 0 ? -6 : 1) - day;\n d.setDate(d.getDate() + diff);\n return d;\n}\n\nexport function endOfISOWeek(date: Date): Date {\n const d = startOfISOWeek(date);\n d.setDate(d.getDate() + 6);\n d.setHours(23, 59, 59, 999);\n return d;\n}\n\nexport function getWeekDates(date: Date, weekStartsOn: WeekDay = 0): Date[] {\n const d = clone(date);\n const day = d.getDay();\n const diff = (day - weekStartsOn + 7) % 7;\n const start = startOfDay(clone(d));\n start.setDate(start.getDate() - diff);\n\n const dates: Date[] = [];\n for (let i = 0; i < 7; i++) {\n dates.push(addDays(start, i));\n }\n return dates;\n}\n\nexport function getWeekYear(date: Date): number {\n const d = clone(date);\n d.setDate(d.getDate() + 4 - (d.getDay() || 7));\n return d.getFullYear();\n}\n","import type { WeekDay, CalendarDay, CalendarWeek, CalendarMonth } from './types';\nimport {\n createDate,\n startOfWeek,\n addDays,\n isToday,\n isWeekend,\n isSameMonth,\n getDaysInMonth,\n} from './date-utils';\nimport { getWeekNumber } from './week-utils';\n\nexport function generateCalendarMonth(\n year: number,\n month: number,\n options: {\n weekStartsOn?: WeekDay;\n fixedWeeks?: boolean;\n } = {}\n): CalendarMonth {\n const { weekStartsOn = 0, fixedWeeks = false } = options;\n const firstDay = createDate(year, month, 1);\n const gridStart = startOfWeek(firstDay, weekStartsOn);\n\n const totalDays = fixedWeeks ? 42 : calculateGridDays(year, month, weekStartsOn);\n\n const weeks: CalendarWeek[] = [];\n let current = gridStart;\n\n for (let i = 0; i < totalDays; i += 7) {\n const days: CalendarDay[] = [];\n for (let j = 0; j < 7; j++) {\n days.push({\n date: current,\n dayOfMonth: current.getDate(),\n isCurrentMonth: isSameMonth(current, firstDay),\n isToday: isToday(current),\n isWeekend: isWeekend(current),\n });\n current = addDays(current, 1);\n }\n weeks.push({\n weekNumber: getWeekNumber(days[0].date, weekStartsOn),\n days,\n });\n }\n\n const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n ];\n\n return {\n year,\n month,\n label: `${monthNames[month]} ${year}`,\n weeks,\n };\n}\n\nfunction calculateGridDays(year: number, month: number, weekStartsOn: WeekDay): number {\n const firstDay = createDate(year, month, 1);\n const dayOfWeek = firstDay.getDay();\n const daysInMonth = getDaysInMonth(firstDay);\n const leadingDays = (dayOfWeek - weekStartsOn + 7) % 7;\n const totalCells = leadingDays + daysInMonth;\n return Math.ceil(totalCells / 7) * 7;\n}\n\nexport function generateCalendarMonths(\n year: number,\n month: number,\n count: number,\n options: { weekStartsOn?: WeekDay; fixedWeeks?: boolean } = {}\n): CalendarMonth[] {\n const months: CalendarMonth[] = [];\n for (let i = 0; i < count; i++) {\n const m = month + i;\n const adjustedYear = year + Math.floor(m / 12);\n const adjustedMonth = ((m % 12) + 12) % 12;\n months.push(generateCalendarMonth(adjustedYear, adjustedMonth, options));\n }\n return months;\n}\n\nexport function generateMonthGrid(year: number): Array<{ month: number; label: string }> {\n const monthNames = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',\n ];\n return monthNames.map((label, month) => ({ month, label }));\n}\n\nexport function generateYearGrid(\n centerYear: number,\n range = 12\n): Array<{ year: number }> {\n const startYear = centerYear - Math.floor(range / 2);\n return Array.from({ length: range }, (_, i) => ({ year: startYear + i }));\n}\n","import type { DateMatcher } from './types';\nimport { isSameDay, isBefore, isAfter, isBetween, startOfDay } from './date-utils';\n\nexport function isDateDisabled(date: Date, disabled?: DateMatcher | DateMatcher[]): boolean {\n if (!disabled) return false;\n\n const matchers = Array.isArray(disabled) && !isDateArray(disabled) ? disabled : [disabled];\n\n return matchers.some((matcher) => matchesDate(date, matcher));\n}\n\nexport function isDateHighlighted(date: Date, highlighted?: DateMatcher | DateMatcher[]): boolean {\n if (!highlighted) return false;\n\n const matchers = Array.isArray(highlighted) && !isDateArray(highlighted)\n ? highlighted\n : [highlighted];\n\n return matchers.some((matcher) => matchesDate(date, matcher));\n}\n\nexport function isDateInRange(date: Date, min?: Date, max?: Date): boolean {\n if (min && isBefore(date, min)) return false;\n if (max && isAfter(date, max)) return false;\n return true;\n}\n\nexport function clampDate(date: Date, min?: Date, max?: Date): Date {\n let result = date;\n if (min && isBefore(result, min)) result = startOfDay(min);\n if (max && isAfter(result, max)) result = startOfDay(max);\n return result;\n}\n\nfunction matchesDate(date: Date, matcher: DateMatcher): boolean {\n if (typeof matcher === 'function') {\n return matcher(date);\n }\n\n if (matcher instanceof Date) {\n return isSameDay(date, matcher);\n }\n\n if (Array.isArray(matcher)) {\n return matcher.some((d) => isSameDay(date, d));\n }\n\n if ('before' in matcher) {\n return isBefore(date, matcher.before);\n }\n\n if ('after' in matcher) {\n return isAfter(date, matcher.after);\n }\n\n if ('dayOfWeek' in matcher) {\n return matcher.dayOfWeek.includes(date.getDay() as 0 | 1 | 2 | 3 | 4 | 5 | 6);\n }\n\n // DateRange: { from, to }\n if ('from' in matcher && 'to' in matcher) {\n if (matcher.from && matcher.to) {\n return isBetween(date, matcher.from, matcher.to);\n }\n if (matcher.from) return isSameDay(date, matcher.from);\n if (matcher.to) return isSameDay(date, matcher.to);\n }\n\n return false;\n}\n\nfunction isDateArray(value: unknown): value is Date[] {\n return Array.isArray(value) && value.length > 0 && value[0] instanceof Date;\n}\n","import { clone } from './date-utils';\n\nexport function generateHours(format: '12h' | '24h'): number[] {\n if (format === '24h') {\n return Array.from({ length: 24 }, (_, i) => i);\n }\n return Array.from({ length: 12 }, (_, i) => i + 1);\n}\n\nexport function generateMinutes(step = 1): number[] {\n const minutes: number[] = [];\n for (let i = 0; i < 60; i += step) {\n minutes.push(i);\n }\n return minutes;\n}\n\nexport function generateSeconds(step = 1): number[] {\n const seconds: number[] = [];\n for (let i = 0; i < 60; i += step) {\n seconds.push(i);\n }\n return seconds;\n}\n\nexport function mergeDateTime(\n date: Date,\n time: { hours: number; minutes: number; seconds?: number }\n): Date {\n const d = clone(date);\n d.setHours(time.hours, time.minutes, time.seconds ?? 0, 0);\n return d;\n}\n\nexport function splitDateTime(date: Date): {\n date: Date;\n time: { hours: number; minutes: number; seconds: number };\n} {\n const d = clone(date);\n d.setHours(0, 0, 0, 0);\n return {\n date: d,\n time: {\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n },\n };\n}\n\nexport function formatMeridiem(hours: number): 'AM' | 'PM' {\n return hours < 12 ? 'AM' : 'PM';\n}\n\nexport function to24Hour(hours: number, meridiem: 'AM' | 'PM'): number {\n if (meridiem === 'AM') {\n return hours === 12 ? 0 : hours;\n }\n return hours === 12 ? 12 : hours + 12;\n}\n\nexport function to12Hour(hours: number): { hours: number; meridiem: 'AM' | 'PM' } {\n const meridiem = hours < 12 ? 'AM' : 'PM';\n const h = hours % 12 || 12;\n return { hours: h, meridiem };\n}\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkHI4J64KK_cjs = require('./chunk-HI4J64KK.cjs');
|
|
4
|
+
|
|
5
|
+
// src/core/presets.ts
|
|
6
|
+
var presetBuilders = {
|
|
7
|
+
today: () => ({
|
|
8
|
+
label: "Today",
|
|
9
|
+
value: () => ({ from: /* @__PURE__ */ new Date(), to: /* @__PURE__ */ new Date() })
|
|
10
|
+
}),
|
|
11
|
+
yesterday: () => ({
|
|
12
|
+
label: "Yesterday",
|
|
13
|
+
value: () => {
|
|
14
|
+
const d = chunkHI4J64KK_cjs.subDays(/* @__PURE__ */ new Date(), 1);
|
|
15
|
+
return { from: d, to: d };
|
|
16
|
+
}
|
|
17
|
+
}),
|
|
18
|
+
last7: () => ({
|
|
19
|
+
label: "Last 7 days",
|
|
20
|
+
value: () => ({ from: chunkHI4J64KK_cjs.subDays(/* @__PURE__ */ new Date(), 6), to: /* @__PURE__ */ new Date() })
|
|
21
|
+
}),
|
|
22
|
+
last30: () => ({
|
|
23
|
+
label: "Last 30 days",
|
|
24
|
+
value: () => ({ from: chunkHI4J64KK_cjs.subDays(/* @__PURE__ */ new Date(), 29), to: /* @__PURE__ */ new Date() })
|
|
25
|
+
}),
|
|
26
|
+
thisMonth: () => ({
|
|
27
|
+
label: "This month",
|
|
28
|
+
value: () => ({ from: chunkHI4J64KK_cjs.startOfMonth(/* @__PURE__ */ new Date()), to: /* @__PURE__ */ new Date() })
|
|
29
|
+
}),
|
|
30
|
+
lastMonth: () => ({
|
|
31
|
+
label: "Last month",
|
|
32
|
+
value: () => ({
|
|
33
|
+
from: chunkHI4J64KK_cjs.startOfMonth(chunkHI4J64KK_cjs.subMonths(/* @__PURE__ */ new Date(), 1)),
|
|
34
|
+
to: chunkHI4J64KK_cjs.endOfMonth(chunkHI4J64KK_cjs.subMonths(/* @__PURE__ */ new Date(), 1))
|
|
35
|
+
})
|
|
36
|
+
}),
|
|
37
|
+
thisYear: () => ({
|
|
38
|
+
label: "This year",
|
|
39
|
+
value: () => ({ from: chunkHI4J64KK_cjs.startOfYear(/* @__PURE__ */ new Date()), to: /* @__PURE__ */ new Date() })
|
|
40
|
+
})
|
|
41
|
+
};
|
|
42
|
+
var defaultKeys = ["today", "yesterday", "last7", "last30", "thisMonth", "lastMonth", "thisYear"];
|
|
43
|
+
function createPresets(options) {
|
|
44
|
+
const keys = options?.include ?? defaultKeys;
|
|
45
|
+
const builtIn = keys.map((key) => presetBuilders[key]());
|
|
46
|
+
return options?.custom ? [...builtIn, ...options.custom] : builtIn;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
exports.createPresets = createPresets;
|
|
50
|
+
//# sourceMappingURL=chunk-WBWQ5RKN.cjs.map
|
|
51
|
+
//# sourceMappingURL=chunk-WBWQ5RKN.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/presets.ts"],"names":["subDays","startOfMonth","subMonths","endOfMonth","startOfYear"],"mappings":";;;;;AAKA,IAAM,cAAA,GAAuD;AAAA,EAC3D,OAAO,OAAO;AAAA,IACZ,KAAA,EAAO,OAAA;AAAA,IACP,KAAA,EAAO,OAAO,EAAE,IAAA,kBAAM,IAAI,MAAK,EAAG,EAAA,kBAAI,IAAI,IAAA,EAAK,EAAE;AAAA,GACnD,CAAA;AAAA,EACA,WAAW,OAAO;AAAA,IAChB,KAAA,EAAO,WAAA;AAAA,IACP,OAAO,MAAM;AACX,MAAA,MAAM,CAAA,GAAIA,yBAAA,iBAAQ,IAAI,IAAA,IAAQ,CAAC,CAAA;AAC/B,MAAA,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,EAAA,EAAI,CAAA,EAAE;AAAA,IAC1B;AAAA,GACF,CAAA;AAAA,EACA,OAAO,OAAO;AAAA,IACZ,KAAA,EAAO,aAAA;AAAA,IACP,KAAA,EAAO,OAAO,EAAE,IAAA,EAAMA,yBAAA,iBAAQ,IAAI,IAAA,EAAK,EAAG,CAAC,CAAA,EAAG,EAAA,kBAAI,IAAI,MAAK,EAAE;AAAA,GAC/D,CAAA;AAAA,EACA,QAAQ,OAAO;AAAA,IACb,KAAA,EAAO,cAAA;AAAA,IACP,KAAA,EAAO,OAAO,EAAE,IAAA,EAAMA,yBAAA,iBAAQ,IAAI,IAAA,EAAK,EAAG,EAAE,CAAA,EAAG,EAAA,kBAAI,IAAI,MAAK,EAAE;AAAA,GAChE,CAAA;AAAA,EACA,WAAW,OAAO;AAAA,IAChB,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO,OAAO,EAAE,IAAA,EAAMC,8BAAA,iBAAa,IAAI,IAAA,EAAM,CAAA,EAAG,EAAA,kBAAI,IAAI,IAAA,EAAK,EAAE;AAAA,GACjE,CAAA;AAAA,EACA,WAAW,OAAO;AAAA,IAChB,KAAA,EAAO,YAAA;AAAA,IACP,OAAO,OAAO;AAAA,MACZ,MAAMA,8BAAA,CAAaC,2BAAA,qBAAc,IAAA,EAAK,EAAG,CAAC,CAAC,CAAA;AAAA,MAC3C,IAAIC,4BAAA,CAAWD,2BAAA,qBAAc,IAAA,EAAK,EAAG,CAAC,CAAC;AAAA,KACzC;AAAA,GACF,CAAA;AAAA,EACA,UAAU,OAAO;AAAA,IACf,KAAA,EAAO,WAAA;AAAA,IACP,KAAA,EAAO,OAAO,EAAE,IAAA,EAAME,6BAAA,iBAAY,IAAI,IAAA,EAAM,CAAA,EAAG,EAAA,kBAAI,IAAI,IAAA,EAAK,EAAE;AAAA,GAChE;AACF,CAAA;AAEA,IAAM,WAAA,GAA2B,CAAC,OAAA,EAAS,WAAA,EAAa,SAAS,QAAA,EAAU,WAAA,EAAa,aAAa,UAAU,CAAA;AAExG,SAAS,cAAc,OAAA,EAGZ;AAChB,EAAA,MAAM,IAAA,GAAO,SAAS,OAAA,IAAW,WAAA;AACjC,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAC,QAAQ,cAAA,CAAe,GAAG,GAAG,CAAA;AACvD,EAAA,OAAO,OAAA,EAAS,SAAS,CAAC,GAAG,SAAS,GAAG,OAAA,CAAQ,MAAM,CAAA,GAAI,OAAA;AAC7D","file":"chunk-WBWQ5RKN.cjs","sourcesContent":["import type { RangePreset } from './types';\nimport { subDays, subMonths, startOfMonth, endOfMonth, startOfYear } from './date-utils';\n\ntype PresetKey = 'today' | 'yesterday' | 'last7' | 'last30' | 'thisMonth' | 'lastMonth' | 'thisYear';\n\nconst presetBuilders: Record<PresetKey, () => RangePreset> = {\n today: () => ({\n label: 'Today',\n value: () => ({ from: new Date(), to: new Date() }),\n }),\n yesterday: () => ({\n label: 'Yesterday',\n value: () => {\n const d = subDays(new Date(), 1);\n return { from: d, to: d };\n },\n }),\n last7: () => ({\n label: 'Last 7 days',\n value: () => ({ from: subDays(new Date(), 6), to: new Date() }),\n }),\n last30: () => ({\n label: 'Last 30 days',\n value: () => ({ from: subDays(new Date(), 29), to: new Date() }),\n }),\n thisMonth: () => ({\n label: 'This month',\n value: () => ({ from: startOfMonth(new Date()), to: new Date() }),\n }),\n lastMonth: () => ({\n label: 'Last month',\n value: () => ({\n from: startOfMonth(subMonths(new Date(), 1)),\n to: endOfMonth(subMonths(new Date(), 1)),\n }),\n }),\n thisYear: () => ({\n label: 'This year',\n value: () => ({ from: startOfYear(new Date()), to: new Date() }),\n }),\n};\n\nconst defaultKeys: PresetKey[] = ['today', 'yesterday', 'last7', 'last30', 'thisMonth', 'lastMonth', 'thisYear'];\n\nexport function createPresets(options?: {\n include?: PresetKey[];\n custom?: RangePreset[];\n}): RangePreset[] {\n const keys = options?.include ?? defaultKeys;\n const builtIn = keys.map((key) => presetBuilders[key]());\n return options?.custom ? [...builtIn, ...options.custom] : builtIn;\n}\n"]}
|