{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/cart-drawer.js?verify=20260804T1819"],
  "sourcesContent": ["class CartDrawer extends HTMLElement {\n  constructor() {\n    super();\n\n    this.addEventListener('keyup', (evt) => evt.code === 'Escape' && this.close());\n    this.querySelector('#CartDrawer-Overlay').addEventListener('click', this.close.bind(this));\n    this.setHeaderCartIconAccessibility();\n    this.setQuickAddAccessibility();\n  }\n\n  setHeaderCartIconAccessibility() {\n    const milauraCartLinks = document.querySelectorAll(\n      '.nav-cart-icon, .nav-mobile-icon[aria-label=\"Panier\"], .milaura-dock a[href$=\"/cart\"]'\n    );\n    const cartLinks = milauraCartLinks.length\n      ? Array.from(milauraCartLinks)\n      : [document.querySelector('#cart-icon-bubble')].filter(Boolean);\n\n    cartLinks.forEach((cartLink) => {\n      cartLink.setAttribute('role', 'button');\n      cartLink.setAttribute('aria-haspopup', 'dialog');\n      cartLink.addEventListener('click', (event) => {\n        event.preventDefault();\n        this.open(cartLink);\n      });\n      cartLink.addEventListener('keydown', (event) => {\n        if (event.code.toUpperCase() === 'SPACE') {\n          event.preventDefault();\n          this.open(cartLink);\n        }\n      });\n    });\n  }\n\n  setQuickAddAccessibility() {\n    document.addEventListener(\n      'click',\n      (event) => {\n        const quickAddButton = event.target.closest('[data-quick-add]');\n        if (!quickAddButton || quickAddButton.dataset.milauraQuickAddPending === 'true') return;\n\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        this.quickAdd(quickAddButton);\n      },\n      true\n    );\n  }\n\n  async quickAdd(button) {\n    const variantId = Number.parseInt(button.dataset.productId, 10);\n    if (!variantId) return;\n    const requestedQuantity = Number.parseInt(button.dataset.quantity, 10);\n    const quantity = Number.isFinite(requestedQuantity) && requestedQuantity > 0 ? requestedQuantity : 1;\n\n    const originalContent = button.innerHTML;\n    button.dataset.milauraQuickAddPending = 'true';\n    button.setAttribute('aria-busy', 'true');\n    button.style.pointerEvents = 'none';\n    button.textContent = 'Ajout...';\n\n    try {\n      const cartAddRoute = window.routes?.cart_add_url || '/cart/add';\n      const cartAddUrl = cartAddRoute.endsWith('.js') ? cartAddRoute : `${cartAddRoute}.js`;\n      const payload = {\n        items: [{ id: variantId, quantity }],\n        sections: this.getSectionsToRender().map((section) => section.id),\n        sections_url: window.location.pathname,\n      };\n\n      let data;\n      try {\n        const response = await fetch(cartAddUrl, {\n          method: 'POST',\n          credentials: 'same-origin',\n          headers: {\n            'Content-Type': 'application/json',\n            'X-Requested-With': 'XMLHttpRequest',\n          },\n          body: JSON.stringify(payload),\n        });\n        data = await response.json().catch(() => null);\n        if (!response.ok || !data || data.status) {\n          throw new Error(data?.description || data?.message || `cart_add_${response.status}`);\n        }\n      } catch (error) {\n        console.error('MilAura quick add request failed:', error);\n        button.textContent = 'R\u00E9essayer';\n        return;\n      }\n\n      button.textContent = 'Ajout\u00E9';\n      if (typeof window.milauraCartToast === 'function') window.milauraCartToast('Ajout\u00E9 au panier');\n\n      const recommendationRoot = button.closest('[data-milaura-recommendations]');\n      const recommendationCard = button.closest('[data-milaura-recommendation-card]');\n      if (recommendationRoot && recommendationCard) {\n        document.dispatchEvent(\n          new CustomEvent('milaura:recommendation-added', {\n            detail: {\n              context: recommendationRoot.dataset.context || '',\n              intent: recommendationRoot.dataset.intent || '',\n              productId: recommendationCard.dataset.productId || '',\n              variantId: String(variantId),\n              quantity,\n            },\n          })\n        );\n      }\n\n      this.setActiveElement(button);\n      try {\n        this.renderContents(data);\n      } catch (error) {\n        console.error('MilAura quick add drawer refresh failed:', error);\n      }\n\n      try {\n        const cartRoute = window.routes?.cart_url || '/cart';\n        const cartJsonUrl = cartRoute.endsWith('.js') ? cartRoute : `${cartRoute}.js`;\n        const cartResponse = await fetch(cartJsonUrl, { credentials: 'same-origin' });\n        const cart = await cartResponse.json();\n        if (!cartResponse.ok) throw new Error(`cart_refresh_${cartResponse.status}`);\n\n        document.dispatchEvent(new CustomEvent('cart:updated', { detail: cart }));\n        window.dispatchEvent(new CustomEvent('cart:updated', { detail: cart }));\n      } catch (error) {\n        console.error('MilAura quick add cart refresh failed:', error);\n      }\n    } finally {\n      window.setTimeout(() => {\n        button.innerHTML = originalContent;\n        button.style.pointerEvents = '';\n        button.removeAttribute('aria-busy');\n        delete button.dataset.milauraQuickAddPending;\n      }, 1400);\n    }\n  }\n\n  setEmptyState(isEmpty) {\n    this.classList.toggle('is-empty', isEmpty);\n    this.querySelector('cart-drawer-items')?.classList.toggle('is-empty', isEmpty);\n  }\n\n  open(triggeredBy) {\n    if (triggeredBy) this.setActiveElement(triggeredBy);\n    const cartDrawerNote = this.querySelector('[id^=\"Details-\"] summary');\n    if (cartDrawerNote && !cartDrawerNote.hasAttribute('role')) this.setSummaryAccessibility(cartDrawerNote);\n    // here the animation doesn't seem to always get triggered. A timeout seem to help\n    setTimeout(() => {\n      this.classList.add('animate', 'active');\n    });\n\n    this.addEventListener(\n      'transitionend',\n      () => {\n        const containerToTrapFocusOn = this.querySelector('.drawer__inner');\n        const focusElement = this.querySelector('.drawer__inner') || this.querySelector('.drawer__close');\n        trapFocus(containerToTrapFocusOn, focusElement);\n      },\n      { once: true }\n    );\n\n    document.body.classList.add('overflow-hidden');\n  }\n\n  close() {\n    this.classList.remove('active');\n    removeTrapFocus(this.activeElement);\n    document.body.classList.remove('overflow-hidden');\n  }\n\n  setSummaryAccessibility(cartDrawerNote) {\n    cartDrawerNote.setAttribute('role', 'button');\n    cartDrawerNote.setAttribute('aria-expanded', 'false');\n\n    if (cartDrawerNote.nextElementSibling.getAttribute('id')) {\n      cartDrawerNote.setAttribute('aria-controls', cartDrawerNote.nextElementSibling.id);\n    }\n\n    cartDrawerNote.addEventListener('click', (event) => {\n      event.currentTarget.setAttribute('aria-expanded', !event.currentTarget.closest('details').hasAttribute('open'));\n    });\n\n    cartDrawerNote.parentElement.addEventListener('keyup', onKeyUpEscape);\n  }\n\n  renderContents(parsedState) {\n    this.setEmptyState(parsedState.item_count === 0);\n    this.productId = parsedState.id;\n    this.getSectionsToRender().forEach((section) => {\n      const sectionElement = section.selector\n        ? document.querySelector(section.selector)\n        : document.getElementById(section.id);\n      const sectionHTML = parsedState.sections?.[section.id];\n\n      if (!sectionElement || !sectionHTML) return;\n      const nextContent = this.getSectionInnerHTML(sectionHTML, section.selector);\n      if (nextContent === null) return;\n      sectionElement.innerHTML = nextContent;\n    });\n\n    setTimeout(() => {\n      this.querySelector('#CartDrawer-Overlay').addEventListener('click', this.close.bind(this));\n      this.open();\n    });\n  }\n\n  getSectionInnerHTML(html, selector = '.shopify-section') {\n    const section = new DOMParser().parseFromString(html, 'text/html').querySelector(selector);\n    return section ? section.innerHTML : null;\n  }\n\n  getSectionsToRender() {\n    return [\n      {\n        id: 'cart-drawer',\n        selector: '#CartDrawer',\n      },\n      {\n        id: 'cart-icon-bubble',\n      },\n    ];\n  }\n\n  getSectionDOM(html, selector = '.shopify-section') {\n    return new DOMParser().parseFromString(html, 'text/html').querySelector(selector);\n  }\n\n  setActiveElement(element) {\n    this.activeElement = element;\n  }\n}\n\ncustomElements.define('cart-drawer', CartDrawer);\n\nclass CartDrawerItems extends CartItems {\n  getSectionsToRender() {\n    return [\n      {\n        id: 'CartDrawer',\n        section: 'cart-drawer',\n        selector: '.drawer__inner',\n      },\n      {\n        id: 'cart-icon-bubble',\n        section: 'cart-icon-bubble',\n        selector: '.shopify-section',\n      },\n    ];\n  }\n}\n\ncustomElements.define('cart-drawer-items', CartDrawerItems);\n"],
  "mappings": "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",
  "names": []
}
