100 lines
No EOL
2.9 KiB
JavaScript
Executable file
100 lines
No EOL
2.9 KiB
JavaScript
Executable file
'use strict';
|
|
|
|
exports.__esModule = true;
|
|
|
|
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; };
|
|
|
|
exports.isReactChildren = isReactChildren;
|
|
exports.createRouteFromReactElement = createRouteFromReactElement;
|
|
exports.createRoutesFromReactChildren = createRoutesFromReactChildren;
|
|
exports.createRoutes = createRoutes;
|
|
|
|
var _react = require('react');
|
|
|
|
var _react2 = _interopRequireDefault(_react);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
function isValidChild(object) {
|
|
return object == null || _react2.default.isValidElement(object);
|
|
}
|
|
|
|
function isReactChildren(object) {
|
|
return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);
|
|
}
|
|
|
|
function createRoute(defaultProps, props) {
|
|
return _extends({}, defaultProps, props);
|
|
}
|
|
|
|
function createRouteFromReactElement(element) {
|
|
var type = element.type;
|
|
var route = createRoute(type.defaultProps, element.props);
|
|
|
|
if (route.children) {
|
|
var childRoutes = createRoutesFromReactChildren(route.children, route);
|
|
|
|
if (childRoutes.length) route.childRoutes = childRoutes;
|
|
|
|
delete route.children;
|
|
}
|
|
|
|
return route;
|
|
}
|
|
|
|
/**
|
|
* Creates and returns a routes object from the given ReactChildren. JSX
|
|
* provides a convenient way to visualize how routes in the hierarchy are
|
|
* nested.
|
|
*
|
|
* import { Route, createRoutesFromReactChildren } from 'react-router'
|
|
*
|
|
* const routes = createRoutesFromReactChildren(
|
|
* <Route component={App}>
|
|
* <Route path="home" component={Dashboard}/>
|
|
* <Route path="news" component={NewsFeed}/>
|
|
* </Route>
|
|
* )
|
|
*
|
|
* Note: This method is automatically used when you provide <Route> children
|
|
* to a <Router> component.
|
|
*/
|
|
function createRoutesFromReactChildren(children, parentRoute) {
|
|
var routes = [];
|
|
|
|
_react2.default.Children.forEach(children, function (element) {
|
|
if (_react2.default.isValidElement(element)) {
|
|
// Component classes may have a static create* method.
|
|
if (element.type.createRouteFromReactElement) {
|
|
var route = element.type.createRouteFromReactElement(element, parentRoute);
|
|
|
|
if (route) routes.push(route);
|
|
} else {
|
|
routes.push(createRouteFromReactElement(element));
|
|
}
|
|
}
|
|
});
|
|
|
|
return routes;
|
|
}
|
|
|
|
/**
|
|
* Creates and returns an array of routes from the given object which
|
|
* may be a JSX route, a plain object route, or an array of either.
|
|
*/
|
|
function createRoutes(routes) {
|
|
if (isReactChildren(routes)) {
|
|
routes = createRoutesFromReactChildren(routes);
|
|
} else if (routes && !Array.isArray(routes)) {
|
|
routes = [routes];
|
|
}
|
|
|
|
return routes;
|
|
}
|
|
|
|
|
|
//////////////////
|
|
// WEBPACK FOOTER
|
|
// ./~/react-router/lib/RouteUtils.js
|
|
// module id = 205
|
|
// module chunks = 4
|