import Vue from 'vue'

import mixins from './mixins'

import VueBetterScroll from 'vue2-better-scroll'
import VueAMap from 'vue-amap'
import { lazyAMapApiLoaderInstance } from 'vue-amap'

import UtilsPlugin from './plugins/utils'
import ApiPlugin from './plugins/api'
import TemplatePlugin from './plugins/template'
import NotifierPlugin from './plugins/notifier'
import DataViewPlugin from './plugins/data-view'

// https://zh.nuxtjs.org/guide/plugins#同时注入
export default ({ store, isClient }, inject) => {
  // === 外部插件 ===
  // 滚动加载更多组件
  Vue.use(VueBetterScroll)
  // 地图插件
  Vue.use(VueAMap)
  // 初始化vue-amap
  VueAMap.initAMapApiLoader({
    // 高德的key
    key: 'ef2eab681308c797896f023a49889e2c',
    // 插件集合
    plugin: [
      'AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView',
      'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor',
      'AMap.Geolocation', 'AMap.Geocoder'
    ],
    // 高德 sdk 版本,默认为 1.4.4
    v: '1.4.4'
  });

  // === 内部插件 ===
  // Vue 插件式引入:Utils模块
  Vue.use(UtilsPlugin)
  // Vue 插件式引入:Api模块
  Vue.use(ApiPlugin, { store, isClient })
  // Vue 插件式引入,传入 store 用于内部动态 registerModule 到 Vuex store
  Vue.use(NotifierPlugin, { store, isClient })
  // Vue 插件式引入:DataView
  Vue.use(DataViewPlugin)
  // Vue 插件式引入:Template
  Vue.use(TemplatePlugin)
  // 混入所有基础函数
  Vue.mixin(mixins)
}