UNPKG

react-native-material-elements

Version:

React native material elements is a sophisticated UI library crafted to enhance your React Native development workflow. Designed for simplicity and elegance, nex-ui provides a rich collection of components and utilities to effortlessly create polished mob

54 lines (47 loc) 2.01 kB
/** * This file contains utility functions for generating inline CSS styles based on provided properties. * It includes functions for handling spacing, display properties, width, height, and positioning. * These functions are designed to be used in generating dynamic styles within React components or similar environments. */ import { ElementFlexStyleProps, ElementTextStyleProps, KeyOfStylePalette, StyledProps, StyleEntry, StylePalette, } from '../libraries/style/styleTypes'; import { styles } from '../libraries'; export const getStyleFromProps = (props: StyledProps) => Object.fromEntries(Object.entries(props).filter(([, value]) => value !== undefined)); export const generateStyle = <T extends KeyOfStylePalette>({ propertyName, value }: StyleEntry<T>) => propertyName && value !== undefined ? { [propertyName]: value } : {}; export const generateSortStyles = (args: StylePalette, elementPropertyName: keyof typeof styles) => { const propertyName = styles[elementPropertyName]; if (!propertyName) { console.warn(`Style property name ${elementPropertyName} is not defined`); return; } return generateStyle({ propertyName, value: args[elementPropertyName] }); }; /** * Generate CSS styles for an element based on the provided arguments. * @param args ElementStylesArgs containing spacing and margin properties. * @returns A string representing CSS styles for the element. */ export const generateElementStyles = (args: StylePalette) => { let nativeStyles: StylePalette & ElementTextStyleProps & ElementFlexStyleProps = {}; const keys = Object.keys(args); for (let property of keys) { const elementPropertyName = property as keyof typeof styles; if (args[elementPropertyName] === undefined) { console.warn(`Invalid element property name: ${String(args[elementPropertyName])}`); continue; } nativeStyles = { ...nativeStyles, ...generateSortStyles(args, elementPropertyName), }; } return nativeStyles; };