PageSourceSearch

https://www.viralnation.com/hubfs/hub_generated/module_assets/1/20…/1784911875428/module_mega-menu.min.js

js viralnation.com collected 2026-09-24 09:15:57 UTC 6,825 bytes, 2 lines download raw bytes

1var module_207046890364=void function(){"use strict";let megaMenuInstance=null;class MegaMenu{constructor(){this.header=document.querySelector(".vn-header-mega"),this.header&&(this.dropdowns=[],this.mobileToggle=null,this.mobileNav=null,this.activeDropdown=null,this.closeTimeout=null,this.init())}init(){this.updateHeaderHeight(),this.setupDropdowns(),this.setupMobileMenu(),this.setupAccessibility(),this.setupEventListeners()}updateHeaderHeight(){const height=this.header.offsetHeight;this.header.style.setProperty("--header-height",height+"px")}setupDropdowns(){this.header.querySelectorAll("[data-dropdown]").forEach(trigger=>{const dropdownId=trigger.getAttribute("aria-controls"),dropdown=document.getElementById(dropdownId);dropdown&&(this.dropdowns.push({trigger:trigger,button:trigger,dropdown:dropdown,id:dropdownId}),this.setupDropdownEvents(trigger,dropdown))})}setupDropdownEvents(trigger,dropdown){let closeTimeout;trigger.addEventListener("mouseenter",()=>{clearTimeout(closeTimeout),this.openDropdown(trigger,dropdown)}),trigger.addEventListener("mouseleave",()=>{closeTimeout=setTimeout(()=>{this.closeDropdown(trigger,dropdown)},200)}),dropdown.addEventListener("mouseenter",()=>{clearTimeout(closeTimeout)}),dropdown.addEventListener("mouseleave",()=>{closeTimeout=setTimeout(()=>{this.closeDropdown(trigger,dropdown)},200)}),trigger.addEventListener("click",e=>{trigger.classList.contains("vn-header-mega__nav-link--dropdown")&&(e.preventDefault(),e.stopPropagation(),"true"===trigger.getAttribute("aria-expanded")?this.closeDropdown(trigger,dropdown):this.openDropdown(trigger,dropdown))}),trigger.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),"true"===trigger.getAttribute("aria-expanded")?this.closeDropdown(trigger,dropdown):this.openDropdown(trigger,dropdown)),"Escape"===e.key&&(this.closeDropdown(trigger,dropdown),trigger.focus())})}openDropdown(button,dropdown){this.closeAllDropdowns(),button.setAttribute("aria-expanded","true"),dropdown.setAttribute("aria-hidden","false"),this.activeDropdown={button:button,dropdown:dropdown},this.header.dispatchEvent(new CustomEvent("vn:dropdown-open",{detail:{button:button,dropdown:dropdown}}))}closeDropdown(button,dropdown){button.setAttribute("aria-expanded","false"),dropdown.setAttribute("aria-hidden","true"),this.activeDropdown&&this.activeDropdown.dropdown===dropdown&&(this.activeDropdown=null),this.header.dispatchEvent(new CustomEvent("vn:dropdown-close",{detail:{button:button,dropdown:dropdown}}))}closeAllDropdowns(){this.dropdowns.forEach(({button:button,dropdown:dropdown})=>{this.closeDropdown(button,dropdown)})}setupMobileMenu(){this.mobileToggle=this.header.querySelector("[data-mobile-toggle]"),this.mobileNav=this.header.querySelector(".vn-header-mega__mobile-nav"),this.mobileToggle&&this.mobileNav&&(this.populateMobileMenu(),this.mobileToggle.addEventListener("click",()=>{this.toggleMobileMenu()}))}populateMobileMenu(){const mobileList=this.mobileNav.querySelector(".vn-header-mega__mobile-list");mobileList&&this.header.querySelectorAll(".vn-header-mega__nav-item").forEach(item=>{const clone=item.cloneNode(!0),li=document.createElement("li");li.className="vn-header-mega__mobile-item";const dropdownButton=clone.querySelector("[data-dropdown]");dropdownButton&&(dropdownButton.removeAttribute("data-dropdown"),dropdownButton.addEventListener("click",e=>{e.preventDefault(),this.toggleMobileDropdown(li)})),li.appendChild(clone),mobileList.appendChild(li)})}toggleMobileMenu(){"true"===this.mobileToggle.getAttribute("aria-expanded")?this.closeMobileMenu():this.openMobileMenu()}openMobileMenu(){this.mobileToggle.setAttribute("aria-expanded","true"),this.mobileNav.setAttribute("aria-hidden","false"),document.body.style.overflow="hidden",this.createOverlay(),this.header.dispatchEvent(new CustomEvent("vn:mobile-menu-open"))}closeMobileMenu(){this.mobileToggle.setAttribute("aria-expanded","false"),this.mobileNav.setAttribute("aria-hidden","true"),document.body.style.overflow="",this.removeOverlay(),this.header.dispatchEvent(new CustomEvent("vn:mobile-menu-close"))}toggleMobileDropdown(item){const dropdown=item.querySelector(".vn-header-dropdown-b, .vn-header-dropdown-mega");if(!dropdown)return;const isOpen="block"===dropdown.style.display;this.mobileNav.querySelectorAll(".vn-header-dropdown-b, .vn-header-dropdown-mega").forEach(d=>{d.style.display="none",d.setAttribute("aria-hidden","true")}),dropdown.style.display=isOpen?"none":"block",dropdown.style.position="static",dropdown.style.opacity="1",dropdown.style.visibility="visible",dropdown.setAttribute("aria-hidden",isOpen?"true":"false")}createOverlay(){this.overlay||(this.overlay=document.createElement("div"),this.overlay.className="vn-header-mega__overlay vn-header-mega__overlay--active",document.body.appendChild(this.overlay),this.overlay.addEventListener("click",()=>{this.closeMobileMenu()}))}removeOverlay(){this.overlay&&(this.overlay.remove(),this.overlay=null)}setupAccessibility(){const skipLink=document.querySelector('a[href="#main-content"]');skipLink&&skipLink.addEventListener("click",()=>{this.closeAllDropdowns(),this.closeMobileMenu()}),this.setupTabTrap()}setupTabTrap(){if(!this.mobileNav)return;const focusableElements=this.mobileNav.querySelectorAll('a, button, input, textarea, select, [tabindex]:not
1([tabindex="-1"])');if(0===focusableElements.length)return;const firstElement=focusableElements[0],lastElement=focusableElements[focusableElements.length-1];this.mobileNav.addEventListener("keydown",e=>{"Tab"===e.key&&(e.shiftKey?document.activeElement===firstElement&&(e.preventDefault(),lastElement.focus()):document.activeElement===lastElement&&(e.preventDefault(),firstElement.focus()))})}setupEventListeners(){let resizeTimeout;document.addEventListener("click",e=>{this.header.contains(e.target)||this.closeAllDropdowns()}),document.addEventListener("keydown",e=>{"Escape"===e.key&&(this.closeAllDropdowns(),this.closeMobileMenu())}),window.addEventListener("resize",()=>{clearTimeout(resizeTimeout),resizeTimeout=setTimeout(()=>{this.handleResize()},250)})}handleResize(){this.updateHeaderHeight(),window.innerWidth>968&&this.closeMobileMenu()}destroy(){this.closeAllDropdowns(),this.closeMobileMenu(),this.removeOverlay();const mobileList=this.mobileNav?.querySelector(".vn-header-mega__mobile-list");mobileList&&(mobileList.innerHTML="")}}function initMegaMenu(){megaMenuInstance&&megaMenuInstance.destroy(),megaMenuInstance=new MegaMenu}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",initMegaMenu):initMegaMenu(),window.addEventListener("hsAfterModuleReload",initMegaMenu),window.VNMegaMenu=MegaMenu}();
2//# sourceURL=https://4291086.fs1.hubspotusercontent-na1.net/hubfs/4291086/hub_generated/module_assets/1/207046890364/1784911875428/module_mega-menu.js

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.