{"version":3,"file":"menu.cjs","sources":["../../../components/menu/menu.tsx"],"sourcesContent":["import { MenuItem } from '@/components/menu-item'\nimport { MenuGroup } from '@/components/menu-group'\nimport { Overflow } from '@/components/overflow'\nimport { Renderer } from '@/components/renderer'\n\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  renderSlot,\n  toRef,\n  watch,\n} from 'vue'\n\nimport { emitEvent, useNameHelper, useProps } from '@vexip-ui/config'\nimport { callIfFunc, isDefined } from '@vexip-ui/utils'\nimport MenuRest from './menu-rest'\nimport { menuProps } from './props'\nimport { MENU_STATE } from './symbol'\n\nimport type { VNode } from 'vue'\nimport type { RouteLocationRaw, RouteRecordRaw } from 'vue-router'\nimport type {\n  MenuArrowSlotParams,\n  MenuItemState,\n  MenuMarkerType,\n  MenuOptions,\n  MenuState,\n} from './symbol'\n\nconst menuMarkerTypes = Object.freeze<MenuMarkerType[]>(['top', 'right', 'bottom', 'left', 'none'])\n\nexport default defineComponent({\n  name: 'Menu',\n  props: menuProps,\n  emits: ['update:active'],\n  setup(_props, { slots, emit, expose }) {\n    const props = useProps('menu', _props, {\n      active: {\n        default: null,\n        static: true,\n      },\n      accordion: false,\n      markerType: {\n        default: 'right',\n        validator: value => menuMarkerTypes.includes(value),\n      },\n      reduced: false,\n      horizontal: false,\n      transfer: false,\n      trigger: 'hover',\n      groupType: {\n        default: 'collapse',\n        validator: value => ['collapse', 'dropdown'].includes(value),\n      },\n      tooltipReverse: null,\n      options: {\n        default: () => [],\n        static: true,\n      },\n      router: null,\n      manualRoute: false,\n      indent: null,\n      arrow: null,\n      slots: () => ({}),\n    })\n\n    const nh = useNameHelper('menu')\n    const menuItemSet = new Set<MenuItemState>()\n    const currentActive = ref(props.active)\n    const isReduced = ref(false)\n\n    const wrapper = ref<HTMLElement>()\n    const rest = ref<InstanceType<typeof MenuRest>>()\n\n    const markerType = computed(() => {\n      if (props.horizontal && (props.markerType === 'left' || props.markerType === 'right')) {\n        return 'bottom'\n      } else if (\n        !props.horizontal &&\n        (props.markerType === 'top' || props.markerType === 'bottom')\n      ) {\n        return 'right'\n      } else {\n        return props.markerType ?? (props.horizontal ? 'bottom' : 'right')\n      }\n    })\n    const className = computed(() => {\n      return [\n        nh.b(),\n        nh.bs('vars'),\n        nh.bm(`marker-${markerType.value}`),\n        {\n          [nh.bm('inherit')]: props.inherit,\n          [nh.bm('reduced')]: isReduced.value,\n          [nh.bm('dropdown')]: props.groupType === 'dropdown',\n          [nh.bm('horizontal')]: props.horizontal,\n        },\n      ]\n    })\n    const style = computed(() => {\n      const style: Record<string, string> = {}\n\n      if (isDefined(props.indent)) {\n        style[nh.cv('indent-width')] =\n          typeof props.indent === 'number' ? `${props.indent}px` : props.indent\n      }\n\n      return style\n    })\n    const menus = computed(() => {\n      if (props.options?.length) {\n        return props.options\n      }\n\n      const routes = props.router?.options.routes\n\n      if (!routes?.length) {\n        return []\n      }\n\n      return parseRoutesToMenus(routes)\n    })\n    const currentRoute = computed(() => props.router?.currentRoute.value)\n\n    provide<MenuState>(\n      MENU_STATE,\n      reactive({\n        currentActive,\n        isReduced,\n        horizontal: toRef(props, 'horizontal'),\n        accordion: toRef(props, 'accordion'),\n        groupType: toRef(props, 'groupType'),\n        tooltipReverse: toRef(props, 'tooltipReverse'),\n        transfer: toRef(props, 'transfer'),\n        trigger: toRef(props, 'trigger'),\n        markerType,\n        arrow: toRef(props, 'arrow'),\n        handleSelect,\n        handleExpand,\n        increaseItem,\n        decreaseItem,\n        doForEachItem,\n        renderItemArrow,\n      }),\n    )\n\n    watch(\n      () => props.active,\n      value => {\n        if (value !== currentActive.value) {\n          currentActive.value = value\n        }\n      },\n    )\n    watch(\n      () => props.reduced,\n      value => {\n        if (props.horizontal) return\n\n        if (value) {\n          handleMenuReduce()\n        } else {\n          handleMenuExpand()\n        }\n      },\n    )\n    watch(currentRoute, value => {\n      if (!props.manualRoute && value) {\n        currentActive.value = (value.meta?.label as string) ?? value.path\n      }\n    })\n\n    onMounted(() => {\n      nextTick(() => {\n        if (!props.horizontal && props.reduced) handleMenuReduce()\n      })\n\n      if (props.router && !props.manualRoute && !currentActive.value) {\n        const route = currentRoute.value\n\n        if (route) {\n          currentActive.value = (route.meta?.label as string) ?? currentRoute.value.path\n        }\n      }\n    })\n\n    expose({ expandItemByLabel })\n\n    function parseRoutesToMenus(routes: Readonly<RouteRecordRaw[]>) {\n      const root: MenuOptions = { label: '', children: [] }\n      const loop = Array.from(routes).map(route => ({ parent: root, route }))\n\n      while (loop.length) {\n        const { parent, route } = loop.shift()!\n        const routeMeta = (route.meta || {}) as any\n\n        if (routeMeta.menu === false) {\n          continue\n        }\n\n        const options = {\n          ...routeMeta,\n          route,\n          label: routeMeta.label || route.path,\n          name: routeMeta.name || route.name,\n        } as MenuOptions\n\n        if (!parent.children) {\n          parent.children = []\n        }\n\n        parent.children.push(options)\n\n        if (route.children) {\n          loop.push(...route.children.map(route => ({ parent: options, route })))\n        }\n      }\n\n      return root.children!\n    }\n\n    function increaseItem(state: MenuItemState) {\n      menuItemSet.add(state)\n    }\n\n    function decreaseItem(state: MenuItemState) {\n      menuItemSet.delete(state)\n    }\n\n    function doForEachItem(cb: (item: MenuItemState) => void) {\n      for (const item of menuItemSet) {\n        cb(item)\n      }\n    }\n\n    function handleSelect(label: string, meta: Record<string, any>, route?: RouteLocationRaw) {\n      if (currentActive.value !== label) {\n        currentActive.value = label\n\n        emit('update:active', label)\n        emitEvent(props.onSelect, label, meta)\n\n        if (!props.manualRoute && props.router && route) {\n          props.router.push(route)\n        }\n      }\n    }\n\n    function handleExpand(label: string, expanded: boolean, meta: Record<string, any>) {\n      if (expanded) {\n        emitEvent(props.onExpand, label, meta)\n      } else {\n        emitEvent(props.onReduce, label, meta)\n      }\n    }\n\n    function handleMenuReduce() {\n      if (props.horizontal) return\n\n      let firstExpandedItem: MenuItemState | null = null\n\n      for (const item of menuItemSet) {\n        item.cachedExpanded = item.showGroup\n\n        if (!firstExpandedItem && item.showGroup) {\n          firstExpandedItem = item\n        }\n\n        item.toggleGroupExpanded(false)\n      }\n\n      isReduced.value = true\n    }\n\n    function handleMenuExpand() {\n      if (props.horizontal) return\n\n      isReduced.value = false\n\n      if (wrapper.value) {\n        const el = wrapper.value\n        const callback = () => {\n          requestAnimationFrame(() => {\n            el.removeEventListener('transitionend', callback)\n\n            const selectedItem = Array.from(menuItemSet).find(\n              item => item.label === currentActive.value,\n            )\n\n            requestAnimationFrame(() => {\n              requestAnimationFrame(() => {\n                for (const item of menuItemSet) {\n                  item.groupExpanded = item.cachedExpanded\n                }\n\n                if (selectedItem) {\n                  let parent = selectedItem.parentState\n\n                  while (parent) {\n                    parent.groupExpanded = true\n                    parent = parent.parentState\n                  }\n                }\n              })\n            })\n          })\n        }\n\n        el.addEventListener('transitionend', callback)\n      }\n    }\n\n    function expandItemByLabel(label: string) {\n      for (const item of menuItemSet) {\n        if (item.label === label) {\n          item.toggleGroupExpanded(true, true)\n        }\n      }\n    }\n\n    function renderItemArrow(params: MenuArrowSlotParams, renderDefault: () => VNode) {\n      return renderSlot(slots, 'arrow', { ...params }, () => [\n        <Renderer renderer={props.slots.arrow} data={params}>\n          {renderDefault()}\n        </Renderer>,\n      ])\n    }\n\n    function renderMenuItem(item: MenuOptions) {\n      return (\n        <MenuItem\n          label={item.label}\n          icon={item.icon}\n          icon-props={item.iconProps}\n          disabled={item.disabled}\n          children={item.children}\n          route={item.route}\n          meta={item.meta}\n        >\n          {item.name ? callIfFunc(item.name) : item.label}\n        </MenuItem>\n      )\n    }\n\n    function renderMenus() {\n      return menus.value.map(menu =>\n        menu.group ? (\n          <MenuGroup key={menu.label} label={menu.name ? callIfFunc(menu.name) : menu.label}>\n            {menu.children?.length ? menu.children.map(renderMenuItem) : null}\n          </MenuGroup>\n        ) : (\n          renderMenuItem(menu)\n        ),\n      )\n    }\n\n    return () => {\n      return (\n        <ul ref={wrapper} class={className.value} role={'menu'} tabindex={-1} style={style.value}>\n          {renderSlot(slots, 'default', {}, () => {\n            return props.horizontal\n              ? [\n                <Overflow class={nh.be('overflow')} inherit key={0}>\n                  {{\n                    default: renderMenus,\n                    counter: ({ count }: { count: number }) => (\n                      <MenuRest ref={rest} menus={menus.value.slice(-count)}></MenuRest>\n                    ),\n                  }}\n                </Overflow>,\n                ]\n              : renderMenus()\n          })}\n        </ul>\n      )\n    }\n  },\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","menuMarkerTypes","freeze","defineComponent","name","props","menuProps","emits","setup","_props","slots","emit","expose","useProps","active","default","static","accordion","markerType","validator","value","includes","reduced","horizontal","transfer","trigger","groupType","tooltipReverse","options","router","manualRoute","indent","arrow","nh","useNameHelper","menuItemSet","Set","currentActive","ref","isReduced","wrapper","rest","computed","className","b","bs","bm","inherit","style","isDefined","cv","menus","length","routes","parseRoutesToMenus","currentRoute","provide","MENU_STATE","reactive","toRef","handleSelect","handleExpand","increaseItem","decreaseItem","doForEachItem","renderItemArrow","watch","handleMenuReduce","handleMenuExpand","meta","label","path","onMounted","nextTick","route","expandItemByLabel","root","children","loop","Array","from","map","parent","shift","routeMeta","menu","push","state","add","delete","cb","item","emitEvent","onSelect","expanded","onExpand","onReduce","firstExpandedItem","cachedExpanded","showGroup","toggleGroupExpanded","el","callback","requestAnimationFrame","removeEventListener","selectedItem","find","groupExpanded","parentState","addEventListener","params","renderDefault","renderSlot","_slot","_createVNode","Renderer","renderMenuItem","MenuItem","icon","iconProps","disabled","callIfFunc","renderMenus","group","MenuGroup","Overflow","be","counter","count","MenuRest","slice"],"mappings":"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"}