{"version":3,"mappings":"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","names":["_sfc_main","ArrowIcon","SsrCloudImageFi","breakpointMixin","error","_hoisted_1","_hoisted_2","_hoisted_5","_createBlock","_resolveDynamicComponent","$options","_normalizeClass","$props","_withModifiers","_withCtx","_createElementVNode","_component_ssr_cloud_image_fi","$data","_createCommentVNode","_openBlock","_createElementBlock","_Fragment","_toDisplayString","_hoisted_6","_ctx","_hoisted_3","_hoisted_4","_createVNode","_component_arrow_icon","importGETBESTPRICE","ButtonFi","CloudImageFi","IconFi","LoadingIndicatorWrapper","PriceSavingsFi","AvailabilityStatus","QuantityStepsUpdater","QuantityModificationHintFi","ProductPackageSizeFi","shoppingcartMixin","userMixin","priceCurrencyMixin","inCart","_a","product","_c","_b","data","ref","itemQuantity","productCode","qty","query","hint","dataTest2","id","_hoisted_7","_hoisted_9","_hoisted_11","_hoisted_15","$event","_component_cloud_image_fi","_hoisted_13","_hoisted_14","_component_loading_indicator_wrapper","_cache","_component_price_savings_fi","_hoisted_8","_component_availability_status","_hoisted_10","_component_button_fi","_createTextVNode","_component_icon_fi","_component_quantity_steps_updater","quantity","_component_product_package_size_fi","_component_quantity_modification_hint_fi","_hoisted_12","importGET_MULTIPLE_BEST_PRICES","CarouselFi","CarouselSlideFi","CarouselSliderControlsFi","ComponentWrapper","GridContainerFi","RichtextFi","ProductTileFi","ProductCategoryTileFi","trackingMixin","screenWidths","availability","imported","GETPRODUCTCATEGORYLISTBYID","GETPRODUCTLISTBYID","bestPrice","GET_RETAILER_AVAILABILITY_FOR_IDS","_component_component_wrapper","_component_grid_container_fi","_component_carousel_slider_controls_fi","_component_carousel_fi","carousel","_renderList","item","index","_component_carousel_slide_fi","_component_product_tile_fi","_component_product_category_tile_fi","_component_richtext_fi"],"ignoreList":[],"sources":["../../src/components/product-category/product-category-tile/ProductCategoryTileFi.vue","../../src/components/product-tile-fi/ProductTileFi.vue","../../src/pages/product-teasers-fi/ProductTeasersFi.vue"],"sourcesContent":["<template>\n  <component\n    :is=\"containerTag\"\n    :class=\"{\n      'product-category-tile-fi': true,\n      'product-category-tile-fi--teaser': category.Slug,\n      'product-category-tile-fi--is-family-page-variant': isGuidedRecommandation,\n      'product-category-tile-fi--has-badge': isGuidedRecommandation && category.familyProductCount,\n    }\"\n    :href=\"categoryHref\"\n    @click.stop.prevent=\"goToCategory\"\n  >\n    <div class=\"product-category-tile-fi__image\">\n      <ssr-cloud-image-fi\n        v-if=\"category.image\"\n        class=\"product-category-tile-fi__img\"\n        :src=\"category.image\"\n        :alt=\"category.name\"\n        :breakpoints=\"breakpoints\"\n        :unlimited=\"unlimited\"\n        :aspect-ratio=\"16 / 9\"\n        trim\n        params=\"func=fit\"\n      />\n    </div>\n    <template v-if=\"!isGuidedRecommandation\">\n      <div class=\"product-category-tile-fi__info\">\n        <div\n          v-if=\"category.name\"\n          class=\"product-category-tile-fi__name\"\n        >\n          {{ category.name }}\n        </div>\n        <div\n          v-if=\"category.marketingClaim\"\n          class=\"product-category-tile-fi__claim\"\n        >\n          {{ category.marketingClaim }}\n        </div>\n      </div>\n\n      <div\n        v-if=\"category.Slug\"\n        :class=\"{\n          'fi-text-21': !isLG,\n          'fi-text-24': isLG,\n          'product-category-tile-fi__arrow': true,\n          'fi-semibold': true,\n        }\"\n      >\n        <arrow-icon class=\"product-category-tile-fi__arrow-icon\" />\n      </div>\n    </template>\n    <template v-else>\n      <div class=\"product-category-tile-fi__title\">\n        {{ category.name }}\n      </div>\n      <div\n        v-if=\"category.familyProductCount\"\n        class=\"product-category-tile-fi__badge\"\n      >\n        {{\n          $dict.get(\n            category.familyProductCount === '1'\n              ? 'search.Variants-Singular'\n              : 'search.Variants-Plural',\n            [category.familyProductCount],\n          )\n        }}\n      </div>\n    </template>\n  </component>\n</template>\n\n<script>\nimport { ArrowIcon, SsrCloudImageFi } from 'atoms';\nimport breakpointMixin from 'mixins/breakpointMixin';\n\nexport default {\n  name: 'ProductCategoryTileFi',\n  components: {\n    ArrowIcon,\n    SsrCloudImageFi,\n  },\n  mixins: [breakpointMixin],\n  props: {\n    category: {\n      type: Object,\n      default: () => ({}),\n    },\n    isGuidedRecommandation: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  emits: ['tile-clicked'],\n  data() {\n    return {\n      breakpoints: [\n        {\n          mediaWidth: 480,\n          imageWidth: 331,\n        },\n        {\n          mediaWidth: 767,\n          imageWidth: 404,\n        },\n        {\n          mediaWidth: 768,\n          imageWidth: 256,\n        },\n        {\n          mediaWidth: 1023,\n          imageWidth: 361,\n        },\n        {\n          mediaWidth: 1440,\n          imageWidth: 300,\n        },\n        {\n          mediaWidth: 1920,\n          imageWidth: 300,\n        },\n      ],\n      unlimited: 300,\n    };\n  },\n  computed: {\n    containerTag() {\n      return this.category.Slug && !this.isEditMode ? 'a' : 'div';\n    },\n    categoryHref() {\n      return this.category.Slug && !this.isEditMode\n        ? this.$fischer.pages.products().url + this.category.Slug\n        : null;\n    },\n  },\n  methods: {\n    goToCategory() {\n      this.$emit('tile-clicked');\n\n      if (this.isGuidedRecommandation) {\n        try {\n          localStorage.setItem(\n            'recommendationClick',\n            JSON.stringify({\n              refererId: this.$fischer.catalogId(),\n              guided: true,\n            }),\n          );\n        } catch (error) {\n          console.debug('failed to store recommendation click', error);\n        }\n      }\n\n      window.location = this.categoryHref;\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import './product-category-tile-fi';\n</style>\n","<template>\n  <component\n    :is=\"product.Slug ? 'a' : 'div'\"\n    class=\"product-tile-fi\"\n    :href=\"productHref\"\n    @click.stop.prevent=\"goToProduct(product.id)\"\n  >\n    <div class=\"product-tile-fi__image\">\n      <cloud-image-fi\n        v-if=\"product.image\"\n        :src=\"product.image\"\n        :alt=\"product.name\"\n        :aspect-ratio=\"1\"\n        trim\n        params=\"func=fit\"\n        class=\"product-tile-fi__img\"\n        do-not-replace-url\n      />\n    </div>\n\n    <div class=\"product-tile-fi__artnr\">\n      {{ $dict.get('construction-Projects.Global-Labels.Article-Number', [product.id]) }}\n    </div>\n    <div class=\"product-tile-fi__name\">\n      {{ product.name }}\n    </div>\n\n    <div class=\"product-tile-fi__action\">\n      <template v-if=\"!isFite\">\n        <template v-if=\"isShop\">\n          <div class=\"product-tile-fi__product-facts\">\n            <loading-indicator-wrapper\n              class=\"product-tile-fi__loading-indicator\"\n              :loading=\"bestPriceLoading || loading\"\n              @click.stop.prevent\n            >\n              <div\n                :class=\"{\n                  'product-tile-fi__details': true,\n                  'product-tile-fi__details--without-price': showWithoutPrice,\n                }\"\n              >\n                <div class=\"product-tile-fi__details__top\">\n                  <div class=\"product-tile-fi__price-and-delivery-details\">\n                    <price-savings-fi\n                      class=\"product-tile-fi__price\"\n                      :best-price=\"currentBestPrice\"\n                      theme=\"product-list-view\"\n                      hide-savings-in-percent\n                      stroke-price-absolute\n                    />\n\n                    <div\n                      v-if=\"!showWithoutPrice\"\n                      class=\"product-tile-fi__vac\"\n                    >\n                      {{ $dict.get('online-Shop.Product.Vat-excluded') }}\n                    </div>\n\n                    <div class=\"product-tile-fi__availability-status-container\">\n                      <availability-status\n                        v-if=\"!bestPriceLoading\"\n                        :class=\"{\n                          'product-tile-fi__availability-status': true,\n                          'fi-mt-9': !currentBestPrice,\n                        }\"\n                        :delivery-speed=\"\n                          currentBestPrice ? currentBestPrice.deliverySpeed : 'NODELIVERY'\n                        \"\n                        :stock-levels=\"currentBestPrice?.stockLevels || null\"\n                        theme=\"product-list-view\"\n                        show-status-text\n                        disable-tooltip\n                      />\n                    </div>\n                  </div>\n\n                  <div\n                    v-if=\"!bestPriceLoading && isSM\"\n                    class=\"product-tile-fi__add-to-cart\"\n                  >\n                    <button-fi\n                      :data-productid=\"product ? product.id : null\"\n                      :data-productname=\"product ? `${product.id} - ${product.name}` : null\"\n                      :disabled=\"!bestPrice || isAddingItemToCart[product.id] || outOfStock\"\n                      type=\"button\"\n                      class=\"button-fi__primary product-tile-fi__action-button product-tile-fi__action-button--onlineShop\"\n                      :class=\"!showWithoutPrice ? 'button-fi__icon' : 'button-fi--stretched'\"\n                      data-test=\"product-tile-add-to-cart\"\n                      :data-test-2=\"\n                        !bestPrice || isAddingItemToCart[product.id] || outOfStock\n                          ? 'product-tile-add-to-cart-disabled'\n                          : null\n                      \"\n                      @click.stop.prevent=\"\n                        addProduct({\n                          productID: product.id,\n                          productRequestedQuantity: currentBestPrice.requestedQuantity,\n                        })\n                      \"\n                    >\n                      <template v-if=\"showWithoutPrice\">\n                        {{ $dict.get('online-Shop.Product-Teaser.Button-Add-To-Cart') }}\n                      </template>\n\n                      <icon-fi\n                        v-else\n                        class=\"product-tile-fi__action-button__icon\"\n                        icon=\"shopping-cart\"\n                        color=\"white\"\n                      />\n                    </button-fi>\n                  </div>\n                </div>\n\n                <div class=\"product-tile-fi__quantity-stepper\">\n                  <quantity-steps-updater\n                    v-if=\"currentBestPrice\"\n                    :ref=\"`quantityStepper-${product.id}`\"\n                    :key=\"product.id\"\n                    :item=\"currentBestPrice\"\n                    :requested-quantity=\"0\"\n                    auto-width\n                    @update-quantity=\"(quantity) => updateBestPrice(product.id, quantity)\"\n                    @quantity-input=\"onQuantityInput\"\n                    @value-rounded=\"onValueRounded\"\n                  />\n\n                  <product-package-size-fi\n                    class=\"product-tile-fi__base-price\"\n                    :item=\"currentBestPrice\"\n                    align-right\n                  />\n\n                  <quantity-modification-hint-fi\n                    v-if=\"quantityIncreasedMessage\"\n                    class=\"product-tile-fi__quantity-modification-hint\"\n                    :hint=\"quantityIncreasedMessage\"\n                    :data-test-2=\"quantityDataTest2\"\n                    icon=\"info\"\n                    theme=\"product-tile-fi\"\n                  />\n                </div>\n              </div>\n              <div\n                v-if=\"!bestPriceLoading && !isSM\"\n                class=\"product-tile-fi__add-to-cart\"\n              >\n                <button-fi\n                  :data-productid=\"product ? product.id : null\"\n                  :data-productname=\"product ? `${product.id} - ${product.name}` : null\"\n                  :disabled=\"!bestPrice || isAddingItemToCart[product.id] || outOfStock\"\n                  type=\"button\"\n                  class=\"button-fi__primary button-fi--stretched product-tile-fi__action-button product-tile-fi__action-button--onlineShop\"\n                  data-test=\"product-tile-add-to-cart\"\n                  @click.stop.prevent=\"\n                    addProduct({\n                      productID: product.id,\n                      productRequestedQuantity: currentBestPrice.requestedQuantity,\n                    })\n                  \"\n                >\n                  {{ $dict.get('online-Shop.Product-Teaser.Button-Add-To-Cart') }}\n                </button-fi>\n              </div>\n            </loading-indicator-wrapper>\n          </div>\n        </template>\n\n        <button-fi\n          v-else-if=\"isRetailConnectCart\"\n          :data-productid=\"product ? product.id : null\"\n          :data-productname=\"product ? `${product.id} - ${product.name}` : null\"\n          :disabled=\"productInCart || isAddingItemToCart[product.id] || outOfStock\"\n          data-test=\"product-tile-add-to-cart\"\n          type=\"button\"\n          class=\"button-fi__primary button-fi--stretched product-tile-fi__action-button product-tile-fi__action-button--retailConnectCart\"\n          @click.stop.prevent=\"addProduct({ productID: product.id })\"\n        >\n          {{ $dict.get('online-Shop.Product-Teaser.Button-Add-To-Cart') }}\n        </button-fi>\n\n        <button-fi\n          v-else\n          :data-productid=\"product ? product.id : null\"\n          :data-productname=\"product ? `${product.id} - ${product.name}` : null\"\n          data-test=\"product-tile-to-cart\"\n          type=\"button\"\n          class=\"button-fi__primary button-fi--stretched product-tile-fi__action-button product-tile-fi__action-button--retailConnect\"\n        >\n          {{ $dict.get('online-Shop.Product-Teaser.Button-Product-Text') }}\n        </button-fi>\n      </template>\n      <template v-else>\n        <div\n          v-if=\"productPrice\"\n          class=\"product-tile-fi__uvp-price\"\n        >\n          <div\n            class=\"product-tile-fi__uvp-price__value\"\n            data-test=\"product-price\"\n          >\n            {{ $dict.get('online-Shop.Product.UVP-Price-Prefix') }} {{ productPrice }}\n          </div>\n\n          <div class=\"product-tile-fi__uvp-price__vat\">\n            {{ $dict.get('online-Shop.Product.Vat-included') }}\n          </div>\n        </div>\n      </template>\n    </div>\n  </component>\n</template>\n\n<script>\nimport {\n  AvailabilityStatus,\n  ButtonFi,\n  CloudImageFi,\n  IconFi,\n  LoadingIndicatorWrapper,\n  PriceSavingsFi,\n  ProductPackageSizeFi,\n  QuantityModificationHintFi,\n} from 'atoms';\nimport QuantityStepsUpdater from 'components/shop-modules/quantity-steps-updater/QuantityStepsUpdater';\nimport breakpointMixin from 'mixins/breakpointMixin';\nimport priceCurrencyMixin from 'mixins/priceCurrencyMixin';\nimport shoppingcartMixin from 'mixins/shoppingcartMixin';\nimport userMixin from 'mixins/userMixin';\n\nconst importGETBESTPRICE = () => import('gql/getBestPrice.gql');\n\nexport default {\n  name: 'ProductTileFi',\n  components: {\n    ButtonFi,\n    CloudImageFi,\n    IconFi,\n    LoadingIndicatorWrapper,\n    PriceSavingsFi,\n    AvailabilityStatus,\n    QuantityStepsUpdater,\n    QuantityModificationHintFi,\n    ProductPackageSizeFi,\n  },\n  mixins: [breakpointMixin, shoppingcartMixin, userMixin, priceCurrencyMixin],\n  inject: ['fields'],\n  props: {\n    product: {\n      type: Object,\n      required: true,\n    },\n    outOfStock: {\n      type: Boolean,\n      default: false,\n    },\n    bestPrice: {\n      type: Object,\n      default: null,\n    },\n    bestPriceLoading: {\n      type: Boolean,\n      default: true,\n    },\n    isRecommendation: {\n      type: Boolean,\n      default: false,\n    },\n    isGuidedRecommandation: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  emits: ['product-added', 'tile-clicked'],\n  data() {\n    return {\n      loading: false,\n      getProductListById: null,\n      newBestPrice: null,\n      quantityIncreasedMessage: null,\n      quantityDataTest2: null,\n    };\n  },\n  computed: {\n    isRetailConnect() {\n      return this.$fischer.shop.isRetailConnect();\n    },\n    isRetailConnectCart() {\n      return this.$fischer.shop.isRetailConnectCart();\n    },\n    isShop() {\n      return (\n        (this.$fischer.shop.isClosedShop() || this.$fischer.shop.isOnlineShop()) && !this.isEditMode\n      );\n    },\n    showWithoutPrice() {\n      return this.$fischer.shop.hasPurchasePermissionWithoutPrices();\n    },\n    productInCart() {\n      let inCart = false;\n      if (this.cart?.products) {\n        inCart = this.cart.products.some((product) => product.articleNo === this.product.id);\n      }\n      return inCart;\n    },\n    currentBestPrice() {\n      if (this.newBestPrice) {\n        return this.newBestPrice;\n      }\n\n      return this.bestPrice;\n    },\n    productHref() {\n      return this.$fischer.pages.products().url + this.product.Slug;\n    },\n    productPrice() {\n      if (this.product.price?.priceValue && this.product?.price?.priceCurrency) {\n        return this.formatPrice(this.product.price.priceValue, this.product.price.priceCurrency);\n      }\n\n      return null;\n    },\n  },\n  created() {\n    if (IS_SSR) {\n      return;\n    }\n    if (\n      this.$fischer.cartId() &&\n      this.$fischer.shop.isRetailConnectCart() &&\n      !this.cart?.products\n    ) {\n      this.getCart(false, true);\n    }\n  },\n  methods: {\n    async addProduct(data) {\n      await this.addProductToCart(\n        this.isRecommendation || this.isGuidedRecommandation\n          ? { ...data, disableTracking: true }\n          : data,\n      );\n      this.$emit('product-added', data);\n\n      if (!this.isRecommendation && !this.isGuidedRecommandation && !this.isFite) {\n        return;\n      }\n\n      const ref = this.$refs[`quantityStepper-${data.productID}`];\n      let itemQuantity;\n      if (ref) {\n        itemQuantity = ref.internalRequestedQuantity\n          ? ref.internalRequestedQuantity\n          : ref.item.initialQuantity;\n      }\n      this.sendEvent(this.isRecommendation ? 'recommendation_cart' : 'guided_recommendation_cart', {\n        url: window ? window.location.href : '',\n        productId: data.productID,\n        refererId: this.$fischer.catalogId(),\n        itemQuantity,\n      });\n    },\n    async updateBestPrice(productCode, qty) {\n      try {\n        const query = (await importGETBESTPRICE()).default;\n        const { data, error } = await this.$apollo.query({\n          query,\n          errorPolicy: 'all',\n          fetchPolicy: 'no-cache',\n          variables: {\n            baseSiteId: this.$fischer.baseSiteId(),\n            accessToken: this.$fischer.user.accessToken(),\n            productCode,\n            qty,\n            language: this.$fischer.siteLanguage(),\n            userId: this.$fischer.user.id(),\n          },\n        });\n        if (error) {\n          this.logoutIfTokenInvalid(error);\n          throw new Error(error);\n        }\n        this.newBestPrice = data.getBestPrice;\n        this.loading = false;\n      } catch (error) {\n        this.logoutIfTokenInvalid(error);\n        console.error(error);\n        this.loading = false;\n      }\n    },\n    onQuantityInput() {\n      this.loading = true;\n    },\n    onValueRounded(hint, dataTest2) {\n      this.quantityIncreasedMessage = hint;\n      this.quantityDataTest2 = dataTest2;\n    },\n    goToProduct(id) {\n      this.$emit('tile-clicked');\n\n      if (!this.isFite && (this.isRecommendation || this.isGuidedRecommandation)) {\n        const ref = this.$refs[`quantityStepper-${id}`];\n        let itemQuantity;\n        if (ref) {\n          itemQuantity = ref.internalRequestedQuantity\n            ? ref.internalRequestedQuantity\n            : ref.item.initialQuantity;\n        }\n\n        localStorage.setItem(\n          'recommendationClick',\n          JSON.stringify({\n            refererId: this.$fischer.catalogId(),\n            itemQuantity,\n            guided: this.isGuidedRecommandation,\n          }),\n        );\n      }\n\n      window.location = this.productHref;\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import './product-tile-fi';\n</style>\n","<template>\n  <component-wrapper\n    :class=\"{\n      'product-teasers-fi': true,\n      'product-teasers-fi--light': light,\n      'product-teasers-fi--content': showContent,\n    }\"\n  >\n    <grid-container-fi grid-class=\"fi-gap-zero md:fi-gap-zero lg:fi-gap-large\">\n      <div class=\"product-teasers-fi__products\">\n        <div class=\"product-teasers-fi__products-wrapper\">\n          <div\n            v-if=\"isSlider || currentFields.headline?.value || isEditMode\"\n            class=\"product-teasers-fi__products__head\"\n          >\n            <div\n              v-if=\"!isEditMode\"\n              class=\"product-teasers-fi__products__headline\"\n              data-test=\"product-teasers-headline\"\n            >\n              {{ currentFields.headline.value }}\n            </div>\n            <!-- eslint-disable vue/no-v-html -->\n            <div\n              v-if=\"isEditMode\"\n              class=\"product-teasers-fi__products__headline\"\n              v-html=\"currentFields.headline.editable\"\n            />\n            <!-- eslint-enable vue/no-v-html -->\n\n            <div class=\"product-teasers-fi__slider-controls\">\n              <carousel-slider-controls-fi\n                v-if=\"isSlider\"\n                :carousel=\"carouselRef\"\n              />\n            </div>\n          </div>\n\n          <carousel-fi\n            v-if=\"catalogData?.length\"\n            :key=\"changesCount\"\n            :ref=\"(carousel) => (carouselRef = carousel)\"\n            v-intersect.once=\"onIntersect\"\n            :class=\"{\n              'product-teasers-fi__slider': true,\n              'product-teaser-fi__slider--no-slider': !isSlider,\n              'product-teaser-fi__slider--with-content': showContent,\n            }\"\n            :settings=\"sliderSettings\"\n            theme=\"product-teasers\"\n            no-arrows\n            clipped-right\n          >\n            <carousel-slide-fi\n              v-for=\"(item, index) in catalogData\"\n              :key=\"item.id\"\n              theme=\"product-teasers\"\n            >\n              <div class=\"product-teasers-fi__slide\">\n                <product-tile-fi\n                  v-if=\"isVariant\"\n                  :product=\"item\"\n                  :best-price=\"bestPrices[item.id]\"\n                  :best-price-loading=\"bestPriceLoading\"\n                  :out-of-stock=\"retailerOutOfStock[index]\"\n                  :is-recommendation=\"isRecommendation\"\n                  :is-guided-recommandation=\"isGuidedRecommandation\"\n                  @product-added=\"$emit('product-added', $event)\"\n                  @tile-clicked=\"trackSelectItem(item, !isStandaloneVariant)\"\n                />\n                <product-category-tile-fi\n                  v-else\n                  :category=\"item\"\n                  :is-guided-recommandation=\"isGuidedRecommandation\"\n                  @tile-clicked=\"trackSelectItem(item)\"\n                />\n              </div>\n            </carousel-slide-fi>\n          </carousel-fi>\n        </div>\n      </div>\n      <div\n        v-if=\"showContent\"\n        class=\"product-teasers-fi__content\"\n      >\n        <div class=\"product-teasers-fi__content-container\">\n          <richtext-fi\n            v-if=\"currentFields.content\"\n            class=\"product-teasers-fi__text\"\n            is-theme-light\n            :html-content=\"currentFields.content\"\n          />\n        </div>\n      </div>\n    </grid-container-fi>\n  </component-wrapper>\n</template>\n\n<script>\nimport { CarouselFi, CarouselSlideFi, RichtextFi } from 'atoms';\nimport CarouselSliderControlsFi from 'atoms/carousel-fi/CarouselSliderControlsFi.vue';\nimport ComponentWrapper from 'components/component-wrapper/ComponentWrapper';\nimport GridContainerFi from 'components/grid-fi/GridContainerFi';\nimport ProductCategoryTileFi from 'components/product-category/product-category-tile/ProductCategoryTileFi';\nimport ProductTileFi from 'components/product-tile-fi/ProductTileFi';\nimport GETPRODUCTCATEGORYLISTBYID from 'gql/getProductCategoryListById.gql';\nimport GETPRODUCTLISTBYID from 'gql/getProductListById.gql';\nimport GET_RETAILER_AVAILABILITY_FOR_IDS from 'gql/getRetailerAvailabilityForIds.gql';\nimport breakpointMixin from 'mixins/breakpointMixin';\nimport trackingMixin from 'mixins/trackingMixin';\nimport screenWidths from 'tailwind/screenWidths';\n\nconst importGET_MULTIPLE_BEST_PRICES = () => import('gql/getMultipleBestPrices.gql');\n\nexport default {\n  name: 'ProductTeasersFi',\n  components: {\n    CarouselFi,\n    CarouselSlideFi,\n    CarouselSliderControlsFi,\n    ComponentWrapper,\n    GridContainerFi,\n    RichtextFi,\n    ProductTileFi,\n    ProductCategoryTileFi,\n  },\n  mixins: [breakpointMixin, trackingMixin],\n  inject: ['fields'],\n  props: {\n    customFields: {\n      type: Object,\n      default: () => ({}),\n    },\n    light: {\n      type: Boolean,\n      default: false,\n    },\n    isRecommendation: {\n      type: Boolean,\n      default: false,\n    },\n    isGuidedRecommandation: {\n      type: Boolean,\n      default: false,\n    },\n    showVariantsCount: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  emits: ['product-added'],\n  data() {\n    return {\n      getProductListById: null,\n      bestPrices: {},\n      bestPriceLoading: true,\n      changesCount: 0,\n      catalogData: null,\n      GET_MULTIPLE_BEST_PRICES: null,\n      isMounted: false,\n      carouselRef: null,\n    };\n  },\n  computed: {\n    isVariant() {\n      return this.currentFields.productList;\n    },\n    isStandaloneVariant() {\n      return Object.keys(this.customFields).length === 0;\n    },\n    currentFields() {\n      return this.isStandaloneVariant ? this.fields : this.customFields;\n    },\n    productIds() {\n      return this.currentFields.productList?.value?.split('|') || [];\n    },\n    familyIds() {\n      return (\n        (this.currentFields.familyList?.value && this.currentFields.familyList.value.split('|')) ||\n        []\n      );\n    },\n    productQuery() {\n      return this.productIds.map((id) => ({\n        qty: 0,\n        productCode: id,\n      }));\n    },\n    showContent() {\n      if (this.isRecommendation || this.currentFields.hideContent?.value) {\n        return false;\n      }\n\n      return this.currentFields.content?.value || this.isEditMode;\n    },\n    sliderSettings() {\n      return {\n        rewind: false,\n        pagination: false,\n        perPage: 1,\n        perMove: 1,\n        destroy: false,\n        gap: 24,\n        noDrag: 'input, .no-drag',\n        breakpoints: {\n          [screenWidths.xs]: {\n            perPage: 1,\n            destroy: false,\n          },\n          [screenWidths.sm]: {\n            perPage: 2,\n            destroy: false,\n          },\n          [screenWidths.md]: {\n            perPage: 3,\n            destroy: false,\n          },\n          [screenWidths.lg]: {\n            perPage: this.showContent ? 2 : 4,\n            destroy: false,\n          },\n          [screenWidths.xl]: {\n            perPage: this.showContent ? 3 : 5,\n            destroy: false,\n          },\n        },\n      };\n    },\n    visibleSlidesCount() {\n      if (this.isXL) {\n        return this.showContent ? 3 : 5;\n      }\n      if (this.isLG) {\n        return this.showContent ? 2 : 4;\n      }\n      if (this.isMD) {\n        return 3;\n      }\n      if (this.isSM) {\n        return 2;\n      }\n      return 1;\n    },\n    isSlider() {\n      if (!this.isMounted) {\n        return false;\n      }\n\n      return this.catalogData?.length > this.visibleSlidesCount;\n    },\n    isRetailConnectCart() {\n      return this.$fischer.shop.isRetailConnectCart();\n    },\n    isShop() {\n      return this.$fischer.shop.isClosedShop() || this.$fischer.shop.isOnlineShop();\n    },\n    retailerOutOfStock() {\n      return (this.getRetailerAvailabilityForIds || []).map((availability) => {\n        if (!availability) {\n          // something went wrong, default to 'can search for retailers'\n          return false;\n        }\n        return availability.stock === 'empty' || availability.stock === null;\n      });\n    },\n  },\n  watch: {\n    catalogData() {\n      this.changesCount += 1;\n    },\n  },\n  mounted() {\n    this.isMounted = true;\n    importGET_MULTIPLE_BEST_PRICES().then((imported) => {\n      this.GET_MULTIPLE_BEST_PRICES = imported.default;\n    });\n  },\n  apollo: {\n    getProductCategoryListById: {\n      query: GETPRODUCTCATEGORYLISTBYID,\n      errorPolicy: 'all',\n      variables() {\n        return {\n          language: this.$fischer.catalogLocale(),\n          ids: this.familyIds.join(','),\n          channel: this.$fischer.brandId(),\n        };\n      },\n      skip() {\n        return !this.familyIds?.length;\n      },\n      result({ data }) {\n        if (data?.getProductCategoryListById) {\n          this.catalogData = data.getProductCategoryListById;\n        }\n      },\n      error() {\n        this.error = true;\n      },\n    },\n    getProductListById: {\n      query: GETPRODUCTLISTBYID,\n      errorPolicy: 'all',\n      variables() {\n        return {\n          baseSiteId: this.$fischer.baseSiteId(),\n          channel: this.$fischer.brandId(),\n          language: this.$fischer.catalogLocale(),\n          accessToken: this.$fischer.user.accessToken(),\n          userId: this.$fischer.user.id(),\n          ids: this.productIds.join(','),\n        };\n      },\n      skip() {\n        return !this.productIds?.length;\n      },\n      result({ data }) {\n        if (data?.getProductListById) {\n          this.catalogData = data.getProductListById;\n        }\n      },\n      error() {\n        this.error = true;\n      },\n    },\n    getMultipleBestPrices: {\n      query() {\n        return this.GET_MULTIPLE_BEST_PRICES;\n      },\n      errorPolicy: 'all',\n      variables() {\n        return {\n          baseSiteId: this.$fischer.baseSiteId(),\n          language: this.$fischer.siteLanguage(),\n          userId: this.$fischer.user.id(),\n          accessToken: this.$fischer.user.accessToken(),\n          queries: this.productQuery,\n        };\n      },\n      result({ data }) {\n        if (!data?.getMultipleBestPrices) {\n          console.error('Did not receive best prices');\n          return;\n        }\n        data.getMultipleBestPrices.forEach((bestPrice) => {\n          if (bestPrice) {\n            this.bestPrices[bestPrice.productCode] = bestPrice;\n          }\n        });\n        this.bestPriceLoading = false;\n      },\n      skip() {\n        return (\n          !this.GET_MULTIPLE_BEST_PRICES ||\n          !this.getProductListById ||\n          !this.isShop ||\n          this.isFite ||\n          this.isEditMode\n        );\n      },\n      error() {\n        this.error = true;\n        this.bestPriceLoading = false;\n      },\n    },\n    getRetailerAvailabilityForIds: {\n      query: GET_RETAILER_AVAILABILITY_FOR_IDS,\n      variables() {\n        return {\n          baseSiteId: this.$fischer.baseSiteId(),\n          productIds: this.productIds,\n          useGtins: this.$fischer.useGtins(),\n        };\n      },\n      skip() {\n        return IS_SSR || !this.isRetailConnectCart || this.productIds.length === 0;\n      },\n    },\n  },\n  methods: {\n    onIntersect() {\n      this.trackViewItemList(this.catalogData);\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import './product-teasers-fi';\n</style>\n"],"file":"assets/ProductTeasersFi-CCMngLUq.js"}