UNPKG

@adaptabletools/adaptable-cjs

Version:

Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

51 lines (50 loc) 1.78 kB
"use strict"; /** * This method is like `merge` except that it accepts customizer which is * invoked to produce the merged values of the destination and source properties. * If customizer returns undefined, merging is handled by the method instead. * Drop-in replacement for lodash/mergeWith. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.default = mergeWith; const tslib_1 = require("tslib"); const isPlainObject_1 = tslib_1.__importDefault(require("./isPlainObject")); function baseMergeWith(target, source, customizer) { if (source == null) { return target; } const keys = Object.keys(source); for (const key of keys) { const srcValue = source[key]; const tgtValue = target[key]; const customResult = customizer(tgtValue, srcValue, key, target, source); if (customResult !== undefined) { target[key] = customResult; } else if (Array.isArray(srcValue)) { if (!Array.isArray(tgtValue)) { target[key] = []; } baseMergeWith(target[key], srcValue, customizer); } else if ((0, isPlainObject_1.default)(srcValue)) { if (!(0, isPlainObject_1.default)(tgtValue)) { target[key] = {}; } baseMergeWith(target[key], srcValue, customizer); } else if (srcValue !== undefined) { target[key] = srcValue; } } return target; } function mergeWith(target, ...args) { // The last argument is the customizer function const customizer = args[args.length - 1]; const sources = args.slice(0, -1); for (const source of sources) { baseMergeWith(target, source, customizer); } return target; }