{"version":3,"file":"SiteCart.min.js","sources":["SiteCart.js"],"sourcesContent":["(function(w, $, _) {\r\n\r\n const assetId = '~/Parts/Views/Site/SiteCart.min.js';\r\n\r\n if (!w.umwAssets || !w.umwAssets[assetId]) {\r\n console.error('No context found for ' + assetId);\r\n return;\r\n }\r\n\r\n for (let ctx of w.umwAssets[assetId]) {\r\n \r\n const $mainPanel = $('#' + ctx.mainPanelID);\r\n const popupTemplate = ctx.popupTemplate;\r\n const detailedCartInfo = JSON.parse(ctx.detailedCartInfoJSON);\r\n const availableBonusPointsInfo =\r\n ctx.availableBonusPointsInfoJSON ? JSON.parse(ctx.availableBonusPointsInfoJSON) : null;\r\n const settings = ctx.settings;\r\n const labels = ctx.labels;\r\n const urls = ctx.urls;\r\n const refreshHashSessionName = '__' + ctx.mainPanelID + 'Hash__';\r\n let $timer;\r\n\r\n const freeShippingSettings = w.globalSettings.freeShippingMessageSettings;\r\n\r\n const estore = w.PublicEStore;\r\n\r\n const classes = {\r\n popup: 'js-site-cart-popup',\r\n popupItem: 'js-site-cart-popup-item',\r\n popupExportToExcel: 'js-site-cart-popup-export-to-excel',\r\n popupGoToShopCart: 'js-site-cart-popup-go-to-shopcart',\r\n popupContinueShopping: 'js-site-cart-popup-continue-shopping',\r\n popupRemoveAll: 'js-site-cart-popup-remove-all',\r\n popupRemoveItem: 'js-site-cart-popup-item-remove',\r\n popupQuantityInput: 'js-quantity-input',\r\n popupQuantityUp: 'js-quantity-up',\r\n popupQuantityDown: 'js-quantity-down',\r\n };\r\n\r\n //Main panel child elements\r\n const $cartLink = $mainPanel.find('.js-show-cart-link'),\r\n $popupPanel = $mainPanel.find('.' + classes.popup),\r\n $shopCartPanel = $mainPanel.find('.ShoppingListPanel'),\r\n $wishListPanel = $mainPanel.find('.WishListPanel'),\r\n $refreshHash = $mainPanel.find('.js-refreshHash');\r\n\r\n //disable bfcashe\r\n const isFirefox = typeof InstallTrigger !== \"undefined\";\r\n const isSafari = /constructor/i.test(window.HTMLElement) || (function(p) { return p.toString() === \"[object SafariRemoteNotification]\"; })(!window[\"safari\"] || (typeof safari !== \"undefined\" && safari.pushNotification));\r\n if (isFirefox) { window.onunload = function() {}; };\r\n if (isSafari) { window.onpageshow = function(event) { if (event.persisted) { window.location.reload(); } }; };\r\n\r\n $(function() {\r\n //refresh shopcart if browsers' 'go back' button was pressed\r\n const sessionRefreshHash = parseInt(sessionStorage.getItem(refreshHashSessionName));\r\n const refreshHash = parseInt($refreshHash.val());\r\n if (sessionRefreshHash !== refreshHash) {\r\n shopCartHandler();\r\n }\r\n\r\n // Subscribe to shopcart events\r\n if ($shopCartPanel.length === 1) {\r\n estore.subscribe(estore.channels.callback.shopCart, shopCartHandler);\r\n }\r\n\r\n // Subscribe to shopping list events\r\n if ($wishListPanel.length === 1) {\r\n estore.subscribe(estore.channels.callback.shoppingList, shoppingListHandler);\r\n }\r\n\r\n // Setup popup\r\n if (settings.showPopup) {\r\n buildPopup(detailedCartInfo);\r\n // Show popup on hovering cart link\r\n $cartLink.mouseenter(function() {\r\n togglePopup(true);\r\n });\r\n }\r\n });\r\n\r\n function shopCartHandler(event, contract) {\r\n\r\n let action = null;\r\n\r\n if (contract && contract.result && contract.result.detailedCartInfo) {\r\n const detailed = contract.result.detailedCartInfo;\r\n const summary = detailed.summary;\r\n const transId = contract.transactionID;\r\n action = contract.action;\r\n\r\n updateInfoBlock($shopCartPanel, summary, transId);\r\n\r\n if (settings.showPopup) {\r\n buildPopup(detailed);\r\n }\r\n } else {\r\n const cartInfoDeferred = settings.showPopup\r\n ? estore.getSiteCartInfo(null, true, settings.popupImageWidth, settings.popupImageModification)\r\n : estore.getCartInfo(null, true);\r\n const successCallback = settings.showPopup ? detailedCartInfoSuccessCallback : cartInfoSuccessCallback;\r\n\r\n $.when(cartInfoDeferred).then(successCallback, showError);\r\n }\r\n\r\n // show popup when shopCart callback was fired\r\n if (action && settings.showPopup) {\r\n const interestedActions = ['addtocart', 'removefromcart', 'emptycart'];\r\n if (_.contains(interestedActions, action)) {\r\n togglePopup(true);\r\n }\r\n }\r\n\r\n // add a class to style buying state\r\n if (action && action === 'addtocart') {\r\n $cartLink.addClass('is-bought');\r\n setTimeout(function() {\r\n $cartLink.removeClass('is-bought');\r\n },\r\n 1000);\r\n }\r\n\r\n }\r\n\r\n function shoppingListHandler() {\r\n $.when(estore.getShoppingListInfo(0, null, true)).then(wishListInfoSuccessCallback, showError);\r\n }\r\n\r\n function detailedCartInfoSuccessCallback(detailedCartInfoContract) {\r\n updateInfoBlock($shopCartPanel,\r\n detailedCartInfoContract.result.detailedCartInfo.summary,\r\n detailedCartInfoContract.transactionID);\r\n buildPopup(detailedCartInfoContract.result.detailedCartInfo);\r\n }\r\n\r\n function cartInfoSuccessCallback(cartInfoContract) {\r\n updateInfoBlock($shopCartPanel, cartInfoContract.result.cartInfo, cartInfoContract.transactionID);\r\n }\r\n\r\n function wishListInfoSuccessCallback(wishListInfoContract) {\r\n updateInfoBlock($wishListPanel, wishListInfoContract.result.cartInfo, wishListInfoContract.transactionID);\r\n }\r\n\r\n function buildPopup(data) {\r\n if ($popupPanel.length === 1 && popupTemplate) {\r\n //Store scroll position\r\n let itemsParent = $popupPanel.find('.' + classes.popupItem).first().parent();\r\n const currentScrollTop = itemsParent && itemsParent.length > 0 ? itemsParent[0].scrollTop : 0;\r\n\r\n $popupPanel.empty();\r\n\r\n const popupHtml = _.template(popupTemplate,\r\n {\r\n data: data,\r\n labels: labels,\r\n settings: settings,\r\n urls: urls,\r\n freeShippingSettings: freeShippingSettings\r\n });\r\n\r\n $popupPanel.append(popupHtml);\r\n\r\n //Restore scroll position\r\n if (currentScrollTop > 0) {\r\n itemsParent = $popupPanel.find('.' + classes.popupItem).first().parent();\r\n if (itemsParent && itemsParent.length > 0) {\r\n itemsParent[0].scrollTop = currentScrollTop;\r\n }\r\n }\r\n\r\n $popupPanel.find('.' + classes.popupExportToExcel).click(function(evt) {\r\n evt.preventDefault();\r\n window.location = urls.exportExcelUrl;\r\n });\r\n\r\n $popupPanel.find('.' + classes.popupGoToShopCart).click(function(evt) {\r\n evt.preventDefault();\r\n window.location = urls.shopCartUrl;\r\n });\r\n\r\n $popupPanel.find('.' + classes.popupContinueShopping).click(function(evt) {\r\n evt.preventDefault();\r\n togglePopup(false);\r\n });\r\n\r\n $popupPanel.find('.' + classes.popupRemoveAll).click(function(evt) {\r\n evt.preventDefault();\r\n $popupPanel.addClass('loading');\r\n $.when(estore.emptyCart())\r\n .always(function() {\r\n $popupPanel.removeClass('loading');\r\n })\r\n .fail(showError);\r\n });\r\n\r\n $popupPanel.find('.' + classes.popupRemoveItem).click(function(evt) {\r\n evt.preventDefault();\r\n const $itemContainer = $(this).closest('.' + classes.popupItem);\r\n const tempOrderLineId = $itemContainer.data('tolid');\r\n $itemContainer.addClass('loading');\r\n $.when(estore.removeFromCart(tempOrderLineId))\r\n .always(function() {\r\n $itemContainer.removeClass('loading');\r\n })\r\n .fail(showError);\r\n });\r\n\r\n $popupPanel.find('.' + classes.popupQuantityInput).change(function() {\r\n let quantity = $(this).val();\r\n\r\n if (isUnsupportedQuantity(quantity)) {\r\n quantity = 1;\r\n $(this).val('1');\r\n }\r\n\r\n updateQuantity(quantity, $(this));\r\n });\r\n\r\n $popupPanel.find('.' + classes.popupQuantityUp).click(function(evt) {\r\n evt.preventDefault();\r\n\r\n const $quantityInput = $(this).closest('.' + classes.popupItem).find('.' + classes.popupQuantityInput);\r\n let quantity = parseFloat($quantityInput.val().toString().replace(/,/g, \".\"));\r\n\r\n quantity = ++quantity;\r\n\r\n if (!isUnsupportedQuantity(quantity)) {\r\n $quantityInput.val(quantity.toString().replace(/\\./g, \",\"));\r\n updateQuantity(quantity, $(this));\r\n }\r\n });\r\n\r\n\r\n $popupPanel.find('.' + classes.popupQuantityDown).click(function(evt) {\r\n evt.preventDefault();\r\n\r\n const $quantityInput = $(this).closest('.' + classes.popupItem).find('.' + classes.popupQuantityInput);\r\n let quantity = parseFloat($quantityInput.val().toString().replace(/,/g, \".\"));\r\n\r\n quantity = --quantity;\r\n\r\n if (!isUnsupportedQuantity(quantity)) {\r\n $quantityInput.val(quantity.toString().replace(/\\./g, \",\"));\r\n updateQuantity(quantity, $(this));\r\n }\r\n });\r\n\r\n function isUnsupportedQuantity(quantity) {\r\n const qty = parseFloat(quantity.toString().replace(/,/g, \".\"));\r\n return qty <= 0.0;\r\n }\r\n\r\n function updateQuantity(quantity, $source) {\r\n\r\n if ($timer) {\r\n w.clearTimeout($timer);\r\n $timer = null;\r\n }\r\n\r\n const $itemContainer = $source.closest('.' + classes.popupItem);\r\n const tempOrderLineId = $itemContainer.data('tolid');\r\n\r\n $timer = w.setTimeout(function() { updateQuantityRefresh(tempOrderLineId, quantity) }, 300);\r\n }\r\n\r\n function updateQuantityRefresh(tempOrderLineId, quantity) {\r\n $popupPanel.addClass('loading');\r\n\r\n const qty = quantity.toString().replace(/,/g, \".\");\r\n\r\n $.when(estore.updateCartQuantity({ tempOrderLineId: tempOrderLineId, quantity: qty }))\r\n .fail(function(error) {\r\n showNotification(error.message, 'error');\r\n })\r\n .always(function() {\r\n $popupPanel.removeClass('loading');\r\n });\r\n }\r\n\r\n //Setup bonus balance\r\n const $bonusBalanceContainer = $('.js-bonus-balance-init');\r\n if ($bonusBalanceContainer.length && availableBonusPointsInfo) {\r\n w.require(['bonus/umw.bonus-balance.min'],\r\n function() {\r\n $bonusBalanceContainer.bonusbalance(availableBonusPointsInfo);\r\n });\r\n }\r\n }\r\n }\r\n\r\n function togglePopup(showOrHide) {\r\n $popupPanel.toggleClass('hidden', !showOrHide);\r\n if (showOrHide) {\r\n $popupPanel.removeClass('hidden');\r\n // If popup is shown, attach global click handler to hide popup\r\n $('html').on('click.sitecart.popup',\r\n function(evt) {\r\n if ($(evt.target).parents().index($popupPanel) === -1) {\r\n togglePopup(false);\r\n }\r\n });\r\n } else {\r\n $popupPanel.addClass('hidden');\r\n // Deattach global click handler\r\n $('html').off('click.sitecart.popup');\r\n }\r\n }\r\n\r\n function updateInfoBlock(block, cartInfo, refreshHashValue) {\r\n const $section = $(block);\r\n if ($section.length > 0 && !_.isEmpty(cartInfo)) {\r\n $section.find('.ProdCount').text(Math.floor(cartInfo.productCount));\r\n $section.find('.TotalPrice').text(cartInfo.formattedTotalPrice);\r\n $section.find('.TotalVAT').text(cartInfo.formattedTotalVAT);\r\n $section.find('.TotalDiscount').text(cartInfo.formattedTotalDiscount);\r\n if (cartInfo.productCount > 0) {\r\n $section.removeClass('empty');\r\n $section.addClass('notEmpty');\r\n } else {\r\n $section.addClass('empty');\r\n $section.removeClass('notEmpty');\r\n }\r\n }\r\n sessionStorage.setItem(refreshHashSessionName, refreshHashValue);\r\n $refreshHash.val(refreshHashValue);\r\n }\r\n }\r\n\r\n function showNotification(message, notificationType) {\r\n var notificationChannel = typeof (notificationType) === 'string' && notificationType ? 'notification.' + notificationType : 'notification';\r\n w.PubSub.publish(notificationChannel, message);\r\n }\r\n\r\n function showError(errContract) {\r\n if (errContract) {\r\n var errorMessage;\r\n if (typeof errContract === 'string') {\r\n errorMessage = errContract;\r\n } else {\r\n errorMessage = errContract.result && errContract.result.items[0] ? errContract.result.items[0].message : errContract.message;\r\n }\r\n\r\n console.error('Failed to update shopping cart information. %s', errorMessage); // Don't think we need to show this message to the user. This message can confuse the users.\r\n }\r\n }\r\n})(window, jQuery, _);"],"names":["w","$","_","assetId","umwAssets","let","ctx","$mainPanel","mainPanelID","popupTemplate","detailedCartInfo","JSON","parse","detailedCartInfoJSON","availableBonusPointsInfo","availableBonusPointsInfoJSON","settings","labels","urls","refreshHashSessionName","$timer","freeShippingSettings","globalSettings","freeShippingMessageSettings","estore","PublicEStore","classes","popup","popupItem","popupExportToExcel","popupGoToShopCart","popupContinueShopping","popupRemoveAll","popupRemoveItem","popupQuantityInput","popupQuantityUp","popupQuantityDown","$cartLink","find","$popupPanel","$shopCartPanel","$wishListPanel","$refreshHash","isFirefox","InstallTrigger","isSafari","test","window","HTMLElement","safari","pushNotification","toString","shopCartHandler","event","contract","action","detailed","transId","successCallback","result","summary","transactionID","updateInfoBlock","showPopup","buildPopup","cartInfoDeferred","getSiteCartInfo","popupImageWidth","popupImageModification","getCartInfo","detailedCartInfoSuccessCallback","cartInfoSuccessCallback","when","then","showError","contains","togglePopup","addClass","setTimeout","removeClass","shoppingListHandler","getShoppingListInfo","wishListInfoSuccessCallback","detailedCartInfoContract","cartInfoContract","cartInfo","wishListInfoContract","data","length","itemsParent","first","parent","currentScrollTop","scrollTop","popupHtml","empty","template","isUnsupportedQuantity","quantity","parseFloat","replace","updateQuantity","$source","clearTimeout","$itemContainer","closest","tempOrderLineId","updateQuantityRefresh","qty","updateCartQuantity","fail","error","showNotification","message","notificationType","notificationChannel","PubSub","publish","always","append","click","evt","preventDefault","location","exportExcelUrl","shopCartUrl","emptyCart","this","removeFromCart","change","val","$quantityInput","$bonusBalanceContainer","require","bonusbalance","showOrHide","toggleClass","on","target","parents","index","off","block","refreshHashValue","$section","isEmpty","text","Math","floor","productCount","formattedTotalPrice","formattedTotalVAT","formattedTotalDiscount","sessionStorage","setItem","onunload","onpageshow","persisted","reload","parseInt","getItem","subscribe","channels","callback","shopCart","shoppingList","mouseenter","console","errContract","errorMessage","items","jQuery"],"mappings":"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"}