UNPKG

easy-bem

Version:
56 lines (47 loc) 1.39 kB
'use strict'; /** * BEM class name factory. * * @typedef {Function} Bem * @param {String|Object} [elementOrMods] Element name or hash object with mods * @param {Object} [mods] Hash object with mods * @returns {String} */ /** * Returns BEM class name factory. * * @param {String} componentName Block name * @returns {Bem} */ module.exports = function bem(componentName) { return function (elementOrMods, mods) { if (!elementOrMods) { return componentName; } var element; if (typeof elementOrMods === 'string') { element = elementOrMods; } else { mods = elementOrMods; } var base = componentName; if (element) { base += '__' + element; } return base + ( mods ? Object.keys(mods).reduce(function (result, name) { var value = mods[name]; if (value) { result += ' ' + ( typeof value === 'boolean' ? (base + '--' + name) : (base + '--' + name + '_' + value) ); } return result; }, '') : '' ); }; }