@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
37 lines (25 loc) • 1.19 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;
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));
};