{
  "version": 3,
  "sources": ["/cdn/shop/t/35/assets/pharmacy-purchase.js?purchase_revision=20260922-2"],
  "sourcesContent": ["(() => {\n  if (customElements.get('pharmacy-purchase-controls')) return;\n\n  class PharmacyPurchaseControls extends HTMLElement {\n    connectedCallback() {\n      if (!this.hasAttribute('data-enabled') || this.controller) return;\n      this.controller = new AbortController();\n      this.busy = false;\n      this.navigating = false;\n      this.addEventListener('submit', this.submit, { capture: true, signal: this.controller.signal });\n      this.addEventListener('click', this.guardClick, { capture: true, signal: this.controller.signal });\n      window.addEventListener('pageshow', this.restorePage, { signal: this.controller.signal });\n      this.observer = new MutationObserver(() => this.sync());\n      this.observer.observe(this, { childList: true, subtree: true, attributes: true, attributeFilter: ['disabled', 'data-purchase-updating'] });\n      this.setAttribute('data-ready', '');\n      this.sync();\n    }\n\n    disconnectedCallback() {\n      this.controller?.abort();\n      this.observer?.disconnect();\n      this.controller = null;\n      this.removeAttribute('data-ready');\n    }\n\n    restorePage = (event) => {\n      // Back/forward cache restores this element without calling connectedCallback.\n      // A completed navigation must not leave the purchase buttons locked.\n      if (!event.persisted) return;\n      this.busy = false;\n      this.navigating = false;\n      this.removeAttribute('aria-busy');\n      this.showStatus('');\n      this.sync();\n    };\n\n    sync() {\n      const add = this.querySelector('[ref=\"addToCartButton\"]');\n      const buy = this.querySelector('[data-buy-now]');\n      const updating = this.querySelector('product-form-component')?.dataset.purchaseUpdating === 'true';\n      const buyStage = this.getAttribute('data-pcart-buy-stage');\n      if (buy) {\n        const label = buy.querySelector('span');\n        if (buyStage && label) {\n          if (!label.hasAttribute('data-pcart-original')) label.dataset.pcartOriginal = label.textContent;\n          const next = buyStage === 'opening' ? '\uC774\uB3D9 \uC911\u2026' : '\uAD6C\uB9E4 \uC900\uBE44 \uC911\u2026';\n          if (label.textContent !== next) label.textContent = next;\n          buy.setAttribute('aria-busy', 'true');\n        } else if (label?.hasAttribute('data-pcart-original')) {\n          label.textContent = label.dataset.pcartOriginal;\n          delete label.dataset.pcartOriginal;\n          buy.removeAttribute('aria-busy');\n        }\n        const disabled = !add || add.disabled || updating || this.busy || this.navigating || Boolean(buyStage);\n        if (buy.disabled !== Boolean(disabled)) buy.disabled = Boolean(disabled);\n      }\n      if (add) add.setAttribute('aria-disabled', String(add.disabled || updating || this.busy || this.navigating || Boolean(buyStage)));\n    }\n\n    guardClick = (event) => {\n      const button = event.target.closest('button[type=\"submit\"]');\n      if (button && (this.hasAttribute('data-pcart-buy-stage') || this.busy || this.navigating || button.getAttribute('aria-disabled') === 'true')) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n      }\n    };\n\n    showStatus(text) {\n      const status = this.querySelector('.pharmacy-purchase__status');\n      if (status) {\n        status.hidden = !text;\n        status.textContent = text;\n      }\n    }\n\n    submit = async (event) => {\n      const form = event.target;\n      if (!(form instanceof HTMLFormElement)) return;\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      const productForm = form.closest('product-form-component');\n      const add = form.querySelector('[ref=\"addToCartButton\"]');\n      if (this.busy || this.navigating || !add || add.disabled || productForm?.dataset.purchaseUpdating === 'true') return;\n      if (!form.reportValidity()) return;\n\n      // Snapshot the chosen variant, quantity and line properties before any network wait.\n      const data = new FormData(form);\n      const quantity = Number(data.get('quantity') || 1);\n      if (!data.get('id') || !Number.isSafeInteger(quantity) || quantity < 1) {\n        this.showStatus('\uAD6C\uB9E4\uD560 \uC0C1\uD488\uACFC \uC218\uB7C9\uC744 \uD655\uC778\uD574 \uC8FC\uC138\uC694.');\n        return;\n      }\n      const buyNow = event.submitter?.hasAttribute('data-buy-now') || false;\n      const root = (this.dataset.root || '/').replace(/\\/?$/, '/');\n      document.querySelector('pharmacy-cart-feedback')?.dismiss?.();\n      const cartLink = this.querySelector('[data-purchase-cart-link]');\n      if (cartLink) cartLink.hidden = true;\n      this.busy = true;\n      this.setAttribute('aria-busy', 'true');\n      this.sync();\n      this.showStatus(buyNow ? '\uC0C1\uD488\uC744 \uB2F4\uACE0 \uBC30\uC1A1\uC9C0 \uC785\uB825\uCC3D\uC744 \uC5FD\uB2C8\uB2E4.' : '\uC7A5\uBC14\uAD6C\uB2C8\uC5D0 \uB2F4\uACE0 \uC788\uC2B5\uB2C8\uB2E4.');\n\n      try {\n        const pharmacy = window.pyunhangaPharmacyCart;\n        if (this.hasAttribute('data-pharmacy-attribution') && !pharmacy) {\n          throw new Error('\uC57D\uAD6D \uC5F0\uACB0\uC744 \uC900\uBE44\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4. \uD398\uC774\uC9C0\uB97C \uC0C8\uB85C\uACE0\uCE68\uD55C \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.');\n        }\n        const context = pharmacy ? await pharmacy.ensure({variantId:String(data.get('id'))}) : null;\n        if (pharmacy?.relevant() && !context) throw new Error('\uC57D\uAD6D \uC0C1\uC810\uC5D0\uC11C \uB2E4\uC2DC \uC0C1\uD488\uC744 \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.');\n        if (context) {\n          data.set('properties[_pharmacy_context]', context.token);\n          data.set('properties[_pharmacy_handle]', context.pharmacy);\n          data.set('properties[_pharmacy_page]', context.page);\n        }\n        if (!buyNow) {\n          const sections = [...new Set([...document.querySelectorAll('cart-items-component[data-section-id]')].map(item => item.dataset.sectionId).filter(Boolean))].slice(0, 5);\n          if (sections.length) {\n            data.set('sections', sections.join(','));\n            data.set('sections_url', location.pathname + location.search);\n          }\n        }\n        const response = await fetch(root + 'cart/add.js', {\n          method: 'POST', headers: { Accept: 'application/json' }, body: data,\n        });\n        const result = await response.json();\n        if (!response.ok || result.status) throw new Error(result.description || result.message || '\uC0C1\uD488\uC744 \uB2F4\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.');\n\n        if (buyNow) {\n          this.navigating = true;\n          location.assign(root + 'cart?pharmacy_checkout=address');\n          return;\n        }\n        this.showStatus(this.dataset.addedMessage);\n        if (cartLink) cartLink.hidden = false;\n        await document.querySelector('pharmacy-cart-feedback')?.added?.(result, data.get('id'), quantity, form);\n      } catch (error) {\n        this.showStatus(error.message || '\uC5F0\uACB0\uC744 \uD655\uC778\uD55C \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.');\n      } finally {\n        this.busy = false;\n        this.removeAttribute('aria-busy');\n        this.sync();\n      }\n    };\n  }\n\n  customElements.define('pharmacy-purchase-controls', PharmacyPurchaseControls);\n})();\n\n"],
  "mappings": "CAAC,IAAM,CACL,GAAI,eAAe,IAAI,4BAA4B,EAAG,OAEtD,MAAM,iCAAiC,WAAY,CACjD,mBAAoB,CACd,CAAC,KAAK,aAAa,cAAc,GAAK,KAAK,aAC/C,KAAK,WAAa,IAAI,gBACtB,KAAK,KAAO,GACZ,KAAK,WAAa,GAClB,KAAK,iBAAiB,SAAU,KAAK,OAAQ,CAAE,QAAS,GAAM,OAAQ,KAAK,WAAW,MAAO,CAAC,EAC9F,KAAK,iBAAiB,QAAS,KAAK,WAAY,CAAE,QAAS,GAAM,OAAQ,KAAK,WAAW,MAAO,CAAC,EACjG,OAAO,iBAAiB,WAAY,KAAK,YAAa,CAAE,OAAQ,KAAK,WAAW,MAAO,CAAC,EACxF,KAAK,SAAW,IAAI,iBAAiB,IAAM,KAAK,KAAK,CAAC,EACtD,KAAK,SAAS,QAAQ,KAAM,CAAE,UAAW,GAAM,QAAS,GAAM,WAAY,GAAM,gBAAiB,CAAC,WAAY,wBAAwB,CAAE,CAAC,EACzI,KAAK,aAAa,aAAc,EAAE,EAClC,KAAK,KAAK,EACZ,CAEA,sBAAuB,CACrB,KAAK,YAAY,MAAM,EACvB,KAAK,UAAU,WAAW,EAC1B,KAAK,WAAa,KAClB,KAAK,gBAAgB,YAAY,CACnC,CAEA,YAAe,OAAU,CAGlB,MAAM,YACX,KAAK,KAAO,GACZ,KAAK,WAAa,GAClB,KAAK,gBAAgB,WAAW,EAChC,KAAK,WAAW,EAAE,EAClB,KAAK,KAAK,EACZ,EAEA,MAAO,CACL,MAAM,IAAM,KAAK,cAAc,yBAAyB,EAClD,IAAM,KAAK,cAAc,gBAAgB,EACzC,SAAW,KAAK,cAAc,wBAAwB,GAAG,QAAQ,mBAAqB,OACtF,SAAW,KAAK,aAAa,sBAAsB,EACzD,GAAI,IAAK,CACP,MAAM,MAAQ,IAAI,cAAc,MAAM,EACtC,GAAI,UAAY,MAAO,CAChB,MAAM,aAAa,qBAAqB,IAAG,MAAM,QAAQ,cAAgB,MAAM,aACpF,MAAM,KAAO,WAAa,UAAY,4BAAU,yCAC5C,MAAM,cAAgB,OAAM,MAAM,YAAc,MACpD,IAAI,aAAa,YAAa,MAAM,CACtC,MAAW,OAAO,aAAa,qBAAqB,IAClD,MAAM,YAAc,MAAM,QAAQ,cAClC,OAAO,MAAM,QAAQ,cACrB,IAAI,gBAAgB,WAAW,GAEjC,MAAM,SAAW,CAAC,KAAO,IAAI,UAAY,UAAY,KAAK,MAAQ,KAAK,YAAc,EAAQ,SACzF,IAAI,WAAa,EAAQ,WAAW,IAAI,SAAW,EAAQ,SACjE,CACI,KAAK,IAAI,aAAa,gBAAiB,OAAO,IAAI,UAAY,UAAY,KAAK,MAAQ,KAAK,YAAc,EAAQ,QAAS,CAAC,CAClI,CAEA,WAAc,OAAU,CACtB,MAAM,OAAS,MAAM,OAAO,QAAQ,uBAAuB,EACvD,SAAW,KAAK,aAAa,sBAAsB,GAAK,KAAK,MAAQ,KAAK,YAAc,OAAO,aAAa,eAAe,IAAM,UACnI,MAAM,eAAe,EACrB,MAAM,yBAAyB,EAEnC,EAEA,WAAW,KAAM,CACf,MAAM,OAAS,KAAK,cAAc,4BAA4B,EAC1D,SACF,OAAO,OAAS,CAAC,KACjB,OAAO,YAAc,KAEzB,CAEA,OAAS,MAAO,OAAU,CACxB,MAAM,KAAO,MAAM,OACnB,GAAI,EAAE,gBAAgB,iBAAkB,OACxC,MAAM,eAAe,EACrB,MAAM,yBAAyB,EAC/B,MAAM,YAAc,KAAK,QAAQ,wBAAwB,EACnD,IAAM,KAAK,cAAc,yBAAyB,EAExD,GADI,KAAK,MAAQ,KAAK,YAAc,CAAC,KAAO,IAAI,UAAY,aAAa,QAAQ,mBAAqB,QAClG,CAAC,KAAK,eAAe,EAAG,OAG5B,MAAM,KAAO,IAAI,SAAS,IAAI,EACxB,SAAW,OAAO,KAAK,IAAI,UAAU,GAAK,CAAC,EACjD,GAAI,CAAC,KAAK,IAAI,IAAI,GAAK,CAAC,OAAO,cAAc,QAAQ,GAAK,SAAW,EAAG,CACtE,KAAK,WAAW,iGAAsB,EACtC,MACF,CACA,MAAM,OAAS,MAAM,WAAW,aAAa,cAAc,GAAK,GAC1D,MAAQ,KAAK,QAAQ,MAAQ,KAAK,QAAQ,OAAQ,GAAG,EAC3D,SAAS,cAAc,wBAAwB,GAAG,UAAU,EAC5D,MAAM,SAAW,KAAK,cAAc,2BAA2B,EAC3D,WAAU,SAAS,OAAS,IAChC,KAAK,KAAO,GACZ,KAAK,aAAa,YAAa,MAAM,EACrC,KAAK,KAAK,EACV,KAAK,WAAW,OAAS,kGAAyB,uEAAgB,EAElE,GAAI,CACF,MAAM,SAAW,OAAO,sBACxB,GAAI,KAAK,aAAa,2BAA2B,GAAK,CAAC,SACrD,MAAM,IAAI,MAAM,uMAA4C,EAE9D,MAAM,QAAU,SAAW,MAAM,SAAS,OAAO,CAAC,UAAU,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAI,KACvF,GAAI,UAAU,SAAS,GAAK,CAAC,QAAS,MAAM,IAAI,MAAM,8GAAyB,EAM/E,GALI,UACF,KAAK,IAAI,gCAAiC,QAAQ,KAAK,EACvD,KAAK,IAAI,+BAAgC,QAAQ,QAAQ,EACzD,KAAK,IAAI,6BAA8B,QAAQ,IAAI,GAEjD,CAAC,OAAQ,CACX,MAAM,SAAW,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,SAAS,iBAAiB,uCAAuC,CAAC,EAAE,IAAI,MAAQ,KAAK,QAAQ,SAAS,EAAE,OAAO,OAAO,CAAC,CAAC,EAAE,MAAM,EAAG,CAAC,EACjK,SAAS,SACX,KAAK,IAAI,WAAY,SAAS,KAAK,GAAG,CAAC,EACvC,KAAK,IAAI,eAAgB,SAAS,SAAW,SAAS,MAAM,EAEhE,CACA,MAAM,SAAW,MAAM,MAAM,KAAO,cAAe,CACjD,OAAQ,OAAQ,QAAS,CAAE,OAAQ,kBAAmB,EAAG,KAAM,IACjE,CAAC,EACK,OAAS,MAAM,SAAS,KAAK,EACnC,GAAI,CAAC,SAAS,IAAM,OAAO,OAAQ,MAAM,IAAI,MAAM,OAAO,aAAe,OAAO,SAAW,qHAA2B,EAEtH,GAAI,OAAQ,CACV,KAAK,WAAa,GAClB,SAAS,OAAO,KAAO,gCAAgC,EACvD,MACF,CACA,KAAK,WAAW,KAAK,QAAQ,YAAY,EACrC,WAAU,SAAS,OAAS,IAChC,MAAM,SAAS,cAAc,wBAAwB,GAAG,QAAQ,OAAQ,KAAK,IAAI,IAAI,EAAG,SAAU,IAAI,CACxG,OAAS,MAAO,CACd,KAAK,WAAW,MAAM,SAAW,kGAAuB,CAC1D,QAAE,CACA,KAAK,KAAO,GACZ,KAAK,gBAAgB,WAAW,EAChC,KAAK,KAAK,CACZ,CACF,CACF,CAEA,eAAe,OAAO,6BAA8B,wBAAwB,CAC9E,GAAG",
  "names": []
}
