{
  "version": 3,
  "sources": ["/cdn/shop/t/11/assets/giovento-cart-drawer.js?local_rev=20260818_0001"],
  "sourcesContent": ["(() => {\n  const pendingChanges = new Map();\n\n  const formatPrice = (cents) =>\n    `\u20AC${(cents / 100).toLocaleString('de-DE', {\n      minimumFractionDigits: 2,\n      maximumFractionDigits: 2,\n    })}`;\n\n  const formatTotal = (cents) => `${formatPrice(cents)} EUR`;\n\n  const syncControl = (quantityInput, quantity) => {\n    const control = quantityInput.closest('.gio-cart-flyout__quantity');\n    if (!control) return;\n    const min = Math.max(1, Number(quantityInput.min) || 1);\n    const max = quantityInput.max ? Number(quantityInput.max) : Infinity;\n    const minus = control.querySelector('[name=\"minus\"]');\n    const plus = control.querySelector('[name=\"plus\"]');\n\n    quantityInput.value = quantity;\n    if (minus) {\n      minus.disabled = quantity <= min;\n      minus.setAttribute('aria-disabled', String(quantity <= min));\n    }\n    if (plus) {\n      plus.disabled = quantity >= max;\n      plus.setAttribute('aria-disabled', String(quantity >= max));\n    }\n  };\n\n  const syncDrawer = (cart, line, input) => {\n    const item = cart.items[line - 1];\n    if (!item) {\n      window.location.reload();\n      return;\n    }\n\n    const row = input.closest('.cart-item');\n    syncControl(input, item.quantity);\n    const price = row?.querySelector('.cart-item__price-wrapper .price');\n    const total = document.querySelector('cart-drawer .totals__total-value');\n    if (price) price.textContent = formatPrice(item.final_line_price);\n    if (total) {\n      total.dataset.cartTotal = String(cart.total_price);\n      total.textContent = formatTotal(cart.total_price);\n    }\n  };\n\n  const previewDrawerChange = (input, quantity) => {\n    const row = input.closest('.cart-item');\n    const priceWrapper = row?.querySelector('.cart-item__price-wrapper');\n    const price = priceWrapper?.querySelector('.price');\n    const total = document.querySelector('cart-drawer .totals__total-value');\n    const previousQuantity = Math.max(1, Number(input.value) || 1);\n    const unitPrice = Number(priceWrapper?.dataset.unitPrice || 0);\n    const currentTotal = Number(total?.dataset.cartTotal || 0);\n\n    syncControl(input, quantity);\n    if (price && unitPrice) price.textContent = formatPrice(unitPrice * quantity);\n    if (total && unitPrice) {\n      const nextTotal = currentTotal + unitPrice * (quantity - previousQuantity);\n      total.dataset.cartTotal = String(nextTotal);\n      total.textContent = formatTotal(nextTotal);\n    }\n  };\n\n  const sendChange = async (line, quantity) => {\n    const response = await fetch(window.routes?.cart_change_url || '/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('Cart drawer update failed');\n    return response.json();\n  };\n\n  const queueChange = (line, quantity, input) => {\n    const current = pendingChanges.get(line);\n    if (current?.timer) window.clearTimeout(current.timer);\n    const version = (current?.version || 0) + 1;\n\n    previewDrawerChange(input, quantity);\n    const timer = window.setTimeout(async () => {\n      try {\n        const cart = await sendChange(line, quantity);\n        if (pendingChanges.get(line)?.version === version) {\n          pendingChanges.delete(line);\n          syncDrawer(cart, line, input);\n        }\n    } catch (error) {\n      console.error(error);\n      if (pendingChanges.get(line)?.version === version) {\n        pendingChanges.delete(line);\n        fetch('/cart.js', { headers: { Accept: 'application/json' } })\n          .then((response) => response.json())\n          .then((cart) => syncDrawer(cart, line, input))\n          .catch((syncError) => console.error(syncError));\n      }\n      }\n    }, 120);\n    pendingChanges.set(line, { timer, version });\n  };\n\n  const onQuantityButtonClick = (event) => {\n    const button = event.target.closest?.('cart-drawer .gio-cart-flyout__quantity-button');\n    if (!button) return;\n\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    if (button.disabled) return;\n    const control = button.closest('.gio-cart-flyout__quantity');\n    const input = control?.querySelector('.gio-cart-flyout__quantity-input');\n    if (!input) return;\n\n    const current = Math.max(1, Number(input.value) || 1);\n    const max = input.max ? Number(input.max) : Infinity;\n    const next = button.name === 'plus' ? Math.min(max, current + 1) : Math.max(1, current - 1);\n    if (next === current) return;\n    queueChange(Number(input.dataset.index), next, input);\n  };\n\n  const initialiseControls = () => {\n    document.querySelectorAll('cart-drawer .gio-cart-flyout__quantity-input').forEach((input) => {\n      syncControl(input, Math.max(1, Number(input.value) || 1));\n    });\n  };\n\n  const observeDrawerUpdates = () => {\n    const drawerItems = document.querySelector('cart-drawer-items');\n    if (!drawerItems || drawerItems.dataset.gioDrawerObserved === 'true') return;\n    drawerItems.dataset.gioDrawerObserved = 'true';\n\n    let queued = false;\n    const refreshControls = () => {\n      if (queued) return;\n      queued = true;\n      window.requestAnimationFrame(() => {\n        queued = false;\n        initialiseControls();\n      });\n    };\n\n    new MutationObserver(refreshControls).observe(drawerItems, { childList: true, subtree: true });\n  };\n\n  const initialise = () => {\n    initialiseControls();\n    observeDrawerUpdates();\n    // The drawer markup is replaced by Shopify after cart updates. One capture\n    // listener on the document keeps the custom +/- controls live at all times.\n    document.addEventListener('click', onQuantityButtonClick, true);\n    // Shopify replaces the complete flyout after adding an item. Re-bind the\n    // quantity controls to the freshly rendered buttons immediately afterward.\n    window.addEventListener('gio:cart-drawer-rendered', initialiseControls);\n  };\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initialise);\n  else initialise();\n})();\n"],
  "mappings": "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",
  "names": []
}
