{
  "version": 3,
  "sources": ["/cdn/shop/t/30/assets/cart-drawer.js?ffs=20260825cartpage"],
  "sourcesContent": ["class CartDrawer extends HTMLElement {\n  constructor() {\n    super();\n\n    this.addEventListener('keyup', (evt) => {\n      if (evt.code !== 'Escape' || evt.defaultPrevented) return;\n      // Don't collapse the whole drawer over nested UI (note, qty rules, lightbox).\n      if (this.querySelector('details[open]')) return;\n      if (this.querySelector('quantity-popover [aria-expanded=\"true\"]')) return;\n      if (document.querySelector('[data-ffs-qv-lightbox].is-open, .ffs-qv-lightbox.is-open')) return;\n      this.close();\n    });\n    this.querySelector('#CartDrawer-Overlay')?.addEventListener('click', this.close.bind(this));\n    this.setHeaderCartIconAccessibility();\n  }\n\n  setHeaderCartIconAccessibility() {\n    // Header bag is a real link to /cart (full Your Cart page).\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.classList.contains('is-empty')\n          ? this.querySelector('.drawer__inner-empty')\n          : document.getElementById('CartDrawer');\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  cartHasItems(parsedState) {\n    if (!parsedState) return false;\n    if (typeof parsedState.item_count === 'number') return parsedState.item_count > 0;\n    // /cart/add.js line-item responses omit item_count \u2014 treat a successful add as non-empty.\n    if (parsedState.id || parsedState.key) return true;\n    if (Array.isArray(parsedState.items)) return parsedState.items.length > 0;\n    return false;\n  }\n\n  renderContents(parsedState) {\n    const hasItems = this.cartHasItems(parsedState);\n    this.classList.toggle('is-empty', !hasItems);\n    this.querySelector('.drawer__inner')?.classList.remove('is-empty');\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\n      if (!sectionElement || !parsedState.sections?.[section.id]) return;\n      const html = this.getSectionInnerHTML(parsedState.sections[section.id], section.selector);\n      if (html != null) sectionElement.innerHTML = html;\n    });\n\n    const drawerItems = this.querySelector('cart-drawer-items');\n    if (drawerItems) drawerItems.classList.toggle('is-empty', !hasItems);\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 el = new DOMParser().parseFromString(html, 'text/html').querySelector(selector);\n    return el ? el.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": []
}
