UNPKG

@fluentui/react-northstar

Version:
122 lines (112 loc) 3.51 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.removeNulls = exports.isOverridden = exports.includes = exports.getValues = exports.find = exports.filter = void 0; var _concat2 = _interopRequireDefault(require("lodash/concat")); var _isNil2 = _interopRequireDefault(require("lodash/isNil")); var _toLower2 = _interopRequireDefault(require("lodash/toLower")); /** * Check whether source includes target ignoring case. */ var includes = function includes(source, target) { return (0, _toLower2.default)(source).indexOf((0, _toLower2.default)(target)) !== -1; }; /** * Checks whether the key or the value of data[key] contains the search string. */ exports.includes = includes; var find = function find(data, key, search) { var value = data[key]; return search !== '' && (includes(key, search) || typeof value !== 'object' && !(0, _isNil2.default)(value) && includes(value, search)); }; /** * Checks if the data[key] is primitive and override in the overrides object. */ exports.find = find; var isOverridden = function isOverridden(data, key, overrides) { return typeof data[key] !== 'object' && !!overrides && overrides[key] !== null && overrides[key] !== undefined; }; /** * Helper recursive function for the filter method. */ exports.isOverridden = isOverridden; var filterR = function filterR(search, data) { var result = false; Object.keys(data).forEach(function (key) { var value = data[key]; if (find(data, key, search)) { result = true; } // If the value is object invoke again if (typeof value === 'object' && filterR(search, value)) { result = true; } }); return result; }; /** * Filters the data for the value string (if it appears in the key or value). Considers nested objects. */ var filter = function filter(data, value) { return Object.keys(data).filter(function (key) { if (find(data, key, value)) { return true; } // if the value is object invoke again if (typeof data[key] === 'object' && data[key] !== null) { return filterR(value, data[key]); } return false; }).reduce(function (obj, key) { obj[key] = data[key]; return obj; }, {}); }; /** * Returns array of values that matches the predicate. Considers nested objects. */ exports.filter = filter; var getValues = function getValues(value, predicate) { if ((0, _isNil2.default)(value)) { return []; } if (typeof value === 'string') { if (predicate(value)) { return [value]; } } if (typeof value === 'object') { var arr = []; Object.keys(value).forEach(function (key) { arr = (0, _concat2.default)(arr, getValues(value[key], predicate)); }); return arr; } return []; }; /** * Removes null values from an object. Considers nested objects. */ exports.getValues = getValues; var removeNulls = function removeNulls(o) { if (typeof o !== 'object' && o !== null) { return o; } var result = {}; Object.keys(o).forEach(function (k) { if (!o[k] || typeof o[k] !== 'object') { if (o[k]) { result[k] = o[k]; // If not null or not an object, copy value } } else { // The property is an object var val = removeNulls(o[k]); if (typeof val === 'object' && val != null && Object.keys(val).length > 0) { result[k] = val; } } }); return result; }; exports.removeNulls = removeNulls; //# sourceMappingURL=utils.js.map