UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

65 lines (52 loc) 1.76 kB
"use strict"; var isPlainObject = require("./type").isPlainObject; var extendFromObject = function extendFromObject(target, source, overrideExistingValues) { target = target || {}; for (var prop in source) { if (source.hasOwnProperty(prop)) { var value = source[prop]; if (!(prop in target) || overrideExistingValues) { target[prop] = value; } } } return target; }; var extend = function extend(target) { target = target || {}; var i = 1, deep = false; if (typeof target === "boolean") { deep = target; target = arguments[1] || {}; i++; } for (; i < arguments.length; i++) { var source = arguments[i]; if (source == null) { continue; } for (var key in source) { var targetValue = target[key], sourceValue = source[key], sourceValueIsArray = false, clone; if (target === sourceValue) { continue; } if (deep && sourceValue && (isPlainObject(sourceValue) || (sourceValueIsArray = Array.isArray(sourceValue)))) { if (sourceValueIsArray) { clone = targetValue && Array.isArray(targetValue) ? targetValue : []; } else { clone = targetValue && isPlainObject(targetValue) ? targetValue : {}; } target[key] = extend(deep, clone, sourceValue); } else if (sourceValue !== undefined) { target[key] = sourceValue; } } } return target; }; exports.extend = extend; exports.extendFromObject = extendFromObject;