UNPKG

@furman1331/page-scroller

Version:

Amazing plugin for creating smooth scroll on your website

47 lines (34 loc) 1.4 kB
import { useLogger } from '@/logger' import { state } from '@/state/state' import { changeSectionOrSlideByDirection } from '@/common' import type { ICoordinates } from '@/types/event' const logger = useLogger() export function registerTouchEvents(): void { document.addEventListener('touchstart', onTouchStartHandler) state.container.addEventListener('touchmove', onTouchMoveHandler, { passive: false }) } export function destroyTouchEvents(): void { document.removeEventListener('touchstart', onTouchStartHandler) state.container.removeEventListener('touchmove', onTouchMoveHandler) } export let touchStartCoordinates: ICoordinates = {} export function onTouchStartHandler(event: TouchEvent): void { const coordinates = getEventCoordinated(event) touchStartCoordinates = { x: coordinates.x, y: coordinates.y, } } export function onTouchMoveHandler(event: TouchEvent): void { logger.info('Touch move event detected') const coordinates = getEventCoordinated(event) const isVerticalMovementEnought = Math.abs(coordinates.y - touchStartCoordinates.y) > (window.innerHeight / 100) * 5 const direction = touchStartCoordinates.y > coordinates.y ? 'down' : 'up' if (isVerticalMovementEnought) changeSectionOrSlideByDirection(direction) } export function getEventCoordinated(event: TouchEvent): ICoordinates { return { x: event.touches[0].pageX, y: event.touches[0].pageY, } }