{"version":3,"file":"roving-focus-item.vue2.mjs","sources":["../../../../../../packages/components/roving-focus-group/src/roving-focus-item.vue"],"sourcesContent":["<template>\n  <el-roving-focus-collection-item\n    :id=\"id\"\n    :focusable=\"focusable\"\n    :active=\"active\"\n  >\n    <slot />\n  </el-roving-focus-collection-item>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, provide, ref, unref } from 'vue'\nimport { useId } from '@element-plus/hooks'\nimport { composeEventHandlers, getEventCode } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { ElCollectionItem as ElRovingFocusCollectionItem } from './roving-focus-group'\nimport {\n  ROVING_FOCUS_GROUP_INJECTION_KEY,\n  ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY,\n} from './tokens'\n\nexport default defineComponent({\n  components: {\n    ElRovingFocusCollectionItem,\n  },\n  props: {\n    focusable: {\n      type: Boolean,\n      default: true,\n    },\n    active: Boolean,\n  },\n  emits: ['mousedown', 'focus', 'keydown'],\n  setup(props, { emit }) {\n    const { currentTabbedId, onItemFocus, onItemShiftTab, onKeydown } = inject(\n      ROVING_FOCUS_GROUP_INJECTION_KEY,\n      undefined\n    )!\n\n    const id = useId()\n    const rovingFocusGroupItemRef = ref<HTMLElement>()\n\n    const handleMousedown = composeEventHandlers(\n      (e: Event) => {\n        emit('mousedown', e)\n      },\n      (e) => {\n        if (!props.focusable) {\n          e.preventDefault()\n        } else {\n          onItemFocus(unref(id))\n        }\n      }\n    )\n\n    const handleFocus = composeEventHandlers(\n      (e: Event) => {\n        emit('focus', e)\n      },\n      () => {\n        onItemFocus(unref(id))\n      }\n    )\n\n    const handleKeydown = composeEventHandlers(\n      (e: Event) => {\n        emit('keydown', e)\n      },\n      (e) => {\n        const { shiftKey, target, currentTarget } = e as KeyboardEvent\n        const code = getEventCode(e as KeyboardEvent)\n\n        if (code === EVENT_CODE.tab && shiftKey) {\n          onItemShiftTab()\n          return\n        }\n        if (target !== currentTarget) return\n        onKeydown(e as KeyboardEvent)\n      }\n    )\n\n    const isCurrentTab = computed(() => currentTabbedId.value === unref(id))\n\n    provide(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, {\n      rovingFocusGroupItemRef,\n      tabIndex: computed(() => (unref(isCurrentTab) ? 0 : -1)),\n      handleMousedown,\n      handleFocus,\n      handleKeydown,\n    })\n\n    return {\n      id,\n      handleKeydown,\n      handleFocus,\n      handleMousedown,\n    }\n  },\n})\n</script>\n"],"names":["ElRovingFocusCollectionItem"],"mappings":";;;;;;;AAqBA,gBAAe,eAAA,CAAgB;AAAA,EAC7B,UAAA,EAAY;AAAA,iCACVA;AAAA,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,KAAA,EAAO,CAAC,WAAA,EAAa,OAAA,EAAS,SAAS,CAAA;AAAA,EACvC,KAAA,CAAM,KAAA,EAAO,EAAE,IAAA,EAAK,EAAG;AACrB,IAAA,MAAM,EAAE,eAAA,EAAiB,WAAA,EAAa,cAAA,EAAgB,WAAU,GAAI,MAAA;AAAA,MAClE,gCAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,KAAK,KAAA,EAAM;AACjB,IAAA,MAAM,0BAA0B,GAAA,EAAiB;AAEjD,IAAA,MAAM,eAAA,GAAkB,oBAAA;AAAA,MACtB,CAAC,CAAA,KAAa;AACZ,QAAA,IAAA,CAAK,aAAa,CAAC,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,CAAC,CAAA,KAAM;AACL,QAAA,IAAI,CAAC,MAAM,SAAA,EAAW;AACpB,UAAA,CAAA,CAAE,cAAA,EAAe;AAAA,QACnB,CAAA,MAAO;AACL,UAAA,WAAA,CAAY,KAAA,CAAM,EAAE,CAAC,CAAA;AAAA,QACvB;AAAA,MACF;AAAA,KACF;AAEA,IAAA,MAAM,WAAA,GAAc,oBAAA;AAAA,MAClB,CAAC,CAAA,KAAa;AACZ,QAAA,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,MAAM;AACJ,QAAA,WAAA,CAAY,KAAA,CAAM,EAAE,CAAC,CAAA;AAAA,MACvB;AAAA,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB,oBAAA;AAAA,MACpB,CAAC,CAAA,KAAa;AACZ,QAAA,IAAA,CAAK,WAAW,CAAC,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,CAAC,CAAA,KAAM;AACL,QAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,aAAA,EAAc,GAAI,CAAA;AAC5C,QAAA,MAAM,IAAA,GAAO,aAAa,CAAkB,CAAA;AAE5C,QAAA,IAAI,IAAA,KAAS,UAAA,CAAW,GAAA,IAAO,QAAA,EAAU;AACvC,UAAA,cAAA,EAAe;AACf,UAAA;AAAA,QACF;AACA,QAAA,IAAI,WAAW,aAAA,EAAe;AAC9B,QAAA,SAAA,CAAU,CAAkB,CAAA;AAAA,MAC9B;AAAA,KACF;AAEA,IAAA,MAAM,eAAe,QAAA,CAAS,MAAM,gBAAgB,KAAA,KAAU,KAAA,CAAM,EAAE,CAAC,CAAA;AAEvE,IAAA,OAAA,CAAQ,qCAAA,EAAuC;AAAA,MAC7C,uBAAA;AAAA,MACA,UAAU,QAAA,CAAS,MAAO,MAAM,YAAY,CAAA,GAAI,IAAI,EAAG,CAAA;AAAA,MACvD,eAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;;"}