import * as React from "react"; import { View, StyleSheet } from "react-native"; import { DimensionsContext } from "./DimensionsContext"; type Props = { children: React.ReactNode; }; const styles = StyleSheet.create({ container: { flex: 1, }, }); const DimensionsProviderComponent: React.FunctionComponent = ({ children, }: Props) => { const [dimensions, setDimension] = React.useState({ width: null, height: null, }); const [dimensionsReady, setDimensionsReady] = React.useState(false); const onLayout = React.useCallback( ({ nativeEvent: { layout: { width, height }, }, }) => { if (!dimensionsReady) { setDimensionsReady(true); } if (dimensions.width !== width || dimensions.height !== height) { setDimension({ width, height }); } }, [dimensionsReady, dimensions.width, dimensions.height] ); const display = React.useMemo( () => (dimensionsReady ? "flex" : "none"), [dimensionsReady] ); return ( {children} ); }; export const DimensionsProvider = React.memo( DimensionsProviderComponent );