{"version":3,"file":"submenu.mjs","sources":["../../../components/menu/submenu.tsx"],"sourcesContent":["import {\n  defineComponent,\n  computed,\n  inject,\n  ref,\n  provide,\n  onMounted,\n  onBeforeUnmount,\n  getCurrentInstance,\n  watch,\n  Slots,\n  toRefs,\n  reactive,\n  nextTick,\n  Transition,\n} from 'vue';\nimport { isFunction } from 'lodash-es';\nimport { useRipple, useContent, useTNodeJSX, usePrefixClass, useCollapseAnimation } from '@tdesign/shared-hooks';\n\nimport props from './submenu-props';\nimport { TdMenuInterface, TdSubMenuInterface, TdMenuItem } from './types';\nimport FakeArrow from '../common-components/fake-arrow';\n\nimport { Popup, PopupPlacement } from '../popup';\n\nimport { TdSubmenuProps } from './type';\n\nexport default defineComponent({\n  name: 'TSubmenu',\n  props: {\n    ...props,\n    expandType: String,\n  },\n  setup(\n    props: TdSubmenuProps & {\n      expandType: string;\n    },\n    { slots },\n  ) {\n    const classPrefix = usePrefixClass();\n    const renderTNodeJSX = useTNodeJSX();\n    const renderContent = useContent();\n\n    const instance = getCurrentInstance();\n    const menu = inject<TdMenuInterface>('TdMenu');\n    const { value } = toRefs(props);\n    const { theme, activeValues, expandValues, isHead, open } = menu;\n\n    const submenu = inject<TdSubMenuInterface>('TdSubmenu', {});\n    const { setSubPopup, closeParentPopup, cancelHideTimer } = submenu;\n\n    const mode = computed(() => props.expandType || menu.mode.value);\n\n    const menuItems = ref([]); // 因composition-api的缺陷，不用reactive， 详见：https://github.com/vuejs/composition-api/issues/637\n    const isActive = computed(() => activeValues.value.indexOf(props.value) > -1);\n    const popupVisible = ref(false);\n    const isCursorInPopup = ref(false);\n    const rippleColor = computed(() => (theme.value === 'light' ? '#E7E7E7' : '#383838'));\n    const isOpen = computed(() => {\n      if (mode.value === 'popup') {\n        return popupVisible.value;\n      }\n      return expandValues ? expandValues.value?.includes(props.value) : false;\n    });\n    const isNested = ref(false); // 是否嵌套\n\n    const popupWrapperRef = ref<HTMLElement>();\n    const subPopupRef = ref<HTMLElement>();\n    const submenuRef = ref<HTMLElement>();\n    const transitionClass = usePrefixClass('slide-down');\n    useRipple(submenuRef, rippleColor);\n\n    // 存储 setTimeout 的 timer ID，用于清除定时器\n    const showTimer = ref<ReturnType<typeof setTimeout> | null>(null);\n    const hideTimer = ref<ReturnType<typeof setTimeout> | null>(null);\n\n    const clearTimers = () => {\n      if (showTimer.value !== null) {\n        clearTimeout(showTimer.value);\n        showTimer.value = null;\n      }\n      if (hideTimer.value !== null) {\n        clearTimeout(hideTimer.value);\n        hideTimer.value = null;\n      }\n    };\n\n    const handlePlacementChange = ({ placement }: { placement: string }) => {\n      const spacerEl = popupWrapperRef.value;\n      if (!spacerEl) return;\n\n      const prefixClassName = `${classPrefix.value}-menu__spacer`;\n      const isBottom = placement.startsWith('bottom');\n      const isTop = placement.startsWith('top');\n\n      spacerEl.classList.toggle(`${prefixClassName}--bottom`, isBottom);\n      spacerEl.classList.toggle(`${prefixClassName}--top`, isTop);\n    };\n\n    const classes = computed(() => [\n      `${classPrefix.value}-submenu`,\n      {\n        [`${classPrefix.value}-is-disabled`]: props.disabled,\n        [`${classPrefix.value}-is-opened`]: isOpen.value,\n      },\n    ]);\n    const overlayInnerClassName = computed(() => [\n      `${classPrefix.value}-menu__popup`,\n      `${classPrefix.value}-is-${isHead ? 'horizontal' : 'vertical'}`,\n      {\n        [`${classPrefix.value}-is-opened`]: popupVisible.value,\n      },\n      props.popupProps?.overlayInnerClassName,\n    ]);\n    const overlayClassName = computed(() => [\n      `${classPrefix.value}-menu--${theme.value}`,\n      isHead && `${classPrefix.value}-is-head-menu`,\n      { [`${classPrefix.value}-menu-is-nested`]: isNested.value },\n      props.popupProps?.overlayClassName,\n    ]);\n    const submenuClass = computed(() => [\n      `${classPrefix.value}-menu__item`,\n      {\n        [`${classPrefix.value}-is-disabled`]: props.disabled,\n        [`${classPrefix.value}-is-opened`]: isOpen.value,\n        [`${classPrefix.value}-is-active`]: isActive.value,\n      },\n    ]);\n    const subClass = computed(() => [\n      `${classPrefix.value}-menu__sub`,\n      {\n        [`${classPrefix.value}-is-opened`]: isOpen.value,\n      },\n    ]);\n    const arrowClass = computed(() => [\n      {\n        [`${classPrefix.value}-fake-arrow--active`]: isOpen.value,\n      },\n    ]);\n\n    provide<TdSubMenuInterface>(\n      'TdSubmenu',\n      reactive({\n        value,\n        addMenuItem: (item: TdMenuItem) => {\n          menuItems.value.push(item);\n          if (submenu) {\n            submenu.addMenuItem(item);\n          }\n        },\n        setSubPopup: (ref: HTMLElement) => {\n          subPopupRef.value = ref;\n        },\n        closeParentPopup: (e: MouseEvent) => {\n          // 不再检查 relatedTarget，直接触发父级的延迟隐藏\n          // 如果鼠标真的停留在父级，父级的 handleEnterPopup 会取消定时器\n          // 如果鼠标继续离开，定时器会触发隐藏\n\n          clearTimers();\n\n          // 设置父级的延迟隐藏\n          hideTimer.value = setTimeout(() => {\n            popupVisible.value = false;\n            hideTimer.value = null;\n          }, 100);\n\n          // 继续通知上级父级\n          if (isFunction(closeParentPopup)) {\n            closeParentPopup(e);\n          }\n        },\n        cancelHideTimer: () => {\n          // 取消当前级别的隐藏定时器\n          if (hideTimer.value !== null) {\n            clearTimeout(hideTimer.value);\n            hideTimer.value = null;\n          }\n          // 递归取消所有父级的隐藏定时器\n          if (isFunction(cancelHideTimer)) {\n            cancelHideTimer();\n          }\n        },\n      }),\n    );\n\n    const passSubPopupRefToParent = (val: HTMLElement) => {\n      if (isFunction(setSubPopup)) {\n        setSubPopup(val);\n      }\n    };\n\n    // methods\n    const handleMouseEnter = () => {\n      if (props.disabled) return;\n\n      clearTimers();\n\n      // 通知父级取消隐藏定时器\n      if (isFunction(cancelHideTimer)) {\n        cancelHideTimer();\n      }\n\n      showTimer.value = setTimeout(() => {\n        if (!popupVisible.value) {\n          open(props.value);\n\n          // popupVisible设置为TRUE之后打开popup，因此需要在nextTick中确保可以拿到ref值\n          nextTick().then(() => {\n            passSubPopupRefToParent(popupWrapperRef.value);\n          });\n        }\n        popupVisible.value = true;\n        showTimer.value = null;\n      }, 0);\n    };\n\n    const targetInPopup = (el: HTMLElement) => el?.classList.contains(`${classPrefix.value}-menu__popup`);\n\n    const handleMouseLeave = (e: MouseEvent) => {\n      clearTimers();\n\n      hideTimer.value = setTimeout(() => {\n        const inPopup = targetInPopup(e.relatedTarget as HTMLElement);\n\n        if (isCursorInPopup.value || inPopup) return;\n        popupVisible.value = false;\n        hideTimer.value = null;\n      }, 100);\n    };\n\n    const handleMouseLeavePopup = (e: any) => {\n      const { toElement, relatedTarget } = e;\n      let target = toElement || relatedTarget;\n\n      if (target === subPopupRef.value) return;\n\n      const isSubmenu = (el: Element) => el === submenuRef.value;\n      while (target !== null && target !== document && !isSubmenu(target)) {\n        target = target.parentNode;\n      }\n\n      isCursorInPopup.value = false;\n\n      if (!isSubmenu(target)) {\n        clearTimers();\n\n        // 使用延迟隐藏，避免在子项之间移动时闪烁\n        hideTimer.value = setTimeout(() => {\n          popupVisible.value = false;\n          hideTimer.value = null;\n        }, 100);\n\n        // 立即通知父级也开始延迟隐藏\n        closeParentPopup?.(e);\n      }\n    };\n    const handleEnterPopup = () => {\n      isCursorInPopup.value = true;\n\n      // 进入 popup 时清除隐藏定时器\n      if (hideTimer.value !== null) {\n        clearTimeout(hideTimer.value);\n        hideTimer.value = null;\n      }\n\n      // 通知父级取消隐藏定时器\n      if (isFunction(cancelHideTimer)) {\n        cancelHideTimer();\n      }\n    };\n\n    const handleSubmenuItemClick = () => {\n      if (props.disabled) return;\n      open(props.value);\n    };\n\n    const renderPopup = (triggerElement: Slots[]) => {\n      let placement: PopupPlacement = 'right-top';\n      if (!isNested.value && isHead) {\n        placement = 'bottom-left';\n      }\n\n      const popupWrapper = (\n        <div\n          ref={popupWrapperRef}\n          class={[\n            `${classPrefix.value}-menu__spacer`,\n            {\n              [`${classPrefix.value}-menu__spacer--left`]: isNested.value || !isHead,\n            },\n          ]}\n          onMouseenter={handleEnterPopup}\n          onMouseleave={handleMouseLeavePopup}\n        >\n          <ul class={`${classPrefix.value}-menu__popup-wrapper`}>{renderContent('default', 'content')}</ul>\n        </div>\n      );\n\n      const slots = {\n        content: () => popupWrapper,\n      };\n\n      // 合并 popperOptions，保留原有的 modifiers\n      const existingModifiers = (props.popupProps?.popperOptions as any)?.modifiers || [];\n      const popperOptions = {\n        ...(props.popupProps?.popperOptions ?? {}),\n        modifiers: [\n          {\n            name: 'onPlacementChange',\n            enabled: true,\n            phase: 'main',\n            fn: ({ state }: any) => {\n              handlePlacementChange({ placement: state.placement });\n            },\n          },\n          ...existingModifiers,\n        ],\n      };\n\n      const realPopup = (\n        <Popup\n          {...(props.popupProps ?? {})}\n          overlayInnerClassName={[...overlayInnerClassName.value]}\n          overlayClassName={[...overlayClassName.value]}\n          visible={popupVisible.value}\n          placement={placement}\n          popperOptions={popperOptions}\n          v-slots={slots}\n        >\n          <div ref={submenuRef} class={submenuClass.value}>\n            {triggerElement}\n          </div>\n        </Popup>\n      );\n\n      return realPopup;\n    };\n\n    const renderHeadSubmenu = () => {\n      const icon = renderTNodeJSX('icon');\n      const normalSubmenu = [\n        <div ref={submenuRef} class={submenuClass.value} onClick={handleSubmenuItemClick}>\n          {icon}\n          <span class={[`${classPrefix.value}-menu__content`]}>{renderTNodeJSX('title', { silent: true })}</span>\n        </div>,\n        <ul style=\"opacity: 0; width: 0; height: 0; overflow: hidden\">{renderContent('default', 'content')}</ul>,\n      ];\n\n      const needRotate = mode.value === 'popup' && isNested.value;\n\n      const triggerElement = [\n        icon,\n        <span class={[`${classPrefix.value}-menu__content`]}>{renderTNodeJSX('title', { silent: true })}</span>,\n        <FakeArrow\n          overlayClassName={/menu/i.test(instance?.parent.proxy.$options.name) ? arrowClass.value : null}\n          overlayStyle={{ transform: `rotate(${needRotate ? -90 : 0}deg)` }}\n        />,\n      ];\n\n      return mode.value === 'normal' ? normalSubmenu : renderPopup(triggerElement);\n    };\n\n    const renderSubmenu = () => {\n      const hasContent = slots.content || slots.default;\n      const icon = renderTNodeJSX('icon');\n      const child = renderContent('default', 'content');\n      let parent = instance.parent;\n      let paddingLeft = 44;\n\n      while (parent && parent.type.name !== 'TMenu') {\n        if (parent.type.name === 'TSubmenu') {\n          paddingLeft += 16;\n        }\n        parent = parent.parent;\n      }\n\n      const { beforeEnter, enter, afterEnter, beforeLeave, leave, afterLeave } = useCollapseAnimation();\n\n      const needRotate = mode.value === 'popup' && isNested.value;\n\n      const normalSubmenu = [\n        <div ref={submenuRef} class={submenuClass.value} onClick={handleSubmenuItemClick}>\n          {icon}\n          <span class={[`${classPrefix.value}-menu__content`]}>{renderTNodeJSX('title', { silent: true })}</span>\n          {hasContent && (\n            <FakeArrow\n              overlayClassName={arrowClass.value}\n              overlayStyle={{ transform: `rotate(${needRotate ? -90 : 0}deg)` }}\n            />\n          )}\n        </div>,\n        <Transition\n          name={transitionClass.value}\n          onBeforeEnter={beforeEnter}\n          onEnter={enter}\n          onAfterEnter={afterEnter}\n          onBeforeLeave={beforeLeave}\n          onLeave={leave}\n          onAfterLeave={afterLeave}\n        >\n          <ul v-show={isOpen.value} class={subClass.value} style={{ '--padding-left': `${paddingLeft}px` }}>\n            {child}\n          </ul>\n        </Transition>,\n      ];\n\n      const triggerElement = [\n        icon,\n        <span class={[`${classPrefix.value}-menu__content`]}>{renderTNodeJSX('title', { silent: true })}</span>,\n        <FakeArrow\n          overlayClassName={/menu/i.test(parent.proxy.$options.name) ? arrowClass.value : null}\n          overlayStyle={{ transform: `rotate(${needRotate ? -90 : 0}deg)`, 'margin-left': 'auto' }}\n        />,\n      ];\n\n      return mode.value === 'normal' ? normalSubmenu : renderPopup(triggerElement);\n    };\n\n    watch(popupVisible, (visible) => {\n      menu.open(props.value, visible ? 'add' : 'remove');\n    });\n\n    watch(popupWrapperRef, () => {\n      // 第一次触发nextTick会取空值，导致subPopupRef拿不到对应的DOM\n      passSubPopupRefToParent(popupWrapperRef.value);\n    });\n\n    onMounted(() => {\n      menu?.vMenu?.add({ value: props.value, parent: submenu?.value, vnode: slots.default });\n      let node = instance.parent;\n\n      while (node && !/^t(head)?menu/i.test(node?.type.name)) {\n        if (/submenu/i.test(node?.type.name)) {\n          isNested.value = true;\n          break;\n        }\n        node = node?.parent;\n      }\n    });\n\n    // Cleanup timers on unmount to prevent memory leaks\n    onBeforeUnmount(() => {\n      clearTimers();\n    });\n\n    return () => {\n      let child = null;\n      let events = {};\n      let virtualChild;\n\n      if (mode.value === 'popup') {\n        events = {\n          onMouseenter: handleMouseEnter,\n          onMouseleave: handleMouseLeave,\n        };\n        // popup模式下且存在多层的特殊封装场景中，需要将子节点挂载进行计算高亮\n        if (activeValues.value.length < 2)\n          virtualChild = <div style=\"display:none\">{renderContent('default', 'content')}</div>;\n      }\n      if (Object.keys(slots).length > 0) {\n        child = isHead ? renderHeadSubmenu() : renderSubmenu();\n      }\n\n      return (\n        <li class={classes.value} {...events}>\n          {child}\n          {virtualChild}\n        </li>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","props","_objectSpread","expandType","String","setup","slots","_ref","classPrefix","usePrefixClass","renderTNodeJSX","useTNodeJSX","renderContent","useContent","instance","getCurrentInstance","menu","inject","_toRefs","toRefs","value","theme","activeValues","expandValues","isHead","open","submenu","setSubPopup","closeParentPopup","cancelHideTimer","mode","computed","menuItems","ref","isActive","indexOf","popupVisible","isCursorInPopup","rippleColor","isOpen","_expandValues$value","includes","isNested","popupWrapperRef","subPopupRef","submenuRef","transitionClass","useRipple","showTimer","hideTimer","clearTimers","clearTimeout","handlePlacementChange","_ref2","placement","spacerEl","prefixClassName","concat","isBottom","startsWith","isTop","classList","toggle","classes","_defineProperty","disabled","overlayInnerClassName","_props2$popupProps","popupProps","overlayClassName","_props2$popupProps2","submenuClass","subClass","arrowClass","provide","reactive","addMenuItem","item","push","e","setTimeout","isFunction","passSubPopupRefToParent","val","handleMouseEnter","nextTick","then","targetInPopup","el","contains","handleMouseLeave","inPopup","relatedTarget","handleMouseLeavePopup","toElement","target","isSubmenu","document","parentNode","handleEnterPopup","handleSubmenuItemClick","renderPopup","triggerElement","_props2$popupProps3","_props2$popupProps$po","_props2$popupProps4","_props2$popupProps5","popupWrapper","_createVNode","content","existingModifiers","popperOptions","modifiers","enabled","phase","fn","_ref0","state","_toConsumableArray","realPopup","_default","renderHeadSubmenu","icon","normalSubmenu","silent","needRotate","test","parent","proxy","$options","transform","renderSubmenu","hasContent","child","paddingLeft","type","_useCollapseAnimation","useCollapseAnimation","beforeEnter","enter","afterEnter","beforeLeave","leave","afterLeave","FakeArrow","Transition","_withDirectives","_vShow","watch","visible","onMounted","_menu$vMenu","vMenu","add","vnode","node","_node","_node2","_node3","onBeforeUnmount","events","virtualChild","onMouseenter","onMouseleave","length","Object","keys","_mergeProps"],"mappings":"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"}