jcm-classnames
Version:
A lightweight JavaScript utility performing classNames concatenation for JSX and CSS modules applications
30 lines (25 loc) • 748 B
JavaScript
const cnInit = styleName => {
const getValue = key => {
const value = styleName[key];
if (!value) throw new Error(`".${key}" is not exist`);
return value;
};
return (...list) => {
return list
.reduce((acc, cur) => {
const classNames = cur.trim().split(/ +|, ?/),
[classNameFirst, classNameSecond] = classNames;
const className = !classNameSecond
? getValue(classNameFirst)
: classNames
.reduce(
(classAcc, classCur) => `${classAcc} ${getValue(classCur)}`,
""
)
.trim();
return `${acc} ${className}`;
}, "")
.trim();
};
};
export default cnInit;