{"version":3,"sources":["webpack:///./modules/ShoppingCart.ts","webpack:///./helpers/trackingHelpers.ts","webpack:///./AjaxLoader.ts","webpack:///./modules/ErrorHandling.ts","webpack:///./modules/CheckoutPanel.ts"],"names":["__webpack_require__","r","__webpack_exports__","_AjaxLoader__WEBPACK_IMPORTED_MODULE_0__","_modules_ErrorHandling__WEBPACK_IMPORTED_MODULE_1__","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_2__","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_3__","_modules_CheckoutPanel__WEBPACK_IMPORTED_MODULE_4__","_helpers_trackingHelpers__WEBPACK_IMPORTED_MODULE_5__","_Tracking__WEBPACK_IMPORTED_MODULE_6__","_TrackingGA4__WEBPACK_IMPORTED_MODULE_7__","ShoppingCart","element","_this","this","document","addEventListener","event","detail","btn","getAttribute","Object","e","then","bind","module","default","querySelector","add","ajaxLoader","updateCounter","onError","countCartNumber","setup","selector","Array","from","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","data","errorArrayMessage","responseText","ErrorMessage","Success","JSON","parse","classList","remove","url","ean","request","prepareUrl","replace","indexOf","window","location","pathname","targetIndentity","requestUrl","isJSON","counterNo","numberOfProduct","cartIcon","markup","createElement","innerHTML","dataJsonParse","getBtnContent","MarkupToSet","getObj","keys","addToCartBtnReplace","elementWithTargetIdentity","cartTrackingContainerElement","closest","ShoppingCartHtml","shoppingCartOffcanvasPush","DOMParser","parseFromString","getElementById","shoppingBagOverviewContent","ShoppingCartItemsCount","countCartNumberByFirstRequest","OverlayMarkup","setTimeout","Eucerin","initModules","renderCountNumber","outerHTML","shoppingCart","paymentPanel","isMobile","Promise","all","d","trackFilter","addToCartProductTracking","changeProductQuantityTracking","removeFromCartProductTracking","trackSliderMovement","addToCartEventName","removeFromCartEventName","cartTrackingEvent","eventName","qty","btnType","productPriceElement","price","parseFloat","category","eventData","actionField","list","products","id","name","brand","variant","quantity","type","ecommerce","currencyCode","dataLayer","push","item","filterName","filterCategory","eventCategory","eventAction","eventLabel","eventNonInteraction","oldQty","newQty","Math","abs","length","undefined","AjaxLoader","callbackSuccess","callBackFailed","callbackFailed","xhttp","XMLHttpRequest","onreadystatechange","readyState","status","onSuccess","onFailed","console","warn","open","send","closeErrorHandling","errorHandlingContent","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_0__","ErrorHandling","body","notificationPannelAdded","contains","message","errorHandlerContent","insertAdjacentElement","trackLogedInCheckoutButton","trackFirstCheckoutStep_V2","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_1__","_Tracking__WEBPACK_IMPORTED_MODULE_2__","_TrackingGA4__WEBPACK_IMPORTED_MODULE_3__","CheckoutPanel","initCheckoutPanel","checkoutButton","showCheckoutPanel","hidePanelOnClickOut","preventDefault","target","hideCheckoutPanel","checkoutPanel"],"mappings":"iGAAAA,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,KAAAI,EAAAJ,EAAA,IAAAK,EAAAL,EAAA,GAAAM,EAAAN,EAAA,GAAAO,EAAAP,EAAA,IAAAQ,EAAAR,EAAA,KAAAS,EAAAT,EAAA,GAAAU,EAAAV,EAAA,IAaAW,EAAA,WAaI,SAAAA,EAAmBC,GAAnB,IAAAC,EAAAC,KAAmBA,KAAAF,UACfG,SAASC,iBAAiB,mBAAoB,SAACC,GAE3C,GAA0C,SADhCA,EAAMC,OAAOC,IACbC,aAAa,eAA4B,CAC/CC,OAAAhB,EAAA,EAAAgB,GAEwBrB,EAAAsB,EAAA,GAAAC,KAAAvB,EAAAwB,KAAA,UACpBD,KAAK,SAACE,GAAW,WAAIA,EAAOC,QAAQX,SAASY,cAAc,mCAE/Dd,EAAKe,IAAkBX,EAAOC,OAAOC,UAErCN,EAAKe,IAAkBX,EAAOC,OAAOC,OAG7CL,KAAKe,WAAa,IAAI1B,EAAA,EAAWW,KAAKgB,cAAcN,KAAKV,MAAOA,KAAKiB,QAAQP,KAAKV,OAClFA,KAAKkB,kBA+Jb,OArLWrB,EAAAsB,MAAP,SAAaC,QAAA,IAAAA,MARM,gCASfC,MAAMC,KAAKrB,SAASsB,iBAAiBH,IAAWI,OAAO,SAACC,GAAsB,OAACA,EAAKC,QAAQC,oBAAmBC,QAAQ,SAAC9B,GACpH,IAAID,EAAaC,GACjBA,EAAQ4B,QAAQC,kBAAoB,UAsB5C9B,EAAAgC,UAAAZ,QAAA,SAAQa,GACI,IACJC,EADIC,EAAAF,EAAAE,aAAcC,EAAAH,EAAAG,cAEN,IAFoBH,EAAAI,QAGhCH,EAAoBE,EAGpBF,EADmBI,KAAKC,MAAMJ,GACCC,aAG9BhC,SAASY,cAAc,oBACxBN,OAAAjB,EAAA,qBAAAiB,CAAqBP,KAAKF,QAASiC,GACnC9B,SAASY,cAAc,gBAAgBwB,UAAUC,OAAO,kBAIhEzC,EAAAgC,UAAAf,IAAA,SAAIT,GACA,IAAIkC,EACAC,EACJD,EAAMlC,EAAIC,aAAa,iBACvBkC,EAAMnC,EAAIC,aAAa,YAEvBN,KAAKyC,QAAQzC,KAAK0C,WAAWH,EAAKC,GAAMA,IAI5C3C,EAAAgC,UAAAa,WAAA,SAAWH,EAAaC,GACpB,OAAOD,EAAII,QAAQ,OAAQH,KAA8B,IAAtBD,EAAIK,QAAQ,KAAc,IAAM,KAAO,gBAAkBC,OAAOC,SAASC,UAGhHlD,EAAAgC,UAAAY,QAAA,SAAQF,EAAaS,GACjBhD,KAAKe,WAAWkC,WAAWV,EAAKS,IAGpCnD,EAAAgC,UAAAqB,OAAA,SAAOpB,GACH,IACI,OAAQK,KAAKC,MAAMN,MAAWA,EAChC,MAAOtB,GACL,OAAO,IAKfX,EAAAgC,UAAAb,cAAA,SAAcc,EAAWkB,EAAiBG,GAA1C,IAAApD,EAAAC,KACI,IAAKA,KAAKkD,OAAOpB,GAAO,CACpB,IAAIsB,EACJpD,KAAKqD,SAAWpD,SAASY,cAAc,SACvC,IAAMyC,EAASrD,SAASsD,cAAc,OAatC,OAZAD,EAAOE,UAAY1B,EACnBsB,EAAkBE,EAAOzC,cAAc,mBAAmBP,aAAa,mCACvEN,KAAKqD,SAASxC,cAAc,QAAQ2C,UAAYJ,EAChDE,EAAOhB,cAGHc,EAAkB,IAClBpD,KAAKqD,SAAShB,UAAUC,OAAO,gBAC/BtC,KAAKqD,SAAShB,UAAUC,OAAO,mBAE/BtC,KAAKqD,SAAShB,UAAUvB,IAAI,iBAKpC,IAAM2C,EAAgBtB,KAAKC,MAAMN,GAEjC,IAA8B,IAA1B2B,EAAcvB,QAEd,OADAlC,KAAKiB,QAAQwC,IACN,EAEX,GAA4D,UAAxDxD,SAASY,cAAc,QAAQP,aAAa,QAAqB,CACjE,IAAMoD,EAAgBD,EAAcE,YAC9BC,EAASF,EAAcnD,OAAOsD,KAAKH,GAAe,IACxD1D,KAAK8D,oBAAoBF,GAIzB3D,SAASY,cAAc,yCAAyCZ,SAASY,cAAc,QAAQwB,UAAUvB,IAAI,6BAEjH,IAAMiD,EAA4B9D,SAASY,cAAc,cAAcmC,EAAe,MACtF,GAAIe,EAA2B,CAC3B,IAAMC,EAA+BD,EAA0BE,QAAQ,mBACvED,GAAgCzD,OAAAb,EAAA,EAAAa,CAAyByD,GAEzDA,GAAgCzD,OAAAX,EAAA,EAAAW,CAA4ByD,GAGhE,GAAIP,EAAcS,iBAAkB,CAChC,IACMC,GADyB,IAAIC,WAAYC,gBAAgBZ,EAAcS,iBAAkB,aACtCI,eAAe,kBACxEH,GAA6BnE,KAAKuE,2BAA2BJ,EAA0BX,WAU3F,GARGC,EAAce,wBACjBxE,KAAKyE,8BAA8BhB,EAAce,wBAGjDnD,MAAMC,KAAKrB,SAASsB,iBAAiB,gBAAgBK,QAAQ,SAAC9B,GAC1DA,EAAQuC,UAAUC,OAAO,YAGzBrC,SAASY,cAAc,qBAAuB4C,EAAciB,cAAe,CAC3EzE,SAASY,cAAc,oBAAoB2C,UAAYC,EAAciB,cAE1BxF,EAAAsB,EAAA,GAAAC,KAAAvB,EAAAwB,KAAA,UACZD,KAAK,SAACE,GAAW,WAAIA,EAAOC,QAAQX,SAASY,cAAc,2BAE1Fb,KAAKF,QAAQuC,UAAUvB,IAAI,UAE3B6D,WAAW,WACP1E,SAASY,cAAc,oBAAoB2C,UAAY,GACvDzD,EAAKD,QAAQuC,UAAUC,OAAO,UAC9BvC,EAAKD,QAAQuC,UAAUC,OAAO,WAC/B,KAGPO,OAAO+B,QAAQC,cACftE,OAAAjB,EAAA,mBAAAiB,IAEIV,EAAAgC,UAAA4C,8BAAR,SAAsCtB,GACVjE,EAAAsB,EAAA,GAAAC,KAAAvB,EAAAwB,KAAA,UACZD,KAAK,SAACE,GAAW,WAAIA,EAAOmE,kBAAkB3B,MAGtDtD,EAAAgC,UAAAX,gBAAR,WAC4BhC,EAAAsB,EAAA,GAAAC,KAAAvB,EAAAwB,KAAA,UACZD,KAAK,SAACE,GAAW,WAAIA,EAAOC,WAGpCf,EAAAgC,UAAAiC,oBAAR,SAA4BhC,GACxBA,IAAO7B,SAASY,cAAc,4BAA4BkE,UAAYjD,GACtEe,OAAO+B,QAAQC,eAGXhF,EAAAgC,UAAA0C,2BAAR,SAAmCzC,GAC/B7B,SAASY,cAAc,6BAA6B2C,UAAY1B,EAChE6C,WAAW,WAAM,OAAA9B,OAAO+B,QAAQC,eAAe,KAC/C7E,KAAKgF,aAAe/E,SAASY,cAAc,2BAC3Cb,KAAKgF,aAAanE,cAAc,gBAAgBwB,UAAUvB,IAAI,QAC9D,IAAMmE,EAA4BjF,KAAKgF,aAAanE,cAAc,0BAIlE,GAHIoE,IAAiBL,QAAQM,UACzB3E,OAAAf,EAAA,EAAAe,CAAS0E,EAAc,QAExBhF,SAASY,cAAc,6BAA6B,CAC3BsE,QAAAC,KAAAlG,EAAAsB,EAAA,GAAAtB,EAAAsB,EAAA,KAAAC,KAAAvB,EAAAwB,KAAA,WACZD,KAAK,SAACE,GAAW,WAAIA,EAAOC,QAAQX,SAASY,cAAc,6CAK3EN,OAAAZ,EAAA,EAAAY,GACAA,OAAAd,EAAA,0BAAAc,GACAA,OAAAd,EAAA,2BAAAc,GACAA,OAAAZ,EAAA,EAAAY,GAGAA,OAAAX,EAAA,EAAAW,IAERV,EA3LA,eA8LA,IAAIA,EAAasB,wCC3MjBjC,EAAAmG,EAAAjG,EAAA,sBAAAkG,IAAApG,EAAAmG,EAAAjG,EAAA,sBAAAmG,IAAArG,EAAAmG,EAAAjG,EAAA,sBAAAoG,IAAAtG,EAAAmG,EAAAjG,EAAA,sBAAAqG,IAAAvG,EAAAmG,EAAAjG,EAAA,sBAAAsG,IAAA,IAAMC,EAAqB,YACrBC,EAA0B,iBAEhC,SAASC,EAAkB/F,EAASgG,EAAWC,EAAKC,GAChD,IAAMC,EAAsBnG,EAAQe,cAAc,mBAC5CqF,EAAQC,WAAWF,GAAuBA,EAAoB3F,aAAa,kBAE3E8F,EAAWtG,EAAQQ,aAAa,oBAEhC+F,GACFC,aAAeC,KAAMH,GACrBI,WACIC,GAAI3G,EAAQQ,aAAa,eACzBoG,KAAM5G,EAAQQ,aAAa,gBAC3BqG,MAAO,UACPP,SAAUA,EACVQ,QAAS9G,EAAQQ,aAAa,mBAC9B4F,MAAOA,EACPW,SAAUd,IAEde,KAAMd,GAGJ7F,GACFA,MAAO2F,EACPiB,WACIC,aAAclH,EAAQQ,aAAa,sBAIvCwF,IAAcH,EACdxF,EAAM4G,UAAUjG,IAAMuF,EACjBP,IAAcF,IACnBzF,EAAM4G,UAAUzE,OAAS+D,GAE7BxD,OAAOoE,UAAUC,KAAK/G,GAGnB,SAASmF,EAAY6B,GACxB,IAAMrH,EAAUqH,EACVC,EAAatH,EAAQQ,aAAa,mBAClC+G,EAAiBvH,EAAQmE,QAAQ,sBAAsB3D,aAAa,oBAEtEuC,OAAOoE,WACPpE,OAAOoE,UAAUC,MACb/G,MAAO,WACPmH,cAAe,SACfC,YAAaF,EACbG,WAAYJ,EACZK,qBAAqB,IAM1B,SAASlC,EAAyBzF,EAASiG,QAAA,IAAAA,MAAA,GAC9CF,EAAkB/F,EAAS6F,EAAoBI,EAAMjG,EAAQmE,QAAQ,WAAc,SAAW,UAG3F,SAASuB,EAA8B1F,EAAS4H,EAAQC,GAE3D9B,EAAkB/F,EADA6H,EAASD,IAAWE,KAAKC,IAAIF,EAASD,GAAU/B,EAAqBC,EACjDgC,KAAKC,IAAIF,EAASD,GAAS,YAG9D,SAASjC,EAA8B3F,EAASiG,GACnDF,EAAkB/F,EAAS8F,EAAyBG,EAAK,UAGtD,SAASL,EAAoB6B,EAAqBC,QAAA,IAAAA,MAAA,IACrD3E,OAAOoE,UAAUC,MACb/G,MAAO,WACPmH,cAAe,SACfC,YAAaA,EACbC,WAAYA,EAAWM,OAAS,EAAIN,OAAaO,EACjDN,qBAAqB,uCCxE7B,IAAAO,EAAA,WAKI,SAAAA,EAAYC,EAAiBC,GACzBlI,KAAKiI,gBAAkBA,EACvBjI,KAAKmI,eAAiBD,EAoC9B,OAjCIF,EAAAnG,UAAAoB,WAAA,SAAWV,EAAKS,GAAhB,IAAAjD,EAAAC,KACQoI,EAAQ,IAAIC,eAEhBD,EAAME,mBAAqB,WACE,IAArBF,EAAMG,aACe,MAAjBH,EAAMI,OACNzI,EAAK0I,UAAUL,EAAOpF,GAEA,MAAjBoF,EAAMI,QAAmC,MAAjBJ,EAAMI,QAAmC,MAAjBJ,EAAMI,SACtB,mBAAzBzI,EAAmB,eAC3BA,EAAK2I,SAASN,EAAOpF,GAErB2F,QAAQC,KAAK,qBAAqBR,EAAMI,WAMxDJ,EAAMS,KAAK,MAAOtG,GAClB6F,EAAMU,QAGVd,EAAAnG,UAAA4G,UAAA,SAAUL,EAAOpF,GACyB,mBAA1BhD,KAAoB,iBAC5BA,KAAKiI,gBAAgBG,EAAMpG,aAAcgB,IAIjDgF,EAAAnG,UAAA6G,SAAA,SAASN,EAAOpF,GACyB,mBAAzBhD,KAAmB,gBAC3BA,KAAKmI,eAAeC,EAAOpF,IAGvCgF,EA3CA,0CCFA9I,EAAAC,EAAAC,GAAAF,EAAAmG,EAAAjG,EAAA,uCAAA2J,IAAA7J,EAAAmG,EAAAjG,EAAA,yCAAA4J,IAAA,IAAAC,EAAA/J,EAAA,GAGAgK,EAAA,WAUI,SAAAA,KAMJ,OAbWA,EAAA/H,MAAP,SAAaC,QAAA,IAAAA,MANM,iCAOfC,MAAMC,KAAKrB,SAASsB,iBAAiBH,IAAWI,OAAO,SAACC,GAAsB,OAACA,EAAKC,QAAQC,oBAAmBC,QAAQ,SAAC9B,GACpH,IAAIoJ,EACJpJ,EAAQ4B,QAAQC,kBAAoB,UAUhDuH,EAhBA,GAkBO,SAASH,IACZ,IAAMI,EAAOlJ,SAASY,cAAc,QAChCuI,EAA0BnJ,SAASY,cAAc,QAAQwB,UAAUgH,SAAS,6BAEhFhI,MAAMC,KAAKrB,SAASsB,iBAAiB,qCAAqCK,QAAQ,SAAC9B,GAC/EA,EAAQI,iBAAiB,QAAS,WAC9BJ,EAAQmE,QAAQ,sBAAsB3B,SACtCrC,SAASY,cAAc,QAAQwB,UAAUgH,SAAS,6BAC9CD,GAAyBD,EAAK9G,UAAUC,OAAO,6BACnDrC,SAASY,cAAc,iBAAmBZ,SAASY,cAAc,gBAAgBwB,UAAUgH,SAAS,yBAA0BpJ,SAASY,cAAc,gBAAgBwB,UAAUC,OAAO,4BAK3L,SAAS0G,EAAqBlJ,EAASwJ,GAC1C,IAAKrJ,SAASY,cAAc,kBAAmB,CAC3C,IAAM0I,EAAsBhJ,OAAA0I,EAAA,EAAA1I,CAAwB,0JAGlC+I,EAAO,kIAKzBrJ,SAASY,cAAc,QAAQ2I,sBAAsB,YAAaD,GAClER,IAGAjJ,EAAQmE,QAAQ,sBAAsBnE,EAAQmE,QAAQ,qBAAqBpD,cAAc,YAAYwB,UAAUC,OAAO,4BAG9H,IAAI4G,EAAc/H,uCCpDlBjC,EAAAC,EAAAC,GAAAF,EAAAmG,EAAAjG,EAAA,+CAAAqK,IAAAvK,EAAAmG,EAAAjG,EAAA,8CAAAsK,IAAA,IAAAT,EAAA/J,EAAA,GAAAyK,EAAAzK,EAAA,GAAA0K,EAAA1K,EAAA,GAAA2K,EAAA3K,EAAA,IASA4K,EAAA,WAUI,SAAAA,EAAmBhK,GAAAE,KAAAF,UACfE,KAAK+J,oBAuCb,OA/CWD,EAAA3I,MAAP,SAAaC,QAAA,IAAAA,MALM,iCAMfC,MAAMC,KAAKrB,SAASsB,iBAAiBH,IAAWI,OAAO,SAACC,GAAsB,OAACA,EAAKC,QAAQC,oBAAmBC,QAAQ,SAAC9B,GACpH,IAAIgK,EAAchK,GAClBA,EAAQ4B,QAAQC,kBAAoB,UAQ5CmI,EAAAjI,UAAAkI,kBAAA,eAAAhK,EAAAC,KACUgK,EAA8BhK,KAAKF,QAAQe,cAAc,oBAE3DmJ,IACAA,EAAe9J,iBAAiB,QAAS,SAACC,GAAiB,OAAAJ,EAAKkK,kBAAkB9J,KAClFH,KAAKkK,wBAIbJ,EAAAjI,UAAAoI,kBAAA,SAAkB9J,GACdA,EAAMgK,iBACN5J,OAAA0I,EAAA,EAAA1I,CAAsBP,KAAKF,QAAS,WAChCG,SAASY,cAAc,uBAA0BZ,SAASY,cAAc,oBAAoBwB,UAAUgH,SAAS,gBAC/GhI,MAAMC,KAAKrB,SAASsB,iBAAiB,wBAAwBK,QAAQ,SAAC9B,GAClEA,EAAQI,iBAAiB,QAAS,SAACM,GAC/BD,OAAAqJ,EAAA,EAAArJ,CAA8BC,EAAGV,GACjCS,OAAAsJ,EAAA,EAAAtJ,QAMhBuJ,EAAAjI,UAAAqI,oBAAA,eAAAnK,EAAAC,KACIC,SAASC,iBAAiB,QAAS,SAACC,GAEhC,IAAMiK,EAAsBjK,EAAMiK,OAE7BA,EAAOnG,QAAQ,qBAAwBmG,EAAOnG,QAAQ,oBACvDlE,EAAKsK,kBAA+BtK,EAAKD,YAKrDgK,EAAAjI,UAAAwI,kBAAA,SAAkBC,GACd/J,OAAA0I,EAAA,EAAA1I,CAAyBP,KAAKF,QAAS,YAE/CgK,EAlDA,GAoDO,SAASL,IACZ,IAAIO,EAAiB/J,SAASY,cAAc,oBACxCmJ,GACIA,EAAe3H,UAAUgH,SAAS,eAAkBW,EAAe3H,UAAUgH,SAAS,gBACtFW,EAAe9J,iBAAiB,QAAS,SAACM,GAAM,OAAAD,OAAAqJ,EAAA,EAAArJ,CAA8BC,EAAGwJ,KAKtF,SAASN,IACZ,IAAIM,EAAiB/J,SAASY,cAAc,oBACzCmJ,GAAkBA,EAAe3H,UAAUgH,SAAS,gBACnDW,EAAe9J,iBAAiB,QAAS,WACrCK,OAAAqJ,EAAA,EAAArJ,GAGAA,OAAAsJ,EAAA,EAAAtJ,GAEGyJ,EAAe3H,UAAUgH,SAAS,cACjC9I,OAAAoJ,EAAA,EAAApJ,CAAU,OAAQ,kBAAmB,iBAMrD,IAAIuJ,EAAc3I","file":"./modules/ShoppingCart.ac513674.js","sourcesContent":["import AjaxLoader from '../AjaxLoader';\r\nimport { errorHandlingContent, closeErrorHandling } from '../modules/ErrorHandling';\r\nimport { emptyCartCanvas } from '../helpers/helperFunctions';\r\nimport { addClass } from '../helpers/DOMHelpers';\r\nimport {trackFirstCheckoutStep_V2 ,trackLogedInCheckoutButton } from '../modules/CheckoutPanel';\r\n\r\n\r\nimport { addToCartProductTracking } from '../helpers/trackingHelpers';\r\nimport { shoppingBagProductsTracking, trackProductImpressions } from '../Tracking';\r\nimport { addToCartProductTrackingGA4, viewCartEvent } from '../TrackingGA4';\r\n\r\nconst moduleSelector = '[data-module=\"ShoppingCart\"]';\r\n\r\nexport default class ShoppingCart {\r\n counter: HTMLElement;\r\n ajaxLoader: AjaxLoader;\r\n shoppingCart: HTMLElement;\r\n cartIcon: HTMLElement;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new ShoppingCart(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n document.addEventListener('buyNowButton:add', (event: any) => {\r\n var btn = event.detail.btn as HTMLElement;\r\n if (!(btn.getAttribute('data-legacy') === 'true')) {\r\n emptyCartCanvas();\r\n\r\n const OffCanvas = () => import ('../modules/OffCanvas');\r\n OffCanvas().then((module) => new module.default(document.querySelector('.empty.shopping-bag-overview')));\r\n\r\n this.add((event).detail.btn)\r\n } else {\r\n this.add((event).detail.btn)\r\n }\r\n });\r\n this.ajaxLoader = new AjaxLoader(this.updateCounter.bind(this), this.onError.bind(this))\r\n this.countCartNumber();\r\n }\r\n\r\n onError(data) {\r\n const { responseText, ErrorMessage, Success } = data;\r\n let errorArrayMessage;\r\n if (Success === false) {\r\n errorArrayMessage = ErrorMessage;\r\n } else {\r\n const errorArray = JSON.parse(responseText);\r\n errorArrayMessage = errorArray.ErrorMessage;\r\n }\r\n\r\n if (!document.querySelector(\".error-handler\")) {\r\n errorHandlingContent(this.element, errorArrayMessage);\r\n document.querySelector(\".cart-loader\").classList.remove(\"lazy-spinner\");\r\n }\r\n }\r\n\r\n add(btn) {\r\n var url: string,\r\n ean: string;\r\n url = btn.getAttribute('data-ajax-url');\r\n ean = btn.getAttribute('data-ean');\r\n\r\n this.request(this.prepareUrl(url, ean), ean);\r\n\r\n }\r\n\r\n prepareUrl(url: string, ean: string) {\r\n return url.replace('#ean', ean) + (url.indexOf('?') !== -1 ? '&' : '?') + 'ajax_context=' + window.location.pathname;\r\n }\r\n\r\n request(url: string, targetIndentity) {\r\n this.ajaxLoader.requestUrl(url, targetIndentity);\r\n }\r\n\r\n isJSON(data) {\r\n try {\r\n return (JSON.parse(data) && !!data);\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n updateCounter(data: any, targetIndentity, counterNo) {\r\n if (!this.isJSON(data)) {\r\n let numberOfProduct;\r\n this.cartIcon = document.querySelector('.cart');\r\n const markup = document.createElement('div');\r\n markup.innerHTML = data;\r\n numberOfProduct = markup.querySelector('.shop-mini-cart').getAttribute('data-number-of-products-in-cart');\r\n this.cartIcon.querySelector('span').innerHTML = numberOfProduct;\r\n markup.remove();\r\n // this.cartIcon.appendChild = data;\r\n\r\n if (numberOfProduct < 10) {\r\n this.cartIcon.classList.remove('reduced-font');\r\n this.cartIcon.classList.remove('hide-cart-icon');\r\n } else {\r\n this.cartIcon.classList.add('reduced-font');\r\n }\r\n return;\r\n }\r\n\r\n const dataJsonParse = JSON.parse(data);\r\n\r\n if (dataJsonParse.Success === false) {\r\n this.onError(dataJsonParse);\r\n return false\r\n }\r\n if (document.querySelector('html').getAttribute('lang') !== 'th-TH') {\r\n const getBtnContent = dataJsonParse.MarkupToSet;\r\n const getObj = getBtnContent[Object.keys(getBtnContent)[0]];\r\n this.addToCartBtnReplace(getObj);\r\n\r\n }\r\n\r\n if (document.querySelector(\".shopping-bag-overview .notification\")) document.querySelector(\"body\").classList.add(\"notification-pannel-added\");\r\n\r\n const elementWithTargetIdentity = document.querySelector(`[data-ean=\"${targetIndentity}\"]`);\r\n if (elementWithTargetIdentity) {\r\n const cartTrackingContainerElement = elementWithTargetIdentity.closest('[cart-tracking]');\r\n cartTrackingContainerElement && addToCartProductTracking(cartTrackingContainerElement);\r\n //GA4 Add To Cart\r\n cartTrackingContainerElement && addToCartProductTrackingGA4(cartTrackingContainerElement);\r\n }\r\n\r\n if (dataJsonParse.ShoppingCartHtml) {\r\n const parsedShoppingCartHtml = new DOMParser().parseFromString(dataJsonParse.ShoppingCartHtml, \"text/html\");\r\n const shoppingCartOffcanvasPush = parsedShoppingCartHtml.getElementById(\"offcanvas-push\");\r\n shoppingCartOffcanvasPush && this.shoppingBagOverviewContent(shoppingCartOffcanvasPush.innerHTML);\r\n }\r\n if(dataJsonParse.ShoppingCartItemsCount){\r\n this.countCartNumberByFirstRequest(dataJsonParse.ShoppingCartItemsCount);\r\n }\r\n\r\n Array.from(document.querySelectorAll('.add-to-bag')).forEach((element) => {\r\n element.classList.remove('loader');\r\n })\r\n\r\n if (document.querySelector(\".overlay-wrapper\") && dataJsonParse.OverlayMarkup) {\r\n document.querySelector(\".overlay-wrapper\").innerHTML = dataJsonParse.OverlayMarkup;\r\n\r\n const StickableShoppingCartOverlay = () => import ('../modules/OffCanvas');\r\n StickableShoppingCartOverlay().then((module) => new module.default(document.querySelector('.add-to-cart-overlay')));\r\n\r\n this.element.classList.add(\"active\");\r\n\r\n setTimeout(() => {\r\n document.querySelector(\".overlay-wrapper\").innerHTML = \"\";\r\n this.element.classList.remove(\"active\");\r\n this.element.classList.remove('loader');\r\n }, 3000)\r\n }\r\n\r\n window.Eucerin.initModules();\r\n closeErrorHandling();\r\n }\r\n private countCartNumberByFirstRequest(counterNo) {\r\n const CountCart = () => import ('./CountCart');\r\n CountCart().then((module) => new module.renderCountNumber(counterNo))\r\n }\r\n\r\n private countCartNumber() {\r\n const CountCart = () => import ('../modules/CountCart');\r\n CountCart().then((module) => new module.default());\r\n }\r\n\r\n private addToCartBtnReplace(data) {\r\n data ? document.querySelector('.pdp-wrapper .add-to-bag').outerHTML = data : \"\";\r\n window.Eucerin.initModules();\r\n }\r\n\r\n private shoppingBagOverviewContent(data) {\r\n document.querySelector('.empty .uk-offcanvas-push').innerHTML = data;\r\n setTimeout(() => window.Eucerin.initModules(), 100);\r\n this.shoppingCart = document.querySelector('.empty.off-canvas-slide');\r\n this.shoppingCart.querySelector('.bag-overlay').classList.add('open');\r\n const paymentPanel = this.shoppingCart.querySelector('.payment-panel-wrapper');\r\n if (paymentPanel && !Eucerin.isMobile) {\r\n addClass(paymentPanel, 'show')\r\n }\r\n if(document.querySelector(\".shopping-bag-total-price\")){\r\n const ScrollBar = () => import ('../modules/scrollBar');\r\n ScrollBar().then((module) => new module.default(document.querySelector(\".shopping-bag-overview .canvas-overlay\") as HTMLElement))\r\n } \r\n // new OffCanvas(this.element);\r\n\r\n //Tracking\r\n shoppingBagProductsTracking();\r\n trackFirstCheckoutStep_V2();\r\n trackLogedInCheckoutButton();\r\n trackProductImpressions();\r\n\r\n //GA4 View Cart \r\n viewCartEvent();\r\n }\r\n}\r\n\r\n\r\nnew ShoppingCart.setup();","const addToCartEventName = 'addToCart';\r\nconst removeFromCartEventName = 'removeFromCart';\r\n\r\nfunction cartTrackingEvent(element, eventName, qty, btnType) {\r\n const productPriceElement = element.querySelector('[product-price]');\r\n const price = parseFloat(productPriceElement && productPriceElement.getAttribute('product-price'))\r\n\r\n const category = element.getAttribute('product-category');\r\n\r\n const eventData = {\r\n actionField: { list: category },\r\n products: [{\r\n id: element.getAttribute('product-sku'),\r\n name: element.getAttribute('product-name'),\r\n brand: 'Eucerin',\r\n category: category,\r\n variant: element.getAttribute('product-variant'),\r\n price: price,\r\n quantity: qty\r\n }],\r\n type: btnType\r\n };\r\n\r\n const event: { event; ecommerce } = {\r\n event: eventName,\r\n ecommerce: {\r\n currencyCode: element.getAttribute('product-currency'),\r\n }\r\n };\r\n\r\n if (eventName === addToCartEventName)\r\n event.ecommerce.add = eventData;\r\n else if (eventName === removeFromCartEventName)\r\n event.ecommerce.remove = eventData;\r\n\r\n window.dataLayer.push(event);\r\n}\r\n\r\nexport function trackFilter(item) {\r\n const element = item as HTMLElement;\r\n const filterName = element.getAttribute('data-value-name');\r\n const filterCategory = element.closest('[data-filter-name]').getAttribute('data-filter-name');\r\n\r\n if (window.dataLayer) {\r\n window.dataLayer.push({\r\n event: 'ga_event',\r\n eventCategory: 'Filter',\r\n eventAction: filterCategory,\r\n eventLabel: filterName,\r\n eventNonInteraction: false\r\n });\r\n }\r\n\r\n}\r\n\r\nexport function addToCartProductTracking(element, qty = 1) {\r\n cartTrackingEvent(element, addToCartEventName, qty, (element.closest(\".teaser\")) ? 'Teaser' : 'Button');\r\n}\r\n\r\nexport function changeProductQuantityTracking(element, oldQty, newQty) {\r\n const eventName = newQty - oldQty === Math.abs(newQty - oldQty) ? addToCartEventName : removeFromCartEventName;\r\n cartTrackingEvent(element, eventName, Math.abs(newQty - oldQty), 'Dropdown');\r\n}\r\n\r\nexport function removeFromCartProductTracking(element, qty) {\r\n cartTrackingEvent(element, removeFromCartEventName, qty, 'Button');\r\n}\r\n\r\nexport function trackSliderMovement(eventAction: string, eventLabel: string = '') {\r\n window.dataLayer.push({\r\n event: 'ga_event',\r\n eventCategory: 'Teaser',\r\n eventAction: eventAction,\r\n eventLabel: eventLabel.length > 0 ? eventLabel : undefined,\r\n eventNonInteraction: false\r\n });\r\n}","/// \r\n\r\nexport default class AjaxLoader {\r\n\r\n private callbackSuccess: any;\r\n private callbackFailed: any;\r\n\r\n constructor(callbackSuccess, callBackFailed?) {\r\n this.callbackSuccess = callbackSuccess;\r\n this.callbackFailed = callBackFailed;\r\n }\r\n\r\n requestUrl(url, targetIndentity?) {\r\n let xhttp = new XMLHttpRequest();\r\n\r\n xhttp.onreadystatechange = () => {\r\n if (xhttp.readyState === 4) {\r\n if (xhttp.status === 200) {\r\n this.onSuccess(xhttp, targetIndentity);\r\n }\r\n else if (xhttp.status === 404 || xhttp.status === 500 || xhttp.status === 400) {\r\n if (typeof (this.callbackFailed) === 'function') {\r\n this.onFailed(xhttp, targetIndentity);\r\n } else {\r\n console.warn(`Request failed:/\\n${xhttp.status}`);\r\n }\r\n }\r\n }\r\n };\r\n\r\n xhttp.open('Get', url);\r\n xhttp.send();\r\n }\r\n\r\n onSuccess(xhttp, targetIndentity) {\r\n if (typeof (this.callbackSuccess) === 'function') {\r\n this.callbackSuccess(xhttp.responseText, targetIndentity);\r\n }\r\n }\r\n\r\n onFailed(xhttp, targetIndentity?) {\r\n if (typeof (this.callbackFailed) === 'function') {\r\n this.callbackFailed(xhttp, targetIndentity);\r\n }\r\n }\r\n}\r\n","const moduleSelector = '[data-module=\"ErrorHandling\"]';\r\nimport { createElementFromString } from '../helpers/DOMHelpers';\r\n\r\nexport default class ErrorHandling {\r\n serverSideError: HTMLElement;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new ErrorHandling();\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor() {\r\n //this.serverSideError = document.querySelector(\".server-side-error\");\r\n //if (this.serverSideError && !this.serverSideError.classList.contains('error-handler')) {\r\n // this.serverSideError.classList.add(\"cp-container\");\r\n //}\r\n }\r\n}\r\n\r\nexport function closeErrorHandling() {\r\n const body = document.querySelector(\"body\"),\r\n notificationPannelAdded = document.querySelector(\"body\").classList.contains(\"notification-pannel-added\");\r\n\r\n Array.from(document.querySelectorAll(\".server-side-error .layer__close\")).forEach((element) => {\r\n element.addEventListener(\"click\", () => {\r\n element.closest(\".server-side-error\").remove();\r\n document.querySelector(\"body\").classList.contains(\"notification-pannel-added\");\r\n if (notificationPannelAdded) body.classList.remove(\"notification-pannel-added\");\r\n document.querySelector(\".checkout-v2\") && document.querySelector(\".checkout-v2\").classList.contains(\"server-error-message\") ? document.querySelector(\".checkout-v2\").classList.remove(\"server-error-message\") : \"\";\r\n })\r\n })\r\n}\r\n\r\nexport function errorHandlingContent(element, message) {\r\n if (!document.querySelector(\".error-handler\")) {\r\n const errorHandlerContent = createElementFromString(`\r\n
\r\n
\r\n ${message}\r\n \r\n
\r\n
\r\n `)\r\n document.querySelector(\"body\").insertAdjacentElement(\"beforeend\", errorHandlerContent);\r\n closeErrorHandling();\r\n }\r\n\r\n if (element.closest(\".uk-offcanvas-bar\")) element.closest(\".uk-offcanvas-bar\").querySelector(\".spinner\").classList.remove(\"lazy-spinner\");\r\n}\r\n\r\nnew ErrorHandling.setup();","import { addClass, removeClass } from '../helpers/DOMHelpers';\r\nimport { setCookie } from '../helpers/helperFunctions';\r\n\r\n\r\nimport { checkoutV2FirstStepTracking, checkoutStepOneOptionTracking } from '../Tracking';\r\nimport { beginCheckoutEvent } from '../TrackingGA4';\r\n\r\nconst moduleSelector = '[data-module=\"CheckoutPanel\"]';\r\n\r\nexport default class CheckoutPanel {\r\n counter: HTMLElement;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new CheckoutPanel(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.initCheckoutPanel()\r\n }\r\n\r\n initCheckoutPanel() {\r\n const checkoutButton = this.element.querySelector('.checkout-button');\r\n\r\n if (checkoutButton) {\r\n checkoutButton.addEventListener('click', (event: Event) => this.showCheckoutPanel(event));\r\n this.hidePanelOnClickOut();\r\n }\r\n }\r\n\r\n showCheckoutPanel(event: Event) {\r\n event.preventDefault();\r\n addClass(this.element, 'visible');\r\n if (document.querySelector(\".checkout-options\") && !(document.querySelector('.checkout-button').classList.contains(\"checkout-v2\"))) {\r\n Array.from(document.querySelectorAll('.checkout-options a')).forEach((element: HTMLElement) => {\r\n element.addEventListener('click', (e) => {\r\n checkoutStepOneOptionTracking(e, element)\r\n beginCheckoutEvent();\r\n })\r\n });\r\n }\r\n }\r\n\r\n hidePanelOnClickOut() {\r\n document.addEventListener('click', (event) => {\r\n\r\n const target = event.target;\r\n\r\n if (!target.closest('.checkout-button') && !target.closest('.checkout-panel')) {\r\n this.hideCheckoutPanel(this.element)\r\n }\r\n });\r\n }\r\n\r\n hideCheckoutPanel(checkoutPanel: HTMLElement) {\r\n removeClass(this.element, 'visible');\r\n }\r\n}\r\n\r\nexport function trackLogedInCheckoutButton() {\r\n var checkoutButton = document.querySelector('.checkout-button');\r\n if (checkoutButton) {\r\n if (checkoutButton.classList.contains(\"logged-in\") && !(checkoutButton.classList.contains(\"checkout-v2\"))) {\r\n checkoutButton.addEventListener('click', (e) => checkoutStepOneOptionTracking(e, checkoutButton))\r\n }\r\n }\r\n}\r\n\r\nexport function trackFirstCheckoutStep_V2(){\r\n var checkoutButton = document.querySelector('.checkout-button');\r\n if(checkoutButton && checkoutButton.classList.contains(\"checkout-v2\")){\r\n checkoutButton.addEventListener('click', () =>{ \r\n checkoutV2FirstStepTracking()\r\n\r\n //GA4 Begin Checkout - New Checkout\r\n beginCheckoutEvent()\r\n\r\n if(checkoutButton.classList.contains(\"logged-in\")){\r\n setCookie(\"User\", \"AlreadyLoggedIn\", 0); \r\n }\r\n })\r\n }\r\n}\r\n\r\nnew CheckoutPanel.setup();"],"sourceRoot":""}