@salt-ds/lab 1.0.0-alpha.50 → 1.0.0-alpha.52

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 (295) hide show
  1. package/css/salt-lab.css +279 -267
  2. package/dist-cjs/calendar/Calendar.css.js +1 -1
  3. package/dist-cjs/calendar/Calendar.js +6 -15
  4. package/dist-cjs/calendar/Calendar.js.map +1 -1
  5. package/dist-cjs/calendar/CalendarNavigation.css.js +6 -0
  6. package/dist-cjs/calendar/{internal/CalendarNavigation.js → CalendarNavigation.js} +160 -63
  7. package/dist-cjs/calendar/CalendarNavigation.js.map +1 -0
  8. package/dist-cjs/calendar/formatDate.js +56 -0
  9. package/dist-cjs/calendar/formatDate.js.map +1 -0
  10. package/dist-cjs/calendar/internal/CalendarCarousel.js +3 -3
  11. package/dist-cjs/calendar/internal/CalendarCarousel.js.map +1 -1
  12. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  13. package/dist-cjs/calendar/internal/CalendarDay.js +45 -33
  14. package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
  15. package/dist-cjs/calendar/internal/CalendarMonth.js +3 -2
  16. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  17. package/dist-cjs/calendar/internal/CalendarWeekHeader.js +3 -3
  18. package/dist-cjs/calendar/internal/CalendarWeekHeader.js.map +1 -1
  19. package/dist-cjs/calendar/internal/useFocusManagement.js +7 -4
  20. package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
  21. package/dist-cjs/calendar/internal/utils.js +28 -23
  22. package/dist-cjs/calendar/internal/utils.js.map +1 -1
  23. package/dist-cjs/calendar/useCalendar.js +94 -45
  24. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  25. package/dist-cjs/calendar/useCalendarDay.js +19 -10
  26. package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
  27. package/dist-cjs/calendar/useCalendarSelection.js +360 -0
  28. package/dist-cjs/calendar/useCalendarSelection.js.map +1 -0
  29. package/dist-cjs/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  30. package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
  31. package/dist-cjs/combo-box-deprecated/ComboBox.css.js +1 -1
  32. package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
  33. package/dist-cjs/content-status/ContentStatus.css.js +1 -1
  34. package/dist-cjs/date-input/DateInput.css.js +1 -1
  35. package/dist-cjs/date-input/DateInputRange.js +355 -0
  36. package/dist-cjs/date-input/DateInputRange.js.map +1 -0
  37. package/dist-cjs/date-input/DateInputSingle.js +229 -0
  38. package/dist-cjs/date-input/DateInputSingle.js.map +1 -0
  39. package/dist-cjs/date-input/utils.js +65 -0
  40. package/dist-cjs/date-input/utils.js.map +1 -0
  41. package/dist-cjs/date-picker/DatePicker.js +40 -148
  42. package/dist-cjs/date-picker/DatePicker.js.map +1 -1
  43. package/dist-cjs/date-picker/DatePickerActions.css.js +6 -0
  44. package/dist-cjs/date-picker/DatePickerActions.css.js.map +1 -0
  45. package/dist-cjs/date-picker/DatePickerActions.js +102 -0
  46. package/dist-cjs/date-picker/DatePickerActions.js.map +1 -0
  47. package/dist-cjs/date-picker/DatePickerContext.js +23 -17
  48. package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
  49. package/dist-cjs/date-picker/DatePickerOverlay.css.js +6 -0
  50. package/dist-cjs/date-picker/DatePickerOverlay.css.js.map +1 -0
  51. package/dist-cjs/date-picker/DatePickerOverlay.js +50 -0
  52. package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -0
  53. package/dist-cjs/date-picker/DatePickerOverlayProvider.js +105 -0
  54. package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -0
  55. package/dist-cjs/date-picker/DatePickerPanel.css.js +1 -1
  56. package/dist-cjs/date-picker/DatePickerRangeInput.js +118 -0
  57. package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -0
  58. package/dist-cjs/date-picker/DatePickerRangePanel.js +206 -0
  59. package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -0
  60. package/dist-cjs/date-picker/DatePickerSingleInput.js +97 -0
  61. package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -0
  62. package/dist-cjs/date-picker/DatePickerSinglePanel.js +138 -0
  63. package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -0
  64. package/dist-cjs/date-picker/useDatePicker.js +179 -0
  65. package/dist-cjs/date-picker/useDatePicker.js.map +1 -0
  66. package/dist-cjs/dropdown/Dropdown.css.js +1 -1
  67. package/dist-cjs/dropdown/DropdownBase.js +1 -1
  68. package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
  69. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  70. package/dist-cjs/form-field-legacy/FormLabel.js.map +1 -1
  71. package/dist-cjs/index.js +43 -10
  72. package/dist-cjs/index.js.map +1 -1
  73. package/dist-cjs/list/List.js.map +1 -1
  74. package/dist-cjs/menu-button/MenuButtonTrigger.css.js +1 -1
  75. package/dist-cjs/query-input/QueryInput.css.js +1 -1
  76. package/dist-cjs/slider/Slider.css.js +1 -1
  77. package/dist-cjs/slider/Slider.js +53 -105
  78. package/dist-cjs/slider/Slider.js.map +1 -1
  79. package/dist-cjs/slider/internal/SliderContext.js +21 -0
  80. package/dist-cjs/slider/internal/SliderContext.js.map +1 -0
  81. package/dist-cjs/slider/internal/SliderMarks.js +31 -0
  82. package/dist-cjs/slider/internal/SliderMarks.js.map +1 -0
  83. package/dist-cjs/slider/internal/SliderSelection.js +17 -10
  84. package/dist-cjs/slider/internal/SliderSelection.js.map +1 -1
  85. package/dist-cjs/slider/internal/SliderThumb.js +77 -0
  86. package/dist-cjs/slider/internal/SliderThumb.js.map +1 -0
  87. package/dist-cjs/slider/internal/SliderTrack.js +91 -0
  88. package/dist-cjs/slider/internal/SliderTrack.js.map +1 -0
  89. package/dist-cjs/slider/internal/useKeyDownThumb.js +53 -0
  90. package/dist-cjs/slider/internal/useKeyDownThumb.js.map +1 -0
  91. package/dist-cjs/slider/internal/utils.js +78 -116
  92. package/dist-cjs/slider/internal/utils.js.map +1 -1
  93. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.css.js +1 -1
  94. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +29 -25
  95. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  96. package/dist-cjs/tabs/TabActivationIndicator.css.js +1 -1
  97. package/dist-cjs/tabs/Tabstrip.css.js +1 -1
  98. package/dist-cjs/tabs/useTabs.js.map +1 -1
  99. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
  100. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  101. package/dist-es/calendar/Calendar.css.js +1 -1
  102. package/dist-es/calendar/Calendar.js +7 -16
  103. package/dist-es/calendar/Calendar.js.map +1 -1
  104. package/dist-es/calendar/CalendarNavigation.css.js +4 -0
  105. package/dist-es/calendar/CalendarNavigation.js +308 -0
  106. package/dist-es/calendar/CalendarNavigation.js.map +1 -0
  107. package/dist-es/calendar/formatDate.js +51 -0
  108. package/dist-es/calendar/formatDate.js.map +1 -0
  109. package/dist-es/calendar/internal/CalendarCarousel.js +3 -3
  110. package/dist-es/calendar/internal/CalendarCarousel.js.map +1 -1
  111. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  112. package/dist-es/calendar/internal/CalendarDay.js +45 -33
  113. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  114. package/dist-es/calendar/internal/CalendarMonth.js +3 -2
  115. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  116. package/dist-es/calendar/internal/CalendarWeekHeader.js +3 -3
  117. package/dist-es/calendar/internal/CalendarWeekHeader.js.map +1 -1
  118. package/dist-es/calendar/internal/useFocusManagement.js +7 -4
  119. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  120. package/dist-es/calendar/internal/utils.js +29 -23
  121. package/dist-es/calendar/internal/utils.js.map +1 -1
  122. package/dist-es/calendar/useCalendar.js +96 -47
  123. package/dist-es/calendar/useCalendar.js.map +1 -1
  124. package/dist-es/calendar/useCalendarDay.js +20 -11
  125. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  126. package/dist-es/calendar/useCalendarSelection.js +350 -0
  127. package/dist-es/calendar/useCalendarSelection.js.map +1 -0
  128. package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  129. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  130. package/dist-es/combo-box-deprecated/ComboBox.css.js +1 -1
  131. package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
  132. package/dist-es/content-status/ContentStatus.css.js +1 -1
  133. package/dist-es/date-input/DateInput.css.js +1 -1
  134. package/dist-es/date-input/DateInputRange.js +351 -0
  135. package/dist-es/date-input/DateInputRange.js.map +1 -0
  136. package/dist-es/date-input/DateInputSingle.js +225 -0
  137. package/dist-es/date-input/DateInputSingle.js.map +1 -0
  138. package/dist-es/date-input/utils.js +57 -0
  139. package/dist-es/date-input/utils.js.map +1 -0
  140. package/dist-es/date-picker/DatePicker.js +43 -152
  141. package/dist-es/date-picker/DatePicker.js.map +1 -1
  142. package/dist-es/date-picker/DatePickerActions.css.js +4 -0
  143. package/dist-es/date-picker/DatePickerActions.css.js.map +1 -0
  144. package/dist-es/date-picker/DatePickerActions.js +98 -0
  145. package/dist-es/date-picker/DatePickerActions.js.map +1 -0
  146. package/dist-es/date-picker/DatePickerContext.js +22 -17
  147. package/dist-es/date-picker/DatePickerContext.js.map +1 -1
  148. package/dist-es/date-picker/DatePickerOverlay.css.js +4 -0
  149. package/dist-es/date-picker/DatePickerOverlay.css.js.map +1 -0
  150. package/dist-es/date-picker/DatePickerOverlay.js +46 -0
  151. package/dist-es/date-picker/DatePickerOverlay.js.map +1 -0
  152. package/dist-es/date-picker/DatePickerOverlayProvider.js +100 -0
  153. package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -0
  154. package/dist-es/date-picker/DatePickerPanel.css.js +1 -1
  155. package/dist-es/date-picker/DatePickerRangeInput.js +114 -0
  156. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -0
  157. package/dist-es/date-picker/DatePickerRangePanel.js +198 -0
  158. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -0
  159. package/dist-es/date-picker/DatePickerSingleInput.js +93 -0
  160. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -0
  161. package/dist-es/date-picker/DatePickerSinglePanel.js +130 -0
  162. package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -0
  163. package/dist-es/date-picker/useDatePicker.js +175 -0
  164. package/dist-es/date-picker/useDatePicker.js.map +1 -0
  165. package/dist-es/dropdown/Dropdown.css.js +1 -1
  166. package/dist-es/dropdown/DropdownBase.js +1 -1
  167. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  168. package/dist-es/dropdown/useDropdown.js.map +1 -1
  169. package/dist-es/form-field-legacy/FormLabel.js.map +1 -1
  170. package/dist-es/index.js +14 -3
  171. package/dist-es/index.js.map +1 -1
  172. package/dist-es/list/List.js.map +1 -1
  173. package/dist-es/menu-button/MenuButtonTrigger.css.js +1 -1
  174. package/dist-es/query-input/QueryInput.css.js +1 -1
  175. package/dist-es/slider/Slider.css.js +1 -1
  176. package/dist-es/slider/Slider.js +55 -107
  177. package/dist-es/slider/Slider.js.map +1 -1
  178. package/dist-es/slider/internal/SliderContext.js +16 -0
  179. package/dist-es/slider/internal/SliderContext.js.map +1 -0
  180. package/dist-es/slider/internal/SliderMarks.js +27 -0
  181. package/dist-es/slider/internal/SliderMarks.js.map +1 -0
  182. package/dist-es/slider/internal/SliderSelection.js +17 -10
  183. package/dist-es/slider/internal/SliderSelection.js.map +1 -1
  184. package/dist-es/slider/internal/SliderThumb.js +73 -0
  185. package/dist-es/slider/internal/SliderThumb.js.map +1 -0
  186. package/dist-es/slider/internal/SliderTrack.js +87 -0
  187. package/dist-es/slider/internal/SliderTrack.js.map +1 -0
  188. package/dist-es/slider/internal/useKeyDownThumb.js +49 -0
  189. package/dist-es/slider/internal/useKeyDownThumb.js.map +1 -0
  190. package/dist-es/slider/internal/utils.js +70 -111
  191. package/dist-es/slider/internal/utils.js.map +1 -1
  192. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.css.js +1 -1
  193. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +30 -26
  194. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  195. package/dist-es/tabs/TabActivationIndicator.css.js +1 -1
  196. package/dist-es/tabs/Tabstrip.css.js +1 -1
  197. package/dist-es/tabs/useTabs.js.map +1 -1
  198. package/dist-es/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
  199. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  200. package/dist-types/calendar/Calendar.d.ts +63 -5
  201. package/dist-types/calendar/CalendarNavigation.d.ts +57 -0
  202. package/dist-types/calendar/formatDate.d.ts +14 -0
  203. package/dist-types/calendar/index.d.ts +3 -1
  204. package/dist-types/calendar/internal/CalendarDay.d.ts +2 -1
  205. package/dist-types/calendar/internal/CalendarWeekHeader.d.ts +4 -4
  206. package/dist-types/calendar/internal/useFocusManagement.d.ts +2 -1
  207. package/dist-types/calendar/internal/utils.d.ts +7 -8
  208. package/dist-types/calendar/useCalendar.d.ts +100 -16
  209. package/dist-types/calendar/useCalendarDay.d.ts +38 -0
  210. package/dist-types/calendar/useCalendarSelection.d.ts +189 -0
  211. package/dist-types/date-input/DateInputRange.d.ts +150 -0
  212. package/dist-types/date-input/DateInputSingle.d.ts +117 -0
  213. package/dist-types/date-input/index.d.ts +3 -1
  214. package/dist-types/date-input/utils.d.ts +43 -0
  215. package/dist-types/date-picker/DatePicker.d.ts +20 -62
  216. package/dist-types/date-picker/DatePickerActions.d.ts +80 -0
  217. package/dist-types/date-picker/DatePickerContext.d.ts +180 -17
  218. package/dist-types/date-picker/DatePickerOverlay.d.ts +11 -0
  219. package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +67 -0
  220. package/dist-types/date-picker/DatePickerRangeInput.d.ts +7 -0
  221. package/dist-types/date-picker/DatePickerRangePanel.d.ts +64 -0
  222. package/dist-types/date-picker/DatePickerSingleInput.d.ts +7 -0
  223. package/dist-types/date-picker/DatePickerSinglePanel.d.ts +42 -0
  224. package/dist-types/date-picker/index.d.ts +7 -0
  225. package/dist-types/date-picker/useDatePicker.d.ts +112 -0
  226. package/dist-types/slider/Slider.d.ts +23 -10
  227. package/dist-types/slider/internal/SliderContext.d.ts +11 -0
  228. package/dist-types/slider/internal/SliderMarks.d.ts +7 -0
  229. package/dist-types/slider/internal/SliderSelection.d.ts +3 -3
  230. package/dist-types/slider/internal/SliderThumb.d.ts +8 -0
  231. package/dist-types/slider/internal/SliderTrack.d.ts +4 -0
  232. package/dist-types/slider/internal/index.d.ts +3 -0
  233. package/dist-types/slider/internal/useKeyDownThumb.d.ts +2 -0
  234. package/dist-types/slider/internal/utils.d.ts +18 -10
  235. package/dist-types/slider/types.d.ts +3 -1
  236. package/dist-types/stepped-tracker/TrackerStep/TrackerStep.d.ts +11 -3
  237. package/package.json +3 -3
  238. package/dist-cjs/calendar/internal/CalendarNavigation.css.js +0 -6
  239. package/dist-cjs/calendar/internal/CalendarNavigation.js.map +0 -1
  240. package/dist-cjs/calendar/useSelection.js +0 -249
  241. package/dist-cjs/calendar/useSelection.js.map +0 -1
  242. package/dist-cjs/date-input/DateInput.js +0 -281
  243. package/dist-cjs/date-input/DateInput.js.map +0 -1
  244. package/dist-cjs/date-picker/DatePickerPanel.js +0 -155
  245. package/dist-cjs/date-picker/DatePickerPanel.js.map +0 -1
  246. package/dist-cjs/slider/internal/SliderHandle.js +0 -44
  247. package/dist-cjs/slider/internal/SliderHandle.js.map +0 -1
  248. package/dist-cjs/slider/internal/SliderMarkLabels.js +0 -45
  249. package/dist-cjs/slider/internal/SliderMarkLabels.js.map +0 -1
  250. package/dist-cjs/slider/internal/SliderRail.js +0 -25
  251. package/dist-cjs/slider/internal/SliderRail.js.map +0 -1
  252. package/dist-cjs/slider/internal/SliderRailMarks.js +0 -48
  253. package/dist-cjs/slider/internal/SliderRailMarks.js.map +0 -1
  254. package/dist-cjs/slider/internal/styles.js +0 -99
  255. package/dist-cjs/slider/internal/styles.js.map +0 -1
  256. package/dist-cjs/slider/internal/useSliderKeyDown.js +0 -50
  257. package/dist-cjs/slider/internal/useSliderKeyDown.js.map +0 -1
  258. package/dist-cjs/slider/internal/useSliderMouseDown.js +0 -96
  259. package/dist-cjs/slider/internal/useSliderMouseDown.js.map +0 -1
  260. package/dist-es/calendar/internal/CalendarNavigation.css.js +0 -4
  261. package/dist-es/calendar/internal/CalendarNavigation.js +0 -211
  262. package/dist-es/calendar/internal/CalendarNavigation.js.map +0 -1
  263. package/dist-es/calendar/useSelection.js +0 -242
  264. package/dist-es/calendar/useSelection.js.map +0 -1
  265. package/dist-es/date-input/DateInput.js +0 -277
  266. package/dist-es/date-input/DateInput.js.map +0 -1
  267. package/dist-es/date-picker/DatePickerPanel.js +0 -151
  268. package/dist-es/date-picker/DatePickerPanel.js.map +0 -1
  269. package/dist-es/slider/internal/SliderHandle.js +0 -40
  270. package/dist-es/slider/internal/SliderHandle.js.map +0 -1
  271. package/dist-es/slider/internal/SliderMarkLabels.js +0 -41
  272. package/dist-es/slider/internal/SliderMarkLabels.js.map +0 -1
  273. package/dist-es/slider/internal/SliderRail.js +0 -21
  274. package/dist-es/slider/internal/SliderRail.js.map +0 -1
  275. package/dist-es/slider/internal/SliderRailMarks.js +0 -44
  276. package/dist-es/slider/internal/SliderRailMarks.js.map +0 -1
  277. package/dist-es/slider/internal/styles.js +0 -91
  278. package/dist-es/slider/internal/styles.js.map +0 -1
  279. package/dist-es/slider/internal/useSliderKeyDown.js +0 -46
  280. package/dist-es/slider/internal/useSliderKeyDown.js.map +0 -1
  281. package/dist-es/slider/internal/useSliderMouseDown.js +0 -92
  282. package/dist-es/slider/internal/useSliderMouseDown.js.map +0 -1
  283. package/dist-types/calendar/internal/CalendarNavigation.d.ts +0 -15
  284. package/dist-types/calendar/useSelection.d.ts +0 -78
  285. package/dist-types/date-input/DateInput.d.ts +0 -56
  286. package/dist-types/date-picker/DatePickerPanel.d.ts +0 -10
  287. package/dist-types/slider/internal/SliderHandle.d.ts +0 -11
  288. package/dist-types/slider/internal/SliderMarkLabels.d.ts +0 -7
  289. package/dist-types/slider/internal/SliderRail.d.ts +0 -1
  290. package/dist-types/slider/internal/SliderRailMarks.d.ts +0 -12
  291. package/dist-types/slider/internal/styles.d.ts +0 -10
  292. package/dist-types/slider/internal/useSliderKeyDown.d.ts +0 -4
  293. package/dist-types/slider/internal/useSliderMouseDown.d.ts +0 -4
  294. /package/dist-cjs/calendar/{internal/CalendarNavigation.css.js.map → CalendarNavigation.css.js.map} +0 -0
  295. /package/dist-es/calendar/{internal/CalendarNavigation.css.js.map → CalendarNavigation.css.js.map} +0 -0
