@vkontakte/vkui 6.6.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Alert/Alert.js +1 -1
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/AspectRatio/AspectRatio.js +1 -1
- package/dist/cjs/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/cjs/components/Badge/Badge.js +1 -1
- package/dist/cjs/components/Badge/Badge.js.map +1 -1
- package/dist/cjs/components/Button/Button.js +1 -1
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.d.ts +2 -2
- package/dist/cjs/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.js +4 -2
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarDay/CalendarDay.d.ts +1 -0
- package/dist/cjs/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/cjs/components/CalendarDay/CalendarDay.js +26 -14
- package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.d.ts +3 -3
- package/dist/cjs/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.js +5 -3
- package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js +5 -2
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cjs/components/CardGrid/CardGrid.js +1 -1
- package/dist/cjs/components/CardGrid/CardGrid.js.map +1 -1
- package/dist/cjs/components/Clickable/Clickable.d.ts +1 -0
- package/dist/cjs/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/Clickable.js +21 -6
- package/dist/cjs/components/Clickable/Clickable.js.map +1 -1
- package/dist/cjs/components/Clickable/useState.d.ts +39 -3
- package/dist/cjs/components/Clickable/useState.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/useState.js +110 -37
- package/dist/cjs/components/Clickable/useState.js.map +1 -1
- package/dist/cjs/components/Clickable/useStateWithDelay.d.ts +19 -1
- package/dist/cjs/components/Clickable/useStateWithDelay.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/useStateWithDelay.js +20 -4
- package/dist/cjs/components/Clickable/useStateWithDelay.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +3 -2
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +7 -7
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.d.ts +2 -2
- package/dist/cjs/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.js +5 -3
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +2 -2
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js +6 -4
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cjs/components/FormField/FormField.js +1 -1
- package/dist/cjs/components/FormField/FormField.js.map +1 -1
- package/dist/cjs/components/FormItem/FormItem.js +1 -1
- package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -1
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cjs/components/Input/Input.js +1 -1
- package/dist/cjs/components/Input/Input.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +4 -14
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootDesktop.d.ts.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +9 -1
- package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/cjs/components/NativeSelect/NativeSelect.js +1 -1
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/Panel/Panel.js +2 -2
- package/dist/cjs/components/Panel/Panel.js.map +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cjs/components/RichCell/RichCell.js +1 -1
- package/dist/cjs/components/RichCell/RichCell.js.map +1 -1
- package/dist/cjs/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
- package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js +4 -2
- package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +1 -1
- package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
- package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.js +23 -6
- package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
- package/dist/cjs/components/ScreenSpinner/ScreenSpinnerLoader.d.ts.map +1 -1
- package/dist/cjs/components/ScreenSpinner/ScreenSpinnerLoader.js +8 -3
- package/dist/cjs/components/ScreenSpinner/ScreenSpinnerLoader.js.map +1 -1
- package/dist/cjs/components/ScreenSpinner/context.d.ts +1 -0
- package/dist/cjs/components/ScreenSpinner/context.d.ts.map +1 -1
- package/dist/cjs/components/ScreenSpinner/context.js +2 -1
- package/dist/cjs/components/ScreenSpinner/context.js.map +1 -1
- package/dist/cjs/components/ScreenSpinner/types.d.ts +5 -0
- package/dist/cjs/components/ScreenSpinner/types.d.ts.map +1 -1
- package/dist/cjs/components/Search/Search.d.ts.map +1 -1
- package/dist/cjs/components/Search/Search.js +16 -11
- package/dist/cjs/components/Search/Search.js.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cjs/components/Select/Select.d.ts.map +1 -1
- package/dist/cjs/components/Select/Select.js +5 -1
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/Skeleton/Skeleton.d.ts +1 -1
- package/dist/cjs/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/cjs/components/Skeleton/Skeleton.js +85 -4
- package/dist/cjs/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/cjs/components/Slider/Slider.js +1 -1
- package/dist/cjs/components/Slider/Slider.js.map +1 -1
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js +1 -1
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cjs/components/TabsItem/TabsItem.js +1 -1
- package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.js +1 -1
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/ToolButton/ToolButton.d.ts +2 -1
- package/dist/cjs/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/cjs/components/ToolButton/ToolButton.js +20 -4
- package/dist/cjs/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/cjs/components/Typography/Caption/Caption.d.ts.map +1 -1
- package/dist/cjs/components/Typography/Caption/Caption.js +7 -1
- package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cjs/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
- package/dist/cjs/components/Typography/DisplayTitle/DisplayTitle.js +7 -1
- package/dist/cjs/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
- package/dist/cjs/components/Typography/Footnote/Footnote.d.ts.map +1 -1
- package/dist/cjs/components/Typography/Footnote/Footnote.js +7 -1
- package/dist/cjs/components/Typography/Footnote/Footnote.js.map +1 -1
- package/dist/cjs/components/Typography/Headline/Headline.d.ts +1 -1
- package/dist/cjs/components/Typography/Headline/Headline.d.ts.map +1 -1
- package/dist/cjs/components/Typography/Headline/Headline.js +2 -4
- package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/cjs/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
- package/dist/cjs/components/Typography/Paragraph/Paragraph.js +7 -1
- package/dist/cjs/components/Typography/Paragraph/Paragraph.js.map +1 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.js +1 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cjs/components/Typography/Text/Text.js +1 -1
- package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
- package/dist/cjs/components/Typography/Title/Title.d.ts.map +1 -1
- package/dist/cjs/components/Typography/Title/Title.js +7 -1
- package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
- package/dist/cjs/components/Typography/Typography.d.ts +7 -1
- package/dist/cjs/components/Typography/Typography.d.ts.map +1 -1
- package/dist/cjs/components/Typography/Typography.js +4 -2
- package/dist/cjs/components/Typography/Typography.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +5 -16
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/components/WriteBar/WriteBar.js +3 -1
- package/dist/cjs/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityConditionalRender/constants.js +4 -4
- package/dist/cjs/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
- package/dist/cjs/hooks/useWaitTransitionFinish.d.ts +1 -1
- package/dist/cjs/hooks/useWaitTransitionFinish.d.ts.map +1 -1
- package/dist/cjs/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/components/Alert/Alert.js +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.js +1 -1
- package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/components/Badge/Badge.js +1 -1
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Button/Button.js +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +2 -2
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +4 -2
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.d.ts +1 -0
- package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.js +26 -14
- package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.d.ts +3 -3
- package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.js +5 -3
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +5 -2
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CardGrid/CardGrid.js +1 -1
- package/dist/components/CardGrid/CardGrid.js.map +1 -1
- package/dist/components/Clickable/Clickable.d.ts +1 -0
- package/dist/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.js +21 -7
- package/dist/components/Clickable/Clickable.js.map +1 -1
- package/dist/components/Clickable/useState.d.ts +39 -3
- package/dist/components/Clickable/useState.d.ts.map +1 -1
- package/dist/components/Clickable/useState.js +110 -37
- package/dist/components/Clickable/useState.js.map +1 -1
- package/dist/components/Clickable/useStateWithDelay.d.ts +19 -1
- package/dist/components/Clickable/useStateWithDelay.d.ts.map +1 -1
- package/dist/components/Clickable/useStateWithDelay.js +38 -4
- package/dist/components/Clickable/useStateWithDelay.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +3 -2
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +7 -7
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts +2 -2
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/DateInput.js +5 -3
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts +2 -2
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +6 -4
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/FormField/FormField.js +1 -1
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/FormItem/FormItem.js +1 -1
- package/dist/components/FormItem/FormItem.js.map +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/components/Input/Input.js +1 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +4 -14
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootDesktop.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRootDesktop.js +9 -1
- package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js +1 -1
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/Panel/Panel.js +2 -2
- package/dist/components/Panel/Panel.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/RichCell/RichCell.js +1 -1
- package/dist/components/RichCell/RichCell.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinner.js +4 -2
- package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js +25 -8
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerLoader.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerLoader.js +8 -3
- package/dist/components/ScreenSpinner/ScreenSpinnerLoader.js.map +1 -1
- package/dist/components/ScreenSpinner/context.d.ts +1 -0
- package/dist/components/ScreenSpinner/context.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/context.js +2 -1
- package/dist/components/ScreenSpinner/context.js.map +1 -1
- package/dist/components/ScreenSpinner/types.d.ts +5 -0
- package/dist/components/ScreenSpinner/types.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/types.js.map +1 -1
- package/dist/components/Search/Search.d.ts.map +1 -1
- package/dist/components/Search/Search.js +17 -12
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +5 -1
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/Skeleton/Skeleton.js +85 -4
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Slider/Slider.js +1 -1
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/TabsItem/TabsItem.js +1 -1
- package/dist/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/components/Textarea/Textarea.js +1 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/ToolButton/ToolButton.d.ts +2 -1
- package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/components/ToolButton/ToolButton.js +9 -1
- package/dist/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/components/Typography/Caption/Caption.d.ts.map +1 -1
- package/dist/components/Typography/Caption/Caption.js +7 -1
- package/dist/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
- package/dist/components/Typography/DisplayTitle/DisplayTitle.js +7 -1
- package/dist/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
- package/dist/components/Typography/Footnote/Footnote.d.ts.map +1 -1
- package/dist/components/Typography/Footnote/Footnote.js +7 -1
- package/dist/components/Typography/Footnote/Footnote.js.map +1 -1
- package/dist/components/Typography/Headline/Headline.d.ts +1 -1
- package/dist/components/Typography/Headline/Headline.d.ts.map +1 -1
- package/dist/components/Typography/Headline/Headline.js +2 -4
- package/dist/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
- package/dist/components/Typography/Paragraph/Paragraph.js +7 -1
- package/dist/components/Typography/Paragraph/Paragraph.js.map +1 -1
- package/dist/components/Typography/Subhead/Subhead.js +1 -1
- package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/components/Typography/Text/Text.js +1 -1
- package/dist/components/Typography/Text/Text.js.map +1 -1
- package/dist/components/Typography/Title/Title.d.ts.map +1 -1
- package/dist/components/Typography/Title/Title.js +7 -1
- package/dist/components/Typography/Title/Title.js.map +1 -1
- package/dist/components/Typography/Typography.d.ts +7 -1
- package/dist/components/Typography/Typography.d.ts.map +1 -1
- package/dist/components/Typography/Typography.js +4 -2
- package/dist/components/Typography/Typography.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +5 -16
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/WriteBar/WriteBar.js +3 -1
- package/dist/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/components.css +313 -3
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +647 -301
- package/dist/cssm/components/Alert/Alert.js +1 -1
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/AspectRatio/AspectRatio.js +1 -1
- package/dist/cssm/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/cssm/components/Badge/Badge.js +1 -1
- package/dist/cssm/components/Badge/Badge.js.map +1 -1
- package/dist/cssm/components/Button/Button.js +1 -1
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.d.ts +2 -2
- package/dist/cssm/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js +3 -2
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.d.ts +1 -0
- package/dist/cssm/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.js +24 -13
- package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.d.ts +3 -3
- package/dist/cssm/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js +2 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +3 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CardGrid/CardGrid.js +1 -1
- package/dist/cssm/components/CardGrid/CardGrid.js.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.d.ts +1 -0
- package/dist/cssm/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.js +16 -6
- package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
- package/dist/cssm/components/Clickable/useState.d.ts +39 -3
- package/dist/cssm/components/Clickable/useState.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/useState.js +104 -36
- package/dist/cssm/components/Clickable/useState.js.map +1 -1
- package/dist/cssm/components/Clickable/useStateWithDelay.d.ts +19 -1
- package/dist/cssm/components/Clickable/useStateWithDelay.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/useStateWithDelay.js +38 -4
- package/dist/cssm/components/Clickable/useStateWithDelay.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.module.css +0 -14
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +3 -2
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -3
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.d.ts +2 -2
- package/dist/cssm/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +3 -2
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +2 -2
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -3
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.js +1 -1
- package/dist/cssm/components/FormField/FormField.js.map +1 -1
- package/dist/cssm/components/FormItem/FormItem.js +1 -1
- package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cssm/components/Input/Input.js +1 -1
- package/dist/cssm/components/Input/Input.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.d.ts.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +9 -1
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/Panel/Panel.js +2 -2
- package/dist/cssm/components/Panel/Panel.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +48 -3
- package/dist/cssm/components/RichCell/RichCell.js +1 -1
- package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +2 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +40 -0
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js +20 -7
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerLoader.d.ts.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerLoader.js +8 -3
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerLoader.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/context.d.ts +1 -0
- package/dist/cssm/components/ScreenSpinner/context.d.ts.map +1 -1
- package/dist/cssm/components/ScreenSpinner/context.js +2 -1
- package/dist/cssm/components/ScreenSpinner/context.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/types.d.ts +5 -0
- package/dist/cssm/components/ScreenSpinner/types.d.ts.map +1 -1
- package/dist/cssm/components/ScreenSpinner/types.js.map +1 -1
- package/dist/cssm/components/Search/Search.d.ts.map +1 -1
- package/dist/cssm/components/Search/Search.js +17 -12
- package/dist/cssm/components/Search/Search.js.map +1 -1
- package/dist/cssm/components/Search/Search.module.css +25 -13
- package/dist/cssm/components/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cssm/components/Select/Select.d.ts.map +1 -1
- package/dist/cssm/components/Select/Select.js +1 -1
- package/dist/cssm/components/Select/Select.js.map +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.d.ts +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.js +83 -3
- package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.module.css +30 -32
- package/dist/cssm/components/Slider/Slider.js +1 -1
- package/dist/cssm/components/Slider/Slider.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.js +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.js +1 -1
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/ToolButton/ToolButton.d.ts +2 -1
- package/dist/cssm/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/cssm/components/ToolButton/ToolButton.js +9 -1
- package/dist/cssm/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/cssm/components/ToolButton/ToolButton.module.css +13 -6
- package/dist/cssm/components/Typography/Caption/Caption.d.ts.map +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.js +7 -1
- package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.module.css +240 -0
- package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
- package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.js +7 -1
- package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
- package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.module.css +160 -0
- package/dist/cssm/components/Typography/Footnote/Footnote.d.ts.map +1 -1
- package/dist/cssm/components/Typography/Footnote/Footnote.js +10 -2
- package/dist/cssm/components/Typography/Footnote/Footnote.js.map +1 -1
- package/dist/cssm/components/Typography/Footnote/Footnote.module.css +80 -0
- package/dist/cssm/components/Typography/Headline/Headline.d.ts +1 -1
- package/dist/cssm/components/Typography/Headline/Headline.d.ts.map +1 -1
- package/dist/cssm/components/Typography/Headline/Headline.js +2 -3
- package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/cssm/components/Typography/Headline/Headline.module.css +48 -8
- package/dist/cssm/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
- package/dist/cssm/components/Typography/Paragraph/Paragraph.js +7 -1
- package/dist/cssm/components/Typography/Paragraph/Paragraph.js.map +1 -1
- package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +40 -0
- package/dist/cssm/components/Typography/Subhead/Subhead.js +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.module.css +32 -4
- package/dist/cssm/components/Typography/Text/Text.js +1 -1
- package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
- package/dist/cssm/components/Typography/Text/Text.module.css +29 -4
- package/dist/cssm/components/Typography/Title/Title.d.ts.map +1 -1
- package/dist/cssm/components/Typography/Title/Title.js +7 -1
- package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
- package/dist/cssm/components/Typography/Title/Title.module.css +120 -0
- package/dist/cssm/components/Typography/Typography.d.ts +7 -1
- package/dist/cssm/components/Typography/Typography.d.ts.map +1 -1
- package/dist/cssm/components/Typography/Typography.js +3 -2
- package/dist/cssm/components/Typography/Typography.js.map +1 -1
- package/dist/cssm/components/Typography/Typography.module.css +21 -3
- package/dist/cssm/components/WriteBar/WriteBar.js +1 -0
- package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityConditionalRender/constants.js +4 -4
- package/dist/cssm/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
- package/dist/cssm/hooks/useWaitTransitionFinish.d.ts +1 -1
- package/dist/cssm/hooks/useWaitTransitionFinish.d.ts.map +1 -1
- package/dist/cssm/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/cssm/styles/missedThemeTokens.css +22 -0
- package/dist/hooks/useAdaptivityConditionalRender/constants.js +4 -4
- package/dist/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
- package/dist/hooks/useWaitTransitionFinish.d.ts +1 -1
- package/dist/hooks/useWaitTransitionFinish.d.ts.map +1 -1
- package/dist/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/vkui.css +313 -3
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +647 -301
- package/package.json +3 -2
- package/src/components/Alert/Alert.tsx +1 -1
- package/src/components/AspectRatio/AspectRatio.tsx +1 -1
- package/src/components/Badge/Badge.tsx +1 -1
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Calendar/Calendar.tsx +3 -1
- package/src/components/CalendarDay/CalendarDay.tsx +16 -4
- package/src/components/CalendarDays/CalendarDays.tsx +9 -2
- package/src/components/CalendarRange/CalendarRange.tsx +4 -1
- package/src/components/CardGrid/CardGrid.tsx +1 -1
- package/src/components/Clickable/Clickable.tsx +21 -3
- package/src/components/Clickable/useState.tsx +195 -42
- package/src/components/Clickable/useStateWithDelay.tsx +40 -3
- package/src/components/Counter/Counter.module.css +0 -12
- package/src/components/CustomSelect/CustomSelect.tsx +11 -10
- package/src/components/CustomSelectOption/CustomSelectOption.tsx +1 -1
- package/src/components/DateInput/DateInput.tsx +4 -1
- package/src/components/DateRangeInput/DateRangeInput.tsx +4 -1
- package/src/components/FormField/FormField.tsx +1 -1
- package/src/components/FormItem/FormItem.tsx +1 -1
- package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +1 -1
- package/src/components/Input/Input.tsx +1 -1
- package/src/components/ModalRoot/ModalRootDesktop.tsx +13 -1
- package/src/components/NativeSelect/NativeSelect.tsx +1 -1
- package/src/components/Panel/Panel.tsx +2 -2
- package/src/components/PanelHeaderButton/PanelHeaderButton.module.css +44 -3
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +1 -1
- package/src/components/RichCell/RichCell.tsx +1 -1
- package/src/components/ScreenSpinner/ScreenSpinner.module.css +35 -0
- package/src/components/ScreenSpinner/ScreenSpinner.tsx +2 -1
- package/src/components/ScreenSpinner/ScreenSpinnerContainer.tsx +15 -4
- package/src/components/ScreenSpinner/ScreenSpinnerLoader.tsx +16 -3
- package/src/components/ScreenSpinner/context.ts +2 -0
- package/src/components/ScreenSpinner/types.tsx +5 -0
- package/src/components/Search/Search.module.css +24 -13
- package/src/components/Search/Search.tsx +19 -14
- package/src/components/SegmentedControl/SegmentedControl.tsx +1 -1
- package/src/components/Select/Select.tsx +4 -0
- package/src/components/SelectMimicry/SelectMimicry.tsx +1 -1
- package/src/components/SimpleCell/SimpleCell.tsx +1 -1
- package/src/components/Skeleton/Skeleton.module.css +30 -32
- package/src/components/Skeleton/Skeleton.tsx +90 -2
- package/src/components/Slider/Slider.tsx +1 -1
- package/src/components/SubnavigationButton/SubnavigationButton.tsx +1 -1
- package/src/components/TabsItem/TabsItem.tsx +1 -1
- package/src/components/Textarea/Textarea.tsx +1 -1
- package/src/components/ToolButton/ToolButton.module.css +12 -6
- package/src/components/ToolButton/ToolButton.tsx +15 -2
- package/src/components/Typography/Caption/Caption.module.css +240 -0
- package/src/components/Typography/Caption/Caption.tsx +14 -1
- package/src/components/Typography/DisplayTitle/DisplayTitle.module.css +160 -0
- package/src/components/Typography/DisplayTitle/DisplayTitle.tsx +13 -1
- package/src/components/Typography/Footnote/Footnote.module.css +80 -0
- package/src/components/Typography/Footnote/Footnote.tsx +24 -9
- package/src/components/Typography/Headline/Headline.module.css +48 -8
- package/src/components/Typography/Headline/Headline.tsx +1 -3
- package/src/components/Typography/Paragraph/Paragraph.module.css +40 -0
- package/src/components/Typography/Paragraph/Paragraph.tsx +13 -1
- package/src/components/Typography/Subhead/Subhead.module.css +32 -4
- package/src/components/Typography/Subhead/Subhead.tsx +1 -1
- package/src/components/Typography/Text/Text.module.css +29 -4
- package/src/components/Typography/Text/Text.tsx +1 -1
- package/src/components/Typography/Title/Title.module.css +120 -0
- package/src/components/Typography/Title/Title.tsx +13 -1
- package/src/components/Typography/Typography.module.css +20 -3
- package/src/components/Typography/Typography.tsx +10 -0
- package/src/components/WriteBar/WriteBar.tsx +1 -1
- package/src/hooks/useAdaptivityConditionalRender/constants.ts +4 -4
- package/src/hooks/useWaitTransitionFinish.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { isAfter } from 'date-fns';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport type { HasRootRef } from '../../types';\nimport {\n CalendarRange,\n type CalendarRangeProps,\n type DateRangeType,\n} from '../CalendarRange/CalendarRange';\nimport { FormField, type FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './DateRangeInput.module.css';\nimport dateInputStyles from '../DateInput/DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateRangeInput--sizeY-none'],\n ['compact']: styles['DateRangeInput--sizeY-compact'],\n};\n\nexport interface DateRangeInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange'>,\n Pick<\n CalendarRangeProps,\n | 'disablePast'\n | 'disableFuture'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n Omit<FormFieldProps, 'maxHeight'> {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n changeStartDayLabel?: string;\n changeStartMonthLabel?: string;\n changeStartYearLabel?: string;\n changeEndDayLabel?: string;\n changeEndMonthLabel?: string;\n changeEndYearLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n case 3:\n max = 31;\n break;\n case 1:\n case 4:\n max = 12;\n break;\n case 2:\n case 5:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarRangeProps['value']) => {\n const newValue = ['', '', '', '', '', ''];\n if (value?.[0]) {\n newValue[0] = String(value[0].getDate()).padStart(2, '0');\n newValue[1] = String(value[0].getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value[0].getFullYear()).padStart(4, '0');\n }\n if (value?.[1]) {\n newValue[3] = String(value[1].getDate()).padStart(2, '0');\n newValue[4] = String(value[1].getMonth() + 1).padStart(2, '0');\n newValue[5] = String(value[1].getFullYear()).padStart(4, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateRangeInput\n */\nexport const DateRangeInput = ({\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeDayLabel = 'Изменить день',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeStartDayLabel = 'Изменить день начала',\n changeStartMonthLabel = 'Изменить месяц начала',\n changeStartYearLabel = 'Изменить год начала',\n changeEndDayLabel = 'Изменить день окончания',\n changeEndMonthLabel = 'Изменить месяц окончания',\n changeEndYearLabel = 'Изменить год окончания',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateRangeInputProps): React.ReactNode => {\n const daysStartRef = React.useRef<HTMLSpanElement>(null);\n const monthsStartRef = React.useRef<HTMLSpanElement>(null);\n const yearsStartRef = React.useRef<HTMLSpanElement>(null);\n const daysEndRef = React.useRef<HTMLSpanElement>(null);\n const monthsEndRef = React.useRef<HTMLSpanElement>(null);\n const yearsEndRef = React.useRef<HTMLSpanElement>(null);\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n let isStartValid = true;\n let isEndValid = true;\n for (let i = 0; i <= 2; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isStartValid = false;\n }\n }\n for (let i = 3; i <= 5; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isEndValid = false;\n }\n }\n const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;\n const mask = 'dd.MM.yyyy';\n\n if (!isMatch(formattedStartValue, mask)) {\n isStartValid = false;\n }\n if (!isMatch(formattedEndValue, mask)) {\n isEndValid = false;\n }\n\n if (!isStartValid && !isEndValid) {\n return;\n }\n\n const valueExists = Array.isArray(value);\n const now = new Date();\n const start = isStartValid\n ? parse(formattedStartValue, mask, (valueExists && value?.[0]) || now)\n : null;\n const end = isEndValid\n ? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)\n : null;\n if (start && end && isAfter(end, start)) {\n onChange?.([start, end]);\n }\n },\n [onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement: 5,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (newValue: DateRangeType | undefined) => {\n onChange?.(newValue);\n if (closeOnChange && newValue?.[1] && newValue[1] !== value?.[1]) {\n removeFocusFromField();\n }\n },\n [onChange, closeOnChange, value, removeFocusFromField],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" onClick={clear}>\n <VisuallyHidden>{clearFieldLabel}</VisuallyHidden>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" onClick={openCalendar}>\n <VisuallyHidden>{showCalendarLabel}</VisuallyHidden>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? `${value[0] ? format(value[0], 'dd.MM.yyyy') : ''} - ${\n value[1] ? format(value[1], 'dd.MM.yyyy') : ''\n }`\n : ''\n }\n />\n <Text className={dateInputStyles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeStartDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeStartMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeStartYearLabel}\n />\n <InputLikeDivider>{' — '}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeEndDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeEndMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n label={changeEndYearLabel}\n />\n </Text>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetByMainAxis={8} placement={calendarPlacement}>\n <CalendarRange\n value={value}\n onChange={onCalendarChange}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n disablePickers={disablePickers}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","isAfter","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isMatch","parse","CalendarRange","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","VisuallyHidden","sizeYClassNames","none","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","DateRangeInput","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthLabel","nextMonthLabel","changeDayLabel","changeMonthLabel","changeYearLabel","changeStartDayLabel","changeStartMonthLabel","changeStartYearLabel","changeEndDayLabel","changeEndMonthLabel","changeEndYearLabel","clearFieldLabel","showCalendarLabel","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysStartRef","useRef","monthsStartRef","yearsStartRef","daysEndRef","monthsEndRef","yearsEndRef","onInternalValueChange","useCallback","internalValue","isStartValid","isEndValid","i","formattedStartValue","formattedEndValue","mask","valueExists","Array","isArray","now","Date","start","end","refs","useMemo","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","maxElement","sizeY","handleRootRef","onCalendarChange","after","hoverMode","input","type","onKeyDown","onElementSelect","label","targetRef","offsetByMainAxis","placement","onClose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { isAfter } from 'date-fns';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport type { HasRootRef } from '../../types';\nimport {\n CalendarRange,\n type CalendarRangeProps,\n type DateRangeType,\n} from '../CalendarRange/CalendarRange';\nimport { FormField, type FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './DateRangeInput.module.css';\nimport dateInputStyles from '../DateInput/DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateRangeInput--sizeY-none'],\n compact: styles['DateRangeInput--sizeY-compact'],\n};\n\nexport interface DateRangeInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange'>,\n Pick<\n CalendarRangeProps,\n | 'disablePast'\n | 'disableFuture'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n | 'renderDayContent'\n >,\n HasRootRef<HTMLDivElement>,\n Omit<FormFieldProps, 'maxHeight'> {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n changeStartDayLabel?: string;\n changeStartMonthLabel?: string;\n changeStartYearLabel?: string;\n changeEndDayLabel?: string;\n changeEndMonthLabel?: string;\n changeEndYearLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n case 3:\n max = 31;\n break;\n case 1:\n case 4:\n max = 12;\n break;\n case 2:\n case 5:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarRangeProps['value']) => {\n const newValue = ['', '', '', '', '', ''];\n if (value?.[0]) {\n newValue[0] = String(value[0].getDate()).padStart(2, '0');\n newValue[1] = String(value[0].getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value[0].getFullYear()).padStart(4, '0');\n }\n if (value?.[1]) {\n newValue[3] = String(value[1].getDate()).padStart(2, '0');\n newValue[4] = String(value[1].getMonth() + 1).padStart(2, '0');\n newValue[5] = String(value[1].getFullYear()).padStart(4, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateRangeInput\n */\nexport const DateRangeInput = ({\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeDayLabel = 'Изменить день',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeStartDayLabel = 'Изменить день начала',\n changeStartMonthLabel = 'Изменить месяц начала',\n changeStartYearLabel = 'Изменить год начала',\n changeEndDayLabel = 'Изменить день окончания',\n changeEndMonthLabel = 'Изменить месяц окончания',\n changeEndYearLabel = 'Изменить год окончания',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n renderDayContent,\n ...props\n}: DateRangeInputProps): React.ReactNode => {\n const daysStartRef = React.useRef<HTMLSpanElement>(null);\n const monthsStartRef = React.useRef<HTMLSpanElement>(null);\n const yearsStartRef = React.useRef<HTMLSpanElement>(null);\n const daysEndRef = React.useRef<HTMLSpanElement>(null);\n const monthsEndRef = React.useRef<HTMLSpanElement>(null);\n const yearsEndRef = React.useRef<HTMLSpanElement>(null);\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n let isStartValid = true;\n let isEndValid = true;\n for (let i = 0; i <= 2; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isStartValid = false;\n }\n }\n for (let i = 3; i <= 5; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isEndValid = false;\n }\n }\n const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;\n const mask = 'dd.MM.yyyy';\n\n if (!isMatch(formattedStartValue, mask)) {\n isStartValid = false;\n }\n if (!isMatch(formattedEndValue, mask)) {\n isEndValid = false;\n }\n\n if (!isStartValid && !isEndValid) {\n return;\n }\n\n const valueExists = Array.isArray(value);\n const now = new Date();\n const start = isStartValid\n ? parse(formattedStartValue, mask, (valueExists && value?.[0]) || now)\n : null;\n const end = isEndValid\n ? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)\n : null;\n if (start && end && isAfter(end, start)) {\n onChange?.([start, end]);\n }\n },\n [onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement: 5,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (newValue: DateRangeType | undefined) => {\n onChange?.(newValue);\n if (closeOnChange && newValue?.[1] && newValue[1] !== value?.[1]) {\n removeFocusFromField();\n }\n },\n [onChange, closeOnChange, value, removeFocusFromField],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" onClick={clear}>\n <VisuallyHidden>{clearFieldLabel}</VisuallyHidden>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" onClick={openCalendar}>\n <VisuallyHidden>{showCalendarLabel}</VisuallyHidden>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? `${value[0] ? format(value[0], 'dd.MM.yyyy') : ''} - ${\n value[1] ? format(value[1], 'dd.MM.yyyy') : ''\n }`\n : ''\n }\n />\n <Text className={dateInputStyles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeStartDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeStartMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeStartYearLabel}\n />\n <InputLikeDivider>{' — '}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeEndDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeEndMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n label={changeEndYearLabel}\n />\n </Text>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetByMainAxis={8} placement={calendarPlacement}>\n <CalendarRange\n value={value}\n onChange={onCalendarChange}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n disablePickers={disablePickers}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n renderDayContent={renderDayContent}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","isAfter","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isMatch","parse","CalendarRange","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","VisuallyHidden","sizeYClassNames","none","compact","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","DateRangeInput","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthLabel","nextMonthLabel","changeDayLabel","changeMonthLabel","changeYearLabel","changeStartDayLabel","changeStartMonthLabel","changeStartYearLabel","changeEndDayLabel","changeEndMonthLabel","changeEndYearLabel","clearFieldLabel","showCalendarLabel","prevMonthIcon","nextMonthIcon","disableCalendar","renderDayContent","props","daysStartRef","useRef","monthsStartRef","yearsStartRef","daysEndRef","monthsEndRef","yearsEndRef","onInternalValueChange","useCallback","internalValue","isStartValid","isEndValid","i","formattedStartValue","formattedEndValue","mask","valueExists","Array","isArray","now","Date","start","end","refs","useMemo","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","maxElement","sizeY","handleRootRef","onCalendarChange","after","hoverMode","input","type","onKeyDown","onElementSelect","label","targetRef","offsetByMainAxis","placement","onClose"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { useFocusVisibleClassName } from '../../hooks/useFocusVisibleClassName';
|
|
|
10
10
|
import { useFocusWithin } from '../../hooks/useFocusWithin';
|
|
11
11
|
const sizeYClassNames = {
|
|
12
12
|
none: "vkuiFormField--sizeY-none",
|
|
13
|
-
|
|
13
|
+
compact: "vkuiFormField--sizeY-compact"
|
|
14
14
|
};
|
|
15
15
|
const stylesStatus = {
|
|
16
16
|
error: "vkuiFormField--status-error",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/FormField/FormField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useFocusVisibleClassName } from '../../hooks/useFocusVisibleClassName';\nimport { useFocusWithin } from '../../hooks/useFocusWithin';\nimport type { HasComponent, HasRootRef } from '../../types';\nimport styles from './FormField.module.css';\n\nconst sizeYClassNames = {\n none: styles['FormField--sizeY-none'],\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/FormField/FormField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useFocusVisibleClassName } from '../../hooks/useFocusVisibleClassName';\nimport { useFocusWithin } from '../../hooks/useFocusWithin';\nimport type { HasComponent, HasRootRef } from '../../types';\nimport styles from './FormField.module.css';\n\nconst sizeYClassNames = {\n none: styles['FormField--sizeY-none'],\n compact: styles['FormField--sizeY-compact'],\n};\n\nconst stylesStatus = {\n error: styles['FormField--status-error'],\n valid: styles['FormField--status-valid'],\n};\n\nconst iconAlignClassNames = {\n center: undefined,\n start: styles['FormField__icon--align-start'],\n end: styles['FormField__icon--align-end'],\n};\n\nconst renderIcon = (icon: React.ReactNode, align: FieldIconsAlign, className: string) => {\n return (\n <div className={styles['FormField__iconWrapper']}>\n <span className={classNames(iconAlignClassNames[align], className)}>{icon}</span>\n </div>\n );\n};\n\nexport type FieldIconsAlign = 'start' | 'center' | 'end';\n\nexport interface FormFieldProps {\n status?: 'default' | 'error' | 'valid';\n /**\n * Добавляет иконку слева.\n *\n * Рекомендации:\n *\n * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.\n * - Используйте [IconButton](https://vkcom.github.io/VKUI/#/IconButton), если вам нужна кликабельная иконка.\n */\n before?: React.ReactNode;\n /**\n * Вертикальное выравнивание иконки слева\n */\n beforeAlign?: FieldIconsAlign;\n /**\n * Добавляет иконку справа.\n *\n * Рекомендации:\n *\n * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.\n * - Используйте [IconButton](https://vkcom.github.io/VKUI/#/IconButton), если вам нужна кликабельная иконка.\n */\n after?: React.ReactNode;\n /**\n * Вертикальное выравнивание иконки справа\n */\n afterAlign?: FieldIconsAlign;\n /**\n * Режим отображения.\n *\n * - `default` — показывает фон, обводку и, при наличии, текст-подсказку.\n * - `plain` — показывает только текст-подсказку.\n */\n mode?: 'default' | 'plain';\n /**\n * Максимальная высота поля\n */\n maxHeight?: number;\n}\n\nexport interface FormFieldOwnProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent,\n FormFieldProps {\n disabled?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FormField\n */\nexport const FormField = ({\n Component = 'span',\n status = 'default',\n children,\n getRootRef,\n before,\n after,\n beforeAlign = 'center',\n afterAlign = 'center',\n disabled,\n mode = 'default',\n className,\n maxHeight,\n style,\n ...restProps\n}: FormFieldOwnProps): React.ReactNode => {\n const elRef = useExternRef(getRootRef);\n const { sizeY = 'none' } = useAdaptivity();\n const [hover, setHover] = React.useState(false);\n\n const focusWithin = useFocusWithin(elRef);\n const focusVisibleClassNames = useFocusVisibleClassName({\n focusVisible: focusWithin,\n mode: styles['FormField--focus-visible'],\n });\n\n const handleMouseEnter = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(true);\n };\n\n const handleMouseLeave = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(false);\n };\n\n return (\n <Component\n {...restProps}\n ref={elRef}\n style={\n maxHeight !== undefined\n ? {\n ...style,\n maxHeight,\n }\n : style\n }\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className={classNames(\n styles['FormField'],\n mode === 'default' && styles['FormField--mode-default'],\n status !== 'default' && stylesStatus[status],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n disabled && styles['FormField--disabled'],\n !disabled && hover && styles['FormField--hover'],\n focusVisibleClassNames,\n className,\n )}\n >\n <div className={styles['FormField_scrollContainer']}>\n {before && renderIcon(before, beforeAlign, styles['FormField__before'])}\n <div className={styles['FormField__content']}>{children}</div>\n {after &&\n renderIcon(\n after,\n afterAlign,\n classNames(styles['FormField__after'], 'vkuiInternalFormField__after'),\n )}\n </div>\n <span aria-hidden className={styles['FormField__border']} />\n </Component>\n );\n};\n"],"names":["React","classNames","useAdaptivity","useExternRef","useFocusVisibleClassName","useFocusWithin","sizeYClassNames","none","compact","stylesStatus","error","valid","iconAlignClassNames","center","undefined","start","end","renderIcon","icon","align","className","div","span","FormField","Component","status","children","getRootRef","before","after","beforeAlign","afterAlign","disabled","mode","maxHeight","style","restProps","elRef","sizeY","hover","setHover","useState","focusWithin","focusVisibleClassNames","focusVisible","handleMouseEnter","e","stopPropagation","handleMouseLeave","ref","onMouseEnter","onMouseLeave","aria-hidden"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,wBAAwB,QAAQ,uCAAuC;AAChF,SAASC,cAAc,QAAQ,6BAA6B;AAI5D,MAAMC,kBAAkB;IACtBC,IAAI;IACJC,OAAO;AACT;AAEA,MAAMC,eAAe;IACnBC,KAAK;IACLC,KAAK;AACP;AAEA,MAAMC,sBAAsB;IAC1BC,QAAQC;IACRC,KAAK;IACLC,GAAG;AACL;AAEA,MAAMC,aAAa,CAACC,MAAuBC,OAAwBC;IACjE,qBACE,KAACC;QAAID,SAAS;kBACZ,cAAA,KAACE;YAAKF,WAAWnB,WAAWW,mBAAmB,CAACO,MAAM,EAAEC;sBAAaF;;;AAG3E;AAqDA;;CAEC,GACD,OAAO,MAAMK,YAAY;QAAC,EACxBC,YAAY,MAAM,EAClBC,SAAS,SAAS,EAClBC,QAAQ,EACRC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,cAAc,QAAQ,EACtBC,aAAa,QAAQ,EACrBC,QAAQ,EACRC,OAAO,SAAS,EAChBb,SAAS,EACTc,SAAS,EACTC,KAAK,EAEa,WADfC;QAbHZ;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAb;QACAc;QACAC;;IAGA,MAAME,QAAQlC,aAAawB;IAC3B,MAAM,EAAEW,QAAQ,MAAM,EAAE,GAAGpC;IAC3B,MAAM,CAACqC,OAAOC,SAAS,GAAGxC,MAAMyC,QAAQ,CAAC;IAEzC,MAAMC,cAAcrC,eAAegC;IACnC,MAAMM,yBAAyBvC,yBAAyB;QACtDwC,cAAcF;QACdT,IAAI;IACN;IAEA,MAAMY,mBAAmB,CAACC;QACxBA,EAAEC,eAAe;QACjBP,SAAS;IACX;IAEA,MAAMQ,mBAAmB,CAACF;QACxBA,EAAEC,eAAe;QACjBP,SAAS;IACX;IAEA,qBACE,MAAChB,mDACKY;QACJa,KAAKZ;QACLF,OACED,cAAcpB,YACV,wCACKqB;YACHD;aAEFC;QAENe,cAAcL;QACdM,cAAcH;QACd5B,WAAWnB,4BAETgC,SAAS,4CACTR,WAAW,aAAahB,YAAY,CAACgB,OAAO,EAC5Ca,UAAU,aAAahC,eAAe,CAACgC,MAAM,EAC7CN,uCACA,CAACA,YAAYO,iCACbI,wBACAvB;;0BAGF,MAACC;gBAAID,SAAS;;oBACXQ,UAAUX,WAAWW,QAAQE;kCAC9B,KAACT;wBAAID,SAAS;kCAAiCM;;oBAC9CG,SACCZ,WACEY,OACAE,YACA9B,mCAAuC;;;0BAG7C,KAACqB;gBAAK8B,aAAW;gBAAChC,SAAS;;;;AAGjC,EAAE"}
|
|
@@ -16,7 +16,7 @@ import { FormItemTopLabel } from './FormItemTop/FormItemTopLabel';
|
|
|
16
16
|
import { FormItemContext } from './context';
|
|
17
17
|
const sizeYClassNames = {
|
|
18
18
|
none: classNames("vkuiFormItem--sizeY-none", 'vkuiInternalFormItem--sizeY-none'),
|
|
19
|
-
|
|
19
|
+
compact: classNames("vkuiFormItem--sizeY-compact", 'vkuiInternalFormItem--sizeY-compact')
|
|
20
20
|
};
|
|
21
21
|
const stylesStatus = {
|
|
22
22
|
error: classNames("vkuiFormItem--status-error", 'vkuiInternalFormItem--status-error'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/FormItem/FormItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport type { HasComponent, HasRootRef } from '../../types';\nimport { Removable, type RemovableProps } from '../Removable/Removable';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { FormItemTop } from './FormItemTop/FormItemTop';\nimport { FormItemTopAside } from './FormItemTop/FormItemTopAside';\nimport { FormItemTopLabel } from './FormItemTop/FormItemTopLabel';\nimport { FormItemContext } from './context';\nimport styles from './FormItem.module.css';\n\nconst sizeYClassNames = {\n none: classNames(styles['FormItem--sizeY-none'], 'vkuiInternalFormItem--sizeY-none'),\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/FormItem/FormItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport type { HasComponent, HasRootRef } from '../../types';\nimport { Removable, type RemovableProps } from '../Removable/Removable';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { FormItemTop } from './FormItemTop/FormItemTop';\nimport { FormItemTopAside } from './FormItemTop/FormItemTopAside';\nimport { FormItemTopLabel } from './FormItemTop/FormItemTopLabel';\nimport { FormItemContext } from './context';\nimport styles from './FormItem.module.css';\n\nconst sizeYClassNames = {\n none: classNames(styles['FormItem--sizeY-none'], 'vkuiInternalFormItem--sizeY-none'),\n compact: classNames(styles['FormItem--sizeY-compact'], 'vkuiInternalFormItem--sizeY-compact'),\n};\n\nconst stylesStatus = {\n error: classNames(styles['FormItem--status-error'], 'vkuiInternalFormItem--status-error'),\n valid: classNames(styles['FormItem--status-valid'], 'vkuiInternalFormItem--status-valid'),\n};\n\nexport interface FormItemProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent,\n RemovableProps {\n top?: React.ReactNode;\n topId?: string;\n /**\n * Многострочный вывод заголовка. По умолчанию текст не переносится при переполнении.\n */\n topMultiline?: boolean;\n /**\n * Позволяет поменять тег используемый для top\n * Если оставить пустым, то тег top будет span.\n * Если оставить пустым и использовать htmlFor, то тег top будет label.\n */\n topComponent?: React.ElementType;\n /**\n * Позволяет полностью заменить шапку поля пользовательским компонентом.\n *\n * @since 6.1.0\n *\n * TODO [>=7]: удалить и использовать top - оно будет принимать либо строку, либо подкомпонент\n */\n topNode?: React.ReactNode;\n bottom?: React.ReactNode;\n /**\n * Передаётся при использовании `bottom`.\n *\n * Должен совпадать с `aria-describedby`, который передаётся в компонент, отвечающий за пользовательский ввод.\n */\n bottomId?: string;\n status?: 'default' | 'error' | 'valid';\n /**\n * Дает возможность удалить `FormItem`. Рекомендуется использовать только для `Input` или `Select`.\n *\n * Режим `indent` предназначен для визуального отступа\n */\n removable?: boolean | 'indent';\n /**\n * Удаляет внешние отступы вокруг компонента\n * @since 5.8.0\n */\n noPadding?: boolean;\n /**\n * Помечает поле обязательным\n */\n required?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FormItem\n */\nexport const FormItem: React.FC<FormItemProps> & {\n Top: typeof FormItemTop;\n TopLabel: typeof FormItemTopLabel;\n TopAside: typeof FormItemTopAside;\n} = ({\n children,\n top,\n topId,\n topMultiline,\n topComponent: topComponentProp,\n bottom,\n status = 'default',\n removable,\n onRemove,\n removePlaceholder = 'Удалить',\n getRootRef,\n htmlFor,\n bottomId,\n noPadding,\n topNode,\n required = false,\n ...restProps\n}: FormItemProps) => {\n const rootEl = useExternRef(getRootRef);\n const { sizeY = 'none' } = useAdaptivity();\n\n const wrappedChildren = (\n <React.Fragment>\n {hasReactNode(topNode) ? (\n topNode\n ) : hasReactNode(top) ? (\n <FormItemTop>\n <FormItemTopLabel\n htmlFor={htmlFor}\n Component={topComponentProp}\n multiline={topMultiline}\n id={topId}\n >\n {top}\n </FormItemTopLabel>\n </FormItemTop>\n ) : null}\n {children}\n {hasReactNode(bottom) && (\n <Footnote\n className={styles['FormItem__bottom']}\n id={bottomId}\n role={status === 'error' ? 'alert' : undefined}\n >\n {bottom}\n </Footnote>\n )}\n </React.Fragment>\n );\n\n const context = useObjectMemo({ required, topMultiline });\n\n return (\n <RootComponent\n {...restProps}\n getRootRef={rootEl}\n baseClassName={classNames(\n styles['FormItem'],\n !noPadding && styles['FormItem--withPadding'],\n 'vkuiInternalFormItem',\n status !== 'default' && stylesStatus[status],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n hasReactNode(top) &&\n classNames(styles['FormItem--withTop'], 'vkuiInternalFormItem--withTop'),\n removable && classNames(styles['FormItem--removable'], 'vkuiInternalFormItem--removable'),\n )}\n >\n <FormItemContext.Provider value={context}>\n {removable ? (\n <Removable\n align=\"start\"\n onRemove={(e) => {\n if (rootEl?.current) {\n onRemove?.(e, rootEl.current);\n }\n }}\n removePlaceholder={removePlaceholder}\n indent={removable === 'indent'}\n >\n <div\n className={classNames(\n styles['FormItem__removable'],\n 'vkuiInternalFormItem__removable',\n )}\n >\n {wrappedChildren}\n </div>\n </Removable>\n ) : (\n wrappedChildren\n )}\n </FormItemContext.Provider>\n </RootComponent>\n );\n};\n\nFormItem.displayName = 'FormItem';\n\nFormItem.Top = FormItemTop;\nFormItem.Top.displayName = 'FormItem.Top';\n\nFormItem.TopLabel = FormItemTopLabel;\nFormItem.TopLabel.displayName = 'FormItem.TopLabel';\n\nFormItem.TopAside = FormItemTopAside;\nFormItem.TopAside.displayName = 'FormItem.TopAside';\n"],"names":["React","classNames","hasReactNode","useAdaptivity","useExternRef","useObjectMemo","Removable","RootComponent","Footnote","FormItemTop","FormItemTopAside","FormItemTopLabel","FormItemContext","sizeYClassNames","none","compact","stylesStatus","error","valid","FormItem","children","top","topId","topMultiline","topComponent","topComponentProp","bottom","status","removable","onRemove","removePlaceholder","getRootRef","htmlFor","bottomId","noPadding","topNode","required","restProps","rootEl","sizeY","wrappedChildren","Fragment","Component","multiline","id","className","role","undefined","context","baseClassName","Provider","value","align","e","current","indent","div","displayName","Top","TopLabel","TopAside"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,aAAa,QAAQ,4BAA4B;AAE1D,SAASC,SAAS,QAA6B,yBAAyB;AACxE,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,WAAW,QAAQ,4BAA4B;AACxD,SAASC,gBAAgB,QAAQ,iCAAiC;AAClE,SAASC,gBAAgB,QAAQ,iCAAiC;AAClE,SAASC,eAAe,QAAQ,YAAY;AAG5C,MAAMC,kBAAkB;IACtBC,MAAMb,uCAA2C;IACjDc,SAASd,0CAA8C;AACzD;AAEA,MAAMe,eAAe;IACnBC,OAAOhB,yCAA6C;IACpDiB,OAAOjB,yCAA6C;AACtD;AAoDA;;CAEC,GACD,OAAO,MAAMkB,WAIT;QAAC,EACHC,QAAQ,EACRC,GAAG,EACHC,KAAK,EACLC,YAAY,EACZC,cAAcC,gBAAgB,EAC9BC,MAAM,EACNC,SAAS,SAAS,EAClBC,SAAS,EACTC,QAAQ,EACRC,oBAAoB,SAAS,EAC7BC,UAAU,EACVC,OAAO,EACPC,QAAQ,EACRC,SAAS,EACTC,OAAO,EACPC,WAAW,KAAK,EAEF,WADXC;QAhBHjB;QACAC;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAME,SAASlC,aAAa2B;IAC5B,MAAM,EAAEQ,QAAQ,MAAM,EAAE,GAAGpC;IAE3B,MAAMqC,gCACJ,MAACxC,MAAMyC,QAAQ;;YACZvC,aAAaiC,WACZA,UACEjC,aAAamB,qBACf,KAACZ;0BACC,cAAA,KAACE;oBACCqB,SAASA;oBACTU,WAAWjB;oBACXkB,WAAWpB;oBACXqB,IAAItB;8BAEHD;;iBAGH;YACHD;YACAlB,aAAawB,yBACZ,KAAClB;gBACCqC,SAAS;gBACTD,IAAIX;gBACJa,MAAMnB,WAAW,UAAU,UAAUoB;0BAEpCrB;;;;IAMT,MAAMsB,UAAU3C,cAAc;QAAE+B;QAAUb;IAAa;IAEvD,qBACE,KAAChB,uDACK8B;QACJN,YAAYO;QACZW,eAAehD,2BAEb,CAACiC,0CACD,wBACAP,WAAW,aAAaX,YAAY,CAACW,OAAO,EAC5CY,UAAU,aAAa1B,eAAe,CAAC0B,MAAM,EAC7CrC,aAAamB,QACXpB,oCAAwC,kCAC1C2B,aAAa3B,sCAA0C;kBAGzD,cAAA,KAACW,gBAAgBsC,QAAQ;YAACC,OAAOH;sBAC9BpB,0BACC,KAACtB;gBACC8C,OAAM;gBACNvB,UAAU,CAACwB;oBACT,IAAIf,mBAAAA,6BAAAA,OAAQgB,OAAO,EAAE;wBACnBzB,qBAAAA,+BAAAA,SAAWwB,GAAGf,OAAOgB,OAAO;oBAC9B;gBACF;gBACAxB,mBAAmBA;gBACnByB,QAAQ3B,cAAc;0BAEtB,cAAA,KAAC4B;oBACCX,WAAW5C,sCAET;8BAGDuC;;iBAILA;;;AAKV,EAAE;AAEFrB,SAASsC,WAAW,GAAG;AAEvBtC,SAASuC,GAAG,GAAGjD;AACfU,SAASuC,GAAG,CAACD,WAAW,GAAG;AAE3BtC,SAASwC,QAAQ,GAAGhD;AACpBQ,SAASwC,QAAQ,CAACF,WAAW,GAAG;AAEhCtC,SAASyC,QAAQ,GAAGlD;AACpBS,SAASyC,QAAQ,CAACH,WAAW,GAAG"}
|
|
@@ -10,7 +10,7 @@ import { Removable } from '../Removable/Removable';
|
|
|
10
10
|
import { RootComponent } from '../RootComponent/RootComponent';
|
|
11
11
|
const sizeYClassNames = {
|
|
12
12
|
none: classNames("vkuiFormLayoutGroup--sizeY-none", 'vkuiInternalFormLayoutGroup--sizeY-none'),
|
|
13
|
-
|
|
13
|
+
compact: classNames("vkuiFormLayoutGroup--sizeY-compact", 'vkuiInternalFormLayoutGroup--sizeY-compact')
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
16
|
* @see https://vkcom.github.io/VKUI/#/FormLayoutGroup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/FormLayoutGroup/FormLayoutGroup.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { Removable, type RemovableProps } from '../Removable/Removable';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './FormLayoutGroup.module.css';\n\nconst sizeYClassNames = {\n none: classNames(\n styles['FormLayoutGroup--sizeY-none'],\n 'vkuiInternalFormLayoutGroup--sizeY-none',\n ),\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/FormLayoutGroup/FormLayoutGroup.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { Removable, type RemovableProps } from '../Removable/Removable';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './FormLayoutGroup.module.css';\n\nconst sizeYClassNames = {\n none: classNames(\n styles['FormLayoutGroup--sizeY-none'],\n 'vkuiInternalFormLayoutGroup--sizeY-none',\n ),\n compact: classNames(\n styles['FormLayoutGroup--sizeY-compact'],\n 'vkuiInternalFormLayoutGroup--sizeY-compact',\n ),\n};\n\nexport interface FormLayoutGroupProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n RemovableProps {\n mode?: 'vertical' | 'horizontal';\n /**\n * Только для режима horizontal. Дает возможность удалить всю группу `FormItem`.\n *\n * Режим `indent` предназначен для визуального отступа.\n */\n removable?: boolean | 'indent';\n\n /**\n * Дает возможность склеить несколько `FormItem`.\n */\n segmented?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FormLayoutGroup\n */\nexport const FormLayoutGroup = ({\n children,\n mode = 'vertical',\n removable,\n segmented,\n removePlaceholder = 'Удалить',\n onRemove,\n getRootRef,\n ...restProps\n}: FormLayoutGroupProps): React.ReactNode => {\n const { sizeY = 'none' } = useAdaptivity();\n const isRemovable = removable && mode === 'horizontal';\n const rootEl = useExternRef(getRootRef);\n\n return (\n <RootComponent\n getRootRef={rootEl}\n Component=\"fieldset\"\n baseClassName={classNames(\n styles['FormLayoutGroup'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n mode === 'horizontal' &&\n classNames(\n styles['FormLayoutGroup--mode-horizontal'],\n 'vkuiInternalFormLayoutGroup--mode-horizontal',\n ),\n mode === 'vertical' && 'vkuiInternalFormLayoutGroup--mode-vertical',\n isRemovable &&\n classNames(\n styles['FormLayoutGroup--removable'],\n 'vkuiInternalFormLayoutGroup--removable',\n ),\n segmented &&\n classNames(\n styles['FormLayoutGroup--segmented'],\n 'vkuiInternalFormLayoutGroup--segmented',\n ),\n )}\n {...restProps}\n >\n {isRemovable ? (\n <Removable\n className={styles['FormLayoutGroup__removable']}\n align=\"start\"\n removePlaceholder={removePlaceholder}\n onRemove={(e) => {\n if (rootEl?.current) {\n onRemove?.(e, rootEl.current);\n }\n }}\n indent={removable === 'indent'}\n >\n {children}\n </Removable>\n ) : (\n <React.Fragment>\n {children}\n <span className={styles['FormLayoutGroup__offset']} aria-hidden />\n </React.Fragment>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","classNames","useAdaptivity","useExternRef","Removable","RootComponent","sizeYClassNames","none","compact","FormLayoutGroup","children","mode","removable","segmented","removePlaceholder","onRemove","getRootRef","restProps","sizeY","isRemovable","rootEl","Component","baseClassName","className","align","e","current","indent","Fragment","span","aria-hidden"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,YAAY,QAAQ,2BAA2B;AAExD,SAASC,SAAS,QAA6B,yBAAyB;AACxE,SAASC,aAAa,QAAQ,iCAAiC;AAG/D,MAAMC,kBAAkB;IACtBC,MAAMN,8CAEJ;IAEFO,SAASP,iDAEP;AAEJ;AAmBA;;CAEC,GACD,OAAO,MAAMQ,kBAAkB;QAAC,EAC9BC,QAAQ,EACRC,OAAO,UAAU,EACjBC,SAAS,EACTC,SAAS,EACTC,oBAAoB,SAAS,EAC7BC,QAAQ,EACRC,UAAU,EAEW,WADlBC;QAPHP;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGhB;IAC3B,MAAMiB,cAAcP,aAAaD,SAAS;IAC1C,MAAMS,SAASjB,aAAaa;IAE5B,qBACE,KAACX;QACCW,YAAYI;QACZC,WAAU;QACVC,eAAerB,kCAEbiB,UAAU,aAAaZ,eAAe,CAACY,MAAM,EAC7CP,SAAS,gBACPV,mDAEE,iDAEJU,SAAS,cAAc,8CACvBQ,eACElB,6CAEE,2CAEJY,aACEZ,6CAEE;OAGFgB;kBAEHE,4BACC,KAACf;YACCmB,SAAS;YACTC,OAAM;YACNV,mBAAmBA;YACnBC,UAAU,CAACU;gBACT,IAAIL,mBAAAA,6BAAAA,OAAQM,OAAO,EAAE;oBACnBX,qBAAAA,+BAAAA,SAAWU,GAAGL,OAAOM,OAAO;gBAC9B;YACF;YACAC,QAAQf,cAAc;sBAErBF;2BAGH,MAACV,MAAM4B,QAAQ;;gBACZlB;8BACD,KAACmB;oBAAKN,SAAS;oBAAqCO,aAAW;;;;;AAKzE,EAAE"}
|
|
@@ -9,7 +9,7 @@ import { FormField } from '../FormField/FormField';
|
|
|
9
9
|
import { UnstyledTextField } from '../UnstyledTextField/UnstyledTextField';
|
|
10
10
|
const sizeYClassNames = {
|
|
11
11
|
none: "vkuiInput--sizeY-none",
|
|
12
|
-
|
|
12
|
+
compact: "vkuiInput--sizeY-compact"
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
15
|
* @see https://vkcom.github.io/VKUI/#/Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport type { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { FormField, type FormFieldProps } from '../FormField/FormField';\nimport { UnstyledTextField } from '../UnstyledTextField/UnstyledTextField';\nimport styles from './Input.module.css';\n\nconst sizeYClassNames = {\n none: styles['Input--sizeY-none'],\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport type { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { FormField, type FormFieldProps } from '../FormField/FormField';\nimport { UnstyledTextField } from '../UnstyledTextField/UnstyledTextField';\nimport styles from './Input.module.css';\n\nconst sizeYClassNames = {\n none: styles['Input--sizeY-none'],\n compact: styles['Input--sizeY-compact'],\n};\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRef<HTMLInputElement>,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n Omit<FormFieldProps, 'maxHeight'> {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Input\n */\nexport const Input = ({\n type = 'text',\n align = 'left',\n getRef,\n className,\n getRootRef,\n style,\n before,\n after,\n status,\n mode,\n ...restProps\n}: InputProps): React.ReactNode => {\n const { sizeY = 'none' } = useAdaptivity();\n\n return (\n <FormField\n style={style}\n className={classNames(\n styles['Input'],\n align === 'right' && styles['Input--align-right'],\n align === 'center' && styles['Input--align-center'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n before && styles['Input--hasBefore'],\n after && styles['Input--hasAfter'],\n className,\n )}\n getRootRef={getRootRef}\n before={before}\n after={after}\n disabled={restProps.disabled}\n mode={mode}\n status={status}\n >\n <UnstyledTextField\n {...restProps}\n as=\"input\"\n type={type}\n className={styles['Input__el']}\n getRootRef={getRef}\n />\n </FormField>\n );\n};\n"],"names":["React","classNames","useAdaptivity","FormField","UnstyledTextField","sizeYClassNames","none","compact","Input","type","align","getRef","className","getRootRef","style","before","after","status","mode","restProps","sizeY","disabled","as"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAE1D,SAASC,SAAS,QAA6B,yBAAyB;AACxE,SAASC,iBAAiB,QAAQ,yCAAyC;AAG3E,MAAMC,kBAAkB;IACtBC,IAAI;IACJC,OAAO;AACT;AASA;;CAEC,GACD,OAAO,MAAMC,QAAQ;QAAC,EACpBC,OAAO,MAAM,EACbC,QAAQ,MAAM,EACdC,MAAM,EACNC,SAAS,EACTC,UAAU,EACVC,KAAK,EACLC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,IAAI,EAEO,WADRC;QAVHV;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGlB;IAE3B,qBACE,KAACC;QACCW,OAAOA;QACPF,WAAWX,wBAETS,UAAU,qCACVA,UAAU,uCACVU,UAAU,aAAaf,eAAe,CAACe,MAAM,EAC7CL,kCACAC,gCACAJ;QAEFC,YAAYA;QACZE,QAAQA;QACRC,OAAOA;QACPK,UAAUF,UAAUE,QAAQ;QAC5BH,MAAMA;QACND,QAAQA;kBAER,cAAA,KAACb,2DACKe;YACJG,IAAG;YACHb,MAAMA;YACNG,SAAS;YACTC,YAAYF;;;AAIpB,EAAE"}
|
|
@@ -414,14 +414,7 @@ class ModalRootTouchComponent extends React.Component {
|
|
|
414
414
|
});
|
|
415
415
|
}
|
|
416
416
|
constructor(props){
|
|
417
|
-
super(props)
|
|
418
|
-
_define_property(this, "maskElementRef", void 0);
|
|
419
|
-
_define_property(this, "viewportRef", /*#__PURE__*/ React.createRef());
|
|
420
|
-
_define_property(this, "maskAnimationFrame", undefined);
|
|
421
|
-
_define_property(this, "modalRootContext", void 0);
|
|
422
|
-
_define_property(this, "frameIds", void 0);
|
|
423
|
-
_define_property(this, "restoreFocusTo", undefined);
|
|
424
|
-
_define_property(this, "updateModalHeight", ()=>{
|
|
417
|
+
super(props), _define_property(this, "maskElementRef", void 0), _define_property(this, "viewportRef", /*#__PURE__*/ React.createRef()), _define_property(this, "maskAnimationFrame", undefined), _define_property(this, "modalRootContext", void 0), _define_property(this, "frameIds", void 0), _define_property(this, "restoreFocusTo", undefined), _define_property(this, "updateModalHeight", ()=>{
|
|
425
418
|
const modalState = this.props.getModalState(this.props.activeModal);
|
|
426
419
|
if (modalState && modalState.type === 'page') {
|
|
427
420
|
if (this.props.enteringModal) {
|
|
@@ -432,8 +425,7 @@ class ModalRootTouchComponent extends React.Component {
|
|
|
432
425
|
requestAnimationFrame(()=>this.checkPageContentHeight());
|
|
433
426
|
}
|
|
434
427
|
}
|
|
435
|
-
})
|
|
436
|
-
_define_property(this, "onTouchMove", (e)=>{
|
|
428
|
+
}), _define_property(this, "onTouchMove", (e)=>{
|
|
437
429
|
if (this.props.exitingModal) {
|
|
438
430
|
return;
|
|
439
431
|
}
|
|
@@ -447,8 +439,7 @@ class ModalRootTouchComponent extends React.Component {
|
|
|
447
439
|
if (modalState.type === 'card') {
|
|
448
440
|
return this.onCardTouchMove(e, modalState);
|
|
449
441
|
}
|
|
450
|
-
})
|
|
451
|
-
_define_property(this, "onTouchEnd", (e)=>{
|
|
442
|
+
}), _define_property(this, "onTouchEnd", (e)=>{
|
|
452
443
|
const modalState = this.props.getModalState(this.props.activeModal);
|
|
453
444
|
if ((modalState === null || modalState === void 0 ? void 0 : modalState.type) === 'page') {
|
|
454
445
|
return this.onPageTouchEnd(e, modalState);
|
|
@@ -456,8 +447,7 @@ class ModalRootTouchComponent extends React.Component {
|
|
|
456
447
|
if ((modalState === null || modalState === void 0 ? void 0 : modalState.type) === 'card') {
|
|
457
448
|
return this.onCardTouchEnd(e, modalState);
|
|
458
449
|
}
|
|
459
|
-
})
|
|
460
|
-
_define_property(this, "onScroll", (e)=>{
|
|
450
|
+
}), _define_property(this, "onScroll", (e)=>{
|
|
461
451
|
var _modalState_contentElement;
|
|
462
452
|
const activeModal = this.props.activeModal;
|
|
463
453
|
const target = e.target;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { type DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { rubber } from '../../lib/touch';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ConfigProviderContext } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { type CustomTouchEvent, Touch } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { ModalRootContext, type ModalRootContextInterface } from './ModalRootContext';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport type { ModalRootWithDOMProps, ModalsStateEntry, TranslateRange } from './types';\nimport { type ModalTransitionProps, withModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n modalOpenedLog: string[];\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootWithDOMProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootWithDOMProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n modalOpenedLog: [],\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.props.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === 'ios' ? 400 : 320;\n }\n\n get document(): Document {\n return this.props.document as Document;\n }\n\n get window(): Window {\n return this.props.window as Window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport\n this.window?.addEventListener('resize', this.updateModalHeight, false);\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalHeight, false);\n }\n\n componentDidUpdate(prevProps: ModalRootWithDOMProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const enteringState = this.props.getModalState(this.props.enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState) {\n if (enteringState.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.onEntered(enteringState);\n }\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n this.setMaskOpacity(enteringState, 1);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (enabled) {\n // восстанавливаем значение overscroll behavior\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.remove('vkui--disable-overscroll-behavior');\n } else {\n // отключаем нативный pull-to-refresh при открытом модальном окне\n // чтобы он не срабатывал при закрытии модалки смахиванием вниз\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.add('vkui--disable-overscroll-behavior');\n }\n }\n\n checkPageContentHeight() {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page' && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === 'page') {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n onEntered({ id, modalElement }: ModalsStateEntry) {\n if (\n !this.props.noFocusToDialog &&\n modalElement &&\n !modalElement.contains(this.document.activeElement)\n ) {\n modalElement.focus();\n }\n\n this.props.onEntered(id);\n }\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.props.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n if (!this.state.modalOpenedLog.length) {\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, id],\n }));\n }\n const nextModalState = this.props.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === 'page';\n\n const prevIsPage = !!prevModalState && prevModalState.type === 'page';\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n this.setState({ modalOpenedLog: [] });\n prevModalState.translateY = undefined;\n prevModalState.expandable = undefined;\n } else if (nextModalState.id && !this.state.modalOpenedLog.includes(nextModalState.id)) {\n nextModalState.translateY = undefined;\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, nextModalState.id!],\n }));\n }\n }\n\n onTouchMove = (e: CustomTouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.props.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === 'page') {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === 'card') {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: CustomTouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: CustomTouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: CustomTouchEvent) => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page') {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === 'card') {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: CustomTouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75 && !modalState.preventClose) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = numberInRange(translateY, modalState.collapsedRange);\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: CustomTouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.props.getModalState(activeModal);\n if (modalState?.type === 'page' && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n const el = modalState ? modalState.innerElement : null;\n if (el) {\n el.addEventListener('transitionend', eventHandler, { once: true });\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n if (!modalState.innerElement) {\n return;\n }\n modalState.innerElement.style.transform = `translate3d(0, ${percent}%, 0)`;\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n this.maskElementRef.current.style.transitionDelay =\n opacity && this.props.delayEnter ? `${this.timeout}ms` : '';\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal, modalOverlayTestId } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.hasCustomPanelHeaderAfter &&\n styles['ModalRoot--hasCustomPanelHeaderAfterSlot'],\n touchDown &&\n classNames(styles['ModalRoot--touched'], 'vkuiInternalModalRoot--touched'),\n !!(enteringModal || exitingModal) &&\n classNames(styles['ModalRoot--switching'], 'vkuiInternalModalRoot--switching'),\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n data-testid={modalOverlayTestId}\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.props.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === 'page';\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && 'vkuiInternalModalRoot__modal--dragging',\n\n isPage && modalState.expandable && 'vkuiInternalModalRoot__modal--expandable',\n isPage && modalState.collapsed && 'vkuiInternalModalRoot__modal--collapsed',\n )}\n autoFocus={false}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch: React.FC<ModalRootWithDOMProps> = withContext(\n withPlatform(\n withDOM<ModalRootWithDOMProps>(withModalManager(initModal)(ModalRootTouchComponent)),\n ),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case 'page':\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case 'card':\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement, bottomInset } = modalState;\n const contentElementHeight = calculateModalContentHeight(\n contentElement?.firstElementChild as HTMLElement,\n modalState.expandable,\n );\n const bottomInsetHeight = bottomInset?.offsetHeight || 0;\n const contentHeight = contentElementHeight + bottomInsetHeight;\n let prevTranslateY = modalState.translateY;\n let prevExpandable = modalState.expandable;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange | undefined;\n let hiddenRange: TranslateRange;\n\n const hasCollapsedState = Boolean(modalState.expandable && modalState.settlingHeight !== 100);\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = hasCollapsedState ? [shiftHalf, translateYFrom + visiblePart / 4] : undefined;\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = hasCollapsedState && translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = undefined;\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Свойство expandable может измениться из-за высоты контента, в таком случае на всю высоту не разворачиваем\n const shouldExpand = prevExpandable && modalState.expandable;\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if ((shouldExpand && translateY > (prevTranslateY ?? 100)) || modalState.settlingHeight === 100) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n\nfunction calculateModalContentHeight(\n element: HTMLElement,\n isExpandable: ModalsStateEntry['expandable'],\n) {\n if (!isExpandable) {\n return element.scrollHeight;\n }\n\n /*\n * В режиме expandable мы назначаем контейнеру контента высоту 100%, что не даёт\n * получить реальную высоту контента.\n * Поэтому мы пересчитываем высоту, временно устанавливая height: auto;\n * */\n const currentHeightStyle = element.style.height;\n element.style.height = 'auto';\n\n const elementHeight = element.scrollHeight;\n element.style.height = currentHeightStyle;\n\n return elementHeight;\n}\n"],"names":["React","classNames","clamp","withContext","withPlatform","withDOM","getNavId","rubber","warnOnce","ConfigProviderContext","FocusTrap","Touch","TouchRootContext","ModalRootContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","withModalManager","warn","numberInRange","number","range","rangeTranslate","ModalRootTouchComponent","Component","timeout","props","platform","document","window","getModals","Children","toArray","children","componentDidMount","addEventListener","updateModalHeight","componentWillUnmount","toggleDocumentScrolling","removeEventListener","componentDidUpdate","prevProps","exitingModal","closeModal","enteringModal","enteringState","getModalState","onEnter","waitTransitionFinish","innerElement","style","transitionDelay","onEntered","delayEnter","animateTranslate","translateY","setMaskOpacity","activeModal","restoreFocusTo","activeElement","focus","enabled","documentElement","classList","remove","add","checkPageContentHeight","modalState","type","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","id","noFocusToDialog","contains","setState","touchDown","state","modalOpenedLog","length","prevState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","undefined","includes","onPageTouchMove","event","shiftY","originalEvent","target","isY","viewportRef","current","preventDefault","stopPropagation","contentScrolled","collapsed","expanded","touchStartContentScrollTop","contentElement","scrollTop","touchMovePositive","headerElement","dragging","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","onCardTouchMove","offsetHeight","Math","max","onPageTouchEnd","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","preventClose","hidden","onExit","onCardTouchEnd","eventHandler","el","once","setTimeout","percent","frameId","cancelAnimationFrame","frameIds","requestAnimationFrame","transform","forceOpacity","history","maskAnimationFrame","maskElementRef","opacity","toString","render","modalOverlayTestId","Provider","value","modalRootContext","className","configProvider","hasCustomPanelHeaderAfter","onMove","onTouchMove","onEnd","onTouchEnd","onScroll","div","data-testid","onClick","ref","map","Modal","modalId","_modalState","isPage","key","onClose","autoFocus","restoreFocus","constructor","createRef","e","contentScrollStopTimeout","clearTimeout","registerModal","data","Object","assign","isInsideModal","ModalRootTouch","initModal","initCardModal","process","env","NODE_ENV","bottomInset","contentElementHeight","calculateModalContentHeight","firstElementChild","bottomInsetHeight","contentHeight","prevTranslateY","prevExpandable","clientHeight","hasCollapsedState","Boolean","shiftHalf","visiblePart","headerHeight","height","parentElement","shouldExpand","element","isExpandable","scrollHeight","currentHeightStyle","elementHeight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { type DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { rubber } from '../../lib/touch';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ConfigProviderContext } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { type CustomTouchEvent, Touch } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { ModalRootContext, type ModalRootContextInterface } from './ModalRootContext';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport type { ModalRootWithDOMProps, ModalsStateEntry, TranslateRange } from './types';\nimport { type ModalTransitionProps, withModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n modalOpenedLog: string[];\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootWithDOMProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootWithDOMProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n modalOpenedLog: [],\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.props.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === 'ios' ? 400 : 320;\n }\n\n get document(): Document {\n return this.props.document as Document;\n }\n\n get window(): Window {\n return this.props.window as Window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport\n this.window?.addEventListener('resize', this.updateModalHeight, false);\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalHeight, false);\n }\n\n componentDidUpdate(prevProps: ModalRootWithDOMProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const enteringState = this.props.getModalState(this.props.enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState) {\n if (enteringState.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.onEntered(enteringState);\n }\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n this.setMaskOpacity(enteringState, 1);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (enabled) {\n // восстанавливаем значение overscroll behavior\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.remove('vkui--disable-overscroll-behavior');\n } else {\n // отключаем нативный pull-to-refresh при открытом модальном окне\n // чтобы он не срабатывал при закрытии модалки смахиванием вниз\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.add('vkui--disable-overscroll-behavior');\n }\n }\n\n checkPageContentHeight() {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page' && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === 'page') {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n onEntered({ id, modalElement }: ModalsStateEntry) {\n if (\n !this.props.noFocusToDialog &&\n modalElement &&\n !modalElement.contains(this.document.activeElement)\n ) {\n modalElement.focus();\n }\n\n this.props.onEntered(id);\n }\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.props.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n if (!this.state.modalOpenedLog.length) {\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, id],\n }));\n }\n const nextModalState = this.props.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === 'page';\n\n const prevIsPage = !!prevModalState && prevModalState.type === 'page';\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n this.setState({ modalOpenedLog: [] });\n prevModalState.translateY = undefined;\n prevModalState.expandable = undefined;\n } else if (nextModalState.id && !this.state.modalOpenedLog.includes(nextModalState.id)) {\n nextModalState.translateY = undefined;\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, nextModalState.id!],\n }));\n }\n }\n\n onTouchMove = (e: CustomTouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.props.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === 'page') {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === 'card') {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: CustomTouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: CustomTouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: CustomTouchEvent) => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page') {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === 'card') {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: CustomTouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75 && !modalState.preventClose) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = numberInRange(translateY, modalState.collapsedRange);\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: CustomTouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.props.getModalState(activeModal);\n if (modalState?.type === 'page' && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n const el = modalState ? modalState.innerElement : null;\n if (el) {\n el.addEventListener('transitionend', eventHandler, { once: true });\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n if (!modalState.innerElement) {\n return;\n }\n modalState.innerElement.style.transform = `translate3d(0, ${percent}%, 0)`;\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n this.maskElementRef.current.style.transitionDelay =\n opacity && this.props.delayEnter ? `${this.timeout}ms` : '';\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal, modalOverlayTestId } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.hasCustomPanelHeaderAfter &&\n styles['ModalRoot--hasCustomPanelHeaderAfterSlot'],\n touchDown &&\n classNames(styles['ModalRoot--touched'], 'vkuiInternalModalRoot--touched'),\n !!(enteringModal || exitingModal) &&\n classNames(styles['ModalRoot--switching'], 'vkuiInternalModalRoot--switching'),\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n data-testid={modalOverlayTestId}\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.props.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === 'page';\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && 'vkuiInternalModalRoot__modal--dragging',\n\n isPage && modalState.expandable && 'vkuiInternalModalRoot__modal--expandable',\n isPage && modalState.collapsed && 'vkuiInternalModalRoot__modal--collapsed',\n )}\n autoFocus={false}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch: React.FC<ModalRootWithDOMProps> = withContext(\n withPlatform(\n withDOM<ModalRootWithDOMProps>(withModalManager(initModal)(ModalRootTouchComponent)),\n ),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case 'page':\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case 'card':\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement, bottomInset } = modalState;\n const contentElementHeight = calculateModalContentHeight(\n contentElement?.firstElementChild as HTMLElement,\n modalState.expandable,\n );\n const bottomInsetHeight = bottomInset?.offsetHeight || 0;\n const contentHeight = contentElementHeight + bottomInsetHeight;\n let prevTranslateY = modalState.translateY;\n let prevExpandable = modalState.expandable;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange | undefined;\n let hiddenRange: TranslateRange;\n\n const hasCollapsedState = Boolean(modalState.expandable && modalState.settlingHeight !== 100);\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = hasCollapsedState ? [shiftHalf, translateYFrom + visiblePart / 4] : undefined;\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = hasCollapsedState && translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = undefined;\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Свойство expandable может измениться из-за высоты контента, в таком случае на всю высоту не разворачиваем\n const shouldExpand = prevExpandable && modalState.expandable;\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if ((shouldExpand && translateY > (prevTranslateY ?? 100)) || modalState.settlingHeight === 100) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n\nfunction calculateModalContentHeight(\n element: HTMLElement,\n isExpandable: ModalsStateEntry['expandable'],\n) {\n if (!isExpandable) {\n return element.scrollHeight;\n }\n\n /*\n * В режиме expandable мы назначаем контейнеру контента высоту 100%, что не даёт\n * получить реальную высоту контента.\n * Поэтому мы пересчитываем высоту, временно устанавливая height: auto;\n * */\n const currentHeightStyle = element.style.height;\n element.style.height = 'auto';\n\n const elementHeight = element.scrollHeight;\n element.style.height = currentHeightStyle;\n\n return elementHeight;\n}\n"],"names":["React","classNames","clamp","withContext","withPlatform","withDOM","getNavId","rubber","warnOnce","ConfigProviderContext","FocusTrap","Touch","TouchRootContext","ModalRootContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","withModalManager","warn","numberInRange","number","range","rangeTranslate","ModalRootTouchComponent","Component","timeout","props","platform","document","window","getModals","Children","toArray","children","componentDidMount","addEventListener","updateModalHeight","componentWillUnmount","toggleDocumentScrolling","removeEventListener","componentDidUpdate","prevProps","exitingModal","closeModal","enteringModal","enteringState","getModalState","onEnter","waitTransitionFinish","innerElement","style","transitionDelay","onEntered","delayEnter","animateTranslate","translateY","setMaskOpacity","activeModal","restoreFocusTo","activeElement","focus","enabled","documentElement","classList","remove","add","checkPageContentHeight","modalState","type","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","id","noFocusToDialog","contains","setState","touchDown","state","modalOpenedLog","length","prevState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","undefined","includes","onPageTouchMove","event","shiftY","originalEvent","target","isY","viewportRef","current","preventDefault","stopPropagation","contentScrolled","collapsed","expanded","touchStartContentScrollTop","contentElement","scrollTop","touchMovePositive","headerElement","dragging","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","onCardTouchMove","offsetHeight","Math","max","onPageTouchEnd","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","preventClose","hidden","onExit","onCardTouchEnd","eventHandler","el","once","setTimeout","percent","frameId","cancelAnimationFrame","frameIds","requestAnimationFrame","transform","forceOpacity","history","maskAnimationFrame","maskElementRef","opacity","toString","render","modalOverlayTestId","Provider","value","modalRootContext","className","configProvider","hasCustomPanelHeaderAfter","onMove","onTouchMove","onEnd","onTouchEnd","onScroll","div","data-testid","onClick","ref","map","Modal","modalId","_modalState","isPage","key","onClose","autoFocus","restoreFocus","constructor","createRef","e","contentScrollStopTimeout","clearTimeout","registerModal","data","Object","assign","isInsideModal","ModalRootTouch","initModal","initCardModal","process","env","NODE_ENV","bottomInset","contentElementHeight","calculateModalContentHeight","firstElementChild","bottomInsetHeight","contentHeight","prevTranslateY","prevExpandable","clientHeight","hasCollapsedState","Boolean","shiftHalf","visiblePart","headerHeight","height","parentElement","shouldExpand","element","isExpandable","scrollHeight","currentHeightStyle","elementHeight"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,KAAK,QAAQ,qBAAqB;AAC3C,SAASC,WAAW,QAAQ,wBAAwB;AACpD,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAAwBC,OAAO,QAAQ,gBAAgB;AACvD,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,qBAAqB,QAAQ,0CAA0C;AAChF,SAASC,SAAS,QAAQ,yBAAyB;AACnD,SAAgCC,KAAK,QAAQ,iBAAiB;AAC9D,OAAOC,sBAAsB,wBAAwB;AACrD,SAASC,gBAAgB,QAAwC,qBAAqB;AACtF,SAASC,iCAAiC,QAAQ,cAAc;AAEhE,SAAoCC,gBAAgB,QAAQ,oBAAoB;AAGhF,MAAMC,OAAOR,SAAS;AAEtB,SAASS,cAAcC,MAAc,EAAEC,KAAiC;IACtE,IAAI,CAACA,OAAO;QACV,OAAO;IACT;IACA,OAAOD,UAAUC,KAAK,CAAC,EAAE,IAAID,UAAUC,KAAK,CAAC,EAAE;AACjD;AAEA,SAASC,eAAeF,MAAc;IACpC,OAAOhB,MAAMgB,QAAQ,GAAG;AAC1B;AAQA,MAAMG,gCAAgCrB,MAAMsB,SAAS;IAiCnD,IAAIC,UAAkB;QACpB,OAAO,IAAI,CAACC,KAAK,CAACC,QAAQ,KAAK,QAAQ,MAAM;IAC/C;IAEA,IAAIC,WAAqB;QACvB,OAAO,IAAI,CAACF,KAAK,CAACE,QAAQ;IAC5B;IAEA,IAAIC,SAAiB;QACnB,OAAO,IAAI,CAACH,KAAK,CAACG,MAAM;IAC1B;IAEAC,YAAY;QACV,OAAO5B,MAAM6B,QAAQ,CAACC,OAAO,CAAC,IAAI,CAACN,KAAK,CAACO,QAAQ;IACnD;IAEAC,oBAAoB;YAClB,0CAA0C;QAC1C;SAAA,eAAA,IAAI,CAACL,MAAM,cAAX,mCAAA,aAAaM,gBAAgB,CAAC,UAAU,IAAI,CAACC,iBAAiB,EAAE;IAClE;IAEAC,uBAAuB;QACrB,IAAI,CAACC,uBAAuB,CAAC;QAC7B,IAAI,CAACT,MAAM,CAACU,mBAAmB,CAAC,UAAU,IAAI,CAACH,iBAAiB,EAAE;IACpE;IAEAI,mBAAmBC,SAAuD,EAAE;QAC1E,4CAA4C;QAC5C,IAAI,IAAI,CAACf,KAAK,CAACgB,YAAY,IAAI,IAAI,CAAChB,KAAK,CAACgB,YAAY,KAAKD,UAAUC,YAAY,EAAE;YACjF,IAAI,CAACC,UAAU,CAAC,IAAI,CAACjB,KAAK,CAACgB,YAAY;QACzC;QAEA,6CAA6C;QAC7C,IAAI,IAAI,CAAChB,KAAK,CAACkB,aAAa,IAAI,IAAI,CAAClB,KAAK,CAACkB,aAAa,KAAKH,UAAUG,aAAa,EAAE;YACpF,MAAMC,gBAAgB,IAAI,CAACnB,KAAK,CAACoB,aAAa,CAAC,IAAI,CAACpB,KAAK,CAACkB,aAAa;YACvE,IAAI,CAAClB,KAAK,CAACqB,OAAO;YAClB,IAAI,CAACC,oBAAoB,CAACH,eAAe;gBACvC,IAAIA,eAAe;oBACjB,IAAIA,cAAcI,YAAY,EAAE;wBAC9BJ,cAAcI,YAAY,CAACC,KAAK,CAACC,eAAe,GAAG;oBACrD;oBACA,IAAI,CAACC,SAAS,CAACP;gBACjB;YACF;YAEA,IAAIA,0BAAAA,oCAAAA,cAAeI,YAAY,EAAE;gBAC/BJ,cAAcI,YAAY,CAACC,KAAK,CAACC,eAAe,GAAG,IAAI,CAACzB,KAAK,CAAC2B,UAAU,GACpE,CAAC,EAAE,IAAI,CAAC5B,OAAO,CAAC,EAAE,CAAC,GACnB;gBACJ,IAAI,CAAC6B,gBAAgB,CAACT,eAAeA,cAAcU,UAAU;gBAC7D,IAAI,CAACC,cAAc,CAACX,eAAe;YACrC;QACF;QAEA,oBAAoB;QACpB,IAAI,IAAI,CAACnB,KAAK,CAAC+B,WAAW,IAAI,CAAChB,UAAUgB,WAAW,EAAE;YACpD,IAAI,CAACC,cAAc,GAAG,IAAI,CAAC9B,QAAQ,CAAC+B,aAAa;QACnD;QACA,IAAI,CAAC,IAAI,CAACjC,KAAK,CAAC+B,WAAW,IAAI,CAAC,IAAI,CAAC/B,KAAK,CAACgB,YAAY,IAAI,IAAI,CAACgB,cAAc,EAAE;YAC9E,IAAI,CAACA,cAAc,CAACE,KAAK;YACzB,IAAI,CAACF,cAAc,GAAG;QACxB;QAEA,IAAI,CAACpB,uBAAuB,CAAC,CAAC,IAAI,CAACZ,KAAK,CAAC+B,WAAW,IAAI,CAAC,IAAI,CAAC/B,KAAK,CAACgB,YAAY;IAClF;IAEA,8BAA8B,GAC9BJ,wBAAwBuB,OAAgB,EAAE;QACxC,IAAIA,SAAS;YACX,+CAA+C;YAC/C,oDAAoD;YACpD,IAAI,CAACjC,QAAQ,CAACkC,eAAe,CAACC,SAAS,CAACC,MAAM,CAAC;QACjD,OAAO;YACL,iEAAiE;YACjE,+DAA+D;YAC/D,oDAAoD;YACpD,IAAI,CAACpC,QAAQ,CAACkC,eAAe,CAACC,SAAS,CAACE,GAAG,CAAC;QAC9C;IACF;IAEAC,yBAAyB;QACvB,MAAMC,aAAa,IAAI,CAACzC,KAAK,CAACoB,aAAa,CAAC,IAAI,CAACpB,KAAK,CAAC+B,WAAW;QAElE,IAAIU,CAAAA,uBAAAA,iCAAAA,WAAYC,IAAI,MAAK,WAAUD,uBAAAA,iCAAAA,WAAYE,YAAY,GAAE;YAC3D,MAAMC,iBAAiB,mBAAKH;YAC5BI,cAAcJ;YACd,MAAMK,oBAAoB,mBAAKL;YAE/B,IAAIM,cAAc;YAElB,IAAIH,eAAeI,UAAU,KAAKF,kBAAkBE,UAAU,EAAE;gBAC9D,IAAIJ,eAAeK,cAAc,KAAKH,kBAAkBG,cAAc,EAAE;oBACtEF,cAAc;gBAChB;YACF,OAAO;gBACLA,cAAc;YAChB;YAEA,IAAIA,aAAa;gBACf,IAAI,CAACnB,gBAAgB,CAACa,YAAYA,WAAWZ,UAAU;YACzD;QACF;IACF;IAgBAH,UAAU,EAAEwB,EAAE,EAAEP,YAAY,EAAoB,EAAE;QAChD,IACE,CAAC,IAAI,CAAC3C,KAAK,CAACmD,eAAe,IAC3BR,gBACA,CAACA,aAAaS,QAAQ,CAAC,IAAI,CAAClD,QAAQ,CAAC+B,aAAa,GAClD;YACAU,aAAaT,KAAK;QACpB;QAEA,IAAI,CAAClC,KAAK,CAAC0B,SAAS,CAACwB;IACvB;IAEAjC,WAAWiC,EAAU,EAAE;QACrB,wEAAwE;QACxE,IAAI,CAACG,QAAQ,CAAC;YAAEC,WAAW;QAAM;QAEjC,MAAMV,iBAAiB,IAAI,CAAC5C,KAAK,CAACoB,aAAa,CAAC8B;QAEhD,IAAI,CAACN,gBAAgB;YACnBM,MAAM1D,KAAK,CAAC,4CAA4C,EAAE0D,GAAG,cAAc,CAAC,EAAE;YAC9E;QACF;QACA,IAAI,CAAC,IAAI,CAACK,KAAK,CAACC,cAAc,CAACC,MAAM,EAAE;YACrC,IAAI,CAACJ,QAAQ,CAAC,CAACK,YAAe,CAAA;oBAC5BF,gBAAgB;2BAAIE,UAAUF,cAAc;wBAAEN;qBAAG;gBACnD,CAAA;QACF;QACA,MAAMS,iBAAiB,IAAI,CAAC3D,KAAK,CAACoB,aAAa,CAAC,IAAI,CAACpB,KAAK,CAAC+B,WAAW;QACtE,MAAM6B,aAAa,CAAC,CAACD,kBAAkBA,eAAejB,IAAI,KAAK;QAE/D,MAAMmB,aAAa,CAAC,CAACjB,kBAAkBA,eAAeF,IAAI,KAAK;QAC/D,IAAI,CAACpB,oBAAoB,CAACsB,gBAAgB,IAAM,IAAI,CAAC5C,KAAK,CAAC8D,QAAQ,CAACZ;YAIjEN,4BAAoCe,gCAEhCA;QALP,MAAMI,gBACJF,cACAD,cACA,AAAChB,CAAAA,CAAAA,6BAAAA,eAAef,UAAU,cAAzBe,wCAAAA,6BAA6B,CAAA,KAAOe,CAAAA,CAAAA,iCAAAA,2BAAAA,qCAAAA,eAAgBV,cAAc,cAA9BU,4CAAAA,iCAAkC,CAAA,KACvE,CAAC,IAAI,CAAC3D,KAAK,CAACgE,MAAM,GACd,AAACL,CAAAA,CAAAA,kCAAAA,2BAAAA,qCAAAA,eAAgBV,cAAc,cAA9BU,6CAAAA,kCAAkC,CAAA,IAAK,KACxC;QACN,IAAI,CAAC/B,gBAAgB,CAACgB,gBAAgBmB;QAEtC,IAAI,CAACJ,gBAAgB;YACnB,gCAAgC;YAChC,IAAI,CAAC7B,cAAc,CAACc,gBAAgB;YACpC,IAAI,CAACS,QAAQ,CAAC;gBAAEG,gBAAgB,EAAE;YAAC;YACnCZ,eAAef,UAAU,GAAGoC;YAC5BrB,eAAeI,UAAU,GAAGiB;QAC9B,OAAO,IAAIN,eAAeT,EAAE,IAAI,CAAC,IAAI,CAACK,KAAK,CAACC,cAAc,CAACU,QAAQ,CAACP,eAAeT,EAAE,GAAG;YACtFS,eAAe9B,UAAU,GAAGoC;YAC5B,IAAI,CAACZ,QAAQ,CAAC,CAACK,YAAe,CAAA;oBAC5BF,gBAAgB;2BAAIE,UAAUF,cAAc;wBAAEG,eAAeT,EAAE;qBAAE;gBACnE,CAAA;QACF;IACF;IAoBAiB,gBAAgBC,KAAuB,EAAE3B,UAA4B,EAAE;YAWhEA,0BAyBHA;QAnCF,MAAM,EAAE4B,MAAM,EAAEC,aAAa,EAAE,GAAGF;QAClC,MAAMG,SAASD,cAAcC,MAAM;QAEnC,IAAI,CAACH,MAAMI,GAAG,EAAE;gBACV;YAAJ,KAAI,4BAAA,IAAI,CAACC,WAAW,CAACC,OAAO,cAAxB,gDAAA,0BAA0BtB,QAAQ,CAACmB,SAAS;gBAC9CD,cAAcK,cAAc;YAC9B;YACA;QACF;QAEA,IAAI,GAAClC,2BAAAA,WAAWlB,YAAY,cAAvBkB,+CAAAA,yBAAyBW,QAAQ,CAACmB,UAAS;YAC9C,OAAOD,cAAcK,cAAc;QACrC;QAEAL,cAAcM,eAAe;QAE7B,MAAM,EAAE5B,UAAU,EAAE6B,eAAe,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGtC;QAE7D,IAAI,CAAC,IAAI,CAACc,KAAK,CAACD,SAAS,EAAE;gBACeb;gBAAAA;YAAxCA,WAAWuC,0BAA0B,GAAGvC,CAAAA,wCAAAA,6BAAAA,WAAWwC,cAAc,cAAzBxC,iDAAAA,2BAA2ByC,SAAS,cAApCzC,kDAAAA,uCAAwC;YAChF,IAAI,CAACY,QAAQ,CAAC;gBAAEC,WAAW;YAAK;QAClC;QAEA,IAAIuB,iBAAiB;YACnB;QACF;QAEA,IAAIpC,WAAW0C,iBAAiB,KAAK,MAAM;YACzC1C,WAAW0C,iBAAiB,GAAGd,SAAS;QAC1C;QAEA,IACE,CAAC5B,WAAWO,UAAU,IACtB8B,aACCC,YAAYtC,WAAW0C,iBAAiB,IAAI1C,WAAWuC,0BAA0B,KAAK,OACvFvC,4BAAAA,WAAW2C,aAAa,cAAxB3C,gDAAAA,0BAA0BW,QAAQ,CAACmB,UACnC;YACAD,cAAcK,cAAc;YAE5B,IAAI,AAAC,CAAC3B,cAAcqB,SAAS,KAAM,CAAC,IAAI,CAAClE,MAAM,EAAE;gBAC/C;YACF;YAEA,CAAC,IAAI,CAACoD,KAAK,CAAC8B,QAAQ,IAAI,IAAI,CAAChC,QAAQ,CAAC;gBAAEgC,UAAU;YAAK;YAEvD,MAAMC,gBAAgB,AAACjB,SAAS,IAAI,CAAClE,MAAM,CAACoF,WAAW,GAAI;YAC3D,MAAMC,gBAAgBzG,OAAOuG,eAAe,IAAI,KAAK,IAAI,CAACtF,KAAK,CAACC,QAAQ,KAAK;YAE7EwC,WAAWgD,kBAAkB,GAAGH;gBACe7C;YAA/CA,WAAWiD,iBAAiB,GAAG9F,eAAe,AAAC6C,CAAAA,CAAAA,yBAAAA,WAAWZ,UAAU,cAArBY,oCAAAA,yBAAyB,CAAA,IAAK+C;YAE7E,IAAI,CAAC5D,gBAAgB,CAACa,YAAYA,WAAWiD,iBAAiB;YAC9D,IAAI,CAAC5D,cAAc,CAACW;QACtB;IACF;IAEAkD,gBAAgBvB,KAAuB,EAAE3B,UAA4B,EAAE;YAGjEA;QAFJ,MAAM,EAAE6B,aAAa,EAAED,MAAM,EAAE,GAAGD;QAClC,MAAMG,SAASD,cAAcC,MAAM;QACnC,KAAI9B,2BAAAA,WAAWlB,YAAY,cAAvBkB,+CAAAA,yBAAyBW,QAAQ,CAACmB,SAAS;YAC7C,IAAI,CAAC,IAAI,CAAChB,KAAK,CAACD,SAAS,EAAE;gBACzB,IAAI,CAACD,QAAQ,CAAC;oBAAEC,WAAW;oBAAM+B,UAAU;gBAAK;YAClD;YAEA,MAAMC,gBAAgB,AAACjB,SAAS5B,WAAWlB,YAAY,CAACqE,YAAY,GAAI;YACxE,MAAMJ,gBAAgBzG,OAAOuG,eAAe,IAAI,KAAK,IAAI,CAACtF,KAAK,CAACC,QAAQ,KAAK;YAE7EwC,WAAWgD,kBAAkB,GAAGH;gBACY7C;YAA5CA,WAAWiD,iBAAiB,GAAGG,KAAKC,GAAG,CAAC,GAAG,AAACrD,CAAAA,CAAAA,yBAAAA,WAAWZ,UAAU,cAArBY,oCAAAA,yBAAyB,CAAA,IAAK+C;YAE1E,IAAI,CAAC5D,gBAAgB,CAACa,YAAYA,WAAWiD,iBAAiB;YAC9D,IAAI,CAAC5D,cAAc,CAACW;QACtB;IACF;IAcAsD,eAAe3B,KAAuB,EAAE3B,UAA4B,EAAE;QACpE,MAAM,EAAEuD,MAAM,EAAE3B,MAAM,EAAE,GAAGD;QAE3B3B,WAAWoC,eAAe,GAAG;QAC7BpC,WAAW0C,iBAAiB,GAAG;QAE/B,IAAIc;QAEJ,IAAI,IAAI,CAAC1C,KAAK,CAAC8B,QAAQ,IAAI,IAAI,CAAClF,MAAM,EAAE;YACtC,MAAM+F,mBAAmB,AAAEF,CAAAA,SAAS3B,MAAK,IAAK,IAAI,CAAClE,MAAM,CAACoF,WAAW,GAAI;gBAExD9C;YAAjB,IAAIZ,aAAaY,CAAAA,gCAAAA,WAAWiD,iBAAiB,cAA5BjD,2CAAAA,gCAAgC;gBAK7CA;YAJJ,MAAM0D,mBACJ,AAACtE,aAAauC,MAAMgC,QAAQ,GAC5B,MACA,MACC,CAAA,AAAC3D,CAAAA,CAAAA,iCAAAA,WAAWgD,kBAAkB,cAA7BhD,4CAAAA,iCAAiC,CAAA,IAAK,IAAI,CAAC,IAAI,CAAA;YACnDZ,aAAajC,eAAeiC,aAAasE;YAEzC,IAAI1D,WAAW4D,cAAc,KAAK,KAAK;gBACrC,IAAI5G,cAAcoC,YAAYY,WAAW6D,aAAa,GAAG;wBAC1C7D;wBAAAA;oBAAbZ,aAAaY,CAAAA,8BAAAA,4BAAAA,WAAW6D,aAAa,cAAxB7D,gDAAAA,yBAA0B,CAAC,EAAE,cAA7BA,wCAAAA,6BAAiC;gBAChD,OAAO,IAAIhD,cAAcoC,YAAYY,WAAW8D,cAAc,GAAG;wBAClD9D;oBAAbZ,aAAaY,CAAAA,6BAAAA,WAAWQ,cAAc,cAAzBR,wCAAAA,6BAA6B;gBAC5C,OAAO,IAAIhD,cAAcoC,YAAYY,WAAW+D,WAAW,GAAG;wBACrB/D;oBAAvCZ,aAAaY,WAAWgE,YAAY,GAAGhE,CAAAA,8BAAAA,WAAWQ,cAAc,cAAzBR,yCAAAA,8BAA6B,IAAI;gBAC1E,OAAO;wBACQA;oBAAbZ,aAAaY,CAAAA,8BAAAA,WAAWQ,cAAc,cAAzBR,yCAAAA,8BAA6B;gBAC5C;YACF,OAAO;gBACL,IAAIhD,cAAcoC,YAAY;oBAAC;oBAAG;iBAAG,GAAG;oBACtCA,aAAa;gBACf,OAAO;wBACkCY;oBAAvCZ,aAAaY,WAAWgE,YAAY,GAAGhE,CAAAA,8BAAAA,WAAWQ,cAAc,cAAzBR,yCAAAA,8BAA6B,IAAI;gBAC1E;YACF;YAEA,IAAIZ,eAAe,OAAOqE,oBAAoB,MAAM,CAACzD,WAAWgE,YAAY,EAAE;gBAC5E5E,aAAa;YACf;YAEAY,WAAWZ,UAAU,GAAGA;YACxBY,WAAWiD,iBAAiB,GAAG7D;YAC/BY,WAAWqC,SAAS,GAAGrF,cAAcoC,YAAYY,WAAW8D,cAAc;YAC1E9D,WAAWsC,QAAQ,GAAGlD,eAAe;YACrCY,WAAWiE,MAAM,GAAG7E,eAAe;YAEnC,IAAIY,WAAWiE,MAAM,EAAE;gBACrB,IAAI,CAAC1G,KAAK,CAAC2G,MAAM;YACnB;YAEAV,mBAAmB;gBACjB,IAAI,CAACxD,WAAWiE,MAAM,EAAE;oBACtB,IAAI,CAAC9E,gBAAgB,CAACa,YAAYA,WAAWZ,UAAU;gBACzD;gBAEA,IAAI,CAACC,cAAc,CAACW;YACtB;QACF;QAEA,IAAI,CAACY,QAAQ,CACX;YACEC,WAAW;YACX+B,UAAU;QACZ,GACAY;IAEJ;IAEAW,eAAe,EAAER,QAAQ,EAAoB,EAAE3D,UAA4B,EAAE;QAC3E,IAAIwD;QAEJ,IAAI,IAAI,CAAC1C,KAAK,CAAC8B,QAAQ,EAAE;gBACN5C;YAAjB,IAAIZ,aAAaY,CAAAA,gCAAAA,WAAWiD,iBAAiB,cAA5BjD,2CAAAA,gCAAgC;gBAGPA;YAD1C,MAAM0D,mBACJ,AAACtE,aAAauE,WAAY,MAAM,MAAO,CAAA,AAAC3D,CAAAA,CAAAA,iCAAAA,WAAWgD,kBAAkB,cAA7BhD,4CAAAA,iCAAiC,CAAA,IAAK,IAAI,CAAC,IAAI,CAAA;YACzFZ,aAAagE,KAAKC,GAAG,CAAC,GAAGjE,aAAasE;YAEtC,IAAItE,cAAc,IAAI;gBACpBA,aAAa;YACf,OAAO;gBACLA,aAAa;YACf;YAEAY,WAAWZ,UAAU,GAAGA;YACxBY,WAAWiE,MAAM,GAAG7E,eAAe;YAEnC,IAAIY,WAAWiE,MAAM,EAAE;gBACrB,IAAI,CAAC1G,KAAK,CAAC2G,MAAM;YACnB;YAEAV,mBAAmB;gBACjB,IAAI,CAACxD,WAAWiE,MAAM,EAAE;oBACtB,IAAI,CAAC9E,gBAAgB,CAACa,YAAYA,WAAWZ,UAAU;gBACzD;gBAEA,IAAI,CAACC,cAAc,CAACW;YACtB;QACF;QAEA,IAAI,CAACY,QAAQ,CACX;YACEC,WAAW;YACX+B,UAAU;QACZ,GACAY;IAEJ;IA0BA3E,qBAAqBmB,UAAwC,EAAEoE,YAAwB,EAAE;QACvF,MAAMC,KAAKrE,aAAaA,WAAWlB,YAAY,GAAG;QAClD,IAAIuF,IAAI;YACNA,GAAGrG,gBAAgB,CAAC,iBAAiBoG,cAAc;gBAAEE,MAAM;YAAK;QAClE,OAAO;YACLC,WAAWH,cAAc,IAAI,CAAC9G,OAAO;QACvC;IACF;IAEA;;;;;GAKC,GACD6B,iBAAiBa,UAA4B,EAAEwE,OAA2B,EAAE;QAC1E,MAAMC,UAAU,CAAC,qBAAqB,EAAEzE,WAAWS,EAAE,CAAC,CAAC;QAEvDiE,qBAAqB,IAAI,CAACC,QAAQ,CAACF,QAAQ;QAE3C,IAAI,CAACE,QAAQ,CAACF,QAAQ,GAAGG,sBAAsB;YAC7C,IAAI,CAAC5E,WAAWlB,YAAY,EAAE;gBAC5B;YACF;YACAkB,WAAWlB,YAAY,CAACC,KAAK,CAAC8F,SAAS,GAAG,CAAC,eAAe,EAAEL,QAAQ,KAAK,CAAC;QAC5E;IACF;IAEA,0DAA0D,GAC1DnF,eAAeW,UAA4B,EAAE8E,eAA8B,IAAI,EAAE;YAClD;QAA7B,IAAIA,iBAAiB,QAAQ,EAAA,sBAAA,IAAI,CAACvH,KAAK,CAACwH,OAAO,cAAlB,0CAAA,mBAAoB,CAAC,EAAE,MAAK/E,WAAWS,EAAE,EAAE;YACtE;QACF;QACA,IAAI,IAAI,CAACuE,kBAAkB,EAAE;YAC3BN,qBAAqB,IAAI,CAACM,kBAAkB;QAC9C;QACA,IAAI,CAACA,kBAAkB,GAAGJ,sBAAsB;YAC9C,IAAI,IAAI,CAACK,cAAc,CAAChD,OAAO,EAAE;gBAC/B,MAAM,EAAE7C,aAAa,CAAC,EAAE6D,oBAAoB,CAAC,EAAE,GAAGjD;gBAElD,MAAMkF,UACJJ,iBAAiB,OACb,IAAI,AAAC7B,CAAAA,oBAAoB7D,UAAS,IAAM,CAAA,MAAMA,UAAS,KAAM,IAC7D0F;gBACN,IAAI,CAACG,cAAc,CAAChD,OAAO,CAAClD,KAAK,CAACmG,OAAO,GAAGjJ,MAAMiJ,SAAS,GAAG,KAAKC,QAAQ;gBAC3E,IAAI,CAACF,cAAc,CAAChD,OAAO,CAAClD,KAAK,CAACC,eAAe,GAC/CkG,WAAW,IAAI,CAAC3H,KAAK,CAAC2B,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC5B,OAAO,CAAC,EAAE,CAAC,GAAG;YAC7D;QACF;IACF;IAEA8H,SAAS;YAcG;QAbV,MAAM,EAAE9F,WAAW,EAAEf,YAAY,EAAEE,aAAa,EAAE4G,kBAAkB,EAAE,GAAG,IAAI,CAAC9H,KAAK;QACnF,MAAM,EAAEsD,SAAS,EAAE+B,QAAQ,EAAE,GAAG,IAAI,CAAC9B,KAAK;QAE1C,IAAI,CAACxB,eAAe,CAACf,cAAc;YACjC,OAAO;QACT;QAEA,qBACE,KAAC5B,iBAAiB2I,QAAQ;YAACC,OAAO;sBAChC,cAAA,KAAC3I,iBAAiB0I,QAAQ;gBAACC,OAAO,IAAI,CAACC,gBAAgB;0BACrD,cAAA,MAAC9I;oBACC+I,WAAWzJ,4BAET,EAAA,6BAAA,IAAI,CAACuB,KAAK,CAACmI,cAAc,cAAzB,iDAAA,2BAA2BC,yBAAyB,qDAEpD9E,aACE7E,qCAAyC,mCAC3C,CAAC,CAAEyC,CAAAA,iBAAiBF,YAAW,KAC7BvC,uCAA2C;oBAE/C4J,QAAQ,IAAI,CAACC,WAAW;oBACxBC,OAAO,IAAI,CAACC,UAAU;oBACtBC,UAAU,IAAI,CAACA,QAAQ;;sCAEvB,KAACC;4BACCC,eAAab;4BACbI,SAAS;4BACTU,SAAS,IAAI,CAAC5I,KAAK,CAAC2G,MAAM;4BAC1BkC,KAAK,IAAI,CAACnB,cAAc;;sCAE1B,KAACgB;4BAAIR,SAAS;4BAAiCW,KAAK,IAAI,CAACpE,WAAW;sCACjE,IAAI,CAACrE,SAAS,GAAG0I,GAAG,CAAC,CAACC;gCACrB,MAAMC,UAAUlK,SAASiK,MAAM/I,KAAK,EAAER;gCACtC,MAAMyJ,cAAc,IAAI,CAACjJ,KAAK,CAACoB,aAAa,CAAC4H;gCAC7C,IAAI,AAACA,YAAYjH,eAAeiH,YAAYhI,gBAAiB,CAACiI,aAAa;oCACzE,OAAO;gCACT;gCACA,MAAMxG,aAAa,mBAAKwG;gCAExB,MAAMC,SAASzG,WAAWC,IAAI,KAAK;gCACnC,MAAMyG,MAAM,CAAC,MAAM,EAAEH,QAAQ,CAAC;gCAE9B,qBACE,KAAC9J;oCAECkK,SAAS,IAAI,CAACpJ,KAAK,CAAC2G,MAAM;oCAC1B5G,SAAS,IAAI,CAACA,OAAO;oCACrBmI,WAAWzJ,mCAGT4G,YAAY,0CAEZ6D,UAAUzG,WAAWO,UAAU,IAAI,4CACnCkG,UAAUzG,WAAWqC,SAAS,IAAI;oCAEpCuE,WAAW;oCACXC,cAAc;8CAEbP;mCAdII;4BAiBX;;;;;;IAMZ;IAjjBAI,YAAYvJ,KAAmD,CAAE;QAC/D,KAAK,CAACA,QAmBR,uBAAiB0H,kBAAjB,KAAA,IACA,uBAAiBjD,6BAAcjG,MAAMgL,SAAS,KAC9C,uBAAQ/B,sBAAyCxD,YACjD,uBAAiBgE,oBAAjB,KAAA,IACA,uBAAiBb,YAAjB,KAAA,IAGA,uBAAQpF,kBAAiDiC,YA0GzDvD,uBAAAA,qBAAoB;YAClB,MAAM+B,aAAa,IAAI,CAACzC,KAAK,CAACoB,aAAa,CAAC,IAAI,CAACpB,KAAK,CAAC+B,WAAW;YAElE,IAAIU,cAAcA,WAAWC,IAAI,KAAK,QAAQ;gBAC5C,IAAI,IAAI,CAAC1C,KAAK,CAACkB,aAAa,EAAE;oBAC5B,IAAI,CAACI,oBAAoB,CAACmB,YAAY;wBACpC4E,sBAAsB,IAAM,IAAI,CAAC7E,sBAAsB;oBACzD;gBACF,OAAO;oBACL6E,sBAAsB,IAAM,IAAI,CAAC7E,sBAAsB;gBACzD;YACF;QACF,IAyDA8F,uBAAAA,eAAc,CAACmB;YACb,IAAI,IAAI,CAACzJ,KAAK,CAACgB,YAAY,EAAE;gBAC3B;YACF;YACA,MAAMyB,aAAa,IAAI,CAACzC,KAAK,CAACoB,aAAa,CAAC,IAAI,CAACpB,KAAK,CAAC+B,WAAW;YAClE,IAAI,CAACU,YAAY;gBACf;YACF;YAEA,IAAIA,WAAWC,IAAI,KAAK,QAAQ;gBAC9B,OAAO,IAAI,CAACyB,eAAe,CAACsF,GAAGhH;YACjC;YAEA,IAAIA,WAAWC,IAAI,KAAK,QAAQ;gBAC9B,OAAO,IAAI,CAACiD,eAAe,CAAC8D,GAAGhH;YACjC;QACF,IA8EA+F,uBAAAA,cAAa,CAACiB;YACZ,MAAMhH,aAAa,IAAI,CAACzC,KAAK,CAACoB,aAAa,CAAC,IAAI,CAACpB,KAAK,CAAC+B,WAAW;YAElE,IAAIU,CAAAA,uBAAAA,iCAAAA,WAAYC,IAAI,MAAK,QAAQ;gBAC/B,OAAO,IAAI,CAACqD,cAAc,CAAC0D,GAAGhH;YAChC;YAEA,IAAIA,CAAAA,uBAAAA,iCAAAA,WAAYC,IAAI,MAAK,QAAQ;gBAC/B,OAAO,IAAI,CAACkE,cAAc,CAAC6C,GAAGhH;YAChC;QACF,IAgHAgG,uBAAAA,YAAW,CAACgB;gBASyBhH;YARnC,MAAMV,cAAc,IAAI,CAAC/B,KAAK,CAAC+B,WAAW;YAE1C,MAAMwC,SAASkF,EAAElF,MAAM;YAEvB,IAAI,CAACxC,aAAa;gBAChB;YACF;YACA,MAAMU,aAAa,IAAI,CAACzC,KAAK,CAACoB,aAAa,CAACW;YAC5C,IAAIU,CAAAA,uBAAAA,iCAAAA,WAAYC,IAAI,MAAK,WAAUD,uBAAAA,kCAAAA,6BAAAA,WAAYwC,cAAc,cAA1BxC,iDAAAA,2BAA4BW,QAAQ,CAACmB,UAAS;gBAC/E9B,WAAWoC,eAAe,GAAG;gBAE7B,IAAIpC,WAAWiH,wBAAwB,EAAE;oBACvCC,aAAalH,WAAWiH,wBAAwB;gBAClD;gBAEAjH,WAAWiH,wBAAwB,GAAG1C,WAAW;oBAC/C,IAAIvE,WAAWoC,eAAe,EAAE;wBAC9BpC,WAAWoC,eAAe,GAAG;oBAC/B;gBACF,GAAG;YACL;QACF;QAtbE,IAAI,CAACtB,KAAK,GAAG;YACXD,WAAW;YACX+B,UAAU;YACV7B,gBAAgB,EAAE;QACpB;QAEA,IAAI,CAACkE,cAAc,iBAAGlJ,MAAMgL,SAAS;QAErC,IAAI,CAACvB,gBAAgB,GAAG;YACtBvH,mBAAmB,IAAI,CAACA,iBAAiB;YACzCkJ,eAAe;oBAAC,EAAE1G,EAAE,EAAW,WAAN2G;oBAAP3G;;oBAAgC;uBAAd4G,OAAOC,MAAM,CAAC,CAAA,4BAAA,IAAI,CAAC/J,KAAK,CAACoB,aAAa,CAAC8B,iBAAzB,uCAAA,4BAAgC,CAAC,GAAG2G;;YACtFT,SAAS,IAAM,IAAI,CAACpJ,KAAK,CAAC2G,MAAM;YAChCqD,eAAe;QACjB;QAEA,IAAI,CAAC5C,QAAQ,GAAG,CAAC;IACnB;AAgiBF;AAEA,OAAO,MAAM6C,iBAAkDtL,YAC7DC,aACEC,QAA+BU,iBAAiB2K,WAAWrK,4BAE7DZ,uBACA,kBACA;AAEF;;CAEC,GACD,SAASiL,UAAUzH,UAA4B;IAC7C,OAAQA,WAAWC,IAAI;QACrB,KAAK;YACHD,WAAW4D,cAAc,GAAG5D,WAAW4D,cAAc,IAAI/G;YACzD,OAAOuD,cAAcJ;QACvB,KAAK;YACH,OAAO0H,cAAc1H;QACvB;YACE2H,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBACvB9K,KAAK,CAAC,kCAAkC,EAAEiD,WAAWC,IAAI,CAAC,mBAAmB,CAAC,EAAE;IACtF;AACF;AAEA,SAASG,cAAcJ,UAA4B;IACjD,MAAM,EAAEwC,cAAc,EAAEsF,WAAW,EAAE,GAAG9H;IACxC,MAAM+H,uBAAuBC,4BAC3BxF,2BAAAA,qCAAAA,eAAgByF,iBAAiB,EACjCjI,WAAWO,UAAU;IAEvB,MAAM2H,oBAAoBJ,CAAAA,wBAAAA,kCAAAA,YAAa3E,YAAY,KAAI;IACvD,MAAMgF,gBAAgBJ,uBAAuBG;IAC7C,IAAIE,iBAAiBpI,WAAWZ,UAAU;IAC1C,IAAIiJ,iBAAiBrI,WAAWO,UAAU;QAGvBiC;IADnBxC,WAAWO,UAAU,GACnB4H,gBAAiB3F,CAAAA,CAAAA,+BAAAA,2BAAAA,qCAAAA,eAAgB8F,YAAY,cAA5B9F,0CAAAA,+BAAgC,CAAA,KAAMxC,WAAW4D,cAAc,KAAK;IAEvF,IAAIvB,YAAY;IAChB,IAAIC,WAAW;IACf,IAAI9B;IACJ,IAAIpB;IACJ,IAAIyE;IACJ,IAAIC;IACJ,IAAIC;IAEJ,MAAMwE,oBAAoBC,QAAQxI,WAAWO,UAAU,IAAIP,WAAW4D,cAAc,KAAK;IACzF,IAAI5D,WAAWO,UAAU,EAAE;YACDP;QAAxBQ,iBAAiB,MAAOR,CAAAA,CAAAA,6BAAAA,WAAW4D,cAAc,cAAzB5D,wCAAAA,6BAA6B,CAAA;QAErD,MAAMyI,YAAYjI,iBAAiB;QACnC,MAAMkI,cAAc,MAAMlI;QAE1BqD,gBAAgB;YAAC;YAAG4E;SAAU;QAC9B3E,iBAAiByE,oBAAoB;YAACE;YAAWjI,iBAAiBkI,cAAc;SAAE,GAAGlH;QACrFuC,cAAc;YAACvD,iBAAiBkI,cAAc;YAAG;SAAI;QAErDrG,YAAYkG,qBAAqB/H,iBAAiB;QAClD8B,WAAW9B,kBAAkB;QAC7BpB,aAAaoB;IACf,OAAO;YACgBR,2BAIFA,wCAAAA;YAJEA;QAArB,MAAM2I,eAAe3I,CAAAA,0CAAAA,4BAAAA,WAAW2C,aAAa,cAAxB3C,gDAAAA,0BAA0BmD,YAAY,cAAtCnD,oDAAAA,yCAA0C;QAC/D,MAAM4I,SAAST,gBAAgBQ;YAGZ3I;QADnBQ,iBACE,MAAM,AAACoI,SAAU5I,CAAAA,CAAAA,uDAAAA,2BAAAA,WAAWlB,YAAY,cAAvBkB,gDAAAA,yCAAAA,yBAAyB6I,aAAa,cAAtC7I,6DAAAA,uCAAwCmD,YAAY,cAApDnD,iEAAAA,sDAAwD,CAAA,IAAM;QACjFZ,aAAaoB;QAEbqD,gBAAgB;YAACzE;YAAYA,aAAa;SAAG;QAC7C0E,iBAAiBtC;QACjBuC,cAAc;YAAC3E,aAAa;YAAIA,aAAa;SAAI;IACnD;IAEA,4GAA4G;IAC5G,MAAM0J,eAAeT,kBAAkBrI,WAAWO,UAAU;IAC5D,8GAA8G;IAC9G,IAAI,AAACuI,gBAAgB1J,aAAcgJ,CAAAA,2BAAAA,4BAAAA,iBAAkB,GAAE,KAAOpI,WAAW4D,cAAc,KAAK,KAAK;QAC/FxE,aAAa;IACf;IAEA,gDAAgD;IAChD,IAAIA,eAAe,GAAG;QACpBkD,WAAW;QACXD,YAAY;IACd;IAEArC,WAAW6D,aAAa,GAAGA;IAC3B7D,WAAW8D,cAAc,GAAGA;IAC5B9D,WAAW+D,WAAW,GAAGA;IACzB/D,WAAWZ,UAAU,GAAGA;IACxBY,WAAWQ,cAAc,GAAGA;IAC5BR,WAAWqC,SAAS,GAAGA;IACvBrC,WAAWsC,QAAQ,GAAGA;AACxB;AAEA,SAASoF,cAAc1H,UAA4B;IACjDA,WAAWZ,UAAU,GAAG;AAC1B;AAEA,SAAS4I,4BACPe,OAAoB,EACpBC,YAA4C;IAE5C,IAAI,CAACA,cAAc;QACjB,OAAOD,QAAQE,YAAY;IAC7B;IAEA;;;;KAIG,GACH,MAAMC,qBAAqBH,QAAQhK,KAAK,CAAC6J,MAAM;IAC/CG,QAAQhK,KAAK,CAAC6J,MAAM,GAAG;IAEvB,MAAMO,gBAAgBJ,QAAQE,YAAY;IAC1CF,QAAQhK,KAAK,CAAC6J,MAAM,GAAGM;IAEvB,OAAOC;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalRootDesktop.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAAE,qBAAqB,EAAoB,MAAM,SAAS,CAAC;AAMvE,eAAO,MAAM,gBAAgB,0HAS1B,qBAAqB,KAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"ModalRootDesktop.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAAE,qBAAqB,EAAoB,MAAM,SAAS,CAAC;AAMvE,eAAO,MAAM,gBAAgB,0HAS1B,qBAAqB,KAAG,KAAK,CAAC,SAqNhC,CAAC"}
|
|
@@ -106,7 +106,15 @@ export const ModalRootDesktop = ({ activeModal: activeModalProp, children, noFoc
|
|
|
106
106
|
// Анимация закрытия модального окна
|
|
107
107
|
if (!activeModal) {
|
|
108
108
|
requestAnimationFrame(()=>{
|
|
109
|
-
waitTransitionFinish(prevModalState === null || prevModalState === void 0 ? void 0 : prevModalState.innerElement, ()=>
|
|
109
|
+
waitTransitionFinish(prevModalState === null || prevModalState === void 0 ? void 0 : prevModalState.innerElement, (event)=>{
|
|
110
|
+
// Исключаем дочерние элементы
|
|
111
|
+
if (event && event.target === (prevModalState === null || prevModalState === void 0 ? void 0 : prevModalState.innerElement)) {
|
|
112
|
+
onExited(id);
|
|
113
|
+
} else if (!event) {
|
|
114
|
+
// Вызвался по тайм-ауту
|
|
115
|
+
onExited(id);
|
|
116
|
+
}
|
|
117
|
+
}, timeout);
|
|
110
118
|
animateModalOpacity(prevModalState, false);
|
|
111
119
|
setMaskOpacity(prevModalState, 0);
|
|
112
120
|
});
|