'use strict' ;
var _classCallCheck = function ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } } ;
var _createClass = ( function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( 'value' in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ) ( ) ;
var _inherits = function ( subClass , superClass ) { if ( typeof superClass !== 'function' && superClass !== null ) { throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) subClass . _ _proto _ _ = superClass ; } ;
var React = require ( 'react' ) ;
var invariant = require ( 'react/lib/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 } / >
* < / R o u t e >
* ] ;
*
* 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 class = "application" >
* < RouteHandler / >
* < / d i v >
* ) ;
* }
* } ) ;
*
* If no handler is provided for the route , it will render a matched child route .
* /
var Route = ( function ( _React$Component ) {
function Route ( ) {
_classCallCheck ( this , Route ) ;
if ( _React$Component != null ) {
_React$Component . apply ( this , arguments ) ;
}
}
_inherits ( Route , _React$Component ) ;
_createClass ( Route , [ {
key : 'render' ,
value : function render ( ) {
invariant ( false , '%s elements are for router configuration only and should not be rendered' , this . constructor . name ) ;
}
} ] ) ;
return Route ;
} ) ( React . Component ) ;
// 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 ;