@zag-js/date-utils 0.0.0-dev-20230107115230 → 0.0.0-dev-20230107162034

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 (72) hide show
  1. package/dist/align.d.ts +4 -4
  2. package/dist/align.js +20 -24
  3. package/dist/align.mjs +2 -2
  4. package/dist/assertion.d.ts +8 -8
  5. package/dist/assertion.js +15 -16
  6. package/dist/assertion.mjs +1 -1
  7. package/dist/chunk-6EJZROXM.mjs +45 -0
  8. package/dist/{chunk-TCPXGBJP.mjs → chunk-BBE325GQ.mjs} +9 -8
  9. package/dist/chunk-BUT5IUNZ.mjs +32 -0
  10. package/dist/{chunk-EXWX3KZT.mjs → chunk-CAV5WKCZ.mjs} +4 -2
  11. package/dist/chunk-GKU5M6QU.mjs +25 -0
  12. package/dist/{chunk-XHAL6X5Z.mjs → chunk-HKHGJ6WS.mjs} +3 -3
  13. package/dist/{chunk-ECAENYV6.mjs → chunk-HUBKWHIN.mjs} +1 -1
  14. package/dist/{chunk-M4F23P2U.mjs → chunk-JZVHAOWX.mjs} +3 -3
  15. package/dist/{chunk-2DZ3KIVJ.mjs → chunk-L3YHK2WH.mjs} +1 -1
  16. package/dist/chunk-MGPXEJO4.mjs +71 -0
  17. package/dist/chunk-MY373KF2.mjs +198 -0
  18. package/dist/chunk-URPTPFL3.mjs +31 -0
  19. package/dist/chunk-ZZPZ2BFS.mjs +52 -0
  20. package/dist/constrain.d.ts +6 -7
  21. package/dist/constrain.js +20 -25
  22. package/dist/constrain.mjs +1 -1
  23. package/dist/format-range.d.ts +2 -3
  24. package/dist/format-range.js +3 -3
  25. package/dist/format-range.mjs +1 -1
  26. package/dist/format-selected-date.d.ts +3 -3
  27. package/dist/format-selected-date.js +13 -13
  28. package/dist/format-selected-date.mjs +3 -4
  29. package/dist/format-visible-range.d.ts +3 -3
  30. package/dist/format-visible-range.js +18 -17
  31. package/dist/format-visible-range.mjs +4 -26
  32. package/dist/get-formatter.d.ts +4 -3
  33. package/dist/get-formatter.js +6 -8
  34. package/dist/get-formatter.mjs +1 -2
  35. package/dist/get-month-dates.mjs +2 -2
  36. package/dist/get-week-dates.d.ts +1 -1
  37. package/dist/get-week-dates.js +2 -2
  38. package/dist/get-week-dates.mjs +1 -1
  39. package/dist/index.d.ts +3 -2
  40. package/dist/index.js +284 -181
  41. package/dist/index.mjs +22 -19
  42. package/dist/mutation.d.ts +5 -5
  43. package/dist/mutation.js +16 -43
  44. package/dist/mutation.mjs +4 -5
  45. package/dist/pagination.d.ts +29 -10
  46. package/dist/pagination.js +183 -89
  47. package/dist/pagination.mjs +3 -2
  48. package/dist/placeholder.d.ts +1 -1
  49. package/dist/segment-constants.d.ts +1 -1
  50. package/dist/segment-limit.d.ts +2 -2
  51. package/dist/segment-limit.js +1 -1
  52. package/dist/segment-limit.mjs +1 -1
  53. package/dist/segment-mutation.d.ts +3 -4
  54. package/dist/segment-mutation.js +4 -2
  55. package/dist/segment-mutation.mjs +1 -1
  56. package/dist/segment-parts.d.ts +2 -2
  57. package/dist/segment-parts.js +4 -4
  58. package/dist/segment-parts.mjs +6 -6
  59. package/dist/types-cbf8b45a.d.ts +35 -0
  60. package/dist/types.d.ts +1 -1
  61. package/package.json +1 -1
  62. package/dist/chunk-6XKXGQP6.mjs +0 -32
  63. package/dist/chunk-7JERMWT3.mjs +0 -46
  64. package/dist/chunk-C4U2N3JC.mjs +0 -65
  65. package/dist/chunk-DI2YG6VG.mjs +0 -24
  66. package/dist/chunk-FJMTHABG.mjs +0 -8
  67. package/dist/chunk-HP2COJGP.mjs +0 -76
  68. package/dist/chunk-VWVBJ5CB.mjs +0 -110
  69. package/dist/get-era-format.d.ts +0 -5
  70. package/dist/get-era-format.js +0 -32
  71. package/dist/get-era-format.mjs +0 -6
  72. package/dist/types-9f60d2f1.d.ts +0 -61
