@vkontakte/vkui 6.4.0 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetContext.d.ts +1 -0
- package/dist/cjs/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +38 -12
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cjs/components/ActionSheetItem/helpers.d.ts +10 -0
- package/dist/cjs/components/ActionSheetItem/helpers.d.ts.map +1 -0
- package/dist/cjs/components/ActionSheetItem/helpers.js +22 -0
- package/dist/cjs/components/ActionSheetItem/helpers.js.map +1 -0
- package/dist/cjs/components/Alert/Alert.js +1 -1
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.d.ts +0 -1
- package/dist/cjs/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.js +3 -11
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/Avatar/AvatarBadge/icons.d.ts +8 -3
- package/dist/cjs/components/Avatar/AvatarBadge/icons.d.ts.map +1 -1
- package/dist/cjs/components/Avatar/AvatarBadge/icons.js +2 -2
- package/dist/cjs/components/Avatar/AvatarBadge/icons.js.map +1 -1
- package/dist/cjs/components/BaseGallery/BaseGallery.d.ts.map +1 -1
- package/dist/cjs/components/BaseGallery/BaseGallery.js +0 -2
- package/dist/cjs/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.js +3 -3
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.js +3 -3
- package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js +5 -5
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js +17 -15
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cjs/components/CalendarTime/CalendarTime.js +5 -5
- package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts.map +1 -1
- package/dist/cjs/components/Cell/Cell.js +2 -2
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.d.ts +7 -5
- package/dist/cjs/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.js +21 -143
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +8 -0
- package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -0
- package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.js +134 -0
- package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -0
- package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +3 -0
- package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -0
- package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.js +52 -0
- package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -0
- package/dist/cjs/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInput/ChipsInput.js +1 -2
- package/dist/cjs/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js +1 -1
- package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cjs/components/ChipsInputBase/helpers.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInputBase/helpers.js +0 -3
- package/dist/cjs/components/ChipsInputBase/helpers.js.map +1 -1
- package/dist/cjs/components/ChipsInputBase/types.d.ts +1 -1
- 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.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +1 -7
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/Clickable/useState.d.ts +0 -5
- package/dist/cjs/components/Clickable/useState.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/useState.js +3 -7
- package/dist/cjs/components/Clickable/useState.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts +10 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.js +41 -132
- package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/ScrollX.d.ts +3 -0
- package/dist/cjs/components/CustomScrollView/ScrollX.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/ScrollX.js +42 -0
- package/dist/cjs/components/CustomScrollView/ScrollX.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/ScrollY.d.ts +3 -0
- package/dist/cjs/components/CustomScrollView/ScrollY.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/ScrollY.js +42 -0
- package/dist/cjs/components/CustomScrollView/ScrollY.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/types.d.ts +21 -0
- package/dist/cjs/components/CustomScrollView/types.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/types.js +8 -0
- package/dist/cjs/components/CustomScrollView/types.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.d.ts +8 -0
- package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.js +32 -0
- package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.d.ts +6 -0
- package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.js +29 -0
- package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useDragAndDrop.d.ts +5 -0
- package/dist/cjs/components/CustomScrollView/useDragAndDrop.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useDragAndDrop.js +57 -0
- package/dist/cjs/components/CustomScrollView/useDragAndDrop.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.d.ts +4 -0
- package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.js +102 -0
- package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js +5 -0
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/useVerticalScrollController.d.ts +4 -0
- package/dist/cjs/components/CustomScrollView/useVerticalScrollController.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useVerticalScrollController.js +102 -0
- package/dist/cjs/components/CustomScrollView/useVerticalScrollController.js.map +1 -0
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +3 -4
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.js +2 -2
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js +4 -3
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.d.ts +2 -2
- package/dist/cjs/components/FixedLayout/FixedLayout.d.ts.map +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.js +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts +3 -3
- package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/cjs/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.js +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +0 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.d.ts.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.js +0 -3
- package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/cjs/components/Group/Group.d.ts +1 -1
- package/dist/cjs/components/Group/Group.d.ts.map +1 -1
- package/dist/cjs/components/Group/Group.js +17 -12
- package/dist/cjs/components/Group/Group.js.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +7 -10
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/Image/Image.d.ts +0 -1
- package/dist/cjs/components/Image/Image.d.ts.map +1 -1
- package/dist/cjs/components/Image/Image.js +3 -11
- package/dist/cjs/components/Image/Image.js.map +1 -1
- package/dist/cjs/components/ImageBase/validators.js +1 -1
- package/dist/cjs/components/ImageBase/validators.js.map +1 -1
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js +17 -15
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +4 -28
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +2 -2
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.js +4 -3
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js +1 -3
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cjs/components/Radio/Radio.d.ts +5 -1
- package/dist/cjs/components/Radio/Radio.d.ts.map +1 -1
- package/dist/cjs/components/Radio/Radio.js +12 -75
- package/dist/cjs/components/Radio/Radio.js.map +1 -1
- package/dist/cjs/components/Radio/RadioInput/RadioInput.d.ts +6 -0
- package/dist/cjs/components/Radio/RadioInput/RadioInput.d.ts.map +1 -0
- package/dist/cjs/components/Radio/RadioInput/RadioInput.js +104 -0
- package/dist/cjs/components/Radio/RadioInput/RadioInput.js.map +1 -0
- package/dist/cjs/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControl.js +1 -2
- package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cjs/components/SelectionControl/SelectionControl.d.ts +14 -0
- package/dist/cjs/components/SelectionControl/SelectionControl.d.ts.map +1 -0
- package/dist/cjs/components/SelectionControl/SelectionControl.js +36 -0
- package/dist/cjs/components/SelectionControl/SelectionControl.js.map +1 -0
- package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +7 -0
- package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -0
- package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +56 -0
- package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -0
- 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 +13 -3
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/Textarea/useResizeTextarea.d.ts +1 -1
- package/dist/cjs/components/Textarea/useResizeTextarea.d.ts.map +1 -1
- package/dist/cjs/components/Textarea/useResizeTextarea.js +2 -2
- package/dist/cjs/components/Textarea/useResizeTextarea.js.map +1 -1
- package/dist/cjs/components/View/View.d.ts.map +1 -1
- package/dist/cjs/components/View/View.js +2 -4
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +1 -3
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js +4 -3
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cjs/hooks/useCalendar.d.ts.map +1 -1
- package/dist/cjs/hooks/useCalendar.js +6 -6
- package/dist/cjs/hooks/useCalendar.js.map +1 -1
- package/dist/cjs/hooks/useTodayDate.js +3 -3
- package/dist/cjs/hooks/useTodayDate.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/calendar.d.ts.map +1 -1
- package/dist/cjs/lib/calendar.js +27 -16
- package/dist/cjs/lib/calendar.js.map +1 -1
- package/dist/cjs/lib/date.d.ts +1 -28
- package/dist/cjs/lib/date.d.ts.map +1 -1
- package/dist/cjs/lib/date.js +8 -180
- package/dist/cjs/lib/date.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetContext.d.ts +1 -0
- package/dist/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.js +38 -12
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/ActionSheetItem/helpers.d.ts +10 -0
- package/dist/components/ActionSheetItem/helpers.d.ts.map +1 -0
- package/dist/components/ActionSheetItem/helpers.js +12 -0
- package/dist/components/ActionSheetItem/helpers.js.map +1 -0
- package/dist/components/Alert/Alert.js +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +0 -1
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js +1 -1
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/AvatarBadge/icons.d.ts +8 -3
- package/dist/components/Avatar/AvatarBadge/icons.d.ts.map +1 -1
- package/dist/components/Avatar/AvatarBadge/icons.js +2 -2
- package/dist/components/Avatar/AvatarBadge/icons.js.map +1 -1
- package/dist/components/BaseGallery/BaseGallery.d.ts.map +1 -1
- package/dist/components/BaseGallery/BaseGallery.js +0 -2
- package/dist/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/components/Calendar/Calendar.js +1 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.js +1 -1
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +6 -4
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.js +1 -1
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts.map +1 -1
- package/dist/components/Cell/Cell.js +2 -2
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +7 -5
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +24 -146
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +8 -0
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -0
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js +123 -0
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -0
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +3 -0
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -0
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js +42 -0
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -0
- package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.js +1 -2
- package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.js +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/components/ChipsInputBase/helpers.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/helpers.js +0 -3
- package/dist/components/ChipsInputBase/helpers.js.map +1 -1
- package/dist/components/ChipsInputBase/types.d.ts +1 -1
- 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.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +1 -7
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/Clickable/useState.d.ts +0 -5
- package/dist/components/Clickable/useState.d.ts.map +1 -1
- package/dist/components/Clickable/useState.js +2 -2
- package/dist/components/Clickable/useState.js.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts +10 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.js +44 -133
- package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/components/CustomScrollView/ScrollX.d.ts +3 -0
- package/dist/components/CustomScrollView/ScrollX.d.ts.map +1 -0
- package/dist/components/CustomScrollView/ScrollX.js +31 -0
- package/dist/components/CustomScrollView/ScrollX.js.map +1 -0
- package/dist/components/CustomScrollView/ScrollY.d.ts +3 -0
- package/dist/components/CustomScrollView/ScrollY.d.ts.map +1 -0
- package/dist/components/CustomScrollView/ScrollY.js +31 -0
- package/dist/components/CustomScrollView/ScrollY.js.map +1 -0
- package/dist/components/CustomScrollView/types.d.ts +21 -0
- package/dist/components/CustomScrollView/types.d.ts.map +1 -0
- package/dist/components/CustomScrollView/types.js +3 -0
- package/dist/components/CustomScrollView/types.js.map +1 -0
- package/dist/components/CustomScrollView/useCustomScrollViewResize.d.ts +8 -0
- package/dist/components/CustomScrollView/useCustomScrollViewResize.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useCustomScrollViewResize.js +22 -0
- package/dist/components/CustomScrollView/useCustomScrollViewResize.js.map +1 -0
- package/dist/components/CustomScrollView/useDetectScrollDirection.d.ts +6 -0
- package/dist/components/CustomScrollView/useDetectScrollDirection.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useDetectScrollDirection.js +20 -0
- package/dist/components/CustomScrollView/useDetectScrollDirection.js.map +1 -0
- package/dist/components/CustomScrollView/useDragAndDrop.d.ts +5 -0
- package/dist/components/CustomScrollView/useDragAndDrop.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useDragAndDrop.js +46 -0
- package/dist/components/CustomScrollView/useDragAndDrop.js.map +1 -0
- package/dist/components/CustomScrollView/useHorizontalScrollController.d.ts +4 -0
- package/dist/components/CustomScrollView/useHorizontalScrollController.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useHorizontalScrollController.js +91 -0
- package/dist/components/CustomScrollView/useHorizontalScrollController.js.map +1 -0
- package/dist/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/components/CustomScrollView/useTrackerVisibility.js +5 -0
- package/dist/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/components/CustomScrollView/useVerticalScrollController.d.ts +4 -0
- package/dist/components/CustomScrollView/useVerticalScrollController.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useVerticalScrollController.js +91 -0
- package/dist/components/CustomScrollView/useVerticalScrollController.js.map +1 -0
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +3 -4
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DateInput/DateInput.js +2 -2
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +4 -3
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.d.ts +2 -2
- package/dist/components/FixedLayout/FixedLayout.d.ts.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.js +1 -1
- package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/components/Flex/FlexItem/FlexItem.d.ts +3 -3
- package/dist/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.js +1 -1
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.d.ts +0 -1
- package/dist/components/GridAvatar/GridAvatar.d.ts.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.js +1 -1
- package/dist/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/components/Group/Group.d.ts +1 -1
- package/dist/components/Group/Group.d.ts.map +1 -1
- package/dist/components/Group/Group.js +17 -12
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js +7 -10
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/Image/Image.d.ts +0 -1
- package/dist/components/Image/Image.d.ts.map +1 -1
- package/dist/components/Image/Image.js +1 -1
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/ImageBase/validators.js +1 -1
- package/dist/components/ImageBase/validators.js.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.js +18 -16
- package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +4 -28
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +2 -2
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.js +4 -3
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js +1 -3
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/Radio/Radio.d.ts +5 -1
- package/dist/components/Radio/Radio.d.ts.map +1 -1
- package/dist/components/Radio/Radio.js +13 -76
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Radio/RadioInput/RadioInput.d.ts +6 -0
- package/dist/components/Radio/RadioInput/RadioInput.d.ts.map +1 -0
- package/dist/components/Radio/RadioInput/RadioInput.js +93 -0
- package/dist/components/Radio/RadioInput/RadioInput.js.map +1 -0
- package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js +1 -2
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.d.ts +14 -0
- package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -0
- package/dist/components/SelectionControl/SelectionControl.js +27 -0
- package/dist/components/SelectionControl/SelectionControl.js.map +1 -0
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +7 -0
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -0
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +46 -0
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -0
- 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 +13 -3
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Textarea/useResizeTextarea.d.ts +1 -1
- package/dist/components/Textarea/useResizeTextarea.d.ts.map +1 -1
- package/dist/components/Textarea/useResizeTextarea.js +2 -2
- package/dist/components/Textarea/useResizeTextarea.js.map +1 -1
- package/dist/components/View/View.d.ts.map +1 -1
- package/dist/components/View/View.js +2 -4
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/components/View/ViewInfinite.js +1 -3
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.js +4 -3
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/components.css +2 -2
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +1584 -1013
- package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetContext.d.ts +1 -0
- package/dist/cssm/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +38 -13
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/helpers.d.ts +10 -0
- package/dist/cssm/components/ActionSheetItem/helpers.d.ts.map +1 -0
- package/dist/cssm/components/ActionSheetItem/helpers.js +12 -0
- package/dist/cssm/components/ActionSheetItem/helpers.js.map +1 -0
- package/dist/cssm/components/Alert/Alert.js +1 -1
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/Avatar/Avatar.d.ts +0 -1
- package/dist/cssm/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/cssm/components/Avatar/Avatar.js +1 -1
- package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
- package/dist/cssm/components/Avatar/AvatarBadge/icons.d.ts +8 -3
- package/dist/cssm/components/Avatar/AvatarBadge/icons.d.ts.map +1 -1
- package/dist/cssm/components/Avatar/AvatarBadge/icons.js +2 -2
- package/dist/cssm/components/Avatar/AvatarBadge/icons.js.map +1 -1
- package/dist/cssm/components/BaseGallery/BaseGallery.d.ts.map +1 -1
- package/dist/cssm/components/BaseGallery/BaseGallery.js +0 -2
- package/dist/cssm/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js +1 -1
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +6 -4
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.d.ts.map +1 -1
- package/dist/cssm/components/Cell/Cell.js +2 -2
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.module.css +12 -0
- package/dist/cssm/components/CellButton/CellButton.module.css +2 -2
- package/dist/cssm/components/Checkbox/Checkbox.d.ts +7 -5
- package/dist/cssm/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.js +28 -141
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +8 -0
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -0
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js +113 -0
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -0
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.module.css +30 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +3 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js +30 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +28 -0
- package/dist/cssm/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.js +1 -2
- package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +1 -1
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/helpers.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInputBase/helpers.js +0 -3
- package/dist/cssm/components/ChipsInputBase/helpers.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.d.ts +1 -1
- 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.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +1 -7
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/Clickable/useState.d.ts +0 -5
- package/dist/cssm/components/Clickable/useState.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/useState.js +2 -2
- package/dist/cssm/components/Clickable/useState.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts +10 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js +39 -131
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +52 -13
- package/dist/cssm/components/CustomScrollView/ScrollX.d.ts +3 -0
- package/dist/cssm/components/CustomScrollView/ScrollX.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/ScrollX.js +32 -0
- package/dist/cssm/components/CustomScrollView/ScrollX.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/ScrollY.d.ts +3 -0
- package/dist/cssm/components/CustomScrollView/ScrollY.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/ScrollY.js +32 -0
- package/dist/cssm/components/CustomScrollView/ScrollY.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/types.d.ts +21 -0
- package/dist/cssm/components/CustomScrollView/types.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/types.js +3 -0
- package/dist/cssm/components/CustomScrollView/types.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.d.ts +8 -0
- package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.js +22 -0
- package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.d.ts +6 -0
- package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.js +20 -0
- package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useDragAndDrop.d.ts +5 -0
- package/dist/cssm/components/CustomScrollView/useDragAndDrop.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useDragAndDrop.js +46 -0
- package/dist/cssm/components/CustomScrollView/useDragAndDrop.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.d.ts +4 -0
- package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.js +91 -0
- package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js +5 -0
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/useVerticalScrollController.d.ts +4 -0
- package/dist/cssm/components/CustomScrollView/useVerticalScrollController.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useVerticalScrollController.js +91 -0
- package/dist/cssm/components/CustomScrollView/useVerticalScrollController.js.map +1 -0
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -4
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +2 -2
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -3
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.d.ts +2 -2
- package/dist/cssm/components/FixedLayout/FixedLayout.d.ts.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts +3 -3
- package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/cssm/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.module.css +0 -3
- package/dist/cssm/components/GridAvatar/GridAvatar.d.ts +0 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.d.ts.map +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.js +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/cssm/components/Group/Group.d.ts +1 -1
- package/dist/cssm/components/Group/Group.d.ts.map +1 -1
- package/dist/cssm/components/Group/Group.js +17 -12
- package/dist/cssm/components/Group/Group.js.map +1 -1
- package/dist/cssm/components/Group/Group.module.css +166 -139
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +7 -10
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/Image/Image.d.ts +0 -1
- package/dist/cssm/components/Image/Image.d.ts.map +1 -1
- package/dist/cssm/components/Image/Image.js +1 -1
- package/dist/cssm/components/Image/Image.js.map +1 -1
- package/dist/cssm/components/ImageBase/validators.js +1 -1
- package/dist/cssm/components/ImageBase/validators.js.map +1 -1
- package/dist/cssm/components/List/List.module.css +1 -0
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +18 -16
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +4 -28
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +2 -2
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.js +2 -2
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -3
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.d.ts +5 -1
- package/dist/cssm/components/Radio/Radio.d.ts.map +1 -1
- package/dist/cssm/components/Radio/Radio.js +13 -76
- package/dist/cssm/components/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.module.css +0 -145
- package/dist/cssm/components/Radio/RadioInput/RadioInput.d.ts +6 -0
- package/dist/cssm/components/Radio/RadioInput/RadioInput.d.ts.map +1 -0
- package/dist/cssm/components/Radio/RadioInput/RadioInput.js +86 -0
- package/dist/cssm/components/Radio/RadioInput/RadioInput.js.map +1 -0
- package/dist/cssm/components/Radio/RadioInput/RadioInput.module.css +20 -0
- package/dist/cssm/components/Search/Search.module.css +3 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.js +1 -2
- package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControl.d.ts +14 -0
- package/dist/cssm/components/SelectionControl/SelectionControl.d.ts.map +1 -0
- package/dist/cssm/components/SelectionControl/SelectionControl.js +28 -0
- package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -0
- package/dist/cssm/components/SelectionControl/SelectionControl.module.css +35 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +7 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +39 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +48 -0
- 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 +11 -2
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.module.css +3 -3
- package/dist/cssm/components/Textarea/useResizeTextarea.d.ts +1 -1
- package/dist/cssm/components/Textarea/useResizeTextarea.d.ts.map +1 -1
- package/dist/cssm/components/Textarea/useResizeTextarea.js +2 -2
- package/dist/cssm/components/Textarea/useResizeTextarea.js.map +1 -1
- package/dist/cssm/components/View/View.d.ts.map +1 -1
- package/dist/cssm/components/View/View.js +2 -4
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +1 -3
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js +2 -2
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.module.css +2 -0
- package/dist/cssm/hooks/useCalendar.d.ts.map +1 -1
- package/dist/cssm/hooks/useCalendar.js +1 -1
- package/dist/cssm/hooks/useCalendar.js.map +1 -1
- package/dist/cssm/hooks/useTodayDate.js +2 -2
- package/dist/cssm/hooks/useTodayDate.js.map +1 -1
- package/dist/cssm/index.d.ts +3 -0
- package/dist/cssm/index.d.ts.map +1 -1
- package/dist/cssm/index.js +2 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/calendar.d.ts.map +1 -1
- package/dist/cssm/lib/calendar.js +15 -4
- package/dist/cssm/lib/calendar.js.map +1 -1
- package/dist/cssm/lib/date.d.ts +1 -28
- package/dist/cssm/lib/date.d.ts.map +1 -1
- package/dist/cssm/lib/date.js +8 -105
- package/dist/cssm/lib/date.js.map +1 -1
- package/dist/cssm/styles/themes.css +63 -19
- package/dist/hooks/useCalendar.d.ts.map +1 -1
- package/dist/hooks/useCalendar.js +1 -1
- package/dist/hooks/useCalendar.js.map +1 -1
- package/dist/hooks/useTodayDate.js +2 -2
- package/dist/hooks/useTodayDate.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/calendar.d.ts.map +1 -1
- package/dist/lib/calendar.js +15 -4
- package/dist/lib/calendar.js.map +1 -1
- package/dist/lib/date.d.ts +1 -28
- package/dist/lib/date.d.ts.map +1 -1
- package/dist/lib/date.js +8 -105
- package/dist/lib/date.js.map +1 -1
- package/dist/vkui.css +3 -3
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +1586 -1012
- package/package.json +3 -4
- package/src/components/ActionSheet/ActionSheet.tsx +1 -1
- package/src/components/ActionSheet/ActionSheetContext.ts +1 -0
- package/src/components/ActionSheetItem/ActionSheetItem.tsx +43 -18
- package/src/components/ActionSheetItem/helpers.ts +11 -0
- package/src/components/Alert/Alert.tsx +1 -1
- package/src/components/Avatar/Avatar.tsx +1 -1
- package/src/components/Avatar/AvatarBadge/icons.tsx +9 -8
- package/src/components/BaseGallery/BaseGallery.tsx +0 -4
- package/src/components/Calendar/Calendar.tsx +1 -1
- package/src/components/CalendarDays/CalendarDays.tsx +1 -1
- package/src/components/CalendarHeader/CalendarHeader.tsx +1 -1
- package/src/components/CalendarRange/CalendarRange.tsx +5 -6
- package/src/components/CalendarTime/CalendarTime.tsx +1 -1
- package/src/components/Cell/Cell.module.css +10 -0
- package/src/components/Cell/Cell.tsx +13 -2
- package/src/components/CellButton/CellButton.module.css +2 -2
- package/src/components/Checkbox/Checkbox.tsx +30 -166
- package/src/components/Checkbox/CheckboxInput/CheckboxInput.module.css +30 -0
- package/src/components/Checkbox/CheckboxInput/CheckboxInput.tsx +174 -0
- package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +28 -0
- package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.tsx +49 -0
- package/src/components/ChipsInput/ChipsInput.tsx +3 -8
- package/src/components/ChipsInputBase/ChipsInputBase.tsx +1 -1
- package/src/components/ChipsInputBase/helpers.ts +0 -3
- package/src/components/ChipsInputBase/types.ts +1 -1
- package/src/components/ChipsSelect/ChipsSelect.tsx +1 -9
- package/src/components/Clickable/useState.tsx +2 -2
- package/src/components/CustomScrollView/CustomScrollView.module.css +49 -11
- package/src/components/CustomScrollView/CustomScrollView.tsx +56 -164
- package/src/components/CustomScrollView/ScrollX.tsx +57 -0
- package/src/components/CustomScrollView/ScrollY.tsx +57 -0
- package/src/components/CustomScrollView/types.ts +23 -0
- package/src/components/CustomScrollView/useCustomScrollViewResize.ts +32 -0
- package/src/components/CustomScrollView/useDetectScrollDirection.ts +21 -0
- package/src/components/CustomScrollView/useDragAndDrop.tsx +55 -0
- package/src/components/CustomScrollView/useHorizontalScrollController.tsx +120 -0
- package/src/components/CustomScrollView/useTrackerVisibility.ts +4 -0
- package/src/components/CustomScrollView/useVerticalScrollController.tsx +122 -0
- package/src/components/CustomSelect/CustomSelect.tsx +3 -5
- package/src/components/DateInput/DateInput.tsx +2 -2
- package/src/components/DateRangeInput/DateRangeInput.tsx +5 -4
- package/src/components/FixedLayout/FixedLayout.tsx +4 -4
- package/src/components/Flex/FlexItem/FlexItem.tsx +3 -3
- package/src/components/FocusTrap/FocusTrap.tsx +1 -1
- package/src/components/FormField/FormField.module.css +0 -3
- package/src/components/GridAvatar/GridAvatar.tsx +1 -1
- package/src/components/Group/Group.module.css +155 -132
- package/src/components/Group/Group.tsx +25 -19
- package/src/components/HorizontalScroll/HorizontalScroll.tsx +7 -12
- package/src/components/Image/Image.tsx +1 -1
- package/src/components/ImageBase/validators.ts +1 -1
- package/src/components/List/List.module.css +1 -0
- package/src/components/ModalPageHeader/ModalPageHeader.tsx +24 -22
- package/src/components/ModalRoot/ModalRoot.tsx +4 -32
- package/src/components/OnboardingTooltip/OnboardingTooltipContainer.tsx +4 -3
- package/src/components/PullToRefresh/PullToRefresh.tsx +0 -2
- package/src/components/Radio/Radio.module.css +0 -131
- package/src/components/Radio/Radio.tsx +14 -53
- package/src/components/Radio/RadioInput/RadioInput.module.css +20 -0
- package/src/components/Radio/RadioInput/RadioInput.tsx +58 -0
- package/src/components/Search/Search.module.css +1 -1
- package/src/components/SegmentedControl/SegmentedControl.tsx +0 -1
- package/src/components/SelectionControl/SelectionControl.module.css +33 -0
- package/src/components/SelectionControl/SelectionControl.tsx +44 -0
- package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +44 -0
- package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.tsx +43 -0
- package/src/components/Textarea/Textarea.module.css +3 -3
- package/src/components/Textarea/Textarea.tsx +9 -1
- package/src/components/Textarea/useResizeTextarea.ts +2 -1
- package/src/components/View/View.tsx +0 -2
- package/src/components/View/ViewInfinite.tsx +0 -2
- package/src/components/VisuallyHidden/VisuallyHidden.tsx +2 -0
- package/src/components/WriteBar/WriteBar.module.css +1 -1
- package/src/hooks/useCalendar.ts +1 -9
- package/src/hooks/useTodayDate.ts +2 -2
- package/src/index.ts +3 -0
- package/src/lib/calendar.ts +8 -7
- package/src/lib/date.ts +9 -140
- package/dist/cjs/lib/styles.d.ts +0 -2
- package/dist/cjs/lib/styles.d.ts.map +0 -1
- package/dist/cjs/lib/styles.js +0 -20
- package/dist/cjs/lib/styles.js.map +0 -1
- package/dist/cssm/components/Checkbox/Checkbox.module.css +0 -183
- package/dist/cssm/lib/styles.d.ts +0 -2
- package/dist/cssm/lib/styles.d.ts.map +0 -1
- package/dist/cssm/lib/styles.js +0 -10
- package/dist/cssm/lib/styles.js.map +0 -1
- package/dist/lib/styles.d.ts +0 -2
- package/dist/lib/styles.d.ts.map +0 -1
- package/dist/lib/styles.js +0 -10
- package/dist/lib/styles.js.map +0 -1
- package/src/components/Checkbox/Checkbox.module.css +0 -170
- package/src/lib/styles.ts +0 -12
|
@@ -31,22 +31,24 @@ const ModalPageHeader = (_param)=>{
|
|
|
31
31
|
const platform = (0, _usePlatform.usePlatform)();
|
|
32
32
|
const { isDesktop, sizeX } = (0, _useAdaptivityWithJSMediaQueries.useAdaptivityWithJSMediaQueries)();
|
|
33
33
|
const { labelId } = _react.useContext(_ModalPageContext.ModalPageContext);
|
|
34
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(
|
|
35
|
-
className: (0, _vkjs.classNames)("vkuiModalPageHeader", platform !== 'vkcom' && "vkuiModalPageHeader--withGaps", isDesktop && "vkuiModalPageHeader--desktop"),
|
|
36
|
-
ref: getRootRef,
|
|
34
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
|
|
37
35
|
children: [
|
|
38
|
-
/*#__PURE__*/ (0, _jsxruntime.jsx)(
|
|
39
|
-
className: (0, _vkjs.classNames)('
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
36
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
37
|
+
className: (0, _vkjs.classNames)("vkuiModalPageHeader", platform !== 'vkcom' && "vkuiModalPageHeader--withGaps", isDesktop && "vkuiModalPageHeader--desktop"),
|
|
38
|
+
ref: getRootRef,
|
|
39
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_PanelHeader.PanelHeader, _object_spread_props._(_object_spread._({
|
|
40
|
+
className: (0, _vkjs.classNames)('vkuiInternalModalPageHeader__in', className),
|
|
41
|
+
typographyProps: _object_spread._({
|
|
42
|
+
Component: 'h2',
|
|
43
|
+
id: labelId
|
|
44
|
+
}, typographyProps)
|
|
45
|
+
}, restProps), {
|
|
46
|
+
fixed: false,
|
|
47
|
+
delimiter: "none",
|
|
48
|
+
transparent: true,
|
|
49
|
+
children: children
|
|
50
|
+
}))
|
|
51
|
+
}),
|
|
50
52
|
!noSeparator && /*#__PURE__*/ (0, _jsxruntime.jsx)(_Separator.Separator, {
|
|
51
53
|
wide: sizeX === 'regular'
|
|
52
54
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalPageHeader/ModalPageHeader.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRef, HasRootRef } from '../../types';\nimport { ModalPageContext } from '../ModalPage/ModalPageContext';\nimport { PanelHeader, PanelHeaderProps } from '../PanelHeader/PanelHeader';\nimport { Separator } from '../Separator/Separator';\nimport styles from './ModalPageHeader.module.css';\n\nexport interface ModalPageHeaderProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<PanelHeaderProps, 'fixed' | 'shadow' | 'delimiter'>,\n HasRef<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n noSeparator?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalPageHeader\n */\nexport const ModalPageHeader = ({\n children,\n noSeparator = false,\n getRootRef,\n className,\n typographyProps,\n ...restProps\n}: ModalPageHeaderProps): React.ReactNode => {\n const platform = usePlatform();\n const { isDesktop, sizeX } = useAdaptivityWithJSMediaQueries();\n const { labelId } = React.useContext(ModalPageContext);\n\n return (\n <div\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalPageHeader/ModalPageHeader.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRef, HasRootRef } from '../../types';\nimport { ModalPageContext } from '../ModalPage/ModalPageContext';\nimport { PanelHeader, PanelHeaderProps } from '../PanelHeader/PanelHeader';\nimport { Separator } from '../Separator/Separator';\nimport styles from './ModalPageHeader.module.css';\n\nexport interface ModalPageHeaderProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<PanelHeaderProps, 'fixed' | 'shadow' | 'delimiter'>,\n HasRef<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n noSeparator?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalPageHeader\n */\nexport const ModalPageHeader = ({\n children,\n noSeparator = false,\n getRootRef,\n className,\n typographyProps,\n ...restProps\n}: ModalPageHeaderProps): React.ReactNode => {\n const platform = usePlatform();\n const { isDesktop, sizeX } = useAdaptivityWithJSMediaQueries();\n const { labelId } = React.useContext(ModalPageContext);\n\n return (\n <>\n <div\n className={classNames(\n styles['ModalPageHeader'],\n platform !== 'vkcom' && styles['ModalPageHeader--withGaps'],\n isDesktop && styles['ModalPageHeader--desktop'],\n )}\n ref={getRootRef}\n >\n <PanelHeader\n className={classNames('vkuiInternalModalPageHeader__in', className)}\n typographyProps={{\n Component: 'h2',\n id: labelId,\n ...typographyProps,\n }}\n {...restProps}\n fixed={false}\n delimiter=\"none\"\n transparent\n >\n {children}\n </PanelHeader>\n </div>\n {!noSeparator && <Separator wide={sizeX === 'regular'} />}\n </>\n );\n};\n"],"names":["ModalPageHeader","children","noSeparator","getRootRef","className","typographyProps","restProps","platform","usePlatform","isDesktop","sizeX","useAdaptivityWithJSMediaQueries","labelId","React","useContext","ModalPageContext","div","classNames","ref","PanelHeader","Component","id","fixed","delimiter","transparent","Separator","wide"],"mappings":";;;;+BAqBaA;;;eAAAA;;;;;;;;iEArBU;sBACI;iDACqB;6BACpB;kCAEK;6BACa;2BACpB;AAcnB,MAAMA,kBAAkB;QAAC,EAC9BC,QAAQ,EACRC,cAAc,KAAK,EACnBC,UAAU,EACVC,SAAS,EACTC,eAAe,EAEM,WADlBC;QALHL;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAME,WAAWC,IAAAA,wBAAW;IAC5B,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGC,IAAAA,gEAA+B;IAC5D,MAAM,EAAEC,OAAO,EAAE,GAAGC,OAAMC,UAAU,CAACC,kCAAgB;IAErD,qBACE;;0BACE,qBAACC;gBACCZ,WAAWa,IAAAA,gBAAU,yBAEnBV,aAAa,4CACbE;gBAEFS,KAAKf;0BAEL,cAAA,qBAACgB,wBAAW;oBACVf,WAAWa,IAAAA,gBAAU,EAAC,mCAAmCb;oBACzDC,iBAAiB;wBACfe,WAAW;wBACXC,IAAIT;uBACDP;mBAEDC;oBACJgB,OAAO;oBACPC,WAAU;oBACVC,WAAW;8BAEVvB;;;YAGJ,CAACC,6BAAe,qBAACuB,oBAAS;gBAACC,MAAMhB,UAAU;;;;AAGlD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalRoot.d.ts","sourceRoot":"","sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ModalRoot.d.ts","sourceRoot":"","sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,OAAO,EAAE,qBAAqB,EAAoC,MAAM,SAAS,CAAC;AA+kBlF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAM1D,CAAC"}
|
|
@@ -21,7 +21,6 @@ const _withContext = require("../../hoc/withContext");
|
|
|
21
21
|
const _withPlatform = require("../../hoc/withPlatform");
|
|
22
22
|
const _dom = require("../../lib/dom");
|
|
23
23
|
const _getNavId = require("../../lib/getNavId");
|
|
24
|
-
const _styles = require("../../lib/styles");
|
|
25
24
|
const _touch = require("../../lib/touch");
|
|
26
25
|
const _warnOnce = require("../../lib/warnOnce");
|
|
27
26
|
const _ConfigProviderContext = require("../ConfigProvider/ConfigProviderContext");
|
|
@@ -97,28 +96,15 @@ class ModalRootTouchComponent extends _react.Component {
|
|
|
97
96
|
this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);
|
|
98
97
|
}
|
|
99
98
|
/* Отключает скролл документа */ toggleDocumentScrolling(enabled) {
|
|
100
|
-
if (this.documentScrolling === enabled) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
this.documentScrolling = enabled;
|
|
104
99
|
if (enabled) {
|
|
105
100
|
// восстанавливаем значение overscroll behavior
|
|
106
101
|
// eslint-disable-next-line no-restricted-properties
|
|
107
102
|
this.document.documentElement.classList.remove('vkui--disable-overscroll-behavior');
|
|
108
|
-
// некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.
|
|
109
|
-
// https://github.com/VKCOM/VKUI/issues/444
|
|
110
|
-
this.window.removeEventListener('touchmove', this.preventTouch, {
|
|
111
|
-
// @ts-expect-error: TS2769 В интерфейсе EventListenerOptions нет поля passive
|
|
112
|
-
passive: false
|
|
113
|
-
});
|
|
114
103
|
} else {
|
|
115
104
|
// отключаем нативный pull-to-refresh при открытом модальном окне
|
|
116
105
|
// чтобы он не срабатывал при закрытии модалки смахиванием вниз
|
|
117
106
|
// eslint-disable-next-line no-restricted-properties
|
|
118
107
|
this.document.documentElement.classList.add('vkui--disable-overscroll-behavior');
|
|
119
|
-
this.window.addEventListener('touchmove', this.preventTouch, {
|
|
120
|
-
passive: false
|
|
121
|
-
});
|
|
122
108
|
}
|
|
123
109
|
}
|
|
124
110
|
checkPageContentHeight() {
|
|
@@ -366,7 +352,10 @@ class ModalRootTouchComponent extends _react.Component {
|
|
|
366
352
|
const frameId = `animateTranslateFrame${modalState.id}`;
|
|
367
353
|
cancelAnimationFrame(this.frameIds[frameId]);
|
|
368
354
|
this.frameIds[frameId] = requestAnimationFrame(()=>{
|
|
369
|
-
|
|
355
|
+
if (!modalState.innerElement) {
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
modalState.innerElement.style.transform = `translate3d(0, ${percent}%, 0)`;
|
|
370
359
|
});
|
|
371
360
|
}
|
|
372
361
|
/* Устанавливает прозрачность для полупрозрачной подложки */ setMaskOpacity(modalState, forceOpacity = null) {
|
|
@@ -438,25 +427,12 @@ class ModalRootTouchComponent extends _react.Component {
|
|
|
438
427
|
}
|
|
439
428
|
constructor(props){
|
|
440
429
|
super(props);
|
|
441
|
-
_define_property._(this, "documentScrolling", false);
|
|
442
430
|
_define_property._(this, "maskElementRef", void 0);
|
|
443
431
|
_define_property._(this, "viewportRef", /*#__PURE__*/ _react.createRef());
|
|
444
432
|
_define_property._(this, "maskAnimationFrame", undefined);
|
|
445
433
|
_define_property._(this, "modalRootContext", void 0);
|
|
446
434
|
_define_property._(this, "frameIds", void 0);
|
|
447
435
|
_define_property._(this, "restoreFocusTo", undefined);
|
|
448
|
-
_define_property._(this, "preventTouch", (event)=>{
|
|
449
|
-
if (!event) {
|
|
450
|
-
return false;
|
|
451
|
-
}
|
|
452
|
-
while(event.originalEvent){
|
|
453
|
-
event = event.originalEvent;
|
|
454
|
-
}
|
|
455
|
-
if (event.preventDefault) {
|
|
456
|
-
event.preventDefault();
|
|
457
|
-
}
|
|
458
|
-
return false;
|
|
459
|
-
});
|
|
460
436
|
_define_property._(this, "updateModalHeight", ()=>{
|
|
461
437
|
const modalState = this.props.getModalState(this.props.activeModal);
|
|
462
438
|
if (modalState && modalState.type === 'page') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { setTransformStyle } from '../../lib/styles';\nimport { rubber } from '../../lib/touch';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ConfigProviderContext } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { ModalRootWithDOMProps, ModalsStateEntry, TranslateRange } from './types';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n modalOpenedLog: string[];\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootWithDOMProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootWithDOMProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n modalOpenedLog: [],\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.props.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private documentScrolling = false;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === 'ios' ? 400 : 320;\n }\n\n get document(): Document {\n return this.props.document as Document;\n }\n\n get window(): Window {\n return this.props.window as Window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport\n this.window?.addEventListener('resize', this.updateModalHeight, false);\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalHeight, false);\n }\n\n componentDidUpdate(prevProps: ModalRootWithDOMProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const enteringState = this.props.getModalState(this.props.enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState) {\n if (enteringState.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.onEntered(enteringState);\n }\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n this.setMaskOpacity(enteringState, 1);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // восстанавливаем значение overscroll behavior\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.remove('vkui--disable-overscroll-behavior');\n\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n this.window.removeEventListener('touchmove', this.preventTouch, {\n // @ts-expect-error: TS2769 В интерфейсе EventListenerOptions нет поля passive\n passive: false,\n });\n } else {\n // отключаем нативный pull-to-refresh при открытом модальном окне\n // чтобы он не срабатывал при закрытии модалки смахиванием вниз\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.add('vkui--disable-overscroll-behavior');\n\n this.window.addEventListener('touchmove', this.preventTouch, {\n passive: false,\n });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n checkPageContentHeight() {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page' && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === 'page') {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n onEntered({ id, modalElement }: ModalsStateEntry) {\n if (\n !this.props.noFocusToDialog &&\n modalElement &&\n !modalElement.contains(this.document.activeElement)\n ) {\n modalElement.focus();\n }\n\n this.props.onEntered(id);\n }\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.props.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n if (!this.state.modalOpenedLog.length) {\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, id],\n }));\n }\n const nextModalState = this.props.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === 'page';\n\n const prevIsPage = !!prevModalState && prevModalState.type === 'page';\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n this.setState({ modalOpenedLog: [] });\n prevModalState.translateY = undefined;\n prevModalState.expandable = undefined;\n } else if (nextModalState.id && !this.state.modalOpenedLog.includes(nextModalState.id)) {\n nextModalState.translateY = undefined;\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, nextModalState.id!],\n }));\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.props.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === 'page') {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === 'card') {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page') {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === 'card') {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75 && !modalState.preventClose) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = numberInRange(translateY, modalState.collapsedRange);\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.props.getModalState(activeModal);\n if (modalState?.type === 'page' && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n const el = modalState ? modalState.innerElement : null;\n if (el) {\n el.addEventListener('transitionend', eventHandler, { once: true });\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n this.maskElementRef.current.style.transitionDelay =\n opacity && this.props.delayEnter ? `${this.timeout}ms` : '';\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal, modalOverlayTestId } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.hasCustomPanelHeaderAfter &&\n styles['ModalRoot--hasCustomPanelHeaderAfterSlot'],\n touchDown &&\n classNames(styles['ModalRoot--touched'], 'vkuiInternalModalRoot--touched'),\n !!(enteringModal || exitingModal) &&\n classNames(styles['ModalRoot--switching'], 'vkuiInternalModalRoot--switching'),\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n data-testid={modalOverlayTestId}\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.props.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === 'page';\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && 'vkuiInternalModalRoot__modal--dragging',\n\n isPage && modalState.expandable && 'vkuiInternalModalRoot__modal--expandable',\n isPage && modalState.collapsed && 'vkuiInternalModalRoot__modal--collapsed',\n )}\n autoFocus={false}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch: React.FC<ModalRootWithDOMProps> = withContext(\n withPlatform(\n withDOM<ModalRootWithDOMProps>(withModalManager(initModal)(ModalRootTouchComponent)),\n ),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case 'page':\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case 'card':\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement, bottomInset } = modalState;\n const contentElementHeight = calculateModalContentHeight(\n contentElement?.firstElementChild as HTMLElement,\n modalState.expandable,\n );\n const bottomInsetHeight = bottomInset?.offsetHeight || 0;\n const contentHeight = contentElementHeight + bottomInsetHeight;\n let prevTranslateY = modalState.translateY;\n let prevExpandable = modalState.expandable;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange | undefined;\n let hiddenRange: TranslateRange;\n\n const hasCollapsedState = Boolean(modalState.expandable && modalState.settlingHeight !== 100);\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = hasCollapsedState ? [shiftHalf, translateYFrom + visiblePart / 4] : undefined;\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = hasCollapsedState && translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = undefined;\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Свойство expandable может измениться из-за высоты контента, в таком случае на всю высоту не разворачиваем\n const shouldExpand = prevExpandable && modalState.expandable;\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if ((shouldExpand && translateY > (prevTranslateY ?? 100)) || modalState.settlingHeight === 100) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n\nfunction calculateModalContentHeight(\n element: HTMLElement,\n isExpandable: ModalsStateEntry['expandable'],\n) {\n if (!isExpandable) {\n return element.scrollHeight;\n }\n\n /*\n * В режиме expandable мы назначаем контейнеру контента высоту 100%, что не даёт\n * получить реальную высоту контента.\n * Поэтому мы пересчитываем высоту, временно устанавливая height: auto;\n * */\n const currentHeightStyle = element.style.height;\n element.style.height = 'auto';\n\n const elementHeight = element.scrollHeight;\n element.style.height = currentHeightStyle;\n\n return elementHeight;\n}\n"],"names":["ModalRootTouch","warn","warnOnce","numberInRange","number","range","rangeTranslate","clamp","ModalRootTouchComponent","React","Component","timeout","props","platform","document","window","getModals","Children","toArray","children","componentDidMount","addEventListener","updateModalHeight","componentWillUnmount","toggleDocumentScrolling","removeEventListener","componentDidUpdate","prevProps","exitingModal","closeModal","enteringModal","enteringState","getModalState","onEnter","waitTransitionFinish","innerElement","style","transitionDelay","onEntered","delayEnter","animateTranslate","translateY","setMaskOpacity","activeModal","restoreFocusTo","activeElement","focus","enabled","documentScrolling","documentElement","classList","remove","preventTouch","passive","add","checkPageContentHeight","modalState","type","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","id","noFocusToDialog","contains","setState","touchDown","state","modalOpenedLog","length","prevState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","undefined","includes","onPageTouchMove","event","shiftY","originalEvent","target","isY","viewportRef","current","preventDefault","stopPropagation","contentScrolled","collapsed","expanded","touchStartContentScrollTop","contentElement","scrollTop","touchMovePositive","headerElement","dragging","shiftYPercent","innerHeight","shiftYCurrent","rubber","touchShiftYPercent","translateYCurrent","onCardTouchMove","offsetHeight","Math","max","onPageTouchEnd","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","preventClose","hidden","onExit","onCardTouchEnd","eventHandler","el","once","setTimeout","percent","frameId","cancelAnimationFrame","frameIds","requestAnimationFrame","setTransformStyle","forceOpacity","history","maskAnimationFrame","maskElementRef","opacity","toString","render","modalOverlayTestId","TouchRootContext","Provider","value","ModalRootContext","modalRootContext","Touch","className","classNames","configProvider","hasCustomPanelHeaderAfter","onMove","onTouchMove","onEnd","onTouchEnd","onScroll","div","data-testid","onClick","ref","map","Modal","modalId","getNavId","_modalState","isPage","key","FocusTrap","onClose","autoFocus","restoreFocus","constructor","createRef","e","contentScrollStopTimeout","clearTimeout","registerModal","data","Object","assign","isInsideModal","withContext","withPlatform","withDOM","withModalManager","initModal","ConfigProviderContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","initCardModal","process","env","NODE_ENV","bottomInset","contentElementHeight","calculateModalContentHeight","firstElementChild","bottomInsetHeight","contentHeight","prevTranslateY","prevExpandable","clientHeight","hasCollapsedState","Boolean","shiftHalf","visiblePart","headerHeight","height","parentElement","shouldExpand","element","isExpandable","scrollHeight","currentHeightStyle","elementHeight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { rubber } from '../../lib/touch';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ConfigProviderContext } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { ModalRootWithDOMProps, ModalsStateEntry, TranslateRange } from './types';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n modalOpenedLog: string[];\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootWithDOMProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootWithDOMProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n modalOpenedLog: [],\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.props.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === 'ios' ? 400 : 320;\n }\n\n get document(): Document {\n return this.props.document as Document;\n }\n\n get window(): Window {\n return this.props.window as Window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport\n this.window?.addEventListener('resize', this.updateModalHeight, false);\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalHeight, false);\n }\n\n componentDidUpdate(prevProps: ModalRootWithDOMProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const enteringState = this.props.getModalState(this.props.enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState) {\n if (enteringState.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.onEntered(enteringState);\n }\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n this.setMaskOpacity(enteringState, 1);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (enabled) {\n // восстанавливаем значение overscroll behavior\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.remove('vkui--disable-overscroll-behavior');\n } else {\n // отключаем нативный pull-to-refresh при открытом модальном окне\n // чтобы он не срабатывал при закрытии модалки смахиванием вниз\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.add('vkui--disable-overscroll-behavior');\n }\n }\n\n checkPageContentHeight() {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page' && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === 'page') {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n onEntered({ id, modalElement }: ModalsStateEntry) {\n if (\n !this.props.noFocusToDialog &&\n modalElement &&\n !modalElement.contains(this.document.activeElement)\n ) {\n modalElement.focus();\n }\n\n this.props.onEntered(id);\n }\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.props.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n if (!this.state.modalOpenedLog.length) {\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, id],\n }));\n }\n const nextModalState = this.props.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === 'page';\n\n const prevIsPage = !!prevModalState && prevModalState.type === 'page';\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n this.setState({ modalOpenedLog: [] });\n prevModalState.translateY = undefined;\n prevModalState.expandable = undefined;\n } else if (nextModalState.id && !this.state.modalOpenedLog.includes(nextModalState.id)) {\n nextModalState.translateY = undefined;\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, nextModalState.id!],\n }));\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.props.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === 'page') {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === 'card') {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page') {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === 'card') {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75 && !modalState.preventClose) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = numberInRange(translateY, modalState.collapsedRange);\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.props.getModalState(activeModal);\n if (modalState?.type === 'page' && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n const el = modalState ? modalState.innerElement : null;\n if (el) {\n el.addEventListener('transitionend', eventHandler, { once: true });\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n if (!modalState.innerElement) {\n return;\n }\n modalState.innerElement.style.transform = `translate3d(0, ${percent}%, 0)`;\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n this.maskElementRef.current.style.transitionDelay =\n opacity && this.props.delayEnter ? `${this.timeout}ms` : '';\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal, modalOverlayTestId } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.hasCustomPanelHeaderAfter &&\n styles['ModalRoot--hasCustomPanelHeaderAfterSlot'],\n touchDown &&\n classNames(styles['ModalRoot--touched'], 'vkuiInternalModalRoot--touched'),\n !!(enteringModal || exitingModal) &&\n classNames(styles['ModalRoot--switching'], 'vkuiInternalModalRoot--switching'),\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n data-testid={modalOverlayTestId}\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.props.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === 'page';\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && 'vkuiInternalModalRoot__modal--dragging',\n\n isPage && modalState.expandable && 'vkuiInternalModalRoot__modal--expandable',\n isPage && modalState.collapsed && 'vkuiInternalModalRoot__modal--collapsed',\n )}\n autoFocus={false}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch: React.FC<ModalRootWithDOMProps> = withContext(\n withPlatform(\n withDOM<ModalRootWithDOMProps>(withModalManager(initModal)(ModalRootTouchComponent)),\n ),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case 'page':\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case 'card':\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement, bottomInset } = modalState;\n const contentElementHeight = calculateModalContentHeight(\n contentElement?.firstElementChild as HTMLElement,\n modalState.expandable,\n );\n const bottomInsetHeight = bottomInset?.offsetHeight || 0;\n const contentHeight = contentElementHeight + bottomInsetHeight;\n let prevTranslateY = modalState.translateY;\n let prevExpandable = modalState.expandable;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange | undefined;\n let hiddenRange: TranslateRange;\n\n const hasCollapsedState = Boolean(modalState.expandable && modalState.settlingHeight !== 100);\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = hasCollapsedState ? [shiftHalf, translateYFrom + visiblePart / 4] : undefined;\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = hasCollapsedState && translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = undefined;\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Свойство expandable может измениться из-за высоты контента, в таком случае на всю высоту не разворачиваем\n const shouldExpand = prevExpandable && modalState.expandable;\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if ((shouldExpand && translateY > (prevTranslateY ?? 100)) || modalState.settlingHeight === 100) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n\nfunction calculateModalContentHeight(\n element: HTMLElement,\n isExpandable: ModalsStateEntry['expandable'],\n) {\n if (!isExpandable) {\n return element.scrollHeight;\n }\n\n /*\n * В режиме expandable мы назначаем контейнеру контента высоту 100%, что не даёт\n * получить реальную высоту контента.\n * Поэтому мы пересчитываем высоту, временно устанавливая height: auto;\n * */\n const currentHeightStyle = element.style.height;\n element.style.height = 'auto';\n\n const elementHeight = element.scrollHeight;\n element.style.height = currentHeightStyle;\n\n return elementHeight;\n}\n"],"names":["ModalRootTouch","warn","warnOnce","numberInRange","number","range","rangeTranslate","clamp","ModalRootTouchComponent","React","Component","timeout","props","platform","document","window","getModals","Children","toArray","children","componentDidMount","addEventListener","updateModalHeight","componentWillUnmount","toggleDocumentScrolling","removeEventListener","componentDidUpdate","prevProps","exitingModal","closeModal","enteringModal","enteringState","getModalState","onEnter","waitTransitionFinish","innerElement","style","transitionDelay","onEntered","delayEnter","animateTranslate","translateY","setMaskOpacity","activeModal","restoreFocusTo","activeElement","focus","enabled","documentElement","classList","remove","add","checkPageContentHeight","modalState","type","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","id","noFocusToDialog","contains","setState","touchDown","state","modalOpenedLog","length","prevState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","undefined","includes","onPageTouchMove","event","shiftY","originalEvent","target","isY","viewportRef","current","preventDefault","stopPropagation","contentScrolled","collapsed","expanded","touchStartContentScrollTop","contentElement","scrollTop","touchMovePositive","headerElement","dragging","shiftYPercent","innerHeight","shiftYCurrent","rubber","touchShiftYPercent","translateYCurrent","onCardTouchMove","offsetHeight","Math","max","onPageTouchEnd","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","preventClose","hidden","onExit","onCardTouchEnd","eventHandler","el","once","setTimeout","percent","frameId","cancelAnimationFrame","frameIds","requestAnimationFrame","transform","forceOpacity","history","maskAnimationFrame","maskElementRef","opacity","toString","render","modalOverlayTestId","TouchRootContext","Provider","value","ModalRootContext","modalRootContext","Touch","className","classNames","configProvider","hasCustomPanelHeaderAfter","onMove","onTouchMove","onEnd","onTouchEnd","onScroll","div","data-testid","onClick","ref","map","Modal","modalId","getNavId","_modalState","isPage","key","FocusTrap","onClose","autoFocus","restoreFocus","constructor","createRef","e","contentScrollStopTimeout","clearTimeout","registerModal","data","Object","assign","isInsideModal","withContext","withPlatform","withDOM","withModalManager","initModal","ConfigProviderContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","initCardModal","process","env","NODE_ENV","bottomInset","contentElementHeight","calculateModalContentHeight","firstElementChild","bottomInsetHeight","contentHeight","prevTranslateY","prevExpandable","clientHeight","hasCollapsedState","Boolean","shiftHalf","visiblePart","headerHeight","height","parentElement","shouldExpand","element","isExpandable","scrollHeight","currentHeightStyle","elementHeight"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { HasDataAttribute } from '../../types';
|
|
2
|
+
import type { HasComponent, HasDataAttribute } from '../../types';
|
|
3
3
|
export declare const onboardingTooltipContainerAttr = "data-onboarding-tooltip-container";
|
|
4
|
-
type OnboardingTooltipContainerProps = React.HTMLAttributes<HTMLDivElement> & HasDataAttribute & {
|
|
4
|
+
type OnboardingTooltipContainerProps = React.HTMLAttributes<HTMLDivElement> & HasComponent & HasDataAttribute & {
|
|
5
5
|
fixed?: boolean;
|
|
6
6
|
};
|
|
7
7
|
export declare const OnboardingTooltipContainer: React.ForwardRefExoticComponent<React.PropsWithoutRef<OnboardingTooltipContainerProps> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnboardingTooltipContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/OnboardingTooltip/OnboardingTooltipContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"OnboardingTooltipContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/OnboardingTooltip/OnboardingTooltipContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElE,eAAO,MAAM,8BAA8B,sCAAsC,CAAC;AAElF,KAAK,+BAA+B,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GACzE,YAAY,GACZ,gBAAgB,GAAG;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEJ,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,yBAAyB,CACtE,KAAK,CAAC,eAAe,CAAC,+BAA+B,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAM7F,CAAC"}
|
|
@@ -24,11 +24,12 @@ const _jsxruntime = require("react/jsx-runtime");
|
|
|
24
24
|
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
25
25
|
const onboardingTooltipContainerAttr = 'data-onboarding-tooltip-container';
|
|
26
26
|
const OnboardingTooltipContainer = /*#__PURE__*/ _react.forwardRef((_param, ref)=>{
|
|
27
|
-
var { fixed = false } = _param, props = _object_without_properties._(_param, [
|
|
28
|
-
"fixed"
|
|
27
|
+
var { fixed = false, Component = 'div' } = _param, props = _object_without_properties._(_param, [
|
|
28
|
+
"fixed",
|
|
29
|
+
"Component"
|
|
29
30
|
]);
|
|
30
31
|
props[onboardingTooltipContainerAttr] = fixed ? 'fixed' : 'true';
|
|
31
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsx)(
|
|
32
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, _object_spread_props._(_object_spread._({}, props), {
|
|
32
33
|
ref: ref
|
|
33
34
|
}));
|
|
34
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/OnboardingTooltip/OnboardingTooltipContainer.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { HasDataAttribute } from '../../types';\n\nexport const onboardingTooltipContainerAttr = 'data-onboarding-tooltip-container';\n\ntype OnboardingTooltipContainerProps = React.HTMLAttributes<HTMLDivElement> &\n HasDataAttribute & {\n fixed?: boolean;\n };\n\nexport const OnboardingTooltipContainer: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<OnboardingTooltipContainerProps> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, OnboardingTooltipContainerProps>(\n ({ fixed = false, ...props }, ref) => {\n props[onboardingTooltipContainerAttr] = fixed ? 'fixed' : 'true';\n return <
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/OnboardingTooltip/OnboardingTooltipContainer.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { HasComponent, HasDataAttribute } from '../../types';\n\nexport const onboardingTooltipContainerAttr = 'data-onboarding-tooltip-container';\n\ntype OnboardingTooltipContainerProps = React.HTMLAttributes<HTMLDivElement> &\n HasComponent &\n HasDataAttribute & {\n fixed?: boolean;\n };\n\nexport const OnboardingTooltipContainer: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<OnboardingTooltipContainerProps> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, OnboardingTooltipContainerProps>(\n ({ fixed = false, Component = 'div', ...props }, ref) => {\n props[onboardingTooltipContainerAttr] = fixed ? 'fixed' : 'true';\n return <Component {...props} ref={ref} />;\n },\n);\n\nOnboardingTooltipContainer.displayName = 'OnboardingTooltipContainer';\n"],"names":["OnboardingTooltipContainer","onboardingTooltipContainerAttr","React","forwardRef","ref","fixed","Component","props","displayName"],"mappings":";;;;;;;;;;;IAWaA,0BAA0B;eAA1BA;;IARAC,8BAA8B;eAA9BA;;;;;;;;iEAHU;AAGhB,MAAMA,iCAAiC;AAQvC,MAAMD,2CAETE,OAAMC,UAAU,CAClB,SAAiDC;QAAhD,EAAEC,QAAQ,KAAK,EAAEC,YAAY,KAAK,EAAY,WAAPC;QAArCF;QAAeC;;IAChBC,KAAK,CAACN,+BAA+B,GAAGI,QAAQ,UAAU;IAC1D,qBAAO,qBAACC,uDAAcC;QAAOH,KAAKA;;AACpC;AAGFJ,2BAA2BQ,WAAW,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PullToRefresh.d.ts","sourceRoot":"","sources":["../../../../src/components/PullToRefresh/PullToRefresh.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,QAAQ,EAAoD,MAAM,eAAe,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAa,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAA2C,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqBrF,MAAM,WAAW,kBAAmB,SAAQ,QAAQ,EAAE,UAAU,EAAE,WAAW;IAC3E;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IACvB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc;IACd,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,iEAMvB,kBAAkB,KAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"PullToRefresh.d.ts","sourceRoot":"","sources":["../../../../src/components/PullToRefresh/PullToRefresh.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,QAAQ,EAAoD,MAAM,eAAe,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAa,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAA2C,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqBrF,MAAM,WAAW,kBAAmB,SAAQ,QAAQ,EAAE,UAAU,EAAE,WAAW;IAC3E;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IACvB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc;IACd,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,iEAMvB,kBAAkB,KAAG,KAAK,CAAC,SAiN7B,CAAC"}
|
|
@@ -219,7 +219,6 @@ const PullToRefresh = (_param)=>{
|
|
|
219
219
|
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_PullToRefreshSpinner.PullToRefreshSpinner, {
|
|
220
220
|
style: {
|
|
221
221
|
transform: spinnerTransform,
|
|
222
|
-
WebkitTransform: spinnerTransform,
|
|
223
222
|
opacity: watching || refreshing || canRefresh ? 1 : 0
|
|
224
223
|
},
|
|
225
224
|
on: refreshing,
|
|
@@ -229,8 +228,7 @@ const PullToRefresh = (_param)=>{
|
|
|
229
228
|
/*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
230
229
|
className: "vkuiPullToRefresh__content",
|
|
231
230
|
style: {
|
|
232
|
-
transform: contentTransform
|
|
233
|
-
WebkitTransform: contentTransform
|
|
231
|
+
transform: contentTransform
|
|
234
232
|
},
|
|
235
233
|
children: children
|
|
236
234
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/PullToRefresh/PullToRefresh.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { DOMProps, initializeBrowserGesturePreventionEffect, useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { AnyFunction, HasChildren } from '../../types';\nimport { ScrollContextInterface, useScroll } from '../AppRoot/ScrollContext';\nimport { FixedLayout } from '../FixedLayout/FixedLayout';\nimport { Touch, TouchEvent as TouchEventInternal, TouchProps } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { PullToRefreshSpinner } from './PullToRefreshSpinner';\nimport styles from './PullToRefresh.module.css';\n\nconst WAIT_FETCHING_TIMEOUT_MS = 1000;\n\nfunction cancelEvent(event: TouchEventInternal) {\n /* istanbul ignore if: неясно в какой ситуации `event` из `Touch` может быть не определён */\n if (!event) {\n return false;\n }\n if ('preventDefault' in event.originalEvent && event.originalEvent.cancelable) {\n event.originalEvent.preventDefault();\n }\n if ('stopPropagation' in event.originalEvent) {\n event.originalEvent.stopPropagation();\n }\n return false;\n}\n\nexport interface PullToRefreshProps extends DOMProps, TouchProps, HasChildren {\n /**\n * Будет вызвана для обновления контента (прим.: функция должна быть мемоизированным коллбэком)\n */\n onRefresh: AnyFunction;\n /**\n * Определяет, выполняется ли обновление. Для скрытия спиннера после получения контента необходимо передать `false`\n */\n isFetching?: boolean;\n /** @ignore */\n scroll?: ScrollContextInterface;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PullToRefresh\n */\nexport const PullToRefresh = ({\n children,\n isFetching,\n onRefresh,\n className,\n ...restProps\n}: PullToRefreshProps): React.ReactNode => {\n const platform = usePlatform();\n const scroll = useScroll();\n const { window } = useDOM();\n const prevIsFetching = usePrevious(isFetching);\n\n const initParams = React.useMemo(\n () => ({\n start: platform === 'ios' ? -10 : -45,\n max: platform === 'ios' ? 50 : 80,\n maxY: platform === 'ios' ? 400 : 80,\n refreshing: platform === 'ios' ? 36 : 50,\n positionMultiplier: platform === 'ios' ? 0.21 : 1,\n }),\n [platform],\n );\n\n const [spinnerY, setSpinnerY] = React.useState(initParams.start);\n const [watching, setWatching] = React.useState(false);\n const [refreshing, setRefreshing] = React.useState(false);\n const [canRefresh, setCanRefresh] = React.useState(false);\n const [touchDown, setTouchDown] = React.useState(false);\n const prevTouchDown = usePrevious(touchDown);\n\n const touchY = React.useRef(0);\n const [contentShift, setContentShift] = React.useState(0);\n const [spinnerProgress, setSpinnerProgress] = React.useState(0);\n\n const resetRefreshingState = React.useCallback(() => {\n setWatching(false);\n setCanRefresh(false);\n setRefreshing(false);\n setSpinnerY(initParams.start);\n setSpinnerProgress(0);\n setContentShift(0);\n }, [initParams]);\n\n const onRefreshingFinish = React.useCallback(() => {\n if (!touchDown) {\n resetRefreshingState();\n }\n }, [touchDown, resetRefreshingState]);\n\n const waitFetchingTimeoutId = React.useRef<NodeJS.Timeout>();\n\n useIsomorphicLayoutEffect(() => {\n if (prevIsFetching !== undefined && prevIsFetching && !isFetching) {\n onRefreshingFinish();\n }\n }, [prevIsFetching, isFetching, onRefreshingFinish]);\n\n useIsomorphicLayoutEffect(() => {\n if (prevIsFetching !== undefined && !prevIsFetching && isFetching) {\n clearTimeout(waitFetchingTimeoutId.current);\n }\n }, [isFetching, prevIsFetching]);\n\n const runRefreshing = React.useCallback(() => {\n if (!refreshing && onRefresh) {\n // cleanup if the consumer does not start fetching in 1s\n clearTimeout(waitFetchingTimeoutId.current);\n waitFetchingTimeoutId.current = setTimeout(onRefreshingFinish, WAIT_FETCHING_TIMEOUT_MS);\n\n setRefreshing(true);\n setSpinnerY((prevSpinnerY) => (platform === 'ios' ? prevSpinnerY : initParams.refreshing));\n\n onRefresh();\n }\n }, [refreshing, onRefresh, onRefreshingFinish, platform, initParams.refreshing]);\n\n useIsomorphicLayoutEffect(() => {\n if (prevTouchDown !== undefined && prevTouchDown && !touchDown) {\n if (!refreshing && canRefresh) {\n runRefreshing();\n } else if (refreshing && !isFetching) {\n // only iOS can start refresh before gesture end\n resetRefreshingState();\n /* istanbul ignore if: TODO написать тест */\n } else {\n // refreshing && isFetching: refresh in progress\n // OR !refreshing && !canRefresh: pull was not strong enough\n setSpinnerY(refreshing ? initParams.refreshing : initParams.start);\n setSpinnerProgress(0);\n setContentShift(0);\n }\n }\n }, [\n initParams,\n prevIsFetching,\n isFetching,\n onRefreshingFinish,\n prevTouchDown,\n touchDown,\n refreshing,\n canRefresh,\n runRefreshing,\n ]);\n\n useIsomorphicLayoutEffect(\n function toggleDocumentOverscrollBehavior() {\n return window && (watching || refreshing)\n ? initializeBrowserGesturePreventionEffect(window)\n : undefined;\n },\n [window, watching, refreshing],\n );\n\n const startYRef = React.useRef(0);\n\n const onTouchStart = (event: TouchEventInternal) => {\n if (refreshing) {\n cancelEvent(event);\n return;\n }\n setTouchDown(true);\n startYRef.current = event.startY;\n };\n\n const iosRefreshStartedRef = React.useRef(false);\n const onTouchMove = (event: TouchEventInternal) => {\n const { isY, shiftY } = event;\n const { start, max } = initParams;\n const pageYOffset = scroll?.getScroll().y;\n\n if (watching && touchDown) {\n cancelEvent(event);\n\n const { positionMultiplier, maxY } = initParams;\n\n const shift = Math.max(0, shiftY - touchY.current);\n\n const currentY = clamp(start + shift * positionMultiplier, start, maxY);\n const progress = currentY > -10 ? Math.abs((currentY + 10) / max) * 80 : 0;\n\n setSpinnerY(currentY);\n setSpinnerProgress(clamp(progress, 0, 80));\n setCanRefresh(progress > 80);\n setContentShift((currentY + 10) * 2.3);\n\n const iosCanStartRefreshDuringGesture =\n platform === 'ios' && progress > 85 && !refreshing && !iosRefreshStartedRef.current;\n if (iosCanStartRefreshDuringGesture) {\n iosRefreshStartedRef.current = true;\n runRefreshing();\n }\n } else if (isY && pageYOffset === 0 && shiftY > 0 && !refreshing && touchDown) {\n cancelEvent(event);\n\n touchY.current = shiftY;\n setWatching(true);\n setSpinnerY(start);\n setSpinnerProgress(0);\n }\n };\n\n const onTouchEnd = () => {\n setWatching(false);\n setTouchDown(false);\n iosRefreshStartedRef.current = false;\n };\n\n const spinnerTransform = `translate3d(0, ${spinnerY}px, 0)`;\n let contentTransform = '';\n\n if (platform === 'ios' && refreshing && !touchDown) {\n contentTransform = 'translate3d(0, 100px, 0)';\n } else if (platform === 'ios' && (contentShift || refreshing)) {\n contentTransform = `translate3d(0, ${contentShift}px, 0)`;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <Touch\n aria-live=\"polite\"\n aria-busy={!!isFetching}\n {...restProps}\n onStart={onTouchStart}\n onMove={onTouchMove}\n onEnd={onTouchEnd}\n className={classNames(\n styles['PullToRefresh'],\n platform === 'ios' && styles['PullToRefresh--ios'],\n watching && styles['PullToRefresh--watching'],\n refreshing && styles['PullToRefresh--refreshing'],\n className,\n )}\n >\n <FixedLayout className={styles['PullToRefresh__controls']} useParentWidth>\n <PullToRefreshSpinner\n style={{\n transform: spinnerTransform,\n WebkitTransform: spinnerTransform,\n opacity: watching || refreshing || canRefresh ? 1 : 0,\n }}\n on={refreshing}\n progress={refreshing ? undefined : spinnerProgress}\n />\n </FixedLayout>\n\n <div\n className={styles['PullToRefresh__content']}\n style={{\n transform: contentTransform,\n WebkitTransform: contentTransform,\n }}\n >\n {children}\n </div>\n </Touch>\n </TouchRootContext.Provider>\n );\n};\n"],"names":["PullToRefresh","WAIT_FETCHING_TIMEOUT_MS","cancelEvent","event","originalEvent","cancelable","preventDefault","stopPropagation","children","isFetching","onRefresh","className","restProps","platform","usePlatform","scroll","useScroll","window","useDOM","prevIsFetching","usePrevious","initParams","React","useMemo","start","max","maxY","refreshing","positionMultiplier","spinnerY","setSpinnerY","useState","watching","setWatching","setRefreshing","canRefresh","setCanRefresh","touchDown","setTouchDown","prevTouchDown","touchY","useRef","contentShift","setContentShift","spinnerProgress","setSpinnerProgress","resetRefreshingState","useCallback","onRefreshingFinish","waitFetchingTimeoutId","useIsomorphicLayoutEffect","undefined","clearTimeout","current","runRefreshing","setTimeout","prevSpinnerY","toggleDocumentOverscrollBehavior","initializeBrowserGesturePreventionEffect","startYRef","onTouchStart","startY","iosRefreshStartedRef","onTouchMove","isY","shiftY","pageYOffset","getScroll","y","shift","Math","currentY","clamp","progress","abs","iosCanStartRefreshDuringGesture","onTouchEnd","spinnerTransform","contentTransform","TouchRootContext","Provider","value","Touch","aria-live","aria-busy","onStart","onMove","onEnd","classNames","FixedLayout","useParentWidth","PullToRefreshSpinner","style","transform","WebkitTransform","opacity","on","div"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/PullToRefresh/PullToRefresh.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { DOMProps, initializeBrowserGesturePreventionEffect, useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { AnyFunction, HasChildren } from '../../types';\nimport { ScrollContextInterface, useScroll } from '../AppRoot/ScrollContext';\nimport { FixedLayout } from '../FixedLayout/FixedLayout';\nimport { Touch, TouchEvent as TouchEventInternal, TouchProps } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { PullToRefreshSpinner } from './PullToRefreshSpinner';\nimport styles from './PullToRefresh.module.css';\n\nconst WAIT_FETCHING_TIMEOUT_MS = 1000;\n\nfunction cancelEvent(event: TouchEventInternal) {\n /* istanbul ignore if: неясно в какой ситуации `event` из `Touch` может быть не определён */\n if (!event) {\n return false;\n }\n if ('preventDefault' in event.originalEvent && event.originalEvent.cancelable) {\n event.originalEvent.preventDefault();\n }\n if ('stopPropagation' in event.originalEvent) {\n event.originalEvent.stopPropagation();\n }\n return false;\n}\n\nexport interface PullToRefreshProps extends DOMProps, TouchProps, HasChildren {\n /**\n * Будет вызвана для обновления контента (прим.: функция должна быть мемоизированным коллбэком)\n */\n onRefresh: AnyFunction;\n /**\n * Определяет, выполняется ли обновление. Для скрытия спиннера после получения контента необходимо передать `false`\n */\n isFetching?: boolean;\n /** @ignore */\n scroll?: ScrollContextInterface;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PullToRefresh\n */\nexport const PullToRefresh = ({\n children,\n isFetching,\n onRefresh,\n className,\n ...restProps\n}: PullToRefreshProps): React.ReactNode => {\n const platform = usePlatform();\n const scroll = useScroll();\n const { window } = useDOM();\n const prevIsFetching = usePrevious(isFetching);\n\n const initParams = React.useMemo(\n () => ({\n start: platform === 'ios' ? -10 : -45,\n max: platform === 'ios' ? 50 : 80,\n maxY: platform === 'ios' ? 400 : 80,\n refreshing: platform === 'ios' ? 36 : 50,\n positionMultiplier: platform === 'ios' ? 0.21 : 1,\n }),\n [platform],\n );\n\n const [spinnerY, setSpinnerY] = React.useState(initParams.start);\n const [watching, setWatching] = React.useState(false);\n const [refreshing, setRefreshing] = React.useState(false);\n const [canRefresh, setCanRefresh] = React.useState(false);\n const [touchDown, setTouchDown] = React.useState(false);\n const prevTouchDown = usePrevious(touchDown);\n\n const touchY = React.useRef(0);\n const [contentShift, setContentShift] = React.useState(0);\n const [spinnerProgress, setSpinnerProgress] = React.useState(0);\n\n const resetRefreshingState = React.useCallback(() => {\n setWatching(false);\n setCanRefresh(false);\n setRefreshing(false);\n setSpinnerY(initParams.start);\n setSpinnerProgress(0);\n setContentShift(0);\n }, [initParams]);\n\n const onRefreshingFinish = React.useCallback(() => {\n if (!touchDown) {\n resetRefreshingState();\n }\n }, [touchDown, resetRefreshingState]);\n\n const waitFetchingTimeoutId = React.useRef<NodeJS.Timeout>();\n\n useIsomorphicLayoutEffect(() => {\n if (prevIsFetching !== undefined && prevIsFetching && !isFetching) {\n onRefreshingFinish();\n }\n }, [prevIsFetching, isFetching, onRefreshingFinish]);\n\n useIsomorphicLayoutEffect(() => {\n if (prevIsFetching !== undefined && !prevIsFetching && isFetching) {\n clearTimeout(waitFetchingTimeoutId.current);\n }\n }, [isFetching, prevIsFetching]);\n\n const runRefreshing = React.useCallback(() => {\n if (!refreshing && onRefresh) {\n // cleanup if the consumer does not start fetching in 1s\n clearTimeout(waitFetchingTimeoutId.current);\n waitFetchingTimeoutId.current = setTimeout(onRefreshingFinish, WAIT_FETCHING_TIMEOUT_MS);\n\n setRefreshing(true);\n setSpinnerY((prevSpinnerY) => (platform === 'ios' ? prevSpinnerY : initParams.refreshing));\n\n onRefresh();\n }\n }, [refreshing, onRefresh, onRefreshingFinish, platform, initParams.refreshing]);\n\n useIsomorphicLayoutEffect(() => {\n if (prevTouchDown !== undefined && prevTouchDown && !touchDown) {\n if (!refreshing && canRefresh) {\n runRefreshing();\n } else if (refreshing && !isFetching) {\n // only iOS can start refresh before gesture end\n resetRefreshingState();\n /* istanbul ignore if: TODO написать тест */\n } else {\n // refreshing && isFetching: refresh in progress\n // OR !refreshing && !canRefresh: pull was not strong enough\n setSpinnerY(refreshing ? initParams.refreshing : initParams.start);\n setSpinnerProgress(0);\n setContentShift(0);\n }\n }\n }, [\n initParams,\n prevIsFetching,\n isFetching,\n onRefreshingFinish,\n prevTouchDown,\n touchDown,\n refreshing,\n canRefresh,\n runRefreshing,\n ]);\n\n useIsomorphicLayoutEffect(\n function toggleDocumentOverscrollBehavior() {\n return window && (watching || refreshing)\n ? initializeBrowserGesturePreventionEffect(window)\n : undefined;\n },\n [window, watching, refreshing],\n );\n\n const startYRef = React.useRef(0);\n\n const onTouchStart = (event: TouchEventInternal) => {\n if (refreshing) {\n cancelEvent(event);\n return;\n }\n setTouchDown(true);\n startYRef.current = event.startY;\n };\n\n const iosRefreshStartedRef = React.useRef(false);\n const onTouchMove = (event: TouchEventInternal) => {\n const { isY, shiftY } = event;\n const { start, max } = initParams;\n const pageYOffset = scroll?.getScroll().y;\n\n if (watching && touchDown) {\n cancelEvent(event);\n\n const { positionMultiplier, maxY } = initParams;\n\n const shift = Math.max(0, shiftY - touchY.current);\n\n const currentY = clamp(start + shift * positionMultiplier, start, maxY);\n const progress = currentY > -10 ? Math.abs((currentY + 10) / max) * 80 : 0;\n\n setSpinnerY(currentY);\n setSpinnerProgress(clamp(progress, 0, 80));\n setCanRefresh(progress > 80);\n setContentShift((currentY + 10) * 2.3);\n\n const iosCanStartRefreshDuringGesture =\n platform === 'ios' && progress > 85 && !refreshing && !iosRefreshStartedRef.current;\n if (iosCanStartRefreshDuringGesture) {\n iosRefreshStartedRef.current = true;\n runRefreshing();\n }\n } else if (isY && pageYOffset === 0 && shiftY > 0 && !refreshing && touchDown) {\n cancelEvent(event);\n\n touchY.current = shiftY;\n setWatching(true);\n setSpinnerY(start);\n setSpinnerProgress(0);\n }\n };\n\n const onTouchEnd = () => {\n setWatching(false);\n setTouchDown(false);\n iosRefreshStartedRef.current = false;\n };\n\n const spinnerTransform = `translate3d(0, ${spinnerY}px, 0)`;\n let contentTransform = '';\n\n if (platform === 'ios' && refreshing && !touchDown) {\n contentTransform = 'translate3d(0, 100px, 0)';\n } else if (platform === 'ios' && (contentShift || refreshing)) {\n contentTransform = `translate3d(0, ${contentShift}px, 0)`;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <Touch\n aria-live=\"polite\"\n aria-busy={!!isFetching}\n {...restProps}\n onStart={onTouchStart}\n onMove={onTouchMove}\n onEnd={onTouchEnd}\n className={classNames(\n styles['PullToRefresh'],\n platform === 'ios' && styles['PullToRefresh--ios'],\n watching && styles['PullToRefresh--watching'],\n refreshing && styles['PullToRefresh--refreshing'],\n className,\n )}\n >\n <FixedLayout className={styles['PullToRefresh__controls']} useParentWidth>\n <PullToRefreshSpinner\n style={{\n transform: spinnerTransform,\n opacity: watching || refreshing || canRefresh ? 1 : 0,\n }}\n on={refreshing}\n progress={refreshing ? undefined : spinnerProgress}\n />\n </FixedLayout>\n\n <div\n className={styles['PullToRefresh__content']}\n style={{\n transform: contentTransform,\n }}\n >\n {children}\n </div>\n </Touch>\n </TouchRootContext.Provider>\n );\n};\n"],"names":["PullToRefresh","WAIT_FETCHING_TIMEOUT_MS","cancelEvent","event","originalEvent","cancelable","preventDefault","stopPropagation","children","isFetching","onRefresh","className","restProps","platform","usePlatform","scroll","useScroll","window","useDOM","prevIsFetching","usePrevious","initParams","React","useMemo","start","max","maxY","refreshing","positionMultiplier","spinnerY","setSpinnerY","useState","watching","setWatching","setRefreshing","canRefresh","setCanRefresh","touchDown","setTouchDown","prevTouchDown","touchY","useRef","contentShift","setContentShift","spinnerProgress","setSpinnerProgress","resetRefreshingState","useCallback","onRefreshingFinish","waitFetchingTimeoutId","useIsomorphicLayoutEffect","undefined","clearTimeout","current","runRefreshing","setTimeout","prevSpinnerY","toggleDocumentOverscrollBehavior","initializeBrowserGesturePreventionEffect","startYRef","onTouchStart","startY","iosRefreshStartedRef","onTouchMove","isY","shiftY","pageYOffset","getScroll","y","shift","Math","currentY","clamp","progress","abs","iosCanStartRefreshDuringGesture","onTouchEnd","spinnerTransform","contentTransform","TouchRootContext","Provider","value","Touch","aria-live","aria-busy","onStart","onMove","onEnd","classNames","FixedLayout","useParentWidth","PullToRefreshSpinner","style","transform","opacity","on","div"],"mappings":";;;;+BA+CaA;;;eAAAA;;;;;;;;;iEA/CU;sBACI;sBACL;6BACM;6BACA;qBAC+C;2CACjC;+BAEQ;6BACtB;uBACwC;uEACvC;sCACQ;AAGrC,MAAMC,2BAA2B;AAEjC,SAASC,YAAYC,KAAyB;IAC5C,0FAA0F,GAC1F,IAAI,CAACA,OAAO;QACV,OAAO;IACT;IACA,IAAI,oBAAoBA,MAAMC,aAAa,IAAID,MAAMC,aAAa,CAACC,UAAU,EAAE;QAC7EF,MAAMC,aAAa,CAACE,cAAc;IACpC;IACA,IAAI,qBAAqBH,MAAMC,aAAa,EAAE;QAC5CD,MAAMC,aAAa,CAACG,eAAe;IACrC;IACA,OAAO;AACT;AAkBO,MAAMP,gBAAgB;QAAC,EAC5BQ,QAAQ,EACRC,UAAU,EACVC,SAAS,EACTC,SAAS,EAEU,WADhBC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,MAAME,WAAWC,IAAAA,wBAAW;IAC5B,MAAMC,SAASC,IAAAA,wBAAS;IACxB,MAAM,EAAEC,MAAM,EAAE,GAAGC,IAAAA,WAAM;IACzB,MAAMC,iBAAiBC,IAAAA,wBAAW,EAACX;IAEnC,MAAMY,aAAaC,OAAMC,OAAO,CAC9B,IAAO,CAAA;YACLC,OAAOX,aAAa,QAAQ,CAAC,KAAK,CAAC;YACnCY,KAAKZ,aAAa,QAAQ,KAAK;YAC/Ba,MAAMb,aAAa,QAAQ,MAAM;YACjCc,YAAYd,aAAa,QAAQ,KAAK;YACtCe,oBAAoBf,aAAa,QAAQ,OAAO;QAClD,CAAA,GACA;QAACA;KAAS;IAGZ,MAAM,CAACgB,UAAUC,YAAY,GAAGR,OAAMS,QAAQ,CAACV,WAAWG,KAAK;IAC/D,MAAM,CAACQ,UAAUC,YAAY,GAAGX,OAAMS,QAAQ,CAAC;IAC/C,MAAM,CAACJ,YAAYO,cAAc,GAAGZ,OAAMS,QAAQ,CAAC;IACnD,MAAM,CAACI,YAAYC,cAAc,GAAGd,OAAMS,QAAQ,CAAC;IACnD,MAAM,CAACM,WAAWC,aAAa,GAAGhB,OAAMS,QAAQ,CAAC;IACjD,MAAMQ,gBAAgBnB,IAAAA,wBAAW,EAACiB;IAElC,MAAMG,SAASlB,OAAMmB,MAAM,CAAC;IAC5B,MAAM,CAACC,cAAcC,gBAAgB,GAAGrB,OAAMS,QAAQ,CAAC;IACvD,MAAM,CAACa,iBAAiBC,mBAAmB,GAAGvB,OAAMS,QAAQ,CAAC;IAE7D,MAAMe,uBAAuBxB,OAAMyB,WAAW,CAAC;QAC7Cd,YAAY;QACZG,cAAc;QACdF,cAAc;QACdJ,YAAYT,WAAWG,KAAK;QAC5BqB,mBAAmB;QACnBF,gBAAgB;IAClB,GAAG;QAACtB;KAAW;IAEf,MAAM2B,qBAAqB1B,OAAMyB,WAAW,CAAC;QAC3C,IAAI,CAACV,WAAW;YACdS;QACF;IACF,GAAG;QAACT;QAAWS;KAAqB;IAEpC,MAAMG,wBAAwB3B,OAAMmB,MAAM;IAE1CS,IAAAA,oDAAyB,EAAC;QACxB,IAAI/B,mBAAmBgC,aAAahC,kBAAkB,CAACV,YAAY;YACjEuC;QACF;IACF,GAAG;QAAC7B;QAAgBV;QAAYuC;KAAmB;IAEnDE,IAAAA,oDAAyB,EAAC;QACxB,IAAI/B,mBAAmBgC,aAAa,CAAChC,kBAAkBV,YAAY;YACjE2C,aAAaH,sBAAsBI,OAAO;QAC5C;IACF,GAAG;QAAC5C;QAAYU;KAAe;IAE/B,MAAMmC,gBAAgBhC,OAAMyB,WAAW,CAAC;QACtC,IAAI,CAACpB,cAAcjB,WAAW;YAC5B,wDAAwD;YACxD0C,aAAaH,sBAAsBI,OAAO;YAC1CJ,sBAAsBI,OAAO,GAAGE,WAAWP,oBAAoB/C;YAE/DiC,cAAc;YACdJ,YAAY,CAAC0B,eAAkB3C,aAAa,QAAQ2C,eAAenC,WAAWM,UAAU;YAExFjB;QACF;IACF,GAAG;QAACiB;QAAYjB;QAAWsC;QAAoBnC;QAAUQ,WAAWM,UAAU;KAAC;IAE/EuB,IAAAA,oDAAyB,EAAC;QACxB,IAAIX,kBAAkBY,aAAaZ,iBAAiB,CAACF,WAAW;YAC9D,IAAI,CAACV,cAAcQ,YAAY;gBAC7BmB;YACF,OAAO,IAAI3B,cAAc,CAAClB,YAAY;gBACpC,gDAAgD;gBAChDqC;YACA,0CAA0C,GAC5C,OAAO;gBACL,gDAAgD;gBAChD,4DAA4D;gBAC5DhB,YAAYH,aAAaN,WAAWM,UAAU,GAAGN,WAAWG,KAAK;gBACjEqB,mBAAmB;gBACnBF,gBAAgB;YAClB;QACF;IACF,GAAG;QACDtB;QACAF;QACAV;QACAuC;QACAT;QACAF;QACAV;QACAQ;QACAmB;KACD;IAEDJ,IAAAA,oDAAyB,EACvB,SAASO;QACP,OAAOxC,UAAWe,CAAAA,YAAYL,UAAS,IACnC+B,IAAAA,6CAAwC,EAACzC,UACzCkC;IACN,GACA;QAAClC;QAAQe;QAAUL;KAAW;IAGhC,MAAMgC,YAAYrC,OAAMmB,MAAM,CAAC;IAE/B,MAAMmB,eAAe,CAACzD;QACpB,IAAIwB,YAAY;YACdzB,YAAYC;YACZ;QACF;QACAmC,aAAa;QACbqB,UAAUN,OAAO,GAAGlD,MAAM0D,MAAM;IAClC;IAEA,MAAMC,uBAAuBxC,OAAMmB,MAAM,CAAC;IAC1C,MAAMsB,cAAc,CAAC5D;QACnB,MAAM,EAAE6D,GAAG,EAAEC,MAAM,EAAE,GAAG9D;QACxB,MAAM,EAAEqB,KAAK,EAAEC,GAAG,EAAE,GAAGJ;QACvB,MAAM6C,cAAcnD,mBAAAA,6BAAAA,OAAQoD,SAAS,GAAGC,CAAC;QAEzC,IAAIpC,YAAYK,WAAW;YACzBnC,YAAYC;YAEZ,MAAM,EAAEyB,kBAAkB,EAAEF,IAAI,EAAE,GAAGL;YAErC,MAAMgD,QAAQC,KAAK7C,GAAG,CAAC,GAAGwC,SAASzB,OAAOa,OAAO;YAEjD,MAAMkB,WAAWC,IAAAA,WAAK,EAAChD,QAAQ6C,QAAQzC,oBAAoBJ,OAAOE;YAClE,MAAM+C,WAAWF,WAAW,CAAC,KAAKD,KAAKI,GAAG,CAAC,AAACH,CAAAA,WAAW,EAAC,IAAK9C,OAAO,KAAK;YAEzEK,YAAYyC;YACZ1B,mBAAmB2B,IAAAA,WAAK,EAACC,UAAU,GAAG;YACtCrC,cAAcqC,WAAW;YACzB9B,gBAAgB,AAAC4B,CAAAA,WAAW,EAAC,IAAK;YAElC,MAAMI,kCACJ9D,aAAa,SAAS4D,WAAW,MAAM,CAAC9C,cAAc,CAACmC,qBAAqBT,OAAO;YACrF,IAAIsB,iCAAiC;gBACnCb,qBAAqBT,OAAO,GAAG;gBAC/BC;YACF;QACF,OAAO,IAAIU,OAAOE,gBAAgB,KAAKD,SAAS,KAAK,CAACtC,cAAcU,WAAW;YAC7EnC,YAAYC;YAEZqC,OAAOa,OAAO,GAAGY;YACjBhC,YAAY;YACZH,YAAYN;YACZqB,mBAAmB;QACrB;IACF;IAEA,MAAM+B,aAAa;QACjB3C,YAAY;QACZK,aAAa;QACbwB,qBAAqBT,OAAO,GAAG;IACjC;IAEA,MAAMwB,mBAAmB,CAAC,eAAe,EAAEhD,SAAS,MAAM,CAAC;IAC3D,IAAIiD,mBAAmB;IAEvB,IAAIjE,aAAa,SAASc,cAAc,CAACU,WAAW;QAClDyC,mBAAmB;IACrB,OAAO,IAAIjE,aAAa,SAAU6B,CAAAA,gBAAgBf,UAAS,GAAI;QAC7DmD,mBAAmB,CAAC,eAAe,EAAEpC,aAAa,MAAM,CAAC;IAC3D;IAEA,qBACE,qBAACqC,qBAAgB,CAACC,QAAQ;QAACC,OAAO;kBAChC,cAAA,sBAACC,YAAK;YACJC,aAAU;YACVC,aAAW,CAAC,CAAC3E;WACTG;YACJyE,SAASzB;YACT0B,QAAQvB;YACRwB,OAAOX;YACPjE,WAAW6E,IAAAA,gBAAU,uBAEnB3E,aAAa,mCACbmB,2CACAL,+CACAhB;;8BAGF,qBAAC8E,wBAAW;oBAAC9E,SAAS;oBAAqC+E,cAAc;8BACvE,cAAA,qBAACC,0CAAoB;wBACnBC,OAAO;4BACLC,WAAWhB;4BACXiB,SAAS9D,YAAYL,cAAcQ,aAAa,IAAI;wBACtD;wBACA4D,IAAIpE;wBACJ8C,UAAU9C,aAAawB,YAAYP;;;8BAIvC,qBAACoD;oBACCrF,SAAS;oBACTiF,OAAO;wBACLC,WAAWf;oBACb;8BAECtE;;;;;AAKX"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { HasDataAttribute, HasRef, HasRootRef } from '../../types';
|
|
3
3
|
import { type TappableProps } from '../Tappable/Tappable';
|
|
4
|
+
import { RadioInput } from './RadioInput/RadioInput';
|
|
4
5
|
export interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement>, HasRef<HTMLInputElement>, HasRootRef<HTMLLabelElement>, Pick<TappableProps, 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'> {
|
|
5
6
|
description?: React.ReactNode;
|
|
6
7
|
titleAfter?: React.ReactNode;
|
|
@@ -12,5 +13,8 @@ export interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement>,
|
|
|
12
13
|
/**
|
|
13
14
|
* @see https://vkcom.github.io/VKUI/#/Radio
|
|
14
15
|
*/
|
|
15
|
-
export declare const Radio:
|
|
16
|
+
export declare const Radio: {
|
|
17
|
+
({ children, description, style, className, getRootRef, titleAfter, getRef, labelProps, hoverMode, activeMode, hasHover, hasActive, focusVisibleMode, ...restProps }: RadioProps): React.ReactNode;
|
|
18
|
+
Input: typeof RadioInput;
|
|
19
|
+
};
|
|
16
20
|
//# sourceMappingURL=Radio.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../../src/components/Radio/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../../src/components/Radio/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EACjD,MAAM,CAAC,gBAAgB,CAAC,EACxB,UAAU,CAAC,gBAAgB,CAAC,EAC5B,IAAI,CACF,aAAa,EACb,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,kBAAkB,CAC3E;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;QAEI;IACJ,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,KAAK;0KAef,UAAU,GAAG,KAAK,CAAC,SAAS;;CAoB9B,CAAC"}
|