{"version":3,"file":"js/app.161399e850c5a954e9dc.js","mappings":"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","sources":["webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue?988b","webpack:///./resources/area/web/default/js/shared/helpers/catalog-helper/index.ts","webpack:///./resources/area/web/default/js/shared/helpers/enhanced-ecommerce/index.ts","webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue","webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue?ec31","webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue?df49"],"sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Prop} from 'vue-property-decorator';\nimport {enhancedEcommerce} from '../../shared/helpers/enhanced-ecommerce';\nimport {catalogHelper} from '../../shared/helpers/catalog-helper';\nimport ServiceContainer from '@flashpointbv/solar-service-container';\nimport VueI18n from 'vue-i18n';\nimport TranslateResult = VueI18n.TranslateResult;\n\n@Component({\n name: 'catalog-product-list-item',\n components: ServiceContainer().getComponents()\n})\n\nexport default class extends Vue {\n @Prop() readonly dataSource: string;\n @Prop({required: true}) readonly product: object;\n @Prop({default: null}) readonly type: string | null;\n @Prop({default: null}) readonly index: number | null;\n @Prop({default: true}) readonly lazyImage: boolean;\n @Prop({default: true}) readonly showStockMessage: boolean;\n @Prop({default: true}) readonly showDurabilityScore: boolean;\n @Prop({default: () => []}) private wishlistItems: Array<object>;\n\n private get listComponent(): string {\n switch (this.type) {\n case 'slider':\n return 'div';\n default:\n return 'li';\n }\n }\n\n private wishlistToggle: boolean = this.isOnWishlist;\n private loadingWishlist: boolean = false;\n\n private get isOnWishlist(): boolean {\n if (this.type === 'wishlist') {\n return true;\n }\n\n if (!this.wishlistItems) {\n return false;\n }\n\n return !!this.wishlistItems.filter(p => p['id'] === this.product['id']).length;\n }\n\n private get getShowDurabilityScore(): boolean {\n const activeFilters = this.$store.getters[`${this.dataSource}/activeFilters`] || [];\n const hasActiveDurabilityFilter = activeFilters.length ? activeFilters.filter(f => f.code === 'gses_durability_score_filter' && f.is_active || f.code.includes('duurzaamheid') && f.is_active).length : false;\n\n const currentSort = this.$store.getters[`${this.dataSource}/currentSortNew`] || null;\n const hasDurabilitySortActive = currentSort ? (currentSort === 'gses_durability_score_rating_d' || currentSort.toLowerCase().includes('duurzaamheid')) : false;\n\n return this.showDurabilityScore && (hasActiveDurabilityFilter || hasDurabilitySortActive);\n }\n\n private get durabilityScoreWidth(): number {\n const rating = (Math.round(this.product['gses_durability_score_rating'] * 2) / 2).toFixed(1);\n return parseFloat(rating) / 5 * 100 || 0;\n }\n\n private get productPrices(): object {\n return catalogHelper.getProductPrice(this.product);\n }\n\n private get productImage(): string {\n return catalogHelper.resolveProductImage(this.product, 290);\n }\n\n private get stockMessage(): TranslateResult {\n if (this.showStockMessage &&\n this.product['list_stock_message'] &&\n this.product['list_stock_message']['classes'][0] !== '--in-stock') {\n return this.product['list_stock_message']['short_message'];\n }\n return null;\n }\n\n private get stockClasses(): Array<string> | null {\n if (!this.product['in_stock'] && this.showStockMessage) {\n return this.product['list_stock_message']['classes'] || null;\n }\n return null;\n }\n\n private get productLabel(): object {\n return catalogHelper.getProductLabel(this.product);\n }\n\n private get isSaleable(): boolean {\n return this.product['is_salable']\n && (this.product['in_stock'] || !this.product['manage_stock'])\n && !(this.product['show_as_sold_out'] || false);\n }\n\n private get isKiosk(): boolean {\n return '1' === (window.Config['is_kiosk'] || '0');\n }\n\n private get listTypeClass(): string {\n switch (this.type) {\n case 'home':\n case 'block':\n case 'slider':\n case 'crosssell':\n return '';\n default:\n return 'small-12 medium-6 cell';\n }\n }\n\n private addProductClick(): void {\n enhancedEcommerce.addProductClick(this.product, this.$vnode.key);\n }\n\n private async toggleWishlist(): Promise<void> {\n this.loadingWishlist = true;\n try {\n await this.$store.dispatch('CustomerWishlist/toggleWishlistProduct', this.product['product_id']);\n if (this.type !== 'wishlist') {\n await this.$store.dispatch('CustomerWishlist/updateWishlistCount', !this.wishlistToggle);\n this.wishlistToggle = !this.wishlistToggle;\n } else {\n await this.$store.dispatch('CustomerWishlist/updateWishlistCount', false);\n this.$eventBus.$emit('remove-wishlist', this.product['product_id']);\n }\n } catch (e) {\n // console.log(e);\n } finally {\n await this.$store.dispatch('GlobalMessages/addGlobalMessage', {\n id: this.wishlistToggle ? `add-${this.product['sku']}` : `remove-${this.product['sku']}`,\n message: this.wishlistToggle ? this.$t('{name} has been added to my favorites.', {name: this.product['name']}) : this.$t('{name} has been removed from my favorites.', {name: this.product['name']}),\n type: '--success'\n });\n this.loadingWishlist = false;\n this.addWishlistDataLayer();\n }\n }\n\n private mounted(): void {\n this.$forceUpdate();\n }\n\n private updated(): void {\n this.$eventBus.$emit('item-rendered', true);\n }\n\n private addWishlistDataLayer(): void {\n if (typeof window.dataLayer === 'undefined') {\n return;\n }\n\n window.dataLayer.push({\n event: 'click',\n category: this.wishlistToggle ? `Wishlist - toegevoegd` : `Wishlist - verwijderd`,\n action: this.product['name'],\n label: this.product['sku'],\n });\n }\n}\n","import Environment from '@flashpointbv/solar-ui-environment';\n\nclass CatalogHelper {\n getProductPrice(product: object, customerGroupId: number = 0): object {\n let priceObject = {\n productPrice: product[`price_incl_tax`] || 0,\n specialPrice: product[`final_price_incl_tax`] || 0,\n discountPrice: product[`price_incl_tax`] || 0\n };\n\n if (priceObject.productPrice !== priceObject.specialPrice) {\n priceObject.discountPrice = priceObject.specialPrice;\n }\n\n return priceObject;\n }\n\n resolveProductImage(product: object, size: number): string {\n const env = window.Config.hasOwnProperty('environment') ? window.Config['environment'] : 'production';\n\n if (env !== 'production') {\n return `https://www.xenos.nl/pub/cdn/${product['sku']}/${size}/${product['sku']}.jpg`;\n }\n\n return this.resolveGalleryImage(product, size);\n }\n\n resolveGalleryImage(product: object, size: number, index: number = 0): string {\n if(Object.keys(product).length === 0) {\n return '';\n }\n\n const selectedItem = product['media_gallery'][index] || false;\n\n if (false === selectedItem) {\n return '';\n }\n\n if (selectedItem['type'] === 'video') {\n return selectedItem['thumbnail'] || '';\n }\n\n if (Environment().get('environment') !== 'production') {\n return `https://www.xenos.nl/pub/cdn/${product['sku']}/${size}/${product['sku']}.jpg`;\n }\n\n return selectedItem['placeholder_url'].replace(/\\{size}/, size);\n }\n\n getProductLabel(product: object): object | null {\n if (product.hasOwnProperty('action_labels')) {\n return {\n label: product['action_labels'][0]['name'],\n color: product['action_labels'][0]['color']\n };\n }\n\n if (product['promotion']) {\n let backgroundColor = '#ec008c';\n\n switch (product['promotion']) {\n case '50% korting':\n backgroundColor = '#1a9bdb';\n break;\n case '30% korting':\n backgroundColor = '#75ad3f';\n break;\n }\n\n return {\n label: product['promotion'],\n color: backgroundColor\n };\n }\n\n if (product['discount_amount'] > 0) {\n return {\n label: `${Math.round(product['discount_percentage'])}% korting`,\n color: '#ec008c'\n };\n }\n\n return null;\n }\n}\n\nconst catalogHelper = new CatalogHelper();\n\nexport {catalogHelper};\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 \"./ProductListItem.vue?vue&type=template&id=143d4104&\"\nimport script from \"./ProductListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductListItem.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!./ProductListItem.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!./ProductListItem.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.listComponent,{tag:\"component\",class:_vm.listTypeClass,attrs:{\"data-index\":_vm.index}},[_c('a',{staticClass:\"product__tile\",attrs:{\"href\":_vm.product['url_key']},on:{\"click\":function($event){return _vm.addProductClick()}}},[_c('span',{staticClass:\"image__holder\"},[_c('span',{staticClass:\"--wishlist\",class:{ '--active': _vm.wishlistToggle && !_vm.loadingWishlist, '--remove': _vm.type === 'wishlist', '--loading-wishlist': _vm.loadingWishlist }},[(!_vm.isKiosk)?_c('button',{attrs:{\"disabled\":_vm.loadingWishlist},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleWishlist()}}}):_vm._e()]),_vm._v(\" \"),(_vm.lazyImage)?_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(_vm.productImage),expression:\"productImage\"}],attrs:{\"alt\":_vm.product['name'],\"width\":\"290\",\"height\":\"380\"}}):_c('img',{attrs:{\"src\":_vm.productImage,\"alt\":_vm.product['name'],\"width\":\"290\",\"height\":\"380\"}}),_vm._v(\" \"),(_vm.productLabel)?_c('span',{staticClass:\"product__label\",class:_vm.productLabel['label']},[_vm._v(\"\\n \"+_vm._s(_vm.productLabel['label'])+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.product['product_icons'] && _vm.product['product_icons'].length && !_vm.product['product_icons'].every(function (icon) { return icon.alt === 'Webonly'; }))?_c('span',{staticClass:\"product__icons\"},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:((\"https://www.xenos.nl\" + (_vm.product['product_icons'][0].url))),expression:\"`https://www.xenos.nl${product['product_icons'][0].url}`\"}],attrs:{\"alt\":_vm.product['product_icons'][0].alt,\"width\":\"50\",\"height\":\"50\"}})]):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"product__holder\"},[_c('span',{staticClass:\"product__holder-title\"},[_c('h2',[_vm._v(_vm._s(_vm.product['name']))])]),_vm._v(\" \"),(_vm.stockMessage)?_c('span',{staticClass:\"stock__message\",class:_vm.stockClasses,domProps:{\"innerHTML\":_vm._s(_vm.stockMessage || ' ')}}):_vm._e(),_vm._v(\" \"),(_vm.product['review_count'] > 0 && !_vm.stockMessage)?_c('span',{staticClass:\"product__reviews_container\"},[_c('span',{staticClass:\"rating-container\"},[_c('span',{staticClass:\"--fill\",style:((\"width: \" + (_vm.product['product_rating']) + \"%\"))})]),_vm._v(\" \"),_c('span',[_vm._v(\"(\"+_vm._s(_vm.product['review_count'])+\")\")])]):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"product__actions\"},[_c('span',{staticClass:\"price__holder\"},[(_vm.productPrices['discountPrice'] !== _vm.productPrices['productPrice'])?_c('span',{staticClass:\"price__old-price\"},[_vm._v(_vm._s(_vm.productPrices['productPrice'].priceFormat()))]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"price\"},[_vm._v(_vm._s(_vm.productPrices['discountPrice'].priceFormat()))])]),_vm._v(\" \"),_c('span',{staticClass:\"add-to-cart\"},[_c('catalog-product-add-to-cart',{attrs:{\"product\":_vm.product,\"type\":_vm.type,\"is-saleable\":_vm.isSaleable}})],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["Vue","wishlistToggle","this","isOnWishlist","loadingWishlist","listComponent","type","wishlistItems","filter","p","product","length","getShowDurabilityScore","activeFilters","$store","getters","dataSource","hasActiveDurabilityFilter","f","code","is_active","includes","currentSort","hasDurabilitySortActive","toLowerCase","showDurabilityScore","durabilityScoreWidth","rating","Math","round","toFixed","parseFloat","productPrices","catalogHelper","getProductPrice","productImage","resolveProductImage","stockMessage","showStockMessage","stockClasses","productLabel","getProductLabel","isSaleable","isKiosk","window","Config","listTypeClass","addProductClick","enhancedEcommerce","$vnode","key","toggleWishlist","dispatch","$eventBus","$emit","e","id","message","$t","name","addWishlistDataLayer","mounted","$forceUpdate","updated","dataLayer","push","event","category","action","label","Prop","required","default","Array","Component","components","getComponents","CatalogHelper","customerGroupId","priceObject","productPrice","specialPrice","discountPrice","size","hasOwnProperty","resolveGalleryImage","index","Object","keys","selectedItem","get","replace","color","backgroundColor","EnhancedEcommerce","addProductImpressions","products","listType","startIndex","impressions","hasImpressionView","forEach","i","join","addProductDetail","addProductAddToCart","qty","addCrossSellDatalayer","addCheckout","step","option","productList","addShopByLookDatalayer","shopByLook","price","value","render","_vm","_h","$createElement","_c","_self","tag","class","attrs","staticClass","on","$event","_e","stopPropagation","preventDefault","_v","directives","rawName","expression","_s","every","icon","alt","domProps","style","priceFormat","staticRenderFns"],"sourceRoot":""}