@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
43 lines (32 loc) • 1.3 kB
text/typescript
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));
};