@zag-js/date-utils 0.1.2 → 0.1.4
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-5HGHDJ3L.mjs +14 -0
- package/dist/chunk-AMZ7CJ5F.mjs +18 -0
- package/dist/chunk-CAYCTIEJ.mjs +29 -0
- package/dist/chunk-G4VVKINZ.mjs +14 -0
- package/dist/chunk-KBGJA6NB.mjs +55 -0
- package/dist/chunk-KFJ757ZA.mjs +32 -0
- package/dist/chunk-KLHRN7WS.mjs +20 -0
- package/dist/chunk-KN3YMOSL.mjs +8 -0
- package/dist/chunk-LGEGBP3O.mjs +20 -0
- package/dist/{chunk-NXMEZINO.mjs → chunk-LQAXQPWP.mjs} +4 -7
- package/dist/chunk-ODG5YF5H.mjs +21 -0
- package/dist/chunk-SI75FOJ2.mjs +11 -0
- package/dist/chunk-U3OBXRHI.mjs +42 -0
- package/dist/format-date.d.ts +9 -0
- package/dist/format-date.js +79 -0
- package/dist/format-date.mjs +6 -0
- package/dist/format-selected-date.d.ts +1 -2
- package/dist/format-selected-date.js +14 -14
- package/dist/format-selected-date.mjs +3 -2
- package/dist/format-visible-range.d.ts +1 -2
- package/dist/format-visible-range.js +29 -50
- package/dist/format-visible-range.mjs +4 -3
- package/dist/get-day-formatter.d.ts +5 -0
- package/dist/{placeholder.js → get-day-formatter.js} +22 -21
- package/dist/get-day-formatter.mjs +7 -0
- package/dist/get-decade-range.d.ts +3 -0
- package/dist/get-decade-range.js +38 -0
- package/dist/get-decade-range.mjs +6 -0
- package/dist/get-end-of-week.d.ts +5 -0
- package/dist/{segment-constants.js → get-end-of-week.js} +17 -32
- package/dist/get-end-of-week.mjs +11 -0
- package/dist/get-era-format.d.ts +5 -0
- package/dist/get-era-format.js +32 -0
- package/dist/get-era-format.mjs +6 -0
- package/dist/get-month-days.d.ts +6 -0
- package/dist/{get-month-dates.js → get-month-days.js} +26 -27
- package/dist/get-month-days.mjs +9 -0
- package/dist/get-month-formatter.d.ts +5 -0
- package/dist/{get-formatter.js → get-month-formatter.js} +14 -26
- package/dist/get-month-formatter.mjs +7 -0
- package/dist/get-month-names.d.ts +3 -0
- package/dist/get-month-names.js +38 -0
- package/dist/get-month-names.mjs +6 -0
- package/dist/get-start-of-week.d.ts +5 -0
- package/dist/get-start-of-week.js +35 -0
- package/dist/get-start-of-week.mjs +6 -0
- package/dist/get-week-days.d.ts +10 -0
- package/dist/get-week-days.js +62 -0
- package/dist/get-week-days.mjs +8 -0
- package/dist/get-weekday-formats.d.ts +10 -0
- package/dist/get-weekday-formats.js +44 -0
- package/dist/get-weekday-formats.mjs +6 -0
- package/dist/index.d.ts +10 -8
- package/dist/index.js +223 -307
- package/dist/index.mjs +40 -41
- package/dist/parse-date.d.ts +5 -0
- package/dist/parse-date.js +66 -0
- package/dist/parse-date.mjs +6 -0
- package/dist/types.d.ts +1 -2
- package/package.json +2 -2
- package/dist/chunk-55BYHK5B.mjs +0 -31
- package/dist/chunk-DZM5JUL2.mjs +0 -22
- package/dist/chunk-ETRHBIGD.mjs +0 -66
- package/dist/chunk-GLQDJRSE.mjs +0 -31
- package/dist/chunk-JZVHAOWX.mjs +0 -35
- package/dist/chunk-MGRIF22W.mjs +0 -18
- package/dist/chunk-SQCHVCXH.mjs +0 -42
- package/dist/chunk-TSOWYV6W.mjs +0 -34
- package/dist/chunk-U6WRBS5P.mjs +0 -77
- package/dist/get-formatter.d.ts +0 -8
- package/dist/get-formatter.mjs +0 -8
- package/dist/get-month-dates.d.ts +0 -5
- package/dist/get-month-dates.mjs +0 -7
- package/dist/get-week-dates.d.ts +0 -7
- package/dist/get-week-dates.js +0 -60
- package/dist/get-week-dates.mjs +0 -8
- package/dist/placeholder.d.ts +0 -7
- package/dist/placeholder.mjs +0 -8
- package/dist/segment-constants.d.ts +0 -27
- package/dist/segment-constants.mjs +0 -10
- package/dist/segment-limit.d.ts +0 -10
- package/dist/segment-limit.js +0 -101
- package/dist/segment-limit.mjs +0 -6
- package/dist/segment-mutation.d.ts +0 -7
- package/dist/segment-mutation.js +0 -91
- package/dist/segment-mutation.mjs +0 -8
- package/dist/segment-parts.d.ts +0 -27
- package/dist/segment-parts.js +0 -159
- package/dist/segment-parts.mjs +0 -11
package/dist/index.js
CHANGED
|
@@ -20,8 +20,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
-
SEGMENT_PAGE_STEP: () => SEGMENT_PAGE_STEP,
|
|
24
|
-
addSegment: () => addSegment,
|
|
25
23
|
alignCenter: () => alignCenter,
|
|
26
24
|
alignDate: () => alignDate,
|
|
27
25
|
alignEnd: () => alignEnd,
|
|
@@ -29,15 +27,18 @@ __export(src_exports, {
|
|
|
29
27
|
alignStartDate: () => alignStartDate,
|
|
30
28
|
constrainStart: () => constrainStart,
|
|
31
29
|
constrainValue: () => constrainValue,
|
|
32
|
-
|
|
30
|
+
formatDate: () => formatDate,
|
|
33
31
|
formatRange: () => formatRange,
|
|
34
32
|
formatSelectedDate: () => formatSelectedDate,
|
|
35
33
|
formatVisibleRange: () => formatVisibleRange,
|
|
36
34
|
getAdjustedDateFn: () => getAdjustedDateFn,
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
getDayFormatter: () => getDayFormatter,
|
|
36
|
+
getDaysInWeek: () => getDaysInWeek,
|
|
37
|
+
getDecadeRange: () => getDecadeRange,
|
|
39
38
|
getEndDate: () => getEndDate,
|
|
40
|
-
|
|
39
|
+
getMonthDays: () => getMonthDays,
|
|
40
|
+
getMonthFormatter: () => getMonthFormatter,
|
|
41
|
+
getMonthNames: () => getMonthNames,
|
|
41
42
|
getNextDay: () => getNextDay,
|
|
42
43
|
getNextPage: () => getNextPage,
|
|
43
44
|
getNextRow: () => getNextRow,
|
|
@@ -49,13 +50,10 @@ __export(src_exports, {
|
|
|
49
50
|
getPreviousSection: () => getPreviousSection,
|
|
50
51
|
getSectionEnd: () => getSectionEnd,
|
|
51
52
|
getSectionStart: () => getSectionStart,
|
|
52
|
-
getSegmentLimits: () => getSegmentLimits,
|
|
53
|
-
getSegmentPageStep: () => getSegmentPageStep,
|
|
54
|
-
getSegments: () => getSegments,
|
|
55
53
|
getTodayDate: () => getTodayDate,
|
|
56
|
-
getTodayPlaceholderDate: () => getTodayPlaceholderDate,
|
|
57
54
|
getUnitDuration: () => getUnitDuration,
|
|
58
|
-
|
|
55
|
+
getWeekDays: () => getWeekDays,
|
|
56
|
+
getWeekdayFormats: () => getWeekdayFormats,
|
|
59
57
|
getYearsRange: () => getYearsRange,
|
|
60
58
|
isDateDisabled: () => isDateDisabled,
|
|
61
59
|
isDateEqual: () => isDateEqual,
|
|
@@ -64,12 +62,11 @@ __export(src_exports, {
|
|
|
64
62
|
isDateUnavailable: () => isDateUnavailable,
|
|
65
63
|
isNextVisibleRangeInvalid: () => isNextVisibleRangeInvalid,
|
|
66
64
|
isPreviousVisibleRangeInvalid: () => isPreviousVisibleRangeInvalid,
|
|
67
|
-
isSegmentEditable: () => isSegmentEditable,
|
|
68
65
|
isTodayDate: () => isTodayDate,
|
|
66
|
+
parseDateString: () => parseDateString,
|
|
69
67
|
setCalendar: () => setCalendar,
|
|
70
68
|
setDate: () => setDate,
|
|
71
69
|
setMonth: () => setMonth,
|
|
72
|
-
setSegment: () => setSegment,
|
|
73
70
|
setYear: () => setYear
|
|
74
71
|
});
|
|
75
72
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -206,6 +203,58 @@ function getEndDate(startDate, duration) {
|
|
|
206
203
|
return startDate.add(d);
|
|
207
204
|
}
|
|
208
205
|
|
|
206
|
+
// src/format-date.ts
|
|
207
|
+
var import_date3 = require("@internationalized/date");
|
|
208
|
+
function createRegEx(sign) {
|
|
209
|
+
let symbols = "\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";
|
|
210
|
+
return new RegExp("(^|>|" + symbols + ")(" + sign + ")($|<|" + symbols + ")", "g");
|
|
211
|
+
}
|
|
212
|
+
function formatDate(value, formatString, locale, timeZone = "UTC") {
|
|
213
|
+
const datetime = (0, import_date3.toCalendarDateTime)(value);
|
|
214
|
+
const date = datetime.toDate(timeZone);
|
|
215
|
+
const formats = {
|
|
216
|
+
// Time in ms
|
|
217
|
+
T: date.getTime(),
|
|
218
|
+
// Minutes
|
|
219
|
+
m: date.toLocaleString(locale, { minute: "numeric" }),
|
|
220
|
+
mm: date.toLocaleString(locale, { minute: "2-digit" }),
|
|
221
|
+
// Seconds
|
|
222
|
+
s: date.toLocaleString(locale, { second: "numeric" }),
|
|
223
|
+
ss: date.toLocaleString(locale, { second: "2-digit" }),
|
|
224
|
+
// Hours
|
|
225
|
+
h: date.toLocaleString(locale, { hour: "numeric", hour12: true }),
|
|
226
|
+
hh: date.toLocaleString(locale, { hour: "2-digit", hour12: true }),
|
|
227
|
+
H: date.toLocaleString(locale, { hour: "numeric", hour12: false }),
|
|
228
|
+
HH: date.toLocaleString(locale, { hour: "2-digit", hour12: false }),
|
|
229
|
+
// Day period
|
|
230
|
+
aa: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toLowerCase(),
|
|
231
|
+
AA: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toUpperCase(),
|
|
232
|
+
// Day of week
|
|
233
|
+
E: date.toLocaleString(locale, { weekday: "short" }),
|
|
234
|
+
EE: date.toLocaleString(locale, { weekday: "short" }),
|
|
235
|
+
EEE: date.toLocaleString(locale, { weekday: "short" }),
|
|
236
|
+
EEEE: date.toLocaleString(locale, { weekday: "long" }),
|
|
237
|
+
// Date of month
|
|
238
|
+
d: datetime.day,
|
|
239
|
+
dd: date.toLocaleString(locale, { day: "2-digit" }),
|
|
240
|
+
// Months
|
|
241
|
+
M: datetime.month + 1,
|
|
242
|
+
MM: date.toLocaleString(locale, { month: "2-digit" }),
|
|
243
|
+
MMM: date.toLocaleString(locale, { month: "short" }),
|
|
244
|
+
MMMM: date.toLocaleString(locale, { month: "long" }),
|
|
245
|
+
// Years
|
|
246
|
+
yy: date.toLocaleString(locale, { year: "2-digit" }),
|
|
247
|
+
yyyy: date.toLocaleString(locale, { year: "numeric" }),
|
|
248
|
+
YY: date.toLocaleString(locale, { year: "2-digit" }),
|
|
249
|
+
YYYY: date.toLocaleString(locale, { year: "numeric" })
|
|
250
|
+
};
|
|
251
|
+
let result = formatString;
|
|
252
|
+
for (const key in formats) {
|
|
253
|
+
result = result.replace(createRegEx(key), "$1" + formats[key] + "$3");
|
|
254
|
+
}
|
|
255
|
+
return result;
|
|
256
|
+
}
|
|
257
|
+
|
|
209
258
|
// src/format-range.ts
|
|
210
259
|
function formatRange(startDate, endDate, formatter, toString, timeZone) {
|
|
211
260
|
let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone));
|
|
@@ -231,114 +280,153 @@ function formatRange(startDate, endDate, formatter, toString, timeZone) {
|
|
|
231
280
|
}
|
|
232
281
|
|
|
233
282
|
// src/format-selected-date.ts
|
|
234
|
-
var
|
|
283
|
+
var import_date5 = require("@internationalized/date");
|
|
284
|
+
|
|
285
|
+
// src/get-day-formatter.ts
|
|
286
|
+
var import_date4 = require("@internationalized/date");
|
|
235
287
|
|
|
236
|
-
// src/get-
|
|
288
|
+
// src/get-era-format.ts
|
|
237
289
|
function getEraFormat(date) {
|
|
238
290
|
return date?.calendar.identifier === "gregory" && date.era === "BC" ? "short" : void 0;
|
|
239
291
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
return
|
|
292
|
+
|
|
293
|
+
// src/get-day-formatter.ts
|
|
294
|
+
function getDayFormatter(locale, timeZone) {
|
|
295
|
+
const date = (0, import_date4.toCalendarDate)((0, import_date4.today)(timeZone));
|
|
296
|
+
return new import_date4.DateFormatter(locale, {
|
|
245
297
|
weekday: "long",
|
|
246
298
|
month: "long",
|
|
247
299
|
year: "numeric",
|
|
248
300
|
day: "numeric",
|
|
249
|
-
era,
|
|
250
|
-
timeZone
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
function getMonthFormatter(startDate, endDate, getDateFormatter2, timeZone) {
|
|
254
|
-
let start = startDate;
|
|
255
|
-
let end = endDate ?? startDate;
|
|
256
|
-
let era = getEraFormat(start) || getEraFormat(end);
|
|
257
|
-
return getDateFormatter2({
|
|
258
|
-
month: "long",
|
|
259
|
-
year: "numeric",
|
|
260
|
-
era,
|
|
261
|
-
calendar: start?.calendar.identifier,
|
|
301
|
+
era: getEraFormat(date),
|
|
262
302
|
timeZone
|
|
263
303
|
});
|
|
264
304
|
}
|
|
265
305
|
|
|
266
306
|
// src/format-selected-date.ts
|
|
267
|
-
function formatSelectedDate(startDate, endDate,
|
|
307
|
+
function formatSelectedDate(startDate, endDate, locale, timeZone) {
|
|
268
308
|
let start = startDate;
|
|
269
309
|
let end = endDate ?? startDate;
|
|
270
|
-
let formatter =
|
|
271
|
-
if (
|
|
272
|
-
return "";
|
|
273
|
-
}
|
|
274
|
-
if ((0, import_date3.isSameDay)(start, end)) {
|
|
310
|
+
let formatter = getDayFormatter(locale, timeZone);
|
|
311
|
+
if ((0, import_date5.isSameDay)(start, end)) {
|
|
275
312
|
return formatter.format(start.toDate(timeZone));
|
|
276
313
|
}
|
|
277
314
|
return formatRange(start, end, formatter, (start2, end2) => `${start2} \u2013 ${end2}`, timeZone);
|
|
278
315
|
}
|
|
279
316
|
|
|
280
317
|
// src/format-visible-range.ts
|
|
281
|
-
var
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
318
|
+
var import_date7 = require("@internationalized/date");
|
|
319
|
+
|
|
320
|
+
// src/get-month-formatter.ts
|
|
321
|
+
var import_date6 = require("@internationalized/date");
|
|
322
|
+
function getMonthFormatter(locale, timeZone) {
|
|
323
|
+
const date = (0, import_date6.toCalendarDate)((0, import_date6.today)(timeZone));
|
|
324
|
+
return new import_date6.DateFormatter(locale, {
|
|
325
|
+
month: "long",
|
|
326
|
+
year: "numeric",
|
|
327
|
+
era: getEraFormat(date),
|
|
328
|
+
calendar: date?.calendar.identifier,
|
|
329
|
+
timeZone
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// src/format-visible-range.ts
|
|
334
|
+
function formatVisibleRange(startDate, endDate, locale, timeZone) {
|
|
335
|
+
const start = startDate;
|
|
336
|
+
const end = endDate ?? startDate;
|
|
337
|
+
const dayFormatter = getDayFormatter(locale, timeZone);
|
|
338
|
+
if (!(0, import_date7.isSameDay)(start, (0, import_date7.startOfMonth)(start))) {
|
|
339
|
+
return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));
|
|
340
|
+
}
|
|
341
|
+
const monthFormatter = getMonthFormatter(locale, timeZone);
|
|
342
|
+
if ((0, import_date7.isSameDay)(end, (0, import_date7.endOfMonth)(start))) {
|
|
293
343
|
return monthFormatter.format(start.toDate(timeZone));
|
|
294
344
|
}
|
|
295
|
-
if ((0,
|
|
296
|
-
return
|
|
345
|
+
if ((0, import_date7.isSameDay)(end, (0, import_date7.endOfMonth)(end))) {
|
|
346
|
+
return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));
|
|
297
347
|
}
|
|
348
|
+
return "";
|
|
298
349
|
}
|
|
299
350
|
|
|
300
|
-
// src/get-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
let dates = [];
|
|
308
|
-
date = (0, import_date5.startOfWeek)(date, locale);
|
|
309
|
-
let dayOfWeek = (0, import_date5.getDayOfWeek)(date, locale);
|
|
310
|
-
for (let i = 0; i < dayOfWeek; i++) {
|
|
311
|
-
dates.push(null);
|
|
351
|
+
// src/get-decade-range.ts
|
|
352
|
+
function getDecadeRange(year) {
|
|
353
|
+
const computedYear = year - year % 10 - 1;
|
|
354
|
+
const years = [];
|
|
355
|
+
for (let i = 0; i < 12; i += 1) {
|
|
356
|
+
const value = computedYear + i;
|
|
357
|
+
years.push(value);
|
|
312
358
|
}
|
|
359
|
+
return years;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// src/get-month-days.ts
|
|
363
|
+
var import_date9 = require("@internationalized/date");
|
|
364
|
+
|
|
365
|
+
// src/get-start-of-week.ts
|
|
366
|
+
var import_date8 = require("@internationalized/date");
|
|
367
|
+
function getStartOfWeek(date, locale, firstDayOfWeek = 0) {
|
|
368
|
+
const day = (0, import_date8.getDayOfWeek)(date, locale);
|
|
369
|
+
const diff = (day - firstDayOfWeek + 7) % 7;
|
|
370
|
+
return date.subtract({ days: diff });
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// src/get-month-days.ts
|
|
374
|
+
function getDaysInWeek(weekIndex, from, locale, firstDayOfWeek) {
|
|
375
|
+
const weekDate = from.add({ weeks: weekIndex });
|
|
376
|
+
const dates = [];
|
|
377
|
+
let date = getStartOfWeek(weekDate, locale, firstDayOfWeek);
|
|
313
378
|
while (dates.length < 7) {
|
|
314
379
|
dates.push(date);
|
|
315
380
|
let nextDate = date.add({ days: 1 });
|
|
316
|
-
if ((0,
|
|
381
|
+
if ((0, import_date9.isSameDay)(date, nextDate)) {
|
|
317
382
|
break;
|
|
318
383
|
}
|
|
319
384
|
date = nextDate;
|
|
320
385
|
}
|
|
321
|
-
while (dates.length < 7) {
|
|
322
|
-
dates.push(null);
|
|
323
|
-
}
|
|
324
386
|
return dates;
|
|
325
387
|
}
|
|
326
|
-
function
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
return
|
|
330
|
-
return
|
|
388
|
+
function getMonthDays(from, locale, numOfWeeks, firstDayOfWeek) {
|
|
389
|
+
const monthWeeks = (0, import_date9.getWeeksInMonth)(from, locale);
|
|
390
|
+
const weeks = [...new Array(numOfWeeks ?? monthWeeks).keys()];
|
|
391
|
+
return weeks.map((week) => {
|
|
392
|
+
return getDaysInWeek(week, from, locale, firstDayOfWeek);
|
|
331
393
|
});
|
|
332
394
|
}
|
|
333
395
|
|
|
334
|
-
// src/get-month-
|
|
335
|
-
function
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
let
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
}
|
|
396
|
+
// src/get-month-names.ts
|
|
397
|
+
function getMonthNames(locale, format = "long") {
|
|
398
|
+
const date = new Date(2021, 0, 1);
|
|
399
|
+
const monthNames = [];
|
|
400
|
+
for (let i = 0; i < 12; i++) {
|
|
401
|
+
monthNames.push(date.toLocaleString(locale, { month: format }));
|
|
402
|
+
date.setMonth(date.getMonth() + 1);
|
|
403
|
+
}
|
|
404
|
+
return monthNames;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
// src/get-weekday-formats.ts
|
|
408
|
+
var import_date10 = require("@internationalized/date");
|
|
409
|
+
function getWeekdayFormats(locale, timeZone) {
|
|
410
|
+
const longFormat = new import_date10.DateFormatter(locale, { weekday: "long", timeZone });
|
|
411
|
+
const shortFormat = new import_date10.DateFormatter(locale, { weekday: "short", timeZone });
|
|
412
|
+
const narrowFormat = new import_date10.DateFormatter(locale, { weekday: "narrow", timeZone });
|
|
413
|
+
return (value) => {
|
|
414
|
+
const date = value instanceof Date ? value : value.toDate(timeZone);
|
|
415
|
+
return {
|
|
416
|
+
value,
|
|
417
|
+
short: shortFormat.format(date),
|
|
418
|
+
long: longFormat.format(date),
|
|
419
|
+
narrow: narrowFormat.format(date)
|
|
420
|
+
};
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
// src/get-week-days.ts
|
|
425
|
+
function getWeekDays(date, startOfWeekProp, timeZone, locale) {
|
|
426
|
+
const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp);
|
|
427
|
+
const weeks = [...new Array(7).keys()];
|
|
428
|
+
const format = getWeekdayFormats(locale, timeZone);
|
|
429
|
+
return weeks.map((index) => format(firstDayOfWeek.add({ days: index })));
|
|
342
430
|
}
|
|
343
431
|
|
|
344
432
|
// src/get-year-range.ts
|
|
@@ -351,9 +439,9 @@ function getYearsRange(range) {
|
|
|
351
439
|
}
|
|
352
440
|
|
|
353
441
|
// src/mutation.ts
|
|
354
|
-
var
|
|
442
|
+
var import_date11 = require("@internationalized/date");
|
|
355
443
|
function getTodayDate(timezone) {
|
|
356
|
-
return (0,
|
|
444
|
+
return (0, import_date11.today)(timezone);
|
|
357
445
|
}
|
|
358
446
|
function getNextDay(date) {
|
|
359
447
|
return date.add({ days: 1 });
|
|
@@ -368,7 +456,7 @@ function setYear(date, year) {
|
|
|
368
456
|
return date.set({ year });
|
|
369
457
|
}
|
|
370
458
|
function setCalendar(date, calendar) {
|
|
371
|
-
return (0,
|
|
459
|
+
return (0, import_date11.toCalendar)((0, import_date11.toCalendarDate)(date), calendar);
|
|
372
460
|
}
|
|
373
461
|
function setDate(date, startDate, isDateUnavailable2, minValue, maxValue) {
|
|
374
462
|
let result;
|
|
@@ -389,7 +477,7 @@ function getPreviousAvailableDate(date, minValue, isDateUnavailable2) {
|
|
|
389
477
|
}
|
|
390
478
|
|
|
391
479
|
// src/pagination.ts
|
|
392
|
-
var
|
|
480
|
+
var import_date12 = require("@internationalized/date");
|
|
393
481
|
function getAdjustedDateFn(visibleDuration, locale, minValue, maxValue) {
|
|
394
482
|
return function getDate(options) {
|
|
395
483
|
const { startDate, focusedDate } = options;
|
|
@@ -480,13 +568,13 @@ function getSectionStart(focusedDate, startDate, visibleDuration, locale, minVal
|
|
|
480
568
|
}
|
|
481
569
|
if (visibleDuration.weeks) {
|
|
482
570
|
return adjust({
|
|
483
|
-
focusedDate: (0,
|
|
571
|
+
focusedDate: (0, import_date12.startOfWeek)(focusedDate, locale),
|
|
484
572
|
startDate
|
|
485
573
|
});
|
|
486
574
|
}
|
|
487
575
|
if (visibleDuration.months || visibleDuration.years) {
|
|
488
576
|
return adjust({
|
|
489
|
-
focusedDate: (0,
|
|
577
|
+
focusedDate: (0, import_date12.startOfMonth)(focusedDate),
|
|
490
578
|
startDate
|
|
491
579
|
});
|
|
492
580
|
}
|
|
@@ -502,13 +590,13 @@ function getSectionEnd(focusedDate, startDate, visibleDuration, locale, minValue
|
|
|
502
590
|
}
|
|
503
591
|
if (visibleDuration.weeks) {
|
|
504
592
|
return adjust({
|
|
505
|
-
focusedDate: (0,
|
|
593
|
+
focusedDate: (0, import_date12.endOfWeek)(focusedDate, locale),
|
|
506
594
|
startDate
|
|
507
595
|
});
|
|
508
596
|
}
|
|
509
597
|
if (visibleDuration.months || visibleDuration.years) {
|
|
510
598
|
return adjust({
|
|
511
|
-
focusedDate: (0,
|
|
599
|
+
focusedDate: (0, import_date12.endOfMonth)(focusedDate),
|
|
512
600
|
startDate
|
|
513
601
|
});
|
|
514
602
|
}
|
|
@@ -562,217 +650,46 @@ function getPreviousSection(focusedDate, startDate, larger, visibleDuration, loc
|
|
|
562
650
|
}
|
|
563
651
|
}
|
|
564
652
|
|
|
565
|
-
// src/
|
|
566
|
-
var
|
|
567
|
-
function
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
second: true,
|
|
591
|
-
dayPeriod: true,
|
|
592
|
-
era: true
|
|
593
|
-
};
|
|
594
|
-
var SEGMENT_PAGE_STEP = {
|
|
595
|
-
year: 5,
|
|
596
|
-
month: 2,
|
|
597
|
-
day: 7,
|
|
598
|
-
hour: 2,
|
|
599
|
-
minute: 15,
|
|
600
|
-
second: 15
|
|
601
|
-
};
|
|
602
|
-
function isSegmentEditable(segment) {
|
|
603
|
-
return EDITABLE_SEGMENTS[segment];
|
|
604
|
-
}
|
|
605
|
-
function getSegmentPageStep(segment) {
|
|
606
|
-
return SEGMENT_PAGE_STEP[segment] ?? 1;
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
// src/segment-limit.ts
|
|
610
|
-
var import_date10 = require("@internationalized/date");
|
|
611
|
-
function getSegmentLimits(date, type, options) {
|
|
612
|
-
switch (type) {
|
|
613
|
-
case "era": {
|
|
614
|
-
let eras = date.calendar.getEras();
|
|
615
|
-
return {
|
|
616
|
-
value: eras.indexOf(date.era),
|
|
617
|
-
min: 0,
|
|
618
|
-
max: eras.length - 1
|
|
619
|
-
};
|
|
620
|
-
}
|
|
621
|
-
case "year":
|
|
622
|
-
return {
|
|
623
|
-
value: date.year,
|
|
624
|
-
min: 1,
|
|
625
|
-
max: date.calendar.getYearsInEra(date)
|
|
626
|
-
};
|
|
627
|
-
case "month":
|
|
628
|
-
return {
|
|
629
|
-
value: date.month,
|
|
630
|
-
min: (0, import_date10.getMinimumMonthInYear)(date),
|
|
631
|
-
max: date.calendar.getMonthsInYear(date)
|
|
632
|
-
};
|
|
633
|
-
case "day":
|
|
634
|
-
return {
|
|
635
|
-
value: date.day,
|
|
636
|
-
min: (0, import_date10.getMinimumDayInMonth)(date),
|
|
637
|
-
max: date.calendar.getDaysInMonth(date)
|
|
638
|
-
};
|
|
639
|
-
}
|
|
640
|
-
if ("hour" in date) {
|
|
641
|
-
switch (type) {
|
|
642
|
-
case "dayPeriod":
|
|
643
|
-
return {
|
|
644
|
-
value: date.hour >= 12 ? 12 : 0,
|
|
645
|
-
min: 0,
|
|
646
|
-
max: 12
|
|
647
|
-
};
|
|
648
|
-
case "hour":
|
|
649
|
-
if (options?.hour12) {
|
|
650
|
-
let isPM = date.hour >= 12;
|
|
651
|
-
return {
|
|
652
|
-
value: date.hour,
|
|
653
|
-
min: isPM ? 12 : 0,
|
|
654
|
-
max: isPM ? 23 : 11
|
|
655
|
-
};
|
|
656
|
-
}
|
|
657
|
-
return {
|
|
658
|
-
value: date.hour,
|
|
659
|
-
min: 0,
|
|
660
|
-
max: 23
|
|
661
|
-
};
|
|
662
|
-
case "minute":
|
|
663
|
-
return {
|
|
664
|
-
value: date.minute,
|
|
665
|
-
min: 0,
|
|
666
|
-
max: 59
|
|
667
|
-
};
|
|
668
|
-
case "second":
|
|
669
|
-
return {
|
|
670
|
-
value: date.second,
|
|
671
|
-
min: 0,
|
|
672
|
-
max: 59
|
|
673
|
-
};
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
return {
|
|
677
|
-
value: -1,
|
|
678
|
-
min: -1,
|
|
679
|
-
max: -1
|
|
680
|
-
};
|
|
681
|
-
}
|
|
682
|
-
|
|
683
|
-
// src/segment-mutation.ts
|
|
684
|
-
function addSegment(date, part, amount, options) {
|
|
685
|
-
switch (part) {
|
|
686
|
-
case "era":
|
|
687
|
-
case "year":
|
|
688
|
-
case "month":
|
|
689
|
-
case "day":
|
|
690
|
-
return date.cycle(part, amount, { round: part === "year" });
|
|
691
|
-
}
|
|
692
|
-
if ("hour" in date) {
|
|
693
|
-
switch (part) {
|
|
694
|
-
case "dayPeriod": {
|
|
695
|
-
let hours = date.hour;
|
|
696
|
-
let isPM = hours >= 12;
|
|
697
|
-
return date.set({ hour: isPM ? hours - 12 : hours + 12 });
|
|
698
|
-
}
|
|
699
|
-
case "hour":
|
|
700
|
-
case "minute":
|
|
701
|
-
case "second":
|
|
702
|
-
return date.cycle(part, amount, {
|
|
703
|
-
round: part !== "hour",
|
|
704
|
-
hourCycle: options?.hour12 ? 12 : 24
|
|
705
|
-
});
|
|
653
|
+
// src/parse-date.ts
|
|
654
|
+
var import_date13 = require("@internationalized/date");
|
|
655
|
+
function parseDateString(date, locale, timeZone) {
|
|
656
|
+
const regex = createRegex(locale, timeZone);
|
|
657
|
+
const { year, month, day } = extract(regex, date) ?? {};
|
|
658
|
+
if (year != null && year.length === 4 && month != null && +month <= 12 && day != null && +day <= 31) {
|
|
659
|
+
return new import_date13.CalendarDate(+year, +month, +day);
|
|
660
|
+
}
|
|
661
|
+
const time = Date.parse(date);
|
|
662
|
+
if (!isNaN(time)) {
|
|
663
|
+
const date2 = new Date(time);
|
|
664
|
+
return new import_date13.CalendarDate(date2.getFullYear(), date2.getMonth() + 1, date2.getDate());
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
function createRegex(locale, timeZone) {
|
|
668
|
+
const formatter = new import_date13.DateFormatter(locale, { day: "numeric", month: "numeric", year: "numeric", timeZone });
|
|
669
|
+
const parts = formatter.formatToParts(new Date(2e3, 11, 25));
|
|
670
|
+
return parts.map(({ type, value }) => type === "literal" ? value : `((?!=<${type}>)\\d+)`).join("");
|
|
671
|
+
}
|
|
672
|
+
function extract(pattern, str) {
|
|
673
|
+
const matches = str.match(pattern);
|
|
674
|
+
return pattern.toString().match(/<(.+?)>/g)?.map((group) => {
|
|
675
|
+
const groupMatches = group.match(/<(.+)>/);
|
|
676
|
+
if (!groupMatches || groupMatches.length <= 0) {
|
|
677
|
+
return null;
|
|
706
678
|
}
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
case "era":
|
|
716
|
-
return date.set({ [part]: value });
|
|
717
|
-
}
|
|
718
|
-
if ("hour" in date) {
|
|
719
|
-
switch (part) {
|
|
720
|
-
case "dayPeriod": {
|
|
721
|
-
let hours = date.hour;
|
|
722
|
-
let wasPM = hours >= 12;
|
|
723
|
-
let isPM = value >= 12;
|
|
724
|
-
return isPM === wasPM ? date : date.set({ hour: wasPM ? hours - 12 : hours + 12 });
|
|
725
|
-
}
|
|
726
|
-
case "hour":
|
|
727
|
-
if (options?.hour12) {
|
|
728
|
-
let hours = date.hour;
|
|
729
|
-
let wasPM = hours >= 12;
|
|
730
|
-
if (!wasPM && value === 12) {
|
|
731
|
-
value = 0;
|
|
732
|
-
}
|
|
733
|
-
if (wasPM && value < 12) {
|
|
734
|
-
value += 12;
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
case "minute":
|
|
738
|
-
case "second":
|
|
739
|
-
return date.set({ [part]: value });
|
|
679
|
+
return group.match(/<(.+)>/)?.[1];
|
|
680
|
+
}).reduce((acc, curr, index) => {
|
|
681
|
+
if (!curr)
|
|
682
|
+
return acc;
|
|
683
|
+
if (matches && matches.length > index) {
|
|
684
|
+
acc[curr] = matches[index + 1];
|
|
685
|
+
} else {
|
|
686
|
+
acc[curr] = null;
|
|
740
687
|
}
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
}
|
|
744
|
-
|
|
745
|
-
// src/segment-parts.ts
|
|
746
|
-
function getAllSegments(segments) {
|
|
747
|
-
return segments.filter((segment) => isSegmentEditable(segment.type)).reduce((acc, segment) => (acc[segment.type] = true, acc), {});
|
|
748
|
-
}
|
|
749
|
-
function getPlaceholder(options) {
|
|
750
|
-
const placeholder = { day: "dd", month: "mm", year: "yyyy" };
|
|
751
|
-
return placeholder[options.field];
|
|
752
|
-
}
|
|
753
|
-
function getSegments(date, validSegments, formatter, timeZone) {
|
|
754
|
-
const dateValue = date || getTodayPlaceholderDate(timeZone);
|
|
755
|
-
const segments = formatter.formatToParts(dateValue.toDate(timeZone));
|
|
756
|
-
return segments.map((segment) => {
|
|
757
|
-
let isEditable = isSegmentEditable(segment.type);
|
|
758
|
-
if (segment.type === "era")
|
|
759
|
-
isEditable = false;
|
|
760
|
-
let isPlaceholder = isSegmentEditable(segment.type) && !validSegments[segment.type];
|
|
761
|
-
let placeholder = isSegmentEditable(segment.type) ? getPlaceholder({ field: segment.type }) : null;
|
|
762
|
-
return {
|
|
763
|
-
type: segment.type,
|
|
764
|
-
text: isPlaceholder ? placeholder : segment.value,
|
|
765
|
-
...getSegmentLimits(dateValue, segment.type, formatter.resolvedOptions()),
|
|
766
|
-
isPlaceholder: !!isPlaceholder,
|
|
767
|
-
placeholder,
|
|
768
|
-
isEditable: !!isEditable
|
|
769
|
-
};
|
|
770
|
-
});
|
|
688
|
+
return acc;
|
|
689
|
+
}, {});
|
|
771
690
|
}
|
|
772
691
|
// Annotate the CommonJS export names for ESM import in node:
|
|
773
692
|
0 && (module.exports = {
|
|
774
|
-
SEGMENT_PAGE_STEP,
|
|
775
|
-
addSegment,
|
|
776
693
|
alignCenter,
|
|
777
694
|
alignDate,
|
|
778
695
|
alignEnd,
|
|
@@ -780,15 +697,18 @@ function getSegments(date, validSegments, formatter, timeZone) {
|
|
|
780
697
|
alignStartDate,
|
|
781
698
|
constrainStart,
|
|
782
699
|
constrainValue,
|
|
783
|
-
|
|
700
|
+
formatDate,
|
|
784
701
|
formatRange,
|
|
785
702
|
formatSelectedDate,
|
|
786
703
|
formatVisibleRange,
|
|
787
704
|
getAdjustedDateFn,
|
|
788
|
-
|
|
789
|
-
|
|
705
|
+
getDayFormatter,
|
|
706
|
+
getDaysInWeek,
|
|
707
|
+
getDecadeRange,
|
|
790
708
|
getEndDate,
|
|
791
|
-
|
|
709
|
+
getMonthDays,
|
|
710
|
+
getMonthFormatter,
|
|
711
|
+
getMonthNames,
|
|
792
712
|
getNextDay,
|
|
793
713
|
getNextPage,
|
|
794
714
|
getNextRow,
|
|
@@ -800,13 +720,10 @@ function getSegments(date, validSegments, formatter, timeZone) {
|
|
|
800
720
|
getPreviousSection,
|
|
801
721
|
getSectionEnd,
|
|
802
722
|
getSectionStart,
|
|
803
|
-
getSegmentLimits,
|
|
804
|
-
getSegmentPageStep,
|
|
805
|
-
getSegments,
|
|
806
723
|
getTodayDate,
|
|
807
|
-
getTodayPlaceholderDate,
|
|
808
724
|
getUnitDuration,
|
|
809
|
-
|
|
725
|
+
getWeekDays,
|
|
726
|
+
getWeekdayFormats,
|
|
810
727
|
getYearsRange,
|
|
811
728
|
isDateDisabled,
|
|
812
729
|
isDateEqual,
|
|
@@ -815,11 +732,10 @@ function getSegments(date, validSegments, formatter, timeZone) {
|
|
|
815
732
|
isDateUnavailable,
|
|
816
733
|
isNextVisibleRangeInvalid,
|
|
817
734
|
isPreviousVisibleRangeInvalid,
|
|
818
|
-
isSegmentEditable,
|
|
819
735
|
isTodayDate,
|
|
736
|
+
parseDateString,
|
|
820
737
|
setCalendar,
|
|
821
738
|
setDate,
|
|
822
739
|
setMonth,
|
|
823
|
-
setSegment,
|
|
824
740
|
setYear
|
|
825
741
|
});
|