{
  "version": 3,
  "sources": ["/cdn/shop/t/86/assets/results-list.js?bv_rev=20261004-autoload"],
  "sourcesContent": ["import { orderCatalog, cancelCatalogOrder } from '@theme/belvoir-catalog-order';\nimport { mediaQueryLarge, requestIdleCallback, startViewTransition } from '@theme/utilities';\nimport PaginatedList from '@theme/paginated-list';\nimport { StandardEvents } from '@shopify/events';\n\nconst PRODUCT_CARD_IMAGE_SELECTOR = '.product-media__image';\n\n/**\n * A custom element that renders a pagniated results list\n */\nexport default class ResultsList extends PaginatedList {\n  /** @type {WeakMap<HTMLImageElement, string>} */\n  #defaultImageSizes = new WeakMap();\n  #catalogKey = '';\n\n  #gridObserver = new MutationObserver(records => {\n    // Galleries mutate their controls on scroll. Only new grid items need sizing.\n    for (const { addedNodes } of records) {\n      for (const node of addedNodes) {\n        if (node instanceof Element) this.#syncProductCardImageSizes(node);\n      }\n    }\n  });\n  #catalogObserver = new MutationObserver(records => {\n    // Only rerun ordering when the actual grid is replaced, not whenever\n    // galleries, reviews or slideshow controls insert nodes into cards.\n    const replaced = records.some(({ addedNodes }) => [...addedNodes].some(node =>\n      node instanceof Element && (node.matches('.product-grid') || node.querySelector('.product-grid'))\n    ));\n    const keyChanged = location.pathname + location.search !== this.#catalogKey;\n    const rendered = records.some(record =>\n      record.target === this || (record.target instanceof Element && record.target.matches('.product-grid')));\n    // Section morphs can retain the same grid node. Refresh on a new query as\n    // well as a new grid, without reacting to internal gallery mutations.\n    if (replaced || (keyChanged && rendered)) this.updatedCallback();\n  });\n\n  #handleResultsUpdate = async (event) => {\n    const section = event.target?.closest?.('[id^=\"shopify-section-\"]');\n    if (section && section.id !== `shopify-section-${this.getAttribute('section-id')}`) return;\n    try {\n      await event.promise;\n      if (this.isConnected) this.updatedCallback();\n    } catch { /* Failed section rendering keeps the current results. */ }\n  };\n\n  connectedCallback() {\n    if (this.hasAttribute('data-bv-stock-order') && (!new URL(location.href).searchParams.get('sort_by') || new URL(location.href).searchParams.get('sort_by') === 'best-selling')) {\n      this.setAttribute('data-bv-order-active', '');\n    }\n    super.connectedCallback();\n    this.#catalogKey = location.pathname + location.search;\n    document.addEventListener(StandardEvents.collectionUpdate, this.#handleResultsUpdate);\n    document.addEventListener(StandardEvents.searchUpdate, this.#handleResultsUpdate);\n\n    mediaQueryLarge.addEventListener('change', this.#handleMediaQueryChange);\n    this.#observeGrid();\n    this.setAttribute('initialized', '');\n    this.#catalogObserver.observe(this, { childList: true, subtree: true, attributes: true, attributeFilter: ['data-bv-order-active'] });\n    orderCatalog(this);\n  }\n\n  updatedCallback() {\n    super.updatedCallback();\n    this.#catalogKey = location.pathname + location.search;\n    orderCatalog(this);\n    this.#observeGrid();\n  }\n\n  disconnectedCallback() {\n    this.#catalogObserver.disconnect();\n    document.removeEventListener(StandardEvents.collectionUpdate, this.#handleResultsUpdate);\n    document.removeEventListener(StandardEvents.searchUpdate, this.#handleResultsUpdate);\n    cancelCatalogOrder(this);\n    super.disconnectedCallback();\n    mediaQueryLarge.removeEventListener('change', this.#handleMediaQueryChange);\n    this.#gridObserver.disconnect();\n    this.#defaultImageSizes = new WeakMap();\n  }\n\n  /**\n   * Updates the layout.\n   *\n   * @param {Event} event\n   */\n  updateLayout({ target }) {\n    if (!(target instanceof HTMLInputElement)) return;\n\n    this.#animateLayoutChange(target.value);\n  }\n\n  /**\n   * Sets the layout.\n   *\n   * @param {string} value\n   */\n  #animateLayoutChange = async (value) => {\n    const { grid } = this.refs;\n\n    if (!grid) return;\n\n    await startViewTransition(() => this.#setLayout(value), ['product-grid']);\n\n    requestIdleCallback(() => {\n      const viewport = mediaQueryLarge.matches ? 'desktop' : 'mobile';\n      sessionStorage.setItem(`product-grid-view-${viewport}`, value);\n    });\n  };\n\n  /**\n   * Animates the layout change.\n   *\n   * @param {string} value\n   */\n  #setLayout(value) {\n    const { grid } = this.refs;\n    if (!grid) return;\n\n    grid.setAttribute('product-grid-view', value);\n    this.#syncProductCardImageSizes();\n  }\n\n  #observeGrid() {\n    this.#gridObserver.disconnect();\n\n    const { grid } = this.refs;\n    if (!grid) return;\n\n    this.#gridObserver.observe(grid, { childList: true });\n    this.#syncProductCardImageSizes();\n  }\n\n  #syncProductCardImageSizes = (root = this.refs.grid) => {\n    const { grid } = this.refs;\n    if (!grid) return;\n\n    const useSingleColumnSize = !mediaQueryLarge.matches && grid.getAttribute('product-grid-view') === 'mobile-single';\n    if (!(root instanceof Element)) root = grid;\n    const images = /** @type {NodeListOf<HTMLImageElement>} */ (root.querySelectorAll(PRODUCT_CARD_IMAGE_SELECTOR));\n\n    for (const image of images) {\n      if (!this.#defaultImageSizes.has(image)) this.#defaultImageSizes.set(image, image.sizes);\n\n      const sizes = useSingleColumnSize ? '100vw' : this.#defaultImageSizes.get(image);\n      if (sizes !== undefined && image.sizes !== sizes) image.sizes = sizes;\n    }\n  };\n\n  /**\n   * Handles the media query change event.\n   *\n   * @param {MediaQueryListEvent} event\n   */\n  #handleMediaQueryChange = (event) => {\n    const targetElement = event.matches\n      ? this.querySelector('[data-grid-layout=\"desktop-default-option\"]')\n      : this.querySelector('[data-grid-layout=\"mobile-option\"]');\n\n    if (!(targetElement instanceof HTMLInputElement)) return;\n\n    targetElement.checked = true;\n    this.#setLayout('default');\n  };\n}\n\nif (!customElements.get('results-list')) {\n  customElements.define('results-list', ResultsList);\n}\n\n\n"],
  "mappings": "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",
  "names": []
}
