UNPKG

@fluentui/styles

Version:
41 lines (37 loc) 1.26 kB
"use strict"; exports.__esModule = true; exports.deepmerge = void 0; var isObject = function isObject(o) { return o !== null && typeof o === 'object' && !Array.isArray(o); }; var isValid = function isValid(k) { return k !== '__proto__' && k !== 'prototype' && k !== 'constructor'; }; // Heads Up! // Changes here need to consider breaking all object references. // Merging should result in a themes that are non-mutated and have broken references. var deepmerge = function deepmerge() { var inner = function inner(target, source) { Object.keys(source).forEach(function (k) { if (isValid(k)) { if (isObject(source[k])) { if (!isObject(target[k])) { target[k] = {}; } inner(target[k], source[k]); } else { target[k] = source[k]; // TODO: do deep clone for arrays? We currently do not have any deep arrays in variables } } }); return target; }; for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) { sources[_key] = arguments[_key]; } return sources.filter(Boolean).reduce(function (acc, src) { return inner(acc, src); }, {}); }; exports.deepmerge = deepmerge; //# sourceMappingURL=deepmerge.js.map