src/features/Layout/index.ts
import { useCallback, useState } from 'react';
import { type LayoutChangeEvent } from 'react-native';
import { useSafeAreaInsets, type Edge } from 'react-native-safe-area-context';
export type LayoutDimensions = {
height: number;
width: number;
x: number;
y: number;
};
const tabBarEdges: Edge[] = ['top', 'left', 'right'];
export const useLayout = () => {
const [layout, setLayout] = useState<LayoutDimensions | null>(null);
const insets = useSafeAreaInsets();
const onLayout = useCallback((event: LayoutChangeEvent) => {
const { height, width, x, y } = event.nativeEvent.layout;
setLayout({ height, width, x, y });
}, []);
return { insets, layout, onLayout, tabBarEdges };
};