@salt-ds/lab 1.0.0-alpha.51 → 1.0.0-alpha.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/salt-lab.css +532 -303
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -2
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
- package/dist-cjs/calendar/Calendar.css.js +1 -1
- package/dist-cjs/calendar/Calendar.js +57 -39
- package/dist-cjs/calendar/Calendar.js.map +1 -1
- package/dist-cjs/calendar/CalendarDateGrid.css.js +6 -0
- package/dist-cjs/calendar/CalendarDateGrid.css.js.map +1 -0
- package/dist-cjs/calendar/{internal/CalendarCarousel.js → CalendarDateGrid.js} +39 -16
- package/dist-cjs/calendar/CalendarDateGrid.js.map +1 -0
- package/dist-cjs/calendar/CalendarNavigation.css.js +6 -0
- package/dist-cjs/calendar/CalendarNavigation.js +314 -0
- package/dist-cjs/calendar/CalendarNavigation.js.map +1 -0
- package/dist-cjs/calendar/{internal/CalendarWeekHeader.js → CalendarWeekHeader.js} +6 -5
- package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -0
- package/dist-cjs/calendar/formatDate.js +56 -0
- package/dist-cjs/calendar/formatDate.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-cjs/calendar/internal/CalendarDay.js +45 -33
- package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarMonth.js +3 -2
- package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-cjs/calendar/internal/useFocusManagement.js +7 -4
- package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
- package/dist-cjs/calendar/internal/utils.js +28 -23
- package/dist-cjs/calendar/internal/utils.js.map +1 -1
- package/dist-cjs/calendar/useCalendar.js +90 -43
- package/dist-cjs/calendar/useCalendar.js.map +1 -1
- package/dist-cjs/calendar/useCalendarDay.js +19 -10
- package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
- package/dist-cjs/calendar/useCalendarSelection.js +333 -0
- package/dist-cjs/calendar/useCalendarSelection.js.map +1 -0
- package/dist-cjs/carousel/Carousel.js +5 -5
- package/dist-cjs/carousel/Carousel.js.map +1 -1
- package/dist-cjs/cascading-menu/CascadingMenuItem.js +2 -2
- package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/useMouseHandlers.js.map +1 -1
- package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
- package/dist-cjs/combo-box-deprecated/ComboBox.css.js +1 -1
- package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
- package/dist-cjs/contact-details/ContactMetadata.js +2 -2
- package/dist-cjs/contact-details/ContactMetadata.js.map +1 -1
- package/dist-cjs/content-status/ContentStatus.css.js +1 -1
- package/dist-cjs/date-input/DateInput.css.js +1 -1
- package/dist-cjs/date-input/DateInputRange.js +357 -0
- package/dist-cjs/date-input/DateInputRange.js.map +1 -0
- package/dist-cjs/date-input/DateInputSingle.js +231 -0
- package/dist-cjs/date-input/DateInputSingle.js.map +1 -0
- package/dist-cjs/date-input/utils.js +65 -0
- package/dist-cjs/date-input/utils.js.map +1 -0
- package/dist-cjs/date-picker/DatePicker.js +74 -149
- package/dist-cjs/date-picker/DatePicker.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerActions.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerActions.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerActions.js +106 -0
- package/dist-cjs/date-picker/DatePickerActions.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerContext.js +23 -17
- package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerOverlay.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerOverlay.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlay.js +50 -0
- package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js +105 -0
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerPanel.css.js +1 -1
- package/dist-cjs/date-picker/DatePickerRangeInput.js +119 -0
- package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerRangePanel.js +230 -0
- package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSingleInput.js +98 -0
- package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSinglePanel.js +152 -0
- package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -0
- package/dist-cjs/date-picker/useDatePicker.js +207 -0
- package/dist-cjs/date-picker/useDatePicker.js.map +1 -0
- package/dist-cjs/dropdown/DropdownButton.js +4 -2
- package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
- package/dist-cjs/dropdown/useDropdown.js.map +1 -1
- package/dist-cjs/form-field-legacy/FormLabel.js.map +1 -1
- package/dist-cjs/index.js +53 -10
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/list/List.js.map +1 -1
- package/dist-cjs/menu-button/MenuButtonTrigger.css.js +1 -1
- package/dist-cjs/menu-button/MenuButtonTrigger.js +2 -2
- package/dist-cjs/menu-button/MenuButtonTrigger.js.map +1 -1
- package/dist-cjs/query-input/QueryInput.css.js +1 -1
- package/dist-cjs/query-input/internal/CategoryListItem.js +2 -2
- package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
- package/dist-cjs/query-input/internal/ValueList.js +2 -2
- package/dist-cjs/query-input/internal/ValueList.js.map +1 -1
- package/dist-cjs/search-input/SearchInput.js +2 -1
- package/dist-cjs/search-input/SearchInput.js.map +1 -1
- package/dist-cjs/slider/Slider.css.js +1 -1
- package/dist-cjs/slider/Slider.js +53 -105
- package/dist-cjs/slider/Slider.js.map +1 -1
- package/dist-cjs/slider/internal/SliderContext.js +21 -0
- package/dist-cjs/slider/internal/SliderContext.js.map +1 -0
- package/dist-cjs/slider/internal/SliderMarks.js +31 -0
- package/dist-cjs/slider/internal/SliderMarks.js.map +1 -0
- package/dist-cjs/slider/internal/SliderSelection.js +17 -10
- package/dist-cjs/slider/internal/SliderSelection.js.map +1 -1
- package/dist-cjs/slider/internal/SliderThumb.js +77 -0
- package/dist-cjs/slider/internal/SliderThumb.js.map +1 -0
- package/dist-cjs/slider/internal/SliderTrack.js +91 -0
- package/dist-cjs/slider/internal/SliderTrack.js.map +1 -0
- package/dist-cjs/slider/internal/useKeyDownThumb.js +53 -0
- package/dist-cjs/slider/internal/useKeyDownThumb.js.map +1 -0
- package/dist-cjs/slider/internal/utils.js +78 -116
- package/dist-cjs/slider/internal/utils.js.map +1 -1
- package/dist-cjs/static-list/StaticList.css.js +6 -0
- package/dist-cjs/static-list/StaticList.css.js.map +1 -0
- package/dist-cjs/static-list/StaticList.js +32 -0
- package/dist-cjs/static-list/StaticList.js.map +1 -0
- package/dist-cjs/static-list/StaticListItem.css.js +6 -0
- package/dist-cjs/static-list/StaticListItem.css.js.map +1 -0
- package/dist-cjs/static-list/StaticListItem.js +33 -0
- package/dist-cjs/static-list/StaticListItem.js.map +1 -0
- package/dist-cjs/static-list/StaticListItemContent.css.js +6 -0
- package/dist-cjs/static-list/StaticListItemContent.css.js.map +1 -0
- package/dist-cjs/static-list/StaticListItemContent.js +30 -0
- package/dist-cjs/static-list/StaticListItemContent.js.map +1 -0
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +8 -8
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
- package/dist-cjs/stepper-input/StepperInput.css.js +1 -1
- package/dist-cjs/stepper-input/StepperInput.js +214 -29
- package/dist-cjs/stepper-input/StepperInput.js.map +1 -1
- package/dist-cjs/stepper-input/internal/useActivateWhileMouseDown.js +54 -0
- package/dist-cjs/stepper-input/internal/useActivateWhileMouseDown.js.map +1 -0
- package/dist-cjs/stepper-input/internal/utils.js +43 -0
- package/dist-cjs/stepper-input/internal/utils.js.map +1 -0
- package/dist-cjs/stepper-input/useStepperInput.js +88 -172
- package/dist-cjs/stepper-input/useStepperInput.js.map +1 -1
- package/dist-cjs/tabs/Tab.js +14 -12
- package/dist-cjs/tabs/Tab.js.map +1 -1
- package/dist-cjs/tabs/TabActivationIndicator.css.js +1 -1
- package/dist-cjs/tabs/Tabstrip.js +2 -1
- package/dist-cjs/tabs/Tabstrip.js.map +1 -1
- package/dist-cjs/tabs/useTabs.js.map +1 -1
- package/dist-cjs/tabs-next/OverflowMenu.js +2 -2
- package/dist-cjs/tabs-next/OverflowMenu.js.map +1 -1
- package/dist-cjs/tokenized-input/TokenizedInputBase.js +3 -3
- package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/InputPill.js +2 -2
- package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +3 -3
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
- package/dist-cjs/tokenized-input-next/internal/InputPill.js +2 -2
- package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +2 -2
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -2
- package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
- package/dist-es/calendar/Calendar.css.js +1 -1
- package/dist-es/calendar/Calendar.js +60 -42
- package/dist-es/calendar/Calendar.js.map +1 -1
- package/dist-es/calendar/CalendarDateGrid.css.js +4 -0
- package/dist-es/calendar/CalendarDateGrid.css.js.map +1 -0
- package/dist-es/calendar/{internal/CalendarCarousel.js → CalendarDateGrid.js} +39 -16
- package/dist-es/calendar/CalendarDateGrid.js.map +1 -0
- package/dist-es/calendar/CalendarNavigation.css.js +4 -0
- package/dist-es/calendar/CalendarNavigation.js +310 -0
- package/dist-es/calendar/CalendarNavigation.js.map +1 -0
- package/dist-es/calendar/{internal/CalendarWeekHeader.js → CalendarWeekHeader.js} +6 -5
- package/dist-es/calendar/CalendarWeekHeader.js.map +1 -0
- package/dist-es/calendar/formatDate.js +51 -0
- package/dist-es/calendar/formatDate.js.map +1 -0
- package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-es/calendar/internal/CalendarDay.js +45 -33
- package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
- package/dist-es/calendar/internal/CalendarMonth.js +3 -2
- package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-es/calendar/internal/useFocusManagement.js +7 -4
- package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
- package/dist-es/calendar/internal/utils.js +29 -23
- package/dist-es/calendar/internal/utils.js.map +1 -1
- package/dist-es/calendar/useCalendar.js +92 -45
- package/dist-es/calendar/useCalendar.js.map +1 -1
- package/dist-es/calendar/useCalendarDay.js +20 -11
- package/dist-es/calendar/useCalendarDay.js.map +1 -1
- package/dist-es/calendar/useCalendarSelection.js +323 -0
- package/dist-es/calendar/useCalendarSelection.js.map +1 -0
- package/dist-es/carousel/Carousel.js +6 -6
- package/dist-es/carousel/Carousel.js.map +1 -1
- package/dist-es/cascading-menu/CascadingMenuItem.js +3 -3
- package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
- package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
- package/dist-es/color-chooser/ColorChooser.js.map +1 -1
- package/dist-es/combo-box-deprecated/ComboBox.css.js +1 -1
- package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
- package/dist-es/contact-details/ContactMetadata.js +3 -3
- package/dist-es/contact-details/ContactMetadata.js.map +1 -1
- package/dist-es/content-status/ContentStatus.css.js +1 -1
- package/dist-es/date-input/DateInput.css.js +1 -1
- package/dist-es/date-input/DateInputRange.js +353 -0
- package/dist-es/date-input/DateInputRange.js.map +1 -0
- package/dist-es/date-input/DateInputSingle.js +227 -0
- package/dist-es/date-input/DateInputSingle.js.map +1 -0
- package/dist-es/date-input/utils.js +57 -0
- package/dist-es/date-input/utils.js.map +1 -0
- package/dist-es/date-picker/DatePicker.js +77 -153
- package/dist-es/date-picker/DatePicker.js.map +1 -1
- package/dist-es/date-picker/DatePickerActions.css.js +4 -0
- package/dist-es/date-picker/DatePickerActions.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerActions.js +102 -0
- package/dist-es/date-picker/DatePickerActions.js.map +1 -0
- package/dist-es/date-picker/DatePickerContext.js +22 -17
- package/dist-es/date-picker/DatePickerContext.js.map +1 -1
- package/dist-es/date-picker/DatePickerOverlay.css.js +4 -0
- package/dist-es/date-picker/DatePickerOverlay.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlay.js +46 -0
- package/dist-es/date-picker/DatePickerOverlay.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlayProvider.js +100 -0
- package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -0
- package/dist-es/date-picker/DatePickerPanel.css.js +1 -1
- package/dist-es/date-picker/DatePickerRangeInput.js +115 -0
- package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -0
- package/dist-es/date-picker/DatePickerRangePanel.js +222 -0
- package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerSingleInput.js +94 -0
- package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -0
- package/dist-es/date-picker/DatePickerSinglePanel.js +144 -0
- package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -0
- package/dist-es/date-picker/useDatePicker.js +203 -0
- package/dist-es/date-picker/useDatePicker.js.map +1 -0
- package/dist-es/dropdown/DropdownButton.js +6 -4
- package/dist-es/dropdown/DropdownButton.js.map +1 -1
- package/dist-es/dropdown/useDropdown.js.map +1 -1
- package/dist-es/form-field-legacy/FormLabel.js.map +1 -1
- package/dist-es/index.js +19 -3
- package/dist-es/index.js.map +1 -1
- package/dist-es/list/List.js.map +1 -1
- package/dist-es/menu-button/MenuButtonTrigger.css.js +1 -1
- package/dist-es/menu-button/MenuButtonTrigger.js +3 -3
- package/dist-es/menu-button/MenuButtonTrigger.js.map +1 -1
- package/dist-es/query-input/QueryInput.css.js +1 -1
- package/dist-es/query-input/internal/CategoryListItem.js +3 -3
- package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
- package/dist-es/query-input/internal/ValueList.js +3 -3
- package/dist-es/query-input/internal/ValueList.js.map +1 -1
- package/dist-es/search-input/SearchInput.js +3 -2
- package/dist-es/search-input/SearchInput.js.map +1 -1
- package/dist-es/slider/Slider.css.js +1 -1
- package/dist-es/slider/Slider.js +55 -107
- package/dist-es/slider/Slider.js.map +1 -1
- package/dist-es/slider/internal/SliderContext.js +16 -0
- package/dist-es/slider/internal/SliderContext.js.map +1 -0
- package/dist-es/slider/internal/SliderMarks.js +27 -0
- package/dist-es/slider/internal/SliderMarks.js.map +1 -0
- package/dist-es/slider/internal/SliderSelection.js +17 -10
- package/dist-es/slider/internal/SliderSelection.js.map +1 -1
- package/dist-es/slider/internal/SliderThumb.js +73 -0
- package/dist-es/slider/internal/SliderThumb.js.map +1 -0
- package/dist-es/slider/internal/SliderTrack.js +87 -0
- package/dist-es/slider/internal/SliderTrack.js.map +1 -0
- package/dist-es/slider/internal/useKeyDownThumb.js +49 -0
- package/dist-es/slider/internal/useKeyDownThumb.js.map +1 -0
- package/dist-es/slider/internal/utils.js +70 -111
- package/dist-es/slider/internal/utils.js.map +1 -1
- package/dist-es/static-list/StaticList.css.js +4 -0
- package/dist-es/static-list/StaticList.css.js.map +1 -0
- package/dist-es/static-list/StaticList.js +28 -0
- package/dist-es/static-list/StaticList.js.map +1 -0
- package/dist-es/static-list/StaticListItem.css.js +4 -0
- package/dist-es/static-list/StaticListItem.css.js.map +1 -0
- package/dist-es/static-list/StaticListItem.js +29 -0
- package/dist-es/static-list/StaticListItem.js.map +1 -0
- package/dist-es/static-list/StaticListItemContent.css.js +4 -0
- package/dist-es/static-list/StaticListItemContent.css.js.map +1 -0
- package/dist-es/static-list/StaticListItemContent.js +26 -0
- package/dist-es/static-list/StaticListItemContent.js.map +1 -0
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +9 -9
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
- package/dist-es/stepper-input/StepperInput.css.js +1 -1
- package/dist-es/stepper-input/StepperInput.js +216 -31
- package/dist-es/stepper-input/StepperInput.js.map +1 -1
- package/dist-es/stepper-input/internal/useActivateWhileMouseDown.js +50 -0
- package/dist-es/stepper-input/internal/useActivateWhileMouseDown.js.map +1 -0
- package/dist-es/stepper-input/internal/utils.js +32 -0
- package/dist-es/stepper-input/internal/utils.js.map +1 -0
- package/dist-es/stepper-input/useStepperInput.js +88 -172
- package/dist-es/stepper-input/useStepperInput.js.map +1 -1
- package/dist-es/tabs/Tab.js +15 -13
- package/dist-es/tabs/Tab.js.map +1 -1
- package/dist-es/tabs/TabActivationIndicator.css.js +1 -1
- package/dist-es/tabs/Tabstrip.js +4 -3
- package/dist-es/tabs/Tabstrip.js.map +1 -1
- package/dist-es/tabs/useTabs.js.map +1 -1
- package/dist-es/tabs-next/OverflowMenu.js +3 -3
- package/dist-es/tabs-next/OverflowMenu.js.map +1 -1
- package/dist-es/tokenized-input/TokenizedInputBase.js +3 -3
- package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
- package/dist-es/tokenized-input/internal/InputPill.js +2 -2
- package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
- package/dist-es/tokenized-input-next/TokenizedInputNext.js +3 -3
- package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
- package/dist-es/tokenized-input-next/internal/InputPill.js +2 -2
- package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowPanel.js +3 -3
- package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-types/calendar/Calendar.d.ts +55 -11
- package/dist-types/calendar/CalendarDateGrid.d.ts +10 -0
- package/dist-types/calendar/CalendarNavigation.d.ts +57 -0
- package/dist-types/calendar/CalendarWeekHeader.d.ts +5 -0
- package/dist-types/calendar/formatDate.d.ts +14 -0
- package/dist-types/calendar/index.d.ts +5 -1
- package/dist-types/calendar/internal/CalendarDay.d.ts +2 -1
- package/dist-types/calendar/internal/CalendarMonth.d.ts +9 -1
- package/dist-types/calendar/internal/useFocusManagement.d.ts +2 -1
- package/dist-types/calendar/internal/utils.d.ts +7 -8
- package/dist-types/calendar/useCalendar.d.ts +100 -16
- package/dist-types/calendar/useCalendarDay.d.ts +38 -0
- package/dist-types/calendar/useCalendarSelection.d.ts +182 -0
- package/dist-types/date-input/DateInputRange.d.ts +150 -0
- package/dist-types/date-input/DateInputSingle.d.ts +117 -0
- package/dist-types/date-input/index.d.ts +3 -1
- package/dist-types/date-input/utils.d.ts +43 -0
- package/dist-types/date-picker/DatePicker.d.ts +20 -62
- package/dist-types/date-picker/DatePickerActions.d.ts +80 -0
- package/dist-types/date-picker/DatePickerContext.d.ts +180 -17
- package/dist-types/date-picker/DatePickerOverlay.d.ts +11 -0
- package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +67 -0
- package/dist-types/date-picker/DatePickerRangeInput.d.ts +7 -0
- package/dist-types/date-picker/DatePickerRangePanel.d.ts +80 -0
- package/dist-types/date-picker/DatePickerSingleInput.d.ts +7 -0
- package/dist-types/date-picker/DatePickerSinglePanel.d.ts +50 -0
- package/dist-types/date-picker/index.d.ts +7 -0
- package/dist-types/date-picker/useDatePicker.d.ts +112 -0
- package/dist-types/index.d.ts +1 -0
- package/dist-types/slider/Slider.d.ts +23 -10
- package/dist-types/slider/internal/SliderContext.d.ts +11 -0
- package/dist-types/slider/internal/SliderMarks.d.ts +7 -0
- package/dist-types/slider/internal/SliderSelection.d.ts +3 -3
- package/dist-types/slider/internal/SliderThumb.d.ts +8 -0
- package/dist-types/slider/internal/SliderTrack.d.ts +4 -0
- package/dist-types/slider/internal/index.d.ts +3 -0
- package/dist-types/slider/internal/useKeyDownThumb.d.ts +2 -0
- package/dist-types/slider/internal/utils.d.ts +18 -10
- package/dist-types/slider/types.d.ts +3 -1
- package/dist-types/static-list/StaticList.d.ts +8 -0
- package/dist-types/static-list/StaticListItem.d.ts +4 -0
- package/dist-types/static-list/StaticListItemContent.d.ts +8 -0
- package/dist-types/static-list/index.d.ts +3 -0
- package/dist-types/stepper-input/StepperInput.d.ts +66 -19
- package/dist-types/stepper-input/internal/useActivateWhileMouseDown.d.ts +5 -0
- package/dist-types/stepper-input/internal/utils.d.ts +8 -0
- package/dist-types/stepper-input/useStepperInput.d.ts +21 -8
- package/package.json +3 -3
- package/dist-cjs/calendar/internal/CalendarCarousel.css.js +0 -6
- package/dist-cjs/calendar/internal/CalendarCarousel.css.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarCarousel.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarNavigation.css.js +0 -6
- package/dist-cjs/calendar/internal/CalendarNavigation.js +0 -218
- package/dist-cjs/calendar/internal/CalendarNavigation.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarWeekHeader.js.map +0 -1
- package/dist-cjs/calendar/useSelection.js +0 -249
- package/dist-cjs/calendar/useSelection.js.map +0 -1
- package/dist-cjs/date-input/DateInput.js +0 -283
- package/dist-cjs/date-input/DateInput.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerPanel.js +0 -155
- package/dist-cjs/date-picker/DatePickerPanel.js.map +0 -1
- package/dist-cjs/slider/internal/SliderHandle.js +0 -44
- package/dist-cjs/slider/internal/SliderHandle.js.map +0 -1
- package/dist-cjs/slider/internal/SliderMarkLabels.js +0 -45
- package/dist-cjs/slider/internal/SliderMarkLabels.js.map +0 -1
- package/dist-cjs/slider/internal/SliderRail.js +0 -25
- package/dist-cjs/slider/internal/SliderRail.js.map +0 -1
- package/dist-cjs/slider/internal/SliderRailMarks.js +0 -48
- package/dist-cjs/slider/internal/SliderRailMarks.js.map +0 -1
- package/dist-cjs/slider/internal/styles.js +0 -99
- package/dist-cjs/slider/internal/styles.js.map +0 -1
- package/dist-cjs/slider/internal/useSliderKeyDown.js +0 -50
- package/dist-cjs/slider/internal/useSliderKeyDown.js.map +0 -1
- package/dist-cjs/slider/internal/useSliderMouseDown.js +0 -96
- package/dist-cjs/slider/internal/useSliderMouseDown.js.map +0 -1
- package/dist-cjs/stepper-input/internal/useSpinner.js +0 -33
- package/dist-cjs/stepper-input/internal/useSpinner.js.map +0 -1
- package/dist-es/calendar/internal/CalendarCarousel.css.js +0 -4
- package/dist-es/calendar/internal/CalendarCarousel.css.js.map +0 -1
- package/dist-es/calendar/internal/CalendarCarousel.js.map +0 -1
- package/dist-es/calendar/internal/CalendarNavigation.css.js +0 -4
- package/dist-es/calendar/internal/CalendarNavigation.js +0 -214
- package/dist-es/calendar/internal/CalendarNavigation.js.map +0 -1
- package/dist-es/calendar/internal/CalendarWeekHeader.js.map +0 -1
- package/dist-es/calendar/useSelection.js +0 -242
- package/dist-es/calendar/useSelection.js.map +0 -1
- package/dist-es/date-input/DateInput.js +0 -279
- package/dist-es/date-input/DateInput.js.map +0 -1
- package/dist-es/date-picker/DatePickerPanel.js +0 -151
- package/dist-es/date-picker/DatePickerPanel.js.map +0 -1
- package/dist-es/slider/internal/SliderHandle.js +0 -40
- package/dist-es/slider/internal/SliderHandle.js.map +0 -1
- package/dist-es/slider/internal/SliderMarkLabels.js +0 -41
- package/dist-es/slider/internal/SliderMarkLabels.js.map +0 -1
- package/dist-es/slider/internal/SliderRail.js +0 -21
- package/dist-es/slider/internal/SliderRail.js.map +0 -1
- package/dist-es/slider/internal/SliderRailMarks.js +0 -44
- package/dist-es/slider/internal/SliderRailMarks.js.map +0 -1
- package/dist-es/slider/internal/styles.js +0 -91
- package/dist-es/slider/internal/styles.js.map +0 -1
- package/dist-es/slider/internal/useSliderKeyDown.js +0 -46
- package/dist-es/slider/internal/useSliderKeyDown.js.map +0 -1
- package/dist-es/slider/internal/useSliderMouseDown.js +0 -92
- package/dist-es/slider/internal/useSliderMouseDown.js.map +0 -1
- package/dist-es/stepper-input/internal/useSpinner.js +0 -29
- package/dist-es/stepper-input/internal/useSpinner.js.map +0 -1
- package/dist-types/calendar/internal/CalendarCarousel.d.ts +0 -3
- package/dist-types/calendar/internal/CalendarNavigation.d.ts +0 -16
- package/dist-types/calendar/internal/CalendarWeekHeader.d.ts +0 -5
- package/dist-types/calendar/useSelection.d.ts +0 -78
- package/dist-types/date-input/DateInput.d.ts +0 -60
- package/dist-types/date-picker/DatePickerPanel.d.ts +0 -10
- package/dist-types/slider/internal/SliderHandle.d.ts +0 -11
- package/dist-types/slider/internal/SliderMarkLabels.d.ts +0 -7
- package/dist-types/slider/internal/SliderRail.d.ts +0 -1
- package/dist-types/slider/internal/SliderRailMarks.d.ts +0 -12
- package/dist-types/slider/internal/styles.d.ts +0 -10
- package/dist-types/slider/internal/useSliderKeyDown.d.ts +0 -4
- package/dist-types/slider/internal/useSliderMouseDown.d.ts +0 -4
- package/dist-types/stepper-input/internal/useSpinner.d.ts +0 -5
- /package/dist-cjs/calendar/{internal/CalendarNavigation.css.js.map → CalendarNavigation.css.js.map} +0 -0
- /package/dist-cjs/calendar/{internal/CalendarWeekHeader.css.js → CalendarWeekHeader.css.js} +0 -0
- /package/dist-cjs/calendar/{internal/CalendarWeekHeader.css.js.map → CalendarWeekHeader.css.js.map} +0 -0
- /package/dist-es/calendar/{internal/CalendarNavigation.css.js.map → CalendarNavigation.css.js.map} +0 -0
- /package/dist-es/calendar/{internal/CalendarWeekHeader.css.js → CalendarWeekHeader.css.js} +0 -0
- /package/dist-es/calendar/{internal/CalendarWeekHeader.css.js.map → CalendarWeekHeader.css.js.map} +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { today,
|
|
1
|
+
import { getLocalTimeZone, today, startOfMonth, endOfMonth, endOfYear, startOfYear, isSameMonth, isSameDay } from '@internationalized/date';
|
|
2
2
|
import { useControlled } from '@salt-ds/core';
|
|
3
|
-
import { useCallback, useState, useEffect } from 'react';
|
|
4
|
-
import {
|
|
3
|
+
import { useCallback, useState, useEffect, useMemo } from 'react';
|
|
4
|
+
import { getCurrentLocale } from './formatDate.js';
|
|
5
|
+
import { generateDatesForMonth } from './internal/utils.js';
|
|
6
|
+
import { useCalendarSelection, isDateRangeSelection } from './useCalendarSelection.js';
|
|
5
7
|
|
|
6
8
|
const defaultIsDayUnselectable = () => false;
|
|
7
9
|
const defaultIsDayHighlighted = () => false;
|
|
@@ -11,16 +13,17 @@ function useCalendar(props) {
|
|
|
11
13
|
selectedDate,
|
|
12
14
|
defaultSelectedDate,
|
|
13
15
|
visibleMonth: visibleMonthProp,
|
|
14
|
-
hideYearDropdown,
|
|
15
16
|
hideOutOfRangeDates,
|
|
16
|
-
|
|
17
|
+
timeZone = getLocalTimeZone(),
|
|
18
|
+
locale = getCurrentLocale(),
|
|
19
|
+
defaultVisibleMonth = today(timeZone),
|
|
17
20
|
onSelectedDateChange,
|
|
18
21
|
onVisibleMonthChange,
|
|
19
22
|
isDayUnselectable = defaultIsDayUnselectable,
|
|
20
23
|
isDayHighlighted = defaultIsDayHighlighted,
|
|
21
24
|
isDayDisabled = defaultIsDayDisabled,
|
|
22
|
-
minDate
|
|
23
|
-
maxDate
|
|
25
|
+
minDate,
|
|
26
|
+
maxDate,
|
|
24
27
|
selectionVariant,
|
|
25
28
|
onHoveredDateChange,
|
|
26
29
|
hoveredDate
|
|
@@ -33,60 +36,76 @@ function useCalendar(props) {
|
|
|
33
36
|
});
|
|
34
37
|
const isOutsideAllowedDates = useCallback(
|
|
35
38
|
(date) => {
|
|
36
|
-
return minDate
|
|
39
|
+
return minDate && date.compare(minDate) < 0 || maxDate && date.compare(maxDate) > 0;
|
|
37
40
|
},
|
|
38
41
|
[maxDate, minDate]
|
|
39
42
|
);
|
|
40
|
-
const isOutsideAllowedMonths = (
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
const isOutsideAllowedMonths = useCallback(
|
|
44
|
+
(date) => {
|
|
45
|
+
return minDate && endOfMonth(date).compare(minDate) < 0 || maxDate && startOfMonth(date).compare(maxDate) > 0;
|
|
46
|
+
},
|
|
47
|
+
[minDate, maxDate]
|
|
48
|
+
);
|
|
49
|
+
const isOutsideAllowedYears = useCallback(
|
|
50
|
+
(date) => {
|
|
51
|
+
return minDate && endOfYear(date).compare(minDate) < 0 || maxDate && startOfYear(date).compare(maxDate) > 0;
|
|
52
|
+
},
|
|
53
|
+
[minDate, maxDate]
|
|
54
|
+
);
|
|
46
55
|
const isDaySelectable = useCallback(
|
|
47
56
|
(date) => !(date && (isDayUnselectable(date) || isDayDisabled(date) || isOutsideAllowedDates(date))),
|
|
48
57
|
[isDayUnselectable, isDayDisabled, isOutsideAllowedDates]
|
|
49
58
|
);
|
|
50
|
-
const selectionManager =
|
|
59
|
+
const selectionManager = useCalendarSelection({
|
|
51
60
|
defaultSelectedDate,
|
|
52
61
|
selectedDate,
|
|
53
62
|
onSelectedDateChange,
|
|
54
|
-
startDateOffset: props.selectionVariant === "offset" ? props.startDateOffset :
|
|
55
|
-
endDateOffset: props.selectionVariant === "offset" ? props.endDateOffset :
|
|
63
|
+
startDateOffset: props.selectionVariant === "offset" ? props.startDateOffset : void 0,
|
|
64
|
+
endDateOffset: props.selectionVariant === "offset" ? props.endDateOffset : void 0,
|
|
56
65
|
isDaySelectable,
|
|
57
66
|
selectionVariant,
|
|
58
67
|
onHoveredDateChange,
|
|
59
68
|
hoveredDate
|
|
60
69
|
});
|
|
61
70
|
const [calendarFocused, setCalendarFocused] = useState(false);
|
|
62
|
-
const isInVisibleMonth = (
|
|
63
|
-
|
|
71
|
+
const isInVisibleMonth = useCallback(
|
|
72
|
+
(date) => date != null && isSameMonth(date, visibleMonth),
|
|
73
|
+
[visibleMonth]
|
|
74
|
+
);
|
|
75
|
+
const getInitialFocusedDate = useCallback(() => {
|
|
64
76
|
const selectedDate2 = selectionManager.state.selectedDate;
|
|
65
|
-
if ((selectionVariant === "range" || selectionVariant === "offset") &&
|
|
77
|
+
if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate2)) {
|
|
66
78
|
if (isInVisibleMonth(selectedDate2 == null ? void 0 : selectedDate2.startDate)) {
|
|
67
79
|
return selectedDate2.startDate;
|
|
68
80
|
}
|
|
69
81
|
if (isInVisibleMonth(selectedDate2 == null ? void 0 : selectedDate2.endDate)) {
|
|
70
82
|
return selectedDate2.endDate;
|
|
71
83
|
}
|
|
72
|
-
|
|
73
|
-
return startOfMonth(visibleMonth);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (selectionVariant === "multiselect" && Array.isArray(selectedDate2)) {
|
|
84
|
+
} else if (selectionVariant === "multiselect" && Array.isArray(selectedDate2)) {
|
|
77
85
|
const selectionInMonth = selectedDate2.filter((day) => isInVisibleMonth(day)).sort((a, b) => a.compare(b));
|
|
78
86
|
if (selectionInMonth.length > 0) {
|
|
79
87
|
return selectionInMonth[0];
|
|
80
88
|
}
|
|
81
|
-
}
|
|
82
|
-
if (selectionVariant === "default" && !isRangeOrOffsetSelectionWithStartDate(selectedDate2) && !Array.isArray(selectedDate2) && isInVisibleMonth(selectedDate2)) {
|
|
89
|
+
} else if (selectionVariant === "single" && !isDateRangeSelection(selectedDate2) && !Array.isArray(selectedDate2) && isInVisibleMonth(selectedDate2)) {
|
|
83
90
|
return selectedDate2;
|
|
84
91
|
}
|
|
85
|
-
if (isInVisibleMonth(today(
|
|
86
|
-
return today(
|
|
92
|
+
if (isDaySelectable(today(timeZone)) && isInVisibleMonth(today(timeZone))) {
|
|
93
|
+
return today(timeZone);
|
|
94
|
+
}
|
|
95
|
+
const firstSelectableDate = generateDatesForMonth(visibleMonth).find(
|
|
96
|
+
(visibleDay) => isDaySelectable(visibleDay)
|
|
97
|
+
);
|
|
98
|
+
if (firstSelectableDate) {
|
|
99
|
+
return firstSelectableDate;
|
|
87
100
|
}
|
|
88
|
-
return
|
|
89
|
-
}
|
|
101
|
+
return null;
|
|
102
|
+
}, [
|
|
103
|
+
isInVisibleMonth,
|
|
104
|
+
selectionVariant,
|
|
105
|
+
selectionManager.state.selectedDate,
|
|
106
|
+
timeZone,
|
|
107
|
+
visibleMonth
|
|
108
|
+
]);
|
|
90
109
|
const [focusedDate, setFocusedDateState] = useState(
|
|
91
110
|
getInitialFocusedDate
|
|
92
111
|
);
|
|
@@ -105,11 +124,11 @@ function useCalendar(props) {
|
|
|
105
124
|
setVisibleMonthState(newVisibleMonth);
|
|
106
125
|
onVisibleMonthChange == null ? void 0 : onVisibleMonthChange(event, newVisibleMonth);
|
|
107
126
|
},
|
|
108
|
-
[onVisibleMonthChange
|
|
127
|
+
[onVisibleMonthChange]
|
|
109
128
|
);
|
|
110
129
|
const setFocusedDate = useCallback(
|
|
111
130
|
(event, date) => {
|
|
112
|
-
if (isSameDay(date, focusedDate) || isOutsideAllowedDates(date))
|
|
131
|
+
if (!focusedDate || isSameDay(date, focusedDate) || isOutsideAllowedDates(date))
|
|
113
132
|
return;
|
|
114
133
|
setFocusedDateState(date);
|
|
115
134
|
const shouldTransition = !isDayVisible(date) && isDaySelectable(date) && !isOutsideAllowedDates(date);
|
|
@@ -126,12 +145,42 @@ function useCalendar(props) {
|
|
|
126
145
|
]
|
|
127
146
|
);
|
|
128
147
|
useEffect(() => {
|
|
129
|
-
if (!isDayVisible(focusedDate)) {
|
|
130
|
-
|
|
148
|
+
if (visibleMonth && focusedDate && !isDayVisible(focusedDate)) {
|
|
149
|
+
const focusableDate = getInitialFocusedDate();
|
|
150
|
+
if (focusableDate) {
|
|
151
|
+
setFocusedDateState(focusableDate);
|
|
152
|
+
}
|
|
131
153
|
}
|
|
132
|
-
}, [isDayVisible, focusedDate, visibleMonth]);
|
|
133
|
-
return
|
|
134
|
-
|
|
154
|
+
}, [isDayVisible, focusedDate, getInitialFocusedDate, visibleMonth]);
|
|
155
|
+
return useMemo(
|
|
156
|
+
() => ({
|
|
157
|
+
state: {
|
|
158
|
+
visibleMonth,
|
|
159
|
+
focusedDate,
|
|
160
|
+
minDate,
|
|
161
|
+
maxDate,
|
|
162
|
+
selectionVariant,
|
|
163
|
+
hideOutOfRangeDates,
|
|
164
|
+
calendarFocused,
|
|
165
|
+
timeZone,
|
|
166
|
+
locale,
|
|
167
|
+
...selectionManager.state
|
|
168
|
+
},
|
|
169
|
+
helpers: {
|
|
170
|
+
setVisibleMonth,
|
|
171
|
+
setFocusedDate,
|
|
172
|
+
setCalendarFocused,
|
|
173
|
+
isDayUnselectable,
|
|
174
|
+
isDayHighlighted,
|
|
175
|
+
isDayDisabled,
|
|
176
|
+
isDayVisible,
|
|
177
|
+
isOutsideAllowedDates,
|
|
178
|
+
isOutsideAllowedMonths,
|
|
179
|
+
isOutsideAllowedYears,
|
|
180
|
+
...selectionManager.helpers
|
|
181
|
+
}
|
|
182
|
+
}),
|
|
183
|
+
[
|
|
135
184
|
visibleMonth,
|
|
136
185
|
focusedDate,
|
|
137
186
|
minDate,
|
|
@@ -139,12 +188,10 @@ function useCalendar(props) {
|
|
|
139
188
|
selectionVariant,
|
|
140
189
|
hideOutOfRangeDates,
|
|
141
190
|
calendarFocused,
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
helpers: {
|
|
191
|
+
timeZone,
|
|
192
|
+
locale,
|
|
145
193
|
setVisibleMonth,
|
|
146
194
|
setFocusedDate,
|
|
147
|
-
setCalendarFocused,
|
|
148
195
|
isDayUnselectable,
|
|
149
196
|
isDayHighlighted,
|
|
150
197
|
isDayDisabled,
|
|
@@ -152,9 +199,9 @@ function useCalendar(props) {
|
|
|
152
199
|
isOutsideAllowedDates,
|
|
153
200
|
isOutsideAllowedMonths,
|
|
154
201
|
isOutsideAllowedYears,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
202
|
+
selectionManager
|
|
203
|
+
]
|
|
204
|
+
);
|
|
158
205
|
}
|
|
159
206
|
|
|
160
207
|
export { useCalendar };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalendar.js","sources":["../src/calendar/useCalendar.ts"],"sourcesContent":["import {\n type DateValue,\n endOfMonth,\n endOfYear,\n getLocalTimeZone,\n isSameDay,\n isSameMonth,\n startOfMonth,\n startOfYear,\n today,\n} from \"@internationalized/date\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { type SyntheticEvent, useCallback, useEffect, useState } from \"react\";\nimport {\n type UseMultiSelectionCalendarProps,\n type UseOffsetSelectionCalendarProps,\n type UseRangeSelectionCalendarProps,\n type UseSingleSelectionCalendarProps,\n isRangeOrOffsetSelectionWithStartDate,\n useSelectionCalendar,\n type useSelectionCalendarProps,\n} from \"./useSelection\";\n\ninterface BaseUseCalendarProps {\n defaultVisibleMonth?: DateValue;\n onVisibleMonthChange?: (\n event: SyntheticEvent,\n visibleMonth: DateValue,\n ) => void;\n isDayUnselectable?: (date: DateValue) => string | false | undefined;\n isDayHighlighted?: (date: DateValue) => string | false | undefined;\n isDayDisabled?: (date: DateValue) => boolean;\n visibleMonth?: DateValue;\n hideOutOfRangeDates?: boolean;\n hideYearDropdown?: boolean;\n minDate?: DateValue;\n maxDate?: DateValue;\n}\n\nexport type useCalendarProps = (\n | Omit<UseSingleSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseMultiSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseRangeSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseOffsetSelectionCalendarProps, \"isDaySelectable\">\n) &\n BaseUseCalendarProps;\n\nconst defaultIsDayUnselectable = (): string | false => false;\nconst defaultIsDayHighlighted = (): string | false => false;\nconst defaultIsDayDisabled = (): false => false;\n\nexport function useCalendar(props: useCalendarProps) {\n const {\n selectedDate,\n defaultSelectedDate,\n visibleMonth: visibleMonthProp,\n hideYearDropdown,\n hideOutOfRangeDates,\n defaultVisibleMonth = today(getLocalTimeZone()),\n onSelectedDateChange,\n onVisibleMonthChange,\n isDayUnselectable = defaultIsDayUnselectable,\n isDayHighlighted = defaultIsDayHighlighted,\n isDayDisabled = defaultIsDayDisabled,\n minDate = hideYearDropdown\n ? startOfYear(today(getLocalTimeZone()))\n : undefined,\n maxDate = hideYearDropdown\n ? endOfYear(today(getLocalTimeZone()))\n : undefined,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const [visibleMonth, setVisibleMonthState] = useControlled({\n controlled: visibleMonthProp ? startOfMonth(visibleMonthProp) : undefined,\n default: startOfMonth(defaultVisibleMonth),\n name: \"Calendar\",\n state: \"visibleMonth\",\n });\n\n const isOutsideAllowedDates = useCallback(\n (date: DateValue) => {\n return (\n (minDate != null && date.compare(minDate) < 0) ||\n (maxDate != null && date.compare(maxDate) > 0)\n );\n },\n [maxDate, minDate],\n );\n\n const isOutsideAllowedMonths = (date: DateValue) => {\n return (\n (minDate != null && endOfMonth(date).compare(minDate) < 0) ||\n (maxDate != null && startOfMonth(date).compare(maxDate) > 0)\n );\n };\n\n const isOutsideAllowedYears = (date: DateValue) => {\n return (\n (minDate != null && endOfYear(date).compare(minDate) < 0) ||\n (maxDate != null && startOfYear(date).compare(maxDate) > 0)\n );\n };\n\n const isDaySelectable = useCallback(\n (date?: DateValue) =>\n !(\n date &&\n (isDayUnselectable(date) ||\n isDayDisabled(date) ||\n isOutsideAllowedDates(date))\n ),\n [isDayUnselectable, isDayDisabled, isOutsideAllowedDates],\n );\n\n const selectionManager = useSelectionCalendar({\n defaultSelectedDate: defaultSelectedDate,\n selectedDate,\n onSelectedDateChange,\n startDateOffset:\n props.selectionVariant === \"offset\"\n ? props.startDateOffset\n : (date) => date,\n endDateOffset:\n props.selectionVariant === \"offset\"\n ? props.endDateOffset\n : (date) => date,\n isDaySelectable,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n } as useSelectionCalendarProps);\n\n const [calendarFocused, setCalendarFocused] = useState(false);\n\n const isInVisibleMonth = (\n date: DateValue | undefined | null,\n ): date is DateValue => date != null && isSameMonth(date, visibleMonth);\n\n const getInitialFocusedDate = (): DateValue => {\n const selectedDate = selectionManager.state.selectedDate;\n // Case range or offset\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionWithStartDate(selectedDate)\n ) {\n if (isInVisibleMonth(selectedDate?.startDate)) {\n return selectedDate.startDate;\n }\n if (isInVisibleMonth(selectedDate?.endDate)) {\n return selectedDate.endDate;\n }\n if (\n selectedDate?.startDate &&\n selectedDate?.endDate &&\n visibleMonth.compare(selectedDate.startDate) < 0 &&\n visibleMonth.compare(selectedDate.endDate) > 0\n ) {\n return startOfMonth(visibleMonth);\n }\n }\n // Case multiselect\n if (selectionVariant === \"multiselect\" && Array.isArray(selectedDate)) {\n // return first selected day in visible month\n const selectionInMonth = selectedDate\n .filter((day) => isInVisibleMonth(day))\n .sort((a, b) => a.compare(b));\n if (selectionInMonth.length > 0) {\n return selectionInMonth[0];\n }\n }\n // Case single select\n if (\n selectionVariant === \"default\" &&\n !isRangeOrOffsetSelectionWithStartDate(selectedDate) &&\n !Array.isArray(selectedDate) &&\n isInVisibleMonth(selectedDate)\n ) {\n return selectedDate;\n }\n // default\n if (isInVisibleMonth(today(getLocalTimeZone()))) {\n return today(getLocalTimeZone());\n }\n return startOfMonth(visibleMonth);\n };\n\n const [focusedDate, setFocusedDateState] = useState<DateValue>(\n getInitialFocusedDate,\n );\n\n const isDayVisible = useCallback(\n (date: DateValue) => {\n const startInsideDays = startOfMonth(visibleMonth);\n\n if (date.compare(startInsideDays) < 0) return false;\n\n const endInsideDays = endOfMonth(visibleMonth);\n\n return !(date.compare(endInsideDays) > 0);\n },\n [visibleMonth],\n );\n\n const setVisibleMonth = useCallback(\n (event: SyntheticEvent, newVisibleMonth: DateValue) => {\n setVisibleMonthState(newVisibleMonth);\n onVisibleMonthChange?.(event, newVisibleMonth);\n },\n [onVisibleMonthChange, setVisibleMonthState],\n );\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent, date: DateValue) => {\n if (isSameDay(date, focusedDate) || isOutsideAllowedDates(date)) return;\n\n setFocusedDateState(date);\n\n const shouldTransition =\n !isDayVisible(date) &&\n isDaySelectable(date) &&\n !isOutsideAllowedDates(date);\n if (shouldTransition) {\n setVisibleMonth(event, startOfMonth(date));\n }\n },\n [\n focusedDate,\n isDaySelectable,\n isDayVisible,\n isOutsideAllowedDates,\n setVisibleMonth,\n ],\n );\n\n useEffect(() => {\n if (!isDayVisible(focusedDate)) {\n setFocusedDateState(getInitialFocusedDate());\n }\n }, [isDayVisible, focusedDate, visibleMonth]);\n\n return {\n state: {\n visibleMonth,\n focusedDate,\n minDate,\n maxDate,\n selectionVariant,\n hideOutOfRangeDates,\n calendarFocused,\n ...selectionManager.state,\n },\n helpers: {\n setVisibleMonth,\n setFocusedDate,\n setCalendarFocused,\n isDayUnselectable,\n isDayHighlighted,\n isDayDisabled,\n isDayVisible,\n isOutsideAllowedDates,\n isOutsideAllowedMonths,\n isOutsideAllowedYears,\n ...selectionManager.helpers,\n },\n };\n}\n"],"names":["selectedDate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useCalendar.js","sources":["../src/calendar/useCalendar.ts"],"sourcesContent":["import {\n type DateValue,\n endOfMonth,\n endOfYear,\n getLocalTimeZone,\n isSameDay,\n isSameMonth,\n startOfMonth,\n startOfYear,\n today,\n} from \"@internationalized/date\";\nimport { useControlled } from \"@salt-ds/core\";\nimport {\n type SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { getCurrentLocale } from \"./formatDate\";\nimport { generateDatesForMonth } from \"./internal/utils\";\nimport {\n type UseCalendarSelectionMultiSelectProps,\n type UseCalendarSelectionOffsetProps,\n type UseCalendarSelectionProps,\n type UseCalendarSelectionRangeProps,\n type UseCalendarSelectionSingleProps,\n isDateRangeSelection,\n useCalendarSelection,\n} from \"./useCalendarSelection\";\n\n/**\n * Interface representing the base properties UseCalendar hook.\n */\ninterface UseCalendarBaseProps {\n /**\n * The default visible month.\n */\n defaultVisibleMonth?: DateValue;\n /**\n * Callback fired when the visible month changes.\n * @param event - The synthetic event.\n * @param visibleMonth - The new visible month.\n */\n onVisibleMonthChange?: (\n event: SyntheticEvent,\n visibleMonth: DateValue,\n ) => void;\n /**\n * Function to determine if a day is unselectable.\n * @param date - The date to check.\n * @returns A string reason if the day is unselectable, otherwise `false` or `undefined`.\n */\n isDayUnselectable?: (date: DateValue) => string | false | undefined;\n /**\n * Function to determine if a day is highlighted.\n * @param date - The date to check.\n * @returns A string reason if the day is highlighted, otherwise `false` or `undefined`.\n */\n isDayHighlighted?: (date: DateValue) => string | false | undefined;\n /**\n * Function to determine if a day is disabled.\n * @param date - The date to check.\n * @returns A string reason if the day is disabled, otherwise `false` or `undefined`.\n */\n isDayDisabled?: (date: DateValue) => string | false | undefined;\n /**\n * The currently visible month.\n */\n visibleMonth?: DateValue;\n /**\n * If `true`, hides dates that are out of the selectable range.\n */\n hideOutOfRangeDates?: boolean;\n /**\n * The minimum selectable date.\n */\n minDate?: DateValue;\n /**\n * The maximum selectable date.\n */\n maxDate?: DateValue;\n /**\n * The time zone used for date calculations.\n */\n timeZone?: string;\n /**\n * The locale used for date formatting.\n */\n locale?: string;\n}\n\n/**\n * UseCalendar hook props for a single date selection Calendar.\n */\nexport interface UseCalendarSingleProps\n extends UseCalendarSelectionSingleProps,\n UseCalendarBaseProps {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n}\n\n/**\n * UseCalendar hook props for a date range selection Calendar.\n */\nexport interface UseCalendarRangeProps\n extends UseCalendarSelectionRangeProps,\n UseCalendarBaseProps {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n}\n\n/**\n * UseCalendar hook props for a multi-select Calendar.\n */\nexport interface UseCalendarMultiSelectProps\n extends UseCalendarSelectionMultiSelectProps,\n UseCalendarBaseProps {\n /**\n * The selection variant, set to \"multiselect\".\n */\n selectionVariant: \"multiselect\";\n}\n\n/**\n * UseCalendar hook props for an offset date selection Calendar.\n */\nexport interface UseCalendarOffsetProps\n extends UseCalendarSelectionOffsetProps,\n UseCalendarBaseProps {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n}\n\n/**\n * UseCalendar hook props, wth the selection variant determining the return type of the date selection\n */\nexport type UseCalendarProps =\n | UseCalendarSingleProps\n | UseCalendarRangeProps\n | UseCalendarMultiSelectProps\n | UseCalendarOffsetProps;\n\n/**\n * Default function to determine if a day is unselectable.\n * @returns `false` indicating the day is selectable.\n */\nconst defaultIsDayUnselectable = (): string | false => false;\n\n/**\n * Default function to determine if a day is highlighted.\n * @returns `false` indicating the day is not highlighted.\n */\nconst defaultIsDayHighlighted = (): string | false => false;\n\n/**\n * Default function to determine if a day is disabled.\n * @returns `false` indicating the day is not disabled.\n */\nconst defaultIsDayDisabled = (): false => false;\n\nexport function useCalendar(props: UseCalendarProps) {\n const {\n selectedDate,\n defaultSelectedDate,\n visibleMonth: visibleMonthProp,\n hideOutOfRangeDates,\n timeZone = getLocalTimeZone(),\n locale = getCurrentLocale(),\n defaultVisibleMonth = today(timeZone),\n onSelectedDateChange,\n onVisibleMonthChange,\n isDayUnselectable = defaultIsDayUnselectable,\n isDayHighlighted = defaultIsDayHighlighted,\n isDayDisabled = defaultIsDayDisabled,\n minDate,\n maxDate,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const [visibleMonth, setVisibleMonthState] = useControlled({\n controlled: visibleMonthProp ? startOfMonth(visibleMonthProp) : undefined,\n default: startOfMonth(defaultVisibleMonth),\n name: \"Calendar\",\n state: \"visibleMonth\",\n });\n\n const isOutsideAllowedDates = useCallback(\n (date: DateValue) => {\n return (\n (minDate && date.compare(minDate) < 0) ||\n (maxDate && date.compare(maxDate) > 0)\n );\n },\n [maxDate, minDate],\n );\n\n const isOutsideAllowedMonths = useCallback(\n (date: DateValue) => {\n return (\n (minDate && endOfMonth(date).compare(minDate) < 0) ||\n (maxDate && startOfMonth(date).compare(maxDate) > 0)\n );\n },\n [minDate, maxDate],\n );\n\n const isOutsideAllowedYears = useCallback(\n (date: DateValue) => {\n return (\n (minDate && endOfYear(date).compare(minDate) < 0) ||\n (maxDate && startOfYear(date).compare(maxDate) > 0)\n );\n },\n [minDate, maxDate],\n );\n\n const isDaySelectable = useCallback(\n (date?: DateValue) =>\n !(\n date &&\n (isDayUnselectable(date) ||\n isDayDisabled(date) ||\n isOutsideAllowedDates(date))\n ),\n [isDayUnselectable, isDayDisabled, isOutsideAllowedDates],\n );\n\n const selectionManager = useCalendarSelection({\n defaultSelectedDate: defaultSelectedDate,\n selectedDate,\n onSelectedDateChange,\n startDateOffset:\n props.selectionVariant === \"offset\" ? props.startDateOffset : undefined,\n endDateOffset:\n props.selectionVariant === \"offset\" ? props.endDateOffset : undefined,\n isDaySelectable,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n } as UseCalendarSelectionProps);\n\n const [calendarFocused, setCalendarFocused] = useState(false);\n\n const isInVisibleMonth = useCallback(\n (date: DateValue | undefined | null): date is DateValue =>\n date != null && isSameMonth(date, visibleMonth),\n [visibleMonth],\n );\n\n const getInitialFocusedDate = useCallback(() => {\n const selectedDate = selectionManager.state.selectedDate;\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(selectedDate)\n ) {\n if (isInVisibleMonth(selectedDate?.startDate)) {\n return selectedDate.startDate;\n }\n if (isInVisibleMonth(selectedDate?.endDate)) {\n return selectedDate.endDate;\n }\n } else if (\n selectionVariant === \"multiselect\" &&\n Array.isArray(selectedDate)\n ) {\n // return first selected day in visible month\n const selectionInMonth = selectedDate\n .filter((day) => isInVisibleMonth(day))\n .sort((a, b) => a.compare(b));\n if (selectionInMonth.length > 0) {\n return selectionInMonth[0];\n }\n } else if (\n selectionVariant === \"single\" &&\n !isDateRangeSelection(selectedDate) &&\n !Array.isArray(selectedDate) &&\n isInVisibleMonth(selectedDate)\n ) {\n return selectedDate;\n }\n // Defaults\n if (isDaySelectable(today(timeZone)) && isInVisibleMonth(today(timeZone))) {\n return today(timeZone);\n }\n const firstSelectableDate = generateDatesForMonth(visibleMonth).find(\n (visibleDay) => isDaySelectable(visibleDay),\n );\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n return null;\n }, [\n isInVisibleMonth,\n selectionVariant,\n selectionManager.state.selectedDate,\n timeZone,\n visibleMonth,\n ]);\n\n const [focusedDate, setFocusedDateState] = useState<DateValue | null>(\n getInitialFocusedDate,\n );\n\n const isDayVisible = useCallback(\n (date: DateValue) => {\n const startInsideDays = startOfMonth(visibleMonth);\n\n if (date.compare(startInsideDays) < 0) return false;\n\n const endInsideDays = endOfMonth(visibleMonth);\n\n return !(date.compare(endInsideDays) > 0);\n },\n [visibleMonth],\n );\n\n const setVisibleMonth = useCallback(\n (event: SyntheticEvent, newVisibleMonth: DateValue) => {\n setVisibleMonthState(newVisibleMonth);\n onVisibleMonthChange?.(event, newVisibleMonth);\n },\n [onVisibleMonthChange],\n );\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent, date: DateValue) => {\n if (\n !focusedDate ||\n isSameDay(date, focusedDate) ||\n isOutsideAllowedDates(date)\n )\n return;\n\n setFocusedDateState(date);\n\n const shouldTransition =\n !isDayVisible(date) &&\n isDaySelectable(date) &&\n !isOutsideAllowedDates(date);\n if (shouldTransition) {\n setVisibleMonth(event, startOfMonth(date));\n }\n },\n [\n focusedDate,\n isDaySelectable,\n isDayVisible,\n isOutsideAllowedDates,\n setVisibleMonth,\n ],\n );\n\n useEffect(() => {\n if (visibleMonth && focusedDate && !isDayVisible(focusedDate)) {\n const focusableDate = getInitialFocusedDate();\n if (focusableDate) {\n setFocusedDateState(focusableDate);\n }\n }\n }, [isDayVisible, focusedDate, getInitialFocusedDate, visibleMonth]);\n\n return useMemo(\n () => ({\n state: {\n visibleMonth,\n focusedDate,\n minDate,\n maxDate,\n selectionVariant,\n hideOutOfRangeDates,\n calendarFocused,\n timeZone,\n locale,\n ...selectionManager.state,\n },\n helpers: {\n setVisibleMonth,\n setFocusedDate,\n setCalendarFocused,\n isDayUnselectable,\n isDayHighlighted,\n isDayDisabled,\n isDayVisible,\n isOutsideAllowedDates,\n isOutsideAllowedMonths,\n isOutsideAllowedYears,\n ...selectionManager.helpers,\n },\n }),\n [\n visibleMonth,\n focusedDate,\n minDate,\n maxDate,\n selectionVariant,\n hideOutOfRangeDates,\n calendarFocused,\n timeZone,\n locale,\n setVisibleMonth,\n setFocusedDate,\n isDayUnselectable,\n isDayHighlighted,\n isDayDisabled,\n isDayVisible,\n isOutsideAllowedDates,\n isOutsideAllowedMonths,\n isOutsideAllowedYears,\n selectionManager,\n ],\n );\n}\n"],"names":["selectedDate"],"mappings":"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"}
|
|
@@ -1,21 +1,28 @@
|
|
|
1
|
-
import { isSameMonth, isSameDay, isToday
|
|
1
|
+
import { isSameMonth, isSameDay, isToday } from '@internationalized/date';
|
|
2
2
|
import { useEffect } from 'react';
|
|
3
3
|
import { useCalendarContext } from './internal/CalendarContext.js';
|
|
4
4
|
import { useFocusManagement } from './internal/useFocusManagement.js';
|
|
5
|
-
import {
|
|
5
|
+
import { useCalendarSelectionDay } from './useCalendarSelection.js';
|
|
6
6
|
|
|
7
7
|
function useCalendarDay({ date, month }, ref) {
|
|
8
8
|
const {
|
|
9
|
-
state: {
|
|
9
|
+
state: {
|
|
10
|
+
focusedDate,
|
|
11
|
+
hideOutOfRangeDates,
|
|
12
|
+
calendarFocused,
|
|
13
|
+
locale,
|
|
14
|
+
timeZone
|
|
15
|
+
},
|
|
10
16
|
helpers: {
|
|
11
17
|
isDayUnselectable,
|
|
18
|
+
isDaySelectable,
|
|
12
19
|
isDayHighlighted,
|
|
13
20
|
isDayDisabled,
|
|
14
21
|
isOutsideAllowedMonths
|
|
15
22
|
}
|
|
16
23
|
} = useCalendarContext();
|
|
17
|
-
const selectionManager =
|
|
18
|
-
const focusManager = useFocusManagement({ date });
|
|
24
|
+
const selectionManager = useCalendarSelectionDay({ date });
|
|
25
|
+
const focusManager = useFocusManagement({ date, locale });
|
|
19
26
|
const handleClick = (event) => {
|
|
20
27
|
selectionManager == null ? void 0 : selectionManager.handleClick(event);
|
|
21
28
|
focusManager.handleClick(event);
|
|
@@ -38,12 +45,12 @@ function useCalendarDay({ date, month }, ref) {
|
|
|
38
45
|
onMouseOver: handleMouseOver
|
|
39
46
|
};
|
|
40
47
|
const outOfRange = !isSameMonth(date, month);
|
|
41
|
-
const focused = isSameDay(date, focusedDate) && calendarFocused && !outOfRange;
|
|
42
|
-
const tabIndex = isSameDay(date, focusedDate) && !outOfRange ? 0 : -1;
|
|
43
|
-
const today = isToday(date,
|
|
44
|
-
const unselectableReason = isDayUnselectable(date);
|
|
48
|
+
const focused = focusedDate && isSameDay(date, focusedDate) && calendarFocused && !outOfRange;
|
|
49
|
+
const tabIndex = focusedDate && isSameDay(date, focusedDate) && !outOfRange ? 0 : -1;
|
|
50
|
+
const today = isToday(date, timeZone);
|
|
51
|
+
const unselectableReason = isDayUnselectable(date) || isDayDisabled(date);
|
|
45
52
|
const highlightedReason = isDayHighlighted(date);
|
|
46
|
-
const disabled = isDayDisabled(date) || outOfRange && isOutsideAllowedMonths(date);
|
|
53
|
+
const disabled = isDayDisabled(date) || outOfRange && isOutsideAllowedMonths(date) || isDaySelectable && !isDaySelectable(date);
|
|
47
54
|
const unselectable = Boolean(unselectableReason);
|
|
48
55
|
const highlighted = Boolean(highlightedReason);
|
|
49
56
|
const hidden = hideOutOfRangeDates && outOfRange;
|
|
@@ -72,7 +79,9 @@ function useCalendarDay({ date, month }, ref) {
|
|
|
72
79
|
...selectionManager.dayProps
|
|
73
80
|
},
|
|
74
81
|
unselectableReason,
|
|
75
|
-
highlightedReason
|
|
82
|
+
highlightedReason,
|
|
83
|
+
locale,
|
|
84
|
+
timeZone
|
|
76
85
|
};
|
|
77
86
|
}
|
|
78
87
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalendarDay.js","sources":["../src/calendar/useCalendarDay.ts"],"sourcesContent":["import {\n type DateValue,\n
|
|
1
|
+
{"version":3,"file":"useCalendarDay.js","sources":["../src/calendar/useCalendarDay.ts"],"sourcesContent":["import {\n type DateValue,\n isSameDay,\n isSameMonth,\n isToday,\n} from \"@internationalized/date\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEventHandler,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type RefObject,\n useEffect,\n} from \"react\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { useFocusManagement } from \"./internal/useFocusManagement\";\nimport { useCalendarSelectionDay } from \"./useCalendarSelection\";\n\n/**\n * Interface representing the status of a day in the Calendar.\n */\nexport interface DayStatus {\n /**\n * If `true`, the day is out of the selectable range.\n */\n outOfRange?: boolean;\n /**\n * If `true`, the day is selected.\n */\n selected?: boolean;\n /**\n * If `true`, the day is today.\n */\n today?: boolean;\n /**\n * If set, the day is unselectable with a reason.\n */\n unselectable?: string | false;\n /**\n * If set, the day is highlighted with a reason.\n */\n highlighted?: string | false;\n /**\n * If `true`, the day is focused.\n */\n focused?: boolean;\n /**\n * If `true`, the day is disabled.\n */\n disabled?: boolean;\n /**\n * If `true`, the day is hidden.\n */\n hidden?: boolean;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status\n */\nexport interface useCalendarDayProps {\n /**\n * The date of the calendar day.\n */\n date: DateValue;\n /**\n * The month of the calendar day.\n */\n month: DateValue;\n}\n\nexport function useCalendarDay(\n { date, month }: useCalendarDayProps,\n ref: RefObject<HTMLElement>,\n) {\n const {\n state: {\n focusedDate,\n hideOutOfRangeDates,\n calendarFocused,\n locale,\n timeZone,\n },\n helpers: {\n isDayUnselectable,\n isDaySelectable,\n isDayHighlighted,\n isDayDisabled,\n isOutsideAllowedMonths,\n },\n } = useCalendarContext();\n const selectionManager = useCalendarSelectionDay({ date });\n const focusManager = useFocusManagement({ date, locale });\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n selectionManager?.handleClick(event);\n focusManager.handleClick(event);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n focusManager.handleKeyDown(event);\n selectionManager?.handleKeyDown(event);\n };\n\n const handleFocus: FocusEventHandler<HTMLButtonElement> = (event) => {\n focusManager.handleFocus(event);\n };\n\n const handleMouseOver: MouseEventHandler<HTMLButtonElement> = (event) => {\n selectionManager.handleMouseOver?.(event);\n };\n\n const eventHandlers = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onMouseOver: handleMouseOver,\n };\n\n const outOfRange = !isSameMonth(date, month);\n const focused =\n focusedDate &&\n isSameDay(date, focusedDate) &&\n calendarFocused &&\n !outOfRange;\n const tabIndex =\n focusedDate && isSameDay(date, focusedDate) && !outOfRange ? 0 : -1;\n const today = isToday(date, timeZone);\n\n const unselectableReason = isDayUnselectable(date) || isDayDisabled(date);\n const highlightedReason = isDayHighlighted(date);\n\n const disabled =\n isDayDisabled(date) ||\n (outOfRange && isOutsideAllowedMonths(date)) ||\n (isDaySelectable && !isDaySelectable(date));\n const unselectable = Boolean(unselectableReason);\n const highlighted = Boolean(highlightedReason);\n const hidden = hideOutOfRangeDates && outOfRange;\n\n useEffect(() => {\n if (focused) {\n ref.current?.focus({ preventScroll: true });\n }\n }, [ref, focused]);\n\n return {\n status: {\n outOfRange,\n today,\n unselectable,\n focused,\n hidden,\n disabled,\n highlighted,\n ...selectionManager.status,\n } as DayStatus,\n dayProps: {\n tabIndex,\n \"aria-current\": today ? \"date\" : undefined,\n \"aria-hidden\": hidden ? \"true\" : undefined,\n ...eventHandlers,\n ...selectionManager.dayProps,\n } as ComponentPropsWithoutRef<\"button\">,\n unselectableReason,\n highlightedReason,\n locale,\n timeZone,\n };\n}\n"],"names":[],"mappings":"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"}
|