{"version":3,"file":"cart.min.js","sources":["cart.js"],"sourcesContent":["((w) => {\r\n const utils = new GtmUtils();\r\n var externalTrackingSystemName = 'gtm';\r\n\r\n if (w.ExternalTrackingEventBus) {\r\n w.ExternalTrackingEventBus.register(externalTrackingSystemName);\r\n }\r\n\r\n w.PubSub.subscribe('externaltracking.shopcart', (topic, data) => {\r\n const channelParts = topic.split('.');\r\n const topicAction = channelParts[channelParts.length - 1];\r\n var topicActionLowerCase = topicAction.toLowerCase();\r\n const currencyCode = utils.getCurrencyCode();\r\n\r\n const mapConvertItems = (items) => items.map(trackableOrderLine =>\r\n utils.convertToGtmGa4Product(trackableOrderLine.product, {\r\n 'price': trackableOrderLine.unitPrice,\r\n 'quantity': trackableOrderLine.quantity\r\n }));\r\n\r\n try {\r\n switch (topicActionLowerCase) {\r\n case 'addtocart':\r\n var gtmAddProducts = mapConvertItems(data.items);\r\n pushGtmEvent('add', gtmAddProducts, data.source);\r\n break;\r\n case 'removefromcart':\r\n var gtmRemoveProducts = mapConvertItems(data.items);\r\n pushGtmEvent('remove', gtmRemoveProducts, data.source);\r\n break;\r\n case 'updatecartquantity':\r\n if (data.addedQtyItems && data.addedQtyItems.length) {\r\n var gtmAddQtyProducts = mapConvertItems(data.addedQtyItems);\r\n pushGtmEvent('add', gtmAddQtyProducts, data.source);\r\n }\r\n else if (data.removedQtyItems && data.removedQtyItems.length) {\r\n var gtmRemoveQtyProducts = mapConvertItems(data.removedQtyItems);\r\n pushGtmEvent('remove', gtmRemoveQtyProducts, data.source);\r\n }\r\n break;\r\n default:\r\n throw 'Unknown shopcart action received via pubsub: ' + topicAction;\r\n }\r\n\r\n } catch (e) {\r\n console.error('[GTM]: Failed to push cart changes to dataLayer. Reason: ' + e);\r\n }\r\n finally {\r\n if (w.ExternalTrackingEventBus) {\r\n w.ExternalTrackingEventBus.eventHandled(externalTrackingSystemName, topicActionLowerCase, data);\r\n }\r\n }\r\n\r\n function pushGtmEvent(type, products, source) {\r\n var gtmEvent;\r\n switch (type) {\r\n case 'add':\r\n gtmEvent = {\r\n 'event': 'add_to_cart',\r\n 'ecommerce': {\r\n 'currency': currencyCode,\r\n 'items': products\r\n }\r\n };\r\n break;\r\n case 'remove':\r\n gtmEvent = {\r\n 'event': 'remove_from_cart',\r\n 'ecommerce': {\r\n 'currency': currencyCode,\r\n 'items': products\r\n }\r\n };\r\n break;\r\n default:\r\n throw 'Unknown GtmEvent type: ' + type;\r\n\r\n }\r\n\r\n w.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n w.dataLayer.push(gtmEvent);\r\n\r\n if (source === 'callback') {\r\n w.PubSub.publish('externaltracking.complete');\r\n }\r\n }\r\n });\r\n})(window);"],"names":["utils","GtmUtils","w","ExternalTrackingEventBus","register","PubSub","subscribe","topic","data","channelParts","split","topicAction","length","topicActionLowerCase","toLowerCase","currencyCode","getCurrencyCode","mapConvertItems","items","map","trackableOrderLine","convertToGtmGa4Product","product","price","unitPrice","quantity","pushGtmEvent","source","addedQtyItems","removedQtyItems","e","console","error","eventHandled","type","products","gtmEvent","event","ecommerce","currency","dataLayer","push","publish","window"],"mappings":"CAAC,IACG,IAAMA,EAAQ,IAAIC,SAGdC,EAAEC,0BACFD,EAAEC,yBAAyBC,SAHE,KAGiC,EAGlEF,EAAEG,OAAOC,UAAU,4BAA6B,CAACC,EAAOC,KACpD,IAAMC,EAAeF,EAAMG,MAAM,GAAG,EAC9BC,EAAcF,EAAaA,EAAaG,OAAS,GACnDC,EAAuBF,EAAYG,YAAY,EACnD,IAAMC,EAAef,EAAMgB,gBAAgB,EAE3C,IAAMC,EAAkB,GAAWC,EAAMC,IAAIC,GACzCpB,EAAMqB,uBAAuBD,EAAmBE,QAAS,CACrDC,MAASH,EAAmBI,UAC5BC,SAAYL,EAAmBK,QACnC,CAAC,CAAC,EAEN,IACI,OAAQZ,GACJ,IAAK,YAEDa,EAAa,MADQT,EAAgBT,EAAKU,KAAK,EACXV,EAAKmB,MAAM,EAC/C,MACJ,IAAK,iBAEDD,EAAa,SADWT,EAAgBT,EAAKU,KAAK,EACRV,EAAKmB,MAAM,EACrD,MACJ,IAAK,qBACGnB,EAAKoB,eAAiBpB,EAAKoB,cAAchB,OAEzCc,EAAa,MADWT,EAAgBT,EAAKoB,aAAa,EACnBpB,EAAKmB,MAAM,EAE7CnB,EAAKqB,iBAAmBrB,EAAKqB,gBAAgBjB,QAElDc,EAAa,SADcT,EAAgBT,EAAKqB,eAAe,EAClBrB,EAAKmB,MAAM,EAE5D,MACJ,QACI,KAAM,gDAAkDhB,CAChE,CASJ,CAPE,MAAOmB,GACLC,QAAQC,MAAM,4DAA8DF,CAAC,CACjF,CACA,QACQ5B,EAAEC,0BACFD,EAAEC,yBAAyB8B,aA/CN,MA+C+CpB,EAAsBL,CAAI,CAEtG,CAEA,SAASkB,EAAaQ,EAAMC,EAAUR,GAClC,IAAIS,EACJ,OAAQF,GACJ,IAAK,MACDE,EAAW,CACPC,MAAS,cACTC,UAAa,CACTC,SAAYxB,EACZG,MAASiB,CACb,CACJ,EACA,MACJ,IAAK,SACDC,EAAW,CACPC,MAAS,mBACTC,UAAa,CACTC,SAAYxB,EACZG,MAASiB,CACb,CACJ,EACA,MACJ,QACI,KAAM,0BAA4BD,CAE1C,CAEAhC,EAAEsC,UAAUC,KAAK,CAAEH,UAAW,IAAK,CAAC,EACpCpC,EAAEsC,UAAUC,KAAKL,CAAQ,EAEV,aAAXT,GACAzB,EAAEG,OAAOqC,QAAQ,2BAA2B,CAEpD,CACJ,CAAC,CACJ,GAAEC,MAAM"}