@vkontakte/vkui 6.5.0 → 6.5.2
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/Button/Button.js +1 -1
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts.map +1 -1
- package/dist/cjs/components/Cell/Cell.js +10 -14
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/ChipsInputBase/Chip/Chip.js +2 -2
- package/dist/cjs/components/ChipsInputBase/Chip/Chip.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +9 -9
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/Clickable.js +1 -1
- package/dist/cjs/components/Clickable/Clickable.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +3 -13
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +45 -70
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectInput.d.ts +4 -2
- package/dist/cjs/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectInput.js +19 -24
- package/dist/cjs/components/CustomSelect/CustomSelectInput.js.map +1 -1
- package/dist/cjs/components/CustomSelect/helpers.d.ts +8 -0
- package/dist/cjs/components/CustomSelect/helpers.d.ts.map +1 -0
- package/dist/cjs/components/CustomSelect/helpers.js +76 -0
- package/dist/cjs/components/CustomSelect/helpers.js.map +1 -0
- package/dist/cjs/components/CustomSelect/types.d.ts +12 -0
- package/dist/cjs/components/CustomSelect/types.d.ts.map +1 -0
- package/dist/cjs/components/CustomSelect/types.js +6 -0
- package/dist/cjs/components/CustomSelect/types.js.map +1 -0
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -14
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.d.ts +1 -1
- package/dist/cjs/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts +6 -4
- package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/cjs/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/cjs/components/Footer/Footer.d.ts +1 -1
- package/dist/cjs/components/Footer/Footer.d.ts.map +1 -1
- package/dist/cjs/components/Footer/Footer.js +7 -3
- package/dist/cjs/components/Footer/Footer.js.map +1 -1
- package/dist/cjs/components/FormItem/FormItem.js +2 -2
- package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.d.ts.map +1 -1
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +3 -3
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cjs/components/Group/Group.d.ts.map +1 -1
- package/dist/cjs/components/Group/Group.js +3 -2
- package/dist/cjs/components/Group/Group.js.map +1 -1
- package/dist/cjs/components/Link/Link.d.ts +1 -1
- package/dist/cjs/components/Link/Link.d.ts.map +1 -1
- package/dist/cjs/components/Link/Link.js +3 -5
- package/dist/cjs/components/Link/Link.js.map +1 -1
- package/dist/cjs/components/Removable/Removable.d.ts +5 -1
- package/dist/cjs/components/Removable/Removable.d.ts.map +1 -1
- package/dist/cjs/components/Removable/Removable.js +8 -5
- package/dist/cjs/components/Removable/Removable.js.map +1 -1
- package/dist/cjs/components/RootComponent/RootComponent.d.ts +1 -1
- package/dist/cjs/components/RootComponent/RootComponent.d.ts.map +1 -1
- package/dist/cjs/components/RootComponent/RootComponent.js +1 -1
- package/dist/cjs/components/RootComponent/RootComponent.js.map +1 -1
- package/dist/cjs/components/Search/Search.d.ts.map +1 -1
- package/dist/cjs/components/Search/Search.js +3 -2
- package/dist/cjs/components/Search/Search.js.map +1 -1
- package/dist/cjs/components/Select/Select.d.ts.map +1 -1
- package/dist/cjs/components/Select/Select.js +1 -2
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/SelectTypography/SelectTypography.d.ts +2 -2
- package/dist/cjs/components/SelectTypography/SelectTypography.d.ts.map +1 -1
- package/dist/cjs/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.d.ts.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/Snackbar/Snackbar.js +2 -2
- package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cjs/components/ToolButton/ToolButton.d.ts +1 -1
- package/dist/cjs/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/cjs/components/ToolButton/ToolButton.js +1 -3
- package/dist/cjs/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/cjs/components/View/View.d.ts.map +1 -1
- package/dist/cjs/components/View/View.js +16 -32
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/cjs/hooks/useEnsuredControl.js +27 -3
- package/dist/cjs/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cjs/hooks/useIsClient.d.ts +1 -1
- package/dist/cjs/hooks/useIsClient.js.map +1 -1
- package/dist/cjs/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/components/Button/Button.js +2 -2
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts.map +1 -1
- package/dist/components/Cell/Cell.js +11 -15
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/ChipsInputBase/Chip/Chip.js +3 -3
- package/dist/components/ChipsInputBase/Chip/Chip.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +9 -9
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.js +1 -1
- package/dist/components/Clickable/Clickable.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +3 -13
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +37 -62
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput.d.ts +4 -2
- package/dist/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput.js +19 -24
- package/dist/components/CustomSelect/CustomSelectInput.js.map +1 -1
- package/dist/components/CustomSelect/helpers.d.ts +8 -0
- package/dist/components/CustomSelect/helpers.d.ts.map +1 -0
- package/dist/components/CustomSelect/helpers.js +48 -0
- package/dist/components/CustomSelect/helpers.js.map +1 -0
- package/dist/components/CustomSelect/types.d.ts +12 -0
- package/dist/components/CustomSelect/types.d.ts.map +1 -0
- package/dist/components/CustomSelect/types.js +3 -0
- package/dist/components/CustomSelect/types.js.map +1 -0
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -14
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts +1 -1
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/Flex/FlexItem/FlexItem.d.ts +6 -4
- package/dist/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/components/Footer/Footer.d.ts +1 -1
- package/dist/components/Footer/Footer.d.ts.map +1 -1
- package/dist/components/Footer/Footer.js +7 -3
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/FormItem/FormItem.js +3 -3
- package/dist/components/FormItem/FormItem.js.map +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.d.ts.map +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js +4 -4
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/components/Group/Group.d.ts.map +1 -1
- package/dist/components/Group/Group.js +3 -2
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/Link/Link.d.ts.map +1 -1
- package/dist/components/Link/Link.js +4 -6
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/Removable/Removable.d.ts +5 -1
- package/dist/components/Removable/Removable.d.ts.map +1 -1
- package/dist/components/Removable/Removable.js +9 -6
- package/dist/components/Removable/Removable.js.map +1 -1
- package/dist/components/RootComponent/RootComponent.d.ts +1 -1
- package/dist/components/RootComponent/RootComponent.d.ts.map +1 -1
- package/dist/components/RootComponent/RootComponent.js +1 -1
- package/dist/components/RootComponent/RootComponent.js.map +1 -1
- package/dist/components/Search/Search.d.ts.map +1 -1
- package/dist/components/Search/Search.js +3 -2
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +1 -2
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/SelectTypography/SelectTypography.d.ts +2 -2
- package/dist/components/SelectTypography/SelectTypography.d.ts.map +1 -1
- package/dist/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.js +3 -3
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/ToolButton/ToolButton.d.ts +1 -1
- package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/components/ToolButton/ToolButton.js +2 -4
- package/dist/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/components/View/View.d.ts.map +1 -1
- package/dist/components/View/View.js +17 -33
- package/dist/components/View/View.js.map +1 -1
- package/dist/components.css +3 -3
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +260 -263
- package/dist/cssm/components/Button/Button.js +2 -2
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.d.ts.map +1 -1
- package/dist/cssm/components/Cell/Cell.js +11 -14
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.module.css +0 -4
- package/dist/cssm/components/ChipsInputBase/Chip/Chip.js +3 -3
- package/dist/cssm/components/ChipsInputBase/Chip/Chip.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +9 -9
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.js +1 -1
- package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +3 -13
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +36 -59
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput.d.ts +4 -2
- package/dist/cssm/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput.js +16 -21
- package/dist/cssm/components/CustomSelect/CustomSelectInput.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput.module.css +74 -40
- package/dist/cssm/components/CustomSelect/helpers.d.ts +8 -0
- package/dist/cssm/components/CustomSelect/helpers.d.ts.map +1 -0
- package/dist/cssm/components/CustomSelect/helpers.js +44 -0
- package/dist/cssm/components/CustomSelect/helpers.js.map +1 -0
- package/dist/cssm/components/CustomSelect/types.d.ts +12 -0
- package/dist/cssm/components/CustomSelect/types.d.ts.map +1 -0
- package/dist/cssm/components/CustomSelect/types.js +3 -0
- package/dist/cssm/components/CustomSelect/types.js.map +1 -0
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -13
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.d.ts +1 -1
- package/dist/cssm/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts +6 -4
- package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/cssm/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/cssm/components/Footer/Footer.d.ts +1 -1
- package/dist/cssm/components/Footer/Footer.d.ts.map +1 -1
- package/dist/cssm/components/Footer/Footer.js +4 -2
- package/dist/cssm/components/Footer/Footer.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.module.css +36 -23
- package/dist/cssm/components/FormItem/FormItem.js +3 -3
- package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.d.ts.map +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +4 -4
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cssm/components/Group/Group.d.ts.map +1 -1
- package/dist/cssm/components/Group/Group.js +3 -2
- package/dist/cssm/components/Group/Group.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBase.module.css +0 -4
- package/dist/cssm/components/Link/Link.d.ts +1 -1
- package/dist/cssm/components/Link/Link.d.ts.map +1 -1
- package/dist/cssm/components/Link/Link.js +2 -3
- package/dist/cssm/components/Link/Link.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.d.ts +5 -1
- package/dist/cssm/components/Removable/Removable.d.ts.map +1 -1
- package/dist/cssm/components/Removable/Removable.js +7 -5
- package/dist/cssm/components/Removable/Removable.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.module.css +4 -0
- package/dist/cssm/components/RootComponent/RootComponent.d.ts +1 -1
- package/dist/cssm/components/RootComponent/RootComponent.d.ts.map +1 -1
- package/dist/cssm/components/RootComponent/RootComponent.js +2 -1
- package/dist/cssm/components/RootComponent/RootComponent.js.map +1 -1
- package/dist/cssm/components/RootComponent/RootComponent.module.css +10 -0
- package/dist/cssm/components/Search/Search.d.ts.map +1 -1
- package/dist/cssm/components/Search/Search.js +3 -2
- package/dist/cssm/components/Search/Search.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/SelectTypography/SelectTypography.d.ts +2 -2
- package/dist/cssm/components/SelectTypography/SelectTypography.d.ts.map +1 -1
- package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.d.ts +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.d.ts.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/SimpleCell/SimpleCell.module.css +4 -0
- package/dist/cssm/components/Snackbar/Snackbar.js +3 -3
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/ToolButton/ToolButton.d.ts +1 -1
- package/dist/cssm/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/cssm/components/ToolButton/ToolButton.js +2 -3
- package/dist/cssm/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/cssm/components/View/View.d.ts.map +1 -1
- package/dist/cssm/components/View/View.js +17 -33
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/cssm/hooks/useEnsuredControl.js +27 -3
- package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cssm/hooks/useIsClient.d.ts +1 -1
- package/dist/cssm/hooks/useIsClient.js +1 -1
- package/dist/cssm/hooks/useIsClient.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/cssm/styles/constants.css +2 -3
- package/dist/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/hooks/useEnsuredControl.js +27 -3
- package/dist/hooks/useEnsuredControl.js.map +1 -1
- package/dist/hooks/useIsClient.d.ts +1 -1
- package/dist/hooks/useIsClient.js +1 -1
- package/dist/hooks/useIsClient.js.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/vkui.css +3 -3
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +260 -263
- package/package.json +1 -1
- package/src/components/Button/Button.tsx +2 -2
- package/src/components/Cell/Cell.module.css +0 -4
- package/src/components/Cell/Cell.tsx +9 -16
- package/src/components/ChipsInputBase/Chip/Chip.tsx +3 -3
- package/src/components/ChipsSelect/ChipsSelect.tsx +12 -12
- package/src/components/Clickable/Clickable.tsx +4 -1
- package/src/components/CustomSelect/CustomSelect.tsx +52 -104
- package/src/components/CustomSelect/CustomSelectInput.module.css +55 -35
- package/src/components/CustomSelect/CustomSelectInput.tsx +25 -36
- package/src/components/CustomSelect/helpers.tsx +61 -0
- package/src/components/CustomSelect/types.ts +15 -0
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +3 -17
- package/src/components/DateInput/DateInput.tsx +1 -1
- package/src/components/DateRangeInput/DateRangeInput.tsx +1 -1
- package/src/components/Flex/FlexItem/FlexItem.tsx +6 -4
- package/src/components/Footer/Footer.tsx +14 -2
- package/src/components/FormField/FormField.module.css +32 -21
- package/src/components/FormItem/FormItem.tsx +3 -3
- package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +4 -8
- package/src/components/Group/Group.tsx +3 -2
- package/src/components/ImageBase/ImageBase.module.css +0 -4
- package/src/components/Link/Link.tsx +1 -3
- package/src/components/Removable/Removable.module.css +4 -0
- package/src/components/Removable/Removable.tsx +12 -4
- package/src/components/RootComponent/RootComponent.module.css +10 -0
- package/src/components/RootComponent/RootComponent.tsx +12 -2
- package/src/components/Search/Search.tsx +3 -2
- package/src/components/Select/Select.tsx +0 -1
- package/src/components/SelectTypography/SelectTypography.tsx +2 -5
- package/src/components/SimpleCell/SimpleCell.module.css +4 -0
- package/src/components/SimpleCell/SimpleCell.tsx +2 -1
- package/src/components/Snackbar/Snackbar.tsx +3 -3
- package/src/components/ToolButton/ToolButton.tsx +1 -3
- package/src/components/View/View.tsx +21 -36
- package/src/hooks/useEnsuredControl.ts +38 -4
- package/src/hooks/useIsClient.ts +1 -1
- package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +1 -1
- package/src/styles/constants.css +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { blurActiveElement, canUseDOM, useDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { NavViewIdContext } from '../NavIdContext/NavIdContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { NavTransitionDirectionProvider } from '../NavTransitionDirectionContext/NavTransitionDirectionContext';\nimport { useSplitCol } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { useLayoutEffectCall } from './useLayoutEffectCall';\nimport {\n getSwipeBackPredicates,\n hasHorizontalScrollableElementWithScrolledToLeft,\n swipeBackExcluded,\n} from './utils';\nimport styles from './View.module.css';\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends HTMLAttributesWithRootRef<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?: (params: { isBack: boolean; from: string; to: string }) => void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?: () => void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?: (activePanel: string | null) => void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?: () => void;\n history?: string[];\n\n children: React.ReactElement | Iterable<React.ReactElement>;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps): React.ReactNode => {\n const id = getNavId({ nav, id: restProps.id });\n const scrolls = React.useRef(scrollsCache[id as string] || {});\n const layoutEffectCall = useLayoutEffectCall();\n\n React.useEffect(() => () => {\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const swipeBackPrevented = React.useRef<boolean>(false);\n const [swipingBack, setSwipingBack] = React.useState<boolean | undefined>(undefined);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<'success' | 'fail' | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackShift = usePrevious(swipeBackShift);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n !configProvider.transitionMotionEnabled || !splitCol.animate || platform === 'vkcom';\n const iOSSwipeBackSimulationEnabled =\n !disableAnimation && platform === 'ios' && configProvider.isWebView && Boolean(onSwipeBack);\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(isBackTransition);\n\n layoutEffectCall(() => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n });\n },\n [activePanelProp, layoutEffectCall, onTransition, scroll],\n );\n\n const onAnimationEnd = React.useCallback(() => {\n if (prevPanel !== null) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n }, [flushTransition, isBack, prevPanel]);\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(() => {\n switch (swipeBackResult) {\n case 'fail':\n onSwipeBackCancel();\n break;\n case 'success':\n onSwipeBackSuccess();\n }\n }, [onSwipeBackCancel, onSwipeBackSuccess, swipeBackResult]);\n\n const handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext = (event: TouchEvent) => {\n if (browserSwipe) {\n return;\n }\n const { swipeBackTriggered, viewportStartEdgeTouched, viewportEndEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, window!.innerWidth);\n\n if ((viewportStartEdgeTouched || viewportEndEdgeTouched) && swipeBackTriggered) {\n setBrowserSwipe(true);\n }\n };\n\n const handleTouchMoveXForIOSSwipeBackSimulation = (event: TouchEvent) => {\n if (swipeBackPrevented.current || swipeBackExcluded(event)) {\n return;\n }\n\n const { swipedToOpposite, swipeBackTriggered, viewportStartEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, window!.innerWidth);\n\n if (animated && swipeBackTriggered) {\n return;\n }\n\n if (!swipingBack && history && history.length > 1) {\n if (swipedToOpposite) {\n swipeBackPrevented.current = true;\n return;\n }\n\n if (!swipeBackTriggered) {\n return;\n }\n\n if (\n !viewportStartEdgeTouched &&\n hasHorizontalScrollableElementWithScrolledToLeft(event.originalEvent.target as HTMLElement)\n ) {\n swipeBackPrevented.current = true;\n return;\n }\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n swipeBackPrevented.current = true;\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n if (event.shiftX < 0) {\n setSwipeBackShift(0);\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n setSwipeBackShift(window!.innerWidth);\n } else {\n setSwipeBackShift(event.shiftX);\n }\n }\n };\n\n const handleTouchEndForIOSSwipeBackSimulation = (event: TouchEvent) => {\n swipeBackPrevented.current = false;\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackShift >= window!.innerWidth / 2) {\n setSwipeBackResult('success');\n } else {\n setSwipeBackResult('fail');\n }\n }\n };\n\n const calcPanelSwipeStyles = (panelId: string | undefined): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isPrev = panelId === swipeBackPrevPanel;\n const isNext = panelId === swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%`;\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n };\n }\n\n return {};\n };\n\n const calcPanelSwipeBackOverlayStyles = (panelId?: string): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isNext = panelId === swipeBackNextPanel;\n if (!isNext) {\n return {};\n }\n\n const calculatedOpacity = 1 - swipeBackShift / window.innerWidth;\n const opacityOnSwipeEnd =\n swipeBackResult === 'success' ? 0 : swipeBackResult === 'fail' ? 1 : null;\n\n return {\n display: 'block',\n opacity: opacityOnSwipeEnd === null ? calculatedOpacity : opacityOnSwipeEnd,\n };\n };\n\n const onTransitionEnd = (event: React.TransitionEvent<HTMLDivElement>) => {\n if (event.propertyName.includes('transform')) {\n swipingBackTransitionEndHandler();\n }\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll({ compensateKeyboardHeight: false }).y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n setIsBack(true);\n\n layoutEffectCall(() => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n });\n }\n\n // Началась анимация завершения свайпа назад.\n // см. `onTransitionEnd()`\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n layoutEffectCall,\n ]);\n\n React.useEffect(\n function restoreScrollPositionWhenSwipeBackIsCancelled() {\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n const swipeBackCancelledInTheMiddleOfAction =\n prevSwipeBackResult === 'fail' && !swipeBackResult;\n const swipeBackCancelledByMovingPanelBackToInitialPoint =\n prevSwipingBack && !swipingBack && prevSwipeBackShift === 0;\n\n if (\n (swipeBackCancelledInTheMiddleOfAction ||\n swipeBackCancelledByMovingPanelBackToInitialPoint) &&\n activePanel !== null\n ) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n },\n [\n prevSwipeBackResult,\n swipeBackResult,\n prevSwipingBack,\n swipingBack,\n prevSwipeBackShift,\n activePanel,\n scroll,\n ],\n );\n\n return (\n <NavViewIdContext.Provider value={id}>\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === 'ios' && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={\n iOSSwipeBackSimulationEnabled\n ? handleTouchMoveXForIOSSwipeBackSimulation\n : platform === 'ios'\n ? handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext\n : undefined\n }\n onEnd={iOSSwipeBackSimulationEnabled ? handleTouchEndForIOSSwipeBackSimulation : undefined}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n const isPanelActive = panelId === activePanel;\n const isPanelPrev = panelId === prevPanel;\n const isPanelNext = panelId === nextPanel;\n const isAnimatedTarget = animated && (isBack ? isPanelPrev : isPanelNext);\n\n const isSwipeBackPrev = panelId === swipeBackPrevPanel;\n const isSwipeBackNext = panelId === swipeBackNextPanel;\n const isSwipeBackTarget = !prevSwipeBackResult && swipeBackResult && isSwipeBackNext;\n\n let scrollCompensateStyle: React.CSSProperties | undefined = undefined;\n\n if (isPanelPrev || (isPanelNext && isBack) || isSwipeBackPrev || isSwipeBackNext) {\n const marginTop = scrolls.current[panelId];\n if (marginTop !== undefined) {\n scrollCompensateStyle = { marginTop: -1 * marginTop };\n }\n }\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n\n isPanelActive && styles['View__panel--active'],\n isPanelPrev && styles['View__panel--prev'],\n isPanelNext && styles['View__panel--next'],\n\n isSwipeBackPrev && styles['View__panel--swipe-back-prev'],\n isSwipeBackNext && styles['View__panel--swipe-back-next'],\n swipeBackResult === 'success' && styles['View__panel--swipe-back-success'],\n swipeBackResult === 'fail' && styles['View__panel--swipe-back-failed'],\n )}\n onTransitionEnd={isSwipeBackTarget ? onTransitionEnd : undefined}\n onAnimationEnd={isAnimatedTarget ? onAnimationEnd : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n {platform === 'ios' && (\n <div\n className={styles['View__panel-overlay']}\n style={calcPanelSwipeBackOverlayStyles(panelId)}\n />\n )}\n <div className={styles['View__panel-in']} style={scrollCompensateStyle}>\n <NavTransitionDirectionProvider isBack={swipingBack || isBack}>\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </NavTransitionDirectionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n </NavViewIdContext.Provider>\n );\n};\n"],"names":["React","classNames","usePlatform","usePrevious","blurActiveElement","canUseDOM","useDOM","getNavId","warnOnce","useScroll","useConfigProvider","NavViewIdContext","NavTransitionProvider","NavTransitionDirectionProvider","useSplitCol","Touch","useLayoutEffectCall","getSwipeBackPredicates","hasHorizontalScrollableElementWithScrolledToLeft","swipeBackExcluded","scrollsCache","warn","View","activePanel","activePanelProp","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancel","onSwipeBackCancelProp","children","className","restProps","id","scrolls","useRef","layoutEffectCall","useEffect","current","panelNodes","window","document","scroll","configProvider","splitCol","platform","animated","setAnimated","useState","visiblePanels","setVisiblePanels","setActivePanel","isBack","setIsBack","undefined","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipeBackPrevented","swipingBack","setSwipingBack","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackShift","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","iOSSwipeBackSimulationEnabled","isWebView","Boolean","flushTransition","useCallback","isBackTransition","scrollTo","from","to","onAnimationEnd","onSwipeBackSuccess","swipingBackTransitionEndHandler","handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext","event","swipeBackTriggered","viewportStartEdgeTouched","viewportEndEdgeTouched","startX","shiftX","innerWidth","handleTouchMoveXForIOSSwipeBackSimulation","swipedToOpposite","length","originalEvent","target","payload","getScroll","y","slice","handleTouchEndForIOSSwipeBackSimulation","speed","duration","calcPanelSwipeStyles","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","transform","calcPanelSwipeBackOverlayStyles","calculatedOpacity","opacityOnSwipeEnd","display","opacity","onTransitionEnd","propertyName","firstLayerId","map","find","compensateKeyboardHeight","restoreScrollPositionWhenSwipeBackIsCancelled","swipeBackCancelledInTheMiddleOfAction","swipeBackCancelledByMovingPanelBackToInitialPoint","Provider","value","Component","onMoveX","onEnd","div","isPanelActive","isPanelPrev","isPanelNext","isAnimatedTarget","isSwipeBackPrev","isSwipeBackNext","isSwipeBackTarget","scrollCompensateStyle","marginTop","ref","el","style","entering"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { blurActiveElement, useDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { NavViewIdContext } from '../NavIdContext/NavIdContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { NavTransitionDirectionProvider } from '../NavTransitionDirectionContext/NavTransitionDirectionContext';\nimport { useSplitCol } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { useLayoutEffectCall } from './useLayoutEffectCall';\nimport {\n getSwipeBackPredicates,\n hasHorizontalScrollableElementWithScrolledToLeft,\n swipeBackExcluded,\n} from './utils';\nimport styles from './View.module.css';\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends HTMLAttributesWithRootRef<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?: (params: { isBack: boolean; from: string; to: string }) => void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?: () => void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?: (activePanel: string | null) => void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?: () => void;\n history?: string[];\n\n children: React.ReactElement | Iterable<React.ReactElement>;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps): React.ReactNode => {\n const id = getNavId({ nav, id: restProps.id });\n const scrolls = React.useRef(scrollsCache[id as string] || {});\n const layoutEffectCall = useLayoutEffectCall();\n\n React.useEffect(() => () => {\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const swipeBackPrevented = React.useRef<boolean>(false);\n const [swipingBack, setSwipingBack] = React.useState<boolean | undefined>(undefined);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<'success' | 'fail' | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackShift = usePrevious(swipeBackShift);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n !configProvider.transitionMotionEnabled || !splitCol.animate || platform === 'vkcom';\n const iOSSwipeBackSimulationEnabled =\n !disableAnimation && platform === 'ios' && configProvider.isWebView && Boolean(onSwipeBack);\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(isBackTransition);\n\n layoutEffectCall(() => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n });\n },\n [activePanelProp, layoutEffectCall, onTransition, scroll],\n );\n\n const handleAnimatedTargetAnimationEnd = () => {\n if (prevPanel !== null) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n };\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(() => {\n switch (swipeBackResult) {\n case 'fail':\n onSwipeBackCancel();\n break;\n case 'success':\n onSwipeBackSuccess();\n }\n }, [onSwipeBackCancel, onSwipeBackSuccess, swipeBackResult]);\n\n const handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext = (event: TouchEvent) => {\n if (browserSwipe) {\n return;\n }\n const { swipeBackTriggered, viewportStartEdgeTouched, viewportEndEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, window!.innerWidth);\n\n if ((viewportStartEdgeTouched || viewportEndEdgeTouched) && swipeBackTriggered) {\n setBrowserSwipe(true);\n }\n };\n\n const handleTouchMoveXForIOSSwipeBackSimulation = (event: TouchEvent) => {\n if (swipeBackPrevented.current || swipeBackExcluded(event)) {\n return;\n }\n\n const { swipedToOpposite, swipeBackTriggered, viewportStartEdgeTouched } =\n getSwipeBackPredicates(event.startX, event.shiftX, window!.innerWidth);\n\n if (animated && swipeBackTriggered) {\n return;\n }\n\n if (!swipingBack && history && history.length > 1) {\n if (swipedToOpposite) {\n swipeBackPrevented.current = true;\n return;\n }\n\n if (!swipeBackTriggered) {\n return;\n }\n\n if (\n !viewportStartEdgeTouched &&\n hasHorizontalScrollableElementWithScrolledToLeft(event.originalEvent.target as HTMLElement)\n ) {\n swipeBackPrevented.current = true;\n return;\n }\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n swipeBackPrevented.current = true;\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n if (event.shiftX < 0) {\n setSwipeBackShift(0);\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n setSwipeBackShift(window!.innerWidth);\n } else {\n setSwipeBackShift(event.shiftX);\n }\n }\n };\n\n const handleTouchEndForIOSSwipeBackSimulation = (event: TouchEvent) => {\n swipeBackPrevented.current = false;\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackShift >= window!.innerWidth / 2) {\n setSwipeBackResult('success');\n } else {\n setSwipeBackResult('fail');\n }\n }\n };\n\n const calcPanelSwipeStyles = (isPrev: boolean, isNext: boolean): React.CSSProperties => {\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n if (isNext) {\n return window\n ? {\n transform: `translate3d(${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%, 0, 0)`,\n }\n : {};\n }\n\n if (isPrev) {\n return { transform: `translate3d(${swipeBackShift}px, 0, 0)` };\n }\n\n return {};\n };\n\n const calcPanelSwipeBackOverlayStyles = (isNext: boolean): React.CSSProperties => {\n if (!window || !isNext) {\n return {};\n }\n const opacityOnSwipeEnd =\n swipeBackResult === 'success' ? 0 : swipeBackResult === 'fail' ? 1 : null;\n\n return {\n display: 'block',\n opacity:\n opacityOnSwipeEnd === null ? 1 - swipeBackShift / window.innerWidth : opacityOnSwipeEnd,\n };\n };\n\n const handleSwipeBackTargetTransitionEnd = (event: React.TransitionEvent<HTMLDivElement>) => {\n if (event.propertyName.includes('transform')) {\n swipingBackTransitionEndHandler();\n }\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll({ compensateKeyboardHeight: false }).y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n setIsBack(true);\n\n layoutEffectCall(() => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n });\n }\n\n // Началась анимация завершения свайпа назад.\n // см. `onTransitionEnd()`\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n layoutEffectCall,\n ]);\n\n React.useEffect(\n function restoreScrollPositionWhenSwipeBackIsCancelled() {\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n const swipeBackCancelledInTheMiddleOfAction =\n prevSwipeBackResult === 'fail' && !swipeBackResult;\n const swipeBackCancelledByMovingPanelBackToInitialPoint =\n prevSwipingBack && !swipingBack && prevSwipeBackShift === 0;\n\n if (\n (swipeBackCancelledInTheMiddleOfAction ||\n swipeBackCancelledByMovingPanelBackToInitialPoint) &&\n activePanel !== null\n ) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n },\n [\n prevSwipeBackResult,\n swipeBackResult,\n prevSwipingBack,\n swipingBack,\n prevSwipeBackShift,\n activePanel,\n scroll,\n ],\n );\n\n return (\n <NavViewIdContext.Provider value={id}>\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === 'ios' && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={\n iOSSwipeBackSimulationEnabled\n ? handleTouchMoveXForIOSSwipeBackSimulation\n : platform === 'ios'\n ? handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext\n : undefined\n }\n onEnd={iOSSwipeBackSimulationEnabled ? handleTouchEndForIOSSwipeBackSimulation : undefined}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n const isPanelActive = panelId === activePanel;\n const isPanelPrev = panelId === prevPanel;\n const isPanelNext = panelId === nextPanel;\n const isAnimatedTarget = animated && (isBack ? isPanelPrev : isPanelNext);\n\n const isSwipeBackPrev = panelId === swipeBackPrevPanel;\n const isSwipeBackNext = panelId === swipeBackNextPanel;\n const isSwipeBackTarget = swipeBackResult && isSwipeBackPrev;\n\n let scrollCompensateStyle: React.CSSProperties | undefined = undefined;\n\n if (isPanelPrev || (isPanelNext && isBack) || isSwipeBackPrev || isSwipeBackNext) {\n const marginTop = scrolls.current[panelId];\n if (marginTop !== undefined) {\n scrollCompensateStyle = { marginTop: -1 * marginTop };\n }\n }\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n\n isPanelActive && styles['View__panel--active'],\n isPanelPrev && styles['View__panel--prev'],\n isPanelNext && styles['View__panel--next'],\n\n isSwipeBackPrev && styles['View__panel--swipe-back-prev'],\n isSwipeBackNext && styles['View__panel--swipe-back-next'],\n swipeBackResult === 'success' && styles['View__panel--swipe-back-success'],\n swipeBackResult === 'fail' && styles['View__panel--swipe-back-failed'],\n )}\n onTransitionEnd={isSwipeBackTarget ? handleSwipeBackTargetTransitionEnd : undefined}\n onAnimationEnd={isAnimatedTarget ? handleAnimatedTargetAnimationEnd : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(isSwipeBackPrev, isSwipeBackNext)}\n key={panelId}\n >\n {platform === 'ios' && (\n <div\n className={styles['View__panel-overlay']}\n style={calcPanelSwipeBackOverlayStyles(isSwipeBackNext)}\n />\n )}\n <div className={styles['View__panel-in']} style={scrollCompensateStyle}>\n <NavTransitionDirectionProvider isBack={swipingBack || isBack}>\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </NavTransitionDirectionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n </NavViewIdContext.Provider>\n );\n};\n"],"names":["React","classNames","usePlatform","usePrevious","blurActiveElement","useDOM","getNavId","warnOnce","useScroll","useConfigProvider","NavViewIdContext","NavTransitionProvider","NavTransitionDirectionProvider","useSplitCol","Touch","useLayoutEffectCall","getSwipeBackPredicates","hasHorizontalScrollableElementWithScrolledToLeft","swipeBackExcluded","scrollsCache","warn","View","activePanel","activePanelProp","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancel","onSwipeBackCancelProp","children","className","restProps","id","scrolls","useRef","layoutEffectCall","useEffect","current","panelNodes","window","document","scroll","configProvider","splitCol","platform","animated","setAnimated","useState","visiblePanels","setVisiblePanels","setActivePanel","isBack","setIsBack","undefined","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipeBackPrevented","swipingBack","setSwipingBack","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackShift","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","iOSSwipeBackSimulationEnabled","isWebView","Boolean","flushTransition","useCallback","isBackTransition","scrollTo","from","to","handleAnimatedTargetAnimationEnd","onSwipeBackSuccess","swipingBackTransitionEndHandler","handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext","event","swipeBackTriggered","viewportStartEdgeTouched","viewportEndEdgeTouched","startX","shiftX","innerWidth","handleTouchMoveXForIOSSwipeBackSimulation","swipedToOpposite","length","originalEvent","target","payload","getScroll","y","slice","handleTouchEndForIOSSwipeBackSimulation","speed","duration","calcPanelSwipeStyles","isPrev","isNext","transform","calcPanelSwipeBackOverlayStyles","opacityOnSwipeEnd","display","opacity","handleSwipeBackTargetTransitionEnd","propertyName","firstLayerId","map","find","compensateKeyboardHeight","restoreScrollPositionWhenSwipeBackIsCancelled","swipeBackCancelledInTheMiddleOfAction","swipeBackCancelledByMovingPanelBackToInitialPoint","Provider","value","Component","onMoveX","onEnd","div","isPanelActive","isPanelPrev","isPanelNext","isAnimatedTarget","isSwipeBackPrev","isSwipeBackNext","isSwipeBackTarget","scrollCompensateStyle","marginTop","onTransitionEnd","onAnimationEnd","ref","el","style","entering"],"mappings":"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"}
|