{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/quick-add.js?frest_build=20260819a"],
  "sourcesContent": ["import { Component } from '@theme/component';\nimport { morph } from '@theme/morph';\nimport { DialogComponent, DialogCloseEvent } from '@theme/dialog';\nimport { mediaQueryLarge, isMobileBreakpoint, getIOSVersion } from '@theme/utilities';\nimport VariantPicker from '@theme/variant-picker';\nimport { StandardEvents, ProductSelectEvent, CartLinesUpdateEvent } from '@shopify/events';\n\nexport class QuickAddComponent extends Component {\n  /** @type {AbortController | null} */\n  #abortController = null;\n  /** @type {Map<string, Element>} */\n  #cachedContent = new Map();\n  /** @type {AbortController} */\n  #cartUpdateAbortController = new AbortController();\n\n  get productPageUrl() {\n    const productCard = /** @type {import('./product-card').ProductCard | null} */ (this.closest('product-card'));\n    if (productCard) return productCard.productPageUrl;\n\n    const hotspotProduct = /** @type {import('./product-hotspot').ProductHotspotComponent | null} */ (\n      this.closest('product-hotspot-component')\n    );\n    const productLink = hotspotProduct?.getHotspotProductLink();\n\n    return productLink?.href || '';\n  }\n\n  /**\n   * Gets the currently selected variant ID from the product card\n   * @returns {string | null} The variant ID or null\n   */\n  #getSelectedVariantId() {\n    const productCard = /** @type {import('./product-card').ProductCard | null} */ (this.closest('product-card'));\n    return productCard?.getSelectedVariantId() ?? null;\n  }\n\n  connectedCallback() {\n    super.connectedCallback();\n\n    mediaQueryLarge.addEventListener('change', this.#closeQuickAddModal);\n    document.addEventListener(StandardEvents.cartLinesUpdate, this.#handleCartUpdate, {\n      signal: this.#cartUpdateAbortController.signal,\n    });\n    document.addEventListener(StandardEvents.productSelect, this.#handleProductSelectUpdate);\n  }\n\n  disconnectedCallback() {\n    super.disconnectedCallback();\n\n    mediaQueryLarge.removeEventListener('change', this.#closeQuickAddModal);\n    this.#abortController?.abort();\n    this.#cartUpdateAbortController.abort();\n    document.removeEventListener(StandardEvents.productSelect, this.#handleProductSelectUpdate);\n  }\n\n  /**\n   * Updates quick-add button state when product variant is selected\n   * @param {ProductSelectEvent} event - The product select event\n   */\n  #handleProductSelectUpdate = (event) => {\n    if (!(event.target instanceof HTMLElement)) return;\n    if (event.target.closest('product-card') !== this.closest('product-card')) return;\n    if (this.dataset.usesSellingPlans === 'true') return;\n\n    // Only flip choose <-> add when both buttons were rendered.\n    // Otherwise the flip would hide the sole rendered button and reveal nothing.\n    if (this.dataset.rendersBothButtons !== 'true') return;\n\n    const productOptionsCount = this.dataset.productOptionsCount;\n    let quickAddButton = productOptionsCount === '1' ? 'add' : 'choose';\n\n    // A single-option card can resolve to an unavailable variant (e.g. re-selecting a\n    // sold-out swatch). Keep \"Choose\" so shoppers reach the picker, not a dead-end disabled \"Add\".\n    if (quickAddButton === 'add' && this.#isSelectedVariantUnavailable()) {\n      quickAddButton = 'choose';\n    }\n\n    this.setAttribute('data-quick-add-button', quickAddButton);\n  };\n\n  /**\n   * Whether the card's currently selected swatch maps to an unavailable variant.\n   * Reads `data-option-available` off the variant picker's selected option - the same\n   * signal the product card uses. Only reports true on an explicit `false`, so an\n   * unknown/absent signal leaves the caller's default (\"add\") untouched.\n   * @returns {boolean}\n   */\n  #isSelectedVariantUnavailable() {\n    const productCard = /** @type {import('./product-card').ProductCard | null} */ (this.closest('product-card'));\n    return productCard?.variantPicker?.selectedOption?.dataset.optionAvailable === 'false';\n  }\n\n  /**\n   * Clears the cached content when cart is updated\n   */\n  #handleCartUpdate = () => {\n    this.#cachedContent.clear();\n  };\n\n  /**\n   * Re-renders the variant picker in the quick-add modal.\n   * @param {Element} newHtml - The element to re-render.\n   */\n  #updateVariantPicker(newHtml) {\n    const modalContent = document.getElementById('quick-add-modal-content');\n    if (!modalContent) return;\n    const variantPicker = /** @type {VariantPicker | null} */ (modalContent.querySelector('variant-picker'));\n    if (!variantPicker) return;\n    variantPicker.updateVariantPicker(newHtml);\n  }\n\n  /**\n   * Handles quick add button click\n   * @param {Event} event - The click event\n   */\n  handleClick = async (event) => {\n    event.preventDefault();\n\n    const currentUrl = this.productPageUrl;\n    if (!currentUrl) return;\n\n    if (this.dataset.usesSellingPlans === 'true') {\n      if (currentUrl) window.location.href = currentUrl;\n      return;\n    }\n\n    // Check if we have cached content for this URL\n    let productGrid = this.#cachedContent.get(currentUrl);\n\n    if (!productGrid) {\n      // Fetch and cache the content\n      let html;\n      try {\n        html = await this.fetchProductPage(currentUrl);\n      } catch (error) {\n        if (error?.name !== 'AbortError') window.location.href = currentUrl;\n        return;\n      }\n      if (html) {\n        const gridElement = html.querySelector('[data-product-grid-content]');\n        if (gridElement) {\n          // Cache the cloned element to avoid modifying the original\n          productGrid = /** @type {Element} */ (gridElement.cloneNode(true));\n          this.#cachedContent.set(currentUrl, productGrid);\n        }\n      }\n    }\n\n    if (!productGrid) {\n      window.location.href = currentUrl;\n      return;\n    }\n\n    // Use a fresh clone from the cache\n    const freshContent = /** @type {Element} */ (productGrid.cloneNode(true));\n    await this.updateQuickAddModal(freshContent);\n    this.#updateVariantPicker(productGrid);\n\n    this.#openQuickAddModal();\n  };\n\n  #resetScroll() {\n    const dialogComponent = document.getElementById('quick-add-dialog');\n    if (!(dialogComponent instanceof QuickAddDialog)) return;\n\n    const productDetails = dialogComponent.querySelector('.product-details');\n    const productMedia = dialogComponent.querySelector('.product-information__media');\n    productDetails?.scrollTo({ top: 0, behavior: 'instant' });\n    productMedia?.scrollTo({ top: 0, behavior: 'instant' });\n  }\n\n  /** @param {QuickAddDialog} dialogComponent */\n  #stayVisibleUntilDialogCloses(dialogComponent) {\n    this.toggleAttribute('stay-visible', true);\n\n    dialogComponent.addEventListener(DialogCloseEvent.eventName, () => this.toggleAttribute('stay-visible', false), {\n      once: true,\n    });\n  }\n\n  #openQuickAddModal = () => {\n    const dialogComponent = document.getElementById('quick-add-dialog');\n    if (!(dialogComponent instanceof QuickAddDialog)) return;\n\n    this.#stayVisibleUntilDialogCloses(dialogComponent);\n\n    dialogComponent.showDialog();\n\n    // is nondeterministic when the open attribute is set on the dialog element after .showDialog() is called.\n    // Waiting until the open animation starts seemed to be the most reliable metric here.\n    const dialog = dialogComponent.refs?.dialog;\n    if (!dialog) return;\n    dialog.addEventListener('animationstart', this.#resetScroll.bind(this), { once: true });\n  };\n\n  #closeQuickAddModal = () => {\n    const dialogComponent = document.getElementById('quick-add-dialog');\n    if (!(dialogComponent instanceof QuickAddDialog)) return;\n\n    dialogComponent.closeDialog();\n  };\n\n  /**\n   * Fetches the product page content\n   * @param {string} productPageUrl - The URL of the product page to fetch\n   * @returns {Promise<Document | null>}\n   */\n  async fetchProductPage(productPageUrl) {\n    if (!productPageUrl) return null;\n\n    // We use this to abort the previous fetch request if it's still pending.\n    this.#abortController?.abort();\n    this.#abortController = new AbortController();\n\n    try {\n      const response = await fetch(productPageUrl, {\n        signal: this.#abortController.signal,\n      });\n\n      if (!response.ok) {\n        throw new Error(`Failed to fetch product page: HTTP error ${response.status}`);\n      }\n\n      const responseText = await response.text();\n      const html = new DOMParser().parseFromString(responseText, 'text/html');\n\n      return html;\n    } catch (error) {\n      if (error.name === 'AbortError') {\n        return null;\n      } else {\n        throw error;\n      }\n    } finally {\n      this.#abortController = null;\n    }\n  }\n\n  /**\n   * Re-renders the variant picker.\n   * @param {Element} productGrid - The product grid element\n   */\n  async updateQuickAddModal(productGrid) {\n    const modalContent = document.getElementById('quick-add-modal-content');\n\n    if (!productGrid || !modalContent) return;\n\n    if (isMobileBreakpoint()) {\n      const productDetails = productGrid.querySelector('.product-details');\n      const productFormComponent = productGrid.querySelector('product-form-component');\n      const variantPicker = productGrid.querySelector('variant-picker');\n      const productPrice = productGrid.querySelector('product-price');\n      const productTitle = document.createElement('a');\n      productTitle.textContent = this.dataset.productTitle || '';\n\n      // Make product title as a link to the product page\n      productTitle.href = this.productPageUrl;\n\n      const productHeader = document.createElement('div');\n      productHeader.classList.add('product-header');\n\n      productHeader.appendChild(productTitle);\n      if (productPrice) {\n        productHeader.appendChild(productPrice);\n      }\n      productGrid.appendChild(productHeader);\n\n      if (variantPicker) {\n        productGrid.appendChild(variantPicker);\n      }\n      if (productFormComponent) {\n        productGrid.appendChild(productFormComponent);\n      }\n\n      productDetails?.remove();\n    }\n\n    // Sync the view-event-payload attribute and morph children into the modal's product-component\n    const payload = productGrid.getAttribute('view-event-payload') || '';\n    modalContent.setAttribute('view-event-payload', payload);\n\n    morph(modalContent, productGrid);\n\n    this.#syncVariantSelection(modalContent);\n  }\n\n  /**\n   * Syncs the variant selection from the product card to the modal\n   * @param {Element} modalContent - The modal content element\n   */\n  #syncVariantSelection(modalContent) {\n    const selectedVariantId = this.#getSelectedVariantId();\n    if (!selectedVariantId) return;\n\n    // Find and check the corresponding input in the modal\n    const modalInputs = modalContent.querySelectorAll('input[type=\"radio\"][data-variant-id]');\n    for (const input of modalInputs) {\n      if (input instanceof HTMLInputElement && input.dataset.variantId === selectedVariantId && !input.checked) {\n        input.checked = true;\n        input.dispatchEvent(new Event('change', { bubbles: true }));\n        break;\n      }\n    }\n  }\n}\n\nif (!customElements.get('quick-add-component')) {\n  customElements.define('quick-add-component', QuickAddComponent);\n}\n\nclass QuickAddDialog extends DialogComponent {\n  #abortController = new AbortController();\n\n  connectedCallback() {\n    super.connectedCallback();\n\n    this.addEventListener(StandardEvents.cartLinesUpdate, this.handleCartUpdate, {\n      signal: this.#abortController.signal,\n    });\n    this.addEventListener(StandardEvents.productSelect, this.#handleProductSelect);\n\n    this.addEventListener(DialogCloseEvent.eventName, this.#handleDialogClose);\n  }\n\n  disconnectedCallback() {\n    super.disconnectedCallback();\n\n    this.#abortController.abort();\n    this.removeEventListener(DialogCloseEvent.eventName, this.#handleDialogClose);\n  }\n\n  /**\n   * Closes the dialog on successful cart update\n   * @param {CartLinesUpdateEvent} event - The cart lines update event\n   */\n  handleCartUpdate = (event) => {\n    event.promise\n      ?.then(({ detail }) => {\n        if (detail?.didError) return;\n        this.closeDialog();\n      })\n      .catch((error) => {\n        if (error?.name !== 'AbortError') console.warn('[quick-add] Event promise rejected:', error);\n      });\n  };\n\n  /** @param {ProductSelectEvent} event - The product select event */\n  #handleProductSelect = (event) => {\n    // Wait for variant update data\n    event.promise\n      .then(({ detail }) => {\n        if (!detail?.html) return;\n\n        const { html } = detail;\n        const anchorElement = /** @type {HTMLAnchorElement} */ (html.querySelector('.view-product-title a'));\n        const viewMoreDetailsLink = /** @type {HTMLAnchorElement} */ (this.querySelector('.view-product-title a'));\n        const mobileProductTitle = /** @type {HTMLAnchorElement} */ (this.querySelector('.product-header a'));\n\n        if (!anchorElement) return;\n\n        if (viewMoreDetailsLink) viewMoreDetailsLink.href = anchorElement.href;\n        if (mobileProductTitle) mobileProductTitle.href = anchorElement.href;\n      })\n      .catch((error) => {\n        if (error?.name !== 'AbortError') console.warn('[quick-add] Event promise rejected:', error);\n      });\n  };\n\n  #handleDialogClose = () => {\n    const iosVersion = getIOSVersion();\n    /**\n     * This is a patch to solve an issue with the UI freezing when the dialog is closed.\n     * To reproduce it, use iOS 16.0.\n     */\n    if (!iosVersion || iosVersion.major >= 17 || (iosVersion.major === 16 && iosVersion.minor >= 4)) return;\n\n    requestAnimationFrame(() => {\n      /** @type {HTMLElement | null} */\n      const grid = document.querySelector('#ResultsList [product-grid-view]');\n      if (grid) {\n        const currentWidth = grid.getBoundingClientRect().width;\n        grid.style.width = `${currentWidth - 1}px`;\n        requestAnimationFrame(() => {\n          grid.style.width = '';\n        });\n      }\n    });\n  };\n}\n\nif (!customElements.get('quick-add-dialog')) {\n  customElements.define('quick-add-dialog', QuickAddDialog);\n}\n"],
  "mappings": "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",
  "names": []
}
