react-stately 3.46.0 → 3.47.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.
Files changed (496) hide show
  1. package/dist/exports/Color.cjs.map +1 -1
  2. package/dist/exports/Color.js.map +1 -1
  3. package/dist/exports/Color.mjs.map +1 -1
  4. package/dist/exports/index.cjs.map +1 -1
  5. package/dist/exports/index.js.map +1 -1
  6. package/dist/exports/index.mjs.map +1 -1
  7. package/dist/exports/private/autocomplete/useAutocompleteState.cjs.map +1 -1
  8. package/dist/exports/private/autocomplete/useAutocompleteState.js.map +1 -1
  9. package/dist/exports/private/autocomplete/useAutocompleteState.mjs.map +1 -1
  10. package/dist/exports/private/collections/getChildNodes.cjs.map +1 -1
  11. package/dist/exports/private/collections/getChildNodes.js.map +1 -1
  12. package/dist/exports/private/collections/getChildNodes.mjs.map +1 -1
  13. package/dist/exports/private/flags/flags.cjs.map +1 -1
  14. package/dist/exports/private/flags/flags.js.map +1 -1
  15. package/dist/exports/private/flags/flags.mjs.map +1 -1
  16. package/dist/exports/private/form/useFormValidationState.cjs.map +1 -1
  17. package/dist/exports/private/form/useFormValidationState.js.map +1 -1
  18. package/dist/exports/private/form/useFormValidationState.mjs.map +1 -1
  19. package/dist/exports/private/grid/GridCollection.cjs.map +1 -1
  20. package/dist/exports/private/grid/GridCollection.js.map +1 -1
  21. package/dist/exports/private/grid/GridCollection.mjs.map +1 -1
  22. package/dist/exports/private/steplist/useStepListState.cjs.map +1 -1
  23. package/dist/exports/private/steplist/useStepListState.js.map +1 -1
  24. package/dist/exports/private/steplist/useStepListState.mjs.map +1 -1
  25. package/dist/exports/private/table/TableCollection.cjs.map +1 -1
  26. package/dist/exports/private/table/TableCollection.js.map +1 -1
  27. package/dist/exports/private/table/TableCollection.mjs.map +1 -1
  28. package/dist/exports/private/table/useTreeGridState.cjs.map +1 -1
  29. package/dist/exports/private/table/useTreeGridState.js.map +1 -1
  30. package/dist/exports/private/table/useTreeGridState.mjs.map +1 -1
  31. package/dist/exports/useAsyncList.cjs.map +1 -1
  32. package/dist/exports/useAsyncList.js.map +1 -1
  33. package/dist/exports/useAsyncList.mjs.map +1 -1
  34. package/dist/exports/useCalendarState.cjs.map +1 -1
  35. package/dist/exports/useCalendarState.js.map +1 -1
  36. package/dist/exports/useCalendarState.mjs.map +1 -1
  37. package/dist/exports/useColorAreaState.cjs.map +1 -1
  38. package/dist/exports/useColorAreaState.js.map +1 -1
  39. package/dist/exports/useColorAreaState.mjs.map +1 -1
  40. package/dist/exports/useColorFieldState.cjs.map +1 -1
  41. package/dist/exports/useColorFieldState.js.map +1 -1
  42. package/dist/exports/useColorFieldState.mjs.map +1 -1
  43. package/dist/exports/useColorPickerState.cjs.map +1 -1
  44. package/dist/exports/useColorPickerState.js.map +1 -1
  45. package/dist/exports/useColorPickerState.mjs.map +1 -1
  46. package/dist/exports/useColorSliderState.cjs.map +1 -1
  47. package/dist/exports/useColorSliderState.js.map +1 -1
  48. package/dist/exports/useColorSliderState.mjs.map +1 -1
  49. package/dist/exports/useColorWheelState.cjs.map +1 -1
  50. package/dist/exports/useColorWheelState.js.map +1 -1
  51. package/dist/exports/useColorWheelState.mjs.map +1 -1
  52. package/dist/exports/useComboBoxState.cjs +1 -1
  53. package/dist/exports/useComboBoxState.cjs.map +1 -1
  54. package/dist/exports/useComboBoxState.js +1 -1
  55. package/dist/exports/useComboBoxState.js.map +1 -1
  56. package/dist/exports/useComboBoxState.mjs +1 -1
  57. package/dist/exports/useComboBoxState.mjs.map +1 -1
  58. package/dist/exports/useDateFieldState.cjs.map +1 -1
  59. package/dist/exports/useDateFieldState.js.map +1 -1
  60. package/dist/exports/useDateFieldState.mjs.map +1 -1
  61. package/dist/exports/useDatePickerState.cjs.map +1 -1
  62. package/dist/exports/useDatePickerState.js.map +1 -1
  63. package/dist/exports/useDatePickerState.mjs.map +1 -1
  64. package/dist/exports/useDateRangePickerState.cjs.map +1 -1
  65. package/dist/exports/useDateRangePickerState.js.map +1 -1
  66. package/dist/exports/useDateRangePickerState.mjs.map +1 -1
  67. package/dist/exports/useDisclosureGroupState.cjs.map +1 -1
  68. package/dist/exports/useDisclosureGroupState.js.map +1 -1
  69. package/dist/exports/useDisclosureGroupState.mjs.map +1 -1
  70. package/dist/exports/useDraggableCollectionState.cjs.map +1 -1
  71. package/dist/exports/useDraggableCollectionState.js.map +1 -1
  72. package/dist/exports/useDraggableCollectionState.mjs.map +1 -1
  73. package/dist/exports/useDroppableCollectionState.cjs.map +1 -1
  74. package/dist/exports/useDroppableCollectionState.js.map +1 -1
  75. package/dist/exports/useDroppableCollectionState.mjs.map +1 -1
  76. package/dist/exports/useMenuTriggerState.cjs.map +1 -1
  77. package/dist/exports/useMenuTriggerState.js.map +1 -1
  78. package/dist/exports/useMenuTriggerState.mjs.map +1 -1
  79. package/dist/exports/useMultipleSelectionState.cjs.map +1 -1
  80. package/dist/exports/useMultipleSelectionState.js.map +1 -1
  81. package/dist/exports/useMultipleSelectionState.mjs.map +1 -1
  82. package/dist/exports/useOverlayTriggerState.cjs.map +1 -1
  83. package/dist/exports/useOverlayTriggerState.js.map +1 -1
  84. package/dist/exports/useOverlayTriggerState.mjs.map +1 -1
  85. package/dist/exports/useRangeCalendarState.cjs.map +1 -1
  86. package/dist/exports/useRangeCalendarState.js.map +1 -1
  87. package/dist/exports/useRangeCalendarState.mjs.map +1 -1
  88. package/dist/exports/useSelectState.cjs.map +1 -1
  89. package/dist/exports/useSelectState.js.map +1 -1
  90. package/dist/exports/useSelectState.mjs.map +1 -1
  91. package/dist/exports/useSingleSelectListState.cjs.map +1 -1
  92. package/dist/exports/useSingleSelectListState.js.map +1 -1
  93. package/dist/exports/useSingleSelectListState.mjs.map +1 -1
  94. package/dist/exports/useTableState.cjs.map +1 -1
  95. package/dist/exports/useTableState.js.map +1 -1
  96. package/dist/exports/useTableState.mjs.map +1 -1
  97. package/dist/exports/useTimeFieldState.cjs.map +1 -1
  98. package/dist/exports/useTimeFieldState.js.map +1 -1
  99. package/dist/exports/useTimeFieldState.mjs.map +1 -1
  100. package/dist/exports/useToastState.cjs.map +1 -1
  101. package/dist/exports/useToastState.js.map +1 -1
  102. package/dist/exports/useToastState.mjs.map +1 -1
  103. package/dist/private/autocomplete/useAutocompleteState.cjs.map +1 -1
  104. package/dist/private/autocomplete/useAutocompleteState.js.map +1 -1
  105. package/dist/private/autocomplete/useAutocompleteState.mjs.map +1 -1
  106. package/dist/private/calendar/useCalendarState.cjs +82 -30
  107. package/dist/private/calendar/useCalendarState.cjs.map +1 -1
  108. package/dist/private/calendar/useCalendarState.js +85 -32
  109. package/dist/private/calendar/useCalendarState.js.map +1 -1
  110. package/dist/private/calendar/useCalendarState.mjs +84 -32
  111. package/dist/private/calendar/useCalendarState.mjs.map +1 -1
  112. package/dist/private/calendar/useRangeCalendarState.cjs +53 -40
  113. package/dist/private/calendar/useRangeCalendarState.cjs.map +1 -1
  114. package/dist/private/calendar/useRangeCalendarState.js +55 -43
  115. package/dist/private/calendar/useRangeCalendarState.js.map +1 -1
  116. package/dist/private/calendar/useRangeCalendarState.mjs +55 -42
  117. package/dist/private/calendar/useRangeCalendarState.mjs.map +1 -1
  118. package/dist/private/calendar/utils.cjs +6 -1
  119. package/dist/private/calendar/utils.cjs.map +1 -1
  120. package/dist/private/calendar/utils.js +6 -2
  121. package/dist/private/calendar/utils.js.map +1 -1
  122. package/dist/private/calendar/utils.mjs +6 -2
  123. package/dist/private/calendar/utils.mjs.map +1 -1
  124. package/dist/private/checkbox/useCheckboxGroupState.cjs.map +1 -1
  125. package/dist/private/checkbox/useCheckboxGroupState.js.map +1 -1
  126. package/dist/private/checkbox/useCheckboxGroupState.mjs.map +1 -1
  127. package/dist/private/collections/CollectionBuilder.cjs.map +1 -1
  128. package/dist/private/collections/CollectionBuilder.js.map +1 -1
  129. package/dist/private/collections/CollectionBuilder.mjs.map +1 -1
  130. package/dist/private/collections/Item.cjs +1 -0
  131. package/dist/private/collections/Item.cjs.map +1 -1
  132. package/dist/private/collections/Item.js +1 -0
  133. package/dist/private/collections/Item.js.map +1 -1
  134. package/dist/private/collections/Item.mjs +1 -0
  135. package/dist/private/collections/Item.mjs.map +1 -1
  136. package/dist/private/collections/Section.cjs +1 -0
  137. package/dist/private/collections/Section.cjs.map +1 -1
  138. package/dist/private/collections/Section.js +1 -0
  139. package/dist/private/collections/Section.js.map +1 -1
  140. package/dist/private/collections/Section.mjs +1 -0
  141. package/dist/private/collections/Section.mjs.map +1 -1
  142. package/dist/private/collections/getChildNodes.cjs.map +1 -1
  143. package/dist/private/collections/getChildNodes.js.map +1 -1
  144. package/dist/private/collections/getChildNodes.mjs.map +1 -1
  145. package/dist/private/collections/useCollection.cjs.map +1 -1
  146. package/dist/private/collections/useCollection.js.map +1 -1
  147. package/dist/private/collections/useCollection.mjs.map +1 -1
  148. package/dist/private/color/Color.cjs +15 -9
  149. package/dist/private/color/Color.cjs.map +1 -1
  150. package/dist/private/color/Color.js +15 -9
  151. package/dist/private/color/Color.js.map +1 -1
  152. package/dist/private/color/Color.mjs +15 -9
  153. package/dist/private/color/Color.mjs.map +1 -1
  154. package/dist/private/color/useColorAreaState.cjs.map +1 -1
  155. package/dist/private/color/useColorAreaState.js.map +1 -1
  156. package/dist/private/color/useColorAreaState.mjs.map +1 -1
  157. package/dist/private/color/useColorChannelFieldState.cjs.map +1 -1
  158. package/dist/private/color/useColorChannelFieldState.js.map +1 -1
  159. package/dist/private/color/useColorChannelFieldState.mjs.map +1 -1
  160. package/dist/private/color/useColorFieldState.cjs.map +1 -1
  161. package/dist/private/color/useColorFieldState.js.map +1 -1
  162. package/dist/private/color/useColorFieldState.mjs.map +1 -1
  163. package/dist/private/color/useColorPickerState.cjs.map +1 -1
  164. package/dist/private/color/useColorPickerState.js.map +1 -1
  165. package/dist/private/color/useColorPickerState.mjs.map +1 -1
  166. package/dist/private/color/useColorSliderState.cjs +5 -3
  167. package/dist/private/color/useColorSliderState.cjs.map +1 -1
  168. package/dist/private/color/useColorSliderState.js +5 -3
  169. package/dist/private/color/useColorSliderState.js.map +1 -1
  170. package/dist/private/color/useColorSliderState.mjs +5 -3
  171. package/dist/private/color/useColorSliderState.mjs.map +1 -1
  172. package/dist/private/color/useColorWheelState.cjs.map +1 -1
  173. package/dist/private/color/useColorWheelState.js.map +1 -1
  174. package/dist/private/color/useColorWheelState.mjs.map +1 -1
  175. package/dist/private/combobox/useComboBoxState.cjs +8 -2
  176. package/dist/private/combobox/useComboBoxState.cjs.map +1 -1
  177. package/dist/private/combobox/useComboBoxState.js +8 -2
  178. package/dist/private/combobox/useComboBoxState.js.map +1 -1
  179. package/dist/private/combobox/useComboBoxState.mjs +8 -2
  180. package/dist/private/combobox/useComboBoxState.mjs.map +1 -1
  181. package/dist/private/data/useAsyncList.cjs.map +1 -1
  182. package/dist/private/data/useAsyncList.js.map +1 -1
  183. package/dist/private/data/useAsyncList.mjs.map +1 -1
  184. package/dist/private/data/useListData.cjs.map +1 -1
  185. package/dist/private/data/useListData.js.map +1 -1
  186. package/dist/private/data/useListData.mjs.map +1 -1
  187. package/dist/private/data/useTreeData.cjs.map +1 -1
  188. package/dist/private/data/useTreeData.js.map +1 -1
  189. package/dist/private/data/useTreeData.mjs.map +1 -1
  190. package/dist/private/datepicker/IncompleteDate.cjs +8 -2
  191. package/dist/private/datepicker/IncompleteDate.cjs.map +1 -1
  192. package/dist/private/datepicker/IncompleteDate.js +8 -2
  193. package/dist/private/datepicker/IncompleteDate.js.map +1 -1
  194. package/dist/private/datepicker/IncompleteDate.mjs +8 -2
  195. package/dist/private/datepicker/IncompleteDate.mjs.map +1 -1
  196. package/dist/private/datepicker/placeholders.cjs +5 -0
  197. package/dist/private/datepicker/placeholders.cjs.map +1 -1
  198. package/dist/private/datepicker/placeholders.js +5 -0
  199. package/dist/private/datepicker/placeholders.js.map +1 -1
  200. package/dist/private/datepicker/placeholders.mjs +5 -0
  201. package/dist/private/datepicker/placeholders.mjs.map +1 -1
  202. package/dist/private/datepicker/useDateFieldState.cjs.map +1 -1
  203. package/dist/private/datepicker/useDateFieldState.js.map +1 -1
  204. package/dist/private/datepicker/useDateFieldState.mjs.map +1 -1
  205. package/dist/private/datepicker/useDatePickerState.cjs.map +1 -1
  206. package/dist/private/datepicker/useDatePickerState.js.map +1 -1
  207. package/dist/private/datepicker/useDatePickerState.mjs.map +1 -1
  208. package/dist/private/datepicker/useDateRangePickerState.cjs +1 -1
  209. package/dist/private/datepicker/useDateRangePickerState.cjs.map +1 -1
  210. package/dist/private/datepicker/useDateRangePickerState.js +1 -1
  211. package/dist/private/datepicker/useDateRangePickerState.js.map +1 -1
  212. package/dist/private/datepicker/useDateRangePickerState.mjs +1 -1
  213. package/dist/private/datepicker/useDateRangePickerState.mjs.map +1 -1
  214. package/dist/private/datepicker/useTimeFieldState.cjs.map +1 -1
  215. package/dist/private/datepicker/useTimeFieldState.js.map +1 -1
  216. package/dist/private/datepicker/useTimeFieldState.mjs.map +1 -1
  217. package/dist/private/datepicker/utils.cjs +2 -2
  218. package/dist/private/datepicker/utils.cjs.map +1 -1
  219. package/dist/private/datepicker/utils.js +2 -2
  220. package/dist/private/datepicker/utils.js.map +1 -1
  221. package/dist/private/datepicker/utils.mjs +2 -2
  222. package/dist/private/datepicker/utils.mjs.map +1 -1
  223. package/dist/private/disclosure/useDisclosureGroupState.cjs.map +1 -1
  224. package/dist/private/disclosure/useDisclosureGroupState.js.map +1 -1
  225. package/dist/private/disclosure/useDisclosureGroupState.mjs.map +1 -1
  226. package/dist/private/disclosure/useDisclosureState.cjs.map +1 -1
  227. package/dist/private/disclosure/useDisclosureState.js.map +1 -1
  228. package/dist/private/disclosure/useDisclosureState.mjs.map +1 -1
  229. package/dist/private/dnd/useDraggableCollectionState.cjs.map +1 -1
  230. package/dist/private/dnd/useDraggableCollectionState.js.map +1 -1
  231. package/dist/private/dnd/useDraggableCollectionState.mjs.map +1 -1
  232. package/dist/private/dnd/useDroppableCollectionState.cjs.map +1 -1
  233. package/dist/private/dnd/useDroppableCollectionState.js.map +1 -1
  234. package/dist/private/dnd/useDroppableCollectionState.mjs.map +1 -1
  235. package/dist/private/form/useFormValidationState.cjs.map +1 -1
  236. package/dist/private/form/useFormValidationState.js.map +1 -1
  237. package/dist/private/form/useFormValidationState.mjs.map +1 -1
  238. package/dist/private/grid/GridCollection.cjs.map +1 -1
  239. package/dist/private/grid/GridCollection.js.map +1 -1
  240. package/dist/private/grid/GridCollection.mjs.map +1 -1
  241. package/dist/private/grid/useGridState.cjs.map +1 -1
  242. package/dist/private/grid/useGridState.js.map +1 -1
  243. package/dist/private/grid/useGridState.mjs.map +1 -1
  244. package/dist/private/layout/GridLayout.cjs +8 -3
  245. package/dist/private/layout/GridLayout.cjs.map +1 -1
  246. package/dist/private/layout/GridLayout.js +8 -3
  247. package/dist/private/layout/GridLayout.js.map +1 -1
  248. package/dist/private/layout/GridLayout.mjs +8 -3
  249. package/dist/private/layout/GridLayout.mjs.map +1 -1
  250. package/dist/private/layout/ListLayout.cjs +1 -1
  251. package/dist/private/layout/ListLayout.cjs.map +1 -1
  252. package/dist/private/layout/ListLayout.js +2 -1
  253. package/dist/private/layout/ListLayout.js.map +1 -1
  254. package/dist/private/layout/ListLayout.mjs +1 -1
  255. package/dist/private/layout/ListLayout.mjs.map +1 -1
  256. package/dist/private/layout/TableLayout.cjs +60 -35
  257. package/dist/private/layout/TableLayout.cjs.map +1 -1
  258. package/dist/private/layout/TableLayout.js +65 -38
  259. package/dist/private/layout/TableLayout.js.map +1 -1
  260. package/dist/private/layout/TableLayout.mjs +61 -36
  261. package/dist/private/layout/TableLayout.mjs.map +1 -1
  262. package/dist/private/layout/WaterfallLayout.cjs.map +1 -1
  263. package/dist/private/layout/WaterfallLayout.js.map +1 -1
  264. package/dist/private/layout/WaterfallLayout.mjs.map +1 -1
  265. package/dist/private/list/ListCollection.cjs.map +1 -1
  266. package/dist/private/list/ListCollection.js.map +1 -1
  267. package/dist/private/list/ListCollection.mjs.map +1 -1
  268. package/dist/private/list/useListState.cjs.map +1 -1
  269. package/dist/private/list/useListState.js.map +1 -1
  270. package/dist/private/list/useListState.mjs.map +1 -1
  271. package/dist/private/list/useSingleSelectListState.cjs.map +1 -1
  272. package/dist/private/list/useSingleSelectListState.js.map +1 -1
  273. package/dist/private/list/useSingleSelectListState.mjs.map +1 -1
  274. package/dist/private/menu/useMenuTriggerState.cjs.map +1 -1
  275. package/dist/private/menu/useMenuTriggerState.js.map +1 -1
  276. package/dist/private/menu/useMenuTriggerState.mjs.map +1 -1
  277. package/dist/private/menu/useSubmenuTriggerState.cjs.map +1 -1
  278. package/dist/private/menu/useSubmenuTriggerState.js.map +1 -1
  279. package/dist/private/menu/useSubmenuTriggerState.mjs.map +1 -1
  280. package/dist/private/numberfield/useNumberFieldState.cjs +13 -1
  281. package/dist/private/numberfield/useNumberFieldState.cjs.map +1 -1
  282. package/dist/private/numberfield/useNumberFieldState.js +13 -1
  283. package/dist/private/numberfield/useNumberFieldState.js.map +1 -1
  284. package/dist/private/numberfield/useNumberFieldState.mjs +13 -1
  285. package/dist/private/numberfield/useNumberFieldState.mjs.map +1 -1
  286. package/dist/private/overlays/useOverlayTriggerState.cjs.map +1 -1
  287. package/dist/private/overlays/useOverlayTriggerState.js.map +1 -1
  288. package/dist/private/overlays/useOverlayTriggerState.mjs.map +1 -1
  289. package/dist/private/radio/useRadioGroupState.cjs.map +1 -1
  290. package/dist/private/radio/useRadioGroupState.js.map +1 -1
  291. package/dist/private/radio/useRadioGroupState.mjs.map +1 -1
  292. package/dist/private/searchfield/useSearchFieldState.cjs.map +1 -1
  293. package/dist/private/searchfield/useSearchFieldState.js.map +1 -1
  294. package/dist/private/searchfield/useSearchFieldState.mjs.map +1 -1
  295. package/dist/private/select/useSelectState.cjs.map +1 -1
  296. package/dist/private/select/useSelectState.js.map +1 -1
  297. package/dist/private/select/useSelectState.mjs.map +1 -1
  298. package/dist/private/selection/SelectionManager.cjs +2 -1
  299. package/dist/private/selection/SelectionManager.cjs.map +1 -1
  300. package/dist/private/selection/SelectionManager.js +3 -2
  301. package/dist/private/selection/SelectionManager.js.map +1 -1
  302. package/dist/private/selection/SelectionManager.mjs +2 -1
  303. package/dist/private/selection/SelectionManager.mjs.map +1 -1
  304. package/dist/private/selection/useMultipleSelectionState.cjs.map +1 -1
  305. package/dist/private/selection/useMultipleSelectionState.js.map +1 -1
  306. package/dist/private/selection/useMultipleSelectionState.mjs.map +1 -1
  307. package/dist/private/slider/useSliderState.cjs +22 -2
  308. package/dist/private/slider/useSliderState.cjs.map +1 -1
  309. package/dist/private/slider/useSliderState.js +22 -2
  310. package/dist/private/slider/useSliderState.js.map +1 -1
  311. package/dist/private/slider/useSliderState.mjs +22 -2
  312. package/dist/private/slider/useSliderState.mjs.map +1 -1
  313. package/dist/private/steplist/useStepListState.cjs.map +1 -1
  314. package/dist/private/steplist/useStepListState.js.map +1 -1
  315. package/dist/private/steplist/useStepListState.mjs.map +1 -1
  316. package/dist/private/table/Cell.cjs +2 -1
  317. package/dist/private/table/Cell.cjs.map +1 -1
  318. package/dist/private/table/Cell.js +2 -1
  319. package/dist/private/table/Cell.js.map +1 -1
  320. package/dist/private/table/Cell.mjs +2 -1
  321. package/dist/private/table/Cell.mjs.map +1 -1
  322. package/dist/private/table/Column.cjs +1 -0
  323. package/dist/private/table/Column.cjs.map +1 -1
  324. package/dist/private/table/Column.js +1 -0
  325. package/dist/private/table/Column.js.map +1 -1
  326. package/dist/private/table/Column.mjs +1 -0
  327. package/dist/private/table/Column.mjs.map +1 -1
  328. package/dist/private/table/Row.cjs +2 -1
  329. package/dist/private/table/Row.cjs.map +1 -1
  330. package/dist/private/table/Row.js +2 -1
  331. package/dist/private/table/Row.js.map +1 -1
  332. package/dist/private/table/Row.mjs +2 -1
  333. package/dist/private/table/Row.mjs.map +1 -1
  334. package/dist/private/table/TableBody.cjs +4 -2
  335. package/dist/private/table/TableBody.cjs.map +1 -1
  336. package/dist/private/table/TableBody.js +4 -2
  337. package/dist/private/table/TableBody.js.map +1 -1
  338. package/dist/private/table/TableBody.mjs +4 -2
  339. package/dist/private/table/TableBody.mjs.map +1 -1
  340. package/dist/private/table/TableCollection.cjs +1 -1
  341. package/dist/private/table/TableCollection.cjs.map +1 -1
  342. package/dist/private/table/TableCollection.js +1 -1
  343. package/dist/private/table/TableCollection.js.map +1 -1
  344. package/dist/private/table/TableCollection.mjs +1 -1
  345. package/dist/private/table/TableCollection.mjs.map +1 -1
  346. package/dist/private/table/TableColumnLayout.cjs +4 -1
  347. package/dist/private/table/TableColumnLayout.cjs.map +1 -1
  348. package/dist/private/table/TableColumnLayout.js +4 -1
  349. package/dist/private/table/TableColumnLayout.js.map +1 -1
  350. package/dist/private/table/TableColumnLayout.mjs +4 -1
  351. package/dist/private/table/TableColumnLayout.mjs.map +1 -1
  352. package/dist/private/table/TableHeader.cjs +4 -2
  353. package/dist/private/table/TableHeader.cjs.map +1 -1
  354. package/dist/private/table/TableHeader.js +4 -2
  355. package/dist/private/table/TableHeader.js.map +1 -1
  356. package/dist/private/table/TableHeader.mjs +4 -2
  357. package/dist/private/table/TableHeader.mjs.map +1 -1
  358. package/dist/private/table/TableUtils.cjs +1 -1
  359. package/dist/private/table/TableUtils.cjs.map +1 -1
  360. package/dist/private/table/TableUtils.js +1 -1
  361. package/dist/private/table/TableUtils.js.map +1 -1
  362. package/dist/private/table/TableUtils.mjs +1 -1
  363. package/dist/private/table/TableUtils.mjs.map +1 -1
  364. package/dist/private/table/useTableColumnResizeState.cjs.map +1 -1
  365. package/dist/private/table/useTableColumnResizeState.js.map +1 -1
  366. package/dist/private/table/useTableColumnResizeState.mjs.map +1 -1
  367. package/dist/private/table/useTableState.cjs +2 -1
  368. package/dist/private/table/useTableState.cjs.map +1 -1
  369. package/dist/private/table/useTableState.js +2 -1
  370. package/dist/private/table/useTableState.js.map +1 -1
  371. package/dist/private/table/useTableState.mjs +2 -1
  372. package/dist/private/table/useTableState.mjs.map +1 -1
  373. package/dist/private/table/useTreeGridState.cjs +2 -1
  374. package/dist/private/table/useTreeGridState.cjs.map +1 -1
  375. package/dist/private/table/useTreeGridState.js +2 -1
  376. package/dist/private/table/useTreeGridState.js.map +1 -1
  377. package/dist/private/table/useTreeGridState.mjs +2 -1
  378. package/dist/private/table/useTreeGridState.mjs.map +1 -1
  379. package/dist/private/tabs/useTabListState.cjs.map +1 -1
  380. package/dist/private/tabs/useTabListState.js.map +1 -1
  381. package/dist/private/tabs/useTabListState.mjs.map +1 -1
  382. package/dist/private/toast/useToastState.cjs.map +1 -1
  383. package/dist/private/toast/useToastState.js.map +1 -1
  384. package/dist/private/toast/useToastState.mjs.map +1 -1
  385. package/dist/private/toggle/useToggleGroupState.cjs.map +1 -1
  386. package/dist/private/toggle/useToggleGroupState.js.map +1 -1
  387. package/dist/private/toggle/useToggleGroupState.mjs.map +1 -1
  388. package/dist/private/toggle/useToggleState.cjs.map +1 -1
  389. package/dist/private/toggle/useToggleState.js.map +1 -1
  390. package/dist/private/toggle/useToggleState.mjs.map +1 -1
  391. package/dist/private/tooltip/useTooltipTriggerState.cjs.map +1 -1
  392. package/dist/private/tooltip/useTooltipTriggerState.js.map +1 -1
  393. package/dist/private/tooltip/useTooltipTriggerState.mjs.map +1 -1
  394. package/dist/private/tree/TreeCollection.cjs.map +1 -1
  395. package/dist/private/tree/TreeCollection.js.map +1 -1
  396. package/dist/private/tree/TreeCollection.mjs.map +1 -1
  397. package/dist/private/tree/useTreeState.cjs.map +1 -1
  398. package/dist/private/tree/useTreeState.js.map +1 -1
  399. package/dist/private/tree/useTreeState.mjs.map +1 -1
  400. package/dist/private/utils/number.cjs +2 -1
  401. package/dist/private/utils/number.cjs.map +1 -1
  402. package/dist/private/utils/number.js +2 -1
  403. package/dist/private/utils/number.js.map +1 -1
  404. package/dist/private/utils/number.mjs +2 -1
  405. package/dist/private/utils/number.mjs.map +1 -1
  406. package/dist/private/utils/useControlledState.cjs.map +1 -1
  407. package/dist/private/utils/useControlledState.js.map +1 -1
  408. package/dist/private/utils/useControlledState.mjs.map +1 -1
  409. package/dist/private/virtualizer/Layout.cjs.map +1 -1
  410. package/dist/private/virtualizer/Layout.js.map +1 -1
  411. package/dist/private/virtualizer/Layout.mjs.map +1 -1
  412. package/dist/private/virtualizer/LayoutInfo.cjs +4 -2
  413. package/dist/private/virtualizer/LayoutInfo.cjs.map +1 -1
  414. package/dist/private/virtualizer/LayoutInfo.js +4 -2
  415. package/dist/private/virtualizer/LayoutInfo.js.map +1 -1
  416. package/dist/private/virtualizer/LayoutInfo.mjs +4 -2
  417. package/dist/private/virtualizer/LayoutInfo.mjs.map +1 -1
  418. package/dist/private/virtualizer/Rect.cjs +4 -0
  419. package/dist/private/virtualizer/Rect.cjs.map +1 -1
  420. package/dist/private/virtualizer/Rect.js +4 -0
  421. package/dist/private/virtualizer/Rect.js.map +1 -1
  422. package/dist/private/virtualizer/Rect.mjs +4 -0
  423. package/dist/private/virtualizer/Rect.mjs.map +1 -1
  424. package/dist/private/virtualizer/ReusableView.cjs.map +1 -1
  425. package/dist/private/virtualizer/ReusableView.js.map +1 -1
  426. package/dist/private/virtualizer/ReusableView.mjs.map +1 -1
  427. package/dist/private/virtualizer/Size.cjs.map +1 -1
  428. package/dist/private/virtualizer/Size.js.map +1 -1
  429. package/dist/private/virtualizer/Size.mjs.map +1 -1
  430. package/dist/private/virtualizer/Virtualizer.cjs +4 -4
  431. package/dist/private/virtualizer/Virtualizer.cjs.map +1 -1
  432. package/dist/private/virtualizer/Virtualizer.js +4 -4
  433. package/dist/private/virtualizer/Virtualizer.js.map +1 -1
  434. package/dist/private/virtualizer/Virtualizer.mjs +4 -4
  435. package/dist/private/virtualizer/Virtualizer.mjs.map +1 -1
  436. package/dist/private/virtualizer/useVirtualizerState.cjs.map +1 -1
  437. package/dist/private/virtualizer/useVirtualizerState.js.map +1 -1
  438. package/dist/private/virtualizer/useVirtualizerState.mjs.map +1 -1
  439. package/dist/types/exports/useCalendarState.d.ts +1 -1
  440. package/dist/types/src/autocomplete/useAutocompleteState.d.ts +4 -1
  441. package/dist/types/src/calendar/types.d.ts +50 -14
  442. package/dist/types/src/calendar/useCalendarState.d.ts +20 -6
  443. package/dist/types/src/calendar/useRangeCalendarState.d.ts +14 -5
  444. package/dist/types/src/calendar/utils.d.ts +1 -0
  445. package/dist/types/src/checkbox/useCheckboxGroupState.d.ts +1 -0
  446. package/dist/types/src/collections/useCollection.d.ts +1 -1
  447. package/dist/types/src/color/useColorAreaState.d.ts +21 -8
  448. package/dist/types/src/color/useColorFieldState.d.ts +2 -3
  449. package/dist/types/src/color/useColorSliderState.d.ts +4 -1
  450. package/dist/types/src/color/useColorWheelState.d.ts +5 -1
  451. package/dist/types/src/combobox/useComboBoxState.d.ts +19 -6
  452. package/dist/types/src/data/useAsyncList.d.ts +2 -2
  453. package/dist/types/src/data/useListData.d.ts +13 -1
  454. package/dist/types/src/data/useTreeData.d.ts +11 -0
  455. package/dist/types/src/datepicker/IncompleteDate.d.ts +11 -5
  456. package/dist/types/src/datepicker/types.d.ts +37 -11
  457. package/dist/types/src/datepicker/useDateFieldState.d.ts +13 -4
  458. package/dist/types/src/datepicker/useDatePickerState.d.ts +10 -4
  459. package/dist/types/src/datepicker/useDateRangePickerState.d.ts +12 -3
  460. package/dist/types/src/dnd/useDraggableCollectionState.d.ts +4 -1
  461. package/dist/types/src/form/useFormValidationState.d.ts +4 -1
  462. package/dist/types/src/grid/GridCollection.d.ts +2 -1
  463. package/dist/types/src/grid/useGridState.d.ts +7 -3
  464. package/dist/types/src/layout/GridLayout.d.ts +18 -2
  465. package/dist/types/src/layout/ListLayout.d.ts +34 -12
  466. package/dist/types/src/layout/TableLayout.d.ts +11 -4
  467. package/dist/types/src/layout/WaterfallLayout.d.ts +9 -2
  468. package/dist/types/src/list/useListState.d.ts +2 -2
  469. package/dist/types/src/menu/useMenuTriggerState.d.ts +3 -1
  470. package/dist/types/src/menu/useSubmenuTriggerState.d.ts +2 -2
  471. package/dist/types/src/numberfield/useNumberFieldState.d.ts +15 -11
  472. package/dist/types/src/radio/useRadioGroupState.d.ts +4 -1
  473. package/dist/types/src/select/useSelectState.d.ts +13 -2
  474. package/dist/types/src/selection/types.d.ts +4 -1
  475. package/dist/types/src/selection/useMultipleSelectionState.d.ts +2 -0
  476. package/dist/types/src/slider/useSliderState.d.ts +22 -2
  477. package/dist/types/src/table/Column.d.ts +4 -1
  478. package/dist/types/src/table/Row.d.ts +5 -3
  479. package/dist/types/src/table/TableBody.d.ts +3 -2
  480. package/dist/types/src/table/TableCollection.d.ts +4 -1
  481. package/dist/types/src/table/TableColumnLayout.d.ts +4 -1
  482. package/dist/types/src/table/TableHeader.d.ts +7 -3
  483. package/dist/types/src/table/TableUtils.d.ts +19 -16
  484. package/dist/types/src/table/useTableColumnResizeState.d.ts +5 -3
  485. package/dist/types/src/table/useTableState.d.ts +15 -6
  486. package/dist/types/src/table/useTreeGridState.d.ts +3 -2
  487. package/dist/types/src/toggle/useToggleGroupState.d.ts +1 -0
  488. package/dist/types/src/toggle/useToggleState.d.ts +2 -1
  489. package/dist/types/src/tooltip/useTooltipTriggerState.d.ts +8 -2
  490. package/dist/types/src/tree/useTreeState.d.ts +1 -1
  491. package/dist/types/src/utils/number.d.ts +2 -1
  492. package/dist/types/src/virtualizer/Layout.d.ts +5 -2
  493. package/dist/types/src/virtualizer/LayoutInfo.d.ts +10 -3
  494. package/dist/types/src/virtualizer/Rect.d.ts +4 -0
  495. package/dist/types/src/virtualizer/Virtualizer.d.ts +5 -4
  496. package/package.json +8 -7
