/**
 * 名称：自定义Route组件，针对React-Router的Route扩展
 * 日期：2016-11-14
 * 作者：Beven
 * 描述：无
 */

//>> 引入依赖
import { Route, routerShape } from 'react-router';
import { PropTypes, Component } from "react";

export default class Scene extends Route {

    static createRouteFromReactElement(element) {
        let props = element.props;
        let asyncComponent = props.async;
        if (!asyncComponent) {
            return super.createRouteFromReactElement(element);
        }
        let cloneElement = Object.assign({}, element);
        let cloneProps = Object.assign({}, props);
        if (asyncComponent.prototype instanceof Component) {
            cloneProps.component = asyncComponent;
        }else{
            cloneProps.getComponent = (location, cb) => asyncComponent((m) => cb(null, (m.default||m)));
        }
        cloneElement.props = cloneProps;
        return super.createRouteFromReactElement(cloneElement);
    }

    /**
     * 组件属性类型定义
     */
    static propTypes = {
        //路由标题，通常可以用作页面的标题
        title: PropTypes.string,
        //路由需要的权限，通常用标记该路由是否需要登录，或者其他操作之类的 例如:permission:'login'
        permission: PropTypes.string
    }
}