mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
js: 7x faster deepclone
This commit is contained in:
parent
1a1d731043
commit
c8104b6e78
|
@ -4255,9 +4255,11 @@ function sortfiles(nodes) {
|
||||||
if (!nodes.length)
|
if (!nodes.length)
|
||||||
return nodes;
|
return nodes;
|
||||||
|
|
||||||
var sopts = jread('fsort', jcp(dsort)),
|
var sopts = jread('fsort'),
|
||||||
dir1st = sread('dir1st') !== '0';
|
dir1st = sread('dir1st') !== '0';
|
||||||
|
|
||||||
|
sopts = sopts && sopts.length ? sopts : jcp(dsort);
|
||||||
|
|
||||||
var collator = !clgot(ebi('nsort'), 'on') ? null :
|
var collator = !clgot(ebi('nsort'), 'on') ? null :
|
||||||
new Intl.Collator([], {numeric: true});
|
new Intl.Collator([], {numeric: true});
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@ var chromedbg = function () { console.log(arguments); }
|
||||||
var dbg = function () { };
|
var dbg = function () { };
|
||||||
|
|
||||||
// replace dbg with the real deal here or in the console:
|
// replace dbg with the real deal here or in the console:
|
||||||
// dbg = chromedbg
|
// dbg = chromedbg;
|
||||||
// dbg = console.log
|
// dbg = console.log;
|
||||||
|
|
||||||
|
|
||||||
// dodge browser issues
|
// dodge browser issues
|
||||||
|
|
|
@ -578,7 +578,9 @@ function yscroll() {
|
||||||
|
|
||||||
function showsort(tab) {
|
function showsort(tab) {
|
||||||
var v, vn, v1, v2, th = tab.tHead,
|
var v, vn, v1, v2, th = tab.tHead,
|
||||||
sopts = jread('fsort', jcp(dsort));
|
sopts = jread('fsort');
|
||||||
|
|
||||||
|
sopts = sopts && sopts.length ? sopts : dsort;
|
||||||
|
|
||||||
th && (th = th.rows[0]) && (th = th.cells);
|
th && (th = th.rows[0]) && (th = th.cells);
|
||||||
|
|
||||||
|
@ -979,11 +981,33 @@ function apop(arr, v) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function jcp(obj) {
|
function jcp1(obj) {
|
||||||
return JSON.parse(JSON.stringify(obj));
|
return JSON.parse(JSON.stringify(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function jcp2(src) {
|
||||||
|
if (Array.isArray(src)) {
|
||||||
|
var ret = [];
|
||||||
|
for (var a = 0; a < src.length; ++a) {
|
||||||
|
var sub = src[a];
|
||||||
|
ret.push((sub === null) ? sub : (sub instanceof Date) ? new Date(sub.valueOf()) : (typeof sub === 'object') ? jcp2(sub) : sub);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var ret = {};
|
||||||
|
for (var key in src) {
|
||||||
|
var sub = src[key];
|
||||||
|
ret[key] = sub === null ? sub : (sub instanceof Date) ? new Date(sub.valueOf()) : (typeof sub === 'object') ? jcp2(sub) : sub;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// jcp1 50% faster on android-chrome, jcp2 7x everywhere else
|
||||||
|
var jcp = MOBILE && CHROME ? jcp1 : jcp2;
|
||||||
|
|
||||||
|
|
||||||
function sdrop(key) {
|
function sdrop(key) {
|
||||||
try {
|
try {
|
||||||
STG.removeItem(key);
|
STG.removeItem(key);
|
||||||
|
|
Loading…
Reference in a new issue