@vkontakte/vkui 6.0.2 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Accordion/Accordion.d.ts +1 -1
- package/dist/cjs/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/cjs/components/Accordion/Accordion.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.d.ts +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/AppRoot/ScrollContext.d.ts +4 -4
- package/dist/cjs/components/AppRoot/ScrollContext.d.ts.map +1 -1
- package/dist/cjs/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cjs/components/BaseGallery/CarouselBase/types.d.ts +1 -1
- package/dist/cjs/components/BaseGallery/CarouselBase/types.d.ts.map +1 -1
- package/dist/cjs/components/BaseGallery/types.d.ts +4 -4
- package/dist/cjs/components/BaseGallery/types.d.ts.map +1 -1
- package/dist/cjs/components/BaseGallery/types.js.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.d.ts +4 -4
- package/dist/cjs/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarDay/CalendarDay.d.ts +3 -3
- package/dist/cjs/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.d.ts +12 -12
- package/dist/cjs/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts +3 -3
- package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cjs/components/CalendarTime/CalendarTime.d.ts +3 -3
- package/dist/cjs/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts.map +1 -1
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +1 -1
- package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cjs/components/ChipsInput/useChipsInput.d.ts +4 -1
- package/dist/cjs/components/ChipsInput/useChipsInput.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInputBase/types.d.ts +3 -3
- package/dist/cjs/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +2 -2
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/useChipsSelect.d.ts +4 -1
- package/dist/cjs/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/Clickable.js +10 -1
- package/dist/cjs/components/Clickable/Clickable.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.d.ts +5 -5
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.d.ts +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.d.ts.map +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cjs/components/InputLike/InputLike.d.ts +1 -1
- package/dist/cjs/components/InputLike/InputLike.d.ts.map +1 -1
- package/dist/cjs/components/InputLike/InputLike.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootContext.d.ts +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cjs/components/ModalRoot/types.d.ts +4 -4
- package/dist/cjs/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltip.d.ts +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.d.ts +2 -2
- package/dist/cjs/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.js.map +1 -1
- package/dist/cjs/components/Root/Root.d.ts +2 -2
- package/dist/cjs/components/Root/Root.d.ts.map +1 -1
- package/dist/cjs/components/Root/Root.js.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +9 -13
- package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/Slider/Slider.d.ts +4 -4
- package/dist/cjs/components/Slider/Slider.d.ts.map +1 -1
- package/dist/cjs/components/Slider/Slider.js.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.d.ts +1 -1
- package/dist/cjs/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/View/View.d.ts +5 -5
- package/dist/cjs/components/View/View.d.ts.map +1 -1
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.d.ts +6 -6
- package/dist/cjs/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/hooks/useDateInput.d.ts +3 -3
- package/dist/cjs/hooks/useDateInput.d.ts.map +1 -1
- package/dist/cjs/hooks/useDateInput.js.map +1 -1
- package/dist/cjs/hooks/useDraggableWithDomApi/types.d.ts +4 -4
- package/dist/cjs/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
- package/dist/cjs/hooks/useDraggableWithDomApi/types.js.map +1 -1
- package/dist/cjs/hooks/useEnsuredControl.d.ts +2 -2
- package/dist/cjs/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/cjs/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cjs/lib/floating/useFloatingWithInteractions/types.d.ts +3 -3
- package/dist/cjs/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
- package/dist/cjs/lib/rafSchd.d.ts +1 -1
- package/dist/cjs/lib/rafSchd.d.ts.map +1 -1
- package/dist/cjs/lib/rafSchd.js.map +1 -1
- package/dist/cjs/lib/react/simulateReactInput.d.ts +3 -3
- package/dist/cjs/lib/react/simulateReactInput.d.ts.map +1 -1
- package/dist/cjs/lib/react/simulateReactInput.js.map +1 -1
- package/dist/components/Accordion/Accordion.d.ts +1 -1
- package/dist/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.d.ts +1 -1
- package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/AppRoot/ScrollContext.d.ts +4 -4
- package/dist/components/AppRoot/ScrollContext.d.ts.map +1 -1
- package/dist/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/components/BaseGallery/CarouselBase/types.d.ts +1 -1
- package/dist/components/BaseGallery/CarouselBase/types.d.ts.map +1 -1
- package/dist/components/BaseGallery/CarouselBase/types.js.map +1 -1
- package/dist/components/BaseGallery/types.d.ts +4 -4
- package/dist/components/BaseGallery/types.d.ts.map +1 -1
- package/dist/components/BaseGallery/types.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +4 -4
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.d.ts +3 -3
- package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.d.ts +12 -12
- package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.d.ts +3 -3
- package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.d.ts +3 -3
- package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts +1 -1
- package/dist/components/Cell/Cell.d.ts.map +1 -1
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.d.ts +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/components/ChipsInput/useChipsInput.d.ts +4 -1
- package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/types.d.ts +3 -3
- package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/types.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts +2 -2
- package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/ChipsSelect/useChipsSelect.d.ts +4 -1
- package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.js +10 -1
- package/dist/components/Clickable/Clickable.js.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/components/CustomScrollView/useTrackerVisibility.d.ts +5 -5
- package/dist/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.d.ts +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
- package/dist/components/FocusTrap/FocusTrap.d.ts.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/components/InputLike/InputLike.d.ts +1 -1
- package/dist/components/InputLike/InputLike.d.ts.map +1 -1
- package/dist/components/InputLike/InputLike.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootContext.d.ts +1 -1
- package/dist/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/components/ModalRoot/types.d.ts +4 -4
- package/dist/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/components/ModalRoot/types.js.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/components/Pagination/Pagination.d.ts +2 -2
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Root/Root.d.ts +2 -2
- package/dist/components/Root/Root.d.ts.map +1 -1
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +10 -14
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/Slider/Slider.d.ts +4 -4
- package/dist/components/Slider/Slider.d.ts.map +1 -1
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Textarea/Textarea.d.ts +1 -1
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/View/View.d.ts +5 -5
- package/dist/components/View/View.d.ts.map +1 -1
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.d.ts +6 -6
- package/dist/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +8 -8
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +24 -21
- package/dist/cssm/components/Accordion/Accordion.d.ts +1 -1
- package/dist/cssm/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/cssm/components/Accordion/Accordion.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.d.ts +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.module.css +1 -2
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.module.css +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.d.ts +4 -4
- package/dist/cssm/components/AppRoot/ScrollContext.d.ts.map +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cssm/components/BaseGallery/CarouselBase/types.d.ts +1 -1
- package/dist/cssm/components/BaseGallery/CarouselBase/types.d.ts.map +1 -1
- package/dist/cssm/components/BaseGallery/CarouselBase/types.js.map +1 -1
- package/dist/cssm/components/BaseGallery/types.d.ts +4 -4
- package/dist/cssm/components/BaseGallery/types.d.ts.map +1 -1
- package/dist/cssm/components/BaseGallery/types.js.map +1 -1
- package/dist/cssm/components/Button/Button.module.css +6 -5
- package/dist/cssm/components/Calendar/Calendar.d.ts +4 -4
- package/dist/cssm/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.d.ts +3 -3
- package/dist/cssm/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.d.ts +12 -12
- package/dist/cssm/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts +3 -3
- package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.d.ts +3 -3
- package/dist/cssm/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.d.ts +1 -1
- package/dist/cssm/components/Cell/Cell.d.ts.map +1 -1
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.d.ts +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cssm/components/ChipsInput/useChipsInput.d.ts +4 -1
- package/dist/cssm/components/ChipsInput/useChipsInput.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.d.ts +3 -3
- package/dist/cssm/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts +2 -2
- package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.d.ts +4 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.js +10 -1
- package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.module.css +21 -0
- package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.d.ts +5 -5
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.d.ts +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.d.ts +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.d.ts.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.d.ts +1 -1
- package/dist/cssm/components/InputLike/InputLike.d.ts.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.js.map +1 -1
- package/dist/cssm/components/Link/Link.module.css +1 -2
- package/dist/cssm/components/ModalRoot/ModalRootContext.d.ts +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cssm/components/ModalRoot/types.d.ts +4 -4
- package/dist/cssm/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/cssm/components/ModalRoot/types.js.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.d.ts +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.d.ts +2 -2
- package/dist/cssm/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
- package/dist/cssm/components/Root/Root.d.ts +2 -2
- package/dist/cssm/components/Root/Root.d.ts.map +1 -1
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +10 -16
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.module.css +7 -0
- package/dist/cssm/components/Slider/Slider.d.ts +4 -4
- package/dist/cssm/components/Slider/Slider.d.ts.map +1 -1
- package/dist/cssm/components/Slider/Slider.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.module.css +0 -8
- package/dist/cssm/components/Textarea/Textarea.d.ts +1 -1
- package/dist/cssm/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/View/View.d.ts +5 -5
- package/dist/cssm/components/View/View.d.ts.map +1 -1
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.d.ts +6 -6
- package/dist/cssm/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/hooks/useDateInput.d.ts +3 -3
- package/dist/cssm/hooks/useDateInput.d.ts.map +1 -1
- package/dist/cssm/hooks/useDateInput.js.map +1 -1
- package/dist/cssm/hooks/useDraggableWithDomApi/types.d.ts +4 -4
- package/dist/cssm/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
- package/dist/cssm/hooks/useDraggableWithDomApi/types.js.map +1 -1
- package/dist/cssm/hooks/useEnsuredControl.d.ts +2 -2
- package/dist/cssm/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/types.d.ts +3 -3
- package/dist/cssm/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
- package/dist/cssm/lib/rafSchd.d.ts +1 -1
- package/dist/cssm/lib/rafSchd.d.ts.map +1 -1
- package/dist/cssm/lib/rafSchd.js.map +1 -1
- package/dist/cssm/lib/react/simulateReactInput.d.ts +3 -3
- package/dist/cssm/lib/react/simulateReactInput.d.ts.map +1 -1
- package/dist/cssm/lib/react/simulateReactInput.js.map +1 -1
- package/dist/hooks/useDateInput.d.ts +3 -3
- package/dist/hooks/useDateInput.d.ts.map +1 -1
- package/dist/hooks/useDateInput.js.map +1 -1
- package/dist/hooks/useDraggableWithDomApi/types.d.ts +4 -4
- package/dist/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
- package/dist/hooks/useDraggableWithDomApi/types.js.map +1 -1
- package/dist/hooks/useEnsuredControl.d.ts +2 -2
- package/dist/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/hooks/useEnsuredControl.js.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +3 -3
- package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
- package/dist/lib/rafSchd.d.ts +1 -1
- package/dist/lib/rafSchd.d.ts.map +1 -1
- package/dist/lib/rafSchd.js.map +1 -1
- package/dist/lib/react/simulateReactInput.d.ts +3 -3
- package/dist/lib/react/simulateReactInput.d.ts.map +1 -1
- package/dist/lib/react/simulateReactInput.js.map +1 -1
- package/dist/vkui.css +8 -8
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +24 -21
- package/package.json +1 -1
- package/src/components/Accordion/Accordion.tsx +1 -1
- package/src/components/Accordion/__image_snapshots__/accordion-ios-webkit-dark-1-snap.png +2 -2
- package/src/components/Accordion/__image_snapshots__/accordion-ios-webkit-light-1-snap.png +2 -2
- package/src/components/ActionSheet/ActionSheet.module.css +1 -2
- package/src/components/ActionSheet/ActionSheet.tsx +1 -1
- package/src/components/ActionSheet/Readme.md +6 -6
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-android-chromium-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-android-chromium-light-1-snap.png +2 -2
- package/src/components/ActionSheetItem/ActionSheetItem.module.css +1 -1
- package/src/components/AppRoot/ScrollContext.tsx +4 -4
- package/src/components/BaseGallery/CarouselBase/types.ts +1 -1
- package/src/components/BaseGallery/types.ts +4 -4
- package/src/components/Button/Button.module.css +6 -2
- package/src/components/Calendar/Calendar.stories.tsx +2 -2
- package/src/components/Calendar/Calendar.tsx +4 -4
- package/src/components/CalendarDay/CalendarDay.tsx +3 -3
- package/src/components/CalendarDays/CalendarDays.tsx +12 -12
- package/src/components/CalendarHeader/CalendarHeader.tsx +3 -3
- package/src/components/CalendarRange/CalendarRange.tsx +2 -2
- package/src/components/CalendarTime/CalendarTime.tsx +3 -3
- package/src/components/Cell/Cell.tsx +1 -1
- package/src/components/Cell/CellDragger/CellDragger.tsx +1 -1
- package/src/components/CellButton/__image_snapshots__/cellbutton-ios-webkit-dark-1-snap.png +2 -2
- package/src/components/CellButton/__image_snapshots__/cellbutton-ios-webkit-light-1-snap.png +2 -2
- package/src/components/ChipsInputBase/types.ts +3 -3
- package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
- package/src/components/Clickable/Clickable.module.css +14 -0
- package/src/components/Clickable/Clickable.tsx +15 -1
- package/src/components/CustomScrollView/CustomScrollView.tsx +1 -1
- package/src/components/CustomScrollView/useTrackerVisibility.ts +5 -5
- package/src/components/CustomSelect/CustomSelect.test.tsx +1 -1
- package/src/components/CustomSelect/CustomSelectClearButton.tsx +1 -1
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +1 -1
- package/src/components/FocusTrap/FocusTrap.tsx +1 -1
- package/src/components/Input/Readme.md +1 -1
- package/src/components/InputLike/InputLike.tsx +1 -1
- package/src/components/Link/Link.module.css +1 -2
- package/src/components/ModalRoot/ModalRootContext.tsx +1 -1
- package/src/components/ModalRoot/types.ts +4 -4
- package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +1 -1
- package/src/components/Pagination/Pagination.tsx +2 -2
- package/src/components/Popper/Readme.md +1 -1
- package/src/components/PullToRefresh/PullToRefresh.e2e.tsx +2 -0
- package/src/components/Root/Root.tsx +1 -1
- package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +1 -1
- package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.tsx +21 -36
- package/src/components/SimpleCell/SimpleCell.e2e-playground.tsx +4 -0
- package/src/components/SimpleCell/SimpleCell.module.css +5 -0
- package/src/components/SimpleCell/SimpleCell.tsx +8 -1
- package/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-light-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-light-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-light-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-light-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-light-1-snap.png +2 -2
- package/src/components/Slider/Slider.test.tsx +11 -5
- package/src/components/Slider/Slider.tsx +4 -4
- package/src/components/Tabs/__image_snapshots__/tabs-android-chromium-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-android-chromium-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-ios-webkit-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-ios-webkit-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-android-chromium-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-ios-webkit-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-vkcom-chromium-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-vkcom-firefox-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-vkcom-webkit-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-chromium-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-chromium-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-firefox-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-firefox-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-webkit-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-webkit-light-1-snap.png +2 -2
- package/src/components/TabsItem/TabsItem.module.css +0 -9
- package/src/components/Textarea/Textarea.tsx +1 -1
- package/src/components/Touch/Readme.md +1 -1
- package/src/components/View/View.stories.tsx +1 -1
- package/src/components/View/View.tsx +4 -4
- package/src/components/View/ViewInfinite.tsx +5 -5
- package/src/components/WriteBar/Readme.md +1 -1
- package/src/hooks/useDateInput.ts +3 -3
- package/src/hooks/useDraggableWithDomApi/types.ts +4 -4
- package/src/hooks/useEnsuredControl.ts +2 -2
- package/src/hooks/useGlobalOnClickOutside.test.tsx +1 -1
- package/src/lib/floating/useFloatingWithInteractions/types.ts +3 -3
- package/src/lib/rafSchd.ts +1 -1
- package/src/lib/react/simulateReactInput.ts +3 -3
- package/src/storybook/VKUIDecorators.tsx +0 -16
- package/src/testing/e2e/ComponentPlayground.tsx +1 -1
- package/src/testing/e2e/types.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { blurActiveElement, canUseDOM, useDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { animationEvent } from '../../lib/supportEvents';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { NavViewIdContext } from '../NavIdContext/NavIdContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { NavTransitionDirectionProvider } from '../NavTransitionDirectionContext/NavTransitionDirectionContext';\nimport { useSplitCol } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport {\n getSwipeBackPredicates,\n hasHorizontalScrollableElementWithScrolledToLeft,\n swipeBackExcluded,\n} from './utils';\nimport styles from './View.module.css';\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends HTMLAttributesWithRootRef<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n\n children: React.ReactElement | Iterable<React.ReactElement>;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps) => {\n const id = getNavId({ nav, id: restProps.id });\n const scrolls = React.useRef(scrollsCache[id as string] || {});\n const afterTransition = React.useRef(noop);\n\n React.useEffect(() => () => {\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const swipeBackPrevented = React.useRef<boolean>(false);\n const [swipingBack, setSwipingBack] = React.useState<boolean | undefined>(undefined);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<'success' | 'fail' | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackShift = usePrevious(swipeBackShift);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n !configProvider.transitionMotionEnabled || !splitCol.animate || platform === 'vkcom';\n const iOSSwipeBackSimulationEnabled =\n !disableAnimation && platform === 'ios' && configProvider.isWebView && Boolean(onSwipeBack);\n\n const pickPanel = (id: string | null) => {\n if (id === null) {\n return null;\n }\n return panelNodes.current[id];\n };\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(isBackTransition);\n\n afterTransition.current = () => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n };\n },\n [activePanelProp, onTransition, scroll],\n );\n\n useIsomorphicLayoutEffect(() => {\n afterTransition.current();\n afterTransition.current = noop;\n }, [afterTransition.current]);\n\n const transitionEndHandler = React.useCallback(\n (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['animation-ios-next-forward'],\n styles['animation-ios-prev-back'],\n styles['animation-view-next-forward'],\n styles['animation-view-prev-back'],\n ].includes(e.animationName)) &&\n prevPanel !== null\n ) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n },\n [flushTransition, isBack, prevPanel],\n );\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const animationFinishTimeout = useTimeout(transitionEndHandler, platform === 'ios' ? 600 : 300);\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(\n (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e?.propertyName.includes('transform') && e?.target === pickPanel(swipeBackNextPanel))\n ) {\n switch (swipeBackResult) {\n case 'fail':\n onSwipeBackCancel();\n break;\n case 'success':\n onSwipeBackSuccess();\n }\n }\n },\n [onSwipeBackCancel, onSwipeBackSuccess, swipeBackNextPanel, swipeBackResult],\n );\n\n const handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext = (event: TouchEvent) => {\n if (browserSwipe) {\n return;\n }\n const { swipeBackTriggered, viewportStartEdgeTouched, viewportEndEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, window!.innerWidth);\n\n if ((viewportStartEdgeTouched || viewportEndEdgeTouched) && swipeBackTriggered) {\n setBrowserSwipe(true);\n }\n };\n\n const handleTouchMoveXForIOSSwipeBackSimulation = (event: TouchEvent) => {\n if (swipeBackPrevented.current || swipeBackExcluded(event)) {\n return;\n }\n\n const { swipedToOpposite, swipeBackTriggered, viewportStartEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, window!.innerWidth);\n\n if (animated && swipeBackTriggered) {\n return;\n }\n\n if (!swipingBack && history && history.length > 1) {\n if (swipedToOpposite) {\n swipeBackPrevented.current = true;\n return;\n }\n\n if (!swipeBackTriggered) {\n return;\n }\n\n if (\n !viewportStartEdgeTouched &&\n hasHorizontalScrollableElementWithScrolledToLeft(event.originalEvent.target as HTMLElement)\n ) {\n swipeBackPrevented.current = true;\n return;\n }\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n swipeBackPrevented.current = true;\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n if (event.shiftX < 0) {\n setSwipeBackShift(0);\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n setSwipeBackShift(window!.innerWidth);\n } else {\n setSwipeBackShift(event.shiftX);\n }\n }\n };\n\n const handleTouchEndForIOSSwipeBackSimulation = (event: TouchEvent) => {\n swipeBackPrevented.current = false;\n\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackShift >= window!.innerWidth / 2) {\n setSwipeBackResult('success');\n } else {\n setSwipeBackResult('fail');\n }\n }\n };\n\n const calcPanelSwipeStyles = (panelId: string | undefined): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isPrev = panelId === swipeBackPrevPanel;\n const isNext = panelId === swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%`;\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n };\n }\n\n return {};\n };\n\n const calcPanelSwipeBackOverlayStyles = (panelId?: string): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isNext = panelId === swipeBackNextPanel;\n if (!isNext) {\n return {};\n }\n\n const calculatedOpacity = 1 - swipeBackShift / window.innerWidth;\n const opacityOnSwipeEnd =\n swipeBackResult === 'success' ? 0 : swipeBackResult === 'fail' ? 1 : null;\n\n return {\n display: 'block',\n opacity: opacityOnSwipeEnd === null ? calculatedOpacity : opacityOnSwipeEnd,\n };\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll().y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n animationFinishTimeout.set();\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n setIsBack(true);\n\n afterTransition.current = () => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n };\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevSwipeBackResult && swipeBackResult) {\n waitTransitionFinish(\n pickPanel(swipeBackNextPanel),\n swipingBackTransitionEndHandler,\n platform === 'ios' ? 600 : 300,\n );\n }\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n animationFinishTimeout,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n platform,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBackTransitionEndHandler,\n waitTransitionFinish,\n ]);\n\n React.useEffect(\n function restoreScrollPositionWhenSwipeBackIsCancelled() {\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n const swipeBackCancelledInTheMiddleOfAction =\n prevSwipeBackResult === 'fail' && !swipeBackResult;\n const swipeBackCancelledByMovingPanelBackToInitialPoint =\n prevSwipingBack && !swipingBack && prevSwipeBackShift === 0;\n\n if (\n (swipeBackCancelledInTheMiddleOfAction ||\n swipeBackCancelledByMovingPanelBackToInitialPoint) &&\n activePanel !== null\n ) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n },\n [\n prevSwipeBackResult,\n swipeBackResult,\n prevSwipingBack,\n swipingBack,\n prevSwipeBackShift,\n activePanel,\n scroll,\n ],\n );\n\n return (\n <NavViewIdContext.Provider value={id}>\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === 'ios' && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={\n iOSSwipeBackSimulationEnabled\n ? handleTouchMoveXForIOSSwipeBackSimulation\n : platform === 'ios'\n ? handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext\n : undefined\n }\n onEnd={iOSSwipeBackSimulationEnabled ? handleTouchEndForIOSSwipeBackSimulation : undefined}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === 'success' && styles['View__panel--swipe-back-success'],\n swipeBackResult === 'fail' && styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n {platform === 'ios' && (\n <div\n className={styles['View__panel-overlay']}\n style={calcPanelSwipeBackOverlayStyles(panelId)}\n />\n )}\n <div\n className={styles['View__panel-in']}\n style={{\n marginTop: compensateScroll ? -(scrolls.current[panelId] ?? 0) : undefined,\n }}\n >\n <NavTransitionDirectionProvider isBack={swipingBack || isBack}>\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </NavTransitionDirectionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n </NavViewIdContext.Provider>\n );\n};\n"],"names":["View","scrollsCache","warn","warnOnce","activePanel","activePanelProp","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancel","onSwipeBackCancelProp","children","className","restProps","id","getNavId","scrolls","React","useRef","afterTransition","noop","useEffect","current","panelNodes","window","document","useDOM","scroll","useScroll","configProvider","useConfigProvider","splitCol","useSplitCol","platform","usePlatform","animated","setAnimated","useState","visiblePanels","setVisiblePanels","setActivePanel","isBack","setIsBack","undefined","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipeBackPrevented","swipingBack","setSwipingBack","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","usePrevious","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackShift","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","iOSSwipeBackSimulationEnabled","isWebView","Boolean","pickPanel","flushTransition","useCallback","isBackTransition","scrollTo","from","to","useIsomorphicLayoutEffect","transitionEndHandler","e","animationName","waitTransitionFinish","useWaitTransitionFinish","animationFinishTimeout","useTimeout","onSwipeBackSuccess","swipingBackTransitionEndHandler","propertyName","target","handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext","event","swipeBackTriggered","viewportStartEdgeTouched","viewportEndEdgeTouched","getSwipeBackPredicates","startX","shiftX","innerWidth","handleTouchMoveXForIOSSwipeBackSimulation","swipeBackExcluded","swipedToOpposite","length","hasHorizontalScrollableElementWithScrolledToLeft","originalEvent","payload","blurActiveElement","getScroll","y","slice","handleTouchEndForIOSSwipeBackSimulation","speed","duration","calcPanelSwipeStyles","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","transform","WebkitTransform","calcPanelSwipeBackOverlayStyles","calculatedOpacity","opacityOnSwipeEnd","display","opacity","firstLayerId","map","find","animationEvent","supported","set","restoreScrollPositionWhenSwipeBackIsCancelled","swipeBackCancelledInTheMiddleOfAction","swipeBackCancelledByMovingPanelBackToInitialPoint","NavViewIdContext","Provider","value","Touch","Component","classNames","onMoveX","onEnd","div","isTransitionTarget","compensateScroll","onAnimationEnd","ref","el","style","key","marginTop","NavTransitionDirectionProvider","NavTransitionProvider","entering"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { blurActiveElement, canUseDOM, useDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { animationEvent } from '../../lib/supportEvents';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { NavViewIdContext } from '../NavIdContext/NavIdContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { NavTransitionDirectionProvider } from '../NavTransitionDirectionContext/NavTransitionDirectionContext';\nimport { useSplitCol } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport {\n getSwipeBackPredicates,\n hasHorizontalScrollableElementWithScrolledToLeft,\n swipeBackExcluded,\n} from './utils';\nimport styles from './View.module.css';\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends HTMLAttributesWithRootRef<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?: (params: { isBack: boolean; from: string; to: string }) => void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?: () => void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?: (activePanel: string | null) => void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?: () => void;\n history?: string[];\n\n children: React.ReactElement | Iterable<React.ReactElement>;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps) => {\n const id = getNavId({ nav, id: restProps.id });\n const scrolls = React.useRef(scrollsCache[id as string] || {});\n const afterTransition = React.useRef(noop);\n\n React.useEffect(() => () => {\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const swipeBackPrevented = React.useRef<boolean>(false);\n const [swipingBack, setSwipingBack] = React.useState<boolean | undefined>(undefined);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<'success' | 'fail' | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackShift = usePrevious(swipeBackShift);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n !configProvider.transitionMotionEnabled || !splitCol.animate || platform === 'vkcom';\n const iOSSwipeBackSimulationEnabled =\n !disableAnimation && platform === 'ios' && configProvider.isWebView && Boolean(onSwipeBack);\n\n const pickPanel = (id: string | null) => {\n if (id === null) {\n return null;\n }\n return panelNodes.current[id];\n };\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(isBackTransition);\n\n afterTransition.current = () => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n };\n },\n [activePanelProp, onTransition, scroll],\n );\n\n useIsomorphicLayoutEffect(() => {\n afterTransition.current();\n afterTransition.current = noop;\n }, [afterTransition.current]);\n\n const transitionEndHandler = React.useCallback(\n (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['animation-ios-next-forward'],\n styles['animation-ios-prev-back'],\n styles['animation-view-next-forward'],\n styles['animation-view-prev-back'],\n ].includes(e.animationName)) &&\n prevPanel !== null\n ) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n },\n [flushTransition, isBack, prevPanel],\n );\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const animationFinishTimeout = useTimeout(transitionEndHandler, platform === 'ios' ? 600 : 300);\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(\n (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e?.propertyName.includes('transform') && e?.target === pickPanel(swipeBackNextPanel))\n ) {\n switch (swipeBackResult) {\n case 'fail':\n onSwipeBackCancel();\n break;\n case 'success':\n onSwipeBackSuccess();\n }\n }\n },\n [onSwipeBackCancel, onSwipeBackSuccess, swipeBackNextPanel, swipeBackResult],\n );\n\n const handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext = (event: TouchEvent) => {\n if (browserSwipe) {\n return;\n }\n const { swipeBackTriggered, viewportStartEdgeTouched, viewportEndEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, window!.innerWidth);\n\n if ((viewportStartEdgeTouched || viewportEndEdgeTouched) && swipeBackTriggered) {\n setBrowserSwipe(true);\n }\n };\n\n const handleTouchMoveXForIOSSwipeBackSimulation = (event: TouchEvent) => {\n if (swipeBackPrevented.current || swipeBackExcluded(event)) {\n return;\n }\n\n const { swipedToOpposite, swipeBackTriggered, viewportStartEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, window!.innerWidth);\n\n if (animated && swipeBackTriggered) {\n return;\n }\n\n if (!swipingBack && history && history.length > 1) {\n if (swipedToOpposite) {\n swipeBackPrevented.current = true;\n return;\n }\n\n if (!swipeBackTriggered) {\n return;\n }\n\n if (\n !viewportStartEdgeTouched &&\n hasHorizontalScrollableElementWithScrolledToLeft(event.originalEvent.target as HTMLElement)\n ) {\n swipeBackPrevented.current = true;\n return;\n }\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n swipeBackPrevented.current = true;\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n if (event.shiftX < 0) {\n setSwipeBackShift(0);\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n setSwipeBackShift(window!.innerWidth);\n } else {\n setSwipeBackShift(event.shiftX);\n }\n }\n };\n\n const handleTouchEndForIOSSwipeBackSimulation = (event: TouchEvent) => {\n swipeBackPrevented.current = false;\n\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackShift >= window!.innerWidth / 2) {\n setSwipeBackResult('success');\n } else {\n setSwipeBackResult('fail');\n }\n }\n };\n\n const calcPanelSwipeStyles = (panelId: string | undefined): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isPrev = panelId === swipeBackPrevPanel;\n const isNext = panelId === swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%`;\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n };\n }\n\n return {};\n };\n\n const calcPanelSwipeBackOverlayStyles = (panelId?: string): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isNext = panelId === swipeBackNextPanel;\n if (!isNext) {\n return {};\n }\n\n const calculatedOpacity = 1 - swipeBackShift / window.innerWidth;\n const opacityOnSwipeEnd =\n swipeBackResult === 'success' ? 0 : swipeBackResult === 'fail' ? 1 : null;\n\n return {\n display: 'block',\n opacity: opacityOnSwipeEnd === null ? calculatedOpacity : opacityOnSwipeEnd,\n };\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll().y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n animationFinishTimeout.set();\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n setIsBack(true);\n\n afterTransition.current = () => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n };\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevSwipeBackResult && swipeBackResult) {\n waitTransitionFinish(\n pickPanel(swipeBackNextPanel),\n swipingBackTransitionEndHandler,\n platform === 'ios' ? 600 : 300,\n );\n }\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n animationFinishTimeout,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n platform,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBackTransitionEndHandler,\n waitTransitionFinish,\n ]);\n\n React.useEffect(\n function restoreScrollPositionWhenSwipeBackIsCancelled() {\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n const swipeBackCancelledInTheMiddleOfAction =\n prevSwipeBackResult === 'fail' && !swipeBackResult;\n const swipeBackCancelledByMovingPanelBackToInitialPoint =\n prevSwipingBack && !swipingBack && prevSwipeBackShift === 0;\n\n if (\n (swipeBackCancelledInTheMiddleOfAction ||\n swipeBackCancelledByMovingPanelBackToInitialPoint) &&\n activePanel !== null\n ) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n },\n [\n prevSwipeBackResult,\n swipeBackResult,\n prevSwipingBack,\n swipingBack,\n prevSwipeBackShift,\n activePanel,\n scroll,\n ],\n );\n\n return (\n <NavViewIdContext.Provider value={id}>\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === 'ios' && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={\n iOSSwipeBackSimulationEnabled\n ? handleTouchMoveXForIOSSwipeBackSimulation\n : platform === 'ios'\n ? handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext\n : undefined\n }\n onEnd={iOSSwipeBackSimulationEnabled ? handleTouchEndForIOSSwipeBackSimulation : undefined}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === 'success' && styles['View__panel--swipe-back-success'],\n swipeBackResult === 'fail' && styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n {platform === 'ios' && (\n <div\n className={styles['View__panel-overlay']}\n style={calcPanelSwipeBackOverlayStyles(panelId)}\n />\n )}\n <div\n className={styles['View__panel-in']}\n style={{\n marginTop: compensateScroll ? -(scrolls.current[panelId] ?? 0) : undefined,\n }}\n >\n <NavTransitionDirectionProvider isBack={swipingBack || isBack}>\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </NavTransitionDirectionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n </NavViewIdContext.Provider>\n );\n};\n"],"names":["View","scrollsCache","warn","warnOnce","activePanel","activePanelProp","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancel","onSwipeBackCancelProp","children","className","restProps","id","getNavId","scrolls","React","useRef","afterTransition","noop","useEffect","current","panelNodes","window","document","useDOM","scroll","useScroll","configProvider","useConfigProvider","splitCol","useSplitCol","platform","usePlatform","animated","setAnimated","useState","visiblePanels","setVisiblePanels","setActivePanel","isBack","setIsBack","undefined","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipeBackPrevented","swipingBack","setSwipingBack","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","usePrevious","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackShift","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","iOSSwipeBackSimulationEnabled","isWebView","Boolean","pickPanel","flushTransition","useCallback","isBackTransition","scrollTo","from","to","useIsomorphicLayoutEffect","transitionEndHandler","e","animationName","waitTransitionFinish","useWaitTransitionFinish","animationFinishTimeout","useTimeout","onSwipeBackSuccess","swipingBackTransitionEndHandler","propertyName","target","handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext","event","swipeBackTriggered","viewportStartEdgeTouched","viewportEndEdgeTouched","getSwipeBackPredicates","startX","shiftX","innerWidth","handleTouchMoveXForIOSSwipeBackSimulation","swipeBackExcluded","swipedToOpposite","length","hasHorizontalScrollableElementWithScrolledToLeft","originalEvent","payload","blurActiveElement","getScroll","y","slice","handleTouchEndForIOSSwipeBackSimulation","speed","duration","calcPanelSwipeStyles","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","transform","WebkitTransform","calcPanelSwipeBackOverlayStyles","calculatedOpacity","opacityOnSwipeEnd","display","opacity","firstLayerId","map","find","animationEvent","supported","set","restoreScrollPositionWhenSwipeBackIsCancelled","swipeBackCancelledInTheMiddleOfAction","swipeBackCancelledByMovingPanelBackToInitialPoint","NavViewIdContext","Provider","value","Touch","Component","classNames","onMoveX","onEnd","div","isTransitionTarget","compensateScroll","onAnimationEnd","ref","el","style","key","marginTop","NavTransitionDirectionProvider","NavTransitionProvider","entering"],"mappings":"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"}
|
|
@@ -17,23 +17,23 @@ export type TransitionParams = {
|
|
|
17
17
|
};
|
|
18
18
|
export interface ViewInfiniteProps extends HTMLAttributesWithRootRef<HTMLElement>, HasPlatform, NavIdProps {
|
|
19
19
|
activePanel: string;
|
|
20
|
-
onTransition
|
|
20
|
+
onTransition?: (params: TransitionParams & {
|
|
21
21
|
isBack: boolean;
|
|
22
|
-
})
|
|
22
|
+
}) => void;
|
|
23
23
|
/**
|
|
24
24
|
* callback свайпа назад
|
|
25
25
|
*/
|
|
26
|
-
onSwipeBack
|
|
26
|
+
onSwipeBack?: () => void;
|
|
27
27
|
/**
|
|
28
28
|
* callback начала анимации свайпа назад.
|
|
29
29
|
*/
|
|
30
|
-
onSwipeBackStart
|
|
30
|
+
onSwipeBackStart?: (activePanel: string | null) => void | 'prevent';
|
|
31
31
|
/**
|
|
32
32
|
* callback завершения анимации отмененного пользователем свайпа
|
|
33
33
|
*/
|
|
34
|
-
onSwipeBackCancel
|
|
34
|
+
onSwipeBackCancel?: () => void;
|
|
35
35
|
history?: string[];
|
|
36
|
-
isBackCheck
|
|
36
|
+
isBackCheck?: (params: TransitionParams) => boolean;
|
|
37
37
|
/**
|
|
38
38
|
* @ignore
|
|
39
39
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewInfinite.d.ts","sourceRoot":"","sources":["../../../../src/components/View/ViewInfinite.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAY,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAiB,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAEL,8BAA8B,EAC/B,MAAM,yCAAyC,CAAC;AAIjD,OAAO,EAAmB,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAWpF,UAAU,OAAO;IACf,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC5C;AAED,UAAU,YAAY;IACpB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAID,eAAO,IAAI,YAAY,EAAE,YAAiB,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE1E,MAAM,WAAW,iBACf,SAAQ,yBAAyB,CAAC,WAAW,CAAC,EAC5C,WAAW,EACX,UAAU;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,
|
|
1
|
+
{"version":3,"file":"ViewInfinite.d.ts","sourceRoot":"","sources":["../../../../src/components/View/ViewInfinite.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAY,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAiB,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAEL,8BAA8B,EAC/B,MAAM,yCAAyC,CAAC;AAIjD,OAAO,EAAmB,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAWpF,UAAU,OAAO;IACf,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC5C;AAED,UAAU,YAAY;IACpB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAID,eAAO,IAAI,YAAY,EAAE,YAAiB,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE1E,MAAM,WAAW,iBACf,SAAQ,yBAAyB,CAAC,WAAW,CAAC,EAC5C,WAAW,EACX,UAAU;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,SAAS,CAAC;IACpE;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACpD;;OAEG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC;;OAEG;IACH,cAAc,CAAC,EAAE,8BAA8B,CAAC;IAChD;;OAEG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAElB,aAAa,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;IAE3C,YAAY,EAAE,OAAO,CAAC;CACvB;AAilBD,eAAO,MAAM,YAAY,+CAYxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/View/ViewInfinite.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { canUseDOM, DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { animationEvent, transitionEvent } from '../../lib/supportEvents';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasPlatform, HTMLAttributesWithRootRef } from '../../types';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { NavViewIdContext } from '../NavIdContext/NavIdContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { NavTransitionDirectionProvider } from '../NavTransitionDirectionContext/NavTransitionDirectionContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport {\n getSwipeBackPredicates,\n hasHorizontalScrollableElementWithScrolledToLeft,\n swipeBackExcluded,\n} from './utils';\nimport styles from './View.module.css';\n\nconst warn = warnOnce('ViewInfinite');\n\ninterface Scrolls {\n [index: string]: Array<number | undefined>;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport type TransitionParams = { from: string | null; to: string | null };\n\nexport interface ViewInfiniteProps\n extends HTMLAttributesWithRootRef<HTMLElement>,\n HasPlatform,\n NavIdProps {\n activePanel: string;\n onTransition?(params: TransitionParams & { isBack: boolean }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n isBackCheck?(params: TransitionParams): boolean;\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewInfiniteState {\n animated: boolean;\n\n visiblePanels: Array<string | null>;\n activePanel: string | null;\n isBack?: boolean;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack?: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: 'success' | 'fail' | null;\n\n browserSwipe: boolean;\n}\n\nclass ViewInfiniteComponent extends React.Component<\n ViewInfiniteProps & DOMProps,\n ViewInfiniteState\n> {\n constructor(props: ViewInfiniteProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: undefined,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewInfiniteProps> = {\n history: [],\n };\n\n private swipeBackPrevented = false;\n private scrolls = scrollsCache[getNavId(this.props, warn) as string] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private animationFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement | null } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n }\n\n componentDidUpdate(prevProps: ViewInfiniteProps, prevState: ViewInfiniteState) {\n // Нужен переход\n if (\n prevProps.activePanel !== this.props.activePanel &&\n !prevState.swipingBack &&\n !prevState.browserSwipe\n ) {\n let isBack = false;\n\n if (this.props.isBackCheck) {\n isBack = this.props.isBackCheck({\n from: prevProps.activePanel,\n to: this.props.activePanel,\n });\n } else {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n isBack = firstLayerId === this.props.activePanel;\n }\n\n this.blurActiveElement();\n\n const prevScrolls = this.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...this.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n this.scrolls = scrolls;\n\n if (this.shouldDisableTransitionMotion()) {\n this.flushTransition(prevProps.activePanel, isBack);\n } else {\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n this.animationFinishTimeout = setTimeout(\n this.transitionEndHandler,\n this.props.platform === 'android' || this.props.platform === 'vkcom' ? 300 : 600,\n );\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.state.swipeBackNextPanel;\n const prevPanel = this.state.swipeBackPrevPanel;\n let scrollPosition: undefined | number = undefined;\n\n this.scrolls = {\n ...this.scrolls,\n };\n\n if (prevPanel !== null) {\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n this.scrolls[prevPanel] = prevPanelScrolls;\n }\n if (nextPanel !== null) {\n const newPanelScrolls = [...(this.scrolls[nextPanel] || [])];\n scrollPosition = newPanelScrolls.pop();\n this.scrolls[nextPanel] = newPanelScrolls;\n }\n\n this.setState(\n {\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n },\n () => {\n this.props.scroll?.scrollTo(0, scrollPosition);\n prevProps.onTransition &&\n prevProps.onTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n },\n );\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(\n this.pickPanel(this.state.swipeBackNextPanel),\n this.swipingBackTransitionEndHandler,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (\n prevState.swipeBackResult === 'fail' &&\n !this.state.swipeBackResult &&\n this.state.activePanel !== null\n ) {\n const newPanelScrolls = [...(this.scrolls[this.state.activePanel] || [])];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll?.scrollTo(0, scrollPosition);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return (\n this.props.configProvider?.transitionMotionEnabled === false ||\n !this.props.splitCol?.animate ||\n this.props.platform === 'vkcom'\n );\n }\n\n waitTransitionFinish(\n elem: HTMLElement | null | undefined,\n eventHandler: TransitionEventHandler,\n ): void {\n if (transitionEvent.supported && transitionEvent.name && elem) {\n elem.removeEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n elem.addEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n } else {\n if (this.transitionFinishTimeout) {\n clearTimeout(this.transitionFinishTimeout);\n }\n\n this.transitionFinishTimeout = setTimeout(\n eventHandler,\n this.props.platform === 'android' || this.props.platform === 'vkcom' ? 300 : 600,\n );\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document?.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string | null) {\n if (id === null) {\n return undefined;\n }\n return this.panelNodes[id];\n }\n\n flushTransition(prevPanel: string, isBack: boolean) {\n const activePanel = this.props.activePanel;\n\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n const newPanelScrolls = [...(this.scrolls[activePanel] || [])];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n if (isBack) {\n this.scrolls = {\n ...this.scrolls,\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n };\n }\n\n this.setState(\n {\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack,\n },\n () => {\n this.props.scroll?.scrollTo(0, isBack ? scrollPosition : 0);\n this.props.onTransition &&\n this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n },\n );\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['animation-ios-next-forward'],\n styles['animation-ios-prev-back'],\n styles['animation-view-next-forward'],\n styles['animation-view-prev-back'],\n ].includes(e.animationName)) &&\n this.state.prevPanel !== null\n ) {\n this.flushTransition(this.state.prevPanel, Boolean(this.state.isBack));\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e.propertyName.includes('transform') &&\n e.target === this.pickPanel(this.state.swipeBackNextPanel))\n ) {\n switch (this.state.swipeBackResult) {\n case 'fail':\n this.onSwipeBackCancel();\n break;\n case 'success':\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext = (event: TouchEvent) => {\n if (this.state.browserSwipe) {\n return;\n }\n const { swipeBackTriggered, viewportStartEdgeTouched, viewportEndEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, this.window!.innerWidth);\n\n if ((viewportStartEdgeTouched || viewportEndEdgeTouched) && swipeBackTriggered) {\n this.setState({ browserSwipe: true });\n }\n };\n\n handleTouchMoveXForIOSSwipeBackSimulation = (event: TouchEvent) => {\n if (this.swipeBackPrevented || swipeBackExcluded(event)) {\n return;\n }\n\n const { swipedToOpposite, swipeBackTriggered, viewportStartEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, this.window!.innerWidth);\n\n if (this.state.animated && swipeBackTriggered) {\n return;\n }\n\n if (!this.state.swipingBack && this.props.history && this.props.history.length > 1) {\n if (swipedToOpposite) {\n this.swipeBackPrevented = true;\n return;\n }\n\n if (!swipeBackTriggered) {\n return;\n }\n\n if (\n !viewportStartEdgeTouched &&\n hasHorizontalScrollableElementWithScrolledToLeft(event.originalEvent.target as HTMLElement)\n ) {\n this.swipeBackPrevented = true;\n return;\n }\n // Начался свайп назад\n if (this.props.onSwipeBackStart) {\n const payload = this.props.onSwipeBackStart(this.state.activePanel);\n if (payload === 'prevent') {\n this.swipeBackPrevented = true;\n return;\n }\n }\n\n if (this.state.activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n this.blurActiveElement();\n const prevScrolls = this.scrolls[this.state.activePanel] || [];\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n }\n\n this.setState({\n swipingBack: true,\n swipeBackStartX: event.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n\n if (this.state.swipingBack) {\n if (event.shiftX < 0) {\n this.setState({ swipeBackShift: 0 });\n } else if (event.shiftX > this.window!.innerWidth - this.state.swipeBackStartX) {\n this.setState({ swipeBackShift: this.window!.innerWidth });\n } else {\n this.setState({ swipeBackShift: event.shiftX });\n }\n }\n };\n\n handleTouchEndForIOSSwipeBackSimulation = (event: TouchEvent) => {\n this.swipeBackPrevented = false;\n\n if (this.state.swipingBack && this.window) {\n const speed = (this.state.swipeBackShift / event.duration) * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipeBackShift >= this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: 'success' });\n } else {\n this.setState({ swipeBackResult: 'fail' });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string | undefined): React.CSSProperties {\n if (!canUseDOM || !this.window) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${\n -50 + (this.state.swipeBackShift * 100) / this.window.innerWidth / 2\n }%`;\n let prevPanelShadow =\n (0.3 * (this.window.innerWidth - this.state.swipeBackShift)) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n platform,\n activePanel: _1,\n splitCol,\n configProvider,\n history,\n id,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel,\n window,\n document,\n scroll,\n isBackCheck,\n className,\n ...restProps\n } = this.props;\n const {\n prevPanel,\n nextPanel,\n activePanel,\n isBack,\n animated,\n swipeBackPrevPanel,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n } = this.state;\n\n const panels = this.panels\n .filter((panel) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && this.state.visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n })\n .sort((panel) => {\n const panelId = getNavId(panel.props, warn);\n const isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;\n\n if (isNextPanel) {\n return swipingBack || this.state.isBack ? -1 : 1;\n }\n\n if (isPrevPanel) {\n return swipingBack || this.state.isBack ? 1 : -1;\n }\n\n return 0;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n const iOSSwipeBackSimulationEnabled =\n !disableAnimation && platform === 'ios' && configProvider?.isWebView && Boolean(onSwipeBack);\n\n return (\n <NavViewIdContext.Provider value={id || nav}>\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === 'ios' && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && this.state.animated && styles['View--animated'],\n !disableAnimation && this.state.swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={\n iOSSwipeBackSimulationEnabled\n ? this.handleTouchMoveXForIOSSwipeBackSimulation\n : platform === 'ios'\n ? this.handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext\n : undefined\n }\n onEnd={\n iOSSwipeBackSimulationEnabled ? this.handleTouchEndForIOSSwipeBackSimulation : undefined\n }\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const scrollList = (panelId && this.scrolls[panelId]) || [];\n const scroll = scrollList[scrollList.length - 1] || 0;\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === 'success' && styles['View__panel--swipe-back-success'],\n swipeBackResult === 'fail' && styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (this.panelNodes[panelId] = el)}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{ marginTop: compensateScroll ? -scroll : undefined }}\n >\n <NavTransitionDirectionProvider isBack={swipingBack || isBack}>\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </NavTransitionDirectionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n </NavViewIdContext.Provider>\n );\n }\n}\n\nexport const ViewInfinite = withContext(\n withContext(\n withContext(\n withPlatform(withDOM<ViewInfiniteProps>(ViewInfiniteComponent)),\n SplitColContext,\n 'splitCol',\n ),\n ConfigProviderContext,\n 'configProvider',\n ),\n ScrollContext,\n 'scroll',\n);\n"],"names":["ViewInfinite","scrollsCache","warn","warnOnce","React","ViewInfiniteComponent","Component","document","props","window","panels","Children","toArray","children","componentWillUnmount","id","getNavId","scrolls","animationFinishTimeout","clearTimeout","componentDidUpdate","prevProps","prevState","activePanel","swipingBack","browserSwipe","isBack","isBackCheck","from","to","firstLayerId","map","panel","find","blurActiveElement","prevScrolls","scroll","getScroll","y","shouldDisableTransitionMotion","flushTransition","setState","visiblePanels","prevPanel","nextPanel","animated","animationEvent","supported","setTimeout","transitionEndHandler","platform","state","swipeBackNextPanel","swipeBackPrevPanel","scrollPosition","undefined","prevPanelScrolls","slice","newPanelScrolls","pop","swipeBackResult","swipeBackStartX","swipeBackShift","scrollTo","onTransition","waitTransitionFinish","pickPanel","swipingBackTransitionEndHandler","configProvider","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","name","removeEventListener","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","onSwipeBackSuccess","onSwipeBack","onSwipeBackCancel","calcPanelSwipeStyles","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","innerWidth","prevPanelShadow","boxShadow","transform","WebkitTransform","render","_1","history","nav","onSwipeBackStart","className","restProps","filter","includes","sort","isPrevPanel","isNextPanel","disableAnimation","iOSSwipeBackSimulationEnabled","isWebView","Boolean","NavViewIdContext","Provider","value","Touch","classNames","onMoveX","handleTouchMoveXForIOSSwipeBackSimulation","handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext","onEnd","handleTouchEndForIOSSwipeBackSimulation","div","compensateScroll","isTransitionTarget","scrollList","length","onAnimationEnd","ref","el","style","key","marginTop","NavTransitionDirectionProvider","NavTransitionProvider","entering","constructor","swipeBackPrevented","e","animationName","propertyName","target","event","swipeBackTriggered","viewportStartEdgeTouched","viewportEndEdgeTouched","getSwipeBackPredicates","startX","shiftX","swipeBackExcluded","swipedToOpposite","hasHorizontalScrollableElementWithScrolledToLeft","originalEvent","payload","speed","duration","defaultProps","withContext","withPlatform","withDOM","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/View/ViewInfinite.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { canUseDOM, DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { animationEvent, transitionEvent } from '../../lib/supportEvents';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasPlatform, HTMLAttributesWithRootRef } from '../../types';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { NavViewIdContext } from '../NavIdContext/NavIdContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { NavTransitionDirectionProvider } from '../NavTransitionDirectionContext/NavTransitionDirectionContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport {\n getSwipeBackPredicates,\n hasHorizontalScrollableElementWithScrolledToLeft,\n swipeBackExcluded,\n} from './utils';\nimport styles from './View.module.css';\n\nconst warn = warnOnce('ViewInfinite');\n\ninterface Scrolls {\n [index: string]: Array<number | undefined>;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport type TransitionParams = { from: string | null; to: string | null };\n\nexport interface ViewInfiniteProps\n extends HTMLAttributesWithRootRef<HTMLElement>,\n HasPlatform,\n NavIdProps {\n activePanel: string;\n onTransition?: (params: TransitionParams & { isBack: boolean }) => void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?: () => void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?: (activePanel: string | null) => void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?: () => void;\n history?: string[];\n isBackCheck?: (params: TransitionParams) => boolean;\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewInfiniteState {\n animated: boolean;\n\n visiblePanels: Array<string | null>;\n activePanel: string | null;\n isBack?: boolean;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack?: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: 'success' | 'fail' | null;\n\n browserSwipe: boolean;\n}\n\nclass ViewInfiniteComponent extends React.Component<\n ViewInfiniteProps & DOMProps,\n ViewInfiniteState\n> {\n constructor(props: ViewInfiniteProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: undefined,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewInfiniteProps> = {\n history: [],\n };\n\n private swipeBackPrevented = false;\n private scrolls = scrollsCache[getNavId(this.props, warn) as string] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private animationFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement | null } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n }\n\n componentDidUpdate(prevProps: ViewInfiniteProps, prevState: ViewInfiniteState) {\n // Нужен переход\n if (\n prevProps.activePanel !== this.props.activePanel &&\n !prevState.swipingBack &&\n !prevState.browserSwipe\n ) {\n let isBack = false;\n\n if (this.props.isBackCheck) {\n isBack = this.props.isBackCheck({\n from: prevProps.activePanel,\n to: this.props.activePanel,\n });\n } else {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n isBack = firstLayerId === this.props.activePanel;\n }\n\n this.blurActiveElement();\n\n const prevScrolls = this.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...this.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n this.scrolls = scrolls;\n\n if (this.shouldDisableTransitionMotion()) {\n this.flushTransition(prevProps.activePanel, isBack);\n } else {\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n this.animationFinishTimeout = setTimeout(\n this.transitionEndHandler,\n this.props.platform === 'android' || this.props.platform === 'vkcom' ? 300 : 600,\n );\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.state.swipeBackNextPanel;\n const prevPanel = this.state.swipeBackPrevPanel;\n let scrollPosition: undefined | number = undefined;\n\n this.scrolls = {\n ...this.scrolls,\n };\n\n if (prevPanel !== null) {\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n this.scrolls[prevPanel] = prevPanelScrolls;\n }\n if (nextPanel !== null) {\n const newPanelScrolls = [...(this.scrolls[nextPanel] || [])];\n scrollPosition = newPanelScrolls.pop();\n this.scrolls[nextPanel] = newPanelScrolls;\n }\n\n this.setState(\n {\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n },\n () => {\n this.props.scroll?.scrollTo(0, scrollPosition);\n prevProps.onTransition &&\n prevProps.onTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n },\n );\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(\n this.pickPanel(this.state.swipeBackNextPanel),\n this.swipingBackTransitionEndHandler,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (\n prevState.swipeBackResult === 'fail' &&\n !this.state.swipeBackResult &&\n this.state.activePanel !== null\n ) {\n const newPanelScrolls = [...(this.scrolls[this.state.activePanel] || [])];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll?.scrollTo(0, scrollPosition);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return (\n this.props.configProvider?.transitionMotionEnabled === false ||\n !this.props.splitCol?.animate ||\n this.props.platform === 'vkcom'\n );\n }\n\n waitTransitionFinish(\n elem: HTMLElement | null | undefined,\n eventHandler: TransitionEventHandler,\n ): void {\n if (transitionEvent.supported && transitionEvent.name && elem) {\n elem.removeEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n elem.addEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n } else {\n if (this.transitionFinishTimeout) {\n clearTimeout(this.transitionFinishTimeout);\n }\n\n this.transitionFinishTimeout = setTimeout(\n eventHandler,\n this.props.platform === 'android' || this.props.platform === 'vkcom' ? 300 : 600,\n );\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document?.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string | null) {\n if (id === null) {\n return undefined;\n }\n return this.panelNodes[id];\n }\n\n flushTransition(prevPanel: string, isBack: boolean) {\n const activePanel = this.props.activePanel;\n\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n const newPanelScrolls = [...(this.scrolls[activePanel] || [])];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n if (isBack) {\n this.scrolls = {\n ...this.scrolls,\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n };\n }\n\n this.setState(\n {\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack,\n },\n () => {\n this.props.scroll?.scrollTo(0, isBack ? scrollPosition : 0);\n this.props.onTransition &&\n this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n },\n );\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['animation-ios-next-forward'],\n styles['animation-ios-prev-back'],\n styles['animation-view-next-forward'],\n styles['animation-view-prev-back'],\n ].includes(e.animationName)) &&\n this.state.prevPanel !== null\n ) {\n this.flushTransition(this.state.prevPanel, Boolean(this.state.isBack));\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e.propertyName.includes('transform') &&\n e.target === this.pickPanel(this.state.swipeBackNextPanel))\n ) {\n switch (this.state.swipeBackResult) {\n case 'fail':\n this.onSwipeBackCancel();\n break;\n case 'success':\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext = (event: TouchEvent) => {\n if (this.state.browserSwipe) {\n return;\n }\n const { swipeBackTriggered, viewportStartEdgeTouched, viewportEndEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, this.window!.innerWidth);\n\n if ((viewportStartEdgeTouched || viewportEndEdgeTouched) && swipeBackTriggered) {\n this.setState({ browserSwipe: true });\n }\n };\n\n handleTouchMoveXForIOSSwipeBackSimulation = (event: TouchEvent) => {\n if (this.swipeBackPrevented || swipeBackExcluded(event)) {\n return;\n }\n\n const { swipedToOpposite, swipeBackTriggered, viewportStartEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, this.window!.innerWidth);\n\n if (this.state.animated && swipeBackTriggered) {\n return;\n }\n\n if (!this.state.swipingBack && this.props.history && this.props.history.length > 1) {\n if (swipedToOpposite) {\n this.swipeBackPrevented = true;\n return;\n }\n\n if (!swipeBackTriggered) {\n return;\n }\n\n if (\n !viewportStartEdgeTouched &&\n hasHorizontalScrollableElementWithScrolledToLeft(event.originalEvent.target as HTMLElement)\n ) {\n this.swipeBackPrevented = true;\n return;\n }\n // Начался свайп назад\n if (this.props.onSwipeBackStart) {\n const payload = this.props.onSwipeBackStart(this.state.activePanel);\n if (payload === 'prevent') {\n this.swipeBackPrevented = true;\n return;\n }\n }\n\n if (this.state.activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n this.blurActiveElement();\n const prevScrolls = this.scrolls[this.state.activePanel] || [];\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n }\n\n this.setState({\n swipingBack: true,\n swipeBackStartX: event.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n\n if (this.state.swipingBack) {\n if (event.shiftX < 0) {\n this.setState({ swipeBackShift: 0 });\n } else if (event.shiftX > this.window!.innerWidth - this.state.swipeBackStartX) {\n this.setState({ swipeBackShift: this.window!.innerWidth });\n } else {\n this.setState({ swipeBackShift: event.shiftX });\n }\n }\n };\n\n handleTouchEndForIOSSwipeBackSimulation = (event: TouchEvent) => {\n this.swipeBackPrevented = false;\n\n if (this.state.swipingBack && this.window) {\n const speed = (this.state.swipeBackShift / event.duration) * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipeBackShift >= this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: 'success' });\n } else {\n this.setState({ swipeBackResult: 'fail' });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string | undefined): React.CSSProperties {\n if (!canUseDOM || !this.window) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${\n -50 + (this.state.swipeBackShift * 100) / this.window.innerWidth / 2\n }%`;\n let prevPanelShadow =\n (0.3 * (this.window.innerWidth - this.state.swipeBackShift)) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n platform,\n activePanel: _1,\n splitCol,\n configProvider,\n history,\n id,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel,\n window,\n document,\n scroll,\n isBackCheck,\n className,\n ...restProps\n } = this.props;\n const {\n prevPanel,\n nextPanel,\n activePanel,\n isBack,\n animated,\n swipeBackPrevPanel,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n } = this.state;\n\n const panels = this.panels\n .filter((panel) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && this.state.visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n })\n .sort((panel) => {\n const panelId = getNavId(panel.props, warn);\n const isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;\n\n if (isNextPanel) {\n return swipingBack || this.state.isBack ? -1 : 1;\n }\n\n if (isPrevPanel) {\n return swipingBack || this.state.isBack ? 1 : -1;\n }\n\n return 0;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n const iOSSwipeBackSimulationEnabled =\n !disableAnimation && platform === 'ios' && configProvider?.isWebView && Boolean(onSwipeBack);\n\n return (\n <NavViewIdContext.Provider value={id || nav}>\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === 'ios' && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && this.state.animated && styles['View--animated'],\n !disableAnimation && this.state.swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={\n iOSSwipeBackSimulationEnabled\n ? this.handleTouchMoveXForIOSSwipeBackSimulation\n : platform === 'ios'\n ? this.handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext\n : undefined\n }\n onEnd={\n iOSSwipeBackSimulationEnabled ? this.handleTouchEndForIOSSwipeBackSimulation : undefined\n }\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const scrollList = (panelId && this.scrolls[panelId]) || [];\n const scroll = scrollList[scrollList.length - 1] || 0;\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === 'success' && styles['View__panel--swipe-back-success'],\n swipeBackResult === 'fail' && styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (this.panelNodes[panelId] = el)}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{ marginTop: compensateScroll ? -scroll : undefined }}\n >\n <NavTransitionDirectionProvider isBack={swipingBack || isBack}>\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </NavTransitionDirectionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n </NavViewIdContext.Provider>\n );\n }\n}\n\nexport const ViewInfinite = withContext(\n withContext(\n withContext(\n withPlatform(withDOM<ViewInfiniteProps>(ViewInfiniteComponent)),\n SplitColContext,\n 'splitCol',\n ),\n ConfigProviderContext,\n 'configProvider',\n ),\n ScrollContext,\n 'scroll',\n);\n"],"names":["ViewInfinite","scrollsCache","warn","warnOnce","React","ViewInfiniteComponent","Component","document","props","window","panels","Children","toArray","children","componentWillUnmount","id","getNavId","scrolls","animationFinishTimeout","clearTimeout","componentDidUpdate","prevProps","prevState","activePanel","swipingBack","browserSwipe","isBack","isBackCheck","from","to","firstLayerId","map","panel","find","blurActiveElement","prevScrolls","scroll","getScroll","y","shouldDisableTransitionMotion","flushTransition","setState","visiblePanels","prevPanel","nextPanel","animated","animationEvent","supported","setTimeout","transitionEndHandler","platform","state","swipeBackNextPanel","swipeBackPrevPanel","scrollPosition","undefined","prevPanelScrolls","slice","newPanelScrolls","pop","swipeBackResult","swipeBackStartX","swipeBackShift","scrollTo","onTransition","waitTransitionFinish","pickPanel","swipingBackTransitionEndHandler","configProvider","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","name","removeEventListener","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","onSwipeBackSuccess","onSwipeBack","onSwipeBackCancel","calcPanelSwipeStyles","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","innerWidth","prevPanelShadow","boxShadow","transform","WebkitTransform","render","_1","history","nav","onSwipeBackStart","className","restProps","filter","includes","sort","isPrevPanel","isNextPanel","disableAnimation","iOSSwipeBackSimulationEnabled","isWebView","Boolean","NavViewIdContext","Provider","value","Touch","classNames","onMoveX","handleTouchMoveXForIOSSwipeBackSimulation","handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext","onEnd","handleTouchEndForIOSSwipeBackSimulation","div","compensateScroll","isTransitionTarget","scrollList","length","onAnimationEnd","ref","el","style","key","marginTop","NavTransitionDirectionProvider","NavTransitionProvider","entering","constructor","swipeBackPrevented","e","animationName","propertyName","target","event","swipeBackTriggered","viewportStartEdgeTouched","viewportEndEdgeTouched","getSwipeBackPredicates","startX","shiftX","swipeBackExcluded","swipedToOpposite","hasHorizontalScrollableElementWithScrolledToLeft","originalEvent","payload","speed","duration","defaultProps","withContext","withPlatform","withDOM","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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"}
|
|
@@ -5,13 +5,13 @@ export interface UseDateInputDependencies<T, D> {
|
|
|
5
5
|
autoFocus?: boolean;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
value?: D;
|
|
8
|
-
elementsConfig(index: number)
|
|
8
|
+
elementsConfig: (index: number) => {
|
|
9
9
|
length: number;
|
|
10
10
|
min: number;
|
|
11
11
|
max: number;
|
|
12
12
|
};
|
|
13
|
-
onInternalValueChange(value: string[])
|
|
14
|
-
getInternalValue(value?: D | undefined)
|
|
13
|
+
onInternalValueChange: (value: string[]) => void;
|
|
14
|
+
getInternalValue: (value?: D | undefined) => string[];
|
|
15
15
|
onChange?: (value?: D | undefined) => void;
|
|
16
16
|
}
|
|
17
17
|
export declare function useDateInput<T extends HTMLElement, D>({ maxElement, refs, autoFocus, disabled, elementsConfig, onChange, onInternalValueChange, getInternalValue, value, }: UseDateInputDependencies<T, D>): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDateInput.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDateInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,wBAAwB,CAAC,CAAC,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,cAAc,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useDateInput.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDateInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,wBAAwB,CAAC,CAAC,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QACjC,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,MAAM,EAAE,CAAC;IACtD,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,EACrD,UAAU,EACV,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,GACN,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;;;;;uBAgFzB,mBAAmB,CAAC,eAAe,CAAC;;;;EA8E3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useDateInput.ts"],"sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../lib/dom';\nimport { useBooleanState } from './useBooleanState';\nimport { useGlobalEventListener } from './useGlobalEventListener';\n\nexport interface UseDateInputDependencies<T, D> {\n maxElement: number;\n refs: Array<React.RefObject<T>>;\n autoFocus?: boolean;\n disabled?: boolean;\n value?: D;\n elementsConfig(index: number): {\n length: number;\n min: number;\n max: number;\n };\n onInternalValueChange(value: string[]): void;\n getInternalValue(value?: D | undefined): string[];\n onChange?: (value?: D | undefined) => void;\n}\n\nexport function useDateInput<T extends HTMLElement, D>({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n}: UseDateInputDependencies<T, D>) {\n const { document } = useDOM();\n const { value: open, setTrue: openCalendar, setFalse: closeCalendar } = useBooleanState(false);\n const rootRef = React.useRef<HTMLDivElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n const [internalValue, setInternalValue] = React.useState<string[]>([]);\n const [focusedElement, setFocusedElement] = React.useState<number | null>(null);\n const { window } = useDOM();\n\n const removeFocusFromField = React.useCallback(() => {\n if (focusedElement !== null) {\n setFocusedElement(null);\n closeCalendar();\n window!.getSelection()?.removeAllRanges();\n setInternalValue(getInternalValue(value));\n }\n }, [focusedElement, closeCalendar, getInternalValue, value, window]);\n\n const handleClickOutside = React.useCallback(\n (e: MouseEvent) => {\n if (\n !rootRef.current?.contains(e.target as Node | null) &&\n !calendarRef.current?.contains(e.target as Node | null)\n ) {\n removeFocusFromField();\n }\n },\n [removeFocusFromField],\n );\n\n const selectFirst = React.useCallback(() => {\n setFocusedElement(0);\n }, []);\n\n useGlobalEventListener(document, 'click', handleClickOutside, {\n capture: true,\n });\n\n React.useEffect(() => {\n setInternalValue(getInternalValue(value));\n }, [getInternalValue, value]);\n\n React.useEffect(() => {\n if (autoFocus) {\n selectFirst();\n }\n }, [autoFocus, selectFirst]);\n\n React.useEffect(() => {\n if (disabled || focusedElement === null) {\n return;\n }\n\n const range = window!.document.createRange();\n\n let element = refs[focusedElement].current;\n\n if (element) {\n element.focus();\n openCalendar();\n range.selectNodeContents(element as Node);\n\n const selection = window!.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }, [disabled, focusedElement, openCalendar, refs, window]);\n\n const clear = React.useCallback(() => {\n onChange?.(undefined);\n selectFirst();\n }, [onChange, selectFirst]);\n\n const handleFieldEnter = React.useCallback(() => {\n if (!open) {\n selectFirst();\n }\n }, [open, selectFirst]);\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (focusedElement === null) {\n return;\n }\n\n const _value = [...internalValue];\n const config = elementsConfig(focusedElement);\n\n if (/^\\d+$/.test(e.key)) {\n if (_value[focusedElement].length >= config.length) {\n _value[focusedElement] = e.key;\n } else {\n _value[focusedElement] += e.key;\n if (_value[focusedElement].length >= config.length && focusedElement < maxElement) {\n setFocusedElement(focusedElement + 1);\n }\n }\n } else if (e.key === 'Backspace') {\n if (!_value[focusedElement]) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else {\n _value[focusedElement] = _value[focusedElement].slice(0, -1);\n }\n } else if (e.key === 'ArrowDown' || e.key === 'Down') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue <= config.min ? config.max : currentValue - 1,\n ).padStart(config.length, '0');\n } else if (e.key === 'ArrowUp' || e.key === 'Up') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue >= config.max ? config.min : currentValue + 1,\n ).padStart(config.length, '0');\n } else if (\n e.key === 'Enter' ||\n (e.key === 'Tab' && focusedElement === maxElement) ||\n (e.key === 'Tab' && e.shiftKey && focusedElement === 0)\n ) {\n removeFocusFromField();\n return;\n } else if (e.key === 'ArrowLeft' || e.key === 'Left' || (e.key === 'Tab' && e.shiftKey)) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else if (e.key === 'ArrowRight' || e.key === 'Right' || e.key === 'Tab') {\n setFocusedElement(focusedElement >= maxElement ? 0 : focusedElement + 1);\n } else if (e.key === 'Delete' || e.key === 'Del') {\n _value[focusedElement] = '';\n } else {\n return;\n }\n\n e.preventDefault();\n setInternalValue(_value);\n onInternalValueChange(_value);\n },\n [\n elementsConfig,\n focusedElement,\n internalValue,\n maxElement,\n onInternalValueChange,\n removeFocusFromField,\n ],\n );\n\n return {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n focusedElement,\n setFocusedElement,\n handleKeyDown,\n clear,\n handleFieldEnter,\n removeFocusFromField,\n };\n}\n"],"names":["useDateInput","maxElement","refs","autoFocus","disabled","elementsConfig","onChange","onInternalValueChange","getInternalValue","value","document","useDOM","open","setTrue","openCalendar","setFalse","closeCalendar","useBooleanState","rootRef","React","useRef","calendarRef","internalValue","setInternalValue","useState","focusedElement","setFocusedElement","window","removeFocusFromField","useCallback","getSelection","removeAllRanges","handleClickOutside","e","current","contains","target","selectFirst","useGlobalEventListener","capture","useEffect","range","createRange","element","focus","selectNodeContents","selection","addRange","clear","undefined","handleFieldEnter","handleKeyDown","_value","config","test","key","length","slice","currentValue","Number","String","min","max","padStart","shiftKey","preventDefault"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useDateInput.ts"],"sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../lib/dom';\nimport { useBooleanState } from './useBooleanState';\nimport { useGlobalEventListener } from './useGlobalEventListener';\n\nexport interface UseDateInputDependencies<T, D> {\n maxElement: number;\n refs: Array<React.RefObject<T>>;\n autoFocus?: boolean;\n disabled?: boolean;\n value?: D;\n elementsConfig: (index: number) => {\n length: number;\n min: number;\n max: number;\n };\n onInternalValueChange: (value: string[]) => void;\n getInternalValue: (value?: D | undefined) => string[];\n onChange?: (value?: D | undefined) => void;\n}\n\nexport function useDateInput<T extends HTMLElement, D>({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n}: UseDateInputDependencies<T, D>) {\n const { document } = useDOM();\n const { value: open, setTrue: openCalendar, setFalse: closeCalendar } = useBooleanState(false);\n const rootRef = React.useRef<HTMLDivElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n const [internalValue, setInternalValue] = React.useState<string[]>([]);\n const [focusedElement, setFocusedElement] = React.useState<number | null>(null);\n const { window } = useDOM();\n\n const removeFocusFromField = React.useCallback(() => {\n if (focusedElement !== null) {\n setFocusedElement(null);\n closeCalendar();\n window!.getSelection()?.removeAllRanges();\n setInternalValue(getInternalValue(value));\n }\n }, [focusedElement, closeCalendar, getInternalValue, value, window]);\n\n const handleClickOutside = React.useCallback(\n (e: MouseEvent) => {\n if (\n !rootRef.current?.contains(e.target as Node | null) &&\n !calendarRef.current?.contains(e.target as Node | null)\n ) {\n removeFocusFromField();\n }\n },\n [removeFocusFromField],\n );\n\n const selectFirst = React.useCallback(() => {\n setFocusedElement(0);\n }, []);\n\n useGlobalEventListener(document, 'click', handleClickOutside, {\n capture: true,\n });\n\n React.useEffect(() => {\n setInternalValue(getInternalValue(value));\n }, [getInternalValue, value]);\n\n React.useEffect(() => {\n if (autoFocus) {\n selectFirst();\n }\n }, [autoFocus, selectFirst]);\n\n React.useEffect(() => {\n if (disabled || focusedElement === null) {\n return;\n }\n\n const range = window!.document.createRange();\n\n let element = refs[focusedElement].current;\n\n if (element) {\n element.focus();\n openCalendar();\n range.selectNodeContents(element as Node);\n\n const selection = window!.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }, [disabled, focusedElement, openCalendar, refs, window]);\n\n const clear = React.useCallback(() => {\n onChange?.(undefined);\n selectFirst();\n }, [onChange, selectFirst]);\n\n const handleFieldEnter = React.useCallback(() => {\n if (!open) {\n selectFirst();\n }\n }, [open, selectFirst]);\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (focusedElement === null) {\n return;\n }\n\n const _value = [...internalValue];\n const config = elementsConfig(focusedElement);\n\n if (/^\\d+$/.test(e.key)) {\n if (_value[focusedElement].length >= config.length) {\n _value[focusedElement] = e.key;\n } else {\n _value[focusedElement] += e.key;\n if (_value[focusedElement].length >= config.length && focusedElement < maxElement) {\n setFocusedElement(focusedElement + 1);\n }\n }\n } else if (e.key === 'Backspace') {\n if (!_value[focusedElement]) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else {\n _value[focusedElement] = _value[focusedElement].slice(0, -1);\n }\n } else if (e.key === 'ArrowDown' || e.key === 'Down') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue <= config.min ? config.max : currentValue - 1,\n ).padStart(config.length, '0');\n } else if (e.key === 'ArrowUp' || e.key === 'Up') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue >= config.max ? config.min : currentValue + 1,\n ).padStart(config.length, '0');\n } else if (\n e.key === 'Enter' ||\n (e.key === 'Tab' && focusedElement === maxElement) ||\n (e.key === 'Tab' && e.shiftKey && focusedElement === 0)\n ) {\n removeFocusFromField();\n return;\n } else if (e.key === 'ArrowLeft' || e.key === 'Left' || (e.key === 'Tab' && e.shiftKey)) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else if (e.key === 'ArrowRight' || e.key === 'Right' || e.key === 'Tab') {\n setFocusedElement(focusedElement >= maxElement ? 0 : focusedElement + 1);\n } else if (e.key === 'Delete' || e.key === 'Del') {\n _value[focusedElement] = '';\n } else {\n return;\n }\n\n e.preventDefault();\n setInternalValue(_value);\n onInternalValueChange(_value);\n },\n [\n elementsConfig,\n focusedElement,\n internalValue,\n maxElement,\n onInternalValueChange,\n removeFocusFromField,\n ],\n );\n\n return {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n focusedElement,\n setFocusedElement,\n handleKeyDown,\n clear,\n handleFieldEnter,\n removeFocusFromField,\n };\n}\n"],"names":["useDateInput","maxElement","refs","autoFocus","disabled","elementsConfig","onChange","onInternalValueChange","getInternalValue","value","document","useDOM","open","setTrue","openCalendar","setFalse","closeCalendar","useBooleanState","rootRef","React","useRef","calendarRef","internalValue","setInternalValue","useState","focusedElement","setFocusedElement","window","removeFocusFromField","useCallback","getSelection","removeAllRanges","handleClickOutside","e","current","contains","target","selectFirst","useGlobalEventListener","capture","useEffect","range","createRange","element","focus","selectNodeContents","selection","addRange","clear","undefined","handleFieldEnter","handleKeyDown","_value","config","test","key","length","slice","currentValue","Number","String","min","max","padStart","shiftKey","preventDefault"],"mappings":"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"}
|
|
@@ -23,12 +23,12 @@ export type SwappedItemRange = {
|
|
|
23
23
|
};
|
|
24
24
|
export interface UseDraggableProps<T extends HTMLElement = HTMLElement> {
|
|
25
25
|
elRef: React.MutableRefObject<T | null>;
|
|
26
|
-
onDragFinish
|
|
26
|
+
onDragFinish?: (value: SwappedItemRange) => void;
|
|
27
27
|
}
|
|
28
28
|
export interface DraggableProps {
|
|
29
|
-
onDragStart(this: void, event: TouchEvent)
|
|
30
|
-
onDragEnd(this: void, event: TouchEvent)
|
|
31
|
-
onDragMove(this: void, event: TouchEvent)
|
|
29
|
+
onDragStart: (this: void, event: TouchEvent) => void;
|
|
30
|
+
onDragEnd: (this: void, event: TouchEvent) => void;
|
|
31
|
+
onDragMove: (this: void, event: TouchEvent) => void;
|
|
32
32
|
}
|
|
33
33
|
export interface UseDraggable extends DraggableProps {
|
|
34
34
|
dragging: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDraggableWithDomApi/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC;AAEtC,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,WAAW,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,WAAW,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,WAAW,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACpE,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,YAAY,CAAC,CAAC,KAAK,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDraggableWithDomApi/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC;AAEtC,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,WAAW,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,WAAW,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,WAAW,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACpE,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,QAAQ,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/hooks/useDraggableWithDomApi/types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { TouchEvent } from '../../components/Touch/Touch';\n\nexport type Direction = 'up' | 'down';\n\nexport type DraggingItem = {\n index: number;\n el: HTMLElement;\n draggingElRect: DOMRect;\n};\n\nexport type PlaceholderItem = {\n index: number;\n el: HTMLElement;\n draggingElRect: DOMRect;\n};\n\nexport type SiblingItem = {\n index: number;\n el: HTMLElement;\n shifted: boolean;\n draggingElRect: DOMRect;\n};\n\nexport type SwappedItemRange = { from: number; to: number };\n\nexport interface UseDraggableProps<T extends HTMLElement = HTMLElement> {\n elRef: React.MutableRefObject<T | null>;\n onDragFinish
|
|
1
|
+
{"version":3,"sources":["../../../../src/hooks/useDraggableWithDomApi/types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { TouchEvent } from '../../components/Touch/Touch';\n\nexport type Direction = 'up' | 'down';\n\nexport type DraggingItem = {\n index: number;\n el: HTMLElement;\n draggingElRect: DOMRect;\n};\n\nexport type PlaceholderItem = {\n index: number;\n el: HTMLElement;\n draggingElRect: DOMRect;\n};\n\nexport type SiblingItem = {\n index: number;\n el: HTMLElement;\n shifted: boolean;\n draggingElRect: DOMRect;\n};\n\nexport type SwappedItemRange = { from: number; to: number };\n\nexport interface UseDraggableProps<T extends HTMLElement = HTMLElement> {\n elRef: React.MutableRefObject<T | null>;\n onDragFinish?: (value: SwappedItemRange) => void;\n}\n\nexport interface DraggableProps {\n onDragStart: (this: void, event: TouchEvent) => void;\n onDragEnd: (this: void, event: TouchEvent) => void;\n onDragMove: (this: void, event: TouchEvent) => void;\n}\n\nexport interface UseDraggable extends DraggableProps {\n dragging: boolean;\n}\n"],"names":[],"mappings":";;;;;iEAAuB"}
|
|
@@ -3,14 +3,14 @@ export interface UseEnsuredControlProps<V, E extends React.ChangeEvent<any>> {
|
|
|
3
3
|
value?: V;
|
|
4
4
|
defaultValue: V;
|
|
5
5
|
disabled?: boolean | undefined;
|
|
6
|
-
onChange
|
|
6
|
+
onChange?: (this: void, e: E) => any;
|
|
7
7
|
}
|
|
8
8
|
export declare function useEnsuredControl<V, E extends React.ChangeEvent<any>>({ onChange: onChangeProp, disabled, ...props }: UseEnsuredControlProps<V, E>): [V, (e: E) => any];
|
|
9
9
|
export interface UseCustomEnsuredControlProps<V> {
|
|
10
10
|
value?: V;
|
|
11
11
|
defaultValue: V;
|
|
12
12
|
disabled?: boolean | undefined;
|
|
13
|
-
onChange
|
|
13
|
+
onChange?: (this: void, v: V) => any;
|
|
14
14
|
}
|
|
15
15
|
export declare function useCustomEnsuredControl<V = any>({ value, defaultValue, disabled, onChange: onChangeProp, }: UseCustomEnsuredControlProps<V>): [V, React.Dispatch<React.SetStateAction<V>>];
|
|
16
16
|
//# sourceMappingURL=useEnsuredControl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEnsuredControl.d.ts","sourceRoot":"","sources":["../../../src/hooks/useEnsuredControl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;IACzE,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"useEnsuredControl.d.ts","sourceRoot":"","sources":["../../../src/hooks/useEnsuredControl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;IACzE,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC;CACtC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EACrE,QAAQ,EAAE,YAAY,EACtB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAgBnD;AAED,MAAM,WAAW,4BAA4B,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC;CACtC;AAED,wBAAgB,uBAAuB,CAAC,CAAC,GAAG,GAAG,EAAE,EAC/C,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EAAE,YAAY,GACvB,EAAE,4BAA4B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAyChF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useEnsuredControl.ts"],"sourcesContent":["import * as React from 'react';\nimport { isFunction } from '@vkontakte/vkjs';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\n\nexport interface UseEnsuredControlProps<V, E extends React.ChangeEvent<any>> {\n value?: V;\n defaultValue: V;\n disabled?: boolean | undefined;\n onChange
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useEnsuredControl.ts"],"sourcesContent":["import * as React from 'react';\nimport { isFunction } from '@vkontakte/vkjs';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\n\nexport interface UseEnsuredControlProps<V, E extends React.ChangeEvent<any>> {\n value?: V;\n defaultValue: V;\n disabled?: boolean | undefined;\n onChange?: (this: void, e: E) => any;\n}\n\nexport function useEnsuredControl<V, E extends React.ChangeEvent<any>>({\n onChange: onChangeProp,\n disabled,\n ...props\n}: UseEnsuredControlProps<V, E>): [V, (e: E) => any] {\n const [value, onChangeValue] = useCustomEnsuredControl(props);\n\n const onChange = React.useCallback(\n (e: E) => {\n if (disabled) {\n return;\n }\n\n onChangeValue(e.target.value);\n onChangeProp && onChangeProp(e);\n },\n [onChangeValue, onChangeProp, disabled],\n );\n\n return [value, onChange];\n}\n\nexport interface UseCustomEnsuredControlProps<V> {\n value?: V;\n defaultValue: V;\n disabled?: boolean | undefined;\n onChange?: (this: void, v: V) => any;\n}\n\nexport function useCustomEnsuredControl<V = any>({\n value,\n defaultValue,\n disabled,\n onChange: onChangeProp,\n}: UseCustomEnsuredControlProps<V>): [V, React.Dispatch<React.SetStateAction<V>>] {\n const isControlled = value !== undefined;\n const [localValue, setLocalValue] = React.useState(defaultValue);\n const preservedControlledValueRef = React.useRef<V>();\n\n useIsomorphicLayoutEffect(() => {\n preservedControlledValueRef.current = value;\n });\n\n const onChange = React.useCallback(\n (nextValue: V | ((prevValue: any) => V)) => {\n if (disabled) {\n return;\n }\n\n if (isFunction(nextValue)) {\n if (!isControlled) {\n setLocalValue((prevValue) => {\n const resolvedValue = nextValue(prevValue);\n if (onChangeProp) {\n onChangeProp(resolvedValue);\n }\n return resolvedValue;\n });\n } else if (onChangeProp) {\n const resolvedValue = nextValue(preservedControlledValueRef.current);\n onChangeProp(resolvedValue);\n }\n } else {\n if (onChangeProp) {\n onChangeProp(nextValue);\n }\n if (!isControlled) {\n setLocalValue(nextValue);\n }\n }\n },\n [disabled, isControlled, onChangeProp],\n );\n\n return [isControlled ? value : localValue, onChange];\n}\n"],"names":["useCustomEnsuredControl","useEnsuredControl","onChange","onChangeProp","disabled","props","value","onChangeValue","React","useCallback","e","target","defaultValue","isControlled","undefined","localValue","setLocalValue","useState","preservedControlledValueRef","useRef","useIsomorphicLayoutEffect","current","nextValue","isFunction","prevValue","resolvedValue"],"mappings":";;;;;;;;;;;IAwCgBA,uBAAuB;eAAvBA;;IA7BAC,iBAAiB;eAAjBA;;;;;iEAXO;sBACI;2CACe;AASnC,SAASA,kBAAuD;QAAA,EACrEC,UAAUC,YAAY,EACtBC,QAAQ,EAEqB,GAJwC,QAGlEC,qCAHkE;QACrEH;QACAE;;IAGA,MAAM,CAACE,OAAOC,cAAc,GAAGP,wBAAwBK;IAEvD,MAAMH,WAAWM,OAAMC,WAAW,CAChC,CAACC;QACC,IAAIN,UAAU;YACZ;QACF;QAEAG,cAAcG,EAAEC,MAAM,CAACL,KAAK;QAC5BH,gBAAgBA,aAAaO;IAC/B,GACA;QAACH;QAAeJ;QAAcC;KAAS;IAGzC,OAAO;QAACE;QAAOJ;KAAS;AAC1B;AASO,SAASF,wBAAiC,EAC/CM,KAAK,EACLM,YAAY,EACZR,QAAQ,EACRF,UAAUC,YAAY,EACU;IAChC,MAAMU,eAAeP,UAAUQ;IAC/B,MAAM,CAACC,YAAYC,cAAc,GAAGR,OAAMS,QAAQ,CAACL;IACnD,MAAMM,8BAA8BV,OAAMW,MAAM;IAEhDC,IAAAA,oDAAyB,EAAC;QACxBF,4BAA4BG,OAAO,GAAGf;IACxC;IAEA,MAAMJ,WAAWM,OAAMC,WAAW,CAChC,CAACa;QACC,IAAIlB,UAAU;YACZ;QACF;QAEA,IAAImB,IAAAA,gBAAU,EAACD,YAAY;YACzB,IAAI,CAACT,cAAc;gBACjBG,cAAc,CAACQ;oBACb,MAAMC,gBAAgBH,UAAUE;oBAChC,IAAIrB,cAAc;wBAChBA,aAAasB;oBACf;oBACA,OAAOA;gBACT;YACF,OAAO,IAAItB,cAAc;gBACvB,MAAMsB,gBAAgBH,UAAUJ,4BAA4BG,OAAO;gBACnElB,aAAasB;YACf;QACF,OAAO;YACL,IAAItB,cAAc;gBAChBA,aAAamB;YACf;YACA,IAAI,CAACT,cAAc;gBACjBG,cAAcM;YAChB;QACF;IACF,GACA;QAAClB;QAAUS;QAAcV;KAAa;IAGxC,OAAO;QAACU,eAAeP,QAAQS;QAAYb;KAAS;AACtD"}
|
|
@@ -77,8 +77,8 @@ export interface UseFloatingWithInteractionsReturn<T extends HTMLElement = HTMLE
|
|
|
77
77
|
referenceProps: ReferenceProps<T>;
|
|
78
78
|
floatingProps: FloatingProps<T>;
|
|
79
79
|
middlewareData: UseFloatingData['middlewareData'];
|
|
80
|
-
onClose(this: void)
|
|
81
|
-
onEscapeKeyDown
|
|
82
|
-
onRestoreFocus(this: void)
|
|
80
|
+
onClose: (this: void) => void;
|
|
81
|
+
onEscapeKeyDown?: (this: void) => void;
|
|
82
|
+
onRestoreFocus: (this: void) => boolean;
|
|
83
83
|
}
|
|
84
84
|
//# sourceMappingURL=types.d.ts.map
|