1(()=>{if(window.__headerNavLazyInit)return;window.__headerNavLazyInit=!0;const LAZY_SELECTOR="[data-header-nav-lazy-products]",SECTION_ID="section-rendering-header-nav-tab-products",HOVER_DEBOUNCE_MS=150,contentCache=new Map,emptyCache=new Map,inflightKeys=new Set;function debounce(fn,wait){let timer=null;return(...args)=>{window.clearTimeout(timer),timer=window.setTimeout(()=>{fn(...args)},wait)}}function getCacheKey(element){const handle=element.dataset.collectionHandle?.trim(),limit=element.dataset.limit||"4",cardStyle=element.dataset.cardStyle||"grid";return handle?`products:${handle}:${limit}:${cardStyle}`:null}function buildFetchUrl(element){const handle=element.dataset.collectionHandle?.trim();if(!handle)return null;const limit=element.dataset.limit||"4",cardStyle=element.dataset.cardStyle||"grid",url=new URL(`/collections/${handle}`,window.location.origin);return url.searchParams.set("section_id",SECTION_ID),url.searchParams.set("limit",limit),url.searchParams.set("card_style",cardStyle),url.toString()}function clearPlaceholderState(element){element.querySelectorAll("[data-header-nav-lazy-placeholder]").forEach(node=>node.remove())}function setLazyState(element,state){element.classList.remove("header-nav-lazy--pending","header-nav-lazy--loading","header-nav-lazy--loaded","header-nav-lazy--error","header-nav-lazy--empty"),element.classList.add(`header-nav-lazy--${state}`);const error=element.querySelector("[data-header-nav-lazy-error]"),empty=element.querySelector("[data-header-nav-lazy-empty]");error instanceof HTMLElement&&(error.hidden=state!=="error"),empty instanceof HTMLElement&&(empty.hidden=state!=="empty")}function applyLazyContent(element,html,isEmpty){if(isEmpty){clearPlaceholderState(element),setLazyState(element,"empty"),element.dataset.loaded="true";return}clearPlaceholderState(element),element.insertAdjacentHTML("beforeend",html),setLazyState(element,"loaded"),element.dataset.loaded="true"}async function loadLazyPanel(element){if(element.dataset.loaded==="true")return;const cacheKey=getCacheKey(element);
1if(!cacheKey){setLazyState(element,"error"),element.dataset.loaded="true";return}if(contentCache.has(cacheKey)){applyLazyContent(element,contentCache.get(cacheKey)??"",emptyCache.get(cacheKey)===!0);return}if(inflightKeys.has(cacheKey))return;const fetchUrl=buildFetchUrl(element);if(!fetchUrl){setLazyState(element,"error"),element.dataset.loaded="true";return}inflightKeys.add(cacheKey),setLazyState(element,"loading");try{const response=await fetch(fetchUrl);if(!response.ok)throw new Error("Header nav lazy load failed");const html=await response.text(),innerHtml=new DOMParser().parseFromString(html,"text/html").querySelector("[data-header-nav-lazy-content]")?.innerHTML.trim()??"",isEmpty=innerHtml==="";contentCache.set(cacheKey,innerHtml),emptyCache.set(cacheKey,isEmpty),document.querySelectorAll(LAZY_SELECTOR).forEach(panel=>{panel instanceof HTMLElement&&getCacheKey(panel)===cacheKey&&panel.dataset.loaded!=="true"&&applyLazyContent(panel,innerHtml,isEmpty)})}catch{clearPlaceholderState(element),setLazyState(element,"error"),element.dataset.loaded="true"}finally{inflightKeys.delete(cacheKey)}}function isPanelInOpenAccordions(panel){let node=panel.parentElement;for(;node;){if(node.matches?.("details")&&!node.open)return!1;if(node.id==="menu-drawer"||node.classList?.contains("mega_menu__inner"))break;node=node.parentElement}return!0}function loadLazyIn(container){container instanceof HTMLElement&&container.querySelectorAll(`${LAZY_SELECTOR}:not([data-loaded="true"])`).forEach(panel=>{panel instanceof HTMLElement&&isPanelInOpenAccordions(panel)&&loadLazyPanel(panel)})}function loadFirstTabPanels(){document.querySelectorAll('.mega_menu__inner [data-tab-panel="0"]').forEach(panel=>{panel instanceof HTMLElement&&loadLazyIn(panel)})}function setupTabTriggers(){const loadTabPanel=debounce(trigger=>{const inner=trigger.closest(".mega_menu__inner"),index=trigger.dataset.tabIndex,panel=inner?.querySelector(`[data-tab-panel="${index}"]`);panel instanceof HTMLElement&&loadLazyIn(panel)},HOVER_DEBOUNCE_MS);document.querySelectorAll(".mega_menuLeft [data-tab-trigger]").forEach(trigger=>{trigger.addEventListener("mouseenter",()=>{loadTabPanel(trigger)})})}function setupMobileAccordionTriggers(){const drawer=document.querySelector("header-drawer #menu-drawer");drawer&&drawer.querySelectorAll("details").forEach(details=>{details.addEventListener("toggle",()=>{details.open&&loadLazyIn(details)})})}function init(){setupTabTriggers(),setupMobileAccordionTriggers(),loadFirstTabPanels()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",init):init()})(); 2//# sourceMappingURL=/cdn/shop/t/28/assets/header-nav-tab-lazy-load.js.map?v=133362652257146986181786610612
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.