{"version":3,"file":"use-uni-vue.mjs","sources":["../../../../../../packages/components/uni-vue/src/use-uni-vue.ts"],"sourcesContent":["import { onMounted, ref, useAttrs, nextTick, useTemplateRef, watch } from 'vue'\nimport { http } from '@el-plus/utils/http'\nimport { componentType } from './uni-vue'\nimport axios from 'axios'\nimport { ElMessage, ElLoading } from 'element-plus'\n\nlet Vue2: any = null\nlet VueRouter3: any = null\n\nconst loadModules = async () => {\n  if (!Vue2) {\n    const vue2Module = await import('vue2')\n    Vue2 = vue2Module.default\n  }\n  if (!VueRouter3) {\n    const routerModule = await import('vue-router3')\n    VueRouter3 = routerModule.default\n  }\n}\n\nexport const useUniVue = (props, _emit) => {\n  const uniVue = useTemplateRef<HTMLElement>('uniVue')\n  const { type } = props\n  const loading = ref(true)\n  const isAddress = type === 'address'\n  const isBpm = type === 'bpm'\n  //   是否需要加载静态资源\n  const isLoadStatic = componentType.indexOf(type) > -1\n  const attrs = useAttrs()\n  const setupWindow = () => {\n    Vue2.use(VueRouter3)\n    if (!window.Vue) {\n      window.Vue = Vue2\n    }\n    // 地址\n    if (isAddress) {\n      if (!window.axios) {\n        window.axios = axios\n      }\n      if (!window.ElementUI) {\n        window.ElementUI = {\n          Message: ElMessage,\n          Loading: ElLoading,\n        }\n      }\n    }\n  }\n  const prepareVueAttributes = () => {\n    const events = {}\n    const _props = {} as Record<string, any>\n    Object.keys(attrs).forEach((key) => {\n      if (key.startsWith('on')) {\n        let eventName = key.slice(2) // 去掉 'on' 前缀\n        if (eventName.startsWith('Update:')) {\n          // 处理 v-model:xxx 事件，转换为 update:xxx\n          // 例如：onUpdate:modelValue -> update:modelValue、onUpdate:dialogFormData -> update:dialogFormData\n          eventName = 'update:' + eventName.slice(7)\n\n          // 如果是v-model, 转换为vue2对应的input\n          if (eventName === 'update:modelValue') {\n            eventName = 'input'\n          }\n        } else {\n          // 将驼峰命名转换为短横线命名\n          // 例如： onInitComplete-> init-complete (因为测试发现用initComplete不生效)\n          eventName = eventName.replace(/([A-Z])/g, '-$1').toLowerCase()\n          // 删除第一位的-\n          eventName = eventName.slice(1)\n        }\n        events[eventName] = attrs[key]\n      } else {\n        if (key === 'modelValue') {\n          // 处理 v-model转换为vue2的value\n          _props.value = attrs[key] // eslint-disable-line\n        } else {\n          _props[key] = attrs[key]\n        }\n      }\n    })\n    return {\n      on: events,\n      props: _props,\n    }\n  }\n\n  const cdn = '//j01.hongxinshop.com/'\n  const getStaticJsUrl = () => {\n    switch (type) {\n      case 'bpm':\n        return `${cdn}bpm-common/common/index.umd.min.js`\n      case 'address':\n        return `http://localhost:8001/dist/hx-address.js`\n        return `./hx-address.js`\n        return `${cdn}address/static/hx-address.js`\n      default:\n        return ''\n    }\n  }\n  const getStaticCssUrl = () => {\n    switch (type) {\n      case 'bpm':\n        return `/bpm-common/common/index.css`\n      case 'address':\n        return `/address/static/hx-address.css`\n      default:\n        return ''\n    }\n  }\n  const loadStaticJsResource = async () => {\n    const promises: Promise<void>[] = []\n\n    // 检查并加载element-ui.js（非bpm类型）\n    if (!isBpm && !window.ElementUIComponents) {\n      await new Promise((resolve, reject) => {\n        const script = document.createElement('script')\n        script.src = '/element-ui.js'\n        script.onload = resolve\n        script.onerror = reject\n        document.body.appendChild(script)\n      })\n    }\n\n    // 检查并加载原有的JS资源\n    let globalName\n    if (isAddress) {\n      globalName = 'hxAddress'\n    }\n    if (isBpm) {\n      globalName = 'index'\n    }\n\n    if (globalName && !window[globalName]) {\n      promises.push(\n        new Promise((resolve, reject) => {\n          const script = document.createElement('script')\n          script.src = getStaticJsUrl()\n          script.onload = () => resolve()\n          script.onerror = reject\n          document.body.appendChild(script)\n        }),\n      )\n    }\n\n    return Promise.all(promises)\n  }\n  const loadStaticCssResource = async () => {\n    const cssPromises: Promise<string>[] = []\n\n    // 为非bpm类型加载element-ui.css\n    if (!isBpm) {\n      cssPromises.push(\n        http\n          .request<string>('/index.css', {\n            responseReturn: 'raw',\n            baseURL: '',\n          })\n          .then((res) => res.data),\n      )\n    }\n\n    // 加载原有的CSS资源\n    const staticCssUrl = getStaticCssUrl()\n    if (staticCssUrl) {\n      cssPromises.push(\n        http\n          .request<string>(staticCssUrl, {\n            responseReturn: 'raw',\n          })\n          .then((res) => res.data),\n      )\n    }\n\n    const cssContents = await Promise.all(cssPromises)\n    return cssContents.join('\\n')\n  }\n  let instance\n  const setupInstance = async () => {\n    if (instance) {\n      return\n    }\n    await loadModules()\n    setupWindow()\n    const el = uniVue.value\n    const shadowRoot = el!.attachShadow({ mode: 'open' })\n    const container = document.createElement('div')\n    if (isLoadStatic) {\n      try {\n        loading.value = true\n        const [_res1, css] = await Promise.all([\n          loadStaticJsResource(),\n          loadStaticCssResource(),\n        ])\n        const style = document.createElement('style')\n        style.textContent = css\n        shadowRoot.appendChild(style)\n        if (isAddress && !document.querySelector('style[data-hx-address-style]')) {\n          const headStyle = document.createElement('style')\n          headStyle.textContent = css\n          headStyle.setAttribute('data-hx-address-style', 'true')\n          document.head.appendChild(headStyle)\n        }\n      } catch (error) {\n        console.log(error)\n      } finally {\n        loading.value = false\n      }\n    }\n    shadowRoot.appendChild(container)\n\n    instance = new Vue2({\n      el: container,\n      router: new VueRouter3(),\n      render: (h) => {\n        const { on: vue2Events, props: vue2Props } = prepareVueAttributes()\n        return h(props.name, {\n          props: vue2Props,\n          on: vue2Events,\n        })\n      },\n    })\n  }\n\n  const updateVue2Instance = () => {\n    if (!instance) return\n    const child = instance.$children[0]\n    if (child) {\n      const { props: vue2Props } = prepareVueAttributes()\n      Object.assign(child.$options.propsData, vue2Props)\n      if (child._props) {\n        Object.keys(vue2Props).forEach((key) => {\n          const newValue = vue2Props[key]\n          const oldValue = child._props[key]\n          if (newValue === oldValue && typeof newValue === 'object' && newValue !== null) {\n            const temp = {}\n            child._props[key] = temp\n          }\n          child._props[key] = newValue\n        })\n      }\n      child.$forceUpdate()\n    }\n    instance.$forceUpdate()\n  }\n\n  Object.keys(attrs).forEach((key) => {\n    if (!key.startsWith('on')) {\n      \n      watch(\n        () => attrs[key],\n        () => {\n          console.log(key,'key');\n          nextTick(() => {\n            try {\n              updateVue2Instance()\n            } catch (e) {\n              // 忽略更新异常\n            }\n          })\n        },\n        {\n          deep: true,\n        },\n      )\n    }\n  })\n\n  onMounted(() => {\n    setupInstance()\n  })\n\n  return {\n    loading,\n  }\n}\n"],"names":[],"mappings":"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"}