@react-stately/calendar 3.0.5 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,522 @@
1
+ import {DateFormatter as $keQhS$DateFormatter, toCalendar as $keQhS$toCalendar, toCalendarDate as $keQhS$toCalendarDate, today as $keQhS$today, GregorianCalendar as $keQhS$GregorianCalendar, startOfWeek as $keQhS$startOfWeek, startOfMonth as $keQhS$startOfMonth, endOfWeek as $keQhS$endOfWeek, endOfMonth as $keQhS$endOfMonth, isSameDay as $keQhS$isSameDay, getDayOfWeek as $keQhS$getDayOfWeek, startOfYear as $keQhS$startOfYear, maxDate as $keQhS$maxDate, minDate as $keQhS$minDate, isEqualDay as $keQhS$isEqualDay} from "@internationalized/date";
2
+ import {useControlledState as $keQhS$useControlledState} from "@react-stately/utils";
3
+ import {useMemo as $keQhS$useMemo, useState as $keQhS$useState, useRef as $keQhS$useRef} from "react";
4
+
5
+ /*
6
+ * Copyright 2020 Adobe. All rights reserved.
7
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License. You may obtain a copy
9
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software distributed under
12
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
13
+ * OF ANY KIND, either express or implied. See the License for the specific language
14
+ * governing permissions and limitations under the License.
15
+ */ /*
16
+ * Copyright 2020 Adobe. All rights reserved.
17
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
18
+ * you may not use this file except in compliance with the License. You may obtain a copy
19
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
20
+ *
21
+ * Unless required by applicable law or agreed to in writing, software distributed under
22
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
23
+ * OF ANY KIND, either express or implied. See the License for the specific language
24
+ * governing permissions and limitations under the License.
25
+ */ /*
26
+ * Copyright 2020 Adobe. All rights reserved.
27
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
28
+ * you may not use this file except in compliance with the License. You may obtain a copy
29
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
30
+ *
31
+ * Unless required by applicable law or agreed to in writing, software distributed under
32
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
33
+ * OF ANY KIND, either express or implied. See the License for the specific language
34
+ * governing permissions and limitations under the License.
35
+ */
36
+ function $f62d864046160412$export$eac50920cf2fd59a(date, minValue, maxValue) {
37
+ return minValue != null && date.compare(minValue) < 0 || maxValue != null && date.compare(maxValue) > 0;
38
+ }
39
+ function $f62d864046160412$export$f4a51ff076cc9a09(date, duration, locale, minValue, maxValue) {
40
+ let halfDuration = {};
41
+ for(let key in duration){
42
+ halfDuration[key] = Math.floor(duration[key] / 2);
43
+ if (halfDuration[key] > 0 && duration[key] % 2 === 0) halfDuration[key]--;
44
+ }
45
+ let aligned = $f62d864046160412$export$144a00ba6044eb9(date, duration, locale).subtract(halfDuration);
46
+ return $f62d864046160412$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue);
47
+ }
48
+ function $f62d864046160412$export$144a00ba6044eb9(date, duration, locale, minValue, maxValue) {
49
+ // align to the start of the largest unit
50
+ let aligned = date;
51
+ if (duration.years) aligned = (0, $keQhS$startOfYear)(date);
52
+ else if (duration.months) aligned = (0, $keQhS$startOfMonth)(date);
53
+ else if (duration.weeks) aligned = (0, $keQhS$startOfWeek)(date, locale);
54
+ return $f62d864046160412$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue);
55
+ }
56
+ function $f62d864046160412$export$530edbfc915b2b04(date, duration, locale, minValue, maxValue) {
57
+ let d = {
58
+ ...duration
59
+ };
60
+ // subtract 1 from the smallest unit
61
+ if (duration.days) d.days--;
62
+ else if (duration.weeks) d.weeks--;
63
+ else if (duration.months) d.months--;
64
+ else if (duration.years) d.years--;
65
+ let aligned = $f62d864046160412$export$144a00ba6044eb9(date, duration, locale).subtract(d);
66
+ return $f62d864046160412$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue);
67
+ }
68
+ function $f62d864046160412$export$5bb865b12696a77d(date, aligned, duration, locale, minValue, maxValue) {
69
+ if (minValue && date.compare(minValue) >= 0) aligned = (0, $keQhS$maxDate)(aligned, $f62d864046160412$export$144a00ba6044eb9((0, $keQhS$toCalendarDate)(minValue), duration, locale));
70
+ if (maxValue && date.compare(maxValue) <= 0) aligned = (0, $keQhS$minDate)(aligned, $f62d864046160412$export$530edbfc915b2b04((0, $keQhS$toCalendarDate)(maxValue), duration, locale));
71
+ return aligned;
72
+ }
73
+ function $f62d864046160412$export$4f5203c0d889109e(date, minValue, maxValue) {
74
+ if (minValue) date = (0, $keQhS$maxDate)(date, (0, $keQhS$toCalendarDate)(minValue));
75
+ if (maxValue) date = (0, $keQhS$minDate)(date, (0, $keQhS$toCalendarDate)(maxValue));
76
+ return date;
77
+ }
78
+ function $f62d864046160412$export$a1d3911297b952d7(date, minValue, isDateUnavailable) {
79
+ if (!isDateUnavailable) return date;
80
+ while(date.compare(minValue) >= 0 && isDateUnavailable(date))date = date.subtract({
81
+ days: 1
82
+ });
83
+ if (date.compare(minValue) >= 0) return date;
84
+ }
85
+
86
+
87
+
88
+
89
+
90
+ function $131cf43a05231e1e$export$6d095e787d2b5e1f(props) {
91
+ let defaultFormatter = (0, $keQhS$useMemo)(()=>new (0, $keQhS$DateFormatter)(props.locale), [
92
+ props.locale
93
+ ]);
94
+ let resolvedOptions = (0, $keQhS$useMemo)(()=>defaultFormatter.resolvedOptions(), [
95
+ defaultFormatter
96
+ ]);
97
+ let { locale: locale , createCalendar: createCalendar , visibleDuration: visibleDuration = {
98
+ months: 1
99
+ } , minValue: minValue , maxValue: maxValue , selectionAlignment: selectionAlignment , isDateUnavailable: isDateUnavailable } = props;
100
+ let calendar = (0, $keQhS$useMemo)(()=>createCalendar(resolvedOptions.calendar), [
101
+ createCalendar,
102
+ resolvedOptions.calendar
103
+ ]);
104
+ let [value, setControlledValue] = (0, $keQhS$useControlledState)(props.value, props.defaultValue, props.onChange);
105
+ let calendarDateValue = (0, $keQhS$useMemo)(()=>value ? (0, $keQhS$toCalendar)((0, $keQhS$toCalendarDate)(value), calendar) : null, [
106
+ value,
107
+ calendar
108
+ ]);
109
+ let timeZone = (0, $keQhS$useMemo)(()=>value && "timeZone" in value ? value.timeZone : resolvedOptions.timeZone, [
110
+ value,
111
+ resolvedOptions.timeZone
112
+ ]);
113
+ let focusedCalendarDate = (0, $keQhS$useMemo)(()=>props.focusedValue ? (0, $f62d864046160412$export$4f5203c0d889109e)((0, $keQhS$toCalendar)((0, $keQhS$toCalendarDate)(props.focusedValue), calendar), minValue, maxValue) : undefined, [
114
+ props.focusedValue,
115
+ calendar,
116
+ minValue,
117
+ maxValue
118
+ ]);
119
+ let defaultFocusedCalendarDate = (0, $keQhS$useMemo)(()=>(0, $f62d864046160412$export$4f5203c0d889109e)(props.defaultFocusedValue ? (0, $keQhS$toCalendar)((0, $keQhS$toCalendarDate)(props.defaultFocusedValue), calendar) : calendarDateValue || (0, $keQhS$toCalendar)((0, $keQhS$today)(timeZone), calendar), minValue, maxValue), [
120
+ props.defaultFocusedValue,
121
+ calendarDateValue,
122
+ timeZone,
123
+ calendar,
124
+ minValue,
125
+ maxValue
126
+ ]);
127
+ let [focusedDate, setFocusedDate] = (0, $keQhS$useControlledState)(focusedCalendarDate, defaultFocusedCalendarDate, props.onFocusChange);
128
+ let [startDate, setStartDate] = (0, $keQhS$useState)(()=>{
129
+ switch(selectionAlignment){
130
+ case "start":
131
+ return (0, $f62d864046160412$export$144a00ba6044eb9)(focusedDate, visibleDuration, locale, minValue, maxValue);
132
+ case "end":
133
+ return (0, $f62d864046160412$export$530edbfc915b2b04)(focusedDate, visibleDuration, locale, minValue, maxValue);
134
+ case "center":
135
+ default:
136
+ return (0, $f62d864046160412$export$f4a51ff076cc9a09)(focusedDate, visibleDuration, locale, minValue, maxValue);
137
+ }
138
+ });
139
+ let [isFocused, setFocused] = (0, $keQhS$useState)(props.autoFocus || false);
140
+ let endDate = (0, $keQhS$useMemo)(()=>{
141
+ let duration = {
142
+ ...visibleDuration
143
+ };
144
+ if (duration.days) duration.days--;
145
+ else duration.days = -1;
146
+ return startDate.add(duration);
147
+ }, [
148
+ startDate,
149
+ visibleDuration
150
+ ]);
151
+ // Reset focused date and visible range when calendar changes.
152
+ let lastCalendarIdentifier = (0, $keQhS$useRef)(calendar.identifier);
153
+ if (calendar.identifier !== lastCalendarIdentifier.current) {
154
+ let newFocusedDate = (0, $keQhS$toCalendar)(focusedDate, calendar);
155
+ setStartDate((0, $f62d864046160412$export$f4a51ff076cc9a09)(newFocusedDate, visibleDuration, locale, minValue, maxValue));
156
+ setFocusedDate(newFocusedDate);
157
+ lastCalendarIdentifier.current = calendar.identifier;
158
+ }
159
+ if ((0, $f62d864046160412$export$eac50920cf2fd59a)(focusedDate, minValue, maxValue)) // If the focused date was moved to an invalid value, it can't be focused, so constrain it.
160
+ setFocusedDate((0, $f62d864046160412$export$4f5203c0d889109e)(focusedDate, minValue, maxValue));
161
+ else if (focusedDate.compare(startDate) < 0) setStartDate((0, $f62d864046160412$export$530edbfc915b2b04)(focusedDate, visibleDuration, locale, minValue, maxValue));
162
+ else if (focusedDate.compare(endDate) > 0) setStartDate((0, $f62d864046160412$export$144a00ba6044eb9)(focusedDate, visibleDuration, locale, minValue, maxValue));
163
+ // Sets focus to a specific cell date
164
+ function focusCell(date) {
165
+ date = (0, $f62d864046160412$export$4f5203c0d889109e)(date, minValue, maxValue);
166
+ setFocusedDate(date);
167
+ }
168
+ function setValue(newValue) {
169
+ if (!props.isDisabled && !props.isReadOnly) {
170
+ newValue = (0, $f62d864046160412$export$4f5203c0d889109e)(newValue, minValue, maxValue);
171
+ newValue = (0, $f62d864046160412$export$a1d3911297b952d7)(newValue, startDate, isDateUnavailable);
172
+ if (!newValue) return;
173
+ // The display calendar should not have any effect on the emitted value.
174
+ // Emit dates in the same calendar as the original value, if any, otherwise gregorian.
175
+ newValue = (0, $keQhS$toCalendar)(newValue, (value === null || value === void 0 ? void 0 : value.calendar) || new (0, $keQhS$GregorianCalendar)());
176
+ // Preserve time if the input value had one.
177
+ if (value && "hour" in value) setControlledValue(value.set(newValue));
178
+ else setControlledValue(newValue);
179
+ }
180
+ }
181
+ let isUnavailable = (0, $keQhS$useMemo)(()=>{
182
+ if (!calendarDateValue) return false;
183
+ if (isDateUnavailable && isDateUnavailable(calendarDateValue)) return true;
184
+ return (0, $f62d864046160412$export$eac50920cf2fd59a)(calendarDateValue, minValue, maxValue);
185
+ }, [
186
+ calendarDateValue,
187
+ isDateUnavailable,
188
+ minValue,
189
+ maxValue
190
+ ]);
191
+ let validationState = props.validationState || (isUnavailable ? "invalid" : null);
192
+ return {
193
+ isDisabled: props.isDisabled,
194
+ isReadOnly: props.isReadOnly,
195
+ value: calendarDateValue,
196
+ setValue: setValue,
197
+ visibleRange: {
198
+ start: startDate,
199
+ end: endDate
200
+ },
201
+ minValue: minValue,
202
+ maxValue: maxValue,
203
+ focusedDate: focusedDate,
204
+ timeZone: timeZone,
205
+ validationState: validationState,
206
+ setFocusedDate (date) {
207
+ focusCell(date);
208
+ setFocused(true);
209
+ },
210
+ focusNextDay () {
211
+ focusCell(focusedDate.add({
212
+ days: 1
213
+ }));
214
+ },
215
+ focusPreviousDay () {
216
+ focusCell(focusedDate.subtract({
217
+ days: 1
218
+ }));
219
+ },
220
+ focusNextRow () {
221
+ if (visibleDuration.days) this.focusNextPage();
222
+ else if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) focusCell(focusedDate.add({
223
+ weeks: 1
224
+ }));
225
+ },
226
+ focusPreviousRow () {
227
+ if (visibleDuration.days) this.focusPreviousPage();
228
+ else if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) focusCell(focusedDate.subtract({
229
+ weeks: 1
230
+ }));
231
+ },
232
+ focusNextPage () {
233
+ let start = startDate.add(visibleDuration);
234
+ setFocusedDate((0, $f62d864046160412$export$4f5203c0d889109e)(focusedDate.add(visibleDuration), minValue, maxValue));
235
+ setStartDate((0, $f62d864046160412$export$144a00ba6044eb9)((0, $f62d864046160412$export$5bb865b12696a77d)(focusedDate, start, visibleDuration, locale, minValue, maxValue), visibleDuration, locale));
236
+ },
237
+ focusPreviousPage () {
238
+ let start = startDate.subtract(visibleDuration);
239
+ setFocusedDate((0, $f62d864046160412$export$4f5203c0d889109e)(focusedDate.subtract(visibleDuration), minValue, maxValue));
240
+ setStartDate((0, $f62d864046160412$export$144a00ba6044eb9)((0, $f62d864046160412$export$5bb865b12696a77d)(focusedDate, start, visibleDuration, locale, minValue, maxValue), visibleDuration, locale));
241
+ },
242
+ focusSectionStart () {
243
+ if (visibleDuration.days) focusCell(startDate);
244
+ else if (visibleDuration.weeks) focusCell((0, $keQhS$startOfWeek)(focusedDate, locale));
245
+ else if (visibleDuration.months || visibleDuration.years) focusCell((0, $keQhS$startOfMonth)(focusedDate));
246
+ },
247
+ focusSectionEnd () {
248
+ if (visibleDuration.days) focusCell(endDate);
249
+ else if (visibleDuration.weeks) focusCell((0, $keQhS$endOfWeek)(focusedDate, locale));
250
+ else if (visibleDuration.months || visibleDuration.years) focusCell((0, $keQhS$endOfMonth)(focusedDate));
251
+ },
252
+ focusNextSection (larger) {
253
+ if (!larger && !visibleDuration.days) {
254
+ focusCell(focusedDate.add($131cf43a05231e1e$var$unitDuration(visibleDuration)));
255
+ return;
256
+ }
257
+ if (visibleDuration.days) this.focusNextPage();
258
+ else if (visibleDuration.weeks) focusCell(focusedDate.add({
259
+ months: 1
260
+ }));
261
+ else if (visibleDuration.months || visibleDuration.years) focusCell(focusedDate.add({
262
+ years: 1
263
+ }));
264
+ },
265
+ focusPreviousSection (larger) {
266
+ if (!larger && !visibleDuration.days) {
267
+ focusCell(focusedDate.subtract($131cf43a05231e1e$var$unitDuration(visibleDuration)));
268
+ return;
269
+ }
270
+ if (visibleDuration.days) this.focusPreviousPage();
271
+ else if (visibleDuration.weeks) focusCell(focusedDate.subtract({
272
+ months: 1
273
+ }));
274
+ else if (visibleDuration.months || visibleDuration.years) focusCell(focusedDate.subtract({
275
+ years: 1
276
+ }));
277
+ },
278
+ selectFocusedDate () {
279
+ setValue(focusedDate);
280
+ },
281
+ selectDate (date) {
282
+ setValue(date);
283
+ },
284
+ isFocused: isFocused,
285
+ setFocused: setFocused,
286
+ isInvalid (date) {
287
+ return (0, $f62d864046160412$export$eac50920cf2fd59a)(date, minValue, maxValue);
288
+ },
289
+ isSelected (date) {
290
+ return calendarDateValue != null && (0, $keQhS$isSameDay)(date, calendarDateValue) && !this.isCellDisabled(date) && !this.isCellUnavailable(date);
291
+ },
292
+ isCellFocused (date) {
293
+ return isFocused && focusedDate && (0, $keQhS$isSameDay)(date, focusedDate);
294
+ },
295
+ isCellDisabled (date) {
296
+ return props.isDisabled || date.compare(startDate) < 0 || date.compare(endDate) > 0 || this.isInvalid(date, minValue, maxValue);
297
+ },
298
+ isCellUnavailable (date) {
299
+ return props.isDateUnavailable && props.isDateUnavailable(date);
300
+ },
301
+ isPreviousVisibleRangeInvalid () {
302
+ let prev = startDate.subtract({
303
+ days: 1
304
+ });
305
+ return (0, $keQhS$isSameDay)(prev, startDate) || this.isInvalid(prev, minValue, maxValue);
306
+ },
307
+ isNextVisibleRangeInvalid () {
308
+ // Adding may return the same date if we reached the end of time
309
+ // according to the calendar system (e.g. 9999-12-31).
310
+ let next = endDate.add({
311
+ days: 1
312
+ });
313
+ return (0, $keQhS$isSameDay)(next, endDate) || this.isInvalid(next, minValue, maxValue);
314
+ },
315
+ getDatesInWeek (weekIndex, from = startDate) {
316
+ // let date = startOfWeek(from, locale);
317
+ let date = from.add({
318
+ weeks: weekIndex
319
+ });
320
+ let dates = [];
321
+ date = (0, $keQhS$startOfWeek)(date, locale);
322
+ // startOfWeek will clamp dates within the calendar system's valid range, which may
323
+ // start in the middle of a week. In this case, add null placeholders.
324
+ let dayOfWeek = (0, $keQhS$getDayOfWeek)(date, locale);
325
+ for(let i = 0; i < dayOfWeek; i++)dates.push(null);
326
+ while(dates.length < 7){
327
+ dates.push(date);
328
+ let nextDate = date.add({
329
+ days: 1
330
+ });
331
+ if ((0, $keQhS$isSameDay)(date, nextDate)) break;
332
+ date = nextDate;
333
+ }
334
+ // Add null placeholders if at the end of the calendar system.
335
+ while(dates.length < 7)dates.push(null);
336
+ return dates;
337
+ }
338
+ };
339
+ }
340
+ function $131cf43a05231e1e$var$unitDuration(duration) {
341
+ let unit = {
342
+ ...duration
343
+ };
344
+ for(let key in duration)unit[key] = 1;
345
+ return unit;
346
+ }
347
+
348
+
349
+ /*
350
+ * Copyright 2020 Adobe. All rights reserved.
351
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
352
+ * you may not use this file except in compliance with the License. You may obtain a copy
353
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
354
+ *
355
+ * Unless required by applicable law or agreed to in writing, software distributed under
356
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
357
+ * OF ANY KIND, either express or implied. See the License for the specific language
358
+ * governing permissions and limitations under the License.
359
+ */
360
+
361
+
362
+
363
+
364
+ function $9a36b6ba2fb1a7c5$export$9a987164d97ecc90(props) {
365
+ let { value: valueProp , defaultValue: defaultValue , onChange: onChange , createCalendar: createCalendar , locale: locale , visibleDuration: visibleDuration = {
366
+ months: 1
367
+ } , minValue: minValue , maxValue: maxValue , ...calendarProps } = props;
368
+ let [value, setValue] = (0, $keQhS$useControlledState)(valueProp, defaultValue || null, onChange);
369
+ let [anchorDate, setAnchorDateState] = (0, $keQhS$useState)(null);
370
+ let alignment = "center";
371
+ if (value && value.start && value.end) {
372
+ let start = (0, $f62d864046160412$export$f4a51ff076cc9a09)((0, $keQhS$toCalendarDate)(value.start), visibleDuration, locale, minValue, maxValue);
373
+ let end = start.add(visibleDuration).subtract({
374
+ days: 1
375
+ });
376
+ if (value.end.compare(end) > 0) alignment = "start";
377
+ }
378
+ // Available range must be stored in a ref so we have access to the updated version immediately in `isInvalid`.
379
+ let availableRangeRef = (0, $keQhS$useRef)(null);
380
+ let [availableRange, setAvailableRange] = (0, $keQhS$useState)(null);
381
+ let min = (0, $keQhS$useMemo)(()=>{
382
+ return (0, $keQhS$maxDate)(minValue, availableRange === null || availableRange === void 0 ? void 0 : availableRange.start);
383
+ }, [
384
+ minValue,
385
+ availableRange
386
+ ]);
387
+ let max = (0, $keQhS$useMemo)(()=>{
388
+ return (0, $keQhS$minDate)(maxValue, availableRange === null || availableRange === void 0 ? void 0 : availableRange.end);
389
+ }, [
390
+ maxValue,
391
+ availableRange
392
+ ]);
393
+ let calendar = (0, $131cf43a05231e1e$export$6d095e787d2b5e1f)({
394
+ ...calendarProps,
395
+ value: value && value.start,
396
+ createCalendar: createCalendar,
397
+ locale: locale,
398
+ visibleDuration: visibleDuration,
399
+ minValue: min,
400
+ maxValue: max,
401
+ selectionAlignment: alignment
402
+ });
403
+ let updateAvailableRange = (date)=>{
404
+ if (date && props.isDateUnavailable && !props.allowsNonContiguousRanges) {
405
+ availableRangeRef.current = {
406
+ start: $9a36b6ba2fb1a7c5$var$nextUnavailableDate(date, calendar, -1),
407
+ end: $9a36b6ba2fb1a7c5$var$nextUnavailableDate(date, calendar, 1)
408
+ };
409
+ setAvailableRange(availableRangeRef.current);
410
+ } else {
411
+ availableRangeRef.current = null;
412
+ setAvailableRange(null);
413
+ }
414
+ };
415
+ // If the visible range changes, we need to update the available range.
416
+ let lastVisibleRange = (0, $keQhS$useRef)(calendar.visibleRange);
417
+ if (!(0, $keQhS$isEqualDay)(calendar.visibleRange.start, lastVisibleRange.current.start) || !(0, $keQhS$isEqualDay)(calendar.visibleRange.end, lastVisibleRange.current.end)) {
418
+ updateAvailableRange(anchorDate);
419
+ lastVisibleRange.current = calendar.visibleRange;
420
+ }
421
+ let setAnchorDate = (date)=>{
422
+ if (date) {
423
+ setAnchorDateState(date);
424
+ updateAvailableRange(date);
425
+ } else {
426
+ setAnchorDateState(null);
427
+ updateAvailableRange(null);
428
+ }
429
+ };
430
+ let highlightedRange = anchorDate ? $9a36b6ba2fb1a7c5$var$makeRange(anchorDate, calendar.focusedDate) : value && $9a36b6ba2fb1a7c5$var$makeRange(value.start, value.end);
431
+ let selectDate = (date)=>{
432
+ if (props.isReadOnly) return;
433
+ date = (0, $f62d864046160412$export$4f5203c0d889109e)(date, min, max);
434
+ date = (0, $f62d864046160412$export$a1d3911297b952d7)(date, calendar.visibleRange.start, props.isDateUnavailable);
435
+ if (!date) return;
436
+ if (!anchorDate) setAnchorDate(date);
437
+ else {
438
+ let range = $9a36b6ba2fb1a7c5$var$makeRange(anchorDate, date);
439
+ setValue({
440
+ start: $9a36b6ba2fb1a7c5$var$convertValue(range.start, value === null || value === void 0 ? void 0 : value.start),
441
+ end: $9a36b6ba2fb1a7c5$var$convertValue(range.end, value === null || value === void 0 ? void 0 : value.end)
442
+ });
443
+ setAnchorDate(null);
444
+ }
445
+ };
446
+ let [isDragging, setDragging] = (0, $keQhS$useState)(false);
447
+ let { isDateUnavailable: isDateUnavailable } = props;
448
+ let isInvalidSelection = (0, $keQhS$useMemo)(()=>{
449
+ if (!value || anchorDate) return false;
450
+ if (isDateUnavailable && (isDateUnavailable(value.start) || isDateUnavailable(value.end))) return true;
451
+ return (0, $f62d864046160412$export$eac50920cf2fd59a)(value.start, minValue, maxValue) || (0, $f62d864046160412$export$eac50920cf2fd59a)(value.end, minValue, maxValue);
452
+ }, [
453
+ isDateUnavailable,
454
+ value,
455
+ anchorDate,
456
+ minValue,
457
+ maxValue
458
+ ]);
459
+ let validationState = props.validationState || (isInvalidSelection ? "invalid" : null);
460
+ return {
461
+ ...calendar,
462
+ value: value,
463
+ setValue: setValue,
464
+ anchorDate: anchorDate,
465
+ setAnchorDate: setAnchorDate,
466
+ highlightedRange: highlightedRange,
467
+ validationState: validationState,
468
+ selectFocusedDate () {
469
+ selectDate(calendar.focusedDate);
470
+ },
471
+ selectDate: selectDate,
472
+ highlightDate (date) {
473
+ if (anchorDate) calendar.setFocusedDate(date);
474
+ },
475
+ isSelected (date) {
476
+ return highlightedRange && date.compare(highlightedRange.start) >= 0 && date.compare(highlightedRange.end) <= 0 && !calendar.isCellDisabled(date) && !calendar.isCellUnavailable(date);
477
+ },
478
+ isInvalid (date) {
479
+ var _availableRangeRef_current, _availableRangeRef_current1;
480
+ return calendar.isInvalid(date) || (0, $f62d864046160412$export$eac50920cf2fd59a)(date, (_availableRangeRef_current = availableRangeRef.current) === null || _availableRangeRef_current === void 0 ? void 0 : _availableRangeRef_current.start, (_availableRangeRef_current1 = availableRangeRef.current) === null || _availableRangeRef_current1 === void 0 ? void 0 : _availableRangeRef_current1.end);
481
+ },
482
+ isDragging: isDragging,
483
+ setDragging: setDragging
484
+ };
485
+ }
486
+ function $9a36b6ba2fb1a7c5$var$makeRange(start, end) {
487
+ if (!start || !end) return null;
488
+ if (end.compare(start) < 0) [start, end] = [
489
+ end,
490
+ start
491
+ ];
492
+ return {
493
+ start: (0, $keQhS$toCalendarDate)(start),
494
+ end: (0, $keQhS$toCalendarDate)(end)
495
+ };
496
+ }
497
+ function $9a36b6ba2fb1a7c5$var$convertValue(newValue, oldValue) {
498
+ // The display calendar should not have any effect on the emitted value.
499
+ // Emit dates in the same calendar as the original value, if any, otherwise gregorian.
500
+ newValue = (0, $keQhS$toCalendar)(newValue, (oldValue === null || oldValue === void 0 ? void 0 : oldValue.calendar) || new (0, $keQhS$GregorianCalendar)());
501
+ // Preserve time if the input value had one.
502
+ if (oldValue && "hour" in oldValue) return oldValue.set(newValue);
503
+ return newValue;
504
+ }
505
+ function $9a36b6ba2fb1a7c5$var$nextUnavailableDate(anchorDate, state, dir) {
506
+ let nextDate = anchorDate.add({
507
+ days: dir
508
+ });
509
+ while((dir < 0 ? nextDate.compare(state.visibleRange.start) >= 0 : nextDate.compare(state.visibleRange.end) <= 0) && !state.isCellUnavailable(nextDate))nextDate = nextDate.add({
510
+ days: dir
511
+ });
512
+ if (state.isCellUnavailable(nextDate)) return nextDate.add({
513
+ days: -dir
514
+ });
515
+ return null;
516
+ }
517
+
518
+
519
+
520
+
521
+ export {$131cf43a05231e1e$export$6d095e787d2b5e1f as useCalendarState, $9a36b6ba2fb1a7c5$export$9a987164d97ecc90 as useRangeCalendarState};
522
+ //# sourceMappingURL=module.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/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 {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\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, previousAvailableDate} from './utils';\nimport {\n Calendar,\n CalendarDate,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n getDayOfWeek,\n GregorianCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\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\nexport interface 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 isDateUnavailable\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(() => {\n let duration = {...visibleDuration};\n if (duration.days) {\n duration.days--;\n } else {\n duration.days = -1;\n }\n return startDate.add(duration);\n }, [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(endDate) > 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 newValue = constrainValue(newValue, minValue, maxValue);\n newValue = previousAvailableDate(newValue, startDate, isDateUnavailable);\n if (!newValue) {\n return;\n }\n\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 let isUnavailable = useMemo(() => {\n if (!calendarDateValue) {\n return false;\n }\n\n if (isDateUnavailable && isDateUnavailable(calendarDateValue)) {\n return true;\n }\n\n return isInvalid(calendarDateValue, minValue, maxValue);\n }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n let validationState = props.validationState || (isUnavailable ? 'invalid' : null);\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 minValue,\n maxValue,\n focusedDate,\n timeZone,\n validationState,\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(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusSectionStart() {\n if (visibleDuration.days) {\n focusCell(startDate);\n } else if (visibleDuration.weeks) {\n focusCell(startOfWeek(focusedDate, locale));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(startOfMonth(focusedDate));\n }\n },\n focusSectionEnd() {\n if (visibleDuration.days) {\n focusCell(endDate);\n } else if (visibleDuration.weeks) {\n focusCell(endOfWeek(focusedDate, locale));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(endOfMonth(focusedDate));\n }\n },\n focusNextSection(larger) {\n if (!larger && !visibleDuration.days) {\n focusCell(focusedDate.add(unitDuration(visibleDuration)));\n return;\n }\n\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(larger) {\n if (!larger && !visibleDuration.days) {\n focusCell(focusedDate.subtract(unitDuration(visibleDuration)));\n return;\n }\n\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 let prev = startDate.subtract({days: 1});\n return isSameDay(prev, startDate) || this.isInvalid(prev, minValue, maxValue);\n },\n isNextVisibleRangeInvalid() {\n // Adding may return the same date if we reached the end of time\n // according to the calendar system (e.g. 9999-12-31).\n let next = endDate.add({days: 1});\n return isSameDay(next, endDate) || this.isInvalid(next, minValue, maxValue);\n },\n getDatesInWeek(weekIndex, from = startDate) {\n // let date = startOfWeek(from, locale);\n let date = from.add({weeks: weekIndex});\n let dates = [];\n\n date = startOfWeek(date, locale);\n\n // startOfWeek will clamp dates within the calendar system's valid range, which may\n // start in the middle of a week. In this case, add null placeholders.\n let dayOfWeek = getDayOfWeek(date, locale);\n for (let i = 0; i < dayOfWeek; i++) {\n dates.push(null);\n }\n\n while (dates.length < 7) {\n dates.push(date);\n let nextDate = date.add({days: 1});\n if (isSameDay(date, nextDate)) {\n // If the next day is the same, we have hit the end of the calendar system.\n break;\n }\n date = nextDate;\n }\n\n // Add null placeholders if at the end of the calendar system.\n while (dates.length < 7) {\n dates.push(null);\n }\n\n return dates;\n }\n };\n}\n\nfunction unitDuration(duration: DateDuration) {\n let unit = {...duration};\n for (let key in duration) {\n unit[key] = 1;\n }\n return unit;\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: DateValue, 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\nexport function previousAvailableDate(date: CalendarDate, minValue: DateValue, isDateUnavailable: (date: CalendarDate) => boolean) {\n if (!isDateUnavailable) {\n return date;\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n date = date.subtract({days: 1});\n }\n\n if (date.compare(minValue) >= 0) {\n return date;\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 */\n\nimport {alignCenter, constrainValue, isInvalid, previousAvailableDate} 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\nexport interface 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 date = constrainValue(date, min, max);\n date = previousAvailableDate(date, calendar.visibleRange.start, props.isDateUnavailable);\n if (!date) {\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 let {isDateUnavailable} = props;\n let isInvalidSelection = useMemo(() => {\n if (!value || anchorDate) {\n return false;\n }\n\n if (isDateUnavailable && (isDateUnavailable(value.start) || isDateUnavailable(value.end))) {\n return true;\n }\n\n return isInvalid(value.start, minValue, maxValue) || isInvalid(value.end, minValue, maxValue);\n }, [isDateUnavailable, value, anchorDate, minValue, maxValue]);\n\n let validationState = props.validationState || (isInvalidSelection ? 'invalid' : null);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n validationState,\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"}
1
+ {"mappings":"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","sources":["packages/@react-stately/calendar/src/index.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 {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\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, previousAvailableDate} from './utils';\nimport {\n Calendar,\n CalendarDate,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n getDayOfWeek,\n GregorianCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\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\nexport interface CalendarStateOptions<T extends DateValue = DateValue> extends CalendarProps<T> {\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<T extends DateValue = DateValue>(props: CalendarStateOptions<T>): 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 isDateUnavailable\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(() => {\n let duration = {...visibleDuration};\n if (duration.days) {\n duration.days--;\n } else {\n duration.days = -1;\n }\n return startDate.add(duration);\n }, [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(endDate) > 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 newValue = constrainValue(newValue, minValue, maxValue);\n newValue = previousAvailableDate(newValue, startDate, isDateUnavailable);\n if (!newValue) {\n return;\n }\n\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 let isUnavailable = useMemo(() => {\n if (!calendarDateValue) {\n return false;\n }\n\n if (isDateUnavailable && isDateUnavailable(calendarDateValue)) {\n return true;\n }\n\n return isInvalid(calendarDateValue, minValue, maxValue);\n }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n let validationState = props.validationState || (isUnavailable ? 'invalid' : null);\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 minValue,\n maxValue,\n focusedDate,\n timeZone,\n validationState,\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(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusSectionStart() {\n if (visibleDuration.days) {\n focusCell(startDate);\n } else if (visibleDuration.weeks) {\n focusCell(startOfWeek(focusedDate, locale));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(startOfMonth(focusedDate));\n }\n },\n focusSectionEnd() {\n if (visibleDuration.days) {\n focusCell(endDate);\n } else if (visibleDuration.weeks) {\n focusCell(endOfWeek(focusedDate, locale));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(endOfMonth(focusedDate));\n }\n },\n focusNextSection(larger) {\n if (!larger && !visibleDuration.days) {\n focusCell(focusedDate.add(unitDuration(visibleDuration)));\n return;\n }\n\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(larger) {\n if (!larger && !visibleDuration.days) {\n focusCell(focusedDate.subtract(unitDuration(visibleDuration)));\n return;\n }\n\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 let prev = startDate.subtract({days: 1});\n return isSameDay(prev, startDate) || this.isInvalid(prev, minValue, maxValue);\n },\n isNextVisibleRangeInvalid() {\n // Adding may return the same date if we reached the end of time\n // according to the calendar system (e.g. 9999-12-31).\n let next = endDate.add({days: 1});\n return isSameDay(next, endDate) || this.isInvalid(next, minValue, maxValue);\n },\n getDatesInWeek(weekIndex, from = startDate) {\n // let date = startOfWeek(from, locale);\n let date = from.add({weeks: weekIndex});\n let dates = [];\n\n date = startOfWeek(date, locale);\n\n // startOfWeek will clamp dates within the calendar system's valid range, which may\n // start in the middle of a week. In this case, add null placeholders.\n let dayOfWeek = getDayOfWeek(date, locale);\n for (let i = 0; i < dayOfWeek; i++) {\n dates.push(null);\n }\n\n while (dates.length < 7) {\n dates.push(date);\n let nextDate = date.add({days: 1});\n if (isSameDay(date, nextDate)) {\n // If the next day is the same, we have hit the end of the calendar system.\n break;\n }\n date = nextDate;\n }\n\n // Add null placeholders if at the end of the calendar system.\n while (dates.length < 7) {\n dates.push(null);\n }\n\n return dates;\n }\n };\n}\n\nfunction unitDuration(duration: DateDuration) {\n let unit = {...duration};\n for (let key in duration) {\n unit[key] = 1;\n }\n return unit;\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: DateValue, 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\nexport function previousAvailableDate(date: CalendarDate, minValue: DateValue, isDateUnavailable: (date: CalendarDate) => boolean) {\n if (!isDateUnavailable) {\n return date;\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n date = date.subtract({days: 1});\n }\n\n if (date.compare(minValue) >= 0) {\n return date;\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 */\n\nimport {alignCenter, constrainValue, isInvalid, previousAvailableDate} 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\nexport interface RangeCalendarStateOptions<T extends DateValue = DateValue> extends RangeCalendarProps<T> {\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<T extends DateValue = 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 || 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 date = constrainValue(date, min, max);\n date = previousAvailableDate(date, calendar.visibleRange.start, props.isDateUnavailable);\n if (!date) {\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 let {isDateUnavailable} = props;\n let isInvalidSelection = useMemo(() => {\n if (!value || anchorDate) {\n return false;\n }\n\n if (isDateUnavailable && (isDateUnavailable(value.start) || isDateUnavailable(value.end))) {\n return true;\n }\n\n return isInvalid(value.start, minValue, maxValue) || isInvalid(value.end, minValue, maxValue);\n }, [isDateUnavailable, value, anchorDate, minValue, maxValue]);\n\n let validationState = props.validationState || (isInvalidSelection ? 'invalid' : null);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n validationState,\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"}
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-stately/calendar/src/index.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 {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\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, previousAvailableDate} from './utils';\nimport {\n Calendar,\n CalendarDate,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n getDayOfWeek,\n GregorianCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\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\nexport interface 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 isDateUnavailable\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(() => {\n let duration = {...visibleDuration};\n if (duration.days) {\n duration.days--;\n } else {\n duration.days = -1;\n }\n return startDate.add(duration);\n }, [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(endDate) > 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 newValue = constrainValue(newValue, minValue, maxValue);\n newValue = previousAvailableDate(newValue, startDate, isDateUnavailable);\n if (!newValue) {\n return;\n }\n\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 let isUnavailable = useMemo(() => {\n if (!calendarDateValue) {\n return false;\n }\n\n if (isDateUnavailable && isDateUnavailable(calendarDateValue)) {\n return true;\n }\n\n return isInvalid(calendarDateValue, minValue, maxValue);\n }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n let validationState = props.validationState || (isUnavailable ? 'invalid' : null);\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 minValue,\n maxValue,\n focusedDate,\n timeZone,\n validationState,\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(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusSectionStart() {\n if (visibleDuration.days) {\n focusCell(startDate);\n } else if (visibleDuration.weeks) {\n focusCell(startOfWeek(focusedDate, locale));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(startOfMonth(focusedDate));\n }\n },\n focusSectionEnd() {\n if (visibleDuration.days) {\n focusCell(endDate);\n } else if (visibleDuration.weeks) {\n focusCell(endOfWeek(focusedDate, locale));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(endOfMonth(focusedDate));\n }\n },\n focusNextSection(larger) {\n if (!larger && !visibleDuration.days) {\n focusCell(focusedDate.add(unitDuration(visibleDuration)));\n return;\n }\n\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(larger) {\n if (!larger && !visibleDuration.days) {\n focusCell(focusedDate.subtract(unitDuration(visibleDuration)));\n return;\n }\n\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 let prev = startDate.subtract({days: 1});\n return isSameDay(prev, startDate) || this.isInvalid(prev, minValue, maxValue);\n },\n isNextVisibleRangeInvalid() {\n // Adding may return the same date if we reached the end of time\n // according to the calendar system (e.g. 9999-12-31).\n let next = endDate.add({days: 1});\n return isSameDay(next, endDate) || this.isInvalid(next, minValue, maxValue);\n },\n getDatesInWeek(weekIndex, from = startDate) {\n // let date = startOfWeek(from, locale);\n let date = from.add({weeks: weekIndex});\n let dates = [];\n\n date = startOfWeek(date, locale);\n\n // startOfWeek will clamp dates within the calendar system's valid range, which may\n // start in the middle of a week. In this case, add null placeholders.\n let dayOfWeek = getDayOfWeek(date, locale);\n for (let i = 0; i < dayOfWeek; i++) {\n dates.push(null);\n }\n\n while (dates.length < 7) {\n dates.push(date);\n let nextDate = date.add({days: 1});\n if (isSameDay(date, nextDate)) {\n // If the next day is the same, we have hit the end of the calendar system.\n break;\n }\n date = nextDate;\n }\n\n // Add null placeholders if at the end of the calendar system.\n while (dates.length < 7) {\n dates.push(null);\n }\n\n return dates;\n }\n };\n}\n\nfunction unitDuration(duration: DateDuration) {\n let unit = {...duration};\n for (let key in duration) {\n unit[key] = 1;\n }\n return unit;\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: DateValue, 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\nexport function previousAvailableDate(date: CalendarDate, minValue: DateValue, isDateUnavailable: (date: CalendarDate) => boolean) {\n if (!isDateUnavailable) {\n return date;\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n date = date.subtract({days: 1});\n }\n\n if (date.compare(minValue) >= 0) {\n return date;\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 */\n\nimport {alignCenter, constrainValue, isInvalid, previousAvailableDate} 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\nexport interface 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 date = constrainValue(date, min, max);\n date = previousAvailableDate(date, calendar.visibleRange.start, props.isDateUnavailable);\n if (!date) {\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 let {isDateUnavailable} = props;\n let isInvalidSelection = useMemo(() => {\n if (!value || anchorDate) {\n return false;\n }\n\n if (isDateUnavailable && (isDateUnavailable(value.start) || isDateUnavailable(value.end))) {\n return true;\n }\n\n return isInvalid(value.start, minValue, maxValue) || isInvalid(value.end, minValue, maxValue);\n }, [isDateUnavailable, value, anchorDate, minValue, maxValue]);\n\n let validationState = props.validationState || (isInvalidSelection ? 'invalid' : null);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n validationState,\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":"module.js.map"}
1
+ {"mappings":";;;;AAAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;CAUC,GACD;AAYO,SAAS,0CAAU,IAAe,EAAE,QAAmB,EAAE,QAAmB,EAAE;IACnF,OAAO,AAAC,YAAY,IAAI,IAAI,KAAK,OAAO,CAAC,YAAY,KAClD,YAAY,IAAI,IAAI,KAAK,OAAO,CAAC,YAAY;AAClD;AAEO,SAAS,0CAAY,IAAkB,EAAE,QAAsB,EAAE,MAAc,EAAE,QAAoB,EAAE,QAAoB,EAAE;IAClI,IAAI,eAA6B,CAAC;IAClC,IAAK,IAAI,OAAO,SAAU;QACxB,YAAY,CAAC,IAAI,GAAG,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG;QAC/C,IAAI,YAAY,CAAC,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI,GAAG,MAAM,GACjD,YAAY,CAAC,IAAI;IAErB;IAEA,IAAI,UAAU,yCAAW,MAAM,UAAU,QAAQ,QAAQ,CAAC;IAC1D,OAAO,0CAAe,MAAM,SAAS,UAAU,QAAQ,UAAU;AACnE;AAEO,SAAS,yCAAW,IAAkB,EAAE,QAAsB,EAAE,MAAc,EAAE,QAAoB,EAAE,QAAoB,EAAE;IACjI,yCAAyC;IACzC,IAAI,UAAU;IACd,IAAI,SAAS,KAAK,EAChB,UAAU,CAAA,GAAA,kBAAW,AAAD,EAAE;SACjB,IAAI,SAAS,MAAM,EACxB,UAAU,CAAA,GAAA,mBAAY,AAAD,EAAE;SAClB,IAAI,SAAS,KAAK,EACvB,UAAU,CAAA,GAAA,kBAAU,EAAE,MAAM;IAG9B,OAAO,0CAAe,MAAM,SAAS,UAAU,QAAQ,UAAU;AACnE;AAEO,SAAS,0CAAS,IAAkB,EAAE,QAAsB,EAAE,MAAc,EAAE,QAAoB,EAAE,QAAoB,EAAE;IAC/H,IAAI,IAAI;QAAC,GAAG,QAAQ;IAAA;IACpB,oCAAoC;IACpC,IAAI,SAAS,IAAI,EACf,EAAE,IAAI;SACD,IAAI,SAAS,KAAK,EACvB,EAAE,KAAK;SACF,IAAI,SAAS,MAAM,EACxB,EAAE,MAAM;SACH,IAAI,SAAS,KAAK,EACvB,EAAE,KAAK;IAGT,IAAI,UAAU,yCAAW,MAAM,UAAU,QAAQ,QAAQ,CAAC;IAC1D,OAAO,0CAAe,MAAM,SAAS,UAAU,QAAQ,UAAU;AACnE;AAEO,SAAS,0CACd,IAAkB,EAClB,OAAqB,EACrB,QAAsB,EACtB,MAAc,EACd,QAAmB,EACnB,QAAmB,EAAE;IACrB,IAAI,YAAY,KAAK,OAAO,CAAC,aAAa,GACxC,UAAU,CAAA,GAAA,cAAO,AAAD,EACd,SACA,yCAAW,CAAA,GAAA,qBAAa,EAAE,WAAW,UAAU;IAInD,IAAI,YAAY,KAAK,OAAO,CAAC,aAAa,GACxC,UAAU,CAAA,GAAA,cAAO,AAAD,EACd,SACA,0CAAS,CAAA,GAAA,qBAAa,EAAE,WAAW,UAAU;IAIjD,OAAO;AACT;AAEO,SAAS,0CAAe,IAAkB,EAAE,QAAmB,EAAE,QAAmB,EAAE;IAC3F,IAAI,UACF,OAAO,CAAA,GAAA,cAAM,EAAE,MAAM,CAAA,GAAA,qBAAc,AAAD,EAAE;IAGtC,IAAI,UACF,OAAO,CAAA,GAAA,cAAM,EAAE,MAAM,CAAA,GAAA,qBAAc,AAAD,EAAE;IAGtC,OAAO;AACT;AAEO,SAAS,0CAAsB,IAAkB,EAAE,QAAmB,EAAE,iBAAkD,EAAE;IACjI,IAAI,CAAC,mBACH,OAAO;IAGT,MAAO,KAAK,OAAO,CAAC,aAAa,KAAK,kBAAkB,MACtD,OAAO,KAAK,QAAQ,CAAC;QAAC,MAAM;IAAC;IAG/B,IAAI,KAAK,OAAO,CAAC,aAAa,GAC5B,OAAO;AAEX;;CD9GC,GAED;;;;AA6CO,SAAS,0CAAkD,KAA8B,EAAiB;IAC/G,IAAI,mBAAmB,CAAA,GAAA,cAAM,EAAE,IAAM,IAAI,CAAA,GAAA,oBAAa,AAAD,EAAE,MAAM,MAAM,GAAG;QAAC,MAAM,MAAM;KAAC;IACpF,IAAI,kBAAkB,CAAA,GAAA,cAAM,EAAE,IAAM,iBAAiB,eAAe,IAAI;QAAC;KAAiB;IAC1F,IAAI,UACF,OAAM,kBACN,eAAc,mBACd,kBAAkB;QAAC,QAAQ;IAAC,cAC5B,SAAQ,YACR,SAAQ,sBACR,mBAAkB,qBAClB,kBAAiB,EAClB,GAAG;IAEJ,IAAI,WAAW,CAAA,GAAA,cAAM,EAAE,IAAM,eAAe,gBAAgB,QAAQ,GAAG;QAAC;QAAgB,gBAAgB,QAAQ;KAAC;IAEjH,IAAI,CAAC,OAAO,mBAAmB,GAAG,CAAA,GAAA,yBAAiB,EAAa,MAAM,KAAK,EAAE,MAAM,YAAY,EAAE,MAAM,QAAQ;IAC/G,IAAI,oBAAoB,CAAA,GAAA,cAAM,EAAE,IAAM,QAAQ,CAAA,GAAA,iBAAU,AAAD,EAAE,CAAA,GAAA,qBAAa,EAAE,QAAQ,YAAY,IAAI,EAAE;QAAC;QAAO;KAAS;IACnH,IAAI,WAAW,CAAA,GAAA,cAAM,EAAE,IAAM,SAAS,cAAc,QAAQ,MAAM,QAAQ,GAAG,gBAAgB,QAAQ,EAAE;QAAC;QAAO,gBAAgB,QAAQ;KAAC;IACxI,IAAI,sBAAsB,CAAA,GAAA,cAAM,EAAE,IAChC,MAAM,YAAY,GACd,CAAA,GAAA,yCAAc,AAAD,EAAE,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,qBAAa,EAAE,MAAM,YAAY,GAAG,WAAW,UAAU,YACnF,SAAS,EACZ;QAAC,MAAM,YAAY;QAAE;QAAU;QAAU;KAAS;IACrD,IAAI,6BAA6B,CAAA,GAAA,cAAO,AAAD,EAAE,IACvC,CAAA,GAAA,yCAAc,AAAD,EACX,MAAM,mBAAmB,GACrB,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,qBAAc,AAAD,EAAE,MAAM,mBAAmB,GAAG,YACtD,qBAAqB,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,YAAK,AAAD,EAAE,WAAW,SAAS,EAC9D,UACA,WAED;QAAC,MAAM,mBAAmB;QAAE;QAAmB;QAAU;QAAU;QAAU;KAAS;IACzF,IAAI,CAAC,aAAa,eAAe,GAAG,CAAA,GAAA,yBAAiB,EAAE,qBAAqB,4BAA4B,MAAM,aAAa;IAC3H,IAAI,CAAC,WAAW,aAAa,GAAG,CAAA,GAAA,eAAO,EAAE,IAAM;QAC7C,OAAQ;YACN,KAAK;gBACH,OAAO,CAAA,GAAA,wCAAS,EAAE,aAAa,iBAAiB,QAAQ,UAAU;YACpE,KAAK;gBACH,OAAO,CAAA,GAAA,yCAAO,EAAE,aAAa,iBAAiB,QAAQ,UAAU;YAClE,KAAK;YACL;gBACE,OAAO,CAAA,GAAA,yCAAU,EAAE,aAAa,iBAAiB,QAAQ,UAAU;QACvE;IACF;IACA,IAAI,CAAC,WAAW,WAAW,GAAG,CAAA,GAAA,eAAO,EAAE,MAAM,SAAS,IAAI,KAAK;IAE/D,IAAI,UAAU,CAAA,GAAA,cAAM,EAAE,IAAM;QAC1B,IAAI,WAAW;YAAC,GAAG,eAAe;QAAA;QAClC,IAAI,SAAS,IAAI,EACf,SAAS,IAAI;aAEb,SAAS,IAAI,GAAG;QAElB,OAAO,UAAU,GAAG,CAAC;IACvB,GAAG;QAAC;QAAW;KAAgB;IAE/B,8DAA8D;IAC9D,IAAI,yBAAyB,CAAA,GAAA,aAAM,AAAD,EAAE,SAAS,UAAU;IACvD,IAAI,SAAS,UAAU,KAAK,uBAAuB,OAAO,EAAE;QAC1D,IAAI,iBAAiB,CAAA,GAAA,iBAAS,EAAE,aAAa;QAC7C,aAAa,CAAA,GAAA,yCAAU,EAAE,gBAAgB,iBAAiB,QAAQ,UAAU;QAC5E,eAAe;QACf,uBAAuB,OAAO,GAAG,SAAS,UAAU;IACtD,CAAC;IAED,IAAI,CAAA,GAAA,yCAAQ,EAAE,aAAa,UAAU,WACnC,2FAA2F;IAC3F,eAAe,CAAA,GAAA,yCAAc,AAAD,EAAE,aAAa,UAAU;SAChD,IAAI,YAAY,OAAO,CAAC,aAAa,GAC1C,aAAa,CAAA,GAAA,yCAAO,EAAE,aAAa,iBAAiB,QAAQ,UAAU;SACjE,IAAI,YAAY,OAAO,CAAC,WAAW,GACxC,aAAa,CAAA,GAAA,wCAAS,EAAE,aAAa,iBAAiB,QAAQ,UAAU;IAG1E,qCAAqC;IACrC,SAAS,UAAU,IAAkB,EAAE;QACrC,OAAO,CAAA,GAAA,yCAAc,AAAD,EAAE,MAAM,UAAU;QACtC,eAAe;IACjB;IAEA,SAAS,SAAS,QAAsB,EAAE;QACxC,IAAI,CAAC,MAAM,UAAU,IAAI,CAAC,MAAM,UAAU,EAAE;YAC1C,WAAW,CAAA,GAAA,yCAAc,AAAD,EAAE,UAAU,UAAU;YAC9C,WAAW,CAAA,GAAA,yCAAqB,AAAD,EAAE,UAAU,WAAW;YACtD,IAAI,CAAC,UACH;YAGF,wEAAwE;YACxE,sFAAsF;YACtF,WAAW,CAAA,GAAA,iBAAS,EAAE,UAAU,CAAA,kBAAA,mBAAA,KAAA,IAAA,MAAO,QAAQ,AAAD,KAAK,IAAI,CAAA,GAAA,wBAAiB,AAAD;YAEvE,4CAA4C;YAC5C,IAAI,SAAS,UAAU,OACrB,mBAAmB,MAAM,GAAG,CAAC;iBAE7B,mBAAmB;QAEvB,CAAC;IACH;IAEA,IAAI,gBAAgB,CAAA,GAAA,cAAM,EAAE,IAAM;QAChC,IAAI,CAAC,mBACH,OAAO,KAAK;QAGd,IAAI,qBAAqB,kBAAkB,oBACzC,OAAO,IAAI;QAGb,OAAO,CAAA,GAAA,yCAAS,AAAD,EAAE,mBAAmB,UAAU;IAChD,GAAG;QAAC;QAAmB;QAAmB;QAAU;KAAS;IAC7D,IAAI,kBAAkB,MAAM,eAAe,IAAK,CAAA,gBAAgB,YAAY,IAAI,AAAD;IAE/E,OAAO;QACL,YAAY,MAAM,UAAU;QAC5B,YAAY,MAAM,UAAU;QAC5B,OAAO;kBACP;QACA,cAAc;YACZ,OAAO;YACP,KAAK;QACP;kBACA;kBACA;qBACA;kBACA;yBACA;QACA,gBAAe,IAAI,EAAE;YACnB,UAAU;YACV,WAAW,IAAI;QACjB;QACA,gBAAe;YACb,UAAU,YAAY,GAAG,CAAC;gBAAC,MAAM;YAAC;QACpC;QACA,oBAAmB;YACjB,UAAU,YAAY,QAAQ,CAAC;gBAAC,MAAM;YAAC;QACzC;QACA,gBAAe;YACb,IAAI,gBAAgB,IAAI,EACtB,IAAI,CAAC,aAAa;iBACb,IAAI,gBAAgB,KAAK,IAAI,gBAAgB,MAAM,IAAI,gBAAgB,KAAK,EACjF,UAAU,YAAY,GAAG,CAAC;gBAAC,OAAO;YAAC;QAEvC;QACA,oBAAmB;YACjB,IAAI,gBAAgB,IAAI,EACtB,IAAI,CAAC,iBAAiB;iBACjB,IAAI,gBAAgB,KAAK,IAAI,gBAAgB,MAAM,IAAI,gBAAgB,KAAK,EACjF,UAAU,YAAY,QAAQ,CAAC;gBAAC,OAAO;YAAC;QAE5C;QACA,iBAAgB;YACd,IAAI,QAAQ,UAAU,GAAG,CAAC;YAC1B,eAAe,CAAA,GAAA,yCAAa,EAAE,YAAY,GAAG,CAAC,kBAAkB,UAAU;YAC1E,aACE,CAAA,GAAA,wCAAU,AAAD,EACP,CAAA,GAAA,yCAAc,AAAD,EAAE,aAAa,OAAO,iBAAiB,QAAQ,UAAU,WACtE,iBACA;QAGN;QACA,qBAAoB;YAClB,IAAI,QAAQ,UAAU,QAAQ,CAAC;YAC/B,eAAe,CAAA,GAAA,yCAAa,EAAE,YAAY,QAAQ,CAAC,kBAAkB,UAAU;YAC/E,aACE,CAAA,GAAA,wCAAU,AAAD,EACP,CAAA,GAAA,yCAAc,AAAD,EAAE,aAAa,OAAO,iBAAiB,QAAQ,UAAU,WACtE,iBACA;QAGN;QACA,qBAAoB;YAClB,IAAI,gBAAgB,IAAI,EACtB,UAAU;iBACL,IAAI,gBAAgB,KAAK,EAC9B,UAAU,CAAA,GAAA,kBAAU,EAAE,aAAa;iBAC9B,IAAI,gBAAgB,MAAM,IAAI,gBAAgB,KAAK,EACxD,UAAU,CAAA,GAAA,mBAAY,AAAD,EAAE;QAE3B;QACA,mBAAkB;YAChB,IAAI,gBAAgB,IAAI,EACtB,UAAU;iBACL,IAAI,gBAAgB,KAAK,EAC9B,UAAU,CAAA,GAAA,gBAAQ,EAAE,aAAa;iBAC5B,IAAI,gBAAgB,MAAM,IAAI,gBAAgB,KAAK,EACxD,UAAU,CAAA,GAAA,iBAAU,AAAD,EAAE;QAEzB;QACA,kBAAiB,MAAM,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,EAAE;gBACpC,UAAU,YAAY,GAAG,CAAC,mCAAa;gBACvC;YACF,CAAC;YAED,IAAI,gBAAgB,IAAI,EACtB,IAAI,CAAC,aAAa;iBACb,IAAI,gBAAgB,KAAK,EAC9B,UAAU,YAAY,GAAG,CAAC;gBAAC,QAAQ;YAAC;iBAC/B,IAAI,gBAAgB,MAAM,IAAI,gBAAgB,KAAK,EACxD,UAAU,YAAY,GAAG,CAAC;gBAAC,OAAO;YAAC;QAEvC;QACA,sBAAqB,MAAM,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,EAAE;gBACpC,UAAU,YAAY,QAAQ,CAAC,mCAAa;gBAC5C;YACF,CAAC;YAED,IAAI,gBAAgB,IAAI,EACtB,IAAI,CAAC,iBAAiB;iBACjB,IAAI,gBAAgB,KAAK,EAC9B,UAAU,YAAY,QAAQ,CAAC;gBAAC,QAAQ;YAAC;iBACpC,IAAI,gBAAgB,MAAM,IAAI,gBAAgB,KAAK,EACxD,UAAU,YAAY,QAAQ,CAAC;gBAAC,OAAO;YAAC;QAE5C;QACA,qBAAoB;YAClB,SAAS;QACX;QACA,YAAW,IAAI,EAAE;YACf,SAAS;QACX;mBACA;oBACA;QACA,WAAU,IAAI,EAAE;YACd,OAAO,CAAA,GAAA,yCAAS,AAAD,EAAE,MAAM,UAAU;QACnC;QACA,YAAW,IAAI,EAAE;YACf,OAAO,qBAAqB,IAAI,IAAI,CAAA,GAAA,gBAAQ,EAAE,MAAM,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAClI;QACA,eAAc,IAAI,EAAE;YAClB,OAAO,aAAa,eAAe,CAAA,GAAA,gBAAQ,EAAE,MAAM;QACrD;QACA,gBAAe,IAAI,EAAE;YACnB,OAAO,MAAM,UAAU,IAAI,KAAK,OAAO,CAAC,aAAa,KAAK,KAAK,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,UAAU;QACxH;QACA,mBAAkB,IAAI,EAAE;YACtB,OAAO,MAAM,iBAAiB,IAAI,MAAM,iBAAiB,CAAC;QAC5D;QACA,iCAAgC;YAC9B,IAAI,OAAO,UAAU,QAAQ,CAAC;gBAAC,MAAM;YAAC;YACtC,OAAO,CAAA,GAAA,gBAAQ,EAAE,MAAM,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,UAAU;QACtE;QACA,6BAA4B;YAC1B,gEAAgE;YAChE,sDAAsD;YACtD,IAAI,OAAO,QAAQ,GAAG,CAAC;gBAAC,MAAM;YAAC;YAC/B,OAAO,CAAA,GAAA,gBAAQ,EAAE,MAAM,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,UAAU;QACpE;QACA,gBAAe,SAAS,EAAE,OAAO,SAAS,EAAE;YAC1C,wCAAwC;YACxC,IAAI,OAAO,KAAK,GAAG,CAAC;gBAAC,OAAO;YAAS;YACrC,IAAI,QAAQ,EAAE;YAEd,OAAO,CAAA,GAAA,kBAAW,AAAD,EAAE,MAAM;YAEzB,mFAAmF;YACnF,sEAAsE;YACtE,IAAI,YAAY,CAAA,GAAA,mBAAW,EAAE,MAAM;YACnC,IAAK,IAAI,IAAI,GAAG,IAAI,WAAW,IAC7B,MAAM,IAAI,CAAC,IAAI;YAGjB,MAAO,MAAM,MAAM,GAAG,EAAG;gBACvB,MAAM,IAAI,CAAC;gBACX,IAAI,WAAW,KAAK,GAAG,CAAC;oBAAC,MAAM;gBAAC;gBAChC,IAAI,CAAA,GAAA,gBAAQ,EAAE,MAAM,WAElB,KAAM;gBAER,OAAO;YACT;YAEA,8DAA8D;YAC9D,MAAO,MAAM,MAAM,GAAG,EACpB,MAAM,IAAI,CAAC,IAAI;YAGjB,OAAO;QACT;IACF;AACF;AAEA,SAAS,mCAAa,QAAsB,EAAE;IAC5C,IAAI,OAAO;QAAC,GAAG,QAAQ;IAAA;IACvB,IAAK,IAAI,OAAO,SACd,IAAI,CAAC,IAAI,GAAG;IAEd,OAAO;AACT;;CDpVC,GAED;AGZA;;;;;;;;;;CAUC,GAED;;;;;AA+BO,SAAS,0CAAuD,KAAmC,EAAsB;IAC9H,IAAI,EAAC,OAAO,UAAS,gBAAE,aAAY,YAAE,SAAQ,kBAAE,eAAc,UAAE,OAAM,mBAAE,kBAAkB;QAAC,QAAQ;IAAC,cAAG,SAAQ,YAAE,SAAQ,EAAE,GAAG,eAAc,GAAG;IAC9I,IAAI,CAAC,OAAO,SAAS,GAAG,CAAA,GAAA,yBAAiB,EACvC,WACA,gBAAgB,IAAI,EACpB;IAGF,IAAI,CAAC,YAAY,mBAAmB,GAAG,CAAA,GAAA,eAAO,EAAE,IAAI;IACpD,IAAI,YAAgC;IACpC,IAAI,SAAS,MAAM,KAAK,IAAI,MAAM,GAAG,EAAE;QACrC,IAAI,QAAQ,CAAA,GAAA,yCAAU,EAAE,CAAA,GAAA,qBAAc,AAAD,EAAE,MAAM,KAAK,GAAG,iBAAiB,QAAQ,UAAU;QACxF,IAAI,MAAM,MAAM,GAAG,CAAC,iBAAiB,QAAQ,CAAC;YAAC,MAAM;QAAC;QAEtD,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,GAC3B,YAAY;IAEhB,CAAC;IAED,+GAA+G;IAC/G,IAAI,oBAAoB,CAAA,GAAA,aAAK,EAAyB,IAAI;IAC1D,IAAI,CAAC,gBAAgB,kBAAkB,GAAG,CAAA,GAAA,eAAO,EAAyB,IAAI;IAC9E,IAAI,MAAM,CAAA,GAAA,cAAM,EAAE;QAAM,OAAA,CAAA,GAAA,cAAM,EAAE,UAAU,2BAAA,4BAAA,KAAA,IAAA,eAAgB,KAAK;OAAG;QAAC;QAAU;KAAe;IAC5F,IAAI,MAAM,CAAA,GAAA,cAAM,EAAE;QAAM,OAAA,CAAA,GAAA,cAAM,EAAE,UAAU,2BAAA,4BAAA,KAAA,IAAA,eAAgB,GAAG;OAAG;QAAC;QAAU;KAAe;IAE1F,IAAI,WAAW,CAAA,GAAA,yCAAe,EAAE;QAC9B,GAAG,aAAa;QAChB,OAAO,SAAS,MAAM,KAAK;wBAC3B;gBACA;yBACA;QACA,UAAU;QACV,UAAU;QACV,oBAAoB;IACtB;IAEA,IAAI,uBAAuB,CAAC,OAAS;QACnC,IAAI,QAAQ,MAAM,iBAAiB,IAAI,CAAC,MAAM,yBAAyB,EAAE;YACvE,kBAAkB,OAAO,GAAG;gBAC1B,OAAO,0CAAoB,MAAM,UAAU;gBAC3C,KAAK,0CAAoB,MAAM,UAAU;YAC3C;YACA,kBAAkB,kBAAkB,OAAO;QAC7C,OAAO;YACL,kBAAkB,OAAO,GAAG,IAAI;YAChC,kBAAkB,IAAI;QACxB,CAAC;IACH;IAEA,uEAAuE;IACvE,IAAI,mBAAmB,CAAA,GAAA,aAAM,AAAD,EAAE,SAAS,YAAY;IACnD,IAAI,CAAC,CAAA,GAAA,iBAAS,EAAE,SAAS,YAAY,CAAC,KAAK,EAAE,iBAAiB,OAAO,CAAC,KAAK,KAAK,CAAC,CAAA,GAAA,iBAAS,EAAE,SAAS,YAAY,CAAC,GAAG,EAAE,iBAAiB,OAAO,CAAC,GAAG,GAAG;QACpJ,qBAAqB;QACrB,iBAAiB,OAAO,GAAG,SAAS,YAAY;IAClD,CAAC;IAED,IAAI,gBAAgB,CAAC,OAAuB;QAC1C,IAAI,MAAM;YACR,mBAAmB;YACnB,qBAAqB;QACvB,OAAO;YACL,mBAAmB,IAAI;YACvB,qBAAqB,IAAI;QAC3B,CAAC;IACH;IAEA,IAAI,mBAAmB,aAAa,gCAAU,YAAY,SAAS,WAAW,IAAI,SAAS,gCAAU,MAAM,KAAK,EAAE,MAAM,GAAG,CAAC;IAC5H,IAAI,aAAa,CAAC,OAAuB;QACvC,IAAI,MAAM,UAAU,EAClB;QAGF,OAAO,CAAA,GAAA,yCAAc,AAAD,EAAE,MAAM,KAAK;QACjC,OAAO,CAAA,GAAA,yCAAoB,EAAE,MAAM,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,iBAAiB;QACvF,IAAI,CAAC,MACH;QAGF,IAAI,CAAC,YACH,cAAc;aACT;YACL,IAAI,QAAQ,gCAAU,YAAY;YAClC,SAAS;gBACP,OAAO,mCAAa,MAAM,KAAK,EAAE,kBAAA,mBAAA,KAAA,IAAA,MAAO,KAAK;gBAC7C,KAAK,mCAAa,MAAM,GAAG,EAAE,kBAAA,mBAAA,KAAA,IAAA,MAAO,GAAG;YACzC;YACA,cAAc,IAAI;QACpB,CAAC;IACH;IAEA,IAAI,CAAC,YAAY,YAAY,GAAG,CAAA,GAAA,eAAO,EAAE,KAAK;IAE9C,IAAI,qBAAC,kBAAiB,EAAC,GAAG;IAC1B,IAAI,qBAAqB,CAAA,GAAA,cAAM,EAAE,IAAM;QACrC,IAAI,CAAC,SAAS,YACZ,OAAO,KAAK;QAGd,IAAI,qBAAsB,CAAA,kBAAkB,MAAM,KAAK,KAAK,kBAAkB,MAAM,GAAG,CAAA,GACrF,OAAO,IAAI;QAGb,OAAO,CAAA,GAAA,yCAAQ,EAAE,MAAM,KAAK,EAAE,UAAU,aAAa,CAAA,GAAA,yCAAS,AAAD,EAAE,MAAM,GAAG,EAAE,UAAU;IACtF,GAAG;QAAC;QAAmB;QAAO;QAAY;QAAU;KAAS;IAE7D,IAAI,kBAAkB,MAAM,eAAe,IAAK,CAAA,qBAAqB,YAAY,IAAI,AAAD;IAEpF,OAAO;QACL,GAAG,QAAQ;eACX;kBACA;oBACA;uBACA;0BACA;yBACA;QACA,qBAAoB;YAClB,WAAW,SAAS,WAAW;QACjC;oBACA;QACA,eAAc,IAAI,EAAE;YAClB,IAAI,YACF,SAAS,cAAc,CAAC;QAE5B;QACA,YAAW,IAAI,EAAE;YACf,OAAO,oBAAoB,KAAK,OAAO,CAAC,iBAAiB,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,iBAAiB,GAAG,KAAK,KAAK,CAAC,SAAS,cAAc,CAAC,SAAS,CAAC,SAAS,iBAAiB,CAAC;QACnL;QACA,WAAU,IAAI,EAAE;gBACqC,4BAAkC;YAArF,OAAO,SAAS,SAAS,CAAC,SAAS,CAAA,GAAA,yCAAS,AAAD,EAAE,MAAM,CAAA,6BAAA,kBAAkB,OAAO,cAAzB,wCAAA,KAAA,IAAA,2BAA2B,KAAK,EAAE,CAAA,8BAAA,kBAAkB,OAAO,cAAzB,yCAAA,KAAA,IAAA,4BAA2B,GAAG;QACrH;oBACA;qBACA;IACF;AACF;AAEA,SAAS,gCAAU,KAAgB,EAAE,GAAc,EAA4B;IAC7E,IAAI,CAAC,SAAS,CAAC,KACb,OAAO,IAAI;IAGb,IAAI,IAAI,OAAO,CAAC,SAAS,GACvB,CAAC,OAAO,IAAI,GAAG;QAAC;QAAK;KAAM;IAG7B,OAAO;QAAC,OAAO,CAAA,GAAA,qBAAa,EAAE;QAAQ,KAAK,CAAA,GAAA,qBAAa,EAAE;IAAI;AAChE;AAEA,SAAS,mCAAa,QAAsB,EAAE,QAAmB,EAAE;IACjE,wEAAwE;IACxE,sFAAsF;IACtF,WAAW,CAAA,GAAA,iBAAS,EAAE,UAAU,CAAA,qBAAA,sBAAA,KAAA,IAAA,SAAU,QAAQ,AAAD,KAAK,IAAI,CAAA,GAAA,wBAAiB,AAAD;IAE1E,4CAA4C;IAC5C,IAAI,YAAY,UAAU,UACxB,OAAO,SAAS,GAAG,CAAC;IAGtB,OAAO;AACT;AAEA,SAAS,0CAAoB,UAAwB,EAAE,KAAoB,EAAE,GAAW,EAAE;IACxF,IAAI,WAAW,WAAW,GAAG,CAAC;QAAC,MAAM;IAAG;IACxC,MACE,AAAC,CAAA,MAAM,IAAI,SAAS,OAAO,CAAC,MAAM,YAAY,CAAC,KAAK,KAAK,IAAI,SAAS,OAAO,CAAC,MAAM,YAAY,CAAC,GAAG,KAAK,CAAC,AAAD,KACzG,CAAC,MAAM,iBAAiB,CAAC,UAEzB,WAAW,SAAS,GAAG,CAAC;QAAC,MAAM;IAAG;IAGpC,IAAI,MAAM,iBAAiB,CAAC,WAC1B,OAAO,SAAS,GAAG,CAAC;QAAC,MAAM,CAAC;IAAG;IAGjC,OAAO,IAAI;AACb;","sources":["packages/@react-stately/calendar/src/index.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 {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\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, previousAvailableDate} from './utils';\nimport {\n Calendar,\n CalendarDate,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n getDayOfWeek,\n GregorianCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\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\nexport interface CalendarStateOptions<T extends DateValue = DateValue> extends CalendarProps<T> {\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<T extends DateValue = DateValue>(props: CalendarStateOptions<T>): 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 isDateUnavailable\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(() => {\n let duration = {...visibleDuration};\n if (duration.days) {\n duration.days--;\n } else {\n duration.days = -1;\n }\n return startDate.add(duration);\n }, [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(endDate) > 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 newValue = constrainValue(newValue, minValue, maxValue);\n newValue = previousAvailableDate(newValue, startDate, isDateUnavailable);\n if (!newValue) {\n return;\n }\n\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 let isUnavailable = useMemo(() => {\n if (!calendarDateValue) {\n return false;\n }\n\n if (isDateUnavailable && isDateUnavailable(calendarDateValue)) {\n return true;\n }\n\n return isInvalid(calendarDateValue, minValue, maxValue);\n }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n let validationState = props.validationState || (isUnavailable ? 'invalid' : null);\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 minValue,\n maxValue,\n focusedDate,\n timeZone,\n validationState,\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(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusSectionStart() {\n if (visibleDuration.days) {\n focusCell(startDate);\n } else if (visibleDuration.weeks) {\n focusCell(startOfWeek(focusedDate, locale));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(startOfMonth(focusedDate));\n }\n },\n focusSectionEnd() {\n if (visibleDuration.days) {\n focusCell(endDate);\n } else if (visibleDuration.weeks) {\n focusCell(endOfWeek(focusedDate, locale));\n } else if (visibleDuration.months || visibleDuration.years) {\n focusCell(endOfMonth(focusedDate));\n }\n },\n focusNextSection(larger) {\n if (!larger && !visibleDuration.days) {\n focusCell(focusedDate.add(unitDuration(visibleDuration)));\n return;\n }\n\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(larger) {\n if (!larger && !visibleDuration.days) {\n focusCell(focusedDate.subtract(unitDuration(visibleDuration)));\n return;\n }\n\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 let prev = startDate.subtract({days: 1});\n return isSameDay(prev, startDate) || this.isInvalid(prev, minValue, maxValue);\n },\n isNextVisibleRangeInvalid() {\n // Adding may return the same date if we reached the end of time\n // according to the calendar system (e.g. 9999-12-31).\n let next = endDate.add({days: 1});\n return isSameDay(next, endDate) || this.isInvalid(next, minValue, maxValue);\n },\n getDatesInWeek(weekIndex, from = startDate) {\n // let date = startOfWeek(from, locale);\n let date = from.add({weeks: weekIndex});\n let dates = [];\n\n date = startOfWeek(date, locale);\n\n // startOfWeek will clamp dates within the calendar system's valid range, which may\n // start in the middle of a week. In this case, add null placeholders.\n let dayOfWeek = getDayOfWeek(date, locale);\n for (let i = 0; i < dayOfWeek; i++) {\n dates.push(null);\n }\n\n while (dates.length < 7) {\n dates.push(date);\n let nextDate = date.add({days: 1});\n if (isSameDay(date, nextDate)) {\n // If the next day is the same, we have hit the end of the calendar system.\n break;\n }\n date = nextDate;\n }\n\n // Add null placeholders if at the end of the calendar system.\n while (dates.length < 7) {\n dates.push(null);\n }\n\n return dates;\n }\n };\n}\n\nfunction unitDuration(duration: DateDuration) {\n let unit = {...duration};\n for (let key in duration) {\n unit[key] = 1;\n }\n return unit;\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: DateValue, 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\nexport function previousAvailableDate(date: CalendarDate, minValue: DateValue, isDateUnavailable: (date: CalendarDate) => boolean) {\n if (!isDateUnavailable) {\n return date;\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n date = date.subtract({days: 1});\n }\n\n if (date.compare(minValue) >= 0) {\n return date;\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 */\n\nimport {alignCenter, constrainValue, isInvalid, previousAvailableDate} 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\nexport interface RangeCalendarStateOptions<T extends DateValue = DateValue> extends RangeCalendarProps<T> {\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<T extends DateValue = 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 || 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 date = constrainValue(date, min, max);\n date = previousAvailableDate(date, calendar.visibleRange.start, props.isDateUnavailable);\n if (!date) {\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 let {isDateUnavailable} = props;\n let isInvalidSelection = useMemo(() => {\n if (!value || anchorDate) {\n return false;\n }\n\n if (isDateUnavailable && (isDateUnavailable(value.start) || isDateUnavailable(value.end))) {\n return true;\n }\n\n return isInvalid(value.start, minValue, maxValue) || isInvalid(value.end, minValue, maxValue);\n }, [isDateUnavailable, value, anchorDate, minValue, maxValue]);\n\n let validationState = props.validationState || (isInvalidSelection ? 'invalid' : null);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n validationState,\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":"module.js.map"}
package/dist/types.d.ts CHANGED
@@ -104,7 +104,7 @@ export interface RangeCalendarState extends CalendarStateBase {
104
104
  /** Sets whether the user is dragging over the calendar. */
105
105
  setDragging(isDragging: boolean): void;
106
106
  }
107
- export interface CalendarStateOptions extends CalendarProps<DateValue> {
107
+ export interface CalendarStateOptions<T extends DateValue = DateValue> extends CalendarProps<T> {
108
108
  /** The locale to display and edit the value according to. */
109
109
  locale: string;
110
110
  /**
@@ -126,8 +126,8 @@ export interface CalendarStateOptions extends CalendarProps<DateValue> {
126
126
  * Provides state management for a calendar component.
127
127
  * A calendar displays one or more date grids and allows users to select a single date.
128
128
  */
129
- export function useCalendarState(props: CalendarStateOptions): CalendarState;
130
- export interface RangeCalendarStateOptions extends RangeCalendarProps<DateValue> {
129
+ export function useCalendarState<T extends DateValue = DateValue>(props: CalendarStateOptions<T>): CalendarState;
130
+ export interface RangeCalendarStateOptions<T extends DateValue = DateValue> extends RangeCalendarProps<T> {
131
131
  /** The locale to display and edit the value according to. */
132
132
  locale: string;
133
133
  /**
@@ -147,6 +147,6 @@ export interface RangeCalendarStateOptions extends RangeCalendarProps<DateValue>
147
147
  * Provides state management for a range calendar component.
148
148
  * A range calendar displays one or more date grids and allows users to select a contiguous range of dates.
149
149
  */
150
- export function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState;
150
+ export function useRangeCalendarState<T extends DateValue = DateValue>(props: RangeCalendarStateOptions<T>): RangeCalendarState;
151
151
 
152
152
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/types.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/useRangeCalendarState.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/index.ts"],"sourcesContent":[null,null,null,null,null,"/*\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 {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
1
+ {"mappings":"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","sources":["packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/types.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/useRangeCalendarState.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/index.ts"],"sourcesContent":[null,null,null,null,null,"/*\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 {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
package/package.json CHANGED
@@ -1,10 +1,15 @@
1
1
  {
2
2
  "name": "@react-stately/calendar",
3
- "version": "3.0.5",
3
+ "version": "3.2.0",
4
4
  "description": "Spectrum UI components in React",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
7
7
  "module": "dist/module.js",
8
+ "exports": {
9
+ "types": "./dist/types.d.ts",
10
+ "import": "./dist/import.mjs",
11
+ "require": "./dist/main.js"
12
+ },
8
13
  "types": "dist/types.d.ts",
9
14
  "source": "src/index.ts",
10
15
  "files": [
@@ -17,11 +22,11 @@
17
22
  "url": "https://github.com/adobe/react-spectrum"
18
23
  },
19
24
  "dependencies": {
20
- "@internationalized/date": "^3.0.2",
21
- "@react-stately/utils": "^3.5.2",
22
- "@react-types/calendar": "^3.0.5",
23
- "@react-types/datepicker": "^3.1.4",
24
- "@react-types/shared": "^3.16.0",
25
+ "@internationalized/date": "^3.2.0",
26
+ "@react-stately/utils": "^3.6.0",
27
+ "@react-types/calendar": "^3.2.0",
28
+ "@react-types/datepicker": "^3.3.0",
29
+ "@react-types/shared": "^3.18.0",
25
30
  "@swc/helpers": "^0.4.14"
26
31
  },
27
32
  "peerDependencies": {
@@ -30,5 +35,5 @@
30
35
  "publishConfig": {
31
36
  "access": "public"
32
37
  },
33
- "gitHead": "5480d76bd815e239366f92852c76b6831ad2a4fd"
38
+ "gitHead": "9d1ba9bd8ebcd63bf3495ade16d349bcb71795ce"
34
39
  }
@@ -32,7 +32,7 @@ import {CalendarState} from './types';
32
32
  import {useControlledState} from '@react-stately/utils';
33
33
  import {useMemo, useRef, useState} from 'react';
34
34
 
35
- export interface CalendarStateOptions extends CalendarProps<DateValue> {
35
+ export interface CalendarStateOptions<T extends DateValue = DateValue> extends CalendarProps<T> {
36
36
  /** The locale to display and edit the value according to. */
37
37
  locale: string,
38
38
  /**
@@ -55,7 +55,7 @@ export interface CalendarStateOptions extends CalendarProps<DateValue> {
55
55
  * Provides state management for a calendar component.
56
56
  * A calendar displays one or more date grids and allows users to select a single date.
57
57
  */
58
- export function useCalendarState(props: CalendarStateOptions): CalendarState {
58
+ export function useCalendarState<T extends DateValue = DateValue>(props: CalendarStateOptions<T>): CalendarState {
59
59
  let defaultFormatter = useMemo(() => new DateFormatter(props.locale), [props.locale]);
60
60
  let resolvedOptions = useMemo(() => defaultFormatter.resolvedOptions(), [defaultFormatter]);
61
61
  let {
@@ -20,7 +20,7 @@ import {useCalendarState} from './useCalendarState';
20
20
  import {useControlledState} from '@react-stately/utils';
21
21
  import {useMemo, useRef, useState} from 'react';
22
22
 
23
- export interface RangeCalendarStateOptions extends RangeCalendarProps<DateValue> {
23
+ export interface RangeCalendarStateOptions<T extends DateValue = DateValue> extends RangeCalendarProps<T> {
24
24
  /** The locale to display and edit the value according to. */
25
25
  locale: string,
26
26
  /**
@@ -41,7 +41,7 @@ export interface RangeCalendarStateOptions extends RangeCalendarProps<DateValue>
41
41
  * Provides state management for a range calendar component.
42
42
  * A range calendar displays one or more date grids and allows users to select a contiguous range of dates.
43
43
  */
44
- export function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState {
44
+ export function useRangeCalendarState<T extends DateValue = DateValue>(props: RangeCalendarStateOptions<T>): RangeCalendarState {
45
45
  let {value: valueProp, defaultValue, onChange, createCalendar, locale, visibleDuration = {months: 1}, minValue, maxValue, ...calendarProps} = props;
46
46
  let [value, setValue] = useControlledState<DateRange>(
47
47
  valueProp,