{"version":3,"file":"mixins-link.mjs","sources":["../../../../../src/utils/mixins/mixins-link.ts"],"sourcesContent":["import { computed } from 'vue';\r\nimport { isClient } from '../helpers';\r\n\r\nexport const mixinsLink = (proxy, { to, replace, target }) => {\r\n  // computed\r\n\r\n  // 链接\r\n  const linkUrl = computed(() => {\r\n    // 跳转的链接，支持 vue-router 对象\r\n    const type = typeof to;\r\n\r\n    // 判断是否字符串\r\n    if (type !== 'string') {\r\n      return null;\r\n    }\r\n\r\n    // absolute url 不需要路由\r\n    if (to.includes('//')) {\r\n      return to;\r\n    }\r\n\r\n    // router\r\n    const router = proxy.$router;\r\n\r\n    // 是否有路由\r\n    if (router) {\r\n      // 当前路由\r\n      const current = proxy.$route;\r\n\r\n      // 路由对象\r\n      const route = router.resolve(to, current);\r\n\r\n      return route ? route.href : to;\r\n    }\r\n\r\n    return to;\r\n  });\r\n\r\n  // methods\r\n\r\n  // 打开新窗口\r\n  const handleOpenTo = () => {\r\n    if (!isClient) {\r\n      return;\r\n    }\r\n\r\n    const router = proxy.$router;\r\n    let _to = to;\r\n\r\n    // 路由对象\r\n    if (router) {\r\n      // 当前路由\r\n      const current = proxy.$route;\r\n\r\n      // 路由对象\r\n      const route = router.resolve(to, current);\r\n\r\n      _to = route ? route.href : to;\r\n    }\r\n\r\n    // 判断是否字符串\r\n    if (typeof to === 'string') {\r\n      return;\r\n    }\r\n\r\n    window.open(_to);\r\n  };\r\n\r\n  // 跳转新链接\r\n  const handleLink = (newWindow = false) => {\r\n    if (!isClient) {\r\n      return;\r\n    }\r\n\r\n    // 打开新窗口\r\n    if (newWindow) {\r\n      handleOpenTo();\r\n    }\r\n    // 没有打开新窗口\r\n    else {\r\n      const router = proxy.$router;\r\n\r\n      // 路由对象\r\n      if (router) {\r\n        // href\r\n        if (typeof to === 'string' && to.includes('//')) {\r\n          window.location.href = to;\r\n        }\r\n        // replace\r\n        else {\r\n          replace\r\n            ? proxy.$router.replace(to, () => {})\r\n            : proxy.$router.push(to, () => {});\r\n        }\r\n      }\r\n      // 普通链接\r\n      else {\r\n        window.location.href = to;\r\n      }\r\n    }\r\n  };\r\n\r\n  // 检查点击事件\r\n  const handleCheckClick = (event: Event, newWindow = false) => {\r\n    // 跳转的链接\r\n    if (to) {\r\n      // 相当于 a 链接的 target 属性\r\n      if (target === '_blank') {\r\n        handleOpenTo();\r\n\r\n        return false;\r\n      }\r\n      // 没有打开新窗口\r\n      else {\r\n        event.preventDefault();\r\n\r\n        handleLink(newWindow);\r\n      }\r\n    }\r\n  };\r\n\r\n  return {\r\n    // computed\r\n    linkUrl,\r\n\r\n    // methods\r\n    handleOpenTo,\r\n    handleLink,\r\n    handleCheckClick,\r\n  };\r\n};\r\n"],"names":[],"mappings":"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"}