{
  "version": 3,
  "sources": ["/cdn/shop/t/89/assets/product-form.js?cachebuster=6zAT373cxvpD"],
  "sourcesContent": ["if (!customElements.get('product-form')) {\n  customElements.define(\n    'product-form',\n    class ProductForm extends HTMLElement {\n      constructor() {\n        super();\n\n        this.form = this.querySelector('form');\n        if (this.form.querySelector('[name=id]')) {\n          this.form.querySelector('[name=id]').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.submitButton = this.querySelector('[type=\"submit\"]');\n\n        if (document.querySelector('cart-drawer') && this.submitButton) this.submitButton.setAttribute('aria-haspopup', 'dialog');\n\n        this.hideErrors = this.dataset.hideErrors === 'true';\n        \n        // Handle \"Nu kopen\" (Buy Now) button - adds to cart and goes to checkout\n        const buyNowButton = this.querySelector('[data-buy-now=\"true\"]');\n        if (buyNowButton) {\n          buyNowButton.addEventListener('click', this.onBuyNowHandler.bind(this));\n        }\n      }\n\n      onSubmitHandler(evt) {\n        evt.preventDefault();\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(\n            'sections',\n            this.cart.getSectionsToRender().map((section) => section.id)\n          );\n          formData.append('sections_url', window.location.pathname);\n          if (this.submitButton.id != \"ProductSubmitButton-product-quickview\") {\n            this.cart.setActiveElement(document.activeElement);\n          }\n        }\n        config.body = formData;\n\n        fetch(`${routes.cart_add_url}`, config)\n          .then((response) => response.json())\n          .then((response) => {\n            if (response.status) {\n              publish(PUB_SUB_EVENTS.cartError, {\n                source: 'product-form',\n                productVariantId: formData.get('id'),\n                errors: response.errors || response.description,\n                message: response.message,\n              });\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            if (!this.error)\n              publish(PUB_SUB_EVENTS.cartUpdate, { source: 'product-form', productVariantId: formData.get('id'), cartData: response });\n            this.error = false;\n            const is_cart_page = document.body.classList.contains('template-cart');\n            if (!is_cart_page) {\n              this.cart.renderContents(response);\n            }else{\n              closePopup.hide();\n            }\n          })\n          .catch((e) => {\n            console.error(e);\n          })\n          .finally(() => {\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        if (this.hideErrors) return;\n\n        this.errorMessageWrapper =\n          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      // \"Nu kopen\" button handler - adds to cart then redirects to checkout\n      onBuyNowHandler(evt) {\n        evt.preventDefault();\n        const buyNowButton = evt.currentTarget;\n        if (buyNowButton.getAttribute('aria-disabled') === 'true') return;\n\n        buyNowButton.setAttribute('aria-disabled', true);\n        buyNowButton.classList.add('loading');\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        config.body = 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              buyNowButton.removeAttribute('aria-disabled');\n              buyNowButton.classList.remove('loading');\n              return;\n            }\n            // Redirect to checkout\n            window.location.href = '/checkout';\n          })\n          .catch((e) => {\n            console.error(e);\n            buyNowButton.removeAttribute('aria-disabled');\n            buyNowButton.classList.remove('loading');\n          });\n      }\n    }\n  );\n}\n"],
  "mappings": "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",
  "names": []
}
