@zag-js/date-utils 0.1.2 → 0.1.3

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 (85) hide show
  1. package/dist/chunk-5HGHDJ3L.mjs +14 -0
  2. package/dist/chunk-AMZ7CJ5F.mjs +18 -0
  3. package/dist/chunk-CAYCTIEJ.mjs +29 -0
  4. package/dist/chunk-G4VVKINZ.mjs +14 -0
  5. package/dist/chunk-KFJ757ZA.mjs +32 -0
  6. package/dist/chunk-KLHRN7WS.mjs +20 -0
  7. package/dist/chunk-KN3YMOSL.mjs +8 -0
  8. package/dist/chunk-LGEGBP3O.mjs +20 -0
  9. package/dist/{chunk-NXMEZINO.mjs → chunk-LQAXQPWP.mjs} +4 -7
  10. package/dist/chunk-ODG5YF5H.mjs +21 -0
  11. package/dist/chunk-SI75FOJ2.mjs +11 -0
  12. package/dist/chunk-UHOBXAHP.mjs +17 -0
  13. package/dist/conversion.d.ts +5 -0
  14. package/dist/conversion.js +41 -0
  15. package/dist/conversion.mjs +6 -0
  16. package/dist/format-selected-date.d.ts +1 -2
  17. package/dist/format-selected-date.js +14 -14
  18. package/dist/format-selected-date.mjs +3 -2
  19. package/dist/format-visible-range.d.ts +1 -2
  20. package/dist/format-visible-range.js +29 -50
  21. package/dist/format-visible-range.mjs +4 -3
  22. package/dist/get-day-formatter.d.ts +5 -0
  23. package/dist/{placeholder.js → get-day-formatter.js} +22 -21
  24. package/dist/get-day-formatter.mjs +7 -0
  25. package/dist/get-decade-range.d.ts +3 -0
  26. package/dist/get-decade-range.js +38 -0
  27. package/dist/get-decade-range.mjs +6 -0
  28. package/dist/get-end-of-week.d.ts +5 -0
  29. package/dist/{segment-constants.js → get-end-of-week.js} +17 -32
  30. package/dist/get-end-of-week.mjs +11 -0
  31. package/dist/get-era-format.d.ts +5 -0
  32. package/dist/get-era-format.js +32 -0
  33. package/dist/get-era-format.mjs +6 -0
  34. package/dist/get-month-days.d.ts +6 -0
  35. package/dist/{get-month-dates.js → get-month-days.js} +26 -27
  36. package/dist/get-month-days.mjs +9 -0
  37. package/dist/get-month-formatter.d.ts +5 -0
  38. package/dist/{get-formatter.js → get-month-formatter.js} +14 -26
  39. package/dist/get-month-formatter.mjs +7 -0
  40. package/dist/get-month-names.d.ts +3 -0
  41. package/dist/get-month-names.js +38 -0
  42. package/dist/get-month-names.mjs +6 -0
  43. package/dist/get-start-of-week.d.ts +5 -0
  44. package/dist/get-start-of-week.js +35 -0
  45. package/dist/get-start-of-week.mjs +6 -0
  46. package/dist/get-week-days.d.ts +10 -0
  47. package/dist/get-week-days.js +62 -0
  48. package/dist/get-week-days.mjs +8 -0
  49. package/dist/get-weekday-formats.d.ts +10 -0
  50. package/dist/get-weekday-formats.js +44 -0
  51. package/dist/get-weekday-formats.mjs +6 -0
  52. package/dist/index.d.ts +9 -8
  53. package/dist/index.js +148 -311
  54. package/dist/index.mjs +36 -41
  55. package/dist/types.d.ts +1 -2
  56. package/package.json +2 -2
  57. package/dist/chunk-55BYHK5B.mjs +0 -31
  58. package/dist/chunk-DZM5JUL2.mjs +0 -22
  59. package/dist/chunk-ETRHBIGD.mjs +0 -66
  60. package/dist/chunk-GLQDJRSE.mjs +0 -31
  61. package/dist/chunk-JZVHAOWX.mjs +0 -35
  62. package/dist/chunk-MGRIF22W.mjs +0 -18
  63. package/dist/chunk-SQCHVCXH.mjs +0 -42
  64. package/dist/chunk-TSOWYV6W.mjs +0 -34
  65. package/dist/chunk-U6WRBS5P.mjs +0 -77
  66. package/dist/get-formatter.d.ts +0 -8
  67. package/dist/get-formatter.mjs +0 -8
  68. package/dist/get-month-dates.d.ts +0 -5
  69. package/dist/get-month-dates.mjs +0 -7
  70. package/dist/get-week-dates.d.ts +0 -7
  71. package/dist/get-week-dates.js +0 -60
  72. package/dist/get-week-dates.mjs +0 -8
  73. package/dist/placeholder.d.ts +0 -7
  74. package/dist/placeholder.mjs +0 -8
  75. package/dist/segment-constants.d.ts +0 -27
  76. package/dist/segment-constants.mjs +0 -10
  77. package/dist/segment-limit.d.ts +0 -10
  78. package/dist/segment-limit.js +0 -101
  79. package/dist/segment-limit.mjs +0 -6
  80. package/dist/segment-mutation.d.ts +0 -7
  81. package/dist/segment-mutation.js +0 -91
  82. package/dist/segment-mutation.mjs +0 -8
  83. package/dist/segment-parts.d.ts +0 -27
  84. package/dist/segment-parts.js +0 -159
  85. 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,17 @@ __export(src_exports, {
29
27
  alignStartDate: () => alignStartDate,
30
28
  constrainStart: () => constrainStart,
31
29
  constrainValue: () => constrainValue,
32
- createPlaceholderDate: () => createPlaceholderDate,
33
30
  formatRange: () => formatRange,
34
31
  formatSelectedDate: () => formatSelectedDate,
35
32
  formatVisibleRange: () => formatVisibleRange,
36
33
  getAdjustedDateFn: () => getAdjustedDateFn,
37
- getAllSegments: () => getAllSegments,
38
- getDatesInWeek: () => getDatesInWeek,
34
+ getDayFormatter: () => getDayFormatter,
35
+ getDaysInWeek: () => getDaysInWeek,
36
+ getDecadeRange: () => getDecadeRange,
39
37
  getEndDate: () => getEndDate,
40
- getMonthDates: () => getMonthDates,
38
+ getMonthDays: () => getMonthDays,
39
+ getMonthFormatter: () => getMonthFormatter,
40
+ getMonthNames: () => getMonthNames,
41
41
  getNextDay: () => getNextDay,
42
42
  getNextPage: () => getNextPage,
43
43
  getNextRow: () => getNextRow,
@@ -49,13 +49,10 @@ __export(src_exports, {
49
49
  getPreviousSection: () => getPreviousSection,
50
50
  getSectionEnd: () => getSectionEnd,
51
51
  getSectionStart: () => getSectionStart,
52
- getSegmentLimits: () => getSegmentLimits,
53
- getSegmentPageStep: () => getSegmentPageStep,
54
- getSegments: () => getSegments,
55
52
  getTodayDate: () => getTodayDate,
56
- getTodayPlaceholderDate: () => getTodayPlaceholderDate,
57
53
  getUnitDuration: () => getUnitDuration,
58
- getWeekDates: () => getWeekDates,
54
+ getWeekDays: () => getWeekDays,
55
+ getWeekdayFormats: () => getWeekdayFormats,
59
56
  getYearsRange: () => getYearsRange,
60
57
  isDateDisabled: () => isDateDisabled,
61
58
  isDateEqual: () => isDateEqual,
@@ -64,12 +61,11 @@ __export(src_exports, {
64
61
  isDateUnavailable: () => isDateUnavailable,
65
62
  isNextVisibleRangeInvalid: () => isNextVisibleRangeInvalid,
66
63
  isPreviousVisibleRangeInvalid: () => isPreviousVisibleRangeInvalid,
67
- isSegmentEditable: () => isSegmentEditable,
68
64
  isTodayDate: () => isTodayDate,
65
+ parseDateString: () => parseDateString,
69
66
  setCalendar: () => setCalendar,
70
67
  setDate: () => setDate,
71
68
  setMonth: () => setMonth,
72
- setSegment: () => setSegment,
73
69
  setYear: () => setYear
74
70
  });
75
71
  module.exports = __toCommonJS(src_exports);
@@ -188,6 +184,20 @@ function isNextVisibleRangeInvalid(endDate, minValue, maxValue) {
188
184
  return (0, import_date2.isSameDay)(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue);
189
185
  }
190
186
 
187
+ // src/conversion.ts
188
+ var import_date3 = require("@internationalized/date");
189
+ function parseDateString(value) {
190
+ try {
191
+ const date = new Date(value);
192
+ date.setMinutes(1e3);
193
+ if (isNaN(date.getTime()))
194
+ return;
195
+ const [dateWithoutTime] = date.toISOString().split("T");
196
+ return (0, import_date3.parseDate)(dateWithoutTime);
197
+ } catch {
198
+ }
199
+ }
200
+
191
201
  // src/duration.ts
192
202
  function getUnitDuration(duration) {
193
203
  let d = { ...duration };
@@ -231,114 +241,153 @@ function formatRange(startDate, endDate, formatter, toString, timeZone) {
231
241
  }
232
242
 
233
243
  // src/format-selected-date.ts
234
- var import_date3 = require("@internationalized/date");
244
+ var import_date5 = require("@internationalized/date");
235
245
 
236
- // src/get-formatter.ts
246
+ // src/get-day-formatter.ts
247
+ var import_date4 = require("@internationalized/date");
248
+
249
+ // src/get-era-format.ts
237
250
  function getEraFormat(date) {
238
251
  return date?.calendar.identifier === "gregory" && date.era === "BC" ? "short" : void 0;
239
252
  }
240
- function getDateFormatter(startDate, endDate, getDateFormatter2, timeZone) {
241
- let start = startDate;
242
- let end = endDate ?? startDate;
243
- let era = getEraFormat(start) || getEraFormat(end);
244
- return getDateFormatter2({
253
+
254
+ // src/get-day-formatter.ts
255
+ function getDayFormatter(locale, timeZone) {
256
+ const date = (0, import_date4.toCalendarDate)((0, import_date4.today)(timeZone));
257
+ return new import_date4.DateFormatter(locale, {
245
258
  weekday: "long",
246
259
  month: "long",
247
260
  year: "numeric",
248
261
  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,
262
+ era: getEraFormat(date),
262
263
  timeZone
263
264
  });
264
265
  }
265
266
 
266
267
  // src/format-selected-date.ts
267
- function formatSelectedDate(startDate, endDate, getFormatter, isSelectingRange, timeZone) {
268
+ function formatSelectedDate(startDate, endDate, locale, timeZone) {
268
269
  let start = startDate;
269
270
  let end = endDate ?? startDate;
270
- let formatter = getDateFormatter(start, end, getFormatter, timeZone);
271
- if (isSelectingRange || start == null || end == null) {
272
- return "";
273
- }
274
- if ((0, import_date3.isSameDay)(start, end)) {
271
+ let formatter = getDayFormatter(locale, timeZone);
272
+ if ((0, import_date5.isSameDay)(start, end)) {
275
273
  return formatter.format(start.toDate(timeZone));
276
274
  }
277
275
  return formatRange(start, end, formatter, (start2, end2) => `${start2} \u2013 ${end2}`, timeZone);
278
276
  }
279
277
 
280
278
  // src/format-visible-range.ts
281
- var import_date4 = require("@internationalized/date");
282
- function formatVisibleRange(startDate, endDate, getFormatter, isAria, timeZone) {
283
- if (!startDate)
284
- return "";
285
- let start = startDate;
286
- let end = endDate ?? startDate;
287
- let monthFormatter = getMonthFormatter(start, end, getFormatter, timeZone);
288
- let dateFormatter = getDateFormatter(start, end, getFormatter, timeZone);
289
- if (!(0, import_date4.isSameDay)(start, (0, import_date4.startOfMonth)(start))) {
290
- return isAria ? formatRange(start, end, dateFormatter, (start2, end2) => `${start2} \u2013 ${end2}`, timeZone) : dateFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));
291
- }
292
- if ((0, import_date4.isSameDay)(end, (0, import_date4.endOfMonth)(start))) {
279
+ var import_date7 = require("@internationalized/date");
280
+
281
+ // src/get-month-formatter.ts
282
+ var import_date6 = require("@internationalized/date");
283
+ function getMonthFormatter(locale, timeZone) {
284
+ const date = (0, import_date6.toCalendarDate)((0, import_date6.today)(timeZone));
285
+ return new import_date6.DateFormatter(locale, {
286
+ month: "long",
287
+ year: "numeric",
288
+ era: getEraFormat(date),
289
+ calendar: date?.calendar.identifier,
290
+ timeZone
291
+ });
292
+ }
293
+
294
+ // src/format-visible-range.ts
295
+ function formatVisibleRange(startDate, endDate, locale, timeZone) {
296
+ const start = startDate;
297
+ const end = endDate ?? startDate;
298
+ const dayFormatter = getDayFormatter(locale, timeZone);
299
+ if (!(0, import_date7.isSameDay)(start, (0, import_date7.startOfMonth)(start))) {
300
+ return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));
301
+ }
302
+ const monthFormatter = getMonthFormatter(locale, timeZone);
303
+ if ((0, import_date7.isSameDay)(end, (0, import_date7.endOfMonth)(start))) {
293
304
  return monthFormatter.format(start.toDate(timeZone));
294
305
  }
295
- if ((0, import_date4.isSameDay)(end, (0, import_date4.endOfMonth)(end))) {
296
- return isAria ? formatRange(start, end, monthFormatter, (start2, end2) => `${start2} \u2013 ${end2}`, timeZone) : monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));
306
+ if ((0, import_date7.isSameDay)(end, (0, import_date7.endOfMonth)(end))) {
307
+ return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));
297
308
  }
309
+ return "";
298
310
  }
299
311
 
300
- // src/get-month-dates.ts
301
- var import_date6 = require("@internationalized/date");
302
-
303
- // src/get-week-dates.ts
304
- var import_date5 = require("@internationalized/date");
305
- function getDatesInWeek(weekIndex, fromDate, locale) {
306
- let date = fromDate.add({ weeks: weekIndex });
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);
312
+ // src/get-decade-range.ts
313
+ function getDecadeRange(year) {
314
+ const computedYear = year - year % 10 - 1;
315
+ const years = [];
316
+ for (let i = 0; i < 12; i += 1) {
317
+ const value = computedYear + i;
318
+ years.push(value);
312
319
  }
320
+ return years;
321
+ }
322
+
323
+ // src/get-month-days.ts
324
+ var import_date9 = require("@internationalized/date");
325
+
326
+ // src/get-start-of-week.ts
327
+ var import_date8 = require("@internationalized/date");
328
+ function getStartOfWeek(date, locale, firstDayOfWeek = 0) {
329
+ const day = (0, import_date8.getDayOfWeek)(date, locale);
330
+ const diff = (day - firstDayOfWeek + 7) % 7;
331
+ return date.subtract({ days: diff });
332
+ }
333
+
334
+ // src/get-month-days.ts
335
+ function getDaysInWeek(weekIndex, from, locale, firstDayOfWeek) {
336
+ const weekDate = from.add({ weeks: weekIndex });
337
+ const dates = [];
338
+ let date = getStartOfWeek(weekDate, locale, firstDayOfWeek);
313
339
  while (dates.length < 7) {
314
340
  dates.push(date);
315
341
  let nextDate = date.add({ days: 1 });
316
- if ((0, import_date5.isSameDay)(date, nextDate)) {
342
+ if ((0, import_date9.isSameDay)(date, nextDate)) {
317
343
  break;
318
344
  }
319
345
  date = nextDate;
320
346
  }
321
- while (dates.length < 7) {
322
- dates.push(null);
323
- }
324
347
  return dates;
325
348
  }
326
- function getWeekDates(fromDate, timeZone, locale) {
327
- let weekStart = (0, import_date5.startOfWeek)(fromDate, locale);
328
- let weekArr = [...new Array(7).keys()];
329
- return weekArr.map((index) => {
330
- return weekStart.add({ days: index }).toDate(timeZone);
349
+ function getMonthDays(from, locale, numOfWeeks, firstDayOfWeek) {
350
+ const monthWeeks = (0, import_date9.getWeeksInMonth)(from, locale);
351
+ const weeks = [...new Array(numOfWeeks ?? monthWeeks).keys()];
352
+ return weeks.map((week) => {
353
+ return getDaysInWeek(week, from, locale, firstDayOfWeek);
331
354
  });
332
355
  }
333
356
 
334
- // src/get-month-dates.ts
335
- function getMonthDates(startDate, duration, locale) {
336
- let weeksInMonth = (0, import_date6.getWeeksInMonth)(startDate, locale);
337
- let numOfWeeks = duration.weeks ?? weeksInMonth;
338
- let weekArr = [...new Array(numOfWeeks).keys()];
339
- return weekArr.map((index) => {
340
- return getDatesInWeek(index, startDate, locale);
341
- });
357
+ // src/get-month-names.ts
358
+ function getMonthNames(locale, format = "long") {
359
+ const date = new Date(2021, 0, 1);
360
+ const monthNames = [];
361
+ for (let i = 0; i < 12; i++) {
362
+ monthNames.push(date.toLocaleString(locale, { month: format }));
363
+ date.setMonth(date.getMonth() + 1);
364
+ }
365
+ return monthNames;
366
+ }
367
+
368
+ // src/get-weekday-formats.ts
369
+ var import_date10 = require("@internationalized/date");
370
+ function getWeekdayFormats(locale, timeZone) {
371
+ const longFormat = new import_date10.DateFormatter(locale, { weekday: "long", timeZone });
372
+ const shortFormat = new import_date10.DateFormatter(locale, { weekday: "short", timeZone });
373
+ const narrowFormat = new import_date10.DateFormatter(locale, { weekday: "narrow", timeZone });
374
+ return (value) => {
375
+ const date = value instanceof Date ? value : value.toDate(timeZone);
376
+ return {
377
+ value,
378
+ short: shortFormat.format(date),
379
+ long: longFormat.format(date),
380
+ narrow: narrowFormat.format(date)
381
+ };
382
+ };
383
+ }
384
+
385
+ // src/get-week-days.ts
386
+ function getWeekDays(date, startOfWeekProp, timeZone, locale) {
387
+ const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp);
388
+ const weeks = [...new Array(7).keys()];
389
+ const format = getWeekdayFormats(locale, timeZone);
390
+ return weeks.map((index) => format(firstDayOfWeek.add({ days: index })));
342
391
  }
343
392
 
344
393
  // src/get-year-range.ts
@@ -351,9 +400,9 @@ function getYearsRange(range) {
351
400
  }
352
401
 
353
402
  // src/mutation.ts
354
- var import_date7 = require("@internationalized/date");
403
+ var import_date11 = require("@internationalized/date");
355
404
  function getTodayDate(timezone) {
356
- return (0, import_date7.today)(timezone);
405
+ return (0, import_date11.today)(timezone);
357
406
  }
358
407
  function getNextDay(date) {
359
408
  return date.add({ days: 1 });
@@ -368,7 +417,7 @@ function setYear(date, year) {
368
417
  return date.set({ year });
369
418
  }
370
419
  function setCalendar(date, calendar) {
371
- return (0, import_date7.toCalendar)((0, import_date7.toCalendarDate)(date), calendar);
420
+ return (0, import_date11.toCalendar)((0, import_date11.toCalendarDate)(date), calendar);
372
421
  }
373
422
  function setDate(date, startDate, isDateUnavailable2, minValue, maxValue) {
374
423
  let result;
@@ -389,7 +438,7 @@ function getPreviousAvailableDate(date, minValue, isDateUnavailable2) {
389
438
  }
390
439
 
391
440
  // src/pagination.ts
392
- var import_date8 = require("@internationalized/date");
441
+ var import_date12 = require("@internationalized/date");
393
442
  function getAdjustedDateFn(visibleDuration, locale, minValue, maxValue) {
394
443
  return function getDate(options) {
395
444
  const { startDate, focusedDate } = options;
@@ -480,13 +529,13 @@ function getSectionStart(focusedDate, startDate, visibleDuration, locale, minVal
480
529
  }
481
530
  if (visibleDuration.weeks) {
482
531
  return adjust({
483
- focusedDate: (0, import_date8.startOfWeek)(focusedDate, locale),
532
+ focusedDate: (0, import_date12.startOfWeek)(focusedDate, locale),
484
533
  startDate
485
534
  });
486
535
  }
487
536
  if (visibleDuration.months || visibleDuration.years) {
488
537
  return adjust({
489
- focusedDate: (0, import_date8.startOfMonth)(focusedDate),
538
+ focusedDate: (0, import_date12.startOfMonth)(focusedDate),
490
539
  startDate
491
540
  });
492
541
  }
@@ -502,13 +551,13 @@ function getSectionEnd(focusedDate, startDate, visibleDuration, locale, minValue
502
551
  }
503
552
  if (visibleDuration.weeks) {
504
553
  return adjust({
505
- focusedDate: (0, import_date8.endOfWeek)(focusedDate, locale),
554
+ focusedDate: (0, import_date12.endOfWeek)(focusedDate, locale),
506
555
  startDate
507
556
  });
508
557
  }
509
558
  if (visibleDuration.months || visibleDuration.years) {
510
559
  return adjust({
511
- focusedDate: (0, import_date8.endOfMonth)(focusedDate),
560
+ focusedDate: (0, import_date12.endOfMonth)(focusedDate),
512
561
  startDate
513
562
  });
514
563
  }
@@ -561,218 +610,8 @@ function getPreviousSection(focusedDate, startDate, larger, visibleDuration, loc
561
610
  });
562
611
  }
563
612
  }
564
-
565
- // src/placeholder.ts
566
- var import_date9 = require("@internationalized/date");
567
- function getTodayPlaceholderDate(timeZone) {
568
- return (0, import_date9.now)(timeZone).set({
569
- hour: 0,
570
- minute: 0,
571
- second: 0,
572
- millisecond: 0
573
- });
574
- }
575
- function createPlaceholderDate(granularity, timeZone) {
576
- let date = getTodayPlaceholderDate(timeZone);
577
- if (granularity === "year" || granularity === "month" || granularity === "day") {
578
- return (0, import_date9.toCalendarDate)(date);
579
- }
580
- return date;
581
- }
582
-
583
- // src/segment-constants.ts
584
- var EDITABLE_SEGMENTS = {
585
- year: true,
586
- month: true,
587
- day: true,
588
- hour: true,
589
- minute: true,
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
- });
706
- }
707
- }
708
- return date;
709
- }
710
- function setSegment(date, part, value, options) {
711
- switch (part) {
712
- case "day":
713
- case "month":
714
- case "year":
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 });
740
- }
741
- }
742
- return date;
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
- });
771
- }
772
613
  // Annotate the CommonJS export names for ESM import in node:
773
614
  0 && (module.exports = {
774
- SEGMENT_PAGE_STEP,
775
- addSegment,
776
615
  alignCenter,
777
616
  alignDate,
778
617
  alignEnd,
@@ -780,15 +619,17 @@ function getSegments(date, validSegments, formatter, timeZone) {
780
619
  alignStartDate,
781
620
  constrainStart,
782
621
  constrainValue,
783
- createPlaceholderDate,
784
622
  formatRange,
785
623
  formatSelectedDate,
786
624
  formatVisibleRange,
787
625
  getAdjustedDateFn,
788
- getAllSegments,
789
- getDatesInWeek,
626
+ getDayFormatter,
627
+ getDaysInWeek,
628
+ getDecadeRange,
790
629
  getEndDate,
791
- getMonthDates,
630
+ getMonthDays,
631
+ getMonthFormatter,
632
+ getMonthNames,
792
633
  getNextDay,
793
634
  getNextPage,
794
635
  getNextRow,
@@ -800,13 +641,10 @@ function getSegments(date, validSegments, formatter, timeZone) {
800
641
  getPreviousSection,
801
642
  getSectionEnd,
802
643
  getSectionStart,
803
- getSegmentLimits,
804
- getSegmentPageStep,
805
- getSegments,
806
644
  getTodayDate,
807
- getTodayPlaceholderDate,
808
645
  getUnitDuration,
809
- getWeekDates,
646
+ getWeekDays,
647
+ getWeekdayFormats,
810
648
  getYearsRange,
811
649
  isDateDisabled,
812
650
  isDateEqual,
@@ -815,11 +653,10 @@ function getSegments(date, validSegments, formatter, timeZone) {
815
653
  isDateUnavailable,
816
654
  isNextVisibleRangeInvalid,
817
655
  isPreviousVisibleRangeInvalid,
818
- isSegmentEditable,
819
656
  isTodayDate,
657
+ parseDateString,
820
658
  setCalendar,
821
659
  setDate,
822
660
  setMonth,
823
- setSegment,
824
661
  setYear
825
662
  });