@@ -1 +1 @@
1
- {"mappings":";;;AAAA;;;;;;;;;;CAUC;;AAiCM,SAAS,0CAAqB,KAA+B;IAClE,IAAI,EACF,eAAe,kBAAkB,EACjC,YAAY,eAAe,EAC3B,mBAAmB,yBAAyB,EAAE,EAC/C,GAAG;IAEJ,IAAI,gBAAgB,CAAC;QACnB,IAAI,oBACF,mBAAmB;IAEvB;IAEA,IAAI,CAAC,eAAe,iBAAiB,GAAG,CAAA,GAAA,eAAO,EAAiB;IAChE,IAAI,CAAC,YAAY,cAAc,GAAG,CAAA,GAAA,yCAAiB,EACjD,iBACA,wBACA;IAGF,OAAO;oBACL;uBACA;uBACA;0BACA;IACF;AACF","sources":["packages/react-stately/src/autocomplete/useAutocompleteState.ts"],"sourcesContent":["/*\n * Copyright 2024 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 {ReactNode, useState} from 'react';\nimport {useControlledState} from '../utils/useControlledState';\n\nexport interface AutocompleteState {\n /** The current value of the autocomplete input. */\n inputValue: string,\n /** Sets the value of the autocomplete input. */\n setInputValue(value: string): void,\n /** The id of the current aria-activedescendant of the autocomplete input. */\n focusedNodeId: string | null,\n /** Sets the id of the current aria-activedescendant of the autocomplete input. */\n setFocusedNodeId(value: string | null): void\n}\n\nexport interface AutocompleteProps {\n /** The value of the autocomplete input (controlled). */\n inputValue?: string,\n /** The default value of the autocomplete input (uncontrolled). */\n defaultInputValue?: string,\n /** Handler that is called when the autocomplete input value changes. */\n onInputChange?: (value: string) => void,\n /** The children wrapped by the autocomplete. Consists of at least an input element and a collection element to filter. */\n children: ReactNode\n}\n\n// Emulate our other stately hooks which accept all \"base\" props even if not used\nexport interface AutocompleteStateOptions extends Omit<AutocompleteProps, 'children'> {}\n\n/**\n * Provides state management for an autocomplete component.\n */\nexport function useAutocompleteState(props: AutocompleteStateOptions): AutocompleteState {\n let {\n onInputChange: propsOnInputChange,\n inputValue: propsInputValue,\n defaultInputValue: propsDefaultInputValue = ''\n } = props;\n\n let onInputChange = (value) => {\n if (propsOnInputChange) {\n propsOnInputChange(value);\n }\n };\n\n let [focusedNodeId, setFocusedNodeId] = useState<string | null>(null);\n let [inputValue, setInputValue] = useControlledState(\n propsInputValue,\n propsDefaultInputValue!,\n onInputChange\n );\n\n return {\n inputValue,\n setInputValue,\n focusedNodeId,\n setFocusedNodeId\n };\n}\n"],"names":[],"version":3,"file":"useAutocompleteState.js.map"}
1
+ {"mappings":";;;AAAA;;;;;;;;;;CAUC;;AAoCM,SAAS,0CAAqB,KAA+B;IAClE,IAAI,EACF,eAAe,kBAAkB,EACjC,YAAY,eAAe,EAC3B,mBAAmB,yBAAyB,EAAE,EAC/C,GAAG;IAEJ,IAAI,gBAAgB,CAAA;QAClB,IAAI,oBACF,mBAAmB;IAEvB;IAEA,IAAI,CAAC,eAAe,iBAAiB,GAAG,CAAA,GAAA,eAAO,EAAiB;IAChE,IAAI,CAAC,YAAY,cAAc,GAAG,CAAA,GAAA,yCAAiB,EACjD,iBACA,wBACA;IAGF,OAAO;oBACL;uBACA;uBACA;0BACA;IACF;AACF","sources":["packages/react-stately/src/autocomplete/useAutocompleteState.ts"],"sourcesContent":["/*\n * Copyright 2024 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 {ReactNode, useState} from 'react';\nimport {useControlledState} from '../utils/useControlledState';\n\nexport interface AutocompleteState {\n /** The current value of the autocomplete input. */\n inputValue: string;\n /** Sets the value of the autocomplete input. */\n setInputValue(value: string): void;\n /** The id of the current aria-activedescendant of the autocomplete input. */\n focusedNodeId: string | null;\n /** Sets the id of the current aria-activedescendant of the autocomplete input. */\n setFocusedNodeId(value: string | null): void;\n}\n\nexport interface AutocompleteProps {\n /** The value of the autocomplete input (controlled). */\n inputValue?: string;\n /** The default value of the autocomplete input (uncontrolled). */\n defaultInputValue?: string;\n /** Handler that is called when the autocomplete input value changes. */\n onInputChange?: (value: string) => void;\n /**\n * The children wrapped by the autocomplete. Consists of at least an input element and a\n * collection element to filter.\n */\n children: ReactNode;\n}\n\n// Emulate our other stately hooks which accept all \"base\" props even if not used\nexport interface AutocompleteStateOptions extends Omit<AutocompleteProps, 'children'> {}\n\n/**\n * Provides state management for an autocomplete component.\n */\nexport function useAutocompleteState(props: AutocompleteStateOptions): AutocompleteState {\n let {\n onInputChange: propsOnInputChange,\n inputValue: propsInputValue,\n defaultInputValue: propsDefaultInputValue = ''\n } = props;\n\n let onInputChange = value => {\n if (propsOnInputChange) {\n propsOnInputChange(value);\n }\n };\n\n let [focusedNodeId, setFocusedNodeId] = useState<string | null>(null);\n let [inputValue, setInputValue] = useControlledState(\n propsInputValue,\n propsDefaultInputValue!,\n onInputChange\n );\n\n return {\n inputValue,\n setInputValue,\n focusedNodeId,\n setFocusedNodeId\n };\n}\n"],"names":[],"version":3,"file":"useAutocompleteState.js.map"}
@@ -1 +1 @@
1
- {"mappings":";;;AAAA;;;;;;;;;;CAUC;;AAiCM,SAAS,0CAAqB,KAA+B;IAClE,IAAI,EACF,eAAe,kBAAkB,EACjC,YAAY,eAAe,EAC3B,mBAAmB,yBAAyB,EAAE,EAC/C,GAAG;IAEJ,IAAI,gBAAgB,CAAC;QACnB,IAAI,oBACF,mBAAmB;IAEvB;IAEA,IAAI,CAAC,eAAe,iBAAiB,GAAG,CAAA,GAAA,eAAO,EAAiB;IAChE,IAAI,CAAC,YAAY,cAAc,GAAG,CAAA,GAAA,yCAAiB,EACjD,iBACA,wBACA;IAGF,OAAO;oBACL;uBACA;uBACA;0BACA;IACF;AACF","sources":["packages/react-stately/src/autocomplete/useAutocompleteState.ts"],"sourcesContent":["/*\n * Copyright 2024 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 {ReactNode, useState} from 'react';\nimport {useControlledState} from '../utils/useControlledState';\n\nexport interface AutocompleteState {\n /** The current value of the autocomplete input. */\n inputValue: string,\n /** Sets the value of the autocomplete input. */\n setInputValue(value: string): void,\n /** The id of the current aria-activedescendant of the autocomplete input. */\n focusedNodeId: string | null,\n /** Sets the id of the current aria-activedescendant of the autocomplete input. */\n setFocusedNodeId(value: string | null): void\n}\n\nexport interface AutocompleteProps {\n /** The value of the autocomplete input (controlled). */\n inputValue?: string,\n /** The default value of the autocomplete input (uncontrolled). */\n defaultInputValue?: string,\n /** Handler that is called when the autocomplete input value changes. */\n onInputChange?: (value: string) => void,\n /** The children wrapped by the autocomplete. Consists of at least an input element and a collection element to filter. */\n children: ReactNode\n}\n\n// Emulate our other stately hooks which accept all \"base\" props even if not used\nexport interface AutocompleteStateOptions extends Omit<AutocompleteProps, 'children'> {}\n\n/**\n * Provides state management for an autocomplete component.\n */\nexport function useAutocompleteState(props: AutocompleteStateOptions): AutocompleteState {\n let {\n onInputChange: propsOnInputChange,\n inputValue: propsInputValue,\n defaultInputValue: propsDefaultInputValue = ''\n } = props;\n\n let onInputChange = (value) => {\n if (propsOnInputChange) {\n propsOnInputChange(value);\n }\n };\n\n let [focusedNodeId, setFocusedNodeId] = useState<string | null>(null);\n let [inputValue, setInputValue] = useControlledState(\n propsInputValue,\n propsDefaultInputValue!,\n onInputChange\n );\n\n return {\n inputValue,\n setInputValue,\n focusedNodeId,\n setFocusedNodeId\n };\n}\n"],"names":[],"version":3,"file":"useAutocompleteState.mjs.map"}
1
+ {"mappings":";;;AAAA;;;;;;;;;;CAUC;;AAoCM,SAAS,0CAAqB,KAA+B;IAClE,IAAI,EACF,eAAe,kBAAkB,EACjC,YAAY,eAAe,EAC3B,mBAAmB,yBAAyB,EAAE,EAC/C,GAAG;IAEJ,IAAI,gBAAgB,CAAA;QAClB,IAAI,oBACF,mBAAmB;IAEvB;IAEA,IAAI,CAAC,eAAe,iBAAiB,GAAG,CAAA,GAAA,eAAO,EAAiB;IAChE,IAAI,CAAC,YAAY,cAAc,GAAG,CAAA,GAAA,yCAAiB,EACjD,iBACA,wBACA;IAGF,OAAO;oBACL;uBACA;uBACA;0BACA;IACF;AACF","sources":["packages/react-stately/src/autocomplete/useAutocompleteState.ts"],"sourcesContent":["/*\n * Copyright 2024 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 {ReactNode, useState} from 'react';\nimport {useControlledState} from '../utils/useControlledState';\n\nexport interface AutocompleteState {\n /** The current value of the autocomplete input. */\n inputValue: string;\n /** Sets the value of the autocomplete input. */\n setInputValue(value: string): void;\n /** The id of the current aria-activedescendant of the autocomplete input. */\n focusedNodeId: string | null;\n /** Sets the id of the current aria-activedescendant of the autocomplete input. */\n setFocusedNodeId(value: string | null): void;\n}\n\nexport interface AutocompleteProps {\n /** The value of the autocomplete input (controlled). */\n inputValue?: string;\n /** The default value of the autocomplete input (uncontrolled). */\n defaultInputValue?: string;\n /** Handler that is called when the autocomplete input value changes. */\n onInputChange?: (value: string) => void;\n /**\n * The children wrapped by the autocomplete. Consists of at least an input element and a\n * collection element to filter.\n */\n children: ReactNode;\n}\n\n// Emulate our other stately hooks which accept all \"base\" props even if not used\nexport interface AutocompleteStateOptions extends Omit<AutocompleteProps, 'children'> {}\n\n/**\n * Provides state management for an autocomplete component.\n */\nexport function useAutocompleteState(props: AutocompleteStateOptions): AutocompleteState {\n let {\n onInputChange: propsOnInputChange,\n inputValue: propsInputValue,\n defaultInputValue: propsDefaultInputValue = ''\n } = props;\n\n let onInputChange = value => {\n if (propsOnInputChange) {\n propsOnInputChange(value);\n }\n };\n\n let [focusedNodeId, setFocusedNodeId] = useState<string | null>(null);\n let [inputValue, setInputValue] = useControlledState(\n propsInputValue,\n propsDefaultInputValue!,\n onInputChange\n );\n\n return {\n inputValue,\n setInputValue,\n focusedNodeId,\n setFocusedNodeId\n };\n}\n"],"names":[],"version":3,"file":"useAutocompleteState.mjs.map"}
@@ -32,17 +32,23 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
32
32
  ]);
