@react-stately/calendar 3.0.0-alpha.3 → 3.0.0-alpha.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/main.js CHANGED
@@ -1,7 +1,6 @@
1
- var $9X5tg$internationalizeddate = require("@internationalized/date");
2
- var $9X5tg$reactstatelyutils = require("@react-stately/utils");
3
- var $9X5tg$reactariai18n = require("@react-aria/i18n");
4
- var $9X5tg$react = require("react");
1
+ var $hEzMm$internationalizeddate = require("@internationalized/date");
2
+ var $hEzMm$reactstatelyutils = require("@react-stately/utils");
3
+ var $hEzMm$react = require("react");
5
4
 
6
5
  function $parcel$exportWildcard(dest, source) {
7
6
  Object.keys(source).forEach(function(key) {
@@ -22,35 +21,35 @@ function $parcel$exportWildcard(dest, source) {
22
21
  function $parcel$export(e, n, v, s) {
23
22
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
24
23
  }
25
- var $2685e11fe2f22aa6$exports = {};
24
+ var $7a549489c00e7fe0$exports = {};
26
25
 
27
26
 
28
- var $5270e0b8e8740a4c$exports = {};
27
+ var $6adad0c8536fc209$exports = {};
29
28
 
30
- $parcel$export($5270e0b8e8740a4c$exports, "useCalendarState", () => $5270e0b8e8740a4c$export$6d095e787d2b5e1f);
29
+ $parcel$export($6adad0c8536fc209$exports, "useCalendarState", () => $6adad0c8536fc209$export$6d095e787d2b5e1f);
31
30
 
32
- function $be5afcab32b8119f$export$eac50920cf2fd59a(date, minValue, maxValue) {
31
+ function $4301262d71f567b9$export$eac50920cf2fd59a(date, minValue, maxValue) {
33
32
  return minValue != null && date.compare(minValue) < 0 || maxValue != null && date.compare(maxValue) > 0;
34
33
  }
35
- function $be5afcab32b8119f$export$f4a51ff076cc9a09(date, duration, locale, minValue, maxValue) {
34
+ function $4301262d71f567b9$export$f4a51ff076cc9a09(date, duration, locale, minValue, maxValue) {
36
35
  let halfDuration = {
37
36
  };
38
37
  for(let key in duration){
39
38
  halfDuration[key] = Math.floor(duration[key] / 2);
40
39
  if (halfDuration[key] > 0 && duration[key] % 2 === 0) halfDuration[key]--;
41
40
  }
42
- let aligned = $be5afcab32b8119f$export$144a00ba6044eb9(date, duration, locale).subtract(halfDuration);
43
- return $be5afcab32b8119f$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue);
41
+ let aligned = $4301262d71f567b9$export$144a00ba6044eb9(date, duration, locale).subtract(halfDuration);
42
+ return $4301262d71f567b9$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue);
44
43
  }
45
- function $be5afcab32b8119f$export$144a00ba6044eb9(date, duration, locale, minValue, maxValue) {
44
+ function $4301262d71f567b9$export$144a00ba6044eb9(date, duration, locale, minValue, maxValue) {
46
45
  // align to the start of the largest unit
47
46
  let aligned = date;
48
- if (duration.years) aligned = $9X5tg$internationalizeddate.startOfYear(date);
49
- else if (duration.months) aligned = $9X5tg$internationalizeddate.startOfMonth(date);
50
- else if (duration.weeks) aligned = $9X5tg$internationalizeddate.startOfWeek(date, locale);
51
- return $be5afcab32b8119f$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue);
47
+ if (duration.years) aligned = $hEzMm$internationalizeddate.startOfYear(date);
48
+ else if (duration.months) aligned = $hEzMm$internationalizeddate.startOfMonth(date);
49
+ else if (duration.weeks) aligned = $hEzMm$internationalizeddate.startOfWeek(date, locale);
50
+ return $4301262d71f567b9$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue);
52
51
  }
53
- function $be5afcab32b8119f$export$530edbfc915b2b04(date, duration, locale, minValue, maxValue) {
52
+ function $4301262d71f567b9$export$530edbfc915b2b04(date, duration, locale, minValue, maxValue) {
54
53
  let d = {
55
54
  ...duration
56
55
  };
@@ -59,17 +58,17 @@ function $be5afcab32b8119f$export$530edbfc915b2b04(date, duration, locale, minVa
59
58
  else if (duration.weeks) d.weeks--;
60
59
  else if (duration.months) d.months--;
61
60
  else if (duration.years) d.years--;
62
- let aligned = $be5afcab32b8119f$export$144a00ba6044eb9(date, duration, locale).subtract(d);
63
- return $be5afcab32b8119f$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue);
61
+ let aligned = $4301262d71f567b9$export$144a00ba6044eb9(date, duration, locale).subtract(d);
62
+ return $4301262d71f567b9$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue);
64
63
  }
65
- function $be5afcab32b8119f$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue) {
66
- if (minValue && date.compare(minValue) >= 0) aligned = $9X5tg$internationalizeddate.maxDate(aligned, $be5afcab32b8119f$export$144a00ba6044eb9($9X5tg$internationalizeddate.toCalendarDate(minValue), duration, locale));
67
- if (maxValue && date.compare(maxValue) <= 0) aligned = $9X5tg$internationalizeddate.minDate(aligned, $be5afcab32b8119f$export$530edbfc915b2b04($9X5tg$internationalizeddate.toCalendarDate(maxValue), duration, locale));
64
+ function $4301262d71f567b9$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue) {
65
+ if (minValue && date.compare(minValue) >= 0) aligned = $hEzMm$internationalizeddate.maxDate(aligned, $4301262d71f567b9$export$144a00ba6044eb9($hEzMm$internationalizeddate.toCalendarDate(minValue), duration, locale));
66
+ if (maxValue && date.compare(maxValue) <= 0) aligned = $hEzMm$internationalizeddate.minDate(aligned, $4301262d71f567b9$export$530edbfc915b2b04($hEzMm$internationalizeddate.toCalendarDate(maxValue), duration, locale));
68
67
  return aligned;
69
68
  }
70
- function $be5afcab32b8119f$export$4f5203c0d889109e(date, minValue, maxValue) {
71
- if (minValue) date = $9X5tg$internationalizeddate.maxDate(date, $9X5tg$internationalizeddate.toCalendarDate(minValue));
72
- if (maxValue) date = $9X5tg$internationalizeddate.minDate(date, $9X5tg$internationalizeddate.toCalendarDate(maxValue));
69
+ function $4301262d71f567b9$export$4f5203c0d889109e(date, minValue, maxValue) {
70
+ if (minValue) date = $hEzMm$internationalizeddate.maxDate(date, $hEzMm$internationalizeddate.toCalendarDate(minValue));
71
+ if (maxValue) date = $hEzMm$internationalizeddate.minDate(date, $hEzMm$internationalizeddate.toCalendarDate(maxValue));
73
72
  return date;
74
73
  }
75
74
 
@@ -77,54 +76,64 @@ function $be5afcab32b8119f$export$4f5203c0d889109e(date, minValue, maxValue) {
77
76
 
78
77
 
79
78
 
80
-
81
- function $5270e0b8e8740a4c$export$6d095e787d2b5e1f(props) {
82
- let defaultFormatter = $9X5tg$reactariai18n.useDateFormatter();
83
- let resolvedOptions = $9X5tg$react.useMemo(()=>defaultFormatter.resolvedOptions()
79
+ function $6adad0c8536fc209$export$6d095e787d2b5e1f(props) {
80
+ let defaultFormatter = $hEzMm$react.useMemo(()=>new $hEzMm$internationalizeddate.DateFormatter(props.locale)
81
+ , [
82
+ props.locale
83
+ ]);
84
+ let resolvedOptions = $hEzMm$react.useMemo(()=>defaultFormatter.resolvedOptions()
84
85
  , [
85
86
  defaultFormatter
86
87
  ]);
87
88
  let { locale: locale , createCalendar: createCalendar , visibleDuration: visibleDuration = {
88
89
  months: 1
89
90
  } , minValue: minValue , maxValue: maxValue , selectionAlignment: selectionAlignment } = props;
90
- let calendar = $9X5tg$react.useMemo(()=>createCalendar(resolvedOptions.calendar)
91
+ let calendar = $hEzMm$react.useMemo(()=>createCalendar(resolvedOptions.calendar)
91
92
  , [
92
93
  createCalendar,
93
94
  resolvedOptions.calendar
94
95
  ]);
95
- let [value, setControlledValue] = $9X5tg$reactstatelyutils.useControlledState(props.value, props.defaultValue, props.onChange);
96
- let calendarDateValue = $9X5tg$react.useMemo(()=>value ? $9X5tg$internationalizeddate.toCalendar($9X5tg$internationalizeddate.toCalendarDate(value), calendar) : null
96
+ let [value, setControlledValue] = $hEzMm$reactstatelyutils.useControlledState(props.value, props.defaultValue, props.onChange);
97
+ let calendarDateValue = $hEzMm$react.useMemo(()=>value ? $hEzMm$internationalizeddate.toCalendar($hEzMm$internationalizeddate.toCalendarDate(value), calendar) : null
97
98
  , [
98
99
  value,
99
100
  calendar
100
101
  ]);
101
- let timeZone = $9X5tg$react.useMemo(()=>value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone
102
+ let timeZone = $hEzMm$react.useMemo(()=>value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone
102
103
  , [
103
104
  value,
104
105
  resolvedOptions.timeZone
105
106
  ]);
106
- let defaultDate = $9X5tg$react.useMemo(()=>calendarDateValue || $be5afcab32b8119f$export$4f5203c0d889109e($9X5tg$internationalizeddate.toCalendar($9X5tg$internationalizeddate.today(timeZone), calendar), minValue, maxValue)
107
+ let focusedCalendarDate = $hEzMm$react.useMemo(()=>props.focusedValue ? $4301262d71f567b9$export$4f5203c0d889109e($hEzMm$internationalizeddate.toCalendar($hEzMm$internationalizeddate.toCalendarDate(props.focusedValue), calendar), minValue, maxValue) : undefined
108
+ , [
109
+ props.focusedValue,
110
+ calendar,
111
+ minValue,
112
+ maxValue
113
+ ]);
114
+ let defaultFocusedCalendarDate = $hEzMm$react.useMemo(()=>$4301262d71f567b9$export$4f5203c0d889109e(props.defaultFocusedValue ? $hEzMm$internationalizeddate.toCalendar($hEzMm$internationalizeddate.toCalendarDate(props.defaultFocusedValue), calendar) : calendarDateValue || $hEzMm$internationalizeddate.toCalendar($hEzMm$internationalizeddate.today(timeZone), calendar), minValue, maxValue)
107
115
  , [
116
+ props.defaultFocusedValue,
108
117
  calendarDateValue,
109
118
  timeZone,
110
119
  calendar,
111
120
  minValue,
112
121
  maxValue
113
122
  ]);
114
- let [startDate, setStartDate] = $9X5tg$react.useState(()=>{
123
+ let [focusedDate, setFocusedDate] = $hEzMm$reactstatelyutils.useControlledState(focusedCalendarDate, defaultFocusedCalendarDate, props.onFocusChange);
124
+ let [startDate, setStartDate] = $hEzMm$react.useState(()=>{
115
125
  switch(selectionAlignment){
116
126
  case 'start':
117
- return $be5afcab32b8119f$export$144a00ba6044eb9(defaultDate, visibleDuration, locale, minValue, maxValue);
127
+ return $4301262d71f567b9$export$144a00ba6044eb9(focusedDate, visibleDuration, locale, minValue, maxValue);
118
128
  case 'end':
119
- return $be5afcab32b8119f$export$530edbfc915b2b04(defaultDate, visibleDuration, locale, minValue, maxValue);
129
+ return $4301262d71f567b9$export$530edbfc915b2b04(focusedDate, visibleDuration, locale, minValue, maxValue);
120
130
  case 'center':
121
131
  default:
122
- return $be5afcab32b8119f$export$f4a51ff076cc9a09(defaultDate, visibleDuration, locale, minValue, maxValue);
132
+ return $4301262d71f567b9$export$f4a51ff076cc9a09(focusedDate, visibleDuration, locale, minValue, maxValue);
123
133
  }
124
134
  });
125
- let [focusedDate, setFocusedDate] = $9X5tg$react.useState(defaultDate);
126
- let [isFocused, setFocused] = $9X5tg$react.useState(props.autoFocus || false);
127
- let endDate = $9X5tg$react.useMemo(()=>startDate.add(visibleDuration).subtract({
135
+ let [isFocused, setFocused] = $hEzMm$react.useState(props.autoFocus || false);
136
+ let endDate = $hEzMm$react.useMemo(()=>startDate.add(visibleDuration).subtract({
128
137
  days: 1
129
138
  })
130
139
  , [
@@ -132,36 +141,27 @@ function $5270e0b8e8740a4c$export$6d095e787d2b5e1f(props) {
132
141
  visibleDuration
133
142
  ]);
134
143
  // Reset focused date and visible range when calendar changes.
135
- let lastCalendarIdentifier = $9X5tg$react.useRef(calendar.identifier);
136
- $9X5tg$react.useEffect(()=>{
137
- if (calendar.identifier !== lastCalendarIdentifier.current) {
138
- let newFocusedDate = $9X5tg$internationalizeddate.toCalendar(focusedDate, calendar);
139
- setStartDate($be5afcab32b8119f$export$f4a51ff076cc9a09(newFocusedDate, visibleDuration, locale, minValue, maxValue));
140
- setFocusedDate(newFocusedDate);
141
- lastCalendarIdentifier.current = calendar.identifier;
142
- }
143
- }, [
144
- calendar,
145
- focusedDate,
146
- visibleDuration,
147
- locale,
148
- minValue,
149
- maxValue
150
- ]);
144
+ let lastCalendarIdentifier = $hEzMm$react.useRef(calendar.identifier);
145
+ if (calendar.identifier !== lastCalendarIdentifier.current) {
146
+ let newFocusedDate = $hEzMm$internationalizeddate.toCalendar(focusedDate, calendar);
147
+ setStartDate($4301262d71f567b9$export$f4a51ff076cc9a09(newFocusedDate, visibleDuration, locale, minValue, maxValue));
148
+ setFocusedDate(newFocusedDate);
149
+ lastCalendarIdentifier.current = calendar.identifier;
150
+ }
151
+ if ($4301262d71f567b9$export$eac50920cf2fd59a(focusedDate, minValue, maxValue)) // If the focused date was moved to an invalid value, it can't be focused, so constrain it.
152
+ setFocusedDate($4301262d71f567b9$export$4f5203c0d889109e(focusedDate, minValue, maxValue));
153
+ else if (focusedDate.compare(startDate) < 0) setStartDate($4301262d71f567b9$export$530edbfc915b2b04(focusedDate, visibleDuration, locale, minValue, maxValue));
154
+ else if (focusedDate.compare(startDate.add(visibleDuration)) >= 0) setStartDate($4301262d71f567b9$export$144a00ba6044eb9(focusedDate, visibleDuration, locale, minValue, maxValue));
151
155
  // Sets focus to a specific cell date
152
156
  function focusCell(date) {
153
- // date = constrain(focusedDate, date, visibleDuration, locale, minValue, maxValue);
154
- date = $be5afcab32b8119f$export$4f5203c0d889109e(date, minValue, maxValue);
155
- let next = startDate.add(visibleDuration);
156
- if (date.compare(startDate) < 0) setStartDate($be5afcab32b8119f$export$530edbfc915b2b04(date, visibleDuration, locale, minValue, maxValue));
157
- else if (date.compare(next) >= 0) setStartDate($be5afcab32b8119f$export$144a00ba6044eb9(date, visibleDuration, locale, minValue, maxValue));
157
+ date = $4301262d71f567b9$export$4f5203c0d889109e(date, minValue, maxValue);
158
158
  setFocusedDate(date);
159
159
  }
160
160
  function setValue(newValue) {
161
161
  if (!props.isDisabled && !props.isReadOnly) {
162
162
  // The display calendar should not have any effect on the emitted value.
163
163
  // Emit dates in the same calendar as the original value, if any, otherwise gregorian.
164
- newValue = $9X5tg$internationalizeddate.toCalendar(newValue, (value === null || value === void 0 ? void 0 : value.calendar) || new $9X5tg$internationalizeddate.GregorianCalendar());
164
+ newValue = $hEzMm$internationalizeddate.toCalendar(newValue, (value === null || value === void 0 ? void 0 : value.calendar) || new $hEzMm$internationalizeddate.GregorianCalendar());
165
165
  // Preserve time if the input value had one.
166
166
  if (value && 'hour' in value) setControlledValue(value.set(newValue));
167
167
  else setControlledValue(newValue);
@@ -179,7 +179,7 @@ function $5270e0b8e8740a4c$export$6d095e787d2b5e1f(props) {
179
179
  focusedDate: focusedDate,
180
180
  timeZone: timeZone,
181
181
  setFocusedDate (date) {
182
- setFocusedDate(date);
182
+ focusCell(date);
183
183
  setFocused(true);
184
184
  },
185
185
  focusNextDay () {
@@ -206,13 +206,13 @@ function $5270e0b8e8740a4c$export$6d095e787d2b5e1f(props) {
206
206
  },
207
207
  focusNextPage () {
208
208
  let start = startDate.add(visibleDuration);
209
- setStartDate($be5afcab32b8119f$export$5bb865b12696a77d(focusedDate, start, visibleDuration, locale, minValue, maxValue));
210
- setFocusedDate($be5afcab32b8119f$export$4f5203c0d889109e(focusedDate.add(visibleDuration), minValue, maxValue));
209
+ setFocusedDate($4301262d71f567b9$export$4f5203c0d889109e(focusedDate.add(visibleDuration), minValue, maxValue));
210
+ setStartDate($4301262d71f567b9$export$5bb865b12696a77d(focusedDate, start, visibleDuration, locale, minValue, maxValue));
211
211
  },
212
212
  focusPreviousPage () {
213
213
  let start = startDate.subtract(visibleDuration);
214
- setStartDate($be5afcab32b8119f$export$5bb865b12696a77d(focusedDate, start, visibleDuration, locale, minValue, maxValue));
215
- setFocusedDate($be5afcab32b8119f$export$4f5203c0d889109e(focusedDate.subtract(visibleDuration), minValue, maxValue));
214
+ setFocusedDate($4301262d71f567b9$export$4f5203c0d889109e(focusedDate.subtract(visibleDuration), minValue, maxValue));
215
+ setStartDate($4301262d71f567b9$export$5bb865b12696a77d(focusedDate, start, visibleDuration, locale, minValue, maxValue));
216
216
  },
217
217
  focusPageStart () {
218
218
  focusCell(startDate);
@@ -247,24 +247,27 @@ function $5270e0b8e8740a4c$export$6d095e787d2b5e1f(props) {
247
247
  isFocused: isFocused,
248
248
  setFocused: setFocused,
249
249
  isInvalid (date) {
250
- return $be5afcab32b8119f$export$eac50920cf2fd59a(date, minValue, maxValue);
250
+ return $4301262d71f567b9$export$eac50920cf2fd59a(date, minValue, maxValue);
251
251
  },
252
252
  isSelected (date) {
253
- return calendarDateValue != null && $9X5tg$internationalizeddate.isSameDay(date, calendarDateValue);
253
+ return calendarDateValue != null && $hEzMm$internationalizeddate.isSameDay(date, calendarDateValue) && !this.isCellDisabled(date) && !this.isCellUnavailable(date);
254
254
  },
255
255
  isCellFocused (date) {
256
- return isFocused && focusedDate && $9X5tg$internationalizeddate.isSameDay(date, focusedDate);
256
+ return isFocused && focusedDate && $hEzMm$internationalizeddate.isSameDay(date, focusedDate);
257
257
  },
258
258
  isCellDisabled (date) {
259
- return props.isDisabled || date.compare(startDate) < 0 || date.compare(endDate) > 0 || $be5afcab32b8119f$export$eac50920cf2fd59a(date, minValue, maxValue);
259
+ return props.isDisabled || date.compare(startDate) < 0 || date.compare(endDate) > 0 || this.isInvalid(date, minValue, maxValue);
260
+ },
261
+ isCellUnavailable (date) {
262
+ return props.isDateUnavailable && props.isDateUnavailable(date);
260
263
  },
261
264
  isPreviousVisibleRangeInvalid () {
262
- return $be5afcab32b8119f$export$eac50920cf2fd59a(startDate.subtract({
265
+ return this.isInvalid(startDate.subtract({
263
266
  days: 1
264
267
  }), minValue, maxValue);
265
268
  },
266
269
  isNextVisibleRangeInvalid () {
267
- return $be5afcab32b8119f$export$eac50920cf2fd59a(endDate.add({
270
+ return this.isInvalid(endDate.add({
268
271
  days: 1
269
272
  }), minValue, maxValue);
270
273
  }
@@ -272,52 +275,94 @@ function $5270e0b8e8740a4c$export$6d095e787d2b5e1f(props) {
272
275
  }
273
276
 
274
277
 
275
- var $db599f16579e1659$exports = {};
278
+ var $e49f7b861e5e8049$exports = {};
276
279
 
277
- $parcel$export($db599f16579e1659$exports, "useRangeCalendarState", () => $db599f16579e1659$export$9a987164d97ecc90);
280
+ $parcel$export($e49f7b861e5e8049$exports, "useRangeCalendarState", () => $e49f7b861e5e8049$export$9a987164d97ecc90);
278
281
 
279
282
 
280
283
 
281
284
 
282
285
 
283
- function $db599f16579e1659$export$9a987164d97ecc90(props) {
286
+ function $e49f7b861e5e8049$export$9a987164d97ecc90(props) {
284
287
  let { value: valueProp , defaultValue: defaultValue , onChange: onChange , createCalendar: createCalendar , locale: locale , visibleDuration: visibleDuration = {
285
288
  months: 1
286
289
  } , minValue: minValue , maxValue: maxValue , ...calendarProps } = props;
287
- let [value, setValue] = $9X5tg$reactstatelyutils.useControlledState(valueProp, defaultValue, onChange);
288
- let [anchorDate, setAnchorDate] = $9X5tg$react.useState(null);
290
+ let [value, setValue] = $hEzMm$reactstatelyutils.useControlledState(valueProp, defaultValue || null, onChange);
291
+ let [anchorDate, setAnchorDateState] = $hEzMm$react.useState(null);
289
292
  let alignment = 'center';
290
293
  if (value && value.start && value.end) {
291
- let start = $be5afcab32b8119f$export$f4a51ff076cc9a09($9X5tg$internationalizeddate.toCalendarDate(value.start), visibleDuration, locale, minValue, maxValue);
294
+ let start = $4301262d71f567b9$export$f4a51ff076cc9a09($hEzMm$internationalizeddate.toCalendarDate(value.start), visibleDuration, locale, minValue, maxValue);
292
295
  let end = start.add(visibleDuration).subtract({
293
296
  days: 1
294
297
  });
295
298
  if (value.end.compare(end) > 0) alignment = 'start';
296
299
  }
297
- let calendar = $5270e0b8e8740a4c$export$6d095e787d2b5e1f({
300
+ // Available range must be stored in a ref so we have access to the updated version immediately in `isInvalid`.
301
+ let availableRangeRef = $hEzMm$react.useRef(null);
302
+ let [availableRange, setAvailableRange] = $hEzMm$react.useState(null);
303
+ let min = $hEzMm$react.useMemo(()=>{
304
+ return $hEzMm$internationalizeddate.maxDate(minValue, availableRange === null || availableRange === void 0 ? void 0 : availableRange.start);
305
+ }, [
306
+ minValue,
307
+ availableRange
308
+ ]);
309
+ let max = $hEzMm$react.useMemo(()=>{
310
+ return $hEzMm$internationalizeddate.minDate(maxValue, availableRange === null || availableRange === void 0 ? void 0 : availableRange.end);
311
+ }, [
312
+ maxValue,
313
+ availableRange
314
+ ]);
315
+ let calendar = $6adad0c8536fc209$export$6d095e787d2b5e1f({
298
316
  ...calendarProps,
299
317
  value: value && value.start,
300
318
  createCalendar: createCalendar,
301
319
  locale: locale,
302
320
  visibleDuration: visibleDuration,
303
- minValue: minValue,
304
- maxValue: maxValue,
321
+ minValue: min,
322
+ maxValue: max,
305
323
  selectionAlignment: alignment
306
324
  });
307
- let highlightedRange = anchorDate ? $db599f16579e1659$var$makeRange(anchorDate, calendar.focusedDate) : value && $db599f16579e1659$var$makeRange(value.start, value.end);
325
+ let updateAvailableRange = (date)=>{
326
+ if (date && props.isDateUnavailable && !props.allowsNonContiguousRanges) {
327
+ availableRangeRef.current = {
328
+ start: $e49f7b861e5e8049$var$nextUnavailableDate(date, calendar, -1),
329
+ end: $e49f7b861e5e8049$var$nextUnavailableDate(date, calendar, 1)
330
+ };
331
+ setAvailableRange(availableRangeRef.current);
332
+ } else {
333
+ availableRangeRef.current = null;
334
+ setAvailableRange(null);
335
+ }
336
+ };
337
+ // If the visible range changes, we need to update the available range.
338
+ let lastVisibleRange = $hEzMm$react.useRef(calendar.visibleRange);
339
+ if (!$hEzMm$internationalizeddate.isEqualDay(calendar.visibleRange.start, lastVisibleRange.current.start) || !$hEzMm$internationalizeddate.isEqualDay(calendar.visibleRange.end, lastVisibleRange.current.end)) {
340
+ updateAvailableRange(anchorDate);
341
+ lastVisibleRange.current = calendar.visibleRange;
342
+ }
343
+ let setAnchorDate = (date)=>{
344
+ if (date) {
345
+ setAnchorDateState(date);
346
+ updateAvailableRange(date);
347
+ } else {
348
+ setAnchorDateState(null);
349
+ updateAvailableRange(null);
350
+ }
351
+ };
352
+ let highlightedRange = anchorDate ? $e49f7b861e5e8049$var$makeRange(anchorDate, calendar.focusedDate) : value && $e49f7b861e5e8049$var$makeRange(value.start, value.end);
308
353
  let selectDate = (date)=>{
309
354
  if (props.isReadOnly) return;
310
355
  if (!anchorDate) setAnchorDate(date);
311
356
  else {
312
- let range = $db599f16579e1659$var$makeRange(anchorDate, date);
357
+ let range = $e49f7b861e5e8049$var$makeRange(anchorDate, date);
313
358
  setValue({
314
- start: $db599f16579e1659$var$convertValue(range.start, value === null || value === void 0 ? void 0 : value.start),
315
- end: $db599f16579e1659$var$convertValue(range.end, value === null || value === void 0 ? void 0 : value.end)
359
+ start: $e49f7b861e5e8049$var$convertValue(range.start, value === null || value === void 0 ? void 0 : value.start),
360
+ end: $e49f7b861e5e8049$var$convertValue(range.end, value === null || value === void 0 ? void 0 : value.end)
316
361
  });
317
362
  setAnchorDate(null);
318
363
  }
319
364
  };
320
- let [isDragging, setDragging] = $9X5tg$react.useState(false);
365
+ let [isDragging, setDragging] = $hEzMm$react.useState(false);
321
366
  return {
322
367
  ...calendar,
323
368
  value: value,
@@ -333,36 +378,52 @@ function $db599f16579e1659$export$9a987164d97ecc90(props) {
333
378
  if (anchorDate) calendar.setFocusedDate(date);
334
379
  },
335
380
  isSelected (date) {
336
- return highlightedRange && date.compare(highlightedRange.start) >= 0 && date.compare(highlightedRange.end) <= 0;
381
+ return highlightedRange && date.compare(highlightedRange.start) >= 0 && date.compare(highlightedRange.end) <= 0 && !calendar.isCellDisabled(date) && !calendar.isCellUnavailable(date);
382
+ },
383
+ isInvalid (date) {
384
+ var ref, ref1;
385
+ return calendar.isInvalid(date) || $4301262d71f567b9$export$eac50920cf2fd59a(date, (ref = availableRangeRef.current) === null || ref === void 0 ? void 0 : ref.start, (ref1 = availableRangeRef.current) === null || ref1 === void 0 ? void 0 : ref1.end);
337
386
  },
338
387
  isDragging: isDragging,
339
388
  setDragging: setDragging
340
389
  };
341
390
  }
342
- function $db599f16579e1659$var$makeRange(start, end) {
391
+ function $e49f7b861e5e8049$var$makeRange(start, end) {
343
392
  if (!start || !end) return null;
344
393
  if (end.compare(start) < 0) [start, end] = [
345
394
  end,
346
395
  start
347
396
  ];
348
397
  return {
349
- start: $9X5tg$internationalizeddate.toCalendarDate(start),
350
- end: $9X5tg$internationalizeddate.toCalendarDate(end)
398
+ start: $hEzMm$internationalizeddate.toCalendarDate(start),
399
+ end: $hEzMm$internationalizeddate.toCalendarDate(end)
351
400
  };
352
401
  }
353
- function $db599f16579e1659$var$convertValue(newValue, oldValue) {
402
+ function $e49f7b861e5e8049$var$convertValue(newValue, oldValue) {
354
403
  // The display calendar should not have any effect on the emitted value.
355
404
  // Emit dates in the same calendar as the original value, if any, otherwise gregorian.
356
- newValue = $9X5tg$internationalizeddate.toCalendar(newValue, (oldValue === null || oldValue === void 0 ? void 0 : oldValue.calendar) || new $9X5tg$internationalizeddate.GregorianCalendar());
405
+ newValue = $hEzMm$internationalizeddate.toCalendar(newValue, (oldValue === null || oldValue === void 0 ? void 0 : oldValue.calendar) || new $hEzMm$internationalizeddate.GregorianCalendar());
357
406
  // Preserve time if the input value had one.
358
407
  if (oldValue && 'hour' in oldValue) return oldValue.set(newValue);
359
408
  return newValue;
360
409
  }
410
+ function $e49f7b861e5e8049$var$nextUnavailableDate(anchorDate, state, dir) {
411
+ let nextDate = anchorDate.add({
412
+ days: dir
413
+ });
414
+ while((dir < 0 ? nextDate.compare(state.visibleRange.start) >= 0 : nextDate.compare(state.visibleRange.end) <= 0) && !state.isCellUnavailable(nextDate))nextDate = nextDate.add({
415
+ days: dir
416
+ });
417
+ if (state.isCellUnavailable(nextDate)) return nextDate.add({
418
+ days: -dir
419
+ });
420
+ return null;
421
+ }
361
422
 
362
423
 
363
- $parcel$exportWildcard(module.exports, $2685e11fe2f22aa6$exports);
364
- $parcel$exportWildcard(module.exports, $5270e0b8e8740a4c$exports);
365
- $parcel$exportWildcard(module.exports, $db599f16579e1659$exports);
424
+ $parcel$exportWildcard(module.exports, $7a549489c00e7fe0$exports);
425
+ $parcel$exportWildcard(module.exports, $6adad0c8536fc209$exports);
426
+ $parcel$exportWildcard(module.exports, $e49f7b861e5e8049$exports);
366
427
 
367
428
 
368
429
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/types.ts","packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/useRangeCalendarState.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './types';\nexport * from './useCalendarState';\nexport * from './useRangeCalendarState';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CalendarDate} from '@internationalized/date';\nimport {DateValue} from '@react-types/calendar';\nimport {RangeValue} from '@react-types/shared';\n\nexport interface CalendarStateBase {\n isDisabled: boolean,\n isReadOnly: boolean,\n visibleRange: RangeValue<CalendarDate>,\n timeZone: string,\n focusedDate: CalendarDate,\n setFocusedDate(value: CalendarDate): void,\n focusNextDay(): void,\n focusPreviousDay(): void,\n focusNextRow(): void,\n focusPreviousRow(): void,\n focusNextPage(): void,\n focusPreviousPage(): void,\n focusPageStart(): void,\n focusPageEnd(): void,\n focusNextSection(): void,\n focusPreviousSection(): void,\n focusNextPage(): void,\n focusPreviousPage(): void,\n selectFocusedDate(): void,\n selectDate(date: CalendarDate): void,\n isFocused: boolean,\n setFocused(value: boolean): void,\n isInvalid(date: CalendarDate): boolean,\n isSelected(date: CalendarDate): boolean,\n isCellFocused(date: CalendarDate): boolean,\n isCellDisabled(date: CalendarDate): boolean,\n isPreviousVisibleRangeInvalid(): boolean,\n isNextVisibleRangeInvalid(): boolean\n}\n\nexport interface CalendarState extends CalendarStateBase {\n value: CalendarDate,\n setValue(value: CalendarDate): void\n}\n\nexport interface RangeCalendarState extends CalendarStateBase {\n value: RangeValue<DateValue>,\n setValue(value: RangeValue<DateValue>): void,\n highlightDate(date: CalendarDate): void,\n anchorDate: CalendarDate | null,\n setAnchorDate(date: CalendarDate | null): void,\n highlightedRange: RangeValue<CalendarDate>,\n isDragging: boolean,\n setDragging(isDragging: boolean): void\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {alignCenter, alignEnd, alignStart, constrainStart, constrainValue, isInvalid} from './utils';\nimport {\n Calendar,\n CalendarDate,\n Duration,\n GregorianCalendar,\n isSameDay,\n toCalendar,\n toCalendarDate,\n today\n} from '@internationalized/date';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from './types';\nimport {useControlledState} from '@react-stately/utils';\nimport {useDateFormatter} from '@react-aria/i18n';\nimport {useEffect, useMemo, useRef, useState} from 'react';\n\ninterface CalendarStateOptions<T extends DateValue> extends CalendarProps<T> {\n locale: string,\n createCalendar: (name: string) => Calendar,\n visibleDuration?: Duration,\n selectionAlignment?: 'start' | 'center' | 'end'\n}\n\nexport function useCalendarState<T extends DateValue>(props: CalendarStateOptions<T>): CalendarState {\n let defaultFormatter = useDateFormatter();\n let resolvedOptions = useMemo(() => defaultFormatter.resolvedOptions(), [defaultFormatter]);\n let {\n locale,\n createCalendar,\n visibleDuration = {months: 1},\n minValue,\n maxValue,\n selectionAlignment\n } = props;\n\n let calendar = useMemo(() => createCalendar(resolvedOptions.calendar), [createCalendar, resolvedOptions.calendar]);\n\n let [value, setControlledValue] = useControlledState<DateValue>(props.value, props.defaultValue, props.onChange);\n let calendarDateValue = useMemo(() => value ? toCalendar(toCalendarDate(value), calendar) : null, [value, calendar]);\n let timeZone = useMemo(() => value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone, [value, resolvedOptions.timeZone]);\n let defaultDate = useMemo(() => calendarDateValue || constrainValue(toCalendar(today(timeZone), calendar), minValue, maxValue), [calendarDateValue, timeZone, calendar, minValue, maxValue]);\n let [startDate, setStartDate] = useState(() => {\n switch (selectionAlignment) {\n case 'start':\n return alignStart(defaultDate, visibleDuration, locale, minValue, maxValue);\n case 'end':\n return alignEnd(defaultDate, visibleDuration, locale, minValue, maxValue);\n case 'center':\n default:\n return alignCenter(defaultDate, visibleDuration, locale, minValue, maxValue);\n }\n });\n let [focusedDate, setFocusedDate] = useState(defaultDate);\n let [isFocused, setFocused] = useState(props.autoFocus || false);\n\n let endDate = useMemo(() => startDate.add(visibleDuration).subtract({days: 1}), [startDate, visibleDuration]);\n\n // Reset focused date and visible range when calendar changes.\n let lastCalendarIdentifier = useRef(calendar.identifier);\n useEffect(() => {\n if (calendar.identifier !== lastCalendarIdentifier.current) {\n let newFocusedDate = toCalendar(focusedDate, calendar);\n setStartDate(alignCenter(newFocusedDate, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(newFocusedDate);\n lastCalendarIdentifier.current = calendar.identifier;\n }\n }, [calendar, focusedDate, visibleDuration, locale, minValue, maxValue]);\n\n // Sets focus to a specific cell date\n function focusCell(date: CalendarDate) {\n // date = constrain(focusedDate, date, visibleDuration, locale, minValue, maxValue);\n date = constrainValue(date, minValue, maxValue);\n\n let next = startDate.add(visibleDuration);\n if (date.compare(startDate) < 0) {\n setStartDate(alignEnd(date, visibleDuration, locale, minValue, maxValue));\n } else if (date.compare(next) >= 0) {\n setStartDate(alignStart(date, visibleDuration, locale, minValue, maxValue));\n }\n\n setFocusedDate(date);\n }\n\n function setValue(newValue: CalendarDate) {\n if (!props.isDisabled && !props.isReadOnly) {\n // The display calendar should not have any effect on the emitted value.\n // Emit dates in the same calendar as the original value, if any, otherwise gregorian.\n newValue = toCalendar(newValue, value?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (value && 'hour' in value) {\n setControlledValue(value.set(newValue));\n } else {\n setControlledValue(newValue);\n }\n }\n }\n\n return {\n isDisabled: props.isDisabled,\n isReadOnly: props.isReadOnly,\n value: calendarDateValue,\n setValue,\n visibleRange: {\n start: startDate,\n end: endDate\n },\n focusedDate,\n timeZone,\n setFocusedDate(date) {\n setFocusedDate(date);\n setFocused(true);\n },\n focusNextDay() {\n focusCell(focusedDate.add({days: 1}));\n },\n focusPreviousDay() {\n focusCell(focusedDate.subtract({days: 1}));\n },\n focusNextRow() {\n if (visibleDuration.days) {\n this.focusNextPage();\n } else if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n focusCell(focusedDate.add({weeks: 1}));\n }\n },\n focusPreviousRow() {\n if (visibleDuration.days) {\n this.focusPreviousPage();\n } else if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n focusCell(focusedDate.subtract({weeks: 1}));\n }\n },\n focusNextPage() {\n let start = startDate.add(visibleDuration);\n setStartDate(constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(constrainValue(focusedDate.add(visibleDuration), minValue, maxValue));\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setStartDate(constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n },\n focusPageStart() {\n focusCell(startDate);\n },\n focusPageEnd() {\n focusCell(endDate);\n },\n focusNextSection() {\n if (visibleDuration.days) {\n this.focusNextPage();\n } else if (visibleDuration.weeks) {\n focusCell(focusedDate.add({months: 1}));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(focusedDate.add({years: 1}));\n }\n },\n focusPreviousSection() {\n if (visibleDuration.days) {\n this.focusPreviousPage();\n } else if (visibleDuration.weeks) {\n focusCell(focusedDate.subtract({months: 1}));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(focusedDate.subtract({years: 1}));\n }\n },\n selectFocusedDate() {\n setValue(focusedDate);\n },\n selectDate(date) {\n setValue(date);\n },\n isFocused,\n setFocused,\n isInvalid(date) {\n return isInvalid(date, minValue, maxValue);\n },\n isSelected(date) {\n return calendarDateValue != null && isSameDay(date, calendarDateValue);\n },\n isCellFocused(date) {\n return isFocused && focusedDate && isSameDay(date, focusedDate);\n },\n isCellDisabled(date) {\n return props.isDisabled || date.compare(startDate) < 0 || date.compare(endDate) > 0 || isInvalid(date, minValue, maxValue);\n },\n isPreviousVisibleRangeInvalid() {\n return isInvalid(startDate.subtract({days: 1}), minValue, maxValue);\n },\n isNextVisibleRangeInvalid() {\n return isInvalid(endDate.add({days: 1}), minValue, maxValue);\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {\n CalendarDate,\n Duration,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate\n} from '@internationalized/date';\nimport {DateValue} from '@react-types/calendar';\n\nexport function isInvalid(date: CalendarDate, minValue: DateValue, maxValue: DateValue) {\n return (minValue != null && date.compare(minValue) < 0) ||\n (maxValue != null && date.compare(maxValue) > 0);\n}\n\nexport function alignCenter(date: CalendarDate, duration: Duration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let halfDuration: Duration = {};\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2);\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--;\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignStart(date: CalendarDate, duration: Duration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n // align to the start of the largest unit\n let aligned = date;\n if (duration.years) {\n aligned = startOfYear(date);\n } else if (duration.months) {\n aligned = startOfMonth(date);\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale);\n }\n\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignEnd(date: CalendarDate, duration: Duration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let d = {...duration};\n // subtract 1 from the smallest unit\n if (duration.days) {\n d.days--;\n } else if (duration.weeks) {\n d.weeks--;\n } else if (duration.months) {\n d.months--;\n } else if (duration.years) {\n d.years--;\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function constrainStart(\n date: CalendarDate,\n aligned: CalendarDate,\n duration: Duration,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue) {\n if (minValue && date.compare(minValue) >= 0) {\n aligned = maxDate(\n aligned,\n alignStart(toCalendarDate(minValue), duration, locale)\n );\n }\n\n if (maxValue && date.compare(maxValue) <= 0) {\n aligned = minDate(\n aligned,\n alignEnd(toCalendarDate(maxValue), duration, locale)\n );\n }\n\n return aligned;\n}\n\nexport function constrainValue(date: CalendarDate, minValue: DateValue, maxValue: DateValue) {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue));\n }\n\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue));\n }\n\n return date;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {alignCenter} from './utils';\nimport {Calendar, CalendarDate, Duration, GregorianCalendar, toCalendar, toCalendarDate} from '@internationalized/date';\nimport {DateRange, DateValue} from '@react-types/calendar';\nimport {RangeCalendarProps} from '@react-types/calendar';\nimport {RangeCalendarState} from './types';\nimport {RangeValue} from '@react-types/shared';\nimport {useCalendarState} from './useCalendarState';\nimport {useControlledState} from '@react-stately/utils';\nimport {useState} from 'react';\n\ninterface RangeCalendarStateOptions<T extends DateValue> extends RangeCalendarProps<T> {\n locale: string,\n createCalendar: (name: string) => Calendar,\n visibleDuration?: Duration\n}\n\nexport function useRangeCalendarState<T extends DateValue>(props: RangeCalendarStateOptions<T>): RangeCalendarState {\n let {value: valueProp, defaultValue, onChange, createCalendar, locale, visibleDuration = {months: 1}, minValue, maxValue, ...calendarProps} = props;\n let [value, setValue] = useControlledState<DateRange>(\n valueProp,\n defaultValue,\n onChange\n );\n\n let [anchorDate, setAnchorDate] = useState(null);\n let alignment: 'center' | 'start' = 'center';\n if (value && value.start && value.end) {\n let start = alignCenter(toCalendarDate(value.start), visibleDuration, locale, minValue, maxValue);\n let end = start.add(visibleDuration).subtract({days: 1});\n\n if (value.end.compare(end) > 0) {\n alignment = 'start';\n }\n }\n\n let calendar = useCalendarState({\n ...calendarProps,\n value: value && value.start,\n createCalendar,\n locale,\n visibleDuration,\n minValue,\n maxValue,\n selectionAlignment: alignment\n });\n\n let highlightedRange = anchorDate ? makeRange(anchorDate, calendar.focusedDate) : value && makeRange(value.start, value.end);\n let selectDate = (date: CalendarDate) => {\n if (props.isReadOnly) {\n return;\n }\n\n if (!anchorDate) {\n setAnchorDate(date);\n } else {\n let range = makeRange(anchorDate, date);\n setValue({\n start: convertValue(range.start, value?.start),\n end: convertValue(range.end, value?.end)\n });\n setAnchorDate(null);\n }\n };\n\n let [isDragging, setDragging] = useState(false);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n selectFocusedDate() {\n selectDate(calendar.focusedDate);\n },\n selectDate,\n highlightDate(date) {\n if (anchorDate) {\n calendar.setFocusedDate(date);\n }\n },\n isSelected(date) {\n return highlightedRange && date.compare(highlightedRange.start) >= 0 && date.compare(highlightedRange.end) <= 0;\n },\n isDragging,\n setDragging\n };\n}\n\nfunction makeRange(start: DateValue, end: DateValue): RangeValue<CalendarDate> {\n if (!start || !end) {\n return null;\n }\n\n if (end.compare(start) < 0) {\n [start, end] = [end, start];\n }\n\n return {start: toCalendarDate(start), end: toCalendarDate(end)};\n}\n\nfunction convertValue(newValue: CalendarDate, oldValue: DateValue) {\n // The display calendar should not have any effect on the emitted value.\n // Emit dates in the same calendar as the original value, if any, otherwise gregorian.\n newValue = toCalendar(newValue, oldValue?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (oldValue && 'hour' in oldValue) {\n return oldValue.set(newValue);\n }\n\n return newValue;\n}\n"],"names":[],"version":3,"file":"main.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/types.ts","packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/useRangeCalendarState.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './types';\nexport * from './useCalendarState';\nexport * from './useRangeCalendarState';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CalendarDate} from '@internationalized/date';\nimport {DateValue} from '@react-types/calendar';\nimport {RangeValue} from '@react-types/shared';\n\nexport interface CalendarStateBase {\n /** Whether the calendar is disabled. */\n readonly isDisabled: boolean,\n /** Whether the calendar is in a read only state. */\n readonly isReadOnly: boolean,\n /** The date range that is currently visible in the calendar. */\n readonly visibleRange: RangeValue<CalendarDate>,\n /** The time zone of the dates currently being displayed. */\n readonly timeZone: string,\n /** The currently focused date. */\n readonly focusedDate: CalendarDate,\n /** Sets the focused date. */\n setFocusedDate(value: CalendarDate): void,\n /** Moves focus to the next calendar date. */\n focusNextDay(): void,\n /** Moves focus to the previous calendar date. */\n focusPreviousDay(): void,\n /** Moves focus to the next row of dates, e.g. the next week. */\n focusNextRow(): void,\n /** Moves focus to the previous row of dates, e.g. the previous work. */\n focusPreviousRow(): void,\n /** Moves focus to the next page of dates, e.g. the next month if one month is visible. */\n focusNextPage(): void,\n /** Moves focus to the previous page of dates, e.g. the previous month if one month is visible. */\n focusPreviousPage(): void,\n /** Moves focus to the start of the current page of dates, e.g. the start of the first visible month. */\n focusPageStart(): void,\n /** Moves focus to the end of the current page of dates, e.g. the end of the last visible month. */\n focusPageEnd(): void,\n /**\n * Moves focus to the next larger section of dates based on what is currently displayed.\n * If days are displayed, then moves to the next visible range. If weeks are displayed, then\n * moves to the next month. If months or years are displayed, moves to the next year.\n */\n focusNextSection(): void,\n /**\n * Moves focus to the previous larger section of dates based on what is currently displayed.\n * If days are displayed, then moves to the previous visible range. If weeks are displayed, then\n * moves to the previous month. If months or years are displayed, moves to the previous year.\n */\n focusPreviousSection(): void,\n /** Selects the currently focused date. */\n selectFocusedDate(): void,\n /** Selects the given date. */\n selectDate(date: CalendarDate): void,\n /** Whether focus is currently within the calendar. */\n readonly isFocused: boolean,\n /** Sets whether focus is currently within the calendar. */\n setFocused(value: boolean): void,\n /** Returns whether the given date is invalid according to the `minValue` and `maxValue` props. */\n isInvalid(date: CalendarDate): boolean,\n /** Returns whether the given date is currently selected. */\n isSelected(date: CalendarDate): boolean,\n /** Returns whether the given date is currently focused. */\n isCellFocused(date: CalendarDate): boolean,\n /** Returns whether the given date is disabled according to the `minValue, `maxValue`, and `isDisabled` props. */\n isCellDisabled(date: CalendarDate): boolean,\n /** Returns whether the given date is unavailable according to the `isDateUnavailable` prop. */\n isCellUnavailable(date: CalendarDate): boolean,\n /** Returns whether the previous visible date range is allowed to be selected according to the `minValue` prop. */\n isPreviousVisibleRangeInvalid(): boolean,\n /** Returns whether the next visible date range is allowed to be selected according to the `maxValue` prop. */\n isNextVisibleRangeInvalid(): boolean\n}\n\nexport interface CalendarState extends CalendarStateBase {\n /** The currently selected date. */\n readonly value: CalendarDate,\n /** Sets the currently selected date. */\n setValue(value: CalendarDate): void\n}\n\nexport interface RangeCalendarState extends CalendarStateBase {\n /** The currently selected date range. */\n readonly value: RangeValue<DateValue>,\n /** Sets the currently selected date range. */\n setValue(value: RangeValue<DateValue>): void,\n /** Highlights the given date during selection, e.g. by hovering or dragging. */\n highlightDate(date: CalendarDate): void,\n /** The current anchor date that the user clicked on to begin range selection. */\n readonly anchorDate: CalendarDate | null,\n /** Sets the anchor date that the user clicked on to begin range selection. */\n setAnchorDate(date: CalendarDate | null): void,\n /** The currently highlighted date range. */\n readonly highlightedRange: RangeValue<CalendarDate>,\n /** Whether the user is currently dragging over the calendar. */\n readonly isDragging: boolean,\n /** Sets whether the user is dragging over the calendar. */\n setDragging(isDragging: boolean): void\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {alignCenter, alignEnd, alignStart, constrainStart, constrainValue, isInvalid} from './utils';\nimport {\n Calendar,\n CalendarDate,\n DateDuration,\n DateFormatter,\n GregorianCalendar,\n isSameDay,\n toCalendar,\n toCalendarDate,\n today\n} from '@internationalized/date';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from './types';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\ninterface CalendarStateOptions extends CalendarProps<DateValue> {\n /** The locale to display and edit the value according to. */\n locale: string,\n /**\n * A function that creates a [Calendar](../internationalized/date/Calendar.html)\n * object for a given calendar identifier. Such a function may be imported from the\n * `@internationalized/date` package, or manually implemented to include support for\n * only certain calendars.\n */\n createCalendar: (name: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration,\n /** Determines how to align the initial selection relative to the visible date range. */\n selectionAlignment?: 'start' | 'center' | 'end'\n}\n\n/**\n * Provides state management for a calendar component.\n * A calendar displays one or more date grids and allows users to select a single date.\n */\nexport function useCalendarState(props: CalendarStateOptions): CalendarState {\n let defaultFormatter = useMemo(() => new DateFormatter(props.locale), [props.locale]);\n let resolvedOptions = useMemo(() => defaultFormatter.resolvedOptions(), [defaultFormatter]);\n let {\n locale,\n createCalendar,\n visibleDuration = {months: 1},\n minValue,\n maxValue,\n selectionAlignment\n } = props;\n\n let calendar = useMemo(() => createCalendar(resolvedOptions.calendar), [createCalendar, resolvedOptions.calendar]);\n\n let [value, setControlledValue] = useControlledState<DateValue>(props.value, props.defaultValue, props.onChange);\n let calendarDateValue = useMemo(() => value ? toCalendar(toCalendarDate(value), calendar) : null, [value, calendar]);\n let timeZone = useMemo(() => value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone, [value, resolvedOptions.timeZone]);\n let focusedCalendarDate = useMemo(() => (\n props.focusedValue\n ? constrainValue(toCalendar(toCalendarDate(props.focusedValue), calendar), minValue, maxValue)\n : undefined\n ), [props.focusedValue, calendar, minValue, maxValue]);\n let defaultFocusedCalendarDate = useMemo(() => (\n constrainValue(\n props.defaultFocusedValue\n ? toCalendar(toCalendarDate(props.defaultFocusedValue), calendar)\n : calendarDateValue || toCalendar(today(timeZone), calendar),\n minValue,\n maxValue\n )\n ), [props.defaultFocusedValue, calendarDateValue, timeZone, calendar, minValue, maxValue]);\n let [focusedDate, setFocusedDate] = useControlledState(focusedCalendarDate, defaultFocusedCalendarDate, props.onFocusChange);\n let [startDate, setStartDate] = useState(() => {\n switch (selectionAlignment) {\n case 'start':\n return alignStart(focusedDate, visibleDuration, locale, minValue, maxValue);\n case 'end':\n return alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue);\n case 'center':\n default:\n return alignCenter(focusedDate, visibleDuration, locale, minValue, maxValue);\n }\n });\n let [isFocused, setFocused] = useState(props.autoFocus || false);\n\n let endDate = useMemo(() => startDate.add(visibleDuration).subtract({days: 1}), [startDate, visibleDuration]);\n\n // Reset focused date and visible range when calendar changes.\n let lastCalendarIdentifier = useRef(calendar.identifier);\n if (calendar.identifier !== lastCalendarIdentifier.current) {\n let newFocusedDate = toCalendar(focusedDate, calendar);\n setStartDate(alignCenter(newFocusedDate, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(newFocusedDate);\n lastCalendarIdentifier.current = calendar.identifier;\n }\n\n if (isInvalid(focusedDate, minValue, maxValue)) {\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n setFocusedDate(constrainValue(focusedDate, minValue, maxValue));\n } else if (focusedDate.compare(startDate) < 0) {\n setStartDate(alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue));\n } else if (focusedDate.compare(startDate.add(visibleDuration)) >= 0) {\n setStartDate(alignStart(focusedDate, visibleDuration, locale, minValue, maxValue));\n }\n\n // Sets focus to a specific cell date\n function focusCell(date: CalendarDate) {\n date = constrainValue(date, minValue, maxValue);\n setFocusedDate(date);\n }\n\n function setValue(newValue: CalendarDate) {\n if (!props.isDisabled && !props.isReadOnly) {\n // The display calendar should not have any effect on the emitted value.\n // Emit dates in the same calendar as the original value, if any, otherwise gregorian.\n newValue = toCalendar(newValue, value?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (value && 'hour' in value) {\n setControlledValue(value.set(newValue));\n } else {\n setControlledValue(newValue);\n }\n }\n }\n\n return {\n isDisabled: props.isDisabled,\n isReadOnly: props.isReadOnly,\n value: calendarDateValue,\n setValue,\n visibleRange: {\n start: startDate,\n end: endDate\n },\n focusedDate,\n timeZone,\n setFocusedDate(date) {\n focusCell(date);\n setFocused(true);\n },\n focusNextDay() {\n focusCell(focusedDate.add({days: 1}));\n },\n focusPreviousDay() {\n focusCell(focusedDate.subtract({days: 1}));\n },\n focusNextRow() {\n if (visibleDuration.days) {\n this.focusNextPage();\n } else if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n focusCell(focusedDate.add({weeks: 1}));\n }\n },\n focusPreviousRow() {\n if (visibleDuration.days) {\n this.focusPreviousPage();\n } else if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n focusCell(focusedDate.subtract({weeks: 1}));\n }\n },\n focusNextPage() {\n let start = startDate.add(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.add(visibleDuration), minValue, maxValue));\n setStartDate(constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue));\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n setStartDate(constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue));\n },\n focusPageStart() {\n focusCell(startDate);\n },\n focusPageEnd() {\n focusCell(endDate);\n },\n focusNextSection() {\n if (visibleDuration.days) {\n this.focusNextPage();\n } else if (visibleDuration.weeks) {\n focusCell(focusedDate.add({months: 1}));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(focusedDate.add({years: 1}));\n }\n },\n focusPreviousSection() {\n if (visibleDuration.days) {\n this.focusPreviousPage();\n } else if (visibleDuration.weeks) {\n focusCell(focusedDate.subtract({months: 1}));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(focusedDate.subtract({years: 1}));\n }\n },\n selectFocusedDate() {\n setValue(focusedDate);\n },\n selectDate(date) {\n setValue(date);\n },\n isFocused,\n setFocused,\n isInvalid(date) {\n return isInvalid(date, minValue, maxValue);\n },\n isSelected(date) {\n return calendarDateValue != null && isSameDay(date, calendarDateValue) && !this.isCellDisabled(date) && !this.isCellUnavailable(date);\n },\n isCellFocused(date) {\n return isFocused && focusedDate && isSameDay(date, focusedDate);\n },\n isCellDisabled(date) {\n return props.isDisabled || date.compare(startDate) < 0 || date.compare(endDate) > 0 || this.isInvalid(date, minValue, maxValue);\n },\n isCellUnavailable(date) {\n return props.isDateUnavailable && props.isDateUnavailable(date);\n },\n isPreviousVisibleRangeInvalid() {\n return this.isInvalid(startDate.subtract({days: 1}), minValue, maxValue);\n },\n isNextVisibleRangeInvalid() {\n return this.isInvalid(endDate.add({days: 1}), minValue, maxValue);\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {\n CalendarDate,\n DateDuration,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate\n} from '@internationalized/date';\nimport {DateValue} from '@react-types/calendar';\n\nexport function isInvalid(date: CalendarDate, minValue: DateValue, maxValue: DateValue) {\n return (minValue != null && date.compare(minValue) < 0) ||\n (maxValue != null && date.compare(maxValue) > 0);\n}\n\nexport function alignCenter(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let halfDuration: DateDuration = {};\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2);\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--;\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignStart(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n // align to the start of the largest unit\n let aligned = date;\n if (duration.years) {\n aligned = startOfYear(date);\n } else if (duration.months) {\n aligned = startOfMonth(date);\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale);\n }\n\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignEnd(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let d = {...duration};\n // subtract 1 from the smallest unit\n if (duration.days) {\n d.days--;\n } else if (duration.weeks) {\n d.weeks--;\n } else if (duration.months) {\n d.months--;\n } else if (duration.years) {\n d.years--;\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function constrainStart(\n date: CalendarDate,\n aligned: CalendarDate,\n duration: DateDuration,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue) {\n if (minValue && date.compare(minValue) >= 0) {\n aligned = maxDate(\n aligned,\n alignStart(toCalendarDate(minValue), duration, locale)\n );\n }\n\n if (maxValue && date.compare(maxValue) <= 0) {\n aligned = minDate(\n aligned,\n alignEnd(toCalendarDate(maxValue), duration, locale)\n );\n }\n\n return aligned;\n}\n\nexport function constrainValue(date: CalendarDate, minValue: DateValue, maxValue: DateValue) {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue));\n }\n\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue));\n }\n\n return date;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {alignCenter, isInvalid} from './utils';\nimport {Calendar, CalendarDate, DateDuration, GregorianCalendar, isEqualDay, maxDate, minDate, toCalendar, toCalendarDate} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from './types';\nimport {DateRange, DateValue} from '@react-types/calendar';\nimport {RangeCalendarProps} from '@react-types/calendar';\nimport {RangeValue} from '@react-types/shared';\nimport {useCalendarState} from './useCalendarState';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\ninterface RangeCalendarStateOptions extends RangeCalendarProps<DateValue> {\n /** The locale to display and edit the value according to. */\n locale: string,\n /**\n * A function that creates a [Calendar](../internationalized/date/Calendar.html)\n * object for a given calendar identifier. Such a function may be imported from the\n * `@internationalized/date` package, or manually implemented to include support for\n * only certain calendars.\n */\n createCalendar: (name: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration\n}\n\n/**\n * Provides state management for a range calendar component.\n * A range calendar displays one or more date grids and allows users to select a contiguous range of dates.\n */\nexport function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState {\n let {value: valueProp, defaultValue, onChange, createCalendar, locale, visibleDuration = {months: 1}, minValue, maxValue, ...calendarProps} = props;\n let [value, setValue] = useControlledState<DateRange>(\n valueProp,\n defaultValue || null,\n onChange\n );\n\n let [anchorDate, setAnchorDateState] = useState(null);\n let alignment: 'center' | 'start' = 'center';\n if (value && value.start && value.end) {\n let start = alignCenter(toCalendarDate(value.start), visibleDuration, locale, minValue, maxValue);\n let end = start.add(visibleDuration).subtract({days: 1});\n\n if (value.end.compare(end) > 0) {\n alignment = 'start';\n }\n }\n\n // Available range must be stored in a ref so we have access to the updated version immediately in `isInvalid`.\n let availableRangeRef = useRef<RangeValue<DateValue>>(null);\n let [availableRange, setAvailableRange] = useState<RangeValue<DateValue>>(null);\n let min = useMemo(() => maxDate(minValue, availableRange?.start), [minValue, availableRange]);\n let max = useMemo(() => minDate(maxValue, availableRange?.end), [maxValue, availableRange]);\n\n let calendar = useCalendarState({\n ...calendarProps,\n value: value && value.start,\n createCalendar,\n locale,\n visibleDuration,\n minValue: min,\n maxValue: max,\n selectionAlignment: alignment\n });\n\n let updateAvailableRange = (date) => {\n if (date && props.isDateUnavailable && !props.allowsNonContiguousRanges) {\n availableRangeRef.current = {\n start: nextUnavailableDate(date, calendar, -1),\n end: nextUnavailableDate(date, calendar, 1)\n };\n setAvailableRange(availableRangeRef.current);\n } else {\n availableRangeRef.current = null;\n setAvailableRange(null);\n }\n };\n\n // If the visible range changes, we need to update the available range.\n let lastVisibleRange = useRef(calendar.visibleRange);\n if (!isEqualDay(calendar.visibleRange.start, lastVisibleRange.current.start) || !isEqualDay(calendar.visibleRange.end, lastVisibleRange.current.end)) {\n updateAvailableRange(anchorDate);\n lastVisibleRange.current = calendar.visibleRange;\n }\n\n let setAnchorDate = (date: CalendarDate) => {\n if (date) {\n setAnchorDateState(date);\n updateAvailableRange(date);\n } else {\n setAnchorDateState(null);\n updateAvailableRange(null);\n }\n };\n\n let highlightedRange = anchorDate ? makeRange(anchorDate, calendar.focusedDate) : value && makeRange(value.start, value.end);\n let selectDate = (date: CalendarDate) => {\n if (props.isReadOnly) {\n return;\n }\n\n if (!anchorDate) {\n setAnchorDate(date);\n } else {\n let range = makeRange(anchorDate, date);\n setValue({\n start: convertValue(range.start, value?.start),\n end: convertValue(range.end, value?.end)\n });\n setAnchorDate(null);\n }\n };\n\n let [isDragging, setDragging] = useState(false);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n selectFocusedDate() {\n selectDate(calendar.focusedDate);\n },\n selectDate,\n highlightDate(date) {\n if (anchorDate) {\n calendar.setFocusedDate(date);\n }\n },\n isSelected(date) {\n return highlightedRange && date.compare(highlightedRange.start) >= 0 && date.compare(highlightedRange.end) <= 0 && !calendar.isCellDisabled(date) && !calendar.isCellUnavailable(date);\n },\n isInvalid(date) {\n return calendar.isInvalid(date) || isInvalid(date, availableRangeRef.current?.start, availableRangeRef.current?.end);\n },\n isDragging,\n setDragging\n };\n}\n\nfunction makeRange(start: DateValue, end: DateValue): RangeValue<CalendarDate> {\n if (!start || !end) {\n return null;\n }\n\n if (end.compare(start) < 0) {\n [start, end] = [end, start];\n }\n\n return {start: toCalendarDate(start), end: toCalendarDate(end)};\n}\n\nfunction convertValue(newValue: CalendarDate, oldValue: DateValue) {\n // The display calendar should not have any effect on the emitted value.\n // Emit dates in the same calendar as the original value, if any, otherwise gregorian.\n newValue = toCalendar(newValue, oldValue?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (oldValue && 'hour' in oldValue) {\n return oldValue.set(newValue);\n }\n\n return newValue;\n}\n\nfunction nextUnavailableDate(anchorDate: CalendarDate, state: CalendarState, dir: number) {\n let nextDate = anchorDate.add({days: dir});\n while (\n (dir < 0 ? nextDate.compare(state.visibleRange.start) >= 0 : nextDate.compare(state.visibleRange.end) <= 0) &&\n !state.isCellUnavailable(nextDate)\n ) {\n nextDate = nextDate.add({days: dir});\n }\n\n if (state.isCellUnavailable(nextDate)) {\n return nextDate.add({days: -dir});\n }\n\n return null;\n}\n"],"names":[],"version":3,"file":"main.js.map"}