react-classnaming
Version:
Tools to establish CSS classes as an explicit abstraction layer and to handle it as an interface between React and CSSStyleDeclaration
41 lines (40 loc) • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setOptions = exports.bem2arr = void 0;
var $isArray = Array.isArray;
var modDelimiter = "--", elementDelimiter = "__";
function bem2arr(query) {
var $return = [];
for (var base in query) {
var baseQ = query[base];
$return.push(base);
if (!baseQ)
continue;
if (typeof baseQ !== "object") {
if (typeof baseQ === "string")
$return.push("" + base + modDelimiter + baseQ);
continue;
}
var isArray = $isArray(baseQ);
// TODO check performance of `const in Array`
for (var mod in baseQ) {
//@ts-expect-error //TODO Split Array and Object?
var modValue = baseQ[mod];
if (!modValue)
continue;
$return.push("" + base + (isArray
? ""
: "" + modDelimiter + mod) + (typeof modValue !== "string"
? ""
: "" + modDelimiter + modValue));
}
}
return $return;
}
exports.bem2arr = bem2arr;
function setOptions(_a) {
var _b = _a.elementDelimiter, elD = _b === void 0 ? elementDelimiter : _b, _c = _a.modDelimiter, modDel = _c === void 0 ? modDelimiter : _c;
modDelimiter = modDel;
elementDelimiter = elD;
}
exports.setOptions = setOptions;