{"version":3,"mappings":"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","names":["_sfc_main","LinkFi","$props","_createBlock","_component_link_fi","$options","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","IconFi","DialogModalFi","_hoisted_1","_component_dialog_modal_fi","_createElementBlock","_createVNode","_component_icon_fi","OnlineRetailersListFi","_hoisted_2","_createElementVNode","_component_online_retailers_list_fi","RetailerSearchFi","defineAsyncComponent","__vitePreload","RichtextFi","distanceMixin","getSelectList","ranges","_a","range","_openBlock","_component_richtext_fi","_component_retailer_search_fi","AvailabilityStatusViewOnlyFi","ButtonFi","CatalogSliderFi","GridContainerFi","GridColumnsFi","HeadlineFi","MediaDownloadDialogFi","RetailSearchDialogFi","ProductRetailerDialogFi","TextExpanderFi","BuyBoxModule","CadLinkFi","CadDetailsDialogFi","accessPrivilegesMixin","breakpointMixin","shoppingcartMixin","catalogTextListMixin","onlineRetailersMixin","HAS_LOCAL_RETAILERS","GET_RETAILER_AVAILABILITY_FOR_IDS","mapGetters","stock","inCart","product","artNr","_b","_d","_c","error","productName","res","observer","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_11","_Fragment","_component_grid_container_fi","_component_catalog_slider_fi","_component_headline_fi","_ctx","_component_availability_status_view_only_fi","_hoisted_6","_component_cad_link_fi","_withModifiers","_component_grid_columns_fi","_component_text_expander_fi","_hoisted_10","_component_button_fi","$data","_normalizeClass","_component_media_download_dialog_fi","_component_retail_search_dialog_fi","_component_product_retailer_dialog_fi","_withDirectives","_hoisted_12","_Teleport","_component_buy_box_module","_hoisted_13","_component_cad_details_dialog_fi","ComponentWrapper","ProductDetailHeadFi","ProductDetailAccordionsFi","SectionDividerSmallFi","ProductItemsSliderFi","CrossSellingProductTeasersFi","ProductDetailSchemaFi","catalogMixin","trackingMixin","GET_CATALOG_PRODUCT_DATA_BY_ID","data","recommendationClickDetails","refererId","itemQuantity","guided","_component_component_wrapper","_component_product_detail_head_fi","_component_product_detail_accordions_fi","_component_section_divider_small_fi","_component_product_items_slider_fi","_component_cross_selling_product_teasers_fi","_component_product_detail_schema_fi"],"ignoreList":[],"sources":["../../src/components/cad-link-fi/CadLinkFi.vue","../../src/components/product-detail/cad-details-dialog-fi/CadDetailsDialogFi.vue","../../src/components/product-detail/product-retailer-dialog-fi/ProductRetailerDialogFi.vue","../../src/components/product-detail/retail-search-dialog-fi/RetailSearchDialogFi.vue","../../src/components/product-detail/product-detail-head-fi/ProductDetailHeadFi.vue","../../src/pages/product-detail-page-fi/ProductDetailPageFi.vue"],"sourcesContent":["<template>\n  <link-fi\n    v-if=\"cadUrl\"\n    :href=\"cadUrl\"\n    :size=\"18\"\n    target=\"_blank\"\n    @click=\"onCadLinkClicked\"\n  >\n    {{ fields.cadLinkText.value }}\n  </link-fi>\n</template>\n\n<script>\nimport { LinkFi } from 'atoms';\n\nexport default {\n  name: 'CadLinkFi',\n  components: {\n    LinkFi,\n  },\n  props: {\n    fields: {\n      type: Object,\n      default: () => ({}),\n    },\n    openInDialog: {\n      type: Boolean,\n      default: false,\n    },\n    cadUrl: {\n      type: String,\n      default: null,\n    },\n  },\n  emits: ['open-cad-details-dialog'],\n  methods: {\n    onCadLinkClicked(e) {\n      if (!this.openInDialog) {\n        return;\n      }\n      e.preventDefault();\n\n      this.$emit('open-cad-details-dialog');\n    },\n  },\n};\n</script>\n","<template>\n  <dialog-modal-fi\n    ref=\"dialogModal\"\n    class=\"cad-details-dialog-fi\"\n    prevent-close-on-click-outside\n    only-body-scrollable\n  >\n    <template #body>\n      <iframe\n        v-if=\"cadUrl\"\n        ref=\"cadFrame\"\n        :src=\"cadUrl\"\n        class=\"cad-details-dialog-fi__iframe\"\n        frameborder=\"0\"\n      />\n    </template>\n\n    <template #button>\n      <icon-fi icon=\"close\" />\n    </template>\n  </dialog-modal-fi>\n</template>\n\n<script>\nimport { DialogModalFi, IconFi } from 'atoms';\n\nexport default {\n  name: 'CadDetailsDialogFi',\n  components: {\n    IconFi,\n    DialogModalFi,\n  },\n  props: {\n    fields: {\n      type: Object,\n      default: () => ({}),\n    },\n    cadUrl: {\n      type: String,\n      default: null,\n    },\n  },\n  methods: {\n    open() {\n      this.$refs.dialogModal.open();\n    },\n  },\n};\n</script>\n\n<style lang=\"scss\">\n@import './cad-details-dialog-fi.scss';\n</style>\n","<template>\n  <dialog-modal-fi\n    ref=\"productRetailerDialog\"\n    class=\"product-retailer-dialog-fi\"\n    large-padding\n    lazy\n  >\n    <template #header>\n      <h2 class=\"product-retailer-dialog-fi__headline\">\n        {{\n          fields &&\n          fields.retailConnectRetailerHeadline &&\n          fields.retailConnectRetailerHeadline.value\n        }}\n      </h2>\n    </template>\n\n    <template #body>\n      <div class=\"product-retailer-dialog-fi__product-retailers\">\n        <online-retailers-list-fi\n          :retailers=\"retailers\"\n          :retailer-facets=\"retailerFacets\"\n          variant=\"product-retailers\"\n        />\n      </div>\n    </template>\n  </dialog-modal-fi>\n</template>\n\n<script>\nimport { DialogModalFi } from 'atoms';\nimport OnlineRetailersListFi from 'components/online-retailers/OnlineRetailersListFi';\n\nexport default {\n  name: 'ProductRetailerDialogFi',\n  components: {\n    DialogModalFi,\n    OnlineRetailersListFi,\n  },\n  inject: ['fields'],\n  props: {\n    retailers: {\n      type: Array,\n      default: null,\n    },\n    retailerFacets: {\n      type: Array,\n      default: null,\n    },\n  },\n  methods: {\n    show() {\n      this.$refs.productRetailerDialog.open();\n    },\n    close() {\n      this.$refs.productRetailerDialog.close();\n    },\n  },\n};\n</script>\n\n<style lang=\"scss\">\n@import './product-retailer-dialog-unscoped-fi';\n</style>\n","<template>\n  <dialog-modal-fi\n    ref=\"retailerSearchDialog\"\n    class=\"retail-search-dialog-fi\"\n    large-padding\n    lazy\n    prevent-close-on-click-outside\n  >\n    <template #header>\n      <h2\n        v-if=\"fields.retailerSearchHeadline?.value\"\n        class=\"retail-search-dialog-fi__headline\"\n      >\n        {{ fields.retailerSearchHeadline.value }}\n      </h2>\n\n      <richtext-fi\n        v-if=\"description\"\n        class=\"retail-search-dialog-fi__description\"\n        :html-content=\"description\"\n      />\n    </template>\n\n    <template #body>\n      <div class=\"retail-search-dialog-fi__retailer-search\">\n        <retailer-search-fi\n          ref=\"retailerSearch\"\n          theme=\"modal\"\n          :country-list=\"countryList[1]\"\n          :default-country=\"countryList[2]\"\n          :ranges=\"ranges\"\n          :default-range=\"defaultRange\"\n          :product-ids=\"catalogId\"\n        />\n      </div>\n    </template>\n  </dialog-modal-fi>\n</template>\n\n<script>\nimport { DialogModalFi, RichtextFi } from 'atoms';\nimport distanceMixin from 'mixins/distanceMixin';\nimport { defineAsyncComponent } from 'vue';\n\nimport { getSelectList } from '@/utils/fieldTransformations';\n\nconst RetailerSearchFi = defineAsyncComponent(\n  () => import('components/retailer-search-fi/RetailerSearchFi'),\n);\n\nexport default {\n  name: 'RetailSearchDialogFi',\n  components: {\n    DialogModalFi,\n    RetailerSearchFi,\n    RichtextFi,\n  },\n  mixins: [distanceMixin],\n  inject: ['fields'],\n  props: {\n    catalogId: {\n      type: String,\n      default: null,\n    },\n    productName: {\n      type: String,\n      default: null,\n    },\n  },\n  data() {\n    return {\n      isShown: false,\n    };\n  },\n  computed: {\n    countryList() {\n      return getSelectList(this.fields, 'countryList', []);\n    },\n    ranges() {\n      const ranges = [];\n      if (this.fields.retailerSearchRanges?.value) {\n        this.fields.retailerSearchRanges.value.split(',').forEach((range) => {\n          ranges.push({ name: `${range} ${this.unit}`, value: range });\n        });\n      }\n\n      return ranges.length ? ranges : undefined;\n    },\n    defaultRange() {\n      if (this.fields.retailerSearchDefaultRange?.value) {\n        return this.fields.retailerSearchDefaultRange.value;\n      }\n\n      return undefined;\n    },\n    description() {\n      if (this.fields.retailerSearchDescription?.value) {\n        return {\n          value: this.fields.retailerSearchDescription.value\n            .replace('{0}', Number(this.catalogId))\n            .replace('{1}', this.productName),\n        };\n      }\n\n      return null;\n    },\n  },\n  methods: {\n    show() {\n      this.$refs.retailerSearchDialog.open();\n    },\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import './retail-search-dialog-fi';\n</style>\n","<template>\n  <div class=\"product-detail-head-fi\">\n    <template v-if=\"catalogData\">\n      <grid-container-fi>\n        <div class=\"fi-col-start-1 fi-col-end-13 md:fi-col-end-7\">\n          <catalog-slider-fi\n            :catalog-data=\"catalogData\"\n            :item-name=\"productName\"\n          />\n        </div>\n        <div class=\"fi-col-start-1 fi-col-end-13 md:fi-col-start-7 md:fi-col-end-13\">\n          <!-- eslint-disable vue/no-v-html -->\n          <headline-fi\n            v-if=\"articleNumber\"\n            class=\"product-detail-head-fi__art-nr\"\n            tag=\"div\"\n            color=\"brand\"\n            :size=\"24\"\n          >\n            <span\n              data-test=\"article-number\"\n              v-html=\"articleNumber\"\n            />\n          </headline-fi>\n          <headline-fi\n            v-if=\"productName\"\n            class=\"product-detail-head-fi__name\"\n            tag=\"h1\"\n            :size=\"48\"\n          >\n            <span v-html=\"productName\" />\n          </headline-fi>\n          <!-- eslint-enable vue/no-v-html -->\n\n          <availability-status-view-only-fi\n            v-if=\"hasAvailabilityStatusOnlyPermission && isLG\"\n            :fields=\"fields\"\n          />\n\n          <div\n            v-else-if=\"isShop && !hasAvailabilityStatusOnlyPermission\"\n            id=\"buy-box-desktop\"\n            class=\"product-detail-head-fi__buy-box\"\n          />\n\n          <div class=\"product-detail-head-fi__links\">\n            <link-fi\n              v-if=\"categorySlug\"\n              class=\"product-detail-head-fi__link\"\n              :href=\"categorySlug\"\n              :size=\"18\"\n              data-test=\"product-variants-link\"\n            >\n              {{ $dict.get('product-Family.Anchor-Link-Text') }}\n            </link-fi>\n\n            <cad-link-fi\n              v-if=\"hasCADLink\"\n              class=\"product-detail-head-fi__link\"\n              :fields=\"fields\"\n              :cad-url=\"cadUrl\"\n              open-in-dialog\n              @open-cad-details-dialog=\"onOpenCadDetailsDialog\"\n            />\n\n            <link-fi\n              v-if=\"\n                fields.customLink?.value &&\n                (fields.customLink.value.href || fields.customLink.value.url)\n              \"\n              class=\"product-detail-head-fi__link\"\n              :href=\"\n                fields.customLink.value.href\n                  ? fields.customLink.value.href\n                  : fields.customLink.value.url\n              \"\n              :external=\"Boolean(fields.customLink.value.url)\"\n              :target=\"fields.customLink.value.target\"\n              :size=\"18\"\n            >\n              {{ fields.customLink.value.text }}\n            </link-fi>\n\n            <link-fi\n              v-if=\"mediaDownloadLink && fields.mediaDownloadLabel?.value\"\n              class=\"product-detail-head-fi__link\"\n              href=\"#\"\n              rel=\"nofollow\"\n              :size=\"18\"\n              @click.stop.prevent=\"openMediaDownloadDialog\"\n            >\n              {{ fields.mediaDownloadLabel.value }}\n            </link-fi>\n          </div>\n          <grid-columns-fi :columns=\"6\">\n            <div class=\"fi-col-span-6 lg:fi-col-span-5\">\n              <div class=\"product-detail-head-fi__features\">\n                <text-expander-fi\n                  v-if=\"features\"\n                  :content=\"{ value: features }\"\n                  :max-height=\"400\"\n                  :expand-text=\"$dict.get('global-Labels.Expander.Expand')\"\n                  :reduce-text=\"$dict.get('global-Labels.Expander.Reduce')\"\n                />\n              </div>\n\n              <div\n                v-if=\"\n                  !hasAvailabilityStatusOnlyPermission && (isRetailConnect || isRetailConnectCart)\n                \"\n                class=\"product-detail-head-fi__retail-connect-cart-actions product-detail-head-fi__retail-connect-cart-actions--md\"\n              >\n                <button-fi\n                  v-if=\"localRetailers\"\n                  :disabled=\"!hasLocalRetailers\"\n                  type=\"button\"\n                  class=\"button-fi__primary--large\"\n                  data-test=\"retail-connect-cart-action-button\"\n                  data-test-2=\"retail-connect-local-retailers\"\n                  @click.stop.prevent=\"openRetailSearchDialog\"\n                >\n                  {{ $dict.get('dealer-Locator.Find-your-local-Dealer') }}\n                </button-fi>\n\n                <button-fi\n                  v-if=\"isRetailConnect\"\n                  type=\"button\"\n                  data-test=\"retail-connect-cart-action-button\"\n                  data-test-2=\"retail-connect-retail-connect\"\n                  :class=\"[\n                    'button__find-retail-connect',\n                    localRetailers ? 'button-fi__tertiary--large' : 'button-fi__primary--large',\n                  ]\"\n                  :disabled=\"retailers !== null && retailers.length === 0\"\n                  @click.stop.prevent=\"openProductRetailerDialog\"\n                >\n                  {{ $dict.get('online-Shop.Product.Retail-Connect.Buy-Product') }}\n                </button-fi>\n\n                <button-fi\n                  v-if=\"isRetailConnectCart\"\n                  class=\"button-fi__tertiary--large\"\n                  type=\"button\"\n                  data-test=\"retail-connect-cart-action-button\"\n                  data-test-2=\"retail-connect-retail-connect-cart\"\n                  :disabled=\"Boolean(retailerNotAvailable || productInCart || addToCartLoading)\"\n                  @click.stop.prevent=\"addProduct\"\n                >\n                  {{\n                    productInCart\n                      ? $dict.get('online-Shop.Product.Already-in-Cart')\n                      : $dict.get('online-Shop.Product.Add-to-Cart')\n                  }}\n                </button-fi>\n              </div>\n            </div>\n          </grid-columns-fi>\n        </div>\n\n        <media-download-dialog-fi\n          ref=\"mediaDownloadDialog\"\n          :media-download-link=\"mediaDownloadLink\"\n          :file-name=\"mediaDownloadFileName\"\n          :fields=\"fields\"\n        />\n\n        <retail-search-dialog-fi\n          ref=\"retailSearchDialog\"\n          :fields=\"fields\"\n          :catalog-id=\"catalogData.ProductId\"\n          :product-name=\"productName\"\n        />\n\n        <product-retailer-dialog-fi\n          ref=\"productRetailerDialog\"\n          :retailers=\"retailers\"\n          :retailer-facets=\"retailerFacets\"\n        />\n      </grid-container-fi>\n\n      <availability-status-view-only-fi\n        v-if=\"hasAvailabilityStatusOnlyPermission && !isLG\"\n        :fields=\"fields\"\n      />\n\n      <span\n        v-intersect=\"onIntersect\"\n        class=\"sticky-actions-intersector\"\n      />\n      <div\n        v-if=\"!hasAvailabilityStatusOnlyPermission\"\n        :class=\"{\n          'product-detail-head-fi__actions-mobile': true,\n          'product-detail-head-fi__actions-mobile--sticky': stickyEnabled,\n        }\"\n      >\n        <div\n          v-if=\"isShop\"\n          class=\"product-detail-head-fi__buy-box\"\n        >\n          <teleport\n            v-if=\"productDetailHeadMounted\"\n            to=\"#buy-box-desktop\"\n            :disabled=\"!isMD\"\n          >\n            <buy-box-module @added-to-memolist=\"$emit('added-to-memolist')\" />\n          </teleport>\n        </div>\n\n        <div\n          v-else-if=\"isRetailConnect || isRetailConnectCart || localRetailers\"\n          class=\"product-detail-head-fi__retail-connect-cart-actions\"\n        >\n          <button-fi\n            v-if=\"localRetailers\"\n            type=\"button\"\n            class=\"button-fi__primary--large button__find-retailer\"\n            data-test=\"retail-connect-cart-action-button\"\n            data-test-2=\"retail-connect-local-retailers\"\n            @click.stop.prevent=\"openRetailSearchDialog\"\n          >\n            {{ $dict.get('dealer-Locator.Find-your-local-Dealer') }}\n          </button-fi>\n\n          <button-fi\n            v-if=\"isRetailConnect\"\n            type=\"button\"\n            data-test=\"retail-connect-cart-action-button\"\n            data-test-2=\"retail-connect-retail-connect\"\n            :class=\"[\n              'button__find-retail-connect',\n              localRetailers ? 'button-fi__tertiary--large' : 'button-fi__primary--large',\n            ]\"\n            :disabled=\"retailers !== null && retailers.length === 0\"\n            @click.stop.prevent=\"openProductRetailerDialog\"\n          >\n            {{ $dict.get('online-Shop.Product.Retail-Connect.Buy-Product') }}\n          </button-fi>\n\n          <button-fi\n            v-if=\"isRetailConnectCart\"\n            type=\"button\"\n            class=\"button-fi__tertiary--large button__add-to-cart\"\n            data-test=\"retail-connect-cart-action-button\"\n            data-test-2=\"retail-connect-retail-connect-cart\"\n            :disabled=\"Boolean(retailerNotAvailable || productInCart || addToCartLoading)\"\n            @click.stop.prevent=\"addProduct\"\n          >\n            {{\n              productInCart\n                ? $dict.get('online-Shop.Product.Already-in-Cart')\n                : $dict.get('online-Shop.Product.Add-to-Cart')\n            }}\n          </button-fi>\n        </div>\n      </div>\n\n      <cad-details-dialog-fi\n        ref=\"cadDetailsDialog\"\n        :fields=\"fields\"\n        :cad-url=\"cadUrl\"\n        lazy\n      />\n    </template>\n\n    <div id=\"price-row-savings\" />\n  </div>\n</template>\n\n<script>\nimport { ButtonFi, HeadlineFi, LinkFi } from 'atoms';\nimport CadLinkFi from 'components/cad-link-fi/CadLinkFi';\nimport CatalogSliderFi from 'components/catalog-slider-fi/CatalogSliderFi';\nimport GridColumnsFi from 'components/grid-fi/GridColumnsFi';\nimport GridContainerFi from 'components/grid-fi/GridContainerFi';\nimport CadDetailsDialogFi from 'components/product-detail/cad-details-dialog-fi/CadDetailsDialogFi';\nimport MediaDownloadDialogFi from 'components/product-detail/media-download-dialog-fi/MediaDownloadDialogFi';\nimport ProductRetailerDialogFi from 'components/product-detail/product-retailer-dialog-fi/ProductRetailerDialogFi';\nimport RetailSearchDialogFi from 'components/product-detail/retail-search-dialog-fi/RetailSearchDialogFi';\nimport BuyBoxModule from 'components/shop-modules/buy-box-module/BuyBoxModule';\nimport TextExpanderFi from 'components/text-expander-fi/TextExpanderFi';\nimport GET_RETAILER_AVAILABILITY_FOR_IDS from 'gql/getRetailerAvailabilityForIds.gql';\nimport HAS_LOCAL_RETAILERS from 'gql/hasLocalRetailers.gql';\nimport accessPrivilegesMixin from 'mixins/accessPrivilegesMixin';\nimport breakpointMixin from 'mixins/breakpointMixin';\nimport catalogTextListMixin from 'mixins/catalogTextListMixin';\nimport onlineRetailersMixin from 'mixins/onlineRetailersMixin';\nimport shoppingcartMixin from 'mixins/shoppingcartMixin';\nimport { defineAsyncComponent } from 'vue';\nimport { mapGetters } from 'vuex';\n\nconst AvailabilityStatusViewOnlyFi = defineAsyncComponent(\n  () =>\n    import(\n      'components/product-detail/product-detail-head-fi/availability-status-view-only-fi/AvailabilityStatusViewOnlyFi'\n    ),\n);\n\nexport default {\n  name: 'ProductDetailHeadFi',\n  components: {\n    ButtonFi,\n    CatalogSliderFi,\n    GridContainerFi,\n    GridColumnsFi,\n    HeadlineFi,\n    LinkFi,\n    MediaDownloadDialogFi,\n    RetailSearchDialogFi,\n    AvailabilityStatusViewOnlyFi,\n    ProductRetailerDialogFi,\n    TextExpanderFi,\n    BuyBoxModule,\n    CadLinkFi,\n    CadDetailsDialogFi,\n  },\n  mixins: [\n    accessPrivilegesMixin,\n    breakpointMixin,\n    shoppingcartMixin,\n    catalogTextListMixin,\n    onlineRetailersMixin,\n  ],\n  inject: ['fields'],\n  props: {\n    catalogData: {\n      type: Object,\n      default: null,\n    },\n    mediaDownloadLink: {\n      type: String,\n      default: null,\n    },\n  },\n  emits: ['added-to-memolist'],\n  data() {\n    return {\n      addToCartLoading: false,\n      getRetailerAvailabilityForIds: [],\n      stickyEnabled: false,\n      hasLocalRetailers: false,\n    };\n  },\n  apollo: {\n    hasLocalRetailers: {\n      query: HAS_LOCAL_RETAILERS,\n      variables() {\n        return {\n          brand: this.$fischer.brandId(),\n          productId: this.catalogData.ProductId,\n          locale: this.$fischer.catalogLocale(),\n        };\n      },\n      skip() {\n        return IS_SSR || !this.localRetailers || !this.catalogData?.ProductId;\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 (\n          IS_SSR || !this.isRetailConnectCart || this.productInCart || !this.catalogData.ProductId\n        );\n      },\n    },\n  },\n  computed: {\n    ...mapGetters({\n      productDetailHeadMounted: 'layout/getProductDetailHeadMounted',\n    }),\n    productIds() {\n      if (this.catalogData?.ProductId) {\n        return [this.catalogData.ProductId];\n      }\n\n      return null;\n    },\n    localRetailers() {\n      return this.$fischer.localRetailers();\n    },\n    retailerNotAvailable() {\n      const stock =\n        this.getRetailerAvailabilityForIds?.[0] && this.getRetailerAvailabilityForIds[0].stock;\n      return stock === 'empty' || stock === null;\n    },\n    isShop() {\n      return this.$fischer.shop.isClosedShop() || this.$fischer.shop.isOnlineShop();\n    },\n    isRetailConnect() {\n      return this.$fischer.shop.isRetailConnect();\n    },\n    isRetailConnectCart() {\n      return this.$fischer.shop.isRetailConnectCart();\n    },\n    productInCart() {\n      let inCart = false;\n      if (this.cart?.products) {\n        inCart = this.cart.products.some(\n          (product) => product.articleNo === this.catalogData.ProductId,\n        );\n      }\n      return inCart;\n    },\n    apiFilters() {\n      return this.$store.getters['product/apiFilters'];\n    },\n    articleNumber() {\n      const artNr = this.catalogData?.ProductId && Number(this.catalogData.ProductId);\n      return `${this.$dict.get('product-List.Table.Article-Number')} ${artNr}`;\n    },\n    categorySlug() {\n      return (\n        this.catalogData?.categoryData?.CategoryRole === 'FAMILY_PAGE' &&\n        this.catalogData?.categoryData?.Slug &&\n        `${this.$fischer.pages.products().url}${this.catalogData.categoryData.Slug}#productList`\n      );\n    },\n    productName() {\n      return this.textListValue(this.catalogData?.TextList, 'ECOMLANG');\n    },\n    features() {\n      return this.textListValue(this.catalogData?.TextList, 'POCTOPFEATURESGEN');\n    },\n    hasCADLink() {\n      return this.catalogData?.hasCADLink;\n    },\n    cadUrl() {\n      if (\n        !this.catalogData ||\n        !this.catalogData.ProductId ||\n        !this.fields.cadLink ||\n        !this.fields.cadLink.value ||\n        !this.fields.cadLanguage ||\n        !this.fields.cadLanguage.value ||\n        !this.fields.cadMandant ||\n        !this.fields.cadMandant.value ||\n        !this.fields.cadLinkText ||\n        !this.fields.cadLinkText.value\n      ) {\n        return null;\n      }\n      return `${this.fields.cadLink.value}?mandant=${this.fields.cadMandant.value}&cul=${\n        this.fields.cadLanguage.value\n      }&CadBox=2&ArtikelNr=${Number(this.catalogData.ProductId)}`;\n    },\n    mediaDownloadFileName() {\n      return this.catalogData?.categoryData?.categoryName\n        ? `${this.catalogData.categoryData.categoryName}-${this.catalogData.ProductName}`\n        : this.catalogData?.ProductName;\n    },\n  },\n  mounted() {\n    this.$store.dispatch('layout/setProductDetailHeadMounted', true);\n  },\n  created() {\n    if (!IS_SSR && (this.isRetailConnectCart || this.isShop)) {\n      this.getCurrentCart();\n    }\n  },\n  methods: {\n    getCurrentCart() {\n      if (this.$fischer.cartId()) {\n        try {\n          this.getCart(false, true);\n        } catch (error) {\n          console.error('could not get current cart!', error);\n        }\n      }\n    },\n    openMediaDownloadDialog() {\n      this.$refs.mediaDownloadDialog.show();\n    },\n    openRetailSearchDialog() {\n      // TRACKING EVENT\n      if (!IS_SSR) {\n        const productName = `${this.catalogData.ProductId} - ${this.catalogData.ProductName}`;\n        window.dataLayer = window.dataLayer || [];\n        window.dataLayer.push({\n          event: 'RCBuyLocal',\n          productName,\n        });\n      }\n\n      this.$refs.retailSearchDialog.show();\n    },\n    openProductRetailerDialog() {\n      // TRACKING EVENT\n      if (!IS_SSR) {\n        const productName = `${this.catalogData.ProductId} - ${this.catalogData.ProductName}`;\n        window.dataLayer = window.dataLayer || [];\n        window.dataLayer.push({\n          event: 'RCBuyProduct',\n          productName,\n        });\n      }\n\n      this.$refs.productRetailerDialog.show();\n    },\n    addProduct() {\n      this.addToCartLoading = true;\n      this.addProductToCart(\n        { productID: this.catalogData.ProductId, productInitialQuantity: 1 },\n        this.catalogData,\n      ).then((res) => {\n        if (res?.success) {\n          this.addToCartLoading = false;\n        }\n      });\n    },\n    onOpenCadDetailsDialog() {\n      this.$refs.cadDetailsDialog.open();\n    },\n    onIntersect(observer) {\n      this.stickyEnabled = !observer[0].isIntersecting && observer[0].boundingClientRect.top > 0;\n    },\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import './product-detail-head-fi_product-detail-head-fite-fi.scss';\n</style>\n\n<style lang=\"scss\">\n@import './product-detail-head-fi_product-detail-head-fite-fi-unscoped.scss';\n</style>\n","<template>\n  <component-wrapper\n    :key=\"catalogId\"\n    class=\"product-detail-page-fi\"\n  >\n    <product-detail-head-fi\n      :catalog-data=\"getCatalogProductDataById\"\n      :media-download-link=\"mediaDownloadLink\"\n      :fields=\"fields\"\n      @added-to-memolist=\"addedToMemoList\"\n    />\n\n    <product-detail-accordions-fi\n      :fields=\"fields\"\n      :catalog-data=\"getCatalogProductDataById\"\n    />\n\n    <section-divider-small-fi />\n\n    <product-items-slider-fi\n      v-if=\"accessories?.length\"\n      :product-items=\"accessories\"\n      :slider-headline=\"$dict.get('product-Family.Accessories.Headline')\"\n      :is-light=\"fields.crossSellingProductTeaserEnabled?.value\"\n    />\n\n    <cross-selling-product-teasers-fi\n      v-if=\"fields.crossSellingProductTeaserEnabled?.value\"\n      :product-ids=\"getCatalogProductDataById.ProductId\"\n    />\n\n    <product-detail-schema-fi\n      v-if=\"getCatalogProductDataById\"\n      :catalog-data=\"getCatalogProductDataById\"\n    />\n  </component-wrapper>\n</template>\n\n<script>\nimport ComponentWrapper from 'components/component-wrapper/ComponentWrapper';\nimport CrossSellingProductTeasersFi from 'components/cross-selling-product-teasers-fi/CrossSellingProductTeasersFi';\nimport ProductDetailAccordionsFi from 'components/product-detail/product-detail-accordions-fi/ProductDetailAccordionsFi';\nimport ProductDetailHeadFi from 'components/product-detail/product-detail-head-fi/ProductDetailHeadFi';\nimport ProductDetailSchemaFi from 'components/product-detail/product-detail-schema-fi/ProductDetailSchemaFi';\nimport ProductItemsSliderFi from 'components/product-items-slider-fi/ProductItemsSliderFi';\nimport GET_CATALOG_PRODUCT_DATA_BY_ID from 'gql/getCatalogProductDataById.gql';\nimport breakpointMixin from 'mixins/breakpointMixin';\nimport catalogMixin from 'mixins/catalogMixin';\nimport trackingMixin from 'mixins/trackingMixin';\nimport SectionDividerSmallFi from 'pages/section-divider-fi/SectionDividerSmallFi';\n\nexport default {\n  name: 'ProductDetailPageFi',\n  components: {\n    ComponentWrapper,\n    ProductDetailHeadFi,\n    ProductDetailAccordionsFi,\n    SectionDividerSmallFi,\n    ProductItemsSliderFi,\n    CrossSellingProductTeasersFi,\n    ProductDetailSchemaFi,\n  },\n  mixins: [breakpointMixin, catalogMixin, trackingMixin],\n  inject: ['fields'],\n  data() {\n    return {\n      getCatalogProductDataById: {},\n    };\n  },\n  computed: {\n    catalogId() {\n      return this.$fischer.catalogId('040390');\n    },\n    accessories() {\n      return this.getCatalogProductDataById?.accessories;\n    },\n  },\n  created() {\n    if (this.catalogId) {\n      this.checkForMediaDownload({\n        type: 'product',\n        id: this.catalogId,\n      });\n    }\n\n    this.handleEventTracking();\n  },\n  apollo: {\n    getCatalogProductDataById: {\n      query: GET_CATALOG_PRODUCT_DATA_BY_ID,\n      errorPolicy: 'all',\n      variables() {\n        return {\n          baseSiteId: this.$fischer.baseSiteId(),\n          apiLang: this.$fischer.catalogLocale(),\n          id: this.catalogId,\n        };\n      },\n      result({ data }) {\n        if (data?.getCatalogProductDataById) {\n          this.trackViewItem(data.getCatalogProductDataById);\n        }\n      },\n      skip() {\n        return !this.catalogId;\n      },\n      error() {\n        this.error = true;\n      },\n    },\n  },\n  methods: {\n    addedToMemoList() {\n      if (this.getCatalogProductDataById) {\n        this.trackAddProductToWishlist(this.getCatalogProductDataById);\n      }\n    },\n    handleEventTracking() {\n      if (IS_SSR) {\n        return;\n      }\n\n      try {\n        const recommendationClickDetails = localStorage.getItem('recommendationClick');\n        if (recommendationClickDetails) {\n          const { refererId, itemQuantity, guided } = JSON.parse(recommendationClickDetails);\n          this.sendEvent(guided ? 'guided_recommendation_click' : 'recommendation_click', {\n            url: window ? window.location.href : '',\n            productId: this.catalogId,\n            refererId,\n            itemQuantity,\n          });\n\n          localStorage.removeItem('recommendationClick');\n        }\n      } catch (error) {\n        console.debug('failed to process recommendation click', error);\n      }\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import './product-detail-page-fi';\n</style>\n"],"file":"assets/ProductDetailPageFi-yNXmLO9b.js"}