{"version":3,"file":"js/app.e86596bc367fdb8002d5.js","mappings":"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","sources":["webpack:///./resources/area/web/default/js/components/catalog/product/ProductProductRow.vue?138d","webpack:///./resources/area/web/default/js/components/catalog/product/ProductProductRow.vue","webpack:///./resources/area/web/default/js/components/catalog/product/ProductProductRow.vue?d247","webpack:///./resources/area/web/default/js/components/catalog/product/ProductProductRow.vue?af31"],"sourcesContent":["\nimport {Component, Vue, Prop} from 'vue-property-decorator';\nimport ServiceContainer from '@flashpointbv/solar-service-container';\nimport {SolarDataLayer} from '@flashpointbv/solar-datalayer/dist';\n\n@Component({\n  name: 'catalog-product-product-row',\n  components: ServiceContainer().getComponents()\n})\n\nexport default class extends Vue {\n  @Prop({default: null}) readonly productId!: null | number;\n  @Prop({default: 12}) readonly limit!: number;\n  @Prop({default: true}) readonly showTitle!: boolean;\n  @Prop({default: ''}) readonly title!: string;\n  @Prop() readonly rowType!: string;\n  @Prop() readonly itemListName!: string;\n  @Prop() readonly itemListId!: string;\n  @Prop() readonly sliderId!: string;\n  @Prop({default: null}) readonly tweakwiseRecommendation!: null | object;\n\n  private products: Array<object> = [];\n  private rowTitle: string = '';\n  private isLoading: boolean = false;\n\n  private get showComponent(): boolean {\n    return this.isLoading || this.products.length > 0;\n  }\n\n  private get fetchProductRequestParams(): object {\n    return {\n      limit: this.limit\n    };\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 async fetchProducts(): Promise<boolean> {\n    this.isLoading = true;\n\n    const productId = this.productId || this.$store.state.CatalogProduct.productData.product_id;\n\n    try {\n      const {data} = await this.$solarClient.get(`catalog/product/${productId}/${this.rowType}/list`, {\n        params: this.fetchProductRequestParams\n      });\n\n      this.products = data;\n      this.rowTitle = this.title;\n\n      if (this.products.length) {\n        SolarDataLayer.init().addViewItemsList(this.dataLayerProducts, this.itemListName);\n      }\n\n      return true;\n    } catch (e) {\n      console.error(e);\n    } finally {\n      this.isLoading = false;\n    }\n\n    return false;\n  }\n\n  private async getTweakWiseRecommendations(): Promise<boolean> {\n    if ( ! this.tweakwiseRecommendation) {\n      return false;\n    }\n\n    this.isLoading = true;\n\n    try {\n      let url = `tweakwise/recommendations/${this.tweakwiseRecommendation['id']}`;\n      if (this.productId) {\n        url += `/${this.productId}`;\n      }\n\n      const {data} = await this.$solarClient.get(url);\n\n      if (data && data.length) {\n        this.products = data[0]['products'];\n        this.rowTitle = this.tweakwiseRecommendation['title'] ?\n            this.tweakwiseRecommendation['title'] :\n            this.title;\n\n        if (this.products.length) {\n          SolarDataLayer.init().addViewItemsList(this.dataLayerProducts, this.itemListName);\n        }\n\n        return true;\n      }\n    } catch (e) {\n      console.error(e);\n    } finally {\n      this.isLoading = false;\n    }\n\n    return false;\n  }\n\n  private async handleDataFetching(): Promise<void> {\n    const isTweakwiseRecommendation = await this.getTweakWiseRecommendations();\n\n    if (isTweakwiseRecommendation) {\n      return;\n    }\n\n    if (null !== this.productId) {\n      await this.fetchProducts();\n      return;\n    }\n\n    this.$store.subscribe(async (mutation) => {\n      if (mutation.type === 'CatalogProduct/SET_PRODUCT_DATA') {\n        await this.fetchProducts();\n      }\n    });\n  }\n\n  async created(): Promise<void> {\n    await this.handleDataFetching();\n  }\n\n  private updated(): void {\n    this.$nextTick(() => {\n      const el = document.getElementById(`${this.sliderId}-slider`);\n      if (el) {\n        new window.BlazeSlider(el, {\n          all: {\n            slidesToShow: 1.8,\n            slideGap: '0px',\n            loop: false,\n            fixedSlides: true,\n          },\n          '(min-width: 768px)': {\n            slidesToShow: 4,\n          },\n          '(min-width: 1024px)': {\n            slidesToShow: 5,\n          }\n        });\n      }\n    });\n  }\n}\n","import { render, staticRenderFns } from \"./ProductProductRow.vue?vue&type=template&id=b1f65f48&\"\nimport script from \"./ProductProductRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductProductRow.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!./ProductProductRow.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!./ProductProductRow.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showComponent),expression:\"showComponent\"}],staticClass:\"catalog__category-list product__product--row\",class:`${_vm.sliderId}-slider`},[_c('div',{staticClass:\"blaze-slider\",attrs:{\"id\":`${_vm.sliderId}-slider`}},[_c('div',{staticClass:\"--header\"},[(_vm.showTitle)?_c('h2',[_vm._v(_vm._s(_vm.$t(_vm.rowTitle)))]):_vm._e(),_vm._v(\" \"),_vm._m(0)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"--loading\"},[_c('div',{staticClass:\"--spinner\"})]),_vm._v(\" \"),_c('div',{staticClass:\"blaze-container\"},[_c('div',{staticClass:\"blaze-track-container\"},[_c('div',{staticClass:\"blaze-track\"},_vm._l((_vm.products),function(product){return _c('div',{key:product['id'],staticClass:\"slider__product\"},[_c('catalog-product-list-item',{attrs:{\"data-source\":\"CatalogCategory\",\"product\":product,\"type\":\"product-row\",\"tag\":\"div\"}})],1)}),0)])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"blaze-controls --compact\"},[_c('button',{staticClass:\"blaze-prev\",attrs:{\"aria-label\":\"Go to previous slide\"}}),_vm._v(\" \"),_c('span',[_vm._v(\"/\")]),_vm._v(\" \"),_c('button',{staticClass:\"blaze-next\",attrs:{\"aria-label\":\"Go to next slide\"}})])\n}]\n\nexport { render, staticRenderFns }"],"names":["Vue","products","rowTitle","isLoading","showComponent","this","length","fetchProductRequestParams","limit","dataLayerProducts","map","product","fetchProducts","productId","$store","state","CatalogProduct","productData","product_id","data","$solarClient","get","rowType","params","title","SolarDataLayer","init","addViewItemsList","itemListName","e","console","error","getTweakWiseRecommendations","tweakwiseRecommendation","url","handleDataFetching","subscribe","mutation","type","created","updated","$nextTick","el","document","getElementById","sliderId","window","BlazeSlider","all","slidesToShow","slideGap","loop","fixedSlides","Prop","default","Component","name","components","getComponents","render","_vm","_c","_self","_setupProxy","directives","rawName","value","expression","staticClass","class","attrs","_v","_s","$t","_e","_m","_l","key","staticRenderFns"],"sourceRoot":""}