import React from 'react'; import { Dimensions } from 'react-native'; import hoistNonReactStatics from 'hoist-non-react-statics'; export interface IDimensionsContextProps { width: number; height?: number; scale: number; fontScale: number; setDimensions: ({ width, height, scale, fontScale }: { width: number; height: number; scale: number; fontScale: number; }) => void; } export const DimensionsContext = React.createContext>(Dimensions.get('window')); export function withDimensions(Component: any): any { const DimensionsComponent = (props: any) => ( {contexts => } ); hoistNonReactStatics(DimensionsComponent, Component); return DimensionsComponent; } export const useDimensions = () => React.useContext(DimensionsContext); export const useOrientation = () => { const { width, height } = React.useContext(DimensionsContext); const isPortrait = height! > width!; return { isPortrait, isLandscape: !isPortrait }; };