{"version":3,"file":"dropdown-item.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown-item.vue"],"sourcesContent":["<template>\n  <b-dropdown-collection-item\n    :disabled=\"disabled\"\n    :text-value=\"textValue ?? textContent\"\n  >\n    <b-roving-focus-item :focusable=\"!disabled\">\n      <b-dropdown-item-impl\n        v-bind=\"propsAndAttrs\"\n        @pointerleave=\"handlePointerLeave\"\n        @pointermove=\"handlePointerMove\"\n        @clickimpl=\"handleClick\"\n      >\n        <slot />\n      </b-dropdown-item-impl>\n    </b-roving-focus-item>\n  </b-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 { BRovingFocusItem } from '@bigin/components/roving-focus-group'\nimport { composeEventHandlers, whenMouse } from '@bigin/utils'\nimport BDropdownItemImpl from './dropdown-item-impl.vue'\nimport { useDropdown } from './useDropdown'\nimport {\n  BCollectionItem as BDropdownCollectionItem,\n  dropdownItemProps,\n} from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n  name: 'BDropdownItem',\n  components: {\n    BDropdownCollectionItem,\n    BRovingFocusItem,\n    BDropdownItemImpl,\n  },\n  inheritAttrs: false,\n  props: dropdownItemProps,\n  emits: ['pointermove', 'pointerleave', 'click'],\n  setup(props, { emit, attrs }) {\n    const { BDropdown } = 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.type !== 'keydown' && e.defaultPrevented\n      },\n      (e) => {\n        if (props.disabled) {\n          e.stopImmediatePropagation()\n          return\n        }\n        if (BDropdown?.hideOnClick?.value) {\n          BDropdown.handleClick?.()\n        }\n        BDropdown.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":["BDropdownCollectionItem","_createBlock","_createVNode","_mergeProps","_renderSlot"],"mappings":"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"}