{"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,SAAS;CACrB;CAEA,KAAK,WAAyB;EAC5B,KAAK,QAAQ,aAAa,YAAY,GAAG;EACzC,MAAM,YAAY,KAAK,QAAQ,cAAc,IAAI,UAAU,MAAM;EACjE,IAAI,WACF,KAAK,UAAU,IAAI,QAAQ,MAAM,SAAS;EAE5C,KAAK,aAAa;CACpB;CAEA,eAAe;EACb,KAAK,QAAQ,iBAAiB,YAAY,UAAyB;GACjE,MAAM,OAAO,aAAa,KAAK;GAC/B,IAAI,UAAU;GAEd,QAAQ,MAAR;IACE,KAAK,WAAW;KACd,aAAa,MAAM,eAA8B,YAAY;KAC7D,KAAK,SAAS,aAAa,CAAC;KAC5B,UAAU;KACV;IAEF,KAAK,WAAW;KACd,aAAa,MAAM,eAA8B,YAAY;KAC7D,KAAK,SAAS,aAAa,KAAK,QAAQ,aAAa,SAAS,CAAC;KAC/D,UAAU;KACV;IAEF,KAAK,WAAW;KACd,aAAa,MAAM,eAA8B,YAAY;KAC7D;IAEF,KAAK,WAAW;IAChB,KAAK,WAAW;IAChB,KAAK,WAAW;KACd,UAAU;KACT,MAAO,cAA8B,MAAM;GAGhD;GACA,IAAI,SACF,MAAM,eAAe;EAEzB,CAAC;CACH;AACF"}