Fix for old browsers (min version)

This commit is contained in:
Oleg Korshul
2025-11-28 11:39:45 +03:00
parent 7b5cc28ee6
commit 31277701ae

94
vendor/array.js vendored
View File

@ -205,50 +205,60 @@
if (window &&
window.AscCommon &&
window.AscCommon.AscBrowser &&
window.AscCommon.AscBrowser.isChrome &&
typeof Object.values === "undefined")
window.AscCommon.AscBrowser.isChrome)
{
(function() {
var _sort = Array.prototype.sort;
Array.prototype.sort = function(compareFn) {
var len = this.length;
let typeOfValues = typeof Object.values;
let isOld = typeOfValues === "undefined";
if (!isOld && typeOfValues === "function")
{
if (Object.values.toString().indexOf("[native code]") === -1)
isOld = true;
}
var cmp = compareFn || function(a, b) {
var sa = String(a);
var sb = String(b);
return sa < sb ? -1 : sa > sb ? 1 : 0;
if (isOld)
{
(function() {
var _sort = Array.prototype.sort;
Array.prototype.sort = function(compareFn) {
var len = this.length;
var cmp = compareFn || function(a, b) {
var sa = String(a);
var sb = String(b);
return sa < sb ? -1 : sa > sb ? 1 : 0;
};
var indexed = [];
for (var i = 0; i < len; i++) {
indexed.push({ v: this[i], i: i });
}
_sort.call(indexed, function(a, b) {
var aVal = a.v;
var bVal = b.v;
var aIsUndefined = aVal === undefined;
var bIsUndefined = bVal === undefined;
if (aIsUndefined && bIsUndefined) return a.i - b.i;
if (aIsUndefined) return 1;
if (bIsUndefined) return -1;
var r = cmp(aVal, bVal);
if (typeof r !== 'number' || r !== r)
r = 0;
return r !== 0 ? r : a.i - b.i;
});
for (var i = 0; i < indexed.length; i++) {
this[i] = indexed[i].v;
}
return this;
};
var indexed = [];
for (var i = 0; i < len; i++) {
indexed.push({ v: this[i], i: i });
}
_sort.call(indexed, function(a, b) {
var aVal = a.v;
var bVal = b.v;
var aIsUndefined = aVal === undefined;
var bIsUndefined = bVal === undefined;
if (aIsUndefined && bIsUndefined) return a.i - b.i;
if (aIsUndefined) return 1;
if (bIsUndefined) return -1;
var r = cmp(aVal, bVal);
if (typeof r !== 'number' || r !== r)
r = 0;
return r !== 0 ? r : a.i - b.i;
});
for (var i = 0; i < indexed.length; i++) {
this[i] = indexed[i].v;
}
return this;
};
})();
})();
}
}
})();