@vkontakte/vkui 8.1.2 → 8.2.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 +5 -4
- package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityContext.d.ts +3 -3
- package/dist/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js +2 -2
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRoot.js +0 -6
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/AppRootContext.d.ts +0 -1
- package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRootContext.js +0 -1
- package/dist/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +1 -1
- package/dist/components/Calendar/Calendar.js +2 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.js +4 -2
- package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.js +2 -2
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js +4 -2
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.d.ts +1 -1
- package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.js +61 -50
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTimePicker.d.ts +11 -7
- package/dist/components/CalendarTime/CalendarTimePicker.d.ts.map +1 -1
- package/dist/components/CalendarTime/CalendarTimePicker.js +108 -48
- package/dist/components/CalendarTime/CalendarTimePicker.js.map +1 -1
- package/dist/components/CalendarTime/ComboBox.d.ts +25 -0
- package/dist/components/CalendarTime/ComboBox.d.ts.map +1 -0
- package/dist/components/CalendarTime/ComboBox.js +112 -0
- package/dist/components/CalendarTime/ComboBox.js.map +1 -0
- package/dist/components/CardScroll/CardScroll.d.ts.map +1 -1
- package/dist/components/CardScroll/CardScroll.js +2 -2
- package/dist/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/components/CarouselBase/CarouselBase.d.ts.map +1 -1
- package/dist/components/CarouselBase/CarouselBase.js +3 -1
- package/dist/components/CarouselBase/CarouselBase.js.map +1 -1
- package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
- package/dist/components/ChipsSelect/useChipsSelect.js +2 -1
- package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js +8 -4
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderOverride.d.ts.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderOverride.js +5 -1
- package/dist/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderSubContexts.d.ts +15 -0
- package/dist/components/ConfigProvider/ConfigProviderSubContexts.d.ts.map +1 -0
- package/dist/components/ConfigProvider/ConfigProviderSubContexts.js +25 -0
- package/dist/components/ConfigProvider/ConfigProviderSubContexts.js.map +1 -0
- package/dist/components/ContentBadge/ContentBadge.d.ts +14 -1
- package/dist/components/ContentBadge/ContentBadge.d.ts.map +1 -1
- package/dist/components/ContentBadge/ContentBadge.js +39 -1
- package/dist/components/ContentBadge/ContentBadge.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +16 -10
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/DateInput.js +4 -3
- 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 +2 -2
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/Epic/ScrollSaver.d.ts.map +1 -1
- package/dist/components/Epic/ScrollSaver.js +1 -0
- package/dist/components/Epic/ScrollSaver.js.map +1 -1
- package/dist/components/FixedLayout/ParentWidthWrapper.d.ts +6 -0
- package/dist/components/FixedLayout/ParentWidthWrapper.d.ts.map +1 -0
- package/dist/components/FixedLayout/ParentWidthWrapper.js +43 -0
- package/dist/components/FixedLayout/ParentWidthWrapper.js.map +1 -0
- package/dist/components/Flex/Flex.d.ts +7 -4
- package/dist/components/Flex/Flex.d.ts.map +1 -1
- package/dist/components/Flex/Flex.js +5 -2
- package/dist/components/Flex/Flex.js.map +1 -1
- package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +3 -1
- package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.d.ts.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js +6 -2
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/NavTransitionContext/NavTransitionContext.d.ts +2 -1
- package/dist/components/NavTransitionContext/NavTransitionContext.d.ts.map +1 -1
- package/dist/components/NavTransitionContext/NavTransitionContext.js +8 -4
- package/dist/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js +4 -5
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.d.ts +1 -1
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/Popper/Popper.d.ts.map +1 -1
- package/dist/components/Popper/Popper.js +7 -4
- package/dist/components/Popper/Popper.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js +8 -4
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/Root/Root.d.ts +1 -1
- package/dist/components/Root/Root.d.ts.map +1 -1
- package/dist/components/Root/Root.js +43 -37
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/SimpleGrid/SimpleGrid.d.ts +9 -8
- package/dist/components/SimpleGrid/SimpleGrid.d.ts.map +1 -1
- package/dist/components/SimpleGrid/SimpleGrid.js +9 -2
- package/dist/components/SimpleGrid/SimpleGrid.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/Skeleton/Skeleton.js +3 -4
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.d.ts.map +1 -1
- package/dist/components/Snackbar/Snackbar.js +6 -3
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/Spacing/Spacing.d.ts +1 -1
- package/dist/components/Spacing/Spacing.js.map +1 -1
- package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.d.ts +10 -0
- package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.d.ts.map +1 -0
- package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js +54 -0
- package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js.map +1 -0
- package/dist/components/Spinner/ExpressiveSpinner/icons.d.ts +18 -0
- package/dist/components/Spinner/ExpressiveSpinner/icons.d.ts.map +1 -0
- package/dist/components/Spinner/ExpressiveSpinner/icons.js +79 -0
- package/dist/components/Spinner/ExpressiveSpinner/icons.js.map +1 -0
- package/dist/components/Spinner/SvgIcon.d.ts +14 -0
- package/dist/components/Spinner/SvgIcon.d.ts.map +1 -0
- package/dist/components/Spinner/SvgIcon.js +20 -0
- package/dist/components/Spinner/SvgIcon.js.map +1 -0
- package/dist/components/Spinner/icons.d.ts +1 -1
- package/dist/components/Spinner/icons.d.ts.map +1 -1
- package/dist/components/Spinner/icons.js +10 -23
- package/dist/components/Spinner/icons.js.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.d.ts +3 -3
- package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
- package/dist/components/TabsItem/TabsItem.js +2 -5
- package/dist/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +2 -2
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/View/View.d.ts.map +1 -1
- package/dist/components/View/View.js +50 -53
- 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 +34 -37
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/WriteBar/WriteBar.d.ts +15 -1
- package/dist/components/WriteBar/WriteBar.d.ts.map +1 -1
- package/dist/components/WriteBar/WriteBar.js +35 -63
- package/dist/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.d.ts +5 -0
- package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js +15 -0
- package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js.map +1 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.d.ts +8 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.js +16 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.js.map +1 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.d.ts +5 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js +15 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js.map +1 -0
- package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.d.ts +10 -0
- package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.js +16 -0
- package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.js.map +1 -0
- package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.d.ts +10 -0
- package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js +39 -0
- package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js.map +1 -0
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +2 -2
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +0 -6
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js +0 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js +2 -1
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.js +4 -2
- package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js +2 -2
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js +4 -2
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js +61 -50
- package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.module.css +38 -0
- package/dist/cssm/components/CalendarTime/CalendarTimePicker.js +108 -48
- package/dist/cssm/components/CalendarTime/CalendarTimePicker.js.map +1 -1
- package/dist/cssm/components/CalendarTime/ComboBox.js +113 -0
- package/dist/cssm/components/CalendarTime/ComboBox.js.map +1 -0
- package/dist/cssm/components/CardScroll/CardScroll.js +2 -2
- package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cssm/components/CarouselBase/CarouselBase.js +3 -1
- package/dist/cssm/components/CarouselBase/CarouselBase.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.js +2 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js +8 -4
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js +5 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderSubContexts.js +25 -0
- package/dist/cssm/components/ConfigProvider/ConfigProviderSubContexts.js.map +1 -0
- package/dist/cssm/components/ContentBadge/ContentBadge.js +39 -1
- package/dist/cssm/components/ContentBadge/ContentBadge.js.map +1 -1
- package/dist/cssm/components/ContentBadge/ContentBadge.module.css +88 -90
- package/dist/cssm/components/CustomSelect/CustomSelect.js +16 -10
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +4 -3
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +2 -2
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/Epic/ScrollSaver.js +1 -0
- package/dist/cssm/components/Epic/ScrollSaver.js.map +1 -1
- package/dist/cssm/components/FixedLayout/ParentWidthWrapper.js +43 -0
- package/dist/cssm/components/FixedLayout/ParentWidthWrapper.js.map +1 -0
- package/dist/cssm/components/Flex/Flex.js +5 -2
- package/dist/cssm/components/Flex/Flex.js.map +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.module.css +1 -1
- package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +3 -1
- package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js +6 -2
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js +8 -4
- package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js +4 -5
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/Popper/Popper.js +7 -4
- package/dist/cssm/components/Popper/Popper.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js +8 -4
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +1 -1
- package/dist/cssm/components/Root/Root.js +43 -37
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/SimpleGrid/SimpleGrid.js +9 -2
- package/dist/cssm/components/SimpleGrid/SimpleGrid.js.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.js +3 -4
- package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.js +6 -3
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
- package/dist/cssm/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js +56 -0
- package/dist/cssm/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js.map +1 -0
- package/dist/cssm/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.module.css +13 -0
- package/dist/cssm/components/Spinner/ExpressiveSpinner/icons.js +79 -0
- package/dist/cssm/components/Spinner/ExpressiveSpinner/icons.js.map +1 -0
- package/dist/cssm/components/Spinner/SvgIcon.js +20 -0
- package/dist/cssm/components/Spinner/SvgIcon.js.map +1 -0
- package/dist/cssm/components/Spinner/icons.js +10 -23
- package/dist/cssm/components/Spinner/icons.js.map +1 -1
- package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.js +2 -5
- package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/View/View.js +50 -53
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +34 -37
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.js +35 -64
- package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js +16 -0
- package/dist/cssm/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.module.css +12 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormField.js +17 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormField.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormField.module.css +18 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js +16 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.module.css +3 -0
- package/dist/cssm/components/WriteBar/WriteBarRoot/WriteBarRoot.js +17 -0
- package/dist/cssm/components/WriteBar/WriteBarRoot/WriteBarRoot.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarRoot/WriteBarRoot.module.css +15 -0
- package/dist/cssm/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js +40 -0
- package/dist/cssm/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarTextarea/WriteBarTextarea.module.css +43 -0
- package/dist/cssm/helpers/math.js +6 -0
- package/dist/cssm/helpers/math.js.map +1 -1
- package/dist/cssm/hoc/withPlatform.js +3 -2
- package/dist/cssm/hoc/withPlatform.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityConditionalRender/types.js.map +1 -1
- package/dist/cssm/hooks/useAnimationFrame.js +40 -0
- package/dist/cssm/hooks/useAnimationFrame.js.map +1 -0
- package/dist/cssm/hooks/useAutoFocus.js +4 -1
- package/dist/cssm/hooks/useAutoFocus.js.map +1 -1
- package/dist/cssm/hooks/useColorScheme.js +3 -3
- package/dist/cssm/hooks/useColorScheme.js.map +1 -1
- package/dist/cssm/hooks/useConfigDirection.js +3 -3
- package/dist/cssm/hooks/useConfigDirection.js.map +1 -1
- package/dist/cssm/hooks/useDateInput.js +1 -2
- package/dist/cssm/hooks/useDateInput.js.map +1 -1
- package/dist/cssm/hooks/useFocusTrap/useAutoFocus.js +1 -0
- package/dist/cssm/hooks/useFocusTrap/useAutoFocus.js.map +1 -1
- package/dist/cssm/hooks/useFocusTrap/useFocusTrap.js +2 -0
- package/dist/cssm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/cssm/hooks/useFocusVisible.js +8 -13
- package/dist/cssm/hooks/useFocusVisible.js.map +1 -1
- package/dist/cssm/hooks/useFocusWithin.js +5 -4
- package/dist/cssm/hooks/useFocusWithin.js.map +1 -1
- package/dist/cssm/hooks/useGlobalEscKeyDown.js +17 -15
- package/dist/cssm/hooks/useGlobalEscKeyDown.js.map +1 -1
- package/dist/cssm/hooks/useGlobalOnClickOutside.js +6 -2
- package/dist/cssm/hooks/useGlobalOnClickOutside.js.map +1 -1
- package/dist/cssm/hooks/useKeyboardInputTracker.js +48 -41
- package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cssm/hooks/useLatestRef.js +13 -0
- package/dist/cssm/hooks/useLatestRef.js.map +1 -0
- package/dist/cssm/hooks/useLocale.js +3 -3
- package/dist/cssm/hooks/useLocale.js.map +1 -1
- package/dist/cssm/hooks/useMediaQueryMatch.js +1 -0
- package/dist/cssm/hooks/useMediaQueryMatch.js.map +1 -1
- package/dist/cssm/hooks/useMutationObserver.js +3 -3
- package/dist/cssm/hooks/useMutationObserver.js.map +1 -1
- package/dist/cssm/hooks/usePlatform.js +3 -3
- package/dist/cssm/hooks/usePlatform.js.map +1 -1
- package/dist/cssm/hooks/useResizeObserver.js +4 -6
- package/dist/cssm/hooks/useResizeObserver.js.map +1 -1
- package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js +2 -1
- package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
- package/dist/cssm/hooks/useSyncHTMLWithTokens.js +3 -1
- package/dist/cssm/hooks/useSyncHTMLWithTokens.js.map +1 -1
- package/dist/cssm/hooks/useWaitTransitionFinish.js +13 -15
- package/dist/cssm/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/cssm/index.js +1 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/array.js +18 -0
- package/dist/cssm/lib/array.js.map +1 -0
- package/dist/cssm/lib/curve.js +21 -0
- package/dist/cssm/lib/curve.js.map +1 -0
- package/dist/cssm/lib/dom.js +5 -2
- package/dist/cssm/lib/dom.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +4 -4
- package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/cssm/lib/fx.js +4 -55
- package/dist/cssm/lib/fx.js.map +1 -1
- package/dist/cssm/lib/layouts/index.js.map +1 -1
- package/dist/cssm/lib/layouts/layoutProps.js +11 -0
- package/dist/cssm/lib/layouts/layoutProps.js.map +1 -1
- package/dist/cssm/lib/layouts/resolveLayoutProps.js +13 -11
- package/dist/cssm/lib/layouts/resolveLayoutProps.js.map +1 -1
- package/dist/cssm/lib/layouts/types.js.map +1 -1
- package/dist/cssm/lib/material/shapes/Shape.js +18 -0
- package/dist/cssm/lib/material/shapes/Shape.js.map +1 -0
- package/dist/cssm/lib/material/shapes/shapes.js +2250 -0
- package/dist/cssm/lib/material/shapes/shapes.js.map +1 -0
- package/dist/cssm/lib/math.js +31 -0
- package/dist/cssm/lib/math.js.map +1 -0
- package/dist/cssm/lib/svg/path/approximate.js +57 -0
- package/dist/cssm/lib/svg/path/approximate.js.map +1 -0
- package/dist/cssm/lib/svg/path/interpolate.js +121 -0
- package/dist/cssm/lib/svg/path/interpolate.js.map +1 -0
- package/dist/cssm/lib/svg/path/path.js +50 -0
- package/dist/cssm/lib/svg/path/path.js.map +1 -0
- package/dist/cssm/lib/svg/path/point.js +3 -0
- package/dist/cssm/lib/svg/path/point.js.map +1 -0
- package/dist/cssm/lib/svg/path/transform.js +110 -0
- package/dist/cssm/lib/svg/path/transform.js.map +1 -0
- package/dist/cssm/lib/tokens/useTokenClassName.js +4 -1
- package/dist/cssm/lib/tokens/useTokenClassName.js.map +1 -1
- package/dist/cssm/lib/touch/UIPanGestureRecognizer.js +2 -2
- package/dist/cssm/lib/touch/UIPanGestureRecognizer.js.map +1 -1
- package/dist/cssm/styles/layout.css +273 -0
- package/dist/cssm/types.js +1 -4
- package/dist/cssm/types.js.map +1 -1
- package/dist/helpers/math.d.ts +4 -0
- package/dist/helpers/math.d.ts.map +1 -1
- package/dist/helpers/math.js +6 -0
- package/dist/helpers/math.js.map +1 -1
- package/dist/hoc/withPlatform.d.ts +1 -1
- package/dist/hoc/withPlatform.d.ts.map +1 -1
- package/dist/hoc/withPlatform.js +3 -2
- package/dist/hoc/withPlatform.js.map +1 -1
- package/dist/hooks/useAdaptivityConditionalRender/types.d.ts +2 -2
- package/dist/hooks/useAdaptivityConditionalRender/types.js.map +1 -1
- package/dist/hooks/useAnimationFrame.d.ts +16 -0
- package/dist/hooks/useAnimationFrame.d.ts.map +1 -0
- package/dist/hooks/useAnimationFrame.js +40 -0
- package/dist/hooks/useAnimationFrame.js.map +1 -0
- package/dist/hooks/useAutoFocus.js +4 -1
- package/dist/hooks/useAutoFocus.js.map +1 -1
- package/dist/hooks/useColorScheme.d.ts.map +1 -1
- package/dist/hooks/useColorScheme.js +3 -3
- package/dist/hooks/useColorScheme.js.map +1 -1
- package/dist/hooks/useConfigDirection.d.ts.map +1 -1
- package/dist/hooks/useConfigDirection.js +3 -3
- package/dist/hooks/useConfigDirection.js.map +1 -1
- package/dist/hooks/useDateInput.d.ts.map +1 -1
- package/dist/hooks/useDateInput.js +1 -2
- package/dist/hooks/useDateInput.js.map +1 -1
- package/dist/hooks/useFocusTrap/useAutoFocus.js +1 -0
- package/dist/hooks/useFocusTrap/useAutoFocus.js.map +1 -1
- package/dist/hooks/useFocusTrap/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap/useFocusTrap.js +2 -0
- package/dist/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/hooks/useFocusVisible.d.ts.map +1 -1
- package/dist/hooks/useFocusVisible.js +8 -13
- package/dist/hooks/useFocusVisible.js.map +1 -1
- package/dist/hooks/useFocusWithin.d.ts.map +1 -1
- package/dist/hooks/useFocusWithin.js +5 -4
- package/dist/hooks/useFocusWithin.js.map +1 -1
- package/dist/hooks/useGlobalEscKeyDown.d.ts.map +1 -1
- package/dist/hooks/useGlobalEscKeyDown.js +17 -15
- package/dist/hooks/useGlobalEscKeyDown.js.map +1 -1
- package/dist/hooks/useGlobalOnClickOutside.d.ts.map +1 -1
- package/dist/hooks/useGlobalOnClickOutside.js +6 -2
- package/dist/hooks/useGlobalOnClickOutside.js.map +1 -1
- package/dist/hooks/useKeyboardInputTracker.d.ts +1 -19
- package/dist/hooks/useKeyboardInputTracker.d.ts.map +1 -1
- package/dist/hooks/useKeyboardInputTracker.js +48 -41
- package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/hooks/useLatestRef.d.ts +3 -0
- package/dist/hooks/useLatestRef.d.ts.map +1 -0
- package/dist/hooks/useLatestRef.js +13 -0
- package/dist/hooks/useLatestRef.js.map +1 -0
- package/dist/hooks/useLocale.d.ts.map +1 -1
- package/dist/hooks/useLocale.js +3 -3
- package/dist/hooks/useLocale.js.map +1 -1
- package/dist/hooks/useMediaQueryMatch.js +1 -0
- package/dist/hooks/useMediaQueryMatch.js.map +1 -1
- package/dist/hooks/useMutationObserver.d.ts +1 -2
- package/dist/hooks/useMutationObserver.d.ts.map +1 -1
- package/dist/hooks/useMutationObserver.js +3 -3
- package/dist/hooks/useMutationObserver.js.map +1 -1
- package/dist/hooks/usePlatform.d.ts.map +1 -1
- package/dist/hooks/usePlatform.js +3 -3
- package/dist/hooks/usePlatform.js.map +1 -1
- package/dist/hooks/useResizeObserver.d.ts.map +1 -1
- package/dist/hooks/useResizeObserver.js +4 -6
- package/dist/hooks/useResizeObserver.js.map +1 -1
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js +2 -1
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
- package/dist/hooks/useSyncHTMLWithTokens.js +3 -1
- package/dist/hooks/useSyncHTMLWithTokens.js.map +1 -1
- package/dist/hooks/useWaitTransitionFinish.d.ts.map +1 -1
- package/dist/hooks/useWaitTransitionFinish.js +13 -15
- package/dist/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/index.d.ts +1 -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/array.d.ts +17 -0
- package/dist/lib/array.d.ts.map +1 -0
- package/dist/lib/array.js +18 -0
- package/dist/lib/array.js.map +1 -0
- package/dist/lib/curve.d.ts +9 -0
- package/dist/lib/curve.d.ts.map +1 -0
- package/dist/lib/curve.js +21 -0
- package/dist/lib/curve.js.map +1 -0
- package/dist/lib/dom.d.ts +2 -1
- package/dist/lib/dom.d.ts.map +1 -1
- package/dist/lib/dom.js +5 -2
- package/dist/lib/dom.js.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +4 -4
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/lib/fx.d.ts +1 -8
- package/dist/lib/fx.d.ts.map +1 -1
- package/dist/lib/fx.js +4 -55
- package/dist/lib/fx.js.map +1 -1
- package/dist/lib/layouts/index.d.ts +1 -1
- package/dist/lib/layouts/index.d.ts.map +1 -1
- package/dist/lib/layouts/index.js.map +1 -1
- package/dist/lib/layouts/layoutProps.d.ts +7 -0
- package/dist/lib/layouts/layoutProps.d.ts.map +1 -1
- package/dist/lib/layouts/layoutProps.js +11 -0
- package/dist/lib/layouts/layoutProps.js.map +1 -1
- package/dist/lib/layouts/resolveLayoutProps.d.ts.map +1 -1
- package/dist/lib/layouts/resolveLayoutProps.js +13 -11
- package/dist/lib/layouts/resolveLayoutProps.js.map +1 -1
- package/dist/lib/layouts/types.d.ts +29 -0
- package/dist/lib/layouts/types.d.ts.map +1 -1
- package/dist/lib/layouts/types.js.map +1 -1
- package/dist/lib/material/shapes/Shape.d.ts +8 -0
- package/dist/lib/material/shapes/Shape.d.ts.map +1 -0
- package/dist/lib/material/shapes/Shape.js +18 -0
- package/dist/lib/material/shapes/Shape.js.map +1 -0
- package/dist/lib/material/shapes/shapes.d.ts +43 -0
- package/dist/lib/material/shapes/shapes.d.ts.map +1 -0
- package/dist/lib/material/shapes/shapes.js +2250 -0
- package/dist/lib/material/shapes/shapes.js.map +1 -0
- package/dist/lib/math.d.ts +23 -0
- package/dist/lib/math.d.ts.map +1 -0
- package/dist/lib/math.js +31 -0
- package/dist/lib/math.js.map +1 -0
- package/dist/lib/svg/path/approximate.d.ts +21 -0
- package/dist/lib/svg/path/approximate.d.ts.map +1 -0
- package/dist/lib/svg/path/approximate.js +57 -0
- package/dist/lib/svg/path/approximate.js.map +1 -0
- package/dist/lib/svg/path/interpolate.d.ts +5 -0
- package/dist/lib/svg/path/interpolate.d.ts.map +1 -0
- package/dist/lib/svg/path/interpolate.js +121 -0
- package/dist/lib/svg/path/interpolate.js.map +1 -0
- package/dist/lib/svg/path/path.d.ts +48 -0
- package/dist/lib/svg/path/path.d.ts.map +1 -0
- package/dist/lib/svg/path/path.js +50 -0
- package/dist/lib/svg/path/path.js.map +1 -0
- package/dist/lib/svg/path/point.d.ts +3 -0
- package/dist/lib/svg/path/point.d.ts.map +1 -0
- package/dist/lib/svg/path/point.js +3 -0
- package/dist/lib/svg/path/point.js.map +1 -0
- package/dist/lib/svg/path/transform.d.ts +64 -0
- package/dist/lib/svg/path/transform.d.ts.map +1 -0
- package/dist/lib/svg/path/transform.js +110 -0
- package/dist/lib/svg/path/transform.js.map +1 -0
- package/dist/lib/tokens/useTokenClassName.d.ts.map +1 -1
- package/dist/lib/tokens/useTokenClassName.js +4 -1
- package/dist/lib/tokens/useTokenClassName.js.map +1 -1
- package/dist/lib/touch/UIPanGestureRecognizer.d.ts.map +1 -1
- package/dist/lib/touch/UIPanGestureRecognizer.js +2 -2
- package/dist/lib/touch/UIPanGestureRecognizer.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -4
- package/dist/types.js.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +7 -6
- package/src/components/ActionSheet/ActionSheet.tsx +6 -3
- package/src/components/AdaptivityProvider/AdaptivityContext.tsx +3 -3
- package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +2 -2
- package/src/components/AppRoot/AppRoot.tsx +1 -14
- package/src/components/AppRoot/AppRootContext.ts +0 -2
- package/src/components/Calendar/Calendar.tsx +2 -2
- package/src/components/CalendarDay/CalendarDay.tsx +4 -2
- package/src/components/CalendarDays/CalendarDays.tsx +2 -2
- package/src/components/CalendarHeader/CalendarHeader.tsx +4 -2
- package/src/components/CalendarRange/CalendarRange.tsx +2 -2
- package/src/components/CalendarTime/CalendarTime.module.css +38 -0
- package/src/components/CalendarTime/CalendarTime.module.css.d.ts.map +1 -1
- package/src/components/CalendarTime/CalendarTime.tsx +68 -55
- package/src/components/CalendarTime/CalendarTimePicker.tsx +148 -62
- package/src/components/CalendarTime/ComboBox.tsx +189 -0
- package/src/components/CardScroll/CardScroll.tsx +6 -5
- package/src/components/CarouselBase/CarouselBase.tsx +2 -1
- package/src/components/ChipsSelect/useChipsSelect.ts +1 -0
- package/src/components/ConfigProvider/ConfigProvider.tsx +6 -3
- package/src/components/ConfigProvider/ConfigProviderOverride.tsx +2 -1
- package/src/components/ConfigProvider/ConfigProviderSubContexts.tsx +43 -0
- package/src/components/ContentBadge/ContentBadge.module.css +84 -91
- package/src/components/ContentBadge/ContentBadge.module.css.d.ts.map +1 -1
- package/src/components/ContentBadge/ContentBadge.tsx +73 -5
- package/src/components/CustomSelect/CustomSelect.tsx +19 -10
- package/src/components/DateInput/DateInput.tsx +3 -3
- package/src/components/DateRangeInput/DateRangeInput.tsx +2 -2
- package/src/components/Epic/ScrollSaver.tsx +1 -0
- package/src/components/FixedLayout/ParentWidthWrapper.tsx +48 -0
- package/src/components/Flex/Flex.tsx +11 -6
- package/src/components/GridAvatar/GridAvatar.module.css +1 -1
- package/src/components/GridAvatar/GridAvatar.module.css.d.ts.map +1 -1
- package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.tsx +1 -1
- package/src/components/NativeSelect/NativeSelect.tsx +4 -2
- package/src/components/NavTransitionContext/NavTransitionContext.tsx +5 -1
- package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +3 -6
- package/src/components/PanelHeader/PanelHeader.tsx +1 -1
- package/src/components/Popper/Popper.tsx +8 -5
- package/src/components/PullToRefresh/PullToRefresh.module.css +1 -1
- package/src/components/PullToRefresh/PullToRefresh.tsx +10 -3
- package/src/components/Root/Root.tsx +60 -59
- package/src/components/SimpleGrid/SimpleGrid.tsx +25 -11
- package/src/components/Skeleton/Skeleton.tsx +6 -4
- package/src/components/Snackbar/Snackbar.tsx +6 -3
- package/src/components/Spacing/Spacing.tsx +1 -1
- package/src/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.module.css +13 -0
- package/src/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.module.css.d.ts.map +1 -0
- package/src/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.tsx +73 -0
- package/src/components/Spinner/ExpressiveSpinner/icons.tsx +104 -0
- package/src/components/Spinner/SvgIcon.tsx +31 -0
- package/src/components/Spinner/icons.tsx +10 -13
- package/src/components/SplitLayout/SplitLayout.tsx +3 -3
- package/src/components/TabsItem/TabsItem.tsx +4 -5
- package/src/components/Tappable/Tappable.tsx +2 -2
- package/src/components/View/View.tsx +83 -89
- package/src/components/View/ViewInfinite.tsx +65 -69
- package/src/components/WriteBar/WriteBar.tsx +25 -59
- package/src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.module.css +12 -0
- package/src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.tsx +20 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormField.module.css +18 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormField.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormField.tsx +22 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.module.css +3 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.tsx +23 -0
- package/src/components/WriteBar/WriteBarRoot/WriteBarRoot.module.css +14 -0
- package/src/components/WriteBar/WriteBarRoot/WriteBarRoot.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarRoot/WriteBarRoot.tsx +31 -0
- package/src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.module.css +42 -0
- package/src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.tsx +48 -0
- package/src/helpers/math.ts +8 -0
- package/src/hoc/withPlatform.tsx +3 -3
- package/src/hooks/useAdaptivityConditionalRender/types.ts +2 -2
- package/src/hooks/useAnimationFrame.tsx +42 -0
- package/src/hooks/useAutoFocus.ts +1 -1
- package/src/hooks/useColorScheme.ts +3 -4
- package/src/hooks/useConfigDirection.ts +3 -4
- package/src/hooks/useDateInput.ts +1 -2
- package/src/hooks/useFocusTrap/useAutoFocus.ts +1 -1
- package/src/hooks/useFocusTrap/useFocusTrap.tsx +2 -0
- package/src/hooks/useFocusVisible.ts +10 -18
- package/src/hooks/useFocusWithin.ts +26 -23
- package/src/hooks/useGlobalEscKeyDown.ts +12 -15
- package/src/hooks/useGlobalOnClickOutside.ts +5 -2
- package/src/hooks/useKeyboardInputTracker.ts +68 -55
- package/src/hooks/useLatestRef.ts +12 -0
- package/src/hooks/useLocale.ts +3 -4
- package/src/hooks/useMediaQueryMatch.ts +1 -1
- package/src/hooks/useMutationObserver.ts +2 -3
- package/src/hooks/usePlatform.ts +3 -4
- package/src/hooks/useResizeObserver.ts +4 -5
- package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +1 -1
- package/src/hooks/useSyncHTMLWithTokens.ts +1 -1
- package/src/hooks/useWaitTransitionFinish.ts +15 -15
- package/src/index.ts +1 -0
- package/src/lib/array.ts +19 -0
- package/src/lib/curve.ts +36 -0
- package/src/lib/dom.tsx +10 -4
- package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +4 -5
- package/src/lib/fx.ts +5 -63
- package/src/lib/layouts/index.ts +1 -0
- package/src/lib/layouts/layoutProps.ts +8 -0
- package/src/lib/layouts/resolveLayoutProps.ts +19 -17
- package/src/lib/layouts/types.ts +29 -0
- package/src/lib/material/shapes/Shape.tsx +17 -0
- package/src/lib/material/shapes/shapes.ts +329 -0
- package/src/lib/math.ts +37 -0
- package/src/lib/svg/path/approximate.ts +81 -0
- package/src/lib/svg/path/interpolate.ts +151 -0
- package/src/lib/svg/path/path.ts +102 -0
- package/src/lib/svg/path/point.ts +2 -0
- package/src/lib/svg/path/transform.ts +147 -0
- package/src/lib/tokens/useTokenClassName.ts +7 -5
- package/src/lib/touch/UIPanGestureRecognizer.ts +2 -2
- package/src/types.ts +16 -0
- package/dist/cssm/components/WriteBar/WriteBar.module.css +0 -118
- package/dist/cssm/lib/floating/LockFloatingPosition/LockFloatingPosition.js +0 -6
- package/dist/cssm/lib/floating/LockFloatingPosition/LockFloatingPosition.js.map +0 -1
- package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.d.ts +0 -6
- package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.d.ts.map +0 -1
- package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.js +0 -6
- package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.js.map +0 -1
- package/src/components/WriteBar/WriteBar.module.css +0 -116
- package/src/components/WriteBar/WriteBar.module.css.d.ts.map +0 -1
- package/src/lib/floating/LockFloatingPosition/LockFloatingPosition.tsx +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/WriteBar/WriteBar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/WriteBar/WriteBar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { hasReactNode } from '@vkontakte/vkjs';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { WriteBarBeforeOrAfter } from './WriteBarBeforeOrAfter/WriteBarBeforeOrAfter';\nimport { WriteBarFormField } from './WriteBarFormField/WriteBarFormField';\nimport { WriteBarFormFieldInlineAfter } from './WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter';\nimport { WriteBarRoot } from './WriteBarRoot/WriteBarRoot';\nimport { WriteBarTextarea } from './WriteBarTextarea/WriteBarTextarea';\n\nconst warn = warnOnce('WriteBar');\n\nexport interface WriteBarProps\n extends Pick<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n | 'autoComplete'\n | 'autoCapitalize'\n | 'autoCorrect'\n | 'cols'\n | 'dirName'\n | 'disabled'\n | 'maxLength'\n | 'minLength'\n | 'name'\n | 'placeholder'\n | 'readOnly'\n | 'required'\n | 'rows'\n | 'value'\n | 'wrap'\n | 'form'\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n >,\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'onFocus' | 'onBlur'>,\n HasRootRef<HTMLDivElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ textArea: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLTextAreaElement> | undefined;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `textArea`: свойства для прокидывания в поле ввода.\n */\n slotProps?:\n | {\n root?:\n | (Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> &\n HasRootRef<HTMLDivElement> &\n HasDataAttribute)\n | undefined;\n textArea?:\n | (React.TextareaHTMLAttributes<HTMLTextAreaElement> &\n HasRootRef<HTMLTextAreaElement> &\n HasDataAttribute)\n | undefined;\n }\n | undefined;\n /**\n * Содержимое, отображаемое слева от поля ввода.\n */\n before?: React.ReactNode | undefined;\n /**\n * Содержимое, отображаемое поверх поля ввода (актуально для iOS).\n */\n inlineAfter?: React.ReactNode | undefined;\n /**\n * Содержимое, отображаемое справа от поля ввода.\n */\n after?: React.ReactNode | undefined;\n /**\n * Вызывается при смене высоты поля ввода.\n */\n onHeightChange?: VoidFunction | undefined;\n /**\n * Добавляет тень вокруг поля ввода.\n */\n shadow?: boolean | undefined;\n /**\n * @deprecated Неиспользуемое свойство.\n */\n children?: never | undefined;\n}\n\n/**\n * @see https://vkui.io/components/write-bar\n */\nexport const WriteBar = ({\n // WriteBarProps\n before,\n inlineAfter,\n after,\n onHeightChange,\n shadow = false,\n getRef,\n\n // textarea props\n autoComplete,\n autoCapitalize,\n autoCorrect,\n cols,\n dirName,\n disabled,\n maxLength,\n minLength,\n name,\n placeholder,\n readOnly,\n required,\n value: valueProp,\n wrap,\n rows,\n form,\n onChange,\n onFocus,\n onBlur,\n id,\n inputMode,\n defaultValue,\n autoFocus,\n tabIndex,\n spellCheck,\n\n slotProps,\n ...restProps\n}: WriteBarProps): React.ReactNode => {\n /* istanbul ignore if: не проверяем в тестах */\n if (process.env.NODE_ENV === 'development' && getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ textArea: { getRootRef: ... } }`');\n }\n\n const rootProps = useMergeProps(restProps, slotProps?.root);\n\n const textAreaRest = useMergeProps(\n {\n getRootRef: getRef,\n autoComplete,\n autoCapitalize,\n autoCorrect,\n cols,\n dirName,\n disabled,\n maxLength,\n minLength,\n name,\n placeholder,\n readOnly,\n required,\n value: valueProp,\n wrap,\n rows,\n form,\n onChange,\n onFocus,\n onBlur,\n id,\n inputMode,\n defaultValue,\n autoFocus,\n tabIndex,\n spellCheck,\n },\n slotProps?.textArea,\n );\n\n return (\n <WriteBarRoot shadow={shadow} {...rootProps}>\n {hasReactNode(before) && <WriteBarBeforeOrAfter>{before}</WriteBarBeforeOrAfter>}\n <WriteBarFormField>\n <WriteBarTextarea onHeightChange={onHeightChange} {...textAreaRest} />\n {hasReactNode(inlineAfter) && (\n <WriteBarFormFieldInlineAfter>{inlineAfter}</WriteBarFormFieldInlineAfter>\n )}\n </WriteBarFormField>\n {hasReactNode(after) && <WriteBarBeforeOrAfter>{after}</WriteBarBeforeOrAfter>}\n </WriteBarRoot>\n );\n};\n\nWriteBar.FormField = WriteBarFormField;\nWriteBar.Textarea = WriteBarTextarea;\nWriteBar.Root = WriteBarRoot;\nWriteBar.Before = WriteBarBeforeOrAfter;\nWriteBar.After = WriteBarBeforeOrAfter;\n"],"names":["React","hasReactNode","useMergeProps","warnOnce","WriteBarBeforeOrAfter","WriteBarFormField","WriteBarFormFieldInlineAfter","WriteBarRoot","WriteBarTextarea","warn","WriteBar","before","inlineAfter","after","onHeightChange","shadow","getRef","autoComplete","autoCapitalize","autoCorrect","cols","dirName","disabled","maxLength","minLength","name","placeholder","readOnly","required","value","valueProp","wrap","rows","form","onChange","onFocus","onBlur","id","inputMode","defaultValue","autoFocus","tabIndex","spellCheck","slotProps","restProps","process","env","NODE_ENV","rootProps","root","textAreaRest","getRootRef","textArea","FormField","Textarea","Root","Before","After"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,qBAAqB,QAAQ,mDAAgD;AACtF,SAASC,iBAAiB,QAAQ,2CAAwC;AAC1E,SAASC,4BAA4B,QAAQ,mFAAgF;AAC7H,SAASC,YAAY,QAAQ,iCAA8B;AAC3D,SAASC,gBAAgB,QAAQ,yCAAsC;AAEvE,MAAMC,OAAON,SAAS;AA4EtB;;CAEC,GACD,OAAO,MAAMO,WAAW,CAAC,EACvB,gBAAgB;AAChBC,MAAM,EACNC,WAAW,EACXC,KAAK,EACLC,cAAc,EACdC,SAAS,KAAK,EACdC,MAAM,EAEN,iBAAiB;AACjBC,YAAY,EACZC,cAAc,EACdC,WAAW,EACXC,IAAI,EACJC,OAAO,EACPC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,IAAI,EACJC,WAAW,EACXC,QAAQ,EACRC,QAAQ,EACRC,OAAOC,SAAS,EAChBC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNC,EAAE,EACFC,SAAS,EACTC,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,UAAU,EAEVC,SAAS,EACT,GAAGC,WACW;IACd,6CAA6C,GAC7C,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiB/B,QAAQ;QACpDP,KAAK;IACP;IAEA,MAAMuC,YAAY9C,cAAc0C,WAAWD,WAAWM;IAEtD,MAAMC,eAAehD,cACnB;QACEiD,YAAYnC;QACZC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC,OAAOC;QACPC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;IACF,GACAC,WAAWS;IAGb,qBACE,MAAC7C;QAAaQ,QAAQA;QAAS,GAAGiC,SAAS;;YACxC/C,aAAaU,yBAAW,KAACP;0BAAuBO;;0BACjD,MAACN;;kCACC,KAACG;wBAAiBM,gBAAgBA;wBAAiB,GAAGoC,YAAY;;oBACjEjD,aAAaW,8BACZ,KAACN;kCAA8BM;;;;YAGlCX,aAAaY,wBAAU,KAACT;0BAAuBS;;;;AAGtD,EAAE;AAEFH,SAAS2C,SAAS,GAAGhD;AACrBK,SAAS4C,QAAQ,GAAG9C;AACpBE,SAAS6C,IAAI,GAAGhD;AAChBG,SAAS8C,MAAM,GAAGpD;AAClBM,SAAS+C,KAAK,GAAGrD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { classNames } from "@vkontakte/vkjs";
|
|
4
|
+
import { Flex } from "../../Flex/Flex.js";
|
|
5
|
+
import { usePlatform } from "../../../hooks/usePlatform.js";
|
|
6
|
+
import styles from "./WriteBarBeforeOrAfter.module.css";
|
|
7
|
+
export const WriteBarBeforeOrAfter = ({ className, ...restProps })=>{
|
|
8
|
+
const platform = usePlatform();
|
|
9
|
+
return /*#__PURE__*/ _jsx(Flex, {
|
|
10
|
+
align: "end",
|
|
11
|
+
className: classNames(styles.host, platform === 'ios' && styles.ios, className),
|
|
12
|
+
...restProps
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=WriteBarBeforeOrAfter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.tsx"],"sourcesContent":["'use client';\n\nimport { classNames } from '@vkontakte/vkjs';\nimport { Flex, type FlexProps } from '../../../components/Flex/Flex';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport styles from './WriteBarBeforeOrAfter.module.css';\n\ntype WriteBarBeforeOrAfterProps = FlexProps;\n\nexport const WriteBarBeforeOrAfter = ({ className, ...restProps }: WriteBarBeforeOrAfterProps) => {\n const platform = usePlatform();\n\n return (\n <Flex\n align=\"end\"\n className={classNames(styles.host, platform === 'ios' && styles.ios, className)}\n {...restProps}\n />\n );\n};\n"],"names":["classNames","Flex","usePlatform","styles","WriteBarBeforeOrAfter","className","restProps","platform","align","host","ios"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,IAAI,QAAwB,qBAAgC;AACrE,SAASC,WAAW,QAAQ,gCAA6B;AACzD,OAAOC,YAAY,qCAAqC;AAIxD,OAAO,MAAMC,wBAAwB,CAAC,EAAEC,SAAS,EAAE,GAAGC,WAAuC;IAC3F,MAAMC,WAAWL;IAEjB,qBACE,KAACD;QACCO,OAAM;QACNH,WAAWL,WAAWG,OAAOM,IAAI,EAAEF,aAAa,SAASJ,OAAOO,GAAG,EAAEL;QACpE,GAAGC,SAAS;;AAGnB,EAAE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { classNames } from "@vkontakte/vkjs";
|
|
4
|
+
import { usePlatform } from "../../../hooks/usePlatform.js";
|
|
5
|
+
import { Flex } from "../../Flex/Flex.js";
|
|
6
|
+
import { WriteBarFormFieldInlineAfter } from "./WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js";
|
|
7
|
+
import styles from "./WriteBarFormField.module.css";
|
|
8
|
+
export const WriteBarFormField = ({ className, ...restProps })=>{
|
|
9
|
+
const platform = usePlatform();
|
|
10
|
+
return /*#__PURE__*/ _jsx(Flex, {
|
|
11
|
+
className: classNames(styles.host, platform === 'ios' && styles.ios, className),
|
|
12
|
+
...restProps
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
WriteBarFormField.InlineAfter = WriteBarFormFieldInlineAfter;
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=WriteBarFormField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/WriteBar/WriteBarFormField/WriteBarFormField.tsx"],"sourcesContent":["'use client';\n\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport { Flex, type FlexProps } from '../../Flex/Flex';\nimport { WriteBarFormFieldInlineAfter } from './WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter';\nimport styles from './WriteBarFormField.module.css';\n\ntype WriteBarFormFieldProps = FlexProps;\n\nexport const WriteBarFormField = ({ className, ...restProps }: WriteBarFormFieldProps) => {\n const platform = usePlatform();\n\n return (\n <Flex\n className={classNames(styles.host, platform === 'ios' && styles.ios, className)}\n {...restProps}\n />\n );\n};\n\nWriteBarFormField.InlineAfter = WriteBarFormFieldInlineAfter;\n"],"names":["classNames","usePlatform","Flex","WriteBarFormFieldInlineAfter","styles","WriteBarFormField","className","restProps","platform","host","ios","InlineAfter"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,WAAW,QAAQ,gCAA6B;AACzD,SAASC,IAAI,QAAwB,qBAAkB;AACvD,SAASC,4BAA4B,QAAQ,iEAA8D;AAC3G,OAAOC,YAAY,iCAAiC;AAIpD,OAAO,MAAMC,oBAAoB,CAAC,EAAEC,SAAS,EAAE,GAAGC,WAAmC;IACnF,MAAMC,WAAWP;IAEjB,qBACE,KAACC;QACCI,WAAWN,WAAWI,OAAOK,IAAI,EAAED,aAAa,SAASJ,OAAOM,GAAG,EAAEJ;QACpE,GAAGC,SAAS;;AAGnB,EAAE;AAEFF,kBAAkBM,WAAW,GAAGR"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
.host {
|
|
2
|
+
position: relative;
|
|
3
|
+
flex: 1;
|
|
4
|
+
min-inline-size: 0;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.ios {
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
margin-block: 8px;
|
|
10
|
+
margin-inline: 0;
|
|
11
|
+
background-color: var(--vkui--color_write_bar_input_background);
|
|
12
|
+
border: var(--vkui--size_border--regular) solid var(--vkui--color_write_bar_input_border);
|
|
13
|
+
border-radius: 18px;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.ios:first-child {
|
|
17
|
+
margin-inline-start: 12px;
|
|
18
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { classNames } from "@vkontakte/vkjs";
|
|
4
|
+
import { Flex } from "../../../Flex/Flex.js";
|
|
5
|
+
import { usePlatform } from "../../../../hooks/usePlatform.js";
|
|
6
|
+
import styles from "./WriteBarFormFieldInlineAfter.module.css";
|
|
7
|
+
export const WriteBarFormFieldInlineAfter = ({ className, ...restProps })=>{
|
|
8
|
+
const platform = usePlatform();
|
|
9
|
+
return /*#__PURE__*/ _jsx(Flex, {
|
|
10
|
+
align: "end",
|
|
11
|
+
className: classNames(platform === 'ios' && styles.ios, className),
|
|
12
|
+
...restProps
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=WriteBarFormFieldInlineAfter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.tsx"],"sourcesContent":["'use client';\n\nimport { classNames } from '@vkontakte/vkjs';\nimport { Flex, type FlexProps } from '../../../../components/Flex/Flex';\nimport { usePlatform } from '../../../../hooks/usePlatform';\nimport styles from './WriteBarFormFieldInlineAfter.module.css';\n\ntype WriteBarFormFieldInlineAfterProps = FlexProps;\n\nexport const WriteBarFormFieldInlineAfter = ({\n className,\n ...restProps\n}: WriteBarFormFieldInlineAfterProps) => {\n const platform = usePlatform();\n\n return (\n <Flex\n align=\"end\"\n className={classNames(platform === 'ios' && styles.ios, className)}\n {...restProps}\n />\n );\n};\n"],"names":["classNames","Flex","usePlatform","styles","WriteBarFormFieldInlineAfter","className","restProps","platform","align","ios"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,IAAI,QAAwB,wBAAmC;AACxE,SAASC,WAAW,QAAQ,mCAAgC;AAC5D,OAAOC,YAAY,4CAA4C;AAI/D,OAAO,MAAMC,+BAA+B,CAAC,EAC3CC,SAAS,EACT,GAAGC,WAC+B;IAClC,MAAMC,WAAWL;IAEjB,qBACE,KAACD;QACCO,OAAM;QACNH,WAAWL,WAAWO,aAAa,SAASJ,OAAOM,GAAG,EAAEJ;QACvD,GAAGC,SAAS;;AAGnB,EAAE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { classNames } from "@vkontakte/vkjs";
|
|
4
|
+
import { usePlatform } from "../../../hooks/usePlatform.js";
|
|
5
|
+
import { Flex } from "../../Flex/Flex.js";
|
|
6
|
+
import styles from "./WriteBarRoot.module.css";
|
|
7
|
+
export const WriteBarRoot = ({ shadow, className, ...restProps })=>{
|
|
8
|
+
const platform = usePlatform();
|
|
9
|
+
return /*#__PURE__*/ _jsx(Flex, {
|
|
10
|
+
align: "end",
|
|
11
|
+
minBlockSize: 52,
|
|
12
|
+
className: classNames(styles.host, platform === 'ios' && styles.ios, shadow && styles.shadow, className),
|
|
13
|
+
...restProps
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=WriteBarRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/WriteBar/WriteBarRoot/WriteBarRoot.tsx"],"sourcesContent":["'use client';\n\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport { Flex, type FlexProps } from '../../Flex/Flex';\nimport styles from './WriteBarRoot.module.css';\n\ntype WriteBarRootProps = FlexProps & {\n /**\n * Добавляет тень вокруг поля ввода.\n */\n shadow?: boolean;\n};\n\nexport const WriteBarRoot = ({ shadow, className, ...restProps }: WriteBarRootProps) => {\n const platform = usePlatform();\n\n return (\n <Flex\n align=\"end\"\n minBlockSize={52}\n className={classNames(\n styles.host,\n platform === 'ios' && styles.ios,\n shadow && styles.shadow,\n className,\n )}\n {...restProps}\n />\n );\n};\n"],"names":["classNames","usePlatform","Flex","styles","WriteBarRoot","shadow","className","restProps","platform","align","minBlockSize","host","ios"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,WAAW,QAAQ,gCAA6B;AACzD,SAASC,IAAI,QAAwB,qBAAkB;AACvD,OAAOC,YAAY,4BAA4B;AAS/C,OAAO,MAAMC,eAAe,CAAC,EAAEC,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAA8B;IACjF,MAAMC,WAAWP;IAEjB,qBACE,KAACC;QACCO,OAAM;QACNC,cAAc;QACdJ,WAAWN,WACTG,OAAOQ,IAAI,EACXH,aAAa,SAASL,OAAOS,GAAG,EAChCP,UAAUF,OAAOE,MAAM,EACvBC;QAED,GAAGC,SAAS;;AAGnB,EAAE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { classNames } from "@vkontakte/vkjs";
|
|
5
|
+
import { useExternRef } from "../../../hooks/useExternRef.js";
|
|
6
|
+
import { usePlatform } from "../../../hooks/usePlatform.js";
|
|
7
|
+
import { callMultiple } from "../../../lib/callMultiple.js";
|
|
8
|
+
import { useResizeTextarea } from "../../Textarea/useResizeTextarea.js";
|
|
9
|
+
import { Headline } from "../../Typography/Headline/Headline.js";
|
|
10
|
+
import { Title } from "../../Typography/Title/Title.js";
|
|
11
|
+
import styles from "./WriteBarTextarea.module.css";
|
|
12
|
+
export const WriteBarTextarea = ({ className, getRootRef, onHeightChange, onChange, ...restProps })=>{
|
|
13
|
+
const platform = usePlatform();
|
|
14
|
+
const [refResizeTextarea, resize] = useResizeTextarea(onHeightChange, true);
|
|
15
|
+
const textareaRef = useExternRef(getRootRef, refResizeTextarea);
|
|
16
|
+
React.useEffect(resize, [
|
|
17
|
+
resize,
|
|
18
|
+
platform
|
|
19
|
+
]);
|
|
20
|
+
const props = {
|
|
21
|
+
Component: 'textarea',
|
|
22
|
+
weight: '3',
|
|
23
|
+
className: classNames(className, styles.host, platform === 'ios' && styles.ios),
|
|
24
|
+
getRootRef: textareaRef,
|
|
25
|
+
onChange: callMultiple(onChange, resize)
|
|
26
|
+
};
|
|
27
|
+
if (platform === 'ios') {
|
|
28
|
+
return /*#__PURE__*/ _jsx(Title, {
|
|
29
|
+
level: "3",
|
|
30
|
+
...props,
|
|
31
|
+
...restProps
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return /*#__PURE__*/ _jsx(Headline, {
|
|
35
|
+
...props,
|
|
36
|
+
...restProps
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=WriteBarTextarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../../hooks/useExternRef';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport { callMultiple } from '../../../lib/callMultiple';\nimport type { RootComponentProps } from '../../RootComponent/RootComponent';\nimport { useResizeTextarea } from '../../Textarea/useResizeTextarea';\nimport { Headline } from '../../Typography/Headline/Headline';\nimport { Title } from '../../Typography/Title/Title';\nimport styles from './WriteBarTextarea.module.css';\n\ntype WriteBarTextareaProps = RootComponentProps<HTMLTextAreaElement> & {\n /**\n * Вызывается при смене высоты поля ввода.\n */\n onHeightChange?: VoidFunction | undefined;\n};\n\nexport const WriteBarTextarea = ({\n className,\n getRootRef,\n onHeightChange,\n onChange,\n ...restProps\n}: WriteBarTextareaProps) => {\n const platform = usePlatform();\n\n const [refResizeTextarea, resize] = useResizeTextarea(onHeightChange, true);\n const textareaRef = useExternRef(getRootRef, refResizeTextarea);\n\n React.useEffect(resize, [resize, platform]);\n\n const props = {\n Component: 'textarea',\n weight: '3',\n className: classNames(className, styles.host, platform === 'ios' && styles.ios),\n getRootRef: textareaRef,\n onChange: callMultiple(onChange, resize),\n } as const;\n\n if (platform === 'ios') {\n return <Title level=\"3\" {...props} {...restProps} />;\n }\n\n return <Headline {...props} {...restProps} />;\n};\n"],"names":["React","classNames","useExternRef","usePlatform","callMultiple","useResizeTextarea","Headline","Title","styles","WriteBarTextarea","className","getRootRef","onHeightChange","onChange","restProps","platform","refResizeTextarea","resize","textareaRef","useEffect","props","Component","weight","host","ios","level"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,YAAY,QAAQ,iCAA8B;AAC3D,SAASC,WAAW,QAAQ,gCAA6B;AACzD,SAASC,YAAY,QAAQ,+BAA4B;AAEzD,SAASC,iBAAiB,QAAQ,sCAAmC;AACrE,SAASC,QAAQ,QAAQ,wCAAqC;AAC9D,SAASC,KAAK,QAAQ,kCAA+B;AACrD,OAAOC,YAAY,gCAAgC;AASnD,OAAO,MAAMC,mBAAmB,CAAC,EAC/BC,SAAS,EACTC,UAAU,EACVC,cAAc,EACdC,QAAQ,EACR,GAAGC,WACmB;IACtB,MAAMC,WAAWZ;IAEjB,MAAM,CAACa,mBAAmBC,OAAO,GAAGZ,kBAAkBO,gBAAgB;IACtE,MAAMM,cAAchB,aAAaS,YAAYK;IAE7ChB,MAAMmB,SAAS,CAACF,QAAQ;QAACA;QAAQF;KAAS;IAE1C,MAAMK,QAAQ;QACZC,WAAW;QACXC,QAAQ;QACRZ,WAAWT,WAAWS,WAAWF,OAAOe,IAAI,EAAER,aAAa,SAASP,OAAOgB,GAAG;QAC9Eb,YAAYO;QACZL,UAAUT,aAAaS,UAAUI;IACnC;IAEA,IAAIF,aAAa,OAAO;QACtB,qBAAO,KAACR;YAAMkB,OAAM;YAAK,GAAGL,KAAK;YAAG,GAAGN,SAAS;;IAClD;IAEA,qBAAO,KAACR;QAAU,GAAGc,KAAK;QAAG,GAAGN,SAAS;;AAC3C,EAAE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
.host {
|
|
2
|
+
box-sizing: border-box;
|
|
3
|
+
flex: 1;
|
|
4
|
+
inline-size: 100%;
|
|
5
|
+
min-inline-size: 0;
|
|
6
|
+
max-block-size: 120px;
|
|
7
|
+
margin: 0;
|
|
8
|
+
color: var(--vkui--color_text_primary);
|
|
9
|
+
-webkit-appearance: none;
|
|
10
|
+
appearance: none;
|
|
11
|
+
resize: none;
|
|
12
|
+
background: transparent;
|
|
13
|
+
border: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.host:placeholder-shown {
|
|
17
|
+
text-overflow: ellipsis;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.host::placeholder {
|
|
21
|
+
overflow: hidden;
|
|
22
|
+
text-overflow: ellipsis;
|
|
23
|
+
color: var(--vkui--color_text_subhead);
|
|
24
|
+
white-space: nowrap;
|
|
25
|
+
/* Для Firefox */
|
|
26
|
+
opacity: 1;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.host:focus {
|
|
30
|
+
outline: var(--vkui_internal--outline-reset);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.host {
|
|
34
|
+
block-size: 52px;
|
|
35
|
+
padding-block: 16px;
|
|
36
|
+
padding-inline: 12px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.ios {
|
|
40
|
+
block-size: 36px;
|
|
41
|
+
padding-block: 6px;
|
|
42
|
+
padding-inline: 12px 0;
|
|
43
|
+
}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
export const clamp = (value, min, max)=>Math.max(min, Math.min(value, max));
|
|
2
|
+
/**
|
|
3
|
+
* Переполнение для диапазона [min, max]
|
|
4
|
+
*/ export function overflow(value, min, max) {
|
|
5
|
+
const range = max - min + 1;
|
|
6
|
+
return ((value - min) % range + range) % range + min;
|
|
7
|
+
}
|
|
2
8
|
export function precisionRound(number, precision = 1) {
|
|
3
9
|
let factor = Math.pow(10, precision);
|
|
4
10
|
return Math.round(number * factor) / factor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/helpers/math.ts"],"sourcesContent":["export const clamp = (value: number, min: number, max: number): number =>\n Math.max(min, Math.min(value, max));\n\nexport function precisionRound(number: number, precision = 1): number {\n let factor = Math.pow(10, precision);\n return Math.round(number * factor) / factor;\n}\n\n/**\n * Решение скопировано без изменений у MUI:\n * https://github.com/mui/material-ui/blob/v5.13.7/packages/mui-base/src/useSlider/useSlider.ts#L89-L105\n */\nfunction getDecimalPrecision(num: number) {\n // This handles the case when num is very small (0.00000001), js will turn this into 1e-8.\n // When num is bigger than 1 or less than -1 it won't get converted to this notation so it's fine.\n if (Math.abs(num) < 1) {\n const parts = num.toExponential().split('e-');\n const matissaDecimalPart = parts[0].split('.')[1];\n return (matissaDecimalPart ? matissaDecimalPart.length : 0) + parseInt(parts[1], 10);\n }\n\n const decimalPart = num.toString().split('.')[1];\n return decimalPart ? decimalPart.length : 0;\n}\n\nfunction roundValueToStep(value: number, step: number, min: number) {\n const nearest = Math.round((value - min) / step) * step + min;\n return Number(nearest.toFixed(getDecimalPrecision(step)));\n}\n\nfunction decimatedClamp(val: number, min: number, max: number, step?: number) {\n if (step == null || step <= 0) {\n return clamp(val, min, max);\n }\n const roundedValue = roundValueToStep(val, step, min);\n return clamp(roundedValue, min, max);\n}\n\nexport function rescale(\n value: number,\n from: [number, number],\n to: [number, number],\n options: { step?: number | undefined } = {},\n): number {\n const scaled = ((value - from[0]) / (from[1] - from[0])) * (to[1] - to[0]) + to[0];\n return decimatedClamp(scaled, to[0], to[1], options.step);\n}\n"],"names":["clamp","value","min","max","Math","precisionRound","number","precision","factor","pow","round","getDecimalPrecision","num","abs","parts","toExponential","split","matissaDecimalPart","length","parseInt","decimalPart","toString","roundValueToStep","step","nearest","Number","toFixed","decimatedClamp","val","roundedValue","rescale","from","to","options","scaled"],"mappings":"AAAA,OAAO,MAAMA,QAAQ,CAACC,OAAeC,KAAaC,MAChDC,KAAKD,GAAG,CAACD,KAAKE,KAAKF,GAAG,CAACD,OAAOE,MAAM;AAEtC,OAAO,SAASE,eAAeC,MAAc,EAAEC,YAAY,CAAC;IAC1D,IAAIC,
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/math.ts"],"sourcesContent":["export const clamp = (value: number, min: number, max: number): number =>\n Math.max(min, Math.min(value, max));\n\n/**\n * Переполнение для диапазона [min, max]\n */\nexport function overflow(value: number, min: number, max: number) {\n const range = max - min + 1;\n return ((((value - min) % range) + range) % range) + min;\n}\n\nexport function precisionRound(number: number, precision = 1): number {\n let factor = Math.pow(10, precision);\n return Math.round(number * factor) / factor;\n}\n\n/**\n * Решение скопировано без изменений у MUI:\n * https://github.com/mui/material-ui/blob/v5.13.7/packages/mui-base/src/useSlider/useSlider.ts#L89-L105\n */\nfunction getDecimalPrecision(num: number) {\n // This handles the case when num is very small (0.00000001), js will turn this into 1e-8.\n // When num is bigger than 1 or less than -1 it won't get converted to this notation so it's fine.\n if (Math.abs(num) < 1) {\n const parts = num.toExponential().split('e-');\n const matissaDecimalPart = parts[0].split('.')[1];\n return (matissaDecimalPart ? matissaDecimalPart.length : 0) + parseInt(parts[1], 10);\n }\n\n const decimalPart = num.toString().split('.')[1];\n return decimalPart ? decimalPart.length : 0;\n}\n\nfunction roundValueToStep(value: number, step: number, min: number) {\n const nearest = Math.round((value - min) / step) * step + min;\n return Number(nearest.toFixed(getDecimalPrecision(step)));\n}\n\nfunction decimatedClamp(val: number, min: number, max: number, step?: number) {\n if (step == null || step <= 0) {\n return clamp(val, min, max);\n }\n const roundedValue = roundValueToStep(val, step, min);\n return clamp(roundedValue, min, max);\n}\n\nexport function rescale(\n value: number,\n from: [number, number],\n to: [number, number],\n options: { step?: number | undefined } = {},\n): number {\n const scaled = ((value - from[0]) / (from[1] - from[0])) * (to[1] - to[0]) + to[0];\n return decimatedClamp(scaled, to[0], to[1], options.step);\n}\n"],"names":["clamp","value","min","max","Math","overflow","range","precisionRound","number","precision","factor","pow","round","getDecimalPrecision","num","abs","parts","toExponential","split","matissaDecimalPart","length","parseInt","decimalPart","toString","roundValueToStep","step","nearest","Number","toFixed","decimatedClamp","val","roundedValue","rescale","from","to","options","scaled"],"mappings":"AAAA,OAAO,MAAMA,QAAQ,CAACC,OAAeC,KAAaC,MAChDC,KAAKD,GAAG,CAACD,KAAKE,KAAKF,GAAG,CAACD,OAAOE,MAAM;AAEtC;;CAEC,GACD,OAAO,SAASE,SAASJ,KAAa,EAAEC,GAAW,EAAEC,GAAW;IAC9D,MAAMG,QAAQH,MAAMD,MAAM;IAC1B,OAAO,AAAE,CAAA,AAAED,CAAAA,QAAQC,GAAE,IAAKI,QAASA,KAAI,IAAKA,QAASJ;AACvD;AAEA,OAAO,SAASK,eAAeC,MAAc,EAAEC,YAAY,CAAC;IAC1D,IAAIC,SAASN,KAAKO,GAAG,CAAC,IAAIF;IAC1B,OAAOL,KAAKQ,KAAK,CAACJ,SAASE,UAAUA;AACvC;AAEA;;;CAGC,GACD,SAASG,oBAAoBC,GAAW;IACtC,0FAA0F;IAC1F,kGAAkG;IAClG,IAAIV,KAAKW,GAAG,CAACD,OAAO,GAAG;QACrB,MAAME,QAAQF,IAAIG,aAAa,GAAGC,KAAK,CAAC;QACxC,MAAMC,qBAAqBH,KAAK,CAAC,EAAE,CAACE,KAAK,CAAC,IAAI,CAAC,EAAE;QACjD,OAAO,AAACC,CAAAA,qBAAqBA,mBAAmBC,MAAM,GAAG,CAAA,IAAKC,SAASL,KAAK,CAAC,EAAE,EAAE;IACnF;IAEA,MAAMM,cAAcR,IAAIS,QAAQ,GAAGL,KAAK,CAAC,IAAI,CAAC,EAAE;IAChD,OAAOI,cAAcA,YAAYF,MAAM,GAAG;AAC5C;AAEA,SAASI,iBAAiBvB,KAAa,EAAEwB,IAAY,EAAEvB,GAAW;IAChE,MAAMwB,UAAUtB,KAAKQ,KAAK,CAAC,AAACX,CAAAA,QAAQC,GAAE,IAAKuB,QAAQA,OAAOvB;IAC1D,OAAOyB,OAAOD,QAAQE,OAAO,CAACf,oBAAoBY;AACpD;AAEA,SAASI,eAAeC,GAAW,EAAE5B,GAAW,EAAEC,GAAW,EAAEsB,IAAa;IAC1E,IAAIA,QAAQ,QAAQA,QAAQ,GAAG;QAC7B,OAAOzB,MAAM8B,KAAK5B,KAAKC;IACzB;IACA,MAAM4B,eAAeP,iBAAiBM,KAAKL,MAAMvB;IACjD,OAAOF,MAAM+B,cAAc7B,KAAKC;AAClC;AAEA,OAAO,SAAS6B,QACd/B,KAAa,EACbgC,IAAsB,EACtBC,EAAoB,EACpBC,UAAyC,CAAC,CAAC;IAE3C,MAAMC,SAAS,AAAEnC,CAAAA,QAAQgC,IAAI,CAAC,EAAE,AAAD,IAAMA,CAAAA,IAAI,CAAC,EAAE,GAAGA,IAAI,CAAC,EAAE,AAAD,IAAOC,CAAAA,EAAE,CAAC,EAAE,GAAGA,EAAE,CAAC,EAAE,AAAD,IAAKA,EAAE,CAAC,EAAE;IAClF,OAAOL,eAAeO,QAAQF,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEC,QAAQV,IAAI;AAC1D"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { PlatformContext } from "../components/ConfigProvider/ConfigProviderSubContexts.js";
|
|
4
5
|
export function withPlatform(Component) {
|
|
5
6
|
function WithPlatform(props) {
|
|
6
|
-
const
|
|
7
|
+
const platform = React.useContext(PlatformContext);
|
|
7
8
|
return /*#__PURE__*/ _jsx(Component, {
|
|
8
9
|
...props,
|
|
9
10
|
platform: platform
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hoc/withPlatform.tsx"],"sourcesContent":["'use client';\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/hoc/withPlatform.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { PlatformContext } from '../components/ConfigProvider/ConfigProviderSubContexts';\nimport type { HasPlatform } from '../types';\n\nexport function withPlatform<T extends HasPlatform>(\n Component: React.ComponentType<T>,\n): React.FC<Omit<T, keyof HasPlatform>> {\n function WithPlatform(props: Omit<T, keyof HasPlatform>) {\n const platform = React.useContext(PlatformContext);\n\n return <Component {...(props as T)} platform={platform} />;\n }\n return WithPlatform;\n}\n"],"names":["React","PlatformContext","withPlatform","Component","WithPlatform","props","platform","useContext"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,eAAe,QAAQ,4DAAyD;AAGzF,OAAO,SAASC,aACdC,SAAiC;IAEjC,SAASC,aAAaC,KAAiC;QACrD,MAAMC,WAAWN,MAAMO,UAAU,CAACN;QAElC,qBAAO,KAACE;YAAW,GAAIE,KAAK;YAAQC,UAAUA;;IAChD;IACA,OAAOF;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/hooks/useAdaptivityConditionalRender/types.ts"],"sourcesContent":["import type { CSSBreakpoints, DensityTypeValues } from '../../lib/adaptivity';\n\nexport type ForcedHiddenByAdaptivityProviderType = false; // имеется ввиду, что зашили значение, например, <AdaptivityProvider density=\"regular\" />\n\nexport type ElementProps = { className: string };\n\n/* ================================================================================================================== */\n\nexport type AdaptiveDensityType = Record<\n DensityTypeValues,\n ForcedHiddenByAdaptivityProviderType | ElementProps\n>;\n\n/* ================================================================================================================== */\n\nexport type ViewWidthCSSBreakpoints = Extract<\n CSSBreakpoints,\n 'smallTabletMinus' | 'smallTabletPlus' | 'tabletMinus' | 'tabletPlus'\n>;\n\nexport type AdaptiveViewWidth = Record<\n ViewWidthCSSBreakpoints,\n ForcedHiddenByAdaptivityProviderType | ElementProps\n>;\n\n/* ================================================================================================================== */\n\nexport type DeviceTypeCSSBreakpoints = 'mobile' | 'desktop';\n\nexport type AdaptiveDeviceType = Record<\n DeviceTypeCSSBreakpoints,\n ForcedHiddenByAdaptivityProviderType | ElementProps\n>;\n\n/* ================================================================================================================== */\n\nexport interface UseAdaptivityConditionalRender {\n /**\n * @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `density` (
|
|
1
|
+
{"version":3,"sources":["../../../../src/hooks/useAdaptivityConditionalRender/types.ts"],"sourcesContent":["import type { CSSBreakpoints, DensityTypeValues } from '../../lib/adaptivity';\n\nexport type ForcedHiddenByAdaptivityProviderType = false; // имеется ввиду, что зашили значение, например, <AdaptivityProvider density=\"regular\" />\n\nexport type ElementProps = { className: string };\n\n/* ================================================================================================================== */\n\nexport type AdaptiveDensityType = Record<\n DensityTypeValues,\n ForcedHiddenByAdaptivityProviderType | ElementProps\n>;\n\n/* ================================================================================================================== */\n\nexport type ViewWidthCSSBreakpoints = Extract<\n CSSBreakpoints,\n 'smallTabletMinus' | 'smallTabletPlus' | 'tabletMinus' | 'tabletPlus'\n>;\n\nexport type AdaptiveViewWidth = Record<\n ViewWidthCSSBreakpoints,\n ForcedHiddenByAdaptivityProviderType | ElementProps\n>;\n\n/* ================================================================================================================== */\n\nexport type DeviceTypeCSSBreakpoints = 'mobile' | 'desktop';\n\nexport type AdaptiveDeviceType = Record<\n DeviceTypeCSSBreakpoints,\n ForcedHiddenByAdaptivityProviderType | ElementProps\n>;\n\n/* ================================================================================================================== */\n\nexport interface UseAdaptivityConditionalRender {\n /**\n * @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `density` (https://github.com/VKCOM/VKUI/issues/9015).\n */\n sizeX: AdaptiveDensityType; // TODO [>=10]: #9015 Удалить свойство.\n /**\n * @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `density` (https://github.com/VKCOM/VKUI/issues/9015).\n */\n sizeY: AdaptiveDensityType; // TODO [>=10]: #9015 Удалить свойство.\n density: AdaptiveDensityType;\n viewWidth: AdaptiveViewWidth;\n deviceType: AdaptiveDeviceType;\n}\n"],"names":[],"mappings":"AAkCA,sHAAsH,GAEtH,WAYC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useStableCallback } from "./useStableCallback.js";
|
|
3
|
+
/**
|
|
4
|
+
* Обертка над `requestAnimationFrame`
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* const animate = React.useCallback((delta: number) => {
|
|
8
|
+
* console.log('Delta:', delta);
|
|
9
|
+
* }, []);
|
|
10
|
+
*
|
|
11
|
+
* useAnimationFrame(animate);
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @param callback Функция, которая будет вызываться каждый раз при обновлении анимации.
|
|
15
|
+
* Принимает параметр `delta` - время в миллисекундах, прошедшее с первого кадра анимации.
|
|
16
|
+
*/ export function useAnimationFrame(callback, disableAnimation = false) {
|
|
17
|
+
const handleRef = React.useRef(undefined);
|
|
18
|
+
const startTimestampRef = React.useRef(undefined);
|
|
19
|
+
const stableCallback = useStableCallback(callback);
|
|
20
|
+
React.useEffect(()=>{
|
|
21
|
+
if (disableAnimation) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const animate = (timestamp)=>{
|
|
25
|
+
if (startTimestampRef.current === undefined) {
|
|
26
|
+
startTimestampRef.current = timestamp;
|
|
27
|
+
}
|
|
28
|
+
const delta = timestamp - startTimestampRef.current;
|
|
29
|
+
stableCallback(delta);
|
|
30
|
+
handleRef.current = requestAnimationFrame(animate);
|
|
31
|
+
};
|
|
32
|
+
handleRef.current = requestAnimationFrame(animate);
|
|
33
|
+
return ()=>cancelAnimationFrame(handleRef.current);
|
|
34
|
+
}, [
|
|
35
|
+
disableAnimation,
|
|
36
|
+
stableCallback
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=useAnimationFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useAnimationFrame.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useStableCallback } from './useStableCallback';\n\n/**\n * Обертка над `requestAnimationFrame`\n *\n * ```ts\n * const animate = React.useCallback((delta: number) => {\n * console.log('Delta:', delta);\n * }, []);\n *\n * useAnimationFrame(animate);\n * ```\n *\n * @param callback Функция, которая будет вызываться каждый раз при обновлении анимации.\n * Принимает параметр `delta` - время в миллисекундах, прошедшее с первого кадра анимации.\n */\nexport function useAnimationFrame(callback: (delta: number) => void, disableAnimation = false) {\n const handleRef = React.useRef<number>(undefined);\n const startTimestampRef = React.useRef<number>(undefined);\n const stableCallback = useStableCallback(callback);\n\n React.useEffect(() => {\n if (disableAnimation) {\n return;\n }\n\n const animate = (timestamp: number) => {\n if (startTimestampRef.current === undefined) {\n startTimestampRef.current = timestamp;\n }\n\n const delta = timestamp - startTimestampRef.current;\n stableCallback(delta);\n\n handleRef.current = requestAnimationFrame(animate);\n };\n\n handleRef.current = requestAnimationFrame(animate);\n return () => cancelAnimationFrame(handleRef.current!);\n }, [disableAnimation, stableCallback]);\n}\n"],"names":["React","useStableCallback","useAnimationFrame","callback","disableAnimation","handleRef","useRef","undefined","startTimestampRef","stableCallback","useEffect","animate","timestamp","current","delta","requestAnimationFrame","cancelAnimationFrame"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ,yBAAsB;AAExD;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASC,kBAAkBC,QAAiC,EAAEC,mBAAmB,KAAK;IAC3F,MAAMC,YAAYL,MAAMM,MAAM,CAASC;IACvC,MAAMC,oBAAoBR,MAAMM,MAAM,CAASC;IAC/C,MAAME,iBAAiBR,kBAAkBE;IAEzCH,MAAMU,SAAS,CAAC;QACd,IAAIN,kBAAkB;YACpB;QACF;QAEA,MAAMO,UAAU,CAACC;YACf,IAAIJ,kBAAkBK,OAAO,KAAKN,WAAW;gBAC3CC,kBAAkBK,OAAO,GAAGD;YAC9B;YAEA,MAAME,QAAQF,YAAYJ,kBAAkBK,OAAO;YACnDJ,eAAeK;YAEfT,UAAUQ,OAAO,GAAGE,sBAAsBJ;QAC5C;QAEAN,UAAUQ,OAAO,GAAGE,sBAAsBJ;QAC1C,OAAO,IAAMK,qBAAqBX,UAAUQ,OAAO;IACrD,GAAG;QAACT;QAAkBK;KAAe;AACvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useAutoFocus.ts"],"sourcesContent":["import type * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\n\nexport function useAutoFocus(\n ref: React.RefObject<HTMLElement | null>,\n autoFocus: boolean | undefined,\n): void {\n useIsomorphicLayoutEffect(() => {\n if (!autoFocus || !ref.current) {\n return;\n }\n\n ref.current.focus();\n }, []);\n}\n"],"names":["useIsomorphicLayoutEffect","useAutoFocus","ref","autoFocus","current","focus"],"mappings":"AACA,SAASA,yBAAyB,QAAQ,sCAAmC;AAE7E,OAAO,SAASC,aACdC,GAAwC,EACxCC,SAA8B;IAE9BH,0BAA0B;QACxB,IAAI,CAACG,aAAa,CAACD,IAAIE,OAAO,EAAE;YAC9B;QACF;QAEAF,IAAIE,OAAO,CAACC,KAAK;IACnB,GAAG
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useAutoFocus.ts"],"sourcesContent":["import type * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\n\nexport function useAutoFocus(\n ref: React.RefObject<HTMLElement | null>,\n autoFocus: boolean | undefined,\n): void {\n useIsomorphicLayoutEffect(() => {\n if (!autoFocus || !ref.current) {\n return;\n }\n\n ref.current.focus();\n }, [autoFocus, ref]);\n}\n"],"names":["useIsomorphicLayoutEffect","useAutoFocus","ref","autoFocus","current","focus"],"mappings":"AACA,SAASA,yBAAyB,QAAQ,sCAAmC;AAE7E,OAAO,SAASC,aACdC,GAAwC,EACxCC,SAA8B;IAE9BH,0BAA0B;QACxB,IAAI,CAACG,aAAa,CAACD,IAAIE,OAAO,EAAE;YAC9B;QACF;QAEAF,IAAIE,OAAO,CAACC,KAAK;IACnB,GAAG;QAACF;QAAWD;KAAI;AACrB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ColorSchemeContext } from "../components/ConfigProvider/ConfigProviderSubContexts.js";
|
|
2
3
|
import { DEFAULT_COLOR_SCHEME } from "../lib/colorScheme/index.js";
|
|
3
4
|
export function useColorScheme() {
|
|
4
|
-
|
|
5
|
-
return colorScheme ?? DEFAULT_COLOR_SCHEME;
|
|
5
|
+
return React.useContext(ColorSchemeContext) ?? DEFAULT_COLOR_SCHEME;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
//# sourceMappingURL=useColorScheme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useColorScheme.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useColorScheme.ts"],"sourcesContent":["import * as React from 'react';\nimport { ColorSchemeContext } from '../components/ConfigProvider/ConfigProviderSubContexts';\nimport { type ColorSchemeType, DEFAULT_COLOR_SCHEME } from '../lib/colorScheme';\n\nexport function useColorScheme(): ColorSchemeType {\n return React.useContext(ColorSchemeContext) ?? DEFAULT_COLOR_SCHEME;\n}\n"],"names":["React","ColorSchemeContext","DEFAULT_COLOR_SCHEME","useColorScheme","useContext"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ,4DAAyD;AAC5F,SAA+BC,oBAAoB,QAAQ,8BAAqB;AAEhF,OAAO,SAASC;IACd,OAAOH,MAAMI,UAAU,CAACH,uBAAuBC;AACjD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { DirectionContext } from "../components/ConfigProvider/ConfigProviderSubContexts.js";
|
|
2
3
|
export function useConfigDirection() {
|
|
3
|
-
|
|
4
|
-
return direction || 'ltr';
|
|
4
|
+
return React.useContext(DirectionContext) || 'ltr';
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
//# sourceMappingURL=useConfigDirection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useConfigDirection.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useConfigDirection.ts"],"sourcesContent":["import * as React from 'react';\nimport { DirectionContext } from '../components/ConfigProvider/ConfigProviderSubContexts';\nimport type { Direction } from '../lib/direction';\n\nexport function useConfigDirection(): Direction {\n return React.useContext(DirectionContext) || 'ltr';\n}\n"],"names":["React","DirectionContext","useConfigDirection","useContext"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gBAAgB,QAAQ,4DAAyD;AAG1F,OAAO,SAASC;IACd,OAAOF,MAAMG,UAAU,CAACF,qBAAqB;AAC/C"}
|
|
@@ -3,14 +3,13 @@ import * as React from "react";
|
|
|
3
3
|
import { useDOM } from "../lib/dom.js";
|
|
4
4
|
import { useBooleanState } from "./useBooleanState.js";
|
|
5
5
|
export function useDateInput({ maxElement, refs, autoFocus, disabled, elementsConfig, onClear, onInternalValueChange, getInternalValue, value, onCalendarOpenChanged, accessible }) {
|
|
6
|
-
const { document } = useDOM();
|
|
6
|
+
const { document, window } = useDOM();
|
|
7
7
|
const [open, openCalendar, closeCalendar] = useBooleanState(false);
|
|
8
8
|
const rootRef = React.useRef(null);
|
|
9
9
|
const calendarRef = React.useRef(null);
|
|
10
10
|
const [internalValue, setInternalValue] = React.useState([]);
|
|
11
11
|
const [focusedElement, setFocusedElement] = React.useState(null);
|
|
12
12
|
const isClickedOutsideRef = React.useRef(false);
|
|
13
|
-
const { window } = useDOM();
|
|
14
13
|
const handleRestoreFocus = React.useCallback(()=>{
|
|
15
14
|
// если календарь был закрыт кликом вне календаря
|
|
16
15
|
// то FocusTrap возвращать фокус не должен
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useDateInput.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport * as React from 'react';\nimport { useDOM } from '../lib/dom';\nimport { useBooleanState } from './useBooleanState';\n\nexport interface UseDateInputDependencies<T, D> {\n maxElement: number;\n refs: Array<React.RefObject<T | null>>;\n autoFocus?: boolean | undefined;\n disabled?: boolean | undefined;\n value?: D | null | undefined;\n elementsConfig: (index: number) => {\n length: number;\n min: number;\n max: number;\n };\n onInternalValueChange: (value: string[]) => void;\n getInternalValue: (value?: D | null | undefined) => string[];\n onClear: () => void;\n onCalendarOpenChanged?: ((opened: boolean) => void) | undefined;\n accessible?: boolean | undefined;\n}\n\nexport function useDateInput<T extends HTMLElement, D>({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onClear,\n onInternalValueChange,\n getInternalValue,\n value,\n onCalendarOpenChanged,\n accessible,\n}: UseDateInputDependencies<T, D>): {\n rootRef: React.RefObject<HTMLDivElement | null>;\n calendarRef: React.RefObject<HTMLDivElement | null>;\n open: boolean;\n openCalendar: () => void;\n closeCalendar: () => void;\n toggleCalendar: () => void;\n internalValue: string[];\n focusedElement: number | null;\n setFocusedElement: React.Dispatch<React.SetStateAction<number | null>>;\n handleKeyDown: (e: React.KeyboardEvent<HTMLSpanElement>) => void;\n clear: () => void;\n handleFieldEnter: () => void;\n removeFocusFromField: () => void;\n handleRestoreFocus: () => boolean;\n} {\n const { document } = useDOM();\n const [open, openCalendar, closeCalendar] = useBooleanState(false);\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const calendarRef = React.useRef<HTMLDivElement | null>(null);\n const [internalValue, setInternalValue] = React.useState<string[]>([]);\n const [focusedElement, setFocusedElement] = React.useState<number | null>(null);\n const isClickedOutsideRef = React.useRef(false);\n const { window } = useDOM();\n\n const handleRestoreFocus = React.useCallback(() => {\n // если календарь был закрыт кликом вне календаря\n // то FocusTrap возвращать фокус не должен\n return !isClickedOutsideRef.current;\n }, []);\n\n const _onCalendarClose = useCallback(() => {\n if (open) {\n closeCalendar();\n onCalendarOpenChanged?.(false);\n }\n }, [closeCalendar, onCalendarOpenChanged, open]);\n\n const _onCalendarOpen = useCallback(() => {\n if (!open) {\n openCalendar();\n onCalendarOpenChanged?.(true);\n if (accessible) {\n setFocusedElement(null);\n }\n isClickedOutsideRef.current = false;\n }\n }, [onCalendarOpenChanged, open, openCalendar, accessible]);\n\n const resetFocusedElement = React.useCallback(() => {\n if (focusedElement !== null) {\n setFocusedElement(null);\n window!.getSelection()?.removeAllRanges();\n setInternalValue(getInternalValue(value));\n }\n }, [focusedElement, getInternalValue, value, window]);\n\n const removeFocusFromField = React.useCallback(() => {\n resetFocusedElement();\n _onCalendarClose();\n }, [resetFocusedElement, _onCalendarClose]);\n\n const toggleCalendar = useCallback(() => {\n resetFocusedElement();\n if (open) {\n _onCalendarClose();\n } else {\n _onCalendarOpen();\n }\n }, [resetFocusedElement, open, _onCalendarClose, _onCalendarOpen]);\n\n const handleClickOutside = React.useCallback(\n (e: MouseEvent) => {\n if (\n !rootRef.current?.contains(e.target as Node | null) &&\n !calendarRef.current?.contains(e.target as Node | null)\n ) {\n isClickedOutsideRef.current = true;\n removeFocusFromField();\n }\n },\n [removeFocusFromField],\n );\n\n const selectFirst = React.useCallback(() => {\n if (focusedElement !== null) {\n return;\n }\n\n setFocusedElement(0);\n }, [focusedElement]);\n\n React.useEffect(() => {\n document!.addEventListener('click', handleClickOutside, {\n capture: true,\n });\n\n return () =>\n document!.removeEventListener('click', handleClickOutside, {\n capture: true,\n });\n }, [document, handleClickOutside]);\n\n React.useEffect(() => {\n setInternalValue(getInternalValue(value));\n }, [getInternalValue, value]);\n\n React.useEffect(() => {\n if (autoFocus) {\n selectFirst();\n }\n }, [autoFocus, selectFirst]);\n\n React.useEffect(() => {\n if (disabled || focusedElement === null) {\n return;\n }\n\n const range = window!.document.createRange();\n\n let element = refs[focusedElement].current;\n\n let timerId: ReturnType<typeof setTimeout>;\n if (element) {\n element.focus();\n if (!accessible) {\n _onCalendarOpen();\n }\n range.selectNodeContents(element as Node);\n\n // Fix для Firefox: setTimeout нужен чтобы отложить range selection на\n // какое-то время, иначе, при фокусе на InputLike\n // извне, контент визуально не будет выбран\n timerId = setTimeout(() => {\n const selection = window!.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }, 0);\n }\n\n return () => {\n clearTimeout(timerId);\n };\n }, [disabled, focusedElement, refs, window, _onCalendarOpen, accessible]);\n\n const clear = React.useCallback(() => {\n onClear?.();\n selectFirst();\n }, [onClear, selectFirst]);\n\n const handleFieldEnter = React.useCallback(() => {\n selectFirst();\n }, [selectFirst]);\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (focusedElement === null) {\n return;\n }\n\n const _value = [...internalValue];\n const config = elementsConfig(focusedElement);\n\n if (/^\\d+$/.test(e.key)) {\n if (_value[focusedElement].length >= config.length) {\n _value[focusedElement] = e.key;\n } else {\n _value[focusedElement] += e.key;\n if (_value[focusedElement].length >= config.length && focusedElement < maxElement) {\n setFocusedElement(focusedElement + 1);\n }\n }\n } else if (e.key === 'Backspace') {\n if (!_value[focusedElement]) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else {\n _value[focusedElement] = _value[focusedElement].slice(0, -1);\n }\n } else if (e.key === 'ArrowDown' || e.key === 'Down') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue <= config.min ? config.max : currentValue - 1,\n ).padStart(config.length, '0');\n } else if (e.key === 'ArrowUp' || e.key === 'Up') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue >= config.max ? config.min : currentValue + 1,\n ).padStart(config.length, '0');\n } else if (e.key === 'ArrowLeft' || e.key === 'Left' || (e.key === 'Tab' && e.shiftKey)) {\n if (focusedElement <= 0) {\n if (e.key === 'Tab') {\n removeFocusFromField();\n }\n return;\n }\n setFocusedElement(focusedElement - 1);\n } else if (e.key === 'ArrowRight' || e.key === 'Right' || e.key === 'Tab') {\n if (focusedElement >= maxElement) {\n if (e.key === 'Tab') {\n removeFocusFromField();\n }\n return;\n }\n\n setFocusedElement(focusedElement + 1);\n } else if (e.key === 'Delete' || e.key === 'Del') {\n _value[focusedElement] = '';\n } else if (e.key === ' ') {\n e.preventDefault();\n _onCalendarOpen();\n return;\n } else {\n return;\n }\n\n e.preventDefault();\n setInternalValue(_value);\n onInternalValueChange(_value);\n },\n [\n _onCalendarOpen,\n removeFocusFromField,\n elementsConfig,\n focusedElement,\n internalValue,\n maxElement,\n onInternalValueChange,\n ],\n );\n\n return {\n rootRef,\n calendarRef,\n open,\n openCalendar: _onCalendarOpen,\n closeCalendar: _onCalendarClose,\n toggleCalendar,\n internalValue,\n focusedElement,\n setFocusedElement,\n handleKeyDown,\n clear,\n handleFieldEnter,\n removeFocusFromField,\n handleRestoreFocus,\n };\n}\n"],"names":["useCallback","React","useDOM","useBooleanState","useDateInput","maxElement","refs","autoFocus","disabled","elementsConfig","onClear","onInternalValueChange","getInternalValue","value","onCalendarOpenChanged","accessible","document","open","openCalendar","closeCalendar","rootRef","useRef","calendarRef","internalValue","setInternalValue","useState","focusedElement","setFocusedElement","isClickedOutsideRef","window","handleRestoreFocus","current","_onCalendarClose","_onCalendarOpen","resetFocusedElement","getSelection","removeAllRanges","removeFocusFromField","toggleCalendar","handleClickOutside","e","contains","target","selectFirst","useEffect","addEventListener","capture","removeEventListener","range","createRange","element","timerId","focus","selectNodeContents","setTimeout","selection","addRange","clearTimeout","clear","handleFieldEnter","handleKeyDown","_value","config","test","key","length","slice","currentValue","Number","String","min","max","padStart","shiftKey","preventDefault"],"mappings":"AAAA,SAASA,WAAW,QAAQ,QAAQ;AACpC,YAAYC,WAAW,QAAQ;AAC/B,SAASC,MAAM,QAAQ,gBAAa;AACpC,SAASC,eAAe,QAAQ,uBAAoB;AAoBpD,OAAO,SAASC,aAAuC,EACrDC,UAAU,EACVC,IAAI,EACJC,SAAS,EACTC,QAAQ,EACRC,cAAc,EACdC,OAAO,EACPC,qBAAqB,EACrBC,gBAAgB,EAChBC,KAAK,EACLC,qBAAqB,EACrBC,UAAU,EACqB;IAgB/B,MAAM,EAAEC,QAAQ,EAAE,GAAGd;IACrB,MAAM,CAACe,MAAMC,cAAcC,cAAc,GAAGhB,gBAAgB;IAC5D,MAAMiB,UAAUnB,MAAMoB,MAAM,CAAwB;IACpD,MAAMC,cAAcrB,MAAMoB,MAAM,CAAwB;IACxD,MAAM,CAACE,eAAeC,iBAAiB,GAAGvB,MAAMwB,QAAQ,CAAW,EAAE;IACrE,MAAM,CAACC,gBAAgBC,kBAAkB,GAAG1B,MAAMwB,QAAQ,CAAgB;IAC1E,MAAMG,sBAAsB3B,MAAMoB,MAAM,CAAC;IACzC,MAAM,EAAEQ,MAAM,EAAE,GAAG3B;IAEnB,MAAM4B,qBAAqB7B,MAAMD,WAAW,CAAC;QAC3C,iDAAiD;QACjD,0CAA0C;QAC1C,OAAO,CAAC4B,oBAAoBG,OAAO;IACrC,GAAG,EAAE;IAEL,MAAMC,mBAAmBhC,YAAY;QACnC,IAAIiB,MAAM;YACRE;YACAL,wBAAwB;QAC1B;IACF,GAAG;QAACK;QAAeL;QAAuBG;KAAK;IAE/C,MAAMgB,kBAAkBjC,YAAY;QAClC,IAAI,CAACiB,MAAM;YACTC;YACAJ,wBAAwB;YACxB,IAAIC,YAAY;gBACdY,kBAAkB;YACpB;YACAC,oBAAoBG,OAAO,GAAG;QAChC;IACF,GAAG;QAACjB;QAAuBG;QAAMC;QAAcH;KAAW;IAE1D,MAAMmB,sBAAsBjC,MAAMD,WAAW,CAAC;QAC5C,IAAI0B,mBAAmB,MAAM;YAC3BC,kBAAkB;YAClBE,OAAQM,YAAY,IAAIC;YACxBZ,iBAAiBZ,iBAAiBC;QACpC;IACF,GAAG;QAACa;QAAgBd;QAAkBC;QAAOgB;KAAO;IAEpD,MAAMQ,uBAAuBpC,MAAMD,WAAW,CAAC;QAC7CkC;QACAF;IACF,GAAG;QAACE;QAAqBF;KAAiB;IAE1C,MAAMM,iBAAiBtC,YAAY;QACjCkC;QACA,IAAIjB,MAAM;YACRe;QACF,OAAO;YACLC;QACF;IACF,GAAG;QAACC;QAAqBjB;QAAMe;QAAkBC;KAAgB;IAEjE,MAAMM,qBAAqBtC,MAAMD,WAAW,CAC1C,CAACwC;QACC,IACE,CAACpB,QAAQW,OAAO,EAAEU,SAASD,EAAEE,MAAM,KACnC,CAACpB,YAAYS,OAAO,EAAEU,SAASD,EAAEE,MAAM,GACvC;YACAd,oBAAoBG,OAAO,GAAG;YAC9BM;QACF;IACF,GACA;QAACA;KAAqB;IAGxB,MAAMM,cAAc1C,MAAMD,WAAW,CAAC;QACpC,IAAI0B,mBAAmB,MAAM;YAC3B;QACF;QAEAC,kBAAkB;IACpB,GAAG;QAACD;KAAe;IAEnBzB,MAAM2C,SAAS,CAAC;QACd5B,SAAU6B,gBAAgB,CAAC,SAASN,oBAAoB;YACtDO,SAAS;QACX;QAEA,OAAO,IACL9B,SAAU+B,mBAAmB,CAAC,SAASR,oBAAoB;gBACzDO,SAAS;YACX;IACJ,GAAG;QAAC9B;QAAUuB;KAAmB;IAEjCtC,MAAM2C,SAAS,CAAC;QACdpB,iBAAiBZ,iBAAiBC;IACpC,GAAG;QAACD;QAAkBC;KAAM;IAE5BZ,MAAM2C,SAAS,CAAC;QACd,IAAIrC,WAAW;YACboC;QACF;IACF,GAAG;QAACpC;QAAWoC;KAAY;IAE3B1C,MAAM2C,SAAS,CAAC;QACd,IAAIpC,YAAYkB,mBAAmB,MAAM;YACvC;QACF;QAEA,MAAMsB,QAAQnB,OAAQb,QAAQ,CAACiC,WAAW;QAE1C,IAAIC,UAAU5C,IAAI,CAACoB,eAAe,CAACK,OAAO;QAE1C,IAAIoB;QACJ,IAAID,SAAS;YACXA,QAAQE,KAAK;YACb,IAAI,CAACrC,YAAY;gBACfkB;YACF;YACAe,MAAMK,kBAAkB,CAACH;YAEzB,sEAAsE;YACtE,iDAAiD;YACjD,2CAA2C;YAC3CC,UAAUG,WAAW;gBACnB,MAAMC,YAAY1B,OAAQM,YAAY;gBACtCoB,WAAWnB;gBACXmB,WAAWC,SAASR;YACtB,GAAG;QACL;QAEA,OAAO;YACLS,aAAaN;QACf;IACF,GAAG;QAAC3C;QAAUkB;QAAgBpB;QAAMuB;QAAQI;QAAiBlB;KAAW;IAExE,MAAM2C,QAAQzD,MAAMD,WAAW,CAAC;QAC9BU;QACAiC;IACF,GAAG;QAACjC;QAASiC;KAAY;IAEzB,MAAMgB,mBAAmB1D,MAAMD,WAAW,CAAC;QACzC2C;IACF,GAAG;QAACA;KAAY;IAEhB,MAAMiB,gBAAgB3D,MAAMD,WAAW,CACrC,CAACwC;QACC,IAAId,mBAAmB,MAAM;YAC3B;QACF;QAEA,MAAMmC,SAAS;eAAItC;SAAc;QACjC,MAAMuC,SAASrD,eAAeiB;QAE9B,IAAI,QAAQqC,IAAI,CAACvB,EAAEwB,GAAG,GAAG;YACvB,IAAIH,MAAM,CAACnC,eAAe,CAACuC,MAAM,IAAIH,OAAOG,MAAM,EAAE;gBAClDJ,MAAM,CAACnC,eAAe,GAAGc,EAAEwB,GAAG;YAChC,OAAO;gBACLH,MAAM,CAACnC,eAAe,IAAIc,EAAEwB,GAAG;gBAC/B,IAAIH,MAAM,CAACnC,eAAe,CAACuC,MAAM,IAAIH,OAAOG,MAAM,IAAIvC,iBAAiBrB,YAAY;oBACjFsB,kBAAkBD,iBAAiB;gBACrC;YACF;QACF,OAAO,IAAIc,EAAEwB,GAAG,KAAK,aAAa;YAChC,IAAI,CAACH,MAAM,CAACnC,eAAe,EAAE;gBAC3BC,kBAAkBD,kBAAkB,IAAIrB,aAAaqB,iBAAiB;YACxE,OAAO;gBACLmC,MAAM,CAACnC,eAAe,GAAGmC,MAAM,CAACnC,eAAe,CAACwC,KAAK,CAAC,GAAG,CAAC;YAC5D;QACF,OAAO,IAAI1B,EAAEwB,GAAG,KAAK,eAAexB,EAAEwB,GAAG,KAAK,QAAQ;YACpD,IAAIG,eAAeC,OAAOP,MAAM,CAACnC,eAAe;YAChDmC,MAAM,CAACnC,eAAe,GAAG2C,OACvBF,gBAAgBL,OAAOQ,GAAG,GAAGR,OAAOS,GAAG,GAAGJ,eAAe,GACzDK,QAAQ,CAACV,OAAOG,MAAM,EAAE;QAC5B,OAAO,IAAIzB,EAAEwB,GAAG,KAAK,aAAaxB,EAAEwB,GAAG,KAAK,MAAM;YAChD,IAAIG,eAAeC,OAAOP,MAAM,CAACnC,eAAe;YAChDmC,MAAM,CAACnC,eAAe,GAAG2C,OACvBF,gBAAgBL,OAAOS,GAAG,GAAGT,OAAOQ,GAAG,GAAGH,eAAe,GACzDK,QAAQ,CAACV,OAAOG,MAAM,EAAE;QAC5B,OAAO,IAAIzB,EAAEwB,GAAG,KAAK,eAAexB,EAAEwB,GAAG,KAAK,UAAWxB,EAAEwB,GAAG,KAAK,SAASxB,EAAEiC,QAAQ,EAAG;YACvF,IAAI/C,kBAAkB,GAAG;gBACvB,IAAIc,EAAEwB,GAAG,KAAK,OAAO;oBACnB3B;gBACF;gBACA;YACF;YACAV,kBAAkBD,iBAAiB;QACrC,OAAO,IAAIc,EAAEwB,GAAG,KAAK,gBAAgBxB,EAAEwB,GAAG,KAAK,WAAWxB,EAAEwB,GAAG,KAAK,OAAO;YACzE,IAAItC,kBAAkBrB,YAAY;gBAChC,IAAImC,EAAEwB,GAAG,KAAK,OAAO;oBACnB3B;gBACF;gBACA;YACF;YAEAV,kBAAkBD,iBAAiB;QACrC,OAAO,IAAIc,EAAEwB,GAAG,KAAK,YAAYxB,EAAEwB,GAAG,KAAK,OAAO;YAChDH,MAAM,CAACnC,eAAe,GAAG;QAC3B,OAAO,IAAIc,EAAEwB,GAAG,KAAK,KAAK;YACxBxB,EAAEkC,cAAc;YAChBzC;YACA;QACF,OAAO;YACL;QACF;QAEAO,EAAEkC,cAAc;QAChBlD,iBAAiBqC;QACjBlD,sBAAsBkD;IACxB,GACA;QACE5B;QACAI;QACA5B;QACAiB;QACAH;QACAlB;QACAM;KACD;IAGH,OAAO;QACLS;QACAE;QACAL;QACAC,cAAce;QACdd,eAAea;QACfM;QACAf;QACAG;QACAC;QACAiC;QACAF;QACAC;QACAtB;QACAP;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useDateInput.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport * as React from 'react';\nimport { useDOM } from '../lib/dom';\nimport { useBooleanState } from './useBooleanState';\n\nexport interface UseDateInputDependencies<T, D> {\n maxElement: number;\n refs: Array<React.RefObject<T | null>>;\n autoFocus?: boolean | undefined;\n disabled?: boolean | undefined;\n value?: D | null | undefined;\n elementsConfig: (index: number) => {\n length: number;\n min: number;\n max: number;\n };\n onInternalValueChange: (value: string[]) => void;\n getInternalValue: (value?: D | null | undefined) => string[];\n onClear: () => void;\n onCalendarOpenChanged?: ((opened: boolean) => void) | undefined;\n accessible?: boolean | undefined;\n}\n\nexport function useDateInput<T extends HTMLElement, D>({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onClear,\n onInternalValueChange,\n getInternalValue,\n value,\n onCalendarOpenChanged,\n accessible,\n}: UseDateInputDependencies<T, D>): {\n rootRef: React.RefObject<HTMLDivElement | null>;\n calendarRef: React.RefObject<HTMLDivElement | null>;\n open: boolean;\n openCalendar: () => void;\n closeCalendar: () => void;\n toggleCalendar: () => void;\n internalValue: string[];\n focusedElement: number | null;\n setFocusedElement: React.Dispatch<React.SetStateAction<number | null>>;\n handleKeyDown: (e: React.KeyboardEvent<HTMLSpanElement>) => void;\n clear: () => void;\n handleFieldEnter: () => void;\n removeFocusFromField: () => void;\n handleRestoreFocus: () => boolean;\n} {\n const { document, window } = useDOM();\n const [open, openCalendar, closeCalendar] = useBooleanState(false);\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const calendarRef = React.useRef<HTMLDivElement | null>(null);\n const [internalValue, setInternalValue] = React.useState<string[]>([]);\n const [focusedElement, setFocusedElement] = React.useState<number | null>(null);\n const isClickedOutsideRef = React.useRef(false);\n\n const handleRestoreFocus = React.useCallback(() => {\n // если календарь был закрыт кликом вне календаря\n // то FocusTrap возвращать фокус не должен\n return !isClickedOutsideRef.current;\n }, []);\n\n const _onCalendarClose = useCallback(() => {\n if (open) {\n closeCalendar();\n onCalendarOpenChanged?.(false);\n }\n }, [closeCalendar, onCalendarOpenChanged, open]);\n\n const _onCalendarOpen = useCallback(() => {\n if (!open) {\n openCalendar();\n onCalendarOpenChanged?.(true);\n if (accessible) {\n setFocusedElement(null);\n }\n isClickedOutsideRef.current = false;\n }\n }, [onCalendarOpenChanged, open, openCalendar, accessible]);\n\n const resetFocusedElement = React.useCallback(() => {\n if (focusedElement !== null) {\n setFocusedElement(null);\n window!.getSelection()?.removeAllRanges();\n setInternalValue(getInternalValue(value));\n }\n }, [focusedElement, getInternalValue, value, window]);\n\n const removeFocusFromField = React.useCallback(() => {\n resetFocusedElement();\n _onCalendarClose();\n }, [resetFocusedElement, _onCalendarClose]);\n\n const toggleCalendar = useCallback(() => {\n resetFocusedElement();\n if (open) {\n _onCalendarClose();\n } else {\n _onCalendarOpen();\n }\n }, [resetFocusedElement, open, _onCalendarClose, _onCalendarOpen]);\n\n const handleClickOutside = React.useCallback(\n (e: MouseEvent) => {\n if (\n !rootRef.current?.contains(e.target as Node | null) &&\n !calendarRef.current?.contains(e.target as Node | null)\n ) {\n isClickedOutsideRef.current = true;\n removeFocusFromField();\n }\n },\n [removeFocusFromField],\n );\n\n const selectFirst = React.useCallback(() => {\n if (focusedElement !== null) {\n return;\n }\n\n setFocusedElement(0);\n }, [focusedElement]);\n\n React.useEffect(() => {\n document!.addEventListener('click', handleClickOutside, {\n capture: true,\n });\n\n return () =>\n document!.removeEventListener('click', handleClickOutside, {\n capture: true,\n });\n }, [document, handleClickOutside]);\n\n React.useEffect(() => {\n setInternalValue(getInternalValue(value));\n }, [getInternalValue, value]);\n\n React.useEffect(() => {\n if (autoFocus) {\n selectFirst();\n }\n }, [autoFocus, selectFirst]);\n\n React.useEffect(() => {\n if (disabled || focusedElement === null) {\n return;\n }\n\n const range = window!.document.createRange();\n\n let element = refs[focusedElement].current;\n\n let timerId: ReturnType<typeof setTimeout>;\n if (element) {\n element.focus();\n if (!accessible) {\n _onCalendarOpen();\n }\n range.selectNodeContents(element as Node);\n\n // Fix для Firefox: setTimeout нужен чтобы отложить range selection на\n // какое-то время, иначе, при фокусе на InputLike\n // извне, контент визуально не будет выбран\n timerId = setTimeout(() => {\n const selection = window!.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }, 0);\n }\n\n return () => {\n clearTimeout(timerId);\n };\n }, [disabled, focusedElement, refs, window, _onCalendarOpen, accessible]);\n\n const clear = React.useCallback(() => {\n onClear?.();\n selectFirst();\n }, [onClear, selectFirst]);\n\n const handleFieldEnter = React.useCallback(() => {\n selectFirst();\n }, [selectFirst]);\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (focusedElement === null) {\n return;\n }\n\n const _value = [...internalValue];\n const config = elementsConfig(focusedElement);\n\n if (/^\\d+$/.test(e.key)) {\n if (_value[focusedElement].length >= config.length) {\n _value[focusedElement] = e.key;\n } else {\n _value[focusedElement] += e.key;\n if (_value[focusedElement].length >= config.length && focusedElement < maxElement) {\n setFocusedElement(focusedElement + 1);\n }\n }\n } else if (e.key === 'Backspace') {\n if (!_value[focusedElement]) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else {\n _value[focusedElement] = _value[focusedElement].slice(0, -1);\n }\n } else if (e.key === 'ArrowDown' || e.key === 'Down') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue <= config.min ? config.max : currentValue - 1,\n ).padStart(config.length, '0');\n } else if (e.key === 'ArrowUp' || e.key === 'Up') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue >= config.max ? config.min : currentValue + 1,\n ).padStart(config.length, '0');\n } else if (e.key === 'ArrowLeft' || e.key === 'Left' || (e.key === 'Tab' && e.shiftKey)) {\n if (focusedElement <= 0) {\n if (e.key === 'Tab') {\n removeFocusFromField();\n }\n return;\n }\n setFocusedElement(focusedElement - 1);\n } else if (e.key === 'ArrowRight' || e.key === 'Right' || e.key === 'Tab') {\n if (focusedElement >= maxElement) {\n if (e.key === 'Tab') {\n removeFocusFromField();\n }\n return;\n }\n\n setFocusedElement(focusedElement + 1);\n } else if (e.key === 'Delete' || e.key === 'Del') {\n _value[focusedElement] = '';\n } else if (e.key === ' ') {\n e.preventDefault();\n _onCalendarOpen();\n return;\n } else {\n return;\n }\n\n e.preventDefault();\n setInternalValue(_value);\n onInternalValueChange(_value);\n },\n [\n _onCalendarOpen,\n removeFocusFromField,\n elementsConfig,\n focusedElement,\n internalValue,\n maxElement,\n onInternalValueChange,\n ],\n );\n\n return {\n rootRef,\n calendarRef,\n open,\n openCalendar: _onCalendarOpen,\n closeCalendar: _onCalendarClose,\n toggleCalendar,\n internalValue,\n focusedElement,\n setFocusedElement,\n handleKeyDown,\n clear,\n handleFieldEnter,\n removeFocusFromField,\n handleRestoreFocus,\n };\n}\n"],"names":["useCallback","React","useDOM","useBooleanState","useDateInput","maxElement","refs","autoFocus","disabled","elementsConfig","onClear","onInternalValueChange","getInternalValue","value","onCalendarOpenChanged","accessible","document","window","open","openCalendar","closeCalendar","rootRef","useRef","calendarRef","internalValue","setInternalValue","useState","focusedElement","setFocusedElement","isClickedOutsideRef","handleRestoreFocus","current","_onCalendarClose","_onCalendarOpen","resetFocusedElement","getSelection","removeAllRanges","removeFocusFromField","toggleCalendar","handleClickOutside","e","contains","target","selectFirst","useEffect","addEventListener","capture","removeEventListener","range","createRange","element","timerId","focus","selectNodeContents","setTimeout","selection","addRange","clearTimeout","clear","handleFieldEnter","handleKeyDown","_value","config","test","key","length","slice","currentValue","Number","String","min","max","padStart","shiftKey","preventDefault"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/hooks/useFocusTrap/useAutoFocus.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { contains, getActiveElementByAnotherElement } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport type { RequiredFields } from '../../types';\nimport type { UseFocusTrapProps } from './useFocusTrap.tsx';\n\nexport const useAutoFocus = (\n ref: RefObject<HTMLElement | null>,\n {\n autoFocus,\n disabled,\n mount,\n autoFocusDelay,\n focusFirst,\n }: RequiredFields<UseFocusTrapProps, 'autoFocus' | 'disabled' | 'mount' | 'autoFocusDelay'> & {\n focusFirst: () => void;\n },\n) => {\n useIsomorphicLayoutEffect(\n function handleAutoFocus() {\n if (!ref.current || !autoFocus || disabled || !mount) {\n return;\n }\n\n const timeoutId = setTimeout(() => {\n if (!ref.current) {\n return;\n }\n\n const activeElement = getActiveElementByAnotherElement(ref.current);\n if (!contains(ref.current, activeElement)) {\n if (autoFocus === 'root') {\n ref.current.focus();\n } else {\n focusFirst();\n }\n }\n }, autoFocusDelay);\n\n return () => clearTimeout(timeoutId);\n },\n [autoFocus, autoFocusDelay, disabled, mount, focusFirst],\n );\n};\n"],"names":["contains","getActiveElementByAnotherElement","useIsomorphicLayoutEffect","useAutoFocus","ref","autoFocus","disabled","mount","autoFocusDelay","focusFirst","handleAutoFocus","current","timeoutId","setTimeout","activeElement","focus","clearTimeout"],"mappings":"AACA,SAASA,QAAQ,EAAEC,gCAAgC,QAAQ,mBAAgB;AAC3E,SAASC,yBAAyB,QAAQ,yCAAsC;AAIhF,OAAO,MAAMC,eAAe,CAC1BC,KACA,EACEC,SAAS,EACTC,QAAQ,EACRC,KAAK,EACLC,cAAc,EACdC,UAAU,EAGX;IAEDP,0BACE,SAASQ;QACP,IAAI,CAACN,IAAIO,OAAO,IAAI,CAACN,aAAaC,YAAY,CAACC,OAAO;YACpD;QACF;QAEA,MAAMK,YAAYC,WAAW;YAC3B,IAAI,CAACT,IAAIO,OAAO,EAAE;gBAChB;YACF;YAEA,MAAMG,gBAAgBb,iCAAiCG,IAAIO,OAAO;YAClE,IAAI,CAACX,SAASI,IAAIO,OAAO,EAAEG,gBAAgB;gBACzC,IAAIT,cAAc,QAAQ;oBACxBD,IAAIO,OAAO,CAACI,KAAK;gBACnB,OAAO;oBACLN;gBACF;YACF;QACF,GAAGD;QAEH,OAAO,IAAMQ,aAAaJ;IAC5B,GACA;
|
|
1
|
+
{"version":3,"sources":["../../../../src/hooks/useFocusTrap/useAutoFocus.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { contains, getActiveElementByAnotherElement } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport type { RequiredFields } from '../../types';\nimport type { UseFocusTrapProps } from './useFocusTrap.tsx';\n\nexport const useAutoFocus = (\n ref: RefObject<HTMLElement | null>,\n {\n autoFocus,\n disabled,\n mount,\n autoFocusDelay,\n focusFirst,\n }: RequiredFields<UseFocusTrapProps, 'autoFocus' | 'disabled' | 'mount' | 'autoFocusDelay'> & {\n focusFirst: () => void;\n },\n) => {\n useIsomorphicLayoutEffect(\n function handleAutoFocus() {\n if (!ref.current || !autoFocus || disabled || !mount) {\n return;\n }\n\n const timeoutId = setTimeout(() => {\n if (!ref.current) {\n return;\n }\n\n const activeElement = getActiveElementByAnotherElement(ref.current);\n if (!contains(ref.current, activeElement)) {\n if (autoFocus === 'root') {\n ref.current.focus();\n } else {\n focusFirst();\n }\n }\n }, autoFocusDelay);\n\n return () => clearTimeout(timeoutId);\n },\n [ref, autoFocus, autoFocusDelay, disabled, mount, focusFirst],\n );\n};\n"],"names":["contains","getActiveElementByAnotherElement","useIsomorphicLayoutEffect","useAutoFocus","ref","autoFocus","disabled","mount","autoFocusDelay","focusFirst","handleAutoFocus","current","timeoutId","setTimeout","activeElement","focus","clearTimeout"],"mappings":"AACA,SAASA,QAAQ,EAAEC,gCAAgC,QAAQ,mBAAgB;AAC3E,SAASC,yBAAyB,QAAQ,yCAAsC;AAIhF,OAAO,MAAMC,eAAe,CAC1BC,KACA,EACEC,SAAS,EACTC,QAAQ,EACRC,KAAK,EACLC,cAAc,EACdC,UAAU,EAGX;IAEDP,0BACE,SAASQ;QACP,IAAI,CAACN,IAAIO,OAAO,IAAI,CAACN,aAAaC,YAAY,CAACC,OAAO;YACpD;QACF;QAEA,MAAMK,YAAYC,WAAW;YAC3B,IAAI,CAACT,IAAIO,OAAO,EAAE;gBAChB;YACF;YAEA,MAAMG,gBAAgBb,iCAAiCG,IAAIO,OAAO;YAClE,IAAI,CAACX,SAASI,IAAIO,OAAO,EAAEG,gBAAgB;gBACzC,IAAIT,cAAc,QAAQ;oBACxBD,IAAIO,OAAO,CAACI,KAAK;gBACnB,OAAO;oBACLN;gBACF;YACF;QACF,GAAGD;QAEH,OAAO,IAAMQ,aAAaJ;IAC5B,GACA;QAACR;QAAKC;QAAWG;QAAgBF;QAAUC;QAAOE;KAAW;AAEjE,EAAE"}
|