{"version":3,"file":"js/app.f03e7625bee606f49c9d.js","mappings":"kEAcA,SAASA,SAASC,EAAMC,EAAMC,GAC5B,IAAIC,EAASC,EAAMC,EAASC,EAAWC,EAGvC,SAASC,QACP,IAAIC,EAAOC,KAAKC,MAAQL,EAEpBG,EAAOR,GAAQQ,GAAQ,EACzBN,EAAUS,WAAWJ,MAAOP,EAAOQ,IAEnCN,EAAU,KACLD,IACHK,EAASP,EAAKa,MAAMR,EAASD,GAC7BC,EAAUD,EAAO,MAGvB,CAdI,MAAQH,IAAMA,EAAO,KAgBzB,IAAIa,UAAY,WACdT,EAAUU,KACVX,EAAOY,UACPV,EAAYI,KAAKC,MACjB,IAAIM,EAAUf,IAAcC,EAO5B,OANKA,IAASA,EAAUS,WAAWJ,MAAOP,IACtCgB,IACFV,EAASP,EAAKa,MAAMR,EAASD,GAC7BC,EAAUD,EAAO,MAGZG,CACT,EAmBA,OAjBAO,UAAUI,MAAQ,WACZf,IACFgB,aAAahB,GACbA,EAAU,KAEd,EAEAW,UAAUM,MAAQ,WACZjB,IACFI,EAASP,EAAKa,MAAMR,EAASD,GAC7BC,EAAUD,EAAO,KAEjBe,aAAahB,GACbA,EAAU,KAEd,EAEOW,SACT,CAGAf,SAASA,SAAWA,SAEpBsB,EAAOC,QAAUvB,Q,gnCCxDF,8BAAc,EAAAwB,IAAd,c,oBAUL,KAAAC,aAAuB,EACvB,KAAAC,cAAwB,EAExB,KAAAC,UAA2B,GAC3B,KAAAC,kBAA4B,EAC5B,KAAAC,iBAA2B,EAE3B,KAAAC,0BAA2B,IAAA9B,WAAU+B,IAC3Cf,KAAKgB,gBACLhB,KAAKiB,YAAYF,EAAE,GAClB,IA4HL,CA1HUG,uBAAuBH,GAC7Bf,KAAKc,yBAAyBX,QAC9BH,KAAKiB,YAAYF,EACnB,CAEYI,oBACV,OAAsB,eAAdnB,KAAKoB,MAAuC,gBAAdpB,KAAKoB,MAAwC,WAAdpB,KAAKoB,MAAmC,YAAdpB,KAAKoB,OAC5D,iBAAjCpB,KAAKqB,QAAsB,YACpC,CAEYC,mBACV,MAAwC,WAAjCtB,KAAKqB,QAAsB,cAAkBrB,KAAKqB,QAAQE,eAAe,iBAC9EvB,KAAKqB,QAAuB,cAAkB,eAC9CrB,KAAKqB,QAAwB,cACjC,CAEYG,wBACV,MAAwC,WAAjCxB,KAAKqB,QAAsB,cAAkBrB,KAAKqB,QAAQE,eAAe,iBAC9EvB,KAAKqB,QAAuB,cAAwB,qBACpDrB,KAAKqB,QAA8B,oBACvC,CAEYI,uBACV,OAAIzB,KAAKqB,QAA2B,mBAG7BrB,KAAKqB,QAA2B,kBAAc,YAF5C,EAGX,CAEYK,mBACV,OAAO1B,KAAK2B,OAAOC,QAAQ,kCAAkCC,WACzDC,GAAK,GAAG9B,KAAKqB,QAAoB,cAAQ,GAAGS,EAAc,gBACzD,CACP,CAEYC,0BACV,OAAO/B,KAAKU,cAAgB,CAC9B,CAEYsB,wBACV,OAAOhC,KAAKU,eAAiB,IAAM,GAAGV,KAAKU,gBAAkB,MAC/D,CAEYuB,cACV,OAAQjC,KAAKoB,MACX,IAAK,SACL,IAAK,cACL,IAAK,aACL,IAAK,UACH,MAAO,GACT,IAAK,WACH,MAAO,oBACT,QACE,MAAO,oBAEb,CAEYc,mBACV,OAAO,aAAmBlC,KAAKqB,QACjC,CAEQJ,YAAYF,GAClBf,KAAKS,YAAyB,eAAXM,EAAEK,IACvB,CAEYe,uBACV,OAAO,OAAP,wBACKnC,KAAKqB,SAAO,CACf,QAAWrB,KAAKqB,QAAoB,WACpC,cAAiBrB,KAAKqB,QAAoB,YAE9C,CAEce,wB,yCACZ,UACQpC,KAAK2B,OAAOU,SAAS,yCAA0C,CACnEC,UAAWtC,KAAKqB,QAAoB,WACpCkB,UAAYvC,KAAK0B,eAGnB1B,KAAK0B,aAAe1B,KAAKU,gBAAkBV,KAAKU,gBAChD,EAAA8B,eAAeC,OAAOC,iBAClB1C,KAAKmC,iBACLnC,KAAK0B,aAAe,EAAAiB,eAAeC,IAAM,EAAAD,eAAeE,OACxD7C,KAAKqB,QAA8B,qB,CAEvC,MAAON,GACP+B,QAAQC,MAAM,8BAA8BhC,I,CAEhD,G,CAEQiC,uBACN,IAAAC,iBAAgBjD,KAAKqB,QAASrB,KAAKkD,OAAOC,KAC1C,EAAAX,eAAeC,OAAOW,cAAcpD,KAAKmC,iBAAkBnC,KAAKkD,OAAOC,IAAe,eACxF,CAEcnC,gB,yCACZ,GAAOhB,KAAKqD,YAILrD,KAAKY,mBAAsBZ,KAAKa,gBACrC,IACEb,KAAKY,kBAAmB,EACxB,MAAM,KAAC0C,SAActD,KAAKuD,aAAaC,IAAI,mBAAmBxD,KAAKqB,QAAoB,4BACvFrB,KAAKW,UAAY2C,C,CACjB,MAAOvC,G,SAGPf,KAAKY,kBAAmB,EACxBZ,KAAKa,iBAAkB,C,CAG7B,G,CAEQ4C,UACNzD,KAAKU,cAAgBV,KAAKqB,QAAwB,eAE9CrB,KAAK0B,cACP1B,KAAKU,eAET,GA9IA,IAAC,IAAAgD,MAAK,CAACC,UAAU,I,0DACjB,IAAC,IAAAD,MAAK,CAACC,UAAU,I,uDACjB,IAAC,IAAAD,MAAK,CAACE,SAAS,I,0DAChB,IAAC,IAAAF,MAAK,CAACE,QAAS,K,oDAChB,IAAC,IAAAF,MAAK,CAACE,QAAS,O,mDAChB,IAAC,IAAAF,MAAK,CAACE,QAAS,M,yDAChB,IAAC,IAAAF,MAAK,CAACE,SAAS,I,4DAChB,IAAC,IAAAF,MAAK,CAACE,SAAS,I,8DARH,MALd,IAAAC,WAAU,CACTC,KAAM,4BACNC,YAAY,eAAmBC,mB,0JCVjC,UAAiBC,GACXA,EAA8B,iBACzB,CACLC,QAAS,CAAC,UACVC,MAAO,MACPC,WAAW,EACXC,UAAU,GAIVJ,EAAY1C,eAAe,qBAA8D,cAAvC0C,EAA8B,iBAAE,GAC7E,CACLC,QAAS,CAAC,SACVC,MAAO,YACPC,WAAW,EACXC,UAAU,GAIP,I,mRCnBI,EAAAC,sBAAyBC,IACpC,MAAMC,EAA6B,GAEnCC,OAAOC,UAAUC,KAAK,CACpB,UAAa,CACX,aAAgB,MAChB,YAAeH,KAInBD,EAASK,SAAQ,CAACC,EAAG/C,KACnB0C,EAAYG,KAAK,CACf,KAAQE,EAAQ,KAChB,GAAMA,EAAc,WACpB,MAASA,EAAwB,qBACjC,MAASA,EAAgB,aACzB,SAAYA,EAAEtD,eAAe,oBAAsBsD,EAAoB,iBAAI,GAC3E,QAAWA,EAAEtD,eAAe,SAAWsD,EAAS,MAAI,GACpD,KAAQ,eACR,SAAa/C,EAAI,GACjB,GACF,EAGS,EAAAmB,gBAAkB,CAAC5B,EAAiByD,KAC/CL,OAAOC,UAAUC,KAAK,CACpB,MAAS,eACT,UAAa,CACX,MAAS,CACP,YAAe,CAAC,KAAQ,gBACxB,SAAY,CAAC,CACX,KAAQtD,EAAc,KACtB,GAAMA,EAAoB,WAC1B,MAASA,EAA8B,qBACvC,MAASA,EAAsB,aAC/B,SAAYA,EAAQE,eAAe,oBAAsBF,EAA0B,iBAAI,GACvF,QAAWA,EAAQE,eAAe,SAAWF,EAAe,MAAI,GAChE,SAAayD,EAAmB,OAItC,EAGS,EAAAC,iBAAoB1D,IAC/BoD,OAAOC,UAAUC,KAAK,CACpB,UAAa,CACX,OAAU,CACR,SAAY,CAAC,CACX,KAAQtD,EAAc,KACtB,GAAMA,EAAoB,WAC1B,MAASA,EAA8B,qBACvC,MAASA,EAAsB,aAC/B,SAAYA,EAAQE,eAAe,oBAAsBF,EAA0B,iBAAI,GACvF,QAAW,QAIjB,EAGS,EAAA2D,oBAAsB,CAAC3D,EAAiB4D,EAAyBC,EAAc,KAC1F,IAAIC,EAAkB,GAClBF,EAAgB1D,eAAe,UACjC4D,EAAgBR,KAAKM,EAAuB,OAG1CA,EAAgB1D,eAAe,SACjC4D,EAAgBR,KAAKM,EAAsB,MAG7CR,OAAOC,UAAUC,KAAK,CACpB,MAAS,YACT,UAAa,CACX,aAAgB,MAChB,IAAO,CACL,SAAY,CAAC,CACX,KAAQtD,EAAc,KACtB,GAAMA,EAAoB,WAC1B,MAASA,EAA8B,qBACvC,MAASA,EAAsB,aAC/B,SAAYA,EAAQE,eAAe,oBAAsBF,EAA0B,iBAAI,GACvF,QAAW8D,EAAgBC,OAASD,EAAgBE,KAAK,OAAS,GAClE,SAAYH,OAIlB,EAGS,EAAAI,yBAA4BjE,IACvCoD,OAAOC,UAAUC,KAAK,CACpB,MAAS,iBACT,UAAa,CACX,OAAU,CACR,SAAY,CAAC,CACX,KAAQtD,EAAc,KACtB,GAAMA,EAAiB,QACvB,MAASA,EAA4B,mBACrC,MAAS,GACT,SAAY,GACZ,QAAW,GACX,SAAYA,EAAa,SAI/B,EAGS,EAAAkE,YAAc,CAAChB,EAAyBiB,EAAcC,EAAiB,MAClF,MAAMC,EAA6B,GAEtB,IAATF,GACFf,OAAOC,UAAUC,KAAK,CACpB,MAAS,WACT,UAAa,CACX,SAAY,CACV,YAAe,CAAC,KAAQa,EAAM,OAAUC,GACxC,SAAYC,MAKlBnB,EAASK,SAAQC,IACf,IAAIc,EAAU,GACVd,EAAEtD,eAAe,YACnBqE,KAAKC,MAAMhB,EAAW,SAAK,MAAMD,SAAQkB,IACvCH,EAAQhB,KAAKmB,EAAS,MAAE,IAI5BJ,EAAYf,KAAK,CACf,KAAQE,EAAQ,KAChB,GAAMA,EAAW,QACjB,MAASA,EAAsB,mBAC/B,MAAS,GACT,SAAY,GACZ,QAAWc,EAAQP,OAASO,EAAQN,KAAK,OAAS,GAClD,SAAYR,EAAO,KACnB,KAGJJ,OAAOC,UAAUC,KAAK,CACpB,MAAS,iBACT,UAAa,CACX,gBAAmB,CACjB,YAAe,CAAC,KAAQa,EAAM,OAAUC,M,gMChIlD,SAXgB,E,SAAA,GACd,UACA,IACA,KACA,EACA,KACA,KACA,MAI8B,O,mJClB+L,QAAe,G,wDCA9O,IAAIM,EAAS,SAASA,SAAS,IAAIC,EAAIhG,KAAKiG,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAGD,EAAII,IAAI,CAACA,IAAI,YAAYC,MAAML,EAAI/D,QAAQqE,GAAG,CAAC,WAAa,SAASC,GAAQ,OAAOP,EAAIlF,yBAAyByF,EAAO,EAAE,WAAa,SAASA,GAAQ,OAAOP,EAAI9E,uBAAuBqF,EAAO,IAAI,CAACN,EAAG,MAAM,CAACO,YAAY,0BAA0BH,MAAM,CAAE,SAAYL,EAAI3C,UAAW,QAAW2C,EAAIvF,cAAe,CAAEuF,EAAa,UAAEC,EAAG,8BAA8B,CAACQ,MAAM,CAAC,QAAUT,EAAI3E,QAAQ,WAAa2E,EAAIrF,aAAaqF,EAAIU,KAAKV,EAAIW,GAAG,KAAMX,EAAI3C,WAA0B,YAAb2C,EAAI5E,KAAoB6E,EAAG,OAAO,CAACO,YAAY,oBAAoBH,MAAM,CAAC,UAAwB,YAAbL,EAAI5E,OAAqB,CAAC6E,EAAG,SAAS,CAACO,YAAY,YAAYH,MAAM,CAAE,QAAWL,EAAItE,cAAe4E,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOK,iBAAiBL,EAAOM,kBAAyBb,EAAI5D,uBAAuB,KAAK4D,EAAIW,GAAG,KAAKV,EAAG,OAAO,CAACa,WAAW,CAAC,CAAChD,KAAK,OAAOiD,QAAQ,SAASC,MAAOhB,EAAuB,oBAAEiB,WAAW,wBAAwBT,YAAY,WAAWU,SAAS,CAAC,YAAclB,EAAImB,GAAGnB,EAAIhE,wBAAwBgE,EAAIU,KAAKV,EAAIW,GAAG,KAAKV,EAAG,OAAO,CAACO,YAAY,iBAAiB,CAAE,OAASR,EAAI9D,cAAkBkF,OAAOC,KAAKrB,EAAI3E,QAAkB,UAAK,CAAC,GAAG+D,OAAmNY,EAAIU,KAA/MT,EAAG,OAAO,CAACO,YAAY,iBAAiBH,MAAML,EAAI9D,aAAsB,QAAEgF,SAAS,CAAC,YAAclB,EAAImB,GAAGnB,EAAI9D,aAAwB,UAAI8D,EAAIsB,GAAGtB,EAAI9D,aAAoB,OAAK8D,EAAI9D,aAAoB,UAAe8D,EAAIW,GAAG,KAAKV,EAAG,OAAO,CAACO,YAAY,oBAAoB,CAACP,EAAG,2BAA2B,CAACQ,MAAM,CAAC,QAAUT,EAAI3E,QAAQ,4BAA2B,KAAQ2E,EAAIW,GAAG,KAAKV,EAAG,8BAA8B,CAACQ,MAAM,CAAC,QAAUT,EAAI3E,QAAQ,aAAa2E,EAAIuB,UAAU,iBAAiBvB,EAAIwB,kBAAkB,GAAGxB,EAAIW,GAAG,KAAKV,EAAG,OAAO,CAACO,YAAY,mBAAmB,CAACP,EAAG,OAAO,CAACO,YAAY,gBAAgBiB,MAAM,0BAA2BzB,EAAIvE,uBAAwBuE,EAAIW,GAAG,KAAKV,EAAG,IAAI,CAACQ,MAAM,CAAC,KAAOT,EAAI3E,QAAa,KAAK2E,EAAI3E,QAAiB,SAAGiF,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOP,EAAIhD,qBAAqB,IAAI,CAACiD,EAAG,KAAK,CAACD,EAAIW,GAAGX,EAAImB,GAAGnB,EAAI3E,QAAc,WAAQ2E,EAAIW,GAAG,KAAKV,EAAG,OAAO,CAACO,YAAY,gBAAgB,CAACP,EAAG,6BAA6B,CAACQ,MAAM,CAAC,iBAAiBT,EAAI1E,aAAa,uBAAuB0E,EAAIxE,qBAAqBwE,EAAIW,GAAG,KAAMX,EAAe,YAAEC,EAAG,oCAAoC,CAACQ,MAAM,CAAC,QAAUT,EAAI3E,WAAW2E,EAAIU,MAAM,KAAKV,EAAIW,GAAG,KAAMX,EAAa,UAAEC,EAAG,6BAA6B,CAACQ,MAAM,CAAC,QAAUT,EAAI3E,WAAW2E,EAAIU,MAAM,IAAI,GAAGV,EAAIW,GAAG,KAAMX,EAAiB,cAAEC,EAAG,mCAAmC,CAACQ,MAAM,CAAC,QAAUT,EAAI3E,WAAW2E,EAAIU,MAAM,EAChiF,EACIgB,EAAkB,E","sources":["webpack:///./node_modules/debounce/index.js","webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue?988b","webpack:///./resources/area/web/default/js/shared/catalog/product/ProductLabelPicker.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?2c0b","webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue?00b3"],"sourcesContent":["/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n  var timeout, args, context, timestamp, result;\n  if (null == wait) wait = 100;\n\n  function later() {\n    var last = Date.now() - timestamp;\n\n    if (last < wait && last >= 0) {\n      timeout = setTimeout(later, wait - last);\n    } else {\n      timeout = null;\n      if (!immediate) {\n        result = func.apply(context, args);\n        context = args = null;\n      }\n    }\n  };\n\n  var debounced = function(){\n    context = this;\n    args = arguments;\n    timestamp = Date.now();\n    var callNow = immediate && !timeout;\n    if (!timeout) timeout = setTimeout(later, wait);\n    if (callNow) {\n      result = func.apply(context, args);\n      context = args = null;\n    }\n\n    return result;\n  };\n\n  debounced.clear = function() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n  \n  debounced.flush = function() {\n    if (timeout) {\n      result = func.apply(context, args);\n      context = args = null;\n      \n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n\n  return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","\nimport ServiceContainer from '@flashpointbv/solar-service-container';\nimport {SolarDataLayer, WishlistEvents} from '@flashpointbv/solar-datalayer/dist';\nimport {Component, Vue, Prop} from 'vue-property-decorator';\nimport ProductLabelPicker from '../../shared/catalog/product/ProductLabelPicker';\nimport {debounce} from 'debounce';\nimport {addProductClick} from '../../shared/helpers/enhanced-ecommerce';\n\n@Component({\n  name: 'catalog-product-list-item',\n  components: ServiceContainer().getComponents()\n})\n\nexport default class extends Vue {\n  @Prop({required: true}) readonly dataSource: string;\n  @Prop({required: true}) product: object;\n  @Prop({default: false}) readonly showHover: boolean;\n  @Prop({default: ''}) readonly type!: string;\n  @Prop({default: 'li'}) readonly tag: string;\n  @Prop({default: 280}) readonly imageSize: number;\n  @Prop({default: false}) readonly showCompare: boolean;\n  @Prop({default: false}) readonly enableGallery: boolean;\n\n  private hoverActive: boolean = false;\n  private wishlistCount: number = 0;\n\n  private relations: Array<object> = [];\n  private relationsLoading: boolean = false;\n  private relationsLoaded: boolean = false;\n\n  private initiateLoadingRelations = debounce((e) => {\n    this.loadRelations();\n    this.showOverlay(e);\n  }, 200);\n\n  private cancelLoadingRelations(e): void {\n    this.initiateLoadingRelations.clear();\n    this.showOverlay(e);\n  }\n\n  private get showAddToCart(): boolean {\n    return (this.type === 'cross-sell' || this.type === 'product-row' || this.type === 'recent' || this.type === 'compare')\n        && this.product['product_type'] === 'configurable';\n  }\n\n  private get priceInclTax(): number {\n    return this.product['product_type'] === 'bundle' && this.product.hasOwnProperty('bundle_prices') ?\n      this.product['bundle_prices']['price_incl_tax'] :\n      this.product['price_incl_tax']\n  }\n\n  private get finalPriceInclTax(): number {\n    return this.product['product_type'] === 'bundle' && this.product.hasOwnProperty('bundle_prices') ?\n      this.product['bundle_prices']['final_price_incl_tax'] :\n      this.product['final_price_incl_tax']\n  }\n\n  private get manufacturerLogo(): string {\n    if(!this.product['manufacturer_data']){\n      return '';\n    }\n    return this.product['manufacturer_data']['image_path'] || ''\n  }\n\n  private get isOnWishlist(): boolean {\n    return this.$store.getters['CustomerWishlist/wishlistItems'].findIndex(\n        i => `${this.product['product_id']}` === `${i['product_id']}`\n    ) >= 0;\n  }\n\n  private get showWishlistCounter(): boolean {\n    return this.wishlistCount > 0;\n  }\n\n  private get wishlistCountText(): string {\n    return this.wishlistCount <= 999 ? `${this.wishlistCount}` : '999+';\n  }\n\n  private get getType(): string {\n    switch (this.type) {\n      case 'recent':\n      case 'product-row':\n      case 'cross-sell':\n      case 'compare':\n        return '';\n      case 'wishlist':\n        return 'small-12 medium-6';\n      default:\n        return 'small-12 medium-8';\n    }\n  }\n\n  private get productLabel(): null | object {\n    return ProductLabelPicker(this.product);\n  }\n\n  private showOverlay(e): void {\n    this.hoverActive = e.type === 'mouseenter';\n  }\n\n  private get dataLayerProduct(): object {\n    return {\n      ...this.product,\n      'item_id': this.product['product_id'],\n      'item_group_id': this.product['product_id'],\n    };\n  }\n\n  private async productToggleWishlist(): Promise<any> {\n    try {\n      await this.$store.dispatch('CustomerWishlist/toggleWishlistProduct', {\n        productId: this.product['product_id'],\n        newState: ! this.isOnWishlist\n      });\n\n      this.isOnWishlist ? this.wishlistCount++ : this.wishlistCount--;\n      SolarDataLayer.init().addAddToWishlist(\n          this.dataLayerProduct,\n          this.isOnWishlist ? WishlistEvents.ADD : WishlistEvents.REMOVE,\n          this.product['final_price_incl_tax'],\n      );\n    } catch (e) {\n      console.error(`Unable to mutate wishlist: ${e}`);\n    }\n  }\n\n  private measureProductClick(): void {\n    addProductClick(this.product, this.$vnode.key);\n    SolarDataLayer.init().addSelectItem(this.dataLayerProduct, this.$vnode.key as number, 'Product list');\n  }\n\n  private async loadRelations(): Promise<any> {\n    if ( ! this.showHover) {\n      return;\n    }\n\n    if ( ! this.relationsLoading && ! this.relationsLoaded) {\n      try {\n        this.relationsLoading = true;\n        const {data} = await this.$solarClient.get(`catalog/product/${this.product['product_id']}/relation/list`);\n        this.relations = data;\n      } catch (e) {\n        //\n      } finally {\n        this.relationsLoading = false;\n        this.relationsLoaded = true;\n      }\n    }\n  }\n\n  private created(): void {\n    this.wishlistCount = this.product['wishlist_count'];\n\n    if (this.isOnWishlist) {\n      this.wishlistCount++;\n    }\n  }\n}\n","export default ((productData) => {\n  if (productData['promotion_is_new']) {\n    return {\n      classes: ['_green'],\n      label: 'new',\n      translate: true,\n      topLevel: true\n    };\n  }\n\n  if (productData.hasOwnProperty('attr_advies_type') && productData['attr_advies_type'][0] === 'Pre-order') {\n    return {\n      classes: ['_blue'],\n      label: 'pre-order',\n      translate: true,\n      topLevel: true\n    };\n  }\n\n  return null;\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 \"./ProductListItem.vue?vue&type=template&id=09c083a5&\"\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-6.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-6.use[0]!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductListItem.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_vm.tag,{tag:\"component\",class:_vm.getType,on:{\"mouseenter\":function($event){return _vm.initiateLoadingRelations($event)},\"mouseleave\":function($event){return _vm.cancelLoadingRelations($event)}}},[_c('div',{staticClass:\"product__tile-container\",class:{ '_overlay': _vm.showHover, '_active': _vm.hoverActive }},[(_vm.showHover)?_c('catalog-product-list-colors',{attrs:{\"product\":_vm.product,\"variations\":_vm.relations}}):_vm._e(),_vm._v(\" \"),(_vm.showHover || _vm.type === 'compare')?_c('span',{staticClass:\"product__wishlist\",class:{'--right': _vm.type === 'compare'}},[_c('button',{staticClass:\"_wishlist\",class:{ '_active': _vm.isOnWishlist },on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.productToggleWishlist()}}}),_vm._v(\" \"),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showWishlistCounter),expression:\"showWishlistCounter\"}],staticClass:\"_counter\",domProps:{\"textContent\":_vm._s(_vm.wishlistCountText)}})]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"product__tile\"},[(null !== _vm.productLabel && ! Object.keys(_vm.product['stickers'] || {}).length)?_c('span',{staticClass:\"product__label\",class:_vm.productLabel['classes'],domProps:{\"textContent\":_vm._s(_vm.productLabel['translate'] ? _vm.$t(_vm.productLabel['label']) : _vm.productLabel['label'])}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"sticker__wrapper\"},[_c('catalog-product-stickers',{attrs:{\"product\":_vm.product,\"use-configurable-product\":true}}),_vm._v(\" \"),_c('catalog-product-list-images',{attrs:{\"product\":_vm.product,\"image-size\":_vm.imageSize,\"enable-gallery\":_vm.enableGallery}})],1),_vm._v(\" \"),_c('span',{staticClass:\"product__holder\"},[_c('span',{staticClass:\"_manufacturer\",style:(`background-image: url('${_vm.manufacturerLogo}')`)}),_vm._v(\" \"),_c('a',{attrs:{\"href\":_vm.product['url'] || _vm.product['url_key']},on:{\"click\":function($event){return _vm.measureProductClick()}}},[_c('h2',[_vm._v(_vm._s(_vm.product['name']))])]),_vm._v(\" \"),_c('span',{staticClass:\"tile__footer\"},[_c('catalog-product-list-price',{attrs:{\"price-incl-tax\":_vm.priceInclTax,\"final-price-incl-tax\":_vm.finalPriceInclTax}}),_vm._v(\" \"),(_vm.showCompare)?_c('catalog-product-list-item-compare',{attrs:{\"product\":_vm.product}}):_vm._e()],1)]),_vm._v(\" \"),(_vm.showHover)?_c('catalog-product-list-sizes',{attrs:{\"product\":_vm.product}}):_vm._e()],1)],1),_vm._v(\" \"),(_vm.showAddToCart)?_c('catalog-product-list-add-to-cart',{attrs:{\"product\":_vm.product}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["debounce","func","wait","immediate","timeout","args","context","timestamp","result","later","last","Date","now","setTimeout","apply","debounced","this","arguments","callNow","clear","clearTimeout","flush","module","exports","Vue","hoverActive","wishlistCount","relations","relationsLoading","relationsLoaded","initiateLoadingRelations","e","loadRelations","showOverlay","cancelLoadingRelations","showAddToCart","type","product","priceInclTax","hasOwnProperty","finalPriceInclTax","manufacturerLogo","isOnWishlist","$store","getters","findIndex","i","showWishlistCounter","wishlistCountText","getType","productLabel","dataLayerProduct","productToggleWishlist","dispatch","productId","newState","SolarDataLayer","init","addAddToWishlist","WishlistEvents","ADD","REMOVE","console","error","measureProductClick","addProductClick","$vnode","key","addSelectItem","showHover","data","$solarClient","get","created","Prop","required","default","Component","name","components","getComponents","productData","classes","label","translate","topLevel","addProductImpressions","products","impressions","window","dataLayer","push","forEach","p","index","addProductDetail","addProductAddToCart","selectedProduct","qty","selectedOptions","length","join","addProductRemoveFromCart","addCheckout","step","option","productList","options","JSON","parse","o","render","_vm","_c","_self","_setupProxy","tag","class","on","$event","staticClass","attrs","_e","_v","preventDefault","stopPropagation","directives","rawName","value","expression","domProps","_s","Object","keys","$t","imageSize","enableGallery","style","staticRenderFns"],"sourceRoot":""}