{"version":3,"file":"menu.mjs","sources":["../../../../../packages/components/menu/src/menu.ts"],"sourcesContent":["import {\n  defineComponent,\n  getCurrentInstance,\n  watch,\n  computed,\n  ref,\n  provide,\n  onMounted,\n  h,\n  reactive,\n  nextTick,\n  type PropType\n} from 'vue'\nimport { isString, isObject } from '@element-ultra/utils'\nimport ElMenuCollapseTransition from './menu-collapse-transition.vue'\nimport { useMenuCssVar } from './use-menu-css-var'\n\nimport type { MenuItemClicked, MenuProvider, SubMenuProvider } from './types'\nimport type { NavigationFailure, Router } from 'vue-router'\nimport type { VNode, ExtractPropTypes, VNodeNormalizedChildren } from 'vue'\nimport { SizeProp } from '@element-ultra/shared'\nimport { useNamespace, useSize } from '@element-ultra/hooks'\n\nexport const menuProps = {\n  defaultActive: {\n    type: String,\n    default: ''\n  },\n  defaultOpeneds: {\n    type: Array as PropType<string[]>,\n    default: () => []\n  },\n  uniqueOpened: Boolean,\n  router: Boolean,\n  collapse: Boolean,\n  backgroundColor: String,\n  textColor: String,\n  activeTextColor: String,\n  collapseTransition: {\n    type: Boolean,\n    default: true\n  },\n  ellipsis: {\n    type: Boolean,\n    default: true\n  },\n  size: SizeProp\n}\nexport type MenuProps = ExtractPropTypes<typeof menuProps>\n\nconst checkIndexPath = (indexPath: unknown): indexPath is string[] =>\n  Array.isArray(indexPath) && indexPath.every(path => isString(path))\n\nexport const menuEmits = {\n  close: (index: string, indexPath: string[]) =>\n    isString(index) && checkIndexPath(indexPath),\n\n  open: (index: string, indexPath: string[]) =>\n    isString(index) && checkIndexPath(indexPath),\n\n  select: (\n    index: string,\n    indexPath: string[],\n    item: MenuItemClicked,\n    routerResult?: Promise<void | NavigationFailure>\n  ) =>\n    isString(index) &&\n    checkIndexPath(indexPath) &&\n    isObject(item) &&\n    (routerResult === undefined || routerResult instanceof Promise)\n}\nexport type MenuEmits = typeof menuEmits\n\nexport default defineComponent({\n  name: 'ElMenu',\n\n  props: menuProps,\n  emits: menuEmits,\n\n  setup(props, { emit, slots, expose }) {\n    const instance = getCurrentInstance()!\n    const router = instance.appContext.config.globalProperties.$router as Router\n    const menu = ref<HTMLUListElement>()\n\n    // data\n    const openedMenus = ref<MenuProvider['openedMenus']>(\n      props.defaultOpeneds && !props.collapse\n        ? props.defaultOpeneds.slice(0)\n        : []\n    )\n    const activeIndex = ref<MenuProvider['activeIndex']>(props.defaultActive)\n    const items = ref<MenuProvider['items']>({})\n    const subMenus = ref<MenuProvider['subMenus']>({})\n\n    // computed\n    const isMenuPopup = computed<MenuProvider['isMenuPopup']>(() => {\n      return props.collapse\n    })\n\n    // methods\n    const initMenu = () => {\n      const activeItem = activeIndex.value && items.value[activeIndex.value]\n      if (!activeItem || props.collapse) return\n\n      const indexPath = activeItem.indexPath\n\n      // 展开该菜单项的路径上所有子菜单\n      // expand all subMenus of the menu item\n      indexPath.forEach(index => {\n        const subMenu = subMenus.value[index]\n        subMenu && openMenu(index, subMenu.indexPath)\n      })\n    }\n\n    const openMenu: MenuProvider['openMenu'] = (index, indexPath) => {\n      if (openedMenus.value.includes(index)) return\n      // 将不在该菜单路径下的其余菜单收起\n      // collapse all menu that are not under current menu item\n      if (props.uniqueOpened) {\n        openedMenus.value = openedMenus.value.filter((index: string) =>\n          indexPath.includes(index)\n        )\n      }\n      openedMenus.value.push(index)\n      emit('open', index, indexPath)\n    }\n\n    const closeMenu: MenuProvider['closeMenu'] = (index, indexPath) => {\n      const i = openedMenus.value.indexOf(index)\n      if (i !== -1) {\n        openedMenus.value.splice(i, 1)\n      }\n      emit('close', index, indexPath)\n    }\n\n    const handleSubMenuClick: MenuProvider['handleSubMenuClick'] = ({\n      index,\n      indexPath\n    }) => {\n      const isOpened = openedMenus.value.includes(index)\n\n      if (isOpened) {\n        closeMenu(index, indexPath)\n      } else {\n        openMenu(index, indexPath)\n      }\n    }\n\n    const handleMenuItemClick: MenuProvider['handleMenuItemClick'] =\n      menuItem => {\n        if (props.collapse) {\n          openedMenus.value = []\n        }\n\n        const { index, indexPath } = menuItem\n        if (index === undefined || indexPath === undefined) return\n\n        if (props.router && router) {\n          const route = menuItem.route || index\n          const routerResult = router.push(route).then(res => {\n            if (!res) activeIndex.value = index\n            return res\n          })\n          emit(\n            'select',\n            index,\n            indexPath,\n            { index, indexPath, route },\n            routerResult\n          )\n        } else {\n          activeIndex.value = index\n          emit('select', index, indexPath, { index, indexPath })\n        }\n      }\n\n    const updateActiveIndex = (val: string) => {\n      const itemsInData = items.value\n      const item =\n        itemsInData[val] ||\n        (activeIndex.value && itemsInData[activeIndex.value]) ||\n        itemsInData[props.defaultActive]\n\n      if (item) {\n        activeIndex.value = item.index\n        initMenu()\n      } else {\n        activeIndex.value = val\n      }\n    }\n    const handleResize = () => {\n      nextTick(() => instance.proxy!.$forceUpdate())\n    }\n\n    watch(\n      () => props.defaultActive,\n      currentActive => {\n        if (!items.value[currentActive]) {\n          activeIndex.value = ''\n        }\n        updateActiveIndex(currentActive)\n      }\n    )\n\n    watch(items.value, () => initMenu())\n\n    watch(\n      () => props.collapse,\n      value => {\n        if (value) openedMenus.value = []\n      }\n    )\n\n    // provide\n    {\n      const addSubMenu: MenuProvider['addSubMenu'] = item => {\n        subMenus.value[item.index] = item\n      }\n\n      const removeSubMenu: MenuProvider['removeSubMenu'] = item => {\n        delete subMenus.value[item.index]\n      }\n\n      const addMenuItem: MenuProvider['addMenuItem'] = item => {\n        items.value[item.index] = item\n      }\n\n      const removeMenuItem: MenuProvider['removeMenuItem'] = item => {\n        delete items.value[item.index]\n      }\n      provide<MenuProvider>(\n        'rootMenu',\n        reactive({\n          props,\n          openedMenus,\n          items,\n          subMenus,\n          activeIndex,\n          isMenuPopup,\n\n          addMenuItem,\n          removeMenuItem,\n          addSubMenu,\n          removeSubMenu,\n          openMenu,\n          closeMenu,\n          handleMenuItemClick,\n          handleSubMenuClick\n        })\n      )\n      provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\n        addSubMenu,\n        removeSubMenu,\n        mouseInChild: ref(false)\n      })\n    }\n\n    // lifecycle\n    onMounted(() => {\n      initMenu()\n    })\n\n    {\n      const open = (index: string) => {\n        const { indexPath } = subMenus.value[index]\n        indexPath.forEach(i => openMenu(i, indexPath))\n      }\n      expose({\n        open,\n        close: closeMenu,\n        handleResize\n      })\n    }\n\n    const flattedChildren = (children: VNodeNormalizedChildren) => {\n      const vnodes = Array.isArray(children) ? children : [children]\n      const result: any[] = []\n      vnodes.forEach((child: any) => {\n        if (Array.isArray(child.children)) {\n          result.push(...flattedChildren(child.children))\n        } else {\n          result.push(child)\n        }\n      })\n      return result\n    }\n\n    const useVNodeResize = (vnode: VNode) => vnode\n\n    const ns = useNamespace('menu')\n\n    const size = useSize({ props })\n\n    return () => {\n      const slot = slots.default?.() ?? []\n      const vShowMore: VNode[] = []\n\n      const ulStyle = useMenuCssVar(props)\n\n      const resizeMenu = (vNode: VNode) =>\n        props.ellipsis ? useVNodeResize(vNode) : vNode\n\n      const vMenu = resizeMenu(\n        h(\n          'ul',\n          {\n            key: String(props.collapse),\n            role: 'menubar',\n            ref: menu,\n            style: ulStyle.value,\n            class: {\n              [ns.b()]: true,\n              [ns.m(size.value)]: true,\n              [ns.m('collapse')]: props.collapse\n            }\n          },\n          [...slot.map(vnode => resizeMenu(vnode)), ...vShowMore]\n        )\n      )\n\n      if (props.collapseTransition) {\n        return h(ElMenuCollapseTransition, () => vMenu)\n      }\n\n      return vMenu\n    }\n  }\n})\n"],"names":["index"],"mappings":"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"}