UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

37 lines (25 loc) 1.19 kB
import { capitalize } from "@applicaster/zapp-react-native-utils/stringUtils"; import { invariant } from "@applicaster/zapp-react-native-utils/errorUtils"; import { isNilOrEmpty } from "@applicaster/zapp-react-native-utils/reactUtils/helpers"; export const getFocusableId = (ref) => ref?.current?.props.id; type Direction = "up" | "down" | "left" | "right"; const normalizeDirection = (direction) => direction.toLowerCase(); const checkDirection = (direction: Direction) => { invariant(!isNilOrEmpty(direction), "direction should not be empty"); invariant( ["up", "down", "left", "right"].includes(normalizeDirection(direction)), `direction contains wrong value: ${direction}` ); }; export const toFocusDirection = (direction: Direction) => { checkDirection(direction); return `nextFocus${capitalize(normalizeDirection(direction))}`; }; export const isHorizontalDirection = (direction: Direction) => { checkDirection(direction); return ["left", "right"].includes(normalizeDirection(direction)); }; export const isVerticalDirection = (direction: Direction) => { checkDirection(direction); return ["up", "down"].includes(normalizeDirection(direction)); };