# src/index.js File

    export {Model} from './model'
    export {Control,Sync,fetch} from './control'
    export {View} from './view'
    export {enumerable as action,noenumerable} from './decorator'
    //export {binding} from './valuelink'

    import extend from 'extend'
    import RTools from 'gfs-react-tools'
    import {getModels,emptyModels} from './model'
    import thunkMiddleware from 'redux-thunk'

    /**
     * 提供Model、View、Control、Sync、RTools等系列便捷类库
     * @module gfs-react-mvc
     * */

    /**
     * 页面渲染
     * @class Page
     * */

    /**
     *
     * @method page
     * @param opts {object} 可以直接等于react component
     * @param opts.middleware {array} 可选，中间件集合
     * @param opts.module {react component} 必填，需要渲染在页面的组件
     * @param opts.devTools {object} 可选，数据模型调试，可视化面板，可以查看数据模型结构
     * @param opts.bar {object} 可选，异步数据请求时加载状态栏
    * @param opts.debug {Boolean} 可选，是否是调试状态，调试状态下会输出日志信息
     * @param opts.agent {string} 可选，默认值为pc，三种可选值：pc、wap、other，other已bar字段对象为准
     * @param opts.container {string} 可选，默认为root，组件放在页面的容器id
     * @return RTools
     * @example
     *
     *      imoprt {page} from 'gfs-react-mvc'
     *      import Module from './TestComponent'
     *
     *      //渲染到页面
     *      page(Module)
     * */
    export function page(opts={}){

        if(opts && typeof(opts.module) === 'undefined'){
            opts = {
                module:opts
            }
        }

        opts.middleware = [thunkMiddleware].concat(opts.middleware||[])

        if(opts.debug || (typeof(opts.debug)=='undefined' &&location&& location.port!='') ){
            opts.middleware.push(require('redux-logger')() )
        }

        let rtools = new RTools(extend({
            //可选
            middleware:[],
            //必填
            module:null,
            //可选
            reducers:getModels(),
            //可选n
            //devTools:DevTools,
            //可选 默认loadingbarComponent
            //bar:null,
            //可选  loadingbar平台（pc/wap/other）other直接使用bar字段作为参数
            //agent:'pc',
            //可选  react component放取的节点id
            container:'root',
            debug:false
        },opts) )

        emptyModels()

        return rtools
    }