UNPKG

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
"use strict"; 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; }