UNPKG

ramda-extension

Version:

Helpful functions built on top of the mighty Ramda

53 lines (43 loc) 1.95 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ramda = require("ramda"); var _flattenArgs = _interopRequireDefault(require("./flattenArgs")); var _joinWithSpace = _interopRequireDefault(require("./joinWithSpace")); var _isObject = _interopRequireDefault(require("./isObject")); var _isString = _interopRequireDefault(require("./isString")); var _isNumber = _interopRequireDefault(require("./isNumber")); var filterFalsy = (0, _ramda.filter)(_ramda.identity); var keepObjectStringNumber = (0, _ramda.filter)((0, _ramda.anyPass)([_isObject.default, _isString.default, _isNumber.default])); var keepKeyIfValueIsTruthy = (0, _ramda.mapObjIndexed)(function (v, k) { return v && k; }); var destructObject = (0, _ramda.compose)(filterFalsy, _ramda.values, keepKeyIfValueIsTruthy); var transduceArgs = (0, _ramda.into)([], (0, _ramda.compose)((0, _ramda.map)((0, _ramda.when)(_isObject.default, destructObject)), keepObjectStringNumber, filterFalsy)); /** * Conditionally joining classNames together. * * The cx function takes any number of arguments which can be a string, object * even nested arrays of strings and objects. * * The argument 'foo' is short for { foo: true }. * * If the value associated with a given key is falsy, that key won't be included in the output. * * @func * @category String * * @example * * R_.cx('Table', ['MagicTable'], {'Table--active': true }) // 'Table MagicTable Table--active' * R_.cx('Table', ['MagicTable'], {'Table--active': false }) // 'Table MagicTable' * R_.cx(['Table', ['MagicTable']]) // 'Table MagicTable' * * @sig String | [String] | Object -> String */ var cx = (0, _ramda.compose)(_joinWithSpace.default, _ramda.flatten, transduceArgs, _flattenArgs.default); var _default = cx; exports.default = _default;