{"version":3,"file":"PopupTrigger.mjs","sources":["../../../../../../packages/components/menu/src/PopupTrigger.tsx"],"sourcesContent":["import type { CustomSlotsType } from '@antdv/types';\nimport type { PropType } from 'vue';\nimport type { MenuMode } from './interface';\nimport { classNames, raf } from '@antdv/utils';\nimport { getTransitionProps } from '@antdv/vue-components/transition';\nimport { VcTrigger } from '@antdv/vue-components/vc-trigger';\nimport { computed, defineComponent, onBeforeUnmount, shallowRef, watch } from 'vue';\nimport { useInjectForceRender, useInjectMenu } from './hooks/useMenuContext';\nimport { placements, placementsRtl } from './placements';\n\nconst popupPlacementMap = {\n  'horizontal': 'bottomLeft',\n  'vertical': 'rightTop',\n  'vertical-left': 'rightTop',\n  'vertical-right': 'leftTop',\n};\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'PopupTrigger',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    mode: String as PropType<MenuMode>,\n    visible: Boolean,\n    // popup: React.ReactNode;\n    popupClassName: String,\n    popupOffset: Array as PropType<number[]>,\n    disabled: Boolean,\n    onVisibleChange: Function as PropType<(visible: boolean) => void>,\n  },\n  slots: Object as CustomSlotsType<{\n    default?: any\n    popup?: any\n  }>,\n  emits: ['visibleChange'],\n  setup(props, { slots, emit }) {\n    const innerVisible = shallowRef(false);\n    const {\n      getPopupContainer,\n      rtl,\n      subMenuOpenDelay,\n      subMenuCloseDelay,\n      builtinPlacements,\n      triggerSubMenuAction,\n      forceSubMenuRender,\n      motion,\n      defaultMotions,\n      rootClassName,\n    } = useInjectMenu();\n    const forceRender = useInjectForceRender();\n    const placement = computed(() =>\n      rtl.value\n        ? { ...placementsRtl, ...builtinPlacements.value }\n        : { ...placements, ...builtinPlacements.value },\n    );\n\n    const popupPlacement = computed(() => popupPlacementMap[props.mode]);\n\n    const visibleRef = shallowRef<number>();\n    watch(\n      () => props.visible,\n      (visible) => {\n        raf.cancel(visibleRef.value);\n        visibleRef.value = raf(() => {\n          innerVisible.value = visible;\n        });\n      },\n      { immediate: true },\n    );\n    onBeforeUnmount(() => {\n      raf.cancel(visibleRef.value);\n    });\n\n    const onVisibleChange = (visible: boolean) => {\n      emit('visibleChange', visible);\n    };\n    const mergedMotion = computed(() => {\n      const m = motion.value || defaultMotions.value?.[props.mode] || defaultMotions.value?.other;\n      const res = typeof m === 'function' ? m() : m;\n      return res ? getTransitionProps(res.name, { css: true }) : undefined;\n    });\n    return () => {\n      const { prefixCls, popupClassName, mode, popupOffset, disabled } = props;\n      return (\n        <VcTrigger\n          prefixCls={prefixCls}\n          popupClassName={classNames(\n            `${prefixCls}-popup`,\n            {\n              [`${prefixCls}-rtl`]: rtl.value,\n            },\n            popupClassName,\n            rootClassName.value,\n          )}\n          stretch={mode === 'horizontal' ? 'minWidth' : null}\n          getPopupContainer={getPopupContainer.value}\n          builtinPlacements={placement.value}\n          popupPlacement={popupPlacement.value}\n          popupVisible={innerVisible.value}\n          popupAlign={popupOffset && { offset: popupOffset }}\n          action={disabled ? [] : [triggerSubMenuAction.value]}\n          mouseEnterDelay={subMenuOpenDelay.value}\n          mouseLeaveDelay={subMenuCloseDelay.value}\n          onPopupVisibleChange={onVisibleChange}\n          forceRender={forceRender || forceSubMenuRender.value}\n          popupAnimation={mergedMotion.value}\n          v-slots={{\n            popup: slots.popup,\n            default: slots.default,\n          }}\n        >\n        </VcTrigger>\n      );\n    };\n  },\n});\n"],"names":["popupPlacementMap","compatConfig","MODE","name","inheritAttrs","props","prefixCls","String","mode","visible","Boolean","popupClassName","popupOffset","Array","disabled","onVisibleChange","Function","slots","Object","emits","setup","emit","innerVisible","shallowRef","getPopupContainer","rtl","subMenuOpenDelay","subMenuCloseDelay","builtinPlacements","triggerSubMenuAction","forceSubMenuRender","motion","defaultMotions","rootClassName","useInjectMenu","forceRender","useInjectForceRender","placement","computed","value","placementsRtl","placements","popupPlacement","visibleRef","watch","raf","cancel","immediate","onBeforeUnmount","mergedMotion","m","other","res","getTransitionProps","css","undefined","_createVNode","VcTrigger","classNames","offset","popup","default"],"mappings":"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"}