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

56 строки
1.5 KiB

  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  8. var _merge = _interopRequireDefault(require("./merge"));
  9. function compose() {
  10. for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {
  11. styles[_key] = arguments[_key];
  12. }
  13. var fn = function fn(props) {
  14. return styles.reduce(function (acc, style) {
  15. var output = style(props);
  16. if (output) {
  17. return (0, _merge.default)(acc, output);
  18. }
  19. return acc;
  20. }, {});
  21. }; // Alternative approach that doesn't yield any performance gain.
  22. // const handlers = styles.reduce((acc, style) => {
  23. // style.filterProps.forEach(prop => {
  24. // acc[prop] = style;
  25. // });
  26. // return acc;
  27. // }, {});
  28. // const fn = props => {
  29. // return Object.keys(props).reduce((acc, prop) => {
  30. // if (handlers[prop]) {
  31. // return merge(acc, handlers[prop](props));
  32. // }
  33. // return acc;
  34. // }, {});
  35. // };
  36. fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce(function (acc, style) {
  37. return (0, _extends2.default)(acc, style.propTypes);
  38. }, {}) : {};
  39. fn.filterProps = styles.reduce(function (acc, style) {
  40. return acc.concat(style.filterProps);
  41. }, []);
  42. return fn;
  43. }
  44. var _default = compose;
  45. exports.default = _default;