{"version":3,"file":"js/app.be012c34875f6af24abe.js","mappings":"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","sources":["webpack:///./resources/area/web/default/js/components/catalog/product/ProductAddToCart.vue?78e8","webpack:///./resources/area/web/default/js/shared/helpers/enhanced-ecommerce/index.ts","webpack:///./resources/area/web/default/js/components/catalog/product/ProductAddToCart.vue","webpack:///./resources/area/web/default/js/components/catalog/product/ProductAddToCart.vue?f2b3","webpack:///./resources/area/web/default/js/components/catalog/product/ProductAddToCart.vue?e047"],"sourcesContent":["\n\n\n\n\n\n\n\n\nimport {Component, Vue, Prop} from 'vue-property-decorator';\nimport ServiceContainer from '@flashpointbv/solar-service-container';\nimport {enhancedEcommerce} from '../../../shared/helpers/enhanced-ecommerce';\n\n@Component({\n name: 'catalog-product-add-to-cart',\n components: ServiceContainer().getComponents()\n})\n\nexport default class extends Vue {\n @Prop({required: true}) private product!: object;\n @Prop({required: false, default: 1}) private qty: number;\n @Prop({required: false, default: null}) private type: string | null;\n @Prop({required: false, default: null}) private shopByLook: object | null;\n @Prop({required: false, default: false}) private isSaleable: boolean;\n\n private loadingAddToQuote: boolean = false;\n private productAdded: boolean = false;\n private async addToQuoteAction(): Promise<any> {\n this.loadingAddToQuote = true;\n\n try {\n let productPayload = {\n sku: this.product['sku'],\n qty: this.qty,\n };\n\n await this.$store.dispatch('CheckoutQuote/addProductToQuote', productPayload);\n\n await this.$store.dispatch('GlobalMessages/addGlobalMessage', {\n id: `add-${this.product['sku']}`,\n message: this.$t('{productName} has been added to your shopping cart', { productName: this.product['name'] }),\n type: '--success'\n });\n this.productAdded = true;\n\n if(this.shopByLook) {\n enhancedEcommerce.addShopByLookDatalayer(this.shopByLook, this.product);\n return;\n }\n if('crosssell' === this.type) {\n enhancedEcommerce.addCrossSellDatalayer(this.product);\n location.reload();\n\n return;\n }\n\n enhancedEcommerce.addProductAddToCart(this.product, this.qty);\n } catch (e) {\n const response = e.response.data;\n\n await this.$store.dispatch('GlobalMessages/addGlobalMessage', {\n id: `error-${this.product['sku']}`,\n message: this.$t(JSON.parse(response.exception)['message']),\n type: '--error'\n });\n\n this.loadingAddToQuote = false;\n } finally {\n this.loadingAddToQuote = false;\n }\n }\n}\n","class EnhancedEcommerce {\n addProductImpressions(products: Array<object>, listType: string = 'product-list', startIndex: number = 0): void {\n const impressions: Array<object> = [];\n const hasImpressionView = window.dataLayer.filter(e => e['event'] === 'ImpressionView').length;\n\n products.forEach((p, i) => {\n impressions.push({\n 'name': p['name'],\n 'id': p['product_id'],\n 'price': p['final_price_incl_tax'],\n 'sku': p['sku'],\n 'ean': p['erp_ean'] || '',\n 'brand': p['xenos_merk'] || 'Xenos',\n 'category': p.hasOwnProperty('category_names') ? p['category_names'].join(' | ') : '',\n 'variant': p['xen_kleur'] || '',\n 'dimension20': p['gses_durability_score_rating'] || null,\n 'list': listType,\n 'position': ((startIndex + i) + 1)\n });\n });\n\n window.dataLayer.push({\n 'event': startIndex !== 0 && hasImpressionView > 0 ? 'ImpressionsPushed' : 'ImpressionView',\n 'ecommerce': {\n 'currencyCode': 'EUR',\n 'impressions': impressions\n }\n });\n }\n\n addProductClick(product: object, index: string | number | boolean | symbol): void {\n window.dataLayer.push({\n 'event': 'productClick',\n 'ecommerce': {\n 'click': {\n 'actionField': {\n 'list': 'product-list'\n },\n 'products': [{\n 'name': product['name'],\n 'id': product['product_id'],\n 'price': product['final_price_incl_tax'],\n 'sku': product['sku'],\n 'ean': product['erp_ean'] || '',\n 'brand': product['xenos_merk'] || 'Xenos',\n 'category': product.hasOwnProperty('category_names') ? product['category_names'].join(' | ') : '',\n 'variant': product['xen_kleur'] || '',\n 'dimension20': product['gses_durability_score_rating'] || null,\n 'position': (index as number) + 1\n }]\n }\n }\n });\n }\n\n addProductDetail(product: object): void {\n window.dataLayer.push({\n 'ecommerce': {\n 'detail': {\n 'products': [{\n 'name': product['name'],\n 'id': product['product_id'],\n 'price': product['final_price_incl_tax'],\n 'sku': product['sku'],\n 'ean': product['erp_ean'] || '',\n 'brand': product['xenos_merk'] || 'Xenos',\n 'category': product.hasOwnProperty('category_names') ? product['category_names'].join(' | ') : '',\n 'variant': product['xen_kleur'] || '',\n 'dimension20': product['gses_durability_score_rating'] || null,\n }]\n }\n }\n });\n }\n\n addProductAddToCart(product: object, qty: number = 1): void {\n window.dataLayer.push({\n 'event': 'addToCart',\n 'ecommerce': {\n 'currencyCode': 'EUR',\n 'add': {\n 'products': [{\n 'name': product['name'],\n 'id': product['product_id'],\n 'price': product['final_price_incl_tax'],\n 'sku': product['sku'],\n 'ean': product['erp_ean'] || '',\n 'brand': product['xenos_merk'] || 'Xenos',\n 'category': product.hasOwnProperty('category_names') ? product['category_names'].join(' | ') : '',\n 'variant': product['xen_kleur'] || '',\n 'dimension20': product['gses_durability_score_rating'] || null,\n 'quantity': qty\n }]\n }\n }\n });\n }\n\n addCrossSellDatalayer(product: object, qty: number = 1): void {\n window.dataLayer.push({\n 'event': 'addtocart-checkout',\n 'ecommerce': {\n 'currencyCode': 'EUR',\n 'add': {\n 'products': [{\n 'name': product['name'],\n 'id': product['product_id'],\n 'price': product['final_price_incl_tax'],\n 'sku': product['sku'],\n 'ean': product['erp_ean'] || '',\n 'brand': product['xenos_merk'] || 'Xenos',\n 'category': product.hasOwnProperty('category_names') ? product['category_names'].join(' | ') : '',\n 'variant': product['xen_kleur'] || '',\n 'dimension20': product['gses_durability_score_rating'] || null,\n 'quantity': qty\n }]\n }\n }\n });\n }\n\n addCheckout(products: Array<object>, step: number, option: string = ''): void {\n const productList: Array<object> = [];\n\n if (step === 1) {\n window.dataLayer.push({\n 'event': 'checkout',\n 'ecommerce': {\n 'checkout': {\n 'actionField': {'step': step, 'option': option},\n 'products': productList\n }\n }\n });\n\n products.forEach(p => {\n productList.push({\n 'name': p['name'],\n 'id': p['item_id'],\n 'price': p['row_total_incl_tax'],\n 'sku': p['extension_attributes']['sku'] || '',\n 'ean': p['extension_attributes']['ean'] || '',\n 'brand': p['extension_attributes']['brand'] || 'Xenos',\n 'category': '',\n 'variant': p['extension_attributes']['variant'] || '',\n 'dimension20': p['gses_durability_score_rating'] || null,\n 'quantity': p['qty']\n });\n });\n } else {\n window.dataLayer.push({\n 'event': 'checkoutOption',\n 'ecommerce': {\n 'checkout_option': {\n 'actionField': {'step': step, 'option': option}\n }\n }\n });\n }\n }\n\n addShopByLookDatalayer(shopByLook: object, product: object | null = null): void {\n if (typeof window.dataLayer === 'undefined') {\n return;\n }\n\n window.dataLayer.push({\n event: `${shopByLook['title'].toLowerCase()}-click`,\n category: shopByLook['title'],\n action: 'click',\n label: shopByLook['title'],\n price: product ? product['final_price_incl_tax'] : shopByLook['final_price'],\n value: product ? `Add to cart: ${product['name']}` : `Add to cart`\n });\n }\n}\n\nconst enhancedEcommerce = new EnhancedEcommerce();\n\nexport {enhancedEcommerce};\n","import { render, staticRenderFns } from \"./ProductAddToCart.vue?vue&type=template&id=fa3a8e5e&\"\nimport script from \"./ProductAddToCart.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductAddToCart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductAddToCart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductAddToCart.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{class:{ '--loading-cart': _vm.loadingAddToQuote, '--added': _vm.productAdded && _vm.type == 'upsell' },attrs:{\"disabled\":_vm.loadingAddToQuote || !_vm.isSaleable},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.addToQuoteAction.apply(null, arguments)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["Vue","loadingAddToQuote","productAdded","addToQuoteAction","this","productPayload","sku","product","qty","$store","dispatch","id","message","$t","productName","type","shopByLook","enhancedEcommerce","addShopByLookDatalayer","addCrossSellDatalayer","location","reload","addProductAddToCart","e","response","data","JSON","parse","exception","Prop","required","default","Component","name","components","getComponents","EnhancedEcommerce","addProductImpressions","products","listType","startIndex","impressions","hasImpressionView","window","dataLayer","filter","length","forEach","p","i","push","hasOwnProperty","join","addProductClick","index","addProductDetail","addCheckout","step","option","productList","event","toLowerCase","category","action","label","price","value","render","_vm","_h","$createElement","_self","_c","class","attrs","isSaleable","on","$event","preventDefault","stopPropagation","apply","arguments","staticRenderFns"],"sourceRoot":""}