text: import Vue from 'vue';
  
  function callHook$1(vm, hook, params) {
    var handlers = vm.$options[hook];
    if (hook === 'onError' && handlers) {
      handlers = [handlers];
    }
    if(typeof handlers === 'function'){
      handlers = [handlers]
    }
  
    var ret;
    if (handlers) {
      for (var i = 0, j = handlers.length; i < j; i++) {
  //      try {
          ret = handlers[i].call(vm, params);
  //       } catch (e) {//fixed by xxxxxx
  //         handleError(e, vm, (hook + " hook"));
  //       }
      }
    }
    if (vm._hasHookEvent) {
      vm.$emit('hook:' + hook);
    }
  
    // for child
    if (vm.$children.length) {
      vm.$children.forEach(function (v) {
        return callHook$1(v, hook, params);
      });
    }
  
    return ret
  }
  
  function getRootVueVm(page) {
    return page.$vm.$root;
  }
  
  export default function (App) {
    return {
      // 页面的初始数据
      data: {
        $root: {}
      },
  
      // mp lifecycle for vue
      // 生命周期函数--监听页面加载
      onLoad:function onLoad(query) {
        //页面加载的时候
        var app = new Vue(App);
        // 挂载Vue对象到page上
        this.$vm = app;
        var rootVueVM = app.$root;
        rootVueVM.__wxExparserNodeId__ = this.__wxExparserNodeId__//fixed by xxxxxx(createIntersectionObserver)
        rootVueVM.__wxWebviewId__ = this.__wxWebviewId__//fixed by xxxxxx(createIntersectionObserver)
        
        //初始化mp对象
        if (!rootVueVM.$mp) {
          rootVueVM.$mp = {};
        }
        var mp = rootVueVM.$mp;
        mp.mpType = 'page';
        mp.page = this;
        mp.query = query;
        mp.status = 'load';
        //mount 要在 mp.status = 'load';赋值之后，不然mount方法会重复添加微信Page
        //具体原因参考mpvue核心库源码，_initMP方法
        app.$mount();
      },
  
      handleProxy: function handleProxy(e) {
        var rootVueVM = getRootVueVm(this);
        return rootVueVM.$handleProxyWithVue(e)
      },
  
      // 生命周期函数--监听页面显示
      onShow:function onShow() {
        var rootVueVM = getRootVueVm(this);
        var mp = rootVueVM.$mp;
        mp.status = 'show';
        callHook$1(rootVueVM, 'onShow');
        //   // 只有页面需要 setData
        rootVueVM.$nextTick(function () {
          rootVueVM._initDataToMP();
        });
      },
  
      // 生命周期函数--监听页面初次渲染完成
      onReady:function onReady() {
        var rootVueVM = getRootVueVm(this);
        var mp = rootVueVM.$mp;
        mp.status = 'ready';
        callHook$1(rootVueVM, 'onReady');
      },
  
      // 生命周期函数--监听页面隐藏
      onHide: function onHide() {
        var rootVueVM = getRootVueVm(this);
        var mp = rootVueVM.$mp;
        mp.status = 'hide';
        callHook$1(rootVueVM, 'onHide');
      },
  
      // 生命周期函数--监听页面卸载
      onUnload: function onUnload() {
        var rootVueVM = getRootVueVm(this);
        callHook$1(rootVueVM, 'onUnload');
        rootVueVM.$destroy();
      },
  
      // 页面相关事件处理函数--监听用户下拉动作
      onPullDownRefresh: function onPullDownRefresh() {
        var rootVueVM = getRootVueVm(this);
        callHook$1(rootVueVM, 'onPullDownRefresh');
      },
  
      // 页面上拉触底事件的处理函数
      onReachBottom: function onReachBottom() {
        var rootVueVM = getRootVueVm(this);
        callHook$1(rootVueVM, 'onReachBottom');
      },
  
      // Do something when page scroll
      onPageScroll: function onPageScroll(options) {
        var rootVueVM = getRootVueVm(this);
        callHook$1(rootVueVM, 'onPageScroll', options);
      },
  
      // 当前是 tab 页时，点击 tab 时触发
      onTabItemTap: function onTabItemTap(options) {
        var rootVueVM = getRootVueVm(this);
        callHook$1(rootVueVM, 'onTabItemTap', options);
      },
  		
      // // 用户点击右上角分享
      onShareAppMessage: App.onShareAppMessage ?
        function (options) {
          var rootVueVM = getRootVueVm(this);
          return callHook$1(rootVueVM, 'onShareAppMessage', options);
        } : null,
  
      //fixed by xxxxxx
      onNavigationBarButtonTap: function onNavigationBarButtonTap(options) {
          var rootVueVM = getRootVueVm(this);
      		callHook$1(rootVueVM, "onNavigationBarButtonTap", options)
      },
      onNavigationBarSearchInputChanged: function onNavigationBarSearchInputChanged(options) {
          var rootVueVM = getRootVueVm(this);
      		callHook$1(rootVueVM, "onNavigationBarSearchInputChanged", options)
      },
      onNavigationBarSearchInputConfirmed: function onNavigationBarSearchInputConfirmed(options) {
          var rootVueVM = getRootVueVm(this);
      		callHook$1(rootVueVM, "onNavigationBarSearchInputConfirmed", options)
      },
      onNavigationBarSearchInputClicked: function onNavigationBarSearchInputClicked(options) {
          var rootVueVM = getRootVueVm(this);
      		callHook$1(rootVueVM, "onNavigationBarSearchInputClicked", options)
      },
      onBackPress: function onBackPress(options) {
          var rootVueVM = getRootVueVm(this);
      		return callHook$1(rootVueVM, "onBackPress",options)
      },
  		$getAppWebview:function (e) {
  				return plus.webview.getWebviewById('' + this.__wxWebviewId__)
  		}
    };
  }
  