{"version":3,"file":"menu-item.mjs","names":[],"sources":["../../../../../../../packages/components/menu/src/utils/menu-item.ts"],"sourcesContent":["import { getEventCode, triggerEvent } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport SubMenu from './submenu'\n\nclass MenuItem {\n  public submenu: SubMenu | null\n  constructor(\n    public domNode: HTMLElement,\n    namespace: string\n  ) {\n    this.submenu = null\n    this.init(namespace)\n  }\n\n  init(namespace: string): void {\n    this.domNode.setAttribute('tabindex', '0')\n    const menuChild = this.domNode.querySelector(`.${namespace}-menu`)\n    if (menuChild) {\n      this.submenu = new SubMenu(this, menuChild)\n    }\n    this.addListeners()\n  }\n\n  addListeners() {\n    this.domNode.addEventListener('keydown', (event: KeyboardEvent) => {\n      const code = getEventCode(event)\n      let prevDef = false\n\n      switch (code) {\n        case EVENT_CODE.down: {\n          triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n          this.submenu?.gotoSubIndex(0)\n          prevDef = true\n          break\n        }\n        case EVENT_CODE.up: {\n          triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n          this.submenu?.gotoSubIndex(this.submenu.subMenuItems.length - 1)\n          prevDef = true\n          break\n        }\n        case EVENT_CODE.tab: {\n          triggerEvent(event.currentTarget as HTMLElement, 'mouseleave')\n          break\n        }\n        case EVENT_CODE.enter:\n        case EVENT_CODE.numpadEnter:\n        case EVENT_CODE.space: {\n          prevDef = true\n          ;(event.currentTarget as HTMLElement).click()\n          break\n        }\n      }\n      if (prevDef) {\n        event.preventDefault()\n      }\n    })\n  }\n}\n\nexport default MenuItem\n"],"mappings":";;;;;AAIA,IAAM,WAAN,MAAe;CAEb,YACE,SACA,WACA;EAFO,KAAA,UAAA;EAGP,KAAK,UAAU;EACf,KAAK,KAAK,UAAU;;CAGtB,KAAK,WAAyB;EAC5B,KAAK,QAAQ,aAAa,YAAY,IAAI;EAC1C,MAAM,YAAY,KAAK,QAAQ,cAAc,IAAI,UAAU,OAAO;EAClE,IAAI,WACF,KAAK,UAAU,IAAI,QAAQ,MAAM,UAAU;EAE7C,KAAK,cAAc;;CAGrB,eAAe;EACb,KAAK,QAAQ,iBAAiB,YAAY,UAAyB;GACjE,MAAM,OAAO,aAAa,MAAM;GAChC,IAAI,UAAU;GAEd,QAAQ,MAAR;IACE,KAAK,WAAW;KACd,aAAa,MAAM,eAA8B,aAAa;KAC9D,KAAK,SAAS,aAAa,EAAE;KAC7B,UAAU;KACV;IAEF,KAAK,WAAW;KACd,aAAa,MAAM,eAA8B,aAAa;KAC9D,KAAK,SAAS,aAAa,KAAK,QAAQ,aAAa,SAAS,EAAE;KAChE,UAAU;KACV;IAEF,KAAK,WAAW;KACd,aAAa,MAAM,eAA8B,aAAa;KAC9D;IAEF,KAAK,WAAW;IAChB,KAAK,WAAW;IAChB,KAAK,WAAW;KACd,UAAU;KACT,MAAO,cAA8B,OAAO;KAC7C;;GAGJ,IAAI,SACF,MAAM,gBAAgB;IAExB"}