Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

3 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. 'use strict';
  2. exports.__esModule = true;
  3. exports.defaultMemoize = defaultMemoize;
  4. exports.createSelectorCreator = createSelectorCreator;
  5. exports.createStructuredSelector = createStructuredSelector;
  6. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  7. function defaultEqualityCheck(a, b) {
  8. return a === b;
  9. }
  10. function defaultMemoize(func) {
  11. var equalityCheck = arguments.length <= 1 || arguments[1] === undefined ? defaultEqualityCheck : arguments[1];
  12. var lastArgs = null;
  13. var lastResult = null;
  14. return function () {
  15. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  16. args[_key] = arguments[_key];
  17. }
  18. if (lastArgs === null || lastArgs.length !== args.length || !args.every(function (value, index) {
  19. return equalityCheck(value, lastArgs[index]);
  20. })) {
  21. lastResult = func.apply(undefined, args);
  22. }
  23. lastArgs = args;
  24. return lastResult;
  25. };
  26. }
  27. function getDependencies(funcs) {
  28. var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
  29. if (!dependencies.every(function (dep) {
  30. return typeof dep === 'function';
  31. })) {
  32. var dependencyTypes = dependencies.map(function (dep) {
  33. return typeof dep;
  34. }).join(', ');
  35. throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));
  36. }
  37. return dependencies;
  38. }
  39. function createSelectorCreator(memoize) {
  40. for (var _len2 = arguments.length, memoizeOptions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
  41. memoizeOptions[_key2 - 1] = arguments[_key2];
  42. }
  43. return function () {
  44. for (var _len3 = arguments.length, funcs = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
  45. funcs[_key3] = arguments[_key3];
  46. }
  47. var recomputations = 0;
  48. var resultFunc = funcs.pop();
  49. var dependencies = getDependencies(funcs);
  50. var memoizedResultFunc = memoize.apply(undefined, [function () {
  51. recomputations++;
  52. return resultFunc.apply(undefined, arguments);
  53. }].concat(memoizeOptions));
  54. var selector = function selector(state, props) {
  55. for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
  56. args[_key4 - 2] = arguments[_key4];
  57. }
  58. var params = dependencies.map(function (dependency) {
  59. return dependency.apply(undefined, [state, props].concat(args));
  60. });
  61. return memoizedResultFunc.apply(undefined, _toConsumableArray(params));
  62. };
  63. selector.resultFunc = resultFunc;
  64. selector.recomputations = function () {
  65. return recomputations;
  66. };
  67. selector.resetRecomputations = function () {
  68. return recomputations = 0;
  69. };
  70. return selector;
  71. };
  72. }
  73. var createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);
  74. function createStructuredSelector(selectors) {
  75. var selectorCreator = arguments.length <= 1 || arguments[1] === undefined ? createSelector : arguments[1];
  76. if (typeof selectors !== 'object') {
  77. throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));
  78. }
  79. var objectKeys = Object.keys(selectors);
  80. return selectorCreator(objectKeys.map(function (key) {
  81. return selectors[key];
  82. }), function () {
  83. for (var _len5 = arguments.length, values = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
  84. values[_key5] = arguments[_key5];
  85. }
  86. return values.reduce(function (composition, value, index) {
  87. composition[objectKeys[index]] = value;
  88. return composition;
  89. }, {});
  90. });
  91. }