/* eslint-disable */ import * as CSS from '../lib/css'; import cls from '../lib/class-names'; import updateGeometry from '../update-geometry'; import { env } from '../lib/util'; export default function (i) { const element = i.element; let shouldPrevent = false; function shouldPreventDefault(deltaX, deltaY) { const roundedScrollTop = Math.floor(element.scrollTop); const isTop = element.scrollTop === 0; const isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight; const isLeft = element.scrollLeft === 0; const isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth; let hitsBound; // pick axis with primary direction if (Math.abs(deltaY) > Math.abs(deltaX)) { hitsBound = isTop || isBottom; } else { hitsBound = isLeft || isRight; } return hitsBound ? !i.settings.wheelPropagation : true; } function getDeltaFromEvent(e) { let deltaX = e.deltaX; let deltaY = -1 * e.deltaY; if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') { // OS X Safari deltaX = (-1 * e.wheelDeltaX) / 6; deltaY = e.wheelDeltaY / 6; } if (e.deltaMode && e.deltaMode === 1) { // Firefox in deltaMode 1: Line scrolling deltaX *= 10; deltaY *= 10; } if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) { // IE in some mouse drivers deltaX = 0; deltaY = e.wheelDelta; } if (e.shiftKey) { // reverse axis with shift key return [-deltaY, -deltaX]; } return [deltaX, deltaY]; } function shouldBeConsumedByChild(target, deltaX, deltaY) { // FIXME: this is a workaround for