/** 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;
|