Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

47 wiersze
1.2 KiB

  1. (function (global, factory) {
  2. typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
  3. typeof define === 'function' && define.amd ? define(factory) :
  4. (global.memoizeOne = factory());
  5. }(this, (function () { 'use strict';
  6. var simpleIsEqual = function simpleIsEqual(a, b) {
  7. return a === b;
  8. };
  9. function index (resultFn, isEqual) {
  10. if (isEqual === void 0) {
  11. isEqual = simpleIsEqual;
  12. }
  13. var lastThis;
  14. var lastArgs = [];
  15. var lastResult;
  16. var calledOnce = false;
  17. var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {
  18. return isEqual(newArg, lastArgs[index]);
  19. };
  20. var result = function result() {
  21. for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {
  22. newArgs[_key] = arguments[_key];
  23. }
  24. if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {
  25. return lastResult;
  26. }
  27. lastResult = resultFn.apply(this, newArgs);
  28. calledOnce = true;
  29. lastThis = this;
  30. lastArgs = newArgs;
  31. return lastResult;
  32. };
  33. return result;
  34. }
  35. return index;
  36. })));