package/dist/align.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { CalendarDate } from '@internationalized/date';
2
- import { D as DateContext, a as DateAlignment } from './types-9f60d2f1.js';
1
+ import { CalendarDate, DateDuration, DateValue } from '@internationalized/date';
2
+ import { D as DateAlignment } from './types-cbf8b45a.js';
3
3
 
4
- declare function alignDate(ctx: DateContext, date: CalendarDate, alignment: DateAlignment): CalendarDate;
5
- declare function alignStartDate(ctx: DateContext, focusedDate: CalendarDate, startDate: CalendarDate, endDate: CalendarDate): CalendarDate;
4
+ declare function alignDate(date: CalendarDate, alignment: DateAlignment, duration: DateDuration, locale: string, min?: DateValue | undefined, max?: DateValue | undefined): CalendarDate;
5
+ declare function alignStartDate(date: CalendarDate, startDate: CalendarDate, endDate: CalendarDate, duration: DateDuration, locale: string, min?: DateValue | undefined, max?: DateValue | undefined): CalendarDate;
6
6
 
7
7
  export { alignDate, alignStartDate };
package/dist/align.js CHANGED
@@ -27,8 +27,7 @@ module.exports = __toCommonJS(align_exports);
27
27
 
28
28
  // src/constrain.ts
29
29
  var import_date = require("@internationalized/date");
