{"version":3,"sources":["webpack://@verndale/toolkit/./node_modules/@verndale/roving-ux/dist/index.modern.js","webpack://@verndale/toolkit/./src/js/components/cart-modal.js","webpack://@verndale/toolkit/./src/js/modules/product-details.js"],"names":[],"mappings":"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","file":"scripts/8935.4050783406d36e3c3ef3.js","sourcesContent":["const e=new Map,t=({element:t,target:d,callback:o})=>{const i=t.querySelectorAll(d||\":scope *\"),v=i[0];t.tabIndex=-1,i.forEach(e=>e.tabIndex=-1),v.tabIndex=0,e.set(t,{targets:i,active:v,index:0});const l=n=>{e.get(\"last_rover\")!=t&&(c(t,e.get(t).active),e.set(\"last_rover\",t))};t.addEventListener(\"focusin\",l);const x=e=>{switch(e.keyCode){case 39:case 40:e.preventDefault(),s(t,o);break;case 37:case 38:e.preventDefault(),r(t,o);break;case 36:e.preventDefault(),n(t,o);break;case 35:e.preventDefault(),a(t,o)}};t.addEventListener(\"keydown\",x);const g=n=>{t.removeEventListener(\"focusin\",l),t.removeEventListener(\"keydown\",x),t.removeEventListener(\"DOMNodeRemoved\",g),e.delete(t),i.forEach(e=>e.tabIndex=\"\")};t.addEventListener(\"DOMNodeRemovedFromDocument\",g)},n=(t,n)=>{const a=e.get(t);a.index=0;let s=a.targets[a.index];s&&c(t,s,n)},a=(t,n)=>{const a=e.get(t);a.index=a.targets.length-1;let s=a.targets[a.index];s&&c(t,s,n)},s=(t,n)=>{const a=e.get(t);a.index+=1,a.index>a.targets.length-1&&(a.index=a.targets.length-1);let s=a.targets[a.index];s&&c(t,s,n)},r=(t,n)=>{const a=e.get(t);a.index-=1,a.index<1&&(a.index=0);let s=a.targets[a.index];s&&c(t,s,n)},c=(t,n,a)=>{const s=e.get(t);s.active.tabIndex=-1,a&&a(n),s.active=n,s.active.tabIndex=0,s.active.focus()};export{t as rovingIndex};\n//# sourceMappingURL=index.modern.js.map\n","// @ts-check\nimport { Component } from '@verndale/core';\nimport { createFocusTrap } from 'focus-trap';\nimport { KEYCODE } from '../utils';\n\nexport const OPEN_CART_EVENT = 'OPEN_CART';\n\nclass CartModal extends Component {\n setupDefaults() {\n this.dom = {\n $cartModal: this.el,\n $modalContent: this.el.querySelector('.cart-modal__content'),\n $openModalButton: document.querySelector('.site-selector__cart'),\n $openModalButtonCount: document.querySelector(\n '.site-selector__cart span'\n ),\n $closeModalButton: this.el.querySelector('.cart-modal__close-button'),\n $checkoutButton: this.el.querySelector('.cart-modal__checkout-button'),\n $subtotal: this.el.querySelector('.cart-modal__item-subtotal')\n };\n\n this.endpoint = this.el.dataset.endpoint;\n this.cartModalTrap = createFocusTrap(this.el, {\n escapeDeactivates: true,\n clickOutsideDeactivates: true\n });\n\n this.fetchCartItems();\n }\n\n addListeners() {\n this.el.addEventListener('keydown', (e) => this.handleCartKeydown(e));\n this.el.addEventListener('focusout', this.handleFocusOut.bind(this));\n this.dom.$openModalButton.addEventListener(\n 'click',\n this.handleTrigger.bind(this)\n );\n this.dom.$closeModalButton.addEventListener(\n 'click',\n this.closeModal.bind(this)\n );\n window.addEventListener(OPEN_CART_EVENT, () => this.handleCartUpdate());\n }\n\n handleCartUpdate() {\n this.fetchCartItems();\n this.openModal();\n }\n\n handleTrigger(e) {\n const isExpanded = e.currentTarget.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) this.closeModal(e);\n else this.openModal(e);\n }\n\n cleanItemsData(items) {\n return items.map((item, index) => {\n const cleanedItem = {\n index,\n item_id: item.CartItemId,\n item_name: item.Title,\n item_brand: item.Brand,\n price: Number(item.Price),\n quantity: Number(item.Quantity),\n affiliation: 'EatRightStore',\n ...(item.Categories || []).reduce((acc, category, i) => {\n acc[`item_category${i + 1}`] = category.Heading;\n return acc;\n }, {})\n };\n\n // Remove keys that are undefined or empty\n Object.keys(cleanedItem).forEach(\n (key) =>\n (cleanedItem[key] === undefined || cleanedItem[key] === '') &&\n delete cleanedItem[key]\n );\n\n return cleanedItem;\n });\n }\n\n openModal(e) {\n e?.preventDefault();\n this.dom.$openModalButton.setAttribute('aria-expanded', 'true');\n this.cartModalTrap?.activate?.();\n }\n\n closeModal(e) {\n e?.preventDefault();\n this.dom.$openModalButton.setAttribute('aria-expanded', 'false');\n this.cartModalTrap?.deactivate?.();\n }\n\n handleFocusOut(e) {\n if (\n !e.currentTarget.contains(e.relatedTarget) &&\n e.relatedTarget !== this.dom.$openModalButton\n ) {\n this.closeModal();\n }\n }\n\n handleCartKeydown(e) {\n if (e.keyCode === KEYCODE.ESCAPE) {\n e.stopPropagation();\n this.dom.$openModalButton.setAttribute('aria-expanded', 'false');\n }\n }\n\n renderModalContent(data) {\n this.cartData = data;\n\n this.dom.$subtotal.innerHTML = `${data.ItemsCount} item(s) Subtotal $${data.Total}`;\n const cartCounter = this.dom.$openModalButtonCount;\n if (cartCounter instanceof HTMLElement) {\n cartCounter.innerHTML = cartCounter.dataset.cartLabel.replace(\n '{0}',\n `${data.ItemsCount}`\n );\n }\n this.dom.$modalContent.innerHTML = this.createItemCards(data.Items);\n }\n\n hasPromo(item) {\n return item?.Promo?.PromoTitle || item?.Promo?.PromoSubtitle || item?.Promo?.PromoDetails;\n }\n\n renderPromoBanner(item) {\n const promoTitle = item?.Promo?.PromoTitle;\n const promoSubtitle = item?.Promo?.PromoSubtitle;\n const promoDetailsLabel = item?.Promo?.PromoDetailsLabel;\n const promoDetails = item?.Promo?.PromoDetails;\n const hasPromo = this.hasPromo(item);\n\n if (!hasPromo) return '';\n\n return `\n
\n `;\n }\n\n createItemCards(items) {\n return `\n ${items\n .map(\n (item) => `\nQTY | \nPrice | \nTotal | \n|
---|---|---|---|
${item.Quantity} | \n ${this.hasPromo(item) ? `${item.Price} | `}\n${item.TotalPrice} | \n