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.
		
		
		
		
		
			
		
			
				
					53 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					53 lines
				
				1.3 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, '__esModule', { value: true }); | ||
|  | 
 | ||
|  | var react = require('react'); | ||
|  | 
 | ||
|  | function areInputsEqual(newInputs, lastInputs) { | ||
|  |   if (newInputs.length !== lastInputs.length) { | ||
|  |     return false; | ||
|  |   } | ||
|  | 
 | ||
|  |   for (var i = 0; i < newInputs.length; i++) { | ||
|  |     if (newInputs[i] !== lastInputs[i]) { | ||
|  |       return false; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   return true; | ||
|  | } | ||
|  | 
 | ||
|  | function useMemoOne(getResult, inputs) { | ||
|  |   var initial = react.useState(function () { | ||
|  |     return { | ||
|  |       inputs: inputs, | ||
|  |       result: getResult() | ||
|  |     }; | ||
|  |   })[0]; | ||
|  |   var isFirstRun = react.useRef(true); | ||
|  |   var committed = react.useRef(initial); | ||
|  |   var useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs)); | ||
|  |   var cache = useCache ? committed.current : { | ||
|  |     inputs: inputs, | ||
|  |     result: getResult() | ||
|  |   }; | ||
|  |   react.useEffect(function () { | ||
|  |     isFirstRun.current = false; | ||
|  |     committed.current = cache; | ||
|  |   }, [cache]); | ||
|  |   return cache.result; | ||
|  | } | ||
|  | function useCallbackOne(callback, inputs) { | ||
|  |   return useMemoOne(function () { | ||
|  |     return callback; | ||
|  |   }, inputs); | ||
|  | } | ||
|  | var useMemo = useMemoOne; | ||
|  | var useCallback = useCallbackOne; | ||
|  | 
 | ||
|  | exports.useCallback = useCallback; | ||
|  | exports.useCallbackOne = useCallbackOne; | ||
|  | exports.useMemo = useMemo; | ||
|  | exports.useMemoOne = useMemoOne; |