@vkontakte/vkui 5.2.2 → 5.2.4
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/AdaptivityProvider/AdaptivityProvider.js +3 -16
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +1 -2
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js +1 -2
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cjs/components/File/File.js +1 -4
- package/dist/cjs/components/File/File.js.map +1 -1
- package/dist/cjs/components/Input/Input.js +3 -7
- package/dist/cjs/components/Input/Input.js.map +1 -1
- package/dist/cjs/components/ModalCard/ModalCard.js +6 -2
- package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js +6 -2
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js +1 -2
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cjs/components/NativeSelect/NativeSelect.js +1 -4
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/PanelHeader/PanelHeader.js +6 -11
- package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +6 -11
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +6 -2
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cjs/components/PopperArrow/PopperArrow.js +22 -7
- package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +1 -4
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SelectTypography/SelectTypography.js +1 -1
- package/dist/cjs/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js +6 -2
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/SplitCol/SplitCol.d.ts +2 -0
- package/dist/cjs/components/SplitCol/SplitCol.js +6 -0
- package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cjs/components/Switch/Switch.js +2 -2
- package/dist/cjs/components/Switch/Switch.js.map +1 -1
- package/dist/cjs/components/Touch/Touch.js +10 -2
- package/dist/cjs/components/Touch/Touch.js.map +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +1 -2
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/helpers/getPlatformClassName.d.ts +11 -0
- package/dist/cjs/helpers/getPlatformClassName.js +2 -0
- package/dist/cjs/helpers/getPlatformClassName.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js +3 -15
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js +1 -2
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.js +1 -2
- package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/components/File/File.js +1 -4
- package/dist/components/File/File.js.map +1 -1
- package/dist/components/Input/Input.js +3 -7
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/ModalCard/ModalCard.js +6 -2
- package/dist/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +6 -2
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.js +1 -2
- package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js +1 -4
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js +6 -11
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js +6 -11
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js +6 -2
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/components/PopperArrow/PopperArrow.js +22 -7
- package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js +1 -4
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SelectTypography/SelectTypography.js +1 -1
- package/dist/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +6 -2
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/SplitCol/SplitCol.d.ts +2 -0
- package/dist/components/SplitCol/SplitCol.js +6 -0
- package/dist/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/components/Switch/Switch.js +2 -2
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Touch/Touch.js +10 -2
- package/dist/components/Touch/Touch.js.map +1 -1
- package/dist/components/UsersStack/UsersStack.js +1 -1
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +1 -2
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +3 -3
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +1128 -1127
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +3 -15
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +1 -2
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js +1 -2
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cssm/components/File/File.js +1 -4
- package/dist/cssm/components/File/File.js.map +1 -1
- package/dist/cssm/components/Input/Input.js +3 -7
- package/dist/cssm/components/Input/Input.js.map +1 -1
- package/dist/cssm/components/Input/Input.module.css +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.js +6 -2
- package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +6 -2
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +1 -2
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js +1 -4
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js +6 -11
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +6 -11
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +6 -2
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cssm/components/PopperArrow/PopperArrow.js +22 -7
- package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cssm/components/PopperArrow/PopperArrow.module.css +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +1 -4
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SelectTypography/SelectTypography.js +1 -1
- package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js +6 -2
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SplitCol/SplitCol.d.ts +2 -0
- package/dist/cssm/components/SplitCol/SplitCol.js +6 -0
- package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cssm/components/Switch/Switch.js +2 -2
- package/dist/cssm/components/Switch/Switch.js.map +1 -1
- package/dist/cssm/components/Touch/Touch.js +10 -2
- package/dist/cssm/components/Touch/Touch.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +1 -2
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.module.css +1 -1
- package/dist/cssm/helpers/getPlatformClassName.d.ts +11 -0
- package/dist/cssm/helpers/getPlatformClassName.js +9 -0
- package/dist/cssm/helpers/getPlatformClassName.js.map +1 -1
- package/dist/helpers/getPlatformClassName.d.ts +11 -0
- package/dist/helpers/getPlatformClassName.js +9 -0
- package/dist/helpers/getPlatformClassName.js.map +1 -1
- package/dist/vkui.css +3 -3
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +1128 -1127
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Touch.js","names":["Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","usePointerHover","slideThreshold","useCapture","Component","getRootRef","noSlideClick","stopPropagation","restProps","useDOM","document","events","React","useMemo","getSupportedEvents","didSlide","useRef","gesture","handle","e","handlers","forEach","cb","duration","Date","now","current","startT","getTime","originalEvent","enterHandler","useEventListener","leaveHandler","startHandler","initGesture","coordX","coordY","subscribe","touchEnabled","target","capture","passive","containerRef","useExternRef","useIsomorphicLayoutEffect","el","add","isPressed","isX","isY","startX","startY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","willBeX","willBeY","willBeSlidedX","willBeSlidedY","Object","assign","isSlideX","isSlideY","isSlide","Boolean","unsubscribe","listenerParams","listeners","l","remove","onDragStart","tagName","preventDefault","postGestureClick"],"sources":["../../../../src/components/Touch/Touch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { coordX, coordY, getSupportedEvents, touchEnabled, VKUITouchEvent } from '../../lib/touch';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\n\nexport interface TouchProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent {\n /**\n * Привязать onEnter и onLeave через pointer-events - работает на disabled-инпутах\n */\n usePointerHover?: boolean;\n useCapture?: boolean;\n slideThreshold?: number;\n noSlideClick?: boolean;\n onEnter?: HoverHandler;\n onLeave?: HoverHandler;\n onStart?: TouchEventHandler;\n onStartX?: TouchEventHandler;\n onStartY?: TouchEventHandler;\n onMove?: TouchEventHandler;\n onMoveX?: TouchEventHandler;\n onMoveY?: TouchEventHandler;\n onEnd?: TouchEventHandler;\n onEndX?: TouchEventHandler;\n onEndY?: TouchEventHandler;\n stopPropagation?: boolean;\n}\n\nexport interface Gesture {\n startX: number;\n startY: number;\n startT: Date;\n duration: number;\n isPressed: boolean;\n isY: boolean;\n isX: boolean;\n isSlideX: boolean;\n isSlideY: boolean;\n isSlide: boolean;\n shiftX: number;\n shiftY: number;\n shiftXAbs: number;\n shiftYAbs: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\ntype HoverHandler = (outputEvent: MouseEvent) => void;\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Touch\n */\nexport const Touch = ({\n onStart,\n onStartX,\n onStartY,\n onMove: _onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd: _onEnd,\n onEndX,\n onEndY,\n onClickCapture,\n usePointerHover,\n slideThreshold = 5,\n useCapture = false,\n Component = 'div',\n getRootRef,\n noSlideClick = false,\n stopPropagation = false,\n ...restProps\n}: TouchProps) => {\n const { document } = useDOM();\n const events = React.useMemo(getSupportedEvents, []);\n const didSlide = React.useRef(false);\n const gesture = React.useRef<Partial<Gesture> | null>(null);\n const handle = (e: VKUITouchEvent, handlers: Array<TouchEventHandler | undefined | false>) => {\n stopPropagation && e.stopPropagation();\n handlers.forEach((cb) => {\n const duration = Date.now() - (gesture.current?.startT?.getTime() ?? 0);\n cb && cb({ ...(gesture.current as Gesture), duration, originalEvent: e });\n });\n };\n\n const enterHandler = useEventListener(usePointerHover ? 'pointerenter' : 'mouseenter', onEnter);\n const leaveHandler = useEventListener(usePointerHover ? 'pointerleave' : 'mouseleave', onLeave);\n const startHandler = useEventListener(\n events[0],\n (e: VKUITouchEvent) => {\n gesture.current = initGesture(coordX(e), coordY(e));\n\n handle(e, [onStart, onStartX, onStartY]);\n // 1 line, 2 bad specs, 2 workarounds:\n subscribe(\n touchEnabled()\n ? // Touch events fire on initial target, and won't bubble if its removed\n // see: #235, #1968, https://stackoverflow.com/a/45760014\n (e.target as HTMLElement)\n : // Mouse events fire on the element under pointer, so we lose move / end\n // if pointer goes outside container.\n // Can be fixed by PointerEvents' setPointerCapture later\n document,\n );\n },\n { capture: useCapture, passive: false },\n );\n const containerRef = useExternRef(getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n const el = containerRef.current;\n if (el) {\n enterHandler.add(el);\n leaveHandler.add(el);\n startHandler.add(el);\n }\n }, [Component]);\n\n function onMove(e: VKUITouchEvent) {\n const { isPressed, isX, isY, startX = 0, startY = 0 } = gesture.current ?? {};\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n const willBeX = shiftXAbs >= slideThreshold && shiftXAbs > shiftYAbs;\n const willBeY = shiftYAbs >= slideThreshold && shiftYAbs > shiftXAbs;\n const willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);\n const willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);\n\n if (gesture.current) {\n Object.assign(gesture.current, {\n isY: willBeY,\n isX: willBeX,\n isSlideX: willBeSlidedX,\n isSlideY: willBeSlidedY,\n isSlide: willBeSlidedX || willBeSlidedY,\n });\n }\n }\n\n if (gesture.current?.isSlide) {\n Object.assign(gesture.current, {\n shiftX,\n shiftY,\n shiftXAbs,\n shiftYAbs,\n });\n\n handle(e, [\n _onMove,\n gesture.current.isSlideX && onMoveX,\n gesture.current.isSlideY && onMoveY,\n ]);\n }\n }\n }\n\n function onEnd(e: VKUITouchEvent) {\n const { isPressed, isSlide, isSlideX, isSlideY } = gesture.current ?? {};\n\n if (isPressed) {\n handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);\n }\n\n didSlide.current = Boolean(isSlide);\n gesture.current = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (touchEnabled()) {\n onLeave && onLeave(e);\n }\n unsubscribe();\n }\n\n const listenerParams = { capture: useCapture, passive: false };\n const listeners = [\n useEventListener(events[1], onMove, listenerParams),\n useEventListener(events[2], onEnd, listenerParams),\n useEventListener(events[3], onEnd, listenerParams),\n ];\n function subscribe(el: HTMLElement | Document | null | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n */\n const onDragStart = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n */\n const postGestureClick: typeof onClickCapture = (e) => {\n if (!didSlide.current) {\n return onClickCapture && onClickCapture(e);\n }\n\n if (noSlideClick) {\n e.stopPropagation();\n\n // https://github.com/VKCOM/VKUI/issues/1977\n // https://github.com/VKCOM/VKUI/issues/3892\n e.preventDefault();\n } else {\n onClickCapture && onClickCapture(e);\n }\n\n didSlide.current = false;\n };\n\n return (\n <Component\n {...restProps}\n onDragStart={onDragStart}\n onClickCapture={postGestureClick}\n ref={containerRef}\n />\n );\n};\n\nfunction initGesture(startX: number, startY: number): Gesture {\n return {\n startX,\n startY,\n startT: new Date(),\n duration: 0,\n isPressed: true,\n isY: false,\n isX: false,\n isSlideX: false,\n isSlideY: false,\n isSlide: false,\n shiftX: 0,\n shiftY: 0,\n shiftXAbs: 0,\n shiftYAbs: 0,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Touch.js","names":["Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","usePointerHover","slideThreshold","useCapture","Component","getRootRef","noSlideClick","stopPropagation","restProps","useDOM","document","events","React","useMemo","getSupportedEvents","didSlide","useRef","gesture","handle","e","handlers","forEach","cb","duration","Date","now","current","startT","getTime","originalEvent","enterHandler","useEventListener","leaveHandler","startHandler","initGesture","coordX","coordY","subscribe","touchEnabled","target","capture","passive","containerRef","useExternRef","useIsomorphicLayoutEffect","el","add","isPressed","isX","isY","startX","startY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","willBeX","willBeY","willBeSlidedX","willBeSlidedY","Object","assign","isSlideX","isSlideY","isSlide","isTouchEnabled","Boolean","unsubscribe","listenerParams","listeners","l","remove","onDragStart","tagName","preventDefault","postGestureClick"],"sources":["../../../../src/components/Touch/Touch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { coordX, coordY, getSupportedEvents, touchEnabled, VKUITouchEvent } from '../../lib/touch';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\n\nexport interface TouchProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent {\n /**\n * Привязать onEnter и onLeave через pointer-events - работает на disabled-инпутах\n */\n usePointerHover?: boolean;\n useCapture?: boolean;\n slideThreshold?: number;\n noSlideClick?: boolean;\n onEnter?: HoverHandler;\n onLeave?: HoverHandler;\n onStart?: TouchEventHandler;\n onStartX?: TouchEventHandler;\n onStartY?: TouchEventHandler;\n onMove?: TouchEventHandler;\n onMoveX?: TouchEventHandler;\n onMoveY?: TouchEventHandler;\n onEnd?: TouchEventHandler;\n onEndX?: TouchEventHandler;\n onEndY?: TouchEventHandler;\n stopPropagation?: boolean;\n}\n\nexport interface Gesture {\n startX: number;\n startY: number;\n startT: Date;\n duration: number;\n isPressed: boolean;\n isY: boolean;\n isX: boolean;\n isSlideX: boolean;\n isSlideY: boolean;\n isSlide: boolean;\n shiftX: number;\n shiftY: number;\n shiftXAbs: number;\n shiftYAbs: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\ntype HoverHandler = (outputEvent: MouseEvent) => void;\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Touch\n */\nexport const Touch = ({\n onStart,\n onStartX,\n onStartY,\n onMove: _onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd: _onEnd,\n onEndX,\n onEndY,\n onClickCapture,\n usePointerHover,\n slideThreshold = 5,\n useCapture = false,\n Component = 'div',\n getRootRef,\n noSlideClick = false,\n stopPropagation = false,\n ...restProps\n}: TouchProps) => {\n const { document } = useDOM();\n const events = React.useMemo(getSupportedEvents, []);\n const didSlide = React.useRef(false);\n const gesture = React.useRef<Partial<Gesture> | null>(null);\n const handle = (e: VKUITouchEvent, handlers: Array<TouchEventHandler | undefined | false>) => {\n stopPropagation && e.stopPropagation();\n handlers.forEach((cb) => {\n const duration = Date.now() - (gesture.current?.startT?.getTime() ?? 0);\n cb && cb({ ...(gesture.current as Gesture), duration, originalEvent: e });\n });\n };\n\n const enterHandler = useEventListener(usePointerHover ? 'pointerenter' : 'mouseenter', onEnter);\n const leaveHandler = useEventListener(usePointerHover ? 'pointerleave' : 'mouseleave', onLeave);\n const startHandler = useEventListener(\n events[0],\n (e: VKUITouchEvent) => {\n gesture.current = initGesture(coordX(e), coordY(e));\n\n handle(e, [onStart, onStartX, onStartY]);\n // 1 line, 2 bad specs, 2 workarounds:\n subscribe(\n touchEnabled()\n ? // Touch events fire on initial target, and won't bubble if its removed\n // see: #235, #1968, https://stackoverflow.com/a/45760014\n (e.target as HTMLElement)\n : // Mouse events fire on the element under pointer, so we lose move / end\n // if pointer goes outside container.\n // Can be fixed by PointerEvents' setPointerCapture later\n document,\n );\n },\n { capture: useCapture, passive: false },\n );\n const containerRef = useExternRef(getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n const el = containerRef.current;\n if (el) {\n enterHandler.add(el);\n leaveHandler.add(el);\n startHandler.add(el);\n }\n }, [Component]);\n\n function onMove(e: VKUITouchEvent) {\n const { isPressed, isX, isY, startX = 0, startY = 0 } = gesture.current ?? {};\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n const willBeX = shiftXAbs >= slideThreshold && shiftXAbs > shiftYAbs;\n const willBeY = shiftYAbs >= slideThreshold && shiftYAbs > shiftXAbs;\n const willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);\n const willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);\n\n if (gesture.current) {\n Object.assign(gesture.current, {\n isY: willBeY,\n isX: willBeX,\n isSlideX: willBeSlidedX,\n isSlideY: willBeSlidedY,\n isSlide: willBeSlidedX || willBeSlidedY,\n });\n }\n }\n\n if (gesture.current?.isSlide) {\n Object.assign(gesture.current, {\n shiftX,\n shiftY,\n shiftXAbs,\n shiftYAbs,\n });\n\n handle(e, [\n _onMove,\n gesture.current.isSlideX && onMoveX,\n gesture.current.isSlideY && onMoveY,\n ]);\n }\n }\n }\n\n function onEnd(e: VKUITouchEvent) {\n const { isPressed, isSlide, isSlideX, isSlideY } = gesture.current ?? {};\n\n if (isPressed) {\n handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);\n }\n\n const isTouchEnabled = touchEnabled();\n\n if (isTouchEnabled && isSlide) {\n // https://github.com/VKCOM/VKUI/issues/4414\n // если тач-устройство и был зафиксирован touchmove,\n // то событие клика не вызывается\n didSlide.current = false;\n } else {\n didSlide.current = Boolean(isSlide);\n }\n gesture.current = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (isTouchEnabled) {\n onLeave && onLeave(e);\n }\n unsubscribe();\n }\n\n const listenerParams = { capture: useCapture, passive: false };\n const listeners = [\n useEventListener(events[1], onMove, listenerParams),\n useEventListener(events[2], onEnd, listenerParams),\n useEventListener(events[3], onEnd, listenerParams),\n ];\n function subscribe(el: HTMLElement | Document | null | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n */\n const onDragStart = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n */\n const postGestureClick: typeof onClickCapture = (e) => {\n if (!didSlide.current) {\n return onClickCapture && onClickCapture(e);\n }\n\n if (noSlideClick) {\n e.stopPropagation();\n\n // https://github.com/VKCOM/VKUI/issues/1977\n // https://github.com/VKCOM/VKUI/issues/3892\n e.preventDefault();\n } else {\n onClickCapture && onClickCapture(e);\n }\n\n didSlide.current = false;\n };\n\n return (\n <Component\n {...restProps}\n onDragStart={onDragStart}\n onClickCapture={postGestureClick}\n ref={containerRef}\n />\n );\n};\n\nfunction initGesture(startX: number, startY: number): Gesture {\n return {\n startX,\n startY,\n startT: new Date(),\n duration: 0,\n isPressed: true,\n isY: false,\n isX: false,\n isSlideX: false,\n isSlideY: false,\n isSlide: false,\n shiftX: 0,\n shiftY: 0,\n shiftXAbs: 0,\n shiftYAbs: 0,\n };\n}\n"],"mappings":"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"}
|
|
@@ -79,7 +79,7 @@ var UsersStack = function UsersStack(_ref2) {
|
|
|
79
79
|
className = _ref2.className,
|
|
80
80
|
restProps = (0, _objectWithoutProperties2.default)(_ref2, _excluded2);
|
|
81
81
|
var cmpId = (0, _useId.useId)();
|
|
82
|
-
var canShowOthers = count > 0 && size !== 's';
|
|
82
|
+
var canShowOthers = count > 0 && count < 100 && size !== 's';
|
|
83
83
|
var CounterTypography = size === 'l' ? _Footnote.Footnote : _Caption.Caption;
|
|
84
84
|
var photoSize = photoSizes[size];
|
|
85
85
|
var directionClip = canShowOthers ? 'right' : 'left';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsersStack.js","names":["PathElement","photoSize","direction","props","radius","photoSizes","s","m","l","UsersStack","photos","visibleCount","count","Math","max","length","size","layout","children","className","restProps","cmpId","useId","canShowOthers","CounterTypography","Footnote","Caption","directionClip","photosElements","slice","map","photo","i","id","hrefID","maskID","othersElement","classNames","styles","hasReactNode"],"sources":["../../../../src/components/UsersStack/UsersStack.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useId } from '../../hooks/useId';\nimport { Caption } from '../Typography/Caption/Caption';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport styles from './UsersStack.module.css';\n\nexport interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Массив ссылок на фотографии\n */\n photos?: string[];\n /**\n * Размер аватарок\n */\n size?: 's' | 'm' | 'l';\n /**\n * Вертикальный режим рекомендуется использовать с размером `m`\n */\n layout?: 'vertical' | 'horizontal';\n /**\n * Количество аватарок, которые будут показаны.\n * Если в массиве `photos` больше элементов и используется размер `m`, то будет показано количество остальных элементов\n */\n visibleCount?: number;\n /**\n * Число, которое будет указано в счетчике.\n * По умолчанию высчитывается по формуле `photos.length - visibleCount`.\n * Если число больше 99, то счетчик скроется.\n */\n count?: number;\n}\n\ninterface PathElementProps extends React.SVGAttributes<SVGElement> {\n photoSize: number;\n direction: 'circle' | 'right' | 'left';\n}\n\ntype PhotoSizeType = 16 | 24 | 32;\n\nfunction PathElement({ photoSize, direction, ...props }: PathElementProps) {\n switch (direction) {\n case 'circle':\n const radius = photoSize / 2;\n\n return <circle cx={radius} cy={radius} r={radius} {...props} />;\n\n case 'right':\n switch (photoSize) {\n case 24:\n return (\n <path\n d=\"M22,18.625A12 12 0 0 1 12 24A12 12 0 0 1 12 0A12 12 0 0 1 22 5.375A12 12 0 0 0 22,18.625\"\n {...props}\n />\n );\n\n default:\n return (\n <path\n d=\"M30,23.75A16 16 0 0 1 16 32A16 16 0 0 1 16 0A16 16 0 0 1 30 8.25A16 16 0 0 0 30,23.75\"\n {...props}\n />\n );\n }\n\n default:\n switch (photoSize) {\n case 16:\n return (\n <path\n d=\"M2,13.285A8 8 0 0 0 8 16A8 8 0 0 0 8 0A8 8 0 0 0 2 2.715A8 8 0 0 1 2,13.285\"\n {...props}\n />\n );\n case 24:\n return (\n <path\n d=\"M2,18.625A12 12 0 0 0 12 24A12 12 0 0 0 12 0A12 12 0 0 0 2 5.375A12 12 0 0 1 2,18.625\"\n {...props}\n />\n );\n\n default:\n return (\n <path\n d=\"M2,23.75A16 16 0 0 0 16 32A16 16 0 0 0 16 0A16 16 0 0 0 2 8.25A16 16 0 0 1 2,23.75\"\n {...props}\n />\n );\n }\n }\n}\n\nconst photoSizes: Record<NonNullable<UsersStackProps['size']>, PhotoSizeType> = {\n s: 16,\n m: 24,\n l: 32,\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/UsersStack\n */\nexport const UsersStack = ({\n photos = [],\n visibleCount = 3,\n count = Math.max(0, photos.length - visibleCount),\n size = 'm',\n layout = 'horizontal',\n children,\n className,\n ...restProps\n}: UsersStackProps) => {\n const cmpId = useId();\n\n const canShowOthers = count > 0 && size !== 's';\n const CounterTypography = size === 'l' ? Footnote : Caption;\n\n const photoSize = photoSizes[size];\n const directionClip = canShowOthers ? 'right' : 'left';\n\n const photosElements = photos.slice(0, visibleCount).map((photo, i) => {\n const direction = i === 0 && !canShowOthers ? 'circle' : directionClip;\n\n const id = `UsersStackDefs${cmpId}${i}`;\n const hrefID = `#${id}`;\n const maskID = `UsersStackMask${cmpId}${i}`;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={styles['UsersStack__photo']}\n key={i}\n aria-hidden\n >\n <defs>\n <PathElement id={id} direction={direction} photoSize={photoSize} />\n </defs>\n <clipPath id={maskID}>\n <use href={hrefID} />\n </clipPath>\n <g clipPath={`url(#${maskID})`}>\n <use href={hrefID} className={styles['UsersStack__fill']} />\n <image href={photo} width={photoSize} height={photoSize} />\n <use href={hrefID} fill=\"none\" stroke=\"rgba(0, 0, 0, 0.08)\" />\n </g>\n </svg>\n );\n });\n const othersElement = canShowOthers ? (\n <CounterTypography\n caps\n weight=\"1\"\n className={classNames(styles['UsersStack__photo'], styles['UsersStack__photo--others'])}\n >\n +{count}\n </CounterTypography>\n ) : null;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['UsersStack'],\n styles[`UsersStack--size-${size}`],\n styles[`UsersStack--layout-${layout}`],\n canShowOthers && styles['UsersStack--others'],\n className,\n )}\n >\n {(photosElements.length > 0 || othersElement) && (\n <div className={styles['UsersStack__photos']} role=\"presentation\">\n {photosElements}\n {othersElement}\n </div>\n )}\n {hasReactNode(children) && (\n <Footnote className={styles['UsersStack__text']}>{children}</Footnote>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAA2D;EAAA;AAoC3D,SAASA,WAAW,OAAuD;EAAA,IAApDC,SAAS,QAATA,SAAS;IAAEC,SAAS,QAATA,SAAS;IAAKC,KAAK;EACnD,QAAQD,SAAS;IACf,KAAK,QAAQ;MACX,IAAME,MAAM,GAAGH,SAAS,GAAG,CAAC;MAE5B,oBAAO;QAAQ,EAAE,EAAEG,MAAO;QAAC,EAAE,EAAEA,MAAO;QAAC,CAAC,EAAEA;MAAO,GAAKD,KAAK,EAAI;IAEjE,KAAK,OAAO;MACV,QAAQF,SAAS;QACf,KAAK,EAAE;UACL,oBACE;YACE,CAAC,EAAC;UAA0F,GACxFE,KAAK,EACT;QAGN;UACE,oBACE;YACE,CAAC,EAAC;UAAuF,GACrFA,KAAK,EACT;MACF;IAGR;MACE,QAAQF,SAAS;QACf,KAAK,EAAE;UACL,oBACE;YACE,CAAC,EAAC;UAA6E,GAC3EE,KAAK,EACT;QAEN,KAAK,EAAE;UACL,oBACE;YACE,CAAC,EAAC;UAAuF,GACrFA,KAAK,EACT;QAGN;UACE,oBACE;YACE,CAAC,EAAC;UAAoF,GAClFA,KAAK,EACT;MACF;EACL;AAEP;AAEA,IAAME,UAAuE,GAAG;EAC9EC,CAAC,EAAE,EAAE;EACLC,CAAC,EAAE,EAAE;EACLC,CAAC,EAAE;AACL,CAAC;;AAED;AACA;AACA;AACO,IAAMC,UAAU,GAAG,SAAbA,UAAU,QASA;EAAA,yBARrBC,MAAM;IAANA,MAAM,6BAAG,EAAE;IAAA,2BACXC,YAAY;IAAZA,YAAY,mCAAG,CAAC;IAAA,oBAChBC,KAAK;IAALA,KAAK,4BAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,MAAM,CAACK,MAAM,GAAGJ,YAAY,CAAC;IAAA,mBACjDK,IAAI;IAAJA,IAAI,2BAAG,GAAG;IAAA,qBACVC,MAAM;IAANA,MAAM,6BAAG,YAAY;IACrBC,QAAQ,SAARA,QAAQ;IACRC,SAAS,SAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,KAAK,GAAG,IAAAC,YAAK,GAAE;EAErB,IAAMC,aAAa,GAAGX,KAAK,GAAG,CAAC,IAAII,IAAI,KAAK,GAAG;
|
|
1
|
+
{"version":3,"file":"UsersStack.js","names":["PathElement","photoSize","direction","props","radius","photoSizes","s","m","l","UsersStack","photos","visibleCount","count","Math","max","length","size","layout","children","className","restProps","cmpId","useId","canShowOthers","CounterTypography","Footnote","Caption","directionClip","photosElements","slice","map","photo","i","id","hrefID","maskID","othersElement","classNames","styles","hasReactNode"],"sources":["../../../../src/components/UsersStack/UsersStack.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useId } from '../../hooks/useId';\nimport { Caption } from '../Typography/Caption/Caption';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport styles from './UsersStack.module.css';\n\nexport interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Массив ссылок на фотографии\n */\n photos?: string[];\n /**\n * Размер аватарок\n */\n size?: 's' | 'm' | 'l';\n /**\n * Вертикальный режим рекомендуется использовать с размером `m`\n */\n layout?: 'vertical' | 'horizontal';\n /**\n * Количество аватарок, которые будут показаны.\n * Если в массиве `photos` больше элементов и используется размер `m`, то будет показано количество остальных элементов\n */\n visibleCount?: number;\n /**\n * Число, которое будет указано в счетчике.\n * По умолчанию высчитывается по формуле `photos.length - visibleCount`.\n * Если число больше 99, то счетчик скроется.\n */\n count?: number;\n}\n\ninterface PathElementProps extends React.SVGAttributes<SVGElement> {\n photoSize: number;\n direction: 'circle' | 'right' | 'left';\n}\n\ntype PhotoSizeType = 16 | 24 | 32;\n\nfunction PathElement({ photoSize, direction, ...props }: PathElementProps) {\n switch (direction) {\n case 'circle':\n const radius = photoSize / 2;\n\n return <circle cx={radius} cy={radius} r={radius} {...props} />;\n\n case 'right':\n switch (photoSize) {\n case 24:\n return (\n <path\n d=\"M22,18.625A12 12 0 0 1 12 24A12 12 0 0 1 12 0A12 12 0 0 1 22 5.375A12 12 0 0 0 22,18.625\"\n {...props}\n />\n );\n\n default:\n return (\n <path\n d=\"M30,23.75A16 16 0 0 1 16 32A16 16 0 0 1 16 0A16 16 0 0 1 30 8.25A16 16 0 0 0 30,23.75\"\n {...props}\n />\n );\n }\n\n default:\n switch (photoSize) {\n case 16:\n return (\n <path\n d=\"M2,13.285A8 8 0 0 0 8 16A8 8 0 0 0 8 0A8 8 0 0 0 2 2.715A8 8 0 0 1 2,13.285\"\n {...props}\n />\n );\n case 24:\n return (\n <path\n d=\"M2,18.625A12 12 0 0 0 12 24A12 12 0 0 0 12 0A12 12 0 0 0 2 5.375A12 12 0 0 1 2,18.625\"\n {...props}\n />\n );\n\n default:\n return (\n <path\n d=\"M2,23.75A16 16 0 0 0 16 32A16 16 0 0 0 16 0A16 16 0 0 0 2 8.25A16 16 0 0 1 2,23.75\"\n {...props}\n />\n );\n }\n }\n}\n\nconst photoSizes: Record<NonNullable<UsersStackProps['size']>, PhotoSizeType> = {\n s: 16,\n m: 24,\n l: 32,\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/UsersStack\n */\nexport const UsersStack = ({\n photos = [],\n visibleCount = 3,\n count = Math.max(0, photos.length - visibleCount),\n size = 'm',\n layout = 'horizontal',\n children,\n className,\n ...restProps\n}: UsersStackProps) => {\n const cmpId = useId();\n\n const canShowOthers = count > 0 && count < 100 && size !== 's';\n const CounterTypography = size === 'l' ? Footnote : Caption;\n\n const photoSize = photoSizes[size];\n const directionClip = canShowOthers ? 'right' : 'left';\n\n const photosElements = photos.slice(0, visibleCount).map((photo, i) => {\n const direction = i === 0 && !canShowOthers ? 'circle' : directionClip;\n\n const id = `UsersStackDefs${cmpId}${i}`;\n const hrefID = `#${id}`;\n const maskID = `UsersStackMask${cmpId}${i}`;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={styles['UsersStack__photo']}\n key={i}\n aria-hidden\n >\n <defs>\n <PathElement id={id} direction={direction} photoSize={photoSize} />\n </defs>\n <clipPath id={maskID}>\n <use href={hrefID} />\n </clipPath>\n <g clipPath={`url(#${maskID})`}>\n <use href={hrefID} className={styles['UsersStack__fill']} />\n <image href={photo} width={photoSize} height={photoSize} />\n <use href={hrefID} fill=\"none\" stroke=\"rgba(0, 0, 0, 0.08)\" />\n </g>\n </svg>\n );\n });\n const othersElement = canShowOthers ? (\n <CounterTypography\n caps\n weight=\"1\"\n className={classNames(styles['UsersStack__photo'], styles['UsersStack__photo--others'])}\n >\n +{count}\n </CounterTypography>\n ) : null;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['UsersStack'],\n styles[`UsersStack--size-${size}`],\n styles[`UsersStack--layout-${layout}`],\n canShowOthers && styles['UsersStack--others'],\n className,\n )}\n >\n {(photosElements.length > 0 || othersElement) && (\n <div className={styles['UsersStack__photos']} role=\"presentation\">\n {photosElements}\n {othersElement}\n </div>\n )}\n {hasReactNode(children) && (\n <Footnote className={styles['UsersStack__text']}>{children}</Footnote>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -18,7 +18,6 @@ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
18
18
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
19
19
|
var React = _interopRequireWildcard(require("react"));
|
|
20
20
|
var _vkjs = require("@vkontakte/vkjs");
|
|
21
|
-
var _getPlatformClassName = require("../../helpers/getPlatformClassName");
|
|
22
21
|
var _withContext = require("../../hoc/withContext");
|
|
23
22
|
var _withPlatform = require("../../hoc/withPlatform");
|
|
24
23
|
var _dom = require("../../lib/dom");
|
|
@@ -472,7 +471,7 @@ var ViewInfiniteComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
472
471
|
return /*#__PURE__*/React.createElement(_Touch.Touch, (0, _extends2.default)({
|
|
473
472
|
Component: "section"
|
|
474
473
|
}, restProps, {
|
|
475
|
-
className: (0, _vkjs.classNames)("vkuiView",
|
|
474
|
+
className: (0, _vkjs.classNames)("vkuiView", platform === _platform.Platform.IOS && "vkuiView--ios", !disableAnimation && this.state.animated && "vkuiView--animated", !disableAnimation && this.state.swipingBack && "vkuiView--swiping-back", disableAnimation && "vkuiView--no-motion", className),
|
|
476
475
|
onMoveX: this.onMoveX,
|
|
477
476
|
onEnd: this.onEnd
|
|
478
477
|
}), /*#__PURE__*/React.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewInfinite.js","names":["warn","warnOnce","SwipeBackResults","scrollsCache","ViewInfiniteComponent","props","getNavId","undefined","e","includes","animationName","state","prevPanel","flushTransition","Boolean","isBack","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","event","window","platform","Platform","IOS","swipeBackPrevented","swipeBackExcluded","shouldDisableTransitionMotion","configProvider","isWebView","startX","SWIPE_BACK_AREA","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","onSwipeBackStart","payload","activePanel","blurActiveElement","prevScrolls","scrolls","scroll","getScroll","y","swipeBackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","speed","duration","visiblePanels","nextPanel","document","React","Children","toArray","children","id","animationFinishTimeout","clearTimeout","prevProps","prevState","popout","modal","isBackCheck","from","to","firstLayerId","panels","map","panel","find","animationEvent","supported","setTimeout","transitionEndHandler","ANDROID","VKCOM","scrollPosition","prevPanelScrolls","newPanelScrolls","pop","scrollTo","onTransition","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","name","removeEventListener","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","className","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","classNames","getPlatformClassName","onMoveX","onEnd","compensateScroll","isTransitionTarget","scrollList","el","calcPanelSwipeStyles","marginTop","Component","ViewInfinite","withContext","withPlatform","withDOM","SplitColContext","ConfigProviderContext","ScrollContext"],"sources":["../../../../src/components/View/ViewInfinite.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\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 { AppRootPortal } from '../AppRoot/AppRootPortal';\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';\nimport iosStyles from './ViewIOS.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 popout?: React.ReactNode;\n modal?: React.ReactNode;\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 this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\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 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n '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 popout,\n modal,\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 hasPopout = !!popout;\n const hasModal = !!modal;\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 getPlatformClassName(styles['View'], platform),\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 && iosStyles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && iosStyles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && iosStyles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n iosStyles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n iosStyles['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 <AppRootPortal>\n {hasPopout && <div className={styles['View__popout']}>{popout}</div>}\n {hasModal && <div className={styles['View__modal']}>{modal}</div>}\n </AppRootPortal>\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ViewInfinite.js","names":["warn","warnOnce","SwipeBackResults","scrollsCache","ViewInfiniteComponent","props","getNavId","undefined","e","includes","animationName","state","prevPanel","flushTransition","Boolean","isBack","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","event","window","platform","Platform","IOS","swipeBackPrevented","swipeBackExcluded","shouldDisableTransitionMotion","configProvider","isWebView","startX","SWIPE_BACK_AREA","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","onSwipeBackStart","payload","activePanel","blurActiveElement","prevScrolls","scrolls","scroll","getScroll","y","swipeBackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","speed","duration","visiblePanels","nextPanel","document","React","Children","toArray","children","id","animationFinishTimeout","clearTimeout","prevProps","prevState","popout","modal","isBackCheck","from","to","firstLayerId","panels","map","panel","find","animationEvent","supported","setTimeout","transitionEndHandler","ANDROID","VKCOM","scrollPosition","prevPanelScrolls","newPanelScrolls","pop","scrollTo","onTransition","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","name","removeEventListener","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","className","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","classNames","onMoveX","onEnd","compensateScroll","isTransitionTarget","scrollList","el","calcPanelSwipeStyles","marginTop","Component","ViewInfinite","withContext","withPlatform","withDOM","SplitColContext","ConfigProviderContext","ScrollContext"],"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 { AppRootPortal } from '../AppRoot/AppRootPortal';\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';\nimport iosStyles from './ViewIOS.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 popout?: React.ReactNode;\n modal?: React.ReactNode;\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 this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\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 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n '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 popout,\n modal,\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 hasPopout = !!popout;\n const hasModal = !!modal;\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 && iosStyles['View--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 && iosStyles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && iosStyles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && iosStyles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n iosStyles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n iosStyles['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 <AppRootPortal>\n {hasPopout && <div className={styles['View__popout']}>{popout}</div>}\n {hasModal && <div className={styles['View__modal']}>{modal}</div>}\n </AppRootPortal>\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"],"mappings":"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"}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
1
|
import { PlatformType } from '../lib/platform';
|
|
2
|
+
/**
|
|
3
|
+
* Подставляйте соответствующий селектор самостоятельно.
|
|
4
|
+
*
|
|
5
|
+
* @deprecated
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
2
8
|
export declare function getPlatformClassName(base: string, osname?: PlatformType): string;
|
|
9
|
+
/**
|
|
10
|
+
* Подставляйте соответствующий селектор самостоятельно.
|
|
11
|
+
*
|
|
12
|
+
* @deprecated
|
|
13
|
+
*/
|
|
3
14
|
export declare function getPlatformClassName<Styles extends Record<string, string>>(base: keyof Styles, osname?: PlatformType, styles?: Styles): string | undefined;
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getPlatformClassName = getPlatformClassName;
|
|
7
7
|
var _platform = require("../lib/platform");
|
|
8
|
+
// TODO v6 удалить этот хеллпер
|
|
9
|
+
|
|
8
10
|
function getPlatformClassName(base) {
|
|
9
11
|
var osname = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _platform.platform)();
|
|
10
12
|
var
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPlatformClassName.js","names":["getPlatformClassName","base","osname","platform","styles","platformClassName","String"],"sources":["../../../src/helpers/getPlatformClassName.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"getPlatformClassName.js","names":["getPlatformClassName","base","osname","platform","styles","platformClassName","String"],"sources":["../../../src/helpers/getPlatformClassName.ts"],"sourcesContent":["// TODO v6 удалить этот хеллпер\nimport { platform, PlatformType } from '../lib/platform';\n\n/**\n * Подставляйте соответствующий селектор самостоятельно.\n *\n * @deprecated\n *\n */\nexport function getPlatformClassName(base: string, osname?: PlatformType): string;\n/**\n * Подставляйте соответствующий селектор самостоятельно.\n *\n * @deprecated\n */\nexport function getPlatformClassName<Styles extends Record<string, string>>(\n base: keyof Styles,\n osname?: PlatformType,\n styles?: Styles,\n): string | undefined;\nexport function getPlatformClassName<Styles extends Record<string, string>>(\n base: keyof Styles,\n osname: PlatformType = platform(),\n /**\n * Note: ввиду того, что Typescript не поддерживает `typescript-plugin-css-modules` во время компиляции,\n * не удалось покрыть дженерик типом параметр `styles`. Поэтому может вернуться undefined.\n */\n styles?: Styles,\n): string | undefined {\n const platformClassName = `${String(base)}--${osname}`;\n return styles ? styles[platformClassName] : platformClassName;\n}\n"],"mappings":";;;;;;AACA;AADA;;AAoBO,SAASA,oBAAoB,CAClCC,IAAkB,EAOE;EAAA,IANpBC,MAAoB,uEAAG,IAAAC,kBAAQ,GAAE;EAAA;EACjC;AACF;AACA;AACA;EACEC,MAAe;EAEf,IAAMC,iBAAiB,aAAMC,MAAM,CAACL,IAAI,CAAC,eAAKC,MAAM,CAAE;EACtD,OAAOE,MAAM,GAAGA,MAAM,CAACC,iBAAiB,CAAC,GAAGA,iBAAiB;AAC/D"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
1
|
import * as React from 'react';
|
|
3
2
|
import { hasMouse as _hasPointer } from '@vkontakte/vkjs';
|
|
4
3
|
import { useBridgeAdaptivity } from '../../hooks/useBridgeAdaptivity';
|
|
@@ -16,26 +15,15 @@ export var AdaptivityProvider = function AdaptivityProvider(_ref) {
|
|
|
16
15
|
hasHover = _ref.hasHover,
|
|
17
16
|
children = _ref.children;
|
|
18
17
|
var bridge = useBridgeAdaptivity();
|
|
19
|
-
var
|
|
18
|
+
var adaptivity = React.useMemo(function () {
|
|
19
|
+
return calculateAdaptivity({
|
|
20
20
|
viewWidth: viewWidth,
|
|
21
21
|
viewHeight: viewHeight,
|
|
22
22
|
sizeX: sizeX,
|
|
23
23
|
sizeY: sizeY,
|
|
24
24
|
hasPointer: hasPointer,
|
|
25
25
|
hasHover: hasHover
|
|
26
|
-
})
|
|
27
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
28
|
-
adaptivity = _React$useState2[0],
|
|
29
|
-
setAdaptivity = _React$useState2[1];
|
|
30
|
-
React.useEffect(function () {
|
|
31
|
-
setAdaptivity(calculateAdaptivity({
|
|
32
|
-
viewWidth: viewWidth,
|
|
33
|
-
viewHeight: viewHeight,
|
|
34
|
-
sizeX: sizeX,
|
|
35
|
-
sizeY: sizeY,
|
|
36
|
-
hasPointer: hasPointer,
|
|
37
|
-
hasHover: hasHover
|
|
38
|
-
}, bridge));
|
|
26
|
+
}, bridge);
|
|
39
27
|
}, [viewWidth, viewHeight, sizeX, sizeY, hasPointer, hasHover, bridge]);
|
|
40
28
|
return /*#__PURE__*/React.createElement(AdaptivityContext.Provider, {
|
|
41
29
|
value: adaptivity
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptivityProvider.js","names":["React","hasMouse","_hasPointer","useBridgeAdaptivity","BREAKPOINTS","SizeType","ViewHeight","ViewWidth","AdaptivityContext","AdaptivityProvider","viewWidth","viewHeight","sizeX","sizeY","hasPointer","hasHover","children","bridge","
|
|
1
|
+
{"version":3,"file":"AdaptivityProvider.js","names":["React","hasMouse","_hasPointer","useBridgeAdaptivity","BREAKPOINTS","SizeType","ViewHeight","ViewWidth","AdaptivityContext","AdaptivityProvider","viewWidth","viewHeight","sizeX","sizeY","hasPointer","hasHover","children","bridge","adaptivity","useMemo","calculateAdaptivity","type","viewportWidth","viewportHeight","DESKTOP","TABLET","SMALL_TABLET","MOBILE","SMALL_MOBILE","MEDIUM_HEIGHT","MEDIUM","MOBILE_LANDSCAPE_HEIGHT","SMALL","EXTRA_SMALL","COMPACT","REGULAR","undefined"],"sources":["../../../src/components/AdaptivityProvider/AdaptivityProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { hasMouse as _hasPointer } from '@vkontakte/vkjs';\nimport { BridgeAdaptivity, useBridgeAdaptivity } from '../../hooks/useBridgeAdaptivity';\nimport { BREAKPOINTS, SizeType, ViewHeight, ViewWidth } from '../../lib/adaptivity';\nimport { AdaptivityContext, type AdaptivityProps } from './AdaptivityContext';\n\nexport interface AdaptivityProviderProps extends AdaptivityProps {\n children?: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AdaptivityProvider\n */\nexport const AdaptivityProvider = ({\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n children,\n}: React.PropsWithChildren<AdaptivityProps>) => {\n const bridge = useBridgeAdaptivity();\n const adaptivity = React.useMemo(\n () =>\n calculateAdaptivity(\n {\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n },\n bridge,\n ),\n [viewWidth, viewHeight, sizeX, sizeY, hasPointer, hasHover, bridge],\n );\n\n return <AdaptivityContext.Provider value={adaptivity}>{children}</AdaptivityContext.Provider>;\n};\n\nfunction calculateAdaptivity(\n { viewWidth, viewHeight, sizeX, sizeY, hasPointer, hasHover }: AdaptivityProps,\n bridge: BridgeAdaptivity,\n) {\n if (bridge.type === 'adaptive') {\n const { viewportWidth, viewportHeight } = bridge;\n\n if (viewportWidth >= BREAKPOINTS.DESKTOP) {\n viewWidth = ViewWidth.DESKTOP;\n } else if (viewportWidth >= BREAKPOINTS.TABLET) {\n viewWidth = ViewWidth.TABLET;\n } else if (viewportWidth >= BREAKPOINTS.SMALL_TABLET) {\n viewWidth = ViewWidth.SMALL_TABLET;\n } else if (viewportWidth >= BREAKPOINTS.MOBILE) {\n viewWidth = ViewWidth.MOBILE;\n } else {\n viewWidth = ViewWidth.SMALL_MOBILE;\n }\n\n if (viewportHeight >= BREAKPOINTS.MEDIUM_HEIGHT) {\n viewHeight = ViewHeight.MEDIUM;\n } else if (viewportHeight >= BREAKPOINTS.MOBILE_LANDSCAPE_HEIGHT) {\n viewHeight = ViewHeight.SMALL;\n } else {\n viewHeight = ViewHeight.EXTRA_SMALL;\n }\n\n if (viewWidth <= ViewWidth.MOBILE) {\n sizeX = SizeType.COMPACT;\n } else {\n sizeX = SizeType.REGULAR;\n }\n\n if (\n (viewWidth >= ViewWidth.SMALL_TABLET && _hasPointer) ||\n viewHeight <= ViewHeight.EXTRA_SMALL\n ) {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n } else if (bridge.type === 'force_mobile' || bridge.type === 'force_mobile_compact') {\n viewWidth = ViewWidth.MOBILE;\n sizeX = SizeType.COMPACT;\n\n if (bridge.type === 'force_mobile_compact') {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n } else {\n if (sizeX === undefined && viewWidth !== undefined) {\n if (viewWidth <= ViewWidth.MOBILE) {\n sizeX = SizeType.COMPACT;\n } else {\n sizeX = SizeType.REGULAR;\n }\n }\n if (sizeY === undefined && viewWidth !== undefined && viewHeight !== undefined) {\n if (\n (viewWidth >= ViewWidth.SMALL_TABLET && _hasPointer) ||\n viewHeight <= ViewHeight.EXTRA_SMALL\n ) {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n }\n }\n\n return {\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n };\n}\n"],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ var _excluded = ["className", "style"];
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { Icon24CheckBoxOff, Icon24CheckBoxOn, Icon24CheckCircleOff, Icon24CheckCircleOn } from '@vkontakte/icons';
|
|
6
6
|
import { classNames } from '@vkontakte/vkjs';
|
|
7
|
-
import { getPlatformClassName } from '../../../helpers/getPlatformClassName';
|
|
8
7
|
import { usePlatform } from '../../../hooks/usePlatform';
|
|
9
8
|
import { Platform } from '../../../lib/platform';
|
|
10
9
|
import { VisuallyHiddenInput } from '../../VisuallyHiddenInput/VisuallyHiddenInput';
|
|
@@ -16,7 +15,7 @@ export var CellCheckbox = function CellCheckbox(_ref) {
|
|
|
16
15
|
var IconOff = platform === Platform.IOS || platform === Platform.VKCOM ? Icon24CheckCircleOff : Icon24CheckBoxOff;
|
|
17
16
|
var IconOn = platform === Platform.IOS || platform === Platform.VKCOM ? Icon24CheckCircleOn : Icon24CheckBoxOn;
|
|
18
17
|
return /*#__PURE__*/React.createElement("span", {
|
|
19
|
-
className: classNames("vkuiCellCheckbox",
|
|
18
|
+
className: classNames("vkuiCellCheckbox", className),
|
|
20
19
|
style: style
|
|
21
20
|
}, /*#__PURE__*/React.createElement(VisuallyHiddenInput, _extends({
|
|
22
21
|
className: "vkuiCellCheckbox__input",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellCheckbox.js","names":["React","Icon24CheckBoxOff","Icon24CheckBoxOn","Icon24CheckCircleOff","Icon24CheckCircleOn","classNames","
|
|
1
|
+
{"version":3,"file":"CellCheckbox.js","names":["React","Icon24CheckBoxOff","Icon24CheckBoxOn","Icon24CheckCircleOff","Icon24CheckCircleOn","classNames","usePlatform","Platform","VisuallyHiddenInput","CellCheckbox","className","style","restProps","platform","IconOff","IOS","VKCOM","IconOn"],"sources":["../../../../src/components/Cell/CellCheckbox/CellCheckbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n Icon24CheckBoxOff,\n Icon24CheckBoxOn,\n Icon24CheckCircleOff,\n Icon24CheckCircleOn,\n} from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport { Platform } from '../../../lib/platform';\nimport { VisuallyHiddenInput } from '../../VisuallyHiddenInput/VisuallyHiddenInput';\nimport { CellProps } from '../Cell';\nimport styles from './CellCheckbox.module.css';\n\nexport type CellCheckboxProps = Pick<CellProps, 'defaultChecked' | 'checked'> &\n React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const CellCheckbox = ({ className, style, ...restProps }: CellCheckboxProps) => {\n const platform = usePlatform();\n\n const IconOff =\n platform === Platform.IOS || platform === Platform.VKCOM\n ? Icon24CheckCircleOff\n : Icon24CheckBoxOff;\n\n const IconOn =\n platform === Platform.IOS || platform === Platform.VKCOM\n ? Icon24CheckCircleOn\n : Icon24CheckBoxOn;\n\n return (\n <span className={classNames(styles['CellCheckbox'], className)} style={style}>\n <VisuallyHiddenInput\n className={styles['CellCheckbox__input']}\n type=\"checkbox\"\n {...restProps}\n />\n <span\n className={classNames(styles['CellCheckbox__icon'], styles['CellCheckbox__icon--off'])}\n aria-hidden\n >\n <IconOff />\n </span>\n <span\n className={classNames(styles['CellCheckbox__icon'], styles['CellCheckbox__icon--on'])}\n aria-hidden\n >\n <IconOn />\n </span>\n </span>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SACEC,iBAAiB,EACjBC,gBAAgB,EAChBC,oBAAoB,EACpBC,mBAAmB,QACd,kBAAkB;AACzB,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,WAAW,QAAQ,4BAA4B;AACxD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,mBAAmB,QAAQ,+CAA+C;AAOnF,OAAO,IAAMC,YAAY,GAAG,SAAfA,YAAY,OAA8D;EAAA,IAAxDC,SAAS,QAATA,SAAS;IAAEC,KAAK,QAALA,KAAK;IAAKC,SAAS;EAC3D,IAAMC,QAAQ,GAAGP,WAAW,EAAE;EAE9B,IAAMQ,OAAO,GACXD,QAAQ,KAAKN,QAAQ,CAACQ,GAAG,IAAIF,QAAQ,KAAKN,QAAQ,CAACS,KAAK,GACpDb,oBAAoB,GACpBF,iBAAiB;EAEvB,IAAMgB,MAAM,GACVJ,QAAQ,KAAKN,QAAQ,CAACQ,GAAG,IAAIF,QAAQ,KAAKN,QAAQ,CAACS,KAAK,GACpDZ,mBAAmB,GACnBF,gBAAgB;EAEtB,oBACE;IAAM,SAAS,EAAEG,UAAU,qBAAyBK,SAAS,CAAE;IAAC,KAAK,EAAEC;EAAM,gBAC3E,oBAAC,mBAAmB;IAClB,SAAS,2BAAgC;IACzC,IAAI,EAAC;EAAU,GACXC,SAAS,EACb,eACF;IACE,SAAS,EAAEP,UAAU,yDAAkE;IACvF;EAAW,gBAEX,oBAAC,OAAO,OAAG,CACN,eACP;IACE,SAAS,EAAEA,UAAU,wDAAiE;IACtF;EAAW,gBAEX,oBAAC,MAAM,OAAG,CACL,CACF;AAEX,CAAC"}
|
|
@@ -4,7 +4,6 @@ var _excluded = ["onDragStart", "onDragMove", "onDragEnd", "className"];
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { Icon24Reorder, Icon24ReorderIos } from '@vkontakte/icons';
|
|
6
6
|
import { classNames } from '@vkontakte/vkjs';
|
|
7
|
-
import { getPlatformClassName } from '../../../helpers/getPlatformClassName';
|
|
8
7
|
import { usePlatform } from '../../../hooks/usePlatform';
|
|
9
8
|
import { Platform } from '../../../lib/platform';
|
|
10
9
|
import { Touch } from '../../Touch/Touch';
|
|
@@ -19,7 +18,7 @@ export var CellDragger = function CellDragger(_ref) {
|
|
|
19
18
|
e.preventDefault();
|
|
20
19
|
}, []);
|
|
21
20
|
return /*#__PURE__*/React.createElement(Touch, _extends({
|
|
22
|
-
className: classNames("vkuiCellDragger",
|
|
21
|
+
className: classNames("vkuiCellDragger", className),
|
|
23
22
|
onStart: onDragStart,
|
|
24
23
|
onMoveY: onDragMove,
|
|
25
24
|
onEnd: onDragEnd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellDragger.js","names":["React","Icon24Reorder","Icon24ReorderIos","classNames","
|
|
1
|
+
{"version":3,"file":"CellDragger.js","names":["React","Icon24Reorder","Icon24ReorderIos","classNames","usePlatform","Platform","Touch","CellDragger","onDragStart","onDragMove","onDragEnd","className","restProps","platform","onClick","useCallback","e","preventDefault","IOS"],"sources":["../../../../src/components/Cell/CellDragger/CellDragger.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon24Reorder, Icon24ReorderIos } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport { Platform } from '../../../lib/platform';\nimport { Touch } from '../../Touch/Touch';\nimport { DraggableProps } from '../useDraggable';\nimport styles from './CellDragger.module.css';\n\ntype CellDraggerProps = DraggableProps & React.HTMLAttributes<HTMLElement>;\n\nexport const CellDragger = ({\n onDragStart,\n onDragMove,\n onDragEnd,\n className,\n ...restProps\n}: CellDraggerProps) => {\n const platform = usePlatform();\n\n const onClick = React.useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n }, []);\n\n return (\n <Touch\n className={classNames(styles['CellDragger'], className)}\n onStart={onDragStart}\n onMoveY={onDragMove}\n onEnd={onDragEnd}\n onClick={onClick}\n {...restProps}\n >\n {platform === Platform.IOS ? <Icon24ReorderIos /> : <Icon24Reorder />}\n </Touch>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,aAAa,EAAEC,gBAAgB,QAAQ,kBAAkB;AAClE,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,WAAW,QAAQ,4BAA4B;AACxD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,KAAK,QAAQ,mBAAmB;AAMzC,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAW,OAMA;EAAA,IALtBC,WAAW,QAAXA,WAAW;IACXC,UAAU,QAAVA,UAAU;IACVC,SAAS,QAATA,SAAS;IACTC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,QAAQ,GAAGT,WAAW,EAAE;EAE9B,IAAMU,OAAO,GAAGd,KAAK,CAACe,WAAW,CAAC,UAACC,CAAmB,EAAK;IACzDA,CAAC,CAACC,cAAc,EAAE;EACpB,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE,oBAAC,KAAK;IACJ,SAAS,EAAEd,UAAU,oBAAwBQ,SAAS,CAAE;IACxD,OAAO,EAAEH,WAAY;IACrB,OAAO,EAAEC,UAAW;IACpB,KAAK,EAAEC,SAAU;IACjB,OAAO,EAAEI;EAAQ,GACbF,SAAS,GAEZC,QAAQ,KAAKR,QAAQ,CAACa,GAAG,gBAAG,oBAAC,gBAAgB,OAAG,gBAAG,oBAAC,aAAa,OAAG,CAC/D;AAEZ,CAAC"}
|
|
@@ -3,8 +3,6 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
|
|
|
3
3
|
var _excluded = ["children", "align", "size", "mode", "stretched", "before", "after", "loading", "className", "style", "getRef", "getRootRef", "appearance"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { classNames } from '@vkontakte/vkjs';
|
|
6
|
-
import { getPlatformClassName } from '../../helpers/getPlatformClassName';
|
|
7
|
-
import { usePlatform } from '../../hooks/usePlatform';
|
|
8
6
|
import { Button } from '../Button/Button';
|
|
9
7
|
import { VisuallyHiddenInput } from '../VisuallyHiddenInput/VisuallyHiddenInput';
|
|
10
8
|
/**
|
|
@@ -27,11 +25,10 @@ export var File = function File(_ref) {
|
|
|
27
25
|
getRootRef = _ref.getRootRef,
|
|
28
26
|
appearance = _ref.appearance,
|
|
29
27
|
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
30
|
-
var platform = usePlatform();
|
|
31
28
|
return /*#__PURE__*/React.createElement(Button, {
|
|
32
29
|
Component: "label",
|
|
33
30
|
align: align,
|
|
34
|
-
className: classNames("vkuiFile",
|
|
31
|
+
className: classNames("vkuiFile", className),
|
|
35
32
|
stretched: stretched,
|
|
36
33
|
mode: mode,
|
|
37
34
|
appearance: appearance,
|