{"version":3,"sources":["webpack:///./src/feature/cart/cart.js","webpack:///./src/feature/cart/section-template.js","webpack:///./src/foundation/utilities/cartCookie.js"],"names":["classes","active","open","pinned","slide","Cart","element","el","body","window","features","dom","initDomCache","cookieName","removeButtons","lastKnownScrollY","currentScrollY","ticking","mobileThreshold","desktopThreshold","scrollDownThreshold","initEvents","addSubscriptions","updateCartFromCookies","attatchResize","document","addEventListener","attachScroll","link","e","preventDefault","classList","contains","close","subscribe","pageYOffset","addSlide","pin","requestTick","debouncedGetBreakpoint","requestAnimationFrame","unPin","bind","querySelectorAll","forEach","item","stopPropagation","removeItem","cart","sections","count","Object","keys","key","length","group","section","name","push","contentTarget","innerHTML","join","setCartCount","updateRemoveLinks","productId","getAttribute","sectionId","removed","publish","id","setActiveState","setNonActiveState","add","setTimeout","removeSlide","remove","BaseFeature","generateSectionFromJson","map","initCartCookie","resetCookie","getCartAsJson","setNewCookie","findItemInCookie","addCartItemToCookie","removeCartItemFromCookie","getNumberOfCartItems","cookieBase","cartSections","documents","date","Date","setDate","getDate","JSON","stringify","expires","c","parse","data","cookie","exists","pattern","documentSection","sectionIdentifier","r","sectionItems"],"mappings":"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","file":"3-7c2292bb.pkg.js","sourcesContent":["import { groupBy } from 'lodash';\r\nimport BaseFeature from '../../foundation/base/base';\r\nimport { generateSectionFromJson } from './section-template';\r\nimport { initCartCookie, getCartAsJson, removeCartItemFromCookie } from '../../foundation/utilities/cartCookie';\r\nimport { debounce } from '../../foundation/utilities/debounce';\r\nimport { getScreensize } from '../../foundation/utilities/screenSize';\r\n\r\nconst classes = {\r\n\tactive: 'o-cart--active',\r\n\topen: 'o-cart--open',\r\n\tpinned: 'o-cart--pinned',\r\n\tslide: 'o-cart--slide-in'\r\n};\r\n\r\nexport default class Cart extends BaseFeature {\r\n\tconstructor(element) {\r\n\t\tsuper(element);\r\n\t\tthis.el = element;\r\n\t\tthis.body = window.features.dom.body;\r\n\t\tthis.initDomCache();\r\n\t\tthis.cookieName = 'PSTCART';\r\n\t\tthis.removeButtons = null;\r\n\r\n\t\t// Pinning option\r\n\t\tthis.lastKnownScrollY = 0;\r\n\t\tthis.currentScrollY = 0;\r\n\t\tthis.ticking = false;\r\n\t\tthis.mobileThreshold = 68;\r\n\t\tthis.desktopThreshold = 115;\r\n\r\n\t\t// Update scroll threshold depending on screen size\r\n\t\tthis.scrollDownThreshold = getScreensize() <= 640 ?\r\n\t\t\tthis.mobileThreshold : this.desktopThreshold;\r\n\r\n\t\tthis.initEvents();\r\n\t\tthis.addSubscriptions();\r\n\t\tthis.updateCartFromCookies();\r\n\t\tthis.attatchResize();\r\n\t}\r\n\r\n\tinitEvents() {\r\n\t\t// window.addEventListener('CookieInformationConsentGiven', function (event) { \r\n\t\t// \tif (CookieInformation.getConsentGivenFor('cookie_cat_necessary')) {\r\n\t\t// \t\tinitCartCookie();\r\n\t\t// \t} \r\n\t\t// \t}, false); \r\n\r\n\t\tdocument.addEventListener('scroll', () => this.attachScroll());\r\n\r\n\t\tthis.addEventListener(this.dom.link, 'click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tif (this.el.classList.contains(classes.open)) {\r\n\t\t\t\tthis.close();\r\n\t\t\t} else {\r\n\t\t\t\tthis.open();\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.addEventListener(this.dom.close, 'click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.close();\r\n\t\t});\r\n\t}\r\n\r\n\taddSubscriptions() {\r\n\t\t// Used by AddToCart to trigger update when new item is added\r\n\t\tthis.subscribe('/cart/updateCart', () => {\r\n\t\t\tthis.updateCartFromCookies();\r\n\t\t});\r\n\r\n\t\tthis.subscribe('/header/action/switch', () => {\r\n\t\t\tif (this.el.classList.contains(classes.open)) {\r\n\t\t\t\tthis.close();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.subscribe('/profile/open', () => {\r\n\t\t\tthis.close();\r\n\t\t});\r\n\r\n\t\tthis.subscribe('/cart/openCart', () => {\r\n\t\t\tconst open = this.el.classList.contains(classes.open); // Get state\r\n\t\t\tthis.open(); // Try to open\r\n\t\t\tif (window.pageYOffset > this.scrollDownThreshold) {\r\n\t\t\t\tif (!open) {\r\n\t\t\t\t\tthis.addSlide(); // If scrolled we should animate if not already open\r\n\t\t\t\t}\r\n\t\t\t\tthis.pin();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/* ** Scroll and resize events ** */\r\n\tattachScroll() {\r\n\t\tthis.currentScrollY = window.pageYOffset;\r\n\t\tif (this.currentScrollY < this.scrollDownThreshold) {\r\n\t\t\tthis.requestTick(false);\r\n\t\t} else if (this.currentScrollY > this.scrollDownThreshold) {\r\n\t\t\tthis.requestTick(true);\r\n\t\t}\r\n\t}\r\n\r\n\tattatchResize() {\r\n\t\tconst debouncedGetBreakpoint = debounce(() => {\r\n\t\t\tthis.scrollDownThreshold = getScreensize() <= 640 ?\r\n\t\t\t\tthis.mobileThreshold : this.desktopThreshold;\r\n\t\t}, 250);\r\n\r\n\t\twindow.addEventListener('resize', debouncedGetBreakpoint);\r\n\t}\r\n\r\n\t/* ** Handle scroll tick ** */\r\n\trequestTick(pin) {\r\n\t\tif (!this.ticking && !pin) {\r\n\t\t\trequestAnimationFrame(this.unPin.bind(this));\r\n\t\t} else if (!this.ticking && pin) {\r\n\t\t\trequestAnimationFrame(this.pin.bind(this));\r\n\t\t}\r\n\t\tthis.ticking = true;\r\n\t}\r\n\r\n\tupdateRemoveLinks() {\r\n\t\tthis.removeButtons = this.el.querySelectorAll('[data-js=\"cart__remove\"]');\r\n\t\tthis.removeButtons.forEach((item) => {\r\n\t\t\tthis.addEventListener(item, 'click', (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.removeItem(item);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/* Cart item functions */\r\n\tupdateCartFromCookies() {\r\n\t\tconst cart = getCartAsJson();\r\n\t\tif (!cart) return;\r\n\t\tconst sections = [];\r\n\t\tlet count = 0;\r\n\t\tObject.keys(cart).forEach((key) => {\r\n\t\t\tcount += Object.keys(cart[key]).length; // Update count variable for each item\r\n\t\t\t// For each section in cart, sort items based on section name\r\n\t\t\tconst group = groupBy(cart[key], item => item.section.name);\r\n\t\t\tObject.keys(group).forEach((item) => {\r\n\t\t\t\tsections.push(generateSectionFromJson(group[item]));\r\n\t\t\t});\r\n\t\t});\r\n\t\t// Add html to cart content\r\n\t\tthis.dom.contentTarget.innerHTML = sections.join('');\r\n\t\tthis.setCartCount(count); // Update icon with count\r\n\t\tthis.updateRemoveLinks(); // Update remove links\r\n\t}\r\n\r\n\tremoveItem(item) {\r\n\t\tconst productId = item.getAttribute('data-product-id');\r\n\t\tconst sectionId = item.getAttribute('data-section-id');\r\n\t\tconst removed = removeCartItemFromCookie(productId, sectionId);\r\n\t\tif (removed) {\r\n\t\t\tthis.updateCartFromCookies(); // Update cart content\r\n\t\t\tthis.publish('/cart/updateAddLinks'); // Update page links\r\n\t\t\tthis.publish('/cart/removeItemFromCheckout', { id: productId, section: sectionId }); // Remove item from checkout page\r\n\t\t}\r\n\t}\r\n\r\n\tsetCartCount(count) {\r\n\t\tif (count > 0) {\r\n\t\t\tthis.setActiveState();\r\n\t\t} else {\r\n\t\t\tthis.setNonActiveState();\r\n\t\t}\r\n\t\tthis.dom.count.innerHTML = count;\r\n\t}\r\n\r\n\r\n\t/* Pinning functions */\r\n\tpin() {\r\n\t\tif (!this.el.classList.contains(classes.pinned) && this.el.classList.contains(classes.open)) {\r\n\t\t\tthis.el.classList.add(classes.pinned);\r\n\t\t}\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.removeSlide();\r\n\t\t}, 250); // This time equals the animation time corresponding in the stylesheet of cart\r\n\t\tthis.ticking = false;\r\n\t}\r\n\r\n\tunPin() {\r\n\t\tif (this.el.classList.contains(classes.pinned)) {\r\n\t\t\tthis.el.classList.remove(classes.pinned);\r\n\t\t}\r\n\t\tthis.ticking = false;\r\n\t}\r\n\r\n\r\n\t/* Slide functions */\r\n\taddSlide() {\r\n\t\tif (!this.el.classList.contains(classes.slide)) {\r\n\t\t\tthis.el.classList.add(classes.slide);\r\n\t\t}\r\n\t}\r\n\r\n\tremoveSlide() {\r\n\t\tif (this.el.classList.contains(classes.slide)) {\r\n\t\t\tthis.el.classList.remove(classes.slide);\r\n\t\t}\r\n\t}\r\n\r\n\t/* State of cart icon functions */\r\n\tsetNonActiveState() {\r\n\t\tif (this.el.classList.contains(classes.active)) this.el.classList.remove(classes.active);\r\n\t}\r\n\r\n\tsetActiveState() {\r\n\t\tif (!this.el.classList.contains(classes.active)) this.el.classList.add(classes.active);\r\n\t}\r\n\r\n\t/* Toggle functions */\r\n\ttoggle() {\r\n\t\tif (this.el.classList.contains(classes.open)) {\r\n\t\t\tthis.close();\r\n\t\t} else {\r\n\t\t\tthis.open();\r\n\t\t}\r\n\t}\r\n\r\n\topen() {\r\n\t\tthis.publish('/cart/open')\r\n\t\tif (!this.el.classList.contains(classes.open)) this.el.classList.add(classes.open);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tif (this.el.classList.contains(classes.open)) {\r\n\t\t\t// Remove open and pinned classes\r\n\t\t\tthis.el.classList.remove(classes.open);\r\n\t\t\tthis.el.classList.remove(classes.pinned);\r\n\t\t}\r\n\t}\r\n}\r\n","export function generateSectionFromJson(group) {\r\n\treturn `\r\n\t