text: var React = require('react');
  var invariant = require('invariant');
  var PropTypes = require('../PropTypes');
  var RouteHandler = require('./RouteHandler');
  
  /**
   * <Route> components specify components that are rendered to the page when the
   * URL matches a given pattern.
   *
   * Routes are arranged in a nested tree structure. When a new URL is requested,
   * the tree is searched depth-first to find a route whose path matches the URL.
   * When one is found, all routes in the tree that lead to it are considered
   * "active" and their components are rendered into the DOM, nested in the same
   * order as they are in the tree.
   *
   * The preferred way to configure a router is using JSX. The XML-like syntax is
   * a great way to visualize how routes are laid out in an application.
   *
   *   var routes = [
   *     <Route handler={App}>
   *       <Route name="login" handler={Login}/>
   *       <Route name="logout" handler={Logout}/>
   *       <Route name="about" handler={About}/>
   *     </Route>
   *   ];
   *   
   *   Router.run(routes, function (Handler) {
   *     React.render(<Handler/>, document.body);
   *   });
   *
   * Handlers for Route components that contain children can render their active
   * child route using a <RouteHandler> element.
   *
   *   var App = React.createClass({
   *     render: function () {
   *       return (
   *         <div className="application">
   *           <RouteHandler/>
   *         </div>
   *       );
   *     }
   *   });
   *
   * If no handler is provided for the route, it will render a matched child route.
   */
  class Route extends React.Component {
  
    render() {
      invariant(
        false,
        '%s elements are for router configuration only and should not be rendered',
        this.constructor.name
      );
    }
  
  }
  
  // TODO: Include these in the above class definition
  // once we can use ES7 property initializers.
  // https://github.com/babel/babel/issues/619
  
  Route.propTypes = {
    name: PropTypes.string,
    path: PropTypes.string,
    handler: PropTypes.func,
    ignoreScrollBehavior: PropTypes.bool
  };
  
  Route.defaultProps = {
    handler: RouteHandler
  };
  
  module.exports = Route;
  