{"version":3,"file":"dropdown-item.vue.mjs","sources":["../../../../../packages/components/dropdown/src/dropdown-item.vue"],"sourcesContent":["<template>\n  <el-dropdown-collection-item\n    :disabled=\"disabled\"\n    :text-value=\"textValue ?? textContent\"\n  >\n    <el-roving-focus-item :focusable=\"!disabled\">\n      <el-dropdown-item-impl\n        v-bind=\"propsAndAttrs\"\n        @pointerleave=\"handlePointerLeave\"\n        @pointermove=\"handlePointerMove\"\n        @clickimpl=\"handleClick\"\n      >\n        <slot />\n      </el-dropdown-item-impl>\n    </el-roving-focus-item>\n  </el-dropdown-collection-item>\n</template>\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  inject,\n  ref,\n  unref,\n} from 'vue'\nimport { ElRovingFocusItem } from '@element-ultra/components/roving-focus-group'\nimport { composeEventHandlers, whenMouse } from '@element-ultra/utils'\nimport ElDropdownItemImpl from './dropdown-item-impl.vue'\nimport { useDropdown } from './useDropdown'\nimport {\n  ElCollectionItem as ElDropdownCollectionItem,\n  dropdownItemProps,\n} from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n  name: 'ElDropdownItem',\n  components: {\n    ElDropdownCollectionItem,\n    ElRovingFocusItem,\n    ElDropdownItemImpl,\n  },\n  inheritAttrs: false,\n  props: dropdownItemProps,\n  emits: ['pointermove', 'pointerleave', 'click'],\n  setup(props, { emit, attrs }) {\n    const { elDropdown } = useDropdown()\n    const _instance = getCurrentInstance()\n    const itemRef = ref<HTMLElement | null>(null)\n    const textContent = computed(() => unref(itemRef)?.textContent ?? '')\n    const { onItemEnter, onItemLeave } = inject(\n      DROPDOWN_INJECTION_KEY,\n      undefined\n    )!\n\n    const handlePointerMove = composeEventHandlers(\n      (e: PointerEvent) => {\n        emit('pointermove', e)\n        return e.defaultPrevented\n      },\n      whenMouse((e) => {\n        if (props.disabled) {\n          onItemLeave(e)\n        } else {\n          onItemEnter(e)\n          if (!e.defaultPrevented) {\n            ;(e.currentTarget as HTMLElement)?.focus()\n          }\n        }\n      })\n    )\n\n    const handlePointerLeave = composeEventHandlers(\n      (e: PointerEvent) => {\n        emit('pointerleave', e)\n        return e.defaultPrevented\n      },\n      whenMouse((e) => {\n        onItemLeave(e)\n      })\n    )\n\n    const handleClick = composeEventHandlers(\n      (e: PointerEvent) => {\n        emit('click', e)\n        return e.defaultPrevented\n      },\n      (e) => {\n        if (props.disabled) {\n          e.stopImmediatePropagation()\n          return\n        }\n        if (elDropdown?.hideOnClick?.value) {\n          elDropdown.handleClick?.()\n        }\n        elDropdown.commandHandler?.(props.command, _instance, e)\n      }\n    )\n\n    // direct usage of v-bind={ ...$props, ...$attrs } causes type errors\n    const propsAndAttrs = computed(() => {\n      return { ...props, ...attrs }\n    })\n\n    return {\n      handleClick,\n      handlePointerMove,\n      handlePointerLeave,\n      textContent,\n      propsAndAttrs,\n    }\n  },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_withCtx","_createVNode","_mergeProps"],"mappings":";;;;;;;;AAegC,EAAA,MAAA,sCAAA,GAAAA,iBAAA,6BAAA,CAAA,CAAA;AAZ3B,EAAA,OAAAC,SAAA,gBAAyB,sCAAW,EAAA;AAAA,IAAA,UAAA,IAAA,CAAA,QAAA;AAAA,IAWd,YAAA,EAAA,CAAA,EAAA,GAAA,IAAA,CAAA,SAAA,KAAA,IAAA,GAAA,EAAA,GAAA,IAAA,CAAA,WAAA;AAAA,GAAA,EAAA;AAAA,aATAC,QAAY,MAAA;AAAA,MAAAC,YAAA,+BAAA,EAAA;AAAA;;QAG9B,OAAA,EAAAD,QAAY,MAAE;AAAA,UAAAC,WACd,CAAA,gCAAA,EAA8BC,UAAA,CAAA,IAAA,CAAA,aAAA,EAAA;AAAA,YAC9B,gBAAW,IAAA,CAAA,kBAAA;AAAA,YAAA,eAAA,IAAA,CAAA,iBAAA;AAAA,YAEZ,aAAA,IAAA,CAAA,WAAA;AAAA,WAAA,CAAA,EAAA;AAAA,YAAA,OAAA,EAAAF,QAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;"}