react-classnaming
Version:
Tools to establish CSS classes as an explicit abstraction layer and to handle it as an interface between React and CSSStyleDeclaration
35 lines (34 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.classNamesMap = void 0;
var core_1 = require("./core");
var $keys = Object.keys;
/**
* Set up mapping classnames function
* @example
* ```typescript
* const mapping = classNamesMap(classnames)
* ```
*/
function classNamesMap(classnames) {
var mapper = function (target, map) { return mapping(classnames, target, map); };
return mapper;
}
exports.classNamesMap = classNamesMap;
function mapping(source, _, map) {
// TODO #33 change to for-in https://jsbench.me/prkm3gn4ji
var keys = $keys(map)
// TODO = {...keys} + reassign or delete?
, classnames = {};
for (var i = keys.length; i--;) {
var key = keys[i], val = map[key];
if (val === undefined)
continue;
classnames[key] = typeof val === "function"
? "" + val
: core_1.resolver(source,
//@ts-expect-error #27 TS doesn't understand that ClassNaming is first of all function
val).join(" ");
}
return classnames;
}