PageSourceSearch

https://www.reputationx.com/wp-content/cache/min/1/wp-content/them…/assets/js/mega-menu.js?ver=1790873016

js reputationx.com collected 2026-10-02 03:43:40 UTC 6,179 bytes, 22 lines download raw bytes

1'use strict';document.addEventListener('DOMContentLoaded',function(){var BREAKPOINT=768;var HOVER_DELAY=200;var desktopQuery=window.matchMedia('(min-width: '+BREAKPOINT+'px)');var menuTriggers=document.querySelectorAll('[data-menu-trigger]');var hoverTimeouts=new Map();function openDesktopDropdown(triggerItem){var link=triggerItem.querySelector('.mega-menu__link');var panel=triggerItem.querySelector('.mega-menu__panel');triggerItem.classList.add('is-active');if(link){link.setAttribute('aria-expanded','true')}
2if(panel){panel.setAttribute('aria-hidden','false')}}
3function closeDesktopDropdown(triggerItem){var link=triggerItem.querySelector('.mega-menu__link');var panel=triggerItem.querySelector('.mega-menu__panel');triggerItem.classList.remove('is-active');if(link){link.setAttribute('aria-expanded','false')}
4if(panel){panel.setAttribute('aria-hidden','true')}}
5function closeAllDesktopDropdowns(){menuTriggers.forEach(function(item){closeDesktopDropdown(item);if(hoverTimeouts.has(item)){clearTimeout(hoverTimeouts.get(item));hoverTimeouts.delete(item)}})}
6function handleMouseEnter(){var triggerItem=this;if(hoverTimeouts.has(triggerItem)){clearTimeout(hoverTimeouts.get(triggerItem));hoverTimeouts.delete(triggerItem)}
7menuTriggers.forEach(function(item){if(item!==triggerItem&&item.classList.contains('is-active')){closeDesktopDropdown(item)}});openDesktopDropdown(triggerItem)}
8function handleMouseLeave(){var triggerItem=this;var timeout=setTimeout(function(){closeDesktopDropdown(triggerItem);hoverTimeouts.delete(triggerItem)},HOVER_DELAY);hoverTimeouts.set(triggerItem,timeout)}
9function bindDesktopEvents(){menuTriggers.forEach(function(triggerItem){triggerItem.addEventListener('mouseenter',handleMouseEnter);triggerItem.addEventListener('mouseleave',handleMouseLeave)});if(isTouch)bindTouchEvents()}
10function unbindDesktopEvents(){menuTriggers.forEach(function(triggerItem){triggerItem.removeEventListener('mouseenter',handleMouseEnter);triggerItem.removeEventListener('mouseleave',handleMouseLeave)});if(isTouch)unbindTouchEvents();closeAllDesktopDropdowns()}
11var isTouch='ontouchstart' in window||navigator.maxTouchPoints>0;function handleTouchClick(e){if(!desktopQuery.matches)return;var triggerItem=this;var link=e.target.closest('.mega-menu__link');if(!link||!triggerItem.contains(link))return;if(triggerItem.classList.contains('is-active'))return;e.preventDefault();closeAllDesktopDropdowns();openDesktopDropdown(triggerItem)}
12function bindTouchEvents(){menuTriggers.forEach(function(triggerItem){triggerItem.addEventListener('click',handleTouchClick)})}
13function unbindTouchEvents(){menuTriggers.forEach(function(triggerItem){triggerItem.removeEventListener('click',handleTouchClick)})}
14document.addEventListener('click',function(e){if(!desktopQuery.matches)return;var insideMenu=e.target.closest('.mega-menu__item--has-dropdown');if(!insideMenu){closeAllDesktopDropdowns()}});var mobileToggle=document.querySelector('.mobile-toggle');var mobileClose=document.querySelector('.mobile-menu__close');var mobileMenu=document.getElementById('mobile-menu');function openMobileMenu(){if(!mobileMenu||!mobileToggle)return;mobileMenu.classList.add('is-open');mobileToggle.setAttribute('aria-expanded','true');document.body.style.overflow='hidden';var firstFocusable=mobileMenu.querySelector('a, button, input, [tabindex]:not([tabindex="-1"])');if(firstFocusable){firstFocusable.focus()}}
15function closeMobileMenu(){if(!mobileMenu||!mobileToggle)return;mobileMenu.classList.remove('is-open');mobileToggle.setAttribute('aria-expanded','false');document.body.style.overflow='';var openItems=mobileMenu.querySelectorAll('.mobile-menu__item.is-open');openItems.forEach(function(item){item.classList.remove('is-open');var sub=item.querySelector('.mobile-menu__sub');if(sub){sub.setAttribute('aria-hidden','true')}});mobileToggle.focus()}
16function isMobileMenuOpen(){return mobileMenu&&mobileMenu.classList.contains('is-open')}
17if(mobileToggle&&mobileMenu){mobileToggle.addEventListener('click',function(){if(isMobileMenuOpen()){closeMobileMenu()}else{openMobileMenu()}})}
18if(mobileClose){mobileClose.addEventListener('click',function(){closeMobileMenu()})}
19var mobileParentLinks=document.querySelectorAll('.mobile-menu__item--has-children > .mobile-menu__link');mobileParentLinks.forEach(function(parentLink){parentLink.addEventListener('click',function(e){if(desktopQuery.matches)return;e.preventDefault();var parentLi=this.parentElement;var sub=parentLi.querySelector('.mobile-menu__sub');var isOpen=parentLi.classList.contains('is-open');var siblings=parentLi.parentElement.querySelectorAll('.mobile-menu__item--has-children.is-open');
19siblings.forEach(function(sibling){if(sibling!==parentLi){sibling.classList.remove('is-open');var sibSub=sibling.querySelector('.mobile-menu__sub');if(sibSub){sibSub.setAttribute('aria-hidden','true')}}});if(isOpen){parentLi.classList.remove('is-open');if(sub){sub.setAttribute('aria-hidden','true')}}else{parentLi.classList.add('is-open');if(sub){sub.setAttribute('aria-hidden','false')}}})});function trapFocus(e){if(!isMobileMenuOpen())return;var focusableElements=mobileMenu.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])');if(focusableElements.length===0)return;var firstFocusable=focusableElements[0];var lastFocusable=focusableElements[focusableElements.length-1];if(e.key==='Tab'){if(e.shiftKey){if(document.activeElement===firstFocusable){e.preventDefault();lastFocusable.focus()}}else{if(document.activeElement===lastFocusable){e.preventDefault();firstFocusable.focus()}}}}
20document.addEventListener('keydown',trapFocus);document.addEventListener('keydown',function(e){if(e.key==='Escape'){closeAllDesktopDropdowns();if(isMobileMenuOpen()){closeMobileMenu()}}});function handleBreakpointChange(mq){if(mq.matches){closeMobileMenu();bindDesktopEvents()}else{unbindDesktopEvents()}}
21if(desktopQuery.addEventListener){desktopQuery.addEventListener('change',handleBreakpointChange)}else if(desktopQuery.addListener){desktopQuery.addListener(handleBreakpointChange)}
22if(desktopQuery.matches){bindDesktopEvents()}})

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.