{
  "version": 3,
  "sources": ["/cdn/shop/t/24/assets/product-form.js?pdp-system=1"],
  "sourcesContent": ["if (!window.CooldownCartAddGuard) {\n  window.CooldownCartAddGuard = {\n    recentAdds: [],\n    originalFetch: window.fetch.bind(window),\n    windowMs: 3000,\n\n    fingerprint(formData) {\n      if (!(formData instanceof FormData)) return '';\n\n      return [\n        formData.get('id'),\n        formData.get('Size'),\n        formData.get('Color')\n      ].filter(Boolean).join('|');\n    },\n\n    record(formData) {\n      const fingerprint = this.fingerprint(formData);\n      if (!fingerprint) return;\n\n      const now = Date.now();\n      this.recentAdds = this.recentAdds.filter((add) => now - add.time < this.windowMs);\n      this.recentAdds.push({ fingerprint, time: now });\n    },\n\n    isDuplicateAppAdd(url, init) {\n      const requestUrl = new URL(url, window.location.origin);\n      if (requestUrl.pathname !== `${routes.cart_add_url}.js`) return false;\n      if (!init || init.method?.toUpperCase() !== 'POST') return false;\n\n      const fingerprint = this.fingerprint(init.body);\n      if (!fingerprint) return false;\n\n      const now = Date.now();\n      this.recentAdds = this.recentAdds.filter((add) => now - add.time < this.windowMs);\n\n      return this.recentAdds.some((add) => add.fingerprint === fingerprint);\n    }\n  };\n\n  window.fetch = function(input, init) {\n    const url = typeof input === 'string' ? input : input?.url;\n\n    if (url && window.CooldownCartAddGuard.isDuplicateAppAdd(url, init)) {\n      return Promise.resolve(new Response(JSON.stringify({ ok: true }), {\n        status: 200,\n        headers: { 'Content-Type': 'application/json' }\n      }));\n    }\n\n    return window.CooldownCartAddGuard.originalFetch(input, init);\n  };\n}\n\nif (!customElements.get('product-form')) {\n  customElements.define('product-form', class ProductForm extends HTMLElement {\n    constructor() {\n      super();\n\n      this.form = this.querySelector('form');\n      if (!this.form) return;\n\n      const variantInput = this.form.querySelector('[name=id]');\n      if (variantInput) variantInput.disabled = false;\n\n      this.form.addEventListener('submit', this.onSubmitHandler.bind(this));\n      this.cart = document.querySelector('cart-notification') || document.querySelector('cart-drawer');\n      this.onSubmitButtonInteraction = this.onSubmitButtonInteraction.bind(this);\n\n      this.bindSubmitButton();\n      window.setTimeout(() => this.bindSubmitButton(), 0);\n      window.setTimeout(() => this.bindSubmitButton(), 500);\n\n      this.buttonObserver = new MutationObserver(() => this.bindSubmitButton());\n      this.buttonObserver.observe(this, { childList: true, subtree: true });\n    }\n\n    bindSubmitButton() {\n      const submitButton = this.querySelector('[type=\"submit\"], button[name=\"add\"]');\n      if (!submitButton || submitButton === this.submitButton) return;\n\n      this.submitButton = submitButton;\n      this.submitButton.addEventListener('pointerup', this.onSubmitButtonInteraction, { capture: true });\n      this.submitButton.addEventListener('click', this.onSubmitButtonInteraction, { capture: true });\n\n      if (document.querySelector('cart-drawer')) this.submitButton.setAttribute('aria-haspopup', 'dialog');\n    }\n\n    onSubmitButtonInteraction(evt) {\n      this.submitButton = evt.currentTarget;\n\n      if (evt.button !== 0) return;\n      if (!this.submitButton.classList.contains('cart-add')) return;\n\n      if (this.captureSubmitInProgress) {\n        evt.preventDefault();\n        evt.stopImmediatePropagation();\n        return;\n      }\n\n      if (this.submitButton.disabled || this.submitButton.getAttribute('aria-disabled') === 'true') return;\n\n      this.captureSubmitInProgress = true;\n      evt.preventDefault();\n      evt.stopImmediatePropagation();\n      this.onSubmitHandler(evt);\n    }\n\n    onSubmitHandler(evt) {\n      evt.preventDefault();\n      this.bindSubmitButton();\n      if (!this.submitButton) return;\n\n      if (this.submitButton.getAttribute('aria-disabled') === 'true') return;\n\n      this.handleErrorMessage();\n\n      this.submitButton.setAttribute('aria-disabled', true);\n      this.submitButton.classList.add('loading');\n      this.querySelector('.loading-overlay__spinner')?.classList.remove('hidden');\n\n      const config = fetchConfig('javascript');\n      config.headers['X-Requested-With'] = 'XMLHttpRequest';\n      delete config.headers['Content-Type'];\n\n      const formData = new FormData(this.form);\n      if (this.cart) {\n        formData.append('sections', this.cart.getSectionsToRender().map((section) => section.id));\n        formData.append('sections_url', window.location.pathname);\n        this.cart.setActiveElement(document.activeElement);\n      }\n      config.body = formData;\n      window.CooldownCartAddGuard?.record(formData);\n\n      fetch(`${routes.cart_add_url}`, config)\n        .then((response) => response.json())\n        .then((response) => {\n          if (response.status) {\n            this.handleErrorMessage(response.description);\n\n            const soldOutMessage = this.submitButton.querySelector('.sold-out-message');\n            if (!soldOutMessage) return;\n            this.submitButton.setAttribute('aria-disabled', true);\n            this.submitButton.querySelector('span').classList.add('hidden');\n            soldOutMessage.classList.remove('hidden');\n            this.error = true;\n            return;\n          } else if (!this.cart) {\n            window.location = window.routes.cart_url;\n            return;\n          }\n\n          this.error = false;\n          const quickAddModal = this.closest('quick-add-modal');\n          if (quickAddModal) {\n            document.body.addEventListener('modalClosed', () => {\n              setTimeout(() => { this.cart.renderContents(response) });\n            }, { once: true });\n            quickAddModal.hide(true);\n          } else {\n            this.cart.renderContents(response);\n          }\n        })\n        .catch((e) => {\n          console.error(e);\n        })\n        .finally(() => {\n          this.captureSubmitInProgress = false;\n          this.submitButton.classList.remove('loading');\n          if (this.cart && this.cart.classList.contains('is-empty')) this.cart.classList.remove('is-empty');\n          if (!this.error) this.submitButton.removeAttribute('aria-disabled');\n          this.querySelector('.loading-overlay__spinner')?.classList.add('hidden');\n        });\n    }\n\n    handleErrorMessage(errorMessage = false) {\n      this.errorMessageWrapper = this.errorMessageWrapper || this.querySelector('.product-form__error-message-wrapper');\n      if (!this.errorMessageWrapper) return;\n      this.errorMessage = this.errorMessage || this.errorMessageWrapper.querySelector('.product-form__error-message');\n\n      this.errorMessageWrapper.toggleAttribute('hidden', !errorMessage);\n\n      if (errorMessage) {\n        this.errorMessage.textContent = errorMessage;\n      }\n    }\n  });\n}\n"],
  "mappings": "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",
  "names": []
}
