/**
 * 系统业务模块
 * @param Vue 外部接入Vue
 * @param params showList:打印加载的应用;apps:加载的应用文件名数组
 */

const install = function (Vue, params) {
  if (install.installed) return Promise.resolve()
  else {
    // 遍历工作控件内的应用
    let apps = []
    let contexts = require.context('.', true, /\.(\/.+)\/App[^\/]+\.vue$/)
    if (contexts) {
      contexts.keys().map(e => {
        if (contexts(e).default) {
          if (params?.apps) {
            if (params?.apps.includes(contexts(e).default.name)) {
              apps.push(contexts(e).default)
              Vue.component(contexts(e).default.name, contexts(e).default)
            }
          } else {
            apps.push(contexts(e).default)
            Vue.component(contexts(e).default.name, contexts(e).default)
          }
        }
      })
      // apps.map(e=>{
      //   console.log(e.name,e.label)
      // })
      !!params?.showList && console.log(apps.map(e => e.name))
    }
    return Promise.resolve(apps)
  }

}

// 判断是否是直接引入文件
if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}

export default {
  // 导出的对象必须具有 install，才能被 Vue.use() 方法安装
  install
}
