1import{W as e}from"./app.js";class t extends e{constructor(e){return super(e,".header2023","desktop"),this.$name="HeaderMenuDesktop",this.log("Init header menu: ",e),this.$menuItems=this.queryElements(".header-menu__item"),this.onMouseOver=this.onMouseOver.bind(this),this.onMouseOut=this.onMouseOut.bind(this),this.onMouseOverDropdown=this.onMouseOverDropdown.bind(this),this.onMouseOutDropdown=this.onMouseOutDropdown.bind(this),this.onMouseOutTimeout=null,this.onMouseOverTimeout=null,this.onDropdownMouseOutTimeout=null,this.$activeElement=null,this.$hoveredDropdownItem=null,this.$hoveredItem=null,this.activeClass="_active",this.init(),this}build(){return this.log("Build header menu"),this.$menuItems.forEach((e=>{const t=e.querySelector(".header-menu__link");if(!t)return!1;t.addEventListener("mouseover",(()=>this.onMouseOver(e))),t.addEventListener("mouseout",(()=>this.onMouseOut(e)));const o=e.querySelector(".header-dropdown");o&&(o.addEventListener("mouseenter",(()=>this.onMouseOverDropdown(e))),o.addEventListener("mouseleave",(()=>this.onMouseOutDropdown(e))))})),this}onMouseOverDropdown(e){this.$hoveredDropdownItem=e}onMouseOutDropdown(){this.onDropdownMouseOutTimeout&&clearTimeout(this.onDropdownMouseOutTimeout),this.$hoveredDropdownItem=null,this.onDropdownMouseOutTimeout=setTimeout((()=>{this.$hoveredDropdownItem||this.$hoveredItem||this.setMenuActive(!1)}),100)}onMouseOver(e){this.$hoveredItem=e,this.onMouseOutTimeout&&clearTimeout(this.onMouseOutTimeout),this.onMouseOverTimeout&&clearTimeout(this.onMouseOverTimeout),this.onMouseOverTimeout=setTimeout((()=>{this.$hoveredDropdownItem||this.setMenuActive(e)}),100)}onMouseOut(){this.$hoveredItem=null,this.onMouseOutTimeout&&clearTimeout(this.onMouseOutTimeout),this.onMouseOutTimeout=setTimeout((()=>{if(this.$hoveredDropdownItem)return!1;this.setMenuActive(null)}),100)}setMenuActive(e){this.log("Set menu active: ",e);const{$menuItems:t,activeClass:o}=this;return this.$activeElement=e,t.forEach((e=>{e.classList.remove(o)})),e&&e.classList.add(o),this}}export{t as HeaderMenuDesktop,t as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.