@vkontakte/vkui 4.20.0 → 4.22.1
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/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +414 -116
- package/.cache/ts/src/components/Avatar/Avatar.d.ts +2 -0
- package/.cache/ts/src/components/Cell/Cell.d.ts +11 -0
- package/.cache/ts/src/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
- package/.cache/ts/src/components/Cell/CellDragger/CellDragger.d.ts +6 -0
- package/.cache/ts/src/components/Cell/useDraggable.d.ts +13 -0
- package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +0 -1
- package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +2 -3
- package/.cache/ts/src/components/FormField/FormField.d.ts +2 -3
- package/.cache/ts/src/components/FormItem/FormItem.d.ts +2 -3
- package/.cache/ts/src/components/FormLayout/FormLayout.d.ts +2 -4
- package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +9 -0
- package/.cache/ts/src/components/HorizontalCell/HorizontalCell.d.ts +2 -3
- package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
- package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
- package/.cache/ts/src/components/Link/Link.d.ts +1 -2
- package/.cache/ts/src/components/ModalRoot/types.d.ts +0 -1
- package/.cache/ts/src/components/ModalRoot/useModalManager.d.ts +37 -0
- package/.cache/ts/src/components/Removable/Removable.d.ts +2 -1
- package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +2 -2
- package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +3 -3
- package/.cache/ts/src/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
- package/.cache/ts/src/components/Switch/Switch.d.ts +2 -3
- package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +3 -1
- package/.cache/ts/src/components/Tappable/Tappable.d.ts +2 -3
- package/.cache/ts/src/components/Touch/Touch.d.ts +16 -17
- package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +2 -2
- package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +2 -2
- package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +2 -2
- package/.cache/ts/src/components/Typography/Text/Text.d.ts +2 -3
- package/.cache/ts/src/components/Typography/Title/Title.d.ts +2 -2
- package/.cache/ts/src/components/View/utils.d.ts +2 -0
- package/.cache/ts/src/index.d.ts +4 -0
- package/.cache/ts/src/lib/accessibility.d.ts +1 -1
- package/.cache/ts/src/lib/supportEvents.d.ts +3 -1
- package/.cache/ts/src/types.d.ts +3 -0
- package/dist/cjs/components/ActionSheet/ActionSheet.js +7 -9
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.d.ts +2 -0
- package/dist/cjs/components/Avatar/Avatar.js +7 -3
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/CardScroll/CardScroll.js +1 -1
- package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts +11 -0
- package/dist/cjs/components/Cell/Cell.js +109 -182
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +50 -0
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
- package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +6 -0
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js +53 -0
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -0
- package/dist/cjs/components/Cell/useDraggable.d.ts +13 -0
- package/dist/cjs/components/Cell/useDraggable.js +142 -0
- package/dist/cjs/components/Cell/useDraggable.js.map +1 -0
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/Counter/Counter.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +0 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +2 -3
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/dist/cjs/components/DropdownIcon/DropdownIcon.js +37 -0
- package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -0
- package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +2 -3
- package/dist/cjs/components/FocusTrap/FocusTrap.js +3 -5
- package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cjs/components/FormField/FormField.d.ts +2 -3
- package/dist/cjs/components/FormField/FormField.js.map +1 -1
- package/dist/cjs/components/FormItem/FormItem.d.ts +2 -3
- package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
- package/dist/cjs/components/FormLayout/FormLayout.d.ts +2 -4
- package/dist/cjs/components/FormLayout/FormLayout.js.map +1 -1
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +9 -0
- package/dist/cjs/components/GridAvatar/GridAvatar.js +61 -0
- package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -0
- package/dist/cjs/components/Header/Header.js.map +1 -1
- package/dist/cjs/components/HorizontalCell/HorizontalCell.d.ts +2 -3
- package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +10 -13
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
- package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js +64 -0
- package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
- package/dist/cjs/components/Link/Link.d.ts +1 -2
- package/dist/cjs/components/Link/Link.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +170 -373
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootContext.js +0 -3
- package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +59 -241
- package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/cjs/components/ModalRoot/types.d.ts +0 -1
- package/dist/cjs/components/ModalRoot/types.js.map +1 -1
- package/dist/cjs/components/ModalRoot/useModalManager.d.ts +37 -0
- package/dist/cjs/components/ModalRoot/useModalManager.js +213 -0
- package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -0
- package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/Removable/Removable.d.ts +2 -1
- package/dist/cjs/components/Removable/Removable.js +75 -66
- package/dist/cjs/components/Removable/Removable.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +2 -2
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/SplitCol/SplitCol.d.ts +3 -3
- package/dist/cjs/components/SplitCol/SplitCol.js +2 -4
- package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js +38 -11
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cjs/components/Switch/Switch.d.ts +2 -3
- package/dist/cjs/components/Switch/Switch.js +18 -8
- package/dist/cjs/components/Switch/Switch.js.map +1 -1
- package/dist/cjs/components/Tabbar/Tabbar.js +3 -1
- package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +3 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.js +29 -11
- package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cjs/components/Tappable/Tappable.d.ts +2 -3
- package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.js +9 -7
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/Touch/Touch.d.ts +16 -17
- package/dist/cjs/components/Touch/Touch.js +21 -7
- package/dist/cjs/components/Touch/Touch.js.map +1 -1
- package/dist/cjs/components/Typography/Caption/Caption.d.ts +2 -2
- package/dist/cjs/components/Typography/Caption/Caption.js +4 -2
- package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cjs/components/Typography/Headline/Headline.d.ts +2 -2
- package/dist/cjs/components/Typography/Headline/Headline.js +2 -1
- package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +2 -2
- package/dist/cjs/components/Typography/Subhead/Subhead.js +2 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cjs/components/Typography/Text/Text.d.ts +2 -3
- package/dist/cjs/components/Typography/Text/Text.js +2 -1
- package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
- package/dist/cjs/components/Typography/Title/Title.d.ts +2 -2
- package/dist/cjs/components/Typography/Title/Title.js +9 -4
- package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
- package/dist/cjs/components/View/View.js +68 -75
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +78 -85
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/components/View/utils.d.ts +2 -0
- package/dist/cjs/components/View/utils.js +13 -0
- package/dist/cjs/components/View/utils.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/accessibility.d.ts +1 -1
- package/dist/cjs/lib/accessibility.js.map +1 -1
- package/dist/cjs/lib/prefixClass.js +7 -6
- package/dist/cjs/lib/prefixClass.js.map +1 -1
- package/dist/cjs/lib/supportEvents.d.ts +3 -1
- package/dist/cjs/lib/supportEvents.js +1 -4
- package/dist/cjs/lib/supportEvents.js.map +1 -1
- package/dist/cjs/types.d.ts +3 -0
- package/dist/components/ActionSheet/ActionSheet.js +6 -9
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +2 -0
- package/dist/components/Avatar/Avatar.js +4 -2
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/CardScroll/CardScroll.js +1 -1
- package/dist/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts +11 -0
- package/dist/components/Cell/Cell.js +103 -177
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js +31 -0
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
- package/dist/components/Cell/CellDragger/CellDragger.d.ts +6 -0
- package/dist/components/Cell/CellDragger/CellDragger.js +30 -0
- package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -0
- package/dist/components/Cell/useDraggable.d.ts +13 -0
- package/dist/components/Cell/useDraggable.js +126 -0
- package/dist/components/Cell/useDraggable.js.map +1 -0
- package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/Counter/Counter.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +0 -1
- package/dist/components/CustomSelect/CustomSelect.js +3 -5
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/dist/components/DropdownIcon/DropdownIcon.js +19 -0
- package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -0
- package/dist/components/FocusTrap/FocusTrap.d.ts +2 -3
- package/dist/components/FocusTrap/FocusTrap.js +3 -5
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/components/FormField/FormField.d.ts +2 -3
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/FormItem/FormItem.d.ts +2 -3
- package/dist/components/FormItem/FormItem.js.map +1 -1
- package/dist/components/FormLayout/FormLayout.d.ts +2 -4
- package/dist/components/FormLayout/FormLayout.js.map +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.d.ts +9 -0
- package/dist/components/GridAvatar/GridAvatar.js +41 -0
- package/dist/components/GridAvatar/GridAvatar.js.map +1 -0
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -3
- package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
- package/dist/components/HorizontalScroll/HorizontalScroll.js +10 -12
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
- package/dist/components/InitialsAvatar/InitialsAvatar.js +46 -0
- package/dist/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
- package/dist/components/Link/Link.d.ts +1 -2
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +167 -376
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootContext.js +0 -3
- package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootDesktop.js +58 -244
- package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/components/ModalRoot/types.d.ts +0 -1
- package/dist/components/ModalRoot/types.js.map +1 -1
- package/dist/components/ModalRoot/useModalManager.d.ts +37 -0
- package/dist/components/ModalRoot/useModalManager.js +189 -0
- package/dist/components/ModalRoot/useModalManager.js.map +1 -0
- package/dist/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/Removable/Removable.d.ts +2 -1
- package/dist/components/Removable/Removable.js +73 -64
- package/dist/components/Removable/Removable.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/SplitCol/SplitCol.d.ts +3 -3
- package/dist/components/SplitCol/SplitCol.js +2 -4
- package/dist/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
- package/dist/components/SubnavigationBar/SubnavigationBar.js +38 -11
- package/dist/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/Switch/Switch.d.ts +2 -3
- package/dist/components/Switch/Switch.js +15 -8
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Tabbar/Tabbar.js +3 -1
- package/dist/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/components/TabbarItem/TabbarItem.d.ts +3 -1
- package/dist/components/TabbarItem/TabbarItem.js +26 -10
- package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +2 -3
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/Textarea/Textarea.js +9 -6
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Touch/Touch.d.ts +16 -17
- package/dist/components/Touch/Touch.js +21 -7
- package/dist/components/Touch/Touch.js.map +1 -1
- package/dist/components/Typography/Caption/Caption.d.ts +2 -2
- package/dist/components/Typography/Caption/Caption.js +4 -2
- package/dist/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/components/Typography/Headline/Headline.d.ts +2 -2
- package/dist/components/Typography/Headline/Headline.js +2 -1
- package/dist/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/components/Typography/Subhead/Subhead.d.ts +2 -2
- package/dist/components/Typography/Subhead/Subhead.js +2 -1
- package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/components/Typography/Text/Text.d.ts +2 -3
- package/dist/components/Typography/Text/Text.js +2 -1
- package/dist/components/Typography/Text/Text.js.map +1 -1
- package/dist/components/Typography/Title/Title.d.ts +2 -2
- package/dist/components/Typography/Title/Title.js +9 -4
- package/dist/components/Typography/Title/Title.js.map +1 -1
- package/dist/components/View/View.js +67 -75
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +79 -87
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/View/utils.d.ts +2 -0
- package/dist/components/View/utils.js +6 -0
- package/dist/components/View/utils.js.map +1 -0
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +6 -9
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/Avatar/Avatar.js +4 -2
- package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Button/Button.css +1 -1
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/CardScroll/CardScroll.js +1 -1
- package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.css +1 -1
- package/dist/cssm/components/Cell/Cell.js +103 -177
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -0
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +32 -0
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
- package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -0
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js +31 -0
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -0
- package/dist/cssm/components/Cell/useDraggable.js +126 -0
- package/dist/cssm/components/Cell/useDraggable.js.map +1 -0
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -5
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/DropdownIcon/DropdownIcon.css +1 -0
- package/dist/cssm/components/DropdownIcon/DropdownIcon.js +20 -0
- package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -0
- package/dist/cssm/components/FocusTrap/FocusTrap.js +3 -5
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
- package/dist/cssm/components/FormField/FormField.css +1 -1
- package/dist/cssm/components/FormField/FormField.js.map +1 -1
- package/dist/cssm/components/FormItem/FormItem.css +1 -1
- package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
- package/dist/cssm/components/FormLayout/FormLayout.js.map +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cssm/components/Gallery/Gallery.css +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -0
- package/dist/cssm/components/GridAvatar/GridAvatar.js +42 -0
- package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -0
- package/dist/cssm/components/Header/Header.js.map +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +10 -12
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
- package/dist/cssm/components/IconButton/IconButton.css +1 -1
- package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -0
- package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js +52 -0
- package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
- package/dist/cssm/components/Link/Link.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +167 -376
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootContext.js +0 -3
- package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +58 -244
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/cssm/components/ModalRoot/types.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js +189 -0
- package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -0
- package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.css +1 -1
- package/dist/cssm/components/Removable/Removable.js +73 -64
- package/dist/cssm/components/Removable/Removable.js.map +1 -1
- package/dist/cssm/components/Search/Search.css +1 -1
- package/dist/cssm/components/Select/Select.css +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SplitCol/SplitCol.js +2 -4
- package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js +38 -11
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/Switch/Switch.css +1 -1
- package/dist/cssm/components/Switch/Switch.js +15 -8
- package/dist/cssm/components/Switch/Switch.js.map +1 -1
- package/dist/cssm/components/Tabbar/Tabbar.css +1 -1
- package/dist/cssm/components/Tabbar/Tabbar.js +3 -1
- package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.js +26 -10
- package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.js +9 -6
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/Touch/Touch.js +21 -7
- package/dist/cssm/components/Touch/Touch.js.map +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.js +4 -2
- package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cssm/components/Typography/Headline/Headline.js +2 -1
- package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.js +2 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cssm/components/Typography/Text/Text.js +2 -1
- package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
- package/dist/cssm/components/Typography/Title/Title.js +9 -4
- package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
- package/dist/cssm/components/View/View.js +67 -75
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +79 -87
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/View/utils.js +6 -0
- package/dist/cssm/components/View/utils.js.map +1 -0
- package/dist/cssm/index.js +2 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/accessibility.js.map +1 -1
- package/dist/cssm/lib/prefixClass.js +7 -6
- package/dist/cssm/lib/prefixClass.js.map +1 -1
- package/dist/cssm/lib/supportEvents.js +1 -4
- package/dist/cssm/lib/supportEvents.js.map +1 -1
- package/dist/cssm/styles/components.css +1 -1
- package/dist/cssm/styles/themes.css +1 -1
- package/dist/cssm/styles/vkcom_light.css +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/accessibility.d.ts +1 -1
- package/dist/lib/accessibility.js.map +1 -1
- package/dist/lib/prefixClass.js +7 -6
- package/dist/lib/prefixClass.js.map +1 -1
- package/dist/lib/supportEvents.d.ts +3 -1
- package/dist/lib/supportEvents.js +1 -4
- package/dist/lib/supportEvents.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/vkui.css +2 -2
- package/dist/vkui.css.map +1 -1
- package/package.json +8 -4
- package/src/components/ActionSheet/ActionSheet.tsx +4 -5
- package/src/components/ActionSheet/Readme.md +18 -14
- package/src/components/Alert/Readme.md +15 -11
- package/src/components/Avatar/Avatar.tsx +5 -2
- package/src/components/Banner/Banner.tsx +4 -5
- package/src/components/Button/Button.css +26 -53
- package/src/components/Button/Button.tsx +2 -3
- package/src/components/Card/Readme.md +6 -6
- package/src/components/CardScroll/CardScroll.tsx +4 -1
- package/src/components/Cell/Cell.css +21 -58
- package/src/components/Cell/Cell.tsx +101 -162
- package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
- package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +42 -0
- package/src/components/Cell/CellDragger/CellDragger.css +4 -0
- package/src/components/Cell/CellDragger/CellDragger.tsx +40 -0
- package/src/components/Cell/Readme.md +89 -51
- package/src/components/Cell/useDraggable.tsx +112 -0
- package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
- package/src/components/Counter/Counter.tsx +2 -2
- package/src/components/CustomSelect/CustomSelect.tsx +3 -4
- package/src/components/DropdownIcon/DropdownIcon.css +3 -0
- package/src/components/DropdownIcon/DropdownIcon.tsx +20 -0
- package/src/components/Epic/Readme.md +2 -1
- package/src/components/FocusTrap/FocusTrap.tsx +13 -11
- package/src/components/FocusVisible/FocusVisible.css +12 -4
- package/src/components/FormField/FormField.css +0 -1
- package/src/components/FormField/FormField.tsx +2 -2
- package/src/components/FormItem/FormItem.css +13 -14
- package/src/components/FormItem/FormItem.tsx +2 -3
- package/src/components/FormLayout/FormLayout.tsx +2 -4
- package/src/components/FormLayoutGroup/FormLayoutGroup.css +11 -7
- package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +10 -1
- package/src/components/Gallery/Gallery.css +2 -3
- package/src/components/Gallery/Readme.md +89 -109
- package/src/components/GridAvatar/GridAvatar.css +37 -0
- package/src/components/GridAvatar/GridAvatar.tsx +55 -0
- package/src/components/GridAvatar/Readme.md +12 -0
- package/src/components/Group/Readme.md +18 -14
- package/src/components/Header/Header.tsx +4 -4
- package/src/components/HorizontalCell/HorizontalCell.tsx +3 -3
- package/src/components/HorizontalScroll/HorizontalScroll.tsx +14 -18
- package/src/components/HorizontalScroll/HorizontalScrollArrow.css +2 -2
- package/src/components/IconButton/IconButton.css +7 -0
- package/src/components/InitialsAvatar/InitialsAvatar.css +53 -0
- package/src/components/InitialsAvatar/InitialsAvatar.tsx +90 -0
- package/src/components/InitialsAvatar/Readme.md +14 -0
- package/src/components/Link/Link.tsx +1 -1
- package/src/components/MiniInfoCell/Readme.md +66 -62
- package/src/components/ModalDismissButton/Readme.md +13 -10
- package/src/components/ModalRoot/ModalRoot.tsx +159 -349
- package/src/components/ModalRoot/ModalRootContext.tsx +0 -1
- package/src/components/ModalRoot/ModalRootDesktop.tsx +54 -240
- package/src/components/ModalRoot/Readme.md +35 -27
- package/src/components/ModalRoot/types.ts +0 -1
- package/src/components/ModalRoot/useModalManager.tsx +174 -0
- package/src/components/NativeSelect/NativeSelect.tsx +2 -2
- package/src/components/Removable/Removable.css +16 -63
- package/src/components/Removable/Removable.tsx +84 -64
- package/src/components/ScreenSpinner/Readme.md +13 -9
- package/src/components/Search/Search.css +1 -1
- package/src/components/Select/Select.css +1 -1
- package/src/components/SelectMimicry/SelectMimicry.tsx +2 -2
- package/src/components/SimpleCell/SimpleCell.css +10 -18
- package/src/components/SimpleCell/SimpleCell.tsx +3 -5
- package/src/components/SplitCol/SplitCol.tsx +4 -8
- package/src/components/SplitLayout/Readme.md +2 -2
- package/src/components/SubnavigationBar/Readme.md +90 -86
- package/src/components/SubnavigationBar/SubnavigationBar.tsx +32 -14
- package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -3
- package/src/components/Switch/Readme.md +6 -6
- package/src/components/Switch/Switch.css +46 -15
- package/src/components/Switch/Switch.tsx +16 -8
- package/src/components/Tabbar/Tabbar.css +15 -4
- package/src/components/Tabbar/Tabbar.tsx +3 -1
- package/src/components/TabbarItem/Readme.md +72 -0
- package/src/components/TabbarItem/TabbarItem.css +65 -14
- package/src/components/TabbarItem/TabbarItem.tsx +46 -22
- package/src/components/Tappable/Tappable.tsx +2 -3
- package/src/components/Textarea/Readme.md +3 -0
- package/src/components/Textarea/Textarea.tsx +10 -6
- package/src/components/Touch/Touch.tsx +38 -25
- package/src/components/Typography/Caption/Caption.tsx +4 -4
- package/src/components/Typography/Headline/Headline.tsx +3 -3
- package/src/components/Typography/Subhead/Subhead.tsx +3 -3
- package/src/components/Typography/Text/Text.tsx +3 -4
- package/src/components/Typography/Title/Title.tsx +9 -5
- package/src/components/View/Readme.md +42 -56
- package/src/components/View/View.tsx +46 -61
- package/src/components/View/ViewInfinite.tsx +52 -67
- package/src/components/View/utils.ts +8 -0
- package/src/index.ts +4 -0
- package/src/lib/accessibility.ts +2 -2
- package/src/lib/prefixClass.ts +9 -6
- package/src/lib/supportEvents.ts +1 -4
- package/src/styles/components.css +4 -0
- package/src/styles/vkcom_light.css +3 -3
- package/src/testing/utils.tsx +34 -1
- package/src/types.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"names":["React","Touch","TouchRootContext","getClassName","classNames","setTransformStyle","rubber","isFunction","ANDROID","IOS","VKCOM","transitionEvent","withPlatform","withContext","ModalRootContext","ConfigProviderContext","WebviewType","ModalType","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","withDOM","getNavId","warnOnce","FocusTrap","warn","IS_DEV","process","env","NODE_ENV","numberInRange","number","range","rangeTranslate","Math","max","min","ModalRootTouchComponent","props","createRef","event","originalEvent","preventDefault","activeModal","state","nextModal","modalState","modalsState","animateTranslate","translateY","modalId","undefined","type","PAGE","dynamicContentHeight","switching","waitTransitionFinish","requestAnimationFrame","checkPageContentHeight","e","onPageTouchMove","CARD","onCardTouchMove","onPageTouchEnd","onCardTouchEnd","target","contentElement","contains","contentScrolled","clearTimeout","contentScrollStopTimeout","setTimeout","activeTransitions","newState","prevModal","visibleModals","animated","history","restoreFocusTo","focus","setState","activeModalState","doCloseModal","touchDown","onClose","id","isBack","inited","dragging","maskElementRef","initModalsState","modalRootContext","updateModalHeight","registerModal","data","Object","assign","triggerActiveModalClose","isInsideModal","frameIds","platform","document","window","Children","toArray","children","getModals","reduce","acc","Modal","modalProps","settlingHeight","initActiveModal","toggleDocumentScrolling","removeEventListener","updateModalTranslate","prevProps","prevState","includes","splice","indexOf","push","closeActiveModal","switchPrevNext","enabled","documentScrolling","preventTouch","passive","addEventListener","initPageModal","initCardModal","contentHeight","firstElementChild","offsetHeight","prevTranslateY","expandable","clientHeight","collapsed","expanded","translateYFrom","expandedRange","collapsedRange","hiddenRange","shiftHalf","visiblePart","headerHeight","headerElement","height","innerElement","parentElement","modalElement","prevModalState","currentModalState","needAnimate","prevNextSwitchEndHandler","setMaskOpacity","shiftY","isY","viewportRef","current","stopPropagation","touchStartContentScrollTop","scrollTop","touchMovePositive","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","hidden","eventHandler","supported","onceHandler","name","timeout","nextModalState","prevIsPage","prevIsCard","nextIsPage","nextIsCard","activeElement","percent","frameId","cancelAnimationFrame","footerElement","footerHeight","factor","forceOpacity","maskAnimationFrame","opacity","style","toString","configProvider","webviewType","VKAPPS","onTouchMove","onTouchEnd","onScroll","map","isPage","key","Component","ModalRootTouch"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { setTransformStyle } from '../../lib/styles';\nimport { rubber } from '../../lib/touch';\nimport { isFunction } from '../../lib/utils';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport ModalRootContext, { ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsState, ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport './ModalRoot.css';\n\nconst warn = warnOnce('ModalRoot');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nfunction numberInRange(number: number, range: TranslateRange) {\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return Math.max(0, Math.min(98, number));\n}\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n\n /**\n * Будет вызвано при закрытии активной модалки с её id\n */\n onClose?(modalId: string): void;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n}\n\ninterface ModalRootState {\n activeModal?: string;\n prevModal?: string;\n nextModal?: string;\n visibleModals?: string[];\n animated?: boolean;\n switching?: boolean;\n history?: string[];\n isBack?: boolean;\n inited?: boolean;\n touchDown?: boolean;\n dragging?: boolean;\n}\n\nclass ModalRootTouchComponent extends React.Component<ModalRootProps & DOMProps, ModalRootState> {\n constructor(props: ModalRootProps) {\n super(props);\n\n const activeModal = props.activeModal;\n\n this.state = {\n activeModal: null,\n prevModal: null,\n nextModal: activeModal,\n visibleModals: activeModal ? [activeModal] : [],\n animated: !!activeModal,\n switching: false,\n history: activeModal ? [activeModal] : [],\n isBack: false,\n inited: false,\n touchDown: false,\n dragging: false,\n };\n\n this.activeTransitions = 0;\n this.maskElementRef = React.createRef();\n\n this.initModalsState();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.modalsState[id], data),\n onClose: this.triggerActiveModalClose,\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private modalsState: ModalsState;\n private documentScrolling: boolean;\n private activeTransitions: number;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement;\n\n get timeout(): number {\n return this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400;\n }\n\n get document(): Document {\n return this.props.document;\n }\n\n get window(): Window {\n return this.props.window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n initModalsState() {\n this.modalsState = this.getModals().reduce<ModalsState>((acc, Modal) => {\n const modalProps = Modal.props;\n const state: ModalsStateEntry = {\n id: getNavId(modalProps, warn),\n onClose: Modal.props.onClose,\n dynamicContentHeight: !!modalProps.dynamicContentHeight,\n };\n\n // ModalPage props\n if (typeof modalProps.settlingHeight === 'number') {\n state.settlingHeight = modalProps.settlingHeight;\n }\n\n acc[state.id] = state;\n return acc;\n }, {});\n }\n\n componentDidMount() {\n this.initActiveModal();\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n if (this.props.platform === IOS) {\n this.window.removeEventListener('resize', this.updateModalTranslate, false);\n }\n }\n\n componentDidUpdate(prevProps: ModalRootProps, prevState: ModalRootState) {\n if (this.props.activeModal !== prevProps.activeModal && !this.state.switching) {\n const nextModal = this.props.activeModal;\n const prevModal = prevProps.activeModal;\n\n if (IS_DEV && nextModal !== null && !this.modalsState[nextModal]) {\n return warn(`[componentDidUpdate] nextModal ${nextModal} not found`);\n }\n\n let history = [...this.state.history];\n let isBack = false;\n\n if (nextModal === null) {\n history = [];\n } else if (history.includes(nextModal)) {\n history = history.splice(0, history.indexOf(nextModal) + 1);\n isBack = true;\n } else {\n history.push(nextModal);\n }\n\n return this.setState({\n activeModal: null,\n nextModal,\n prevModal,\n visibleModals: [nextModal, prevModal],\n history,\n isBack,\n animated: true,\n inited: false,\n switching: false,\n }, () => {\n if (nextModal === null) {\n this.closeActiveModal();\n } else {\n this.initActiveModal();\n }\n });\n }\n\n if (this.state.switching && !prevState.switching) {\n requestAnimationFrame(() => this.switchPrevNext());\n }\n\n if (!this.state.activeModal && !this.state.prevModal && !this.state.nextModal) {\n this.toggleDocumentScrolling(true);\n } else {\n this.toggleDocumentScrolling(false);\n }\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n // @ts-ignore (В интерфейсе EventListenerOptions нет поля passive)\n this.window.removeEventListener('touchmove', this.preventTouch, { passive: false });\n } else {\n this.window.addEventListener('touchmove', this.preventTouch, { passive: false });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n /**\n * Инициализирует модалку перед анимацией открытия\n */\n initActiveModal() {\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n\n const modalState = this.modalsState[activeModal];\n // Отслеживаем изменение размеров viewport (Необходимо для iOS)\n if (this.props.platform === IOS) {\n this.window.addEventListener('resize', this.updateModalTranslate, false);\n }\n\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n this.initPageModal(modalState);\n break;\n\n case ModalType.CARD:\n this.initCardModal(modalState);\n break;\n\n default:\n if (IS_DEV) {\n warn('[initActiveModal] modalState.type is unknown');\n }\n }\n\n this.setState({ inited: true, switching: true });\n }\n\n updateModalTranslate = () => {\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n\n const modalState = this.modalsState[activeModal];\n this.animateTranslate(modalState, modalState.translateY);\n };\n\n initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable = contentHeight > contentElement.clientHeight || 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;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - modalState.settlingHeight;\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement.offsetHeight;\n const height = contentHeight + headerHeight;\n\n translateYFrom = 100 - height / modalState.innerElement.parentElement.offsetHeight * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (modalState.expandable && translateY > prevTranslateY || modalState.settlingHeight === 100) {\n translateY = 0;\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\n initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n }\n\n checkPageContentHeight() {\n const { activeModal, nextModal } = this.state;\n const modalId = activeModal || nextModal;\n\n const modalState = this.modalsState[modalId];\n if (modalState?.type === ModalType.PAGE && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n this.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 { activeModal, nextModal } = this.state;\n\n const modalId = activeModal || nextModal;\n const modalState = modalId ? this.modalsState[modalId] : undefined;\n\n if (modalState && modalState.type === ModalType.PAGE && modalState.dynamicContentHeight) {\n if (this.state.switching) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n closeActiveModal() {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false, switching: false });\n\n if (this.props.platform === IOS) {\n this.window.removeEventListener('resize', this.updateModalTranslate, false);\n }\n\n const { prevModal } = this.state;\n if (!prevModal) {\n return warn(`[closeActiveModal] prevModal is ${prevModal}`);\n }\n\n const prevModalState = this.modalsState[prevModal];\n\n this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);\n this.animateTranslate(prevModalState, 100);\n this.setMaskOpacity(prevModalState, 0);\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.state.switching) {\n return;\n }\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n\n const modalState = this.modalsState[activeModal];\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, 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;\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) {\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 === ANDROID || this.props.platform === VKCOM);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate(modalState.translateY + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, 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 === ANDROID || this.props.platform === VKCOM);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, modalState.translateY + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n const modalState = this.modalsState[activeModal];\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, 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) {\n const shiftYEndPercent = (startY + shiftY) / this.window.innerHeight * 100;\n\n let translateY = modalState.translateYCurrent;\n const expectTranslateY = translateY / event.duration * 240 * 0.6 * (modalState.touchShiftYPercent < 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];\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.doCloseModal(modalState);\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 touchDown: false,\n dragging: false,\n }, setStateCallback);\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent;\n\n const expectTranslateY = translateY / duration * 240 * 0.6 * (modalState.touchShiftYPercent < 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.doCloseModal(modalState);\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 touchDown: false,\n dragging: false,\n }, setStateCallback);\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.state.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.modalsState[activeModal];\n if (modalState.type === ModalType.PAGE && modalState.contentElement.contains(target)) {\n modalState.contentScrolled = true;\n\n clearTimeout(modalState.contentScrollStopTimeout);\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState.innerElement.removeEventListener(transitionEvent.name, onceHandler);\n eventHandler();\n };\n\n modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n switchPrevNext() {\n const { prevModal, nextModal } = this.state;\n\n const prevModalState = this.modalsState[prevModal];\n const nextModalState = this.modalsState[nextModal];\n\n if (IS_DEV && !prevModalState && !nextModalState) {\n return warn(`[switchPrevNext] prevModal is ${prevModal}, nextModal is ${nextModal}`);\n }\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n const prevIsCard = !!prevModalState && prevModalState.type === ModalType.CARD;\n\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n const nextIsCard = !!nextModalState && nextModalState.type === ModalType.CARD;\n\n // Ждём полного скрытия предыдущей модалки\n if (prevModalState && (nextIsCard || prevIsCard && nextIsPage)) {\n this.waitTransitionFinish(prevModalState, () => {\n this.activeTransitions += 1;\n this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);\n this.animateTranslate(nextModalState, nextModalState.translateY);\n });\n\n return this.animateTranslate(prevModalState, 100);\n }\n\n if (prevModalState && nextIsPage) {\n this.activeTransitions += 1;\n this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);\n\n if (prevIsPage && prevModalState.translateY <= nextModalState.translateYFrom && !this.state.isBack) {\n this.animateTranslate(prevModalState, nextModalState.translateYFrom + 10);\n } else {\n this.animateTranslate(prevModalState, 100);\n }\n }\n\n if (!prevModal && this.document.activeElement) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n\n this.activeTransitions += 1;\n this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);\n this.animateTranslate(nextModalState, nextModalState.translateY);\n }\n\n prevNextSwitchEndHandler = () => {\n this.activeTransitions = Math.max(0, this.activeTransitions - 1);\n if (this.activeTransitions > 0) {\n return;\n }\n\n const activeModal = this.state.nextModal;\n\n const newState: ModalRootState = {\n prevModal: null,\n nextModal: null,\n visibleModals: [activeModal],\n activeModal: activeModal,\n animated: false,\n switching: false,\n };\n\n if (!activeModal) {\n newState.history = [];\n if (this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n }\n }\n\n this.setState(newState);\n };\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n\n if (modalState.type === ModalType.PAGE && modalState.footerElement) {\n const footerHeight = modalState.footerElement.offsetHeight;\n const factor = modalState.innerElement.offsetHeight * (percent / 100);\n\n setTransformStyle(modalState.footerElement, `translateY(calc(${footerHeight}px * -${factor / footerHeight}))`);\n }\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number = null) {\n if (forceOpacity === null && this.state.history[0] !== modalState.id) {\n return;\n }\n\n cancelAnimationFrame(this.maskAnimationFrame);\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY, translateYCurrent } = modalState;\n\n const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;\n this.maskElementRef.current.style.opacity = Math.max(0, Math.min(100, opacity)).toString();\n }\n });\n }\n\n /**\n * Закрывает текущую модалку\n */\n triggerActiveModalClose = () => {\n const activeModalState = this.modalsState[this.state.activeModal];\n if (activeModalState) {\n this.doCloseModal(activeModalState);\n }\n };\n\n private readonly doCloseModal = (modalState: ModalsStateEntry) => {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false, switching: false });\n\n if (isFunction(modalState.onClose)) {\n modalState.onClose();\n } else if (isFunction(this.props.onClose)) {\n this.props.onClose(modalState.id);\n } else if (IS_DEV) {\n warn('onClose is undefined');\n }\n };\n\n render() {\n const { prevModal, activeModal, nextModal, visibleModals, animated, touchDown, dragging, switching } = this.state;\n\n if (!activeModal && !prevModal && !nextModal && !animated) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n vkuiClass={classNames(getClassName('ModalRoot', this.props.platform), {\n 'ModalRoot--vkapps': this.props.configProvider.webviewType === WebviewType.VKAPPS,\n 'ModalRoot--touched': touchDown,\n 'ModalRoot--switching': switching,\n })}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n vkuiClass=\"ModalRoot__mask\"\n onClick={this.triggerActiveModalClose}\n ref={this.maskElementRef}\n />\n <div vkuiClass=\"ModalRoot__viewport\" ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n if (!visibleModals.includes(modalId)) {\n return null;\n }\n const modalState = { ...this.modalsState[modalId] };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => this.modalsState[modalId].modalElement = e}\n onClose={this.triggerActiveModalClose}\n timeout={this.timeout}\n vkuiClass={classNames('ModalRoot__modal', {\n 'ModalRoot__modal--active': modalId === activeModal,\n 'ModalRoot__modal--prev': modalId === prevModal,\n 'ModalRoot__modal--next': modalId === nextModal,\n\n 'ModalRoot__modal--dragging': dragging,\n\n 'ModalRoot__modal--expandable': isPage && modalState.expandable,\n 'ModalRoot__modal--expanded': isPage && modalState.expanded,\n 'ModalRoot__modal--collapsed': isPage && modalState.collapsed,\n })}\n restoreFocus={false}\n >{Modal}</FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(withPlatform(withDOM<ModalRootProps>(ModalRootTouchComponent)), ConfigProviderContext, 'configProvider');\n"],"file":"ModalRoot.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"names":["React","Touch","TouchRootContext","getClassName","classNames","setTransformStyle","rubber","ANDROID","IOS","VKCOM","transitionEvent","withPlatform","withContext","ModalRootContext","ConfigProviderContext","WebviewType","ModalType","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","withDOM","getNavId","warnOnce","FocusTrap","withModalManager","warn","IS_DEV","process","env","NODE_ENV","numberInRange","number","range","rangeTranslate","Math","max","min","ModalRootTouchComponent","props","createRef","event","originalEvent","preventDefault","modalState","getModalState","activeModal","animateTranslate","translateY","type","PAGE","dynamicContentHeight","enteringModal","waitTransitionFinish","requestAnimationFrame","checkPageContentHeight","e","exitingModal","onPageTouchMove","CARD","onCardTouchMove","onPageTouchEnd","onCardTouchEnd","target","contentElement","contains","contentScrolled","clearTimeout","contentScrollStopTimeout","setTimeout","state","touchDown","dragging","maskElementRef","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","onClose","closeActiveModal","isInsideModal","frameIds","platform","document","window","Children","toArray","children","addEventListener","updateModalTranslate","toggleDocumentScrolling","removeEventListener","prevProps","closeModal","enteringState","innerElement","style","transitionDelay","onEnter","delayEnter","timeout","restoreFocusTo","activeElement","focus","enabled","documentScrolling","preventTouch","passive","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","setState","nextModalState","nextIsPage","prevIsPage","onExit","exitTranslate","isBack","setMaskOpacity","shiftY","isY","viewportRef","current","stopPropagation","collapsed","expanded","touchStartContentScrollTop","scrollTop","touchMovePositive","headerElement","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","offsetHeight","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","hidden","eventHandler","supported","onceHandler","name","percent","frameId","cancelAnimationFrame","forceOpacity","history","maskAnimationFrame","opacity","toString","configProvider","webviewType","VKAPPS","onTouchMove","onTouchEnd","onScroll","getModals","map","Modal","modalId","isPage","key","Component","ModalRootTouch","initModal","initCardModal","contentHeight","firstElementChild","prevTranslateY","clientHeight","shiftHalf","visiblePart","headerHeight","height","parentElement"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { setTransformStyle } from '../../lib/styles';\nimport { rubber } from '../../lib/touch';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport ModalRootContext, { ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport './ModalRoot.css';\n\nconst warn = warnOnce('ModalRoot');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nfunction numberInRange(number: number, range: TranslateRange) {\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return Math.max(0, Math.min(98, number));\n}\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n\n /**\n * Будет вызвано при закрытии активной модалки с её id\n */\n onClose?(modalId: string): void;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n}\n\nclass ModalRootTouchComponent extends React.Component<ModalRootProps & DOMProps & ModalTransitionProps, ModalRootState> {\n constructor(props: ModalRootProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.getModalState(id), data),\n onClose: () => this.props.closeActiveModal(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private documentScrolling: boolean;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement;\n\n get timeout(): number {\n return this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400;\n }\n\n get document(): Document {\n return this.props.document;\n }\n\n get window(): Window {\n return this.props.window;\n }\n\n getModalState(id: string) {\n return this.props.getModalState(id);\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport (Необходимо для iOS)\n if (this.props.platform === IOS) {\n this.window.addEventListener('resize', this.updateModalTranslate, false);\n }\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalTranslate, false);\n }\n\n componentDidUpdate(prevProps: ModalRootProps & 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 { enteringModal } = this.props;\n const enteringState = this.getModalState(enteringModal);\n this.waitTransitionFinish(enteringState, () => {\n enteringState.innerElement.style.transitionDelay = null;\n this.props.onEnter(enteringModal);\n });\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter ? `${this.timeout}ms` : null;\n this.animateTranslate(enteringState, enteringState.translateY);\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 (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n // @ts-ignore (В интерфейсе EventListenerOptions нет поля passive)\n this.window.removeEventListener('touchmove', this.preventTouch, { passive: false });\n } else {\n this.window.addEventListener('touchmove', this.preventTouch, { passive: false });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n updateModalTranslate = () => {\n const modalState = this.getModalState(this.props.activeModal);\n modalState && this.animateTranslate(modalState, modalState.translateY);\n };\n\n checkPageContentHeight() {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.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.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === ModalType.PAGE && modalState.dynamicContentHeight) {\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 closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`[closeActiveModal] Modal ${id} does not exist - not closing`);\n return;\n }\n\n const nextModalState = this.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n this.waitTransitionFinish(prevModalState, () => this.props.onExit(id));\n const exitTranslate = prevIsPage && nextIsPage && prevModalState.translateY <= nextModalState.translateYFrom && !this.props.isBack\n ? nextModalState.translateYFrom + 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 }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, 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;\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) {\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 === ANDROID || this.props.platform === VKCOM);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate(modalState.translateY + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, 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 === ANDROID || this.props.platform === VKCOM);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, modalState.translateY + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, 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) {\n const shiftYEndPercent = (startY + shiftY) / this.window.innerHeight * 100;\n\n let translateY = modalState.translateYCurrent;\n const expectTranslateY = translateY / event.duration * 240 * 0.6 * (modalState.touchShiftYPercent < 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];\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.closeActiveModal();\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 touchDown: false,\n dragging: false,\n }, setStateCallback);\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent;\n\n const expectTranslateY = translateY / duration * 240 * 0.6 * (modalState.touchShiftYPercent < 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.closeActiveModal();\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 touchDown: false,\n dragging: false,\n }, setStateCallback);\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.getModalState(activeModal);\n if (modalState.type === ModalType.PAGE && modalState.contentElement.contains(target)) {\n modalState.contentScrolled = true;\n\n clearTimeout(modalState.contentScrollStopTimeout);\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState.innerElement.removeEventListener(transitionEvent.name, onceHandler);\n eventHandler();\n };\n\n modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);\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) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number = null) {\n if (forceOpacity === null && this.props.history[0] !== modalState.id) {\n return;\n }\n\n cancelAnimationFrame(this.maskAnimationFrame);\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY, translateYCurrent } = modalState;\n\n const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;\n this.maskElementRef.current.style.opacity = Math.max(0, Math.min(100, opacity)).toString();\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal } = 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 vkuiClass={classNames(getClassName('ModalRoot', this.props.platform), {\n 'ModalRoot--vkapps': this.props.configProvider.webviewType === WebviewType.VKAPPS,\n 'ModalRoot--touched': touchDown,\n 'ModalRoot--switching': !!(enteringModal || exitingModal),\n })}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n vkuiClass=\"ModalRoot__mask\"\n onClick={this.props.closeActiveModal}\n ref={this.maskElementRef}\n />\n <div vkuiClass=\"ModalRoot__viewport\" ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n if (modalId !== activeModal && modalId !== exitingModal) {\n return null;\n }\n const modalState = { ...this.getModalState(modalId) };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => this.getModalState(modalId).modalElement = e}\n onClose={this.props.closeActiveModal}\n timeout={this.timeout}\n vkuiClass={classNames('ModalRoot__modal', {\n 'ModalRoot__modal--active': modalId === activeModal,\n 'ModalRoot__modal--prev': modalId === exitingModal,\n 'ModalRoot__modal--next': exitingModal && modalId === activeModal || modalId === enteringModal,\n\n 'ModalRoot__modal--dragging': dragging,\n\n 'ModalRoot__modal--expandable': isPage && modalState.expandable,\n 'ModalRoot__modal--expanded': isPage && modalState.expanded,\n 'ModalRoot__modal--collapsed': isPage && modalState.collapsed,\n })}\n restoreFocus={false}\n >{Modal}</FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(withPlatform(withDOM<ModalRootProps>(\n withModalManager(initModal)(ModalRootTouchComponent),\n)), ConfigProviderContext, 'configProvider');\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case ModalType.CARD:\n return initCardModal(modalState);\n default:\n IS_DEV && warn('[initActiveModal] modalState.type is unknown');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable = contentHeight > contentElement.clientHeight || 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;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - modalState.settlingHeight;\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement.offsetHeight;\n const height = contentHeight + headerHeight;\n\n translateYFrom = 100 - height / modalState.innerElement.parentElement.offsetHeight * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (modalState.expandable && translateY > prevTranslateY || modalState.settlingHeight === 100) {\n translateY = 0;\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"],"file":"ModalRoot.js"}
|
|
@@ -46,9 +46,6 @@ export function useModalRegistry(id, type) {
|
|
|
46
46
|
},
|
|
47
47
|
contentElement: function contentElement(e) {
|
|
48
48
|
return elements.contentElement = e;
|
|
49
|
-
},
|
|
50
|
-
footerElement: function footerElement(e) {
|
|
51
|
-
return elements.footerElement = e;
|
|
52
49
|
}
|
|
53
50
|
}).current;
|
|
54
51
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"names":["React","useIsomorphicLayoutEffect","ModalRootContext","createContext","updateModalHeight","undefined","registerModal","isInsideModal","useModalRegistry","id","type","modalContext","useContext","elements","useRef","current","reset","Object","keys","reduce","acc","k","refs","modalElement","e","innerElement","headerElement","contentElement"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"names":["React","useIsomorphicLayoutEffect","ModalRootContext","createContext","updateModalHeight","undefined","registerModal","isInsideModal","useModalRegistry","id","type","modalContext","useContext","elements","useRef","current","reset","Object","keys","reduce","acc","k","refs","modalElement","e","innerElement","headerElement","contentElement"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,yBAAT;AAaA,OAAO,IAAMC,gBAAgB,gBAAGF,KAAK,CAACG,aAAN,CAA+C;AAC7EC,EAAAA,iBAAiB,EAAE;AAAA,WAAMC,SAAN;AAAA,GAD0D;AAE7EC,EAAAA,aAAa,EAAE;AAAA,WAAMD,SAAN;AAAA,GAF8D;AAG7EE,EAAAA,aAAa,EAAE;AAH8D,CAA/C,CAAzB;AAMP;AACA;AACA;;AACA,OAAO,SAASC,gBAAT,CAA0BC,EAA1B,EAAsCC,IAAtC,EAAuD;AAC5D,MAAMC,YAAY,GAAGX,KAAK,CAACY,UAAN,CAAiBV,gBAAjB,CAArB;AACA,MAAMW,QAAQ,GAAGb,KAAK,CAACc,MAAN,CAA4B,EAA5B,EAAgCC,OAAjD;AACAd,EAAAA,yBAAyB,CAAC,YAAM;AAC9BU,IAAAA,YAAY,CAACL,aAAb,iCAAgCO,QAAhC;AAA0CH,MAAAA,IAAI,EAAJA,IAA1C;AAAgDD,MAAAA,EAAE,EAAFA;AAAhD,QAD8B,CAE9B;;AACA,QAAMO,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYL,QAAZ,EAAsBM,MAAtB,CACZ,UAACC,GAAD,EAAMC,CAAN;AAAA,6CAAuCD,GAAvC,2BAA6CC,CAA7C,EAAiD,IAAjD;AAAA,KADY,EAEZ;AAAEX,MAAAA,IAAI,EAAJA,IAAF;AAAQD,MAAAA,EAAE,EAAFA;AAAR,KAFY,CAAd;AAGA,WAAO;AAAA,aAAME,YAAY,CAACL,aAAb,CAA2BU,KAA3B,CAAN;AAAA,KAAP;AACD,GAPwB,EAOtB,EAPsB,CAAzB;AASA,MAAMM,IAAI,GAAGtB,KAAK,CAACc,MAAN,CAAkC;AAC7CS,IAAAA,YAAY,EAAE,sBAACC,CAAD;AAAA,aAAOX,QAAQ,CAACU,YAAT,GAAwBC,CAA/B;AAAA,KAD+B;AAE7CC,IAAAA,YAAY,EAAE,sBAACD,CAAD;AAAA,aAAOX,QAAQ,CAACY,YAAT,GAAwBD,CAA/B;AAAA,KAF+B;AAG7CE,IAAAA,aAAa,EAAE,uBAACF,CAAD;AAAA,aAAOX,QAAQ,CAACa,aAAT,GAAyBF,CAAhC;AAAA,KAH8B;AAI7CG,IAAAA,cAAc,EAAE,wBAACH,CAAD;AAAA,aAAOX,QAAQ,CAACc,cAAT,GAA0BH,CAAjC;AAAA;AAJ6B,GAAlC,EAKVT,OALH;AAMA,SAAO;AAAEO,IAAAA,IAAI,EAAJA;AAAF,GAAP;AACD;AAED,eAAepB,gBAAf","sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { ModalElements, ModalsStateEntry, ModalType } from './types';\n\nexport type ModalRegistryEntry = ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>;\ntype ModalRefs = { [k in keyof ModalElements]: (e: ModalElements[k]) => void };\n\nexport interface ModalRootContextInterface {\n updateModalHeight: VoidFunction;\n registerModal(data: ModalRegistryEntry): void;\n onClose?: VoidFunction;\n isInsideModal: boolean;\n}\n\nexport const ModalRootContext = React.createContext<ModalRootContextInterface>({\n updateModalHeight: () => undefined,\n registerModal: () => undefined,\n isInsideModal: false,\n});\n\n/**\n * All referenced elements must be static\n */\nexport function useModalRegistry(id: string, type: ModalType) {\n const modalContext = React.useContext(ModalRootContext);\n const elements = React.useRef<ModalElements>({}).current;\n useIsomorphicLayoutEffect(() => {\n modalContext.registerModal({ ...elements, type, id });\n // unset refs on unmount to prevent leak\n const reset = Object.keys(elements).reduce<ModalRegistryEntry>(\n (acc, k: keyof ModalElements) => ({ ...acc, [k]: null }),\n { type, id });\n return () => modalContext.registerModal(reset);\n }, []);\n\n const refs = React.useRef<Required<ModalRefs>>({\n modalElement: (e) => elements.modalElement = e,\n innerElement: (e) => elements.innerElement = e,\n headerElement: (e) => elements.headerElement = e,\n contentElement: (e) => elements.contentElement = e,\n }).current;\n return { refs };\n}\n\nexport default ModalRootContext;\n"],"file":"ModalRootContext.js"}
|