Skip to content

Commit

Permalink
Fix IE11 compatability with reduce polyfill.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jordan Humphreys committed Apr 27, 2017
1 parent 614c84f commit 05624aa
Show file tree
Hide file tree
Showing 7 changed files with 162 additions and 37 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "tribute",
"description": "Native ES6 @mentions",
"version": "2.3.4",
"version": "2.3.5",
"main": [
"dist/tribute.js",
"dist/tribute.css"
Expand Down
125 changes: 93 additions & 32 deletions dist/tribute.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/tribute.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/tribute.min.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "tributejs",
"version": "2.3.4",
"version": "2.3.5",
"description": "Native ES6 @mentions",
"main": "dist/tribute.js",
"devDependencies": {
Expand Down
64 changes: 64 additions & 0 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,70 @@ if (!Array.prototype.find) {
}
}

// Production steps of ECMA-262, Edition 5, 15.4.4.21
// Reference: http://es5.github.io/#x15.4.4.21
// https://tc39.github.io/ecma262/#sec-array.prototype.reduce
if (!Array.prototype.reduce) {
Object.defineProperty(Array.prototype, 'reduce', {
value: function(callback /*, initialValue*/) {
if (this === null) {
throw new TypeError( 'Array.prototype.reduce ' +
'called on null or undefined' );
}
if (typeof callback !== 'function') {
throw new TypeError( callback +
' is not a function');
}

// 1. Let O be ? ToObject(this value).
var o = Object(this);

// 2. Let len be ? ToLength(? Get(O, "length")).
var len = o.length >>> 0;

// Steps 3, 4, 5, 6, 7
var k = 0;
var value;

if (arguments.length >= 2) {
value = arguments[1];
} else {
while (k < len && !(k in o)) {
k++;
}

// 3. If len is 0 and initialValue is not present,
// throw a TypeError exception.
if (k >= len) {
throw new TypeError( 'Reduce of empty array ' +
'with no initial value' );
}
value = o[k++];
}

// 8. Repeat, while k < len
while (k < len) {
// a. Let Pk be ! ToString(k).
// b. Let kPresent be ? HasProperty(O, Pk).
// c. If kPresent is true, then
// i. Let kValue be ? Get(O, Pk).
// ii. Let accumulator be ? Call(
// callbackfn, undefined,
// « accumulator, kValue, k, O »).
if (k in o) {
value = callback(value, o[k], k, o);
}

// d. Increase k by 1.
k++;
}

// 9. Return accumulator.
return value;
}
});
}

(function() {

if (typeof window.CustomEvent === "function") return false
Expand Down
2 changes: 1 addition & 1 deletion tributejs.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Type definitions for TributeJS v2.3.4
// Type definitions for TributeJS v2.3.5
// Project: https://github.com/zurb/tribute
// Definitions by: Jordan Humphreys <https://github.com/mrsweaters/>

Expand Down

0 comments on commit 05624aa

Please sign in to comment.