amos-tool
Version:
amos ui tool
79 lines (65 loc) • 1.93 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"), _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")), findType = function(e) {
return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1];
};
function findAllType(e) {
switch (Object.prototype.toString.call(e)) {
case "[object Date]":
return "date";
case "[object RegExp]":
return "regexp";
case "[object Arguments]":
return "arguments";
case "[object Array]":
return "array";
case "[object Error]":
return "error";
}
return null === e ? "null" : void 0 === e ? "undefined" : e && 1 === e.nodeType ? "element" : (e = e.valueOf ? e.valueOf() : Object.prototype.valueOf.apply(e),
(0, _typeof2.default)(e));
}
var _simpleClone = function(e) {
switch (findType(e)) {
case "Object":
var r = {};
for (var t in e) e.hasOwnProperty(t) && (r[t] = _simpleClone(e[t]));
return r;
case "Array":
return e.slice();
}
return e;
}, clone = function(e) {
try {
return JSON.parse(JSON.stringify(e, function(e, r) {
return "function" == typeof r ? r.toString() : r;
}));
} catch (r) {
return e;
}
}, _cloneAll = function(e) {
switch (findAllType(e)) {
case "object":
var r = {};
return Object.keys(e).forEach(function(t) {
"$" !== t.charAt(0) && (r[t] = _cloneAll(e[t]));
}), r;
case "element":
return e.cloneNode(!0);
case "array":
for (var t = new Array(e.length), n = 0, l = e.length; n < l; n++) t[n] = _cloneAll(e[n]);
return t;
case "regexp":
var o = "";
return o += e.multiline ? "m" : "", o += e.global ? "g" : "", o += e.ignoreCase ? "i" : "",
new RegExp(e.source, o);
case "date":
return new Date(e.getTime());
default:
return e;
}
};
module.exports = {
simpleClone: _simpleClone,
clone: clone,
cloneAll: _cloneAll
};