@@ -0,0 +1,112 @@
1
+ import { type DateValue } from "@internationalized/date";
2
+ import { type DateRangeSelection, type SingleDateSelection } from "../calendar";
3
+ import type { RangeDatePickerState, SingleDatePickerState } from "./DatePickerContext";
4
+ interface UseDatePickerBaseProps<T> {
5
+ /** If `true`, the component is disabled. */
6
+ disabled?: boolean;
7
+ /** If `true`, the component is read-only. */
8
+ readOnly?: boolean;
9
+ /**
10
+ * The selected date. The selected date will be controlled when this prop is provided.
11
+ */
12
+ selectedDate?: T | null;
13
+ /**
14
+ * The initial selected date, when the selected date is uncontrolled.
15
+ */
16
+ defaultSelectedDate?: UseDatePickerBaseProps<T>["selectedDate"];
17
+ /**
18
+ * The minimum date for the range, default is 1900.
19
+ */
20
+ minDate?: DateValue;
21
+ /**
22
+ * The maximum date for the range, default is 2100.
23
+ */
24
+ maxDate?: DateValue;
25
+ /**
26
+ * Handler for when the date selection is cancelled.
27
+ */
28
+ onCancel?: () => void;
29
+ /**
30
+ * Time zone of the date selection, defaults to the current time zone of the user.
31
+ */
32
+ timeZone?: string;
33
+ /**
34
+ * Locale of the date selection, defaults to the current locale of the user.
35
+ */
36
+ locale?: string;
37
+ }
38
+ /**
39
+ * Props for single date selection.
40
+ *
41
+ * @typedef {UseDatePickerBaseProps<SingleDateSelection>} UseDatePickerSingleProps
42
+ * @property {"single"} selectionVariant - Single date selection.
43
+ * @property {(selectedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onSelectedDateChange] - Handler called when the selected date changes.
44
+ * @property {(appliedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onApply] - Handler called when the selected date is confirmed/applied.
45
+ */
46
+ export interface UseDatePickerSingleProps extends UseDatePickerBaseProps<SingleDateSelection> {
47
+ /**
48
+ * Single date selection.
49
+ */
50
+ selectionVariant: "single";
51
+ /**
52
+ * Handler called when the selected date changes.
53
+ * @param {SingleDateSelection | null} selectedSingleDate - The selected date.
54
+ * @param {string | false} singleError - Error returned by the parser or `false`.
55
+ */
56
+ onSelectedDateChange?: (selectedSingleDate: SingleDateSelection | null, singleError: string | false) => void;
57
+ /**
58
+ * Handler called when the selected date is confirmed/applied.
59
+ * @param {SingleDateSelection | null} appliedSingleDate - The selected date.
60
+ * @param {string | false} singleError - Error returned by the parser or `false`.
61
+ */
62
+ onApply?: (appliedSingleDate: SingleDateSelection | null, singleError: string | false) => void;
63
+ }
64
+ /**
65
+ * Props for date range selection.
66
+ *
67
+ * @typedef {UseDatePickerBaseProps<DateRangeSelection>} UseDatePickerRangeProps
68
+ * @property {"range"} selectionVariant - Date range selection.
69
+ * @property {(selectedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onSelectedDateChange] - Handler called when the selected date changes.
70
+ * @property {(appliedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onApply] - Handler called when the selected date is confirmed/applied.
71
+ */
72
+ export interface UseDatePickerRangeProps extends UseDatePickerBaseProps<DateRangeSelection> {
73
+ /**
74
+ * Date range selection.
75
+ */
76
+ selectionVariant: "range";
77
+ /**
78
+ * Handler called when the selected date changes.
79
+ * @param {DateRangeSelection | null} selectedRangeDate - The selected date.
80
+ * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.
81
+ */
82
+ onSelectedDateChange?: (selectedRangeDate: DateRangeSelection | null, rangeError: {
83
+ startDate: string | false;
84
+ endDate: string | false;
85
+ }) => void;
86
+ /**
87
+ * Handler called when the selected date is confirmed/applied.
88
+ * @param {DateRangeSelection | null} appliedRangeDate - The selected date.
89
+ * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.
90
+ */
91
+ onApply?: (appliedRangeDate: DateRangeSelection | null, rangeError: {
92
+ startDate: string | false;
93
+ endDate: string | false;
94
+ }) => void;
95
+ }
96
+ /**
97
+ * Props for the useDatePicker hook.
98
+ *
99
+ * @template SelectionVariant
100
+ * @typedef {SelectionVariant extends "single" ? UseDatePickerSingleProps : SelectionVariant extends "range" ? UseDatePickerRangeProps : never} UseDatePickerProps
101
+ */
102
+ export declare type UseDatePickerProps<SelectionVariant> = SelectionVariant extends "single" ? UseDatePickerSingleProps : SelectionVariant extends "range" ? UseDatePickerRangeProps : never;
103
+ /**
104
+ * Custom hook for managing date picker state.
105
+ *
106
+ * @template SelectionVariant
107
+ * @param {UseDatePickerProps<SelectionVariant>} props - The props for the date picker.
108
+ * @param {React.ForwardedRef<HTMLDivElement>} ref - The ref for the date picker container.
109
+ * @returns {DatePickerState<SelectionVariant extends "single" ? SingleDateSelection : DateRangeSelection>} The date picker state and helpers.
110
+ */
111
+ export declare function useDatePicker<SelectionVariant extends "single" | "range">(props: UseDatePickerProps<SelectionVariant>, ref: React.ForwardedRef<HTMLDivElement>): SingleDatePickerState | RangeDatePickerState;
112
+ export {};
@@ -1,20 +1,33 @@
1
1
  import { type HTMLAttributes } from "react";
