@vkontakte/vkui 5.7.0 → 5.7.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/Banner/Banner.js +1 -1
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.js +3 -1
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +4 -2
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/Group/Group.js +2 -3
- package/dist/cjs/components/Group/Group.js.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +13 -11
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/Image/Image.js +52 -37
- package/dist/cjs/components/Image/Image.js.map +1 -1
- package/dist/cjs/components/ImageBase/ImageBase.js +20 -1
- package/dist/cjs/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js +1 -1
- package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js +1 -3
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js +1 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +8 -3
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js +0 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/View/View.js +4 -4
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +4 -4
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityHasHover.js +4 -3
- package/dist/cjs/hooks/useAdaptivityHasHover.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityHasPointer.js +5 -5
- package/dist/cjs/hooks/useAdaptivityHasPointer.js.map +1 -1
- package/dist/cjs/hooks/useAutoFocus.d.ts +2 -0
- package/dist/cjs/hooks/useAutoFocus.js +23 -0
- package/dist/cjs/hooks/useAutoFocus.js.map +1 -0
- package/dist/cjs/hooks/useChipsSelect.js +5 -4
- package/dist/cjs/hooks/useChipsSelect.js.map +1 -1
- package/dist/cjs/hooks/useFocusWithin.js +3 -0
- package/dist/cjs/hooks/useFocusWithin.js.map +1 -1
- package/dist/cjs/hooks/useIsClient.js +2 -1
- package/dist/cjs/hooks/useIsClient.js.map +1 -1
- package/dist/components/Banner/Banner.js +2 -2
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +3 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +4 -2
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/Group/Group.js +2 -3
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js +13 -11
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/Image/Image.js +54 -39
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/ImageBase/ImageBase.js +20 -1
- package/dist/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.js +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/components/PopoutRoot/PopoutRoot.js +1 -3
- package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js +8 -3
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +0 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/View/View.js +4 -4
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +4 -4
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +22 -22
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +757 -698
- package/dist/cssm/components/ActionSheet/ActionSheet.module.css +3 -3
- package/dist/cssm/components/Alert/Alert.module.css +4 -4
- package/dist/cssm/components/Banner/Banner.js +2 -2
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.module.css +2 -2
- package/dist/cssm/components/Checkbox/Checkbox.js +3 -1
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.module.css +6 -0
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +3 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/FocusVisible/FocusVisible.module.css +4 -4
- package/dist/cssm/components/Group/Group.js +2 -3
- package/dist/cssm/components/Group/Group.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +13 -11
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/Image/Image.js +46 -33
- package/dist/cssm/components/Image/Image.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBase.js +20 -1
- package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.module.css +0 -4
- package/dist/cssm/components/ModalRoot/ModalRoot.module.css +2 -2
- package/dist/cssm/components/PanelHeader/PanelHeader.module.css +4 -2
- package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.module.css +8 -8
- package/dist/cssm/components/Placeholder/Placeholder.module.css +1 -0
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js +1 -3
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cssm/components/PopoutRoot/PopoutRoot.module.css +0 -4
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +2 -2
- package/dist/cssm/components/Popover/Popover.module.css +2 -2
- package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +4 -4
- package/dist/cssm/components/RichTooltip/RichTooltip.module.css +2 -2
- package/dist/cssm/components/Root/Root.module.css +12 -13
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +5 -5
- package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +6 -2
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js +0 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.module.css +4 -4
- package/dist/cssm/components/Tappable/Tappable.module.css +2 -2
- package/dist/cssm/components/TextTooltip/TextTooltip.module.css +2 -2
- package/dist/cssm/components/View/View.js +4 -4
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/View.module.css +16 -16
- package/dist/cssm/components/View/ViewInfinite.js +4 -4
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityHasHover.js +4 -3
- package/dist/cssm/hooks/useAdaptivityHasHover.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityHasPointer.js +5 -5
- package/dist/cssm/hooks/useAdaptivityHasPointer.js.map +1 -1
- package/dist/cssm/hooks/useAutoFocus.d.ts +2 -0
- package/dist/cssm/hooks/useAutoFocus.js +12 -0
- package/dist/cssm/hooks/useAutoFocus.js.map +1 -0
- package/dist/cssm/hooks/useChipsSelect.js +5 -4
- package/dist/cssm/hooks/useChipsSelect.js.map +1 -1
- package/dist/cssm/hooks/useFocusWithin.js +3 -0
- package/dist/cssm/hooks/useFocusWithin.js.map +1 -1
- package/dist/cssm/hooks/useIsClient.js +2 -1
- package/dist/cssm/hooks/useIsClient.js.map +1 -1
- package/dist/cssm/styles/constants.css +1 -1
- package/dist/hooks/useAdaptivityHasHover.js +4 -3
- package/dist/hooks/useAdaptivityHasHover.js.map +1 -1
- package/dist/hooks/useAdaptivityHasPointer.js +5 -5
- package/dist/hooks/useAdaptivityHasPointer.js.map +1 -1
- package/dist/hooks/useAutoFocus.d.ts +2 -0
- package/dist/hooks/useAutoFocus.js +12 -0
- package/dist/hooks/useAutoFocus.js.map +1 -0
- package/dist/hooks/useChipsSelect.js +5 -4
- package/dist/hooks/useChipsSelect.js.map +1 -1
- package/dist/hooks/useFocusWithin.js +3 -0
- package/dist/hooks/useFocusWithin.js.map +1 -1
- package/dist/hooks/useIsClient.js +2 -1
- package/dist/hooks/useIsClient.js.map +1 -1
- package/dist/vkui.css +22 -22
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +757 -698
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/View/ViewInfinite.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { canUseDOM, DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { animationEvent, transitionEvent } from '../../lib/supportEvents';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasPlatform } from '../../types';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { swipeBackExcluded } from './utils';\nimport styles from './View.module.css';\n\nconst warn = warnOnce('ViewInfinite');\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: Array<number | undefined>;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nlet scrollsCache: ViewsScrolls = {};\n\nexport type TransitionParams = { from: string | null; to: string | null };\n\nexport interface ViewInfiniteProps\n extends React.HTMLAttributes<HTMLElement>,\n HasPlatform,\n NavIdProps {\n activePanel: string;\n onTransition?(params: TransitionParams & { isBack: boolean }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n isBackCheck?(params: TransitionParams): boolean;\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewInfiniteState {\n animated: boolean;\n\n visiblePanels: Array<string | null>;\n activePanel: string | null;\n isBack?: boolean;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackPrevented: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nclass ViewInfiniteComponent extends React.Component<\n ViewInfiniteProps & DOMProps,\n ViewInfiniteState\n> {\n private static readonly SWIPE_BACK_AREA = 70;\n\n constructor(props: ViewInfiniteProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipeBackPrevented: false,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewInfiniteProps> = {\n history: [],\n };\n\n private scrolls = scrollsCache[getNavId(this.props, warn) as string] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private animationFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement | null } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n }\n\n componentDidUpdate(prevProps: ViewInfiniteProps, prevState: ViewInfiniteState) {\n // Нужен переход\n if (\n prevProps.activePanel !== this.props.activePanel &&\n !prevState.swipingBack &&\n !prevState.browserSwipe\n ) {\n let isBack = false;\n\n if (this.props.isBackCheck) {\n isBack = this.props.isBackCheck({\n from: prevProps.activePanel,\n to: this.props.activePanel,\n });\n } else {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n isBack = firstLayerId === this.props.activePanel;\n }\n\n this.blurActiveElement();\n\n const prevScrolls = this.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...this.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n this.scrolls = scrolls;\n\n if (this.shouldDisableTransitionMotion()) {\n this.flushTransition(prevProps.activePanel, isBack);\n } else {\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n this.animationFinishTimeout = setTimeout(\n this.transitionEndHandler,\n this.props.platform === Platform.ANDROID || this.props.platform === Platform.VKCOM\n ? 300\n : 600,\n );\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.state.swipeBackNextPanel;\n const prevPanel = this.state.swipeBackPrevPanel;\n let scrollPosition: undefined | number = undefined;\n\n this.scrolls = {\n ...this.scrolls,\n };\n\n if (prevPanel !== null) {\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n this.scrolls[prevPanel] = prevPanelScrolls;\n }\n if (nextPanel !== null) {\n const newPanelScrolls = [...(this.scrolls[nextPanel] || [])];\n scrollPosition = newPanelScrolls.pop();\n this.scrolls[nextPanel] = newPanelScrolls;\n }\n\n this.setState(\n {\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n },\n () => {\n this.props.scroll?.scrollTo(0, scrollPosition);\n prevProps.onTransition &&\n prevProps.onTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n },\n );\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(\n this.pickPanel(this.state.swipeBackNextPanel),\n this.swipingBackTransitionEndHandler,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (\n prevState.swipeBackResult === SwipeBackResults.fail &&\n !this.state.swipeBackResult &&\n this.state.activePanel !== null\n ) {\n const newPanelScrolls = [...(this.scrolls[this.state.activePanel] || [])];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll?.scrollTo(0, scrollPosition);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return (\n this.props.configProvider?.transitionMotionEnabled === false ||\n !this.props.splitCol?.animate ||\n this.props.platform === Platform.VKCOM\n );\n }\n\n waitTransitionFinish(\n elem: HTMLElement | null | undefined,\n eventHandler: TransitionEventHandler,\n ): void {\n if (transitionEvent.supported && transitionEvent.name && elem) {\n elem.removeEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n elem.addEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n } else {\n if (this.transitionFinishTimeout) {\n clearTimeout(this.transitionFinishTimeout);\n }\n\n this.transitionFinishTimeout = setTimeout(\n eventHandler,\n this.props.platform === Platform.ANDROID || this.props.platform === Platform.VKCOM\n ? 300\n : 600,\n );\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document?.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string | null) {\n if (id === null) {\n return undefined;\n }\n return this.panelNodes[id];\n }\n\n flushTransition(prevPanel: string, isBack: boolean) {\n const activePanel = this.props.activePanel;\n\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n const newPanelScrolls = [...(this.scrolls[activePanel] || [])];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n if (isBack) {\n this.scrolls = {\n ...this.scrolls,\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n };\n }\n\n this.setState(\n {\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n },\n () => {\n this.props.scroll?.scrollTo(0, isBack ? scrollPosition : 0);\n this.props.onTransition &&\n this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n },\n );\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['vkui-animation-ios-next-forward'],\n styles['vkui-animation-ios-prev-back'],\n styles['vkui-animation-view-next-forward'],\n styles['vkui-animation-view-prev-back'],\n ].includes(e.animationName)) &&\n this.state.prevPanel !== null\n ) {\n this.flushTransition(this.state.prevPanel, Boolean(this.state.isBack));\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e.propertyName.includes('transform') &&\n e.target === this.pickPanel(this.state.swipeBackNextPanel))\n ) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (event: TouchEvent): void => {\n if (\n !this.window ||\n this.props.platform !== Platform.IOS ||\n this.state.swipeBackPrevented ||\n swipeBackExcluded(event) ||\n this.shouldDisableTransitionMotion()\n ) {\n return;\n }\n\n if (!this.props.configProvider?.isWebView) {\n if (\n (event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA ||\n event.startX >= this.window.innerWidth - ViewInfiniteComponent.SWIPE_BACK_AREA) &&\n !this.state.browserSwipe\n ) {\n this.setState({ browserSwipe: true });\n }\n\n return;\n }\n\n if (\n !this.props.onSwipeBack ||\n (this.state.animated && event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA)\n ) {\n return;\n }\n\n if (\n !this.state.swipingBack &&\n event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA &&\n this.props.history &&\n this.props.history.length > 1\n ) {\n if (this.props.onSwipeBackStart) {\n const payload = this.props.onSwipeBackStart(this.state.activePanel);\n if (payload === 'prevent') {\n this.setState({ swipeBackPrevented: true });\n return;\n }\n }\n\n if (this.state.activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n this.blurActiveElement();\n const prevScrolls = this.scrolls[this.state.activePanel] || [];\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n }\n\n this.setState({\n swipingBack: true,\n swipeBackStartX: event.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > this.window.innerWidth - this.state.swipeBackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n };\n\n onEnd = (event: TouchEvent): void => {\n if (this.state.swipingBack && this.window) {\n const speed = (this.state.swipeBackShift / event.duration) * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (\n speed > 250 ||\n this.state.swipeBackStartX + this.state.swipeBackShift > this.window.innerWidth / 2\n ) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n if (this.state.swipeBackPrevented) {\n this.setState({ swipeBackPrevented: false });\n }\n };\n\n calcPanelSwipeStyles(panelId: string | undefined): React.CSSProperties {\n if (!canUseDOM || !this.window) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${\n -50 + (this.state.swipeBackShift * 100) / this.window.innerWidth / 2\n }%`;\n let prevPanelShadow =\n (0.3 * (this.window.innerWidth - this.state.swipeBackShift)) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n platform,\n activePanel: _1,\n splitCol,\n configProvider,\n history,\n id,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel,\n window,\n document,\n scroll,\n isBackCheck,\n className,\n ...restProps\n } = this.props;\n const {\n prevPanel,\n nextPanel,\n activePanel,\n isBack,\n animated,\n swipeBackPrevPanel,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n } = this.state;\n\n const panels = this.panels\n .filter((panel) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && this.state.visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n })\n .sort((panel) => {\n const panelId = getNavId(panel.props, warn);\n const isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;\n\n if (isNextPanel) {\n return swipingBack || this.state.isBack ? -1 : 1;\n }\n\n if (isPrevPanel) {\n return swipingBack || this.state.isBack ? 1 : -1;\n }\n\n return 0;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && this.state.animated && styles['View--animated'],\n !disableAnimation && this.state.swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const scrollList = (panelId && this.scrolls[panelId]) || [];\n const scroll = scrollList[scrollList.length - 1] || 0;\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n styles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (this.panelNodes[panelId] = el)}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{ marginTop: compensateScroll ? -scroll : undefined }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n }\n}\n\nexport const ViewInfinite = withContext(\n withContext(\n withContext(\n withPlatform(withDOM<ViewInfiniteProps>(ViewInfiniteComponent)),\n SplitColContext,\n 'splitCol',\n ),\n ConfigProviderContext,\n 'configProvider',\n ),\n ScrollContext,\n 'scroll',\n);\n"],"names":["React","classNames","withContext","withPlatform","canUseDOM","withDOM","getNavId","Platform","animationEvent","transitionEvent","warnOnce","ScrollContext","ConfigProviderContext","NavTransitionProvider","SplitColContext","Touch","swipeBackExcluded","warn","SwipeBackResults","fail","success","scrollsCache","ViewInfiniteComponent","props","scrolls","transitionFinishTimeout","undefined","animationFinishTimeout","panelNodes","transitionEndHandler","e","includes","animationName","state","prevPanel","flushTransition","Boolean","isBack","swipingBackTransitionEndHandler","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","onSwipeBackCancel","onSwipeBackSuccess","onMoveX","event","window","platform","IOS","swipeBackPrevented","shouldDisableTransitionMotion","configProvider","isWebView","startX","SWIPE_BACK_AREA","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","onSwipeBackStart","payload","activePanel","blurActiveElement","prevScrolls","scroll","getScroll","y","swipeBackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","onEnd","speed","duration","visiblePanels","nextPanel","document","panels","Children","toArray","children","componentWillUnmount","id","clearTimeout","componentDidUpdate","prevProps","prevState","isBackCheck","from","to","firstLayerId","map","panel","find","supported","setTimeout","ANDROID","VKCOM","scrollPosition","prevPanelScrolls","newPanelScrolls","pop","scrollTo","onTransition","waitTransitionFinish","transitionMotionEnabled","splitCol","animate","elem","eventHandler","name","removeEventListener","addEventListener","activeElement","blur","calcPanelSwipeStyles","panelId","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","render","_1","nav","className","restProps","filter","sort","isPrevPanel","isNextPanel","disableAnimation","Component","div","compensateScroll","isTransitionTarget","scrollList","onAnimationEnd","ref","el","style","key","marginTop","entering","defaultProps","ViewInfinite"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/View/ViewInfinite.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { canUseDOM, DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { animationEvent, transitionEvent } from '../../lib/supportEvents';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasPlatform } from '../../types';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { swipeBackExcluded } from './utils';\nimport styles from './View.module.css';\n\nconst warn = warnOnce('ViewInfinite');\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: Array<number | undefined>;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nlet scrollsCache: ViewsScrolls = {};\n\nexport type TransitionParams = { from: string | null; to: string | null };\n\nexport interface ViewInfiniteProps\n extends React.HTMLAttributes<HTMLElement>,\n HasPlatform,\n NavIdProps {\n activePanel: string;\n onTransition?(params: TransitionParams & { isBack: boolean }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n isBackCheck?(params: TransitionParams): boolean;\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewInfiniteState {\n animated: boolean;\n\n visiblePanels: Array<string | null>;\n activePanel: string | null;\n isBack?: boolean;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackPrevented: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nclass ViewInfiniteComponent extends React.Component<\n ViewInfiniteProps & DOMProps,\n ViewInfiniteState\n> {\n private static readonly SWIPE_BACK_AREA = 70;\n\n constructor(props: ViewInfiniteProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipeBackPrevented: false,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewInfiniteProps> = {\n history: [],\n };\n\n private scrolls = scrollsCache[getNavId(this.props, warn) as string] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private animationFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement | null } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n }\n\n componentDidUpdate(prevProps: ViewInfiniteProps, prevState: ViewInfiniteState) {\n // Нужен переход\n if (\n prevProps.activePanel !== this.props.activePanel &&\n !prevState.swipingBack &&\n !prevState.browserSwipe\n ) {\n let isBack = false;\n\n if (this.props.isBackCheck) {\n isBack = this.props.isBackCheck({\n from: prevProps.activePanel,\n to: this.props.activePanel,\n });\n } else {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n isBack = firstLayerId === this.props.activePanel;\n }\n\n this.blurActiveElement();\n\n const prevScrolls = this.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...this.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n this.scrolls = scrolls;\n\n if (this.shouldDisableTransitionMotion()) {\n this.flushTransition(prevProps.activePanel, isBack);\n } else {\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n this.animationFinishTimeout = setTimeout(\n this.transitionEndHandler,\n this.props.platform === Platform.ANDROID || this.props.platform === Platform.VKCOM\n ? 300\n : 600,\n );\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.state.swipeBackNextPanel;\n const prevPanel = this.state.swipeBackPrevPanel;\n let scrollPosition: undefined | number = undefined;\n\n this.scrolls = {\n ...this.scrolls,\n };\n\n if (prevPanel !== null) {\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n this.scrolls[prevPanel] = prevPanelScrolls;\n }\n if (nextPanel !== null) {\n const newPanelScrolls = [...(this.scrolls[nextPanel] || [])];\n scrollPosition = newPanelScrolls.pop();\n this.scrolls[nextPanel] = newPanelScrolls;\n }\n\n this.setState(\n {\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n },\n () => {\n this.props.scroll?.scrollTo(0, scrollPosition);\n prevProps.onTransition &&\n prevProps.onTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n },\n );\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(\n this.pickPanel(this.state.swipeBackNextPanel),\n this.swipingBackTransitionEndHandler,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (\n prevState.swipeBackResult === SwipeBackResults.fail &&\n !this.state.swipeBackResult &&\n this.state.activePanel !== null\n ) {\n const newPanelScrolls = [...(this.scrolls[this.state.activePanel] || [])];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll?.scrollTo(0, scrollPosition);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return (\n this.props.configProvider?.transitionMotionEnabled === false ||\n !this.props.splitCol?.animate ||\n this.props.platform === Platform.VKCOM\n );\n }\n\n waitTransitionFinish(\n elem: HTMLElement | null | undefined,\n eventHandler: TransitionEventHandler,\n ): void {\n if (transitionEvent.supported && transitionEvent.name && elem) {\n elem.removeEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n elem.addEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n } else {\n if (this.transitionFinishTimeout) {\n clearTimeout(this.transitionFinishTimeout);\n }\n\n this.transitionFinishTimeout = setTimeout(\n eventHandler,\n this.props.platform === Platform.ANDROID || this.props.platform === Platform.VKCOM\n ? 300\n : 600,\n );\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document?.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string | null) {\n if (id === null) {\n return undefined;\n }\n return this.panelNodes[id];\n }\n\n flushTransition(prevPanel: string, isBack: boolean) {\n const activePanel = this.props.activePanel;\n\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n const newPanelScrolls = [...(this.scrolls[activePanel] || [])];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n if (isBack) {\n this.scrolls = {\n ...this.scrolls,\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n };\n }\n\n this.setState(\n {\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n },\n () => {\n this.props.scroll?.scrollTo(0, isBack ? scrollPosition : 0);\n this.props.onTransition &&\n this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n },\n );\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['animation-ios-next-forward'],\n styles['animation-ios-prev-back'],\n styles['animation-view-next-forward'],\n styles['animation-view-prev-back'],\n ].includes(e.animationName)) &&\n this.state.prevPanel !== null\n ) {\n this.flushTransition(this.state.prevPanel, Boolean(this.state.isBack));\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e.propertyName.includes('transform') &&\n e.target === this.pickPanel(this.state.swipeBackNextPanel))\n ) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (event: TouchEvent): void => {\n if (\n !this.window ||\n this.props.platform !== Platform.IOS ||\n this.state.swipeBackPrevented ||\n swipeBackExcluded(event) ||\n this.shouldDisableTransitionMotion()\n ) {\n return;\n }\n\n if (!this.props.configProvider?.isWebView) {\n if (\n (event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA ||\n event.startX >= this.window.innerWidth - ViewInfiniteComponent.SWIPE_BACK_AREA) &&\n !this.state.browserSwipe\n ) {\n this.setState({ browserSwipe: true });\n }\n\n return;\n }\n\n if (\n !this.props.onSwipeBack ||\n (this.state.animated && event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA)\n ) {\n return;\n }\n\n if (\n !this.state.swipingBack &&\n event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA &&\n this.props.history &&\n this.props.history.length > 1\n ) {\n if (this.props.onSwipeBackStart) {\n const payload = this.props.onSwipeBackStart(this.state.activePanel);\n if (payload === 'prevent') {\n this.setState({ swipeBackPrevented: true });\n return;\n }\n }\n\n if (this.state.activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n this.blurActiveElement();\n const prevScrolls = this.scrolls[this.state.activePanel] || [];\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n }\n\n this.setState({\n swipingBack: true,\n swipeBackStartX: event.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > this.window.innerWidth - this.state.swipeBackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n };\n\n onEnd = (event: TouchEvent): void => {\n if (this.state.swipingBack && this.window) {\n const speed = (this.state.swipeBackShift / event.duration) * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (\n speed > 250 ||\n this.state.swipeBackStartX + this.state.swipeBackShift > this.window.innerWidth / 2\n ) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n if (this.state.swipeBackPrevented) {\n this.setState({ swipeBackPrevented: false });\n }\n };\n\n calcPanelSwipeStyles(panelId: string | undefined): React.CSSProperties {\n if (!canUseDOM || !this.window) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${\n -50 + (this.state.swipeBackShift * 100) / this.window.innerWidth / 2\n }%`;\n let prevPanelShadow =\n (0.3 * (this.window.innerWidth - this.state.swipeBackShift)) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n platform,\n activePanel: _1,\n splitCol,\n configProvider,\n history,\n id,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel,\n window,\n document,\n scroll,\n isBackCheck,\n className,\n ...restProps\n } = this.props;\n const {\n prevPanel,\n nextPanel,\n activePanel,\n isBack,\n animated,\n swipeBackPrevPanel,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n } = this.state;\n\n const panels = this.panels\n .filter((panel) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && this.state.visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n })\n .sort((panel) => {\n const panelId = getNavId(panel.props, warn);\n const isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;\n\n if (isNextPanel) {\n return swipingBack || this.state.isBack ? -1 : 1;\n }\n\n if (isPrevPanel) {\n return swipingBack || this.state.isBack ? 1 : -1;\n }\n\n return 0;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && this.state.animated && styles['View--animated'],\n !disableAnimation && this.state.swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const scrollList = (panelId && this.scrolls[panelId]) || [];\n const scroll = scrollList[scrollList.length - 1] || 0;\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n styles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (this.panelNodes[panelId] = el)}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{ marginTop: compensateScroll ? -scroll : undefined }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n }\n}\n\nexport const ViewInfinite = withContext(\n withContext(\n withContext(\n withPlatform(withDOM<ViewInfiniteProps>(ViewInfiniteComponent)),\n SplitColContext,\n 'splitCol',\n ),\n ConfigProviderContext,\n 'configProvider',\n ),\n ScrollContext,\n 'scroll',\n);\n"],"names":["React","classNames","withContext","withPlatform","canUseDOM","withDOM","getNavId","Platform","animationEvent","transitionEvent","warnOnce","ScrollContext","ConfigProviderContext","NavTransitionProvider","SplitColContext","Touch","swipeBackExcluded","warn","SwipeBackResults","fail","success","scrollsCache","ViewInfiniteComponent","props","scrolls","transitionFinishTimeout","undefined","animationFinishTimeout","panelNodes","transitionEndHandler","e","includes","animationName","state","prevPanel","flushTransition","Boolean","isBack","swipingBackTransitionEndHandler","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","onSwipeBackCancel","onSwipeBackSuccess","onMoveX","event","window","platform","IOS","swipeBackPrevented","shouldDisableTransitionMotion","configProvider","isWebView","startX","SWIPE_BACK_AREA","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","onSwipeBackStart","payload","activePanel","blurActiveElement","prevScrolls","scroll","getScroll","y","swipeBackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","onEnd","speed","duration","visiblePanels","nextPanel","document","panels","Children","toArray","children","componentWillUnmount","id","clearTimeout","componentDidUpdate","prevProps","prevState","isBackCheck","from","to","firstLayerId","map","panel","find","supported","setTimeout","ANDROID","VKCOM","scrollPosition","prevPanelScrolls","newPanelScrolls","pop","scrollTo","onTransition","waitTransitionFinish","transitionMotionEnabled","splitCol","animate","elem","eventHandler","name","removeEventListener","addEventListener","activeElement","blur","calcPanelSwipeStyles","panelId","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","render","_1","nav","className","restProps","filter","sort","isPrevPanel","isNextPanel","disableAnimation","Component","div","compensateScroll","isTransitionTarget","scrollList","onAnimationEnd","ref","el","style","key","marginTop","entering","defaultProps","ViewInfinite"],"mappings":"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"}
|