import React, { forwardRef, useState, useMemo } from 'react'; import { GridContext } from './Context'; export const Grid = (StyledParent: any, StyledGrid: any) => forwardRef( ( { children, numColumns = 12, spacing = 0, rowSpacing, columnSpacing, flexDirection = 'row', ...props }: any, ref?: any ) => { const [calculatedWidth, setCalculatedWidth] = useState( null ); const contextValue = useMemo(() => { return { numColumns, calculatedWidth, flexDirection, columnSpacing, spacing, rowSpacing, }; }, [ numColumns, calculatedWidth, flexDirection, columnSpacing, spacing, rowSpacing, ]); return ( { const width = event.nativeEvent.layout.width + (columnSpacing ?? spacing ?? 0); setCalculatedWidth(width); }} > {calculatedWidth && ( {children} )} ); } );