33
33
  let { locale: locale, createCalendar: createCalendar, visibleDuration: visibleDuration = {
34
34
  months: 1
35
- }, minValue: minValue, maxValue: maxValue, selectionAlignment: selectionAlignment, isDateUnavailable: isDateUnavailable, pageBehavior: pageBehavior = 'visible', firstDayOfWeek: firstDayOfWeek } = props;
35
+ }, minValue: minValue, maxValue: maxValue, selectionAlignment: selectionAlignment, isDateUnavailable: isDateUnavailable, pageBehavior: pageBehavior = 'visible', selectionMode: selectionMode = 'single', firstDayOfWeek: firstDayOfWeek, weeksInMonth: weeksInMonth } = props;
36
36
  let calendar = (0, $9I0if$react.useMemo)(()=>createCalendar(resolvedOptions.calendar), [
37
37
  createCalendar,
38
38
  resolvedOptions.calendar
39
39
  ]);
40
40
  let [value, setControlledValue] = (0, $14cedf286405cc4b$exports.useControlledState)(props.value, props.defaultValue ?? null, props.onChange);
41
- let calendarDateValue = (0, $9I0if$react.useMemo)(()=>value ? (0, $9I0if$internationalizeddate.toCalendar)((0, $9I0if$internationalizeddate.toCalendarDate)(value), calendar) : null, [
41
+ let calendarDateValue = (0, $9I0if$react.useMemo)(()=>{
42
+ if (Array.isArray(value)) return value.map((value)=>(0, $9I0if$internationalizeddate.toCalendar)((0, $9I0if$internationalizeddate.toCalendarDate)(value), calendar));
43
+ else return value ? (0, $9I0if$internationalizeddate.toCalendar)((0, $9I0if$internationalizeddate.toCalendarDate)(value), calendar) : null;
44
+ }, [
42
45
  value,
43
46
  calendar
44
47
  ]);
45
- let timeZone = (0, $9I0if$react.useMemo)(()=>value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone, [
48
+ let timeZone = (0, $9I0if$react.useMemo)(()=>{
49
+ let val = Array.isArray(value) ? value[0] : value;
50
+ return val && 'timeZone' in val ? val.timeZone : resolvedOptions.timeZone;
51
+ }, [
46
52
  value,
47
53
  resolvedOptions.timeZone
48
54
  ]);
@@ -52,7 +58,11 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
52
58
  minValue,
53
59
  maxValue
54
60
  ]);
55
- let defaultFocusedCalendarDate = (0, $9I0if$react.useMemo)(()=>(0, $8b8d004404afcaba$exports.constrainValue)(props.defaultFocusedValue ? (0, $9I0if$internationalizeddate.toCalendar)((0, $9I0if$internationalizeddate.toCalendarDate)(props.defaultFocusedValue), calendar) : calendarDateValue || (0, $9I0if$internationalizeddate.toCalendar)((0, $9I0if$internationalizeddate.today)(timeZone), calendar), minValue, maxValue), [
61
+ let defaultFocusedCalendarDate = (0, $9I0if$react.useMemo)(()=>{
62
+ if (props.defaultFocusedValue) return (0, $8b8d004404afcaba$exports.constrainValue)((0, $9I0if$internationalizeddate.toCalendar)((0, $9I0if$internationalizeddate.toCalendarDate)(props.defaultFocusedValue), calendar), minValue, maxValue);
63
+ if (calendarDateValue) return (0, $8b8d004404afcaba$exports.constrainValue)(Array.isArray(calendarDateValue) ? calendarDateValue[0] : calendarDateValue, minValue, maxValue);
64
+ return (0, $8b8d004404afcaba$exports.constrainValue)((0, $9I0if$internationalizeddate.toCalendar)((0, $9I0if$internationalizeddate.today)(timeZone), calendar), minValue, maxValue);
65
+ }, [
56
66
  props.defaultFocusedValue,
57
67
  calendarDateValue,
58
68
  timeZone,
@@ -61,7 +71,7 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
61
71
  maxValue
62
72
  ]);
63
73
  let [focusedDate, setFocusedDate] = (0, $14cedf286405cc4b$exports.useControlledState)(focusedCalendarDate, defaultFocusedCalendarDate, props.onFocusChange);
64
- let [startDate, setStartDate] = (0, $9I0if$react.useState)(()=>{
74
+ let getStartDate = ()=>{
65
75
  switch(selectionAlignment){
66
76
  case 'start':
67
77
  return (0, $8b8d004404afcaba$exports.alignStart)(focusedDate, visibleDuration, locale, minValue, maxValue);
@@ -71,8 +81,14 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
71
81
  default:
72
82
  return (0, $8b8d004404afcaba$exports.alignCenter)(focusedDate, visibleDuration, locale, minValue, maxValue);
73
83
  }
74
- });
84
+ };
85
+ let [startDate, setStartDate] = (0, $9I0if$react.useState)(getStartDate);
75
86
  let [isFocused, setFocused] = (0, $9I0if$react.useState)(props.autoFocus || false);
87
+ let [lastVisibleDuration, setLastVisibleDuration] = (0, $9I0if$react.useState)(visibleDuration);
88
+ if (!(0, $8b8d004404afcaba$exports.isEqualDuration)(visibleDuration, lastVisibleDuration)) {
89
+ setLastVisibleDuration(visibleDuration);
90
+ setStartDate(getStartDate());
91
+ }
76
92
  let endDate = (0, $9I0if$react.useMemo)(()=>{
77
93
  let duration = {
78
94
  ...visibleDuration
@@ -101,28 +117,35 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
101
117
  date = (0, $8b8d004404afcaba$exports.constrainValue)(date, minValue, maxValue);
102
118
  setFocusedDate(date);
103
119
  }
120
+ function normalizeValue(newValue) {
121
+ let constrained = (0, $8b8d004404afcaba$exports.constrainValue)(newValue, minValue, maxValue);
122
+ let prev = (0, $8b8d004404afcaba$exports.previousAvailableDate)(constrained, startDate, isDateUnavailable);
123
+ if (!prev) return null;
124
+ // The display calendar should not have any effect on the emitted value.
125
+ // Emit dates in the same calendar as the original value, if any, otherwise gregorian.
126
+ let baseValue = Array.isArray(value) ? value[0] : value;
127
+ let calendarValue = (0, $9I0if$internationalizeddate.toCalendar)(prev, baseValue?.calendar || new (0, $9I0if$internationalizeddate.GregorianCalendar)());
128
+ // Preserve time if the input value had one.
129
+ if (baseValue && 'hour' in baseValue) return baseValue.set(calendarValue);
130
+ return calendarValue;
131
+ }
104
132
  function setValue(newValue) {
105
133
  if (!props.isDisabled && !props.isReadOnly) {
106
- let localValue = newValue;
107
- if (localValue === null) {
108
- setControlledValue(null);
134
+ if (newValue === null) {
135
+ setControlledValue(selectionMode === 'multiple' ? [] : null);
109
136
  return;
110
137
  }
111
- localValue = (0, $8b8d004404afcaba$exports.constrainValue)(localValue, minValue, maxValue);
112
- localValue = (0, $8b8d004404afcaba$exports.previousAvailableDate)(localValue, startDate, isDateUnavailable);
113
- if (!localValue) return;
114
- // The display calendar should not have any effect on the emitted value.
115
- // Emit dates in the same calendar as the original value, if any, otherwise gregorian.
116
- localValue = (0, $9I0if$internationalizeddate.toCalendar)(localValue, value?.calendar || new (0, $9I0if$internationalizeddate.GregorianCalendar)());
117
- // Preserve time if the input value had one.
118
- if (value && 'hour' in value) setControlledValue(value.set(localValue));
119
- else setControlledValue(localValue);
138
+ if (Array.isArray(newValue)) setControlledValue(newValue.map(normalizeValue).filter(Boolean));
139
+ else {
140
+ let localValue = normalizeValue(newValue);
141
+ if (localValue) setControlledValue(localValue);
142
+ }
120
143
  }
121
144
  }
122
145
  let isUnavailable = (0, $9I0if$react.useMemo)(()=>{
123
146
  if (!calendarDateValue) return false;
124
- if (isDateUnavailable && isDateUnavailable(calendarDateValue)) return true;
125
- return (0, $8b8d004404afcaba$exports.isInvalid)(calendarDateValue, minValue, maxValue);
147
+ if (Array.isArray(calendarDateValue)) return calendarDateValue.some((date)=>isDateUnavailable?.(date) || (0, $8b8d004404afcaba$exports.isInvalid)(date, minValue, maxValue));
148
+ return isDateUnavailable?.(calendarDateValue) || (0, $8b8d004404afcaba$exports.isInvalid)(calendarDateValue, minValue, maxValue);
126
149
  }, [
127
150
  calendarDateValue,
128
151
  isDateUnavailable,
@@ -143,6 +166,8 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
143
166
  isReadOnly: props.isReadOnly ?? false,
144
167
  value: calendarDateValue,
145
168
  setValue: setValue,
169
+ selectionMode: selectionMode,
170
+ visibleDuration: visibleDuration,
146
171
  visibleRange: {
147
172
  start: startDate,
148
173
  end: endDate
@@ -225,10 +250,25 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
225
250
  }));
226
251
  },
227
252
  selectFocusedDate () {
228
- if (!(isDateUnavailable && isDateUnavailable(focusedDate))) setValue(focusedDate);
253
+ if (!(isDateUnavailable && isDateUnavailable(focusedDate))) this.selectDate(focusedDate);
229
254
  },
230
255
  selectDate (date) {
231
- setValue(date);
256
+ if (props.isDisabled || props.isReadOnly) return;
257
+ if (selectionMode === 'multiple' && date != null) {
258
+ let newDate = normalizeValue(date);
259
+ if (!newDate) return;
260
+ let baseValue = [];
261
+ if (Array.isArray(value)) baseValue = value;
262
+ else if (value != null) baseValue = [
263
+ value
264
+ ];
265
+ let index = baseValue.findIndex((value)=>(0, $9I0if$internationalizeddate.isSameDay)(value, newDate));
266
+ let newValue = index >= 0 ? baseValue.slice(0, index).concat(baseValue.slice(index + 1)) : [
267
+ ...baseValue,
268
+ newDate
269
+ ];
270
+ setControlledValue(newValue);
271
+ } else setValue(date);
232
272
  },
233
273
  isFocused: isFocused,
234
274
  setFocused: setFocused,
@@ -236,7 +276,8 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
236
276
  return (0, $8b8d004404afcaba$exports.isInvalid)(date, minValue, maxValue);
237
277
  },
238
278
  isSelected (date) {
239
- return calendarDateValue != null && (0, $9I0if$internationalizeddate.isSameDay)(date, calendarDateValue) && !this.isCellDisabled(date) && !this.isCellUnavailable(date);
279
+ if (!calendarDateValue || this.isCellDisabled(date) || this.isCellUnavailable(date)) return false;
280
+ return Array.isArray(calendarDateValue) ? calendarDateValue.some((value)=>(0, $9I0if$internationalizeddate.isSameDay)(value, date)) : (0, $9I0if$internationalizeddate.isSameDay)(date, calendarDateValue);
240
281
  },
241
282
  isCellFocused (date) {
242
283
  return isFocused && focusedDate && (0, $9I0if$internationalizeddate.isSameDay)(date, focusedDate);
@@ -266,12 +307,15 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
266
307
  weeks: weekIndex
267
308
  });
268
309
  let dates = [];
269
- date = (0, $9I0if$internationalizeddate.startOfWeek)(date, locale, firstDayOfWeek);
270
- // startOfWeek will clamp dates within the calendar system's valid range, which may
271
- // start in the middle of a week. In this case, add null placeholders.
272
- let dayOfWeek = (0, $9I0if$internationalizeddate.getDayOfWeek)(date, locale, firstDayOfWeek);
273
- for(let i = 0; i < dayOfWeek; i++)dates.push(null);
274
- while(dates.length < 7){
310
+ let days = visibleDuration.days && visibleDuration.days < 7 ? visibleDuration.days : 7;
311
+ if (days === 7) {
312
+ date = (0, $9I0if$internationalizeddate.startOfWeek)(date, locale, firstDayOfWeek);
313
+ // startOfWeek will clamp dates within the calendar system's valid range, which may
314
+ // start in the middle of a week. In this case, add null placeholders.
315
+ let dayOfWeek = (0, $9I0if$internationalizeddate.getDayOfWeek)(date, locale, firstDayOfWeek);
316
+ for(let i = 0; i < dayOfWeek; i++)dates.push(null);
317
+ }
318
+ while(dates.length < days){
275
319
  dates.push(date);
276
320
  let nextDate = date.add({
277
321
  days: 1
@@ -280,8 +324,16 @@ function $e247a673010dfa8e$export$6d095e787d2b5e1f(props) {
280
324
  date = nextDate;
281
325
  }
282
326
  // Add null placeholders if at the end of the calendar system.
283
- while(dates.length < 7)dates.push(null);
327
+ while(dates.length < days)dates.push(null);
284
328
  return dates;
329
+ },
330
+ getWeeksInMonth (date = startDate) {
331
+ let weeks = weeksInMonth || (0, $9I0if$internationalizeddate.getWeeksInMonth)(date, locale, firstDayOfWeek);
332
+ if (visibleDuration.weeks || visibleDuration.days) {
333
+ weeks = visibleDuration.weeks ?? 0;
334
+ if (visibleDuration.days) weeks += Math.ceil(visibleDuration.days / 7);
335
+ }
336
+ return weeks;
285
337
  }
286
338
  };
287
339
  }
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/react-stately/src/calendar/useCalendarState.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\nimport {alignCenter, alignEnd, alignStart, constrainStart, constrainValue, isInvalid, previousAvailableDate} from './utils';\nimport {\n Calendar,\n CalendarDate,\n CalendarIdentifier,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n getDayOfWeek,\n GregorianCalendar,\n isEqualCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\n toCalendar,\n toCalendarDate,\n today\n} from '@internationalized/date';\nimport {CalendarPropsBase, CalendarState, DateValue, MappedDateValue} from './types';\nimport {useControlledState} from '../utils/useControlledState';\nimport {useMemo, useState} from 'react';\nimport {ValidationState, ValueBase} from '@react-types/shared';\n\nexport interface CalendarProps<T extends DateValue> extends CalendarPropsBase, ValueBase<T | null, MappedDateValue<T>> {}\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: CalendarIdentifier) => 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 * Determines the alignment of the visible months on initial render based on the current selection or current date if there is no selection.\n * @default 'center'\n */\n selectionAlignment?: 'start' | 'center' | 'end'\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 pageBehavior = 'visible',\n firstDayOfWeek\n } = props;\n let calendar = useMemo(() => createCalendar(resolvedOptions.calendar as CalendarIdentifier), [createCalendar, resolvedOptions.calendar]);\n\n let [value, setControlledValue] = useControlledState<DateValue | null, MappedDateValue<T>>(props.value!, props.defaultValue ?? null!, 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 [lastCalendar, setLastCalendar] = useState(calendar);\n if (!isEqualCalendar(calendar, lastCalendar)) {\n let newFocusedDate = toCalendar(focusedDate, calendar);\n setStartDate(alignCenter(newFocusedDate, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(newFocusedDate);\n setLastCalendar(calendar);\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 | null) {\n if (!props.isDisabled && !props.isReadOnly) {\n let localValue = newValue;\n if (localValue === null) {\n setControlledValue(null);\n return;\n }\n localValue = constrainValue(localValue, minValue, maxValue);\n localValue = previousAvailableDate(localValue, startDate, isDateUnavailable);\n if (!localValue) {\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 localValue = toCalendar(localValue, value?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (value && 'hour' in value) {\n setControlledValue(value.set(localValue));\n } else {\n setControlledValue(localValue);\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 isValueInvalid = props.isInvalid || props.validationState === 'invalid' || isUnavailable;\n let validationState: ValidationState | null = isValueInvalid ? 'invalid' : null;\n\n let pageDuration = useMemo(() => {\n if (pageBehavior === 'visible') {\n return visibleDuration;\n }\n\n return unitDuration(visibleDuration);\n }, [pageBehavior, visibleDuration]);\n\n return {\n isDisabled: props.isDisabled ?? false,\n isReadOnly: props.isReadOnly ?? false,\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 isValueInvalid,\n setFocusedDate(date) {\n focusCell(date);\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(pageDuration);\n setFocusedDate(constrainValue(focusedDate.add(pageDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, pageDuration, locale, minValue, maxValue),\n pageDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(pageDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(pageDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, pageDuration, locale, minValue, maxValue),\n pageDuration,\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 if (!(isDateUnavailable && isDateUnavailable(focusedDate))) {\n setValue(focusedDate);\n }\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);\n },\n isCellUnavailable(date) {\n return props.isDateUnavailable ? props.isDateUnavailable(date) : false;\n },\n isPreviousVisibleRangeInvalid() {\n let prev = startDate.subtract({days: 1});\n return isSameDay(prev, startDate) || this.isInvalid(prev);\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);\n },\n getDatesInWeek(weekIndex, from = startDate) {\n let date = from.add({weeks: weekIndex});\n let dates: (CalendarDate | null)[] = [];\n\n date = startOfWeek(date, locale, firstDayOfWeek);\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, firstDayOfWeek);\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"],"names":[],"version":3,"file":"useCalendarState.cjs.map"}
1
+ {"mappings":"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","sources":["packages/react-stately/src/calendar/useCalendarState.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\nimport {\n alignCenter,\n alignEnd,\n alignStart,\n constrainStart,\n constrainValue,\n isEqualDuration,\n isInvalid,\n previousAvailableDate\n} from './utils';\nimport {\n Calendar,\n CalendarDate,\n CalendarIdentifier,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n getDayOfWeek,\n getWeeksInMonth,\n GregorianCalendar,\n isEqualCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\n toCalendar,\n toCalendarDate,\n today\n} from '@internationalized/date';\nimport {\n CalendarPropsBase,\n CalendarSelectionMode,\n CalendarState,\n CalendarValueType,\n DateValue,\n MappedDateValue\n} from './types';\nimport {useControlledState} from '../utils/useControlledState';\nimport {useMemo, useState} from 'react';\nimport {ValidationState, ValueBase} from '@react-types/shared';\n\nexport interface CalendarProps<T extends DateValue, M extends CalendarSelectionMode = 'single'>\n extends\n CalendarPropsBase,\n ValueBase<CalendarValueType<T | null, M>, CalendarValueType<MappedDateValue<T>, M>> {\n /**\n * Whether single or multiple selection is enabled.\n *\n * @default 'single'\n */\n selectionMode?: M;\n /**\n * Callback that is called for each date of the calendar. If it returns true, then the date is\n * unavailable.\n */\n isDateUnavailable?: (date: DateValue) => boolean;\n}\n\nexport interface CalendarStateOptions<\n T extends DateValue = DateValue,\n M extends CalendarSelectionMode = 'single'\n> extends CalendarProps<T, M> {\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: CalendarIdentifier) => Calendar;\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n *\n * @default { months: 1 }\n */\n visibleDuration?: DateDuration;\n /**\n * Determines the alignment of the visible months on initial render based on the current selection\n * or current date if there is no selection.\n *\n * @default 'center'\n */\n selectionAlignment?: 'start' | 'center' | 'end';\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<\n T extends DateValue = DateValue,\n M extends CalendarSelectionMode = 'single'\n>(props: CalendarStateOptions<T, M>): CalendarState<M> {\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 pageBehavior = 'visible',\n selectionMode = 'single' as M,\n firstDayOfWeek,\n weeksInMonth\n } = props;\n let calendar = useMemo(\n () => createCalendar(resolvedOptions.calendar as CalendarIdentifier),\n [createCalendar, resolvedOptions.calendar]\n );\n\n let [value, setControlledValue] = useControlledState<\n T | T[] | null,\n MappedDateValue<T> | MappedDateValue<T>[] | null\n >(props.value as any, (props.defaultValue as any) ?? null, props.onChange as any);\n let calendarDateValue = useMemo(() => {\n if (Array.isArray(value)) {\n return value.map(value => toCalendar(toCalendarDate(value), calendar));\n } else {\n return value ? toCalendar(toCalendarDate(value), calendar) : null;\n }\n }, [value, calendar]);\n let timeZone = useMemo(() => {\n let val = Array.isArray(value) ? value[0] : value;\n return val && 'timeZone' in val ? val.timeZone : resolvedOptions.timeZone;\n }, [value, resolvedOptions.timeZone]);\n let focusedCalendarDate = useMemo(\n () =>\n props.focusedValue\n ? constrainValue(\n toCalendar(toCalendarDate(props.focusedValue), calendar),\n minValue,\n maxValue\n )\n : undefined,\n [props.focusedValue, calendar, minValue, maxValue]\n );\n let defaultFocusedCalendarDate = useMemo(() => {\n if (props.defaultFocusedValue) {\n return constrainValue(\n toCalendar(toCalendarDate(props.defaultFocusedValue), calendar),\n minValue,\n maxValue\n );\n }\n\n if (calendarDateValue) {\n return constrainValue(\n Array.isArray(calendarDateValue) ? calendarDateValue[0] : calendarDateValue,\n minValue,\n maxValue\n );\n }\n\n return constrainValue(toCalendar(today(timeZone), calendar), minValue, maxValue);\n }, [props.defaultFocusedValue, calendarDateValue, timeZone, calendar, minValue, maxValue]);\n let [focusedDate, setFocusedDate] = useControlledState(\n focusedCalendarDate,\n defaultFocusedCalendarDate,\n props.onFocusChange\n );\n let getStartDate = () => {\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\n let [startDate, setStartDate] = useState(getStartDate);\n let [isFocused, setFocused] = useState(props.autoFocus || false);\n\n let [lastVisibleDuration, setLastVisibleDuration] = useState(visibleDuration);\n if (!isEqualDuration(visibleDuration, lastVisibleDuration)) {\n setLastVisibleDuration(visibleDuration);\n setStartDate(getStartDate());\n }\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 [lastCalendar, setLastCalendar] = useState(calendar);\n if (!isEqualCalendar(calendar, lastCalendar)) {\n let newFocusedDate = toCalendar(focusedDate, calendar);\n setStartDate(alignCenter(newFocusedDate, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(newFocusedDate);\n setLastCalendar(calendar);\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 normalizeValue(newValue: CalendarDate) {\n let constrained = constrainValue(newValue, minValue, maxValue);\n let prev = previousAvailableDate(constrained, startDate, isDateUnavailable);\n if (!prev) {\n return null;\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 let baseValue = Array.isArray(value) ? value[0] : value;\n let calendarValue = toCalendar(prev, baseValue?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (baseValue && 'hour' in baseValue) {\n return baseValue.set(calendarValue) as T;\n }\n\n return calendarValue as T;\n }\n\n function setValue(newValue: CalendarDate | CalendarDate[] | null) {\n if (!props.isDisabled && !props.isReadOnly) {\n if (newValue === null) {\n setControlledValue(selectionMode === 'multiple' ? [] : null);\n return;\n }\n\n if (Array.isArray(newValue)) {\n setControlledValue(newValue.map(normalizeValue).filter(Boolean) as any);\n } else {\n let localValue = normalizeValue(newValue);\n if (localValue) {\n setControlledValue(localValue as any);\n }\n }\n }\n }\n\n let isUnavailable = useMemo(() => {\n if (!calendarDateValue) {\n return false;\n }\n\n if (Array.isArray(calendarDateValue)) {\n return calendarDateValue.some(\n date => isDateUnavailable?.(date) || isInvalid(date, minValue, maxValue)\n );\n }\n\n return (\n isDateUnavailable?.(calendarDateValue) || isInvalid(calendarDateValue, minValue, maxValue)\n );\n }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n let isValueInvalid = props.isInvalid || props.validationState === 'invalid' || isUnavailable;\n let validationState: ValidationState | null = isValueInvalid ? 'invalid' : null;\n\n let pageDuration = useMemo(() => {\n if (pageBehavior === 'visible') {\n return visibleDuration;\n }\n\n return unitDuration(visibleDuration);\n }, [pageBehavior, visibleDuration]);\n\n return {\n isDisabled: props.isDisabled ?? false,\n isReadOnly: props.isReadOnly ?? false,\n value: calendarDateValue as any,\n setValue: setValue as any,\n selectionMode,\n visibleDuration,\n visibleRange: {\n start: startDate,\n end: endDate\n },\n minValue,\n maxValue,\n focusedDate,\n timeZone,\n validationState,\n isValueInvalid,\n setFocusedDate(date) {\n focusCell(date);\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(pageDuration);\n setFocusedDate(constrainValue(focusedDate.add(pageDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, pageDuration, locale, minValue, maxValue),\n pageDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(pageDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(pageDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, pageDuration, locale, minValue, maxValue),\n pageDuration,\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 if (!(isDateUnavailable && isDateUnavailable(focusedDate))) {\n this.selectDate(focusedDate);\n }\n },\n selectDate(date) {\n if (props.isDisabled || props.isReadOnly) {\n return;\n }\n\n if (selectionMode === 'multiple' && date != null) {\n let newDate = normalizeValue(date);\n if (!newDate) {\n return;\n }\n\n let baseValue: T[] = [];\n if (Array.isArray(value)) {\n baseValue = value;\n } else if (value != null) {\n baseValue = [value];\n }\n\n let index = baseValue.findIndex(value => isSameDay(value, newDate));\n let newValue =\n index >= 0\n ? baseValue.slice(0, index).concat(baseValue.slice(index + 1))\n : [...baseValue, newDate];\n setControlledValue(newValue);\n } else {\n setValue(date);\n }\n },\n isFocused,\n setFocused,\n isInvalid(date) {\n return isInvalid(date, minValue, maxValue);\n },\n isSelected(date) {\n if (!calendarDateValue || this.isCellDisabled(date) || this.isCellUnavailable(date)) {\n return false;\n }\n return Array.isArray(calendarDateValue)\n ? calendarDateValue.some(value => isSameDay(value, date))\n : isSameDay(date, calendarDateValue);\n },\n isCellFocused(date) {\n return isFocused && focusedDate && isSameDay(date, focusedDate);\n },\n isCellDisabled(date) {\n return (\n props.isDisabled ||\n date.compare(startDate) < 0 ||\n date.compare(endDate) > 0 ||\n this.isInvalid(date)\n );\n },\n isCellUnavailable(date) {\n return props.isDateUnavailable ? props.isDateUnavailable(date) : false;\n },\n isPreviousVisibleRangeInvalid() {\n let prev = startDate.subtract({days: 1});\n return isSameDay(prev, startDate) || this.isInvalid(prev);\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);\n },\n getDatesInWeek(weekIndex, from = startDate) {\n let date = from.add({weeks: weekIndex});\n let dates: (CalendarDate | null)[] = [];\n\n let days = visibleDuration.days && visibleDuration.days < 7 ? visibleDuration.days : 7;\n if (days === 7) {\n date = startOfWeek(date, locale, firstDayOfWeek);\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, firstDayOfWeek);\n for (let i = 0; i < dayOfWeek; i++) {\n dates.push(null);\n }\n }\n\n while (dates.length < days) {\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 < days) {\n dates.push(null);\n }\n\n return dates;\n },\n getWeeksInMonth(date = startDate) {\n let weeks = weeksInMonth || getWeeksInMonth(date, locale, firstDayOfWeek);\n if (visibleDuration.weeks || visibleDuration.days) {\n weeks = visibleDuration.weeks ?? 0;\n if (visibleDuration.days) {\n weeks += Math.ceil(visibleDuration.days / 7);\n }\n }\n return weeks;\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"],"names":[],"version":3,"file":"useCalendarState.cjs.map"}
@@ -1,6 +1,6 @@
1
- import {alignCenter as $4f2e4d26acdebef8$export$f4a51ff076cc9a09, alignEnd as $4f2e4d26acdebef8$export$530edbfc915b2b04, alignStart as $4f2e4d26acdebef8$export$144a00ba6044eb9, constrainStart as $4f2e4d26acdebef8$export$5bb865b12696a77d, constrainValue as $4f2e4d26acdebef8$export$4f5203c0d889109e, isInvalid as $4f2e4d26acdebef8$export$eac50920cf2fd59a, previousAvailableDate as $4f2e4d26acdebef8$export$a1d3911297b952d7} from "./utils.js";
1
+ import {alignCenter as $4f2e4d26acdebef8$export$f4a51ff076cc9a09, alignEnd as $4f2e4d26acdebef8$export$530edbfc915b2b04, alignStart as $4f2e4d26acdebef8$export$144a00ba6044eb9, constrainStart as $4f2e4d26acdebef8$export$5bb865b12696a77d, constrainValue as $4f2e4d26acdebef8$export$4f5203c0d889109e, isEqualDuration as $4f2e4d26acdebef8$export$6595e603c409b4b8, isInvalid as $4f2e4d26acdebef8$export$eac50920cf2fd59a, previousAvailableDate as $4f2e4d26acdebef8$export$a1d3911297b952d7} from "./utils.js";
2
2
  import {useControlledState as $2a35a170cf8e413e$export$40bfa8c7b0832715} from "../utils/useControlledState.js";
3
- import {DateFormatter as $5WOJq$DateFormatter, toCalendar as $5WOJq$toCalendar, toCalendarDate as $5WOJq$toCalendarDate, today as $5WOJq$today, isEqualCalendar as $5WOJq$isEqualCalendar, GregorianCalendar as $5WOJq$GregorianCalendar, startOfWeek as $5WOJq$startOfWeek, startOfMonth as $5WOJq$startOfMonth, endOfWeek as $5WOJq$endOfWeek, endOfMonth as $5WOJq$endOfMonth, isSameDay as $5WOJq$isSameDay, getDayOfWeek as $5WOJq$getDayOfWeek} from "@internationalized/date";
3
+ import {DateFormatter as $5WOJq$DateFormatter, toCalendar as $5WOJq$toCalendar, toCalendarDate as $5WOJq$toCalendarDate, today as $5WOJq$today, isEqualCalendar as $5WOJq$isEqualCalendar, GregorianCalendar as $5WOJq$GregorianCalendar, startOfWeek as $5WOJq$startOfWeek, startOfMonth as $5WOJq$startOfMonth, endOfWeek as $5WOJq$endOfWeek, endOfMonth as $5WOJq$endOfMonth, isSameDay as $5WOJq$isSameDay, getDayOfWeek as $5WOJq$getDayOfWeek, getWeeksInMonth as $5WOJq$getWeeksInMonth} from "@internationalized/date";
4
4
  import {useMemo as $5WOJq$useMemo, useState as $5WOJq$useState} from "react";
5
5
 
6
6
  /*
@@ -26,18 +26,24 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
26
26
  ]);
27
27
  let { locale: locale, createCalendar: createCalendar, visibleDuration: visibleDuration = {
28
28
  months: 1
29
- }, minValue: minValue, maxValue: maxValue, selectionAlignment: selectionAlignment, isDateUnavailable: isDateUnavailable, pageBehavior: pageBehavior = 'visible', firstDayOfWeek: firstDayOfWeek } = props;
29
+ }, minValue: minValue, maxValue: maxValue, selectionAlignment: selectionAlignment, isDateUnavailable: isDateUnavailable, pageBehavior: pageBehavior = 'visible', selectionMode: selectionMode = 'single', firstDayOfWeek: firstDayOfWeek, weeksInMonth: weeksInMonth } = props;
30
30
  let calendar = (0, $5WOJq$useMemo)(()=>createCalendar(resolvedOptions.calendar), [
31
31
  createCalendar,
32
32
  resolvedOptions.calendar
33
33
  ]);
34
34
  var _props_defaultValue;
35
35
  let [value, setControlledValue] = (0, $2a35a170cf8e413e$export$40bfa8c7b0832715)(props.value, (_props_defaultValue = props.defaultValue) !== null && _props_defaultValue !== void 0 ? _props_defaultValue : null, props.onChange);
36
- let calendarDateValue = (0, $5WOJq$useMemo)(()=>value ? (0, $5WOJq$toCalendar)((0, $5WOJq$toCalendarDate)(value), calendar) : null, [
36
+ let calendarDateValue = (0, $5WOJq$useMemo)(()=>{
37
+ if (Array.isArray(value)) return value.map((value)=>(0, $5WOJq$toCalendar)((0, $5WOJq$toCalendarDate)(value), calendar));
38
+ else return value ? (0, $5WOJq$toCalendar)((0, $5WOJq$toCalendarDate)(value), calendar) : null;
39
+ }, [
37
40
  value,
38
41
  calendar
39
42
  ]);
40
- let timeZone = (0, $5WOJq$useMemo)(()=>value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone, [
43
+ let timeZone = (0, $5WOJq$useMemo)(()=>{
44
+ let val = Array.isArray(value) ? value[0] : value;
45
+ return val && 'timeZone' in val ? val.timeZone : resolvedOptions.timeZone;
46
+ }, [
41
47
  value,
42
48
  resolvedOptions.timeZone
43
49
  ]);
@@ -47,7 +53,11 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
47
53
  minValue,
48
54
  maxValue
49
55
  ]);
50
- let defaultFocusedCalendarDate = (0, $5WOJq$useMemo)(()=>(0, $4f2e4d26acdebef8$export$4f5203c0d889109e)(props.defaultFocusedValue ? (0, $5WOJq$toCalendar)((0, $5WOJq$toCalendarDate)(props.defaultFocusedValue), calendar) : calendarDateValue || (0, $5WOJq$toCalendar)((0, $5WOJq$today)(timeZone), calendar), minValue, maxValue), [
56
+ let defaultFocusedCalendarDate = (0, $5WOJq$useMemo)(()=>{
57
+ if (props.defaultFocusedValue) return (0, $4f2e4d26acdebef8$export$4f5203c0d889109e)((0, $5WOJq$toCalendar)((0, $5WOJq$toCalendarDate)(props.defaultFocusedValue), calendar), minValue, maxValue);
58
+ if (calendarDateValue) return (0, $4f2e4d26acdebef8$export$4f5203c0d889109e)(Array.isArray(calendarDateValue) ? calendarDateValue[0] : calendarDateValue, minValue, maxValue);
59
+ return (0, $4f2e4d26acdebef8$export$4f5203c0d889109e)((0, $5WOJq$toCalendar)((0, $5WOJq$today)(timeZone), calendar), minValue, maxValue);
60
+ }, [
51
61
  props.defaultFocusedValue,
52
62
  calendarDateValue,
53
63
  timeZone,
@@ -56,7 +66,7 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
56
66
  maxValue
57
67
  ]);
58
68
  let [focusedDate, setFocusedDate] = (0, $2a35a170cf8e413e$export$40bfa8c7b0832715)(focusedCalendarDate, defaultFocusedCalendarDate, props.onFocusChange);
59
- let [startDate, setStartDate] = (0, $5WOJq$useState)(()=>{
69
+ let getStartDate = ()=>{
60
70
  switch(selectionAlignment){
61
71
  case 'start':
62
72
  return (0, $4f2e4d26acdebef8$export$144a00ba6044eb9)(focusedDate, visibleDuration, locale, minValue, maxValue);
@@ -66,8 +76,14 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
66
76
  default:
67
77
  return (0, $4f2e4d26acdebef8$export$f4a51ff076cc9a09)(focusedDate, visibleDuration, locale, minValue, maxValue);
68
78
  }
69
- });
79
+ };
80
+ let [startDate, setStartDate] = (0, $5WOJq$useState)(getStartDate);
70
81
  let [isFocused, setFocused] = (0, $5WOJq$useState)(props.autoFocus || false);
82
+ let [lastVisibleDuration, setLastVisibleDuration] = (0, $5WOJq$useState)(visibleDuration);
83
+ if (!(0, $4f2e4d26acdebef8$export$6595e603c409b4b8)(visibleDuration, lastVisibleDuration)) {
84
+ setLastVisibleDuration(visibleDuration);
85
+ setStartDate(getStartDate());
86
+ }
71
87
  let endDate = (0, $5WOJq$useMemo)(()=>{
72
88
  let duration = {
73
89
  ...visibleDuration
@@ -96,28 +112,35 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
96
112
  date = (0, $4f2e4d26acdebef8$export$4f5203c0d889109e)(date, minValue, maxValue);
97
113
  setFocusedDate(date);
98
114
  }
115
+ function normalizeValue(newValue) {
116
+ let constrained = (0, $4f2e4d26acdebef8$export$4f5203c0d889109e)(newValue, minValue, maxValue);
117
+ let prev = (0, $4f2e4d26acdebef8$export$a1d3911297b952d7)(constrained, startDate, isDateUnavailable);
118
+ if (!prev) return null;
119
+ // The display calendar should not have any effect on the emitted value.
120
+ // Emit dates in the same calendar as the original value, if any, otherwise gregorian.
121
+ let baseValue = Array.isArray(value) ? value[0] : value;
122
+ let calendarValue = (0, $5WOJq$toCalendar)(prev, (baseValue === null || baseValue === void 0 ? void 0 : baseValue.calendar) || new (0, $5WOJq$GregorianCalendar)());
123
+ // Preserve time if the input value had one.
124
+ if (baseValue && 'hour' in baseValue) return baseValue.set(calendarValue);
125
+ return calendarValue;
126
+ }
99
127
  function setValue(newValue) {
100
128
  if (!props.isDisabled && !props.isReadOnly) {
101
- let localValue = newValue;
102
- if (localValue === null) {
103
- setControlledValue(null);
129
+ if (newValue === null) {
130
+ setControlledValue(selectionMode === 'multiple' ? [] : null);
104
131
  return;
105
132
  }
106
- localValue = (0, $4f2e4d26acdebef8$export$4f5203c0d889109e)(localValue, minValue, maxValue);
107
- localValue = (0, $4f2e4d26acdebef8$export$a1d3911297b952d7)(localValue, startDate, isDateUnavailable);
108
- if (!localValue) return;
109
- // The display calendar should not have any effect on the emitted value.
110
- // Emit dates in the same calendar as the original value, if any, otherwise gregorian.
111
- localValue = (0, $5WOJq$toCalendar)(localValue, (value === null || value === void 0 ? void 0 : value.calendar) || new (0, $5WOJq$GregorianCalendar)());
112
- // Preserve time if the input value had one.
113
- if (value && 'hour' in value) setControlledValue(value.set(localValue));
114
- else setControlledValue(localValue);
133
+ if (Array.isArray(newValue)) setControlledValue(newValue.map(normalizeValue).filter(Boolean));
134
+ else {
135
+ let localValue = normalizeValue(newValue);
136
+ if (localValue) setControlledValue(localValue);
137
+ }
115
138
  }
116
139
  }
117
140
  let isUnavailable = (0, $5WOJq$useMemo)(()=>{
118
141
  if (!calendarDateValue) return false;
119
- if (isDateUnavailable && isDateUnavailable(calendarDateValue)) return true;
120
- return (0, $4f2e4d26acdebef8$export$eac50920cf2fd59a)(calendarDateValue, minValue, maxValue);
142
+ if (Array.isArray(calendarDateValue)) return calendarDateValue.some((date)=>(isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(date)) || (0, $4f2e4d26acdebef8$export$eac50920cf2fd59a)(date, minValue, maxValue));
143
+ return (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(calendarDateValue)) || (0, $4f2e4d26acdebef8$export$eac50920cf2fd59a)(calendarDateValue, minValue, maxValue);
121
144
  }, [
122
145
  calendarDateValue,
123
146
  isDateUnavailable,
@@ -139,6 +162,8 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
139
162
  isReadOnly: (_props_isReadOnly = props.isReadOnly) !== null && _props_isReadOnly !== void 0 ? _props_isReadOnly : false,
140
163
  value: calendarDateValue,
141
164
  setValue: setValue,
165
+ selectionMode: selectionMode,
166
+ visibleDuration: visibleDuration,
142
167
  visibleRange: {
143
168
  start: startDate,
144
169
  end: endDate
@@ -221,10 +246,25 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
221
246
  }));
222
247
  },
223
248
  selectFocusedDate () {
224
- if (!(isDateUnavailable && isDateUnavailable(focusedDate))) setValue(focusedDate);
249
+ if (!(isDateUnavailable && isDateUnavailable(focusedDate))) this.selectDate(focusedDate);
225
250
  },
226
251
  selectDate (date) {
227
- setValue(date);
252
+ if (props.isDisabled || props.isReadOnly) return;
253
+ if (selectionMode === 'multiple' && date != null) {
254
+ let newDate = normalizeValue(date);
255
+ if (!newDate) return;
256
+ let baseValue = [];
257
+ if (Array.isArray(value)) baseValue = value;
258
+ else if (value != null) baseValue = [
259
+ value
260
+ ];
261
+ let index = baseValue.findIndex((value)=>(0, $5WOJq$isSameDay)(value, newDate));
262
+ let newValue = index >= 0 ? baseValue.slice(0, index).concat(baseValue.slice(index + 1)) : [
263
+ ...baseValue,
264
+ newDate
265
+ ];
266
+ setControlledValue(newValue);
267
+ } else setValue(date);
228
268
  },
229
269
  isFocused: isFocused,
230
270
  setFocused: setFocused,
@@ -232,7 +272,8 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
232
272
  return (0, $4f2e4d26acdebef8$export$eac50920cf2fd59a)(date, minValue, maxValue);
233
273
  },
234
274
  isSelected (date) {
235
- return calendarDateValue != null && (0, $5WOJq$isSameDay)(date, calendarDateValue) && !this.isCellDisabled(date) && !this.isCellUnavailable(date);
275
+ if (!calendarDateValue || this.isCellDisabled(date) || this.isCellUnavailable(date)) return false;
276
+ return Array.isArray(calendarDateValue) ? calendarDateValue.some((value)=>(0, $5WOJq$isSameDay)(value, date)) : (0, $5WOJq$isSameDay)(date, calendarDateValue);
236
277
  },
237
278
  isCellFocused (date) {
238
279
  return isFocused && focusedDate && (0, $5WOJq$isSameDay)(date, focusedDate);
@@ -262,12 +303,15 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
262
303
  weeks: weekIndex
263
304
  });
264
305
  let dates = [];
265
- date = (0, $5WOJq$startOfWeek)(date, locale, firstDayOfWeek);
266
- // startOfWeek will clamp dates within the calendar system's valid range, which may
267
- // start in the middle of a week. In this case, add null placeholders.
268
- let dayOfWeek = (0, $5WOJq$getDayOfWeek)(date, locale, firstDayOfWeek);
269
- for(let i = 0; i < dayOfWeek; i++)dates.push(null);
270
- while(dates.length < 7){
306
+ let days = visibleDuration.days && visibleDuration.days < 7 ? visibleDuration.days : 7;
307
+ if (days === 7) {
308
+ date = (0, $5WOJq$startOfWeek)(date, locale, firstDayOfWeek);
309
+ // startOfWeek will clamp dates within the calendar system's valid range, which may
310
+ // start in the middle of a week. In this case, add null placeholders.
311
+ let dayOfWeek = (0, $5WOJq$getDayOfWeek)(date, locale, firstDayOfWeek);
312
+ for(let i = 0; i < dayOfWeek; i++)dates.push(null);
313
+ }
314
+ while(dates.length < days){
271
315
  dates.push(date);
272
316
  let nextDate = date.add({
273
317
  days: 1
@@ -276,8 +320,17 @@ function $2ff2cc7e373be77a$export$6d095e787d2b5e1f(props) {
276
320
  date = nextDate;
277
321
  }
278
322
  // Add null placeholders if at the end of the calendar system.
279
- while(dates.length < 7)dates.push(null);
323
+ while(dates.length < days)dates.push(null);
280
324
  return dates;
325
+ },
326
+ getWeeksInMonth (date = startDate) {
327
+ let weeks = weeksInMonth || (0, $5WOJq$getWeeksInMonth)(date, locale, firstDayOfWeek);
328
+ if (visibleDuration.weeks || visibleDuration.days) {
329
+ var _visibleDuration_weeks;
330
+ weeks = (_visibleDuration_weeks = visibleDuration.weeks) !== null && _visibleDuration_weeks !== void 0 ? _visibleDuration_weeks : 0;
331
+ if (visibleDuration.days) weeks += Math.ceil(visibleDuration.days / 7);
332
+ }
333
+ return weeks;
281
334
  }
282
335
  };
283
336
  }