You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					52 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					52 lines
				
				1.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								var safeIsNaN = Number.isNaN ||
							 | 
						||
| 
								 | 
							
								    function ponyfill(value) {
							 | 
						||
| 
								 | 
							
								        return typeof value === 'number' && value !== value;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								function isEqual(first, second) {
							 | 
						||
| 
								 | 
							
								    if (first === second) {
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    if (safeIsNaN(first) && safeIsNaN(second)) {
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return false;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function areInputsEqual(newInputs, lastInputs) {
							 | 
						||
| 
								 | 
							
								    if (newInputs.length !== lastInputs.length) {
							 | 
						||
| 
								 | 
							
								        return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    for (var i = 0; i < newInputs.length; i++) {
							 | 
						||
| 
								 | 
							
								        if (!isEqual(newInputs[i], lastInputs[i])) {
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function memoizeOne(resultFn, isEqual) {
							 | 
						||
| 
								 | 
							
								    if (isEqual === void 0) { isEqual = areInputsEqual; }
							 | 
						||
| 
								 | 
							
								    var cache = null;
							 | 
						||
| 
								 | 
							
								    function memoized() {
							 | 
						||
| 
								 | 
							
								        var newArgs = [];
							 | 
						||
| 
								 | 
							
								        for (var _i = 0; _i < arguments.length; _i++) {
							 | 
						||
| 
								 | 
							
								            newArgs[_i] = arguments[_i];
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {
							 | 
						||
| 
								 | 
							
								            return cache.lastResult;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        var lastResult = resultFn.apply(this, newArgs);
							 | 
						||
| 
								 | 
							
								        cache = {
							 | 
						||
| 
								 | 
							
								            lastResult: lastResult,
							 | 
						||
| 
								 | 
							
								            lastArgs: newArgs,
							 | 
						||
| 
								 | 
							
								            lastThis: this,
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        return lastResult;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    memoized.clear = function clear() {
							 | 
						||
| 
								 | 
							
								        cache = null;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    return memoized;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export { memoizeOne as default };
							 |