{"version":3,"file":"js/app.12a4c12950d0b376dc4c.js","mappings":"6wDAce,8BAAc,EAAAA,IAAd,c,oBAGL,KAAAC,UAAoB,CAoC9B,CAlCcC,gBACV,OAAOC,KAAKC,OAAOC,QAAQ,GAAGF,KAAKG,uBACrC,CAEYC,eACV,OAAOJ,KAAKC,OAAOC,QAAQ,GAAGF,KAAKG,yBACrC,CAEYE,wBAGV,MAFiB,IAAIL,KAAKI,UAEVE,KAAKC,GACZ,OAAP,wBACKA,GAAO,CACV,QAAWA,EAAoB,WAC/B,cAAiBA,EAAoB,cAG3C,CAEYC,oBACV,OAAOC,MAAMC,KAAK,CAACC,OAAQC,KAAKC,KAAKb,KAAKI,SAASO,OAASX,KAAKF,aAAa,CAACgB,EAAGC,IAC9Ef,KAAKI,SAASY,MAAMD,EAAIf,KAAKF,UAAWiB,EAAIf,KAAKF,UAAYE,KAAKF,YAExE,CAEcmB,U,0CACZ,IAAAC,uBAAsBlB,KAAKI,UAC3B,EAAAe,eAAeC,OAAOC,iBAAiBrB,KAAKK,kBAAmB,eACjE,G,CAEYiB,iBACV,OAAOtB,KAAKC,OAAOC,QAAQ,GAAGF,KAAKG,kCACrC,GArCA,IAAC,IAAAoB,MAAK,CAACC,UAAU,I,0DADJ,MARd,IAAAC,WAAU,CACTC,KAAM,uBACNC,WAAY,OAAF,yBACL,eAAmBC,iBAAe,CACrCC,yBAA0B,IAAM,IAAD,kDAAQ,UAAyB,gDAAC,iB,6RCVxD,EAAAX,sBAAyBd,IACpC,MAAM0B,EAA6B,GAEnCC,OAAOC,UAAUC,KAAK,CACpB,UAAa,CACX,aAAgB,MAChB,YAAeH,KAInB1B,EAAS8B,SAAQ,CAACC,EAAGpB,KACnBe,EAAYG,KAAK,CACf,KAAQE,EAAQ,KAChB,GAAMA,EAAc,WACpB,MAASA,EAAwB,qBACjC,MAASA,EAAgB,aACzB,SAAYA,EAAEC,eAAe,oBAAsBD,EAAoB,iBAAI,GAC3E,QAAWA,EAAEC,eAAe,SAAWD,EAAS,MAAI,GACpD,KAAQ,eACR,SAAapB,EAAI,GACjB,GACF,EAGS,EAAAsB,gBAAkB,CAAC9B,EAAiB+B,KAC/CP,OAAOC,UAAUC,KAAK,CACpB,MAAS,eACT,UAAa,CACX,MAAS,CACP,YAAe,CAAC,KAAQ,gBACxB,SAAY,CAAC,CACX,KAAQ1B,EAAc,KACtB,GAAMA,EAAoB,WAC1B,MAASA,EAA8B,qBACvC,MAASA,EAAsB,aAC/B,SAAYA,EAAQ6B,eAAe,oBAAsB7B,EAA0B,iBAAI,GACvF,QAAWA,EAAQ6B,eAAe,SAAW7B,EAAe,MAAI,GAChE,SAAa+B,EAAmB,OAItC,EAGS,EAAAC,iBAAoBhC,IAC/BwB,OAAOC,UAAUC,KAAK,CACpB,UAAa,CACX,OAAU,CACR,SAAY,CAAC,CACX,KAAQ1B,EAAc,KACtB,GAAMA,EAAoB,WAC1B,MAASA,EAA8B,qBACvC,MAASA,EAAsB,aAC/B,SAAYA,EAAQ6B,eAAe,oBAAsB7B,EAA0B,iBAAI,GACvF,QAAW,QAIjB,EAGS,EAAAiC,oBAAsB,CAACjC,EAAiBkC,EAAyBC,EAAc,KAC1F,IAAIC,EAAkB,GAClBF,EAAgBL,eAAe,UACjCO,EAAgBV,KAAKQ,EAAuB,OAG1CA,EAAgBL,eAAe,SACjCO,EAAgBV,KAAKQ,EAAsB,MAG7CV,OAAOC,UAAUC,KAAK,CACpB,MAAS,YACT,UAAa,CACX,aAAgB,MAChB,IAAO,CACL,SAAY,CAAC,CACX,KAAQ1B,EAAc,KACtB,GAAMA,EAAoB,WAC1B,MAASA,EAA8B,qBACvC,MAASA,EAAsB,aAC/B,SAAYA,EAAQ6B,eAAe,oBAAsB7B,EAA0B,iBAAI,GACvF,QAAWoC,EAAgBhC,OAASgC,EAAgBC,KAAK,OAAS,GAClE,SAAYF,OAIlB,EAGS,EAAAG,yBAA4BtC,IACvCwB,OAAOC,UAAUC,KAAK,CACpB,MAAS,iBACT,UAAa,CACX,OAAU,CACR,SAAY,CAAC,CACX,KAAQ1B,EAAc,KACtB,GAAMA,EAAiB,QACvB,MAASA,EAA4B,mBACrC,MAAS,GACT,SAAY,GACZ,QAAW,GACX,SAAYA,EAAa,SAI/B,EAGS,EAAAuC,YAAc,CAAC1C,EAAyB2C,EAAcC,EAAiB,MAClF,MAAMC,EAA6B,GAEtB,IAATF,GACFhB,OAAOC,UAAUC,KAAK,CACpB,MAAS,WACT,UAAa,CACX,SAAY,CACV,YAAe,CAAC,KAAQc,EAAM,OAAUC,GACxC,SAAYC,MAKlB7C,EAAS8B,SAAQC,IACf,IAAIe,EAAU,GACVf,EAAEC,eAAe,YACnBe,KAAKC,MAAMjB,EAAW,SAAK,MAAMD,SAAQmB,IACvCH,EAAQjB,KAAKoB,EAAS,MAAE,IAI5BJ,EAAYhB,KAAK,CACf,KAAQE,EAAQ,KAChB,GAAMA,EAAW,QACjB,MAASA,EAAsB,mBAC/B,MAAS,GACT,SAAY,GACZ,QAAWe,EAAQvC,OAASuC,EAAQN,KAAK,OAAS,GAClD,SAAYT,EAAO,KACnB,KAGJJ,OAAOC,UAAUC,KAAK,CACpB,MAAS,iBACT,UAAa,CACX,gBAAmB,CACjB,YAAe,CAAC,KAAQc,EAAM,OAAUC,M,gMChIlD,SAXgB,E,SAAA,GACd,UACA,IACA,KACA,EACA,KACA,KACA,MAI8B,O,mJClB2L,QAAe,G,wDCA1O,IAAIM,EAAS,SAASA,SAAS,IAAIC,EAAIvD,KAAKwD,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,yBAAyBC,MAAM,CAAC,GAAK,kBAAkB,CAACJ,EAAG,MAAM,CAACK,WAAW,CAAC,CAACnC,KAAK,OAAOoC,QAAQ,SAASC,MAAOR,EAAa,UAAES,WAAW,cAAcL,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgBJ,EAAIU,GAAG,KAASV,EAAInD,SAASO,OAAqI4C,EAAIW,KAAjIV,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACJ,EAAIU,GAAGV,EAAIY,GAAGZ,EAAIa,GAAG,gDAAyDb,EAAIU,GAAG,KAAKV,EAAIc,GAAId,EAAiB,eAAE,SAASe,EAAMhC,GAAO,MAAO,CAACkB,EAAG,gBAAgB,CAACI,MAAM,CAAC,SAAWtB,KAASiB,EAAIU,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,UAAU,CAAEJ,EAAIjC,YAAyC,eAA3BiC,EAAIjC,WAAiB,MAAuBiC,EAAIjC,WAAqB,SAAI,IAAOgB,EAAOkB,EAAG,8BAA8B,CAACI,MAAM,CAAC,cAAcL,EAAIjC,WAAW,cAAciC,EAAIpD,cAAcoD,EAAIW,KAAKX,EAAIU,GAAG,KAAKV,EAAIc,GAAG,GAAQ,SAAS9D,GAAS,OAAOiD,EAAGjD,EAAmB,UAAI,8BAAgC,4BAA4B,CAACgE,IAAIhE,EAAY,GAAEiE,IAAI,YAAYZ,MAAM,CAAC,cAAcL,EAAIpD,WAAW,QAAUI,EAAQ,cAAcA,EAAQ,cAAa,EAAK,gBAAe,EAAK,kBAAiB,IAAO,KAAI,GAAG,KAAI,EAClsC,EACIkE,EAAkB,E","sources":["webpack:///./resources/area/web/default/js/components/catalog/ProductList.vue?55bd","webpack:///./resources/area/web/default/js/shared/helpers/enhanced-ecommerce/index.ts","webpack:///./resources/area/web/default/js/components/catalog/ProductList.vue","webpack:///./resources/area/web/default/js/components/catalog/ProductList.vue?a6f1","webpack:///./resources/area/web/default/js/components/catalog/ProductList.vue?bdd2"],"sourcesContent":["\nimport {Component, Vue, Prop} from 'vue-property-decorator';\nimport ServiceContainer from '@flashpointbv/solar-service-container';\nimport {SolarDataLayer} from '@flashpointbv/solar-datalayer/dist';\nimport {addProductImpressions} from '../../shared/helpers/enhanced-ecommerce';\n\n@Component({\n  name: 'catalog-product-list',\n  components: {\n    ...ServiceContainer().getComponents(),\n    CatalogProductListBanner: () => import('./ProductListBanner.vue'),\n  }\n})\n\nexport default class extends Vue {\n  @Prop({required: true}) readonly dataSource: string;\n\n  private chunkSize: number = 6;\n\n  private get isLoading(): boolean {\n    return this.$store.getters[`${this.dataSource}/isLoading`];\n  }\n\n  private get products(): Array<object> {\n    return this.$store.getters[`${this.dataSource}/productList`];\n  }\n\n  private get dataLayerProducts(): Array<object> {\n    const products = [...this.products];\n\n    return products.map((product: object) => {\n      return {\n        ...product,\n        'item_id': product['product_id'],\n        'item_group_id': product['product_id'],\n      };\n    });\n  }\n\n  private get productChunks(): Array<object> {\n    return Array.from({length: Math.ceil(this.products.length / this.chunkSize)}, (v, i) =>\n        this.products.slice(i * this.chunkSize, i * this.chunkSize + this.chunkSize)\n    );\n  }\n\n  private async created(): Promise<void> {\n    addProductImpressions(this.products);\n    SolarDataLayer.init().addViewItemsList(this.dataLayerProducts, 'Product list');\n  }\n\n  private get bannerData(): null | object {\n    return this.$store.getters[`${this.dataSource}/getProductListBanner`];\n  }\n}\n","export const addProductImpressions = (products: Array<object>): void => {\n  const impressions: Array<object> = [];\n\n  window.dataLayer.push({\n    'ecommerce': {\n      'currencyCode': 'EUR',\n      'impressions': impressions\n    }\n  });\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      'brand': p['manufacturer'],\n      'category': p.hasOwnProperty('product_category') ? p['product_category'] : '',\n      'variant': p.hasOwnProperty('color') ? p['color'] : '',\n      'list': 'product-list',\n      'position': (i + 1)\n    });\n  });\n}\n\nexport const addProductClick = (product: object, index: string | number | boolean | symbol): void => {\n  window.dataLayer.push({\n    'event': 'productClick',\n    'ecommerce': {\n      'click': {\n        'actionField': {'list': 'product-list'},\n        'products': [{\n          'name': product['name'],\n          'id': product['product_id'],\n          'price': product['final_price_incl_tax'],\n          'brand': product['manufacturer'],\n          'category': product.hasOwnProperty('product_category') ? product['product_category'] : '',\n          'variant': product.hasOwnProperty('color') ? product['color'] : '',\n          'position': (index as number) + 1\n        }]\n      }\n    }\n  });\n}\n\nexport const 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          'brand': product['manufacturer'],\n          'category': product.hasOwnProperty('product_category') ? product['product_category'] : '',\n          'variant': '',\n        }]\n      }\n    }\n  });\n}\n\nexport const addProductAddToCart = (product: object, selectedProduct: object, qty: number = 1): void => {\n  let selectedOptions = [];\n  if (selectedProduct.hasOwnProperty('color')) {\n    selectedOptions.push(selectedProduct['color']);\n  }\n\n  if (selectedProduct.hasOwnProperty('size')) {\n    selectedOptions.push(selectedProduct['size']);\n  }\n\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          'brand': product['manufacturer'],\n          'category': product.hasOwnProperty('product_category') ? product['product_category'] : '',\n          'variant': selectedOptions.length ? selectedOptions.join(' | ') : '',\n          'quantity': qty\n        }]\n      }\n    }\n  });\n}\n\nexport const addProductRemoveFromCart = (product: object): void => {\n  window.dataLayer.push({\n    'event': 'removeFromCart',\n    'ecommerce': {\n      'remove': {\n        'products': [{\n          'name': product['name'],\n          'id': product['item_id'],\n          'price': product['row_total_incl_tax'],\n          'brand': '',\n          'category': '',\n          'variant': '',\n          'quantity': product['qty']\n        }]\n      }\n    }\n  });\n}\n\nexport const 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      let options = [];\n      if (p.hasOwnProperty('options')) {\n        JSON.parse(p['options'] || '[]').forEach(o => {\n          options.push(o['value']);\n        });\n      }\n\n      productList.push({\n        'name': p['name'],\n        'id': p['item_id'],\n        'price': p['row_total_incl_tax'],\n        'brand': '',\n        'category': '',\n        'variant': options.length ? options.join(' | ') : '',\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","import { render, staticRenderFns } from \"./ProductList.vue?vue&type=template&id=d91244f4&\"\nimport script from \"./ProductList.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductList.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-6.use[0]!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[0]!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductList.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"catalog__category-list\",attrs:{\"id\":\"listContainer\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"--loading --absolute\"},[_c('div',{staticClass:\"--spinner\"})]),_vm._v(\" \"),( ! _vm.products.length)?_c('div',{staticClass:\"global__message--bg --warning\"},[_vm._v(_vm._s(_vm.$t('No products were found in this category.')))]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.productChunks),function(chunk,index){return [_c('inline-filter',{attrs:{\"position\":index}}),_vm._v(\" \"),_c('ul',{staticClass:\"grid-x\"},[(_vm.bannerData && _vm.bannerData['size'] === 'full_width' && (_vm.bannerData['position'] - 1) === index)?_c('catalog-product-list-banner',{attrs:{\"banner-data\":_vm.bannerData,\"data-source\":_vm.dataSource}}):_vm._e(),_vm._v(\" \"),_vm._l((chunk),function(product){return _c(product['is_banner'] ? 'catalog-product-list-banner' : 'catalog-product-list-item',{key:product['id'],tag:\"component\",attrs:{\"data-source\":_vm.dataSource,\"product\":product,\"banner-data\":product,\"show-hover\":true,\"show-compare\":true,\"enable-gallery\":true}})})],2)]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["Vue","chunkSize","isLoading","this","$store","getters","dataSource","products","dataLayerProducts","map","product","productChunks","Array","from","length","Math","ceil","v","i","slice","created","addProductImpressions","SolarDataLayer","init","addViewItemsList","bannerData","Prop","required","Component","name","components","getComponents","CatalogProductListBanner","impressions","window","dataLayer","push","forEach","p","hasOwnProperty","addProductClick","index","addProductDetail","addProductAddToCart","selectedProduct","qty","selectedOptions","join","addProductRemoveFromCart","addCheckout","step","option","productList","options","JSON","parse","o","render","_vm","_c","_self","_setupProxy","staticClass","attrs","directives","rawName","value","expression","_v","_e","_s","$t","_l","chunk","key","tag","staticRenderFns"],"sourceRoot":""}