bem-cn-lite
Version:
Lite version of the friendly BEM-style class name generator, which is great for React
43 lines (42 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var bem_cn_1 = require("bem-cn");
var block = (0, bem_cn_1.setup)();
function isString(data) {
return typeof data === 'string';
}
function hasMixinShape(data) {
return isString(data) || (Array.isArray(data) && data.every(isString));
}
function bemClassNameLite(blockName) {
var b = block(blockName);
function element() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var elementName = args.shift();
var modifiers = args[0], mixin = args[1];
var result;
if (typeof elementName !== 'string' || hasMixinShape(modifiers)) {
mixin = modifiers;
modifiers = null;
}
result = b(elementName, modifiers);
if (mixin) {
result = result.mix(mixin);
}
return result.toString();
}
element.builder = function () {
return b;
};
return element;
}
bemClassNameLite.setup = function (config) {
block = (0, bem_cn_1.setup)(config);
};
bemClassNameLite.reset = function () {
block = (0, bem_cn_1.setup)();
};
exports.default = bemClassNameLite;