| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /**
- * DevExtreme (core/utils/object.js)
- * Version: 19.1.16
- * Build date: Tue Oct 18 2022
- *
- * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
- * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
- */
- "use strict";
- var typeUtils = require("./type");
- var variableWrapper = require("./variable_wrapper");
- var clone = function() {
- function Clone() {}
- return function(obj) {
- Clone.prototype = obj;
- return new Clone
- }
- }();
- var orderEach = function(map, func) {
- var keys = [];
- var key;
- var i;
- for (key in map) {
- if (Object.prototype.hasOwnProperty.call(map, key)) {
- keys.push(key)
- }
- }
- keys.sort(function(x, y) {
- var isNumberX = typeUtils.isNumeric(x);
- var isNumberY = typeUtils.isNumeric(y);
- if (isNumberX && isNumberY) {
- return x - y
- }
- if (isNumberX && !isNumberY) {
- return -1
- }
- if (!isNumberX && isNumberY) {
- return 1
- }
- if (x < y) {
- return -1
- }
- if (x > y) {
- return 1
- }
- return 0
- });
- for (i = 0; i < keys.length; i++) {
- key = keys[i];
- func(key, map[key])
- }
- };
- var assignValueToProperty = function(target, property, value, assignByReference) {
- if (!assignByReference && variableWrapper.isWrapped(target[property])) {
- variableWrapper.assign(target[property], value)
- } else {
- target[property] = value
- }
- };
- var deepExtendArraySafe = function deepExtendArraySafe(target, changes, extendComplexObject, assignByReference) {
- var prevValue;
- var newValue;
- for (var name in changes) {
- prevValue = target[name];
- newValue = changes[name];
- if ("__proto__" === name || target === newValue) {
- continue
- }
- if (typeUtils.isPlainObject(newValue)) {
- var goDeeper = extendComplexObject ? typeUtils.isObject(prevValue) : typeUtils.isPlainObject(prevValue);
- newValue = deepExtendArraySafe(goDeeper ? prevValue : {}, newValue, extendComplexObject, assignByReference)
- }
- if (void 0 !== newValue && prevValue !== newValue) {
- assignValueToProperty(target, name, newValue, assignByReference)
- }
- }
- return target
- };
- exports.clone = clone;
- exports.orderEach = orderEach;
- exports.deepExtendArraySafe = deepExtendArraySafe;
|