{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/cart-drawer.js?id=993154%2540"],
  "sourcesContent": ["import { ThemeEvents, CartUpdatedEvent } from '@theme/events';\n\nclass CartDrawer extends HTMLElement {\n  constructor() {\n    super();\n    this.checkoutButton = null;\n    this.openCartIcons = null;\n\n    this.backdropClickHandler = this.#onBackdropClick.bind(this);\n    this.checkoutButtonClickHandler = this.#handleCheckoutButtonClick.bind(this);\n    this.cartUpdateHandler = this.#handleCartUpdate.bind(this);\n    this.openHandler = this.open.bind(this);\n    this.closeHandler = this.close.bind(this);\n  }\n\n  connectedCallback() {\n    this.checkoutButton = this.querySelector('[data-ref=\"checkout-button\"]');\n\n    this.addEventListener('click', this.backdropClickHandler);\n\n    this.checkoutButton.addEventListener('click', this.checkoutButtonClickHandler);\n\n    document.addEventListener(ThemeEvents.cartUpdated, this.cartUpdateHandler);\n\n    document.addEventListener(ThemeEvents.cartOpen, this.openHandler);\n    document.addEventListener(ThemeEvents.cartClose, this.closeHandler);\n\n    // Specific logic for Shopify Theme Editor\n    if (Shopify.designMode) {\n      document.addEventListener('shopify:section:unload', this.#onSectionUnload);\n      if (window.theme?.isCartDrawerOpen) {\n        this.open();\n        window.theme.isCartDrawerOpen = false; // Reset the flag\n      }\n    }\n  }\n\n  disconnectedCallback() {\n    document.removeEventListener(ThemeEvents.cartClose, this.closeHandler);\n    document.removeEventListener(ThemeEvents.cartOpen, this.openHandler);\n\n    document.removeEventListener(ThemeEvents.cartUpdated, this.cartUpdateHandler);\n\n    this.checkoutButton.removeEventListener('click', this.checkoutButtonClickHandler);\n\n    this.removeEventListener('click', this.backdropClickHandler);\n\n    // Specific logic for Shopify Theme Editor\n    if (Shopify.designMode) {\n      document.removeEventListener('shopify:section:unload', this.#onSectionUnload);\n    }\n  }\n\n  #onSectionUnload = (event) => {\n    if (event.detail.sectionId !== this.dataset.sectionId) return;\n\n    window.theme = window.theme || {};\n    window.theme.isCartDrawerOpen = this.isOpen();\n  };\n\n  #handleCheckoutButtonClick(event) {\n    event.target.classList.add('is-loading');\n  }\n\n  #handleCartUpdate(event) {\n    this.renderCartContents(event.detail.data);\n  }\n\n  #onBackdropClick(event) {\n    const rect = this.querySelector('.cart-drawer__inner').getBoundingClientRect();\n    const isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;\n\n    if (!isInDialog) {\n      this.close();\n    }\n  }\n\n  open() {\n    // Nettoyer les classes pour \u00E9viter les conflits\n    this.classList.remove('is-closing');\n    this.classList.add('is-open');\n    document.body.classList.add('overflow-hidden');\n  }\n\n  close() {\n    // Ajouter la classe de fermeture pour d\u00E9clencher l'animation\n    this.classList.add('is-closing');\n\n    // Attendre la fin de l'animation avant de masquer compl\u00E8tement\n    setTimeout(() => {\n      this.classList.remove('is-open', 'is-closing');\n      document.body.classList.remove('overflow-hidden');\n    }, 125); // Dur\u00E9e l\u00E9g\u00E8rement inf\u00E9rieure \u00E0 --animation-speed pour \u00E9viter les d\u00E9calages\n  }\n\n  isOpen() {\n    return this.classList.contains('is-open');\n  }\n\n  renderCartContents(parsedState) {\n    const section_cart_drawer_id = this.dataset.sectionId;\n\n    const currentCartDrawer = this.querySelector('.cart-drawer__inner');\n    const newCartDrawer = new DOMParser().parseFromString(parsedState.sections[section_cart_drawer_id], 'text/html');\n\n    currentCartDrawer.innerHTML = newCartDrawer.querySelector('.cart-drawer__inner').innerHTML;\n\n    setTimeout(() => {\n      if (parsedState.itemCount == 0) {\n        this.classList.add('cart-drawer--empty');\n      } else {\n        this.classList.remove('cart-drawer--empty');\n      }\n    });\n  }\n}\n\nif (!customElements.get('cart-drawer')) {\n  customElements.define('cart-drawer', CartDrawer);\n}\n\nclass CartDrawerItem extends HTMLElement {\n  constructor() {\n    super();\n\n    this.removeItemButton = null;\n    this.quantitySelectorInput = null;\n    this.itemRemoveHandler = this.#handleItemRemove.bind(this);\n    this.quantityInputChangeHandler = this.#handleQuantityInputChange.bind(this);\n  }\n\n  connectedCallback() {\n    this.removeItemButton = this.querySelector('[data-ref=\"remove-item\"]');\n    this.quantitySelectorInput = this.querySelector('[data-ref=\"quantity-selector-input\"]');\n\n    this.removeItemButton?.addEventListener('click', this.itemRemoveHandler);\n    this.quantitySelectorInput?.addEventListener('change', this.quantityInputChangeHandler);\n  }\n\n  disconnectedCallback() {\n    this.quantitySelectorInput?.removeEventListener('change', this.quantityInputChangeHandler);\n    this.removeItemButton?.removeEventListener('click', this.itemRemoveHandler);\n  }\n\n  #handleItemRemove(event) {\n    event.preventDefault();\n    this.#updateLineItemQuantity(this.dataset.index, 0);\n  }\n\n  #handleQuantityInputChange(event) {\n    event.preventDefault();\n    this.#updateLineItemQuantity(this.dataset.index, this.quantitySelectorInput.value);\n  }\n\n  #updateLineItemQuantity(line, quantity) {\n    this.#enableLoading();\n\n    const body = JSON.stringify({\n      line,\n      quantity,\n      sections: this.closest('cart-drawer').dataset.sectionId,\n      sections_url: window.location.pathname,\n    });\n\n    fetch(Theme.routes.cart_change_url, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json', Accept: `application/json` },\n      ...{ body },\n    })\n      .then((response) => {\n        return response.text();\n      })\n      .then((responsetext) => {\n        const parsedResponseText = JSON.parse(responsetext);\n\n        if (parsedResponseText.errors) {\n          document.dispatchEvent(new CustomEvent('toast:open', { detail: { type: 'error', message: message } }));\n          return;\n        }\n\n        document.dispatchEvent(\n          new CartUpdatedEvent(\n            {},\n            {\n              itemCount: parsedResponseText.item_count,\n              source: 'cart-drawer-item',\n              sections: parsedResponseText.sections,\n            },\n          ),\n        );\n      })\n      .catch((e) => {\n        console.error(e);\n        this.#disableLoading();\n      })\n      .finally(() => {\n        this.#disableLoading();\n      });\n  }\n\n  #enableLoading() {\n    this.classList.add('cart-drawer__item--loading');\n  }\n\n  #disableLoading() {\n    this.classList.remove('cart-drawer__item--loading');\n  }\n}\n\nif (!customElements.get('cart-drawer-item')) {\n  customElements.define('cart-drawer-item', CartDrawerItem);\n}\n"],
  "mappings": "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",
  "names": []
}
