{
  "version": 3,
  "sources": ["/cdn/shop/t/8/assets/header-menu.js?ddd=64255"],
  "sourcesContent": ["import { Component } from '@theme/component';\nimport { debounce, onDocumentLoaded, setHeaderMenuStyle } from '@theme/utilities';\nimport { MegaMenuHoverEvent } from '@theme/events';\n\n/** Skim filter: pointer must dwell this long before MegaMenuHoverEvent fires. */\nconst HOVER_COMMIT_DELAY_MS = 150;\n\n/**\n * A custom element that manages a header menu.\n *\n * @typedef {Object} State\n * @property {HTMLElement | null} activeItem - The currently active menu item.\n * @property {HTMLElement | null} activeOverflowItem - The overflow item shown when the More trigger is active.\n *\n * @typedef {object} Refs\n * @property {HTMLElement} overflowMenu - The overflow menu.\n * @property {HTMLElement[]} [submenu] - The submenu in each respective menu item.\n *\n * @extends {Component<Refs>}\n */\nclass HeaderMenu extends Component {\n  requiredRefs = ['overflowMenu'];\n\n  /**\n   * @type {MutationObserver | null}\n   */\n  #submenuMutationObserver = null;\n\n  /** @type {ReturnType<typeof setTimeout> | undefined} */\n  #hoverDispatchTimer;\n\n  connectedCallback() {\n    super.connectedCallback();\n\n    onDocumentLoaded(this.#preloadImages);\n    window.addEventListener('resize', this.#resizeListener);\n    this.overflowMenu?.addEventListener('pointerleave', this.#overflowSubmenuListener);\n  }\n\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    window.removeEventListener('resize', this.#resizeListener);\n    document.body.removeEventListener('pointermove', this.#onPointerMove);\n    if (this.#state.activeItem) {\n      this.#stopPointerTracking(this.#state.activeItem);\n    }\n    this.overflowMenu?.removeEventListener('pointerleave', this.#overflowSubmenuListener);\n    this.#cleanupMutationObserver();\n    clearTimeout(this.#hoverDispatchTimer);\n    this.#hoverDispatchTimer = undefined;\n  }\n\n  /**\n   * Debounced resize event listener to recalculate menu style\n   */\n  #resizeListener = debounce(() => {\n    setHeaderMenuStyle();\n  }, 100);\n\n  #overflowSubmenuListener = () => {\n    this.#deactivate();\n  };\n\n  /**\n   * @type {State}\n   */\n  #state = {\n    activeItem: null,\n    activeOverflowItem: null,\n  };\n\n  /**\n   * @type {ReturnType<typeof setTimeout> | undefined}\n   */\n  #pointerIdleTimer;\n\n  /**\n   * Last known pointer position for Safari hit-test reconciliation.\n   * @type {{ x: number, y: number }}\n   */\n  #lastPointer = { x: 0, y: 0 };\n\n  /**\n   * Update the safety box idle state on the active menu item.\n   * @param {PointerEvent} event\n   */\n  #onPointerMove = (event) => {\n    const activeLink = this.#state.activeItem;\n    if (!activeLink) return;\n\n    this.#lastPointer.x = event.clientX;\n    this.#lastPointer.y = event.clientY;\n\n    const moving = Math.abs(event.movementX) >= 1 || event.movementY >= 1;\n    activeLink.dataset.safetyBox = `${moving}`;\n\n    clearTimeout(this.#pointerIdleTimer);\n    if (moving) {\n      this.#pointerIdleTimer = setTimeout(() => {\n        if (this.#state.activeItem) {\n          this.#state.activeItem.dataset.safetyBox = 'false';\n          this.#reconcilePointerTarget();\n        }\n      }, 50);\n    } else {\n      this.#reconcilePointerTarget();\n    }\n  };\n\n  /**\n   * Check if the pointer is over a different menu item and trigger activation if so.\n   * Works around Safari not re-evaluating hit targets after pseudo-element changes.\n   */\n  #reconcilePointerTarget() {\n    const { x, y } = this.#lastPointer;\n    requestAnimationFrame(() => {\n      const target = document.elementFromPoint(x, y);\n      if (!target) return;\n      const listItem = target.closest('.menu-list__list-item');\n      if (listItem && !listItem.contains(this.#state.activeItem)) {\n        listItem.dispatchEvent(new PointerEvent('pointerenter', { bubbles: false }));\n      }\n    });\n  }\n\n  /**\n   * Begin pointer tracking for the safety box on the newly active item.\n   * @param {HTMLElement} item\n   * @param {HTMLElement | null} previousItem\n   */\n  #startPointerTracking(item, previousItem) {\n    if (previousItem) {\n      this.#stopPointerTracking(previousItem);\n    } else {\n      document.body.addEventListener('pointermove', this.#onPointerMove);\n    }\n\n    const rect = item.getBoundingClientRect();\n    const isOverlap = this.headerComponent?.hasAttribute('data-submenu-overlap-bottom-row');\n    const boundary = isOverlap ? this.headerComponent?.querySelector('.header__row--top') : this.headerComponent;\n    item.style.setProperty('--box-height', `${(boundary?.getBoundingClientRect().bottom ?? 0) - rect.top}px`);\n  }\n\n  /**\n   * Stop pointer tracking and remove all safety box properties from an item.\n   * @param {HTMLElement} item\n   */\n  #stopPointerTracking(item) {\n    window.clearTimeout(this.#pointerIdleTimer);\n    this.#pointerIdleTimer = undefined;\n    item.style.removeProperty('--box-height');\n    delete item.dataset.safetyBox;\n  }\n\n  /**\n   * Get the overflow menu\n   */\n  get overflowMenu() {\n    return /** @type {HTMLElement | null} */ (this.refs.overflowMenu?.shadowRoot?.querySelector('[part=\"overflow\"]'));\n  }\n\n  /**\n   * Whether the overflow list is hovered\n   * @returns {boolean}\n   */\n  get overflowListHovered() {\n    return this.refs.overflowMenu?.shadowRoot?.querySelector('[part=\"overflow-list\"]')?.matches(':hover') ?? false;\n  }\n\n  /**\n   * Find the first overflowing menu item shown by the More trigger.\n   * @returns {HTMLElement | null}\n   */\n  #getFirstOverflowMenuItem() {\n    const menuItem = this.refs.overflowMenu?.querySelector('[slot=\"overflow\"] [ref=\"menuitem\"]');\n    return menuItem instanceof HTMLElement ? menuItem : null;\n  }\n\n  get headerComponent() {\n    return /** @type {HTMLElement | null} */ (this.closest('header-component'));\n  }\n\n  /**\n   * Activate the selected menu item immediately\n   * @param {PointerEvent | FocusEvent} event\n   */\n  activate = (event) => {\n    if (!(event.target instanceof Element) || !this.headerComponent) return;\n\n    const isMoreTrigger = event.target.slot === 'more';\n    const item = findMenuItem(event.target);\n    const overflowItem = isMoreTrigger ? this.#getFirstOverflowMenuItem() : null;\n\n    if (!item || item == this.#state.activeItem) return;\n\n    const isDefaultSlot = event.target.slot === '';\n\n    this.dataset.overflowExpanded = (!isDefaultSlot).toString();\n\n    const previouslyActiveItem = this.#state.activeItem;\n    const previouslyActiveOverflowItem = this.#state.activeOverflowItem;\n\n    if (previouslyActiveItem) {\n      previouslyActiveItem.ariaExpanded = 'false';\n    }\n    if (previouslyActiveOverflowItem && previouslyActiveOverflowItem !== previouslyActiveItem) {\n      previouslyActiveOverflowItem.ariaExpanded = 'false';\n    }\n\n    this.#state.activeItem = item;\n    this.#state.activeOverflowItem = overflowItem;\n    this.ariaExpanded = 'true';\n    item.ariaExpanded = 'true';\n    if (overflowItem && overflowItem !== item) {\n      overflowItem.ariaExpanded = 'true';\n    }\n\n    const overflowItemSubmenu = isMoreTrigger ? findSubmenu(overflowItem) : null;\n    let submenu = findSubmenu(item) || (overflowItemSubmenu ? this.overflowMenu : null);\n    const hasSubmenu = Boolean(submenu);\n\n    if (!hasSubmenu && !isDefaultSlot) {\n      submenu = this.overflowMenu;\n    }\n\n    if (submenu) {\n      clearTimeout(this.#hoverDispatchTimer);\n      this.#hoverDispatchTimer = undefined;\n      const committedItem = item;\n      if (event instanceof FocusEvent) {\n        this.dispatchEvent(new MegaMenuHoverEvent());\n      } else {\n        this.#hoverDispatchTimer = setTimeout(() => {\n          this.#hoverDispatchTimer = undefined;\n          if (this.#state.activeItem === committedItem) {\n            this.dispatchEvent(new MegaMenuHoverEvent());\n          }\n        }, HOVER_COMMIT_DELAY_MS);\n      }\n\n      // Mark submenu as active for content-visibility optimization\n      submenu.dataset.active = '';\n\n      // Cleanup any existing mutation observer from previous menu activations\n      this.#cleanupMutationObserver();\n\n      // Monitor DOM mutations to catch deferred content injection (from section hydration)\n      this.#submenuMutationObserver = new MutationObserver(() => {\n        requestAnimationFrame(() => {\n          // Double requestAnimationFrame to ensure the height is properly calculated and not defaulting to the contain-intrinsic-size\n          requestAnimationFrame(() => {\n            if (submenu.offsetHeight > 0) {\n              this.headerComponent?.style.setProperty('--submenu-height', `${submenu.offsetHeight}px`);\n              this.#cleanupMutationObserver();\n            }\n          });\n        });\n      });\n      this.#submenuMutationObserver.observe(submenu, { childList: true, subtree: true });\n\n      // Auto-disconnect after 500ms to prevent memory leaks\n      setTimeout(() => {\n        this.#cleanupMutationObserver();\n      }, 500);\n    }\n\n    let finalHeight = submenu?.offsetHeight || 0;\n\n    // For overflow menu, the height needs to be either content of the submenu or the total height of the menu list links\n    if (!isDefaultSlot) {\n      const overflowListHeight = this.#getOverflowListLinksHeight();\n      if (hasSubmenu) {\n        /* Note: When the submenu is inside the overflow menu, its offsetHeight is not valid due to the lack of padding\n         * we could add the padding variables to the submenu.offsetHeight, but measuring the overflowMenu.offsetHeight is just easier */\n        const overflowHeight = this.overflowMenu?.offsetHeight || 0;\n        finalHeight = Math.max(overflowHeight, overflowListHeight);\n      } else {\n        finalHeight = overflowListHeight;\n      }\n    }\n\n    if (!submenu) {\n      // If there is no content to open, don't try to open it\n      finalHeight = 0;\n    }\n\n    const headerVisibleHeight = this.#getHeaderVisibleHeight();\n\n    this.headerComponent.style.setProperty('--submenu-height', `${finalHeight}px`);\n    this.#setFullOpenHeaderHeight(finalHeight, headerVisibleHeight);\n    this.style.setProperty('--submenu-opacity', '1');\n    this.#startPointerTracking(item, previouslyActiveItem);\n  };\n\n  /**\n   * Deactivate the active item after a delay\n   * @param {PointerEvent | FocusEvent} event\n   */\n  deactivate(event) {\n    if (!(event.target instanceof Element)) return;\n\n    const menu = findSubmenu(this.#state.activeItem);\n    const isMovingWithinMenu = event.relatedTarget instanceof Node && menu?.contains(document.activeElement);\n    const isMovingToSubmenu =\n      event.relatedTarget instanceof Node && event.type === 'blur' && menu?.contains(event.relatedTarget);\n    const isMovingToOverflowMenu =\n      event.relatedTarget instanceof Element && Boolean(event.relatedTarget.closest('[slot=\"overflow\"]'));\n\n    if (isMovingWithinMenu || isMovingToOverflowMenu || isMovingToSubmenu) {\n      if (this.#state.activeItem) {\n        this.#stopPointerTracking(this.#state.activeItem);\n      }\n      return;\n    }\n\n    this.#deactivate();\n  }\n\n  /**\n   * Deactivate the active item immediately\n   * @param {HTMLElement | null} [item]\n   */\n  #deactivate = (item = this.#state.activeItem) => {\n    if (!item || item != this.#state.activeItem) return;\n\n    // Don't deactivate if the overflow menu or overflow list is still being hovered\n    if (this.overflowListHovered || this.overflowMenu?.matches(':hover')) return;\n\n    clearTimeout(this.#hoverDispatchTimer);\n    this.#hoverDispatchTimer = undefined;\n\n    this.headerComponent?.style.setProperty('--submenu-height', '0px');\n    this.#setFullOpenHeaderHeight(0, 0);\n    this.style.setProperty('--submenu-opacity', '0');\n    this.dataset.overflowExpanded = 'false';\n\n    const submenu = findSubmenu(item) || (item.closest('[slot=\"more\"]') ? this.overflowMenu : null);\n    const activeOverflowItem = this.#state.activeOverflowItem;\n\n    document.body.removeEventListener('pointermove', this.#onPointerMove);\n    this.#stopPointerTracking(item);\n\n    this.#state.activeItem = null;\n    this.#state.activeOverflowItem = null;\n    this.ariaExpanded = 'false';\n    item.ariaExpanded = 'false';\n    if (activeOverflowItem && activeOverflowItem !== item) {\n      activeOverflowItem.ariaExpanded = 'false';\n    }\n\n    // Remove active state from submenu after animation completes\n    if (submenu) {\n      delete submenu.dataset.active;\n    }\n  };\n\n  #getOverflowListLinksHeight() {\n    const slottedMenuLinks = this.overflowMenu?.querySelector('slot')?.assignedElements();\n    if (!slottedMenuLinks) return this.overflowMenu?.offsetHeight || 0;\n\n    /**\n     * @param {(submenu: HTMLElement) => void} cb\n     */\n    const mapSubmenus = (cb) => {\n      slottedMenuLinks.forEach((link) => {\n        const submenu = /** @type {HTMLElement | null} */ (link.querySelector('[ref=\"submenu[]\"]'));\n        if (submenu) {\n          cb(submenu);\n        }\n      });\n    };\n\n    mapSubmenus((submenu) => {\n      submenu.style.setProperty('display', 'none');\n    });\n    const height = this.overflowMenu?.offsetHeight || 0;\n    mapSubmenus((submenu) => {\n      submenu.style.removeProperty('display');\n    });\n    return height;\n  }\n\n  /**\n   * Read the visible header height before submenu height writes invalidate layout.\n   * @returns {number}\n   */\n  #getHeaderVisibleHeight() {\n    if (!this.headerComponent) return 0;\n\n    const isOverlapSituation = this.headerComponent.hasAttribute('data-submenu-overlap-bottom-row');\n\n    return isOverlapSituation && this.headerComponent.offsetHeight > 0\n      ? /** @type {HTMLElement | null} */ (this.headerComponent.querySelector('.header__row--top'))?.offsetHeight ?? 0\n      : this.headerComponent.offsetHeight;\n  }\n\n  /**\n   * Calculate and set the full open header height. If the submenu is not open, the full open header height is 0.\n   * @param {number} submenuHeight\n   * @param {number} headerVisibleHeight\n   */\n  #setFullOpenHeaderHeight(submenuHeight, headerVisibleHeight) {\n    if (!this.headerComponent) return;\n\n    const nothingToOpen = submenuHeight === 0;\n    const fullOpenHeaderHeight = nothingToOpen ? 0 : submenuHeight + headerVisibleHeight;\n\n    this.headerComponent?.style.setProperty('--full-open-header-height', `${fullOpenHeaderHeight}px`);\n  }\n\n  /**\n   * Preload images that are set to load lazily.\n   */\n  #preloadImages = () => {\n    const images = this.querySelectorAll('img[loading=\"lazy\"]');\n    images?.forEach((image) => image.removeAttribute('loading'));\n  };\n\n  #cleanupMutationObserver() {\n    this.#submenuMutationObserver?.disconnect();\n    this.#submenuMutationObserver = null;\n  }\n}\n\nif (!customElements.get('header-menu')) {\n  customElements.define('header-menu', HeaderMenu);\n}\n\n/**\n * Find the closest menu item.\n * @param {Element | null | undefined} element\n * @returns {HTMLElement | null}\n */\nfunction findMenuItem(element) {\n  if (!(element instanceof Element)) return null;\n\n  return element?.querySelector('[ref=\"menuitem\"]');\n}\n\n/**\n * Find the closest submenu.\n * @param {Element | null | undefined} element\n * @returns {HTMLElement | null}\n */\nfunction findSubmenu(element) {\n  const submenu = element?.parentElement?.querySelector('[ref=\"submenu[]\"]');\n  return submenu instanceof HTMLElement ? submenu : null;\n}\n"],
  "mappings": "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",
  "names": []
}
