{"version":3,"sources":["webpack:///./src/feature/cart-checkout/cart-checkout.js","webpack:///./src/foundation/utilities/cartCookie.js","webpack:///./src/foundation/utilities/urlParams.js"],"names":["defaultSettings","endpoint","confirmationPageId","errorPageId","classes","initialState","readyState","emptyState","confirmationState","activeTab","activeContent","tabContent","summarySection","formInvalid","errorMessageVisible","CartCheckout","element","initDomCache","el","$el","inProgress","settings","Object","assign","parseSettings","isCartFromCookie","window","location","href","sample","defaultTab","querySelector","tabs","querySelectorAll","tabsContent","customerTab","confirmationTab","hasSampleData","deleteButtons","dropdownButtons","errorMessage","openDefault","initEvents","addSubscriptions","eventId","getTabIndex","getAttribute","publish","id","addEventListener","dom","submit","e","preventDefault","validateTab","handleFormSubmit","nextButton","nextTab","backButton","previousTab","forEach","item","stopPropagation","handleDeleteItem","handleDropDown","dropdownButton","dropdownItem","parentNode","dropdownPanel","firstChild","nextElementSibling","newHeight","offsetHeight","classList","contains","remove","setAttribute","style","maxHeight","add","subscribe","deleteItemFromCheckout","section","setCheckoutEmpty","dataset","targetProductId","targetSectionId","forContent","tabIndex","scroll","hideErrorMessage","previousTabContent","length","nextTabContent","nextContent","i","tabForms","allFormsValid","tabForm","validate","ignore","valid","formData","customerData","customerFormToJson","customerForm","documentData","documentsToJson","documents","quotationData","formToJson","quotationForm","sampleData","productSample","supportData","supportForm","customer","orderDocuments","quotations","productSamples","techSupports","trackCheckout","sendForm","fetch","method","mode","headers","body","JSON","stringify","then","response","handleErrors","json","success","showErrorMessage","catch","pId","sId","items","findItemsInCheckout","parent","hasClass","tryRemoveSummarySection","tryRemoveTab","t","productId","sectionId","push","tc","content","click","updateTabs","parse","guid","generateUUID","total","products","document","addItem","name","price","category","quantity","quotation","Id","Name","Price","Quantity","support","dataLayer","event","ecommerce","purchase","actionField","revenue","addTrans","trackTrans","form","slice","call","fieldsetData","reduce","data","isValidValue","value","itemObj","itemSection","productName","filename","sectionName","fieldsets","fieldName","find","includes","type","checked","ok","Error","statusText","target","$target","stop","animate","scrollTop","offset","top","BaseFeature","initCartCookie","resetCookie","getCartAsJson","setNewCookie","findItemInCookie","addCartItemToCookie","removeCartItemFromCookie","getNumberOfCartItems","cookieName","cookieBase","cart","cartSections","date","Date","setDate","getDate","expires","c","cookie","exists","pattern","keys","key","documentSection","sectionIdentifier","r","sectionItems","count","getUrlParamsToJson","setUrlParamsFromJson","url","queryString","split","search","obj","arr","a","paramName","paramValue","toLowerCase","match","replace","index","exec","params","map","join"],"mappings":"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","file":"5-fe744240.pkg.js","sourcesContent":["import $ from 'jquery';\r\nimport 'jquery-validation';\r\nimport BaseFeature from '../../foundation/base/base';\r\nimport { removeCartItemFromCookie, getNumberOfCartItems, resetCookie } from '../../foundation/utilities/cartCookie';\r\nimport { getUrlParamsToJson } from '../../foundation/utilities/urlParams';\r\n\r\nconst defaultSettings = {\r\n\tendpoint: '/',\r\n\tconfirmationPageId: '',\r\n\terrorPageId: ''\r\n};\r\n\r\nconst classes = {\r\n\tinitialState: 'o-checkout--initial-state',\r\n\treadyState: 'o-checkout--ready-state',\r\n\temptyState: 'o-checkout--empty-state',\r\n\tconfirmationState: 'o-checkout--confirmation-state',\r\n\tactiveTab: 'o-checkout__tab--active',\r\n\tactiveContent: 'o-checkout__tab-content--active',\r\n\ttabContent: 'o-checkout__tab-content',\r\n\tsummarySection: 'o-checkout__summary-section',\r\n\tformInvalid: 'o-checkout__summary-item-wrapper--error,',\r\n\terrorMessageVisible: 'o-checkout__error-message--visible'\r\n};\r\n\r\nexport default class CartCheckout extends BaseFeature {\r\n\tconstructor(element) {\r\n\t\tsuper(element);\r\n\r\n\t\tthis.initDomCache();\r\n\t\tthis.el = element;\r\n\t\tthis.$el = $(element);\r\n\r\n\t\tthis.inProgress = false;\r\n\t\t// Parse form settings\r\n\t\tthis.settings = Object.assign({}, defaultSettings, this.parseSettings());\r\n\t\tthis.isCartFromCookie = !getUrlParamsToJson(window.location.href).sample;\r\n\t\t// Used for debuging, should be placed on first tab\r\n\t\tthis.defaultTab = this.el.querySelector('[data-tab=\"default\"]');\r\n\t\t// Get all tabs and their content in checkout\r\n\t\tthis.tabs = this.el.querySelectorAll('[data-for-content]');\r\n\t\tthis.tabsContent = this.el.querySelectorAll('[data-content]');\r\n\r\n\t\tthis.customerTab = this.el.querySelector('[data-tab=\"customer\"]');\r\n\t\tthis.confirmationTab = this.el.querySelector('[data-tab=\"confirmation\"]');\r\n\t\tthis.hasSampleData = false;\r\n\t\t// Get delete buttons\r\n\t\tthis.deleteButtons = this.el.querySelectorAll('[data-js=\"checkout__delete\"]');\r\n\t\t// Get dropdown buttons\r\n\t\tthis.dropdownButtons = this.el.querySelectorAll('[data-js=\"checkout__dropdown-button\"]');\r\n\r\n\t\tthis.errorMessage = this.el.querySelector('[data-js=\"checkout__error-message\"]');\r\n\r\n\t\tthis.openDefault();\r\n\t\tthis.initEvents();\r\n\t\tthis.addSubscriptions();\r\n\r\n\t\t// Track first render in sitecore analytics\r\n\t\tconst eventId = this.tabsContent[this.getTabIndex()].getAttribute('data-event-id');\r\n\t\tthis.publish('/eventTracker/trigger', ({ id: eventId }));\r\n\t}\r\n\r\n\tinitEvents() {\r\n\t\tthis.addEventListener(this.dom.submit, 'click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\t// Validate active tab and check if already in progress\r\n\t\t\t// before trying to send data\r\n\t\t\tif (!this.validateTab() || this.inProgress) return;\r\n\t\t\tthis.handleFormSubmit();\r\n\t\t});\r\n\r\n\t\tthis.addEventListener(this.dom.nextButton, 'click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\t// Dont go next tab if current tab does not validate\r\n\t\t\tif (!this.validateTab()) return;\r\n\t\t\tthis.nextTab();\r\n\t\t});\r\n\r\n\t\tthis.addEventListener(this.dom.backButton, 'click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.previousTab();\r\n\t\t});\r\n\r\n\t\tthis.deleteButtons.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.handleDeleteItem(item);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.dropdownButtons.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.handleDropDown(item);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\thandleDropDown(dropdownButton) {\r\n\t\tconst dropdownItem = dropdownButton.parentNode.parentNode;\r\n\t\tconst dropdownPanel = dropdownButton.parentNode.parentNode.firstChild.nextElementSibling.nextElementSibling;\r\n\t\tconst newHeight = dropdownPanel.firstChild.nextElementSibling.offsetHeight;\r\n\r\n\t\tif (dropdownItem.classList.contains('o-checkout__summary-item--open')) {\r\n\t\t\tdropdownItem.classList.remove('o-checkout__summary-item--open');\r\n\t\t\tdropdownButton.setAttribute('aria-expanded', 'false');\r\n\t\t\tdropdownPanel.setAttribute('aria-hidden', 'true');\r\n\t\t\tdropdownPanel.style.maxHeight = dropdownPanel.offsetHeight + 'px';\r\n\t\t\tdropdownPanel.style.maxHeight = 0 + 'px';\r\n\t\t} else {\r\n\t\t\tdropdownItem.classList.add('o-checkout__summary-item--open');\r\n\t\t\tdropdownButton.setAttribute('aria-expanded', 'true');\r\n\t\t\tdropdownPanel.setAttribute('aria-hidden', 'false');\r\n\t\t\tdropdownPanel.style.maxHeight = newHeight + 'px';\r\n\t\t}\r\n\t}\r\n\r\n\taddSubscriptions() {\r\n\t\tthis.subscribe('/cart/removeItemFromCheckout', (item) => {\r\n\t\t\tthis.deleteItemFromCheckout(item.id, item.section);\r\n\t\t\tif (getNumberOfCartItems() === 0) this.setCheckoutEmpty();\r\n\t\t});\r\n\t}\r\n\r\n\thandleDeleteItem(item) {\r\n\t\tthis.deleteItemFromCheckout(item.dataset.targetProductId, item.dataset.targetSectionId);\r\n\t\tif (this.isCartFromCookie) {\r\n\t\t\tremoveCartItemFromCookie(item.dataset.targetProductId, item.dataset.targetSectionId);\r\n\t\t\tthis.publish('/cart/updateCart');\r\n\t\t\tif (getNumberOfCartItems() === 0) this.setCheckoutEmpty();\r\n\t\t} else {\r\n\t\t\tthis.setCheckoutEmpty();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateTabs() {\r\n\t\tthis.defaultTab = this.el.querySelector('[data-tab=\"default\"]');\r\n\t\tthis.tabs = this.el.querySelectorAll('[data-for-content]');\r\n\t\tthis.tabsContent = this.el.querySelectorAll('[data-content]');\r\n\t}\r\n\r\n\topenDefault() {\r\n\t\tthis.defaultTab.classList.add(classes.activeTab);\r\n\t\tconst tabContent = this.el.querySelector('[data-content=\"' + this.defaultTab.dataset.forContent + '\"]');\r\n\t\ttabContent.classList.add(classes.activeContent);\r\n\t}\r\n\r\n\tpreviousTab() {\r\n\t\tconst tabIndex = this.getTabIndex();\r\n\t\tCartCheckout.scroll(this.tabs[tabIndex]);\r\n\t\t// Set state of component to make sure the correct buttons is shown\r\n\t\tif (tabIndex - 1 === 0) {\r\n\t\t\tif (!this.el.classList.contains(classes.initialState)) {\r\n\t\t\t\tthis.el.classList.add(classes.initialState);\r\n\t\t\t\tthis.el.classList.remove(classes.readyState);\r\n\t\t\t\tthis.hideErrorMessage();\r\n\t\t\t}\r\n\t\t} else if (this.el.classList.contains(classes.readyState)) {\r\n\t\t\tthis.el.classList.remove(classes.readyState);\r\n\t\t\tthis.hideErrorMessage();\r\n\t\t}\r\n\t\t// Display previous tab content\r\n\t\tthis.previousTabContent(tabIndex);\r\n\t}\r\n\r\n\tnextTab() {\r\n\t\tconst tabIndex = this.getTabIndex();\r\n\t\tCartCheckout.scroll(this.tabs[tabIndex]);\r\n\t\t// Set state of component to make sure the correct buttons is shown\r\n\t\tif (tabIndex + 1 === this.tabs.length - 2) {\r\n\t\t\tif (!this.el.classList.contains(classes.readyState)) {\r\n\t\t\t\tthis.el.classList.remove(classes.initialState);\r\n\t\t\t\tthis.el.classList.add(classes.readyState);\r\n\t\t\t}\r\n\t\t} else if (this.el.classList.contains(classes.initialState)) {\r\n\t\t\tthis.el.classList.remove(classes.initialState);\r\n\t\t} else if (tabIndex + 1 === this.tabs.length - 1) {\r\n\t\t\tthis.el.classList.remove(classes.readyState);\r\n\t\t\tthis.el.classList.add(classes.confirmationState);\r\n\t\t}\r\n\t\t// Display content of next tab\r\n\t\tthis.nextTabContent(tabIndex);\r\n\t}\r\n\r\n\tpreviousTabContent(activeTab) {\r\n\t\tthis.tabs[activeTab].classList.remove(classes.activeTab);\r\n\t\tconst activeContent = this.el.querySelector('[data-content=\"' + this.tabs[activeTab].dataset.forContent + '\"]');\r\n\t\tactiveContent.classList.remove(classes.activeContent);\r\n\r\n\t\tthis.tabs[activeTab - 1].classList.add(classes.activeTab);\r\n\t\tconst nextContent = this.el.querySelector('[data-content=\"' + this.tabs[activeTab - 1].dataset.forContent + '\"]');\r\n\t\tnextContent.classList.add(classes.activeContent);\r\n\t}\r\n\r\n\tnextTabContent(activeTab) {\r\n\t\tthis.tabs[activeTab].classList.remove(classes.activeTab);\r\n\t\tconst activeContent = this.el.querySelector('[data-content=\"' + this.tabs[activeTab].dataset.forContent + '\"]');\r\n\t\tactiveContent.classList.remove(classes.activeContent);\r\n\r\n\t\tthis.tabs[activeTab + 1].classList.add(classes.activeTab);\r\n\t\tconst nextContent = this.el.querySelector('[data-content=\"' + this.tabs[activeTab + 1].dataset.forContent + '\"]');\r\n\t\tnextContent.classList.add(classes.activeContent);\r\n\r\n\t\t// Track event in sitecore analytics\r\n\t\tconst eventId = nextContent.getAttribute('data-event-id');\r\n\t\tthis.publish('/eventTracker/trigger', ({ id: eventId }));\r\n\t}\r\n\r\n\tgetTabIndex() {\r\n\t\t// Return active tab step\r\n\t\tfor (let i = 0; i < this.tabs.length; i++) {\r\n\t\t\tif (this.tabs[i].classList.contains(classes.activeTab)) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tvalidateTab() {\r\n\t\t// Get active tab content\r\n\t\tconst activeContent = this.el.querySelector('[data-content=\"' + this.tabs[this.getTabIndex()].dataset.forContent + '\"]');\r\n\t\t// Check if there is a form to validate\r\n\t\tconst tabForms = activeContent.querySelectorAll('form[data-needs-validation=\"true\"]');\r\n\r\n\t\tlet allFormsValid = true;\r\n\r\n\t\tif (tabForms.length !== 0) {\r\n\t\t\ttabForms.forEach((tabForm) => {\r\n\t\t\t\t$(tabForm).validate({\r\n\t\t\t\t\tignore: []\r\n\t\t\t\t});\r\n\t\t\t\tif ($(tabForm).valid() === false) {\r\n\t\t\t\t\tallFormsValid = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn allFormsValid;\r\n\t}\r\n\r\n\thandleFormSubmit() {\r\n\t\t// Create form data structure\r\n\t\tconst formData = {};\r\n\t\t// Get RedirectSettings\r\n\t\tformData.confirmationPageId = this.settings.confirmationPageId;\r\n\t\tformData.errorPageId = this.settings.errorPageId;\r\n\t\t// Get all data structures\r\n\t\tconst customerData = CartCheckout.customerFormToJson(this.dom.customerForm);\r\n\t\tconst documentData = CartCheckout.documentsToJson(this.dom.documents);\r\n\t\tconst quotationData = CartCheckout.formToJson(this.dom.quotationForm);\r\n\t\tconst sampleData = CartCheckout.formToJson(this.dom.productSample);\r\n\t\tconst supportData = CartCheckout.formToJson(this.dom.supportForm);\r\n\r\n\t\t// Add these to formData object if they exists.\r\n\t\tformData.customer = customerData; // Always gets rendered\r\n\t\tif (typeof documentData !== 'undefined') formData.orderDocuments = documentData;\r\n\t\tif (typeof quotationData !== 'undefined') formData.quotations = quotationData;\r\n\t\tif (typeof sampleData !== 'undefined') formData.productSamples = sampleData;\r\n\t\tif (typeof supportData !== 'undefined') formData.techSupports = supportData;\r\n\r\n\t\tCartCheckout.trackCheckout(formData);\r\n\t\tthis.sendForm(formData);\r\n\t}\r\n\r\n\tsendForm(formData) {\r\n\t\tthis.inProgress = true;\r\n\t\treturn fetch(this.settings.endpoint, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\tmode: 'same-origin',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'Application/json; charset=utf-8'\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(formData)\r\n\t\t})\r\n\t\t\t.then((response) => {\r\n\t\t\t\tCartCheckout.handleErrors(response);\r\n\t\t\t\treturn response.json();\r\n\t\t\t})\r\n\t\t\t.then((response) => {\r\n\t\t\t\tif (!response.success) {\r\n\t\t\t\t\tthis.showErrorMessage();\r\n\t\t\t\t\tthis.inProgress = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (this.isCartFromCookie) resetCookie();\r\n\t\t\t\t\tthis.nextTab();\r\n\t\t\t\t\tthis.hideErrorMessage();\r\n\t\t\t\t\tthis.inProgress = false;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(() => {\r\n\t\t\t\tthis.showErrorMessage();\r\n\t\t\t\tthis.inProgress = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\tstatic trackCheckout(formData) {\r\n\t\tconst guid = window.generateUUID();\r\n\t\tlet total = 0;\r\n\t\tconst products = [];\r\n\r\n\t\tif (typeof formData.orderDocuments !== 'undefined') {\r\n\t\t\ttotal += formData.orderDocuments.length;\r\n\t\t\tformData.orderDocuments.forEach((document) => {\r\n\t\t\t\twindow.addItem(guid, document.id, document.name, document.section.name, 1, 1);\r\n\t\t\t\tproducts.push({\r\n\t\t\t\t\tname: document.name,\r\n\t\t\t\t\tid: document.id,\r\n\t\t\t\t\tprice: document.price ? document.price : '1',\r\n\t\t\t\t\tcategory: document.section.name,\r\n\t\t\t\t\tquantity: document.quantity ? document.quantity : 1\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (typeof formData.quotations !== 'undefined') {\r\n\t\t\ttotal += formData.quotations.length;\r\n\t\t\tformData.quotations.forEach((quotation) => {\r\n\t\t\t\twindow.addItem(guid, quotation.Id, quotation.Name, 'quotation', 1, 1);\r\n\t\t\t\tproducts.push({\r\n\t\t\t\t\tname: quotation.Name,\r\n\t\t\t\t\tid: quotation.Id,\r\n\t\t\t\t\tprice: quotation.Price ? quotation.Price : '1',\r\n\t\t\t\t\tcategory: 'quotation',\r\n\t\t\t\t\tquantity: 1\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (typeof formData.productSamples !== 'undefined') {\r\n\t\t\ttotal += formData.productSamples.length;\r\n\t\t\tformData.productSamples.forEach((sample) => {\r\n\t\t\t\twindow.addItem(guid, sample.Id, sample.Name, 'product sample', 1, 1);\r\n\t\t\t\tproducts.push({\r\n\t\t\t\t\tname: sample.Name,\r\n\t\t\t\t\tid: sample.Id,\r\n\t\t\t\t\tprice: sample.Price ? sample.Price : '1',\r\n\t\t\t\t\tcategory: 'product sample',\r\n\t\t\t\t\tquantity: sample.Quantity ? sample.Quantity : 1\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (typeof formData.techSupports !== 'undefined') {\r\n\t\t\ttotal += formData.techSupports.length;\r\n\t\t\tformData.techSupports.forEach((support) => {\r\n\t\t\t\twindow.addItem(guid, support.Id, support.Name, 'request technical support', 1, 1);\r\n\t\t\t\tproducts.push({\r\n\t\t\t\t\tname: support.Name,\r\n\t\t\t\t\tid: support.Id,\r\n\t\t\t\t\tprice: support.Price ? support.Price : '1',\r\n\t\t\t\t\tcategory: 'request technical support',\r\n\t\t\t\t\tquantity: support.Quantity ? support.Quantity : 1\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (window.dataLayer) {\r\n\t\t\twindow.dataLayer.push({\r\n\t\t\t\tevent: 'purchase',\r\n\t\t\t\tecommerce: {\r\n\t\t\t\t\tpurchase: {\r\n\t\t\t\t\t\tactionField: {\r\n\t\t\t\t\t\t\tid: guid,\r\n\t\t\t\t\t\t\trevenue: total,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tproducts\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\twindow.addTrans(guid, total);\r\n\t\twindow.trackTrans();\r\n\t}\r\n\r\n\tstatic customerFormToJson(form) {\r\n\t\t// Get all inputs and select from customer form and add return data structure\r\n\t\tconst customer = [].slice.call(form.querySelectorAll('input, select'));\r\n\t\tconst fieldsetData = [].reduce.call(customer, (data, element) => {\r\n\t\t\t// Check for valid value, no checkboxes in customer info\r\n\t\t\tif (CartCheckout.isValidValue(element)) {\r\n\t\t\t\tdata[element.name] = element.value;\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t}, {});\r\n\r\n\t\treturn fieldsetData;\r\n\t}\r\n\r\n\tstatic documentsToJson(section) {\r\n\t\tif (typeof section === 'undefined') return;\r\n\t\t// Get all documents, these are special since they are not rendered as form elements\r\n\t\tconst itemObj = [];\r\n\t\tconst items = section.querySelectorAll('[data-js=\"checkout__item\"]');\r\n\t\tfor (let i = 0; i < items.length; i++) {\r\n\t\t\tconst item = {};\r\n\t\t\tconst itemSection = {};\r\n\t\t\t// All values are set as data attributes\r\n\t\t\titem.id = items[i].dataset.productId;\r\n\t\t\titem.name = items[i].dataset.productName;\r\n\t\t\titem.filename = items[i].dataset.filename;\r\n\t\t\titemSection.id = items[i].dataset.sectionId;\r\n\t\t\titemSection.name = items[i].dataset.sectionName;\r\n\t\t\titem.section = itemSection;\r\n\t\t\titemObj.push(item);\r\n\t\t}\r\n\t\treturn itemObj;\r\n\t}\r\n\r\n\tstatic formToJson(form) {\r\n\t\t// Return if there is no tab content\r\n\t\tif (typeof form === 'undefined') return;\r\n\t\tconst itemObj = [];\r\n\t\t// Get all fieldsets, each fieldset represent an item in the form under each form section.\r\n\t\tconst fieldsets = form.querySelectorAll('fieldset');\r\n\t\tfor (let i = 0; i < fieldsets.length; i++) {\r\n\t\t\tconst item = [].slice.call(fieldsets[i].querySelectorAll('input, select, textarea'));\r\n\t\t\tconst fieldsetData = [].reduce.call(item, (data, element) => {\r\n\t\t\t\t// Check for valid value, no checkboxes in customer info\r\n\t\t\t\tif (CartCheckout.isValidValue(element)) {\r\n\t\t\t\t\t// If the form element has a attribute for field name, use this instead of standard name.\r\n\t\t\t\t\tif (element.dataset.fieldName) {\r\n\t\t\t\t\t\tdata[element.dataset.fieldName] = element.value;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdata[element.name] = element.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn data;\r\n\t\t\t}, {});\r\n\t\t\t// Get the id of the item from the data attribute\r\n\t\t\tfieldsetData.Name = fieldsets[i].dataset.productName;\r\n\t\t\tfieldsetData.Id = fieldsets[i].dataset.productId;\r\n\t\t\titemObj.push(fieldsetData);\r\n\t\t}\r\n\t\treturn itemObj;\r\n\t}\r\n\r\n\tdeleteItemFromCheckout(pId, sId) {\r\n\t\tconst items = this.findItemsInCheckout(pId, sId);\r\n\t\tfor (let i = 0; i < items.length; i++) {\r\n\t\t\tconst parent = $(items[i]).parent();\r\n\t\t\tif (parent.hasClass(classes.summarySection)) {\r\n\t\t\t\tCartCheckout.tryRemoveSummarySection($(items[i]).parent());\r\n\t\t\t}\r\n\t\t\t$(items[i]).remove();\r\n\t\t\tthis.tryRemoveTab();\r\n\t\t}\r\n\t}\r\n\r\n\tfindItemsInCheckout(pId, sId) {\r\n\t\tconst items = [];\r\n\t\tconst t = this.el.querySelectorAll('[data-js=\"checkout__item\"]');\r\n\t\tfor (let i = 0; i < t.length; i++) {\r\n\t\t\tif (t[i].dataset.productId === pId && t[i].dataset.sectionId === sId) {\r\n\t\t\t\titems.push(t[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn items;\r\n\t}\r\n\r\n\ttryRemoveTab() {\r\n\t\tthis.tabsContent.forEach((tc) => {\r\n\t\t\tif (tc.dataset.content === 'customer' || tc.dataset.content === 'summary') return;\r\n\r\n\t\t\tconst items = tc.querySelectorAll('[data-js=\"checkout__item\"]').length;\r\n\t\t\tif (items > 0) return;\r\n\r\n\t\t\tif (tc.classList.contains(classes.activeContent)) this.dom.backButton.click();\r\n\t\t\t$(`[data-for-content=\"${tc.dataset.content}\"]`).remove();\r\n\t\t\t$(tc).remove();\r\n\t\t});\r\n\t\tthis.updateTabs();\r\n\t}\r\n\r\n\tstatic tryRemoveSummarySection(section) {\r\n\t\tif (section.find('[data-js=\"checkout__item\"]').length === 1) {\r\n\t\t\tsection.remove();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic isValidValue(element) {\r\n\t\t// Check that the element has a valid value.\r\n\t\treturn (!['checkbox', 'radio'].includes(element.type) || element.checked);\r\n\t}\r\n\r\n\tstatic handleErrors(response) {\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow Error(response.statusText);\r\n\t\t}\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic scroll(target) {\r\n\t\tconst $target = $(target);\r\n\t\t$('html, body').stop().animate({\r\n\t\t\tscrollTop: $target.offset().top\r\n\t\t}, 500);\r\n\t}\r\n\r\n\tsetCheckoutEmpty() {\r\n\t\tif (!this.el.classList.contains(classes.emptyState)) this.el.classList.add(classes.emptyState);\r\n\t}\r\n\r\n\tshowErrorMessage() {\r\n\t\tif (!this.errorMessage.classList.contains(classes.errorMessageVisible)) {\r\n\t\t\tthis.errorMessage.classList.add(classes.errorMessageVisible);\r\n\t\t}\r\n\t}\r\n\r\n\thideErrorMessage() {\r\n\t\tif (this.errorMessage.classList.contains(classes.errorMessageVisible)) {\r\n\t\t\tthis.errorMessage.classList.remove(classes.errorMessageVisible);\r\n\t\t}\r\n\t}\r\n\r\n\t// Get settings from data-attributes\r\n\tparseSettings() {\r\n\t\tconst settings = this.el.getAttribute('data-settings') || '{}';\r\n\t\treturn JSON.parse(settings);\r\n\t}\r\n}\r\n","import { getCookie, setCookie } from 'tiny-cookie';\r\nimport { camelCase, reject, pickBy, isEmpty } from 'lodash';\r\n\r\nconst cookieName = 'PSTCART';\r\nconst cookieBase = {\r\n\tcart: {}\r\n};\r\n\r\nconst cartSections = {\r\n\tdocuments: 'documents'\r\n};\r\n\r\nexport function initCartCookie() {\r\n\tif (getCookie(cookieName)) return;\r\n\tconst date = new Date();\r\n\tdate.setDate(date.getDate() + 365);\r\n\tsetCookie(cookieName, JSON.stringify(cookieBase), { expires: date });\r\n}\r\n\r\nexport function resetCookie() {\r\n\tconst date = new Date();\r\n\tdate.setDate(date.getDate() + 365);\r\n\tsetCookie(cookieName, JSON.stringify(cookieBase), { expires: date });\r\n}\r\n\r\nexport function getCartAsJson() {\r\n\tconst c = getCookie(cookieName);\r\n\tif (!c) {\r\n\t\treturn {};\r\n\t};\r\n\tconst cart = JSON.parse(c);\r\n\treturn cart.cart;\r\n}\r\n\r\nexport function setNewCookie(data) {\r\n\tconst cookie = { cart: {} };\r\n\tcookie.cart = data;\r\n\tconst date = new Date();\r\n\tdate.setDate(date.getDate() + 365);\r\n\tsetCookie(cookieName, JSON.stringify(cookie), { expires: date });\r\n}\r\n\r\nexport function findItemInCookie(productId, sectionId) {\r\n\tlet exists = false;\r\n\tconst cart = getCartAsJson();\r\n\t// Pattern used to find item in cookie\r\n\tconst pattern = { id: productId, section: { id: sectionId } };\r\n\r\n\tObject.keys(cart).forEach((key) => {\r\n\t\t// Check if item exists\r\n\t\tif (!isEmpty(pickBy(cart[key], pattern))) {\r\n\t\t\texists = true;\r\n\t\t}\r\n\t});\r\n\r\n\treturn exists;\r\n}\r\n\r\nexport function addCartItemToCookie(item, documentSection) {\r\n\tconst cart = getCartAsJson();\r\n\t// If this should be set as a document, use document as identifier\r\n\tconst sectionIdentifier = documentSection ? cartSections.documents : camelCase(item.section.name);\r\n\t// Pattern used to find item in cookie\r\n\tconst pattern = { id: item.id, section: { id: item.section.id } };\r\n\r\n\tif (cart[sectionIdentifier]) {\r\n\t\t// Only add item if it does not exist\r\n\t\tif (isEmpty(pickBy(cart[sectionIdentifier], pattern))) {\r\n\t\t\tcart[sectionIdentifier].push(item);\r\n\t\t\tsetNewCookie(cart);\r\n\t\t}\r\n\t} else {\r\n\t\t// If sections doesnt exist, create it and add item\r\n\t\tcart[sectionIdentifier] = [];\r\n\t\tcart[sectionIdentifier].push(item);\r\n\t\tsetNewCookie(cart);\r\n\t}\r\n}\r\n\r\nexport function removeCartItemFromCookie(productId, sectionId) {\r\n\tlet r = false; // Value updated if an item is removed\r\n\tconst cart = getCartAsJson();\r\n\tconst data = {};\r\n\tObject.keys(cart).forEach((key) => {\r\n\t\t// Check if item exists\r\n\t\tr = r ? true : !isEmpty(pickBy(cart[key], { id: productId, section: { id: sectionId } }));\r\n\t\t// Dont pick out item that should be removed\r\n\t\tconst sectionItems = reject(cart[key], { id: productId, section: { id: sectionId } });\r\n\t\t// Create section again based on remaining items\r\n\t\tif (sectionItems.length > 0) {\r\n\t\t\tdata[key] = sectionItems;\r\n\t\t}\r\n\t});\r\n\tsetNewCookie(data);\r\n\treturn r;\r\n}\r\n\r\nexport function getNumberOfCartItems() {\r\n\tconst cart = getCartAsJson();\r\n\tlet count = 0;\r\n\tObject.keys(cart).forEach((key) => {\r\n\t\tcount += Object.keys(cart[key]).length; // Update count variable for each item\r\n\t});\r\n\treturn count;\r\n}\r\n","// https://www.sitepoint.com/get-url-parameters-with-javascript/\r\n\r\nexport function getUrlParamsToJson(url) {\r\n\t// get query string from url (optional) or window\r\n\tlet queryString = url ? url.split('?')[1] : window.location.search.slice(1);\r\n\r\n\t// we'll store the parameters here\r\n\tconst obj = {};\r\n\r\n\t// if query string exists\r\n\tif (queryString) {\r\n\t\t// stuff after # is not part of query string, so get rid of it\r\n\t\tqueryString = queryString.split('#')[0];\r\n\r\n\t\t// split our query string into its component parts\r\n\t\tconst arr = queryString.split('&');\r\n\r\n\t\tfor (let i = 0; i < arr.length; i++) {\r\n\t\t\t// separate the keys and the values\r\n\t\t\tconst a = arr[i].split('=');\r\n\r\n\t\t\t// set parameter name and value (use 'true' if empty)\r\n\t\t\tlet paramName = a[0];\r\n\t\t\tlet paramValue = typeof (a[1]) === 'undefined' ? true : a[1];\r\n\r\n\t\t\t// (optional) keep case consistent\r\n\t\t\tparamName = paramName.toLowerCase();\r\n\t\t\tif (typeof paramValue === 'string') paramValue = paramValue.toLowerCase();\r\n\r\n\t\t\t// if the paramName ends with square brackets, e.g. colors[] or colors[2]\r\n\t\t\tif (paramName.match(/\\[(\\d+)?\\]$/)) {\r\n\t\t\t// create key if it doesn't exist\r\n\t\t\t\tconst key = paramName.replace(/\\[(\\d+)?\\]/, '');\r\n\t\t\t\tif (!obj[key]) obj[key] = [];\r\n\r\n\t\t\t\t// if it's an indexed array e.g. colors[2]\r\n\t\t\t\tif (paramName.match(/\\[\\d+\\]$/)) {\r\n\t\t\t\t\t// get the index value and add the entry at the appropriate position\r\n\t\t\t\t\tconst index = /\\[(\\d+)\\]/.exec(paramName)[1];\r\n\t\t\t\t\tobj[key][index] = paramValue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// otherwise add the value to the end of the array\r\n\t\t\t\t\tobj[key].push(paramValue);\r\n\t\t\t\t}\r\n\t\t\t} else if (!obj[paramName]) {\r\n\t\t\t\t// if it doesn't exist, create property\r\n\t\t\t\tobj[paramName] = paramValue;\r\n\t\t\t} else if (obj[paramName] && typeof obj[paramName] === 'string') {\r\n\t\t\t\t// if property does exist and it's a string, convert it to an array\r\n\t\t\t\tobj[paramName] = [obj[paramName]];\r\n\t\t\t\tobj[paramName].push(paramValue);\r\n\t\t\t} else {\r\n\t\t\t\t// otherwise add the property\r\n\t\t\t\tobj[paramName].push(paramValue);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (Object.keys(obj).length === 0) return false;\r\n\treturn obj;\r\n}\r\n\r\nexport function setUrlParamsFromJson(params) {\r\n\treturn Object.keys(params).map(key => key + '=' + params[key]).join('&');\r\n}\r\n"],"sourceRoot":""}