UNPKG

@adoratorio/hermes

Version:

A JS utility for scroll events normalization and management

69 lines 2.19 kB
import { DELTA_SCALE, DELTA_MODE, KEYCODE, } from './declarations'; const getDeltaMode = (mode) => DELTA_MODE[mode] || DELTA_MODE[0] || 1.0; export function normalizeWheelDelta(event) { if ('deltaX' in event) { const mode = getDeltaMode(event.deltaMode); return { x: event.deltaX / DELTA_SCALE.STANDARD * mode, y: event.deltaY / DELTA_SCALE.STANDARD * mode, }; } if ('wheelDeltaX' in event) { return { x: event.wheelDeltaX / DELTA_SCALE.OTHERS, y: event.wheelDeltaY / DELTA_SCALE.OTHERS, }; } return { x: 0, y: event.wheelDelta / DELTA_SCALE.OTHERS, }; } export function normalizeKeyDelta(keycode, multiplier = 1) { let delta = { x: 0, y: 0 }; const m = (typeof multiplier === 'number' ? multiplier : multiplier[keycode]) || 1; switch (true) { case keycode === KEYCODE.SPACE: delta = { x: 0, y: window.innerHeight * m }; break; case keycode === KEYCODE.DOWN: delta = { x: 0, y: 80 * m }; break; case keycode === KEYCODE.UP: delta = { x: 0, y: -80 * m }; break; case keycode === KEYCODE.RIGHT: delta = { x: 80 * m, y: 0 }; break; case keycode === KEYCODE.LEFT: delta = { x: -80 * m, y: 0 }; break; case keycode === KEYCODE.PAGEDOWN: delta = { x: 0, y: window.innerHeight * m }; break; case keycode === KEYCODE.PAGEUP: delta = { x: 0, y: -window.innerHeight * m }; break; case keycode === KEYCODE.PAGESTART: delta = { x: 0, y: -9999999 }; break; case keycode === KEYCODE.PAGEEND: delta = { x: 0, y: 9999999 }; break; default: delta = { x: 0, y: 0 }; } return delta; } ; export function getTouch(list, id) { let found = undefined; for (let i = 0; i < list.length; i++) { if (list[i]?.identifier === id) { found = list[i]; break; } } return found; } //# sourceMappingURL=utils.js.map