2
- import { type SliderMark } from "./internal/SliderRailMarks";
3
2
  import type { SliderChangeHandler, SliderValue } from "./types";
4
3
  export interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
5
- label?: string;
4
+ /**
5
+ * Minimum slider value
6
+ */
6
7
  min?: number;
8
+ /**
9
+ * Maximum slider value
10
+ */
7
11
  max?: number;
12
+ /**
13
+ * Minimum interval the slider thumb can move
14
+ */
8
15
  step?: number;
9
- pageStep?: number;
10
- value?: SliderValue;
16
+ /**
17
+ * Initial value of the slider
18
+ */
11
19
  defaultValue?: SliderValue;
12
- pushable?: boolean;
13
- pushDistance?: number;
14
- disabled?: boolean;
20
+ /**
21
+ * The markings the slider is displayed with
22
+ */
23
+ marks?: "inline" | "bottom" | "all";
24
+ /**
25
+ * Value of the slider, to be used when in a controlled state
26
+ */
27
+ value?: SliderValue;
28
+ /**
29
+ * Change handler to be used when in a controlled state
30
+ */
15
31
  onChange?: SliderChangeHandler;
16
- marks?: SliderMark[];
17
- hideMarks?: boolean;
18
- hideMarkLabels?: boolean;
19
32
  }
20
33
  export declare const Slider: import("react").ForwardRefExoticComponent<SliderProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,11 @@
