@bem-react/classnames
Version:
BEM React ClassNames merge
32 lines (30 loc) • 875 B
JavaScript
/**
* Generate className string with unique tokens.
*
* @example
* classnames('Button', 'Header-Button', undefined) // -> Button Header-Button
*
* @param tokens ClassNames tokens.
*/
function classnames() {
var tokens = [];
for (var _i = 0; _i < arguments.length; _i++) {
tokens[_i] = arguments[_i];
}
var className = '';
var uniqueCache = new Set();
var classNameList = tokens.join(' ').split(' ');
for (var _a = 0, classNameList_1 = classNameList; _a < classNameList_1.length; _a++) {
var value = classNameList_1[_a];
if (value === '' || uniqueCache.has(value)) {
continue;
}
uniqueCache.add(value);
if (className.length > 0) {
className += ' ';
}
className += value;
}
return className;
}
export { classnames };