
/**
 * 自定义全局组件的自动注册
 */

import { defineAsyncComponent,createVNode,render } from 'vue';

export default {
  install(Vue) {

    //自动组件异步注册
    let files = import.meta.glob('./components/*.vue');//异步导入
    // const files = import.meta.globEager('./global/*.vue');//同步导入
    for(let fileName in files) {
      let moduleName = fileName.replace(/^.*\/(\w+)\.vue$/,"$1");
      Vue.component(moduleName, defineAsyncComponent(files[fileName]));//注册异步组件
      console.debug("注册异步组件",moduleName)
      // Vue.component(moduleName, files[fileName].default);//注册同步组件
    }

    //自动组件异步注册
    files = import.meta.glob('./custom/*.vue');//异步导入
    // const files = import.meta.globEager('./global/*.vue');//同步导入
    for(let fileName in files) {
      let moduleName = fileName.replace(/^.*\/(\w+)\.vue$/,"$1");
      Vue.component(moduleName, defineAsyncComponent(files[fileName]));//注册异步组件
      console.debug("注册异步组件",moduleName)
      // Vue.component(moduleName, files[fileName].default);//注册同步组件
    }

    //自动单例组件创建
    // files = import.meta.globEager('./singleton/*.vue');//同步导入
    // for(let fileName in files) {
    //   let moduleName = fileName.replace(/^.*\/(\w+)\.vue$/,"$1");
    //   Vue.component("_"+moduleName, files[fileName].default);
    //   console.debug(Vue);
    //    let instance=  createVNode("_"+moduleName);
    //    console.debug(instance);

    //   render(instance, document.querySelector('body'));
    //   // window.instance=instance;
    //   // Vue.config.globalProperties['$'+moduleName]=instance;


    //   // Vue.component(moduleName, files[fileName].default);
    //   // console.debug(Vue);
    //   // const instance = createApp(files[fileName].default);
    //   // let div = document.createElement("div");
    //   // div.setAttribute("data-name",moduleName);
    //   // document.body.appendChild(div);
    //   // let vm = instance.mount(div);
    //   // window.vm=vm;
    //   // Vue.config.globalProperties['$'+moduleName]=vm;
    // }
  }
}
