{"version":3,"file":"dropdown-item.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\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  inject,\n  ref,\n  unref,\n} from 'vue'\nimport { ElRovingFocusItem } from '@hd-front-end/components/roving-focus-group'\nimport { composeEventHandlers, whenMouse } from '@hd-front-end/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          return\n        }\n\n        const target = e.currentTarget as HTMLElement\n        /**\n         * This handles the following scenario:\n         *   when the item contains a form element such as input element\n         *   when the mouse is moving over the element itself which is contained by\n         *   the item, the default focusing logic should be prevented so that\n         *   it won't cause weird action.\n         */\n        if (\n          target === document.activeElement ||\n          target.contains(document.activeElement)\n        ) {\n          return\n        }\n\n        onItemEnter(e)\n        if (!e.defaultPrevented) {\n          target?.focus({\n            preventScroll: true,\n          })\n        }\n      })\n    )\n\n    const handlePointerLeave = composeEventHandlers((e: PointerEvent) => {\n      emit('pointerleave', e)\n      return e.defaultPrevented\n    }, whenMouse(onItemLeave))\n\n    const handleClick = composeEventHandlers(\n      (e: PointerEvent) => {\n        if (props.disabled) {\n          return\n        }\n        emit('click', e)\n        return e.type !== 'keydown' && 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(() => ({ ...props, ...attrs }))\n\n    return {\n      handleClick,\n      handlePointerMove,\n      handlePointerLeave,\n      textContent,\n      propsAndAttrs,\n    }\n  },\n})\n</script>\n"],"names":["ElDropdownCollectionItem","_createBlock","_createVNode","_mergeProps","_renderSlot"],"mappings":"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"}