{
  "version": 3,
  "sources": ["/cdn/shop/t/88/assets/yololife-header.js?yl_menu=emerald-20261101"],
  "sourcesContent": ["/* Keep fixed mobile surfaces aligned to the real, responsive header height. */\n(function () {\n  'use strict';\n\n  const header = document.querySelector('[data-yl-header]');\n  if (!header) return;\n\n  const root = document.documentElement;\n  const syncHeaderHeight = () => {\n    root.style.setProperty('--yl-header-height', `${Math.ceil(header.getBoundingClientRect().height)}px`);\n  };\n\n  syncHeaderHeight();\n  window.addEventListener('resize', syncHeaderHeight, { passive: true });\n  window.addEventListener('pageshow', syncHeaderHeight);\n  if ('ResizeObserver' in window) {\n    new ResizeObserver(syncHeaderHeight).observe(header);\n  }\n})();\n\n/* YoloLife \u2014 header: mobile drawer toggle + focus trap (WAI-ARIA APG dialog-modal).\n   Emerald redesign (2026-11-01): [data-yl-mmenu] is the full-screen scrim and\n   [data-yl-mmenu-panel] the left slide-in drawer; tapping the scrim closes it. */\n(function () {\n  'use strict';\n\n  const header = document.querySelector('[data-yl-header]');\n  const burger = document.querySelector('[data-yl-burger]');\n  const menu = document.querySelector('[data-yl-mmenu]');\n  if (!header || !burger || !menu) return;\n  const drawer = menu.querySelector('[data-yl-mmenu-panel]') || menu;\n  const closeButton = menu.querySelector('[data-yl-mmenu-close]');\n\n  const normalizeBrandLabels = () => {\n    const pageLang = (document.documentElement.getAttribute('lang') || '').toLowerCase();\n    const isChinese = pageLang.indexOf('zh') !== -1 || window.location.pathname.indexOf('/zh') === 0;\n    if (isChinese) return;\n    header.querySelectorAll('a[href*=\"/collections/fish-tanks-brand-jiuwu\"]').forEach((link) => {\n      if (['Jiu Wu', 'Jiuwu'].includes(link.textContent.trim())) link.textContent = 'NINEWOOD';\n    });\n    header.querySelectorAll('a[href*=\"/collections/fish-tanks-brand-xingshui\"]').forEach((link) => {\n      if (link.textContent.trim() === 'Xingshui') link.textContent = 'Shape Water';\n    });\n  };\n  normalizeBrandLabels();\n\n  const closeMobileDetails = () => {\n    menu.querySelectorAll('details[open]').forEach((details) => { details.open = false; });\n  };\n  const resetMobileMenuState = () => {\n    closeMobileDetails();\n    const active = document.activeElement;\n    if (active && menu.contains(active) && typeof active.blur === 'function') active.blur();\n  };\n\n  // Tabbable elements currently visible inside the open menu (recomputed each\n  // call so a changing nav-block list / hidden states stay reflected).\n  const FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), summary, [tabindex]:not([tabindex=\"-1\"])';\n  const tabbables = () =>\n    Array.prototype.filter.call(\n      menu.querySelectorAll(FOCUSABLE),\n      (el) => el.offsetParent !== null || el.getClientRects().length > 0\n    );\n\n  const setOpen = (open) => {\n    burger.setAttribute('aria-expanded', String(open));\n    burger.setAttribute('aria-label', burger.dataset[open ? 'labelClose' : 'labelOpen']);\n    menu.toggleAttribute('data-open', open);\n    menu.setAttribute('aria-hidden', String(!open));\n    header.toggleAttribute('data-mmenu-open', open);\n    document.body.classList.toggle('yl-mmenu-open', open);\n    // APG dialog-modal: move focus into the menu on open so the trap has an\n    // anchor. Focus the inert container, not the search input, so touch users\n    // do not get the software keyboard immediately (\u5B9E\u6D4B,2026-06-25).\n    if (open) {\n      menu.focus({ preventScroll: true });\n    } else {\n      resetMobileMenuState();\n    }\n  };\n\n  burger.addEventListener('click', () => {\n    const open = burger.getAttribute('aria-expanded') !== 'true';\n    setOpen(open);\n  });\n\n  if (closeButton) {\n    closeButton.addEventListener('click', () => {\n      setOpen(false);\n      burger.focus();\n    });\n  }\n\n  // 2026-09-24 \u79FB\u52A8\u76EE\u5F55\u5B9E\u6D4B\uFF1A\u540C\u65F6\u5C55\u5F00\u591A\u4E2A\u4E00\u7EA7\u5206\u7C7B\u4F1A\u628A\u540E\u9762\u7684\u5165\u53E3\u63A8\u5F97\u5F88\u8FDC\u3002\n  // \u539F\u751F details \u4FDD\u7559\u952E\u76D8\u884C\u4E3A\uFF0C\u4EC5\u5728\u5C55\u5F00\u65F6\u6536\u8D77\u540C\u7EA7\u5206\u7C7B\uFF08\u90E8\u95E8 + \u54C1\u724C = [data-yl-mdept]\uFF09\u3002\n  const mobileDepartments = Array.from(menu.querySelectorAll('[data-yl-mdept]'));\n  mobileDepartments.forEach((department) => {\n    department.addEventListener('toggle', () => {\n      if (!department.open) return;\n      mobileDepartments.forEach((sibling) => {\n        if (sibling !== department) sibling.open = false;\n      });\n    });\n  });\n\n  // Drill-down (2026-11-02, noon-style): an open <details> replaces the list via CSS and its\n  // <summary> becomes the \"\u2039 title\" back bar. Start each level at the top, give the summary a\n  // \"Back\" name while open, and close nested levels when backing out of their parent.\n  const drawerBody = menu.querySelector('.yl-mdrawer__body');\n  menu.addEventListener('toggle', (event) => {\n    const details = event.target;\n    if (!(details instanceof HTMLDetailsElement)) return;\n    const summary = details.querySelector(':scope > summary');\n    if (summary && summary.dataset.labelBack) {\n      if (!summary.dataset.labelExpand) summary.dataset.labelExpand = summary.getAttribute('aria-label') || '';\n      summary.setAttribute('aria-label', details.open ? summary.dataset.labelBack : summary.dataset.labelExpand);\n    }\n    if (details.open) {\n      if (drawerBody) drawerBody.scrollTop = 0;\n    } else {\n      details.querySelectorAll('details[open]').forEach((nested) => { nested.open = false; });\n    }\n  }, true);\n\n  // The persistent search and logo/cart remain available above the mobile\n  // drawer. Interacting with them closes the drawer before the normal action.\n  const mobileSearch = header.querySelector('[data-yl-mobile-search]');\n  if (mobileSearch) {\n    mobileSearch.addEventListener('focusin', () => {\n      if (burger.getAttribute('aria-expanded') === 'true') setOpen(false);\n    });\n  }\n  // Outside the drawer panel = the scrim (or anything behind it) \u2192 close.\n  document.addEventListener('pointerdown', (event) => {\n    if (burger.getAttribute('aria-expanded') !== 'true') return;\n    if (drawer.contains(event.target) || burger.contains(event.target)) return;\n    setOpen(false);\n  });\n\n  // Close on Escape; trap Tab / Shift+Tab within the open menu (APG dialog-modal:\n  // last \u2192 first on Tab, first \u2192 last on Shift+Tab) so focus can't escape behind\n  // the full-screen overlay.\n  document.addEventListener('keydown', (e) => {\n    if (burger.getAttribute('aria-expanded') !== 'true') return;\n    if (e.key === 'Escape') {\n      setOpen(false);\n      burger.focus();\n      return;\n    }\n    if (e.key !== 'Tab') return;\n    const items = tabbables();\n    if (items.length === 0) return;\n    const first = items[0];\n    const last = items[items.length - 1];\n    const active = document.activeElement;\n    // Focus drifted outside the menu (or onto the burger) \u2192 pull it back in.\n    if (!menu.contains(active)) {\n      e.preventDefault();\n      (e.shiftKey ? last : first).focus();\n      return;\n    }\n    if (active === menu) {\n      e.preventDefault();\n      (e.shiftKey ? last : first).focus();\n      return;\n    }\n    if (e.shiftKey && active === first) {\n      e.preventDefault();\n      last.focus();\n    } else if (!e.shiftKey && active === last) {\n      e.preventDefault();\n      first.focus();\n    }\n  });\n\n  // Close on link click (so anchor navigation feels right). Also clear nested\n  // <details> before navigation/page-cache snapshots so reopening the mobile\n  // menu never restores the just-clicked category tree as a second flyout.\n  menu.addEventListener('click', (e) => {\n    const link = e.target.closest('a[href]');\n    if (!link) return;\n    setOpen(false);\n  });\n\n  // If the page enters/restores from bfcache while the mobile menu was open,\n  // keep the snapshot closed and neutral.\n  window.addEventListener('pagehide', () => {\n    setOpen(false);\n  });\n  window.addEventListener('pageshow', () => setOpen(false));\n\n  // Close on resize back to desktop\n  let resizeTimer;\n  window.addEventListener('resize', () => {\n    clearTimeout(resizeTimer);\n    resizeTimer = setTimeout(() => {\n      if (window.matchMedia('(min-width: 901px)').matches) setOpen(false);\n    }, 100);\n  });\n})();\n\n/* Homepage immersive hero nav \u2014 transparent over hero at top, glass after scroll. */\n(function () {\n  'use strict';\n\n  const header = document.querySelector('[data-yl-header]');\n  const main = document.getElementById('yl-main');\n  if (!header || !main) return;\n\n  const hero = main.querySelector(':scope > .shopify-section:first-child .yl-hero--immersive_glass, :scope > .yl-hero--immersive_glass:first-child');\n  if (!hero) return;\n\n  const root = document.documentElement;\n  const syncOffset = () => {\n    root.style.setProperty('--yl-home-nav-offset', `${Math.ceil(header.getBoundingClientRect().height)}px`);\n  };\n  const getScrollThreshold = () => {\n    const headerHeight = header.getBoundingClientRect().height;\n    const heroRect = hero.getBoundingClientRect();\n    const heroBottom = window.scrollY + heroRect.bottom;\n    const transitionBuffer = Math.min(560, window.innerHeight * 0.42);\n    return Math.max(72, heroBottom + transitionBuffer - headerHeight * 0.35);\n  };\n  const syncState = () => {\n    document.body.classList.add('yl-home-immersive-nav');\n    header.toggleAttribute('data-yl-home-nav-scrolled', window.scrollY > getScrollThreshold());\n  };\n  const sync = () => {\n    syncOffset();\n    syncState();\n  };\n\n  let frame = 0;\n  const queueSyncState = () => {\n    if (frame) return;\n    frame = window.requestAnimationFrame(() => {\n      frame = 0;\n      syncState();\n    });\n  };\n\n  sync();\n  window.addEventListener('scroll', queueSyncState, { passive: true });\n  window.addEventListener('resize', sync, { passive: true });\n  window.addEventListener('pageshow', sync);\n})();\n\n/* Shop category nav \u2014 department panels, Brands, then Services & contact.\n   Each [data-yl-shop] group = trigger + panel; hover (desktop pointer) +\n   click/focus (touch/keyboard). Opening one closes the others (one panel at a time).\n   Wiring is generic over [data-yl-shop]; the removed Categories/Explore disclosures\n   simply mean fewer groups (no dangling handlers). */\n(function () {\n  'use strict';\n  const groups = Array.prototype.slice.call(document.querySelectorAll('[data-yl-shop]'));\n  if (!groups.length) return;\n  const header = document.querySelector('[data-yl-header]');\n  const hoverCapable = window.matchMedia('(hover: hover)').matches;\n  const desktopMQ = window.matchMedia('(min-width: 901px)');\n  const catbar = document.querySelector('.yl-header__catbar');\n  const canOpenPanel = () => desktopMQ.matches;\n  const debugMenu = window.location.search.indexOf('codex_debug=menu') !== -1;\n  // Emerald hover intent (2026-11-01 spec): open after ~120ms of rest, close ~220ms\n  // after leaving. When another panel is already open the switch is quicker and the\n  // old panel stays up until the new one replaces it in the same frame (no blank gap).\n  const HOVER_OPEN_DELAY_MS = 120;\n  const HOVER_SWITCH_DELAY_MS = 60;\n  const HOVER_CLOSE_DELAY_MS = 220;\n  const CLICK_SUPPRESS_MS = 650;\n  let suppressHoverGroup = null;\n  let suppressHoverUntil = 0;\n  // A click that lands right after a hover-open must not toggle the panel shut again\n  // (the button trigger otherwise \"flashes\" open \u2192 closed for mouse users).\n  const HOVER_CLICK_GRACE_MS = 700;\n  const hoverOpenedAt = new Map();\n\n  const panelOf = (g) => g.querySelector('[data-yl-shop-panel]');\n  const triggerOf = (g) => g.querySelector('[data-yl-shop-trigger]');\n  const isOpen = (g) => { const p = panelOf(g); return p && !p.hasAttribute('hidden'); };\n  const describeNode = (node) => {\n    if (!node || node === window) return null;\n    if (node === document) return 'document';\n    if (node.nodeType !== 1) return String(node.nodeName || 'node');\n    const el = node;\n    const id = el.id ? `#${el.id}` : '';\n    const cls = typeof el.className === 'string' && el.className ? `.${el.className.trim().split(/\\s+/).slice(0, 3).join('.')}` : '';\n    return `${el.tagName.toLowerCase()}${id}${cls}`;\n  };\n  const isHoverSuppressed = (g) => {\n    if (!suppressHoverGroup) return false;\n    if (Date.now() >= suppressHoverUntil) {\n      suppressHoverGroup = null;\n      suppressHoverUntil = 0;\n      return false;\n    }\n    return suppressHoverGroup === g;\n  };\n  const traceMenu = (type, g, event) => {\n    if (!debugMenu) return;\n    const trigger = g ? triggerOf(g) : null;\n    let pointNode = null;\n    if (event && typeof event.clientX === 'number' && typeof event.clientY === 'number') {\n      pointNode = document.elementFromPoint(event.clientX, event.clientY);\n    }\n    window.__ylMenuTrace = window.__ylMenuTrace || [];\n    window.__ylMenuTrace.push({\n      type,\n      trigger: trigger ? trigger.id : null,\n      x: event && typeof event.clientX === 'number' ? event.clientX : null,\n      y: event && typeof event.clientY === 'number' ? event.clientY : null,\n      target: describeNode(event && event.target),\n      related: describeNode(event && event.relatedTarget),\n      point: describeNode(pointNode),\n      open: g ? isOpen(g) : null,\n      suppressed: suppressHoverGroup ? triggerOf(suppressHoverGroup)?.id : null,\n      ts: Math.round(window.performance.now())\n    });\n    if (window.__ylMenuTrace.length > 80) window.__ylMenuTrace.shift();\n    document.documentElement.setAttribute('data-yl-menu-trace', JSON.stringify(window.__ylMenuTrace.slice(-24)));\n  };\n\n  const suppressHoverBriefly = (g, event) => {\n    if (!g) return;\n    suppressHoverGroup = g;\n    suppressHoverUntil = Date.now() + CLICK_SUPPRESS_MS;\n    traceMenu('suppress-hover-briefly', g, event);\n  };\n\n  const releaseHoverSuppression = (g) => {\n    if (g && suppressHoverGroup !== g) return;\n    traceMenu('release-hover-suppression', g || suppressHoverGroup);\n    suppressHoverGroup = null;\n    suppressHoverUntil = 0;\n  };\n\n  const prepareLinkNavigation = (event, options) => {\n    const group = event && event.target ? event.target.closest('[data-yl-shop]') : null;\n    const shouldSuppressHover = !options || options.suppressHover !== false;\n    if (group && shouldSuppressHover) suppressHoverBriefly(group, event);\n    else releaseHoverSuppression();\n    closeAll(null);\n  };\n\n  const syncPanelScrollCue = (panel) => {\n    if (!panel) return;\n    const scrollable = panel.scrollHeight > panel.clientHeight + 2;\n    const atEnd = panel.scrollTop + panel.clientHeight >= panel.scrollHeight - 2;\n    if (scrollable) panel.setAttribute('data-scrollable', 'true');\n    else panel.removeAttribute('data-scrollable');\n    if (scrollable && atEnd) panel.setAttribute('data-scroll-end', 'true');\n    else panel.removeAttribute('data-scroll-end');\n  };\n\n  // Link triggers reopen their panel on focus (keyboard affordance). When WE move\n  // focus back to a trigger as part of closing (Escape / close button), that focus\n  // event must not undo the close \u2014 focus() dispatches listeners synchronously, so\n  // a flag around the call is race-free.\n  let suppressFocusOpen = false;\n  const refocus = (t) => { suppressFocusOpen = true; t.focus(); suppressFocusOpen = false; };\n\n  const setOpen = (g, open) => {\n    const trigger = triggerOf(g);\n    const panel = panelOf(g);\n    if (!trigger || !panel) return;\n    if (open && !canOpenPanel()) open = false;\n    const wasOpen = !panel.hasAttribute('hidden');\n    if (\n      wasOpen === open &&\n      g.hasAttribute('data-open') === open &&\n      trigger.getAttribute('aria-expanded') === String(open)\n    ) return;\n    panel.toggleAttribute('hidden', !open);\n    g.toggleAttribute('data-open', open);\n    trigger.setAttribute('aria-expanded', String(open));\n    traceMenu(open ? 'set-open' : 'set-close', g);\n    if (open) {\n      panel.scrollTop = 0;\n      syncPanelScrollCue(panel);\n      window.requestAnimationFrame(() => syncPanelScrollCue(panel));\n    } else {\n      panel.removeAttribute('data-scrollable');\n      panel.removeAttribute('data-scroll-end');\n      panel.removeAttribute('data-yl-instant');\n    }\n    // Header-level flag drives the page scrim under the dropdown (yl-emerald-header.css).\n    if (header) header.toggleAttribute('data-yl-dd-open', groups.some(isOpen));\n  };\n  const closeAll = (except) => groups.forEach((g) => { if (g !== except) setOpen(g, false); });\n  // Open one group and close the rest in the same frame. A panel that replaces an\n  // already-open one skips the fade/slide entrance so moving along the bar feels solid.\n  const openExclusive = (g) => {\n    const panel = panelOf(g);\n    const switching = groups.some((other) => other !== g && isOpen(other));\n    closeAll(g);\n    if (panel && !isOpen(g)) panel.toggleAttribute('data-yl-instant', switching);\n    setOpen(g, true);\n  };\n\n  groups.forEach((g) => {\n    const trigger = triggerOf(g);\n    const panel = panelOf(g);\n    if (!trigger || !panel) return;\n    const isLink = trigger.tagName === 'A';\n    panel.addEventListener('scroll', () => syncPanelScrollCue(panel), { passive: true });\n\n    if (isLink) {\n      // Link trigger (six departments + Brands): click NAVIGATES to the collection page \u2014\n      // do NOT toggle on click (that would block navigation). Open the flyout on focus so\n      // keyboard users can reach it (then Tab into the panel); hover-open handled below.\n      trigger.addEventListener('focus', () => {\n        if (suppressFocusOpen || isHoverSuppressed(g) || !canOpenPanel()) {\n          closeAll(null);\n          return;\n        }\n        openExclusive(g);\n      });\n      trigger.addEventListener('keydown', (event) => {\n        if (event.key !== 'ArrowDown' || !canOpenPanel()) return;\n        event.preventDefault();\n        releaseHoverSuppression(g);\n        openExclusive(g);\n        const firstPanelLink = panel.querySelector('a[href]');\n        if (firstPanelLink && typeof firstPanelLink.focus === 'function') {\n          firstPanelLink.focus({ preventScroll: true });\n        }\n        traceMenu('keyboard-open', g, event);\n      });\n      trigger.addEventListener('pointerdown', prepareLinkNavigation);\n      trigger.addEventListener('click', prepareLinkNavigation);\n      trigger.addEventListener('pointerleave', () => releaseHoverSuppression(g));\n    } else {\n      // Button disclosure: Enter/Space toggles; ArrowDown opens and focuses a destination.\n      trigger.addEventListener('click', () => {\n        if (!canOpenPanel()) {\n          closeAll(null);\n          return;\n        }\n        const willOpen = panel.hasAttribute('hidden');\n        if (willOpen) openExclusive(g);\n        else if (Date.now() - (hoverOpenedAt.get(g) || 0) > HOVER_CLICK_GRACE_MS) setOpen(g, false);\n      });\n      trigger.addEventListener('keydown', (event) => {\n        if (event.key !== 'ArrowDown' || !canOpenPanel()) return;\n        event.preventDefault();\n        openExclusive(g);\n        panel.querySelector('a[href]')?.focus({ preventScroll: true });\n      });\n    }\n\n    // Hover (desktop pointer) with close-delay bridging the trigger\u2192panel gap.\n    // Track the trigger/panel pair directly instead of the [data-yl-shop] wrapper:\n    // panels are absolutely positioned wide descendants, and wrapper-level hover can\n    // misclassify transitions between adjacent triggers and the previously open panel.\n    if (hoverCapable) {\n      let closeTimer = null;\n      let openHoverTimer = null;\n      let pendingHoverEvent = null;\n      let lastPointer = null;\n      const cancelClose = () => { if (closeTimer) { clearTimeout(closeTimer); closeTimer = null; } };\n      const cancelHoverOpen = () => {\n        if (openHoverTimer) {\n          clearTimeout(openHoverTimer);\n          openHoverTimer = null;\n        }\n        pendingHoverEvent = null;\n      };\n      const openFromHover = () => {\n        const event = pendingHoverEvent;\n        openHoverTimer = null;\n        pendingHoverEvent = null;\n        if (isHoverSuppressed(g)) {\n          traceMenu('suppress-hover-open', g, event);\n          return;\n        }\n        if (!canOpenPanel()) {\n          closeAll(null);\n          return;\n        }\n        openExclusive(g);\n        hoverOpenedAt.set(g, Date.now());\n        traceMenu('hover-open', g, event);\n      };\n      const rememberPointer = (event) => {\n        if (!event || typeof event.clientX !== 'number' || typeof event.clientY !== 'number') return;\n        lastPointer = { x: event.clientX, y: event.clientY };\n      };\n      const pointerWithinPair = () => {\n        try {\n          if (trigger.matches(':hover') || panel.matches(':hover')) return true;\n          if (!lastPointer) return false;\n          const pointNode = document.elementFromPoint(lastPointer.x, lastPointer.y);\n          return !!pointNode && (trigger.contains(pointNode) || panel.contains(pointNode));\n        } catch (_) {\n          return false;\n        }\n      };\n      const scheduleHoverOpen = (event) => {\n        rememberPointer(event);\n        cancelClose();\n        cancelHoverOpen();\n        if (isOpen(g)) return;\n        if (isHoverSuppressed(g)) {\n          traceMenu('suppress-hover-open', g, event);\n          return;\n        }\n        if (!canOpenPanel()) {\n          closeAll(null);\n          return;\n        }\n        // Do NOT close the currently open panel here: it stays up until this one\n        // opens (openExclusive swaps them in one frame), which removes the old\n        // close-then-wait flicker when gliding between triggers.\n        const switching = groups.some((other) => other !== g && isOpen(other));\n        pendingHoverEvent = event;\n        traceMenu('hover-schedule', g, event);\n        openHoverTimer = setTimeout(openFromHover, switching ? HOVER_SWITCH_DELAY_MS : HOVER_OPEN_DELAY_MS);\n      };\n      const scheduleClose = (event) => {\n        rememberPointer(event);\n        cancelClose();\n        cancelHoverOpen();\n        closeTimer = setTimeout(() => {\n          closeTimer = null;\n          if (!isOpen(g) || pointerWithinPair()) return;\n          setOpen(g, false);\n          traceMenu('hover-close', g, event);\n        }, HOVER_CLOSE_DELAY_MS);\n      };\n      trigger.addEventListener('mouseenter', (event) => {\n        traceMenu('trigger-enter', g, event);\n        scheduleHoverOpen(event);\n      });\n      trigger.addEventListener('mousemove', rememberPointer, { passive: true });\n      trigger.addEventListener('mouseleave', (event) => {\n        traceMenu('trigger-leave', g, event);\n        scheduleClose(event);\n      });\n      panel.addEventListener('mouseenter', (event) => {\n        traceMenu('panel-enter', g, event);\n        rememberPointer(event);\n        cancelClose();\n      });\n      panel.addEventListener('mousemove', rememberPointer, { passive: true });\n      panel.addEventListener('mouseleave', (event) => {\n        traceMenu('panel-leave', g, event);\n        scheduleClose(event);\n      });\n    }\n\n    // Close when keyboard focus leaves this group.\n    g.addEventListener('focusout', (e) => {\n      if (!g.contains(e.relatedTarget)) setOpen(g, false);\n    });\n  });\n\n  if (catbar) {\n    const prepareShopRowLink = (e) => {\n      const link = e.target.closest('a[href]');\n      if (!link || !catbar.contains(link)) return;\n      if (link.closest('[data-yl-shop-panel]')) {\n        if (e.type === 'click') {\n          traceMenu('panel-link-click', link.closest('[data-yl-shop]'), e);\n          closeAll(null);\n        }\n        return;\n      }\n      if (link.closest('[data-yl-shop-trigger]')) return;\n      prepareLinkNavigation(e, { suppressHover: false });\n    };\n    catbar.addEventListener('pointerdown', prepareShopRowLink, true);\n    catbar.addEventListener('click', prepareShopRowLink, true);\n  }\n\n  // Escape closes whichever panel is open; return focus to its trigger.\n  // refocus(): plain t.focus() would re-fire the trigger's focus-open listener\n  // and instantly reopen the panel \u2014 Escape previously \"didn't work\" because of this.\n  document.addEventListener('keydown', (e) => {\n    if (e.key !== 'Escape') return;\n    const open = groups.find(isOpen);\n    if (open) { setOpen(open, false); const t = triggerOf(open); if (t) refocus(t); }\n  });\n\n  // Click outside any shop group closes all.\n  document.addEventListener('click', (e) => {\n    if (!e.target.closest('[data-yl-shop]')) closeAll(null);\n  });\n  // Close stale panels after a viewport switch between desktop and mobile navigation.\n  let shopResizeTimer;\n  window.addEventListener('resize', () => {\n    clearTimeout(shopResizeTimer);\n    shopResizeTimer = setTimeout(() => closeAll(null), 100);\n  });\n  window.addEventListener('pageshow', () => closeAll(null));\n})();\n"],
  "mappings": "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",
  "names": []
}
