all files / src/ util.js

95.83% Statements 46/48
90% Branches 18/20
81.82% Functions 9/11
95.74% Lines 45/47
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112            12× 12× 12× 12× 12× 12× 12× 12× 12× 12×   1627× 860× 1010× 1004×       1627×             1554×                                     47230×         70139×             15249×         9799×             10×           12× 12× 21006×     12×       12× 12×     12×  
/** Copy own-properties from `props` onto `obj`.
 *	@returns obj
 *	@private
 */
'use strict';
 
exports.__esModule = true;
exports.extend = extend;
exports.clone = clone;
exports.delve = delve;
exports.toArray = toArray;
exports.isFunction = isFunction;
exports.isString = isString;
exports.empty = empty;
exports.falsey = falsey;
exports.hashToClassName = hashToClassName;
 
function extend(obj, props) {
	if (props) {
		for (var i in props) {
			if (props[i] !== undefined) {
				obj[i] = props[i];
			}
		}
	}
	return obj;
}
 
/** Fast clone. Note: does not filter out non-own properties.
 *	@see https://esbench.com/bench/56baa34f45df6895002e03b6
 */
 
function clone(obj) {
	return extend({}, obj);
}
 
/** Get a deep property value from the given object, expressed in dot-notation.
 *	@private
 */
 
function delve(obj, key) {
	for (var p = key.split('.'), i = 0; i < p.length && obj; i++) {
		obj = obj[p[i]];
	}
	return obj;
}
 
/** Convert an Array-like object to an Array
 *	@private
 */
 
function toArray(obj, offset) {
	return [].slice.call(obj, offset);
}
 
/** @private is the given object a Function? */
 
function isFunction(obj) {
	return 'function' === typeof obj;
}
 
/** @private is the given object a String? */
 
function isString(obj) {
	return 'string' === typeof obj;
}
 
/** Check if a value is `null` or `undefined`.
 *	@private
 */
 
function empty(x) {
	return x === undefined || x === null;
}
 
/** Check if a value is `null`, `undefined`, or explicitly `false`. */
 
function falsey(value) {
	return value === false || empty(value);
}
 
/** Convert a hashmap of CSS classes to a space-delimited className string
 *	@private
 */
 
function hashToClassName(c) {
	var str = '';
	for (var prop in c) {
		if (c[prop]) {
			if (str) str += ' ';
			str += prop;
		}
	}
	return str;
}
 
/** Just a memoized String#toLowerCase */
var lcCache = {};
var toLowerCase = function toLowerCase(s) {
	return lcCache[s] || (lcCache[s] = s.toLowerCase());
};
 
exports.toLowerCase = toLowerCase;
/** Call a function asynchronously, as soon as possible.
 *	@param {Function} callback
 */
var resolved = typeof Promise !== 'undefined' && Promise.resolve();
var setImmediate = resolved ? function (f) {
	resolved.then(f);
} : setTimeout;
exports.setImmediate = setImmediate;