@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
53 lines (43 loc) • 872 B
JavaScript
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,
};
}