reflexy
Version:
Flexbox layout react components
47 lines (46 loc) • 1.8 kB
JavaScript
import '@js-toolkit/utils/types';
import { hasIn } from '@js-toolkit/utils/hasIn';
export const REFLEXY_KEY = Symbol.for('@reflexy');
export function copyInternalProps(source, target) {
target[REFLEXY_KEY] = source[REFLEXY_KEY];
return target;
}
export function defaultClassNameTransformer(calcClassName, userClassName) {
if (calcClassName && userClassName)
return `${calcClassName} ${userClassName}`;
return userClassName || calcClassName;
}
export function defaultStyleTransformer(calcStyle, userStyle) {
if (userStyle && calcStyle)
return { ...calcStyle, ...userStyle };
return userStyle || calcStyle;
}
export function getCssValue(space, unit) {
const value = typeof unit === 'number' ? space * unit : space;
const cssUnit = typeof unit === 'number' ? 'px' : unit;
return `${value}${cssUnit}`;
}
export function getAbsSpaceSize(size) {
if (size[0] === '-')
return size.substring(1);
return size;
}
export function getSpaceSizeMultiplier(size, sizeMultipliers) {
return typeof size === 'number' ? size : sizeMultipliers[getAbsSpaceSize(size)];
}
export function getSpace(space, defaultSpace) {
if (space === true)
return defaultSpace;
return space === false ? 0 : space;
}
export function spaceToCssValue(size, sizeMultipliersOrDefaults, unit0) {
const [sizeMultipliers, unit] = hasIn(sizeMultipliersOrDefaults, 'defaultUnit')
? [sizeMultipliersOrDefaults.defaultSizes, sizeMultipliersOrDefaults.defaultUnit]
: [sizeMultipliersOrDefaults, unit0];
if (typeof size === 'string') {
if (size[0] === '-')
return `-${getCssValue(sizeMultipliers[size.substring(1)], unit)}`;
return getCssValue(sizeMultipliers[size], unit);
}
return getCssValue(size, unit);
}