{"version":3,"file":"SubMenu.cjs","sources":["../../../../../../packages/components/menu/src/SubMenu.tsx"],"sourcesContent":["import type { CustomSlotsType } from '@antdv/types';\n\nimport {\n  classNames,\n  cloneElement,\n  devWarning,\n  getPropsSlot,\n  isValid,\n  isValidElement,\n} from '@antdv/utils';\nimport { VcOverflow } from '@antdv/vue-components/vc-overflow';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  onBeforeUnmount,\n  shallowRef,\n  watch,\n} from 'vue';\n\nimport useDirectionStyle from './hooks/useDirectionStyle';\nimport useProvideKeyPath, { useInjectKeyPath, useMeasure } from './hooks/useKeyPath';\nimport {\n  MenuContextProvider,\n  useInjectForceRender,\n  useInjectMenu,\n  useProvideFirstLevel,\n  useProvideForceRender,\n} from './hooks/useMenuContext';\nimport InlineSubMenuList from './InlineSubMenuList';\nimport PopupTrigger from './PopupTrigger';\nimport { subMenuProps } from './props';\nimport SubMenuList from './SubMenuList';\n\nlet indexGuid = 0;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASubMenu',\n  inheritAttrs: false,\n  props: subMenuProps(),\n  slots: Object as CustomSlotsType<{\n    icon?: any\n    title?: any\n    expandIcon?: { isOpen: boolean, [key: string]: any }\n    default?: any\n  }>,\n  setup(props, { slots, attrs, emit }) {\n    useProvideFirstLevel(false);\n    const isMeasure = useMeasure();\n    const instance = getCurrentInstance();\n    const vnodeKey\n      = typeof instance.vnode.key === 'symbol' ? String(instance.vnode.key) : instance.vnode.key;\n    devWarning(\n      typeof instance.vnode.key !== 'symbol',\n      'SubMenu',\n      `SubMenu \\`:key=\"${String(vnodeKey)}\"\\` not support Symbol type`,\n    );\n    const key = isValid(vnodeKey) ? vnodeKey : `sub_menu_${++indexGuid}_$$_not_set_key`;\n    const eventKey\n      = props.eventKey\n      ?? (isValid(vnodeKey) ? `sub_menu_${++indexGuid}_$$_${vnodeKey}` : (key as string));\n    const { parentEventKeys, parentInfo, parentKeys } = useInjectKeyPath();\n    const keysPath = computed(() => [...parentKeys.value, key]);\n    const childrenEventKeys = shallowRef([]);\n    const menuInfo = {\n      eventKey,\n      key,\n      parentEventKeys,\n      childrenEventKeys,\n      parentKeys,\n    };\n    parentInfo.childrenEventKeys?.value.push(eventKey);\n    onBeforeUnmount(() => {\n      if (parentInfo.childrenEventKeys) {\n        parentInfo.childrenEventKeys.value = parentInfo.childrenEventKeys?.value.filter(\n          k => k !== eventKey,\n        );\n      }\n    });\n\n    useProvideKeyPath(eventKey, key, menuInfo);\n\n    const {\n      prefixCls,\n      activeKeys,\n      disabled: contextDisabled,\n      changeActiveKeys,\n      mode,\n      inlineCollapsed,\n      openKeys,\n      overflowDisabled,\n      onOpenChange,\n      registerMenuInfo,\n      unRegisterMenuInfo,\n      selectedSubMenuKeys,\n      expandIcon: menuExpandIcon,\n      theme,\n    } = useInjectMenu();\n\n    const hasKey = vnodeKey !== undefined && vnodeKey !== null;\n    // If not set key, use forceRender = true for children\n    // 如果没有 key，强制 render 子元素\n    const forceRender = !isMeasure && (useInjectForceRender() || !hasKey);\n    useProvideForceRender(forceRender);\n\n    if ((isMeasure && hasKey) || (!isMeasure && !hasKey) || forceRender) {\n      registerMenuInfo(eventKey, menuInfo);\n\n      onBeforeUnmount(() => {\n        unRegisterMenuInfo(eventKey);\n      });\n    }\n\n    const subMenuPrefixCls = computed(() => `${prefixCls.value}-submenu`);\n    const mergedDisabled = computed(() => contextDisabled.value || props.disabled);\n    const elementRef = shallowRef();\n    const popupRef = shallowRef();\n\n    // // ================================ Icon ================================\n    // const mergedItemIcon = itemIcon || contextItemIcon;\n    // const mergedExpandIcon = expandIcon || contextExpandIcon;\n\n    // ================================ Open ================================\n    const originOpen = computed(() => openKeys.value.includes(key));\n    const open = computed(() => !overflowDisabled.value && originOpen.value);\n\n    // =============================== Select ===============================\n    const childrenSelected = computed(() => {\n      return selectedSubMenuKeys.value.includes(key);\n    });\n\n    const isActive = shallowRef(false);\n    watch(\n      activeKeys,\n      () => {\n        isActive.value = !!activeKeys.value.find(val => val === key);\n      },\n      { immediate: true },\n    );\n\n    // =============================== Events ===============================\n    // >>>> Title click\n    const onInternalTitleClick = (e: Event) => {\n      // Skip if disabled\n      if (mergedDisabled.value)\n        return;\n\n      emit('titleClick', e, key);\n\n      // Trigger open by click when mode is `inline`\n      if (mode.value === 'inline')\n        onOpenChange(key, !originOpen.value);\n    };\n\n    const onMouseEnter = (event: MouseEvent) => {\n      if (!mergedDisabled.value) {\n        changeActiveKeys(keysPath.value);\n        emit('mouseenter', event);\n      }\n    };\n    const onMouseLeave = (event: MouseEvent) => {\n      if (!mergedDisabled.value) {\n        changeActiveKeys([]);\n        emit('mouseleave', event);\n      }\n    };\n\n    // ========================== DirectionStyle ==========================\n    const directionStyle = useDirectionStyle(computed(() => keysPath.value.length));\n\n    // >>>>> Visible change\n    const onPopupVisibleChange = (newVisible: boolean) => {\n      if (mode.value !== 'inline')\n        onOpenChange(key, newVisible);\n    };\n\n    /**\n     * Used for accessibility. Helper will focus element without key board.\n     * We should manually trigger an active\n     */\n    const onInternalFocus = () => {\n      changeActiveKeys(keysPath.value);\n    };\n\n    // =============================== Render ===============================\n    const popupId = eventKey && `${eventKey}-popup`;\n\n    const popupClassName = computed(() =>\n      classNames(\n        prefixCls.value,\n        `${prefixCls.value}-${props.theme || theme.value}`,\n        props.popupClassName,\n      ),\n    );\n    const renderTitle = (title: any, icon: any) => {\n      if (!icon) {\n        return inlineCollapsed.value\n          && !parentKeys.value.length\n          && title\n          && typeof title === 'string'\n          ? (\n              <div class={`${prefixCls.value}-inline-collapsed-noicon`}>{title.charAt(0)}</div>\n            )\n          : (\n              <span class={`${prefixCls.value}-title-content`}>{title}</span>\n            );\n      }\n      // inline-collapsed.md demo 依赖 span 来隐藏文字,有 icon 属性，则内部包裹一个 span\n      // ref: https://github.com/ant-design/ant-design/pull/23456\n      const titleIsSpan = isValidElement(title) && title.type === 'span';\n      return (\n        <>\n          {cloneElement(\n            typeof icon === 'function' ? icon(props.originItemValue) : icon,\n            {\n              class: `${prefixCls.value}-item-icon`,\n            },\n            false,\n          )}\n          {titleIsSpan ? title : <span class={`${prefixCls.value}-title-content`}>{title}</span>}\n        </>\n      );\n    };\n\n    // Cache mode if it change to `inline` which do not have popup motion\n    const triggerModeRef = computed(() => {\n      return mode.value !== 'inline' && keysPath.value.length > 1 ? 'vertical' : mode.value;\n    });\n\n    const renderMode = computed(() => (mode.value === 'horizontal' ? 'vertical' : mode.value));\n\n    const subMenuTriggerModeRef = computed(() =>\n      triggerModeRef.value === 'horizontal' ? 'vertical' : triggerModeRef.value,\n    );\n    const baseTitleNode = () => {\n      const subMenuPrefixClsValue = subMenuPrefixCls.value;\n      const icon = props.icon ?? slots.icon?.(props);\n      const expandIcon = props.expandIcon || slots.expandIcon || menuExpandIcon.value;\n      const title = renderTitle(getPropsSlot(slots, props, 'title'), icon);\n      return (\n        <div\n          style={directionStyle.value}\n          class={`${subMenuPrefixClsValue}-title`}\n          tabindex={mergedDisabled.value ? null : -1}\n          ref={elementRef}\n          title={typeof title === 'string' ? title : null}\n          data-menu-id={key}\n          aria-expanded={open.value}\n          aria-haspopup\n          aria-controls={popupId}\n          aria-disabled={mergedDisabled.value}\n          onClick={onInternalTitleClick}\n          onFocus={onInternalFocus}\n        >\n          {title}\n\n          {/* Only non-horizontal mode shows the icon */}\n          {mode.value !== 'horizontal' && expandIcon\n            ? (\n                expandIcon({ ...props, isOpen: open.value })\n              )\n            : (\n                <i class={`${subMenuPrefixClsValue}-arrow`} />\n              )}\n        </div>\n      );\n    };\n    return () => {\n      if (isMeasure) {\n        if (!hasKey)\n          return null;\n\n        return slots.default?.();\n      }\n      const subMenuPrefixClsValue = subMenuPrefixCls.value;\n      let titleNode = () => null;\n      if (!overflowDisabled.value && mode.value !== 'inline') {\n        const popupOffset = mode.value === 'horizontal' ? [0, 8] : [10, 0];\n        titleNode = () => (\n          <PopupTrigger\n            mode={triggerModeRef.value}\n            prefixCls={subMenuPrefixClsValue}\n            visible={!props.internalPopupClose && open.value}\n            popupClassName={popupClassName.value}\n            popupOffset={props.popupOffset || popupOffset}\n            disabled={mergedDisabled.value}\n            onVisibleChange={onPopupVisibleChange}\n            v-slots={{\n              popup: () => (\n                <MenuContextProvider mode={subMenuTriggerModeRef.value}>\n                  <SubMenuList\n                    id={popupId}\n                    ref={popupRef}\n                    v-slots={{ default: slots.default }}\n                  >\n                  </SubMenuList>\n                </MenuContextProvider>\n              ),\n            }}\n          >\n            {baseTitleNode()}\n          </PopupTrigger>\n        );\n      } else {\n        // 包裹一层，保持结构一致，防止动画丢失\n        // https://github.com/vueComponent/ant-design-vue/issues/4325\n        titleNode = () => <PopupTrigger v-slots={{ default: baseTitleNode }}></PopupTrigger>;\n      }\n      return (\n        <MenuContextProvider mode={renderMode.value}>\n          <VcOverflow.Item\n            component=\"li\"\n            {...attrs}\n            role=\"none\"\n            class={classNames(\n              subMenuPrefixClsValue,\n              `${subMenuPrefixClsValue}-${mode.value}`,\n              attrs.class,\n              {\n                [`${subMenuPrefixClsValue}-open`]: open.value,\n                [`${subMenuPrefixClsValue}-active`]: isActive.value,\n                [`${subMenuPrefixClsValue}-selected`]: childrenSelected.value,\n                [`${subMenuPrefixClsValue}-disabled`]: mergedDisabled.value,\n              },\n            )}\n            onMouseenter={onMouseEnter}\n            onMouseleave={onMouseLeave}\n            data-submenu-id={key}\n            v-slots={{\n              default: () => {\n                return (\n                  <>\n                    {titleNode()}\n\n                    {/* Inline mode */}\n                    {!overflowDisabled.value && (\n                      <InlineSubMenuList\n                        id={popupId}\n                        open={open.value}\n                        keyPath={keysPath.value}\n                        v-slots={{ default: slots.default }}\n                      >\n                      </InlineSubMenuList>\n                    )}\n                  </>\n                );\n              },\n            }}\n          >\n          </VcOverflow.Item>\n        </MenuContextProvider>\n      );\n    };\n  },\n});\n"],"names":["indexGuid","defineComponent","compatConfig","MODE","name","inheritAttrs","props","subMenuProps","slots","Object","setup","attrs","emit","useProvideFirstLevel","isMeasure","useMeasure","instance","getCurrentInstance","vnodeKey","vnode","key","String","devWarning","isValid","eventKey","parentEventKeys","parentInfo","parentKeys","useInjectKeyPath","keysPath","computed","value","childrenEventKeys","shallowRef","menuInfo","push","onBeforeUnmount","filter","k","useProvideKeyPath","prefixCls","activeKeys","disabled","contextDisabled","changeActiveKeys","mode","inlineCollapsed","openKeys","overflowDisabled","onOpenChange","registerMenuInfo","unRegisterMenuInfo","selectedSubMenuKeys","expandIcon","menuExpandIcon","theme","useInjectMenu","hasKey","undefined","forceRender","useInjectForceRender","useProvideForceRender","subMenuPrefixCls","mergedDisabled","elementRef","popupRef","originOpen","includes","open","childrenSelected","isActive","watch","find","val","immediate","onInternalTitleClick","e","onMouseEnter","event","onMouseLeave","directionStyle","useDirectionStyle","length","onPopupVisibleChange","newVisible","onInternalFocus","popupId","popupClassName","classNames","renderTitle","title","icon","_createVNode","charAt","titleIsSpan","isValidElement","type","_Fragment","cloneElement","originItemValue","class","triggerModeRef","renderMode","subMenuTriggerModeRef","baseTitleNode","subMenuPrefixClsValue","getPropsSlot","isOpen","default","titleNode","popupOffset","PopupTrigger","internalPopupClose","popup","MenuContextProvider","SubMenuList","VcOverflow","Item","InlineSubMenuList"],"mappings":"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"}