1/** 2 * JS for the G DATA main menu. 3 * 4 * @author Christopher Christen <[email protected]> 5 * @copyright (c) 2021, G DATA CyberDefense AG 6 */ 7function GDataMainMenu(){const e=this,t=[];this.DOMElements={MenuToggle:document.querySelector("[data-gd-menu-toggle]"),MenuTargets:document.querySelectorAll("[data-gd-menu-target]"),MenuLinks:document.querySelectorAll(".main-nav a")},this.init=()=>{e._toggleNavigationOnClick(),e._toggleMenuTargetsOnClick(),e._closeMenuTargetOnOutsideClick(),e._closeMenuTargetsOnScrollDown(),e._closeMenuTargetsOnLinkClick()},this._toggleNavigationOnClick=()=>{e.DOMElements.MenuToggle.addEventListener("click",(()=>{document.querySelector("body").classList.toggle("main-nav-active")}))},this._toggleMenuTargetsOnClick=()=>{e.DOMElements.MenuTargets.forEach((n=>{t.push(n),n.addEventListener("click",(t=>{t.preventDefault(),e._hasParentClass(n,"open")||n.classList.contains("is-open")||e._removeActiveStates(),e._setMenuTargetState(n,n.dataset.gdMenuTarget,!1)}))}))},this._closeMenuTargetOnOutsideClick=()=>{const close=()=>{window.innerWidth>=1024&&document.addEventListener("mouseup",(t=>{void 0===t.target.dataset.gdMenuTarget&&e._removeActiveStates()}))};let t;close(),window.addEventListener("resize",(()=>{t&&window.cancelAnimationFrame(t),t=window.requestAnimationFrame((()=>{close()}))}))},this._closeMenuTargetsOnScrollDown=()=>{let t;window.addEventListener("scroll",(()=>{t&&window.cancelAnimationFrame(t),t=window.requestAnimationFrame((()=>{window.pageYOffset>400&&e.DOMElements.MenuTargets.forEach((t=>{e._setMenuTargetState(t,t.dataset.gdMenuTarget,!0)}))}))}))},this._closeMenuTargetsOnLinkClick=()=>{e.DOMElements.MenuLinks.forEach((t=>{t.addEventListener("click",(()=>{t.dataset.gdMenuTarget||(document.querySelector("body").classList.remove("main-nav-active"),e._removeActiveStates())}))}))},this._setMenuTargetState=(e,t,n)=>{const a=document.getElementById(t);e&&a&&(n?(e.classList.remove("is-open"),a.classList.remove("open")):(e.classList.toggle("is-open"),a.classList.toggle("open")))},this._hasParentClass=(t,n)=>{if(t.className.split(" ").indexOf(n)>=0)return!0;try{return t.parentNode&&e._hasParentClass(t.parentNode,n)}catch(e){return!1}},this._removeActiveStates=()=>{t.forEach((t=>{e._setMenuTargetState(t,t.dataset.gdMenuTarget,!0)}))}}var GdWebsite=GdWebsite||{};GdWebsite.MainMenu=new GDataMainMenu,GdWebsite.MainMenu.init();
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.