UNPKG

glamor

Version:
54 lines (47 loc) 1.85 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; exports.default = clean; // Returns true for null, false, undefined and {} function isFalsy(value) { return value === null || value === undefined || value === false || (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && Object.keys(value).length === 0; } function cleanObject(object) { if (isFalsy(object)) return null; if ((typeof object === 'undefined' ? 'undefined' : _typeof(object)) !== 'object') return object; var acc = {}, keys = Object.keys(object), hasFalsy = false; for (var i = 0; i < keys.length; i++) { var value = object[keys[i]]; var filteredValue = clean(value); if (filteredValue === null || filteredValue !== value) { hasFalsy = true; } if (filteredValue !== null) { acc[keys[i]] = filteredValue; } } return Object.keys(acc).length === 0 ? null : hasFalsy ? acc : object; } function cleanArray(rules) { var hasFalsy = false; var filtered = []; rules.forEach(function (rule) { var filteredRule = clean(rule); if (filteredRule === null || filteredRule !== rule) { hasFalsy = true; } if (filteredRule !== null) { filtered.push(filteredRule); } }); return filtered.length == 0 ? null : hasFalsy ? filtered : rules; } // Takes style array or object provided by user and clears all the falsy data // If there is no styles left after filtration returns null function clean(input) { return Array.isArray(input) ? cleanArray(input) : cleanObject(input); }