amos-tool
Version:
amos ui tool
79 lines (65 loc) • 1.91 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(r) {
switch (findType(r)) {
case "Object":
var t = {};
for (var n in r) r.hasOwnProperty(n) && (t[n] = e(r[n]));
return t;
case "Array":
return r.slice();
}
return r;
}, 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(r) {
switch (findAllType(r)) {
case "object":
var t = {};
return Object.keys(r).forEach((function(n) {
"$" !== n.charAt(0) && (t[n] = e(r[n]));
})), t;
case "element":
return r.cloneNode(!0);
case "array":
for (var n = new Array(r.length), o = 0, l = r.length; o < l; o++) n[o] = e(r[o]);
return n;
case "regexp":
var a = "";
return a += r.multiline ? "m" : "", a += r.global ? "g" : "", a += r.ignoreCase ? "i" : "",
new RegExp(r.source, a);
case "date":
return new Date(r.getTime());
default:
return r;
}
};
module.exports = {
simpleClone: simpleClone,
clone: clone,
cloneAll: cloneAll
};