{"version":3,"file":"submenu.mjs","sources":["../../../../../packages/utils/menu/submenu.ts"],"sourcesContent":["import { EVENT_CODE, triggerEvent } from '../aria'\nimport type MenuItem from './menu-item'\n\nclass SubMenu {\n  public subMenuItems: NodeList\n  public subIndex = 0\n  constructor(public parent: MenuItem, public domNode: ParentNode) {\n    this.subIndex = 0\n    this.init()\n  }\n\n  init(): void {\n    this.subMenuItems = this.domNode.querySelectorAll('li')\n    this.addListeners()\n  }\n\n  gotoSubIndex(idx: number): void {\n    if (idx === this.subMenuItems.length) {\n      idx = 0\n    } else if (idx < 0) {\n      idx = this.subMenuItems.length - 1\n    }\n    ;(this.subMenuItems[idx] as HTMLElement).focus()\n    this.subIndex = idx\n  }\n\n  addListeners(): void {\n    const parentNode = this.parent.domNode\n    Array.prototype.forEach.call(this.subMenuItems, (el: Element) => {\n      el.addEventListener('keydown', (event: KeyboardEvent) => {\n        let prevDef = false\n        switch (event.code) {\n          case EVENT_CODE.down: {\n            this.gotoSubIndex(this.subIndex + 1)\n            prevDef = true\n            break\n          }\n          case EVENT_CODE.up: {\n            this.gotoSubIndex(this.subIndex - 1)\n            prevDef = true\n            break\n          }\n          case EVENT_CODE.tab: {\n            triggerEvent(parentNode 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          event.stopPropagation()\n        }\n        return false\n      })\n    })\n  }\n}\n\nexport default SubMenu\n"],"names":[],"mappings":";;AAGA,cAAc;AAAA,EAGZ,YAAmB,QAAyB,SAAqB;AAA9C;AAAyB;AADrC,oBAAW;AAEhB,SAAK,WAAW;AAChB,SAAK;AAAA;AAAA,EAGP,OAAa;AACX,SAAK,eAAe,KAAK,QAAQ,iBAAiB;AAClD,SAAK;AAAA;AAAA,EAGP,aAAa,KAAmB;AAC9B,QAAI,QAAQ,KAAK,aAAa,QAAQ;AACpC,YAAM;AAAA,eACG,MAAM,GAAG;AAClB,YAAM,KAAK,aAAa,SAAS;AAAA;AAEnC;AAAC,IAAC,KAAK,aAAa,KAAqB;AACzC,SAAK,WAAW;AAAA;AAAA,EAGlB,eAAqB;AACnB,UAAM,aAAa,KAAK,OAAO;AAC/B,UAAM,UAAU,QAAQ,KAAK,KAAK,cAAc,CAAC,OAAgB;AAC/D,SAAG,iBAAiB,WAAW,CAAC,UAAyB;AACvD,YAAI,UAAU;AACd,gBAAQ,MAAM;AAAA,eACP,WAAW,MAAM;AACpB,iBAAK,aAAa,KAAK,WAAW;AAClC,sBAAU;AACV;AAAA;AAAA,eAEG,WAAW,IAAI;AAClB,iBAAK,aAAa,KAAK,WAAW;AAClC,sBAAU;AACV;AAAA;AAAA,eAEG,WAAW,KAAK;AACnB,yBAAa,YAA2B;AACxC;AAAA;AAAA,eAEG,WAAW;AAAA,eACX,WAAW,OAAO;AACrB,sBAAU;AACT,YAAC,MAAM,cAA8B;AACtC;AAAA;AAAA;AAGJ,YAAI,SAAS;AACX,gBAAM;AACN,gBAAM;AAAA;AAER,eAAO;AAAA;AAAA;AAAA;AAAA;;;;"}