dd35ae05f2d6b1d91508864a0c4c589d43f4ca00
[yaffs-website] / node_modules / video.js / es5 / utils / merge-options.js
1 'use strict';
2
3 exports.__esModule = true;
4 exports['default'] = mergeOptions;
5
6 var _obj = require('./obj');
7
8 /**
9  * Deep-merge one or more options objects, recursively merging **only** plain
10  * object properties.
11  *
12  * @param   {Object[]} sources
13  *          One or more objects to merge into a new object.
14  *
15  * @returns {Object}
16  *          A new object that is the merged result of all sources.
17  */
18 function mergeOptions() {
19   var result = {};
20
21   for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
22     sources[_key] = arguments[_key];
23   }
24
25   sources.forEach(function (source) {
26     if (!source) {
27       return;
28     }
29
30     (0, _obj.each)(source, function (value, key) {
31       if (!(0, _obj.isPlain)(value)) {
32         result[key] = value;
33         return;
34       }
35
36       if (!(0, _obj.isPlain)(result[key])) {
37         result[key] = {};
38       }
39
40       result[key] = mergeOptions(result[key], value);
41     });
42   });
43
44   return result;
45 } /**
46    * @file merge-options.js
47    * @module merge-options
48    */