styled-components
Version:
Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress 💅
41 lines (31 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.objToCss = undefined;
var _hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');
var _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);
var _isPlainObject = require('lodash/isPlainObject');
var _isPlainObject2 = _interopRequireDefault(_isPlainObject);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var objToCss = exports.objToCss = function objToCss(obj) {
return Object.keys(obj).map(function (k) {
return (0, _hyphenateStyleName2.default)(k) + ': ' + obj[k] + ';';
}).join(' ');
};
var flatten = function flatten(chunks, executionContext) {
return chunks.reduce(function (array, chunk) {
/* Remove falsey values */
if (chunk === undefined || chunk === null || chunk === false || chunk === '') return array;
/* Flatten arrays */
if (Array.isArray(chunk)) return array.concat.apply(array, _toConsumableArray(flatten(chunk, executionContext)));
/* Either execute or defer the function */
if (typeof chunk === 'function') {
return executionContext ? array.concat.apply(array, _toConsumableArray(flatten([chunk(executionContext)], executionContext))) : array.concat(chunk);
}
/* Handle objects */
return array.concat((0, _isPlainObject2.default)(chunk) ? objToCss(chunk) : chunk.toString());
}, []);
};
exports.default = flatten;