import React from 'react'; import { Dimensions } from 'react-native'; import hoistNonReactStatics from 'hoist-non-react-statics'; import { TNavigationOptions } from './definitions/navigationTypes'; 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: React.ComponentType & TNavigationOptions): typeof Component { const DimensionsComponent = (props: T) => ( {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 }; };