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.
		
		
		
		
		
			
		
			
				
					60 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					60 lines
				
				1.7 KiB
			| 
											3 years ago
										 | (function (global, factory) { | ||
|  |   typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | ||
|  |   typeof define === 'function' && define.amd ? define(factory) : | ||
|  |   (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.memoizeOne = factory()); | ||
|  | })(this, (function () { '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; | ||
|  |   } | ||
|  | 
 | ||
|  |   return memoizeOne; | ||
|  | 
 | ||
|  | })); |