PageSourceSearch

https://www.alphaindustries.com/cdn/shop/t/1429/assets/header-menu.js?v=22767404661372057381790022699

js alphaindustries.com collected 2026-09-24 18:23:26 UTC 4,357 bytes, 2 lines download raw bytes

1import{Component}from"@theme/component";import{debounce,onDocumentLoaded,setHeaderMenuStyle}from"@theme/utilities";import{MegaMenuHoverEvent}from"@theme/events";class HeaderMenu extends Component{requiredRefs=["overflowMenu"];#submenuMutationObserver=null;connectedCallback(){super.connectedCallback(),this.overflowMenu?.addEventListener("pointerleave",()=>this.#deactivate()),this.#cacheMaxOverflowMenuHeight(),onDocumentLoaded(this.#preloadImages),window.addEventListener("resize",this.#resizeListener)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this.#resizeListener),this.#cleanupMutationObserver()}#resizeListener=debounce(()=>{this.#cacheMaxOverflowMenuHeight(),setHeaderMenuStyle()},100);#state={activeItem:null};get overflowMenu(){return this.refs.overflowMenu?.shadowRoot?.querySelector('[part="overflow"]')}get overflowHovered(){return this.refs.overflowMenu?.matches(":hover")??!1}get headerComponent(){return this.closest("header-component")}activate=event=>{if(this.dispatchEvent(new MegaMenuHoverEvent),!(event.target instanceof Element))return;let item=findMenuItem(event.target);if(!item||item==this.#state.activeItem)return;const isDefaultSlot=event.target.slot==="";this.dataset.overflowExpanded=(!isDefaultSlot).toString();const previouslyActiveItem=this.#state.activeItem;if(previouslyActiveItem){previouslyActiveItem.ariaExpanded="false";const previousSubmenu=findSubmenu(previouslyActiveItem);previousSubmenu&&delete previousSubmenu.dataset.active}this.#state.activeItem=item,this.ariaExpanded="true",item.ariaExpanded="true";let submenu=findSubmenu(item);!submenu&&!isDefaultSlot&&(submenu=this.overflowMenu),submenu&&(submenu.dataset.active="",this.#cleanupMutationObserver(),this.#submenuMutationObserver=new MutationObserver(()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{submenu.offsetHeight>0&&(this.headerComponent?.style.setProperty("--submenu-height",`${submenu.offsetHeight}px`),this.#cleanupMutationObserver())})})}),this.#submenuMutationObserver.observe(submenu,{childList:!0,subtree:!0}),setTimeout(()=>{this.#cleanupMutationObserver()},500));const submenuHeight=submenu?submenu.offsetHeight:0;this.headerComponent?.style.setProperty("--submenu-height",`${submenuHeight}px`),this.style.setProperty("--submenu-opacity","1")};deactivate(event){if(!(event.target instanceof Element))return;const menu=findSubmenu(this.#state.activeItem),isMovingWithinMenu=event.relatedTarget instanceof Node&&menu?.contains(document.activeElement),isMovingToSubmenu=event.relatedTarget instanceof Node&&event.type==="blur"&&menu?.contains(event.relatedTarget),isMovingToOverflowMenu=event.relatedTarget instanceof Node&&event.relatedTarget.parentElement?.matches('[slot="overflow"]');isMovingWithinMenu||isMovingToOverflowMenu||isMovingToSubmenu||this.#deactivate()}#deactivate=(item=this.#state.activeItem)=>{if(!item||item!=this.#state.activeItem||this.overflowHovered)return;this.#cleanupMutationObserver(),this.headerComponent?.style.setProperty("--submenu-height","0px"),this.style.setProperty("--submenu-opacity","0"),this.dataset.overflowExpanded="false";const submenu=findSubmenu(item);this.#state.activeItem=null,this.ariaExpanded="false",item.ariaExpanded="false",submenu&&delete submenu.dataset.active};#preloadImages=()=>{this.querySelectorAll('img[loading="lazy"]')?.forEach(image=>image.removeAttribute("loading"))};#cacheMaxOverflowMenuHeight(){const submenus=this.querySelectorAll('[ref="submenu[]"]'),maxHeight=Math.max(...Array.from(submenus).filter(submenu=>submenu instanceof HTMLElement).map(submenu=>submenu.offsetHeight));this.headerComponent?.style.setProperty("--submenu-max-height",`${maxHeight}px`)}#cleanupMutationObserver(){this.#submenuMutationObserver?.disconnect(),this.#submenuMutationObserver=null}}customElements.get("header-menu")||customElements.define("header-menu",HeaderMenu);function findMenuItem(element){return element instanceof Element?element?.matches('[slot="more"')?findMenuItem(element.parentElement?.querySelector('[slot="overflow"]')):element?.querySelector('[ref="menuitem"]'):null}function findSubmenu(element){const submenu=element?.parentElement?.querySelector('[ref="submenu[]"]');return submenu instanceof HTMLElement?submenu:null}
2//# sourceMappingURL=/cdn/shop/t/1429/assets/header-menu.js.map?v=22767404661372057381790022699

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.