You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.2 KiB

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = createUtilityClassName;
exports.responsivePropType = responsivePropType;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _ThemeProvider = require("./ThemeProvider");
function responsivePropType(propType) {
return _propTypes.default.oneOfType([propType, _propTypes.default.shape({
xs: propType,
sm: propType,
md: propType,
lg: propType,
xl: propType,
xxl: propType
})]);
}
function createUtilityClassName(utilityValues, breakpoints = _ThemeProvider.DEFAULT_BREAKPOINTS, minBreakpoint = _ThemeProvider.DEFAULT_MIN_BREAKPOINT) {
const classes = [];
Object.entries(utilityValues).forEach(([utilName, utilValue]) => {
if (utilValue != null) {
if (typeof utilValue === 'object') {
breakpoints.forEach(brkPoint => {
const bpValue = utilValue[brkPoint];
if (bpValue != null) {
const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';
classes.push(`${utilName}${infix}-${bpValue}`);
}
});
} else {
classes.push(`${utilName}-${utilValue}`);
}
}
});
return classes;
}