{
  "version": 3,
  "sources": ["/cdn/shop/t/45/assets/furlo-cart-v2.js?furlo_rev=20260915-1"],
  "sourcesContent": ["(() => {\n  const rootPath = () => (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) || '/';\n  const sectionIds = ['cart-drawer', 'cart-icon-bubble'];\n  const guideVariantId = 58356163871051;\n  const colorVariantIds = {\n    1: { 0: 58366962368843, 1: 58366962467147 },\n    2: { 0: 58366962401611, 1: 58366962565451, 2: 58366962499915 },\n    3: { 0: 58366962434379, 1: 58366962630987, 2: 58366962598219, 3: 58366962532683 }\n  };\n  const guideOfferEndAt = Date.parse('2026-10-31T22:59:00Z');\n  let purchasePending = false;\n\n  const guideOfferActive = () => Date.now() <= guideOfferEndAt;\n  const isGuideItem = item => Number(item && item.variant_id) === guideVariantId;\n  const isFurloItem = item => !isGuideItem(item) && String((item && (item.product_handle || item.handle)) || '').includes('furlo-gourde-bol-promenade');\n  const normalizeProperties = raw => {\n    const output = {};\n    if (Array.isArray(raw)) {\n      raw.forEach(entry => {\n        if (Array.isArray(entry) && entry.length >= 2) output[String(entry[0])] = String(entry[1]);\n        else if (entry && typeof entry === 'object') {\n          const key = entry.first ?? entry.key ?? entry.name;\n          const value = entry.last ?? entry.value;\n          if (key != null && value != null) output[String(key)] = String(value);\n        }\n      });\n      return output;\n    }\n    if (raw && typeof raw === 'object') {\n      Object.entries(raw).forEach(([key, value]) => {\n        if (value != null) output[String(key)] = String(value);\n      });\n    }\n    return output;\n  };\n\n  async function readCartState() {\n    const response = await fetch(rootPath() + 'cart.js', {\n      credentials: 'same-origin',\n      cache: 'no-store',\n      headers: { Accept: 'application/json', 'X-Furlo-Cart-V2': '1' }\n    });\n    if (!response.ok) throw new Error('Lecture du panier impossible.');\n    return response.json();\n  }\n\n  async function reconcileGuide(fallbackState) {\n    const cart = await readCartState();\n    const items = Array.isArray(cart.items) ? cart.items : [];\n    const hasFurlo = items.some(isFurloItem);\n    const guides = items.filter(isGuideItem);\n    const guideDeclined = String(cart.attributes?._furlo_guide_declined || '') === 'true';\n    let path = '';\n    let payload = null;\n\n    if ((!guideOfferActive() || !hasFurlo || guideDeclined) && guides.length > 0) {\n      path = 'cart/update.js';\n      payload = { updates: Object.fromEntries(guides.map(guide => [guide.key, 0])) };\n    } else if (guideOfferActive() && hasFurlo && !guideDeclined && guides.length === 0) {\n      path = 'cart/add.js';\n      payload = { items: [{ id: guideVariantId, quantity: 1, properties: { '_Cadeau FURLO': 'Guide digital \u00B7 valeur 17,90 \u20AC' } }] };\n    } else if (guides.length > 1) {\n      path = 'cart/update.js';\n      payload = { updates: Object.fromEntries(guides.map((guide, index) => [guide.key, index === 0 ? 1 : 0])) };\n    } else if (guides.length === 1 && Number(guides[0].quantity) !== 1) {\n      path = 'cart/change.js';\n      payload = { id: guides[0].key, quantity: 1 };\n    }\n\n    if (!path) return fallbackState || cart;\n    const response = await fetch(rootPath() + path, {\n      method: 'POST',\n      credentials: 'same-origin',\n      headers: { 'Content-Type': 'application/json', Accept: 'application/json', 'X-Furlo-Cart-V2': '1' },\n      body: JSON.stringify({ ...payload, sections: sectionIds, sections_url: window.location.pathname })\n    });\n    const state = await response.json();\n    if (!response.ok) throw new Error(state.description || state.message || 'Le cadeau FURLO n\u2019a pas pu \u00EAtre mis \u00E0 jour.');\n    return state;\n  }\n\n  class FurloCartDrawer extends HTMLElement {\n    constructor() {\n      super();\n      this.activeElement = null;\n      this.requestId = 0;\n      this.boundClick = this.onClick.bind(this);\n      this.boundSubmit = this.onSubmit.bind(this);\n      this.boundKeydown = this.onKeydown.bind(this);\n      this.boundDocumentClick = this.onDocumentClick.bind(this);\n    }\n\n    connectedCallback() {\n      if (this.dataset.ready === 'true') return;\n      this.activeElement = this.activeElement || null;\n      this.requestId = Number(this.requestId || 0);\n      this.boundClick = this.boundClick || this.onClick.bind(this);\n      this.boundSubmit = this.boundSubmit || this.onSubmit.bind(this);\n      this.boundKeydown = this.boundKeydown || this.onKeydown.bind(this);\n      this.boundDocumentClick = this.boundDocumentClick || this.onDocumentClick.bind(this);\n      this.dataset.ready = 'true';\n      this.addEventListener('click', this.boundClick);\n      this.addEventListener('submit', this.boundSubmit);\n      this.addEventListener('keydown', this.boundKeydown);\n      document.addEventListener('click', this.boundDocumentClick, true);\n      this.bindCartTrigger();\n      this.updateDeliveryEstimate();\n      this.openRequestedDrawer();\n    }\n\n    bindCartTrigger() {\n      const trigger = document.querySelector('#cart-icon-bubble');\n      if (!trigger || trigger.dataset.furloCartBound === 'true') return;\n      trigger.dataset.furloCartBound = 'true';\n      trigger.setAttribute('role', 'button');\n      trigger.setAttribute('aria-haspopup', 'dialog');\n      trigger.addEventListener('click', event => {\n        event.preventDefault();\n        this.open(trigger);\n      });\n      trigger.addEventListener('keydown', event => {\n        if (event.code !== 'Space') return;\n        event.preventDefault();\n        this.open(trigger);\n      });\n    }\n\n    onDocumentClick(event) {\n      const link = event.target.closest('a[href]');\n      if (!link || link.id === 'cart-icon-bubble') return;\n      const cartUrl = new URL(rootPath() + 'cart', window.location.origin);\n      const linkUrl = new URL(link.href, window.location.origin);\n      if (linkUrl.origin !== window.location.origin || linkUrl.pathname.replace(/\\/+$/, '') !== cartUrl.pathname.replace(/\\/+$/, '')) return;\n      event.preventDefault();\n      this.open(link);\n    }\n\n    openRequestedDrawer() {\n      const url = new URL(window.location.href);\n      if (url.searchParams.get('open_cart') !== '1') return;\n      url.searchParams.delete('open_cart');\n      window.history.replaceState({}, document.title, url.pathname + url.search + url.hash);\n      window.requestAnimationFrame(() => this.open(document.querySelector('#cart-icon-bubble')));\n    }\n\n    setActiveElement(element) {\n      this.activeElement = element;\n    }\n\n    open(triggeredBy) {\n      if (triggeredBy) this.setActiveElement(triggeredBy);\n      this.classList.add('active');\n      document.body.classList.add('overflow-hidden');\n      document.body.classList.add('furlo-cart-open');\n      document.dispatchEvent(new CustomEvent('furlo:cart-state', { detail: { open: true } }));\n      const focusCloseButton = () => this.querySelector('.furlo-cart-v2__icon-button[data-furlo-close]')?.focus({ preventScroll: true });\n      requestAnimationFrame(focusCloseButton);\n      window.setTimeout(focusCloseButton, 80);\n    }\n\n    close() {\n      this.classList.remove('active');\n      document.body.classList.remove('overflow-hidden');\n      document.body.classList.remove('furlo-cart-open');\n      document.dispatchEvent(new CustomEvent('furlo:cart-state', { detail: { open: false } }));\n      this.activeElement?.focus?.({ preventScroll: true });\n    }\n\n    getSectionsToRender() {\n      return [\n        { id: 'cart-drawer', selector: '#CartDrawer' },\n        { id: 'cart-icon-bubble', selector: '.shopify-section' }\n      ];\n    }\n\n    getSectionInnerHTML(html, selector = '.shopify-section') {\n      const documentFragment = new DOMParser().parseFromString(html || '', 'text/html');\n      return documentFragment.querySelector(selector)?.innerHTML || '';\n    }\n\n    getItemCount(state, bubbleHtml) {\n      const hasDirectCount = state && state.item_count !== undefined && state.item_count !== null;\n      const directCount = hasDirectCount ? Number(state.item_count) : NaN;\n      if (Number.isInteger(directCount) && directCount >= 0) return directCount;\n      if (!bubbleHtml) return null;\n\n      const parsed = new DOMParser().parseFromString(bubbleHtml, 'text/html');\n      const nextBubble = parsed.querySelector('#cart-icon-bubble');\n      if (!nextBubble) return null;\n\n      const countBubble = nextBubble.querySelector('.cart-count-bubble');\n      if (!countBubble) return 0;\n\n      const visibleCount = Number(countBubble.querySelector('[aria-hidden=\"true\"]')?.textContent?.trim());\n      if (Number.isFinite(visibleCount) && visibleCount >= 0) return visibleCount;\n\n      const accessibleCount = countBubble.querySelector('.visually-hidden')?.textContent?.match(/\\d+/);\n      return accessibleCount ? Number(accessibleCount[0]) : null;\n    }\n\n    getPackCount(state, drawerHtml) {\n      const hasCompleteCartState = state && state.item_count !== undefined && Array.isArray(state.items);\n      if (hasCompleteCartState) {\n        return state.items.reduce((total, item) => {\n          if (!isFurloItem(item)) return total;\n          return total + Math.max(0, Number(item.quantity) || 0);\n        }, 0);\n      }\n\n      if (drawerHtml) {\n        const parsed = new DOMParser().parseFromString(drawerHtml, 'text/html');\n        const renderedCount = Number(parsed.querySelector('#CartDrawer')?.dataset.furloPackCount);\n        if (Number.isInteger(renderedCount) && renderedCount >= 0) return renderedCount;\n      }\n\n      const currentCount = Number(this.querySelector('#CartDrawer')?.dataset.furloPackCount);\n      return Number.isInteger(currentCount) && currentCount >= 0 ? currentCount : null;\n    }\n\n    syncHeaderCartCount(itemCount) {\n      if (!Number.isInteger(itemCount) || itemCount < 0) return;\n      const bubble = document.querySelector('#cart-icon-bubble');\n      if (!bubble) return;\n\n      bubble.dataset.cartItemCount = String(itemCount);\n      let countBubble = bubble.querySelector('.cart-count-bubble');\n      if (itemCount === 0) {\n        countBubble?.remove();\n      } else {\n        if (!countBubble) {\n          countBubble = document.createElement('div');\n          countBubble.className = 'cart-count-bubble';\n          bubble.appendChild(countBubble);\n        }\n\n        let visibleCount = countBubble.querySelector('[aria-hidden=\"true\"]');\n        if (itemCount < 100) {\n          if (!visibleCount) {\n            visibleCount = document.createElement('span');\n            visibleCount.setAttribute('aria-hidden', 'true');\n            countBubble.prepend(visibleCount);\n          }\n          visibleCount.textContent = String(itemCount);\n        } else {\n          visibleCount?.remove();\n        }\n\n        let accessibleCount = countBubble.querySelector('.visually-hidden');\n        if (!accessibleCount) {\n          accessibleCount = document.createElement('span');\n          accessibleCount.className = 'visually-hidden';\n          countBubble.appendChild(accessibleCount);\n        }\n        accessibleCount.textContent = `${itemCount} ${itemCount === 1 ? 'article' : 'articles'}`;\n      }\n\n      document.dispatchEvent(new CustomEvent('furlo:cart-count', { detail: { itemCount } }));\n    }\n\n    async refreshHeaderCartCount() {\n      try {\n        const response = await fetch(rootPath() + 'cart.js', {\n          credentials: 'same-origin',\n          headers: { Accept: 'application/json', 'X-Furlo-Cart-V2': '1' }\n        });\n        if (!response.ok) return;\n        const state = await response.json();\n        const packCount = this.getPackCount(state);\n        if (packCount !== null) this.syncHeaderCartCount(packCount);\n      } catch (error) {\n        // Le badge rendu c\u00F4t\u00E9 serveur reste la source de repli si Shopify est indisponible.\n      }\n    }\n\n    renderContents(state) {\n      const drawerHtml = state.sections && state.sections['cart-drawer'];\n      if (drawerHtml) {\n        const parsed = new DOMParser().parseFromString(drawerHtml, 'text/html');\n        const nextRoot = parsed.querySelector('#CartDrawer');\n        const currentRoot = this.querySelector('#CartDrawer');\n        if (nextRoot && currentRoot) currentRoot.replaceWith(nextRoot);\n      }\n      const bubbleHtml = state.sections && state.sections['cart-icon-bubble'];\n      const bubble = document.querySelector('#cart-icon-bubble');\n      const itemCount = this.getItemCount(state, bubbleHtml);\n      const packCount = this.getPackCount(state, drawerHtml);\n      if (bubbleHtml && bubble) {\n        const parsed = new DOMParser().parseFromString(bubbleHtml, 'text/html');\n        const next = parsed.querySelector('#cart-icon-bubble');\n        if (next) bubble.innerHTML = next.innerHTML;\n      }\n      if (packCount !== null) this.syncHeaderCartCount(packCount);\n      if (itemCount !== null) this.classList.toggle('is-empty', itemCount === 0);\n      this.updateDeliveryEstimate();\n      this.open();\n    }\n\n    updateDeliveryEstimate() {\n      const nodes = this.querySelectorAll('[data-furlo-delivery-estimate]');\n      if (!nodes.length || typeof Intl === 'undefined') return;\n\n      const dateParts = new Intl.DateTimeFormat('en-CA', {\n        timeZone: 'Europe/Paris',\n        year: 'numeric',\n        month: '2-digit',\n        day: '2-digit'\n      }).formatToParts(new Date());\n      const values = Object.fromEntries(dateParts.map(part => [part.type, part.value]));\n      const baseDate = new Date(Date.UTC(Number(values.year), Number(values.month) - 1, Number(values.day), 12));\n      const monthFormatter = new Intl.DateTimeFormat('fr-FR', { month: 'long', timeZone: 'UTC' });\n\n      nodes.forEach(node => {\n        const minimumDays = Math.max(1, Number(node.dataset.minDays || 6));\n        const maximumDays = Math.max(minimumDays, Number(node.dataset.maxDays || 11));\n        const startDate = new Date(baseDate);\n        const endDate = new Date(baseDate);\n        startDate.setUTCDate(startDate.getUTCDate() + minimumDays);\n        endDate.setUTCDate(endDate.getUTCDate() + maximumDays);\n\n        const startDay = startDate.getUTCDate();\n        const endDay = endDate.getUTCDate();\n        const startMonth = monthFormatter.format(startDate);\n        const endMonth = monthFormatter.format(endDate);\n        const sameMonth = startDate.getUTCMonth() === endDate.getUTCMonth() && startDate.getUTCFullYear() === endDate.getUTCFullYear();\n        const dateRange = sameMonth\n          ? `du ${startDay} au ${endDay} ${endMonth}`\n          : `du ${startDay} ${startMonth} au ${endDay} ${endMonth}`;\n\n        node.textContent = `Livraison suivie estim\u00E9e ${dateRange}`;\n      });\n    }\n\n    async refreshAndOpen() {\n      try {\n        const requestOptions = {\n          credentials: 'same-origin',\n          headers: { Accept: 'application/json' }\n        };\n        const [sectionsResponse, cartResponse] = await Promise.all([\n          fetch(rootPath() + '?sections=' + sectionIds.join(','), requestOptions),\n          fetch(rootPath() + 'cart.js', requestOptions)\n        ]);\n        if (!sectionsResponse.ok || !cartResponse.ok) throw new Error('Le panier n\u2019a pas pu \u00EAtre synchronis\u00E9.');\n        const [sections, cartState] = await Promise.all([sectionsResponse.json(), cartResponse.json()]);\n        if (!sections['cart-drawer']) throw new Error('Le panier n\u2019a pas pu \u00EAtre affich\u00E9.');\n        this.renderContents({ sections, item_count: Number(cartState.item_count || 0), items: cartState.items || [] });\n        return true;\n      } catch (error) {\n        this.open();\n        return false;\n      }\n    }\n\n    setAdding(adding) {\n      if (adding) this.dataset.initialAdd = 'true';\n      else delete this.dataset.initialAdd;\n      this.querySelectorAll('.furlo-cart-v2__empty, .furlo-cart-v2__scroll, .furlo-cart-v2__footer').forEach(node => {\n        node.inert = adding;\n        if (adding) node.setAttribute('aria-busy', 'true');\n        else node.removeAttribute('aria-busy');\n      });\n    }\n\n    setBusy(control, busy) {\n      const panel = this.querySelector('.furlo-cart-v2__panel');\n      if (panel) panel.dataset.busy = String(busy);\n      if (control) {\n        control.setAttribute('aria-busy', String(busy));\n        if ('disabled' in control) control.disabled = busy;\n      }\n    }\n\n    showMessage(message, isError = false) {\n      const node = this.querySelector('[data-furlo-message]');\n      if (!node) return;\n      node.textContent = message;\n      node.classList.toggle('is-error', isError);\n    }\n\n    async postCart(path, payload) {\n      const response = await fetch(rootPath() + path, {\n        method: 'POST',\n        credentials: 'same-origin',\n        headers: {\n          'Content-Type': 'application/json',\n          Accept: 'application/json',\n          'X-Furlo-Cart-V2': '1'\n        },\n        body: JSON.stringify({\n          ...payload,\n          sections: sectionIds,\n          sections_url: window.location.pathname\n        })\n      });\n      const state = await response.json();\n      if (!response.ok) throw new Error(state.description || state.message || 'La mise \u00E0 jour a \u00E9chou\u00E9.');\n      return reconcileGuide(state);\n    }\n\n    async cartRequest(path, payload, control, successMessage = '', clearDiscountWhenEmpty = false) {\n      const id = ++this.requestId;\n      this.setBusy(control, true);\n      this.showMessage('');\n      try {\n        let state = await this.postCart(path, payload);\n        if (clearDiscountWhenEmpty && Number(state.item_count || 0) === 0) {\n          state = await this.postCart('cart/update.js', { discount: '' });\n        }\n        if (id !== this.requestId) return;\n        this.renderContents(state);\n        if (payload.discount && Array.isArray(state.discount_codes)) {\n          const requestedCode = String(payload.discount).toLowerCase();\n          const appliedCode = state.discount_codes.find(entry => String(entry.code || '').toLowerCase() === requestedCode);\n          if (!appliedCode || !appliedCode.applicable) {\n            requestAnimationFrame(() => this.showMessage('Ce code promo n\u2019est pas valide.', true));\n            return;\n          }\n        }\n        if (successMessage) requestAnimationFrame(() => this.showMessage(successMessage));\n      } catch (error) {\n        if (id === this.requestId) this.showMessage(error.message || 'Une erreur est survenue. R\u00E9essayez.', true);\n      } finally {\n        if (id === this.requestId) this.setBusy(control, false);\n      }\n    }\n\n    toggleColorEditor(item, open) {\n      if (!item) return;\n      const trigger = item.querySelector('[data-furlo-edit-colors]');\n      const editor = item.querySelector('[data-furlo-color-editor]');\n      if (!editor) return;\n      this.resetColorEditor(item);\n      item.dataset.furloEditorOpen = String(open);\n      editor.hidden = !open;\n      editor.setAttribute('aria-hidden', String(!open));\n      trigger?.setAttribute('aria-expanded', String(open));\n      if (open) editor.querySelector('.furlo-cart-v2__color-button.is-active')?.focus({ preventScroll: true });\n      else trigger?.focus({ preventScroll: true });\n    }\n\n    resetColorEditor(item) {\n      let properties = {};\n      try {\n        properties = normalizeProperties(JSON.parse(item.dataset.furloProperties || '{}'));\n      } catch (_error) {\n        properties = {};\n      }\n\n      item.querySelectorAll('[data-furlo-color-choice]').forEach(choice => {\n        const index = Math.max(1, Number(choice.dataset.index || 1));\n        const savedColor = String(properties[`Gourde ${index}`] || (index % 2 === 0 ? 'Rose poudr\u00E9' : 'Bleu ciel'));\n        const targetColor = /rose/i.test(savedColor) ? 'Rose poudr\u00E9' : 'Bleu ciel';\n        const savedButton = Array.from(choice.querySelectorAll('button[data-color]'))\n          .find(button => button.dataset.color === targetColor);\n        if (savedButton) this.chooseColor(savedButton);\n      });\n    }\n\n    chooseColor(button) {\n      const choice = button.closest('[data-furlo-color-choice]');\n      if (!choice) return;\n      choice.querySelectorAll('button[data-color]').forEach(candidate => {\n        const active = candidate === button;\n        candidate.classList.toggle('is-active', active);\n        candidate.setAttribute('aria-pressed', String(active));\n      });\n    }\n\n    async saveColors(item, control) {\n      if (!item) return;\n      let properties = {};\n      try {\n        properties = normalizeProperties(JSON.parse(item.dataset.furloProperties || '{}'));\n      } catch (_error) {\n        properties = {};\n      }\n      item.querySelectorAll('[data-furlo-color-choice]').forEach(choice => {\n        const index = Number(choice.dataset.index || 0);\n        const active = choice.querySelector('button[data-color].is-active');\n        if (index && active) properties[`Gourde ${index}`] = active.dataset.color;\n      });\n      const packSize = Math.max(1, Math.min(3, Number(item.dataset.furloBottlesPerPack || 1)));\n      const pinkCount = Array.from({ length: packSize }, (_, index) => properties[`Gourde ${index + 1}`])\n        .filter(color => /rose/i.test(String(color || ''))).length;\n      const targetVariantId = Number(colorVariantIds[packSize]?.[pinkCount] || item.dataset.variantId);\n      const currentVariantId = Number(item.dataset.variantId || 0);\n      const quantity = Math.max(1, Number(item.dataset.quantity || 1));\n\n      if (!targetVariantId || targetVariantId === currentVariantId) {\n        this.cartRequest('cart/change.js', {\n          id: item.dataset.lineKey,\n          quantity,\n          properties\n        }, control, 'Couleurs mises \u00E0 jour.');\n        return;\n      }\n\n      const requestId = ++this.requestId;\n      const originalProperties = (() => {\n        try { return normalizeProperties(JSON.parse(item.dataset.furloProperties || '{}')); }\n        catch (_error) { return {}; }\n      })();\n      this.setBusy(control, true);\n      this.showMessage('');\n      let removed = false;\n      try {\n        await this.postCart('cart/change.js', { id: item.dataset.lineKey, quantity: 0 });\n        removed = true;\n        const state = await this.postCart('cart/add.js', {\n          items: [{ id: targetVariantId, quantity, properties }]\n        });\n        if (requestId !== this.requestId) return;\n        this.renderContents(state);\n        requestAnimationFrame(() => this.showMessage('Couleurs mises \u00E0 jour.'));\n      } catch (error) {\n        if (removed && currentVariantId) {\n          try {\n            const restoredState = await this.postCart('cart/add.js', {\n              items: [{ id: currentVariantId, quantity, properties: originalProperties }]\n            });\n            if (requestId === this.requestId) this.renderContents(restoredState);\n          } catch (_restoreError) {\n            await this.refreshAndOpen();\n          }\n        }\n        if (requestId === this.requestId) this.showMessage(error.message || 'Impossible de modifier les couleurs. R\u00E9essayez.', true);\n      } finally {\n        if (requestId === this.requestId) this.setBusy(control, false);\n      }\n    }\n\n    onClick(event) {\n      const continueLink = event.target.closest('[data-furlo-continue]');\n      if (continueLink) {\n        this.close();\n        return;\n      }\n\n      const close = event.target.closest('[data-furlo-close]');\n      if (close) {\n        event.preventDefault();\n        this.close();\n        return;\n      }\n\n      const guideRemove = event.target.closest('[data-furlo-guide-remove]');\n      if (guideRemove) {\n        event.preventDefault();\n        this.cartRequest('cart/update.js', { attributes: { _furlo_guide_declined: 'true' } }, guideRemove);\n        return;\n      }\n\n      const guideAdd = event.target.closest('[data-furlo-guide-add]');\n      if (guideAdd) {\n        event.preventDefault();\n        this.cartRequest('cart/update.js', { attributes: { _furlo_guide_declined: '' } }, guideAdd);\n        return;\n      }\n\n      const remove = event.target.closest('[data-furlo-remove]');\n      if (remove) {\n        event.preventDefault();\n        const item = remove.closest('[data-line-key]');\n        if (item) this.cartRequest('cart/change.js', { id: item.dataset.lineKey, quantity: 0 }, remove, '', true);\n        return;\n      }\n\n      const editColors = event.target.closest('[data-furlo-edit-colors]');\n      if (editColors) {\n        event.preventDefault();\n        event.stopPropagation();\n        const item = editColors.closest('.furlo-cart-v2__product[data-line-key]');\n        this.toggleColorEditor(item, editColors.getAttribute('aria-expanded') !== 'true');\n        return;\n      }\n\n      const colorButton = event.target.closest('[data-furlo-color-editor] button[data-color]');\n      if (colorButton) {\n        event.preventDefault();\n        event.stopPropagation();\n        this.chooseColor(colorButton);\n        return;\n      }\n\n      const cancelColors = event.target.closest('[data-furlo-cancel-colors]');\n      if (cancelColors) {\n        event.preventDefault();\n        event.stopPropagation();\n        this.toggleColorEditor(cancelColors.closest('.furlo-cart-v2__product[data-line-key]'), false);\n        return;\n      }\n\n      const saveColors = event.target.closest('[data-furlo-save-colors]');\n      if (saveColors) {\n        event.preventDefault();\n        event.stopPropagation();\n        const item = saveColors.closest('.furlo-cart-v2__product[data-line-key]');\n        this.saveColors(item, saveColors);\n        return;\n      }\n\n      const upgrade = event.target.closest('[data-furlo-upgrade]');\n      if (upgrade) {\n        event.preventDefault();\n        const item = this.querySelector('.furlo-cart-v2__product[data-line-key]');\n        const selectedColor = this.querySelector('[data-furlo-upsell-option]:checked');\n        if (!item || !selectedColor) return;\n        const targetVariant = String(selectedColor.value);\n        const sourceQuantity = Number(item.dataset.quantity || 1);\n        const existingTarget = this.querySelector(`[data-variant-id=\"${targetVariant}\"]`);\n        const targetQuantity = sourceQuantity + Number(existingTarget?.dataset.quantity || 0);\n        const updates = { [item.dataset.lineKey]: 0, [targetVariant]: targetQuantity };\n        this.cartRequest('cart/update.js', { updates }, upgrade);\n      }\n    }\n\n    onSubmit(event) {\n      const form = event.target.closest('[data-furlo-discount-form]');\n      if (!form) return;\n      event.preventDefault();\n      const code = String(new FormData(form).get('discount') || '').trim();\n      if (!code) {\n        this.showMessage('Saisissez un code promo.', true);\n        return;\n      }\n      const button = form.querySelector('button[type=\"submit\"]');\n      this.cartRequest('cart/update.js', { discount: code }, button);\n    }\n\n    onKeydown(event) {\n      if (event.key === 'Escape') {\n        this.close();\n        return;\n      }\n      if (event.key !== 'Tab' || !this.classList.contains('active')) return;\n      const focusable = [...this.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),summary,[tabindex]:not([tabindex=\"-1\"])')].filter(node => node.offsetParent !== null);\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    }\n  }\n\n  const existingCartDrawer = customElements.get('cart-drawer');\n  if (existingCartDrawer) {\n    Object.getOwnPropertyNames(FurloCartDrawer.prototype).forEach(name => {\n      if (name === 'constructor') return;\n      Object.defineProperty(existingCartDrawer.prototype, name, Object.getOwnPropertyDescriptor(FurloCartDrawer.prototype, name));\n    });\n    document.querySelectorAll('cart-drawer').forEach(drawer => drawer.connectedCallback());\n  } else {\n    customElements.define('cart-drawer', FurloCartDrawer);\n  }\n\n  if (!window.__furloCartV2FetchBound) {\n    window.__furloCartV2FetchBound = true;\n    const nativeFetch = window.fetch.bind(window);\n    window.fetch = (...args) => nativeFetch(...args).then(response => {\n      const resource = args[0];\n      const url = typeof resource === 'string' ? resource : resource && resource.url;\n      const requestHeaders = new Headers((args[1] && args[1].headers) || {});\n      const isV2Request = requestHeaders.get('X-Furlo-Cart-V2') === '1';\n      const cartMutation = String(url || '').match(/\\/cart\\/(add|change|update|clear)(?:\\.js)?(?:\\?|$)/);\n      if (!isV2Request && response.ok && cartMutation) {\n        response.clone().json().then(async state => {\n          const drawer = document.querySelector('cart-drawer');\n          if (!drawer) return;\n          const finalState = await reconcileGuide(state);\n          if (cartMutation[1] === 'add') {\n            if (finalState.sections && finalState.sections['cart-drawer']) drawer.renderContents(finalState);\n            else drawer.refreshAndOpen();\n          } else {\n            const packCount = drawer.getPackCount(finalState, finalState.sections && finalState.sections['cart-drawer']);\n            if (packCount !== null) drawer.syncHeaderCartCount(packCount);\n            else drawer.refreshHeaderCartCount();\n          }\n        }).catch(() => {});\n      }\n      return response;\n    });\n  }\n\n  if (!window.__furloCartV2SubmitBound) {\n    window.__furloCartV2SubmitBound = true;\n    document.addEventListener('submit', event => {\n      const form = event.target;\n      if (!(form instanceof HTMLFormElement) || !/\\/cart\\/add(?:$|\\?)/.test(form.action)) return;\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      const button = form.querySelector('button[type=\"submit\"]');\n      if (purchasePending || button?.disabled) return;\n      purchasePending = true;\n      const drawer = document.querySelector('cart-drawer');\n      const body = new FormData(form);\n      body.set('sections', sectionIds.join(','));\n      body.set('sections_url', window.location.pathname);\n      let added = false;\n      let navigating = false;\n      drawer?.setAdding?.(true);\n      drawer?.showMessage?.('');\n      drawer?.open?.(button);\n      drawer?.setBusy?.(button, true);\n      if (button) {\n        button.disabled = true;\n        button.setAttribute('aria-busy', 'true');\n      }\n      window.fetch(rootPath() + 'cart/add.js', {\n        method: 'POST',\n        credentials: 'same-origin',\n        headers: { Accept: 'application/json', 'X-Furlo-Cart-V2': '1' },\n        body\n      }).then(async response => {\n        const state = await response.json().catch(() => ({}));\n        if (!response.ok) throw new Error(state.description || state.message || 'L\u2019ajout au panier a \u00E9chou\u00E9.');\n        added = true;\n        let finalState = state;\n        let guideMessage = '';\n        try {\n          finalState = await reconcileGuide(state);\n        } catch (error) {\n          guideMessage = 'Votre pack est ajout\u00E9. Actualisez le panier pour v\u00E9rifier le cadeau offert.';\n        }\n        if (!drawer) {\n          navigating = true;\n          window.location.assign(rootPath() + 'cart');\n          return;\n        }\n        if (finalState.sections?.['cart-drawer']) drawer.renderContents(finalState);\n        else if (!(await drawer.refreshAndOpen())) throw new Error('Le panier n\u2019a pas pu \u00EAtre affich\u00E9.');\n        if (guideMessage) drawer.showMessage(guideMessage, true);\n      }).catch(error => {\n        if (added) {\n          navigating = true;\n          window.location.assign(rootPath() + 'cart');\n        } else {\n          drawer?.showMessage?.(error.message || 'L\u2019ajout au panier a \u00E9chou\u00E9. R\u00E9essayez.', true);\n        }\n      }).finally(() => {\n        if (navigating) return;\n        purchasePending = false;\n        drawer?.setAdding?.(false);\n        drawer?.setBusy?.(button, false);\n        if (button) {\n          button.disabled = false;\n          button.removeAttribute('aria-busy');\n        }\n      });\n    }, true);\n  }\n\n  window.addEventListener('pageshow', () => {\n    document.querySelector('cart-drawer')?.refreshHeaderCartCount?.();\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
