@vkontakte/vkui 8.1.3 → 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/OnboardingTooltip/OnboardingTooltip.js +2 -1
- 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.js +1 -1
- 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 +14 -5
- 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/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/OnboardingTooltip/OnboardingTooltip.js +2 -1
- 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 +1 -1
- 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 +14 -5
- 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/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/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/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/OnboardingTooltip/OnboardingTooltip.tsx +1 -1
- package/src/components/PanelHeader/PanelHeader.tsx +1 -1
- package/src/components/Popper/Popper.tsx +1 -1
- package/src/components/PullToRefresh/PullToRefresh.module.css +1 -1
- package/src/components/PullToRefresh/PullToRefresh.tsx +10 -3
- package/src/components/Root/Root.tsx +10 -7
- 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/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/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/src/components/WriteBar/WriteBar.module.css +0 -116
- package/src/components/WriteBar/WriteBar.module.css.d.ts.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type FocusEvent, useCallback,
|
|
2
|
-
import {
|
|
1
|
+
import { type FocusEvent, useCallback, useState } from 'react';
|
|
2
|
+
import { useKeyboardInputTracker } from './useKeyboardInputTracker';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Определяет фокус элемента, когда его наличие необходимо обозначить визуально.
|
|
@@ -14,29 +14,21 @@ export function useFocusVisible(): {
|
|
|
14
14
|
onFocus: (event: FocusEvent<HTMLElement>) => void;
|
|
15
15
|
onBlur: (event: FocusEvent<HTMLElement>) => void;
|
|
16
16
|
} {
|
|
17
|
-
const [
|
|
18
|
-
|
|
19
|
-
// FIXME: Избавиться от чека контекста, так как без AppRoot не работает фокус
|
|
20
|
-
const withKeyboardInputCheck = true;
|
|
21
|
-
const { keyboardInput } = useContext(AppRootContext);
|
|
17
|
+
const [focusVisible, setFocusVisible] = useState(false);
|
|
18
|
+
const keyboardInputRef = useKeyboardInputTracker();
|
|
22
19
|
|
|
23
20
|
const onFocus = useCallback(
|
|
24
21
|
(event: FocusEvent<HTMLElement>) => {
|
|
25
22
|
event.stopPropagation();
|
|
26
|
-
|
|
27
|
-
},
|
|
28
|
-
[setIsFocused],
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
const onBlur = useCallback(
|
|
32
|
-
(event: FocusEvent<HTMLElement>) => {
|
|
33
|
-
event.stopPropagation();
|
|
34
|
-
setIsFocused(false);
|
|
23
|
+
setFocusVisible(Boolean(keyboardInputRef.current));
|
|
35
24
|
},
|
|
36
|
-
[
|
|
25
|
+
[keyboardInputRef],
|
|
37
26
|
);
|
|
38
27
|
|
|
39
|
-
const
|
|
28
|
+
const onBlur = useCallback((event: FocusEvent<HTMLElement>) => {
|
|
29
|
+
event.stopPropagation();
|
|
30
|
+
setFocusVisible(false);
|
|
31
|
+
}, []);
|
|
40
32
|
|
|
41
33
|
return {
|
|
42
34
|
focusVisible,
|
|
@@ -1,36 +1,39 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { useDOM } from '../lib/dom';
|
|
3
2
|
import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
|
|
4
3
|
|
|
5
4
|
const isFocusWithin = <T extends Element>(ref: T, document: Document) =>
|
|
6
5
|
ref.contains(document.activeElement);
|
|
7
6
|
|
|
8
7
|
export function useFocusWithin(ref: React.RefObject<HTMLElement | null>): boolean {
|
|
9
|
-
const { document } = useDOM();
|
|
10
8
|
const [focusWithin, setFocusWithin] = React.useState<boolean>(false);
|
|
11
9
|
|
|
12
|
-
useIsomorphicLayoutEffect(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const handleFocusOrBlurEvents = () => {
|
|
19
|
-
if (ref.current) {
|
|
20
|
-
setFocusWithin(isFocusWithin(ref.current, document));
|
|
10
|
+
useIsomorphicLayoutEffect(
|
|
11
|
+
function handleAutoFocus() {
|
|
12
|
+
/* istanbul ignore if: невозможный кейс, т.к. в SSR эффекты не вызываются. Проверка на будущее, если вдруг эффект будет вызываться. */
|
|
13
|
+
if (!ref.current) {
|
|
14
|
+
return;
|
|
21
15
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
16
|
+
|
|
17
|
+
const document = ref.current.ownerDocument;
|
|
18
|
+
|
|
19
|
+
const handleFocusOrBlurEvents = () => {
|
|
20
|
+
if (ref.current) {
|
|
21
|
+
setFocusWithin(isFocusWithin(ref.current, document));
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// Вызываем в начале, чтобы проверить autoFocus
|
|
26
|
+
void handleFocusOrBlurEvents();
|
|
27
|
+
|
|
28
|
+
document.addEventListener('focus', handleFocusOrBlurEvents, { capture: true });
|
|
29
|
+
document.addEventListener('blur', handleFocusOrBlurEvents, { capture: true });
|
|
30
|
+
return () => {
|
|
31
|
+
document.removeEventListener('focus', handleFocusOrBlurEvents, { capture: true });
|
|
32
|
+
document.removeEventListener('blur', handleFocusOrBlurEvents, { capture: true });
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
[ref],
|
|
36
|
+
);
|
|
34
37
|
|
|
35
38
|
return focusWithin;
|
|
36
39
|
}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
import { useRef } from 'react';
|
|
2
1
|
import { Keys, pressedKey } from '../lib/accessibility';
|
|
3
2
|
import { useDOM } from '../lib/dom';
|
|
4
3
|
import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
|
|
5
4
|
|
|
6
|
-
const EVENT_OPTIONS = {
|
|
7
|
-
passive: true,
|
|
8
|
-
capture: true,
|
|
9
|
-
};
|
|
10
|
-
|
|
11
5
|
/**
|
|
12
6
|
* Завязывается на document.
|
|
13
7
|
*
|
|
@@ -16,15 +10,11 @@ const EVENT_OPTIONS = {
|
|
|
16
10
|
export const useGlobalEscKeyDown = (
|
|
17
11
|
init: boolean,
|
|
18
12
|
callback?: ((event: KeyboardEvent) => void) | undefined,
|
|
19
|
-
optionsProp
|
|
13
|
+
optionsProp: AddEventListenerOptions | undefined = {},
|
|
20
14
|
): void => {
|
|
21
15
|
const { document } = useDOM();
|
|
22
16
|
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
useIsomorphicLayoutEffect(() => {
|
|
26
|
-
options.current = optionsProp || EVENT_OPTIONS;
|
|
27
|
-
}, [options]);
|
|
17
|
+
const { capture = true, passive = true, once = false, signal } = optionsProp;
|
|
28
18
|
|
|
29
19
|
useIsomorphicLayoutEffect(() => {
|
|
30
20
|
if (!document || !init || !callback) {
|
|
@@ -35,9 +25,16 @@ export const useGlobalEscKeyDown = (
|
|
|
35
25
|
callback(event);
|
|
36
26
|
}
|
|
37
27
|
};
|
|
38
|
-
|
|
28
|
+
const options: AddEventListenerOptions = {
|
|
29
|
+
capture,
|
|
30
|
+
passive,
|
|
31
|
+
once,
|
|
32
|
+
...(signal !== undefined ? { signal } : {}),
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
document.addEventListener('keydown', handleKeyDown, options);
|
|
39
36
|
return () => {
|
|
40
|
-
document.removeEventListener('keydown', handleKeyDown, options
|
|
37
|
+
document.removeEventListener('keydown', handleKeyDown, options);
|
|
41
38
|
};
|
|
42
|
-
}, [init, document, callback]);
|
|
39
|
+
}, [init, document, callback, capture, passive, once, signal]);
|
|
43
40
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type * as React from 'react';
|
|
2
2
|
import { isElement, useDOM } from '../lib/dom';
|
|
3
3
|
import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
|
|
4
|
+
import { useStableCallback } from './useStableCallback';
|
|
4
5
|
|
|
5
6
|
export const useGlobalOnEventOutside = <
|
|
6
7
|
T extends React.RefObject<ElementType | null> | undefined | null,
|
|
@@ -11,6 +12,7 @@ export const useGlobalOnEventOutside = <
|
|
|
11
12
|
...refs: T[]
|
|
12
13
|
): void => {
|
|
13
14
|
const { document } = useDOM();
|
|
15
|
+
const stableCallback = useStableCallback(callback);
|
|
14
16
|
useIsomorphicLayoutEffect(() => {
|
|
15
17
|
const someRefNotNull = refs.some((ref) => ref && ref.current !== null);
|
|
16
18
|
if (!document || !someRefNotNull) {
|
|
@@ -22,7 +24,7 @@ export const useGlobalOnEventOutside = <
|
|
|
22
24
|
isElement(targetEl) &&
|
|
23
25
|
refs.some((ref) => ref && ref.current && ref.current.contains(targetEl));
|
|
24
26
|
if (!someRefHasTargetEl) {
|
|
25
|
-
|
|
27
|
+
stableCallback(event);
|
|
26
28
|
}
|
|
27
29
|
};
|
|
28
30
|
document.addEventListener(event, handleClick, {
|
|
@@ -32,7 +34,8 @@ export const useGlobalOnEventOutside = <
|
|
|
32
34
|
return () => {
|
|
33
35
|
document.removeEventListener(event, handleClick, true);
|
|
34
36
|
};
|
|
35
|
-
|
|
37
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38
|
+
}, [document, stableCallback, event, ...refs]);
|
|
36
39
|
};
|
|
37
40
|
|
|
38
41
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
1
|
+
import type * as React from 'react';
|
|
2
2
|
import { isKeyboardFocusingStarted } from '../lib/accessibility';
|
|
3
3
|
import { useDOM } from '../lib/dom';
|
|
4
4
|
import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
|
|
@@ -11,76 +11,89 @@ const EVENT_OPTIONS = {
|
|
|
11
11
|
capture: true,
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* В контекст можно передать через getter, подробнее в примере ниже.
|
|
18
|
-
*
|
|
19
|
-
* ```tsx
|
|
20
|
-
* const keyboardInputTrackerRef = useKeyboardInputTracker();
|
|
21
|
-
* <SomeContext.Provider value={{
|
|
22
|
-
* get keyboardInput() {
|
|
23
|
-
* return keyboardInputTrackerRef.current;
|
|
24
|
-
* }
|
|
25
|
-
* }}>
|
|
26
|
-
* {children}
|
|
27
|
-
* </SomeContext.Provider>
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* @private
|
|
31
|
-
*/
|
|
32
|
-
export function useKeyboardInputTracker(): React.RefObject<boolean> {
|
|
33
|
-
const { document } = useDOM();
|
|
34
|
-
const keyboardFocusingStartedRef = React.useRef(false);
|
|
14
|
+
let keyboardInputState = false;
|
|
15
|
+
let mountedTrackers = 0;
|
|
16
|
+
let detachListeners: null | (() => void) = null;
|
|
35
17
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
18
|
+
const keyboardFocusingStartedRef: React.RefObject<boolean> = {
|
|
19
|
+
get current() {
|
|
20
|
+
return keyboardInputState;
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const setKeyboardInputState = (nextValue: boolean) => {
|
|
25
|
+
if (keyboardInputState !== nextValue) {
|
|
26
|
+
keyboardInputState = nextValue;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const attachKeyboardInputListeners = (document: Document) => {
|
|
31
|
+
const handleKeydown = (event: KeyboardEvent) => {
|
|
32
|
+
if (isKeyboardFocusingStarted(event)) {
|
|
33
|
+
setKeyboardInputState(true);
|
|
40
34
|
}
|
|
35
|
+
};
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
};
|
|
37
|
+
const handleCustomEnableKeyboardEvent = () => {
|
|
38
|
+
setKeyboardInputState(true);
|
|
39
|
+
};
|
|
47
40
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
const handleCustomDisableKeyboardEvent = () => {
|
|
42
|
+
setKeyboardInputState(false);
|
|
43
|
+
};
|
|
51
44
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
45
|
+
document.addEventListener('keydown', handleKeydown, EVENT_OPTIONS);
|
|
46
|
+
document.addEventListener(
|
|
47
|
+
ENABLE_KEYBOARD_INPUT_EVENT_NAME,
|
|
48
|
+
handleCustomEnableKeyboardEvent,
|
|
49
|
+
EVENT_OPTIONS,
|
|
50
|
+
);
|
|
51
|
+
document.addEventListener(
|
|
52
|
+
DISABLE_KEYBOARD_INPUT_EVENT_NAME,
|
|
53
|
+
handleCustomDisableKeyboardEvent,
|
|
54
|
+
EVENT_OPTIONS,
|
|
55
|
+
);
|
|
56
|
+
document.addEventListener('mousedown', handleCustomDisableKeyboardEvent, EVENT_OPTIONS);
|
|
57
|
+
document.addEventListener('touchstart', handleCustomDisableKeyboardEvent, EVENT_OPTIONS);
|
|
55
58
|
|
|
56
|
-
|
|
57
|
-
document.
|
|
59
|
+
return () => {
|
|
60
|
+
document.removeEventListener('keydown', handleKeydown, EVENT_OPTIONS);
|
|
61
|
+
document.removeEventListener(
|
|
58
62
|
ENABLE_KEYBOARD_INPUT_EVENT_NAME,
|
|
59
63
|
handleCustomEnableKeyboardEvent,
|
|
60
64
|
EVENT_OPTIONS,
|
|
61
65
|
);
|
|
62
|
-
document.
|
|
66
|
+
document.removeEventListener(
|
|
63
67
|
DISABLE_KEYBOARD_INPUT_EVENT_NAME,
|
|
64
68
|
handleCustomDisableKeyboardEvent,
|
|
65
69
|
EVENT_OPTIONS,
|
|
66
70
|
);
|
|
67
|
-
document.
|
|
68
|
-
document.
|
|
71
|
+
document.removeEventListener('mousedown', handleCustomDisableKeyboardEvent, EVENT_OPTIONS);
|
|
72
|
+
document.removeEventListener('touchstart', handleCustomDisableKeyboardEvent, EVENT_OPTIONS);
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export function useKeyboardInputTracker(): React.RefObject<boolean> {
|
|
77
|
+
const { document } = useDOM();
|
|
78
|
+
|
|
79
|
+
useIsomorphicLayoutEffect(() => {
|
|
80
|
+
/* istanbul ignore if: невозможный кейс, т.к. в SSR эффекты не вызываются. Проверка на будущее, если вдруг эффект будет вызываться. */
|
|
81
|
+
if (!document) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
mountedTrackers += 1;
|
|
86
|
+
|
|
87
|
+
if (!detachListeners) {
|
|
88
|
+
detachListeners = attachKeyboardInputListeners(document);
|
|
89
|
+
}
|
|
69
90
|
|
|
70
91
|
return () => {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
);
|
|
77
|
-
document.removeEventListener(
|
|
78
|
-
DISABLE_KEYBOARD_INPUT_EVENT_NAME,
|
|
79
|
-
handleCustomDisableKeyboardEvent,
|
|
80
|
-
EVENT_OPTIONS,
|
|
81
|
-
);
|
|
82
|
-
document.removeEventListener('mousedown', handleCustomDisableKeyboardEvent, EVENT_OPTIONS);
|
|
83
|
-
document.removeEventListener('touchstart', handleCustomDisableKeyboardEvent, EVENT_OPTIONS);
|
|
92
|
+
mountedTrackers -= 1;
|
|
93
|
+
if (mountedTrackers === 0 && detachListeners) {
|
|
94
|
+
detachListeners();
|
|
95
|
+
detachListeners = null;
|
|
96
|
+
}
|
|
84
97
|
};
|
|
85
98
|
}, [document]);
|
|
86
99
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
|
|
3
|
+
|
|
4
|
+
export function useLatestRef<T>(value: T): React.RefObject<T> {
|
|
5
|
+
const ref = React.useRef(value);
|
|
6
|
+
|
|
7
|
+
useIsomorphicLayoutEffect(() => {
|
|
8
|
+
ref.current = value;
|
|
9
|
+
}, [value]);
|
|
10
|
+
|
|
11
|
+
return ref;
|
|
12
|
+
}
|
package/src/hooks/useLocale.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { LocaleContext } from '../components/ConfigProvider/ConfigProviderSubContexts';
|
|
2
3
|
|
|
3
4
|
export function useLocale(): string {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return locale;
|
|
5
|
+
return React.useContext(LocaleContext);
|
|
7
6
|
}
|
|
@@ -28,7 +28,7 @@ export function useMediaQueryMatches(
|
|
|
28
28
|
};
|
|
29
29
|
match.addEventListener('change', handleMediaQueryChange);
|
|
30
30
|
return () => match.removeEventListener('change', handleMediaQueryChange);
|
|
31
|
-
}, [media, window]);
|
|
31
|
+
}, [disable, media, window]);
|
|
32
32
|
|
|
33
33
|
return matches;
|
|
34
34
|
}
|
|
@@ -2,7 +2,7 @@ import type * as React from 'react';
|
|
|
2
2
|
import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
|
|
3
3
|
import { useStableCallback } from './useStableCallback';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const DEFAULT_MUTATION_OBSERVER_OPTIONS: MutationObserverInit = {
|
|
6
6
|
subtree: true,
|
|
7
7
|
childList: true,
|
|
8
8
|
};
|
|
@@ -10,7 +10,6 @@ export const DEFAULT_MUTATION_OBSERVER_OPTIONS: MutationObserverInit = {
|
|
|
10
10
|
export const useMutationObserver = (
|
|
11
11
|
ref: React.RefObject<HTMLElement | null> | null,
|
|
12
12
|
callback: () => void,
|
|
13
|
-
options: MutationObserverInit = DEFAULT_MUTATION_OBSERVER_OPTIONS,
|
|
14
13
|
): void => {
|
|
15
14
|
const stableCallback = useStableCallback(callback);
|
|
16
15
|
|
|
@@ -19,7 +18,7 @@ export const useMutationObserver = (
|
|
|
19
18
|
return;
|
|
20
19
|
}
|
|
21
20
|
const observer = new MutationObserver(stableCallback);
|
|
22
|
-
observer.observe(ref.current,
|
|
21
|
+
observer.observe(ref.current, DEFAULT_MUTATION_OBSERVER_OPTIONS);
|
|
23
22
|
return () => observer.disconnect();
|
|
24
23
|
}, [ref, stableCallback]);
|
|
25
24
|
};
|
package/src/hooks/usePlatform.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { PlatformContext } from '../components/ConfigProvider/ConfigProviderSubContexts';
|
|
2
3
|
import type { PlatformType } from '../lib/platform';
|
|
3
4
|
|
|
4
5
|
export function usePlatform(): PlatformType {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return platform;
|
|
6
|
+
return React.useContext(PlatformContext);
|
|
8
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import type * as React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { isWindow } from '../lib/dom';
|
|
4
4
|
import { isRefObject } from '../lib/isRefObject';
|
|
5
5
|
import { useStableCallback } from './useStableCallback';
|
|
6
6
|
|
|
@@ -12,15 +12,14 @@ export function useResizeObserver(
|
|
|
12
12
|
callback: (element: HTMLElement | Window) => void,
|
|
13
13
|
): void {
|
|
14
14
|
const stableCallback = useStableCallback(callback);
|
|
15
|
-
const { window } = useDOM();
|
|
16
15
|
|
|
17
16
|
useEffect(
|
|
18
17
|
function addResizeObserverHandler() {
|
|
19
|
-
if (!ref
|
|
18
|
+
if (!ref) {
|
|
20
19
|
return;
|
|
21
20
|
}
|
|
22
21
|
|
|
23
|
-
if (ref
|
|
22
|
+
if (isWindow(ref)) {
|
|
24
23
|
const onResize = () => stableCallback(ref);
|
|
25
24
|
ref.addEventListener('resize', onResize);
|
|
26
25
|
return () => ref.removeEventListener('resize', onResize);
|
|
@@ -40,6 +39,6 @@ export function useResizeObserver(
|
|
|
40
39
|
|
|
41
40
|
return () => observer.disconnect();
|
|
42
41
|
},
|
|
43
|
-
[ref, stableCallback
|
|
42
|
+
[ref, stableCallback],
|
|
44
43
|
);
|
|
45
44
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { noop } from '@vkontakte/vkjs';
|
|
3
|
-
import { useDOM } from '../lib/dom';
|
|
4
3
|
|
|
5
4
|
export const useWaitTransitionFinish = (): ((
|
|
6
5
|
element: HTMLElement | undefined | null,
|
|
@@ -8,7 +7,6 @@ export const useWaitTransitionFinish = (): ((
|
|
|
8
7
|
durationFallback: number,
|
|
9
8
|
) => void) => {
|
|
10
9
|
const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
11
|
-
const { document } = useDOM();
|
|
12
10
|
const detach = React.useRef(noop);
|
|
13
11
|
|
|
14
12
|
const remove = React.useCallback(() => {
|
|
@@ -22,22 +20,24 @@ export const useWaitTransitionFinish = (): ((
|
|
|
22
20
|
eventHandler: (e?: TransitionEvent) => void,
|
|
23
21
|
durationFallback: number,
|
|
24
22
|
) => {
|
|
25
|
-
if (element) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
23
|
+
if (!element) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (!element.ownerDocument.hidden) {
|
|
28
|
+
remove();
|
|
29
|
+
element.addEventListener('transitionend', eventHandler);
|
|
30
|
+
detach.current = () => {
|
|
31
|
+
element.removeEventListener('transitionend', eventHandler);
|
|
32
|
+
};
|
|
33
|
+
} else {
|
|
34
|
+
if (timeoutRef?.current) {
|
|
35
|
+
clearTimeout(timeoutRef.current);
|
|
37
36
|
}
|
|
37
|
+
timeoutRef.current = setTimeout(eventHandler, durationFallback);
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
|
-
[
|
|
40
|
+
[remove, timeoutRef],
|
|
41
41
|
);
|
|
42
42
|
|
|
43
43
|
return waitTransitionFinish;
|
package/src/index.ts
CHANGED
|
@@ -262,6 +262,7 @@ export { TabsItem } from './components/TabsItem/TabsItem';
|
|
|
262
262
|
export type { TabsItemProps } from './components/TabsItem/TabsItem';
|
|
263
263
|
export { Spinner } from './components/Spinner/Spinner';
|
|
264
264
|
export type { SpinnerProps } from './components/Spinner/Spinner';
|
|
265
|
+
export { ExpressiveSpinner as unstable_ExpressiveSpinner } from './components/Spinner/ExpressiveSpinner/ExpressiveSpinner';
|
|
265
266
|
export { PullToRefresh } from './components/PullToRefresh/PullToRefresh';
|
|
266
267
|
export type { PullToRefreshProps } from './components/PullToRefresh/PullToRefresh';
|
|
267
268
|
export { Link } from './components/Link/Link';
|
package/src/lib/array.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Writeable } from '@vkontakte/vkjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Поверхностно копирует массив
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import * as array from './array';
|
|
8
|
+
* import * as assert from 'node:assert/strict';
|
|
9
|
+
*
|
|
10
|
+
* const originalArray = [1, 2, 3];
|
|
11
|
+
* const copiedArray = array.copy(originalArray);
|
|
12
|
+
*
|
|
13
|
+
* assert.deepEqual(copiedArray, originalArray);
|
|
14
|
+
* assert.notEqual(copiedArray, originalArray);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export function copy<T extends Pick<unknown[], 'slice'>>(array: T): Writeable<T> {
|
|
18
|
+
return array.slice(0) as unknown as T;
|
|
19
|
+
}
|
package/src/lib/curve.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Кубическая кривая Безье для одномерного пространства
|
|
3
|
+
*/
|
|
4
|
+
export function cubicBezierOneDimensional(
|
|
5
|
+
p0: number,
|
|
6
|
+
p1: number,
|
|
7
|
+
p2: number,
|
|
8
|
+
p3: number,
|
|
9
|
+
t: number,
|
|
10
|
+
) {
|
|
11
|
+
const cx = 3 * (p1 - p0);
|
|
12
|
+
const bx = 3 * (p2 - p1) - cx;
|
|
13
|
+
const ax = p3 - p0 - cx - bx;
|
|
14
|
+
const x = ax * Math.pow(t, 3) + bx * Math.pow(t, 2) + cx * t + p0;
|
|
15
|
+
return x;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Кубическая кривая Безье для двумерного пространства
|
|
20
|
+
*/
|
|
21
|
+
export function cubicBezierTwoDimensional(
|
|
22
|
+
x0: number,
|
|
23
|
+
y0: number,
|
|
24
|
+
x1: number,
|
|
25
|
+
y1: number,
|
|
26
|
+
x2: number,
|
|
27
|
+
y2: number,
|
|
28
|
+
x3: number,
|
|
29
|
+
y3: number,
|
|
30
|
+
t: number,
|
|
31
|
+
): [number, number] {
|
|
32
|
+
const x = cubicBezierOneDimensional(x0, x1, x2, x3, t);
|
|
33
|
+
const y = cubicBezierOneDimensional(y0, y1, y2, y3, t);
|
|
34
|
+
|
|
35
|
+
return [x, y];
|
|
36
|
+
}
|
package/src/lib/dom.tsx
CHANGED
|
@@ -52,10 +52,12 @@ export const useDOM = (): DOMContextInterface => {
|
|
|
52
52
|
* В случае, если используется DOMContext, при проверке 'node instanceOf Window' – Window может быть
|
|
53
53
|
* другим объектом.
|
|
54
54
|
*/
|
|
55
|
-
export const isWindow = (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
export const isWindow = (value: unknown): value is Window => {
|
|
56
|
+
return (
|
|
57
|
+
typeof value === 'object' &&
|
|
58
|
+
value !== null &&
|
|
59
|
+
(value as Record<string, unknown>).window === value
|
|
60
|
+
);
|
|
59
61
|
};
|
|
60
62
|
|
|
61
63
|
export const isBody = (
|
|
@@ -213,6 +215,10 @@ export const getDocumentBody = (node?: any): HTMLElement => getWindow(node).docu
|
|
|
213
215
|
export const getActiveElementByAnotherElement = (el: Element | null): Element | null =>
|
|
214
216
|
el ? el.ownerDocument.activeElement : null;
|
|
215
217
|
|
|
218
|
+
export function isActiveElement(el: Element): boolean {
|
|
219
|
+
return el === el.ownerDocument.activeElement;
|
|
220
|
+
}
|
|
221
|
+
|
|
216
222
|
export const contains = (parent?: Element | null, child?: Element | null): boolean => {
|
|
217
223
|
return parent && child ? parent.contains(child) : false;
|
|
218
224
|
};
|