{
  "version": 3,
  "sources": ["/cdn/shop/t/6/assets/floating-cart.js?build=20260814b"],
  "sourcesContent": ["(() => {\n  const root = document.querySelector('[data-floating-cart]');\n  if (!root) return;\n\n  const toggle = root.querySelector('[data-floating-cart-toggle]');\n  const drawer = root.querySelector('[data-floating-cart-drawer]');\n  const backdrop = root.querySelector('[data-floating-cart-backdrop]');\n  const closeButton = root.querySelector('[data-floating-cart-close]');\n  const items = root.querySelector('[data-floating-cart-items]');\n  const footer = root.querySelector('[data-floating-cart-footer]');\n  const subtotal = root.querySelector('[data-floating-cart-subtotal]');\n  const status = root.querySelector('[data-floating-cart-status]');\n  const rootPath = root.dataset.cartRoot || '/';\n  let lastTrigger = null;\n\n  const escapeMarkup = (value) => String(value || '').replace(/[&<>'\"]/g, (character) => ({\n    '&': '&amp;', '<': '&lt;', '>': '&gt;', \"'\": '&#39;', '\"': '&quot;'\n  })[character]);\n\n  const money = (cents, currency) => {\n    try {\n      return new Intl.NumberFormat(document.documentElement.lang || 'en-US', {\n        style: 'currency',\n        currency: currency || root.dataset.cartCurrency || 'USD'\n      }).format(Number(cents || 0) / 100);\n    } catch (_) {\n      return `$${(Number(cents || 0) / 100).toFixed(2)}`;\n    }\n  };\n\n  const updateBadges = (count) => {\n    document.querySelectorAll('.cart-count, [data-floating-cart-count]').forEach((badge) => {\n      badge.textContent = String(count);\n    });\n    toggle?.setAttribute('aria-label', `Open bag with ${count} items`);\n  };\n\n  const render = (cart) => {\n    updateBadges(cart.item_count || 0);\n    if (!items || !footer) return;\n\n    if (!cart.items?.length) {\n      items.innerHTML = '<div class=\"floating-cart__empty\"><div><p>Your bag is currently empty.</p><a href=\"/collections/chandeliers\">Explore lighting <span aria-hidden=\"true\">\u2192</span></a></div></div>';\n      footer.hidden = true;\n      return;\n    }\n\n    items.innerHTML = cart.items.map((item, index) => {\n      const imageSource = item.image || item.featured_image?.url || '';\n      const image = imageSource ? `${imageSource}${imageSource.includes('?') ? '&' : '?'}width=180` : '';\n      const variant = item.variant_title && item.variant_title !== 'Default Title'\n        ? `<p>${escapeMarkup(item.variant_title)}</p>`\n        : '';\n\n      return `<article class=\"floating-cart-item\">\n        <a class=\"floating-cart-item__media\" href=\"${escapeMarkup(item.url)}\" tabindex=\"-1\">${image ? `<img src=\"${escapeMarkup(image)}\" alt=\"${escapeMarkup(item.product_title)}\" width=\"90\" height=\"90\" loading=\"lazy\">` : ''}</a>\n        <div class=\"floating-cart-item__copy\">\n          <a class=\"floating-cart-item__title\" href=\"${escapeMarkup(item.url)}\">${escapeMarkup(item.product_title)}</a>\n          ${variant}\n          <p>${money(item.final_line_price, cart.currency)}</p>\n          <div class=\"floating-cart-item__quantity\" aria-label=\"Quantity for ${escapeMarkup(item.product_title)}\">\n            <button type=\"button\" data-cart-quantity data-cart-line=\"${index + 1}\" data-cart-next-quantity=\"${Math.max(0, item.quantity - 1)}\" aria-label=\"Decrease quantity\">\u2212</button>\n            <span>${item.quantity}</span>\n            <button type=\"button\" data-cart-quantity data-cart-line=\"${index + 1}\" data-cart-next-quantity=\"${item.quantity + 1}\" aria-label=\"Increase quantity\">+</button>\n          </div>\n          <button class=\"floating-cart-item__remove\" type=\"button\" data-cart-quantity data-cart-line=\"${index + 1}\" data-cart-next-quantity=\"0\">Remove</button>\n        </div>\n      </article>`;\n    }).join('');\n\n    if (subtotal) subtotal.textContent = money(cart.total_price, cart.currency);\n    footer.hidden = false;\n  };\n\n  const load = async () => {\n    const response = await fetch(`${rootPath}cart.js`, { headers: { Accept: 'application/json' } });\n    if (!response.ok) throw new Error('Unable to load bag');\n    const cart = await response.json();\n    render(cart);\n    return cart;\n  };\n\n  const open = async (trigger) => {\n    if (!drawer || !toggle) return;\n    lastTrigger = trigger || document.activeElement;\n    root.classList.add('is-open', 'is-loading');\n    document.body.classList.add('cart-drawer-open');\n    toggle.setAttribute('aria-expanded', 'true');\n    drawer.setAttribute('aria-hidden', 'false');\n    drawer.removeAttribute('inert');\n    try {\n      await load();\n      if (status) status.textContent = 'Bag updated.';\n    } catch (_) {\n      if (status) status.textContent = 'Bag is temporarily unavailable.';\n    } finally {\n      root.classList.remove('is-loading');\n      closeButton?.focus();\n    }\n  };\n\n  const close = () => {\n    if (!drawer || !toggle) return;\n    root.classList.remove('is-open', 'is-loading');\n    document.body.classList.remove('cart-drawer-open');\n    toggle.setAttribute('aria-expanded', 'false');\n    drawer.setAttribute('aria-hidden', 'true');\n    drawer.setAttribute('inert', '');\n    lastTrigger?.focus?.();\n  };\n\n  root.addEventListener('click', async (event) => {\n    const toggleTarget = event.target.closest('[data-floating-cart-toggle]');\n    const closeTarget = event.target.closest('[data-floating-cart-close], [data-floating-cart-backdrop]');\n    const quantityTarget = event.target.closest('[data-cart-quantity]');\n    if (!toggleTarget && !closeTarget && !quantityTarget) return;\n\n    event.preventDefault();\n    event.stopImmediatePropagation();\n\n    if (toggleTarget) {\n      await open(toggleTarget);\n      return;\n    }\n    if (closeTarget) {\n      close();\n      return;\n    }\n\n    const line = Number(quantityTarget.dataset.cartLine);\n    const quantity = Number(quantityTarget.dataset.cartNextQuantity);\n    if (!line || Number.isNaN(quantity)) return;\n    root.classList.add('is-loading');\n    try {\n      const response = await fetch(`${rootPath}cart/change.js`, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n        body: JSON.stringify({ line, quantity })\n      });\n      if (!response.ok) throw new Error('Unable to update bag');\n      render(await response.json());\n      if (status) status.textContent = quantity === 0 ? 'Item removed.' : 'Quantity updated.';\n    } catch (_) {\n      if (status) status.textContent = 'Bag could not be updated. Please try again.';\n    } finally {\n      root.classList.remove('is-loading');\n    }\n  }, true);\n\n  document.addEventListener('submit', async (event) => {\n    const form = event.target.closest('form.product-form');\n    if (!form) return;\n    const submitButton = event.submitter || form.querySelector('[type=\"submit\"]');\n    if (!submitButton || submitButton.disabled) return;\n\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    const originalText = submitButton.textContent;\n    submitButton.disabled = true;\n    submitButton.textContent = 'Adding\u2026';\n    try {\n      const response = await fetch(`${rootPath}cart/add.js`, {\n        method: 'POST',\n        headers: { Accept: 'application/json' },\n        body: new FormData(form)\n      });\n      if (!response.ok) throw new Error('Unable to add item');\n      await open(submitButton);\n    } catch (_) {\n      if (status) status.textContent = 'This piece could not be added. Please try again.';\n    } finally {\n      submitButton.disabled = false;\n      submitButton.textContent = originalText;\n    }\n  }, true);\n\n  document.addEventListener('keydown', (event) => {\n    if (!root.classList.contains('is-open')) return;\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      close();\n      return;\n    }\n    if (event.key !== 'Tab' || !drawer) return;\n    const focusable = [...drawer.querySelectorAll('a[href], button:not([disabled])')].filter((element) => !element.hidden);\n    if (!focusable.length) return;\n    const first = focusable[0];\n    const last = focusable[focusable.length - 1];\n    if (event.shiftKey && document.activeElement === first) {\n      event.preventDefault();\n      last.focus();\n    } else if (!event.shiftKey && document.activeElement === last) {\n      event.preventDefault();\n      first.focus();\n    }\n  }, true);\n\n  load().catch(() => {});\n})();\n"],
  "mappings": "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",
  "names": []
}
