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.
		
		
		
		
		
			
		
			
				
					54 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					54 lines
				
				1.3 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | 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; | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = memoizeOne; |