1
+ import type { SliderChangeHandler, SliderValue } from "../types";
2
+ export interface SliderContextValue {
3
+ min: number;
4
+ max: number;
5
+ step: number;
6
+ value: SliderValue;
7
+ onChange: SliderChangeHandler;
8
+ ariaLabel: string | undefined;
9
+ }
10
+ export declare const SliderContext: import("react").Context<SliderContextValue>;
11
+ export declare function useSliderContext(): SliderContextValue;
@@ -0,0 +1,7 @@
1
+ import type { ComponentPropsWithoutRef } from "react";
2
+ export interface SliderMarksProps extends ComponentPropsWithoutRef<"div"> {
3
+ min: number;
4
+ max: number;
5
+ step: number;
6
+ }
7
+ export declare function SliderMarks({ min, max, step, ...rest }: SliderMarksProps): JSX.Element;
@@ -1,4 +1,4 @@
1
- export interface SliderSelectionProps {
2
- valueLength: number;
1
+ import type { ComponentPropsWithoutRef } from "react";
2
+ export interface SliderSelectionProps extends ComponentPropsWithoutRef<"div"> {
3
3
  }
4
- export declare function SliderSelection({ valueLength }: SliderSelectionProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare function SliderSelection({ ...props }: SliderSelectionProps): JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { type ComponentPropsWithoutRef } from "react";
2
+ import type { ActiveThumbIndex, ThumbIndex } from "../types";
3
+ export interface SliderThumbProps extends ComponentPropsWithoutRef<"div"> {
4
+ index: ThumbIndex;
5
+ activeThumb: ActiveThumbIndex;
6
+ setActiveThumb: (index: ActiveThumbIndex) => void;
7
+ }
8
+ export declare function SliderThumb(props: SliderThumbProps): JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { type ComponentPropsWithoutRef } from "react";
2
+ export interface SliderTrackProps extends ComponentPropsWithoutRef<"div"> {
3
+ }
4
+ export declare const SliderTrack: ({ ...props }: SliderTrackProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export * from "./SliderTrack";
2
+ export * from "./SliderMarks";
3
+ export * from "./SliderContext";
@@ -0,0 +1,2 @@
1
+ import type { SliderChangeHandler, SliderValue, ThumbIndex } from "../types";
2
+ export declare const useKeyDownThumb: (min: number, max: number, step: number, value: SliderValue, onChange: SliderChangeHandler, index: ThumbIndex) => (event: React.KeyboardEvent) => void;
@@ -1,10 +1,18 @@
1
- import type { SliderValue } from "../types";
2
- import type { LabeledMark, SliderMark } from "./SliderRailMarks";
3
- export declare type UpdateValueItem = (oldValue: SliderValue, index: number, valueItem: number) => SliderValue;
4
- export declare function useValueUpdater(pushable: boolean | undefined, pushDistance: number, min: number, max: number): UpdateValueItem;
5
- export declare const roundValue: (v: number, step: number) => number;
6
- export declare const clampValue: (v: number, min: number, max: number) => number;
7
- export declare function getSliderAriaLabel(count: number, index: number): string | undefined;
8
- export declare function getHandleIndex(element: HTMLElement): number;
9
- export declare function isLabeledMark(mark: SliderMark): mark is LabeledMark;
10
- export declare function isMarkAtMax(max: number, mark: SliderMark): boolean;
1
+ import type { RefObject } from "react";
2
+ import type { SliderChangeHandler, SliderValue, ThumbIndex } from "../types";
3
+ export declare const getValue: (trackRef: RefObject<Element>, min: number, max: number, step: number, clientX: number) => number;
4
+ export declare const setValue: (value: SliderValue, newValue: number, index: ThumbIndex, onChange: SliderChangeHandler) => void;
5
+ export declare const roundToStep: (value: number, step: number) => number;
6
+ export declare const clampValue: (value: number, [min, max]: number[]) => number;
7
+ export declare const getPercentage: (min: number, max: number, value: number) => number;
8
+ export declare const getPercentageDifference: (min: number, max: number, value: number[]) => string;
9
+ export declare const getPercentageOffset: (min: number, max: number, value: number[]) => string;
10
+ export declare const countDecimalPlaces: (num: number) => number;
11
+ export declare const getMarkStyles: (min: number, max: number, step: number) => {
12
+ label: string;
13
+ value: number;
14
+ position: string;
15
+ }[];
16
+ export declare const getNearestIndex: (value: SliderValue, newValue: number) => ThumbIndex;
17
+ export declare const preventOverlappingValues: (value: SliderValue, newValue: number, index: ThumbIndex) => number;
18
+ export declare const parseValueProp: (value: number[] | undefined, min: number, max: number) => SliderValue | undefined;
@@ -1,2 +1,4 @@
1
- export declare type SliderValue = number | number[];
1
+ export declare type SliderValue = [number] | [number, number];
2
2
  export declare type SliderChangeHandler = (value: SliderValue) => void;
3
+ export declare type ThumbIndex = 0 | 1;
4
+ export declare type ActiveThumbIndex = ThumbIndex | undefined;
@@ -1,10 +1,18 @@
1
+ import { type ValidationStatus } from "@salt-ds/core";
1
2
  import { type ComponentPropsWithoutRef } from "react";
2
- declare type State = "default" | "completed";
3
+ declare type StageOptions = "pending" | "completed";
4
+ declare type StatusOptions = Extract<ValidationStatus, "warning" | "error">;
3
5
  export interface TrackerStepProps extends ComponentPropsWithoutRef<"li"> {
4
6
  /**
5
- * The state of the TrackerStep
7
+ * The stage of the step: "pending" or "completed" (note, "active" is derived from "activeStep" in parent SteppedTracker component)
6
8
  */
7
- state?: State;
9
+ stage?: StageOptions;
10
+ /**
11
+ * The status of the step: warning or error
12
+ *
13
+ * If the stage is completed or active, the status prop will be ignored
14
+ */
15
+ status?: StatusOptions;
8
16
  }
9
17
  export declare const TrackerStep: import("react").ForwardRefExoticComponent<TrackerStepProps & import("react").RefAttributes<HTMLLIElement>>;
10
18
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salt-ds/lab",
3
- "version": "1.0.0-alpha.50",
3
+ "version": "1.0.0-alpha.52",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,7 +13,7 @@
13
13
  "dependencies": {
14
14
  "@floating-ui/react": "^0.26.5",
15
15
  "@fluentui/react-overflow": "^9.0.19",
16
- "@internationalized/date": "^3.0.0",
16
+ "@internationalized/date": "^3.5.5",
17
17
  "@types/react-window": "^1.8.2",
18
18
  "aria-hidden": "^1.1.1",
19
19
  "attr-accept": "^2.0.0",
@@ -26,7 +26,7 @@
26
26
  "react-window": "^1.8.6",
27
27
  "rifm": "^0.12.0",
28
28
  "tinycolor2": "^1.4.2",
29
- "@salt-ds/core": "^1.33.0",
29
+ "@salt-ds/core": "^1.36.0",
30
30
  "@salt-ds/styles": "^0.2.1",
31
31
  "@salt-ds/window": "^0.1.1",
32
32
  "@salt-ds/icons": "^1.12.1"
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var css_248z = ".saltCalendarNavigation {\n display: grid;\n grid-template-columns: min-content auto min-content;\n padding-bottom: var(--salt-spacing-100);\n grid-gap: 0;\n align-items: center;\n box-sizing: border-box;\n}\n\n.saltCalendarNavigation-hideYearDropdown {\n grid-template-columns: min-content auto min-content;\n grid-gap: var(--salt-spacing-300);\n}\n\n.saltCalendarNavigation-dropdowns {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: var(--salt-spacing-100);\n}\n";
4
-
5
- module.exports = css_248z;
6
- //# sourceMappingURL=CalendarNavigation.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CalendarNavigation.js","sources":["../src/calendar/internal/CalendarNavigation.tsx"],"sourcesContent":["import {\n Button,\n type ButtonProps,\n Dropdown,\n type DropdownProps,\n Option,\n type OptionProps,\n Tooltip,\n makePrefixer,\n useListControlContext,\n} from \"@salt-ds/core\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithRef,\n type MouseEventHandler,\n type SyntheticEvent,\n forwardRef,\n} from \"react\";\n\nimport { useCalendarContext } from \"./CalendarContext\";\n\nimport {\n type DateValue,\n isSameMonth,\n isSameYear,\n} from \"@internationalized/date\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport calendarNavigationCss from \"./CalendarNavigation.css\";\nimport { formatDate, monthDiff, monthsForLocale } from \"./utils\";\n\ntype dateDropdownProps = DropdownProps<DateValue>;\n\nexport interface CalendarNavigationProps extends ComponentPropsWithRef<\"div\"> {\n MonthDropdownProps?: dateDropdownProps;\n YearDropdownProps?: dateDropdownProps;\n onMonthSelect?: dateDropdownProps[\"onChange\"];\n onYearSelect?: dateDropdownProps[\"onChange\"];\n onNavigateNext?: ButtonProps[\"onClick\"];\n onNavigatePrevious?: ButtonProps[\"onClick\"];\n hideYearDropdown?: boolean;\n}\n\ninterface OptionWithTooltipProps extends OptionProps {\n value: DateValue;\n tooltipContent: string;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarNavigation\");\n\nfunction useCalendarNavigation() {\n const {\n state: { visibleMonth, minDate, maxDate },\n helpers: {\n setVisibleMonth,\n isDayVisible,\n isOutsideAllowedYears,\n isOutsideAllowedMonths,\n },\n } = useCalendarContext();\n\n const moveToNextMonth = (event: SyntheticEvent) => {\n setVisibleMonth(event, visibleMonth.add({ months: 1 }));\n };\n\n const moveToPreviousMonth = (event: SyntheticEvent) => {\n setVisibleMonth(event, visibleMonth.subtract({ months: 1 }));\n };\n\n const moveToMonth = (event: SyntheticEvent, month: DateValue) => {\n let newMonth = month;\n\n if (!isOutsideAllowedYears(newMonth)) {\n if (isOutsideAllowedMonths(newMonth)) {\n // If month is navigable we should move to the closest navigable month\n const navigableMonths = monthsForLocale(visibleMonth).filter(\n (n) => !isOutsideAllowedMonths(n),\n );\n newMonth = navigableMonths.reduce((closestMonth, currentMonth) =>\n Math.abs(monthDiff(currentMonth, newMonth)) <\n Math.abs(monthDiff(closestMonth, newMonth))\n ? currentMonth\n : closestMonth,\n );\n }\n setVisibleMonth(event, newMonth);\n }\n };\n\n const months: DateValue[] = monthsForLocale(visibleMonth);\n\n const years: DateValue[] = [-2, -1, 0, 1, 2]\n .map((delta) => visibleMonth.add({ years: delta }))\n .filter((year) => !isOutsideAllowedYears(year));\n\n const selectedMonth: DateValue | undefined = months.find((month: DateValue) =>\n isSameMonth(month, visibleMonth),\n );\n const selectedYear: DateValue | undefined = years.find((year: DateValue) =>\n isSameYear(year, visibleMonth),\n );\n\n const canNavigatePrevious = !(minDate && isDayVisible(minDate));\n const canNavigateNext = !(maxDate && isDayVisible(maxDate));\n\n return {\n moveToNextMonth,\n moveToPreviousMonth,\n moveToMonth,\n visibleMonth,\n months,\n years,\n canNavigateNext,\n canNavigatePrevious,\n selectedMonth,\n selectedYear,\n isOutsideAllowedMonths,\n };\n}\n\nconst OptionWithTooltip = ({\n value,\n children,\n disabled,\n tooltipContent,\n}: OptionWithTooltipProps) => {\n const { activeState, openState } = useListControlContext();\n const open = activeState?.value === value;\n\n return (\n <Tooltip\n placement=\"right\"\n open={open && openState}\n disabled={!disabled}\n content={tooltipContent}\n enterDelay={0} // --salt-duration-instant\n leaveDelay={0} // --salt-duration-instant\n >\n <Option value={value} disabled={disabled}>\n {children}\n </Option>\n </Tooltip>\n );\n};\n\nexport const CalendarNavigation = forwardRef<\n HTMLDivElement,\n CalendarNavigationProps\n>(function CalendarNavigation(props, ref) {\n const {\n className,\n MonthDropdownProps,\n YearDropdownProps,\n hideYearDropdown,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar-navigation\",\n css: calendarNavigationCss,\n window: targetWindow,\n });\n\n const {\n moveToPreviousMonth,\n moveToNextMonth,\n moveToMonth,\n months,\n years,\n canNavigateNext,\n canNavigatePrevious,\n visibleMonth,\n selectedMonth,\n selectedYear,\n isOutsideAllowedMonths,\n } = useCalendarNavigation();\n\n const handleNavigatePrevious: MouseEventHandler<HTMLButtonElement> = (\n event,\n ) => {\n moveToPreviousMonth(event);\n };\n\n const handleNavigateNext: MouseEventHandler<HTMLButtonElement> = (event) => {\n moveToNextMonth(event);\n };\n\n const handleMonthSelect = (event: SyntheticEvent, month: DateValue[]) => {\n moveToMonth(event, month[0]);\n };\n\n const handleYearSelect = (event: SyntheticEvent, year: DateValue[]) => {\n moveToMonth(event, year[0]);\n };\n\n const formatMonth = (date?: DateValue) => {\n return !date\n ? \"\"\n : formatDate(date, { month: hideYearDropdown ? \"long\" : \"short\" });\n };\n\n const formatYear = (date?: DateValue) => {\n return !date ? \"\" : formatDate(date, { year: \"numeric\" });\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n { [withBaseName(\"hideYearDropdown\")]: hideYearDropdown },\n className,\n )}\n ref={ref}\n {...rest}\n >\n <Tooltip\n placement=\"top\"\n disabled={canNavigatePrevious}\n content=\"Past dates are out of range\"\n enterDelay={0} // --salt-duration-instant\n leaveDelay={0} // --salt-duration-instant\n >\n <Button\n disabled={!canNavigatePrevious}\n variant=\"secondary\"\n onClick={handleNavigatePrevious}\n focusableWhenDisabled={true}\n >\n <ChevronLeftIcon aria-label=\"Previous Month\" />\n </Button>\n </Tooltip>\n <div className={withBaseName(\"dropdowns\")}>\n <Dropdown\n aria-label=\"Month Dropdown\"\n selected={selectedMonth ? [selectedMonth] : []}\n value={formatMonth(selectedMonth)}\n onSelectionChange={handleMonthSelect}\n {...MonthDropdownProps}\n >\n {months.map((month) => (\n <OptionWithTooltip\n key={formatMonth(month)}\n value={month}\n disabled={isOutsideAllowedMonths(month)}\n tooltipContent=\"This month is out of range\"\n >\n {formatMonth(month)}\n </OptionWithTooltip>\n ))}\n </Dropdown>\n {!hideYearDropdown && (\n <Dropdown\n aria-label=\"Year Dropdown\"\n selected={selectedYear ? [selectedYear] : []}\n value={formatYear(selectedYear)}\n onSelectionChange={handleYearSelect}\n {...YearDropdownProps}\n >\n {years.map((year) => (\n <OptionWithTooltip\n key={formatYear(year)}\n value={year}\n tooltipContent=\"This year is out of range\"\n >\n {formatYear(year)}\n </OptionWithTooltip>\n ))}\n </Dropdown>\n )}\n </div>\n <Tooltip\n placement=\"top\"\n disabled={canNavigateNext}\n content=\"Future dates are out of range\"\n enterDelay={0} // --salt-duration-instant\n leaveDelay={0} // --salt-duration-instant\n >\n <Button\n disabled={!canNavigateNext}\n variant=\"secondary\"\n onClick={handleNavigateNext}\n focusableWhenDisabled={true}\n >\n <ChevronRightIcon aria-label=\"Next Month\" />\n </Button>\n </Tooltip>\n </div>\n );\n});\n"],"names":["makePrefixer","useCalendarContext","monthsForLocale","monthDiff","isSameMonth","isSameYear","useListControlContext","jsx","Tooltip","Option","forwardRef","CalendarNavigation","useWindow","useComponentCssInjection","calendarNavigationCss","formatDate","jsxs","clsx","Button","ChevronLeftIcon","Dropdown","ChevronRightIcon"],"mappings":"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"}
@@ -1,249 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var date = require('@internationalized/date');
6
- var core = require('@salt-ds/core');
7
- var clsx = require('clsx');
8
- var isPlainObject = require('../utils/isPlainObject.js');
9
- require('react');
10
- var CalendarContext = require('./internal/CalendarContext.js');
11
-
12
- function addOrRemoveFromArray(array, item) {
13
- if (Array.isArray(array)) {
14
- if (array.find((element) => date.isSameDay(element, item))) {
15
- return array.filter((element) => !date.isSameDay(element, item));
16
- }
17
- return array.concat(item);
18
- }
19
- return [item];
20
- }
21
- const defaultOffset = (date) => date;
22
- function isRangeOrOffsetSelectionValue(selectionValue) {
23
- return selectionValue != null && isPlainObject.isPlainObject(selectionValue);
24
- }
25
- function isRangeOrOffsetSelectionWithStartDate(selectionValue) {
26
- return isRangeOrOffsetSelectionValue(selectionValue) && Object.prototype.hasOwnProperty.call(selectionValue, "startDate");
27
- }
28
- const withBaseName = core.makePrefixer("saltCalendarDay");
29
- function useSelectionCalendar(props) {
30
- const {
31
- hoveredDate: hoveredDateProp,
32
- selectedDate: selectedDateProp,
33
- defaultSelectedDate,
34
- onHoveredDateChange,
35
- isDaySelectable,
36
- selectionVariant
37
- } = props;
38
- const [selectedDate, setSelectedDateState] = core.useControlled({
39
- controlled: selectedDateProp,
40
- default: defaultSelectedDate,
41
- name: "Calendar",
42
- state: "selectedDate"
43
- });
44
- const getStartDateOffset = (date) => {
45
- if (props.selectionVariant === "offset" && props.startDateOffset) {
46
- return props.startDateOffset(date);
47
- }
48
- return defaultOffset(date);
49
- };
50
- const getEndDateOffset = (date) => {
51
- if (props.selectionVariant === "offset" && props.endDateOffset) {
52
- return props.endDateOffset(date);
53
- }
54
- return defaultOffset(date);
55
- };
56
- const setSelectedDate = (event, newSelectedDate) => {
57
- var _a, _b, _c, _d;
58
- if (isDaySelectable(newSelectedDate)) {
59
- switch (props.selectionVariant) {
60
- case "default":
61
- setSelectedDateState(newSelectedDate);
62
- (_a = props.onSelectedDateChange) == null ? void 0 : _a.call(props, event, newSelectedDate);
63
- break;
64
- case "multiselect": {
65
- const newDates = addOrRemoveFromArray(
66
- selectedDate != null ? selectedDate : [],
67
- newSelectedDate
68
- );
69
- setSelectedDateState(newDates);
70
- (_b = props.onSelectedDateChange) == null ? void 0 : _b.call(props, event, newDates);
71
- break;
72
- }
73
- case "range": {
74
- let base = selectedDate;
75
- if (isRangeOrOffsetSelectionValue(base)) {
76
- if ((base == null ? void 0 : base.startDate) && (base == null ? void 0 : base.endDate)) {
77
- base = { startDate: newSelectedDate };
78
- } else if ((base == null ? void 0 : base.startDate) && newSelectedDate.compare(base.startDate) > 0) {
79
- base = { ...base, endDate: newSelectedDate };
80
- } else {
81
- base = { startDate: newSelectedDate };
82
- }
83
- } else {
84
- base = { startDate: newSelectedDate };
85
- }
86
- setSelectedDateState(base);
87
- (_c = props.onSelectedDateChange) == null ? void 0 : _c.call(props, event, base);
88
- break;
89
- }
90
- case "offset": {
91
- const newRange = {
92
- startDate: getStartDateOffset(newSelectedDate),
93
- endDate: getEndDateOffset(newSelectedDate)
94
- };
95
- setSelectedDateState(newRange);
96
- (_d = props.onSelectedDateChange) == null ? void 0 : _d.call(props, event, newRange);
97
- }
98
- }
99
- }
100
- };
101
- const isSelected = (date$1) => {
102
- switch (selectionVariant) {
103
- case "default":
104
- return selectedDate instanceof date.CalendarDate && date.isSameDay(selectedDate, date$1);
105
- case "multiselect":
106
- return Array.isArray(selectedDate) && !!selectedDate.find((element) => date.isSameDay(element, date$1));
107
- default:
108
- return false;
109
- }
110
- };
111
- const [hoveredDate, setHoveredDateState] = core.useControlled({
112
- controlled: hoveredDateProp,
113
- default: void 0,
114
- name: "Calendar",
115
- state: "hoveredDate"
116
- });
117
- const setHoveredDate = (event, date) => {
118
- setHoveredDateState(date);
119
- onHoveredDateChange == null ? void 0 : onHoveredDateChange(event, date);
120
- };
121
- const isHovered = (date$1) => {
122
- return !!hoveredDate && date.isSameDay(date$1, hoveredDate);
123
- };
124
- const isSelectedSpan = (date) => {
125
- if ((selectionVariant === "range" || selectionVariant === "offset") && isRangeOrOffsetSelectionValue(selectedDate) && (selectedDate == null ? void 0 : selectedDate.startDate) && (selectedDate == null ? void 0 : selectedDate.endDate)) {
126
- return date.compare(selectedDate.startDate) > 0 && date.compare(selectedDate.endDate) < 0;
127
- }
128
- return false;
129
- };
130
- const isHoveredSpan = (date$1) => {
131
- if ((selectionVariant === "range" || selectionVariant === "offset") && isRangeOrOffsetSelectionValue(selectedDate) && selectedDate.startDate && !selectedDate.endDate && hoveredDate) {
132
- const isForwardRange = hoveredDate.compare(selectedDate.startDate) > 0 && (date$1.compare(selectedDate.startDate) > 0 && date$1.compare(hoveredDate) < 0 || date.isSameDay(date$1, hoveredDate));
133
- const isValidDayHovered = isDaySelectable(hoveredDate);
134
- return isForwardRange && isValidDayHovered;
135
- }
136
- return false;
137
- };
138
- const isSelectedStart = (date$1) => {
139
- if ((selectionVariant === "range" || selectionVariant === "offset") && isRangeOrOffsetSelectionValue(selectedDate) && selectedDate.startDate) {
140
- return date.isSameDay(selectedDate.startDate, date$1);
141
- }
142
- return false;
143
- };
144
- const isSelectedEnd = (date$1) => {
145
- if ((selectionVariant === "range" || selectionVariant === "offset") && isRangeOrOffsetSelectionValue(selectedDate) && selectedDate.endDate) {
146
- return date.isSameDay(selectedDate.endDate, date$1);
147
- }
148
- return false;
149
- };
150
- const isHoveredOffset = (date) => {
151
- if (hoveredDate && selectionVariant === "offset") {
152
- const startDate = getStartDateOffset(hoveredDate);
153
- const endDate = getEndDateOffset(hoveredDate);
154
- return date.compare(startDate) >= 0 && date.compare(endDate) <= 0 && isDaySelectable(date);
155
- }
156
- return false;
157
- };
158
- return {
159
- state: {
160
- selectedDate,
161
- hoveredDate
162
- },
163
- helpers: {
164
- setSelectedDate,
165
- isSelected,
166
- setHoveredDate,
167
- isHovered,
168
- isSelectedSpan,
169
- isHoveredSpan,
170
- isSelectedStart,
171
- isSelectedEnd,
172
- isHoveredOffset
173
- }
174
- };
175
- }
176
- function useSelectionDay({ date }) {
177
- const {
178
- helpers: {
179
- setSelectedDate,
180
- isSelected,
181
- setHoveredDate,
182
- isSelectedSpan,
183
- isHoveredSpan,
184
- isSelectedStart,
185
- isSelectedEnd,
186
- isHovered,
187
- isHoveredOffset,
188
- isDayUnselectable
189
- }
190
- } = CalendarContext.useCalendarContext();
191
- const handleClick = (event) => {
192
- setSelectedDate(event, date);
193
- };
194
- const handleKeyDown = (event) => {
195
- switch (event.key) {
196
- case "Space":
197
- case "Enter":
198
- setSelectedDate(event, date);
199
- event.preventDefault();
200
- }
201
- };
202
- const handleMouseOver = (event) => {
203
- setHoveredDate(event, date);
204
- };
205
- const handleMouseLeave = (event) => {
206
- setHoveredDate(event, null);
207
- };
208
- const selected = isSelected(date);
209
- const selectedSpan = isSelectedSpan(date);
210
- const hoveredSpan = isHoveredSpan(date);
211
- const selectedStart = isSelectedStart(date);
212
- const selectedEnd = isSelectedEnd(date);
213
- const hovered = isHovered(date);
214
- const hoveredOffset = isHoveredOffset(date);
215
- return {
216
- handleClick,
217
- handleKeyDown,
218
- handleMouseOver,
219
- handleMouseLeave,
220
- status: {
221
- selected,
222
- selectedSpan,
223
- hoveredSpan,
224
- selectedStart,
225
- selectedEnd,
226
- hovered,
227
- hoveredOffset
228
- },
229
- dayProps: {
230
- className: clsx.clsx({
231
- [withBaseName("selected")]: selected,
232
- [withBaseName("selectedSpan")]: selectedSpan,
233
- [withBaseName("hoveredSpan")]: hoveredSpan,
234
- [withBaseName("selectedStart")]: selectedStart,
235
- [withBaseName("selectedEnd")]: selectedEnd,
236
- [withBaseName("hovered")]: hovered,
237
- [withBaseName("hoveredOffset")]: hoveredOffset
238
- }),
239
- "aria-pressed": selected || selectedEnd || selectedStart || selectedSpan ? "true" : void 0,
240
- "aria-disabled": isDayUnselectable(date) ? "true" : void 0
241
- }
242
- };
243
- }
244
-
245
- exports.isRangeOrOffsetSelectionValue = isRangeOrOffsetSelectionValue;
246
- exports.isRangeOrOffsetSelectionWithStartDate = isRangeOrOffsetSelectionWithStartDate;
247
- exports.useSelectionCalendar = useSelectionCalendar;
248
- exports.useSelectionDay = useSelectionDay;
249
- //# sourceMappingURL=useSelection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSelection.js","sources":["../src/calendar/useSelection.ts"],"sourcesContent":["import {\n CalendarDate,\n type DateValue,\n isSameDay,\n} from \"@internationalized/date\";\nimport { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport type {\n KeyboardEventHandler,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport { isPlainObject } from \"../utils\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\n\ninterface BaseUseSelectionCalendarProps<SelectionVariantType> {\n hoveredDate?: DateValue | null;\n selectedDate?: SelectionVariantType | null;\n defaultSelectedDate?: SelectionVariantType;\n onSelectedDateChange?: (\n event: SyntheticEvent,\n selectedDate: SelectionVariantType,\n ) => void;\n isDaySelectable: (date?: DateValue) => boolean;\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: DateValue | null,\n ) => void;\n}\n\nexport type SingleSelectionValueType = DateValue;\ntype MultiSelectionValueType = DateValue[];\nexport type RangeSelectionValueType = {\n startDate?: DateValue;\n endDate?: DateValue;\n};\ntype OffsetSelectionValueType = {\n startDate?: DateValue;\n endDate?: DateValue;\n};\n\ntype AllSelectionValueType =\n | SingleSelectionValueType\n | MultiSelectionValueType\n | RangeSelectionValueType\n | OffsetSelectionValueType\n | null;\n\nexport interface UseOffsetSelectionCalendarProps\n extends Omit<\n BaseUseSelectionCalendarProps<OffsetSelectionValueType>,\n \"startDateOffset\" | \"endDateOffset\"\n > {\n selectionVariant: \"offset\";\n startDateOffset?: (date: DateValue) => DateValue;\n endDateOffset?: (date: DateValue) => DateValue;\n}\n\nexport interface UseRangeSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<RangeSelectionValueType> {\n selectionVariant: \"range\";\n}\n\nexport interface UseMultiSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<MultiSelectionValueType> {\n selectionVariant: \"multiselect\";\n}\n\nexport interface UseSingleSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<SingleSelectionValueType> {\n selectionVariant: \"default\";\n}\n\nexport type useSelectionCalendarProps =\n | UseSingleSelectionCalendarProps\n | UseMultiSelectionCalendarProps\n | UseRangeSelectionCalendarProps\n | UseOffsetSelectionCalendarProps;\n\nfunction addOrRemoveFromArray(\n array: AllSelectionValueType | null,\n item: DateValue,\n) {\n if (Array.isArray(array)) {\n if (array.find((element) => isSameDay(element, item))) {\n return array.filter((element) => !isSameDay(element, item));\n }\n return array.concat(item);\n }\n return [item];\n}\n\nconst defaultOffset = (date: DateValue) => date;\n\nexport function isRangeOrOffsetSelectionValue(\n selectionValue?: AllSelectionValueType,\n): selectionValue is RangeSelectionValueType | OffsetSelectionValueType {\n return selectionValue != null && isPlainObject(selectionValue);\n}\n\nexport function isRangeOrOffsetSelectionWithStartDate(\n selectionValue?: AllSelectionValueType,\n): selectionValue is RangeSelectionValueType | OffsetSelectionValueType {\n return (\n isRangeOrOffsetSelectionValue(selectionValue) &&\n Object.prototype.hasOwnProperty.call(selectionValue, \"startDate\")\n );\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nexport function useSelectionCalendar(props: useSelectionCalendarProps) {\n const {\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n // onSelectedDateChange,\n onHoveredDateChange,\n isDaySelectable,\n selectionVariant,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const getStartDateOffset = (date: DateValue) => {\n if (props.selectionVariant === \"offset\" && props.startDateOffset) {\n return props.startDateOffset(date);\n }\n return defaultOffset(date);\n };\n\n const getEndDateOffset = (date: DateValue) => {\n if (props.selectionVariant === \"offset\" && props.endDateOffset) {\n return props.endDateOffset(date);\n }\n return defaultOffset(date);\n };\n\n const setSelectedDate = (\n event: SyntheticEvent<HTMLButtonElement>,\n newSelectedDate: DateValue,\n ) => {\n if (isDaySelectable(newSelectedDate)) {\n switch (props.selectionVariant) {\n case \"default\":\n setSelectedDateState(newSelectedDate);\n props.onSelectedDateChange?.(event, newSelectedDate);\n break;\n case \"multiselect\": {\n const newDates = addOrRemoveFromArray(\n selectedDate ?? [],\n newSelectedDate,\n );\n setSelectedDateState(newDates);\n props.onSelectedDateChange?.(event, newDates);\n break;\n }\n case \"range\": {\n let base = selectedDate;\n if (isRangeOrOffsetSelectionValue(base)) {\n if (base?.startDate && base?.endDate) {\n base = { startDate: newSelectedDate };\n } else if (\n base?.startDate &&\n newSelectedDate.compare(base.startDate) > 0\n ) {\n base = { ...base, endDate: newSelectedDate };\n } else {\n base = { startDate: newSelectedDate };\n }\n } else {\n base = { startDate: newSelectedDate };\n }\n setSelectedDateState(base);\n props.onSelectedDateChange?.(event, base);\n break;\n }\n case \"offset\": {\n const newRange = {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n setSelectedDateState(newRange);\n props.onSelectedDateChange?.(event, newRange);\n }\n }\n }\n };\n\n const isSelected = (date: DateValue) => {\n switch (selectionVariant) {\n case \"default\":\n return (\n selectedDate instanceof CalendarDate && isSameDay(selectedDate, date)\n );\n case \"multiselect\":\n return (\n Array.isArray(selectedDate) &&\n !!selectedDate.find((element) => isSameDay(element, date))\n );\n default:\n return false;\n }\n };\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = (event: SyntheticEvent, date: DateValue | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n };\n\n const isHovered = (date: DateValue) => {\n return !!hoveredDate && isSameDay(date, hoveredDate);\n };\n\n const isSelectedSpan = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate?.startDate &&\n selectedDate?.endDate\n ) {\n return (\n date.compare(selectedDate.startDate) > 0 &&\n date.compare(selectedDate.endDate) < 0\n );\n }\n return false;\n };\n const isHoveredSpan = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.startDate &&\n !selectedDate.endDate &&\n hoveredDate\n ) {\n const isForwardRange =\n hoveredDate.compare(selectedDate.startDate) > 0 &&\n ((date.compare(selectedDate.startDate) > 0 &&\n date.compare(hoveredDate) < 0) ||\n isSameDay(date, hoveredDate));\n\n const isValidDayHovered = isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n };\n\n const isSelectedStart = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.startDate\n ) {\n return isSameDay(selectedDate.startDate, date);\n }\n return false;\n };\n\n const isSelectedEnd = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.endDate\n ) {\n return isSameDay(selectedDate.endDate, date);\n }\n return false;\n };\n\n const isHoveredOffset = (date: DateValue) => {\n if (hoveredDate && selectionVariant === \"offset\") {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n\n return (\n date.compare(startDate) >= 0 &&\n date.compare(endDate) <= 0 &&\n isDaySelectable(date)\n );\n }\n\n return false;\n };\n\n return {\n state: {\n selectedDate,\n hoveredDate,\n },\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n },\n };\n}\n\nexport function useSelectionDay({ date }: { date: DateValue }) {\n const {\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHovered,\n isHoveredOffset,\n isDayUnselectable,\n },\n } = useCalendarContext();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n setSelectedDate(event, date);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n };\n\n const handleMouseOver: MouseEventHandler<HTMLButtonElement> = (event) => {\n setHoveredDate(event, date);\n };\n\n const handleMouseLeave: MouseEventHandler<HTMLButtonElement> = (event) => {\n setHoveredDate(event, null);\n };\n\n const selected = isSelected(date);\n const selectedSpan = isSelectedSpan(date);\n const hoveredSpan = isHoveredSpan(date);\n const selectedStart = isSelectedStart(date);\n const selectedEnd = isSelectedEnd(date);\n const hovered = isHovered(date);\n const hoveredOffset = isHoveredOffset(date);\n\n return {\n handleClick,\n handleKeyDown,\n handleMouseOver,\n handleMouseLeave,\n status: {\n selected,\n selectedSpan,\n hoveredSpan,\n selectedStart,\n selectedEnd,\n hovered,\n hoveredOffset,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]: selected,\n [withBaseName(\"selectedSpan\")]: selectedSpan,\n [withBaseName(\"hoveredSpan\")]: hoveredSpan,\n [withBaseName(\"selectedStart\")]: selectedStart,\n [withBaseName(\"selectedEnd\")]: selectedEnd,\n [withBaseName(\"hovered\")]: hovered,\n [withBaseName(\"hoveredOffset\")]: hoveredOffset,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\": isDayUnselectable(date) ? \"true\" : undefined,\n },\n };\n}\n"],"names":["isSameDay","isPlainObject","makePrefixer","useControlled","date","CalendarDate","useCalendarContext","clsx"],"mappings":";;;;;;;;;;;AA+EA,SAAS,oBAAA,CACP,OACA,IACA,EAAA;AACA,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,IAAI,IAAA,KAAA,CAAM,KAAK,CAAC,OAAA,KAAYA,eAAU,OAAS,EAAA,IAAI,CAAC,CAAG,EAAA;AACrD,MAAO,OAAA,KAAA,CAAM,OAAO,CAAC,OAAA,KAAY,CAACA,cAAU,CAAA,OAAA,EAAS,IAAI,CAAC,CAAA,CAAA;AAAA,KAC5D;AACA,IAAO,OAAA,KAAA,CAAM,OAAO,IAAI,CAAA,CAAA;AAAA,GAC1B;AACA,EAAA,OAAO,CAAC,IAAI,CAAA,CAAA;AACd,CAAA;AAEA,MAAM,aAAA,GAAgB,CAAC,IAAoB,KAAA,IAAA,CAAA;AAEpC,SAAS,8BACd,cACsE,EAAA;AACtE,EAAO,OAAA,cAAA,IAAkB,IAAQ,IAAAC,2BAAA,CAAc,cAAc,CAAA,CAAA;AAC/D,CAAA;AAEO,SAAS,sCACd,cACsE,EAAA;AACtE,EACE,OAAA,6BAAA,CAA8B,cAAc,CAC5C,IAAA,MAAA,CAAO,UAAU,cAAe,CAAA,IAAA,CAAK,gBAAgB,WAAW,CAAA,CAAA;AAEpE,CAAA;AAEA,MAAM,YAAA,GAAeC,kBAAa,iBAAiB,CAAA,CAAA;AAE5C,SAAS,qBAAqB,KAAkC,EAAA;AACrE,EAAM,MAAA;AAAA,IACJ,WAAa,EAAA,eAAA;AAAA,IACb,YAAc,EAAA,gBAAA;AAAA,IACd,mBAAA;AAAA,IAEA,mBAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,GAGE,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,CAAC,YAAA,EAAc,oBAAoB,CAAA,GAAIC,kBAAc,CAAA;AAAA,IACzD,UAAY,EAAA,gBAAA;AAAA,IACZ,OAAS,EAAA,mBAAA;AAAA,IACT,IAAM,EAAA,UAAA;AAAA,IACN,KAAO,EAAA,cAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAM,MAAA,kBAAA,GAAqB,CAAC,IAAoB,KAAA;AAC9C,IAAA,IAAI,KAAM,CAAA,gBAAA,KAAqB,QAAY,IAAA,KAAA,CAAM,eAAiB,EAAA;AAChE,MAAO,OAAA,KAAA,CAAM,gBAAgB,IAAI,CAAA,CAAA;AAAA,KACnC;AACA,IAAA,OAAO,cAAc,IAAI,CAAA,CAAA;AAAA,GAC3B,CAAA;AAEA,EAAM,MAAA,gBAAA,GAAmB,CAAC,IAAoB,KAAA;AAC5C,IAAA,IAAI,KAAM,CAAA,gBAAA,KAAqB,QAAY,IAAA,KAAA,CAAM,aAAe,EAAA;AAC9D,MAAO,OAAA,KAAA,CAAM,cAAc,IAAI,CAAA,CAAA;AAAA,KACjC;AACA,IAAA,OAAO,cAAc,IAAI,CAAA,CAAA;AAAA,GAC3B,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,CACtB,KAAA,EACA,eACG,KAAA;AAnJP,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAoJI,IAAI,IAAA,eAAA,CAAgB,eAAe,CAAG,EAAA;AACpC,MAAA,QAAQ,KAAM,CAAA,gBAAA;AAAA,QACP,KAAA,SAAA;AACH,UAAA,oBAAA,CAAqB,eAAe,CAAA,CAAA;AACpC,UAAM,CAAA,EAAA,GAAA,KAAA,CAAA,oBAAA,KAAN,+BAA6B,KAAO,EAAA,eAAA,CAAA,CAAA;AACpC,UAAA,MAAA;AAAA,QAAA,KACG,aAAe,EAAA;AAClB,UAAA,MAAM,QAAW,GAAA,oBAAA;AAAA,YACf,sCAAgB,EAAC;AAAA,YACjB,eAAA;AAAA,WACF,CAAA;AACA,UAAA,oBAAA,CAAqB,QAAQ,CAAA,CAAA;AAC7B,UAAM,CAAA,EAAA,GAAA,KAAA,CAAA,oBAAA,KAAN,+BAA6B,KAAO,EAAA,QAAA,CAAA,CAAA;AACpC,UAAA,MAAA;AAAA,SACF;AAAA,QAAA,KACK,OAAS,EAAA;AACZ,UAAA,IAAI,IAAO,GAAA,YAAA,CAAA;AACX,UAAI,IAAA,6BAAA,CAA8B,IAAI,CAAG,EAAA;AACvC,YAAI,IAAA,CAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,SAAa,MAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,OAAS,CAAA,EAAA;AACpC,cAAO,IAAA,GAAA,EAAE,WAAW,eAAgB,EAAA,CAAA;AAAA,aACtC,MAAA,IAAA,CACE,6BAAM,SACN,KAAA,eAAA,CAAgB,QAAQ,IAAK,CAAA,SAAS,IAAI,CAC1C,EAAA;AACA,cAAA,IAAA,GAAO,EAAE,GAAG,IAAM,EAAA,OAAA,EAAS,eAAgB,EAAA,CAAA;AAAA,aACtC,MAAA;AACL,cAAO,IAAA,GAAA,EAAE,WAAW,eAAgB,EAAA,CAAA;AAAA,aACtC;AAAA,WACK,MAAA;AACL,YAAO,IAAA,GAAA,EAAE,WAAW,eAAgB,EAAA,CAAA;AAAA,WACtC;AACA,UAAA,oBAAA,CAAqB,IAAI,CAAA,CAAA;AACzB,UAAM,CAAA,EAAA,GAAA,KAAA,CAAA,oBAAA,KAAN,+BAA6B,KAAO,EAAA,IAAA,CAAA,CAAA;AACpC,UAAA,MAAA;AAAA,SACF;AAAA,QAAA,KACK,QAAU,EAAA;AACb,UAAA,MAAM,QAAW,GAAA;AAAA,YACf,SAAA,EAAW,mBAAmB,eAAe,CAAA;AAAA,YAC7C,OAAA,EAAS,iBAAiB,eAAe,CAAA;AAAA,WAC3C,CAAA;AACA,UAAA,oBAAA,CAAqB,QAAQ,CAAA,CAAA;AAC7B,UAAM,CAAA,EAAA,GAAA,KAAA,CAAA,oBAAA,KAAN,+BAA6B,KAAO,EAAA,QAAA,CAAA,CAAA;AAAA,SACtC;AAAA,OAAA;AAAA,KAEJ;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,UAAA,GAAa,CAACC,MAAoB,KAAA;AACtC,IAAQ,QAAA,gBAAA;AAAA,MACD,KAAA,SAAA;AACH,QAAA,OACE,YAAwB,YAAAC,iBAAA,IAAgBL,cAAU,CAAA,YAAA,EAAcI,MAAI,CAAA,CAAA;AAAA,MAEnE,KAAA,aAAA;AACH,QAAA,OACE,KAAM,CAAA,OAAA,CAAQ,YAAY,CAAA,IAC1B,CAAC,CAAC,YAAa,CAAA,IAAA,CAAK,CAAC,OAAA,KAAYJ,cAAU,CAAA,OAAA,EAASI,MAAI,CAAC,CAAA,CAAA;AAAA,MAAA;AAG3D,QAAO,OAAA,KAAA,CAAA;AAAA,KAAA;AAAA,GAEb,CAAA;AAEA,EAAA,MAAM,CAAC,WAAA,EAAa,mBAAmB,CAAA,GAAID,kBAAc,CAAA;AAAA,IACvD,UAAY,EAAA,eAAA;AAAA,IACZ,OAAS,EAAA,KAAA,CAAA;AAAA,IACT,IAAM,EAAA,UAAA;AAAA,IACN,KAAO,EAAA,aAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAM,MAAA,cAAA,GAAiB,CAAC,KAAA,EAAuB,IAA2B,KAAA;AACxE,IAAA,mBAAA,CAAoB,IAAI,CAAA,CAAA;AACxB,IAAA,mBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,mBAAA,CAAsB,KAAO,EAAA,IAAA,CAAA,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAM,MAAA,SAAA,GAAY,CAACC,MAAoB,KAAA;AACrC,IAAA,OAAO,CAAC,CAAC,WAAe,IAAAJ,cAAA,CAAUI,QAAM,WAAW,CAAA,CAAA;AAAA,GACrD,CAAA;AAEA,EAAM,MAAA,cAAA,GAAiB,CAAC,IAAoB,KAAA;AAC1C,IACG,IAAA,CAAA,gBAAA,KAAqB,OAAW,IAAA,gBAAA,KAAqB,QACtD,KAAA,6BAAA,CAA8B,YAAY,CAC1C,KAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAc,SACd,CAAA,KAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAc,OACd,CAAA,EAAA;AACA,MACE,OAAA,IAAA,CAAK,OAAQ,CAAA,YAAA,CAAa,SAAS,CAAA,GAAI,KACvC,IAAK,CAAA,OAAA,CAAQ,YAAa,CAAA,OAAO,CAAI,GAAA,CAAA,CAAA;AAAA,KAEzC;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AACA,EAAM,MAAA,aAAA,GAAgB,CAACA,MAAoB,KAAA;AACzC,IAAA,IAAA,CACG,gBAAqB,KAAA,OAAA,IAAW,gBAAqB,KAAA,QAAA,KACtD,6BAA8B,CAAA,YAAY,CAC1C,IAAA,YAAA,CAAa,SACb,IAAA,CAAC,YAAa,CAAA,OAAA,IACd,WACA,EAAA;AACA,MAAM,MAAA,cAAA,GACJ,YAAY,OAAQ,CAAA,YAAA,CAAa,SAAS,CAAI,GAAA,CAAA,KAC5CA,OAAK,OAAQ,CAAA,YAAA,CAAa,SAAS,CAAI,GAAA,CAAA,IACvCA,OAAK,OAAQ,CAAA,WAAW,IAAI,CAC5B,IAAAJ,cAAA,CAAUI,QAAM,WAAW,CAAA,CAAA,CAAA;AAE/B,MAAM,MAAA,iBAAA,GAAoB,gBAAgB,WAAW,CAAA,CAAA;AAErD,MAAA,OAAO,cAAkB,IAAA,iBAAA,CAAA;AAAA,KAC3B;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,CAACA,MAAoB,KAAA;AAC3C,IACG,IAAA,CAAA,gBAAA,KAAqB,WAAW,gBAAqB,KAAA,QAAA,KACtD,8BAA8B,YAAY,CAAA,IAC1C,aAAa,SACb,EAAA;AACA,MAAO,OAAAJ,cAAA,CAAU,YAAa,CAAA,SAAA,EAAWI,MAAI,CAAA,CAAA;AAAA,KAC/C;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,CAACA,MAAoB,KAAA;AACzC,IACG,IAAA,CAAA,gBAAA,KAAqB,WAAW,gBAAqB,KAAA,QAAA,KACtD,8BAA8B,YAAY,CAAA,IAC1C,aAAa,OACb,EAAA;AACA,MAAO,OAAAJ,cAAA,CAAU,YAAa,CAAA,OAAA,EAASI,MAAI,CAAA,CAAA;AAAA,KAC7C;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,CAAC,IAAoB,KAAA;AAC3C,IAAI,IAAA,WAAA,IAAe,qBAAqB,QAAU,EAAA;AAChD,MAAM,MAAA,SAAA,GAAY,mBAAmB,WAAW,CAAA,CAAA;AAChD,MAAM,MAAA,OAAA,GAAU,iBAAiB,WAAW,CAAA,CAAA;AAE5C,MACE,OAAA,IAAA,CAAK,OAAQ,CAAA,SAAS,CAAK,IAAA,CAAA,IAC3B,IAAK,CAAA,OAAA,CAAQ,OAAO,CAAA,IAAK,CACzB,IAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AAAA,KAExB;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,KAAO,EAAA;AAAA,MACL,YAAA;AAAA,MACA,WAAA;AAAA,KACF;AAAA,IACA,OAAS,EAAA;AAAA,MACP,eAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,KACF;AAAA,GACF,CAAA;AACF,CAAA;AAEgB,SAAA,eAAA,CAAgB,EAAE,IAAA,EAA6B,EAAA;AAC7D,EAAM,MAAA;AAAA,IACJ,OAAS,EAAA;AAAA,MACP,eAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA;AAAA,KACF;AAAA,MACEE,kCAAmB,EAAA,CAAA;AAEvB,EAAM,MAAA,WAAA,GAAoD,CAAC,KAAU,KAAA;AACnE,IAAA,eAAA,CAAgB,OAAO,IAAI,CAAA,CAAA;AAAA,GAC7B,CAAA;AAEA,EAAM,MAAA,aAAA,GAAyD,CAAC,KAAU,KAAA;AACxE,IAAA,QAAQ,KAAM,CAAA,GAAA;AAAA,MACP,KAAA,OAAA,CAAA;AAAA,MACA,KAAA,OAAA;AACH,QAAA,eAAA,CAAgB,OAAO,IAAI,CAAA,CAAA;AAC3B,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,KAAA;AAAA,GAE3B,CAAA;AAEA,EAAM,MAAA,eAAA,GAAwD,CAAC,KAAU,KAAA;AACvE,IAAA,cAAA,CAAe,OAAO,IAAI,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAM,MAAA,gBAAA,GAAyD,CAAC,KAAU,KAAA;AACxE,IAAA,cAAA,CAAe,OAAO,IAAI,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAM,MAAA,QAAA,GAAW,WAAW,IAAI,CAAA,CAAA;AAChC,EAAM,MAAA,YAAA,GAAe,eAAe,IAAI,CAAA,CAAA;AACxC,EAAM,MAAA,WAAA,GAAc,cAAc,IAAI,CAAA,CAAA;AACtC,EAAM,MAAA,aAAA,GAAgB,gBAAgB,IAAI,CAAA,CAAA;AAC1C,EAAM,MAAA,WAAA,GAAc,cAAc,IAAI,CAAA,CAAA;AACtC,EAAM,MAAA,OAAA,GAAU,UAAU,IAAI,CAAA,CAAA;AAC9B,EAAM,MAAA,aAAA,GAAgB,gBAAgB,IAAI,CAAA,CAAA;AAE1C,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,QAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,KACF;AAAA,IACA,QAAU,EAAA;AAAA,MACR,WAAWC,SAAK,CAAA;AAAA,QACd,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,QAChC,CAAC,YAAa,CAAA,aAAa,CAAI,GAAA,WAAA;AAAA,QAC/B,CAAC,YAAa,CAAA,eAAe,CAAI,GAAA,aAAA;AAAA,QACjC,CAAC,YAAa,CAAA,aAAa,CAAI,GAAA,WAAA;AAAA,QAC/B,CAAC,YAAa,CAAA,SAAS,CAAI,GAAA,OAAA;AAAA,QAC3B,CAAC,YAAa,CAAA,eAAe,CAAI,GAAA,aAAA;AAAA,OAClC,CAAA;AAAA,MACD,cACE,EAAA,QAAA,IAAY,WAAe,IAAA,aAAA,IAAiB,eACxC,MACA,GAAA,KAAA,CAAA;AAAA,MACN,eAAiB,EAAA,iBAAA,CAAkB,IAAI,CAAA,GAAI,MAAS,GAAA,KAAA,CAAA;AAAA,KACtD;AAAA,GACF,CAAA;AACF;;;;;;;"}