Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

var React = _interopRequireWildcard(require("react"));

var _renderProps = _interopRequireDefault(require("./renderProps"));

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    default: obj
  };
}

function _interopRequireWildcard(obj) {
  if (obj && obj.__esModule) {
    return obj;
  } else {
    var newObj = {};

    if (obj != null) {
      for (var key in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};

          if (desc.get || desc.set) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
    }

    newObj.default = obj;
    return newObj;
  }
}

const isElement = element => typeof element.type === 'function';

const compose = (...elements) => {
  return composedProps => {
    // Stack children arguments recursively and pass
    // it down until the last component that render children
    // with these stacked arguments
    function stackProps(i, elements, propsList = []) {
      const element = elements[i];
      const isTheLast = i === 0; // Check if is latest component.
      // If is latest then render children,
      // Otherwise continue stacking arguments

      const renderFn = props => isTheLast ? (0, _renderProps.default)(composedProps, ...propsList.concat(props)) : stackProps(i - 1, elements, propsList.concat(props)); // Clone a element if it's passed created as <Element initial={} />
      // Or create it if passed as just Element


      const elementFn = isElement(element) ? React.cloneElement : React.createElement;
      return elementFn(element, {}, renderFn);
    }

    return stackProps(elements.length - 1, elements.reverse());
  };
};

var _default = compose;
exports.default = _default;