in packages/react/src/primitives/shared/styleUtils.ts [34:96]
rowFromSpanValue: convertGridSpan(rowSpan) as GridItemStyleProps['row'],
columnFromSpanValue: convertGridSpan(
columnSpan
) as GridItemStyleProps['column'],
};
}, [rowSpan, columnSpan]);
return {
row: !isNullOrEmptyString(row) ? row : rowFromSpanValue,
column: !isNullOrEmptyString(column) ? column : columnFromSpanValue,
...rest,
};
};
export const usePropStyles = (props: ViewProps, style: React.CSSProperties) => {
const {
breakpoints: { values: breakpoints, defaultBreakpoint },
} = useTheme();
const breakpoint = useBreakpoint({
breakpoints,
defaultBreakpoint: defaultBreakpoint as Breakpoint,
});
const propStyles = useTransformStyleProps(props);
return React.useMemo(
() =>
convertStylePropsToStyleObj({
props: propStyles,
style,
breakpoint,
breakpoints,
}),
[propStyles, style, breakpoints, breakpoint]
);
};
export const isSpanPrimitiveValue = (
spanValue: GridItemStyleProps['rowSpan'] | GridItemStyleProps['columnSpan']
): spanValue is GridSpanType => {
return (
spanValue === 'auto' ||
(typeof spanValue === 'number' && !isNaN(spanValue)) ||
(typeof spanValue === 'string' && !isNaN(parseFloat(spanValue)))
);
};
export const convertGridSpan = (
spanValue: GridItemStyleProps['rowSpan'] | GridItemStyleProps['columnSpan']
): GridItemStyleProps['row'] | GridItemStyleProps['column'] => {
// PropertyType
if (isSpanPrimitiveValue(spanValue)) {
return getGridSpan(spanValue);
}
// PropertyType[]
if (Array.isArray(spanValue)) {
return spanValue.map((value) => getGridSpan(value));
}
// ResponsiveObject<PropertyType>
if (typeof spanValue === 'object' && spanValue != null) {
const newObj: ResponsiveObject<string> = {};
Object.entries(spanValue).forEach(([key, value]) => {