UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

43 lines (32 loc) 1.3 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; const normalizeDirection = (direction) => direction.toLowerCase(); const checkDirection = ( direction: FocusManager.Android.FocusNavigationDirections ) => { 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: FocusManager.Android.FocusNavigationDirections ) => { checkDirection(direction); return `nextFocus${capitalize(normalizeDirection(direction))}`; }; export const isHorizontalDirection = ( direction: FocusManager.Android.FocusNavigationDirections ) => { checkDirection(direction); return ["left", "right"].includes(normalizeDirection(direction)); }; export const isVerticalDirection = ( direction: FocusManager.Android.FocusNavigationDirections ) => { checkDirection(direction); return ["up", "down"].includes(normalizeDirection(direction)); };