{"version":3,"file":"use-navigation.mjs","sources":["../../../../packages/hooks/use-navigation.ts"],"sourcesContent":["import { useRouter, useRoute } from 'vue-router'\nimport { computed } from 'vue'\nimport type { NavigationConfig } from '@el-plus/utils'\nimport * as qs from 'qs'\nexport type PageMode = 'add' | 'edit' | 'browse'\n\nexport interface Config {\n  // mode变化时调用\n  onModeChange?: (mode: PageMode) => void\n}\n\nexport const useNavigation = (config: Config = {}) => {\n  const { onModeChange } = config\n  const router = useRouter()\n  const route = useRoute()\n  /**\n   *  打开saas窗口\n   * @param id  菜单id\n   * @param name  路由模块name, 适用于内部跳转\n   * @param title  菜单名称,适用于传外部url跳转\n   * @param url  菜单url\n   * @param query  url参数\n   */\n  const $goto = (r: NavigationConfig) => {\n    const item: NavigationConfig = {\n      id: Date.now(),\n      name: '',\n      url: '',\n    }\n    const openTab = window.parent.openMenuSelect\n\n    if (r.url) {\n      item.url = r.url\n      item.name = r.name\n      if (openTab) {\n        openTab(item)\n      } else {\n        window.open(item.url)\n      }\n      return\n    }\n    const routes = router.getRoutes() || []\n\n    const projectRootPath = window.location.pathname\n\n    const findRoute = (routes, distRoute) => {\n      let queen = [...routes]\n\n      while (queen.length) {\n        const first = queen.shift()\n        if (first.children) {\n          queen = queen.concat(first.children)\n        }\n\n        if (first.name == distRoute.name) {\n          return first\n        }\n      }\n    }\n    const route = findRoute(routes, r)\n\n    if (route) {\n      item.id = r.id || item.id\n\n      item.name =\n        r.title ||\n        (window.$hxt ? window.$hxt(route.meta.title) : route.meta.title)\n\n      item.url = `${projectRootPath}#${route.path}?${qs.stringify(r.query, { encode: false })}`\n\n      if (openTab) {\n        openTab(item)\n      } else {\n        router.push(r)\n      }\n    } else {\n      console.error('没有找到对应的路由')\n    }\n  }\n\n  const $closeTag = () => {\n    if (!window.parent.selectedRouterTags) {\n      return\n    }\n    const currentRouterTagIndex = window.parent.currentRouterTagIndex!\n    const preIndex = window.parent.currentRouterTagIndex! - 1\n    const currentTag = window.parent.selectedRouterTags[currentRouterTagIndex]\n    const preTag = window.parent.selectedRouterTags[preIndex]\n    window.parent?.closeTag?.(currentTag)\n    window.parent?.openMenuSelect?.(preTag)\n  }\n  const mode = computed(() => {\n    return route.query.mode as PageMode\n  })\n  const isBrowse = computed(() => mode.value === 'browse')\n  const isEdit = computed(() => mode.value === 'edit')\n  const isAdd = computed(() => mode.value === 'add')\n  // 修改mode\n  const setMode = (newMode: PageMode, callBack?: (mode: PageMode) => void) => {\n    router.replace({\n      query: {\n        ...route.query,\n        mode: newMode,\n      },\n    })\n    if (callBack) {\n      callBack(newMode)\n    } else {\n      onModeChange?.(newMode)\n    }\n  }\n  return {\n    $goto,\n    $closeTag,\n    mode,\n    isBrowse,\n    isEdit,\n    isAdd,\n    setMode,\n  }\n}\n"],"names":["routes","route"],"mappings":"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"}