{"version":3,"file":"dep-4fadf0c3.mjs","sources":["../../src/menu/menu.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\nimport props from './props';\nimport { MenuItem as MenuItemType } from './type';\nimport omit from 'lodash/omit';\nimport { Menu, HeadMenu, Submenu, MenuItem, Icon } from 'tdesign-vue-next';\nimport { navigateTo, redirectTo, getQueryParams } from '@tlbs/galaxy-sdk';\n\nexport default defineComponent({\n  name: 'TlbsMenu',\n  props: {\n    ...props,\n  },\n  setup() {\n    const getPageId = (path: string) => {\n      if (path?.lastIndexOf('/') === -1) return '';\n      const url = path?.substring(path?.lastIndexOf('/'));\n      if (url.indexOf('?') !== -1) {\n        return url?.substring(url?.lastIndexOf('/') + 1, url?.indexOf('?'));\n      }\n      return url?.substring(url?.lastIndexOf('/') + 1);\n    };\n\n    const onClickMenuItem = (options: MenuItemType) => {\n      const { to, replace } = options;\n      if (!to) return;\n      const routerApi = replace ? redirectTo : navigateTo;\n      if (typeof to === 'object') {\n        routerApi({\n          pageId: getPageId(to.path || ''),\n          params: to.params || {},\n        });\n      } else if (typeof to === 'string') {\n        routerApi({\n          pageId: getPageId(to),\n          params: getQueryParams(to),\n        });\n      }\n    };\n\n    const findMenuItemByPath = (\n      menus: MenuItemType[],\n      targetPath: string,\n    ): MenuItemType | null => {\n      const queue: MenuItemType[] = [];\n      let targetNode: MenuItemType | null = null;\n      menus.forEach(node => queue.push(node));\n\n      while (queue.length) {\n        const node = queue.shift();\n        if (!node) return null;\n\n        if (typeof node.to === 'object' && getPageId(node.to.path || '') === targetPath) {\n          targetNode = node;\n          break;\n        } else if (typeof node.to === 'string' && getPageId(node.to) === targetPath) {\n          targetNode = node;\n        } else {\n          node.children?.forEach(node => queue.push(node));\n        }\n      }\n\n      return targetNode;\n    };\n\n    // 默认高亮当前路由对应的菜单\n    const getDefaultValue = (menuData: MenuItemType[]) => {\n      try {\n        const url = window.location.href;\n        const selectedPath = `${getPageId(url)}`;\n        const targetMenu = findMenuItemByPath(menuData, selectedPath);\n        console.log('targetMenu', targetMenu);\n        return targetMenu?.value || '';\n      } catch (error) {\n        return '';\n      }\n    };\n\n    const renderSubMenu = (menuData: MenuItemType[]) => menuData.map((item: MenuItemType) => {\n      const { children, icon } = item;\n      const slots = {\n        icon: () => (icon ? <Icon name={icon}></Icon> : null),\n      };\n      if (children?.length) {\n        return (<Submenu v-slots={slots} {...omit(item, 'children', 'icon')}>\n          {renderSubMenu(children)}\n        </Submenu>);\n      }\n      return (<MenuItem v-slots={slots} {...omit(item, 'title', 'icon', 'to')} onClick={() => onClickMenuItem(item)}>{item.title}</MenuItem>);\n    });\n\n    return {\n      renderSubMenu,\n      getDefaultValue,\n    };\n  },\n  render() {\n    const MenuComp = this.mode === 'vertical' ? Menu : HeadMenu;\n    const { renderSubMenu, getDefaultValue } = this;\n    const props = {\n      ...this.$attrs,\n    };\n    props.defaultValue = this.defaultValue || getDefaultValue(this.menuData);\n    return (\n      <MenuComp {...props}>\n        {renderSubMenu(this.menuData)}\n      </MenuComp>\n    );\n  },\n});\n"],"names":["defineComponent","name","props","_objectSpread","setup","getPageId","path","lastIndexOf","url","substring","indexOf","onClickMenuItem","options","to","replace","routerApi","redirectTo","navigateTo","pageId","params","getQueryParams","findMenuItemByPath","menus","targetPath","queue","targetNode","forEach","node","push","length","shift","children","node2","getDefaultValue","menuData","window","location","href","selectedPath","targetMenu","console","log","value","error","renderSubMenu","map","item","icon","slots","_createVNode","omit","title","render","MenuComp","mode","Menu","HeadMenu","props2","$attrs","defaultValue"],"mappings":";;;;;;;;;;;AAIA,WAAAA,eAAA,CAAA;AACAC,EAAAA,IAAA,EAAA,UADA;EAEAC,KAAA,EAAAC,cAAA,CAAA,EAAA,EACAD,KADA,CAFA;;AAKAE,EAAAA,KAAA,GAAA;IACA,IAAAC,SAAA,GAAAC,IAAA,IAAA;AACA,MAAA,IAAA,CAAAA,IAAA,KAAA,IAAA,IAAAA,IAAA,WAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAA,CAAAC,WAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA,EACA,OAAA,EAAA,CAAA;MACA,IAAAC,GAAA,GAAAF,IAAA,KAAA,IAAA,IAAAA,IAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAA,CAAAG,SAAA,CAAAH,IAAA,KAAAA,IAAAA,IAAAA,IAAA,uBAAAA,IAAA,CAAAC,WAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;MACA,IAAAC,GAAA,CAAAE,OAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA,EAAA;AACA,QAAA,OAAAF,GAAA,KAAA,IAAA,IAAAA,GAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAAC,SAAA,CAAA,CAAAD,GAAA,KAAA,IAAA,IAAAA,GAAA,WAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAA,CAAAD,WAAA,CAAA,GAAA,CAAA,IAAA,CAAA,EAAAC,GAAA,KAAA,IAAA,IAAAA,GAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAAE,OAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,OAAA;;MACA,OAAAF,GAAA,aAAAA,GAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAAC,SAAA,CAAA,CAAAD,GAAA,KAAA,IAAA,IAAAA,GAAA,KAAA,KAAA,CAAA,YAAAA,GAAA,CAAAD,WAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;KAPA,CAAA;;IASA,IAAAI,eAAA,GAAAC,OAAA,IAAA;MACA,IAAA;QAAAC,EAAA;AAAAC,QAAAA,OAAAA;AAAA,OAAA,GAAAF,OAAA,CAAA;MACA,IAAA,CAAAC,EAAA,EACA,OAAA;AACA,MAAA,IAAAE,SAAA,GAAAD,OAAA,GAAAE,UAAA,GAAAC,UAAA,CAAA;;AACA,MAAA,IAAA,OAAAJ,EAAA,KAAA,QAAA,EAAA;AACAE,QAAAA,SAAA,CAAA;UACAG,MAAA,EAAAb,SAAA,CAAAQ,EAAA,CAAAP,IAAA,IAAA,EAAA,CADA;AAEAa,UAAAA,MAAA,EAAAN,EAAA,CAAAM,MAAA,IAAA,EAAA;AAFA,SAAA,CAAA,CAAA;AAIA,OALA,MAKA,IAAA,OAAAN,EAAA,KAAA,QAAA,EAAA;AACAE,QAAAA,SAAA,CAAA;AACAG,UAAAA,MAAA,EAAAb,SAAA,CAAAQ,EAAA,CADA;UAEAM,MAAA,EAAAC,cAAA,CAAAP,EAAA,CAAA;AAFA,SAAA,CAAA,CAAA;AAIA,OAAA;KAfA,CAAA;;AAiBA,IAAA,IAAAQ,kBAAA,GAAA,CAAAC,KAAA,EAAAC,UAAA,KAAA;MACA,IAAAC,KAAA,GAAA,EAAA,CAAA;MACA,IAAAC,UAAA,GAAA,IAAA,CAAA;MACAH,KAAA,CAAAI,OAAA,CAAAC,IAAA,IAAAH,KAAA,CAAAI,IAAA,CAAAD,IAAA,CAAA,CAAA,CAAA;;MACA,OAAAH,KAAA,CAAAK,MAAA,EAAA;AACA,QAAA,IAAAF,IAAA,GAAAH,KAAA,CAAAM,KAAA,EAAA,CAAA;AACA,QAAA,IAAA,CAAAH,IAAA,EACA,OAAA,IAAA,CAAA;;AACA,QAAA,IAAA,OAAAA,IAAA,CAAAd,EAAA,KAAA,QAAA,IAAAR,SAAA,CAAAsB,IAAA,CAAAd,EAAA,CAAAP,IAAA,IAAA,EAAA,CAAA,KAAAiB,UAAA,EAAA;AACAE,UAAAA,UAAA,GAAAE,IAAA,CAAA;AACA,UAAA,MAAA;AACA,SAHA,MAGA,IAAA,OAAAA,IAAA,CAAAd,EAAA,KAAA,QAAA,IAAAR,SAAA,CAAAsB,IAAA,CAAAd,EAAA,CAAA,KAAAU,UAAA,EAAA;AACAE,UAAAA,UAAA,GAAAE,IAAA,CAAA;AACA,SAFA,MAEA;AAAA,UAAA,IAAA,cAAA,CAAA;;AACA,UAAA,CAAA,cAAA,GAAAA,IAAA,CAAAI,QAAA,MAAA,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAAL,OAAA,CAAAM,KAAA,IAAAR,KAAA,CAAAI,IAAA,CAAAI,KAAA,CAAA,CAAA,CAAA;AACA,SAAA;AACA,OAAA;;AACA,MAAA,OAAAP,UAAA,CAAA;KAjBA,CAAA;;IAmBA,IAAAQ,eAAA,GAAAC,QAAA,IAAA;MACA,IAAA;AACA,QAAA,IAAA1B,GAAA,GAAA2B,MAAA,CAAAC,QAAA,CAAAC,IAAA,CAAA;AACA,QAAA,IAAAC,YAAA,GAAAjC,EAAAA,CAAAA,MAAAA,CAAAA,SAAA,CAAAG,GAAA,CAAA,CAAA,CAAA;AACA,QAAA,IAAA+B,UAAA,GAAAlB,kBAAA,CAAAa,QAAA,EAAAI,YAAA,CAAA,CAAA;AACAE,QAAAA,OAAA,CAAAC,GAAA,CAAA,YAAA,EAAAF,UAAA,CAAA,CAAA;QACA,OAAA,CAAAA,UAAA,KAAA,IAAA,IAAAA,UAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,UAAA,CAAAG,KAAA,KAAA,EAAA,CAAA;OALA,CAMA,OAAAC,KAAA,EAAA;AACA,QAAA,OAAA,EAAA,CAAA;AACA,OAAA;KATA,CAAA;;IAWA,IAAAC,aAAA,GAAAV,QAAA,IAAAA,QAAA,CAAAW,GAAA,CAAAC,IAAA,IAAA;MACA,IAAA;QAAAf,QAAA;AAAAgB,QAAAA,IAAA,EAAAA,KAAAA;AAAA,OAAA,GAAAD,IAAA,CAAA;AACA,MAAA,IAAAE,KAAA,GAAA;QACAD,IAAA,EAAA,MAAAA,KAAA,GAAAE,WAAA,CAAA,IAAA,EAAA;UAAA,MAAAF,EAAAA,KAAAA;SAAA,EAAA,IAAA,CAAA,GAAA,IAAA;OADA,CAAA;;AAGA,MAAA,IAAAhB,QAAA,KAAAA,IAAAA,IAAAA,QAAA,eAAAA,QAAA,CAAAF,MAAA,EAAA;AACA,QAAA,OAAAoB,WAAA,CAAA,OAAA,EAAAC,MAAA,CAAAJ,IAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA3C,cAAA,CAAA;UAAA,OAAAyC,EAAAA,MAAAA,CAAAA,aAAA,CAAAb,QAAA,CAAA,CAAA;AAAA,SAAA,EAAAiB,KAAA,CAAA,CAAA,CAAA;AACA,OAAA;;MACA,OAAAE,WAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA,MAAA,CAAAJ,IAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA;QAAA,SAAA,EAAA,MAAAnC,eAAA,CAAAmC,IAAA,CAAA;AAAA,OAAA,CAAA,EAAA3C,cAAA,CAAA;QAAA,OAAA2C,EAAAA,MAAAA,CAAAA,IAAA,CAAAK,KAAA,CAAA;AAAA,OAAA,EAAAH,KAAA,CAAA,CAAA,CAAA;AACA,KATA,CAAA,CAAA;;IAUA,OAAA;MACAJ,aADA;AAEAX,MAAAA,eAAAA;KAFA,CAAA;GAxEA;;AA6EAmB,EAAAA,MAAA,GAAA;AAAA,IAAA,IAAA,KAAA,CAAA;;IACA,IAAAC,QAAA,GAAA,IAAAC,CAAAA,IAAA,KAAA,UAAA,GAAAC,MAAA,GAAAC,QAAA,CAAA;IACA,IAAA;MAAAZ,aAAA;AAAAX,MAAAA,eAAAA;AAAA,KAAA,GAAA,IAAA,CAAA;;AACA,IAAA,IAAAwB,MAAA,GAAAtD,cAAA,CAAA,EAAA,EACA,IAAAuD,CAAAA,MADA,CAAA,CAAA;;IAGAD,MAAA,CAAAE,YAAA,GAAA,IAAAA,CAAAA,YAAA,IAAA1B,eAAA,CAAA,IAAAC,CAAAA,QAAA,CAAA,CAAA;AACA,IAAA,OAAAe,WAAA,CAAA,QAAA,EAAAQ,MAAA,EAAAb,OAAAA,CAAAA,KAAAA,GAAAA,aAAA,CAAA,IAAA,CAAAV,QAAA,CAAA,CAAA,GAAA,KAAA,GAAA;AAAA,MAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AACA,GAAA;;AArFA,CAAA,CAAA;;;;"}