react-classnaming
Version:
Tools to establish CSS classes as an explicit abstraction layer and to handle it as an interface between React and CSSStyleDeclaration
58 lines (57 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.joinWithLead = exports.picker = exports.resolver = exports.wrapper = void 0;
var consts_json_1 = require("./consts.json");
var $defineProperty = Object.defineProperty, stringifyProperty = Symbol.toPrimitive, StringifyDescriptor = { value: classNamedToString };
function wrapper(destination, className) {
//@ts-expect-error
destination["className"] = className;
if (!destination.hasOwnProperty(stringifyProperty))
$defineProperty(destination, stringifyProperty, StringifyDescriptor);
return destination;
}
exports.wrapper = wrapper;
function picker(vocabulary, keys) {
if (!vocabulary)
return keys;
for (var i = keys.length; i--;) {
var key = keys[i], val = vocabulary[key];
if (val !== undefined)
keys[i] = val;
}
return keys;
}
exports.picker = picker;
function resolver(vocabulary, actions) {
// https://jsbench.me/q8kltjsdwy
var $return = [];
// https://jsbench.me/prkm3gn4ji
for (var key in actions) {
var act = actions[key];
if (act === undefined || act === true)
// https://jsbench.me/p3km3fg4e7
$return.push(key);
else if (act)
// https://jsbench.me/p3km3fg4e7
$return.push(act);
}
return $return.length === 0
? consts_json_1.EMPTY_ARRAY
: picker(vocabulary, $return);
}
exports.resolver = resolver;
//TODO Consider returning `undefined` on empty string
function joinWithLead(value, arr) {
var str1 = value || "";
if (!(arr && arr.length))
return str1;
var str2 = typeof arr === "string" ? arr : arr.join(" ");
if (!str1)
return str2;
return str1 + " " + str2;
}
exports.joinWithLead = joinWithLead;
function classNamedToString() {
//TODO `?? ""`
return this.className;
}