{
  "version": 3,
  "sources": ["/cdn/shop/t/6/assets/coolmist-cart-drawer-v2.js?cm=20260918-cart-drawer-clean-v1"],
  "sourcesContent": ["(() => {\n  const script = document.currentScript;\n  const drawer = document.querySelector('[data-cart-drawer]');\n  if (!drawer) return;\n  const panel = drawer.querySelector('.ryo-cart-drawer__panel');\n  const items = drawer.querySelector('[data-cart-drawer-items]');\n  const footer = drawer.querySelector('[data-cart-drawer-footer]');\n  const socialSupport = drawer.querySelector('[data-cart-social]');\n  const closeButton = drawer.querySelector('.ryo-cart-drawer__close');\n  if (!panel || !items || !footer || !closeButton) return;\n  const cartUrl = script?.dataset.cartUrl || '/cart';\n  const status = document.createElement('p');\n  status.className = 'ryo-cart-drawer__status';\n  status.setAttribute('role', 'status');\n  items.after(status);\n  let cart = null;\n  let busy = false;\n  let returnFocus = null;\n  let openSequence = 0;\n  const escape = value => String(value ?? '').replace(/[&<>\"']/g, char => ({'&':'&amp;', '<':'&lt;', '>':'&gt;', '\"':'&quot;', \"'\":'&#39;'}[char]));\n  const money = value => {\n    const currency = cart?.currency || 'AUD';\n    const formatted = new Intl.NumberFormat('en-AU', { style: 'currency', currency, currencyDisplay: 'narrowSymbol' }).format(value / 100);\n    return currency === 'AUD' ? `A${formatted}` : formatted;\n  };\n\n  async function refreshCartPage() {\n    if (!document.body.classList.contains('template-cart')) return;\n    try {\n      const response = await fetch(cartUrl, { credentials: 'same-origin', cache: 'no-store' });\n      if (!response.ok) return;\n      const documentCopy = new DOMParser().parseFromString(await response.text(), 'text/html');\n      const nextMain = documentCopy.querySelector('#MainContent');\n      const main = document.querySelector('#MainContent');\n      if (nextMain && main) main.replaceChildren(...nextMain.childNodes);\n    } catch {}\n  }\n\n  function render(nextCart) {\n    cart = nextCart;\n    document.querySelectorAll('[data-cart-count]').forEach(node => { node.textContent = cart.item_count; });\n    drawer.querySelector('[data-cart-drawer-count]').textContent = `(${cart.item_count})`;\n    drawer.querySelector('[data-cart-drawer-subtotal]').textContent = money(cart.total_price);\n    const checkoutPrice = drawer.querySelector('[data-cart-drawer-checkout]');\n    if (checkoutPrice) checkoutPrice.textContent = money(cart.total_price);\n    footer.hidden = cart.item_count === 0;\n    if (socialSupport) socialSupport.hidden = cart.item_count === 0;\n    if (!cart.item_count) {\n      items.innerHTML = '<p class=\"ryo-cart-drawer__empty\">Your cart is empty.</p><p><a href=\"/pages/coolmist-clean-product-preview\">Continue shopping</a></p>';\n      return;\n    }\n    items.innerHTML = cart.items.map(item => {\n      const image = item.featured_image?.url || item.image;\n      const variant = item.variant_title && item.variant_title !== 'Default Title' ? item.variant_title : '';\n      return `<div class=\"ryo-cart-drawer__item\" data-cart-key=\"${escape(item.key)}\">\n        ${image ? `<img class=\"ryo-cart-drawer__image\" src=\"${escape(image)}\" alt=\"${escape(item.product_title)}\" width=\"88\" height=\"88\">` : '<div class=\"ryo-cart-drawer__image\"></div>'}\n        <div class=\"ryo-cart-drawer__item-main\">\n          <div class=\"ryo-cart-drawer__item-top\">\n            <a class=\"ryo-cart-drawer__item-title\" href=\"${escape(item.url)}\">${escape(item.product_title)}</a>\n            <button class=\"ryo-cart-drawer__remove\" type=\"button\" data-cart-remove aria-label=\"Remove ${escape(item.product_title)}\">\u00D7</button>\n          </div>\n          <p class=\"ryo-cart-drawer__variant\">${escape(variant)}</p>\n          <div class=\"ryo-cart-drawer__item-bottom\">\n            <span class=\"ryo-cart-drawer__price\">${money(item.final_price)}</span>\n            <div class=\"ryo-cart-drawer__quantity\">\n              <button type=\"button\" data-cart-step=\"-1\" aria-label=\"Decrease quantity\">\u2212</button>\n              <span aria-label=\"Quantity\">${item.quantity}</span>\n              <button type=\"button\" data-cart-step=\"1\" aria-label=\"Increase quantity\">+</button>\n            </div>\n          </div>\n        </div>\n      </div>`;\n    }).join('');\n  }\n\n  async function request(url, options = {}) {\n    const response = await fetch(url, { credentials: 'same-origin', cache: 'no-store', ...options, headers: { Accept: 'application/json', ...options.headers } });\n    const result = await response.json();\n    if (!response.ok) throw new Error(typeof result.description === 'string' ? result.description : 'We could not update your cart. Please try again.');\n    return result;\n  }\n\n  async function open() {\n    const sequence = ++openSequence;\n    returnFocus = document.activeElement;\n    status.textContent = '';\n    if (!cart) items.innerHTML = '<p class=\"ryo-cart-drawer__empty\">Loading your cart\u2026</p>';\n    drawer.setAttribute('aria-hidden', 'false');\n    document.body.classList.add('ryo-cart-drawer-open');\n    closeButton.focus();\n    try {\n      const current = await request(`${cartUrl}.js`);\n      if (sequence === openSequence) render(current);\n    } catch (error) {\n      if (sequence !== openSequence) return;\n      close();\n      if (!document.body.classList.contains('template-cart')) window.location.assign(cartUrl);\n    }\n  }\n\n  function close() {\n    ++openSequence;\n    drawer.setAttribute('aria-hidden', 'true');\n    document.body.classList.remove('ryo-cart-drawer-open');\n    returnFocus?.focus?.();\n  }\n\n  async function change(key, quantity) {\n    if (busy) return;\n    busy = true;\n    status.textContent = '';\n    items.setAttribute('aria-busy', 'true');\n    items.querySelectorAll('button').forEach(button => { button.disabled = true; });\n    try {\n      render(await request(`${cartUrl}/change.js`, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ id: key, quantity: Math.max(0, quantity) })\n      }));\n      await refreshCartPage();\n    } catch (error) {\n      status.textContent = error.message || 'We could not update your cart. Please try again.';\n    } finally {\n      busy = false;\n      items.removeAttribute('aria-busy');\n      items.querySelectorAll('button').forEach(button => { button.disabled = false; });\n    }\n  }\n\n  document.addEventListener('click', event => {\n    const link = event.target.closest('a[href]');\n    if (!link || event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n    const url = new URL(link.href, location.href);\n    if (url.origin === location.origin && url.pathname.replace(/\\/$/, '') === cartUrl.replace(/\\/$/, '') && !url.search && link.target !== '_blank') {\n      event.preventDefault();\n      if (!busy) open();\n    }\n  });\n  drawer.addEventListener('click', event => {\n    if (event.target.closest('[data-cart-drawer-close]')) { close(); return; }\n    const button = event.target.closest('[data-cart-step], [data-cart-remove]');\n    const row = button?.closest('[data-cart-key]');\n    if (!row || !cart || busy) return;\n    const item = cart.items.find(entry => entry.key === row.dataset.cartKey);\n    if (item) change(item.key, button.hasAttribute('data-cart-remove') ? 0 : item.quantity + Number(button.dataset.cartStep));\n  });\n  document.addEventListener('keydown', event => {\n    if (drawer.getAttribute('aria-hidden') !== 'false') return;\n    if (event.key === 'Escape') close();\n    if (event.key !== 'Tab') return;\n    const focusable = [...panel.querySelectorAll('a[href],button:not(:disabled),input:not(:disabled)')].filter(node => node.getClientRects().length);\n    const first = focusable[0];\n    const last = focusable[focusable.length - 1];\n    if (event.shiftKey && document.activeElement === first) { event.preventDefault(); last?.focus(); }\n    else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first?.focus(); }\n  });\n  if (document.body.classList.contains('template-cart')) open();\n})();\n"],
  "mappings": "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",
  "names": []
}
