mirror of
https://github.com/ONLYOFFICE/sdkjs.git
synced 2026-02-10 10:05:19 +08:00
Fix for old browsers (min version)
This commit is contained in:
94
vendor/array.js
vendored
94
vendor/array.js
vendored
@ -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;
|
||||
};
|
||||
})();
|
||||
})();
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user