1// Obtained from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from 2// Production steps of ECMA-262, Edition 6, 22.1.2.1 3//if (!Array.from) { // rstamp actually need to overwrite what currently exists 4 Array.from = (function () { 5 var symbolIterator; 6 try { 7 symbolIterator = Symbol.iterator 8 ? Symbol.iterator 9 : 'Symbol(Symbol.iterator)'; 10 } catch (e) { 11 symbolIterator = 'Symbol(Symbol.iterator)'; 12 } 13 14 var toStr = Object.prototype.toString; 15 var isCallable = function (fn) { 16 return ( 17 typeof fn === 'function' || 18 toStr.call(fn) === '[object Function]' 19 ); 20 }; 21 var toInteger = function (value) { 22 var number = Number(value); 23 if (isNaN(number)) return 0; 24 if (number === 0 || !isFinite(number)) return number; 25 return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); 26 }; 27 var maxSafeInteger = Math.pow(2, 53) - 1; 28 var toLength = function (value) { 29 var len = toInteger(value); 30 return Math.min(Math.max(len, 0), maxSafeInteger); 31 }; 32 33 var setGetItemHandler = function setGetItemHandler(isIterator, items) { 34 var iterator = isIterator && items[symbolIterator](); 35 return function getItem(k) { 36 return isIterator ? iterator.next() : items[k]; 37 }; 38 }; 39 40 var getArray = function getArray( 41 T, 42 A, 43 len, 44 getItem, 45 isIterator, 46 mapFn 47 ) { 48 // 16. Let k be 0. 49 var k = 0; 50 51 // 17. Repeat, while k < len⦠or while iterator is done (also steps a - h) 52 while (k < len || isIterator) { 53 var item = getItem(k); 54 var kValue = isIterator ? item.value : item; 55 56 if (isIterator && item.done) { 57 return A; 58 } else { 59 if (mapFn) { 60 A[k] = 61 typeof T === 'undefined' 62 ? mapFn(kValue, k) 63 : mapFn.call(T, kValue, k); 64 } else { 65 A[k] = kValue; 66 } 67 } 68 k += 1; 69 } 70 71 if (isIterator) { 72 throw new TypeError( 73 'Array.from: provided arrayLike or iterator has length more then 2 ** 52 - 1' 74 ); 75 } else { 76 A.length = len; 77 } 78 79 return A; 80 }; 81 82 // The length property of the from method is 1. 83 return function from(arrayLikeOrIterator /*, mapFn, thisArg */) { 84 // 1. Let C be the this value. 85 var C = this; 86 87 // 2. Let items be ToObject(arrayLikeOrIterator). 88 var items = Object(arrayLikeOrIterator); 89 var isIterator = isCallable(items[symbolIterator]); 90 91 // 3. ReturnIfAbrupt(items). 92 if (arrayLikeOrIterator == null && !isIterator) { 93 throw new TypeError( 94 'Array.from requires an array-like object or iterator - not null or undefined' 95 ); 96 } 97 98 // 4. If mapfn is undefined, then let mapping be false. 99 var mapFn = arguments.length > 1 ? arguments[1] : void undefined; 100 var T; 101 if (typeof mapFn !== 'undefined') { 102 // 5. else 103 // 5. a If IsCallable(mapfn) is false, throw a TypeError exception. 104 if (!isCallable(mapFn)) { 105 throw new TypeError( 106 'Array.from: when provided, the second argument must be a function' 107 ); 108 } 109 110 // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined. 111 if (arguments.length > 2) { 112 T = arguments[2]; 113 } 114 } 115 116 // 10. Let lenValue be Get(items, "length"). 117 // 11. Let len be ToLength(lenValue). 118 var len = toLength(items.length); 119 120 // 13. If IsConstructor(C) is true, then 121 // 13. a. Let A be the result of calling the [[Construct]] internal method 122 // of C with an argument list containing the single item len. 123 // 14. a. Else, Let A be ArrayCreate(len). 124 var A = isCallable(C) ? Object(new C(len)) : new Array(len); 125 126 return getArray( 127 T, 128 A, 129 len, 130 setGetItemHandler(isIterator, items), 131 isIterator, 132 mapFn 133 ); 134 }; 135 })(); 136//}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.