@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/material/shapes/shapes.ts"],"sourcesContent":["/**\n * Набор форм M3\n *\n * https://m3.material.io/styles/shape/overview-principles\n */\nimport { type DeepReadonly, type ReadonlyWeakMap } from '../../../types';\nimport { type SVGPathSupport } from '../../svg/path/path';\nimport * as transform from '../../svg/path/transform';\n\nexport interface ShapeParameters {\n /**\n * SVG путь для фигуры размером [0,1] на [0,1]\n */\n readonly path: DeepReadonly<SVGPathSupport>;\n /**\n * Масштабирующий коэффициент предназначен для возможности помещения\n * в произвольный контейнер фигуры учитывая вращение\n */\n readonly rotateScaleFactor: number;\n}\n\n/**\n * Возвращает фигуру определенного размера\n */\nexport function shape(shapeParams: ShapeParameters, size: number): SVGPathSupport {\n return transform.scale(shapeParams.path, size, size);\n}\n\n/**\n * Возвращает фигуру с возможностью поворота, которая помещается в контейнер\n * определенного размера\n */\nexport function shapeWithRotate(shapeParams: ShapeParameters, size: number): SVGPathSupport {\n const scaleSize = shapeParams.rotateScaleFactor * size;\n const translateFactor = (size - scaleSize) / 2;\n\n return transform.translate(shape(shapeParams, scaleSize), translateFactor, translateFactor);\n}\n\nexport const ovalParams: ShapeParameters = {\n path: [\n ['M', [0.771, 0.771]],\n ['C', [0.539, 1.003, 0.2296, 1.0698, 0.0799, 0.9201]],\n ['C', [-0.0698, 0.7704, -0.003, 0.461, 0.229, 0.229]],\n ['C', [0.461, -0.003, 0.7704, -0.0698, 0.9201, 0.0799]],\n ['C', [1.0698, 0.2296, 1.003, 0.539, 0.771, 0.771]],\n ['Z', []],\n ],\n rotateScaleFactor: 30 / 38,\n};\n\nexport const cookie4Params: ShapeParameters = {\n path: [\n ['M', [0.6383, 0.0222]],\n ['C', [0.8531, -0.0711, 1.0711, 0.1469, 0.9778, 0.3617]],\n ['L', [0.9624, 0.3972]],\n ['C', [0.9339, 0.4628, 0.9339, 0.5372, 0.9624, 0.6028]],\n ['L', [0.9778, 0.6383]],\n ['C', [1.0711, 0.8531, 0.8531, 1.0711, 0.6383, 0.9778]],\n ['L', [0.6028, 0.9624]],\n ['C', [0.5372, 0.9339, 0.4628, 0.9339, 0.3972, 0.9624]],\n ['L', [0.3617, 0.9778]],\n ['C', [0.1469, 1.0711, -0.0711, 0.8531, 0.0222, 0.6383]],\n ['L', [0.0376, 0.6028]],\n ['C', [0.0661, 0.5372, 0.0661, 0.4628, 0.0376, 0.3972]],\n ['L', [0.0222, 0.3617]],\n ['C', [-0.0711, 0.1469, 0.1469, -0.0711, 0.3617, 0.0222]],\n ['L', [0.3972, 0.0376]],\n ['C', [0.4628, 0.0661, 0.5372, 0.0661, 0.6028, 0.0376]],\n ['L', [0.6383, 0.0222]],\n ['Z', []],\n ],\n rotateScaleFactor: 28 / 38,\n};\n\nexport const sunnyParams: ShapeParameters = {\n path: [\n ['M', [0.7702, 0.1213]],\n ['C', [0.8013, 0.1234, 0.8168, 0.1245, 0.8294, 0.13]],\n ['C', [0.8476, 0.1379, 0.8621, 0.1524, 0.87, 0.1706]],\n ['C', [0.8755, 0.1832, 0.8766, 0.1987, 0.8787, 0.2298]],\n ['L', [0.8835, 0.3008]],\n ['C', [0.8844, 0.3134, 0.8848, 0.3197, 0.8862, 0.3257]],\n ['C', [0.8882, 0.3344, 0.8916, 0.3426, 0.8963, 0.3502]],\n ['C', [0.8996, 0.3554, 0.9038, 0.3601, 0.912, 0.3696]],\n ['L', [0.9588, 0.4232]],\n ['C', [0.9793, 0.4467, 0.9896, 0.4585, 0.9946, 0.4712]],\n ['C', [1.0018, 0.4897, 1.0018, 0.5103, 0.9946, 0.5287]],\n ['C', [0.9896, 0.5415, 0.9793, 0.5533, 0.9588, 0.5768]],\n ['L', [0.912, 0.6303]],\n ['C', [0.9038, 0.6398, 0.8996, 0.6446, 0.8963, 0.6498]],\n ['C', [0.8916, 0.6573, 0.8882, 0.6656, 0.8862, 0.6743]],\n ['C', [0.8848, 0.6803, 0.8844, 0.6866, 0.8835, 0.6992]],\n ['L', [0.8787, 0.7702]],\n ['C', [0.8766, 0.8013, 0.8755, 0.8168, 0.87, 0.8294]],\n ['C', [0.8621, 0.8476, 0.8476, 0.8621, 0.8294, 0.87]],\n ['C', [0.8168, 0.8755, 0.8013, 0.8766, 0.7702, 0.8787]],\n ['L', [0.6992, 0.8835]],\n ['C', [0.6866, 0.8844, 0.6803, 0.8848, 0.6743, 0.8862]],\n ['C', [0.6656, 0.8882, 0.6573, 0.8916, 0.6498, 0.8963]],\n ['C', [0.6446, 0.8996, 0.6398, 0.9038, 0.6303, 0.912]],\n ['L', [0.5768, 0.9588]],\n ['C', [0.5533, 0.9793, 0.5415, 0.9896, 0.5287, 0.9946]],\n ['C', [0.5103, 1.0018, 0.4897, 1.0018, 0.4712, 0.9946]],\n ['C', [0.4585, 0.9896, 0.4467, 0.9793, 0.4232, 0.9588]],\n ['L', [0.3696, 0.912]],\n ['C', [0.3601, 0.9038, 0.3554, 0.8996, 0.3502, 0.8963]],\n ['C', [0.3426, 0.8916, 0.3344, 0.8882, 0.3257, 0.8862]],\n ['C', [0.3197, 0.8848, 0.3134, 0.8844, 0.3008, 0.8835]],\n ['L', [0.2298, 0.8787]],\n ['C', [0.1987, 0.8766, 0.1832, 0.8755, 0.1706, 0.87]],\n ['C', [0.1524, 0.8621, 0.1379, 0.8476, 0.13, 0.8294]],\n ['C', [0.1245, 0.8168, 0.1234, 0.8013, 0.1213, 0.7702]],\n ['L', [0.1165, 0.6992]],\n ['C', [0.1156, 0.6866, 0.1152, 0.6803, 0.1138, 0.6743]],\n ['C', [0.1118, 0.6656, 0.1084, 0.6573, 0.1037, 0.6498]],\n ['C', [0.1004, 0.6446, 0.0962, 0.6398, 0.0879, 0.6303]],\n ['L', [0.0412, 0.5768]],\n ['C', [0.0207, 0.5533, 0.0104, 0.5415, 0.0054, 0.5287]],\n ['C', [-0.0018, 0.5103, -0.0018, 0.4897, 0.0054, 0.4712]],\n ['C', [0.0104, 0.4585, 0.0207, 0.4467, 0.0412, 0.4232]],\n ['L', [0.0879, 0.3696]],\n ['C', [0.0962, 0.3601, 0.1004, 0.3554, 0.1037, 0.3502]],\n ['C', [0.1084, 0.3426, 0.1118, 0.3344, 0.1138, 0.3257]],\n ['C', [0.1152, 0.3197, 0.1156, 0.3134, 0.1165, 0.3008]],\n ['L', [0.1213, 0.2298]],\n ['C', [0.1234, 0.1987, 0.1245, 0.1832, 0.13, 0.1706]],\n ['C', [0.1379, 0.1524, 0.1524, 0.1379, 0.1706, 0.13]],\n ['C', [0.1832, 0.1245, 0.1987, 0.1234, 0.2298, 0.1213]],\n ['L', [0.3008, 0.1165]],\n ['C', [0.3134, 0.1156, 0.3197, 0.1152, 0.3257, 0.1138]],\n ['C', [0.3344, 0.1118, 0.3426, 0.1084, 0.3502, 0.1037]],\n ['C', [0.3554, 0.1004, 0.3601, 0.0962, 0.3696, 0.0879]],\n ['L', [0.4232, 0.0412]],\n ['C', [0.4467, 0.0207, 0.4585, 0.0104, 0.4712, 0.0054]],\n ['C', [0.4897, -0.0018, 0.5103, -0.0018, 0.5287, 0.0054]],\n ['C', [0.5415, 0.0104, 0.5533, 0.0207, 0.5768, 0.0412]],\n ['L', [0.6303, 0.0879]],\n ['C', [0.6398, 0.0962, 0.6446, 0.1004, 0.6498, 0.1037]],\n ['C', [0.6573, 0.1084, 0.6656, 0.1118, 0.6743, 0.1138]],\n ['C', [0.6803, 0.1152, 0.6866, 0.1156, 0.6992, 0.1165]],\n ['L', [0.7702, 0.1213]],\n ['Z', []],\n ],\n rotateScaleFactor: 34 / 38,\n};\n\nexport const pillParams: ShapeParameters = {\n path: [\n ['M', [0.2662, 0.1259]],\n ['C', [0.4341, -0.042, 0.7062, -0.042, 0.8741, 0.1259]],\n ['C', [1.042, 0.2938, 1.042, 0.5659, 0.8741, 0.7338]],\n ['L', [0.7338, 0.8741]],\n ['C', [0.5659, 1.042, 0.2938, 1.042, 0.1259, 0.8741]],\n ['C', [-0.042, 0.7062, -0.042, 0.4341, 0.1259, 0.2662]],\n ['L', [0.2662, 0.1259]],\n ['Z', []],\n ],\n rotateScaleFactor: 30 / 38,\n};\n\nexport const pentagonParams: ShapeParameters = {\n path: [\n ['M', [0.3426, 0.0864]],\n ['C', [0.3914, 0.0509, 0.4158, 0.0331, 0.4418, 0.0243]],\n ['C', [0.4795, 0.0115, 0.5205, 0.0115, 0.5582, 0.0243]],\n ['C', [0.5842, 0.0331, 0.6086, 0.0509, 0.6574, 0.0864]],\n ['L', [0.7641, 0.1641]],\n ['L', [0.8707, 0.237]],\n ['C', [0.9213, 0.2715, 0.9466, 0.2888, 0.9635, 0.3105]],\n ['C', [0.988, 0.3419, 1.0008, 0.3806, 1, 0.4201]],\n ['C', [0.9994, 0.4474, 0.9893, 0.4759, 0.9692, 0.533]],\n ['L', [0.9273, 0.6519]],\n ['L', [0.8887, 0.7738]],\n ['C', [0.8705, 0.8309, 0.8615, 0.8595, 0.8456, 0.8818]],\n ['C', [0.8227, 0.9139, 0.7894, 0.9376, 0.751, 0.9489]],\n ['C', [0.7245, 0.9568, 0.6939, 0.9563, 0.6328, 0.9554]],\n ['L', [0.5, 0.9534]],\n ['L', [0.3672, 0.9554]],\n ['C', [0.3061, 0.9563, 0.2755, 0.9568, 0.249, 0.9489]],\n ['C', [0.2106, 0.9376, 0.1773, 0.9139, 0.1544, 0.8818]],\n ['C', [0.1385, 0.8595, 0.1295, 0.8309, 0.1113, 0.7738]],\n ['L', [0.0727, 0.6519]],\n ['L', [0.0308, 0.533]],\n ['C', [0.0107, 0.4759, 0.0006, 0.4474, 0, 0.4201]],\n ['C', [-0.0008, 0.3806, 0.012, 0.3419, 0.0365, 0.3105]],\n ['C', [0.0534, 0.2888, 0.0787, 0.2715, 0.1293, 0.237]],\n ['L', [0.2359, 0.1641]],\n ['L', [0.3426, 0.0864]],\n ['Z', []],\n ],\n rotateScaleFactor: 34 / 38,\n};\n\nexport const cookie9Params: ShapeParameters = {\n path: [\n ['M', [0.3914, 0.0472]],\n ['C', [0.3968, 0.0428, 0.3995, 0.0406, 0.402, 0.0387]],\n ['C', [0.46, -0.0051, 0.54, -0.0051, 0.598, 0.0387]],\n ['C', [0.6005, 0.0406, 0.6032, 0.0428, 0.6086, 0.0472]],\n ['C', [0.611, 0.0491, 0.6122, 0.0501, 0.6134, 0.051]],\n ['C', [0.6406, 0.0725, 0.6741, 0.0846, 0.7088, 0.0857]],\n ['C', [0.7103, 0.0858, 0.7119, 0.0858, 0.715, 0.0858]],\n ['C', [0.7219, 0.0859, 0.7254, 0.0859, 0.7285, 0.0861]],\n ['C', [0.8011, 0.0898, 0.8625, 0.1411, 0.8787, 0.2118]],\n ['C', [0.8794, 0.2148, 0.88, 0.2182, 0.8813, 0.2251]],\n ['C', [0.8819, 0.2281, 0.8822, 0.2296, 0.8825, 0.2311]],\n ['C', [0.8896, 0.265, 0.9074, 0.2958, 0.9333, 0.3189]],\n ['C', [0.9344, 0.3199, 0.9356, 0.3209, 0.9379, 0.3229]],\n ['C', [0.9432, 0.3274, 0.9458, 0.3297, 0.9481, 0.3318]],\n ['C', [1.0014, 0.3812, 1.0153, 0.4598, 0.9821, 0.5244]],\n ['C', [0.9807, 0.5271, 0.979, 0.5302, 0.9756, 0.5362]],\n ['C', [0.9741, 0.5389, 0.9733, 0.5403, 0.9726, 0.5416]],\n ['C', [0.9562, 0.5722, 0.95, 0.6071, 0.955, 0.6414]],\n ['C', [0.9552, 0.6429, 0.9555, 0.6445, 0.956, 0.6475]],\n ['C', [0.9571, 0.6544, 0.9576, 0.6578, 0.958, 0.6609]],\n ['C', [0.967, 0.7328, 0.927, 0.802, 0.86, 0.8302]],\n ['C', [0.8572, 0.8314, 0.8539, 0.8327, 0.8474, 0.8351]],\n ['C', [0.8445, 0.8362, 0.843, 0.8368, 0.8416, 0.8373]],\n ['C', [0.8094, 0.8502, 0.7821, 0.873, 0.7638, 0.9025]],\n ['C', [0.763, 0.9038, 0.7622, 0.9051, 0.7606, 0.9078]],\n ['C', [0.7571, 0.9137, 0.7553, 0.9167, 0.7536, 0.9193]],\n ['C', [0.7142, 0.9802, 0.6389, 1.0075, 0.5694, 0.9862]],\n ['C', [0.5665, 0.9853, 0.5632, 0.9841, 0.5566, 0.9818]],\n ['C', [0.5537, 0.9808, 0.5522, 0.9803, 0.5508, 0.9798]],\n ['C', [0.5178, 0.969, 0.4822, 0.969, 0.4492, 0.9798]],\n ['C', [0.4478, 0.9803, 0.4463, 0.9808, 0.4434, 0.9818]],\n ['C', [0.4368, 0.9841, 0.4335, 0.9853, 0.4306, 0.9862]],\n ['C', [0.3611, 1.0075, 0.2858, 0.9802, 0.2464, 0.9193]],\n ['C', [0.2447, 0.9167, 0.2429, 0.9137, 0.2394, 0.9078]],\n ['C', [0.2378, 0.9051, 0.237, 0.9038, 0.2362, 0.9025]],\n ['C', [0.2179, 0.873, 0.1906, 0.8502, 0.1584, 0.8373]],\n ['C', [0.157, 0.8368, 0.1555, 0.8362, 0.1526, 0.8351]],\n ['C', [0.1461, 0.8327, 0.1428, 0.8314, 0.14, 0.8302]],\n ['C', [0.073, 0.802, 0.033, 0.7328, 0.042, 0.6609]],\n ['C', [0.0424, 0.6578, 0.0429, 0.6544, 0.044, 0.6475]],\n ['C', [0.0445, 0.6445, 0.0448, 0.6429, 0.045, 0.6414]],\n ['C', [0.05, 0.6071, 0.0438, 0.5722, 0.0274, 0.5416]],\n ['C', [0.0267, 0.5403, 0.0259, 0.5389, 0.0244, 0.5362]],\n ['C', [0.021, 0.5302, 0.0193, 0.5271, 0.0179, 0.5244]],\n ['C', [-0.0153, 0.4598, -0.0014, 0.3812, 0.0519, 0.3318]],\n ['C', [0.0542, 0.3297, 0.0568, 0.3274, 0.0621, 0.3229]],\n ['C', [0.0644, 0.3209, 0.0656, 0.3199, 0.0667, 0.3189]],\n ['C', [0.0926, 0.2958, 0.1104, 0.265, 0.1175, 0.2311]],\n ['C', [0.1178, 0.2296, 0.1181, 0.2281, 0.1187, 0.2251]],\n ['C', [0.12, 0.2182, 0.1206, 0.2148, 0.1213, 0.2118]],\n ['C', [0.1375, 0.1411, 0.1989, 0.0898, 0.2715, 0.0861]],\n ['C', [0.2746, 0.0859, 0.2781, 0.0859, 0.285, 0.0858]],\n ['C', [0.2881, 0.0858, 0.2897, 0.0858, 0.2912, 0.0857]],\n ['C', [0.3259, 0.0846, 0.3594, 0.0725, 0.3866, 0.051]],\n ['C', [0.3878, 0.0501, 0.389, 0.0491, 0.3914, 0.0472]],\n ['Z', []],\n ],\n rotateScaleFactor: 34 / 38,\n};\n\nexport const softBurstParams: ShapeParameters = {\n path: [\n ['M', [0.4549, 0.0247]],\n ['C', [0.4757, -0.0082, 0.5243, -0.0082, 0.545, 0.0247]],\n ['L', [0.5947, 0.1036]],\n ['C', [0.6084, 0.1253, 0.6359, 0.1341, 0.6598, 0.1245]],\n ['L', [0.7471, 0.0894]],\n ['C', [0.7835, 0.0747, 0.8229, 0.1029, 0.82, 0.1416]],\n ['L', [0.8131, 0.2342]],\n ['C', [0.8112, 0.2596, 0.8282, 0.2827, 0.8533, 0.2887]],\n ['L', [0.9449, 0.3109]],\n ['C', [0.9831, 0.3202, 0.9981, 0.3657, 0.9727, 0.3953]],\n ['L', [0.9119, 0.4663]],\n ['C', [0.8952, 0.4858, 0.8952, 0.5142, 0.9119, 0.5337]],\n ['L', [0.9727, 0.6047]],\n ['C', [0.9981, 0.6343, 0.9831, 0.6798, 0.9449, 0.6891]],\n ['L', [0.8533, 0.7113]],\n ['C', [0.8282, 0.7173, 0.8112, 0.7404, 0.8131, 0.7658]],\n ['L', [0.82, 0.8584]],\n ['C', [0.8229, 0.8971, 0.7835, 0.9252, 0.7471, 0.9106]],\n ['L', [0.6598, 0.8755]],\n ['C', [0.6359, 0.8659, 0.6084, 0.8747, 0.5947, 0.8964]],\n ['L', [0.545, 0.9753]],\n ['C', [0.5243, 1.0082, 0.4757, 1.0082, 0.4549, 0.9753]],\n ['L', [0.4053, 0.8964]],\n ['C', [0.3916, 0.8747, 0.3641, 0.8659, 0.3402, 0.8755]],\n ['L', [0.2529, 0.9106]],\n ['C', [0.2165, 0.9252, 0.1771, 0.8971, 0.18, 0.8584]],\n ['L', [0.1869, 0.7658]],\n ['C', [0.1888, 0.7404, 0.1718, 0.7173, 0.1467, 0.7113]],\n ['L', [0.0551, 0.6891]],\n ['C', [0.0169, 0.6798, 0.0019, 0.6343, 0.0273, 0.6047]],\n ['L', [0.0881, 0.5337]],\n ['C', [0.1048, 0.5142, 0.1048, 0.4858, 0.0881, 0.4663]],\n ['L', [0.0273, 0.3953]],\n ['C', [0.0019, 0.3657, 0.0169, 0.3202, 0.0551, 0.3109]],\n ['L', [0.1467, 0.2887]],\n ['C', [0.1718, 0.2827, 0.1888, 0.2596, 0.1869, 0.2342]],\n ['L', [0.18, 0.1416]],\n ['C', [0.1771, 0.1029, 0.2165, 0.0747, 0.2529, 0.0894]],\n ['L', [0.3402, 0.1245]],\n ['C', [0.3641, 0.1341, 0.3916, 0.1253, 0.4053, 0.1036]],\n ['L', [0.4549, 0.0247]],\n ['Z', []],\n ],\n rotateScaleFactor: 34 / 38,\n};\n\n/**\n * Список всех форм\n */\nexport const shapeList = [\n ovalParams,\n pillParams,\n pentagonParams,\n sunnyParams,\n cookie4Params,\n cookie9Params,\n softBurstParams,\n] as const;\n\n/**\n * Название форм\n */\nexport const shapeNameMap: ReadonlyWeakMap<ShapeParameters, string> = new WeakMap([\n [ovalParams, 'Oval'],\n [pillParams, 'Pill'],\n [pentagonParams, 'Pentagon'],\n [sunnyParams, 'Sunny'],\n [cookie4Params, '4-sided cookie'],\n [cookie9Params, '9-sided cookie'],\n [softBurstParams, 'Soft burst'],\n]);\n"],"names":["transform","shape","shapeParams","size","scale","path","shapeWithRotate","scaleSize","rotateScaleFactor","translateFactor","translate","ovalParams","cookie4Params","sunnyParams","pillParams","pentagonParams","cookie9Params","softBurstParams","shapeList","shapeNameMap","WeakMap"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Длина гипотенузы
|
|
3
|
+
*/ function hypotenuse(a, b) {
|
|
4
|
+
return Math.sqrt(a * a + b * b);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Евклидово расстояние между двумя точками
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { distancePoint } from './math';
|
|
11
|
+
* import * as assert from 'node:assert/strict';
|
|
12
|
+
*
|
|
13
|
+
* assert.equal(distance(1, 1, 4, 5), 5)
|
|
14
|
+
* ```
|
|
15
|
+
*/ export function distance(x1, y1, x2, y2) {
|
|
16
|
+
return hypotenuse(x1 - x2, y1 - y2);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Евклидово расстояние между двумя точками
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { distancePoint } from './math';
|
|
23
|
+
* import * as assert from 'node:assert/strict';
|
|
24
|
+
*
|
|
25
|
+
* assert.equal(distancePoint([1, 1], [4, 5]), 5)
|
|
26
|
+
* ```
|
|
27
|
+
*/ export function distancePoint([x1, y1], [x2, y2]) {
|
|
28
|
+
return distance(x1, y1, x2, y2);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/math.ts"],"sourcesContent":["/**\n * Длина гипотенузы\n */\nfunction hypotenuse(a: number, b: number): number {\n return Math.sqrt(a * a + b * b);\n}\n\n/**\n * Евклидово расстояние между двумя точками\n *\n * ```ts\n * import { distancePoint } from './math';\n * import * as assert from 'node:assert/strict';\n *\n * assert.equal(distance(1, 1, 4, 5), 5)\n * ```\n */\nexport function distance(x1: number, y1: number, x2: number, y2: number): number {\n return hypotenuse(x1 - x2, y1 - y2);\n}\n\n/**\n * Евклидово расстояние между двумя точками\n *\n * ```ts\n * import { distancePoint } from './math';\n * import * as assert from 'node:assert/strict';\n *\n * assert.equal(distancePoint([1, 1], [4, 5]), 5)\n * ```\n */\nexport function distancePoint(\n [x1, y1]: readonly [number, number],\n [x2, y2]: readonly [number, number],\n): number {\n return distance(x1, y1, x2, y2);\n}\n"],"names":["hypotenuse","a","b","Math","sqrt","distance","x1","y1","x2","y2","distancePoint"],"mappings":"AAAA;;CAEC,GACD,SAASA,WAAWC,CAAS,EAAEC,CAAS;IACtC,OAAOC,KAAKC,IAAI,CAACH,IAAIA,IAAIC,IAAIA;AAC/B;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASG,SAASC,EAAU,EAAEC,EAAU,EAAEC,EAAU,EAAEC,EAAU;IACrE,OAAOT,WAAWM,KAAKE,IAAID,KAAKE;AAClC;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASC,cACd,CAACJ,IAAIC,GAA8B,EACnC,CAACC,IAAIC,GAA8B;IAEnC,OAAOJ,SAASC,IAAIC,IAAIC,IAAIC;AAC9B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as array from "../../array.js";
|
|
2
|
+
import { cubicBezierTwoDimensional } from "../../curve.js";
|
|
3
|
+
import { distancePoint } from "../../math.js";
|
|
4
|
+
/**
|
|
5
|
+
* Аппроксимирует кривую Безье в точки
|
|
6
|
+
*/ function approximateCurves(prevPoint, args, { maxSegmentLength }) {
|
|
7
|
+
const distancePoints = distancePoint([
|
|
8
|
+
args[4],
|
|
9
|
+
args[5]
|
|
10
|
+
], prevPoint);
|
|
11
|
+
const acc = new Array(Math.ceil(Math.max(2, distancePoints / maxSegmentLength)));
|
|
12
|
+
for(let index = 0; index < acc.length; index++){
|
|
13
|
+
const progress = Math.min(1, maxSegmentLength / distancePoints * index);
|
|
14
|
+
acc[index] = cubicBezierTwoDimensional(prevPoint[0], prevPoint[1], args[0], args[1], args[2], args[3], args[4], args[5], progress);
|
|
15
|
+
}
|
|
16
|
+
return acc;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Аппроксимирует svg путь в точки
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* import * as approximate from './approximate';
|
|
23
|
+
* import * as assert from 'node:assert/strict';
|
|
24
|
+
*
|
|
25
|
+
* assert.equal(
|
|
26
|
+
* approximate.approximateRing([['M', [20, 40]], ['L', [40, 60]]]),
|
|
27
|
+
* [[20, 40], [40, 60]],
|
|
28
|
+
* );
|
|
29
|
+
* ```
|
|
30
|
+
*/ export function approximateRing(path, { maxSegmentLength = 1 } = {}) {
|
|
31
|
+
const prevPoint = [
|
|
32
|
+
0,
|
|
33
|
+
0
|
|
34
|
+
];
|
|
35
|
+
return path.reduce((acc, [command, args])=>{
|
|
36
|
+
switch(command){
|
|
37
|
+
case 'M':
|
|
38
|
+
case 'L':
|
|
39
|
+
acc.push(array.copy(args));
|
|
40
|
+
prevPoint[0] = args[0];
|
|
41
|
+
prevPoint[1] = args[1];
|
|
42
|
+
break;
|
|
43
|
+
case 'C':
|
|
44
|
+
acc.push(...approximateCurves(prevPoint, array.copy(args), {
|
|
45
|
+
maxSegmentLength
|
|
46
|
+
}));
|
|
47
|
+
prevPoint[0] = args[4];
|
|
48
|
+
prevPoint[1] = args[5];
|
|
49
|
+
break;
|
|
50
|
+
case 'Z':
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
return acc;
|
|
54
|
+
}, []);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=approximate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/svg/path/approximate.ts"],"sourcesContent":["import { type DeepReadonly } from '../../../types';\nimport * as array from '../../array';\nimport { cubicBezierTwoDimensional } from '../../curve';\nimport { distancePoint } from '../../math';\nimport type { SVGPathSupport } from './path';\nimport { type Point, type Points } from './point';\n\nexport interface MaxSegmentLengthOptions {\n maxSegmentLength?: number;\n}\n\n/**\n * Аппроксимирует кривую Безье в точки\n */\nfunction approximateCurves(\n prevPoint: [number, number],\n args: [number, number, number, number, number, number],\n { maxSegmentLength }: Required<MaxSegmentLengthOptions>,\n): Points {\n const distancePoints = distancePoint([args[4], args[5]], prevPoint);\n const acc: Points = new Array(Math.ceil(Math.max(2, distancePoints / maxSegmentLength)));\n\n for (let index = 0; index < acc.length; index++) {\n const progress = Math.min(1, (maxSegmentLength / distancePoints) * index);\n\n acc[index] = cubicBezierTwoDimensional(\n prevPoint[0],\n prevPoint[1],\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5],\n progress,\n );\n }\n\n return acc;\n}\n\n/**\n * Аппроксимирует svg путь в точки\n *\n * ```ts\n * import * as approximate from './approximate';\n * import * as assert from 'node:assert/strict';\n *\n * assert.equal(\n * approximate.approximateRing([['M', [20, 40]], ['L', [40, 60]]]),\n * [[20, 40], [40, 60]],\n * );\n * ```\n */\nexport function approximateRing(\n path: DeepReadonly<SVGPathSupport>,\n { maxSegmentLength = 1 }: MaxSegmentLengthOptions = {},\n): Points {\n const prevPoint: Point = [0, 0];\n\n return path.reduce<Points>((acc, [command, args]) => {\n switch (command) {\n case 'M':\n case 'L':\n acc.push(array.copy(args));\n prevPoint[0] = args[0];\n prevPoint[1] = args[1];\n break;\n case 'C':\n acc.push(...approximateCurves(prevPoint, array.copy(args), { maxSegmentLength }));\n prevPoint[0] = args[4];\n prevPoint[1] = args[5];\n\n break;\n case 'Z':\n break;\n }\n\n return acc;\n }, []);\n}\n"],"names":["array","cubicBezierTwoDimensional","distancePoint","approximateCurves","prevPoint","args","maxSegmentLength","distancePoints","acc","Array","Math","ceil","max","index","length","progress","min","approximateRing","path","reduce","command","push","copy"],"mappings":"AACA,YAAYA,WAAW,iBAAc;AACrC,SAASC,yBAAyB,QAAQ,iBAAc;AACxD,SAASC,aAAa,QAAQ,gBAAa;AAQ3C;;CAEC,GACD,SAASC,kBACPC,SAA2B,EAC3BC,IAAsD,EACtD,EAAEC,gBAAgB,EAAqC;IAEvD,MAAMC,iBAAiBL,cAAc;QAACG,IAAI,CAAC,EAAE;QAAEA,IAAI,CAAC,EAAE;KAAC,EAAED;IACzD,MAAMI,MAAc,IAAIC,MAAMC,KAAKC,IAAI,CAACD,KAAKE,GAAG,CAAC,GAAGL,iBAAiBD;IAErE,IAAK,IAAIO,QAAQ,GAAGA,QAAQL,IAAIM,MAAM,EAAED,QAAS;QAC/C,MAAME,WAAWL,KAAKM,GAAG,CAAC,GAAG,AAACV,mBAAmBC,iBAAkBM;QAEnEL,GAAG,CAACK,MAAM,GAAGZ,0BACXG,SAAS,CAAC,EAAE,EACZA,SAAS,CAAC,EAAE,EACZC,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPU;IAEJ;IAEA,OAAOP;AACT;AAEA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASS,gBACdC,IAAkC,EAClC,EAAEZ,mBAAmB,CAAC,EAA2B,GAAG,CAAC,CAAC;IAEtD,MAAMF,YAAmB;QAAC;QAAG;KAAE;IAE/B,OAAOc,KAAKC,MAAM,CAAS,CAACX,KAAK,CAACY,SAASf,KAAK;QAC9C,OAAQe;YACN,KAAK;YACL,KAAK;gBACHZ,IAAIa,IAAI,CAACrB,MAAMsB,IAAI,CAACjB;gBACpBD,SAAS,CAAC,EAAE,GAAGC,IAAI,CAAC,EAAE;gBACtBD,SAAS,CAAC,EAAE,GAAGC,IAAI,CAAC,EAAE;gBACtB;YACF,KAAK;gBACHG,IAAIa,IAAI,IAAIlB,kBAAkBC,WAAWJ,MAAMsB,IAAI,CAACjB,OAAO;oBAAEC;gBAAiB;gBAC9EF,SAAS,CAAC,EAAE,GAAGC,IAAI,CAAC,EAAE;gBACtBD,SAAS,CAAC,EAAE,GAAGC,IAAI,CAAC,EAAE;gBAEtB;YACF,KAAK;gBACH;QACJ;QAEA,OAAOG;IACT,GAAG,EAAE;AACP"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import * as array from "../../array.js";
|
|
2
|
+
import { distancePoint } from "../../math.js";
|
|
3
|
+
import { approximateRing } from "./approximate.js";
|
|
4
|
+
import { copySVGPath } from "./path.js";
|
|
5
|
+
function pointAlong([x1, y1], [x2, y2], progress) {
|
|
6
|
+
return [
|
|
7
|
+
x1 + (x2 - x1) * progress,
|
|
8
|
+
y1 + (y2 - y1) * progress
|
|
9
|
+
];
|
|
10
|
+
}
|
|
11
|
+
function polygonLength(points) {
|
|
12
|
+
return points.reduce((acc, point, index)=>acc + distancePoint(point, points[(index + 1) % points.length]), 0);
|
|
13
|
+
}
|
|
14
|
+
function addPoints(path, numPoints) {
|
|
15
|
+
if (numPoints === 0) {
|
|
16
|
+
return path;
|
|
17
|
+
}
|
|
18
|
+
const desiredLength = path.length + numPoints;
|
|
19
|
+
const step = polygonLength(path) / numPoints;
|
|
20
|
+
let index = 0;
|
|
21
|
+
let cursor = 0;
|
|
22
|
+
let insertAt = step / 2;
|
|
23
|
+
while(path.length < desiredLength){
|
|
24
|
+
const element = path[index];
|
|
25
|
+
const nextElement = path[(index + 1) % path.length];
|
|
26
|
+
const segment = distancePoint(element, nextElement);
|
|
27
|
+
if (insertAt <= cursor + segment) {
|
|
28
|
+
path.splice(index + 1, 0, segment ? pointAlong(element, nextElement, insertAt - cursor) : array.copy(element));
|
|
29
|
+
insertAt += step;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
cursor += segment;
|
|
33
|
+
index++;
|
|
34
|
+
}
|
|
35
|
+
return path;
|
|
36
|
+
}
|
|
37
|
+
function bisect(path, { maxSegmentLength }) {
|
|
38
|
+
for(let index = 0; index < path.length; index++){
|
|
39
|
+
const element = path[index];
|
|
40
|
+
let nextElement = path[(index + 1) % path.length];
|
|
41
|
+
while(distancePoint(element, nextElement) > maxSegmentLength){
|
|
42
|
+
nextElement = pointAlong(element, nextElement, 0.5);
|
|
43
|
+
path.splice(index + 1, 0, nextElement);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return path;
|
|
47
|
+
}
|
|
48
|
+
function normalizeRing(path, { maxSegmentLength }) {
|
|
49
|
+
return bisect(approximateRing(path, {
|
|
50
|
+
maxSegmentLength
|
|
51
|
+
}), {
|
|
52
|
+
maxSegmentLength
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function rotate(from, to) {
|
|
56
|
+
let min = Infinity;
|
|
57
|
+
let bestOffset = 0;
|
|
58
|
+
for(let offset = 0; offset < from.length; offset++){
|
|
59
|
+
let sumOfSquares = 0;
|
|
60
|
+
to.forEach((element, index)=>{
|
|
61
|
+
const d = distancePoint(from[(offset + index) % from.length], element);
|
|
62
|
+
sumOfSquares += d * d;
|
|
63
|
+
});
|
|
64
|
+
if (sumOfSquares < min) {
|
|
65
|
+
min = sumOfSquares;
|
|
66
|
+
bestOffset = offset;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (bestOffset) {
|
|
70
|
+
const spliced = from.splice(0, bestOffset);
|
|
71
|
+
from.splice(from.length, 0, ...spliced);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function interpolatePoint(from, to) {
|
|
75
|
+
return (progress)=>{
|
|
76
|
+
return [
|
|
77
|
+
from[0] + progress * (to[0] - from[0]),
|
|
78
|
+
from[1] + progress * (to[1] - from[1])
|
|
79
|
+
];
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function interpolatePoints(from, to) {
|
|
83
|
+
const interpolators = from.map((point, index)=>interpolatePoint(point, to[index]));
|
|
84
|
+
return (progress)=>{
|
|
85
|
+
const result = interpolators.map((interpolator, index)=>[
|
|
86
|
+
index === 0 ? 'M' : 'L',
|
|
87
|
+
interpolator(progress)
|
|
88
|
+
]);
|
|
89
|
+
result.push([
|
|
90
|
+
'Z',
|
|
91
|
+
[]
|
|
92
|
+
]);
|
|
93
|
+
return result;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function interpolateRing(from, to) {
|
|
97
|
+
const diff = from.length - to.length;
|
|
98
|
+
const fromRing = addPoints(from, -Math.min(diff, 0));
|
|
99
|
+
const toRing = addPoints(to, Math.max(diff, 0));
|
|
100
|
+
rotate(fromRing, toRing);
|
|
101
|
+
return interpolatePoints(fromRing, toRing);
|
|
102
|
+
}
|
|
103
|
+
export function interpolate(from, to, { maxSegmentLength = 1 } = {}) {
|
|
104
|
+
const fromRing = normalizeRing(from, {
|
|
105
|
+
maxSegmentLength
|
|
106
|
+
});
|
|
107
|
+
const toRing = normalizeRing(to, {
|
|
108
|
+
maxSegmentLength
|
|
109
|
+
});
|
|
110
|
+
const fn = interpolateRing(fromRing, toRing);
|
|
111
|
+
return (progress)=>{
|
|
112
|
+
if (progress < 1e-4) {
|
|
113
|
+
return copySVGPath(from);
|
|
114
|
+
} else if (progress > 1 - 1e-4) {
|
|
115
|
+
return copySVGPath(to);
|
|
116
|
+
}
|
|
117
|
+
return fn(progress);
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=interpolate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/svg/path/interpolate.ts"],"sourcesContent":["import { type DeepReadonly } from '../../../types';\nimport * as array from '../../array';\nimport { distancePoint } from '../../math';\nimport { approximateRing, type MaxSegmentLengthOptions } from './approximate';\nimport { copySVGPath, type DrawtoCommandSupport, type SVGPathSupport } from './path';\nimport { type Point, type Points } from './point';\n\nfunction pointAlong([x1, y1]: Readonly<Point>, [x2, y2]: Readonly<Point>, progress: number): Point {\n return [x1 + (x2 - x1) * progress, y1 + (y2 - y1) * progress];\n}\n\nfunction polygonLength(points: Points): number {\n return points.reduce(\n (acc, point, index) => acc + distancePoint(point, points[(index + 1) % points.length]),\n 0,\n );\n}\n\nfunction addPoints(path: Points, numPoints: number): Points {\n if (numPoints === 0) {\n return path;\n }\n\n const desiredLength = path.length + numPoints;\n\n const step = polygonLength(path) / numPoints;\n\n let index = 0;\n let cursor = 0;\n let insertAt = step / 2;\n\n while (path.length < desiredLength) {\n const element = path[index];\n const nextElement = path[(index + 1) % path.length];\n\n const segment = distancePoint(element, nextElement);\n\n if (insertAt <= cursor + segment) {\n path.splice(\n index + 1,\n 0,\n segment ? pointAlong(element, nextElement, insertAt - cursor) : array.copy(element), // TODO: test coverage\n );\n insertAt += step;\n continue;\n }\n\n cursor += segment;\n index++;\n }\n\n return path;\n}\n\nfunction bisect(path: Points, { maxSegmentLength }: Required<MaxSegmentLengthOptions>): Points {\n for (let index = 0; index < path.length; index++) {\n const element = path[index];\n let nextElement = path[(index + 1) % path.length];\n\n while (distancePoint(element, nextElement) > maxSegmentLength) {\n nextElement = pointAlong(element, nextElement, 0.5);\n\n path.splice(index + 1, 0, nextElement);\n }\n }\n\n return path;\n}\n\nfunction normalizeRing(\n path: DeepReadonly<SVGPathSupport>,\n { maxSegmentLength }: Required<MaxSegmentLengthOptions>,\n): Points {\n return bisect(approximateRing(path, { maxSegmentLength }), { maxSegmentLength });\n}\n\nfunction rotate(from: Points, to: Points) {\n let min = Infinity;\n let bestOffset = 0;\n\n for (let offset = 0; offset < from.length; offset++) {\n let sumOfSquares = 0;\n\n to.forEach((element, index) => {\n const d = distancePoint(from[(offset + index) % from.length], element);\n sumOfSquares += d * d;\n });\n\n if (sumOfSquares < min) {\n min = sumOfSquares;\n bestOffset = offset;\n }\n }\n\n if (bestOffset) {\n const spliced = from.splice(0, bestOffset);\n from.splice(from.length, 0, ...spliced);\n }\n}\n\nfunction interpolatePoint(from: Readonly<Point>, to: Readonly<Point>): (progress: number) => Point {\n return (progress: number) => {\n return [from[0] + progress * (to[0] - from[0]), from[1] + progress * (to[1] - from[1])];\n };\n}\n\nfunction interpolatePoints(from: Points, to: Points): (progress: number) => SVGPathSupport {\n const interpolators = from.map((point, index) => interpolatePoint(point, to[index]));\n\n return (progress: number) => {\n const result = interpolators.map<DrawtoCommandSupport>((interpolator, index) => [\n index === 0 ? 'M' : 'L',\n interpolator(progress),\n ]);\n result.push(['Z', []]);\n\n return result;\n };\n}\n\nfunction interpolateRing(from: Points, to: Points): (progress: number) => SVGPathSupport {\n const diff = from.length - to.length;\n\n const fromRing = addPoints(from, -Math.min(diff, 0));\n const toRing = addPoints(to, Math.max(diff, 0));\n\n rotate(fromRing, toRing);\n\n return interpolatePoints(fromRing, toRing);\n}\n\nexport function interpolate(\n from: DeepReadonly<SVGPathSupport>,\n to: DeepReadonly<SVGPathSupport>,\n { maxSegmentLength = 1 }: MaxSegmentLengthOptions = {},\n): (progress: number) => SVGPathSupport {\n const fromRing = normalizeRing(from, { maxSegmentLength });\n const toRing = normalizeRing(to, { maxSegmentLength });\n\n const fn = interpolateRing(fromRing, toRing);\n\n return (progress: number) => {\n if (progress < 1e-4) {\n return copySVGPath(from);\n } else if (progress > 1 - 1e-4) {\n return copySVGPath(to);\n }\n\n return fn(progress);\n };\n}\n"],"names":["array","distancePoint","approximateRing","copySVGPath","pointAlong","x1","y1","x2","y2","progress","polygonLength","points","reduce","acc","point","index","length","addPoints","path","numPoints","desiredLength","step","cursor","insertAt","element","nextElement","segment","splice","copy","bisect","maxSegmentLength","normalizeRing","rotate","from","to","min","Infinity","bestOffset","offset","sumOfSquares","forEach","d","spliced","interpolatePoint","interpolatePoints","interpolators","map","result","interpolator","push","interpolateRing","diff","fromRing","Math","toRing","max","interpolate","fn"],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as array from "../../array.js";
|
|
2
|
+
/**
|
|
3
|
+
* Преобразует `SVGPath` в строку
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import * as path from './path';
|
|
7
|
+
* import * as assert from 'node:assert/strict';
|
|
8
|
+
*
|
|
9
|
+
* assert.equal(
|
|
10
|
+
* path.svgPathToString([['M', [20, 40]], ['L', [40, 60]]]),
|
|
11
|
+
* 'M20,40L40,60',
|
|
12
|
+
* );
|
|
13
|
+
* ```
|
|
14
|
+
*/ export function svgPathToString(svgPath) {
|
|
15
|
+
// return svgPath.reduce((acc, value) => acc + value[0] + value[1].join(','), '');
|
|
16
|
+
let value = '';
|
|
17
|
+
// WARNING: При изменении кода рекомендуется проверить изменение
|
|
18
|
+
// времени исполнения на компоненте ExpressiveSpinner в профайлерах
|
|
19
|
+
for(let index = 0; index < svgPath.length; index++){
|
|
20
|
+
value += svgPath[index][0];
|
|
21
|
+
for(let valueIndex = 0; valueIndex < svgPath[index][1].length - 1; valueIndex++){
|
|
22
|
+
value += svgPath[index][1][valueIndex].toFixed(4) + ',';
|
|
23
|
+
}
|
|
24
|
+
if (svgPath[index][1].length) {
|
|
25
|
+
value += svgPath[index][1][svgPath[index][1].length - 1].toFixed(4);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Копирует массив команд для пути
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* import * as path from './path';
|
|
35
|
+
* import * as assert from 'node:assert/strict';
|
|
36
|
+
*
|
|
37
|
+
* const originalSVGPath = [['M', [20, 40]], ['L', [40, 60]]];
|
|
38
|
+
* const copiedSVGPath = path.copy(originalSVGPath);
|
|
39
|
+
*
|
|
40
|
+
* assert.deepEqual(copiedSVGPath, originalSVGPath);
|
|
41
|
+
* assert.notEqual(copiedSVGPath, originalSVGPath);
|
|
42
|
+
* ```
|
|
43
|
+
*/ export function copySVGPath(svgPath) {
|
|
44
|
+
return svgPath.map((value)=>[
|
|
45
|
+
value[0],
|
|
46
|
+
array.copy(value[1])
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/svg/path/path.ts"],"sourcesContent":["import type { DeepReadonly, DeepWriteable } from '../../../types';\nimport * as array from '../../array';\n\ntype Flag = 0 | 1;\n\nexport type CoordinatePair = [number, number];\nexport type Coordinate = [number];\nexport type CurvetoCoordinate = [number, number, number, number, number, number];\nexport type SmoothCurvetoCoordinate = [number, number, number, number];\nexport type QuadraticCurvetoCoordinate = [number, number, number, number];\nexport type EllipticalArcArgument = [number, number, number, Flag, Flag, number, number];\n\nexport type DrawtoCommandAbsolute =\n | ['M', CoordinatePair]\n | ['L', CoordinatePair]\n | ['H', Coordinate]\n | ['V', Coordinate]\n | ['C', CurvetoCoordinate]\n | ['S', SmoothCurvetoCoordinate]\n | ['Q', QuadraticCurvetoCoordinate]\n | ['T', CoordinatePair]\n | ['A', EllipticalArcArgument]\n | ['Z', []];\n\ntype DrawtoCommandRelative =\n | ['m', CoordinatePair]\n | ['l', CoordinatePair]\n | ['h', Coordinate]\n | ['v', Coordinate]\n | ['c', CurvetoCoordinate]\n | ['s', SmoothCurvetoCoordinate]\n | ['q', QuadraticCurvetoCoordinate]\n | ['t', CoordinatePair]\n | ['a', EllipticalArcArgument]\n | ['z', []];\n\nexport type DrawtoCommand = DrawtoCommandAbsolute | DrawtoCommandRelative;\n\nexport type SVGPath = DrawtoCommand[];\n\nexport type DrawtoCommandSupport =\n | ['M', CoordinatePair]\n | ['L', CoordinatePair]\n | ['C', CurvetoCoordinate]\n | ['Z', []];\n\n/**\n * Поддерживаем только `M`, `L`, `C`, и `Z` команды для оптимизации размера кода\n */\nexport type SVGPathSupport = DrawtoCommandSupport[];\n\n/**\n * Преобразует `SVGPath` в строку\n *\n * ```ts\n * import * as path from './path';\n * import * as assert from 'node:assert/strict';\n *\n * assert.equal(\n * path.svgPathToString([['M', [20, 40]], ['L', [40, 60]]]),\n * 'M20,40L40,60',\n * );\n * ```\n */\nexport function svgPathToString(svgPath: DeepReadonly<SVGPath>): string {\n // return svgPath.reduce((acc, value) => acc + value[0] + value[1].join(','), '');\n\n let value = '';\n\n // WARNING: При изменении кода рекомендуется проверить изменение\n // времени исполнения на компоненте ExpressiveSpinner в профайлерах\n for (let index = 0; index < svgPath.length; index++) {\n value += svgPath[index][0];\n for (let valueIndex = 0; valueIndex < svgPath[index][1].length - 1; valueIndex++) {\n value += svgPath[index][1][valueIndex].toFixed(4) + ',';\n }\n\n if (svgPath[index][1].length) {\n value += svgPath[index][1][svgPath[index][1].length - 1].toFixed(4);\n }\n }\n\n return value;\n}\n\n/**\n * Копирует массив команд для пути\n *\n * ```ts\n * import * as path from './path';\n * import * as assert from 'node:assert/strict';\n *\n * const originalSVGPath = [['M', [20, 40]], ['L', [40, 60]]];\n * const copiedSVGPath = path.copy(originalSVGPath);\n *\n * assert.deepEqual(copiedSVGPath, originalSVGPath);\n * assert.notEqual(copiedSVGPath, originalSVGPath);\n * ```\n */\nexport function copySVGPath<T extends DeepReadonly<SVGPath>>(svgPath: T): DeepWriteable<T> {\n return svgPath.map((value) => [value[0], array.copy(value[1])]) as DeepWriteable<T>;\n}\n"],"names":["array","svgPathToString","svgPath","value","index","length","valueIndex","toFixed","copySVGPath","map","copy"],"mappings":"AACA,YAAYA,WAAW,iBAAc;AAkDrC;;;;;;;;;;;;CAYC,GACD,OAAO,SAASC,gBAAgBC,OAA8B;IAC5D,kFAAkF;IAElF,IAAIC,QAAQ;IAEZ,gEAAgE;IAChE,mEAAmE;IACnE,IAAK,IAAIC,QAAQ,GAAGA,QAAQF,QAAQG,MAAM,EAAED,QAAS;QACnDD,SAASD,OAAO,CAACE,MAAM,CAAC,EAAE;QAC1B,IAAK,IAAIE,aAAa,GAAGA,aAAaJ,OAAO,CAACE,MAAM,CAAC,EAAE,CAACC,MAAM,GAAG,GAAGC,aAAc;YAChFH,SAASD,OAAO,CAACE,MAAM,CAAC,EAAE,CAACE,WAAW,CAACC,OAAO,CAAC,KAAK;QACtD;QAEA,IAAIL,OAAO,CAACE,MAAM,CAAC,EAAE,CAACC,MAAM,EAAE;YAC5BF,SAASD,OAAO,CAACE,MAAM,CAAC,EAAE,CAACF,OAAO,CAACE,MAAM,CAAC,EAAE,CAACC,MAAM,GAAG,EAAE,CAACE,OAAO,CAAC;QACnE;IACF;IAEA,OAAOJ;AACT;AAEA;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASK,YAA6CN,OAAU;IACrE,OAAOA,QAAQO,GAAG,CAAC,CAACN,QAAU;YAACA,KAAK,CAAC,EAAE;YAAEH,MAAMU,IAAI,CAACP,KAAK,CAAC,EAAE;SAAE;AAChE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/svg/path/point.ts"],"sourcesContent":["export type Point = [number, number];\nexport type Points = Point[];\n"],"names":[],"mappings":"AACA,WAA6B"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import * as array from "../../array.js";
|
|
2
|
+
import { copySVGPath } from "./path.js";
|
|
3
|
+
function transformDrawtoCommand(drawtoCommand, fn) {
|
|
4
|
+
if (drawtoCommand[0] === 'Z') {
|
|
5
|
+
return [
|
|
6
|
+
'Z',
|
|
7
|
+
[]
|
|
8
|
+
];
|
|
9
|
+
}
|
|
10
|
+
return [
|
|
11
|
+
drawtoCommand[0],
|
|
12
|
+
fn(drawtoCommand[1])
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
function transformSVGPath(path, fn) {
|
|
16
|
+
return path.map((item)=>transformDrawtoCommand(item, fn));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Масштабирует путь.
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* import * as transform from './transform';
|
|
23
|
+
* import * as assert from 'node:assert/strict';
|
|
24
|
+
*
|
|
25
|
+
* const scalePath = transform.scale(
|
|
26
|
+
* [['M', [10, 20]], ['L', [30, 40]]],
|
|
27
|
+
* 2,
|
|
28
|
+
* 2,
|
|
29
|
+
* );
|
|
30
|
+
*
|
|
31
|
+
* assert.deepEqual(
|
|
32
|
+
* scalePath,
|
|
33
|
+
* [['M', [20, 40]], ['L', [60, 80]]],
|
|
34
|
+
* );
|
|
35
|
+
* ```
|
|
36
|
+
*/ export function scale(path, scaleX, scaleY) {
|
|
37
|
+
if (scaleX === 1 && scaleY === 1) {
|
|
38
|
+
return copySVGPath(path);
|
|
39
|
+
}
|
|
40
|
+
const scaleTransform = (values)=>values.map((value, index)=>value * (index % 2 === 0 ? scaleX : scaleY));
|
|
41
|
+
return transformSVGPath(path, scaleTransform);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Перемещает путь по осям X и Y.
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* import * as transform from './transform';
|
|
48
|
+
* import * as assert from 'node:assert/strict';
|
|
49
|
+
*
|
|
50
|
+
* const translatePath = transform.translate(
|
|
51
|
+
* [['M', [10, 20]], ['L', [30, 40]]],
|
|
52
|
+
* 10,
|
|
53
|
+
* 20,
|
|
54
|
+
* );
|
|
55
|
+
*
|
|
56
|
+
* assert.deepEqual(
|
|
57
|
+
* translatePath,
|
|
58
|
+
* [['M', [20, 40]], ['L', [40, 60]]],
|
|
59
|
+
* );
|
|
60
|
+
* ```
|
|
61
|
+
*/ export function translate(path, translateX, translateY) {
|
|
62
|
+
if (translateX === 0 && translateY === 0) {
|
|
63
|
+
return copySVGPath(path);
|
|
64
|
+
}
|
|
65
|
+
const translateTransform = (values)=>values.map((value, index)=>value + (index % 2 === 0 ? translateX : translateY));
|
|
66
|
+
return transformSVGPath(path, translateTransform);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Вращает путь относительно заданной точки на заданный угол
|
|
70
|
+
*
|
|
71
|
+
* ```ts
|
|
72
|
+
* import * as transform from './transform';
|
|
73
|
+
* import * as assert from 'node:assert/strict';
|
|
74
|
+
*
|
|
75
|
+
* const rotatePath = transform.rotate(
|
|
76
|
+
* [['M', [10, 20]], ['L', [30, 40]]],
|
|
77
|
+
* 30,
|
|
78
|
+
* 30,
|
|
79
|
+
* 180
|
|
80
|
+
* );
|
|
81
|
+
*
|
|
82
|
+
* assert.deepEqual(
|
|
83
|
+
* rotatePath,
|
|
84
|
+
* [['M', [20, 40]], ['L', [60, 80]]],
|
|
85
|
+
* );
|
|
86
|
+
* ```
|
|
87
|
+
*/ export function rotate(path, originX, originY, angle) {
|
|
88
|
+
angle %= 360;
|
|
89
|
+
if (angle === 0) {
|
|
90
|
+
return copySVGPath(path);
|
|
91
|
+
}
|
|
92
|
+
const rad = angle * Math.PI / 180;
|
|
93
|
+
const cos = Math.cos(rad);
|
|
94
|
+
const sin = Math.sin(rad);
|
|
95
|
+
const rotateTransformAbsolute = (originValues)=>{
|
|
96
|
+
const values = array.copy(originValues);
|
|
97
|
+
for(let i = 0; i < values.length; i += 2){
|
|
98
|
+
const px = values[i];
|
|
99
|
+
const py = values[i + 1];
|
|
100
|
+
const qx = originX + (px - originX) * cos - (py - originY) * sin;
|
|
101
|
+
const qy = originY + (px - originX) * sin + (py - originY) * cos;
|
|
102
|
+
values[i] = qx;
|
|
103
|
+
values[i + 1] = qy;
|
|
104
|
+
}
|
|
105
|
+
return values;
|
|
106
|
+
};
|
|
107
|
+
return transformSVGPath(path, rotateTransformAbsolute);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/svg/path/transform.ts"],"sourcesContent":["import { type DeepReadonly } from '../../../types';\nimport * as array from '../../array';\nimport {\n type CoordinatePair,\n copySVGPath,\n type CurvetoCoordinate,\n type DrawtoCommandSupport,\n type SVGPathSupport,\n} from './path';\n\ntype TransformFn = <T extends CoordinatePair | CurvetoCoordinate>(values: Readonly<T>) => T;\n\nfunction transformDrawtoCommand(\n drawtoCommand: DeepReadonly<DrawtoCommandSupport>,\n fn: TransformFn,\n): DrawtoCommandSupport {\n if (drawtoCommand[0] === 'Z') {\n return ['Z', []];\n }\n\n return [drawtoCommand[0], fn(drawtoCommand[1])] as DrawtoCommandSupport;\n}\n\nfunction transformSVGPath(path: DeepReadonly<SVGPathSupport>, fn: TransformFn): SVGPathSupport {\n return path.map((item) => transformDrawtoCommand(item, fn));\n}\n\n/**\n * Масштабирует путь.\n *\n * ```ts\n * import * as transform from './transform';\n * import * as assert from 'node:assert/strict';\n *\n * const scalePath = transform.scale(\n * [['M', [10, 20]], ['L', [30, 40]]],\n * 2,\n * 2,\n * );\n *\n * assert.deepEqual(\n * scalePath,\n * [['M', [20, 40]], ['L', [60, 80]]],\n * );\n * ```\n */\nexport function scale(\n path: DeepReadonly<SVGPathSupport>,\n scaleX: number,\n scaleY: number,\n): SVGPathSupport {\n if (scaleX === 1 && scaleY === 1) {\n return copySVGPath(path);\n }\n\n const scaleTransform = <T extends number[]>(values: Readonly<T>): T =>\n values.map((value, index) => value * (index % 2 === 0 ? scaleX : scaleY)) as T;\n\n return transformSVGPath(path, scaleTransform);\n}\n\n/**\n * Перемещает путь по осям X и Y.\n *\n * ```ts\n * import * as transform from './transform';\n * import * as assert from 'node:assert/strict';\n *\n * const translatePath = transform.translate(\n * [['M', [10, 20]], ['L', [30, 40]]],\n * 10,\n * 20,\n * );\n *\n * assert.deepEqual(\n * translatePath,\n * [['M', [20, 40]], ['L', [40, 60]]],\n * );\n * ```\n */\nexport function translate(\n path: DeepReadonly<SVGPathSupport>,\n translateX: number,\n translateY: number,\n): SVGPathSupport {\n if (translateX === 0 && translateY === 0) {\n return copySVGPath(path);\n }\n\n const translateTransform = <T extends number[]>(values: Readonly<T>): T =>\n values.map((value, index) => value + (index % 2 === 0 ? translateX : translateY)) as T;\n\n return transformSVGPath(path, translateTransform);\n}\n\n/**\n * Вращает путь относительно заданной точки на заданный угол\n *\n * ```ts\n * import * as transform from './transform';\n * import * as assert from 'node:assert/strict';\n *\n * const rotatePath = transform.rotate(\n * [['M', [10, 20]], ['L', [30, 40]]],\n * 30,\n * 30,\n * 180\n * );\n *\n * assert.deepEqual(\n * rotatePath,\n * [['M', [20, 40]], ['L', [60, 80]]],\n * );\n * ```\n */\nexport function rotate(\n path: DeepReadonly<SVGPathSupport>,\n originX: number,\n originY: number,\n angle: number,\n): SVGPathSupport {\n angle %= 360;\n if (angle === 0) {\n return copySVGPath(path);\n }\n\n const rad = (angle * Math.PI) / 180;\n const cos = Math.cos(rad);\n const sin = Math.sin(rad);\n\n const rotateTransformAbsolute = <T extends number[]>(originValues: Readonly<T>): T => {\n const values = array.copy(originValues);\n\n for (let i = 0; i < values.length; i += 2) {\n const px = values[i];\n const py = values[i + 1];\n const qx = originX + (px - originX) * cos - (py - originY) * sin;\n const qy = originY + (px - originX) * sin + (py - originY) * cos;\n values[i] = qx;\n values[i + 1] = qy;\n }\n\n return values;\n };\n\n return transformSVGPath(path, rotateTransformAbsolute);\n}\n"],"names":["array","copySVGPath","transformDrawtoCommand","drawtoCommand","fn","transformSVGPath","path","map","item","scale","scaleX","scaleY","scaleTransform","values","value","index","translate","translateX","translateY","translateTransform","rotate","originX","originY","angle","rad","Math","PI","cos","sin","rotateTransformAbsolute","originValues","copy","i","length","px","py","qx","qy"],"mappings":"AACA,YAAYA,WAAW,iBAAc;AACrC,SAEEC,WAAW,QAIN,YAAS;AAIhB,SAASC,uBACPC,aAAiD,EACjDC,EAAe;IAEf,IAAID,aAAa,CAAC,EAAE,KAAK,KAAK;QAC5B,OAAO;YAAC;YAAK,EAAE;SAAC;IAClB;IAEA,OAAO;QAACA,aAAa,CAAC,EAAE;QAAEC,GAAGD,aAAa,CAAC,EAAE;KAAE;AACjD;AAEA,SAASE,iBAAiBC,IAAkC,EAAEF,EAAe;IAC3E,OAAOE,KAAKC,GAAG,CAAC,CAACC,OAASN,uBAAuBM,MAAMJ;AACzD;AAEA;;;;;;;;;;;;;;;;;;CAkBC,GACD,OAAO,SAASK,MACdH,IAAkC,EAClCI,MAAc,EACdC,MAAc;IAEd,IAAID,WAAW,KAAKC,WAAW,GAAG;QAChC,OAAOV,YAAYK;IACrB;IAEA,MAAMM,iBAAiB,CAAqBC,SAC1CA,OAAON,GAAG,CAAC,CAACO,OAAOC,QAAUD,QAASC,CAAAA,QAAQ,MAAM,IAAIL,SAASC,MAAK;IAExE,OAAON,iBAAiBC,MAAMM;AAChC;AAEA;;;;;;;;;;;;;;;;;;CAkBC,GACD,OAAO,SAASI,UACdV,IAAkC,EAClCW,UAAkB,EAClBC,UAAkB;IAElB,IAAID,eAAe,KAAKC,eAAe,GAAG;QACxC,OAAOjB,YAAYK;IACrB;IAEA,MAAMa,qBAAqB,CAAqBN,SAC9CA,OAAON,GAAG,CAAC,CAACO,OAAOC,QAAUD,QAASC,CAAAA,QAAQ,MAAM,IAAIE,aAAaC,UAAS;IAEhF,OAAOb,iBAAiBC,MAAMa;AAChC;AAEA;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,SAASC,OACdd,IAAkC,EAClCe,OAAe,EACfC,OAAe,EACfC,KAAa;IAEbA,SAAS;IACT,IAAIA,UAAU,GAAG;QACf,OAAOtB,YAAYK;IACrB;IAEA,MAAMkB,MAAM,AAACD,QAAQE,KAAKC,EAAE,GAAI;IAChC,MAAMC,MAAMF,KAAKE,GAAG,CAACH;IACrB,MAAMI,MAAMH,KAAKG,GAAG,CAACJ;IAErB,MAAMK,0BAA0B,CAAqBC;QACnD,MAAMjB,SAASb,MAAM+B,IAAI,CAACD;QAE1B,IAAK,IAAIE,IAAI,GAAGA,IAAInB,OAAOoB,MAAM,EAAED,KAAK,EAAG;YACzC,MAAME,KAAKrB,MAAM,CAACmB,EAAE;YACpB,MAAMG,KAAKtB,MAAM,CAACmB,IAAI,EAAE;YACxB,MAAMI,KAAKf,UAAU,AAACa,CAAAA,KAAKb,OAAM,IAAKM,MAAM,AAACQ,CAAAA,KAAKb,OAAM,IAAKM;YAC7D,MAAMS,KAAKf,UAAU,AAACY,CAAAA,KAAKb,OAAM,IAAKO,MAAM,AAACO,CAAAA,KAAKb,OAAM,IAAKK;YAC7Dd,MAAM,CAACmB,EAAE,GAAGI;YACZvB,MAAM,CAACmB,IAAI,EAAE,GAAGK;QAClB;QAEA,OAAOxB;IACT;IAEA,OAAOR,iBAAiBC,MAAMuB;AAChC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { ConfigProviderContext } from "../../components/ConfigProvider/ConfigProviderContext.js";
|
|
3
|
+
import { ColorSchemeContext, PlatformContext } from "../../components/ConfigProvider/ConfigProviderSubContexts.js";
|
|
3
4
|
import { DEFAULT_COLOR_SCHEME } from "../colorScheme/index.js";
|
|
4
5
|
import { Platform } from "../platform.js";
|
|
5
6
|
import { DEFAULT_TOKENS_CLASS_NAMES } from "./constants.js";
|
|
@@ -9,7 +10,9 @@ const getAppearanceTokenClassNameByPlatform = (platform, tokensClassNames)=>toke
|
|
|
9
10
|
/**
|
|
10
11
|
* @private
|
|
11
12
|
*/ export const useTokensClassName = ()=>{
|
|
12
|
-
const
|
|
13
|
+
const platform = React.useContext(PlatformContext);
|
|
14
|
+
const colorScheme = React.useContext(ColorSchemeContext) ?? DEFAULT_COLOR_SCHEME;
|
|
15
|
+
const { tokensClassNames } = React.useContext(ConfigProviderContext);
|
|
13
16
|
const colorSchemeClassName = isTokensClassNamesForPlatforms(tokensClassNames) ? getAppearanceTokenClassNameByPlatform(platform, tokensClassNames) : tokensClassNames;
|
|
14
17
|
const tokensClassName = getTokenClassNameByAppearance(colorScheme, colorSchemeClassName);
|
|
15
18
|
return tokensClassName ? tokensClassName : DEFAULT_TOKENS_CLASS_NAMES[platform][colorScheme];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/tokens/useTokenClassName.ts"],"sourcesContent":["import * as React from 'react';\nimport { ConfigProviderContext } from '../../components/ConfigProvider/ConfigProviderContext';\nimport { type ColorSchemeType, DEFAULT_COLOR_SCHEME } from '../colorScheme';\nimport { Platform, type PlatformType } from '../platform';\nimport { DEFAULT_TOKENS_CLASS_NAMES } from './constants';\nimport type {\n TokensClassNames,\n TokensClassNamesByAppearances,\n TokensClassNamesByPlatforms,\n} from './types';\n\nconst isTokensClassNamesForPlatforms = (\n tokensClassNames: TokensClassNames,\n): tokensClassNames is TokensClassNamesByPlatforms =>\n Platform.ANDROID in tokensClassNames ||\n Platform.IOS in tokensClassNames ||\n Platform.VKCOM in tokensClassNames;\n\nconst getTokenClassNameByAppearance = (\n colorScheme: ColorSchemeType,\n tokensClassNames?: TokensClassNamesByAppearances,\n) => (tokensClassNames ? tokensClassNames[colorScheme] : undefined);\n\nconst getAppearanceTokenClassNameByPlatform = (\n platform: PlatformType,\n tokensClassNames?: TokensClassNamesByPlatforms,\n) => (tokensClassNames ? tokensClassNames[platform] : undefined);\n\n/**\n * @private\n */\nexport const useTokensClassName = (): string => {\n const
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/tokens/useTokenClassName.ts"],"sourcesContent":["import * as React from 'react';\nimport { ConfigProviderContext } from '../../components/ConfigProvider/ConfigProviderContext';\nimport {\n ColorSchemeContext,\n PlatformContext,\n} from '../../components/ConfigProvider/ConfigProviderSubContexts';\nimport { type ColorSchemeType, DEFAULT_COLOR_SCHEME } from '../colorScheme';\nimport { Platform, type PlatformType } from '../platform';\nimport { DEFAULT_TOKENS_CLASS_NAMES } from './constants';\nimport type {\n TokensClassNames,\n TokensClassNamesByAppearances,\n TokensClassNamesByPlatforms,\n} from './types';\n\nconst isTokensClassNamesForPlatforms = (\n tokensClassNames: TokensClassNames,\n): tokensClassNames is TokensClassNamesByPlatforms =>\n Platform.ANDROID in tokensClassNames ||\n Platform.IOS in tokensClassNames ||\n Platform.VKCOM in tokensClassNames;\n\nconst getTokenClassNameByAppearance = (\n colorScheme: ColorSchemeType,\n tokensClassNames?: TokensClassNamesByAppearances,\n) => (tokensClassNames ? tokensClassNames[colorScheme] : undefined);\n\nconst getAppearanceTokenClassNameByPlatform = (\n platform: PlatformType,\n tokensClassNames?: TokensClassNamesByPlatforms,\n) => (tokensClassNames ? tokensClassNames[platform] : undefined);\n\n/**\n * @private\n */\nexport const useTokensClassName = (): string => {\n const platform = React.useContext(PlatformContext);\n const colorScheme = React.useContext(ColorSchemeContext) ?? DEFAULT_COLOR_SCHEME;\n const { tokensClassNames } = React.useContext(ConfigProviderContext);\n\n const colorSchemeClassName = isTokensClassNamesForPlatforms(tokensClassNames)\n ? getAppearanceTokenClassNameByPlatform(platform, tokensClassNames)\n : tokensClassNames;\n\n const tokensClassName = getTokenClassNameByAppearance(colorScheme, colorSchemeClassName);\n\n return tokensClassName ? tokensClassName : DEFAULT_TOKENS_CLASS_NAMES[platform][colorScheme];\n};\n"],"names":["React","ConfigProviderContext","ColorSchemeContext","PlatformContext","DEFAULT_COLOR_SCHEME","Platform","DEFAULT_TOKENS_CLASS_NAMES","isTokensClassNamesForPlatforms","tokensClassNames","ANDROID","IOS","VKCOM","getTokenClassNameByAppearance","colorScheme","undefined","getAppearanceTokenClassNameByPlatform","platform","useTokensClassName","useContext","colorSchemeClassName","tokensClassName"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,qBAAqB,QAAQ,2DAAwD;AAC9F,SACEC,kBAAkB,EAClBC,eAAe,QACV,+DAA4D;AACnE,SAA+BC,oBAAoB,QAAQ,0BAAiB;AAC5E,SAASC,QAAQ,QAA2B,iBAAc;AAC1D,SAASC,0BAA0B,QAAQ,iBAAc;AAOzD,MAAMC,iCAAiC,CACrCC,mBAEAH,SAASI,OAAO,IAAID,oBACpBH,SAASK,GAAG,IAAIF,oBAChBH,SAASM,KAAK,IAAIH;AAEpB,MAAMI,gCAAgC,CACpCC,aACAL,mBACIA,mBAAmBA,gBAAgB,CAACK,YAAY,GAAGC;AAEzD,MAAMC,wCAAwC,CAC5CC,UACAR,mBACIA,mBAAmBA,gBAAgB,CAACQ,SAAS,GAAGF;AAEtD;;CAEC,GACD,OAAO,MAAMG,qBAAqB;IAChC,MAAMD,WAAWhB,MAAMkB,UAAU,CAACf;IAClC,MAAMU,cAAcb,MAAMkB,UAAU,CAAChB,uBAAuBE;IAC5D,MAAM,EAAEI,gBAAgB,EAAE,GAAGR,MAAMkB,UAAU,CAACjB;IAE9C,MAAMkB,uBAAuBZ,+BAA+BC,oBACxDO,sCAAsCC,UAAUR,oBAChDA;IAEJ,MAAMY,kBAAkBR,8BAA8BC,aAAaM;IAEnE,OAAOC,kBAAkBA,kBAAkBd,0BAA0B,CAACU,SAAS,CAACH,YAAY;AAC9F,EAAE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { millisecondsInSecond } from "../date.js";
|
|
2
2
|
import { getFirstTouchEventData } from "../dom.js";
|
|
3
|
+
import { distance } from "../math.js";
|
|
3
4
|
const DEFAULT_INITIAL_TIME = 0;
|
|
4
5
|
/**
|
|
5
6
|
* JS имплементация класса из UIKIt iOS.
|
|
@@ -33,8 +34,7 @@ const DEFAULT_INITIAL_TIME = 0;
|
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
distance() {
|
|
36
|
-
|
|
37
|
-
return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
|
|
37
|
+
return distance(this.x1, this.y1, this.x2, this.y2);
|
|
38
38
|
}
|
|
39
39
|
velocity() {
|
|
40
40
|
const deltaTime = (Date.now() - this.initialTime) / millisecondsInSecond;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/touch/UIPanGestureRecognizer.ts"],"sourcesContent":["import { millisecondsInSecond } from '../date';\nimport { getFirstTouchEventData } from '../dom';\n\nexport type Direction = { axis: 'x' | 'y'; direction: -1 | 1 | null };\n\nexport type Coords = { x: number; y: number };\n\nconst DEFAULT_INITIAL_TIME = 0;\n\n/**\n * JS имплементация класса из UIKIt iOS.\n *\n * https://developer.apple.com/documentation/uikit/uipangesturerecognizer\n */\nexport class UIPanGestureRecognizer {\n private initialTime = DEFAULT_INITIAL_TIME;\n x1 = 0;\n y1 = 0;\n x2 = 0;\n y2 = 0;\n\n setInitialTimeOnce(): void {\n if (this.initialTime === DEFAULT_INITIAL_TIME) {\n this.initialTime = Date.now();\n }\n }\n\n setStartCoords(event: UIEvent): void {\n const { clientX, clientY } = getFirstTouchEventData(event);\n this.x1 = clientX;\n this.y1 = clientY;\n }\n\n setEndCoords(event: UIEvent): void {\n const { clientX, clientY } = getFirstTouchEventData(event);\n this.x2 = clientX;\n this.y2 = clientY;\n }\n\n delta(): Coords {\n return {\n x: this.x2 - this.x1,\n y: this.y2 - this.y1,\n };\n }\n\n distance(): number {\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/touch/UIPanGestureRecognizer.ts"],"sourcesContent":["import { millisecondsInSecond } from '../date';\nimport { getFirstTouchEventData } from '../dom';\nimport { distance } from '../math';\n\nexport type Direction = { axis: 'x' | 'y'; direction: -1 | 1 | null };\n\nexport type Coords = { x: number; y: number };\n\nconst DEFAULT_INITIAL_TIME = 0;\n\n/**\n * JS имплементация класса из UIKIt iOS.\n *\n * https://developer.apple.com/documentation/uikit/uipangesturerecognizer\n */\nexport class UIPanGestureRecognizer {\n private initialTime = DEFAULT_INITIAL_TIME;\n x1 = 0;\n y1 = 0;\n x2 = 0;\n y2 = 0;\n\n setInitialTimeOnce(): void {\n if (this.initialTime === DEFAULT_INITIAL_TIME) {\n this.initialTime = Date.now();\n }\n }\n\n setStartCoords(event: UIEvent): void {\n const { clientX, clientY } = getFirstTouchEventData(event);\n this.x1 = clientX;\n this.y1 = clientY;\n }\n\n setEndCoords(event: UIEvent): void {\n const { clientX, clientY } = getFirstTouchEventData(event);\n this.x2 = clientX;\n this.y2 = clientY;\n }\n\n delta(): Coords {\n return {\n x: this.x2 - this.x1,\n y: this.y2 - this.y1,\n };\n }\n\n distance(): number {\n return distance(this.x1, this.y1, this.x2, this.y2);\n }\n\n velocity(): Coords {\n const deltaTime = (Date.now() - this.initialTime) / millisecondsInSecond;\n\n if (deltaTime <= 0) {\n return { x: 0, y: 0 };\n }\n\n const { x, y } = this.delta();\n return { x: x / deltaTime, y: y / deltaTime };\n }\n\n angle(): number {\n const deltaX = this.x2 - this.x1;\n const deltaY = this.y2 - this.y1;\n const radians = Math.atan2(deltaY, deltaX);\n const degrees = (radians * 180) / Math.PI;\n return degrees < 0 ? 360 + degrees : degrees;\n }\n\n direction(): Direction {\n const { x, y } = this.delta();\n return Math.abs(x) > Math.abs(y)\n ? { axis: 'x', direction: x > 0 ? 1 : x < 0 ? -1 : null }\n : { axis: 'y', direction: y > 0 ? 1 : y < 0 ? -1 : null };\n }\n\n reset(): void {\n this.initialTime = DEFAULT_INITIAL_TIME;\n this.x1 = this.y1 = 0;\n this.x2 = this.y2 = 0;\n }\n}\n"],"names":["millisecondsInSecond","getFirstTouchEventData","distance","DEFAULT_INITIAL_TIME","UIPanGestureRecognizer","initialTime","x1","y1","x2","y2","setInitialTimeOnce","Date","now","setStartCoords","event","clientX","clientY","setEndCoords","delta","x","y","velocity","deltaTime","angle","deltaX","deltaY","radians","Math","atan2","degrees","PI","direction","abs","axis","reset"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,aAAU;AAC/C,SAASC,sBAAsB,QAAQ,YAAS;AAChD,SAASC,QAAQ,QAAQ,aAAU;AAMnC,MAAMC,uBAAuB;AAE7B;;;;CAIC,GACD,OAAO,MAAMC;IACHC,cAAcF,qBAAqB;IAC3CG,KAAK,EAAE;IACPC,KAAK,EAAE;IACPC,KAAK,EAAE;IACPC,KAAK,EAAE;IAEPC,qBAA2B;QACzB,IAAI,IAAI,CAACL,WAAW,KAAKF,sBAAsB;YAC7C,IAAI,CAACE,WAAW,GAAGM,KAAKC,GAAG;QAC7B;IACF;IAEAC,eAAeC,KAAc,EAAQ;QACnC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGf,uBAAuBa;QACpD,IAAI,CAACR,EAAE,GAAGS;QACV,IAAI,CAACR,EAAE,GAAGS;IACZ;IAEAC,aAAaH,KAAc,EAAQ;QACjC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGf,uBAAuBa;QACpD,IAAI,CAACN,EAAE,GAAGO;QACV,IAAI,CAACN,EAAE,GAAGO;IACZ;IAEAE,QAAgB;QACd,OAAO;YACLC,GAAG,IAAI,CAACX,EAAE,GAAG,IAAI,CAACF,EAAE;YACpBc,GAAG,IAAI,CAACX,EAAE,GAAG,IAAI,CAACF,EAAE;QACtB;IACF;IAEAL,WAAmB;QACjB,OAAOA,SAAS,IAAI,CAACI,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE;IACpD;IAEAY,WAAmB;QACjB,MAAMC,YAAY,AAACX,CAAAA,KAAKC,GAAG,KAAK,IAAI,CAACP,WAAW,AAAD,IAAKL;QAEpD,IAAIsB,aAAa,GAAG;YAClB,OAAO;gBAAEH,GAAG;gBAAGC,GAAG;YAAE;QACtB;QAEA,MAAM,EAAED,CAAC,EAAEC,CAAC,EAAE,GAAG,IAAI,CAACF,KAAK;QAC3B,OAAO;YAAEC,GAAGA,IAAIG;YAAWF,GAAGA,IAAIE;QAAU;IAC9C;IAEAC,QAAgB;QACd,MAAMC,SAAS,IAAI,CAAChB,EAAE,GAAG,IAAI,CAACF,EAAE;QAChC,MAAMmB,SAAS,IAAI,CAAChB,EAAE,GAAG,IAAI,CAACF,EAAE;QAChC,MAAMmB,UAAUC,KAAKC,KAAK,CAACH,QAAQD;QACnC,MAAMK,UAAU,AAACH,UAAU,MAAOC,KAAKG,EAAE;QACzC,OAAOD,UAAU,IAAI,MAAMA,UAAUA;IACvC;IAEAE,YAAuB;QACrB,MAAM,EAAEZ,CAAC,EAAEC,CAAC,EAAE,GAAG,IAAI,CAACF,KAAK;QAC3B,OAAOS,KAAKK,GAAG,CAACb,KAAKQ,KAAKK,GAAG,CAACZ,KAC1B;YAAEa,MAAM;YAAKF,WAAWZ,IAAI,IAAI,IAAIA,IAAI,IAAI,CAAC,IAAI;QAAK,IACtD;YAAEc,MAAM;YAAKF,WAAWX,IAAI,IAAI,IAAIA,IAAI,IAAI,CAAC,IAAI;QAAK;IAC5D;IAEAc,QAAc;QACZ,IAAI,CAAC7B,WAAW,GAAGF;QACnB,IAAI,CAACG,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG;QACpB,IAAI,CAACC,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG;IACtB;AACF"}
|