react-router
Version:
A complete routing library for React
37 lines (33 loc) • 1.52 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
import React, { createElement } from 'react';
import RouterContext from './RouterContext';
export default (function () {
for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
middlewares[_key] = arguments[_key];
}
var withContext = middlewares.map(function (m) {
return m.renderRouterContext;
}).filter(function (f) {
return f;
});
var withComponent = middlewares.map(function (m) {
return m.renderRouteComponent;
}).filter(function (f) {
return f;
});
var makeCreateElement = function makeCreateElement() {
var baseCreateElement = arguments.length <= 0 || arguments[0] === undefined ? createElement : arguments[0];
return function (Component, props) {
return withComponent.reduceRight(function (previous, renderRouteComponent) {
return renderRouteComponent(previous, props);
}, baseCreateElement(Component, props));
};
};
return function (renderProps) {
return withContext.reduceRight(function (previous, renderRouterContext) {
return renderRouterContext(previous, renderProps);
}, React.createElement(RouterContext, _extends({}, renderProps, {
createElement: makeCreateElement(renderProps.createElement)
})));
};
});