{"version":3,"file":"menu-item.mjs","sources":["../../../../../../packages/components/menu/src/utils/menu-item.ts"],"sourcesContent":["import { triggerEvent } from '@element-ultra/utils'\nimport { EVENT_CODE } from '@element-ultra/shared'\nimport SubMenu from './submenu'\n\nclass MenuItem {\n  public submenu: SubMenu = null\n  constructor(public domNode: HTMLElement) {\n    this.submenu = null\n    this.init()\n  }\n\n  init(): void {\n    this.domNode.setAttribute('tabindex', '0')\n    const menuChild = this.domNode.querySelector('.el-menu')\n    if (menuChild) {\n      this.submenu = new SubMenu(this, menuChild)\n    }\n    this.addListeners()\n  }\n\n  addListeners(): void {\n    this.domNode.addEventListener('keydown', (event: KeyboardEvent) => {\n      let prevDef = false\n      switch (event.code) {\n        case EVENT_CODE.down: {\n          triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n          this.submenu && 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 &&\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.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"],"names":[],"mappings":";;;;;;AAIA,MAAM,QAAS,CAAA;AAAA,EAEb,YAAmB,OAAsB,EAAA;AAAtB,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AADnB,IAAA,IAAA,CAAO,OAAmB,GAAA,IAAA,CAAA;AAExB,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAA;AACf,IAAA,IAAA,CAAK,IAAK,EAAA,CAAA;AAAA,GACZ;AAAA,EAEA,IAAa,GAAA;AACX,IAAK,IAAA,CAAA,OAAA,CAAQ,YAAa,CAAA,UAAA,EAAY,GAAG,CAAA,CAAA;AACzC,IAAA,MAAM,SAAY,GAAA,IAAA,CAAK,OAAQ,CAAA,aAAA,CAAc,UAAU,CAAA,CAAA;AACvD,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,IAAA,CAAK,OAAU,GAAA,IAAI,OAAQ,CAAA,IAAA,EAAM,SAAS,CAAA,CAAA;AAAA,KAC5C;AACA,IAAA,IAAA,CAAK,YAAa,EAAA,CAAA;AAAA,GACpB;AAAA,EAEA,YAAqB,GAAA;AACnB,IAAA,IAAA,CAAK,OAAQ,CAAA,gBAAA,CAAiB,SAAW,EAAA,CAAC,KAAyB,KAAA;AACjE,MAAA,IAAI,OAAU,GAAA,KAAA,CAAA;AACd,MAAA,QAAQ,MAAM,IAAM;AAAA,QAClB,KAAK,WAAW,IAAM,EAAA;AACpB,UAAa,YAAA,CAAA,KAAA,CAAM,eAA8B,YAAY,CAAA,CAAA;AAC7D,UAAA,IAAA,CAAK,OAAW,IAAA,IAAA,CAAK,OAAQ,CAAA,YAAA,CAAa,CAAC,CAAA,CAAA;AAC3C,UAAU,OAAA,GAAA,IAAA,CAAA;AACV,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,WAAW,EAAI,EAAA;AAClB,UAAa,YAAA,CAAA,KAAA,CAAM,eAA8B,YAAY,CAAA,CAAA;AAC7D,UAAK,IAAA,CAAA,OAAA,IACH,KAAK,OAAQ,CAAA,YAAA,CAAa,KAAK,OAAQ,CAAA,YAAA,CAAa,SAAS,CAAC,CAAA,CAAA;AAChE,UAAU,OAAA,GAAA,IAAA,CAAA;AACV,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,WAAW,GAAK,EAAA;AACnB,UAAa,YAAA,CAAA,KAAA,CAAM,eAA8B,YAAY,CAAA,CAAA;AAC7D,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,UAAW,CAAA,KAAA,CAAA;AAAA,QAChB,KAAK,WAAW,KAAO,EAAA;AACrB,UAAU,OAAA,GAAA,IAAA,CAAA;AACT,UAAC,KAAA,CAAM,cAA8B,KAAM,EAAA,CAAA;AAC5C,UAAA,MAAA;AAAA,SACF;AAAA,OACF;AACA,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,OACvB;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF;;;;"}