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;