{"version":3,"file":"sub-item.mjs","sources":["../../../../../../packages/components/dropdown-v2/src/sub-item.ts"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  inject,\n  provide,\n  ref,\n  unref,\n} from 'vue'\nimport { ElTooltip, useNamespace } from 'element-plus'\nimport { useTimeoutFn } from '@vueuse/core'\nimport { addUnit, definePropType } from '@element-plus/utils'\nimport { DIV_TAG, UL_TAG } from '@element-plus/constants'\nimport Item from './item'\nimport useItem from './use-item'\nimport type { DropdownOption, PanelProvider, SubItemProvider } from './types'\n\nconst fallbackPlacements = [\n  'right-start',\n  'right',\n  'right-end',\n  'left-start',\n  'bottom-start',\n  'bottom-end',\n  'top-start',\n  'top-end',\n]\n\nexport default defineComponent({\n  name: 'ElDropdownV2SubItem',\n  inheritAttrs: false,\n  props: {\n    option: {\n      type: definePropType<DropdownOption>(Object),\n      required: true,\n    },\n    level: {\n      type: definePropType<number>(Number),\n    },\n  },\n  setup(props, { slots, expose }) {\n    const ns = useNamespace('dropdown-v2')\n    const instance = getCurrentInstance()!\n\n    const value = computed(() => props.option.value)\n\n    const { valuePath, parentItem } = useItem(\n      instance,\n      computed(() => unref(value))\n    )\n    const mouseInChild = ref(false)\n\n    const rootPanel = inject<PanelProvider>('rootPanel') as PanelProvider\n    const subItem = inject<SubItemProvider>(\n      `subItem:${parentItem.value!.uid}`\n    ) as SubItemProvider\n\n    const vPopper = ref<InstanceType<typeof ElTooltip> | null>(null)\n\n    const isFirstLevel = computed(() => subItem.level === 0)\n\n    const appendToBody = computed(() => (isFirstLevel.value ? true : false))\n\n    const currentPlacement = computed(() => {\n      const tooltipOptions = rootPanel.props.tooltipOptions\n      return isFirstLevel.value\n        ? tooltipOptions?.placement ?? 'right-start'\n        : 'right-start'\n    })\n\n    const trigger = computed(() => rootPanel.props.trigger)\n\n    const tooltipOptions = computed(() => {\n      return isFirstLevel.value ? rootPanel.props.tooltipOptions ?? {} : {}\n    })\n\n    const subMenuShowTimeout = computed(\n      () => rootPanel.props.showTimeout ?? 200\n    )\n\n    const subMenuHideTimeout = computed(\n      () => rootPanel.props.hideTimeout ?? 200\n    )\n\n    const opened = computed(() => rootPanel.openedItems.includes(unref(value)))\n\n    const panelStyle = computed(() => {\n      return {\n        width: addUnit(rootPanel.props.width),\n      }\n    })\n\n    let timeout: (() => void) | undefined\n    const handleMouseenter = (\n      event: MouseEvent | FocusEvent,\n      showTimeout = subMenuShowTimeout.value\n    ) => {\n      if (unref(trigger) !== 'hover') return\n      subItem.mouseInChild.value = true\n\n      timeout?.()\n      ;({ stop: timeout } = useTimeoutFn(() => {\n        rootPanel.openItem(unref(value), valuePath.value)\n      }, showTimeout))\n\n      if (isFirstLevel.value) {\n        parentItem.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'))\n      }\n    }\n\n    const handleMouseleave = (deepDispatch = false) => {\n      if (unref(trigger) !== 'hover') return\n      subItem.mouseInChild.value = false\n      timeout?.()\n      ;({ stop: timeout } = useTimeoutFn(() => {\n        !mouseInChild.value &&\n          rootPanel.closeItem(unref(value), valuePath.value)\n      }, subMenuHideTimeout.value))\n\n      if (isFirstLevel.value && deepDispatch) {\n        subItem.handleMouseleave?.(true)\n      }\n    }\n\n    const hide = () => vPopper.value?.hide?.()\n\n    provide<SubItemProvider>(`subItem:${instance.uid}`, {\n      handleMouseleave,\n      mouseInChild,\n      level: subItem.level + 1,\n    })\n\n    expose({\n      hide,\n      level: props.level,\n      value: unref(value),\n    })\n\n    return () => {\n      const data: any = {\n        ref: vPopper,\n        visible: opened.value,\n        effect: 'light',\n        pure: true,\n        offset: 0,\n        showArrow: false,\n        persistent: true,\n        placement: currentPlacement.value,\n        teleported: appendToBody.value,\n        fallbackPlacements,\n        transition: `${ns.namespace.value}-zoom-in-top`,\n        gpuAcceleration: false,\n        ...tooltipOptions.value,\n      }\n\n      if (unref(trigger) === 'click') {\n        delete data.visible\n        data.trigger = 'click'\n      }\n\n      return h(ElTooltip, data, {\n        content: () =>\n          h(\n            UL_TAG,\n            {\n              class: ns.b('list'),\n              style: panelStyle.value,\n              onMouseenter: (evt: MouseEvent) => handleMouseenter(evt, 100),\n              onMouseleave: () => handleMouseleave(true),\n            },\n            [slots.default?.()]\n          ),\n        default: () =>\n          h(\n            DIV_TAG,\n            {\n              onMouseenter: handleMouseenter,\n              onMouseleave: () => handleMouseleave(),\n            },\n            [\n              props.option.renderLabel\n                ? props.option.renderLabel({ ...props.option })\n                : h(Item, {\n                    showArrowRight: true,\n                    option: props.option,\n                    onMouseenter: handleMouseenter,\n                    onMouseleave: () => handleMouseleave(),\n                  }),\n            ]\n          ),\n      })\n    }\n  },\n})\n"],"names":["tooltipOptions"],"mappings":"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"}