@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
69 lines (68 loc) • 2.73 kB
JavaScript
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
import { _ as _type_of } from "@swc/helpers/_/_type_of";
export default main;
export function main() {
for(var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++){
items[_key] = arguments[_key];
}
return merge.apply(void 0, _to_consumable_array(items));
}
main.clone = clone;
main.isPlainObject = isPlainObject;
main.recursive = recursive;
export function merge() {
for(var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++){
items[_key] = arguments[_key];
}
return _merge(items[0] === true, false, items);
}
export function recursive() {
for(var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++){
items[_key] = arguments[_key];
}
return _merge(items[0] === true, true, items);
}
export function clone(input) {
if (Array.isArray(input)) {
var output = [];
for(var index = 0; index < input.length; ++index)output.push(clone(input[index]));
return output;
}
if (isPlainObject(input)) {
var output1 = {};
// eslint-disable-next-line guard-for-in
for(var index1 in input)output1[index1] = clone(input[index1]);
return output1;
}
return input;
}
export function isPlainObject(input) {
if (input === null || (typeof input === "undefined" ? "undefined" : _type_of(input)) !== 'object') return false;
if (Object.getPrototypeOf(input) === null) return true;
var ref = input;
while(Object.getPrototypeOf(ref) !== null)ref = Object.getPrototypeOf(ref);
return Object.getPrototypeOf(input) === ref;
}
function _recursiveMerge(base, extend) {
if (!isPlainObject(base) || !isPlainObject(extend)) return extend;
for(var key in extend){
if (key === '__proto__' || key === 'constructor' || key === 'prototype') continue;
base[key] = isPlainObject(base[key]) && isPlainObject(extend[key]) ? _recursiveMerge(base[key], extend[key]) : extend[key];
}
return base;
}
function _merge(isClone, isRecursive, items) {
var result;
if (isClone || !isPlainObject(result = items.shift())) result = {};
for(var index = 0; index < items.length; ++index){
var item = items[index];
// eslint-disable-next-line no-continue
if (!isPlainObject(item)) continue;
for(var key in item){
if (key === '__proto__' || key === 'constructor' || key === 'prototype') continue;
var value = isClone ? clone(item[key]) : item[key];
result[key] = isRecursive ? _recursiveMerge(result[key], value) : value;
}
}
return result;
}