{"version":3,"file":"js/app.82ca55ee363e5f9a7944.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?f0a6"],"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 = `api/tweakwise/recommendations/${this.tweakwiseRecommendation['id']}`;\n      if (this.productId) {\n        url += `/${this.productId}`;\n      }\n\n      const {data} = await this.$solarStatefulClient.get(url, {\n        params: {s: this.$config.get('active_store_id')}\n      });\n\n      if (data && data.length) {\n        this.products = data[0]['products'];\n\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=d6c78b9a&\"\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","$solarStatefulClient","s","$config","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":""}