UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

53 lines (43 loc) 872 B
const DIRECTIONS = { UP: "up", DOWN: "down", RIGHT: "right", LEFT: "left", }; const directionsMap = { ArrowLeft: DIRECTIONS.LEFT, ArrowRight: DIRECTIONS.RIGHT, ArrowUp: DIRECTIONS.UP, ArrowDown: DIRECTIONS.DOWN, }; const keyCodesMap = { 37: DIRECTIONS.LEFT, 38: DIRECTIONS.UP, 39: DIRECTIONS.RIGHT, 40: DIRECTIONS.DOWN, }; export const FocusDirection = { LEFT: 1, UP: 2, RIGHT: 4, DOWN: 8, }; function getKeyValue(key) { if (key.code) { return directionsMap[key.code]; } return keyCodesMap[Number(key.keyCode)]; } export function directionHelper(key) { const value = getKeyValue(key); const axis = value === DIRECTIONS.LEFT || value === DIRECTIONS.RIGHT ? "x" : "y"; const isHorizontal = axis === "x"; const isVertical = !isHorizontal; return { value, isHorizontal, isVertical, axis, }; }