{"version":3,"file":"view_product.bundle.js","mappings":"yzBAAqBA,EAAY,WAC7B,SAAAA,EAAYC,I,4FAAiBC,CAAA,KAAAF,QACM,IAApBC,EAIXE,KAAKF,gBAAkBA,EAHnBG,QAAQC,KAAK,mEAIrB,C,UAuCC,O,EAvCAL,G,EAAA,EAAAM,IAAA,qBAAAC,MAED,SAAmBC,GACf,IAAMC,EAAUC,SAASC,eAAeH,GACxC,GAAI,MAAOC,QACyB,IAAzBN,KAAKF,iBAA4D,OAAzBE,KAAKF,gBAA0B,CAE9E,IAAMW,EAAiB,IAAIC,QAC3BD,EAAeE,OAAO,SAAU,YAChCF,EAAeE,OAAO,gBAAiB,YAEvC,IAAMC,EAAe,CACjBC,OAAQ,MACRC,QAASL,EACTM,YAAa,eAGjB,OAAOC,MAAMhB,KAAKF,gBAAiBc,GAC9BK,MAAK,SAASC,GAEX,OAAIA,EAASC,QAAU,KAAOD,EAASC,OAAS,IACrCD,EAASE,OAEb,IACX,IACCH,MAAK,SAASI,GACX,GAAI,MAAOA,EAAuC,CAC9C,IAAMC,EAAgBf,SAASgB,uBAAuB,iBACtD,GAAI,MAAOD,GAAoF,IAAzBA,EAAcE,OAAc,CAC9FlB,EAAQmB,YAAYH,EAAc,IAClC,IAAMI,EAAenB,SAASoB,cAAcC,yBAAyBP,GAErE,OADAf,EAAQuB,YAAYH,GACbL,CACX,CACJ,CACA,OAAO,IACX,GACR,CACA,OAAO,IACX,M,8EAACxB,CAAA,CA9C4B,E,qwBCCwB,IAEpCiC,EAAW,WAC5B,SAAAA,EAAYC,EAAcC,EAAaC,EAAeC,EAA0BpC,GAAiB,IAAAqC,EAAA,M,4FAAApC,CAAA,KAAA+B,QAEjE,IAAjBC,QACgB,IAAhBC,QACkB,IAAlBC,QAC6B,IAA7BC,GAMXE,EAAE,2BAA2BC,UAE7BrC,KAAK+B,aAAeA,EACpB/B,KAAKgC,YAAcA,EACnBhC,KAAKiC,cAAgBA,EACrBjC,KAAKF,gBAAkBA,EACvBE,KAAKkC,yBAA2BA,EAGhCE,EAAE,QAAQE,GAAG,QAAS,gBAAgB,SAAAC,GAClC,IAAMC,EAAM,GAAHC,OAAML,EAAEG,EAAMG,eAAerB,KAAK,QACrCsB,EAAUP,EAAEG,EAAMG,eAAerB,KAAK,UAC/Be,EAAEG,EAAMG,eAAeE,KAAK,QAErCR,EAAE,iBAADK,OAAkBD,EAAG,aAAYhB,OAAS,IAAiB,IAAZmB,GAChDR,EAAKU,UAAUN,EAAMG,eACrBN,EAAE,uBAAuBU,MAAM,CAAEC,SAAU,YAE3CZ,EAAKU,UAAUN,EAAMG,eAEzBH,EAAMS,gBACV,KAEAC,EAAAA,EAAAA,KAEAb,EAAE,2BAA2BE,GAAG,SAAU,UAAU,SAAAC,GAChD,IAAMW,EAAWd,EAAEG,EAAMY,QAAQC,MAC3BZ,EAAMJ,EAAEG,EAAMY,QAAQ9B,KAAK,OAC3BgC,EAAejB,EAAEG,EAAMY,QAAQ9B,KAAK,gBAC1Ce,EAAEkB,IAAI,GAADb,OAAIN,EAAKD,yBAAwB,SAAAO,OAAQD,EAAG,kBAAAC,OAAiBY,EAAY,cAAAZ,OAAaS,IAAY,SAAU7B,GAC7Ge,EAAE,0CAADK,OAA2CD,EAAG,KAAAC,OAAIY,IAAgBE,KAAKlC,EAC5E,GACJ,IAEAe,EAAE,yBAAyBE,GAAG,UAAU,SAAAC,GACpC,IACMiB,EADSpB,EAAEG,EAAMG,eACDe,QAAQ,yBAE1BD,EAAOE,SAAS,mCAChBF,EAAOG,YAAY,kCACnBvB,EAAE,uBAAuBuB,YAAY,UACrCvB,EAAE,sBAAsBuB,YAAY,mBACpCvB,EAAE,2BAA2BwB,SAAS,UACtCxB,EAAE,uBAAuBwB,SAAS,YAElCJ,EAAOI,SAAS,kCAChBxB,EAAE,uBAAuBwB,SAAS,UAClCxB,EAAE,sBAAsBwB,SAAS,mBACjCxB,EAAE,2BAA2BuB,YAAY,UACzCvB,EAAE,uBAAuBuB,YAAY,UAE7C,IAGIpD,SAASsD,SAASC,OAAOC,SAAS,eAClC3B,EAAE,yBAAyB4B,KAAK,WAAW,GAAMC,UA3DjDhE,QAAQC,KAAK,kEA6DrB,C,UAmFC,O,EAnFA4B,E,EAwEA,EAAA3B,IAAA,aAAAC,MAED,SAAkB4B,EAAalC,GAE3B,GADAsC,EAAE,cAAc8B,KAAKlC,QACU,IAApBlC,EAAiC,CACxC,IAAM4B,EAAe,IAAI7B,EAAAA,EAAaC,GAClCqE,OAAoE,IAA5C/B,EAAE,kBAAkBoB,SAASZ,KAAK,MACxDR,EAAE,kBAAkBoB,SAASZ,KAAK,MAClC,kBACNlB,EAAa0C,mBAAmBD,EACpC,CACJ,K,EAnFC,EAAAhE,IAAA,YAAAC,MAED,SAAUE,GACN,IAAM+D,EAASjC,EAAE9B,GACXkC,EAAM,GAAAC,OAAG4B,EAAOhD,KAAK,QAASiD,QAAQ,KAAM,IAE5CjB,EAAerD,KAAKuE,gBAAgBF,EAAQ7B,GAElD,GAAI,MAAOa,EAAX,CAKA,IAAMmB,EAAe,aAAH/B,OAAgBD,EAAG,KAAAC,OAAIY,GAGnCoB,EAAQ,CACVvB,SAHad,EAAEoC,GAAchD,OAAS,EAAIY,EAAEoC,GAAcpB,MAAQ,EAIlEZ,IAAKA,EAAI8B,QAAQ,MAAO,IACxBjB,aAAAA,GAGEtB,EAAe/B,KAAK+B,aACpBC,EAAchC,KAAKgC,YACnBC,EAAgBjC,KAAKiC,cACrBnC,EAAkBE,KAAKF,gBAE7BsC,EAAEsC,KAAK3C,EAAc0C,GAAOE,MAAK,SAAAC,GAC7B,OACAA,GAEI,IAAK,UACL,IAAK,iBACL,IAAK,eACD9C,EAAY+C,WAAW7C,EAAalC,GACpCgF,OAAOC,MAAMxE,SAASyE,cAAc,sBAAsBC,QAAQpC,WAClE,MACJ,IAAK,aACDiC,OAAOjB,SAASqB,KAAOjD,EACvB,MACJ,IAAK,kBACD,MACJ,IAAK,SACD6C,OAAOC,MAAMxE,SAASyE,cAAc,6BAA6BC,QAAQE,gBAAiB,UAC1F,MACJ,IAAK,gBACDL,OAAOC,MAAMxE,SAASyE,cAAc,wCAAwCC,QAAQG,yBAA0B,UAC9G,MACJ,IAAK,sBACDN,OAAOC,MAAMxE,SAASyE,cAAc,qCAAqCC,QAAQI,uBAAwB,WACzG,MACJ,IAAK,UACDP,OAAOC,MAAMxE,SAASyE,cAAc,8BAA8BC,QAAQK,iBAAkB,WAGxG,GA5CA,MAFIrF,QAAQC,KAAK,iGA+CrB,GAAC,CAAAC,IAAA,kBAAAC,MAED,SAAgBE,EAASkC,GACrB,IAAM+C,EAAuBjF,EAAQkD,SAASgC,KAAK,+BAC7CC,EAA0BnF,EAAQkD,SAASgC,KAAK,wBAChDE,EAAqBpF,EAAQe,KAAK,gBAEpCsE,EAAoB,KAQxB,OAPIJ,EAAqB/D,OACrBmE,EAAoBJ,EAAqBnC,MACC,IAAnCqC,EAAwBjE,OAC/BmE,EAAoBF,EAAwBrC,WACP,IAAvBsC,IACdC,EAAoBD,GAEjBC,CACX,M,8EAWC7D,CAAA,CAxJ2B,E,iBCHzB,SAASmB,IACZ1C,SAASqF,iBACL,SACA,SAAUrD,GACN,GAAIH,EAAEG,EAAMY,QAAQ0C,GAAG,cAAe,CAClCtD,EAAMS,iBACN,IAAM8C,EAAWvF,SAASyE,cAAc,+BACxCc,EAASd,cAAc,aAAae,UAAYxD,EAAMY,OAAO8B,QAAQe,MACrEF,EAASd,cAAc,gBAAgBC,QAAQzC,IAAMD,EAAMY,OAAO8B,QAAQzC,IAC1EsD,EAASd,cAAc,gBAAgBC,QAAQgB,aAAe1D,EAAMY,OAAO8B,QAAQgB,aAEnF7D,EAAE,4CAA4Cf,KAAK,MAAOkB,EAAMY,OAAO8B,QAAQzC,KAC/EJ,EAAE,4CAA4Cf,KAAK,eAAgBkB,EAAMY,OAAO8B,QAAQgB,cACxF7D,EAAE,+BAA+BU,MAAM,OAC3C,CACJ,IACA,EAER,C,gvBClBqBoD,EAAU,oBAAAA,K,4FAAAnG,CAAA,KAAAmG,EAAA,C,UAM1B,O,EAN0BA,E,EAAA,EAAA/F,IAAA,aAAAC,MAC3B,WACI,OAAK0E,OAAOqB,iBAGLrB,OAAOqB,iBAAiB5F,SAAS6F,KAAM,UAAUC,iBAAiB,WAAW/B,QAAQ,KAAM,IAFvF,SAGf,K,EAN2B,O,8EAM1B4B,CAAA,CAN0B,G,UCKX,IAAIpE,EAAAA,EACtBgD,OAAOwB,wBACPxB,OAAOyB,0BACPzB,OAAO0B,yBACP1B,OAAO2B,yBACP3B,OAAOhF,iBAGTsC,GAAE,YACAA,EAAE,2BAA2BE,GAAG,UAAU,WACxCF,EAAE,aAAagB,IAAIhB,E,WAAQgB,MAC7B,IAEI0B,OAAO4B,wBAEO,QADAR,EAAWS,cAEzBvE,EAAE,2BAA2BwE,OAC7BxE,EAAE,YAAYyE,SAAS,CAAEC,UAAW1E,EAAE,sBAEtCA,EAAE,2BAA2B2E,SAGnC,G","sources":["webpack:///./Web.Base/Content/Source/Js/controllers/floatingcart.js","webpack:///./Web.Base/Content/Source/Js/controllers/product.js","webpack:///./Web.Base/Content/Source/Js/misc/eck-modal.js","webpack:///./Web.Base/Content/Source/Js/misc/csscontext.js","webpack:///./Web.Base/Content/Source/Js/views/_product.js"],"sourcesContent":["export default class FloatingCart {\r\n constructor(floatingCartUrl) {\r\n if (typeof floatingCartUrl === \"undefined\") {\r\n console.warn(\"WARNING! Parameters missing - Could not initialize FloatingCart.\"); // eslint-disable-line no-console\r\n return;\r\n }\r\n this.floatingCartUrl = floatingCartUrl;\r\n }\r\n\r\n reloadFloatingCart(elementId) {\r\n const element = document.getElementById(elementId);\r\n if (typeof element !== \"undefined\" && element !== null &&\r\n typeof this.floatingCartUrl !== \"undefined\" && this.floatingCartUrl !== null) {\r\n\r\n const noCacheHeaders = new Headers();\r\n noCacheHeaders.append(\"pragma\", \"no-cache\");\r\n noCacheHeaders.append(\"cache-control\", \"no-cache\");\r\n\r\n const fetchOptions = {\r\n method: 'GET',\r\n headers: noCacheHeaders,\r\n credentials: 'same-origin'\r\n };\r\n\r\n return fetch(this.floatingCartUrl, fetchOptions)\r\n .then(function(response) {\r\n // handle HTTP response\r\n if (response.status >= 200 && response.status < 400) {\r\n return response.text();\r\n }\r\n return null;\r\n })\r\n .then(function(data) {\r\n if (typeof data !== \"undefined\" && data !== null) {\r\n const childElements = document.getElementsByClassName(\"floating-cart\");\r\n if (typeof childElements !== \"undefined\" && childElements !== null && childElements.length === 1) {\r\n element.removeChild(childElements[0]);\r\n const floatingCart = document.createRange().createContextualFragment(data);\r\n element.appendChild(floatingCart);\r\n return data;\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n return null;\r\n }\r\n}","import FloatingCart from './floatingcart';\r\nimport { eckNotificationModal } from '../misc/eck-modal';\r\n\r\nexport default class ProductPage {\r\n constructor(addToCartUrl, linkCartUrl, cartLockedUrl, changeProductQuantityUrl, floatingCartUrl) {\r\n if (\r\n typeof addToCartUrl === 'undefined' ||\r\n typeof linkCartUrl === 'undefined' ||\r\n typeof cartLockedUrl === 'undefined' ||\r\n typeof changeProductQuantityUrl === 'undefined'\r\n ) {\r\n console.warn('WARNING! Parameters missing - Could not initialize ProductPage.'); // eslint-disable-line no-console\r\n return;\r\n }\r\n\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n\r\n this.addToCartUrl = addToCartUrl;\r\n this.linkCartUrl = linkCartUrl;\r\n this.cartLockedUrl = cartLockedUrl;\r\n this.floatingCartUrl = floatingCartUrl;\r\n this.changeProductQuantityUrl = changeProductQuantityUrl;\r\n\r\n // also bind to future elements dynamically added to page\r\n $('body').on('click', '.add-to-cart', event => {\r\n const ean = `${$(event.currentTarget).data('ean')}`;\r\n const isEBook = $(event.currentTarget).data('e-book');\r\n const href = $(event.currentTarget).attr('href');\r\n // ebook modal\r\n if ($(`input.isEbook.${ean}:checked`).length > 0 || isEBook === true) {\r\n this.addToCart(event.currentTarget);\r\n $('#ebook-notification').modal({ backdrop: 'static' });\r\n } else {\r\n this.addToCart(event.currentTarget);\r\n }\r\n event.preventDefault();\r\n });\r\n\r\n eckNotificationModal();\r\n\r\n $('.product__card-quantity').on('change', 'select', event => {\r\n const quantity = $(event.target).val();\r\n const ean = $(event.target).data('ean');\r\n const purchaseType = $(event.target).data('purchasetype');\r\n $.get(`${this.changeProductQuantityUrl}?ean=${ean}&purchaseType=${purchaseType}&quantity=${quantity}`, function (data) {\r\n $(`#product__card-delivery-and-stock-info-${ean}-${purchaseType}`).html(data);\r\n });\r\n });\r\n\r\n $('#second-hand-checkbox').on('change', event => {\r\n const target = $(event.currentTarget);\r\n const parent = target.closest('.product__card-option');\r\n\r\n if (parent.hasClass('product__card-option--selected')) {\r\n parent.removeClass('product__card-option--selected');\r\n $('#default-add-button').removeClass('d-none');\r\n $('.product__price-to').removeClass('text-gray-light');\r\n $('#second-hand-add-button').addClass('d-none');\r\n $('#second-hand-ribbon').addClass('d-none')\r\n } else {\r\n parent.addClass('product__card-option--selected');\r\n $('#default-add-button').addClass('d-none');\r\n $('.product__price-to').addClass('text-gray-light');\r\n $('#second-hand-add-button').removeClass('d-none');\r\n $('#second-hand-ribbon').removeClass('d-none')\r\n }\r\n })\r\n\r\n // Set the checkbox active and trigger the change event if the url contains \"tweedehands\"\r\n if (document.location.search.includes('secondhand')) {\r\n $('#second-hand-checkbox').prop(\"checked\", true).change();\r\n }\r\n }\r\n\r\n addToCart(element) {\r\n const button = $(element);\r\n const ean = `${button.data('ean')}`.replace('\\\\', ''); // needs to be string for replace,\r\n\r\n const purchaseType = this.getPurchaseType(button, ean);\r\n\r\n if (typeof purchaseType === 'undefined' || purchaseType === null) {\r\n console.warn('WARNING! Could not find a checked radio button or a hidden field containing the purchase type.'); // eslint-disable-line no-console\r\n return;\r\n }\r\n\r\n const quantityById = `#quantity-${ean}-${purchaseType}`;\r\n const quantity = $(quantityById).length > 0 ? $(quantityById).val() : 1;\r\n\r\n const model = {\r\n quantity,\r\n ean: ean.replace(/\\\\/g, ''),\r\n purchaseType\r\n };\r\n\r\n const addToCartUrl = this.addToCartUrl;\r\n const linkCartUrl = this.linkCartUrl;\r\n const cartLockedUrl = this.cartLockedUrl;\r\n const floatingCartUrl = this.floatingCartUrl;\r\n\r\n $.post(addToCartUrl, model).done(result => {\r\n switch (\r\n result // eslint-disable-line default-case\r\n ) {\r\n case 'Success':\r\n case 'DigitalSuccess':\r\n case 'CombiSuccess':\r\n ProductPage.reloadCart(linkCartUrl, floatingCartUrl);\r\n window.toast(document.querySelector('[data-add-to-cart]').dataset.addToCart);\r\n break;\r\n case 'CartLocked':\r\n window.location.href = cartLockedUrl;\r\n break;\r\n case 'InvalidQuantity':\r\n break;\r\n case 'Failed':\r\n window.toast(document.querySelector('[data-failed-add-to-cart]').dataset.failedAddToCart, 'danger');\r\n break;\r\n case 'DigitalFailed':\r\n window.toast(document.querySelector('[data-failed-to-add-digital-to-cart]').dataset.failedToAddDigitalToCart, 'danger');\r\n break;\r\n case 'ServiceAlreadyAdded':\r\n window.toast(document.querySelector('[data-failed-add-service-to-cart]').dataset.failedAddServiceToCart, 'warning');\r\n break;\r\n case 'SoldOut':\r\n window.toast(document.querySelector('[data-soldout-add-to-cart]').dataset.soldoutAddToCart, 'warning');\r\n break;\r\n }\r\n });\r\n }\r\n\r\n getPurchaseType(element, ean) {\r\n const purchaseTypeCheckbox = element.parent().find('input[type=\"radio\"]:checked'); // Search results\r\n const purchaseTypeHiddenInput = element.parent().find('input[type=\"hidden\"]'); // Search results\r\n const buttonPurchaseType = element.data('purchasetype'); // Product detail page & Home page (promo products)\r\n\r\n let purchaseTypeValue = null;\r\n if (purchaseTypeCheckbox.length) {\r\n purchaseTypeValue = purchaseTypeCheckbox.val();\r\n } else if (purchaseTypeHiddenInput.length === 1) {\r\n purchaseTypeValue = purchaseTypeHiddenInput.val();\r\n } else if (typeof buttonPurchaseType !== 'undefined') {\r\n purchaseTypeValue = buttonPurchaseType;\r\n }\r\n return purchaseTypeValue;\r\n }\r\n\r\n static reloadCart(linkCartUrl, floatingCartUrl) {\r\n $('#link-cart').load(linkCartUrl);\r\n if (typeof floatingCartUrl !== 'undefined') {\r\n const floatingCart = new FloatingCart(floatingCartUrl);\r\n var floatingCartId = typeof $('.floating-cart').parent().attr('id') !== 'undefined'\r\n ? $('.floating-cart').parent().attr('id')\r\n : 'cross-sell-cart';\r\n floatingCart.reloadFloatingCart(floatingCartId);\r\n }\r\n }\r\n}","export function eckNotificationModal() {\r\n document.addEventListener(\r\n 'click',\r\n function (event) {\r\n if ($(event.target).is('.eck-modal')) {\r\n event.preventDefault();\r\n const eckModal = document.querySelector('#eck-ecc-notification-modal');\r\n eckModal.querySelector('.bookname').innerHTML = event.target.dataset.title;\r\n eckModal.querySelector('.add-to-cart').dataset.ean = event.target.dataset.ean;\r\n eckModal.querySelector('.add-to-cart').dataset.purchasetype = event.target.dataset.purchasetype;\r\n //Jquery work around for the dataset issues\r\n $('#eck-ecc-notification-modal .add-to-cart').data('ean', event.target.dataset.ean);\r\n $('#eck-ecc-notification-modal .add-to-cart').data('purchasetype', event.target.dataset.purchasetype);\r\n $('#eck-ecc-notification-modal').modal('show');\r\n }\r\n },\r\n false\r\n );\r\n}","export default class CssContext {\r\n static getContext() {\r\n if (!window.getComputedStyle) {\r\n return 'desktop';\r\n }\r\n return window.getComputedStyle(document.body, ':after').getPropertyValue('content').replace(/\"/g, '');\r\n }\r\n}\r\n","/* eslint no-unused-vars: 0 */\r\n\r\nimport CssContext from \"../misc/csscontext\";\r\nimport ProductPage from \"../controllers/product\";\r\n\r\nconst productPage = new ProductPage(\r\n window.ProductPageAddToCartUrl,\r\n window.ProductPageGetLinkCartUrl,\r\n window.ProductPageCartLockedUrl,\r\n window.ChangeProductQuantityUrl,\r\n window.floatingCartUrl\r\n);\r\n\r\n$(() => {\r\n $(\"#quantity-select select\").on(\"change\", () => {\r\n $(\"#quantity\").val($(this).val());\r\n });\r\n\r\n if (window.HasProductPromotions) {\r\n const context = CssContext.getContext();\r\n if (context !== \"bp0\") {\r\n $(\".product-promos-wrapper\").show();\r\n $(\"img.lazy\").lazyload({ container: $(\".product-promos\") });\r\n } else {\r\n $(\".product-promos-wrapper\").remove();\r\n }\r\n }\r\n});"],"names":["FloatingCart","floatingCartUrl","_classCallCheck","this","console","warn","key","value","elementId","element","document","getElementById","noCacheHeaders","Headers","append","fetchOptions","method","headers","credentials","fetch","then","response","status","text","data","childElements","getElementsByClassName","length","removeChild","floatingCart","createRange","createContextualFragment","appendChild","ProductPage","addToCartUrl","linkCartUrl","cartLockedUrl","changeProductQuantityUrl","_this","$","tooltip","on","event","ean","concat","currentTarget","isEBook","attr","addToCart","modal","backdrop","preventDefault","eckNotificationModal","quantity","target","val","purchaseType","get","html","parent","closest","hasClass","removeClass","addClass","location","search","includes","prop","change","load","floatingCartId","reloadFloatingCart","button","replace","getPurchaseType","quantityById","model","post","done","result","reloadCart","window","toast","querySelector","dataset","href","failedAddToCart","failedToAddDigitalToCart","failedAddServiceToCart","soldoutAddToCart","purchaseTypeCheckbox","find","purchaseTypeHiddenInput","buttonPurchaseType","purchaseTypeValue","addEventListener","is","eckModal","innerHTML","title","purchasetype","CssContext","getComputedStyle","body","getPropertyValue","ProductPageAddToCartUrl","ProductPageGetLinkCartUrl","ProductPageCartLockedUrl","ChangeProductQuantityUrl","HasProductPromotions","getContext","show","lazyload","container","remove"],"sourceRoot":""}