@vkontakte/vkui 7.3.7 → 7.4.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/components/ActionSheet/ActionSheet.d.ts +1 -1
- package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/AppRoot/ScrollContext.js +2 -2
- package/dist/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/components/Banner/Banner.d.ts +2 -2
- package/dist/components/Banner/Banner.d.ts.map +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +9 -7
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +9 -2
- package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +48 -35
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarRange/types.d.ts +2 -0
- package/dist/components/CalendarRange/types.d.ts.map +1 -0
- package/dist/components/CalendarRange/types.js +3 -0
- package/dist/components/CalendarRange/types.js.map +1 -0
- package/dist/components/CalendarRange/utils.d.ts +29 -0
- package/dist/components/CalendarRange/utils.d.ts.map +1 -0
- package/dist/components/CalendarRange/utils.js +123 -0
- package/dist/components/CalendarRange/utils.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +2 -2
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
- package/dist/components/ChipsInput/useChipsInput.js +21 -2
- package/dist/components/ChipsInput/useChipsInput.js.map +1 -1
- package/dist/components/ChipsInputBase/types.d.ts +5 -1
- package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/types.js.map +1 -1
- package/dist/components/Clickable/Clickable.d.ts +4 -0
- package/dist/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.js +9 -5
- package/dist/components/Clickable/Clickable.js.map +1 -1
- package/dist/components/Clickable/RealClickable.d.ts +1 -1
- package/dist/components/Clickable/RealClickable.d.ts.map +1 -1
- package/dist/components/Clickable/RealClickable.js +3 -2
- package/dist/components/Clickable/RealClickable.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.d.ts +2 -2
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +4 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts +1 -1
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/DateInput.js +48 -50
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts +22 -2
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +159 -66
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
- package/dist/components/FocusTrap/FocusTrap.d.ts.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.js +6 -3
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -2
- package/dist/components/HorizontalCell/HorizontalCell.d.ts.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.d.ts +2 -2
- package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.d.ts.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -1
- package/dist/components/IconButton/IconButton.d.ts +2 -2
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/InputLike/InputLike.d.ts +1 -1
- package/dist/components/InputLike/InputLike.d.ts.map +1 -1
- package/dist/components/InputLike/InputLike.js +7 -6
- package/dist/components/InputLike/InputLike.js.map +1 -1
- package/dist/components/Link/Link.d.ts +2 -2
- package/dist/components/Link/Link.d.ts.map +1 -1
- package/dist/components/Link/Link.js +2 -1
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.d.ts.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.js +1 -8
- package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts +2 -2
- package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts.map +1 -1
- package/dist/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -1
- package/dist/components/NumberInputLike/NumberInputLike.d.ts +8 -0
- package/dist/components/NumberInputLike/NumberInputLike.d.ts.map +1 -0
- package/dist/components/NumberInputLike/NumberInputLike.js +45 -0
- package/dist/components/NumberInputLike/NumberInputLike.js.map +1 -0
- package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts +2 -2
- package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts.map +1 -1
- package/dist/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.d.ts +3 -1
- package/dist/components/PanelHeader/PanelHeader.d.ts.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts +2 -2
- package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/Radio/Radio.d.ts +2 -2
- package/dist/components/Radio/Radio.d.ts.map +1 -1
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Removable/Removable.d.ts +1 -4
- package/dist/components/Removable/Removable.d.ts.map +1 -1
- package/dist/components/Removable/Removable.js +39 -116
- package/dist/components/Removable/Removable.js.map +1 -1
- package/dist/components/Removable/RemovableIos.d.ts +10 -0
- package/dist/components/Removable/RemovableIos.d.ts.map +1 -0
- package/dist/components/Removable/RemovableIos.js +124 -0
- package/dist/components/Removable/RemovableIos.js.map +1 -0
- package/dist/components/RichCell/RichCell.d.ts +2 -2
- package/dist/components/RichCell/RichCell.d.ts.map +1 -1
- package/dist/components/RichCell/RichCell.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinner.js +4 -2
- package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +2 -2
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js +4 -3
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.d.ts +2 -2
- package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
- package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts +5 -1
- package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/Skeleton/Skeleton.js +7 -4
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts +5 -1
- package/dist/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.js +6 -3
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.d.ts +2 -2
- package/dist/components/SubnavigationButton/SubnavigationButton.d.ts.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts +13 -9
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +14 -10
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/TabsController.d.ts +7 -0
- package/dist/components/Tabs/TabsController.d.ts.map +1 -0
- package/dist/components/Tabs/TabsController.js +19 -0
- package/dist/components/Tabs/TabsController.js.map +1 -0
- package/dist/components/Tabs/TabsModeContext.d.ts +13 -0
- package/dist/components/Tabs/TabsModeContext.d.ts.map +1 -0
- package/dist/components/Tabs/TabsModeContext.js +11 -0
- package/dist/components/Tabs/TabsModeContext.js.map +1 -0
- package/dist/components/TabsItem/TabsItem.d.ts +3 -3
- package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
- package/dist/components/TabsItem/TabsItem.js +21 -6
- package/dist/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +1 -0
- package/dist/components/Tappable/Tappable.d.ts.map +1 -1
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/ToolButton/ToolButton.d.ts +2 -2
- package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/components/UsersStack/UsersStack.d.ts +1 -1
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.js +2 -2
- package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js +9 -7
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +44 -31
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarRange/types.js +3 -0
- package/dist/cssm/components/CalendarRange/types.js.map +1 -0
- package/dist/cssm/components/CalendarRange/utils.js +122 -0
- package/dist/cssm/components/CalendarRange/utils.js.map +1 -0
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/ChipsInput/useChipsInput.js +21 -2
- package/dist/cssm/components/ChipsInput/useChipsInput.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.js +4 -3
- package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
- package/dist/cssm/components/Clickable/RealClickable.js +1 -1
- package/dist/cssm/components/Clickable/RealClickable.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +45 -46
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +148 -58
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js +4 -2
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -1
- package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.js +3 -3
- package/dist/cssm/components/InputLike/InputLike.js.map +1 -1
- package/dist/cssm/components/Link/Link.js +1 -0
- package/dist/cssm/components/Link/Link.js.map +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +1 -8
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cssm/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -1
- package/dist/cssm/components/NumberInputLike/NumberInputLike.js +33 -0
- package/dist/cssm/components/NumberInputLike/NumberInputLike.js.map +1 -0
- package/dist/cssm/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.js +39 -115
- package/dist/cssm/components/Removable/Removable.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.module.css +9 -0
- package/dist/cssm/components/Removable/RemovableIos.js +118 -0
- package/dist/cssm/components/Removable/RemovableIos.js.map +1 -0
- package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +2 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js +3 -2
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.js +6 -3
- package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/cssm/components/Spinner/Spinner.js +5 -2
- package/dist/cssm/components/Spinner/Spinner.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/Tabs/Tabs.js +10 -9
- package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
- package/dist/cssm/components/Tabs/TabsController.js +19 -0
- package/dist/cssm/components/Tabs/TabsController.js.map +1 -0
- package/dist/cssm/components/Tabs/TabsModeContext.js +11 -0
- package/dist/cssm/components/Tabs/TabsModeContext.js.map +1 -0
- package/dist/cssm/components/TabsItem/TabsItem.js +17 -4
- package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/hooks/useCalendar.js +0 -10
- package/dist/cssm/hooks/useCalendar.js.map +1 -1
- package/dist/cssm/hooks/useDateInput.js +28 -17
- package/dist/cssm/hooks/useDateInput.js.map +1 -1
- package/dist/cssm/hooks/useEventListener.js.map +1 -1
- package/dist/cssm/hooks/useExternRef.js.map +1 -1
- package/dist/cssm/hooks/useFocusTrap.js +2 -2
- package/dist/cssm/hooks/useFocusTrap.js.map +1 -1
- package/dist/cssm/hooks/useMutationObserver.js +6 -5
- package/dist/cssm/hooks/useMutationObserver.js.map +1 -1
- package/dist/cssm/index.js +1 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/dom.js +7 -1
- package/dist/cssm/lib/dom.js.map +1 -1
- package/dist/cssm/lib/floating/customResizeObserver.js.map +1 -1
- package/dist/cssm/lib/floating/index.js.map +1 -1
- package/dist/cssm/lib/floating/types/common.js.map +1 -1
- package/dist/cssm/lib/object.js +12 -0
- package/dist/cssm/lib/object.js.map +1 -1
- package/dist/cssm/lib/sheet/controllers/BottomSheetController.js.map +1 -1
- package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
- package/dist/cssm/styles/animationVisibilityDelay.js +10 -0
- package/dist/cssm/styles/animationVisibilityDelay.js.map +1 -0
- package/dist/cssm/styles/animationVisibilityDelay.module.css +13 -0
- package/dist/cssm/styles/themes.css +4 -2
- package/dist/hooks/useCalendar.d.ts +0 -3
- package/dist/hooks/useCalendar.d.ts.map +1 -1
- package/dist/hooks/useCalendar.js +0 -10
- package/dist/hooks/useCalendar.js.map +1 -1
- package/dist/hooks/useDateInput.d.ts.map +1 -1
- package/dist/hooks/useDateInput.js +29 -18
- package/dist/hooks/useDateInput.js.map +1 -1
- package/dist/hooks/useEventListener.js.map +1 -1
- package/dist/hooks/useExternRef.js.map +1 -1
- package/dist/hooks/useFocusTrap.d.ts +5 -1
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +2 -2
- package/dist/hooks/useFocusTrap.js.map +1 -1
- package/dist/hooks/useMutationObserver.d.ts +2 -1
- package/dist/hooks/useMutationObserver.d.ts.map +1 -1
- package/dist/hooks/useMutationObserver.js +6 -5
- package/dist/hooks/useMutationObserver.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/dom.d.ts.map +1 -1
- package/dist/lib/dom.js +7 -1
- package/dist/lib/dom.js.map +1 -1
- package/dist/lib/floating/customResizeObserver.js.map +1 -1
- package/dist/lib/floating/index.d.ts +1 -1
- package/dist/lib/floating/index.d.ts.map +1 -1
- package/dist/lib/floating/index.js.map +1 -1
- package/dist/lib/floating/types/common.d.ts +1 -1
- package/dist/lib/floating/types/common.d.ts.map +1 -1
- package/dist/lib/floating/types/common.js.map +1 -1
- package/dist/lib/object.d.ts +1 -0
- package/dist/lib/object.d.ts.map +1 -1
- package/dist/lib/object.js +12 -0
- package/dist/lib/object.js.map +1 -1
- package/dist/lib/sheet/controllers/BottomSheetController.js.map +1 -1
- package/dist/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
- package/dist/styles/animationVisibilityDelay.d.ts +3 -0
- package/dist/styles/animationVisibilityDelay.d.ts.map +1 -0
- package/dist/styles/animationVisibilityDelay.js +10 -0
- package/dist/styles/animationVisibilityDelay.js.map +1 -0
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +3 -6
- package/src/components/ActionSheet/ActionSheet.tsx +4 -1
- package/src/components/AppRoot/AppRoot.mdx +1 -1
- package/src/components/AppRoot/ScrollContext.tsx +2 -2
- package/src/components/Banner/Banner.tsx +2 -2
- package/src/components/Button/Button.tsx +2 -2
- package/src/components/Calendar/Calendar.tsx +8 -7
- package/src/components/CalendarRange/CalendarRange.tsx +65 -42
- package/src/components/CalendarRange/types.ts +1 -0
- package/src/components/CalendarRange/utils.ts +190 -0
- package/src/components/Checkbox/Checkbox.tsx +2 -2
- package/src/components/ChipsInput/useChipsInput.ts +23 -2
- package/src/components/ChipsInputBase/types.ts +5 -1
- package/src/components/Clickable/Clickable.tsx +12 -4
- package/src/components/Clickable/RealClickable.tsx +1 -0
- package/src/components/ContentCard/ContentCard.tsx +2 -2
- package/src/components/CustomSelect/CustomSelect.tsx +11 -7
- package/src/components/DateInput/DateInput.tsx +41 -43
- package/src/components/DateRangeInput/DateRangeInput.tsx +183 -65
- package/src/components/FocusTrap/FocusTrap.tsx +3 -0
- package/src/components/FormItem/FormItemTop/FormItemTop.mdx +1 -1
- package/src/components/HorizontalCell/HorizontalCell.tsx +2 -2
- package/src/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.tsx +2 -2
- package/src/components/IconButton/IconButton.tsx +2 -2
- package/src/components/InputLike/InputLike.tsx +4 -3
- package/src/components/Link/Link.tsx +3 -2
- package/src/components/MiniInfoCell/MiniInfoCell.tsx +2 -7
- package/src/components/ModalOutsideButton/ModalOutsideButton.tsx +2 -2
- package/src/components/NumberInputLike/NumberInputLike.tsx +56 -0
- package/src/components/Pagination/PaginationPage/PaginationPageButton.tsx +2 -2
- package/src/components/PanelHeader/PanelHeader.tsx +3 -1
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +2 -2
- package/src/components/Radio/Radio.tsx +2 -2
- package/src/components/Removable/Removable.module.css +9 -0
- package/src/components/Removable/Removable.module.css.d.ts.map +1 -1
- package/src/components/Removable/Removable.tsx +50 -120
- package/src/components/Removable/RemovableIos.tsx +135 -0
- package/src/components/RichCell/RichCell.tsx +2 -2
- package/src/components/ScreenSpinner/ScreenSpinner.tsx +8 -1
- package/src/components/ScreenSpinner/ScreenSpinnerContainer.tsx +4 -1
- package/src/components/SelectionControl/SelectionControl.tsx +2 -2
- package/src/components/SimpleCell/SimpleCell.tsx +2 -2
- package/src/components/Skeleton/Skeleton.tsx +15 -2
- package/src/components/Spinner/Spinner.tsx +13 -1
- package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -2
- package/src/components/Tabs/Tabs.tsx +23 -19
- package/src/components/Tabs/TabsController.ts +37 -0
- package/src/components/Tabs/TabsModeContext.ts +24 -0
- package/src/components/TabsItem/TabsItem.tsx +22 -5
- package/src/components/Tappable/Tappable.tsx +5 -0
- package/src/components/ToolButton/ToolButton.tsx +2 -2
- package/src/components/UnstyledTextField/UnstyledTextField.mdx +1 -1
- package/src/components/UsersStack/UsersStack.tsx +1 -1
- package/src/hooks/useCalendar.ts +0 -12
- package/src/hooks/useDateInput.ts +21 -12
- package/src/hooks/useFocusTrap.ts +10 -1
- package/src/hooks/useMutationObserver.ts +7 -4
- package/src/index.ts +2 -0
- package/src/lib/dom.tsx +7 -1
- package/src/lib/floating/index.ts +2 -0
- package/src/lib/floating/types/common.ts +2 -0
- package/src/lib/object.ts +19 -0
- package/src/styles/animationVisibilityDelay.module.css +13 -0
- package/src/styles/animationVisibilityDelay.module.css.d.ts.map +1 -0
- package/src/styles/animationVisibilityDelay.ts +13 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/floating/customResizeObserver.ts"],"sourcesContent":["const defaultIframeStyles: Pick<\n CSSStyleDeclaration,\n | 'position'\n | 'left'\n | 'top'\n | 'zIndex'\n | 'width'\n | 'height'\n | 'pointerEvents'\n | 'opacity'\n | 'border'\n> = {\n position: 'absolute',\n left: '0',\n top: '0',\n zIndex: '-1',\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n opacity: '0',\n border: '0',\n};\n\n/*\n * Специальный CustomResizeObserver как fallback для ResizeObserver\n * Используется для вызова update() функции (перерисовка плавающего окна) floating-ui\n * при изменении размера reference или floating элементов.\n *\n * По умолчанию пытаемся нарисовать скрытый, абсолютно позиционированный относительно\n * наблюдаемого элемента iframe.\n * В случае же, если наблюдаемый элемент имеет position: static, то правильно спозиционировать\n * iframe у нас не получится, поэтому в такой ситуации мы используем MutationObserver.\n *\n * Использовать только MutationObserver мы не можем, потому что с помощью него нельзя отследить\n * изменение размера вызванное переполнением текста.\n *\n * Применяется только если нету поддержики или полифила ResizeObserver.\n * */\nexport class CustomResizeObserver {\n records: Array<{\n target: HTMLElement;\n iframe: HTMLIFrameElement;\n }> = [];\n mutationObserverFallback: MutationObserver | null = null;\n private readonly updateFunction: () => void;\n\n constructor(updateFunction: () => void) {\n this.updateFunction = updateFunction;\n }\n\n observe(element: HTMLElement): void {\n if (isPositioned(element)) {\n return this.observeUsingIframe(element);\n }\n return this.observeUsingMutationObserver(element);\n }\n\n appendToTheDOM(): void {\n for (let record of this.records) {\n record.target.appendChild(record.iframe);\n }\n\n for (let record of this.records) {\n if (record.iframe.contentWindow) {\n record.iframe.contentWindow.addEventListener('resize', this.updateFunction);\n }\n }\n }\n\n observeUsingIframe(element: HTMLElement): void {\n const iframe = element.ownerDocument.createElement('iframe');\n iframe.ariaHidden = 'true';\n iframe.tabIndex = -1;\n Object.assign(iframe.style, defaultIframeStyles);\n\n this.records.push({ target: element, iframe });\n }\n\n observeUsingMutationObserver(element: HTMLElement): void {\n if (!this.mutationObserverFallback) {\n this.mutationObserverFallback = new MutationObserver(this.updateFunction);\n }\n\n this.mutationObserverFallback.observe(element, {\n childList: true,\n subtree: true,\n });\n }\n\n disconnect(): void {\n this.records.map(({ target, iframe }) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.removeEventListener('resize', this.updateFunction);\n }\n\n target.removeChild(iframe);\n });\n this.records = [];\n\n if (this.mutationObserverFallback) {\n this.mutationObserverFallback.disconnect();\n }\n this.mutationObserverFallback = null;\n }\n}\n\nfunction isPositioned(element: HTMLElement): boolean {\n return getComputedStyle(element).position !== 'static';\n}\n"],"names":["defaultIframeStyles","position","left","top","zIndex","width","height","pointerEvents","opacity","border","CustomResizeObserver","observe","element","isPositioned","observeUsingIframe","observeUsingMutationObserver","appendToTheDOM","record","records","target","appendChild","iframe","contentWindow","addEventListener","updateFunction","ownerDocument","createElement","ariaHidden","tabIndex","Object","assign","style","push","mutationObserverFallback","MutationObserver","childList","subtree","disconnect","map","removeEventListener","removeChild","
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/floating/customResizeObserver.ts"],"sourcesContent":["const defaultIframeStyles: Pick<\n CSSStyleDeclaration,\n | 'position'\n | 'left'\n | 'top'\n | 'zIndex'\n | 'width'\n | 'height'\n | 'pointerEvents'\n | 'opacity'\n | 'border'\n> = {\n position: 'absolute',\n left: '0',\n top: '0',\n zIndex: '-1',\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n opacity: '0',\n border: '0',\n};\n\n/*\n * Специальный CustomResizeObserver как fallback для ResizeObserver\n * Используется для вызова update() функции (перерисовка плавающего окна) floating-ui\n * при изменении размера reference или floating элементов.\n *\n * По умолчанию пытаемся нарисовать скрытый, абсолютно позиционированный относительно\n * наблюдаемого элемента iframe.\n * В случае же, если наблюдаемый элемент имеет position: static, то правильно спозиционировать\n * iframe у нас не получится, поэтому в такой ситуации мы используем MutationObserver.\n *\n * Использовать только MutationObserver мы не можем, потому что с помощью него нельзя отследить\n * изменение размера вызванное переполнением текста.\n *\n * Применяется только если нету поддержики или полифила ResizeObserver.\n * */\nexport class CustomResizeObserver {\n records: Array<{\n target: HTMLElement;\n iframe: HTMLIFrameElement;\n }> = [];\n mutationObserverFallback: MutationObserver | null = null;\n private readonly updateFunction: () => void;\n\n constructor(updateFunction: () => void) {\n this.updateFunction = updateFunction;\n }\n\n observe(element: HTMLElement): void {\n if (isPositioned(element)) {\n return this.observeUsingIframe(element);\n }\n return this.observeUsingMutationObserver(element);\n }\n\n appendToTheDOM(): void {\n for (let record of this.records) {\n record.target.appendChild(record.iframe);\n }\n\n for (let record of this.records) {\n if (record.iframe.contentWindow) {\n record.iframe.contentWindow.addEventListener('resize', this.updateFunction);\n }\n }\n }\n\n observeUsingIframe(element: HTMLElement): void {\n const iframe = element.ownerDocument.createElement('iframe');\n iframe.ariaHidden = 'true';\n iframe.tabIndex = -1;\n Object.assign(iframe.style, defaultIframeStyles);\n\n this.records.push({ target: element, iframe });\n }\n\n observeUsingMutationObserver(element: HTMLElement): void {\n if (!this.mutationObserverFallback) {\n this.mutationObserverFallback = new MutationObserver(this.updateFunction);\n }\n\n this.mutationObserverFallback.observe(element, {\n childList: true,\n subtree: true,\n });\n }\n\n disconnect(): void {\n this.records.map(({ target, iframe }) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.removeEventListener('resize', this.updateFunction);\n }\n\n target.removeChild(iframe);\n });\n this.records = [];\n\n if (this.mutationObserverFallback) {\n this.mutationObserverFallback.disconnect();\n }\n this.mutationObserverFallback = null;\n }\n}\n\nfunction isPositioned(element: HTMLElement): boolean {\n return getComputedStyle(element).position !== 'static';\n}\n"],"names":["defaultIframeStyles","position","left","top","zIndex","width","height","pointerEvents","opacity","border","CustomResizeObserver","observe","element","isPositioned","observeUsingIframe","observeUsingMutationObserver","appendToTheDOM","record","records","target","appendChild","iframe","contentWindow","addEventListener","updateFunction","ownerDocument","createElement","ariaHidden","tabIndex","Object","assign","style","push","mutationObserverFallback","MutationObserver","childList","subtree","disconnect","map","removeEventListener","removeChild","getComputedStyle"],"mappings":";AAAA,MAAMA,sBAWF;IACFC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,QAAQ;IACRC,eAAe;IACfC,SAAS;IACTC,QAAQ;AACV;AAEA;;;;;;;;;;;;;;GAcG,GACH,OAAO,MAAMC;IAYXC,QAAQC,OAAoB,EAAQ;QAClC,IAAIC,aAAaD,UAAU;YACzB,OAAO,IAAI,CAACE,kBAAkB,CAACF;QACjC;QACA,OAAO,IAAI,CAACG,4BAA4B,CAACH;IAC3C;IAEAI,iBAAuB;QACrB,KAAK,IAAIC,UAAU,IAAI,CAACC,OAAO,CAAE;YAC/BD,OAAOE,MAAM,CAACC,WAAW,CAACH,OAAOI,MAAM;QACzC;QAEA,KAAK,IAAIJ,UAAU,IAAI,CAACC,OAAO,CAAE;YAC/B,IAAID,OAAOI,MAAM,CAACC,aAAa,EAAE;gBAC/BL,OAAOI,MAAM,CAACC,aAAa,CAACC,gBAAgB,CAAC,UAAU,IAAI,CAACC,cAAc;YAC5E;QACF;IACF;IAEAV,mBAAmBF,OAAoB,EAAQ;QAC7C,MAAMS,SAAST,QAAQa,aAAa,CAACC,aAAa,CAAC;QACnDL,OAAOM,UAAU,GAAG;QACpBN,OAAOO,QAAQ,GAAG,CAAC;QACnBC,OAAOC,MAAM,CAACT,OAAOU,KAAK,EAAE/B;QAE5B,IAAI,CAACkB,OAAO,CAACc,IAAI,CAAC;YAAEb,QAAQP;YAASS;QAAO;IAC9C;IAEAN,6BAA6BH,OAAoB,EAAQ;QACvD,IAAI,CAAC,IAAI,CAACqB,wBAAwB,EAAE;YAClC,IAAI,CAACA,wBAAwB,GAAG,IAAIC,iBAAiB,IAAI,CAACV,cAAc;QAC1E;QAEA,IAAI,CAACS,wBAAwB,CAACtB,OAAO,CAACC,SAAS;YAC7CuB,WAAW;YACXC,SAAS;QACX;IACF;IAEAC,aAAmB;QACjB,IAAI,CAACnB,OAAO,CAACoB,GAAG,CAAC,CAAC,EAAEnB,MAAM,EAAEE,MAAM,EAAE;YAClC,IAAIA,OAAOC,aAAa,EAAE;gBACxBD,OAAOC,aAAa,CAACiB,mBAAmB,CAAC,UAAU,IAAI,CAACf,cAAc;YACxE;YAEAL,OAAOqB,WAAW,CAACnB;QACrB;QACA,IAAI,CAACH,OAAO,GAAG,EAAE;QAEjB,IAAI,IAAI,CAACe,wBAAwB,EAAE;YACjC,IAAI,CAACA,wBAAwB,CAACI,UAAU;QAC1C;QACA,IAAI,CAACJ,wBAAwB,GAAG;IAClC;IAzDA,YAAYT,cAA0B,CAAE;QAPxCN,uBAAAA,WAGK,EAAE;QACPe,uBAAAA,4BAAoD;QACpD,uBAAiBT,kBAAjB,KAAA;QAGE,IAAI,CAACA,cAAc,GAAGA;IACxB;AAwDF;AAEA,SAASX,aAAaD,OAAoB;IACxC,OAAO6B,iBAAiB7B,SAASX,QAAQ,KAAK;AAChD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { UseFloatingOptions, Placement, VirtualElement, PlacementWithAuto, AutoPlacementType, UseFloatingMiddleware, OnPlacementChange, } from './types/common';
|
|
1
|
+
export type { UseFloatingOptions, Placement, Side, Alignment, VirtualElement, PlacementWithAuto, AutoPlacementType, UseFloatingMiddleware, OnPlacementChange, } from './types/common';
|
|
2
2
|
export type { FloatingComponentProps, FloatingContentRenderProp } from './types/component';
|
|
3
3
|
export { checkIsNotAutoPlacement, getAutoPlacementAlign, convertFloatingDataToReactCSSProperties, getArrowCoordsByMiddlewareData, } from './functions';
|
|
4
4
|
export { useFloating, offsetMiddleware, flipMiddleware, shiftMiddleware, autoPlacementMiddleware, arrowMiddleware, sizeMiddleware, hideMiddleware, getOverflowAncestors, autoUpdateFloatingElement, } from './adapters';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/floating/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE3F,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uCAAuC,EACvC,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,sCAAsC,EAC3C,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAE3C,cAAc,+BAA+B,CAAC;AAE9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/floating/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,SAAS,EACT,IAAI,EACJ,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE3F,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uCAAuC,EACvC,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,sCAAsC,EAC3C,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAE3C,cAAc,+BAA+B,CAAC;AAE9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/floating/index.ts"],"sourcesContent":["export type {\n UseFloatingOptions,\n Placement,\n VirtualElement,\n PlacementWithAuto,\n AutoPlacementType,\n UseFloatingMiddleware,\n OnPlacementChange,\n} from './types/common';\n\nexport type { FloatingComponentProps, FloatingContentRenderProp } from './types/component';\n\nexport {\n checkIsNotAutoPlacement,\n getAutoPlacementAlign,\n convertFloatingDataToReactCSSProperties,\n getArrowCoordsByMiddlewareData,\n} from './functions';\n\nexport {\n useFloating,\n offsetMiddleware,\n flipMiddleware,\n shiftMiddleware,\n autoPlacementMiddleware,\n arrowMiddleware,\n sizeMiddleware,\n hideMiddleware,\n getOverflowAncestors,\n autoUpdateFloatingElement,\n} from './adapters';\n\nexport {\n type UseFloatingMiddlewaresBootstrapOptions,\n useFloatingMiddlewaresBootstrap,\n} from './useFloatingMiddlewaresBootstrap';\n\nexport * from './useFloatingWithInteractions';\n\nexport { usePlacementChangeCallback } from './usePlacementChangeCallback';\n"],"names":["checkIsNotAutoPlacement","getAutoPlacementAlign","convertFloatingDataToReactCSSProperties","getArrowCoordsByMiddlewareData","useFloating","offsetMiddleware","flipMiddleware","shiftMiddleware","autoPlacementMiddleware","arrowMiddleware","sizeMiddleware","hideMiddleware","getOverflowAncestors","autoUpdateFloatingElement","useFloatingMiddlewaresBootstrap","usePlacementChangeCallback"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/floating/index.ts"],"sourcesContent":["export type {\n UseFloatingOptions,\n Placement,\n Side,\n Alignment,\n VirtualElement,\n PlacementWithAuto,\n AutoPlacementType,\n UseFloatingMiddleware,\n OnPlacementChange,\n} from './types/common';\n\nexport type { FloatingComponentProps, FloatingContentRenderProp } from './types/component';\n\nexport {\n checkIsNotAutoPlacement,\n getAutoPlacementAlign,\n convertFloatingDataToReactCSSProperties,\n getArrowCoordsByMiddlewareData,\n} from './functions';\n\nexport {\n useFloating,\n offsetMiddleware,\n flipMiddleware,\n shiftMiddleware,\n autoPlacementMiddleware,\n arrowMiddleware,\n sizeMiddleware,\n hideMiddleware,\n getOverflowAncestors,\n autoUpdateFloatingElement,\n} from './adapters';\n\nexport {\n type UseFloatingMiddlewaresBootstrapOptions,\n useFloatingMiddlewaresBootstrap,\n} from './useFloatingMiddlewaresBootstrap';\n\nexport * from './useFloatingWithInteractions';\n\nexport { usePlacementChangeCallback } from './usePlacementChangeCallback';\n"],"names":["checkIsNotAutoPlacement","getAutoPlacementAlign","convertFloatingDataToReactCSSProperties","getArrowCoordsByMiddlewareData","useFloating","offsetMiddleware","flipMiddleware","shiftMiddleware","autoPlacementMiddleware","arrowMiddleware","sizeMiddleware","hideMiddleware","getOverflowAncestors","autoUpdateFloatingElement","useFloatingMiddlewaresBootstrap","usePlacementChangeCallback"],"mappings":"AAcA,SACEA,uBAAuB,EACvBC,qBAAqB,EACrBC,uCAAuC,EACvCC,8BAA8B,QACzB,iBAAc;AAErB,SACEC,WAAW,EACXC,gBAAgB,EAChBC,cAAc,EACdC,eAAe,EACfC,uBAAuB,EACvBC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,oBAAoB,EACpBC,yBAAyB,QACpB,gBAAa;AAEpB,SAEEC,+BAA+B,QAC1B,6CAAoC;AAE3C,cAAc,yCAAgC;AAE9C,SAASC,0BAA0B,QAAQ,kCAA+B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Placement, ReferenceType, UseFloatingReturn } from '@vkontakte/vkui-floating-ui/react-dom';
|
|
2
2
|
export type AutoPlacementType = 'auto' | 'auto-start' | 'auto-end';
|
|
3
3
|
export type PlacementWithAuto = AutoPlacementType | Placement;
|
|
4
|
-
export type { VirtualElement, UseFloatingOptions, ReferenceType, ArrowOptions, UseFloatingReturn, Placement, Middleware as UseFloatingMiddleware, UseFloatingData, Strategy as FloatingPositionStrategy, } from '@vkontakte/vkui-floating-ui/react-dom';
|
|
4
|
+
export type { VirtualElement, UseFloatingOptions, ReferenceType, ArrowOptions, UseFloatingReturn, Placement, Side, Alignment, Middleware as UseFloatingMiddleware, UseFloatingData, Strategy as FloatingPositionStrategy, } from '@vkontakte/vkui-floating-ui/react-dom';
|
|
5
5
|
export type UseFloatingRefs<RT extends ReferenceType = ReferenceType> = UseFloatingReturn<RT>['refs'];
|
|
6
6
|
export type OnPlacementChange = (nextPlacement: Placement) => void;
|
|
7
7
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/lib/floating/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EAClB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE9D,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,UAAU,IAAI,qBAAqB,EACnC,eAAe,EACf,QAAQ,IAAI,wBAAwB,GACrC,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,aAAa,GAAG,aAAa,IAClE,iBAAiB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhC,MAAM,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,SAAS,KAAK,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/lib/floating/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EAClB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE9D,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,IAAI,EACJ,SAAS,EACT,UAAU,IAAI,qBAAqB,EACnC,eAAe,EACf,QAAQ,IAAI,wBAAwB,GACrC,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,aAAa,GAAG,aAAa,IAClE,iBAAiB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhC,MAAM,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,SAAS,KAAK,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/floating/types/common.ts"],"sourcesContent":["import type {\n Placement,\n ReferenceType,\n UseFloatingReturn,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nexport type AutoPlacementType = 'auto' | 'auto-start' | 'auto-end';\n\nexport type PlacementWithAuto = AutoPlacementType | Placement;\n\nexport type {\n VirtualElement,\n UseFloatingOptions,\n ReferenceType,\n ArrowOptions,\n UseFloatingReturn,\n Placement,\n Middleware as UseFloatingMiddleware,\n UseFloatingData,\n Strategy as FloatingPositionStrategy,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nexport type UseFloatingRefs<RT extends ReferenceType = ReferenceType> =\n UseFloatingReturn<RT>['refs'];\n\nexport type OnPlacementChange = (nextPlacement: Placement) => void;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/floating/types/common.ts"],"sourcesContent":["import type {\n Placement,\n ReferenceType,\n UseFloatingReturn,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nexport type AutoPlacementType = 'auto' | 'auto-start' | 'auto-end';\n\nexport type PlacementWithAuto = AutoPlacementType | Placement;\n\nexport type {\n VirtualElement,\n UseFloatingOptions,\n ReferenceType,\n ArrowOptions,\n UseFloatingReturn,\n Placement,\n Side,\n Alignment,\n Middleware as UseFloatingMiddleware,\n UseFloatingData,\n Strategy as FloatingPositionStrategy,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nexport type UseFloatingRefs<RT extends ReferenceType = ReferenceType> =\n UseFloatingReturn<RT>['refs'];\n\nexport type OnPlacementChange = (nextPlacement: Placement) => void;\n"],"names":[],"mappings":"AA2BA,WAAmE"}
|
package/dist/lib/object.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export declare function mapObject<T extends Object, R extends Record<keyof T, any>>(object: T, map: (value: T[keyof T], key: keyof T) => R[keyof T]): R;
|
|
2
|
+
export declare function filterObject<T extends Object, R extends Record<keyof T, any>>(object: T, filter: (value: T[keyof T], key: keyof T) => boolean): R;
|
|
2
3
|
//# sourceMappingURL=object.d.ts.map
|
package/dist/lib/object.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/lib/object.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EACxE,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GACnD,CAAC,CASH"}
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/lib/object.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EACxE,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GACnD,CAAC,CASH;AAGD,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAC3E,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,OAAO,GACnD,CAAC,CAaH"}
|
package/dist/lib/object.js
CHANGED
|
@@ -5,5 +5,17 @@ export function mapObject(object, map) {
|
|
|
5
5
|
}), // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/prefer-reduce-type-parameter
|
|
6
6
|
{});
|
|
7
7
|
}
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
9
|
+
export function filterObject(object, filter) {
|
|
10
|
+
return Object.entries(object).reduce((acc, [key, value])=>{
|
|
11
|
+
if (filter(value, key)) {
|
|
12
|
+
Object.assign(acc, {
|
|
13
|
+
[key]: value
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return acc;
|
|
17
|
+
}, // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/prefer-reduce-type-parameter
|
|
18
|
+
{});
|
|
19
|
+
}
|
|
8
20
|
|
|
9
21
|
//# sourceMappingURL=object.js.map
|
package/dist/lib/object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/object.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-types\nexport function mapObject<T extends Object, R extends Record<keyof T, any>>(\n object: T,\n map: (value: T[keyof T], key: keyof T) => R[keyof T],\n): R {\n return Object.entries(object).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: map(value, key as keyof T),\n }),\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/prefer-reduce-type-parameter\n {} as R,\n );\n}\n"],"names":["mapObject","object","map","Object","entries","reduce","acc","key","value","assign"],"mappings":"AAAA,wDAAwD;AACxD,OAAO,SAASA,UACdC,MAAS,EACTC,GAAoD;IAEpD,OAAOC,OAAOC,OAAO,CAACH,QAAQI,MAAM,CAClC,CAACC,KAAK,CAACC,KAAKC,MAAM,GAChBL,OAAOM,MAAM,CAACH,KAAK;YACjB,CAACC,IAAI,EAAEL,IAAIM,OAAOD;QACpB,IACF,0HAA0H;IAC1H,CAAC;AAEL"}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/object.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-types\nexport function mapObject<T extends Object, R extends Record<keyof T, any>>(\n object: T,\n map: (value: T[keyof T], key: keyof T) => R[keyof T],\n): R {\n return Object.entries(object).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: map(value, key as keyof T),\n }),\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/prefer-reduce-type-parameter\n {} as R,\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function filterObject<T extends Object, R extends Record<keyof T, any>>(\n object: T,\n filter: (value: T[keyof T], key: keyof T) => boolean,\n): R {\n return Object.entries(object).reduce(\n (acc, [key, value]) => {\n if (filter(value, key as keyof T)) {\n Object.assign(acc, {\n [key]: value,\n });\n }\n return acc;\n },\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/prefer-reduce-type-parameter\n {} as R,\n );\n}\n"],"names":["mapObject","object","map","Object","entries","reduce","acc","key","value","assign","filterObject","filter"],"mappings":"AAAA,wDAAwD;AACxD,OAAO,SAASA,UACdC,MAAS,EACTC,GAAoD;IAEpD,OAAOC,OAAOC,OAAO,CAACH,QAAQI,MAAM,CAClC,CAACC,KAAK,CAACC,KAAKC,MAAM,GAChBL,OAAOM,MAAM,CAACH,KAAK;YACjB,CAACC,IAAI,EAAEL,IAAIM,OAAOD;QACpB,IACF,0HAA0H;IAC1H,CAAC;AAEL;AAEA,wDAAwD;AACxD,OAAO,SAASG,aACdT,MAAS,EACTU,MAAoD;IAEpD,OAAOR,OAAOC,OAAO,CAACH,QAAQI,MAAM,CAClC,CAACC,KAAK,CAACC,KAAKC,MAAM;QAChB,IAAIG,OAAOH,OAAOD,MAAiB;YACjCJ,OAAOM,MAAM,CAACH,KAAK;gBACjB,CAACC,IAAI,EAAEC;YACT;QACF;QACA,OAAOF;IACT,GACA,0HAA0H;IAC1H,CAAC;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/sheet/controllers/BottomSheetController.ts"],"sourcesContent":["import { noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../../helpers/math';\nimport { rubberbandIfOutOfBounds } from '../../animation';\nimport { getNearestOverflowAncestor, hasSelectionWithRangeType } from '../../dom';\nimport { UIPanGestureRecognizer } from '../../touch/UIPanGestureRecognizer';\nimport {\n BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY,\n DRAG_THRESHOLDS,\n DYNAMIC_SNAP_POINT_DATA,\n SNAP_POINT_DETENTS,\n} from '../constants';\nimport type { CSSTransitionController } from './CSSTransitionController';\n\nexport type SnapPointDetents = [number, number] | [number, number, number];\n\nexport type SnapPoint = 'auto' | { initial: number; detents: SnapPointDetents };\n\nexport type SnapPointChange = (snapPoint: number) => void;\n\nexport type BottomSheetControllerOptions = {\n sheetScrollEl: HTMLElement | null;\n sheetTransitionController: CSSTransitionController<string>;\n backdropTransitionController: CSSTransitionController | null;\n onSnapPointChange: SnapPointChange;\n onDismiss: VoidFunction;\n};\n\nexport class BottomSheetController {\n private readonly sheetEl: HTMLElement;\n\n constructor(\n sheetEl: HTMLElement,\n {\n sheetScrollEl,\n sheetTransitionController,\n backdropTransitionController,\n onSnapPointChange,\n onDismiss,\n }: BottomSheetControllerOptions,\n ) {\n this.sheetEl = sheetEl;\n this.onSnapPointChange = onSnapPointChange;\n this.onDismiss = onDismiss;\n this.panGestureRecognizer = new UIPanGestureRecognizer();\n this.sheetScrollEl = sheetScrollEl;\n this.sheetTransitionController = sheetTransitionController;\n this.backdropTransitionController = backdropTransitionController;\n }\n\n init(snapPoint: SnapPoint) {\n this.isInitialized = true;\n\n if (snapPoint === 'auto') {\n this.unit = 'px';\n this.currentSnapPoint = DYNAMIC_SNAP_POINT_DATA.IDLE_POINT_VALUE;\n this.snapPointDetents = [SNAP_POINT_DETENTS.MIN, DYNAMIC_SNAP_POINT_DATA.IDLE_POINT_VALUE];\n } else {\n this.unit = '%';\n this.currentSnapPoint = snapPoint.initial;\n this.snapPointDetents = snapPoint.detents;\n }\n }\n\n destroy() {\n this.isInitialized = false;\n this.pannedEl = null;\n this.sheetTransitionController.cleanup();\n this.backdropTransitionController?.cleanup();\n\n this.disableVerticalScrollBouncingDispose();\n this.disableVerticalScrollBouncingDispose = noop;\n }\n\n panStart(event: UIEvent) {\n if (\n !this.isInitialized ||\n this.panState !== 'idle' ||\n hasSelectionWithRangeType(event.target)\n ) {\n return;\n }\n\n this.panState = 'start';\n this.pannedEl = event.target as HTMLElement;\n this.panGestureRecognizer.setStartCoords(event);\n }\n\n panMove(event: UIEvent) {\n switch (this.panState) {\n case 'start':\n this.panGestureRecognizer.setInitialTimeOnce();\n this.panGestureRecognizer.setEndCoords(event);\n\n if (this.preventUntilPanGestureBecomesExpected()) {\n return;\n }\n\n if (this.preventImmediatelyIfPannedElIsNotValid()) {\n this.panState = 'idle';\n return;\n }\n\n if (this.preventUntilVerticalScrollingOnSheetScrollElBecomesExpected()) {\n return;\n }\n\n if (this.preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled()) {\n this.panState = 'idle';\n return;\n }\n\n this.panState = 'moving';\n this.panGestureRecognizer.setStartCoords(event);\n\n this.sheetHeight = this.sheetEl.offsetHeight;\n\n this.disableVerticalScrollBouncingDispose =\n BottomSheetController.disableVerticalScrollBouncingIfNeeded(\n this.sheetScrollEl,\n this.pannedEl,\n );\n\n if (this.isDynamicSnapPoint) {\n this.currentSnapPoint = this.sheetHeight;\n this.snapPointDetents[DYNAMIC_SNAP_POINT_DATA.COMPUTED_INDEX] = this.sheetHeight;\n }\n break;\n case 'moving':\n this.panGestureRecognizer.setEndCoords(event);\n\n const { y1, y2 } = this.panGestureRecognizer;\n\n this.nextSnapPoint = rubberbandIfOutOfBounds(\n this.currentSnapPoint - ((y2 - y1) / this.sheetHeight) * this.currentSnapPoint,\n SNAP_POINT_DETENTS.MIN,\n this.isDynamicSnapPoint ? this.sheetHeight : SNAP_POINT_DETENTS.LARGE,\n );\n\n this.calculateSnapPoint(this.nextSnapPoint, true);\n break;\n }\n }\n\n panEnd() {\n switch (this.panState) {\n case 'moving':\n const prevCurrentSnapPoint = this.currentSnapPoint;\n this.currentSnapPoint = this.getSnapPointTo(this.nextSnapPoint);\n\n if (\n prevCurrentSnapPoint !== this.currentSnapPoint &&\n this.currentSnapPoint > SNAP_POINT_DETENTS.MIN\n ) {\n this.onSnapPointChange(this.currentSnapPoint);\n }\n\n this.calculateSnapPoint(this.currentSnapPoint);\n break;\n }\n\n this.panState = 'idle';\n this.panGestureRecognizer.reset();\n\n this.disableVerticalScrollBouncingDispose();\n this.disableVerticalScrollBouncingDispose = noop;\n }\n\n private isInitialized = false;\n private panState: 'idle' | 'start' | 'moving' = 'idle';\n private pannedEl: HTMLElement | null = null;\n private sheetHeight = 0;\n private rafId: number | null = null;\n private currentSnapPoint = 0;\n private nextSnapPoint = 0;\n private snapPointDetents: SnapPointDetents = [0, 0];\n private unit: 'px' | '%' = '%';\n private get isDynamicSnapPoint() {\n return this.unit === 'px';\n }\n private disableVerticalScrollBouncingDispose = noop;\n private readonly sheetScrollEl: HTMLElement | null;\n private readonly sheetTransitionController: CSSTransitionController<string>;\n private readonly backdropTransitionController: CSSTransitionController | null;\n private readonly panGestureRecognizer: UIPanGestureRecognizer;\n private readonly onSnapPointChange: SnapPointChange;\n private readonly onDismiss: VoidFunction;\n\n private calculateSnapPoint(nextSnapPoint: number, immediately = false) {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n }\n\n if (nextSnapPoint <= SNAP_POINT_DETENTS.MIN) {\n this.sheetTransitionController.enableTransition();\n this.backdropTransitionController?.enableTransition();\n this.panState = 'idle';\n this.onDismiss();\n return;\n }\n\n const backdropOpacity = clamp(\n this.isDynamicSnapPoint\n ? nextSnapPoint / this.sheetHeight\n : (nextSnapPoint * 2) / SNAP_POINT_DETENTS.LARGE,\n 0,\n 1,\n );\n\n this.rafId = requestAnimationFrame(() => {\n if (immediately) {\n this.backdropTransitionController?.disableTransition().set(backdropOpacity);\n this.sheetTransitionController.disableTransition().set(`${nextSnapPoint}${this.unit}`);\n return;\n }\n\n if (this.isDynamicSnapPoint) {\n this.sheetTransitionController.cleanupOnTransitionEnd();\n }\n\n this.backdropTransitionController?.unset();\n this.sheetTransitionController.enableTransition().set(`${this.currentSnapPoint}${this.unit}`);\n });\n }\n\n private getSnapPointTo(nextSnapPoint: number) {\n const closestSnapPoint = BottomSheetController.getClosestSnapPoint(\n this.snapPointDetents,\n nextSnapPoint,\n );\n if (closestSnapPoint !== this.currentSnapPoint) {\n return closestSnapPoint;\n }\n\n const panDirection = this.panGestureRecognizer.direction();\n if (panDirection.axis !== 'y' || panDirection.direction === null) {\n return this.currentSnapPoint;\n }\n\n const velocity = this.panGestureRecognizer.velocity();\n if (Math.abs(velocity.y) < DRAG_THRESHOLDS.VELOCITY) {\n return this.currentSnapPoint;\n }\n\n const closestSnapPointByDirection = BottomSheetController.getClosestSnapPointByDirection(\n this.snapPointDetents,\n closestSnapPoint,\n panDirection.direction,\n );\n\n return closestSnapPointByDirection;\n }\n\n private preventUntilPanGestureBecomesExpected() {\n return (\n this.panGestureRecognizer.direction().axis === 'x' ||\n this.panGestureRecognizer.distance() < DRAG_THRESHOLDS.DISTANCE_FOR_MOVING_START\n );\n }\n\n private preventImmediatelyIfPannedElIsNotValid() {\n return (\n this.pannedEl === null ||\n // Элемент со специальным атрибутом\n this.pannedEl.closest(`[${BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY}=true]`) !== null || // eslint-disable-line no-restricted-properties\n // Элемент за пределами панели.\n !this.sheetEl.contains(this.pannedEl)\n );\n }\n\n private preventUntilVerticalScrollingOnSheetScrollElBecomesExpected() {\n if (\n this.sheetScrollEl === null ||\n !this.sheetScrollEl.contains(this.pannedEl) ||\n this.sheetScrollEl.scrollHeight <= this.sheetScrollEl.clientHeight\n ) {\n return false;\n }\n\n if (this.sheetScrollEl.scrollTop === 0) {\n return (\n this.panGestureRecognizer.direction().direction === -1 &&\n BottomSheetController.isLastSnapPointDetents(this.snapPointDetents, this.currentSnapPoint)\n );\n }\n\n return true;\n }\n\n private preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled() {\n if (\n /* istanbul ignore next: покрываем TypeScript */\n this.pannedEl === null ||\n this.pannedEl === this.sheetEl ||\n this.pannedEl === this.sheetScrollEl\n ) {\n return false;\n }\n\n const overflowAncestor = getNearestOverflowAncestor(this.pannedEl, this.sheetEl);\n\n if (\n overflowAncestor === null ||\n this.sheetScrollEl === overflowAncestor ||\n overflowAncestor.scrollHeight <= overflowAncestor.clientHeight\n ) {\n return false;\n }\n\n return (\n overflowAncestor.scrollTop !== 0 || this.panGestureRecognizer.direction().direction === -1\n );\n }\n\n private static disableVerticalScrollBouncingIfNeeded(\n sheetScrollEl: HTMLElement | null,\n targetEl: HTMLElement | null,\n ) {\n if (\n sheetScrollEl !== null &&\n sheetScrollEl.scrollTop <= 0 &&\n sheetScrollEl.contains(targetEl) &&\n sheetScrollEl.scrollHeight > sheetScrollEl.clientHeight\n ) {\n sheetScrollEl.style.setProperty('overflow-y', 'hidden');\n return function dispose() {\n sheetScrollEl.style.removeProperty('overflow-y');\n };\n }\n return noop;\n }\n\n private static isLastSnapPointDetents(\n snapPointDetents: SnapPointDetents,\n currentY: number,\n ): boolean {\n return currentY === snapPointDetents[snapPointDetents.length - 1];\n }\n\n private static getClosestSnapPointByDirection(\n snapPointDetents: SnapPointDetents,\n currentY: number,\n direction: -1 | 1,\n ): number {\n const foundIndex = snapPointDetents.findIndex((i) => i === currentY);\n switch (direction) {\n case -1:\n return snapPointDetents[foundIndex + 1] ?? snapPointDetents[snapPointDetents.length - 1];\n case 1:\n return snapPointDetents[foundIndex - 1] ?? snapPointDetents[0];\n }\n }\n\n private static getClosestSnapPoint(snapPointDetents: SnapPointDetents, currentY: number) {\n let closest = snapPointDetents[0];\n let minDifference = Math.abs(snapPointDetents[0] - currentY);\n\n for (let i = 1; i < snapPointDetents.length; i += 1) {\n const difference = Math.abs(snapPointDetents[i] - currentY);\n if (difference < minDifference) {\n closest = snapPointDetents[i];\n minDifference = difference;\n }\n }\n\n return closest;\n }\n}\n"],"names":["noop","clamp","rubberbandIfOutOfBounds","getNearestOverflowAncestor","hasSelectionWithRangeType","UIPanGestureRecognizer","BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY","DRAG_THRESHOLDS","DYNAMIC_SNAP_POINT_DATA","SNAP_POINT_DETENTS","BottomSheetController","init","snapPoint","isInitialized","unit","currentSnapPoint","IDLE_POINT_VALUE","snapPointDetents","MIN","initial","detents","destroy","pannedEl","sheetTransitionController","cleanup","backdropTransitionController","disableVerticalScrollBouncingDispose","panStart","event","panState","target","panGestureRecognizer","setStartCoords","panMove","setInitialTimeOnce","setEndCoords","preventUntilPanGestureBecomesExpected","preventImmediatelyIfPannedElIsNotValid","preventUntilVerticalScrollingOnSheetScrollElBecomesExpected","preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled","sheetHeight","sheetEl","offsetHeight","disableVerticalScrollBouncingIfNeeded","sheetScrollEl","isDynamicSnapPoint","COMPUTED_INDEX","y1","y2","nextSnapPoint","LARGE","calculateSnapPoint","panEnd","prevCurrentSnapPoint","getSnapPointTo","onSnapPointChange","reset","immediately","rafId","cancelAnimationFrame","enableTransition","onDismiss","backdropOpacity","requestAnimationFrame","disableTransition","set","cleanupOnTransitionEnd","unset","closestSnapPoint","getClosestSnapPoint","panDirection","direction","axis","velocity","Math","abs","y","VELOCITY","closestSnapPointByDirection","getClosestSnapPointByDirection","distance","DISTANCE_FOR_MOVING_START","closest","contains","scrollHeight","clientHeight","scrollTop","isLastSnapPointDetents","overflowAncestor","targetEl","style","setProperty","dispose","removeProperty","currentY","length","foundIndex","findIndex","i","minDifference","difference","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/sheet/controllers/BottomSheetController.ts"],"sourcesContent":["import { noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../../helpers/math';\nimport { rubberbandIfOutOfBounds } from '../../animation';\nimport { getNearestOverflowAncestor, hasSelectionWithRangeType } from '../../dom';\nimport { UIPanGestureRecognizer } from '../../touch/UIPanGestureRecognizer';\nimport {\n BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY,\n DRAG_THRESHOLDS,\n DYNAMIC_SNAP_POINT_DATA,\n SNAP_POINT_DETENTS,\n} from '../constants';\nimport type { CSSTransitionController } from './CSSTransitionController';\n\nexport type SnapPointDetents = [number, number] | [number, number, number];\n\nexport type SnapPoint = 'auto' | { initial: number; detents: SnapPointDetents };\n\nexport type SnapPointChange = (snapPoint: number) => void;\n\nexport type BottomSheetControllerOptions = {\n sheetScrollEl: HTMLElement | null;\n sheetTransitionController: CSSTransitionController<string>;\n backdropTransitionController: CSSTransitionController | null;\n onSnapPointChange: SnapPointChange;\n onDismiss: VoidFunction;\n};\n\nexport class BottomSheetController {\n private readonly sheetEl: HTMLElement;\n\n constructor(\n sheetEl: HTMLElement,\n {\n sheetScrollEl,\n sheetTransitionController,\n backdropTransitionController,\n onSnapPointChange,\n onDismiss,\n }: BottomSheetControllerOptions,\n ) {\n this.sheetEl = sheetEl;\n this.onSnapPointChange = onSnapPointChange;\n this.onDismiss = onDismiss;\n this.panGestureRecognizer = new UIPanGestureRecognizer();\n this.sheetScrollEl = sheetScrollEl;\n this.sheetTransitionController = sheetTransitionController;\n this.backdropTransitionController = backdropTransitionController;\n }\n\n init(snapPoint: SnapPoint) {\n this.isInitialized = true;\n\n if (snapPoint === 'auto') {\n this.unit = 'px';\n this.currentSnapPoint = DYNAMIC_SNAP_POINT_DATA.IDLE_POINT_VALUE;\n this.snapPointDetents = [SNAP_POINT_DETENTS.MIN, DYNAMIC_SNAP_POINT_DATA.IDLE_POINT_VALUE];\n } else {\n this.unit = '%';\n this.currentSnapPoint = snapPoint.initial;\n this.snapPointDetents = snapPoint.detents;\n }\n }\n\n destroy() {\n this.isInitialized = false;\n this.pannedEl = null;\n this.sheetTransitionController.cleanup();\n this.backdropTransitionController?.cleanup();\n\n this.disableVerticalScrollBouncingDispose();\n this.disableVerticalScrollBouncingDispose = noop;\n }\n\n panStart(event: UIEvent) {\n if (\n !this.isInitialized ||\n this.panState !== 'idle' ||\n hasSelectionWithRangeType(event.target)\n ) {\n return;\n }\n\n this.panState = 'start';\n this.pannedEl = event.target as HTMLElement;\n this.panGestureRecognizer.setStartCoords(event);\n }\n\n panMove(event: UIEvent) {\n switch (this.panState) {\n case 'start':\n this.panGestureRecognizer.setInitialTimeOnce();\n this.panGestureRecognizer.setEndCoords(event);\n\n if (this.preventUntilPanGestureBecomesExpected()) {\n return;\n }\n\n if (this.preventImmediatelyIfPannedElIsNotValid()) {\n this.panState = 'idle';\n return;\n }\n\n if (this.preventUntilVerticalScrollingOnSheetScrollElBecomesExpected()) {\n return;\n }\n\n if (this.preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled()) {\n this.panState = 'idle';\n return;\n }\n\n this.panState = 'moving';\n this.panGestureRecognizer.setStartCoords(event);\n\n this.sheetHeight = this.sheetEl.offsetHeight;\n\n this.disableVerticalScrollBouncingDispose =\n BottomSheetController.disableVerticalScrollBouncingIfNeeded(\n this.sheetScrollEl,\n this.pannedEl,\n );\n\n if (this.isDynamicSnapPoint) {\n this.currentSnapPoint = this.sheetHeight;\n this.snapPointDetents[DYNAMIC_SNAP_POINT_DATA.COMPUTED_INDEX] = this.sheetHeight;\n }\n break;\n case 'moving':\n this.panGestureRecognizer.setEndCoords(event);\n\n const { y1, y2 } = this.panGestureRecognizer;\n\n this.nextSnapPoint = rubberbandIfOutOfBounds(\n this.currentSnapPoint - ((y2 - y1) / this.sheetHeight) * this.currentSnapPoint,\n SNAP_POINT_DETENTS.MIN,\n this.isDynamicSnapPoint ? this.sheetHeight : SNAP_POINT_DETENTS.LARGE,\n );\n\n this.calculateSnapPoint(this.nextSnapPoint, true);\n break;\n }\n }\n\n panEnd() {\n switch (this.panState) {\n case 'moving':\n const prevCurrentSnapPoint = this.currentSnapPoint;\n this.currentSnapPoint = this.getSnapPointTo(this.nextSnapPoint);\n\n if (\n prevCurrentSnapPoint !== this.currentSnapPoint &&\n this.currentSnapPoint > SNAP_POINT_DETENTS.MIN\n ) {\n this.onSnapPointChange(this.currentSnapPoint);\n }\n\n this.calculateSnapPoint(this.currentSnapPoint);\n break;\n }\n\n this.panState = 'idle';\n this.panGestureRecognizer.reset();\n\n this.disableVerticalScrollBouncingDispose();\n this.disableVerticalScrollBouncingDispose = noop;\n }\n\n private isInitialized = false;\n private panState: 'idle' | 'start' | 'moving' = 'idle';\n private pannedEl: HTMLElement | null = null;\n private sheetHeight = 0;\n private rafId: number | null = null;\n private currentSnapPoint = 0;\n private nextSnapPoint = 0;\n private snapPointDetents: SnapPointDetents = [0, 0];\n private unit: 'px' | '%' = '%';\n private get isDynamicSnapPoint() {\n return this.unit === 'px';\n }\n private disableVerticalScrollBouncingDispose = noop;\n private readonly sheetScrollEl: HTMLElement | null;\n private readonly sheetTransitionController: CSSTransitionController<string>;\n private readonly backdropTransitionController: CSSTransitionController | null;\n private readonly panGestureRecognizer: UIPanGestureRecognizer;\n private readonly onSnapPointChange: SnapPointChange;\n private readonly onDismiss: VoidFunction;\n\n private calculateSnapPoint(nextSnapPoint: number, immediately = false) {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n }\n\n if (nextSnapPoint <= SNAP_POINT_DETENTS.MIN) {\n this.sheetTransitionController.enableTransition();\n this.backdropTransitionController?.enableTransition();\n this.panState = 'idle';\n this.onDismiss();\n return;\n }\n\n const backdropOpacity = clamp(\n this.isDynamicSnapPoint\n ? nextSnapPoint / this.sheetHeight\n : (nextSnapPoint * 2) / SNAP_POINT_DETENTS.LARGE,\n 0,\n 1,\n );\n\n this.rafId = requestAnimationFrame(() => {\n if (immediately) {\n this.backdropTransitionController?.disableTransition().set(backdropOpacity);\n this.sheetTransitionController.disableTransition().set(`${nextSnapPoint}${this.unit}`);\n return;\n }\n\n if (this.isDynamicSnapPoint) {\n this.sheetTransitionController.cleanupOnTransitionEnd();\n }\n\n this.backdropTransitionController?.unset();\n this.sheetTransitionController.enableTransition().set(`${this.currentSnapPoint}${this.unit}`);\n });\n }\n\n private getSnapPointTo(nextSnapPoint: number) {\n const closestSnapPoint = BottomSheetController.getClosestSnapPoint(\n this.snapPointDetents,\n nextSnapPoint,\n );\n if (closestSnapPoint !== this.currentSnapPoint) {\n return closestSnapPoint;\n }\n\n const panDirection = this.panGestureRecognizer.direction();\n if (panDirection.axis !== 'y' || panDirection.direction === null) {\n return this.currentSnapPoint;\n }\n\n const velocity = this.panGestureRecognizer.velocity();\n if (Math.abs(velocity.y) < DRAG_THRESHOLDS.VELOCITY) {\n return this.currentSnapPoint;\n }\n\n const closestSnapPointByDirection = BottomSheetController.getClosestSnapPointByDirection(\n this.snapPointDetents,\n closestSnapPoint,\n panDirection.direction,\n );\n\n return closestSnapPointByDirection;\n }\n\n private preventUntilPanGestureBecomesExpected() {\n return (\n this.panGestureRecognizer.direction().axis === 'x' ||\n this.panGestureRecognizer.distance() < DRAG_THRESHOLDS.DISTANCE_FOR_MOVING_START\n );\n }\n\n private preventImmediatelyIfPannedElIsNotValid() {\n return (\n this.pannedEl === null ||\n // Элемент со специальным атрибутом\n this.pannedEl.closest(`[${BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY}=true]`) !== null || // eslint-disable-line no-restricted-properties\n // Элемент за пределами панели.\n !this.sheetEl.contains(this.pannedEl)\n );\n }\n\n private preventUntilVerticalScrollingOnSheetScrollElBecomesExpected() {\n if (\n this.sheetScrollEl === null ||\n !this.sheetScrollEl.contains(this.pannedEl) ||\n this.sheetScrollEl.scrollHeight <= this.sheetScrollEl.clientHeight\n ) {\n return false;\n }\n\n if (this.sheetScrollEl.scrollTop === 0) {\n return (\n this.panGestureRecognizer.direction().direction === -1 &&\n BottomSheetController.isLastSnapPointDetents(this.snapPointDetents, this.currentSnapPoint)\n );\n }\n\n return true;\n }\n\n private preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled() {\n if (\n /* istanbul ignore next: покрываем TypeScript */\n this.pannedEl === null ||\n this.pannedEl === this.sheetEl ||\n this.pannedEl === this.sheetScrollEl\n ) {\n return false;\n }\n\n const overflowAncestor = getNearestOverflowAncestor(this.pannedEl, this.sheetEl);\n\n if (\n overflowAncestor === null ||\n this.sheetScrollEl === overflowAncestor ||\n overflowAncestor.scrollHeight <= overflowAncestor.clientHeight\n ) {\n return false;\n }\n\n return (\n overflowAncestor.scrollTop !== 0 || this.panGestureRecognizer.direction().direction === -1\n );\n }\n\n private static disableVerticalScrollBouncingIfNeeded(\n sheetScrollEl: HTMLElement | null,\n targetEl: HTMLElement | null,\n ) {\n if (\n sheetScrollEl !== null &&\n sheetScrollEl.scrollTop <= 0 &&\n sheetScrollEl.contains(targetEl) &&\n sheetScrollEl.scrollHeight > sheetScrollEl.clientHeight\n ) {\n sheetScrollEl.style.setProperty('overflow-y', 'hidden');\n return function dispose() {\n sheetScrollEl.style.removeProperty('overflow-y');\n };\n }\n return noop;\n }\n\n private static isLastSnapPointDetents(\n snapPointDetents: SnapPointDetents,\n currentY: number,\n ): boolean {\n return currentY === snapPointDetents[snapPointDetents.length - 1];\n }\n\n private static getClosestSnapPointByDirection(\n snapPointDetents: SnapPointDetents,\n currentY: number,\n direction: -1 | 1,\n ): number {\n const foundIndex = snapPointDetents.findIndex((i) => i === currentY);\n switch (direction) {\n case -1:\n return snapPointDetents[foundIndex + 1] ?? snapPointDetents[snapPointDetents.length - 1];\n case 1:\n return snapPointDetents[foundIndex - 1] ?? snapPointDetents[0];\n }\n }\n\n private static getClosestSnapPoint(snapPointDetents: SnapPointDetents, currentY: number) {\n let closest = snapPointDetents[0];\n let minDifference = Math.abs(snapPointDetents[0] - currentY);\n\n for (let i = 1; i < snapPointDetents.length; i += 1) {\n const difference = Math.abs(snapPointDetents[i] - currentY);\n if (difference < minDifference) {\n closest = snapPointDetents[i];\n minDifference = difference;\n }\n }\n\n return closest;\n }\n}\n"],"names":["noop","clamp","rubberbandIfOutOfBounds","getNearestOverflowAncestor","hasSelectionWithRangeType","UIPanGestureRecognizer","BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY","DRAG_THRESHOLDS","DYNAMIC_SNAP_POINT_DATA","SNAP_POINT_DETENTS","BottomSheetController","init","snapPoint","isInitialized","unit","currentSnapPoint","IDLE_POINT_VALUE","snapPointDetents","MIN","initial","detents","destroy","pannedEl","sheetTransitionController","cleanup","backdropTransitionController","disableVerticalScrollBouncingDispose","panStart","event","panState","target","panGestureRecognizer","setStartCoords","panMove","setInitialTimeOnce","setEndCoords","preventUntilPanGestureBecomesExpected","preventImmediatelyIfPannedElIsNotValid","preventUntilVerticalScrollingOnSheetScrollElBecomesExpected","preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled","sheetHeight","sheetEl","offsetHeight","disableVerticalScrollBouncingIfNeeded","sheetScrollEl","isDynamicSnapPoint","COMPUTED_INDEX","y1","y2","nextSnapPoint","LARGE","calculateSnapPoint","panEnd","prevCurrentSnapPoint","getSnapPointTo","onSnapPointChange","reset","immediately","rafId","cancelAnimationFrame","enableTransition","onDismiss","backdropOpacity","requestAnimationFrame","disableTransition","set","cleanupOnTransitionEnd","unset","closestSnapPoint","getClosestSnapPoint","panDirection","direction","axis","velocity","Math","abs","y","VELOCITY","closestSnapPointByDirection","getClosestSnapPointByDirection","distance","DISTANCE_FOR_MOVING_START","closest","contains","scrollHeight","clientHeight","scrollTop","isLastSnapPointDetents","overflowAncestor","targetEl","style","setProperty","dispose","removeProperty","currentY","length","foundIndex","findIndex","i","minDifference","difference"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/sheet/controllers/CSSTransitionController.ts"],"sourcesContent":["export type CSSTransitionControllerUnit = 'px' | '%' | '';\n\nexport class CSSTransitionController<V extends number | string = number> {\n public readonly el: HTMLElement;\n public readonly property: string;\n\n constructor(el: HTMLElement, property: string) {\n this.el = el;\n this.property = property;\n }\n\n set(to: V) {\n this.el.style.setProperty(this.property, `${to}`);\n return this;\n }\n\n unset() {\n return this.cleanup();\n }\n\n enableTransition() {\n this.el.style.removeProperty('transition');\n return this;\n }\n\n disableTransition() {\n this.el.style.setProperty('transition', 'none');\n return this;\n }\n\n cleanup() {\n this.el.removeEventListener('transitionend', this.handleTransitionEnd);\n this.el.style.removeProperty('transition');\n this.el.style.removeProperty(this.property);\n return this;\n }\n\n cleanupOnTransitionEnd() {\n this.el.addEventListener('transitionend', this.handleTransitionEnd, { once: true });\n return this;\n }\n\n private readonly handleTransitionEnd = () => {\n this.cleanup();\n return this;\n };\n}\n"],"names":["CSSTransitionController","set","to","el","style","setProperty","property","unset","cleanup","enableTransition","removeProperty","disableTransition","removeEventListener","handleTransitionEnd","cleanupOnTransitionEnd","addEventListener","once"
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/sheet/controllers/CSSTransitionController.ts"],"sourcesContent":["export type CSSTransitionControllerUnit = 'px' | '%' | '';\n\nexport class CSSTransitionController<V extends number | string = number> {\n public readonly el: HTMLElement;\n public readonly property: string;\n\n constructor(el: HTMLElement, property: string) {\n this.el = el;\n this.property = property;\n }\n\n set(to: V) {\n this.el.style.setProperty(this.property, `${to}`);\n return this;\n }\n\n unset() {\n return this.cleanup();\n }\n\n enableTransition() {\n this.el.style.removeProperty('transition');\n return this;\n }\n\n disableTransition() {\n this.el.style.setProperty('transition', 'none');\n return this;\n }\n\n cleanup() {\n this.el.removeEventListener('transitionend', this.handleTransitionEnd);\n this.el.style.removeProperty('transition');\n this.el.style.removeProperty(this.property);\n return this;\n }\n\n cleanupOnTransitionEnd() {\n this.el.addEventListener('transitionend', this.handleTransitionEnd, { once: true });\n return this;\n }\n\n private readonly handleTransitionEnd = () => {\n this.cleanup();\n return this;\n };\n}\n"],"names":["CSSTransitionController","set","to","el","style","setProperty","property","unset","cleanup","enableTransition","removeProperty","disableTransition","removeEventListener","handleTransitionEnd","cleanupOnTransitionEnd","addEventListener","once"],"mappings":";AAEA,OAAO,MAAMA;IASXC,IAAIC,EAAK,EAAE;QACT,IAAI,CAACC,EAAE,CAACC,KAAK,CAACC,WAAW,CAAC,IAAI,CAACC,QAAQ,EAAE,GAAGJ,IAAI;QAChD,OAAO,IAAI;IACb;IAEAK,QAAQ;QACN,OAAO,IAAI,CAACC,OAAO;IACrB;IAEAC,mBAAmB;QACjB,IAAI,CAACN,EAAE,CAACC,KAAK,CAACM,cAAc,CAAC;QAC7B,OAAO,IAAI;IACb;IAEAC,oBAAoB;QAClB,IAAI,CAACR,EAAE,CAACC,KAAK,CAACC,WAAW,CAAC,cAAc;QACxC,OAAO,IAAI;IACb;IAEAG,UAAU;QACR,IAAI,CAACL,EAAE,CAACS,mBAAmB,CAAC,iBAAiB,IAAI,CAACC,mBAAmB;QACrE,IAAI,CAACV,EAAE,CAACC,KAAK,CAACM,cAAc,CAAC;QAC7B,IAAI,CAACP,EAAE,CAACC,KAAK,CAACM,cAAc,CAAC,IAAI,CAACJ,QAAQ;QAC1C,OAAO,IAAI;IACb;IAEAQ,yBAAyB;QACvB,IAAI,CAACX,EAAE,CAACY,gBAAgB,CAAC,iBAAiB,IAAI,CAACF,mBAAmB,EAAE;YAAEG,MAAM;QAAK;QACjF,OAAO,IAAI;IACb;IAlCA,YAAYb,EAAe,EAAEG,QAAgB,CAAE;QAH/C,uBAAgBH,MAAhB,KAAA;QACA,uBAAgBG,YAAhB,KAAA;QAsCA,uBAAiBO,uBAAsB;YACrC,IAAI,CAACL,OAAO;YACZ,OAAO,IAAI;QACb;QAtCE,IAAI,CAACL,EAAE,GAAGA;QACV,IAAI,CAACG,QAAQ,GAAGA;IAClB;AAqCF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animationVisibilityDelay.d.ts","sourceRoot":"","sources":["../../src/styles/animationVisibilityDelay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,mBAAmB,GAAG,SAAS,CAQjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/styles/animationVisibilityDelay.ts"],"sourcesContent":["import { type CSSCustomProperties } from '../types';\n\nexport function animationVisibilityDelayStyles(\n delay: number | undefined,\n): CSSCustomProperties | undefined {\n if (delay === undefined) {\n return undefined;\n }\n\n return {\n '--vkui_internal--animation_delay_visibility': `${delay}ms`,\n };\n}\n"],"names":["animationVisibilityDelayStyles","delay","undefined"],"mappings":"AAEA,OAAO,SAASA,+BACdC,KAAyB;IAEzB,IAAIA,UAAUC,WAAW;QACvB,OAAOA;IACT;IAEA,OAAO;QACL,+CAA+C,GAAGD,MAAM,EAAE,CAAC;IAC7D;AACF"}
|