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
						
					
					
				| (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;
 | |
| 
 | |
| }));
 |