30
- function alignCenter(ctx, date) {
31
- const { duration } = ctx;
30
+ function alignCenter(date, duration, locale, min, max) {
32
31
  let halfDuration = {};
33
32
  for (let key in duration) {
34
33
  halfDuration[key] = Math.floor(duration[key] / 2);
@@ -36,11 +35,10 @@ function alignCenter(ctx, date) {
36
35
  halfDuration[key]--;
37
36
  }
38
37
  }
39
- let aligned = alignStart(ctx, date).subtract(halfDuration);
40
- return constrainStart(ctx, date, aligned);
38
+ let aligned = alignStart(date, duration, locale).subtract(halfDuration);
39
+ return constrainStart(date, aligned, duration, locale, min, max);
41
40
  }
42
- function alignStart(ctx, date) {
43
- let { locale, duration } = ctx;
41
+ function alignStart(date, duration, locale, min, max) {
44
42
  let aligned = date;
45
43
  if (duration.years) {
46
44
  aligned = (0, import_date.startOfYear)(date);
@@ -49,10 +47,9 @@ function alignStart(ctx, date) {
49
47
  } else if (duration.weeks) {
50
48
  aligned = (0, import_date.startOfWeek)(date, locale);
51
49
  }
52
- return constrainStart(ctx, date, aligned);
50
+ return constrainStart(date, aligned, duration, locale, min, max);
53
51
  }
54
- function alignEnd(ctx, date) {
55
- const { duration } = ctx;
52
+ function alignEnd(date, duration, locale, min, max) {
56
53
  let d = { ...duration };
57
54
  if (d.days) {
58
55
  d.days--;
@@ -63,38 +60,37 @@ function alignEnd(ctx, date) {
63
60
  } else if (d.years) {
64
61
  d.years--;
65
62
  }
66
- let aligned = alignStart(ctx, date).subtract(d);
67
- return constrainStart(ctx, date, aligned);
63
+ let aligned = alignStart(date, duration, locale).subtract(d);
64
+ return constrainStart(date, aligned, duration, locale, min, max);
68
65
  }
69
- function constrainStart(ctx, date, aligned) {
70
- let { min, max } = ctx;
66
+ function constrainStart(date, aligned, duration, locale, min, max) {
71
67
  if (min && date.compare(min) >= 0) {
72
- aligned = (0, import_date.maxDate)(aligned, alignStart(ctx, (0, import_date.toCalendarDate)(min)));
68
+ aligned = (0, import_date.maxDate)(aligned, alignStart((0, import_date.toCalendarDate)(min), duration, locale));
73
69
  }
74
70
  if (max && date.compare(max) <= 0) {
75
- aligned = (0, import_date.minDate)(aligned, alignEnd(ctx, (0, import_date.toCalendarDate)(max)));
71
+ aligned = (0, import_date.minDate)(aligned, alignEnd((0, import_date.toCalendarDate)(max), duration, locale));
76
72
  }
77
73
  return aligned;
78
74
  }
79
75
 
80
76
  // src/align.ts
81
- function alignDate(ctx, date, alignment) {
77
+ function alignDate(date, alignment, duration, locale, min, max) {
82
78
  switch (alignment) {
83
79
  case "start":
84
- return alignStart(ctx, date);
80
+ return alignStart(date, duration, locale, min, max);
85
81
  case "end":
86
- return alignEnd(ctx, date);
82
+ return alignEnd(date, duration, locale, min, max);
87
83
  case "center":
88
84
  default:
89
- return alignCenter(ctx, date);
85
+ return alignCenter(date, duration, locale, min, max);
90
86
  }
91
87
  }
92
- function alignStartDate(ctx, focusedDate, startDate, endDate) {
93
- if (focusedDate.compare(startDate) < 0) {
94
- return alignEnd(ctx, focusedDate);
88
+ function alignStartDate(date, startDate, endDate, duration, locale, min, max) {
89
+ if (date.compare(startDate) < 0) {
90
+ return alignEnd(date, duration, locale, min, max);
95
91
  }
96
- if (focusedDate.compare(endDate) > 0) {
97
- return alignStart(ctx, focusedDate);
92
+ if (date.compare(endDate) > 0) {
93
+ return alignStart(date, duration, locale, min, max);
98
94
  }
99
95
  return startDate;
100
96
  }
package/dist/align.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  alignDate,
3
3
  alignStartDate
4
- } from "./chunk-6XKXGQP6.mjs";
5
- import "./chunk-HP2COJGP.mjs";
4
+ } from "./chunk-BUT5IUNZ.mjs";
5
+ import "./chunk-MGPXEJO4.mjs";
6
6
  export {
7
7
  alignDate,
8
8
  alignStartDate
@@ -1,13 +1,13 @@
1
1
  import { CalendarDate, DateValue } from '@internationalized/date';
2
- import { D as DateContext } from './types-9f60d2f1.js';
2
+ import { a as DateAvailableFn } from './types-cbf8b45a.js';
3
3
 
4
- declare function isTodayDate(date: CalendarDate, timezone: string): boolean;
5
- declare function isDateEqual(dateA: CalendarDate, dateB: CalendarDate | null | undefined): boolean;
6
- declare function isDateInvalid(ctx: DateContext, date: DateValue): boolean;
7
- declare function isDateDisabled(ctx: DateContext, date: DateValue, startDate: DateValue, endDate: DateValue): boolean;
8
- declare function isDateUnavailable(ctx: DateContext, date: DateValue | null): boolean;
4
+ declare function isTodayDate(date: CalendarDate, timeZone: string): boolean;
5
+ declare function isDateEqual(dateA: CalendarDate, dateB: CalendarDate | null): boolean;
6
+ declare function isDateInvalid(date: DateValue, minValue: DateValue | null, maxValue: DateValue | null): boolean;
7
+ declare function isDateDisabled(date: DateValue, startDate: DateValue, endDate: DateValue, minValue: DateValue | null, maxValue: DateValue | null): boolean;
8
+ declare function isDateUnavailable(date: DateValue | null, isUnavailable: DateAvailableFn | null, minValue: DateValue | null, maxValue: DateValue | null): boolean;
9
9
  declare function isDateOutsideVisibleRange(date: CalendarDate, startDate: CalendarDate, endDate: CalendarDate): boolean;
10
- declare function isPreviousVisibleRangeInvalid(ctx: DateContext, startDate: CalendarDate): boolean;
11
- declare function isNextVisibleRangeInvalid(ctx: DateContext, endDate: CalendarDate): boolean;
10
+ declare function isPreviousVisibleRangeInvalid(startDate: CalendarDate, minValue: DateValue | null, maxValue: DateValue | null): boolean;
11
+ declare function isNextVisibleRangeInvalid(endDate: CalendarDate, minValue: DateValue | null, maxValue: DateValue | null): boolean;
12
12
 
13
13
  export { isDateDisabled, isDateEqual, isDateInvalid, isDateOutsideVisibleRange, isDateUnavailable, isNextVisibleRangeInvalid, isPreviousVisibleRangeInvalid, isTodayDate };
package/dist/assertion.js CHANGED
@@ -31,38 +31,37 @@ __export(assertion_exports, {
31
31
  });
32
32
  module.exports = __toCommonJS(assertion_exports);
33
33
  var import_date = require("@internationalized/date");
34
- function isTodayDate(date, timezone) {
35
- return (0, import_date.isToday)(date, timezone);
34
+ function isTodayDate(date, timeZone) {
35
+ return (0, import_date.isToday)(date, timeZone);
36
36
  }
37
37
  function isDateEqual(dateA, dateB) {
38
38
  return dateB != null && (0, import_date.isSameDay)(dateA, dateB);
39
39
  }
40
- function isDateInvalid(ctx, date) {
41
- return ctx.min != null && date.compare(ctx.min) < 0 || ctx.max != null && date.compare(ctx.max) > 0;
40
+ function isDateInvalid(date, minValue, maxValue) {
41
+ return minValue != null && date.compare(minValue) < 0 || maxValue != null && date.compare(maxValue) > 0;
42
42
  }
43
- function isDateDisabled(ctx, date, startDate, endDate) {
44
- return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(ctx, date);
43
+ function isDateDisabled(date, startDate, endDate, minValue, maxValue) {
44
+ return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue);
45
45
  }
46
- function isDateUnavailable(ctx, date) {
47
- var _a;
46
+ function isDateUnavailable(date, isUnavailable, minValue, maxValue) {
48
47
  if (!date) {
49
48
  return false;
50
49
  }
51
- if ((_a = ctx.isUnavailable) == null ? void 0 : _a.call(ctx, date)) {
50
+ if (isUnavailable == null ? void 0 : isUnavailable(date)) {
52
51
  return true;
53
52
  }
54
- return isDateInvalid(ctx, date);
53
+ return isDateInvalid(date, minValue, maxValue);
55
54
  }
56
55
  function isDateOutsideVisibleRange(date, startDate, endDate) {
57
56
  return date.compare(startDate) < 0 || date.compare(endDate) > 0;
58
57
  }
59
- function isPreviousVisibleRangeInvalid(ctx, startDate) {
60
- let prev = startDate.subtract({ days: 1 });
61
- return (0, import_date.isSameDay)(prev, startDate) || isDateInvalid(ctx, prev);
58
+ function isPreviousVisibleRangeInvalid(startDate, minValue, maxValue) {
59
+ const prevDate = startDate.subtract({ days: 1 });
60
+ return (0, import_date.isSameDay)(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue);
62
61
  }
63
- function isNextVisibleRangeInvalid(ctx, endDate) {
64
- let next = endDate.add({ days: 1 });
65
- return (0, import_date.isSameDay)(next, endDate) || isDateInvalid(ctx, next);
62
+ function isNextVisibleRangeInvalid(endDate, minValue, maxValue) {
63
+ const nextDate = endDate.add({ days: 1 });
64
+ return (0, import_date.isSameDay)(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue);
66
65
  }
67
66
  // Annotate the CommonJS export names for ESM import in node:
68
67
  0 && (module.exports = {
@@ -7,7 +7,7 @@ import {
7
7
  isNextVisibleRangeInvalid,
8
8
  isPreviousVisibleRangeInvalid,
9
9
  isTodayDate
10
- } from "./chunk-7JERMWT3.mjs";
10
+ } from "./chunk-6EJZROXM.mjs";
11
11
  export {
12
12
  isDateDisabled,
13
13
  isDateEqual,
@@ -0,0 +1,45 @@
1
+ // src/assertion.ts
2
+ import { isSameDay, isToday } from "@internationalized/date";
3
+ function isTodayDate(date, timeZone) {
4
+ return isToday(date, timeZone);
5
+ }
6
+ function isDateEqual(dateA, dateB) {
7
+ return dateB != null && isSameDay(dateA, dateB);
8
+ }
9
+ function isDateInvalid(date, minValue, maxValue) {
10
+ return minValue != null && date.compare(minValue) < 0 || maxValue != null && date.compare(maxValue) > 0;
11
+ }
12
+ function isDateDisabled(date, startDate, endDate, minValue, maxValue) {
13
+ return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue);
14
+ }
15
+ function isDateUnavailable(date, isUnavailable, minValue, maxValue) {
16
+ if (!date) {
17
+ return false;
18
+ }
19
+ if (isUnavailable == null ? void 0 : isUnavailable(date)) {
20
+ return true;
21
+ }
22
+ return isDateInvalid(date, minValue, maxValue);
23
+ }
24
+ function isDateOutsideVisibleRange(date, startDate, endDate) {
25
+ return date.compare(startDate) < 0 || date.compare(endDate) > 0;
26
+ }
27
+ function isPreviousVisibleRangeInvalid(startDate, minValue, maxValue) {
28
+ const prevDate = startDate.subtract({ days: 1 });
29
+ return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue);
30
+ }
31
+ function isNextVisibleRangeInvalid(endDate, minValue, maxValue) {
32
+ const nextDate = endDate.add({ days: 1 });
33
+ return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue);
34
+ }
35
+
36
+ export {
37
+ isTodayDate,
38
+ isDateEqual,
39
+ isDateInvalid,
40
+ isDateDisabled,
41
+ isDateUnavailable,
42
+ isDateOutsideVisibleRange,
43
+ isPreviousVisibleRangeInvalid,
44
+ isNextVisibleRangeInvalid
45
+ };
@@ -1,10 +1,10 @@
1
- import {
2
- getEraFormat
3
- } from "./chunk-FJMTHABG.mjs";
4
-
5
1
  // src/get-formatter.ts
6
- function getDateFormatter(ctx) {
7
- const { start, end = start, getDateFormatter: getDateFormatter2, timeZone } = ctx;
2
+ function getEraFormat(date) {
3
+ return (date == null ? void 0 : date.calendar.identifier) === "gregory" && date.era === "BC" ? "short" : void 0;
4
+ }
5
+ function getDateFormatter(startDate, endDate, getDateFormatter2, timeZone) {
6
+ let start = startDate;
7
+ let end = endDate != null ? endDate : startDate;
8
8
  let era = getEraFormat(start) || getEraFormat(end);
9
9
  return getDateFormatter2({
10
10
  weekday: "long",
@@ -15,8 +15,9 @@ function getDateFormatter(ctx) {
15
15
  timeZone
16
16
  });
17
17
  }
18
- function getMonthFormatter(ctx) {
19
- const { start, end = start, getDateFormatter: getDateFormatter2, timeZone } = ctx;
18
+ function getMonthFormatter(startDate, endDate, getDateFormatter2, timeZone) {
19
+ let start = startDate;
20
+ let end = endDate != null ? endDate : startDate;
20
21
  let era = getEraFormat(start) || getEraFormat(end);
21
22
  return getDateFormatter2({
22
23
  month: "long",
@@ -0,0 +1,32 @@
1
+ import {
2
+ alignCenter,
3
+ alignEnd,
4
+ alignStart
5
+ } from "./chunk-MGPXEJO4.mjs";
6
+
7
+ // src/align.ts
8
+ function alignDate(date, alignment, duration, locale, min, max) {
9
+ switch (alignment) {
10
+ case "start":
11
+ return alignStart(date, duration, locale, min, max);
12
+ case "end":
13
+ return alignEnd(date, duration, locale, min, max);
14
+ case "center":
15
+ default:
16
+ return alignCenter(date, duration, locale, min, max);
17
+ }
18
+ }
19
+ function alignStartDate(date, startDate, endDate, duration, locale, min, max) {
20
+ if (date.compare(startDate) < 0) {
21
+ return alignEnd(date, duration, locale, min, max);
22
+ }
23
+ if (date.compare(endDate) > 0) {
24
+ return alignStart(date, duration, locale, min, max);
25
+ }
26
+ return startDate;
27
+ }
28
+
29
+ export {
30
+ alignDate,
31
+ alignStartDate
32
+ };
@@ -19,10 +19,11 @@ function addSegment(date, part, amount, options) {
19
19
  case "second":
20
20
  return date.cycle(part, amount, {
21
21
  round: part !== "hour",
22
- hourCycle: options.hour12 ? 12 : 24
22
+ hourCycle: (options == null ? void 0 : options.hour12) ? 12 : 24
23
23
  });
24
24
  }
25
25
  }
26
+ return date;
26
27
  }
27
28
  function setSegment(date, part, value, options) {
28
29
  switch (part) {
@@ -41,7 +42,7 @@ function setSegment(date, part, value, options) {
41
42
  return isPM === wasPM ? date : date.set({ hour: wasPM ? hours - 12 : hours + 12 });
42
43
  }
43
44
  case "hour":
44
- if (options.hour12) {
45
+ if (options == null ? void 0 : options.hour12) {
45
46
  let hours = date.hour;
46
47
  let wasPM = hours >= 12;
47
48
  if (!wasPM && value === 12) {
@@ -56,6 +57,7 @@ function setSegment(date, part, value, options) {
56
57
  return date.set({ [part]: value });
57
58
  }
58
59
  }
60
+ return date;
59
61
  }
60
62
 
61
63
  export {
@@ -0,0 +1,25 @@
1
+ import {
2
+ formatRange
3
+ } from "./chunk-HKHGJ6WS.mjs";
4
+ import {
5
+ getDateFormatter
6
+ } from "./chunk-BBE325GQ.mjs";
7
+
8
+ // src/format-selected-date.ts
9
+ import { isSameDay } from "@internationalized/date";
10
+ function formatSelectedDate(startDate, endDate, getFormatter, isSelectingRange, timeZone) {
11
+ let start = startDate;
12
+ let end = endDate != null ? endDate : startDate;
13
+ let formatter = getDateFormatter(start, end, getFormatter, timeZone);
14
+ if (isSelectingRange || start == null || end == null) {
15
+ return "";
16
+ }
17
+ if (isSameDay(start, end)) {
18
+ return formatter.format(start.toDate(timeZone));
19
+ }
20
+ return formatRange(start, end, formatter, (start2, end2) => `${start2} \u2013 ${end2}`, timeZone);
21
+ }
22
+
23
+ export {
24
+ formatSelectedDate
25
+ };
@@ -1,6 +1,6 @@
1
1
  // src/format-range.ts
2
- function formatRange(ctx, formatter) {
3
- let parts = formatter.formatRangeToParts(ctx.start.toDate(ctx.timeZone), ctx.end.toDate(ctx.timeZone));
2
+ function formatRange(startDate, endDate, formatter, toString, timeZone) {
3
+ let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone));
4
4
  let separatorIndex = -1;
5
5
  for (let i = 0; i < parts.length; i++) {
6
6
  let part = parts[i];
@@ -19,7 +19,7 @@ function formatRange(ctx, formatter) {
19
19
  end += parts[i].value;
20
20
  }
21
21
  }
22
- return ctx.toString(start, end);
22
+ return toString(start, end);
23
23
  }
24
24
 
25
25
  export {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatesInWeek
3
- } from "./chunk-M4F23P2U.mjs";
3
+ } from "./chunk-JZVHAOWX.mjs";
4
4
 
5
5
  // src/get-month-dates.ts
6
6
  import { getWeeksInMonth } from "@internationalized/date";
@@ -1,5 +1,5 @@
1
1
  // src/get-week-dates.ts
2
- import { getDayOfWeek, isSameDay, startOfWeek, today } from "@internationalized/date";
2
+ import { getDayOfWeek, isSameDay, startOfWeek } from "@internationalized/date";
3
3
  function getDatesInWeek(weekIndex, fromDate, locale) {
4
4
  let date = fromDate.add({ weeks: weekIndex });
5
5
  let dates = [];
@@ -21,8 +21,8 @@ function getDatesInWeek(weekIndex, fromDate, locale) {
21
21
  }
22
22
  return dates;
23
23
  }
24
- function getWeekDates(timeZone, locale) {
25
- let weekStart = startOfWeek(today(timeZone), locale);
24
+ function getWeekDates(fromDate, timeZone, locale) {
25
+ let weekStart = startOfWeek(fromDate, locale);
26
26
  let weekArr = [...new Array(7).keys()];
27
27
  return weekArr.map((index) => {
28
28
  return weekStart.add({ days: index }).toDate(timeZone);
@@ -38,7 +38,7 @@ function getSegmentLimits(date, type, options) {
38
38
  max: 12
39
39
  };
40
40
  case "hour":
41
- if (options.hour12) {
41
+ if (options == null ? void 0 : options.hour12) {
42
42
  let isPM = date.hour >= 12;
43
43
  return {
44
44
  value: date.hour,
@@ -0,0 +1,71 @@
1
+ // src/constrain.ts
2
+ import {
3
+ maxDate,
4
+ minDate,
5
+ startOfMonth,
6
+ startOfWeek,
7
+ startOfYear,
8
+ toCalendarDate
9
+ } from "@internationalized/date";
10
+ function alignCenter(date, duration, locale, min, max) {
11
+ let halfDuration = {};
12
+ for (let key in duration) {
13
+ halfDuration[key] = Math.floor(duration[key] / 2);
14
+ if (halfDuration[key] > 0 && duration[key] % 2 === 0) {
15
+ halfDuration[key]--;
16
+ }
17
+ }
18
+ let aligned = alignStart(date, duration, locale).subtract(halfDuration);
19
+ return constrainStart(date, aligned, duration, locale, min, max);
20
+ }
21
+ function alignStart(date, duration, locale, min, max) {
22
+ let aligned = date;
23
+ if (duration.years) {
24
+ aligned = startOfYear(date);
25
+ } else if (duration.months) {
26
+ aligned = startOfMonth(date);
27
+ } else if (duration.weeks) {
28
+ aligned = startOfWeek(date, locale);
29
+ }
30
+ return constrainStart(date, aligned, duration, locale, min, max);
31
+ }
32
+ function alignEnd(date, duration, locale, min, max) {
33
+ let d = { ...duration };
34
+ if (d.days) {
35
+ d.days--;
36
+ } else if (d.weeks) {
37
+ d.weeks--;
38
+ } else if (d.months) {
39
+ d.months--;
40
+ } else if (d.years) {
41
+ d.years--;
42
+ }
43
+ let aligned = alignStart(date, duration, locale).subtract(d);
44
+ return constrainStart(date, aligned, duration, locale, min, max);
45
+ }
46
+ function constrainStart(date, aligned, duration, locale, min, max) {
47
+ if (min && date.compare(min) >= 0) {
48
+ aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale));
49
+ }
50
+ if (max && date.compare(max) <= 0) {
51
+ aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale));
52
+ }
53
+ return aligned;
54
+ }
55
+ function constrainValue(date, minValue, maxValue) {
56
+ if (minValue) {
57
+ date = maxDate(date, toCalendarDate(minValue));
58
+ }
59
+ if (maxValue) {
60
+ date = minDate(date, toCalendarDate(maxValue));
61
+ }
62
+ return date;
63
+ }
64
+
65
+ export {
66
+ alignCenter,
67
+ alignStart,
68
+ alignEnd,
69
+ constrainStart,
70
+ constrainValue
71
+ };