{"version":3,"file":"cart.min.js","sources":["cart.js"],"sourcesContent":["((w) => {\n const utils = new GtmUtils();\n var externalTrackingSystemName = 'gtm';\n\n if (w.ExternalTrackingEventBus) {\n w.ExternalTrackingEventBus.register(externalTrackingSystemName);\n }\n\n w.PubSub.subscribe('externaltracking.shopcart', (topic, data) => {\n const channelParts = topic.split('.');\n const topicAction = channelParts[channelParts.length - 1];\n var topicActionLowerCase = topicAction.toLowerCase();\n const currencyCode = utils.getCurrencyCode();\n\n const mapConvertItems = (items) => items.map(trackableOrderLine =>\n utils.convertToGtmGa4Product(trackableOrderLine.product, {\n 'price': trackableOrderLine.unitPrice,\n 'quantity': trackableOrderLine.quantity\n }));\n\n try {\n switch (topicActionLowerCase) {\n case 'addtocart':\n var gtmAddProducts = mapConvertItems(data.items);\n pushGtmEvent('add', gtmAddProducts, data.source);\n break;\n case 'removefromcart':\n var gtmRemoveProducts = mapConvertItems(data.items);\n pushGtmEvent('remove', gtmRemoveProducts, data.source);\n break;\n case 'updatecartquantity':\n if (data.addedQtyItems && data.addedQtyItems.length) {\n var gtmAddQtyProducts = mapConvertItems(data.addedQtyItems);\n pushGtmEvent('add', gtmAddQtyProducts, data.source);\n }\n else if (data.removedQtyItems && data.removedQtyItems.length) {\n var gtmRemoveQtyProducts = mapConvertItems(data.removedQtyItems);\n pushGtmEvent('remove', gtmRemoveQtyProducts, data.source);\n }\n break;\n default:\n throw 'Unknown shopcart action received via pubsub: ' + topicAction;\n }\n\n } catch (e) {\n console.error('[GTM]: Failed to push cart changes to dataLayer. Reason: ' + e);\n }\n finally {\n if (w.ExternalTrackingEventBus) {\n w.ExternalTrackingEventBus.eventHandled(externalTrackingSystemName, topicActionLowerCase, data);\n }\n }\n\n function pushGtmEvent(type, products, source) {\n var gtmEvent;\n switch (type) {\n case 'add':\n gtmEvent = {\n 'event': 'add_to_cart',\n 'ecommerce': {\n 'currency': currencyCode,\n 'items': products\n }\n };\n break;\n case 'remove':\n gtmEvent = {\n 'event': 'remove_from_cart',\n 'ecommerce': {\n 'currency': currencyCode,\n 'items': products\n }\n };\n break;\n default:\n throw 'Unknown GtmEvent type: ' + type;\n\n }\n\n w.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n w.dataLayer.push(gtmEvent);\n\n if (source === 'callback') {\n w.PubSub.publish('externaltracking.complete');\n }\n }\n });\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,MAAMA,EAAQ,IAAIC,SAGdC,EAAEC,0BACFD,EAAEC,yBAAyBC,SAHE,OAMjCF,EAAEG,OAAOC,UAAU,4BAA6B,CAACC,EAAOC,KAC9CC,EAAeF,EAAMG,MAAM,KACjC,MAAMC,EAAcF,EAAaA,EAAaG,OAAS,GACnDC,EAAuBF,EAAYG,cACvC,MAAMC,EAAef,EAAMgB,kBAE3B,IAAMC,EAAkB,GAAWC,EAAMC,IAAIC,GACzCpB,EAAMqB,uBAAuBD,EAAmBE,QAAS,CACrDC,MAASH,EAAmBI,UAC5BC,SAAYL,EAAmBK,YAGvC,IACI,OAAQZ,GACJ,IAAK,YAEDa,EAAa,MADQT,EAAgBT,EAAKU,OACNV,EAAKmB,QACzC,MACJ,IAAK,iBAEDD,EAAa,SADWT,EAAgBT,EAAKU,OACHV,EAAKmB,QAC/C,MACJ,IAAK,qBACGnB,EAAKoB,eAAiBpB,EAAKoB,cAAchB,OAEzCc,EAAa,MADWT,EAAgBT,EAAKoB,eACNpB,EAAKmB,QAEvCnB,EAAKqB,iBAAmBrB,EAAKqB,gBAAgBjB,QAElDc,EAAa,SADcT,EAAgBT,EAAKqB,iBACHrB,EAAKmB,QAEtD,MACJ,QACI,KAAM,gDAAkDhB,GAGlE,MAAOmB,GACLC,QAAQC,MAAM,4DAA8DF,GAEhF,QACQ5B,EAAEC,0BACFD,EAAEC,yBAAyB8B,aA/CN,MA+C+CpB,EAAsBL,GAIlG,SAASkB,EAAaQ,EAAMC,EAAUR,GAClC,IAAIS,EACJ,OAAQF,GACJ,IAAK,MACDE,EAAW,CACPC,MAAS,cACTC,UAAa,CACTC,SAAYxB,EACZG,MAASiB,IAGjB,MACJ,IAAK,SACDC,EAAW,CACPC,MAAS,mBACTC,UAAa,CACTC,SAAYxB,EACZG,MAASiB,IAGjB,MACJ,QACI,KAAM,0BAA4BD,EAI1ChC,EAAEsC,UAAUC,KAAK,CAAEH,UAAW,OAC9BpC,EAAEsC,UAAUC,KAAKL,GAEF,aAAXT,GACAzB,EAAEG,OAAOqC,QAAQ,iCAnFjC,CAuFGC"}